From 92f6981723e51895855812366739a04fef93176b Mon Sep 17 00:00:00 2001 From: Ryc O'Chet Date: Sat, 24 Feb 2018 07:35:19 +0000 Subject: [PATCH] Fixes and updates in preparation for new sequence code All HTMLElement css styles are now set/get via a normalization instead of by fallback code Tweens are now an interface (object) instead of an enum indexed array Normalization function is now cached in tween at animation start for performance and consistency Internal version number is now set directly instead of indirectly Fixes #849 - SVG attribute initialisation was crashing Fixes #845 - Inconsistent handling of colour codes, now force rgba() Fixes #839 - - Possibly mis-identification of lineHeight --- index.d.ts | 86 +++- src/Velocity/actions/finish.ts | 6 +- src/Velocity/actions/style.ts | 4 +- src/Velocity/actions/tween.ts | 11 +- src/Velocity/css/_all.d.ts | 1 - src/Velocity/css/camelCase.ts | 6 +- src/Velocity/css/fixColors.ts | 6 +- src/Velocity/css/getPropertyValue.ts | 36 +- src/Velocity/css/regex.ts | 19 - src/Velocity/css/setPropertyValue.ts | 17 +- src/Velocity/easing/back.ts | 6 + src/Velocity/easing/bezier.ts | 31 ++ src/Velocity/easing/bounce.ts | 6 + src/Velocity/easing/easings.ts | 6 + src/Velocity/easing/elastic.ts | 6 + src/Velocity/easing/string.ts | 6 + src/Velocity/normalizations/_all.d.ts | 5 +- src/Velocity/normalizations/dimensions.ts | 7 +- src/Velocity/normalizations/display.ts | 5 +- .../normalizations/genericReordering.ts | 35 -- src/Velocity/normalizations/normalizations.ts | 33 +- src/Velocity/normalizations/scroll.ts | 116 ++--- src/Velocity/normalizations/style.ts | 54 +++ src/Velocity/normalizations/svg/attributes.ts | 33 +- src/Velocity/normalizations/svg/dimensions.ts | 3 +- src/Velocity/normalizations/tween.ts | 20 + src/Velocity/normalizations/vendorPrefix.ts | 38 -- src/Velocity/tick.ts | 13 +- src/Velocity/tweens.ts | 133 ++---- src/Velocity/validate.ts | 2 - src/Velocity/version.ts | 2 +- src/app.ts | 26 +- src/constants.ts | 2 - ...Normalization property value reordering.ts | 49 +- test/test.js | 45 +- test/test.js.map | 2 +- velocity.js | 446 ++++++++---------- velocity.js.map | 2 +- velocity.min.js | 4 +- velocity.ui.min.js | 2 +- 40 files changed, 666 insertions(+), 664 deletions(-) delete mode 100644 src/Velocity/css/regex.ts delete mode 100644 src/Velocity/normalizations/genericReordering.ts create mode 100644 src/Velocity/normalizations/style.ts create mode 100644 src/Velocity/normalizations/tween.ts delete mode 100644 src/Velocity/normalizations/vendorPrefix.ts diff --git a/index.d.ts b/index.d.ts index 5289535f..beae1494 100644 --- a/index.d.ts +++ b/index.d.ts @@ -27,27 +27,26 @@ type VelocityActionFn = (args?: any[], elements?: VelocityResult, promiseHandler * @param propertyValue The value to set. If undefined then this is * a get action and must return a string value for that element. * - * @returns If a set action then returning any truthy value will prevent it - * trying to set the element.style[propertyName] value afterward - * returning. + * @returns When getting a value it must return a string, otherwise the return + * value is ignored. */ -type VelocityNormalizationsFn = ((element: HTMLorSVGElement, propertyValue: string) => boolean) & ((element: HTMLorSVGElement) => string); +type VelocityNormalizationsFn = ((element: HTMLorSVGElement, propertyValue: string) => void) & ((element: HTMLorSVGElement) => string); + +/** + * All easings. This is used for "easing:true" mapping, so that they can be + * recognised for auto-completion and type-safety with custom builds of + * Velocity. + */ +interface VelocityEasingsType {} // TODO: This needs to be auto-generated /** * List of all easing types for easy code completion in TypeScript */ type VelocityEasingType = VelocityEasingFn - | "linear" | "swing" | "spring" - | "ease" | "easeIn" | "easeOut" | "easeInOut" | "easeInSine" | "easeOutSine" - | "easeInOutSine" | "easeInQuad" | "easeOutQuad" | "easeInOutQuad" - | "easeInCubic" | "easeOutCubic" | "easeInOutCubic" | "easeInQuart" - | "easeOutQuart" | "easeInOutQuart" | "easeInQuint" | "easeOutQuint" - | "easeInOutQuint" | "easeInExpo" | "easeOutExpo" | "easeInOutExpo" - | "easeInCirc" | "easeOutCirc" | "easeInOutCirc" - | "ease-in" | "ease-out" | "ease-in-out" - | "at-start" | "at-end" | "during" - | string - | number[]; + | keyof VelocityEasingsType + | string // Need to leave in to prevent errors. + | [number] | [number, number] | [number, number, number, number] + | number[]; // Need to leave in to prevent errors. /** * The return type of any velocity call. If this is called via a "utility" @@ -446,7 +445,61 @@ interface ElementData { lastFinishList: {[name: string]: number}; } -type VelocityTween = [(string | number)[], VelocityEasingFn, (string | number)[], (string | number)[], boolean[]]; +type TweenPattern = ReadonlyArray; +type TweenValues = ReadonlyArray; + +interface TweenStep extends ReadonlyArray { + /** + * Percent of animation. + */ + percent?: number; + /** + * Easing function. + */ + easing?: VelocityEasingFn | null; + /** + * Values to tween and insert into pattern. + */ + [index: number]: TweenValues; +} + +interface VelocitySequence { + /** + * Pattern to use for tweening. + */ + pattern: TweenPattern; + /** + * Step value. + */ + [index: number]: TweenStep; +} + +interface VelocityTween { + /** + * Pattern to use for tweening (excludes sequence). + */ + pattern?: TweenPattern; + /** + * Normalization function - cached at animation creation time. + */ + fn: VelocityNormalizationsFn; + /** + * Sequence to use for tweening (excludes pattern). + */ + sequence?: VelocitySequence; + /** + * Easing function to use for entire tween. + */ + easing?: VelocityEasingFn; + /** + * Start value. + */ + start?: TweenValues; + /** + * End value. + */ + end: TweenValues; +} /** * AnimationFlags are used internally. These are subject to change as they are @@ -616,6 +669,7 @@ interface Velocity { } CSS: { + ColorNames: {[name: string]: string}; getPropertyValue(element: HTMLorSVGElement, property: string, rootPropertyValue?: string, forceStyleLookup?: boolean): string; getUnit(str: string, start?: number): string; fixColors(str: string): string; diff --git a/src/Velocity/actions/finish.ts b/src/Velocity/actions/finish.ts index 48b6fcba..5bbb8b3d 100644 --- a/src/Velocity/actions/finish.ts +++ b/src/Velocity/actions/finish.ts @@ -37,18 +37,18 @@ namespace VelocityStatic { } for (const property in animation.tweens) { const tween = animation.tweens[property], - pattern = tween[Tween.PATTERN]; + pattern = tween.pattern; let currentValue = "", i = 0; if (pattern) { for (; i < pattern.length; i++) { - const endValue = tween[Tween.END][i]; + const endValue = tween.end[i]; currentValue += endValue == null ? pattern[i] : endValue; } } - CSS.setPropertyValue(animation.element, property, currentValue); + CSS.setPropertyValue(animation.element, property, currentValue, tween.fn); } completeCall(animation); } diff --git a/src/Velocity/actions/style.ts b/src/Velocity/actions/style.ts index 6d0b319e..cabae8e6 100644 --- a/src/Velocity/actions/style.ts +++ b/src/Velocity/actions/style.ts @@ -47,12 +47,12 @@ namespace VelocityStatic { // If only a single animation is found and we're only targetting a // single element, then return the value directly if (elements.length === 1) { - return CSS.getPropertyValue(elements[0], property); + return CSS.fixColors(CSS.getPropertyValue(elements[0], property)); } const result = []; for (let i = 0; i < elements.length; i++) { - result.push(CSS.getPropertyValue(elements[i], property)); + result.push(CSS.fixColors(CSS.getPropertyValue(elements[i], property))); } return result; } diff --git a/src/Velocity/actions/tween.ts b/src/Velocity/actions/tween.ts index e6b16e45..6f40c730 100644 --- a/src/Velocity/actions/tween.ts +++ b/src/Velocity/actions/tween.ts @@ -85,22 +85,21 @@ namespace VelocityStatic { for (const property in fakeAnimation.tweens) { // For every element, iterate through each property. const tween = fakeAnimation.tweens[property], - easing = tween[Tween.EASING] || activeEasing, - pattern = tween[Tween.PATTERN], - rounding = tween[Tween.ROUNDING]; + easing = tween.easing || activeEasing, + pattern = tween.pattern; let currentValue = ""; count++; if (pattern) { for (let i = 0; i < pattern.length; i++) { - const startValue = tween[Tween.START][i]; + const startValue = tween.start[i]; if (startValue == null) { currentValue += pattern[i]; } else { - const result = easing(percentComplete, startValue as number, tween[Tween.END][i] as number, property) + const result = easing(percentComplete, startValue as number, tween.end[i] as number, property) - currentValue += rounding && rounding[i] ? Math.round(result) : result; + currentValue += pattern[i] === true ? Math.round(result) : result; } } } diff --git a/src/Velocity/css/_all.d.ts b/src/Velocity/css/_all.d.ts index bdf85b63..91872404 100644 --- a/src/Velocity/css/_all.d.ts +++ b/src/Velocity/css/_all.d.ts @@ -3,5 +3,4 @@ /// /// /// -/// /// diff --git a/src/Velocity/css/camelCase.ts b/src/Velocity/css/camelCase.ts index d6c664ae..e12f9d7b 100644 --- a/src/Velocity/css/camelCase.ts +++ b/src/Velocity/css/camelCase.ts @@ -22,8 +22,6 @@ namespace VelocityStatic.CSS { if (fixed) { return fixed; } - return cache[property] = property.replace(/-([a-z])/g, function(match: string, subMatch: string) { - return subMatch.toUpperCase(); - }) + return cache[property] = property.replace(/-([a-z])/g, ($: string, letter: string) => letter.toUpperCase()); } -} \ No newline at end of file +} diff --git a/src/Velocity/css/fixColors.ts b/src/Velocity/css/fixColors.ts index 4f6f03ff..eca983e5 100644 --- a/src/Velocity/css/fixColors.ts +++ b/src/Velocity/css/fixColors.ts @@ -22,7 +22,7 @@ namespace VelocityStatic.CSS { const rxColor6 = /#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})/gi, rxColor3 = /#([a-f\d])([a-f\d])([a-f\d])/gi, rxColorName = /(rgba?\(\s*)?(\b[a-z]+\b)/g, - rxRGB = /rgba?\([^\)]+\)/gi, + rxRGB = /rgb(a?)\(([^\)]+)\)/gi, rxSpaces = /\s+/g; /** @@ -41,8 +41,8 @@ namespace VelocityStatic.CSS { } return $0; }) - .replace(rxRGB, function($0) { - return $0.replace(rxSpaces, ""); + .replace(rxRGB, function($0, $1, $2: string) { + return "rgba(" + $2.replace(rxSpaces, "") + ($1 ? "" : ",1") + ")"; }); } } diff --git a/src/Velocity/css/getPropertyValue.ts b/src/Velocity/css/getPropertyValue.ts index 7f52e6d3..2a3bbc56 100644 --- a/src/Velocity/css/getPropertyValue.ts +++ b/src/Velocity/css/getPropertyValue.ts @@ -45,9 +45,6 @@ namespace VelocityStatic.CSS { Also, in all browsers, when border colors aren't all the same, a compound value is returned that Velocity isn't setup to parse. So, as a polyfill for querying individual border side colors, we just return the top border's color and animate all borders from that value. */ /* TODO: There is a borderColor normalisation in legacy/ - figure out where this is needed... */ - // if (property === "borderColor") { - // property = "borderTopColor"; - // } computedValue = computedStyle[property]; /* Fall back to the property's style value (if defined) when computedValue returns nothing, @@ -88,9 +85,9 @@ namespace VelocityStatic.CSS { /** * Get a property value. This will grab via the cache if it exists, then - * via any normalisations, then it will check the css values directly. + * via any normalisations. */ - export function getPropertyValue(element: HTMLorSVGElement, propertyName: string, skipNormalisation?: boolean, skipCache?: boolean): string { + export function getPropertyValue(element: HTMLorSVGElement, propertyName: string, fn?: VelocityNormalizationsFn, skipCache?: boolean): string { const data = Data(element); let propertyValue: string; @@ -99,37 +96,18 @@ namespace VelocityStatic.CSS { } if (!skipCache && data && data.cache[propertyName] != null) { propertyValue = data.cache[propertyName]; - if (debug >= 2) { - console.info("Get " + propertyName + ": " + propertyValue); - } - return propertyValue; } else { - let types = data.types, - best: VelocityNormalizationsFn; - - for (let index = 0; types; types >>= 1, index++) { - if (types & 1) { - best = Normalizations[index][propertyName] || best; + fn = fn || getNormalization(element, propertyName); + if (fn) { + propertyValue = fn(element); + if (data) { + data.cache[propertyName] = propertyValue; } } - if (best) { - propertyValue = best(element); - } else { - // Note: Retrieving the value of a CSS property cannot simply be - // performed by checking an element's style attribute (which - // only reflects user-defined values). Instead, the browser must - // be queried for a property's *computed* value. You can read - // more about getComputedStyle here: - // https://developer.mozilla.org/en/docs/Web/API/window.getComputedStyle - propertyValue = computePropertyValue(element, propertyName); - } } if (debug >= 2) { console.info("Get " + propertyName + ": " + propertyValue); } - if (data) { - data.cache[propertyName] = propertyValue; - } return propertyValue; } } diff --git a/src/Velocity/css/regex.ts b/src/Velocity/css/regex.ts deleted file mode 100644 index 26ac79b3..00000000 --- a/src/Velocity/css/regex.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * VelocityJS.org (C) 2014-2017 Julian Shapiro. - * - * Licensed under the MIT license. See LICENSE file in the project root for details. - * - * Regular Expressions - cached as they can be expensive to create. - */ - -namespace VelocityStatic.CSS { - - export const RegEx = { - isHex: /^#([A-f\d]{3}){1,2}$/i, - /* Unwrap a property value's surrounding text, e.g. "rgba(4, 3, 2, 1)" ==> "4, 3, 2, 1" and "rect(4px 3px 2px 1px)" ==> "4px 3px 2px 1px". */ - valueUnwrap: /^[A-z]+\((.*)\)$/i, - wrappedValueAlreadyExtracted: /[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/, - /* Split a multi-value property into an array of subvalues, e.g. "rgba(4, 3, 2, 1) 4px 3px 2px 1px" ==> [ "rgba(4, 3, 2, 1)", "4px", "3px", "2px", "1px" ]. */ - valueSplit: /([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/ig - }; -} \ No newline at end of file diff --git a/src/Velocity/css/setPropertyValue.ts b/src/Velocity/css/setPropertyValue.ts index 69400dd7..d35748cb 100644 --- a/src/Velocity/css/setPropertyValue.ts +++ b/src/Velocity/css/setPropertyValue.ts @@ -7,9 +7,9 @@ namespace VelocityStatic.CSS { /** * The singular setPropertyValue, which routes the logic for all - * normalizations, hooks, and standard CSS properties. + * normalizations. */ - export function setPropertyValue(element: HTMLorSVGElement, propertyName: string, propertyValue: any) { + export function setPropertyValue(element: HTMLorSVGElement, propertyName: string, propertyValue: any, fn?: VelocityNormalizationsFn) { const data = Data(element); if (isString(propertyValue) @@ -27,16 +27,9 @@ namespace VelocityStatic.CSS { if (data && data.cache[propertyName] !== propertyValue) { // By setting it to undefined we force a true "get" later data.cache[propertyName] = propertyValue || undefined; - let types = data.types, - best: VelocityNormalizationsFn; - - for (let index = 0; types; types >>= 1, index++) { - if (types & 1) { - best = Normalizations[index][propertyName] || best; - } - } - if (!best || !best(element, propertyValue)) { - element.style[propertyName] = propertyValue; + fn = fn || getNormalization(element, propertyName); + if (fn) { + fn(element, propertyValue); } if (debug >= 2) { console.info("Set " + propertyName + ": " + propertyValue, element); diff --git a/src/Velocity/easing/back.ts b/src/Velocity/easing/back.ts index 55ffca42..8cba935c 100644 --- a/src/Velocity/easing/back.ts +++ b/src/Velocity/easing/back.ts @@ -7,6 +7,12 @@ * Back easings, based on code from https://github.com/yuichiroharai/easeplus-velocity */ +interface VelocityEasingsType { + "easeInBack": true; + "easeOutBack": true; + "easeInOutBack": true; +} + namespace VelocityStatic.Easing { export function registerBackIn(name: string, amount: number) { registerEasing([name, function(percentComplete: number, startValue: number, endValue: number): number { diff --git a/src/Velocity/easing/bezier.ts b/src/Velocity/easing/bezier.ts index ce149ada..8bfc7fb4 100644 --- a/src/Velocity/easing/bezier.ts +++ b/src/Velocity/easing/bezier.ts @@ -7,6 +7,37 @@ * Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */ +interface VelocityEasingsType { + "ease": true; + "easeIn": true; + "ease-in": true; + "easeOut": true; + "ease-out": true; + "easeInOut": true; + "ease-in-out": true; + "easeInSine": true; + "easeOutSine": true; + "easeInOutSine": true; + "easeInQuad": true; + "easeOutQuad": true; + "easeInOutQuad": true; + "easeInCubic": true; + "easeOutCubic": true; + "easeInOutCubic": true; + "easeInQuart": true; + "easeOutQuart": true; + "easeInOutQuart": true; + "easeInQuint": true; + "easeOutQuint": true; + "easeInOutQuint": true; + "easeInExpo": true; + "easeOutExpo": true; + "easeInOutExpo": true; + "easeInCirc": true; + "easeOutCirc": true; + "easeInOutCirc": true; +} + namespace VelocityStatic.Easing { /** * Fix to a range of 0 <= num <= 1. diff --git a/src/Velocity/easing/bounce.ts b/src/Velocity/easing/bounce.ts index 8f3d4cdd..22f29d64 100644 --- a/src/Velocity/easing/bounce.ts +++ b/src/Velocity/easing/bounce.ts @@ -7,6 +7,12 @@ * Bounce easings, based on code from https://github.com/yuichiroharai/easeplus-velocity */ +interface VelocityEasingsType { + "easeInBounce": true; + "easeOutBounce": true; + "easeInOutBounce": true; +} + namespace VelocityStatic.Easing { function easeOutBounce(percentComplete: number): number { if (percentComplete < 1 / 2.75) { diff --git a/src/Velocity/easing/easings.ts b/src/Velocity/easing/easings.ts index e9759a77..c593f6fa 100644 --- a/src/Velocity/easing/easings.ts +++ b/src/Velocity/easing/easings.ts @@ -4,6 +4,12 @@ * Licensed under the MIT license. See LICENSE file in the project root for details. */ +interface VelocityEasingsType { + "linear": true; + "swing": true; + "spring": true; +} + namespace VelocityStatic.Easing { export const Easings: {[name: string]: VelocityEasingFn} = Object.create(null); diff --git a/src/Velocity/easing/elastic.ts b/src/Velocity/easing/elastic.ts index e05d517c..2a062531 100644 --- a/src/Velocity/easing/elastic.ts +++ b/src/Velocity/easing/elastic.ts @@ -7,6 +7,12 @@ * Elastic easings, based on code from https://github.com/yuichiroharai/easeplus-velocity */ +interface VelocityEasingsType { + "easeInElastic": true; + "easeOutElastic": true; + "easeInOutElastic": true; +} + namespace VelocityStatic.Easing { const pi2 = Math.PI * 2; diff --git a/src/Velocity/easing/string.ts b/src/Velocity/easing/string.ts index 696e6526..d988190d 100644 --- a/src/Velocity/easing/string.ts +++ b/src/Velocity/easing/string.ts @@ -8,6 +8,12 @@ * need. */ +interface VelocityEasingsType { + "at-start": true; + "during": true; + "at-end": true; +} + namespace VelocityStatic.Easing { /** * Easing function that sets to the specified value immediately after the diff --git a/src/Velocity/normalizations/_all.d.ts b/src/Velocity/normalizations/_all.d.ts index 148165dd..d199851d 100644 --- a/src/Velocity/normalizations/_all.d.ts +++ b/src/Velocity/normalizations/_all.d.ts @@ -2,7 +2,6 @@ /// /// /// -/// /// -/// - +/// +/// diff --git a/src/Velocity/normalizations/dimensions.ts b/src/Velocity/normalizations/dimensions.ts index e14568d5..df1b79a0 100644 --- a/src/Velocity/normalizations/dimensions.ts +++ b/src/Velocity/normalizations/dimensions.ts @@ -11,7 +11,7 @@ namespace VelocityStatic { * Figure out the dimensions for this width / height based on the * potential borders and whether we care about them. */ - export function augmentDimension(element: HTMLorSVGElement, name: string, wantInner: boolean): number { + export function augmentDimension(element: HTMLorSVGElement, name: "width" | "height", wantInner: boolean): number { const isBorderBox = CSS.getPropertyValue(element, "boxSizing").toString().toLowerCase() === "border-box"; if (isBorderBox === wantInner) { @@ -37,13 +37,12 @@ namespace VelocityStatic { /** * Get/set the inner/outer dimension. */ - function getDimension(name, wantInner: boolean) { - return function(element: HTMLorSVGElement, propertyValue?: string): string | boolean { + function getDimension(name: "width" | "height", wantInner: boolean) { + return function(element: HTMLorSVGElement, propertyValue?: string): string | void { if (propertyValue === undefined) { return augmentDimension(element, name, wantInner) + "px"; } CSS.setPropertyValue(element, name, (parseFloat(propertyValue) - augmentDimension(element, name, wantInner)) + "px"); - return true; } as VelocityNormalizationsFn; } diff --git a/src/Velocity/normalizations/display.ts b/src/Velocity/normalizations/display.ts index 82f17058..ffa9d638 100644 --- a/src/Velocity/normalizations/display.ts +++ b/src/Velocity/normalizations/display.ts @@ -17,8 +17,8 @@ namespace VelocityStatic { * based on the type of element. */ function display(element: HTMLorSVGElement): string; - function display(element: HTMLorSVGElement, propertyValue: string): boolean; - function display(element: HTMLorSVGElement, propertyValue?: string): string | boolean { + function display(element: HTMLorSVGElement, propertyValue: string): void; + function display(element: HTMLorSVGElement, propertyValue?: string): string | void { const style = element.style; if (propertyValue === undefined) { @@ -47,7 +47,6 @@ namespace VelocityStatic { data.cache["display"] = propertyValue; } style.display = propertyValue; - return true; } registerNormalization([Element, "display", display]); diff --git a/src/Velocity/normalizations/genericReordering.ts b/src/Velocity/normalizations/genericReordering.ts deleted file mode 100644 index 90eda035..00000000 --- a/src/Velocity/normalizations/genericReordering.ts +++ /dev/null @@ -1,35 +0,0 @@ -/// -/* - * VelocityJS.org (C) 2014-2017 Julian Shapiro. - * - * Licensed under the MIT license. See LICENSE file in the project root for details. - */ - -namespace VelocityStatic { - function genericReordering(element: HTMLorSVGElement): string; - function genericReordering(element: HTMLorSVGElement, propertyValue: string): boolean; - function genericReordering(element: HTMLorSVGElement, propertyValue?: string): string | boolean { - if (propertyValue === undefined) { - propertyValue = CSS.getPropertyValue(element, "textShadow"); - const split = propertyValue.split(/\s/g), - firstPart = split[0]; - let newValue = ""; - - if (CSS.ColorNames[firstPart]) { - split.shift(); - split.push(firstPart); - newValue = split.join(" "); - } else if (firstPart.match(/^#|^hsl|^rgb|-gradient/)) { - const matchedString = propertyValue.match(/(hsl.*\)|#[\da-fA-F]+|rgb.*\)|.*gradient.*\))\s/g)[0]; - - newValue = propertyValue.replace(matchedString, "") + " " + matchedString.trim(); - } else { - newValue = propertyValue; - } - return newValue; - } - return false; - } - - registerNormalization([Element, "textShadow", genericReordering]); -} diff --git a/src/Velocity/normalizations/normalizations.ts b/src/Velocity/normalizations/normalizations.ts index 057e7eeb..e257793e 100644 --- a/src/Velocity/normalizations/normalizations.ts +++ b/src/Velocity/normalizations/normalizations.ts @@ -13,6 +13,11 @@ namespace VelocityStatic { + /** + * The highest type index for finding the best normalization for a property. + */ + export let MaxType: number = -1; + /** * Unlike "actions", normalizations can always be replaced by users. */ @@ -65,7 +70,7 @@ namespace VelocityStatic { let index = constructors.indexOf(constructor); if (index < 0) { - index = constructors.push(constructor) - 1; + MaxType = index = constructors.push(constructor) - 1; Normalizations[index] = Object.create(null); } Normalizations[index][name] = callback; @@ -75,5 +80,29 @@ namespace VelocityStatic { } } - registerAction(["registerNormalization", registerNormalization as any]); + /** + * Used to check if a normalisation exists on a specific class. + */ + export function hasNormalization(args?: [ClassConstructor, string]) { + const constructor = args[0], + name: string = args[1]; + let index = constructors.indexOf(constructor); + + return !!Normalizations[index][name]; + } + + export function getNormalization(element: HTMLorSVGElement, propertyName: string) { + const data = Data(element); + let fn: VelocityNormalizationsFn; + + for (let index = MaxType, types = data.types; !fn && index >= 0; index--) { + if (types & (1 << index)) { + fn = Normalizations[index][propertyName]; + } + } + return fn; + } + + registerAction(["registerNormalization", registerNormalization]); + registerAction(["hasNormalization", hasNormalization]); } diff --git a/src/Velocity/normalizations/scroll.ts b/src/Velocity/normalizations/scroll.ts index 7e23883b..ae502bd9 100644 --- a/src/Velocity/normalizations/scroll.ts +++ b/src/Velocity/normalizations/scroll.ts @@ -10,123 +10,83 @@ namespace VelocityStatic { * Get the scrollWidth of an element. */ function clientWidth(element: HTMLorSVGElement): string; - function clientWidth(element: HTMLorSVGElement, propertyValue: string): boolean; - function clientWidth(element: HTMLorSVGElement, propertyValue?: string): string | boolean { + function clientWidth(element: HTMLorSVGElement, propertyValue: string): void; + function clientWidth(element: HTMLorSVGElement, propertyValue?: string): string | void { if (propertyValue == null) { return element.clientWidth + "px"; } - return false; } /** * Get the scrollWidth of an element. */ function scrollWidth(element: HTMLorSVGElement): string; - function scrollWidth(element: HTMLorSVGElement, propertyValue: string): boolean; - function scrollWidth(element: HTMLorSVGElement, propertyValue?: string): string | boolean { + function scrollWidth(element: HTMLorSVGElement, propertyValue: string): void; + function scrollWidth(element: HTMLorSVGElement, propertyValue?: string): string | void { if (propertyValue == null) { return element.scrollWidth + "px"; } - return false; } /** * Get the scrollHeight of an element. */ function clientHeight(element: HTMLorSVGElement): string; - function clientHeight(element: HTMLorSVGElement, propertyValue: string): boolean; - function clientHeight(element: HTMLorSVGElement, propertyValue?: string): string | boolean { + function clientHeight(element: HTMLorSVGElement, propertyValue: string): void; + function clientHeight(element: HTMLorSVGElement, propertyValue?: string): string | void { if (propertyValue == null) { return element.clientHeight + "px"; } - return false; } /** * Get the scrollHeight of an element. */ function scrollHeight(element: HTMLorSVGElement): string; - function scrollHeight(element: HTMLorSVGElement, propertyValue: string): boolean; - function scrollHeight(element: HTMLorSVGElement, propertyValue?: string): string | boolean { + function scrollHeight(element: HTMLorSVGElement, propertyValue: string): void; + function scrollHeight(element: HTMLorSVGElement, propertyValue?: string): string | void { if (propertyValue == null) { return element.scrollHeight + "px"; } - return false; } /** - * Scroll an element (vertical). + * Scroll an element. */ - function scrollTop(element: HTMLorSVGElement): string; - function scrollTop(element: HTMLorSVGElement, propertyValue: string): boolean; - function scrollTop(element: HTMLorSVGElement, propertyValue?: string): string | boolean { - if (propertyValue == null) { - // getPropertyValue(element, "clientWidth", false, true); - // getPropertyValue(element, "scrollWidth", false, true); - // getPropertyValue(element, "scrollLeft", false, true); - CSS.getPropertyValue(element, "clientHeight", false, true); - CSS.getPropertyValue(element, "scrollHeight", false, true); - CSS.getPropertyValue(element, "scrollTop", false, true); - return element.scrollTop + "px"; - } - // console.log("setScrollTop", propertyValue) - const value = parseFloat(propertyValue), - unit = propertyValue.replace(String(value), ""); + function scroll(direction: "Height", end: "Top"): VelocityNormalizationsFn; + function scroll(direction: "Width", end: "Left"): VelocityNormalizationsFn; + function scroll(direction: "Height" | "Width", end: "Top" | "Left"): VelocityNormalizationsFn { + return function(element: HTMLorSVGElement, propertyValue?: string): string | void { + if (propertyValue == null) { + // Make sure we have these values cached. + CSS.getPropertyValue(element, "client" + direction, null, true); + CSS.getPropertyValue(element, "scroll" + direction, null, true); + CSS.getPropertyValue(element, "scroll" + end, null, true); + return element["scroll" + end] + "px"; + } + // console.log("setScrollTop", propertyValue) + const value = parseFloat(propertyValue), + unit = propertyValue.replace(String(value), ""); - switch (unit) { - case "": - case "px": - element.scrollTop = value; - break; + switch (unit) { + case "": + case "px": + element["scroll" + end] = value; + break; - case "%": - let clientHeight = parseFloat(CSS.getPropertyValue(element, "clientHeight")), - scrollHeight = parseFloat(CSS.getPropertyValue(element, "scrollHeight")); + case "%": + let client = parseFloat(CSS.getPropertyValue(element, "client" + direction)), + scroll = parseFloat(CSS.getPropertyValue(element, "scroll" + direction)); - // console.log("setScrollTop percent", scrollHeight, clientHeight, value, Math.max(0, scrollHeight - clientHeight) * value / 100) - element.scrollTop = Math.max(0, scrollHeight - clientHeight) * value / 100; - } - return false; - } - - /** - * Scroll an element (horizontal). - */ - function scrollLeft(element: HTMLorSVGElement): string; - function scrollLeft(element: HTMLorSVGElement, propertyValue: string): boolean; - function scrollLeft(element: HTMLorSVGElement, propertyValue?: string): string | boolean { - if (propertyValue == null) { - // getPropertyValue(element, "clientWidth", false, true); - // getPropertyValue(element, "scrollWidth", false, true); - // getPropertyValue(element, "scrollLeft", false, true); - CSS.getPropertyValue(element, "clientWidth", false, true); - CSS.getPropertyValue(element, "scrollWidth", false, true); - CSS.getPropertyValue(element, "scrollLeft", false, true); - return element.scrollLeft + "px"; - } - // console.log("setScrollLeft", propertyValue) - const value = parseFloat(propertyValue), - unit = propertyValue.replace(String(value), ""); - - switch (unit) { - case "": - case "px": - element.scrollLeft = value; - break; - - case "%": - let clientWidth = parseFloat(CSS.getPropertyValue(element, "clientWidth")), - scrollWidth = parseFloat(CSS.getPropertyValue(element, "scrollWidth")); - - // console.log("setScrollLeft percent", scrollWidth, clientWidth, value, Math.max(0, scrollWidth - clientWidth) * value / 100) - element.scrollTop = Math.max(0, scrollWidth - clientWidth) * value / 100; - } - return false; + // console.log("setScrollTop percent", scrollHeight, clientHeight, value, Math.max(0, scrollHeight - clientHeight) * value / 100) + element["scroll" + end] = Math.max(0, scroll - client) * value / 100; + } + } as VelocityNormalizationsFn; } - registerNormalization([HTMLElement, "scroll", scrollTop, false]); - registerNormalization([HTMLElement, "scrollTop", scrollTop, false]); - registerNormalization([HTMLElement, "scrollLeft", scrollLeft, false]); + registerNormalization([HTMLElement, "scroll", scroll("Height", "Top"), false]); + registerNormalization([HTMLElement, "scrollTop", scroll("Height", "Top"), false]); + registerNormalization([HTMLElement, "scrollLeft", scroll("Width", "Left"), false]); registerNormalization([HTMLElement, "scrollWidth", scrollWidth]); registerNormalization([HTMLElement, "clientWidth", clientWidth]); registerNormalization([HTMLElement, "scrollHeight", scrollHeight]); diff --git a/src/Velocity/normalizations/style.ts b/src/Velocity/normalizations/style.ts new file mode 100644 index 00000000..9e52d47d --- /dev/null +++ b/src/Velocity/normalizations/style.ts @@ -0,0 +1,54 @@ +/// +/* + * VelocityJS.org (C) 2014-2017 Julian Shapiro. + * + * Licensed under the MIT license. See LICENSE file in the project root for details. + * + * This handles all CSS style properties. With browser prefixed properties it + * will register a version that handles setting (and getting) both the prefixed + * and non-prefixed version. + */ + +namespace VelocityStatic { + + /** + * Return a Normalisation that can be used to set / get a prefixed style + * property. + */ + function getSetPrefixed(propertyName: string, unprefixed: string) { + return function(element: HTMLorSVGElement, propertyValue?: string): string | void { + if (propertyValue === undefined) { + return CSS.computePropertyValue(element, propertyName) || CSS.computePropertyValue(element, unprefixed); + } + element.style[propertyName] = element.style[unprefixed] = propertyValue; + } as VelocityNormalizationsFn; + } + + /** + * Return a Normalisation that can be used to set / get a style property. + */ + function getSetStyle(propertyName: string) { + return function(element: HTMLorSVGElement, propertyValue?: string): string | void { + if (propertyValue === undefined) { + return CSS.computePropertyValue(element, propertyName); + } + element.style[propertyName] = propertyValue; + } as VelocityNormalizationsFn; + } + + const rxVendors = /^(webkit|moz|ms|o)[A-Z]/, + rxUnit = /^\d+([a-z]+)/, + prefixElement = State.prefixElement; + + for (const propertyName in prefixElement.style) { + if (rxVendors.test(propertyName)) { + let unprefixed = propertyName.replace(/^[a-z]+([A-Z])/, ($, letter: string) => letter.toLowerCase()); + + if (ALL_VENDOR_PREFIXES || isString(prefixElement.style[unprefixed])) { + registerNormalization([Element, unprefixed, getSetPrefixed(propertyName, unprefixed)]); + } + } else if (!hasNormalization([Element, propertyName])) { + registerNormalization([Element, propertyName, getSetStyle(propertyName)]); + } + } +} diff --git a/src/Velocity/normalizations/svg/attributes.ts b/src/Velocity/normalizations/svg/attributes.ts index c89518c3..9350f3a1 100644 --- a/src/Velocity/normalizations/svg/attributes.ts +++ b/src/Velocity/normalizations/svg/attributes.ts @@ -11,12 +11,11 @@ namespace VelocityStatic.CSS { * Get/set an attribute. */ function getAttribute(name: string) { - return function(element: Element, propertyValue?: string): string | boolean { + return function(element: Element, propertyValue?: string): string | void { if (propertyValue === undefined) { return element.getAttribute(name); } element.setAttribute(name, propertyValue); - return true; } as VelocityNormalizationsFn; } @@ -27,22 +26,26 @@ namespace VelocityStatic.CSS { Object.getOwnPropertyNames(window).forEach(function(globals) { const subtype = rxSubtype.exec(globals); - if (subtype) { - const element = document.createElementNS("http://www.w3.org/2000/svg", (subtype[1] || "svg").toLowerCase()), - constructor = element.constructor; + if (subtype && subtype[1] !== "SVG") { // Don't do SVGSVGElement. + try { + const element = subtype[1] ? document.createElementNS("http://www.w3.org/2000/svg", (subtype[1] || "svg").toLowerCase()) : document.createElement("svg"), + constructor = element.constructor; - for (let attribute in element) { - const value = element[attribute]; + for (let attribute in element) { + const value = element[attribute]; - if (isString(attribute) - && !(attribute[0] === "o" && attribute[1] === "n") - && attribute !== attribute.toUpperCase() - && !rxElement.test(attribute) - && !(attribute in base) - && !isFunction(value)) { - // TODO: Should this all be set on the generic SVGElement, it would save space and time, but not as powerful - registerNormalization([constructor as any, attribute, getAttribute(attribute)]); + if (isString(attribute) + && !(attribute[0] === "o" && attribute[1] === "n") + && attribute !== attribute.toUpperCase() + && !rxElement.test(attribute) + && !(attribute in base) + && !isFunction(value)) { + // TODO: Should this all be set on the generic SVGElement, it would save space and time, but not as powerful + registerNormalization([constructor as any, attribute, getAttribute(attribute)]); + } } + } catch (e) { + console.error("VelocityJS: Error when trying to identify SVG attributes on " + globals + ".", e); } } }); diff --git a/src/Velocity/normalizations/svg/dimensions.ts b/src/Velocity/normalizations/svg/dimensions.ts index e2951e4d..84f3c0a6 100644 --- a/src/Velocity/normalizations/svg/dimensions.ts +++ b/src/Velocity/normalizations/svg/dimensions.ts @@ -11,7 +11,7 @@ namespace VelocityStatic.CSS { * Get/set the width or height. */ function getDimension(name: string) { - return function(element: HTMLorSVGElement, propertyValue?: string): string | boolean { + return function(element: HTMLorSVGElement, propertyValue?: string): string | void { if (propertyValue === undefined) { // Firefox throws an error if .getBBox() is called on an SVG that isn't attached to the DOM. try { @@ -21,7 +21,6 @@ namespace VelocityStatic.CSS { } } element.setAttribute(name, propertyValue); - return true; } as VelocityNormalizationsFn; } diff --git a/src/Velocity/normalizations/tween.ts b/src/Velocity/normalizations/tween.ts new file mode 100644 index 00000000..51695e37 --- /dev/null +++ b/src/Velocity/normalizations/tween.ts @@ -0,0 +1,20 @@ +/// +/* + * VelocityJS.org (C) 2014-2017 Julian Shapiro. + * + * Licensed under the MIT license. See LICENSE file in the project root for details. + */ + +namespace VelocityStatic { + + /** + * A fake normalization used to allow the "tween" property easy access. + */ + function getSetTween(element: HTMLorSVGElement, propertyValue?: string) { + if (propertyValue === undefined) { + return ""; + } + } + + registerNormalization([Element, "tween", getSetTween]); +} diff --git a/src/Velocity/normalizations/vendorPrefix.ts b/src/Velocity/normalizations/vendorPrefix.ts deleted file mode 100644 index a3e640d7..00000000 --- a/src/Velocity/normalizations/vendorPrefix.ts +++ /dev/null @@ -1,38 +0,0 @@ -/// -/* - * VelocityJS.org (C) 2014-2017 Julian Shapiro. - * - * Licensed under the MIT license. See LICENSE file in the project root for details. - */ - -namespace VelocityStatic { - - /** - * Return a Normalisation that can be used to set / get the vendor prefixed - * real name for a propery. - */ - function vendorPrefix(property: string, unprefixed: string) { - return function(element: HTMLorSVGElement, propertyValue?: string): string | boolean { - if (propertyValue === undefined) { - return element.style[unprefixed]; - } - CSS.setPropertyValue(element, property, propertyValue); - return true; - } as VelocityNormalizationsFn; - } - - const vendors = [/^webkit[A-Z]/, /^moz[A-Z]/, /^ms[A-Z]/, /^o[A-Z]/], - prefixElement = State.prefixElement; - - for (const property in prefixElement.style) { - for (let i = 0; i < vendors.length; i++) { - if (vendors[i].test(property)) { - let unprefixed = property.replace(/^[a-z]+([A-Z])/, ($, letter: string) => letter.toLowerCase()); - - if (ALL_VENDOR_PREFIXES || isString(prefixElement.style[unprefixed])) { - registerNormalization([Element, unprefixed, vendorPrefix(property, unprefixed)]); - } - } - } - } -} diff --git a/src/Velocity/tick.ts b/src/Velocity/tick.ts index 81dbd409..4c4d6f6d 100644 --- a/src/Velocity/tick.ts +++ b/src/Velocity/tick.ts @@ -306,29 +306,28 @@ namespace VelocityStatic { for (const property in tweens) { // For every element, iterate through each property. const tween = tweens[property], - easing = tween[Tween.EASING] || activeEasing, - pattern = tween[Tween.PATTERN], - rounding = tween[Tween.ROUNDING]; + easing = tween.easing || activeEasing, + pattern = tween.pattern; let currentValue = "", i = 0; if (pattern) { for (; i < pattern.length; i++) { - const startValue = tween[Tween.START][i]; + const startValue = tween.start[i]; if (startValue == null) { currentValue += pattern[i]; } else { // All easings must deal with numbers except for // our internal ones - const result = easing(reverse ? 1 - percentComplete : percentComplete, startValue as number, tween[Tween.END][i] as number, property) + const result = easing(reverse ? 1 - percentComplete : percentComplete, startValue as number, tween.end[i] as number, property) - currentValue += rounding && rounding[i] ? Math.round(result) : result; + currentValue += pattern[i] === true ? Math.round(result) : result; } } if (property !== "tween") { // TODO: To solve an IE<=8 positioning bug, the unit type must be dropped when setting a property value of 0 - add normalisations to legacy - CSS.setPropertyValue(activeCall.element, property, currentValue); + CSS.setPropertyValue(activeCall.element, property, currentValue, tween.fn); } else { // Skip the fake 'tween' property as that is only // passed into the progress callback. diff --git a/src/Velocity/tweens.ts b/src/Velocity/tweens.ts index 3f75ca94..31ac16af 100644 --- a/src/Velocity/tweens.ts +++ b/src/Velocity/tweens.ts @@ -6,61 +6,46 @@ * Tweens */ -const enum Tween { - END, - EASING, - START, - PATTERN, - ROUNDING, - length -}; - namespace VelocityStatic { - let commands = new Map string>(); + const rxHex = /^#([A-f\d]{3}){1,2}$/i; + let commands = new Map string>(); - commands.set("function", function(value: any, element: HTMLorSVGElement, elements: HTMLorSVGElement[], elementArrayIndex: number) { + commands.set("function", function(value, element, elements, elementArrayIndex, propertyName, tween) { return (value as any as VelocityPropertyValueFn).call(element, elementArrayIndex, elements.length); }) - commands.set("number", function(value, element, elements, elementArrayIndex, propertyName) { + commands.set("number", function(value, element, elements, elementArrayIndex, propertyName, tween) { return value + (element instanceof HTMLElement ? getUnitType(propertyName) : ""); }); - commands.set("string", function(value, element, elements, elementArrayIndex, propertyName) { + commands.set("string", function(value, element, elements, elementArrayIndex, propertyName, tween) { return CSS.fixColors(value); }); - commands.set("undefined", function(value, element, elements, elementArrayIndex, propertyName) { - return CSS.fixColors(CSS.getPropertyValue(element, propertyName) || ""); + commands.set("undefined", function(value, element, elements, elementArrayIndex, propertyName, tween) { + return CSS.fixColors(CSS.getPropertyValue(element, propertyName, tween.fn) || ""); }); - const - /** - * Properties that take "deg" as the default numeric suffix. - */ - degree = [ - // "azimuth" // Deprecated - ], - /** - * Properties that take no default numeric suffix. - */ - unitless = [ - "borderImageSlice", - "columnCount", - "counterIncrement", - "counterReset", - "flex", - "flexGrow", - "flexShrink", - "floodOpacity", - "fontSizeAdjust", - "fontWeight", - "lineHeight", - "opacity", - "order", - "orphans", - "shapeImageThreshold", - "tabSize", - "widows", - "zIndex" - ]; + /** + * Properties that take no default numeric suffix. + */ + const unitless = [ + "borderImageSlice", + "columnCount", + "counterIncrement", + "counterReset", + "flex", + "flexGrow", + "flexShrink", + "floodOpacity", + "fontSizeAdjust", + "fontWeight", + "lineHeight", + "opacity", + "order", + "orphans", + "shapeImageThreshold", + "tabSize", + "widows", + "zIndex" + ]; /** * Retrieve a property's default unit type. Used for assigning a unit @@ -68,13 +53,7 @@ namespace VelocityStatic { * HTMLElement style properties. */ function getUnitType(property: string): string { - if (_inArray(degree, property)) { - return "deg"; - } - if (_inArray(unitless, property)) { - return ""; - } - return "px"; + return _inArray(unitless, property) ? "" : "px"; } /** @@ -94,15 +73,9 @@ namespace VelocityStatic { for (const property in properties) { const propertyName = CSS.camelCase(property); let valueData = properties[property], - types = data.types, - found: boolean = propertyName === "tween"; + fn = getNormalization(element, propertyName); - for (let index = 0; types && !found; types >>= 1, index++) { - found = !!(types & 1 && Normalizations[index][propertyName]); - } - if (!found - && (!State.prefixElement - || !isString(State.prefixElement.style[propertyName]))) { + if (!fn && propertyName !== "tween") { if (debug) { console.log("Skipping [" + property + "] due to a lack of browser support."); } @@ -114,10 +87,11 @@ namespace VelocityStatic { } continue; } - const tween: VelocityTween = tweens[propertyName] = new Array(Tween.length) as any; + const tween: VelocityTween = tweens[propertyName] = Object.create(null) as any; let endValue: string, startValue: string; + tween.fn = fn; if (isFunction(valueData)) { // If we have a function as the main argument then resolve // it first, in case it returns an array that needs to be @@ -131,10 +105,10 @@ namespace VelocityStatic { arr2 = valueData[2]; endValue = valueData[0] as any; - if ((isString(arr1) && (/^[\d-]/.test(arr1) || CSS.RegEx.isHex.test(arr1))) || isFunction(arr1) || isNumber(arr1)) { + if ((isString(arr1) && (/^[\d-]/.test(arr1) || rxHex.test(arr1))) || isFunction(arr1) || isNumber(arr1)) { startValue = arr1 as any; } else if ((isString(arr1) && Easing.Easings[arr1]) || Array.isArray(arr1)) { - tween[Tween.EASING] = arr1 as any; + tween.easing = arr1 as any; startValue = arr2 as any; } else { startValue = arr1 || arr2 as any; @@ -142,9 +116,9 @@ namespace VelocityStatic { } else { endValue = valueData as any; } - tween[Tween.END] = commands.get(typeof endValue)(endValue, element, elements, elementArrayIndex, propertyName) as any; + tween.end = commands.get(typeof endValue)(endValue, element, elements, elementArrayIndex, propertyName, tween) as any; if (startValue != null || (queue === false || data.queueList[queue] === undefined)) { - tween[Tween.START] = commands.get(typeof startValue)(startValue, element, elements, elementArrayIndex, propertyName) as any; + tween.start = commands.get(typeof startValue)(startValue, element, elements, elementArrayIndex, propertyName, tween) as any; } explodeTween(propertyName, tween, duration, !!startValue); } @@ -155,8 +129,8 @@ namespace VelocityStatic { * based tween with arrays. */ function explodeTween(propertyName: string, tween: VelocityTween, duration: number, isForcefeed?: boolean) { - const endValue: string = tween[Tween.END] as any as string; - let startValue: string = tween[Tween.START] as any as string; + const endValue: string = tween.end as any as string; + let startValue: string = tween.start as any as string; if (!isString(endValue) || !isString(startValue)) { return; @@ -164,11 +138,10 @@ namespace VelocityStatic { let runAgain = false; // Can only be set once if the Start value doesn't match the End value and it's not forcefed do { runAgain = false; - const arrayStart: (string | number)[] = tween[Tween.START] = [null], - arrayEnd: (string | number)[] = tween[Tween.END] = [null], - pattern: (string | number)[] = tween[Tween.PATTERN] = [""]; - let easing = tween[Tween.EASING] as any, - rounding: boolean[], + const arrayStart: (string | number)[] = tween.start = [null], + arrayEnd: (string | number)[] = tween.end = [null], + pattern: (string | boolean)[] = tween.pattern = [""]; + let easing = tween.easing as any, indexStart = 0, // index in startValue indexEnd = 0, // index in endValue inCalc = 0, // Keep track of being inside a "calc()" so we don't duplicate it @@ -248,13 +221,7 @@ namespace VelocityStatic { // Same numbers, so just copy over pattern[pattern.length - 1] += tempStart + unitStart; } else { - if (inRGB) { - if (!rounding) { - rounding = tween[Tween.ROUNDING] = []; - } - rounding[arrayStart.length] = true; - } - pattern.push(0, unitStart); + pattern.push(inRGB ? true : false, unitStart); arrayStart.push(parseFloat(tempStart), null); arrayEnd.push(parseFloat(tempEnd), null); } @@ -264,7 +231,7 @@ namespace VelocityStatic { // look out for the final "calc(0 + " prefix and remove // it from the value when it finds it. pattern[pattern.length - 1] += inCalc ? "+ (" : "calc("; - pattern.push(0, unitStart + " + ", 0, unitEnd + ")"); + pattern.push(false, unitStart + " + ", false, unitEnd + ")"); arrayStart.push(parseFloat(tempStart) || 0, null, 0, null); arrayEnd.push(0, null, parseFloat(tempEnd) || 0, null); } @@ -386,7 +353,7 @@ namespace VelocityStatic { console.warn("Velocity: String easings must use one of 'at-start', 'during' or 'at-end': {" + propertyName + ": [\"" + endValue + "\", " + easing + ", \"" + startValue + "\"]}"); easing = "at-start"; } - tween[Tween.EASING] = validateEasing(easing, duration); + tween.easing = validateEasing(easing, duration); } // This can only run a second time once - if going from automatic startValue to "fixed" pattern from endValue with startValue numbers } while (runAgain); @@ -415,12 +382,12 @@ namespace VelocityStatic { for (const propertyName in tweens) { const tween = tweens[propertyName]; - if (tween[Tween.START] == null) { + if (tween.start == null) { // Get the start value as it's not been passed in const startValue = CSS.getPropertyValue(activeCall.element, propertyName); if (isString(startValue)) { - tween[Tween.START] = CSS.fixColors(startValue) as any; + tween.start = CSS.fixColors(startValue) as any; explodeTween(propertyName, tween, duration); } else if (!Array.isArray(startValue)) { console.warn("bad type", tween, propertyName, startValue) diff --git a/src/Velocity/validate.ts b/src/Velocity/validate.ts index 4883eeb3..36281d3d 100644 --- a/src/Velocity/validate.ts +++ b/src/Velocity/validate.ts @@ -16,11 +16,9 @@ function parseDuration(duration: "fast" | "normal" | "slow" | number, def?: "fas if (isNumber(duration)) { return duration; } - if (isString(duration)) { return Duration[duration.toLowerCase()] || parseFloat(duration.replace("ms", "").replace("s", "000")); } - return def == null ? undefined : parseDuration(def); } diff --git a/src/Velocity/version.ts b/src/Velocity/version.ts index d1381e87..2f968fe6 100644 --- a/src/Velocity/version.ts +++ b/src/Velocity/version.ts @@ -7,5 +7,5 @@ */ namespace VelocityStatic { - export let version = VERSION; + export let version = "2.0.1"; }; diff --git a/src/app.ts b/src/app.ts index cff539dc..570da9e1 100644 --- a/src/app.ts +++ b/src/app.ts @@ -14,12 +14,26 @@ * be allowed. */ for (const key in VelocityStatic) { - Object.defineProperty(VelocityFn, key, { - enumerable: PUBLIC_MEMBERS.indexOf(key) >= 0, - get: function() { - return VelocityStatic[key]; - } - }); + let value = VelocityStatic[key]; + + if (isString(value) || isNumber(value) || isBoolean(value)) { + Object.defineProperty(VelocityFn, key, { + enumerable: PUBLIC_MEMBERS.indexOf(key) >= 0, + get: function() { + return VelocityStatic[key]; + }, + set: function(value?: any) { + VelocityStatic[key] = value; + } + }); + } else { + Object.defineProperty(VelocityFn, key, { + enumerable: PUBLIC_MEMBERS.indexOf(key) >= 0, + get: function() { + return VelocityStatic[key]; + } + }); + } } // console.log("Velocity keys", Object.keys(VelocityStatic)); diff --git a/src/constants.ts b/src/constants.ts index 3b298f6a..9920c2a0 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -37,8 +37,6 @@ const TWEEN_NUMBER_REGEX = /[\d\.-]/; const CLASSNAME = "velocity-animating"; -const VERSION = "2.0.1"; - const Duration = { "fast": DURATION_FAST, "normal": DURATION_NORMAL, diff --git a/test/src/6. Properties/Normalization property value reordering.ts b/test/src/6. Properties/Normalization property value reordering.ts index b405eccf..2d407054 100644 --- a/test/src/6. Properties/Normalization property value reordering.ts +++ b/test/src/6. Properties/Normalization property value reordering.ts @@ -5,46 +5,71 @@ * Licensed under the MIT license. See LICENSE file in the project root for details. */ -QUnit.todo("GenericReordering", function(assert) { +QUnit.test("GenericReordering", function(assert) { + + function genericReordering(element: HTMLorSVGElement, propertyValue?: string): string | void { + if (propertyValue === undefined) { + propertyValue = Velocity(element, "style", "textShadow"); + const split = propertyValue.split(/\s/g), + firstPart = split[0]; + let newValue = ""; + + if (Velocity.CSS.ColorNames[firstPart]) { + split.shift(); + split.push(firstPart); + newValue = split.join(" "); + } else if (firstPart.match(/^#|^hsl|^rgb|-gradient/)) { + const matchedString = propertyValue.match(/(hsl.*\)|#[\da-fA-F]+|rgb.*\)|.*gradient.*\))\s/g)[0]; + + newValue = propertyValue.replace(matchedString, "") + " " + matchedString.trim(); + } else { + newValue = propertyValue; + } + return newValue; + } + } + + Velocity("registerNormalization", Element, "genericReordering", genericReordering); + let tests = [ { test: "hsl(16, 100%, 66%) 1px 1px 1px", result: "1px 1px 1px hsl(16, 100%, 66%)", }, { test: "-webkit-linear-gradient(red, yellow) 1px 1px 1px", - result: "1px 1px 1px -webkit-linear-gradient(red, yellow)", + result: "1px 1px 1px -webkit-linear-gradient(rgba(255,0,0,1), rgba(255,255,0,1))", }, { test: "-o-linear-gradient(red, yellow) 1px 1px 1px", - result: "1px 1px 1px -o-linear-gradient(red, yellow)", + result: "1px 1px 1px -o-linear-gradient(rgba(255,0,0,1), rgba(255,255,0,1))", }, { test: "-moz-linear-gradient(red, yellow) 1px 1px 1px", - result: "1px 1px 1px -moz-linear-gradient(red, yellow)", + result: "1px 1px 1px -moz-linear-gradient(rgba(255,0,0,1), rgba(255,255,0,1))", }, { test: "linear-gradient(red, yellow) 1px 1px 1px", - result: "1px 1px 1px linear-gradient(red, yellow)", + result: "1px 1px 1px linear-gradient(rgba(255,0,0,1), rgba(255,255,0,1))", }, { test: "red 1px 1px 1px", - result: "1px 1px 1px red", + result: "1px 1px 1px rgba(255,0,0,1)", }, { test: "#000000 1px 1px 1px", - result: "1px 1px 1px #000000", + result: "1px 1px 1px rgba(0,0,0,1)", }, { test: "rgb(0, 0, 0) 1px 1px 1px", - result: "1px 1px 1px rgb(0, 0, 0)", + result: "1px 1px 1px rgba(0,0,0,1)", }, { test: "rgba(0, 0, 0, 1) 1px 1px 1px", - result: "1px 1px 1px rgba(0, 0, 0, 1)", + result: "1px 1px 1px rgba(0,0,0,1)", }, { test: "1px 1px 1px rgb(0, 0, 0)", - result: "1px 1px 1px rgb(0, 0, 0)", + result: "1px 1px 1px rgba(0,0,0,1)", }, ]; for (let test of tests) { let element = getTarget(); - element.style.textShadow = test.test; - assert.equal(Velocity.CSS.Normalizations["textShadow"](element), test.result, test.test); + element.velocity("style", "textShadow", test.test); + assert.equal(element.velocity("style", "genericReordering"), test.result, test.test); } }); diff --git a/test/test.js b/test/test.js index ebf2b3a7..d8936db8 100644 --- a/test/test.js +++ b/test/test.js @@ -1921,45 +1921,66 @@ QUnit.module("Properties"); * * Licensed under the MIT license. See LICENSE file in the project root for details. */ -QUnit.todo("GenericReordering", function (assert) { +QUnit.test("GenericReordering", function (assert) { + function genericReordering(element, propertyValue) { + if (propertyValue === undefined) { + propertyValue = Velocity(element, "style", "textShadow"); + var split = propertyValue.split(/\s/g), firstPart = split[0]; + var newValue = ""; + if (Velocity.CSS.ColorNames[firstPart]) { + split.shift(); + split.push(firstPart); + newValue = split.join(" "); + } + else if (firstPart.match(/^#|^hsl|^rgb|-gradient/)) { + var matchedString = propertyValue.match(/(hsl.*\)|#[\da-fA-F]+|rgb.*\)|.*gradient.*\))\s/g)[0]; + newValue = propertyValue.replace(matchedString, "") + " " + matchedString.trim(); + } + else { + newValue = propertyValue; + } + return newValue; + } + } + Velocity("registerNormalization", Element, "genericReordering", genericReordering); var tests = [ { test: "hsl(16, 100%, 66%) 1px 1px 1px", result: "1px 1px 1px hsl(16, 100%, 66%)", }, { test: "-webkit-linear-gradient(red, yellow) 1px 1px 1px", - result: "1px 1px 1px -webkit-linear-gradient(red, yellow)", + result: "1px 1px 1px -webkit-linear-gradient(rgba(255,0,0,1), rgba(255,255,0,1))", }, { test: "-o-linear-gradient(red, yellow) 1px 1px 1px", - result: "1px 1px 1px -o-linear-gradient(red, yellow)", + result: "1px 1px 1px -o-linear-gradient(rgba(255,0,0,1), rgba(255,255,0,1))", }, { test: "-moz-linear-gradient(red, yellow) 1px 1px 1px", - result: "1px 1px 1px -moz-linear-gradient(red, yellow)", + result: "1px 1px 1px -moz-linear-gradient(rgba(255,0,0,1), rgba(255,255,0,1))", }, { test: "linear-gradient(red, yellow) 1px 1px 1px", - result: "1px 1px 1px linear-gradient(red, yellow)", + result: "1px 1px 1px linear-gradient(rgba(255,0,0,1), rgba(255,255,0,1))", }, { test: "red 1px 1px 1px", - result: "1px 1px 1px red", + result: "1px 1px 1px rgba(255,0,0,1)", }, { test: "#000000 1px 1px 1px", - result: "1px 1px 1px #000000", + result: "1px 1px 1px rgba(0,0,0,1)", }, { test: "rgb(0, 0, 0) 1px 1px 1px", - result: "1px 1px 1px rgb(0, 0, 0)", + result: "1px 1px 1px rgba(0,0,0,1)", }, { test: "rgba(0, 0, 0, 1) 1px 1px 1px", - result: "1px 1px 1px rgba(0, 0, 0, 1)", + result: "1px 1px 1px rgba(0,0,0,1)", }, { test: "1px 1px 1px rgb(0, 0, 0)", - result: "1px 1px 1px rgb(0, 0, 0)", + result: "1px 1px 1px rgba(0,0,0,1)", }, ]; for (var _i = 0, tests_1 = tests; _i < tests_1.length; _i++) { var test = tests_1[_i]; var element = getTarget(); - element.style.textShadow = test.test; - assert.equal(Velocity.CSS.Normalizations["textShadow"](element), test.result, test.test); + element.velocity("style", "textShadow", test.test); + assert.equal(element.velocity("style", "genericReordering"), test.result, test.test); } }); /// diff --git a/test/test.js.map b/test/test.js.map index b54cae66..d87823d9 100644 --- a/test/test.js.map +++ b/test/test.js.map @@ -1 +1 @@ -{"version":3,"file":"test.js","sourceRoot":"","sources":["src/1. Core/_module.ts","src/1. Core/Arguments.ts","src/1. Core/End Value Caching.ts","src/1. Core/End Value Setting.ts","src/1. Core/Start Value Calculation.ts","src/1. Core/Unit Calculation.ts","src/2. Option/_module.ts","src/2. Option/Option Begin.ts","src/2. Option/Option Complete.ts","src/2. Option/Option Delay.ts","src/2. Option/Option Easing.ts","src/2. Option/Option Fps Limit.ts","src/2. Option/Option Loop.ts","src/2. Option/Option Progress.ts","src/2. Option/Option Queue.ts","src/2. Option/Option Repeat.ts","src/2. Option/Option Speed.ts","src/2. Option/Option Sync.ts","src/3. Command/_module.ts","src/3. Command/Command Finish.ts","src/3. Command/Command Pause + Resume.ts","src/3. Command/Command Reverse.ts","src/3. Command/Command Scroll.ts","src/3. Command/Command Stop.ts","src/3. Command/Command Tween.ts","src/4. Feature/_module.ts","src/4. Feature/Feature Classname.ts","src/4. Feature/Feature Colors.ts","src/4. Feature/Feature Forcefeeding.ts","src/4. Feature/Feature Promises.ts","src/4. Feature/Feature Redirects.ts","src/4. Feature/Feature Value Functions.ts","src/5. UI Pack/_module.ts","src/5. UI Pack/Packaged Effect slideUp+Down.ts","src/5. UI Pack/UI Pack Call Options.ts","src/5. UI Pack/UI Pack Callbacks.ts","src/5. UI Pack/UI Pack In+Out.ts","src/5. UI Pack/UI Pack RegisterEffect.ts","src/5. UI Pack/UI Pack RunSequence.ts","src/6. Properties/_module.ts","src/6. Properties/Normalization property value reordering.ts","src/6. Properties/Property Display.ts","src/6. Properties/Property Visibility.ts","src/app.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;GAIG;AAEH,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;ACNrB,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,UAAS,MAAM;IACtC,IAAI,YAAY,GAAG,cAAY,CAAC,EAAE,aAAa;IAC9C,YAAY,GAAG,IAAI,EACnB,UAAU,GAAG,YAAY,EACzB,MAAsB,EACtB,WAAW,GAAoB;QAC9B,QAAQ,EAAE,GAAG;QACb,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,YAAY;KACtB,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAElB;;sBAEkB;IAElB,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,yDAAyD,CAAC,CAAC;IACpF,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,yDAAyD,CAAC,CAAC;IAExG,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAChE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,2EAA2E,CAAC,CAAC;IACxJ,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,yEAAyE,CAAC,CAAC;IAC7I,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,2EAA2E,CAAC,CAAC;IAC/I,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,yEAAyE,CAAC,CAAC;IAE7I,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,gEAAgE,CAAC,CAAC;IAEhJ,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAChE,MAAM,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,kEAAkE,CAAC,CAAC;IAEpJ,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,2EAA2E,CAAC,CAAC;IACxJ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,kBAAkB,EAAE,2EAA2E,CAAC,CAAC;IAEvK,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAC9E,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,6EAA6E,CAAC,CAAC;IAC1J,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,6EAA6E,CAAC,CAAC;IAE1J,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IAC1F,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,qFAAqF,CAAC,CAAC;IAClK,MAAM,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,qFAAqF,CAAC,CAAC;IACrK,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,qFAAqF,CAAC,CAAC;IAElK,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAC/D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,mEAAmE,CAAC,CAAC;IAExJ,QAAQ,CAAC,EAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,EAAC,CAAC,CAAC;IACzF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,mGAAmG,CAAC,CAAC;IAExL,QAAQ,CAAC,EAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAC,CAAC,CAAC;IAC9E,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,kGAAkG,CAAC,CAAC;IAEvL,+BAA+B;IAC/B,wEAAwE;IACxE,4FAA4F;IAC5F,4FAA4F;IAC5F,0FAA0F;IAE1F,+BAA+B;IAC/B,8DAA8D;IAC9D,4FAA4F;IAC5F,0FAA0F;IAE1F,+BAA+B;IAC/B,kEAAkE;IAClE,0FAA0F;IAC1F,4FAA4F;IAE5F,WAAW;IACX,gCAAgC;IAChC,0DAA0D;IAC1D,iHAAiH;IACjH,EAAE;IACF,gCAAgC;IAChC,iFAAiF;IACjF,gHAAgH;IAChH,EAAE;IACF,gCAAgC;IAChC,qFAAqF;IACrF,wGAAwG;IACxG,oGAAoG;IACpG,wGAAwG;IACxG,EAAE;IACF,gCAAgC;IAChC,qPAAqP;IACrP,oJAAoJ;IACpJ,IAAI;AACL,CAAC,CAAC,CAAC;ACpGH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAS,MAAM;IAC9C,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,aAAa,GAAG,EAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC;IAElD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjB,kHAAkH;IAClH,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;SACnD,IAAI,CAAC,UAAS,QAAQ;QACtB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,EAAE,mCAAmC,CAAC,CAAC;QAC1G,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,mCAAmC,CAAC,CAAC;QAE5G,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;IAEJ,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,CAAC;SACtC,QAAQ,CAAC,aAAa,CAAC;SACvB,IAAI,CAAC,UAAS,QAAQ;QACtB,2CAA2C;QAC3C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAC;QACrG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;QAEvG,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AC/BH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAS,MAAM;IAC9C,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,0BAA0B;IAC1B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,CAAC;SACtC,IAAI,CAAC,UAAS,QAAQ;QACtB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;QACjH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,iBAAiB,CAAC,OAAO,EAAE,gCAAgC,CAAC,CAAC;QAErH,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AClBH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,yBAAyB,EAAE,UAAS,MAAM;IACpD,IAAI,eAAe,GAAG;QACrB,WAAW,EAAE,MAAM;QACnB,MAAM,EAAE,OAAO;QACf,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,OAAO;QACnB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,OAAO;QAClB,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,MAAM;QACnB,eAAe,EAAE,cAAc;KAC/B,CAAC;IAEF,uDAAuD;IACvD,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACpC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,eAAe,CAAC,WAAW,EAAE,gDAAgD,CAAC,CAAC;IAC9H,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,eAAe,CAAC,eAAe,EAAE,4CAA4C,CAAC,CAAC;IAElI,mDAAmD;IACnD,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IACtC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,KAAY,CAAC,EAAE,wCAAwC,CAAC,CAAC;IAC3H,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,aAAa,CAAC,OAAc,CAAC,EAAE,wCAAwC,CAAC,CAAC;IAC/H,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,UAAiB,CAAC,EAAE,4CAA4C,CAAC,CAAC;IAEpI,wEAAwE;IACxE,IAAI,0BAA0B,GAAG,EAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAC,CAAC;IAC5F,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC3B,gBAAgB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC;IAC/C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,uCAAuC,CAAC,CAAC;IACjI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,uCAAuC,CAAC,CAAC;IACvH,4LAA4L;IAE5L,qEAAqE;IACrE,IAAI,wBAAwB,GAAG,EAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAC,EACxK,WAAW,GAAG,WAAW,CAAC,WAAW,EACrC,YAAY,GAAG,WAAW,CAAC,YAAY,EACvC,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC,EACvE,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAQ,CAAC,CAAC;IAEvF,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC3B,gBAAgB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;IAE7C,6KAA6K;IAC7K,wJAAwJ;IACxJ,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,EAAE,mCAAmC,CAAC,CAAC;IAChK,4KAA4K;IAC5K,wKAAwK;IACxK,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAkB,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAE/L,kCAAkC;IAClC,qLAAqL;IACrL,kLAAkL;IAClL,MAAM;IAEN,wEAAwE;IAExE,4BAA4B;IAC5B,IAAI,kBAAkB,GAAG,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC;IAC1C,IAAI,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAEnD,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACnD,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC;IAC1D,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;IACrC,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAE1C,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;IACrC,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IAEvC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAQ,CAAC,CAAC,EAAE,oCAAoC,CAAC,CAAC;AAC1N,CAAC,CAAC,CAAC;ACnFH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAS,MAAM;IAC7C,4EAA4E;IAC5E,4CAA4C;IAC5C,kCAAkC;IAClC,iCAAiC;IACjC,kCAAkC;IAClC,0BAA0B;IAC1B,EAAE;IACF,8BAA8B;IAC9B,gLAAgL;IAChL,0BAA0B;IAC1B,EAAE;IACF,qJAAqJ;IACrJ,+IAA+I;IAC/I,4JAA4J;IAC5J,qIAAqI;IACrI,EAAE;IACF,WAAW;IACX,0BAA0B;IAE1B,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;wBAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;wBAE5B,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,OAAO,EAAC,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;wBACnD,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAAhB,SAAgB,CAAC;wBACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,+DAA+D,CAAC,CAAC;wBAC1H,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;wBACjD,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAAhB,SAAgB,CAAC;wBACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,sDAAsD,CAAC,CAAC;wBAE/G,IAAI,EAAE,CAAC;;;;;KACP,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;wBAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;wBAE5B,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,OAAO,EAAC,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;wBACnD,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAAhB,SAAgB,CAAC;wBACjB,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;wBAC/C,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAAhB,SAAgB,CAAC;wBACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,4FAA4F,CAAC,CAAC;wBAErJ,IAAI,EAAE,CAAC;;;;;KACP,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;wBAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;wBAE5B,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,OAAO,EAAC,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;wBACnD,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAAhB,SAAgB,CAAC;wBACjB,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;wBAC7C,qBAAM,KAAK,CAAC,IAAI,CAAC,EAAA;;wBAAjB,SAAiB,CAAC;wBAClB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,sEAAsE,CAAC,CAAC;wBAE/H,IAAI,EAAE,CAAC;;;;;KACP,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;wBAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;wBAE5B,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;wBAC/C,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAAhB,SAAgB,CAAC;wBACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,+DAA+D,CAAC,CAAC;wBAC1H,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;wBAC7C,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAAhB,SAAgB,CAAC;wBACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,+DAA+D,CAAC,CAAC;wBAExH,IAAI,EAAE,CAAC;;;;;KACP,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AC5EH;;;;GAIG;AAEH,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;ACNvB,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAS,MAAM;IAClC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAM,UAAU,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAE9C,QAAQ,CAAC,UAAU,EAAE,iBAAiB,EAAE;YACvC,QAAQ,EAAE,kBAAkB;YAC5B,KAAK,EAAE;gBACN,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,gCAAgC,CAAC,CAAC;gBAErE,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;ACtBH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,UAAS,MAAM;IACrC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAM,UAAU,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAE9C,QAAQ,CAAC,UAAU,EAAE,iBAAiB,EAAE;YACvC,QAAQ,EAAE,kBAAkB;YAC5B,QAAQ,EAAE;gBACT,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,gCAAgC,CAAC,CAAC;gBACrE,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;ACrBH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAS,MAAM;IAClC,IAAM,SAAS,GAAG,GAAG,CAAC;IAEtB,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAM,KAAK,GAAG,MAAM,EAAE,CAAC;QAEvB,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,cAAc,CAAC,QAAQ;YACjC,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,UAAS,QAAQ,EAAE,UAAU;gBACnC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,8CAA8C,CAAC,CAAC;gBAC9F,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAM,KAAK,GAAG,MAAM,EAAE,CAAC;QAEvB,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,cAAc,CAAC,QAAQ;YACjC,KAAK,EAAE,SAAS;SAChB,CAAC;aACA,QAAQ,CAAC,iBAAiB,EAAE;YAC5B,QAAQ,EAAE,cAAc,CAAC,QAAQ;YACjC,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,UAAS,QAAQ,EAAE,UAAU;gBACnC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,GAAI,cAAc,CAAC,QAAmB,EAAE,EAAE,EAAE,8CAA8C,CAAC,CAAC;gBAC1I,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;ACzCH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAS,MAAM;IACnC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC;YACJ,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC;QAC5D,CAAC;QAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACZ,OAAO,GAAG,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,wCAAwC,CAAC,CAAC;QAE7D,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC;YACJ,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,EAAC,MAAM,EAAE,CAAC,GAAU,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,CAAC;YAChF,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,EAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,CAAC;QACrE,CAAC;QAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACZ,OAAO,GAAG,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,0CAA0C,CAAC,CAAC;QAE/D,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,8BAA8B;QAC9B,oFAAoF;QACpF,IAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClD,uBAAuB,GAAG,IAAI,EAC9B,qBAAqB,GAAG,CAAC,IAAI,CAAC;QAE/B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,UAAS,QAAQ,EAAE,SAAS;gBAClC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,qBAAqB,EAAE,KAAK,EAAE,uCAAuC,CAAC,CAAC;gBAE7I,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,kFAAkF;QAClF,IAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EACrC,0BAA0B,GAAG,IAAI,EACjC,wBAAwB,GAAG,KAAK,EAAE,uBAAuB;QACzD,2BAA2B,GAAG,GAAG,CAAC;QAEnC,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,GAAG;YACb,MAAM,EAAE,oBAAoB;YAC5B,KAAK,EAAE,UAAS,QAAQ,EAAE,SAAS;gBAClC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,wBAAwB,EAAE,EAAE,EAAE,wDAAwD,CAAC,CAAC;gBAEjK,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,2DAA2D;IAC3D,oCAAoC;IACpC,6CAA6C;IAC7C,iCAAiC;IACjC,0CAA0C;IAC1C,gIAAgI;IAChI,YAAY;IACZ,KAAK;IACL,MAAM;IACN,MAAM;IAEN,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,iFAAiF;QACjF,IAAM,eAAe,GAAG,CAAC,CAAC,CAAC,EAC1B,qBAAqB,GAAG,IAAI,EAC5B,mBAAmB,GAAG,IAAI,CAAC;QAE5B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,UAAS,QAAQ,EAAE,SAAS;gBAClC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,qCAAqC,CAAC,CAAC;gBACtI,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAC,EAAE;YAClD,QAAQ,EAAE,kBAAkB;YAC5B,KAAK,EAAE,UAAS,QAAQ;gBACvB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,wCAAwC,CAAC,CAAC;YAClG,CAAC;YACD,QAAQ,EAAE,IAAI,CAAC,UAAS,QAAwB;gBAC/C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,2CAA2C,CAAC,CAAC;YACrG,CAAC,CAAC;YACF,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,2CAA2C,CAAC,CAAC;gBAEpG,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAC,EAAE;YACpD,QAAQ,EAAE,kBAAkB;YAC5B,KAAK,EAAE,UAAS,QAAQ;gBACvB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,0CAA0C,CAAC,CAAC;YACpG,CAAC;YACD,QAAQ,EAAE,IAAI,CAAC,UAAS,QAAwB;gBAC/C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,6CAA6C,CAAC,CAAC;YACvG,CAAC,CAAC;YACF,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,6CAA6C,CAAC,CAAC;gBAEtG,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAC,EAAE;YAClD,QAAQ,EAAE,kBAAkB;YAC5B,KAAK,EAAE,UAAS,QAAQ;gBACvB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,wCAAwC,CAAC,CAAC;YAClG,CAAC;YACD,QAAQ,EAAE,IAAI,CAAC,UAAS,QAAwB;gBAC/C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,2CAA2C,CAAC,CAAC;YACrG,CAAC,CAAC;YACF,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,2CAA2C,CAAC,CAAC;gBAEpG,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;ACtJH,kCAAkC;AAClC;;;;GAIG;AAEH,iBAwBA;AAxBA,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,UAAM,MAAM;;;;;gBAElC,OAAO,GAAG,SAAS,EAAE,EACrB,UAAU,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC5B,SAAS,GAAG,UAAS,SAAS;oBAC7B,IAAI,OAAO,GAAG,CAAC,CAAC;oBAEhB,QAAQ,CAAC,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC;oBACvC,kDAAkD;oBAClD,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,8BAA8B,GAAG,SAAS,CAAC,CAAC;oBAChG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE;wBAC3C,QAAQ,EAAE,IAAI;wBACd,QAAQ,EAAE;4BACT,OAAO,EAAE,CAAC;wBACX,CAAC;qBACD,CAAC,CAAC,IAAI,CAAC,cAAM,OAAA,OAAO,EAAP,CAAO,CAAC,CAAC;gBACxB,CAAC,CAAC;gBAEH,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAE5B,CAAC,GAAG,CAAC;;;qBAAE,CAAA,CAAC,GAAG,UAAU,CAAC,MAAM,CAAA;gBACpC,KAAA,CAAA,KAAA,MAAM,CAAA,CAAC,KAAK,CAAA;gBAAS,qBAAM,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAA;;gBAAnD,cAAa,KAAK,GAAG,SAA8B,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,GAAG,KAAK,GAAG,uBAAuB,EAAC,CAAC;;;gBADlF,CAAC,EAAE,CAAA;;;;;KAG1C,CAAC,CAAC;AC9BH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,UAAS,MAAM;IACjC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAM,WAAW,GAAG,EAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAC,EACvD,KAAK,GAAG,MAAM,EAAE,CAAC;QAClB,IAAI,KAAK,GAAG,CAAC,EACZ,QAAQ,GAAG,CAAC,EACZ,IAAI,GAAG,CAAC,EACR,mBAAmB,GAAG,CAAC,CAAC;QAEzB,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,KAAK,EAAE,UAAS,QAAQ,EAAE,SAAS;gBAClC,KAAK,EAAE,CAAC;YACT,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU;gBACzE,EAAE,CAAC,CAAC,mBAAmB,GAAG,eAAe,CAAC,CAAC,CAAC;oBAC3C,IAAI,EAAE,CAAC;gBACR,CAAC;gBACD,mBAAmB,GAAG,eAAe,CAAC;YACvC,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ,EAAE,SAAS;gBACrC,QAAQ,EAAE,CAAC;YACZ,CAAC;SACD,CAAC,CAAC,IAAI,CAAC;YACP,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,kCAAkC,CAAC,CAAC;YAC3D,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,0EAA0E,CAAC,CAAC;YACzH,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE,4CAA4C,CAAC,CAAC;YACpI,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,qCAAqC,CAAC,CAAC;YAEjE,IAAI,EAAE,CAAC;QACR,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AC3CH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,UAAS,MAAM;IACrC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAM,OAAO,GAAG,SAAS,EAAE,CAAC;QAE5B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE;YACpC,QAAQ,EAAE,kBAAkB;YAC5B,QAAQ,EAAE,IAAI,CAAC,UAAS,QAAQ,EAAE,eAAe,EAAE,WAAW;gBAC7D,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,gCAAgC,CAAC,CAAC;gBACxE,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,wCAAwC,CAAC,CAAC;gBAC5E,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,EAAE,IAAI,EAAE,yCAAyC,CAAC,CAAC;gBAC5G,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,kBAAkB,GAAG,EAAE,EAAE,IAAI,EAAE,qCAAqC,CAAC,CAAC;gBAEjG,IAAI,EAAE,CAAC;YACR,CAAC,CAAC;SACF,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;ACzBH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAS,MAAM;IAClC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,SAAS,GAAG,QAAQ,EACpB,OAAO,GAAG,SAAS,EAAE,EACrB,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,sBAAsB;IACrE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EACpB,KAAc,EACd,KAAc,EACd,KAAc,CAAC;IAEhB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC,kBAAkB;IAEhG,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE;QACnC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE;YACN,KAAK,GAAG,IAAI,CAAC;QACd,CAAC;QACD,QAAQ,EAAE;YACT,KAAK,GAAG,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,uCAAuC,CAAC,CAAC;YAC3D,IAAI,EAAE,CAAC;QACR,CAAC;KACD,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,2BAA2B,CAAC,CAAC,CAAC,8BAA8B;IAE/G,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE;QACnC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE;YACN,KAAK,GAAG,IAAI,CAAC;YACb,MAAM,CAAC,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,sCAAsC,CAAC,CAAC;YACnE,IAAI,EAAE,CAAC;QACR,CAAC;QACD,QAAQ,EAAE;YACT,KAAK,GAAG,KAAK,CAAC;QACf,CAAC;KACD,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,+CAA+C;IAE5G,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE;QACnC,KAAK,EAAE;YACN,KAAK,GAAG,IAAI,CAAC;YACb,MAAM,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,EAAE,+CAA+C,CAAC,CAAC;YAC3E,IAAI,EAAE,CAAC;QACR,CAAC;QACD,QAAQ,EAAE;YACT,KAAK,GAAG,KAAK,CAAC;QACf,CAAC;KACD,CAAC,CAAC;IAEH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE;QACnC,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE;YACN,MAAM,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,EAAE,2CAA2C,CAAC,CAAC;YACvE,IAAI,EAAE,CAAC;QACR,CAAC;KACD,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;ACjEH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAS,MAAM;IACnC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAM,WAAW,GAAG,EAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAC,EACzD,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpB,IAAI,KAAK,GAAG,CAAC,EACZ,QAAQ,GAAG,CAAC,EACZ,MAAM,GAAG,CAAC,CAAC;QAEZ,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,KAAK,EAAE,UAAS,QAAQ,EAAE,SAAS;gBAClC,KAAK,EAAE,CAAC;YACT,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU;gBACzE,EAAE,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC3B,MAAM,EAAE,CAAC;gBACV,CAAC;YACF,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ,EAAE,SAAS;gBACrC,QAAQ,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,kCAAkC,CAAC,CAAC;gBAC3D,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,qEAAqE,CAAC,CAAC;gBACpH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,2CAA2C,CAAC,CAAC;gBACzL,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,qCAAqC,CAAC,CAAC;gBACjE,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;ACvCH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAS,MAAM;IAClC,IAAM,KAAK,GAAG,GAAG,EAChB,QAAQ,GAAG,GAAG,EACd,UAAU,GAAG,MAAM,EAAE,CAAC;IAEvB,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;QAC5B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,UAAS,QAAQ;gBACvB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,qCAAqC,CAAC,CAAC;gBAEtG,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,UAAS,QAAQ;gBACvB,QAAQ,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC;YAC7B,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,IAAM,MAAM,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EACzC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;gBAEzB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,uDAAuD,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC;gBAE7I,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,UAAS,QAAQ;gBACvB,QAAQ,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC;YAC7B,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,IAAM,MAAM,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EACzC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;gBAEzB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,qDAAqD,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC;gBAE3I,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,UAAS,QAAQ;gBACvB,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC;YAC/B,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,IAAM,MAAM,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EACzC,QAAQ,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBAEnC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,sDAAsD,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC;gBAE5I,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,CAAC,KAAK;YACb,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,UAAS,QAAQ;gBACvB,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC;YAC/B,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,IAAM,MAAM,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EACzC,QAAQ,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBAEnC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,6DAA6D,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC;gBAEnJ,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,GAAG;YACV,KAAK,EAAE,UAAS,QAAQ;gBACvB,QAAQ,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC;YAC7B,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,IAAM,MAAM,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EACzC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;gBAEzB,oGAAoG;gBACpG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,uDAAuD,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC;gBAE7I,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,UAAS,QAAQ,EAAE,eAAe;gBAC3C,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;oBACvB,QAAQ,CAAC,OAAO,GAAG,eAAe,CAAC;oBACnC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;gBACtB,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACP,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,8CAA8C,CAAC,CAAC;oBAChG,QAAQ;yBACN,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,gCAAgC;yBAC/D,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAEnB,IAAI,EAAE,CAAC;gBACR,CAAC;YACF,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;ACzIH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,UAAS,MAAM;IACjC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;wBAC7B,OAAO,GAAG,SAAS,EAAE,EAC1B,UAAU,GAAG,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;wBAC9C,QAAQ,GAAG,KAAK,CAAC;wBAErB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE;4BACpC,QAAQ,EAAE,GAAG;4BACb,QAAQ,EAAE;gCACT,QAAQ,GAAG,IAAI,CAAC;4BACjB,CAAC;yBACD,CAAC,CAAC;wBACH,QAAQ,CAAC,UAAU,EAAE,iBAAiB,EAAE;4BACvC,IAAI,EAAE,KAAK;4BACX,QAAQ,EAAE,GAAG;yBACb,CAAC,CAAC;wBACH,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAAhB,SAAgB,CAAC;wBACjB,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,oDAAoD,CAAC,CAAC;wBAE7E,IAAI,EAAE,CAAC;;;;;KACP,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;gBAC7B,OAAO,GAAG,SAAS,EAAE,EAC1B,UAAU,GAAG,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC9C,QAAQ,GAAG,KAAK,CAAC;gBAErB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE;oBACpC,QAAQ,EAAE,GAAG;oBACb,QAAQ,EAAE;wBACT,QAAQ,GAAG,IAAI,CAAC;oBACjB,CAAC;iBACD,CAAC,CAAC;gBACH,QAAQ,CAAC,UAAU,EAAE,iBAAiB,EAAE;oBACvC,IAAI,EAAE,IAAI;oBACV,QAAQ,EAAE,GAAG;oBACb,KAAK,EAAE;wBACN,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,6CAA6C,CAAC,CAAC;wBAEnE,IAAI,EAAE,CAAC;oBACR,CAAC;iBACD,CAAC,CAAC;;;;KACH,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;ACpDH;;;;GAIG;AAEH,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;ACNxB,kCAAkC;AAClC;;;;GAIG;AAEH,iBAkGA;AAlGA,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAO,MAAM;;QACjC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;YAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;YAChC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,oEAAoE,CAAC,CAAC;YAEtF,IAAI,EAAE,CAAC;QACR,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;YAC7B,IAAM,OAAO,GAAG,SAAS,EAAE,CAAC;YAE5B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;YACrD,QAAQ,CAAC,OAAO,EAAE,EAAC,GAAG,EAAE,CAAC,EAAC,EAAE,cAAc,CAAC,CAAC;YAC5C,QAAQ,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,EAAE,cAAc,CAAC,CAAC;YAC9C,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC5B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,iEAAiE,CAAC,CAAC;YAEnF,IAAI,EAAE,CAAC;QACR,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;4BAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;4BACxB,SAAS,GAAG,KAAK,EACpB,SAAS,GAAG,KAAK,CAAC;4BAEnB,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;gCACpC,KAAK,EAAE,OAAO;gCACd,QAAQ,EAAE,cAAO,SAAS,GAAG,IAAI,CAAA,CAAA,CAAC;6BAClC,CAAC,CAAC;4BACH,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;gCACpC,KAAK,EAAE,OAAO;gCACd,QAAQ,EAAE,cAAO,SAAS,GAAG,IAAI,CAAA,CAAA,CAAC;6BAClC,CAAC,CAAC;4BACH,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;4BACrC,qBAAM,KAAK,CAAC,cAAc,CAAC,QAAkB,GAAG,CAAC,CAAC,EAAA;;4BAAlD,SAAkD,CAAC;4BACnD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,sCAAsC,CAAC,CAAC;4BAC7D,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,0CAA0C,CAAC,CAAC;4BAEpE,IAAI,EAAE,CAAC;;;;;SACP,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;4BAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;4BACxB,KAAK,GAAG,KAAK,EAChB,QAAQ,GAAG,KAAK,CAAC;4BAElB,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;gCACpC,KAAK,EAAE,cAAO,KAAK,GAAG,IAAI,CAAA,CAAA,CAAC;gCAC3B,QAAQ,EAAE,cAAO,QAAQ,GAAG,IAAI,CAAA,CAAA,CAAC;6BACjC,CAAC,CAAC;4BACH,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;4BAAhB,SAAgB,CAAC;4BACjB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;4BAC5B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,gDAAgD,CAAC,CAAC;4BACnE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,mDAAmD,CAAC,CAAC;4BACzE,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,sCAAsC,CAAC,CAAC;4BAEhG,IAAI,EAAE,CAAC;;;;;SACP,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;4BAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;4BACxB,KAAK,GAAG,KAAK,EAChB,QAAQ,GAAG,KAAK,CAAC;4BAElB,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;gCACpC,KAAK,EAAE,IAAI;gCACX,KAAK,EAAE,cAAO,KAAK,GAAG,IAAI,CAAA,CAAA,CAAC;gCAC3B,QAAQ,EAAE,cAAO,QAAQ,GAAG,IAAI,CAAA,CAAA,CAAC;6BACjC,CAAC,CAAC;4BACH,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;4BAAhB,SAAgB,CAAC;4BACjB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;4BAC5B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;4BAChE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,gDAAgD,CAAC,CAAC;4BACtE,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,wDAAwD,CAAC,CAAC;4BAElH,IAAI,EAAE,CAAC;;;;;SACP,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;oBAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;oBAE5B,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC;yBAC7B,QAAQ,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC;yBACtB,QAAQ,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;yBACzB,QAAQ,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;yBACzB,QAAQ,CAAC,EAAC,OAAO,EAAE,GAAG,EAAC,CAAC,CAAC;oBAC3B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,0CAA0C,CAAC,CAAC;oBACpG,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,0CAA0C,CAAC,CAAC;oBACpG,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;oBAClC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,wCAAwC,CAAC,CAAC;oBAEpG,IAAI,EAAE,CAAC;;;;SACP,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;;;KACvB,CAAC,CAAC;ACxGH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAe,MAAM;;;YACjD,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;gBAC7B,IAAM,OAAO,GAAG,SAAS,EAAE,CAAC;gBAE5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,8EAA8E,CAAC,CAAC;gBAChG,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC5B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,+EAA+E,CAAC,CAAC;gBAEjG,IAAI,EAAE,CAAC;YACR,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;gCACxB,QAAQ,GAAG,KAAK,CAAC;gCAErB,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,EAAC,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAO,QAAQ,GAAG,IAAI,CAAC,CAAA,CAAC,EAAC,CAAC,CAAC;gCACrF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gCAC3B,qBAAM,KAAK,CAAC,EAAE,CAAC,EAAA;;gCAAf,SAAe,CAAC;gCAChB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,uCAAuC,CAAC,CAAC;gCACjG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,yCAAyC,CAAC,CAAC;gCAClE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gCAC5B,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;gCAAhB,SAAgB,CAAC;gCACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,qCAAqC,CAAC,CAAC;gCAC/F,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,oCAAoC,CAAC,CAAC;gCAE1D,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;gCAE5B,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,EAAC,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC,CAAC,CAAC;gCAC7D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gCAC3B,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;gCAAhB,SAAgB,CAAC;gCACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,+CAA+C,CAAC,CAAC;gCACzG,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gCAC5B,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;gCAAhB,SAAgB,CAAC;gCACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,gDAAgD,CAAC,CAAC;gCAC1G,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;gCAAhB,SAAgB,CAAC;gCACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,6CAA6C,CAAC,CAAC;gCAEvG,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;gCAE5B,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,EAAC,EAAE,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAC,CAAC,CAAC;gCAChE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gCAC1B,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;gCAAhB,SAAgB,CAAC;gCACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,+BAA+B,CAAC,CAAC;gCAEzF,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;gCAE5B,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC;qCAC7B,QAAQ,CAAC,OAAO,CAAC,CAAC;gCACpB,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;gCAAhB,SAAgB,CAAC;gCACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,2CAA2C,CAAC,CAAC;gCAErG,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,wDAAwD;YAExD,iDAAiD;YACjD,8BAA8B;YAC9B,qDAAqD;YACrD,EAAE;YACF,yBAAyB;YACzB,EAAE;YACF,oBAAoB;YACpB,+BAA+B;YAC/B,oCAAoC;YACpC,kBAAkB;YAClB,qBAAqB;YACrB,iBAAiB;YACjB,+BAA+B;YAC/B,0GAA0G;YAC1G,KAAK;YACL,MAAM;YACN,EAAE;YACF,kCAAkC;YAClC,kBAAkB;YAClB,qBAAqB;YACrB,+BAA+B;YAC/B,gGAAgG;YAChG,KAAK;YACL,MAAM;YACN,EAAE;YACF,oBAAoB;YACpB,EAAE;YACF,oBAAoB;YACpB,gCAAgC;YAChC,oBAAoB;YAEpB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;;;;CACvB,CAAC,CAAC;AC5GH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,UAAS,MAAM;IACpC,IAAI,OAAO,GAAG,SAAS,EAAE,EACxB,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAC9C,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE5C,EAAE,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC;QACnB,mDAAmD;QACnD,KAAK,GAAG,KAAK,CAAC;IACf,CAAC;IACD,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE;YACpC,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,iBAAiB,CAAC,OAAO,EAAE,sCAAsC,GAAG,iBAAiB,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;gBAC5J,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,KAAK,EAAE,sCAAsC,GAAG,iBAAiB,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;gBAEtJ,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE;YAC5B,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,uCAAuC,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC;gBACzH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,uCAAuC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;gBAEnH,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE;YAC5B,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,iBAAiB,CAAC,OAAO,EAAE,+CAA+C,GAAG,iBAAiB,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;gBACrK,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,KAAK,EAAE,+CAA+C,GAAG,iBAAiB,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;gBAE/J,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AClDH,kCAAkC;AAClC;;;;GAIG;AAEH,uBAAuB;AACvB,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAS,MAAM;IAC5C,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACxB,QAAQ,GAAG,CAAC,CAAC,UAAU,CAAC,EACxB,cAAc,GAAG,CAAC,CAAC,sEAAsE,CAAC,EAC1F,cAAc,GAAG,CAAC,CAAC,uEAAuE,CAAC,EAC3F,YAAY,GAAG,CAAC,EAAE,CAAC;IAErB,cAAc;SACX,GAAG,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAC,CAAC;SACzE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvB,cAAc;SACX,GAAG,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAC,CAAC;SAClF,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvB,cAAc;SACX,QAAQ,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE;YAClE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,yCAAyC,CAAC,CAAC;YAE7L,IAAI,EAAE,CAAC;QACR,CAAC;KACD,CAAC;SACD,QAAQ,CAAC,EAAC,OAAO,EAAE,GAAG,EAAC,EAAE;QACzB,QAAQ;aACL,QAAQ,CAAC,EAAC,OAAO,EAAE,GAAG,EAAC,EAAE,GAAG,CAAC;aAC7B,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC;aACvB,QAAQ,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,EAAE,GAAG,EAAE;YAC5B,qHAAqH;YACrH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,8BAA8B,CAAC,CAAC;YAE5K,IAAI,EAAE,CAAC;YAEP,0BAA0B;YAE1B,cAAc;iBACX,QAAQ,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE;oBAC7E,sIAAsI;oBACtI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,0CAA0C,CAAC,CAAC;oBAEhM,IAAI,EAAE,CAAC;gBACR,CAAC;aACD,CAAC;iBACD,QAAQ,CAAC,EAAC,OAAO,EAAE,GAAG,EAAC,EAAE;gBACzB,QAAQ;qBACL,QAAQ,CAAC,EAAC,OAAO,EAAE,GAAG,EAAC,EAAE,GAAG,CAAC;qBAC7B,QAAQ,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC;qBAC9C,QAAQ,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,EAAE,GAAG,EAAE;oBAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,+BAA+B,CAAC,CAAC;oBAE/K,IAAI,EAAE,CAAC;gBACR,CAAC,CAAC,CAAC;YACN,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,wBAAwB;AACxB,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAS,MAAM;IAC7C,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACxB,cAAc,GAAG,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkCjB,CAAC,CAAC;IAEN,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjB,cAAc;SACX,GAAG,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAC,CAAC;SAC1H,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvB,0CAA0C;IAC1C,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAC,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE;YAC3F,4CAA4C;YAC5C,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAC,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE;oBAC9F,iCAAiC;oBACjC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;oBAEhB,cAAc,CAAC,MAAM,EAAE,CAAC;oBAExB,IAAI,cAAc,GAAG,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA6BnB,CAAC,CAAC;oBAEN,cAAc;yBACX,GAAG,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAC,CAAC;yBAC1H,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oBAEvB,0CAA0C;oBAC1C,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE;4BACtG,4CAA4C;4BAC5C,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE;oCACzG,iCAAiC;oCACjC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;oCAEhB,cAAc,CAAC,MAAM,EAAE,CAAC;oCAExB,IAAI,EAAE,CAAC;gCACR,CAAC;6BACD,CAAC,CAAC;wBACJ,CAAC;qBACD,CAAC,CAAC;oBAEH,IAAI,EAAE,CAAC;gBACR,CAAC;aACD,CAAC,CAAC;QACJ,CAAC;KACD,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AC5KH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,UAAe,MAAM;;;YACvC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;gBAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;gBAC9B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,oEAAoE,CAAC,CAAC;gBAEtF,IAAI,EAAE,CAAC;YACR,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;gBAC7B,IAAM,OAAO,GAAG,SAAS,EAAE,CAAC;gBAE5B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;gBACrD,QAAQ,CAAC,OAAO,EAAE,EAAC,GAAG,EAAE,CAAC,EAAC,EAAE,cAAc,CAAC,CAAC;gBAC5C,QAAQ,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,EAAE,cAAc,CAAC,CAAC;gBAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC1B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,iEAAiE,CAAC,CAAC;gBAEnF,IAAI,EAAE,CAAC;YACR,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,EAC1B,YAAY,GAAG,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gCAErD,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE,cAAc,CAAC,CAAC;gCACrD,qBAAM,KAAK,CAAC,cAAc,CAAC,QAAkB,GAAG,CAAC,CAAC,EAAA;;gCAAlD,SAAkD,CAAC;gCACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gCAC1B,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,+BAA+B,CAAC,CAAC;gCAEnI,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;gCACxB,KAAK,GAAG,KAAK,CAAC;gCAElB,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;oCACpC,KAAK,EAAE,IAAI;oCACX,KAAK,EAAE,cAAO,KAAK,GAAG,IAAI,CAAA,CAAA,CAAC;iCAC3B,CAAC,CAAC;gCACH,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;gCAAhB,SAAgB,CAAC;gCACjB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gCAC1B,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,mCAAmC,CAAC,CAAC;gCAEzD,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;gCACxB,SAAS,GAAG,KAAK,EACpB,SAAS,GAAG,KAAK,CAAC;gCAEnB,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;oCACpC,KAAK,EAAE,OAAO;oCACd,QAAQ,EAAE,cAAO,SAAS,GAAG,IAAI,CAAA,CAAA,CAAC;iCAClC,CAAC,CAAC;gCACH,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;oCACpC,KAAK,EAAE,OAAO;oCACd,QAAQ,EAAE,cAAO,SAAS,GAAG,IAAI,CAAA,CAAA,CAAC;iCAClC,CAAC,CAAC;gCACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gCACnC,qBAAM,KAAK,CAAC,cAAc,CAAC,QAAkB,GAAG,CAAC,CAAC,EAAA;;gCAAlD,SAAkD,CAAC;gCACnD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,oCAAoC,CAAC,CAAC;gCAC3D,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,wCAAwC,CAAC,CAAC;gCAElE,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;gCACxB,MAAM,GAAG,KAAK,EACjB,MAAM,GAAG,KAAK,CAAC;gCAEhB,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;oCACpC,KAAK,EAAE,cAAO,MAAM,GAAG,IAAI,CAAA,CAAA,CAAC;iCAC5B,CAAC,CAAC;gCACH,QAAQ,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC,EAAE;oCACnC,KAAK,EAAE,cAAO,MAAM,GAAG,IAAI,CAAA,CAAA,CAAC;iCAC5B,CAAC,CAAC;gCACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gCAChC,qBAAM,KAAK,CAAC,cAAc,CAAC,QAAkB,GAAG,CAAC,CAAC,EAAA;;gCAAlD,SAAkD,CAAC;gCACnD,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,EAAE,mCAAmC,CAAC,CAAC;gCAEpE,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,EAC1B,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;oCAC3C,KAAK,EAAE,MAAM;oCACb,KAAK,EAAE,cAAO,MAAM,GAAG,IAAI,CAAA,CAAA,CAAC;iCAC5B,CAAC,CAAC;gCACA,MAAM,GAAG,KAAK,EACjB,MAAM,GAAG,KAAK,CAAC;gCAEhB,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;oCACpC,KAAK,EAAE,cAAO,MAAM,GAAG,IAAI,CAAA,CAAA,CAAC;iCAC5B,CAAC,CAAC;gCACH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gCACtB,qBAAM,KAAK,CAAC,cAAc,CAAC,QAAkB,GAAG,CAAC,CAAC,EAAA;;gCAAlD,SAAkD,CAAC;gCACnD,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,2DAA2D,CAAC,CAAC;gCAClF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,kEAAkE,CAAC,CAAC;gCAEtF,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;;;;CACvB,CAAC,CAAC;AClHH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAS,MAAM;IAClC,IAAI,QAAQ,GAAG,SAAS,EAAE,EACzB,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;IAEvC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAElB,MAAM,CAAC,MAAM,CAAC,cAAQ,QAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA,CAAA,CAAC,EAAE,0CAA0C,CAAC,CAAC;IACzG,MAAM,CAAC,MAAM,CAAC,cAAQ,QAAgB,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA,CAAA,CAAC,EAAE,+CAA+C,CAAC,CAAC;IACpI,MAAM,CAAC,MAAM,CAAC,cAAQ,QAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA,CAAA,CAAC,EAAE,sCAAsC,CAAC,CAAC;IAC1G,MAAM,CAAC,MAAM,CAAC,cAAQ,QAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA,CAAA,CAAC,EAAE,iEAAiE,CAAC,CAAC;IAEtI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,gDAAgD,CAAC,CAAC;IACpI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,oDAAoD,CAAC,CAAC;IACzI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,uDAAuD,CAAC,CAAC;IAClI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,yCAAyC,CAAC,CAAC;IAE9F,MAAM,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,4CAA4C,CAAC,CAAC;IAC3I,MAAM,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,4CAA4C,CAAC,CAAC;IAC3I,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE,QAAQ,CAAC,EAAE,+CAA+C,CAAC,CAAC;AAChM,CAAC,CAAC,CAAC;AC1BH;;;;GAIG;AAEH,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;ACNxB,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,gCAAgC,EAAE,UAAS,MAAM;IAC3D,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;QACxC,KAAK,EAAE,UAAS,QAAQ;YACvB,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACtF,CAAC;QACD,QAAQ,EAAE,UAAS,QAAQ;YAC1B,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;QACzF,CAAC;KACD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC,CAAC,CAAC;AClBH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,UAAS,MAAM;IAChD,IAAI,OAAO,GAAG,SAAS,EAAE,CAAC;IAE1B,QAAQ,CAAC,OAAO,EAAE,EAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAC,CAAC,CAAC;IAErF,wFAAwF;IACxF,0FAA0F;IAC1F,yFAAyF;IACzF,uFAAuF;IACvF,4FAA4F;IAC5F,+FAA+F;IAC/F,6FAA6F;IAC7F,iFAAiF;IACjF,oFAAoF;IACpF,mFAAmF;AACpF,CAAC,CAAC,CAAC;ACtBH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,UAAS,MAAM;IACzC,gIAAgI;IAChI,IAAI,cAAc,GAAG,MAAM,EAC1B,kBAAkB,GAAG,MAAM,EAC3B,eAAe,GAAG,MAAM,CAAC;IAE1B,IAAI,OAAO,GAAG,SAAS,EAAE,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE;QACjB,KAAK,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC;QACtC,MAAM,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC;QAC9B,OAAO,EAAE,CAAC,iBAAiB,CAAC,OAAc,EAAE,YAAY,CAAC;KACzD,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE,oCAAoC,CAAC,CAAC;IAC9G,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,eAAe,CAAC,EAAE,oCAAoC,CAAC,CAAC;IAC5G,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,8CAA8C,CAAC,CAAC;AAClH,CAAC,CAAC,CAAC;ACvBH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,UAAS,MAAM;IACrC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,MAAsB,EACtB,KAAK,GAAG,MAAM,EAAE,CAAC;IAElB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjB;;4BAEwB;IAEvB,QAAgB,EAAE,CAAC,IAAI,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,oDAAoD,CAAC,CAAC;IAC1E,CAAC,EAAE;QACF,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,oDAAoD,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,QAAQ,CAAC,SAAS,EAAS,CAAC,CAAC,IAAI,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,qDAAqD,CAAC,CAAC;IAC3E,CAAC,EAAE;QACF,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,qDAAqD,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;QAC9B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,4DAA4D,CAAC,CAAC;IAC/E,CAAC,EAAE;QACF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,4DAA4D,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;QACvD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,uEAAuE,CAAC,CAAC;IAC1F,CAAC,EAAE;QACF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,uEAAuE,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC;QAC7D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,yDAAyD,CAAC,CAAC;IAC5E,CAAC,EAAE;QACF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,yDAAyD,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;IAClE,MAAM,CAAC,IAAI,CAAC,UAAS,QAAQ;QAC5B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,qEAAqE,CAAC,CAAC;IACzG,CAAC,EAAE;QACF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,qEAAqE,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,UAAS,QAAQ;QACxD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,GAAI,cAAc,CAAC,QAAmB,EAAE,4CAA4C,CAAC,CAAC;IACrH,CAAC,EAAE;QACF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,4CAA4C,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,GAAG,QAAQ,CAAC,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;IACjF,MAAM,CAAC,IAAI,CAAC,UAAS,QAAQ;QAC5B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,wEAAwE,CAAC,CAAC;IAC5G,CAAC,EAAE;QACF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,wEAAwE,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,IAAI,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;IAEpE,IAAI,CAAC,IAAI,CAAC;QACT,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,GAAI,cAAc,CAAC,QAAmB,EAAE,0CAA0C,CAAC,CAAC;IAC/G,CAAC,EAAE;QACF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,0CAA0C,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AC5EH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,UAAS,MAAM;IACtC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,EACtB,eAAe,GAAG,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;IAEpC,CAAE,MAAc,CAAC,MAAM,IAAK,MAAc,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,UAAS,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc;QAC5I,EAAE,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;YAClE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,mCAAmC,CAAC,CAAC;YAChF,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,kCAAkC,CAAC,CAAC;YAClE,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,oCAAoC,CAAC,CAAC;YAEtE,IAAI,EAAE,CAAC;QACR,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;YAClE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,mCAAmC,CAAC,CAAC;YAChF,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,kCAAkC,CAAC,CAAC;YAClE,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,oCAAoC,CAAC,CAAC;YAEtE,IAAI,EAAE,CAAC;QACR,CAAC;IACF,CAAC,CAAC;IAEF,QAAQ,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC;AChCH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAS,MAAM;IAC5C,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,IAAI,QAAQ,GAAG,SAAS,EAAE,EACzB,QAAQ,GAAG,SAAS,EAAE,CAAC;IAExB,QAAQ,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;QAC9B,KAAK,EAAE,UAAS,CAAC,EAAE,KAAK;YACvB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,SAAS,CAAC;QACpC,CAAC;KACD,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,SAAgB,CAAC,GAAG,CAAC,EAAE,oCAAoC,CAAC,CAAC;IACjH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,SAAgB,CAAC,EAAE,oCAAoC,CAAC,CAAC;AAC9G,CAAC,CAAC,CAAC;ACrBH;;;;GAIG;AAEH,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;ACNxB,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,+BAA+B,EAAE,UAAS,MAAM;IAC1D,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,EACtB,aAAa,GAAG;QACf,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,OAAO;KACnB,CAAC;IAEH,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;IAC/C,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC;IAErD,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE;QAC/B,KAAK,EAAE,UAAS,QAAQ;YACvB,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,qCAAqC,CAAC,CAAC;YAE9E,IAAI,EAAE,CAAC;QACR,CAAC;QACD,QAAQ,EAAE,UAAS,QAAQ;YAC1B,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,wCAAwC,CAAC,CAAC;YACjF,0JAA0J;YAC1J,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC;YAChG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAC;YAE5H,IAAI,EAAE,CAAC;QACR,CAAC;QACD,+BAA+B;QAC/B,4EAA4E;QAC5E,EAAE;QACF,WAAW;KACX,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE;QAC7B,KAAK,EAAE,UAAS,QAAQ;YACvB,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,mCAAmC,CAAC,CAAC;YAE5E,IAAI,EAAE,CAAC;QACR,CAAC;QACD,QAAQ,EAAE,UAAS,QAAQ;YAC1B,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,sCAAsC,CAAC,CAAC;YAC/E,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,+BAA+B,CAAC,CAAC;YACrG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC;YAChG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAC;YAE5H,IAAI,EAAE,CAAC;QACR,CAAC;QACD,+BAA+B;QAC/B,0EAA0E;QAC1E,EAAE;QACF,WAAW;KACX,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AC1DH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,UAAS,MAAM;IACzC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACxB,cAAc,GAAG;QAChB,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,cAAc,CAAC,QAAQ;QACjC,MAAM,EAAE,QAAQ,CAAC,qBAAqB;KACtC,EACD,QAAQ,GAAG,SAAS,EAAE,CAAC;IAEzB,mBAAmB;IACnB,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,EAAE,cAAc,CAAC,CAAC;IAE7D,UAAU,CAAC;QACV,oFAAoF;QACtF,mGAAmG;QACnG,oHAAoH;QACpH,2GAA2G;QAEzG,IAAI,EAAE,CAAC;IACR,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAE1B,IAAI,cAAc,GAAG;QACpB,OAAO,EAAE,GAAG;QACZ,QAAQ,EAAE,cAAc,CAAC,QAAQ;QACjC,SAAS,EAAE,IAAI;KACf,CAAC;IAEF,IAAI,QAAQ,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACvD,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,EAAE,cAAc,CAAC,CAAC;IAE7D,UAAU,CAAC;QACZ,qHAAqH;QACrH,qHAAqH;QACrH,qHAAqH;QAEnH,IAAI,EAAE,CAAC;IACR,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AC5CH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,UAAS,MAAM;IACtC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,QAAQ,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAEvC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,EAAE;QACzC,KAAK,EAAE,UAAS,QAAQ;YACvB,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,0BAA0B,CAAC,CAAC;YAEjE,IAAI,EAAE,CAAC;QACR,CAAC;QACD,QAAQ,EAAE,UAAS,QAAQ;YAC1B,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,6BAA6B,CAAC,CAAC;YAEpE,IAAI,EAAE,CAAC;QACR,CAAC;QACD,+BAA+B;QAC/B,+DAA+D;QAC/D,EAAE;QACF,WAAW;KACX,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AC5BH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAS,MAAM;IACnC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,CAAC;IAExB,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEnE,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,EAAE,EAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAC,CAAC,CAAC;IAElG,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEpE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,EAAE,EAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;IAE/F,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,EAAE,EAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAC,CAAC,CAAC;IAEtG,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,EAAE,EAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAC,CAAC,CAAC;IAEtG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjB,UAAU,CAAC;QACV,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,2CAA2C,CAAC,CAAC;QACpH,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,gDAAgD,CAAC,CAAC;QAEnI,IAAI,EAAE,CAAC;IACR,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAEvB,UAAU,CAAC;QACV,kJAAkJ;QAClJ,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,8BAA8B,CAAC,CAAC;QAE3G,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,2BAA2B,CAAC,CAAC;QACjG,iJAAiJ;QAEjJ,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,SAAS,EAAE,gCAAgC,CAAC,CAAC;QACjH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,gCAAgC,CAAC,CAAC;QAEhH,IAAI,EAAE,CAAC;IACR,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AClDH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAS,MAAM;IAC3C,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,qBAAqB,GAAG,GAAG,CAAC;IAE7B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjB,QAAQ,CAAC,cAAc,CAAC,eAAe,EAAE;QACxC,eAAe,EAAE,qBAAqB;QACtC,KAAK,EAAE;YACN,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,EAAE,IAAI,CAAC;YACvB,CAAC,EAAC,MAAM,EAAE,GAAG,EAAC,EAAE,IAAI,EAAE,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC;YACzC,CAAC,EAAC,MAAM,EAAE,CAAC,EAAC,EAAE,IAAI,EAAE,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC;SACvC;KACD,CAAC,CAAC;IAEH,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAEpC,UAAU,CAAC;QACV,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAW,CAAC,EAAE,IAAI,EAAE,iCAAiC,CAAC,CAAC;QAChI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAW,CAAC,EAAE,CAAC,EAAE,gCAAgC,CAAC,CAAC;QAE3H,IAAI,EAAE,CAAC;IACR,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AC9BH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,UAAS,MAAM;IAExC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,EACtB,UAAU,GAAG;QACZ,EAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,EAAC,EAAC;QACtE,EAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAC,EAAC;QACpE;YACC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,EAAC,EAAE,OAAO,EAAE;gBAC1E,KAAK,EAAE,GAAG;gBACV,aAAa,EAAE,KAAK;gBACpB,QAAQ,EAAE;oBACT,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAW,CAAC,EAAE,iBAAiB,CAAC,OAAO,EAAE,iCAAiC,CAAC,CAAC;oBACrJ,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAW,CAAC,EAAE,iBAAiB,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;oBACpJ,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAW,CAAC,EAAE,iBAAiB,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;oBAEhJ,IAAI,EAAE,CAAC;gBACR,CAAC;aACD;SACD;KACD,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjB,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;ACjCH;;;;GAIG;AAEH,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;ACN3B,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAS,MAAM;IAC9C,IAAI,KAAK,GAAG;QACX;YACC,IAAI,EAAE,gCAAgC;YACtC,MAAM,EAAE,gCAAgC;SACxC,EAAE;YACF,IAAI,EAAE,kDAAkD;YACxD,MAAM,EAAE,kDAAkD;SAC1D,EAAE;YACF,IAAI,EAAE,6CAA6C;YACnD,MAAM,EAAE,6CAA6C;SACrD,EAAE;YACF,IAAI,EAAE,+CAA+C;YACrD,MAAM,EAAE,+CAA+C;SACvD,EAAE;YACF,IAAI,EAAE,0CAA0C;YAChD,MAAM,EAAE,0CAA0C;SAClD,EAAE;YACF,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,iBAAiB;SACzB,EAAE;YACF,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,qBAAqB;SAC7B,EAAE;YACF,IAAI,EAAE,0BAA0B;YAChC,MAAM,EAAE,0BAA0B;SAClC,EAAE;YACF,IAAI,EAAE,8BAA8B;YACpC,MAAM,EAAE,8BAA8B;SACtC,EAAE;YACF,IAAI,EAAE,0BAA0B;YAChC,MAAM,EAAE,0BAA0B;SAClC;KACD,CAAC;IAEF,GAAG,CAAC,CAAa,UAAK,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK;QAAjB,IAAI,IAAI,cAAA;QACZ,IAAI,OAAO,GAAG,SAAS,EAAE,CAAC;QAE1B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACzF;AAEF,CAAC,CAAC,CAAC;ACjDH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,UAAS,MAAM;IACpC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC;SAC/C,QAAQ,CAAC,EAAC,OAAO,EAAE,OAAO,EAAC,EAAE;QAC7B,QAAQ,EAAE,IAAI,CAAC,UAAS,QAAwB;YAC/C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,sCAAsC,CAAC,CAAC;YAErG,IAAI,EAAE,CAAC;QACR,CAAC,CAAC;KACF,CAAC,CAAC;IAEJ,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC;SAC/C,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC;SACpC,IAAI,CAAC,UAAS,QAAQ;QACtB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,gCAAgC,CAAC,CAAC;QACnF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,uCAAuC,CAAC,CAAC;QAEtG,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;IAEJ,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC;SAC/C,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC;SAChC,IAAI,CAAC,UAAS,QAAQ;QACtB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,iCAAiC,CAAC,CAAC;QAEhG,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;IAEJ,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAC,OAAO,EAAE,MAAM,EAAC,EAAE;QACxC,QAAQ,EAAE,IAAI,CAAC,UAAS,QAAwB;YAC/C,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,yCAAyC,CAAC,CAAC;YAE1G,IAAI,EAAE,CAAC;QACR,CAAC,CAAC;KACF,CAAC,CAAC,IAAI,CAAC,UAAS,QAAQ;QACxB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,yCAAyC,CAAC,CAAC;QAEvG,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AC/CH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,UAAS,MAAM;IACvC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC;SACpD,QAAQ,CAAC,EAAC,UAAU,EAAE,SAAS,EAAC,EAAE;QAClC,QAAQ,EAAE,IAAI,CAAC,UAAS,QAAwB;YAC/C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,SAAS,EAAE,2CAA2C,CAAC,CAAC;YAE/G,IAAI,EAAE,CAAC;QACR,CAAC,CAAC;KACF,CAAC,CAAC;IAEJ,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC;SACpD,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC;SACnC,IAAI,CAAC,UAAS,QAAQ;QACtB,kEAAkE;QAClE,sBAAsB;QACtB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,oCAAoC,CAAC,CAAC;QAEvG,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;IAEJ,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAC,EAAE;QAC7C,QAAQ,EAAE,IAAI,CAAC,UAAS,QAAwB;YAC/C,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,SAAS,EAAE,8CAA8C,CAAC,CAAC;YAErH,IAAI,EAAE,CAAC;QACR,CAAC,CAAC;KACF,CAAC,CAAC,IAAI,CAAC,UAAS,QAAQ;QACxB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,8CAA8C,CAAC,CAAC;QAEjH,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;ACxCH,8BAA8B;AAC9B,wCAAwC;AACxC,yCAAyC;AACzC,2CAA2C;AAC3C,4CAA4C;AAC5C,4CAA4C;AAC5C,4CAA4C;AAC5C,+CAA+C;AAC/C;;;;GAIG;AAsBH,gBAAgB;AAChB,sBAAsB;AACtB,qBAAqB;AAErB,IAAM,aAAa,GAAG;IACrB,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,GAAG;IACf,cAAc,EAAE,CAAC;CACjB,EACA,iBAAiB,GAAuB;IACvC,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,GAAG,CAAC,CAAC;IAC1C,KAAK,EAAE,aAAa,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI;IACrC,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI;CACvC,EACD,cAAc,GAAoB;IACjC,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,GAAG;IACb,MAAM,EAAE,OAAO;IACf,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,IAAI;CACd,EACD,QAAQ,GAAG,gEAAgE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EACrG,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAChD,CAAC,GAAG,CAAE,MAAc,CAAC,MAAM,IAAK,MAAc,CAAC,KAAK,CAAC,EACrD,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,EACpD,kBAAkB,GAAI,cAAc,CAAC,QAAmB,GAAG,CAAC,EAC5D,qBAAqB,GAAI,cAAc,CAAC,QAAmB,GAAG,CAAC,EAC/D,EAAE,GAAG,CAAC;IACL,EAAE,CAAC,CAAE,QAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;QACpC,MAAM,CAAE,QAAgB,CAAC,YAAsB,CAAC;IACjD,CAAC;IAAC,IAAI,CAAC,CAAC;QACP,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAExC,GAAG,CAAC,SAAS,GAAG,IAAI,GAAG,WAAW,GAAG,CAAC,GAAG,4BAA4B,GAAG,GAAG,CAAC;YAC5E,EAAE,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC7C,GAAG,GAAG,IAAI,CAAC;gBACX,MAAM,CAAC,CAAC,CAAC;YACV,CAAC;YACD,GAAG,GAAG,IAAI,CAAC;QACZ,CAAC;IACF,CAAC;IAED,MAAM,CAAC,SAAS,CAAC;AAClB,CAAC,CAAC,EAAE,CAAC;AAEN,IAAI,OAAO,GAAqB,EAAE,EACjC,UAAU,GAAG,CAAC,CAAC;AAEhB,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;AAE7B,0BAA0B,OAAoB,EAAE,WAAqC;IACpF,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,UAAS,QAAQ,EAAE,UAAU;QAChD,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;IACtC,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,cAAc,OAAO;IACpB,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC;AAC7D,CAAC;AAED;IACC,MAAM,CAAC,WAAW,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACxE,CAAC;AAED,0BAA0B,OAAoB,EAAE,QAAgB;IAC/D,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED,mBAAmB,WAAsC;IACxD,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAmB,CAAC;IAE1D,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;IACzB,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAClD,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,GAAG,aAAa,CAAC,UAAU,GAAG,QAAQ,CAAC;IACpE,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC;IAC7C,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC;IAC/C,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3D,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC,cAAc,GAAG,QAAQ,CAAC;IAC5E,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACjB,gBAAgB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,CAAC,GAAG,CAAC;AACZ,CAAC;AAED,cAAc,IAAI;IACjB,IAAI,IAAI,EAAE,MAAM,CAAC;IAEjB,MAAM,CAAC;QACN,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACX,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACrC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,6DAA6D;QAClF,CAAC;QACD,MAAM,CAAC,MAAM,CAAC;IACf,CAAC,CAAC;AACH,CAAC;AAED,eAAe,EAAU;IACxB,MAAM,CAAC,IAAI,OAAO,CAAC,UAAA,OAAO,IAAI,OAAA,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,EAAvB,CAAuB,CAAC,CAAC;AACxD,CAAC;AAUD,eAAe,MAAe,EAAE,KAAc,EAAE,QAAqC;IACpF,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACb,IAAM,OAAK,GAAG,UAAU,CAAC;QAEzB,UAAU,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,OAAK,CAAC;IACd,CAAC;IACD,IAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE7B,UAAU,IAAI,KAAK,CAAC;IACpB,UAAU,CAAC;QACV,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,EAAE,CAAC,CAAC,CAAC;AACP,CAAC;AAED,uBAAuB,QAAQ;IAC9B,GAAG,CAAC,CAAC,IAAI,MAAI,IAAI,QAAQ,CAAC,CAAC,CAAC;QAC3B,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAI,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IACD,MAAM,CAAC,IAAI,CAAC;AACb,CAAC;AAED,KAAK,CAAC,QAAQ,CAAC;IACd,IAAI,CAAC;QACJ,QAAQ,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC;IAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC;IACd,kDAAkD;IAClD,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC;YACJ,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,CAAC;QAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC;IACf,CAAC;IACD,yCAAyC;IACzC,KAAK,EAAE,CAAC;IACR,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,aAAa;AACb,KAAK,CAAC,IAAI,CAAC,UAAS,OAAO;IAC1B,6CAA6C;IAC7C,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AAChI,CAAC,CAAC,CAAC;AAEH,8DAA8D;AAC9D,8CAA8C;AAC9C,0CAA0C;AAC1C,8CAA8C;AAC9C,kDAAkD;AAClD,yDAAyD;AACzD,kDAAkD;AAClD,uDAAuD;AACvD,oCAAoC;AACpC,oCAAoC;AACpC,sCAAsC;AACtC,iCAAiC;AACjC,wBAAwB","sourcesContent":["/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.module(\"Core\");\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Arguments\", function(assert) {\r\n\tlet testComplete = function() {}, // Do nothing\r\n\t\ttestDuration = 1000,\r\n\t\ttestEasing = \"easeInSine\",\r\n\t\tresult: VelocityResult,\r\n\t\ttestOptions: VelocityOptions = {\r\n\t\t\tduration: 123,\r\n\t\t\teasing: testEasing,\r\n\t\t\tcomplete: testComplete\r\n\t\t};\r\n\r\n\tassert.expect(18);\r\n\r\n\t/****************\r\n\t Overloading\r\n\t ****************/\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties);\r\n\tassert.ok(result.length, \"Overload variation #1a: Velocity(ELEMENT, {properties})\");\r\n\tassert.ok(result.velocity.animations.length, \"Overload variation #1b: Velocity(element, {PROPERTIES})\");\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties, testDuration);\r\n\tassert.equal(result.velocity.animations[0].options.duration, testDuration, \"Overload variation #2a: Velocity(element, {properties}, DURATION)\");\r\n\tresult = Velocity(getTarget(), defaultProperties, \"slow\");\r\n\tassert.equal(result.velocity.animations[0].options.duration, 600, \"Overload variation #2b: Velocity(element, {properties}, DURATION)\");\r\n\tresult = Velocity(getTarget(), defaultProperties, \"normal\");\r\n\tassert.equal(result.velocity.animations[0].options.duration, 400, \"Overload variation #2c: Velocity(element, {properties}, DURATION)\");\r\n\tresult = Velocity(getTarget(), defaultProperties, \"fast\");\r\n\tassert.equal(result.velocity.animations[0].options.duration, 200, \"Overload variation #2d: Velocity(element, {properties}, DURATION)\");\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties, testEasing);\r\n\tassert.equal(typeof result.velocity.animations[0].options.easing, \"function\", \"Overload variation #3: Velocity(element, {properties}, EASING)\");\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties, testComplete);\r\n\tassert.equal(typeof result.velocity.animations[0].options.complete, \"function\", \"Overload variation #4: Velocity(element, {properties}, COMPLETE)\");\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties, testDuration, [0.42, 0, 0.58, 1]);\r\n\tassert.equal(result.velocity.animations[0].options.duration, testDuration, \"Overload variation #5a: Velocity(element, {properties}, DURATION, easing)\");\r\n\tassert.equal(result.velocity.animations[0].options.easing(0.2, 0, 1), 0.0816598562658975, \"Overload variation #5b: Velocity(element, {properties}, duration, EASING)\");\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties, testDuration, testComplete);\r\n\tassert.equal(result.velocity.animations[0].options.duration, testDuration, \"Overload variation #6a: Velocity(element, {properties}, DURATION, complete)\");\r\n\tassert.equal(result.velocity.animations[0].options.complete, testComplete, \"Overload variation #6b: Velocity(element, {properties}, duration, COMPLETE)\");\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties, testDuration, testEasing, testComplete);\r\n\tassert.equal(result.velocity.animations[0].options.duration, testDuration, \"Overload variation #7a: Velocity(element, {properties}, DURATION, easing, complete)\");\r\n\tassert.equal(typeof result.velocity.animations[0].options.easing, \"function\", \"Overload variation #7b: Velocity(element, {properties}, duration, EASING, complete)\");\r\n\tassert.equal(result.velocity.animations[0].options.complete, testComplete, \"Overload variation #7c: Velocity(element, {properties}, duration, easing, COMPLETE)\");\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties, testOptions);\r\n\tassert.equal(result.velocity.animations[0].options.duration, testOptions.duration, \"Overload variation #8: Velocity(element, {properties}, {OPTIONS})\");\r\n\r\n\tVelocity({elements: [getTarget()], properties: defaultProperties, options: testOptions});\r\n\tassert.equal(result.velocity.animations[0].options.duration, testOptions.duration, \"Overload variation #9: Velocity({elements:[elements], properties:{properties}, options:{OPTIONS})\");\r\n\r\n\tVelocity({elements: [getTarget()], properties: \"stop\", options: testOptions});\r\n\tassert.equal(result.velocity.animations[0].options.duration, testOptions.duration, \"Overload variation #10: Velocity({elements:[elements], properties:\\\"ACTION\\\", options:{OPTIONS})\");\r\n\r\n\t//\tvar $target12 = getTarget();\r\n\t//\tVelocity($target12, {opacity: [0.75, \"spring\", 0.25]}, testDuration);\r\n\t//\tassert.equal(Data($target12).style.opacity.startValue, 0.25, \"Overload variation #10a.\");\r\n\t//\tassert.equal(Data($target12).style.opacity.easing, \"spring\", \"Overload variation #10b.\");\r\n\t//\tassert.equal(Data($target12).style.opacity.endValue, 0.75, \"Overload variation #10c.\");\r\n\r\n\t//\tvar $target13 = getTarget();\r\n\t//\tVelocity($target13, {opacity: [0.75, 0.25]}, testDuration);\r\n\t//\tassert.equal(Data($target13).style.opacity.startValue, 0.25, \"Overload variation #11a.\");\r\n\t//\tassert.equal(Data($target13).style.opacity.endValue, 0.75, \"Overload variation #11b.\");\r\n\r\n\t//\tvar $target14 = getTarget();\r\n\t//\tVelocity($target14, {opacity: [0.75, \"spring\"]}, testDuration);\r\n\t//\tassert.equal(Data($target14).style.opacity.endValue, 0.75, \"Overload variation #12a.\");\r\n\t//\tassert.equal(Data($target14).style.opacity.easing, \"spring\", \"Overload variation #12b.\");\r\n\r\n\t//\tif ($) {\r\n\t//\t\tvar $target17 = getTarget();\r\n\t//\t\t$($target17).velocity(defaultProperties, testOptions);\r\n\t//\t\tassert.deepEqual(Data($target17).opts, testOptions, \"$.fn.: Utility function variation #1: options object.\");\r\n\t//\r\n\t//\t\tvar $target18 = getTarget();\r\n\t//\t\t$($target18).velocity({properties: defaultProperties, options: testOptions});\r\n\t//\t\tassert.deepEqual(Data($target18).opts, testOptions, \"$.fn.: Utility function variation #2: single object.\");\r\n\t//\r\n\t//\t\tvar $target19 = getTarget();\r\n\t//\t\t$($target19).velocity(defaultProperties, testDuration, testEasing, testComplete);\r\n\t//\t\tassert.equal(Data($target19).opts.duration, testDuration, \"$.fn.: Utility function variation #2a.\");\r\n\t//\t\tassert.equal(Data($target19).opts.easing, testEasing, \"$.fn.: Utility function variation #2b.\");\r\n\t//\t\tassert.equal(Data($target19).opts.complete, testComplete, \"$.fn.: Utility function variation #2c.\");\r\n\t//\r\n\t//\t\tvar $target20 = getTarget();\r\n\t//\t\tassert.equal($($target20).length, $($target20).velocity(defaultProperties, testDuration, testEasing, testComplete).velocity(defaultProperties, testDuration, testEasing, testComplete).length, \"$.fn.: Elements passed back to the call stack.\");\r\n\t//\t\t// TODO: Should check in a better way - but the prototype chain is now extended with a Promise so a standard (non-length) comparison *will* fail\r\n\t//\t}\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"End Value Caching\", function(assert) {\r\n\tvar done = assert.async(2),\r\n\t\tnewProperties = {height: \"50px\", width: \"250px\"};\r\n\r\n\tassert.expect(4);\r\n\r\n\t/* Called after the last call is complete (stale). Ensure that the newly-set (via $.css()) properties are used. */\r\n\tVelocity(getTarget(newProperties), defaultProperties)\r\n\t\t.then(function(elements) {\r\n\t\t\tassert.equal(Data(elements[0]).cache.width, defaultProperties.width, \"Stale end value #1 wasn't pulled.\");\r\n\t\t\tassert.equal(Data(elements[0]).cache.height, defaultProperties.height, \"Stale end value #2 wasn't pulled.\");\r\n\r\n\t\t\tdone();\r\n\t\t});\r\n\r\n\tVelocity(getTarget(), defaultProperties)\r\n\t\t.velocity(newProperties)\r\n\t\t.then(function(elements) {\r\n\t\t\t/* Chained onto a previous call (fresh). */\r\n\t\t\tassert.equal(Data(elements[0]).cache.width, newProperties.width, \"Chained end value #1 was pulled.\");\r\n\t\t\tassert.equal(Data(elements[0]).cache.height, newProperties.height, \"Chained end value #2 was pulled.\");\r\n\r\n\t\t\tdone();\r\n\t\t});\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"End Value Setting\", function(assert) {\r\n\tvar done = assert.async(1);\r\n\r\n\t/* Standard properties. */\r\n\tVelocity(getTarget(), defaultProperties)\r\n\t\t.then(function(elements) {\r\n\t\t\tassert.equal(Velocity(elements[0], \"style\", \"width\"), defaultProperties.width, \"Standard end value #1 was set.\");\r\n\t\t\tassert.equal(Velocity(elements[0], \"style\", \"opacity\"), defaultProperties.opacity, \"Standard end value #2 was set.\");\r\n\r\n\t\t\tdone();\r\n\t\t});\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.todo(\"Start Value Calculation\", function(assert) {\r\n\tvar testStartValues = {\r\n\t\tpaddingLeft: \"10px\",\r\n\t\theight: \"100px\",\r\n\t\tpaddingRight: \"50%\",\r\n\t\tmarginLeft: \"100px\",\r\n\t\tmarginBottom: \"33%\",\r\n\t\tmarginTop: \"100px\",\r\n\t\tlineHeight: \"30px\",\r\n\t\twordSpacing: \"40px\",\r\n\t\tbackgroundColor: \"rgb(123,0,0)\"\r\n\t};\r\n\r\n\t/* Properties not previously defined on the element. */\r\n\tvar $target1 = getTarget();\r\n\tVelocity($target1, testStartValues);\r\n\tassert.equal(Data($target1).cache.paddingLeft, testStartValues.paddingLeft, \"Undefined standard start value was calculated.\");\r\n\tassert.equal(Data($target1).cache.backgroundColor, testStartValues.backgroundColor, \"Undefined start value hook was calculated.\");\r\n\r\n\t/* Properties previously defined on the element. */\r\n\tvar $target2 = getTarget();\r\n\tVelocity($target2, defaultProperties);\r\n\tassert.equal(Data($target2).cache.width, parseFloat(defaultStyles.width as any), \"Defined start value #1 was calculated.\");\r\n\tassert.equal(Data($target2).cache.opacity, parseFloat(defaultStyles.opacity as any), \"Defined start value #2 was calculated.\");\r\n\tassert.equal(Data($target2).cache.color, parseFloat(defaultStyles.colorGreen as any), \"Defined hooked start value was calculated.\");\r\n\r\n\t/* Properties that shouldn't cause start values to be unit-converted. */\r\n\tvar testPropertiesEndNoConvert = {paddingLeft: \"20px\", height: \"40px\", paddingRight: \"75%\"};\r\n\tvar $target3 = getTarget();\r\n\tapplyStartValues($target3, testStartValues);\r\n\tVelocity($target3, testPropertiesEndNoConvert);\r\n\tassert.equal(Data($target3).cache.paddingLeft, parseFloat(testStartValues.paddingLeft), \"Start value #1 wasn't unit converted.\");\r\n\tassert.equal(Data($target3).cache.height, parseFloat(testStartValues.height), \"Start value #2 wasn't unit converted.\");\r\n\t//\t\t\tassert.deepEqual(Data($target3).cache.paddingRight.startValue, [Math.floor((parentWidth * parseFloat(testStartValues.paddingRight)) / 100), 0], \"Start value #3 was pattern matched.\");\r\n\r\n\t/* Properties that should cause start values to be unit-converted. */\r\n\tvar testPropertiesEndConvert = {paddingLeft: \"20%\", height: \"40%\", lineHeight: \"0.5em\", wordSpacing: \"2rem\", marginLeft: \"10vw\", marginTop: \"5vh\", marginBottom: \"100px\"},\r\n\t\tparentWidth = $qunitStage.clientWidth,\r\n\t\tparentHeight = $qunitStage.clientHeight,\r\n\t\tparentFontSize = Velocity.CSS.getPropertyValue($qunitStage, \"fontSize\"),\r\n\t\tremSize = parseFloat(Velocity.CSS.getPropertyValue(document.body, \"fontSize\") as any);\r\n\r\n\tvar $target4 = getTarget();\r\n\tapplyStartValues($target4, testStartValues);\r\n\tVelocity($target4, testPropertiesEndConvert);\r\n\r\n\t/* Long decimal results can be returned after unit conversion, and Velocity's code and the code here can differ in precision. So, we round floor values before comparison. */\r\n\t//\t\t\tassert.deepEqual(Data($target4).cache.paddingLeft.startValue, [parseFloat(testStartValues.paddingLeft), 0], \"Horizontal property converted to %.\");\r\n\tassert.equal(parseInt(Data($target4).cache.height), Math.floor((parseFloat(testStartValues.height) / parentHeight) * 100), \"Vertical property converted to %.\");\r\n\t//\t\t\tassert.equal(Data($target4).cache.lineHeight.startValue, Math.floor(parseFloat(testStartValues.lineHeight) / parseFloat(parentFontSize)), \"Property converted to em.\");\r\n\t//\t\t\tassert.equal(Data($target4).cache.wordSpacing.startValue, Math.floor(parseFloat(testStartValues.wordSpacing) / parseFloat(remSize)), \"Property converted to rem.\");\r\n\tassert.equal(parseInt(Data($target4).cache.marginBottom), parseFloat(testStartValues.marginBottom) / 100 * parseFloat($target4.parentElement.offsetWidth as any), \"Property converted to px.\");\r\n\r\n\t//\t\t\tif (!(IE<=8) && !isAndroid) {\r\n\t//\t\t\t\tassert.equal(Data($target4).cache.marginLeft.startValue, Math.floor(parseFloat(testStartValues.marginLeft) / window.innerWidth * 100), \"Horizontal property converted to vw.\");\r\n\t//\t\t\t\tassert.equal(Data($target4).cache.marginTop.startValue, Math.floor(parseFloat(testStartValues.marginTop) / window.innerHeight * 100), \"Vertical property converted to vh.\");\r\n\t//\t\t\t}\r\n\r\n\t// TODO: Tests for auto-parameters as the units are no longer converted.\r\n\r\n\t/* jQuery TRBL deferring. */\r\n\tvar testPropertiesTRBL = {left: \"1000px\"};\r\n\tvar $TRBLContainer = document.createElement(\"div\");\r\n\r\n\t$TRBLContainer.setAttribute(\"id\", \"TRBLContainer\");\r\n\t$TRBLContainer.style.marginLeft = testPropertiesTRBL.left;\r\n\t$TRBLContainer.style.width = \"100px\";\r\n\t$TRBLContainer.style.height = \"100px\";\r\n\tdocument.body.appendChild($TRBLContainer);\r\n\r\n\tvar $target5 = getTarget();\r\n\t$target5.style.position = \"absolute\";\r\n\t$TRBLContainer.appendChild($target5);\r\n\tVelocity($target5, testPropertiesTRBL);\r\n\r\n\tassert.equal(parseInt(Data($target5).cache.left), Math.round(parseFloat(testPropertiesTRBL.left) + parseFloat(Velocity.CSS.getPropertyValue(document.body, \"marginLeft\") as any)), \"TRBL value was deferred to jQuery.\");\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Unit Calculation\", function(assert) {\r\n\t// TODO: Add code and tests for operators - probably using calc() internally\r\n\t//\t/* Standard properties with operators. */\r\n\t//\tvar testIncrementWidth = \"5px\",\r\n\t//\t\t\ttestDecrementOpacity = 0.25,\r\n\t//\t\t\ttestMultiplyMarginBottom = 4,\r\n\t//\t\t\ttestDivideHeight = 2;\r\n\t//\r\n\t//\tvar $target2 = getTarget();\r\n\t//\tVelocity($target2, {width: \"+=\" + testIncrementWidth, opacity: \"-=\" + testDecrementOpacity, marginBottom: \"*=\" + testMultiplyMarginBottom, height: \"/=\" + testDivideHeight});\r\n\t//\tsetTimeout(function() {\r\n\t//\r\n\t//\t\tassert.equal(Data($target2).style.width.endValue, defaultStyles.width + parseFloat(testIncrementWidth), \"Incremented end value was calculated.\");\r\n\t//\t\tassert.equal(Data($target2).style.opacity.endValue, defaultStyles.opacity - testDecrementOpacity, \"Decremented end value was calculated.\");\r\n\t//\t\tassert.equal(Data($target2).style.marginBottom.endValue, defaultStyles.marginBottom * testMultiplyMarginBottom, \"Multiplied end value was calculated.\");\r\n\t//\t\tassert.equal(Data($target2).style.height.endValue, defaultStyles.height / testDivideHeight, \"Divided end value was calculated.\");\r\n\t//\r\n\t//\t\tdone();\r\n\t//\t}, asyncCheckDuration);\r\n\r\n\tasync(assert, 2, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, {left: \"500px\"}, {duration: 10});\r\n\t\tawait sleep(100);\r\n\t\tassert.equal(getPropertyValue($target, \"left\"), \"500px\", \"Finished animated value with given pixels should be the same.\");\r\n\t\tVelocity($target, {left: \"0px\"}, {duration: 10});\r\n\t\tawait sleep(100);\r\n\t\tassert.equal(getPropertyValue($target, \"left\"), \"0px\", \"Finished animated value with 0px should be the same.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, {left: \"500px\"}, {duration: 10});\r\n\t\tawait sleep(100);\r\n\t\tVelocity($target, {left: \"0\"}, {duration: 10});\r\n\t\tawait sleep(100);\r\n\t\tassert.equal(getPropertyValue($target, \"left\"), \"0px\", \"Finished animated value without giving px, but only number as a string should be the same.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, {left: \"500px\"}, {duration: 10});\r\n\t\tawait sleep(100);\r\n\t\tVelocity($target, {left: 0}, {duration: 10});\r\n\t\tawait sleep(1000);\r\n\t\tassert.equal(getPropertyValue($target, \"left\"), \"0px\", \"Finished animated value given as number 0 should be the same as 0px.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 2, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, {left: 500}, {duration: 10});\r\n\t\tawait sleep(100);\r\n\t\tassert.equal(getPropertyValue($target, \"left\"), \"500px\", \"Finished animated value with given pixels should be the same.\");\r\n\t\tVelocity($target, {left: 0}, {duration: 10});\r\n\t\tawait sleep(100);\r\n\t\tassert.equal(getPropertyValue($target, \"left\"), \"0px\", \"Omitted pixels (px) when given animation should run properly.\");\r\n\r\n\t\tdone();\r\n\t});\r\n});\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.module(\"Option\");\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Begin\", function(assert) {\r\n\tasync(assert, 1, function(done) {\r\n\t\tconst $targetSet = [getTarget(), getTarget()];\r\n\r\n\t\tVelocity($targetSet, defaultProperties, {\r\n\t\t\tduration: asyncCheckDuration,\r\n\t\t\tbegin: function() {\r\n\t\t\t\tassert.deepEqual(this, $targetSet, \"Elements passed into callback.\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Complete\", function(assert) {\r\n\tasync(assert, 1, function(done) {\r\n\t\tconst $targetSet = [getTarget(), getTarget()];\r\n\r\n\t\tVelocity($targetSet, defaultProperties, {\r\n\t\t\tduration: asyncCheckDuration,\r\n\t\t\tcomplete: function() {\r\n\t\t\t\tassert.deepEqual(this, $targetSet, \"Elements passed into callback.\");\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Delay\", function(assert) {\r\n\tconst testDelay = 250;\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tconst start = getNow();\r\n\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: defaultOptions.duration,\r\n\t\t\tdelay: testDelay,\r\n\t\t\tbegin: function(elements, activeCall) {\r\n\t\t\t\tassert.close(getNow() - start, testDelay, 32, \"Delayed calls start after the correct delay.\");\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tconst start = getNow();\r\n\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: defaultOptions.duration,\r\n\t\t\tdelay: testDelay\r\n\t\t})\r\n\t\t\t.velocity(defaultProperties, {\r\n\t\t\t\tduration: defaultOptions.duration,\r\n\t\t\t\tdelay: testDelay,\r\n\t\t\t\tbegin: function(elements, activeCall) {\r\n\t\t\t\t\tassert.close(getNow() - start, (testDelay * 2) + (defaultOptions.duration as number), 32, \"Queued delays start after the correct delay.\");\r\n\t\t\t\t\tdone();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Easing\", function(assert) {\r\n\tasync(assert, 1, function(done) {\r\n\t\tlet success = false;\r\n\r\n\t\ttry {\r\n\t\t\tsuccess = true;\r\n\t\t\tVelocity(getTarget(), defaultProperties, {easing: \"fake\"});\r\n\t\t} catch (e) {\r\n\t\t\tsuccess = false;\r\n\t\t}\r\n\t\tassert.ok(success, \"Fake easing string didn't throw error.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tlet success = false;\r\n\r\n\t\ttry {\r\n\t\t\tsuccess = true;\r\n\t\t\tVelocity(getTarget(), defaultProperties, {easing: [\"a\" as any, 0.5, 0.5, 0.5]});\r\n\t\t\tVelocity(getTarget(), defaultProperties, {easing: [0.5, 0.5, 0.5]});\r\n\t\t} catch (e) {\r\n\t\t\tsuccess = false;\r\n\t\t}\r\n\t\tassert.ok(success, \"Invalid bezier curve didn't throw error.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\t// TODO: Use a \"tween\" action?\r\n\t\t/* Ensure that a properly-formatted bezier curve array returns a bezier function. */\r\n\t\tconst easingBezierArray = [0.27, -0.65, 0.78, 0.19],\r\n\t\t\teasingBezierTestPercent = 0.25,\r\n\t\t\teasingBezierTestValue = -0.23;\r\n\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\teasing: easingBezierArray,\r\n\t\t\tbegin: function(elements, animation) {\r\n\t\t\t\tassert.close(animation.options.easing(easingBezierTestPercent, 0, 1), easingBezierTestValue, 0.005, \"Array converted into bezier function.\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\t/* Ensure that a properly-formatted spring RK4 array returns a bezier function. */\r\n\t\tconst easingSpringRK4Array = [250, 12],\r\n\t\t\teasingSpringRK4TestPercent = 0.25,\r\n\t\t\teasingSpringRK4TestValue = 0.928, // TODO: Check accuracy\r\n\t\t\teasingSpringRK4TestDuration = 992;\r\n\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: 150,\r\n\t\t\teasing: easingSpringRK4Array,\r\n\t\t\tbegin: function(elements, animation) {\r\n\t\t\t\tassert.close(animation.options.easing(easingSpringRK4TestPercent, 0, 1), easingSpringRK4TestValue, 10, \"Array with duration converted into springRK4 function.\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\t// TODO: Get this working in Velocity - so it can be tested\r\n\t//\tasync(assert, 1, function(done) {\r\n\t//\tVelocity(getTarget(), defaultProperties, {\r\n\t//\t\teasing: easingSpringRK4Array,\r\n\t//\t\tbegin: function(elements, animation) {\r\n\t//\t\t\tassert.equal(animation.duration, easingSpringRK4TestDuration, \"Array without duration converted into springRK4 duration.\");\r\n\t//\t\t\tdone();\r\n\t//\t\t}\r\n\t//\t});\r\n\t//\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\t/* Ensure that a properly-formatted step easing array returns a step function. */\r\n\t\tconst easingStepArray = [4],\r\n\t\t\teasingStepTestPercent = 0.35,\r\n\t\t\teasingStepTestValue = 0.25;\r\n\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\teasing: easingStepArray,\r\n\t\t\tbegin: function(elements, animation) {\r\n\t\t\t\tassert.close(animation.options.easing(easingStepTestPercent, 0, 1), easingStepTestValue, 0.05, \"Array converted into Step function.\");\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 3, function(done) {\r\n\t\tVelocity(getTarget(), {opacity: [0, \"during\", 1]}, {\r\n\t\t\tduration: asyncCheckDuration,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 1, \"Correct begin value (easing:'during').\");\r\n\t\t\t},\r\n\t\t\tprogress: once(function(elements: VelocityResult) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 0, \"Correct progress value (easing:'during').\");\r\n\t\t\t}),\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 1, \"Correct complete value (easing:'during').\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 3, function(done) {\r\n\t\tVelocity(getTarget(), {opacity: [0, \"at-start\", 1]}, {\r\n\t\t\tduration: asyncCheckDuration,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 1, \"Correct begin value (easing:'at-start').\");\r\n\t\t\t},\r\n\t\t\tprogress: once(function(elements: VelocityResult) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 0, \"Correct progress value (easing:'at-start').\");\r\n\t\t\t}),\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 0, \"Correct complete value (easing:'at-start').\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 3, function(done) {\r\n\t\tVelocity(getTarget(), {opacity: [0, \"at-end\", 1]}, {\r\n\t\t\tduration: asyncCheckDuration,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 1, \"Correct begin value (easing:'at-end').\");\r\n\t\t\t},\r\n\t\t\tprogress: once(function(elements: VelocityResult) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 1, \"Correct progress value (easing:'at-end').\");\r\n\t\t\t}),\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 0, \"Correct complete value (easing:'at-end').\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"FPS Limit\", async assert => {\r\n\tlet count: number,\r\n\t\t$target = getTarget(),\r\n\t\tframeRates = [5, 15, 30, 60],\r\n\t\ttestFrame = function(frameRate) {\r\n\t\t\tlet counter = 0;\r\n\r\n\t\t\tVelocity.defaults.fpsLimit = frameRate;\r\n\t\t\t// Test if the frame rate is assigned succesfully.\r\n\t\t\tassert.equal(frameRate, Velocity.defaults.fpsLimit, \"Setting global fps limit to \" + frameRate);\r\n\t\t\treturn Velocity($target, defaultProperties, {\r\n\t\t\t\tduration: 1000,\r\n\t\t\t\tprogress: () => {\r\n\t\t\t\t\tcounter++;\r\n\t\t\t\t}\r\n\t\t\t}).then(() => counter);\r\n\t\t};\r\n\r\n\tassert.expect(frameRates.length * 2);\r\n\t// Test if the limit is working for 60, 30, 15 and 5 fps.\r\n\tfor (let i = 0; i < frameRates.length; i++) {\r\n\t\tassert.close(count = await testFrame(frameRates[i]), frameRates[i], 1, \"...counted \" + count + \" frames (\\xB11 frame)\");\r\n\t}\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Loop\", function(assert) {\r\n\tasync(assert, 4, function(done) {\r\n\t\tconst testOptions = {loop: 2, delay: 100, duration: 100},\r\n\t\t\tstart = getNow();\r\n\t\tlet begin = 0,\r\n\t\t\tcomplete = 0,\r\n\t\t\tloop = 0,\r\n\t\t\tlastPercentComplete = 2;\r\n\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tloop: testOptions.loop,\r\n\t\t\tdelay: testOptions.delay,\r\n\t\t\tduration: testOptions.duration,\r\n\t\t\tbegin: function(elements, animation) {\r\n\t\t\t\tbegin++;\r\n\t\t\t},\r\n\t\t\tprogress: function(elements, percentComplete, remaining, start, tweenValue) {\r\n\t\t\t\tif (lastPercentComplete > percentComplete) {\r\n\t\t\t\t\tloop++;\r\n\t\t\t\t}\r\n\t\t\t\tlastPercentComplete = percentComplete;\r\n\t\t\t},\r\n\t\t\tcomplete: function(elements, animation) {\r\n\t\t\t\tcomplete++;\r\n\t\t\t}\r\n\t\t}).then(() => {\r\n\t\t\tassert.equal(begin, 1, \"Begin callback only called once.\");\r\n\t\t\tassert.equal(loop, testOptions.loop * 2 - 1, \"Animation looped correct number of times (once each direction per loop).\");\r\n\t\t\tassert.close(getNow() - start, (testOptions.delay + testOptions.duration) * loop, 32, \"Looping with 'delay' has correct duration.\");\r\n\t\t\tassert.equal(complete, 1, \"Complete callback only called once.\");\r\n\r\n\t\t\tdone();\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Progress\", function(assert) {\r\n\tasync(assert, 4, function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, defaultProperties, {\r\n\t\t\tduration: asyncCheckDuration,\r\n\t\t\tprogress: once(function(elements, percentComplete, msRemaining) {\r\n\t\t\t\tassert.deepEqual(elements, [$target], \"Elements passed into progress.\");\r\n\t\t\t\tassert.deepEqual(this, [$target], \"Elements passed into progress as this.\");\r\n\t\t\t\tassert.equal(percentComplete >= 0 && percentComplete <= 1, true, \"'percentComplete' passed into progress.\");\r\n\t\t\t\tassert.equal(msRemaining > asyncCheckDuration - 50, true, \"'msRemaining' passed into progress.\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t})\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Queue\", function(assert) {\r\n\tvar done = assert.async(4),\r\n\t\ttestQueue = \"custom\",\r\n\t\t$target = getTarget(),\r\n\t\tignore = $target.velocity(\"style\", \"display\"), // Force data creation\r\n\t\tdata = Data($target),\r\n\t\tanim1: boolean,\r\n\t\tanim2: boolean,\r\n\t\tanim3: boolean;\r\n\r\n\tassert.expect(7);\r\n\r\n\tassert.ok(data.queueList[testQueue] === undefined, \"Custom queue is empty.\"); // Shouldn't exist\r\n\r\n\t$target.velocity(defaultProperties, {\r\n\t\tqueue: testQueue,\r\n\t\tbegin: function() {\r\n\t\t\tanim1 = true;\r\n\t\t},\r\n\t\tcomplete: function() {\r\n\t\t\tanim1 = false;\r\n\t\t\tassert.ok(!anim2, \"Queued animation isn't started early.\");\r\n\t\t\tdone();\r\n\t\t}\r\n\t});\r\n\tassert.ok(data.queueList[testQueue] !== undefined, \"Custom queue was created.\"); // Should exist, but be \"null\"\r\n\r\n\t$target.velocity(defaultProperties, {\r\n\t\tqueue: testQueue,\r\n\t\tbegin: function() {\r\n\t\t\tanim2 = true;\r\n\t\t\tassert.ok(anim1 === false, \"Queued animation starts after first.\");\r\n\t\t\tdone();\r\n\t\t},\r\n\t\tcomplete: function() {\r\n\t\t\tanim2 = false;\r\n\t\t}\r\n\t});\r\n\tassert.ok(data.queueList[testQueue], \"Custom queue grows.\"); // Should exist and point at the next animation\r\n\r\n\t$target.velocity(defaultProperties, {\r\n\t\tbegin: function() {\r\n\t\t\tanim3 = true;\r\n\t\t\tassert.ok(anim1 === true, \"Different queue animation starts in parallel.\");\r\n\t\t\tdone();\r\n\t\t},\r\n\t\tcomplete: function() {\r\n\t\t\tanim3 = false;\r\n\t\t}\r\n\t});\r\n\r\n\t$target.velocity(defaultProperties, {\r\n\t\tqueue: false,\r\n\t\tbegin: function() {\r\n\t\t\tassert.ok(anim1 === true, \"Queue:false animation starts in parallel.\");\r\n\t\t\tdone();\r\n\t\t}\r\n\t});\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Repeat\", function(assert) {\r\n\tasync(assert, 4, function(done) {\r\n\t\tconst testOptions = {repeat: 2, delay: 100, duration: 100},\r\n\t\t\tstart = Date.now();\r\n\t\tlet begin = 0,\r\n\t\t\tcomplete = 0,\r\n\t\t\trepeat = 0;\r\n\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\trepeat: testOptions.repeat,\r\n\t\t\tdelay: testOptions.delay,\r\n\t\t\tduration: testOptions.duration,\r\n\t\t\tbegin: function(elements, animation) {\r\n\t\t\t\tbegin++;\r\n\t\t\t},\r\n\t\t\tprogress: function(elements, percentComplete, remaining, start, tweenValue) {\r\n\t\t\t\tif (percentComplete === 1) {\r\n\t\t\t\t\trepeat++;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tcomplete: function(elements, animation) {\r\n\t\t\t\tcomplete++;\r\n\t\t\t\tassert.equal(begin, 1, \"Begin callback only called once.\");\r\n\t\t\t\tassert.equal(repeat, testOptions.repeat + 1, \"Animation repeated correct number of times (original plus repeats).\");\r\n\t\t\t\tassert.close(Date.now() - start, (testOptions.delay + testOptions.duration) * (testOptions.repeat + 1), (testOptions.repeat + 1) * 16 + 32, \"Repeat with 'delay' has correct duration.\");\r\n\t\t\t\tassert.equal(complete, 1, \"Complete callback only called once.\");\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Speed\", function(assert) {\r\n\tconst delay = 200,\r\n\t\tduration = 400,\r\n\t\tstartDelay = getNow();\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity.defaults.speed = 3;\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tspeed: 5,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\tassert.equal(elements.velocity.animations[0].options.speed, 5, \"Speed on options overrides default.\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: duration,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\telements.__start = getNow();\r\n\t\t\t},\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tconst actual = getNow() - elements.__start,\r\n\t\t\t\t\texpected = duration / 3;\r\n\r\n\t\t\t\tassert.close(actual, expected, 32, \"Velocity.defaults.speed change is respected. (\\xD73, \" + Math.floor(actual - expected) + \"ms \\xB132ms)\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: duration,\r\n\t\t\tspeed: 2,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\telements.__start = getNow();\r\n\t\t\t},\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tconst actual = getNow() - elements.__start,\r\n\t\t\t\t\texpected = duration / 2;\r\n\r\n\t\t\t\tassert.close(actual, expected, 32, \"Double speed animation lasts half as long. (\\xD72, \" + Math.floor(actual - expected) + \"ms \\xB132ms)\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: duration,\r\n\t\t\tdelay: delay,\r\n\t\t\tspeed: 2,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\telements.__start = startDelay;\r\n\t\t\t},\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tconst actual = getNow() - elements.__start,\r\n\t\t\t\t\texpected = (duration + delay) / 2;\r\n\r\n\t\t\t\tassert.close(actual, expected, 32, \"Delayed animation includes speed for delay. (\\xD72, \" + Math.floor(actual - expected) + \"ms \\xB132ms)\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: duration,\r\n\t\t\tdelay: -delay,\r\n\t\t\tspeed: 2,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\telements.__start = startDelay;\r\n\t\t\t},\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tconst actual = getNow() - elements.__start,\r\n\t\t\t\t\texpected = (duration - delay) / 2;\r\n\r\n\t\t\t\tassert.close(actual, expected, 32, \"Negative delay animation includes speed for delay. (\\xD72, \" + Math.floor(actual - expected) + \"ms \\xB132ms)\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: duration,\r\n\t\t\tspeed: 0.5,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\telements.__start = getNow();\r\n\t\t\t},\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tconst actual = getNow() - elements.__start,\r\n\t\t\t\t\texpected = duration * 2;\r\n\r\n\t\t\t\t// TODO: Really not happy with the allowed range - it sits around 40ms, but should be closer to 16ms\r\n\t\t\t\tassert.close(actual, expected, 64, \"Half speed animation lasts twice as long. (\\xD7\\xBD, \" + Math.floor(actual - expected) + \"ms \\xB164ms)\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: duration,\r\n\t\t\tspeed: 0,\r\n\t\t\tprogress: function(elements, percentComplete) {\r\n\t\t\t\tif (!elements.__count) {\r\n\t\t\t\t\telements.__start = percentComplete;\r\n\t\t\t\t\telements.__count = 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tassert.equal(elements.__start, percentComplete, \"Frozen (speed:0) animation doesn't progress.\");\r\n\t\t\t\t\telements\r\n\t\t\t\t\t\t.velocity(\"option\", \"speed\", 1) // Just in case \"stop\" is broken\r\n\t\t\t\t\t\t.velocity(\"stop\");\r\n\r\n\t\t\t\t\tdone();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Sync\", function(assert) {\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget(),\r\n\t\t\t$targetSet = [getTarget(), $target, getTarget()];\r\n\t\tlet complete = false;\r\n\r\n\t\tVelocity($target, defaultProperties, {\r\n\t\t\tduration: 300,\r\n\t\t\tcomplete: function() {\r\n\t\t\t\tcomplete = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\tVelocity($targetSet, defaultProperties, {\r\n\t\t\tsync: false,\r\n\t\t\tduration: 250\r\n\t\t});\r\n\t\tawait sleep(275);\r\n\t\tassert.notOk(complete, \"Sync 'false' animations don't wait for completion.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget(),\r\n\t\t\t$targetSet = [getTarget(), $target, getTarget()];\r\n\t\tlet complete = false;\r\n\r\n\t\tVelocity($target, defaultProperties, {\r\n\t\t\tduration: 300,\r\n\t\t\tcomplete: function() {\r\n\t\t\t\tcomplete = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\tVelocity($targetSet, defaultProperties, {\r\n\t\t\tsync: true,\r\n\t\t\tduration: 250,\r\n\t\t\tbegin: function() {\r\n\t\t\t\tassert.ok(complete, \"Sync 'true' animations wait for completion.\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.module(\"Command\");\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Finish\", async (assert) => {\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity(getTarget(), \"finish\");\r\n\t\tassert.ok(true, \"Calling on an element that isn't animating doesn't cause an error.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, defaultProperties, defaultOptions);\r\n\t\tVelocity($target, {top: 0}, defaultOptions);\r\n\t\tVelocity($target, {width: 0}, defaultOptions);\r\n\t\tVelocity($target, \"finish\");\r\n\t\tassert.ok(true, \"Calling on an element that is animating doesn't cause an error.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 2, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\t\tlet complete1 = false,\r\n\t\t\tcomplete2 = false;\r\n\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tqueue: \"test1\",\r\n\t\t\tcomplete: () => {complete1 = true}\r\n\t\t});\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tqueue: \"test2\",\r\n\t\t\tcomplete: () => {complete2 = true}\r\n\t\t});\r\n\t\tVelocity($target, \"finish\", \"test1\");\r\n\t\tawait sleep(defaultOptions.duration as number / 2);\r\n\t\tassert.ok(complete1, \"Finish animation with correct queue.\");\r\n\t\tassert.notOk(complete2, \"Don't finish animation with wrong queue.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 3, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\t\tlet begin = false,\r\n\t\t\tcomplete = false;\r\n\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tbegin: () => {begin = true},\r\n\t\t\tcomplete: () => {complete = true}\r\n\t\t});\r\n\t\tawait sleep(500);\r\n\t\tVelocity($target, \"finish\");\r\n\t\tassert.ok(begin, \"Finish calls 'begin()' callback without delay.\");\r\n\t\tassert.ok(complete, \"Finish calls 'complete()' callback without delay.\");\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"0\", \"Finish animation with correct value.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 3, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\t\tlet begin = false,\r\n\t\t\tcomplete = false;\r\n\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tdelay: 1000,\r\n\t\t\tbegin: () => {begin = true},\r\n\t\t\tcomplete: () => {complete = true}\r\n\t\t});\r\n\t\tawait sleep(500);\r\n\t\tVelocity($target, \"finish\");\r\n\t\tassert.ok(begin, \"Finish calls 'begin()' callback with delay.\");\r\n\t\tassert.ok(complete, \"Finish calls 'complete()' callback with delay.\");\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"0\", \"Finish animation with correct value before delay ends.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 3, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, {opacity: 0})\r\n\t\t\t.velocity({opacity: 1})\r\n\t\t\t.velocity({opacity: 0.25})\r\n\t\t\t.velocity({opacity: 0.75})\r\n\t\t\t.velocity({opacity: 0.5});\r\n\t\tVelocity($target, \"finish\");\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"0\", \"Finish once starts the second animation.\");\r\n\t\tVelocity($target, \"finish\");\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"1\", \"Finish twice starts the third animation.\");\r\n\t\tVelocity($target, \"finish\", true);\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"0.5\", \"Finish 'true' finishes all animations.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Pause + Resume\", async function(assert) {\r\n\tasync(assert, 2, function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, \"pause\");\r\n\t\tassert.ok(true, \"Calling \\\"pause\\\" on an element that isn't animating doesn't cause an error.\");\r\n\t\tVelocity($target, \"resume\");\r\n\t\tassert.ok(true, \"Calling \\\"resume\\\" on an element that isn't animating doesn't cause an error.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 4, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\t\tlet progress = false;\r\n\r\n\t\tVelocity($target, {opacity: 0}, {duration: 250, progress: () => {progress = true;}});\r\n\t\tVelocity($target, \"pause\");\r\n\t\tawait sleep(50);\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"1\", \"Property value unchanged after pause.\");\r\n\t\tassert.notOk(progress, \"Progress callback not run during pause.\");\r\n\t\tVelocity($target, \"resume\");\r\n\t\tawait sleep(300);\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"0\", \"Tween completed after pause/resume.\");\r\n\t\tassert.ok(progress, \"Progress callback run after pause.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 3, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, {opacity: 0}, {duration: 250, delay: 250});\r\n\t\tVelocity($target, \"pause\");\r\n\t\tawait sleep(500);\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"1\", \"Delayed property value unchanged after pause.\");\r\n\t\tVelocity($target, \"resume\");\r\n\t\tawait sleep(100);\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"1\", \"Delayed tween did not start early after pause.\");\r\n\t\tawait sleep(500);\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"0\", \"Delayed tween completed after pause/resume.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, {opacity: 0}, {queue: \"test\", duration: 250});\r\n\t\tVelocity(\"pause\", \"test\");\r\n\t\tawait sleep(300);\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"1\", \"Pause 'queue' works globally.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, {opacity: 0})\r\n\t\t\t.velocity(\"pause\");\r\n\t\tawait sleep(300);\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"1\", \"Chained pause only pauses chained tweens.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\t// TODO: Better global tests, queue: false, named queues\r\n\r\n\t//\t/* Ensure proper behavior with queue:false */\r\n\t//\tvar $target4 = getTarget();\r\n\t//\tVelocity($target4, {opacity: 0}, {duration: 200});\r\n\t//\r\n\t//\tvar isResumed = false;\r\n\t//\r\n\t//\tawait sleep(100);\r\n\t//\tVelocity($target4, \"pause\");\r\n\t//\tVelocity($target4, {left: -20}, {\r\n\t//\t\tduration: 100,\r\n\t//\t\teasing: \"linear\",\r\n\t//\t\tqueue: false,\r\n\t//\t\tbegin: function(elements) {\r\n\t//\t\t\tassert.ok(true, \"Animation with {queue:false} will run regardless of previously paused animations.\");\r\n\t//\t\t}\r\n\t//\t});\r\n\t//\r\n\t//\tVelocity($target4, {top: 20}, {\r\n\t//\t\tduration: 100,\r\n\t//\t\teasing: \"linear\",\r\n\t//\t\tbegin: function(elements) {\r\n\t//\t\t\tassert.ok(isResumed, \"Queued animation began after previously paused animation completed\");\r\n\t//\t\t}\r\n\t//\t});\r\n\t//\r\n\t//\tawait sleep(100);\r\n\t//\r\n\t//\tisResumed = true;\r\n\t//\tVelocity($target4, \"resume\");\r\n\t//\tawait sleep(100);\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Reverse\", function(assert) {\r\n\tvar $target = getTarget(),\r\n\t\topacity = $target.velocity(\"style\", \"opacity\"),\r\n\t\twidth = $target.velocity(\"style\", \"width\");\r\n\r\n\tif (width === \"0\") {\r\n\t\t// Browsers don't always suffix, but Velocity does.\r\n\t\twidth = \"0px\";\r\n\t}\r\n\tasync(assert, 2, function(done) {\r\n\t\tVelocity($target, defaultProperties, {\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tassert.equal(elements[0].velocity(\"style\", \"opacity\"), defaultProperties.opacity, \"Initial property #1 set correctly. (\" + defaultProperties.opacity + \")\");\r\n\t\t\t\tassert.equal(elements[0].velocity(\"style\", \"width\"), defaultProperties.width, \"Initial property #2 set correctly. (\" + defaultProperties.width + \")\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 2, function(done) {\r\n\t\tVelocity($target, \"reverse\", {\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tassert.equal(elements[0].velocity(\"style\", \"opacity\"), opacity, \"Reversed property #1 set correctly. (\" + opacity + \")\");\r\n\t\t\t\tassert.equal(elements[0].velocity(\"style\", \"width\"), width, \"Reversed property #2 set correctly. (\" + width + \")\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 2, function(done) {\r\n\t\tVelocity($target, \"reverse\", {\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tassert.equal(elements[0].velocity(\"style\", \"opacity\"), defaultProperties.opacity, \"Chained reversed property #1 set correctly. (\" + defaultProperties.opacity + \")\");\r\n\t\t\t\tassert.equal(elements[0].velocity(\"style\", \"width\"), defaultProperties.width, \"Chained reversed property #2 set correctly. (\" + defaultProperties.width + \")\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\n/* Window scrolling. */\r\nQUnit.skip(\"Scroll (Window)\", function(assert) {\r\n\tvar done = assert.async(4),\r\n\t\t\t$details = $(\"#details\"),\r\n\t\t\t$scrollTarget1 = $(\"
Scroll target #1. Should stop 50 pixels above this point.
\"),\r\n\t\t\t$scrollTarget2 = $(\"
Scroll target #2. Should stop 50 pixels before this point.
\"),\r\n\t\t\tscrollOffset = -50;\r\n\r\n\t$scrollTarget1\r\n\t\t\t.css({position: \"relative\", top: 3000, height: 100, paddingBottom: 10000})\r\n\t\t\t.appendTo($(\"body\"));\r\n\r\n\t$scrollTarget2\r\n\t\t\t.css({position: \"absolute\", top: 100, left: 3000, width: 100, paddingRight: 15000})\r\n\t\t\t.appendTo($(\"body\"));\r\n\r\n\t$scrollTarget1\r\n\t\t\t.velocity(\"scroll\", {duration: 500, offset: scrollOffset, complete: function() {\r\n\t\t\t\t\tassert.equal(Math.abs(Velocity.State.scrollAnchor[Velocity.State.scrollPropertyTop] - ($scrollTarget1.offset().top + scrollOffset)) <= 100, true, \"Page scrolled top with a scroll offset.\");\r\n\r\n\t\t\t\t\tdone();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.velocity({opacity: 0.5}, function() {\r\n\t\t\t\t$details\r\n\t\t\t\t\t\t.velocity({opacity: 0.5}, 500)\r\n\t\t\t\t\t\t.velocity(\"scroll\", 500)\r\n\t\t\t\t\t\t.velocity({opacity: 1}, 500, function() {\r\n\t\t\t\t\t\t\t//alert(Velocity.State.scrollAnchor[Velocity.State.scrollPropertyTop] + \" \" + ($details.offset().top + scrollOffset))\r\n\t\t\t\t\t\t\tassert.equal(Math.abs(Velocity.State.scrollAnchor[Velocity.State.scrollPropertyTop] - ($details.offset().top + scrollOffset)) <= 100, true, \"Page scroll top was chained.\");\r\n\r\n\t\t\t\t\t\t\tdone();\r\n\r\n\t\t\t\t\t\t\t//$scrollTarget1.remove();\r\n\r\n\t\t\t\t\t\t\t$scrollTarget2\r\n\t\t\t\t\t\t\t\t\t.velocity(\"scroll\", {duration: 500, axis: \"x\", offset: scrollOffset, complete: function() {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Phones can reposition the browser's scroll position by a 10 pixels or so, so we just check for a value that's within that range. */\r\n\t\t\t\t\t\t\t\t\t\t\tassert.equal(Math.abs(Velocity.State.scrollAnchor[Velocity.State.scrollPropertyLeft] - ($scrollTarget2.offset().left + scrollOffset)) <= 100, true, \"Page scrolled left with a scroll offset.\");\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tdone();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t.velocity({opacity: 0.5}, function() {\r\n\t\t\t\t\t\t\t\t\t\t$details\r\n\t\t\t\t\t\t\t\t\t\t\t\t.velocity({opacity: 0.5}, 500)\r\n\t\t\t\t\t\t\t\t\t\t\t\t.velocity(\"scroll\", {duration: 500, axis: \"x\"})\r\n\t\t\t\t\t\t\t\t\t\t\t\t.velocity({opacity: 1}, 500, function() {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tassert.equal(Math.abs(Velocity.State.scrollAnchor[Velocity.State.scrollPropertyLeft] - ($details.offset().left + scrollOffset)) <= 100, true, \"Page scroll left was chained.\");\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdone();\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t});\r\n});\r\n\r\n/* Element scrolling. */\r\nQUnit.skip(\"Scroll (Element)\", function(assert) {\r\n\tvar done = assert.async(2),\r\n\t\t\t$scrollTarget1 = $(\"\\\r\n\t\t\t\t\t
\\\r\n\t\t\t\t\t\taaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\r\n\t\t\t\t\t\taaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\r\n\t\t\t\t\t\taaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\r\n\t\t\t\t\t\taaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\r\n\t\t\t\t\t\taaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\r\n\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\t\tStop #1\\\r\n\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\t\tStop #2\\\r\n\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t
\\\r\n\t\t\t\t\");\r\n\r\n\tassert.expect(2);\r\n\t$scrollTarget1\r\n\t\t\t.css({position: \"absolute\", backgroundColor: \"white\", top: 100, left: \"50%\", width: 500, height: 100, overflowY: \"scroll\"})\r\n\t\t\t.appendTo($(\"body\"));\r\n\r\n\t/* Test with a jQuery object container. */\r\n\t$(\"#scrollerChild1\").velocity(\"scroll\", {container: $(\"#scroller\"), duration: 750, complete: function() {\r\n\t\t\t/* Test with a raw DOM element container. */\r\n\t\t\t$(\"#scrollerChild2\").velocity(\"scroll\", {container: $(\"#scroller\")[0], duration: 750, complete: function() {\r\n\t\t\t\t\t/* This test is purely visual. */\r\n\t\t\t\t\tassert.ok(true);\r\n\r\n\t\t\t\t\t$scrollTarget1.remove();\r\n\r\n\t\t\t\t\tvar $scrollTarget2 = $(\"\\\r\n\t\t\t\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\t\t\t\t\t\tStop #1\\\r\n\t\t\t\t\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\t\t\t\t\t\tStop #2\\\r\n\t\t\t\t\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\t\t\t\");\r\n\r\n\t\t\t\t\t$scrollTarget2\r\n\t\t\t\t\t\t\t.css({position: \"absolute\", backgroundColor: \"white\", top: 100, left: \"50%\", width: 100, height: 500, overflowX: \"scroll\"})\r\n\t\t\t\t\t\t\t.appendTo($(\"body\"));\r\n\r\n\t\t\t\t\t/* Test with a jQuery object container. */\r\n\t\t\t\t\t$(\"#scrollerChild2\").velocity(\"scroll\", {axis: \"x\", container: $(\"#scroller\"), duration: 750, complete: function() {\r\n\t\t\t\t\t\t\t/* Test with a raw DOM element container. */\r\n\t\t\t\t\t\t\t$(\"#scrollerChild1\").velocity(\"scroll\", {axis: \"x\", container: $(\"#scroller\")[0], duration: 750, complete: function() {\r\n\t\t\t\t\t\t\t\t\t/* This test is purely visual. */\r\n\t\t\t\t\t\t\t\t\tassert.ok(true);\r\n\r\n\t\t\t\t\t\t\t\t\t$scrollTarget2.remove();\r\n\r\n\t\t\t\t\t\t\t\t\tdone();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tdone();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n});\r\n\t","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Stop\", async function(assert) {\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity(getTarget(), \"stop\");\r\n\t\tassert.ok(true, \"Calling on an element that isn't animating doesn't cause an error.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, defaultProperties, defaultOptions);\r\n\t\tVelocity($target, {top: 0}, defaultOptions);\r\n\t\tVelocity($target, {width: 0}, defaultOptions);\r\n\t\tVelocity($target, \"stop\");\r\n\t\tassert.ok(true, \"Calling on an element that is animating doesn't cause an error.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget(),\r\n\t\t\tstartOpacity = getPropertyValue($target, \"opacity\");\r\n\r\n\t\tVelocity($target, {opacity: [0, 1]}, defaultOptions);\r\n\t\tawait sleep(defaultOptions.duration as number / 2);\r\n\t\tVelocity($target, \"stop\");\r\n\t\tassert.close(parseFloat(getPropertyValue($target, \"opacity\")), parseFloat(startOpacity) / 2, 0.1, \"Animation runs until stopped.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\t\tlet begin = false;\r\n\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tdelay: 1000,\r\n\t\t\tbegin: () => {begin = true}\r\n\t\t});\r\n\t\tawait sleep(500);\r\n\t\tVelocity($target, \"stop\");\r\n\t\tassert.notOk(begin, \"Stop animation before delay ends.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 2, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\t\tlet complete1 = false,\r\n\t\t\tcomplete2 = false;\r\n\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tqueue: \"test1\",\r\n\t\t\tcomplete: () => {complete1 = true}\r\n\t\t});\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tqueue: \"test2\",\r\n\t\t\tcomplete: () => {complete2 = true}\r\n\t\t});\r\n\t\tVelocity($target, \"stop\", \"test1\");\r\n\t\tawait sleep(defaultOptions.duration as number * 2);\r\n\t\tassert.ok(complete2, \"Stop animation with correct queue.\");\r\n\t\tassert.notOk(complete1, \"Don't stop animation with wrong queue.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\t\tlet begin1 = false,\r\n\t\t\tbegin2 = false;\r\n\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tbegin: () => {begin1 = true}\r\n\t\t});\r\n\t\tVelocity($target, {width: \"500px\"}, {\r\n\t\t\tbegin: () => {begin2 = true}\r\n\t\t});\r\n\t\tVelocity($target, \"stop\", true);\r\n\t\tawait sleep(defaultOptions.duration as number * 2);\r\n\t\tassert.notOk(begin1 || begin2, \"Stop 'true' stops all animations.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 2, async function(done) {\r\n\t\tconst $target = getTarget(),\r\n\t\t\tanim = Velocity($target, {opacity: [0, 1]}, {\r\n\t\t\t\tqueue: \"test\",\r\n\t\t\t\tbegin: () => {begin1 = true}\r\n\t\t\t});\r\n\t\tlet begin1 = false,\r\n\t\t\tbegin2 = false;\r\n\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tbegin: () => {begin2 = true}\r\n\t\t});\r\n\t\tanim.velocity(\"stop\");\r\n\t\tawait sleep(defaultOptions.duration as number * 2);\r\n\t\tassert.notOk(begin1, \"Stop without arguments on a chain stops chain animations.\");\r\n\t\tassert.ok(begin2, \"Stop without arguments on a chain doesn't stop other animations.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Tween\", function(assert) {\r\n\tvar $target1 = getTarget(),\r\n\t\tstartOpacity = $target1.style.opacity;\r\n\r\n\tassert.expect(11);\r\n\r\n\tassert.raises(() => {(Velocity as any)(\"tween\", \"invalid\")}, \"Invalid percentComplete throws an error.\");\r\n\tassert.raises(() => {(Velocity as any)([$target1, $target1], \"tween\", \"invalid\")}, \"Passing more than one target throws an error.\");\r\n\tassert.raises(() => {(Velocity as any)(\"tween\", 0, [\"invalid\"])}, \"Invalid propertyMap throws an error.\");\r\n\tassert.raises(() => {(Velocity as any)(\"tween\", 0, \"invalid\", 1)}, \"Property without an element must be forcefed or throw an error.\");\r\n\r\n\tassert.equal($target1.velocity(\"tween\", 0.5, \"opacity\", [1, 0], \"linear\"), \"0.5\", \"Calling on an chain returns the correct value.\");\r\n\tassert.equal(Velocity($target1, \"tween\", 0.5, \"opacity\", [1, 0], \"linear\"), \"0.5\", \"Calling with an element returns the correct value.\");\r\n\tassert.equal(Velocity(\"tween\", 0.5, \"opacity\", [1, 0], \"linear\"), \"0.5\", \"Calling without an element returns the correct value.\");\r\n\tassert.equal($target1.style.opacity, startOpacity, \"Ensure that the element is not altered.\");\r\n\r\n\tassert.equal(typeof Velocity($target1, \"tween\", 0.5, \"opacity\", [1, 0], \"linear\"), \"string\", \"Calling a single property returns a value.\");\r\n\tassert.equal(typeof Velocity($target1, \"tween\", 0.5, {opacity: [1, 0]}, \"linear\"), \"object\", \"Calling a propertiesMap returns an object.\");\r\n\tassert.deepEqual($target1.velocity(\"tween\", 0.5, {opacity: [1, 0]}, \"linear\"), Velocity($target1, \"tween\", 0.5, {opacity: [1, 0]}, \"linear\"), \"Calling directly returns the same as a chain.\");\r\n});\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.module(\"Feature\");\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"'velocity-animating' Classname\", function(assert) {\r\n\tvar done = assert.async(1);\r\n\r\n\tVelocity(getTarget(), defaultProperties, {\r\n\t\tbegin: function(elements) {\r\n\t\t\tassert.equal(/velocity-animating/.test(elements[0].className), true, \"Class added.\");\r\n\t\t},\r\n\t\tcomplete: function(elements) {\r\n\t\t\tassert.equal(/velocity-animating/.test(elements[0].className), false, \"Class removed.\");\r\n\t\t}\r\n\t}).then(done);\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.skip(\"Colors (Shorthands)\", function(assert) {\r\n\tvar $target = getTarget();\r\n\r\n\tVelocity($target, {borderColor: \"#7871c2\", color: [\"#297dad\", \"spring\", \"#5ead29\"]});\r\n\r\n\t//\tassert.equal(Data($target).style.borderColorRed.endValue, 120, \"Hex #1a component.\");\r\n\t//\tassert.equal(Data($target).style.borderColorGreen.endValue, 113, \"Hex #1b component.\");\r\n\t//\tassert.equal(Data($target).style.borderColorBlue.endValue, 194, \"Hex #1c component.\");\r\n\t//\tassert.equal(Data($target).style.colorRed.easing, \"spring\", \"Per-property easing.\");\r\n\t//\tassert.equal(Data($target).style.colorRed.startValue, 94, \"Forcefed hex #2a component.\");\r\n\t//\tassert.equal(Data($target).style.colorGreen.startValue, 173, \"Forcefed hex #2b component.\");\r\n\t//\tassert.equal(Data($target).style.colorBlue.startValue, 41, \"Forcefed hex #2c component.\");\r\n\t//\tassert.equal(Data($target).style.colorRed.endValue, 41, \"Hex #3a component.\");\r\n\t//\tassert.equal(Data($target).style.colorGreen.endValue, 125, \"Hex #3b component.\");\r\n\t//\tassert.equal(Data($target).style.colorBlue.endValue, 173, \"Hex #3c component.\");\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.todo(\"Forcefeeding\", function(assert) {\r\n\t/* Note: Start values are always converted into pixels. W test the conversion ratio we already know to avoid additional work. */\r\n\tlet testStartWidth = \"1rem\",\r\n\t\ttestStartWidthToPx = \"16px\",\r\n\t\ttestStartHeight = \"10px\";\r\n\r\n\tvar $target = getTarget();\r\n\tVelocity($target, {\r\n\t\twidth: [100, \"linear\", testStartWidth],\r\n\t\theight: [100, testStartHeight],\r\n\t\topacity: [defaultProperties.opacity as any, \"easeInQuad\"]\r\n\t});\r\n\r\n\tassert.equal(Data($target).cache.width, parseFloat(testStartWidthToPx), \"Forcefed value #1 passed to tween.\");\r\n\tassert.equal(Data($target).cache.height, parseFloat(testStartHeight), \"Forcefed value #2 passed to tween.\");\r\n\tassert.equal(Data($target).cache.opacity, defaultStyles.opacity, \"Easing was misinterpreted as forcefed value.\");\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Promises\", function(assert) {\r\n\tlet done = assert.async(9),\r\n\t\tresult: VelocityResult,\r\n\t\tstart = getNow();\r\n\r\n\tassert.expect(9);\r\n\r\n\t/**********************\r\n\t Invalid Arguments\r\n\t **********************/\r\n\r\n\t(Velocity as any)().then(function() {\r\n\t\tassert.notOk(true, \"Calling with no arguments should reject a Promise.\");\r\n\t}, function() {\r\n\t\tassert.ok(true, \"Calling with no arguments should reject a Promise.\");\r\n\t}).then(done);\r\n\r\n\tVelocity(getTarget() as any).then(function() {\r\n\t\tassert.notOk(true, \"Calling with no properties should reject a Promise.\");\r\n\t}, function() {\r\n\t\tassert.ok(true, \"Calling with no properties should reject a Promise.\");\r\n\t}).then(done);\r\n\r\n\tVelocity(getTarget(), {}).then(function() {\r\n\t\tassert.ok(true, \"Calling with empty properties should not reject a Promise.\");\r\n\t}, function() {\r\n\t\tassert.notOk(true, \"Calling with empty properties should not reject a Promise.\");\r\n\t}).then(done);\r\n\r\n\tVelocity(getTarget(), {}, defaultOptions.duration).then(function() {\r\n\t\tassert.ok(true, \"Calling with empty properties + duration should not reject a Promise.\");\r\n\t}, function() {\r\n\t\tassert.notOk(true, \"Calling with empty properties + duration should not reject a Promise.\");\r\n\t}).then(done);\r\n\r\n\t/* Invalid arguments: Ensure an error isn't thrown. */\r\n\tVelocity(getTarget(), {} as any, \"fakeArg1\", \"fakeArg2\").then(function() {\r\n\t\tassert.ok(true, \"Calling with invalid arguments should reject a Promise.\");\r\n\t}, function() {\r\n\t\tassert.notOk(true, \"Calling with invalid arguments should reject a Promise.\");\r\n\t}).then(done);\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties, defaultOptions);\r\n\tresult.then(function(elements) {\r\n\t\tassert.equal(elements.length, 1, \"Calling with a single element fulfills with a single element array.\");\r\n\t}, function() {\r\n\t\tassert.ok(false, \"Calling with a single element fulfills with a single element array.\");\r\n\t}).then(done);\r\n\tresult.velocity(defaultProperties).then(function(elements) {\r\n\t\tassert.ok(getNow() - start > 2 * (defaultOptions.duration as number), \"Queued call fulfilled after correct delay.\");\r\n\t}, function() {\r\n\t\tassert.ok(false, \"Queued call fulfilled after correct delay.\");\r\n\t}).then(done);\r\n\r\n\tresult = Velocity([getTarget(), getTarget()], defaultProperties, defaultOptions);\r\n\tresult.then(function(elements) {\r\n\t\tassert.equal(elements.length, 2, \"Calling with multiple elements fulfills with a multiple element array.\");\r\n\t}, function() {\r\n\t\tassert.ok(false, \"Calling with multiple elements fulfills with a multiple element array.\");\r\n\t}).then(done);\r\n\r\n\tlet anim = Velocity(getTarget(), defaultProperties, defaultOptions);\r\n\r\n\tanim.then(function() {\r\n\t\tassert.ok(getNow() - start < (defaultOptions.duration as number), \"Stop call fulfilled after correct delay.\");\r\n\t}, function() {\r\n\t\tassert.ok(false, \"Stop call fulfilled after correct delay.\");\r\n\t}).then(done);\r\n\tanim.velocity(\"stop\");\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Redirects\", function(assert) {\r\n\tvar done = assert.async(2),\r\n\t\t$target1 = getTarget(),\r\n\t\t$target2 = getTarget(),\r\n\t\tredirectOptions = {duration: 1500};\r\n\r\n\t((window as any).jQuery || (window as any).Zepto || window).Velocity.Redirects.test = function(element, options, elementIndex, elementsLength) {\r\n\t\tif (elementIndex === 0) {\r\n\t\t\tassert.deepEqual(element, $target1, \"Element passed through #1.\");\r\n\t\t\tassert.deepEqual(options, redirectOptions, \"Options object passed through #1.\");\r\n\t\t\tassert.equal(elementIndex, 0, \"Element index passed through #1.\");\r\n\t\t\tassert.equal(elementsLength, 2, \"Elements length passed through #1.\");\r\n\r\n\t\t\tdone();\r\n\t\t} else if (elementIndex === 1) {\r\n\t\t\tassert.deepEqual(element, $target2, \"Element passed through #2.\");\r\n\t\t\tassert.deepEqual(options, redirectOptions, \"Options object passed through #2.\");\r\n\t\t\tassert.equal(elementIndex, 1, \"Element index passed through #2.\");\r\n\t\t\tassert.equal(elementsLength, 2, \"Elements length passed through #2.\");\r\n\r\n\t\t\tdone();\r\n\t\t}\r\n\t};\r\n\r\n\tVelocity([$target1, $target2], \"test\", redirectOptions);\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.todo(\"Value Functions\", function(assert) {\r\n\tvar testWidth = 10;\r\n\r\n\tvar $target1 = getTarget(),\r\n\t\t$target2 = getTarget();\r\n\r\n\tVelocity([$target1, $target2], {\r\n\t\twidth: function(i, total) {\r\n\t\t\treturn (i + 1) / total * testWidth;\r\n\t\t}\r\n\t});\r\n\r\n\tassert.equal(Data($target1).cache.width, parseFloat(testWidth as any) / 2, \"Function value #1 passed to tween.\");\r\n\tassert.equal(Data($target2).cache.width, parseFloat(testWidth as any), \"Function value #2 passed to tween.\");\r\n});\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.module(\"UI Pack\");\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.skip(\"Packaged Effect: slideUp/Down\", function(assert) {\r\n\tvar done = assert.async(4),\r\n\t\t$target1 = getTarget(),\r\n\t\t$target2 = getTarget(),\r\n\t\tinitialStyles = {\r\n\t\t\tdisplay: \"none\",\r\n\t\t\tpaddingTop: \"123px\"\r\n\t\t};\r\n\r\n\t$target1.style.display = initialStyles.display;\r\n\t$target1.style.paddingTop = initialStyles.paddingTop;\r\n\r\n\tVelocity($target1, \"slideDown\", {\r\n\t\tbegin: function(elements) {\r\n\t\t\tassert.deepEqual(elements, [$target1], \"slideDown: Begin callback returned.\");\r\n\r\n\t\t\tdone();\r\n\t\t},\r\n\t\tcomplete: function(elements) {\r\n\t\t\tassert.deepEqual(elements, [$target1], \"slideDown: Complete callback returned.\");\r\n\t\t\t//\t\t\tassert.equal(Velocity.CSS.getPropertyValue($target1, \"display\"), Velocity.CSS.Values.getDisplayType($target1), \"slideDown: display set to default.\");\r\n\t\t\tassert.notEqual(Velocity.CSS.getPropertyValue($target1, \"height\"), 0, \"slideDown: height set.\");\r\n\t\t\tassert.equal(Velocity.CSS.getPropertyValue($target1, \"paddingTop\"), initialStyles.paddingTop, \"slideDown: paddingTop set.\");\r\n\r\n\t\t\tdone();\r\n\t\t}\r\n\t\t//\t}).then(function(elements) {\r\n\t\t//\t\tassert.deepEqual(elements, [$target1], \"slideDown: Promise fulfilled.\");\r\n\t\t//\r\n\t\t//\t\tdone();\r\n\t});\r\n\r\n\tVelocity($target2, \"slideUp\", {\r\n\t\tbegin: function(elements) {\r\n\t\t\tassert.deepEqual(elements, [$target2], \"slideUp: Begin callback returned.\");\r\n\r\n\t\t\tdone();\r\n\t\t},\r\n\t\tcomplete: function(elements) {\r\n\t\t\tassert.deepEqual(elements, [$target2], \"slideUp: Complete callback returned.\");\r\n\t\t\tassert.equal(Velocity.CSS.getPropertyValue($target2, \"display\"), 0, \"slideUp: display set to none.\");\r\n\t\t\tassert.notEqual(Velocity.CSS.getPropertyValue($target2, \"height\"), 0, \"slideUp: height reset.\");\r\n\t\t\tassert.equal(Velocity.CSS.getPropertyValue($target1, \"paddingTop\"), initialStyles.paddingTop, \"slideUp: paddingTop reset.\");\r\n\r\n\t\t\tdone();\r\n\t\t}\r\n\t\t//\t}).then(function(elements) {\r\n\t\t//\t\tassert.deepEqual(elements, [$target2], \"slideUp: Promise fulfilled.\");\r\n\t\t//\r\n\t\t//\t\tdone();\r\n\t});\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.skip(\"Call Options\", function(assert) {\r\n\tvar done = assert.async(2),\r\n\t\t\tUICallOptions1 = {\r\n\t\t\t\tdelay: 123,\r\n\t\t\t\tduration: defaultOptions.duration,\r\n\t\t\t\teasing: \"spring\" // Should get ignored\r\n\t\t\t},\r\n\t\t\t$target1 = getTarget();\r\n\r\n\t//assert.expect(1);\r\n\tVelocity($target1, \"transition.slideLeftIn\", UICallOptions1);\r\n\r\n\tsetTimeout(function() {\r\n\t\t// Note: We can do this because transition.slideLeftIn is composed of a single call.\r\n//\t\tassert.equal(Data($target1).opts.delay, UICallOptions1.delay, \"Whitelisted option passed in.\");\r\n//\t\tassert.notEqual(Data($target1).opts.easing, UICallOptions1.easing, \"Non-whitelisted option not passed in #1a.\");\r\n//\t\tassert.equal(!/velocity-animating/.test(Data($target1).className), true, \"Duration option passed in.\");\r\n\r\n\t\tdone();\r\n\t}, completeCheckDuration);\r\n\r\n\tvar UICallOptions2 = {\r\n\t\tstagger: 100,\r\n\t\tduration: defaultOptions.duration,\r\n\t\tbackwards: true\r\n\t};\r\n\r\n\tvar $targets = [getTarget(), getTarget(), getTarget()];\r\n\tVelocity($targets, \"transition.slideLeftIn\", UICallOptions2);\r\n\r\n\tsetTimeout(function() {\r\n//\t\tassert.equal(Data($targets[0]).opts.delay, UICallOptions2.stagger * 2, \"Backwards stagger delay passed in #1a.\");\r\n//\t\tassert.equal(Data($targets[1]).opts.delay, UICallOptions2.stagger * 1, \"Backwards stagger delay passed in #1b.\");\r\n//\t\tassert.equal(Data($targets[2]).opts.delay, UICallOptions2.stagger * 0, \"Backwards stagger delay passed in #1c.\");\r\n\r\n\t\tdone();\r\n\t}, completeCheckDuration);\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.skip(\"Callbacks\", function(assert) {\r\n\tvar done = assert.async(2),\r\n\t\t$targets = [getTarget(), getTarget()];\r\n\r\n\tassert.expect(3);\r\n\tVelocity($targets, \"transition.bounceIn\", {\r\n\t\tbegin: function(elements) {\r\n\t\t\tassert.deepEqual(elements, $targets, \"Begin callback returned.\");\r\n\r\n\t\t\tdone();\r\n\t\t},\r\n\t\tcomplete: function(elements) {\r\n\t\t\tassert.deepEqual(elements, $targets, \"Complete callback returned.\");\r\n\r\n\t\t\tdone();\r\n\t\t}\r\n\t\t//\t}).then(function(elements) {\r\n\t\t//\t\tassert.deepEqual(elements, $targets, \"Promise fulfilled.\");\r\n\t\t//\r\n\t\t//\t\tdone();\r\n\t});\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.skip(\"In/Out\", function(assert) {\r\n\tvar done = assert.async(2),\r\n\t\t$target1 = getTarget(),\r\n\t\t$target2 = getTarget(),\r\n\t\t$target3 = getTarget(),\r\n\t\t$target4 = getTarget(),\r\n\t\t$target5 = getTarget(),\r\n\t\t$target6 = getTarget();\r\n\r\n\tVelocity($target1, \"transition.bounceIn\", defaultOptions.duration);\r\n\r\n\tVelocity($target2, \"transition.bounceIn\", {duration: defaultOptions.duration, display: \"inline\"});\r\n\r\n\tVelocity($target3, \"transition.bounceOut\", defaultOptions.duration);\r\n\r\n\tVelocity($target4, \"transition.bounceOut\", {duration: defaultOptions.duration, display: null});\r\n\r\n\t$target5.style.visibility = \"hidden\";\r\n\tVelocity($target5, \"transition.bounceIn\", {duration: defaultOptions.duration, visibility: \"visible\"});\r\n\r\n\t$target6.style.visibility = \"visible\";\r\n\tVelocity($target6, \"transition.bounceOut\", {duration: defaultOptions.duration, visibility: \"hidden\"});\r\n\r\n\tassert.expect(8);\r\n\tsetTimeout(function() {\r\n\t\tassert.notEqual(Velocity.CSS.getPropertyValue($target3, \"display\"), 0, \"Out: display not prematurely set to none.\");\r\n\t\tassert.notEqual(Velocity.CSS.getPropertyValue($target6, \"visibility\"), \"hidden\", \"Out: visibility not prematurely set to hidden.\");\r\n\r\n\t\tdone();\r\n\t}, asyncCheckDuration);\r\n\r\n\tsetTimeout(function() {\r\n\t\t//\t\tassert.equal(Velocity.CSS.getPropertyValue($target1, \"display\"), Velocity.CSS.Values.getDisplayType($target1), \"In: display set to default.\");\r\n\t\tassert.equal(Velocity.CSS.getPropertyValue($target2, \"display\"), \"inline\", \"In: Custom inline value set.\");\r\n\r\n\t\tassert.equal(Velocity.CSS.getPropertyValue($target3, \"display\"), 0, \"Out: display set to none.\");\r\n\t\t//\t\tassert.equal(Velocity.CSS.getPropertyValue($target4, \"display\"), Velocity.CSS.Values.getDisplayType($target3), \"Out: No display value set.\");\r\n\r\n\t\tassert.equal(Velocity.CSS.getPropertyValue($target5, \"visibility\"), \"visible\", \"In: visibility set to visible.\");\r\n\t\tassert.equal(Velocity.CSS.getPropertyValue($target6, \"visibility\"), \"hidden\", \"Out: visibility set to hidden.\");\r\n\r\n\t\tdone();\r\n\t}, completeCheckDuration);\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.skip(\"RegisterEffect\", function(assert) {\r\n\tvar done = assert.async(1),\r\n\t\teffectDefaultDuration = 800;\r\n\r\n\tassert.expect(2);\r\n\tVelocity.RegisterEffect(\"callout.twirl\", {\r\n\t\tdefaultDuration: effectDefaultDuration,\r\n\t\tcalls: [\r\n\t\t\t[{rotateZ: 1080}, 0.50],\r\n\t\t\t[{scaleX: 0.5}, 0.25, {easing: \"spring\"}],\r\n\t\t\t[{scaleX: 1}, 0.25, {easing: \"spring\"}]\r\n\t\t]\r\n\t});\r\n\r\n\tvar $target1 = getTarget();\r\n\tVelocity($target1, \"callout.twirl\");\r\n\r\n\tsetTimeout(function() {\r\n\t\tassert.equal(parseFloat(Velocity.CSS.getPropertyValue($target1, \"rotateZ\") as string), 1080, \"First call's property animated.\");\r\n\t\tassert.equal(parseFloat(Velocity.CSS.getPropertyValue($target1, \"scaleX\") as string), 1, \"Last call's property animated.\");\r\n\r\n\t\tdone();\r\n\t}, effectDefaultDuration * 1.50);\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.skip(\"RunSequence\", function(assert) {\r\n\r\n\tvar done = assert.async(1),\r\n\t\t$target1 = getTarget(),\r\n\t\t$target2 = getTarget(),\r\n\t\t$target3 = getTarget(),\r\n\t\tmySequence = [\r\n\t\t\t{elements: $target1, properties: {opacity: defaultProperties.opacity}},\r\n\t\t\t{elements: $target2, properties: {height: defaultProperties.height}},\r\n\t\t\t{\r\n\t\t\t\telements: $target3, properties: {width: defaultProperties.width}, options: {\r\n\t\t\t\t\tdelay: 100,\r\n\t\t\t\t\tsequenceQueue: false,\r\n\t\t\t\t\tcomplete: function() {\r\n\t\t\t\t\t\tassert.equal(parseFloat(Velocity.CSS.getPropertyValue($target1, \"opacity\") as string), defaultProperties.opacity, \"First call's property animated.\");\r\n\t\t\t\t\t\tassert.equal(parseFloat(Velocity.CSS.getPropertyValue($target2, \"height\") as string), defaultProperties.height, \"Second call's property animated.\");\r\n\t\t\t\t\t\tassert.equal(parseFloat(Velocity.CSS.getPropertyValue($target3, \"width\") as string), defaultProperties.width, \"Last call's property animated.\");\r\n\r\n\t\t\t\t\t\tdone();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t];\r\n\r\n\tassert.expect(3);\r\n\tVelocity.RunSequence(mySequence);\r\n});\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.module(\"Properties\");\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.todo(\"GenericReordering\", function(assert) {\r\n\tlet tests = [\r\n\t\t{\r\n\t\t\ttest: \"hsl(16, 100%, 66%) 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px hsl(16, 100%, 66%)\",\r\n\t\t}, {\r\n\t\t\ttest: \"-webkit-linear-gradient(red, yellow) 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px -webkit-linear-gradient(red, yellow)\",\r\n\t\t}, {\r\n\t\t\ttest: \"-o-linear-gradient(red, yellow) 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px -o-linear-gradient(red, yellow)\",\r\n\t\t}, {\r\n\t\t\ttest: \"-moz-linear-gradient(red, yellow) 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px -moz-linear-gradient(red, yellow)\",\r\n\t\t}, {\r\n\t\t\ttest: \"linear-gradient(red, yellow) 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px linear-gradient(red, yellow)\",\r\n\t\t}, {\r\n\t\t\ttest: \"red 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px red\",\r\n\t\t}, {\r\n\t\t\ttest: \"#000000 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px #000000\",\r\n\t\t}, {\r\n\t\t\ttest: \"rgb(0, 0, 0) 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px rgb(0, 0, 0)\",\r\n\t\t}, {\r\n\t\t\ttest: \"rgba(0, 0, 0, 1) 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px rgba(0, 0, 0, 1)\",\r\n\t\t}, {\r\n\t\t\ttest: \"1px 1px 1px rgb(0, 0, 0)\",\r\n\t\t\tresult: \"1px 1px 1px rgb(0, 0, 0)\",\r\n\t\t},\r\n\t];\r\n\r\n\tfor (let test of tests) {\r\n\t\tlet element = getTarget();\r\n\r\n\t\telement.style.textShadow = test.test;\r\n\t\tassert.equal(Velocity.CSS.Normalizations[\"textShadow\"](element), test.result, test.test);\r\n\t}\r\n\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Display\", function(assert) {\r\n\tvar done = assert.async(5);\r\n\r\n\tVelocity(getTarget(), \"style\", \"display\", \"none\")\r\n\t\t.velocity({display: \"block\"}, {\r\n\t\t\tprogress: once(function(elements: VelocityResult) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"display\"), \"block\", \"Display:'block' was set immediately.\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t})\r\n\t\t});\r\n\r\n\tVelocity(getTarget(), \"style\", \"display\", \"none\")\r\n\t\t.velocity(\"style\", \"display\", \"auto\")\r\n\t\t.then(function(elements) {\r\n\t\t\tassert.equal(elements[0].style.display, \"block\", \"Display:'auto' was understood.\");\r\n\t\t\tassert.equal(elements.velocity(\"style\", \"display\"), \"block\", \"Display:'auto' was cached as 'block'.\");\r\n\r\n\t\t\tdone();\r\n\t\t});\r\n\r\n\tVelocity(getTarget(), \"style\", \"display\", \"none\")\r\n\t\t.velocity(\"style\", \"display\", \"\")\r\n\t\t.then(function(elements) {\r\n\t\t\tassert.equal(elements.velocity(\"style\", \"display\"), \"block\", \"Display:'' was reset correctly.\");\r\n\r\n\t\t\tdone();\r\n\t\t});\r\n\r\n\tVelocity(getTarget(), {display: \"none\"}, {\r\n\t\tprogress: once(function(elements: VelocityResult) {\r\n\t\t\tassert.notEqual(elements.velocity(\"style\", \"display\"), \"none\", \"Display:'none' was not set immediately.\");\r\n\r\n\t\t\tdone();\r\n\t\t})\r\n\t}).then(function(elements) {\r\n\t\tassert.equal(elements.velocity(\"style\", \"display\"), \"none\", \"Display:'none' was set upon completion.\");\r\n\r\n\t\tdone();\r\n\t});\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Visibility\", function(assert) {\r\n\tvar done = assert.async(4);\r\n\r\n\tVelocity(getTarget(), \"style\", \"visibility\", \"hidden\")\r\n\t\t.velocity({visibility: \"visible\"}, {\r\n\t\t\tprogress: once(function(elements: VelocityResult) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"visibility\"), \"visible\", \"Visibility:'visible' was set immediately.\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t})\r\n\t\t});\r\n\r\n\tVelocity(getTarget(), \"style\", \"visibility\", \"hidden\")\r\n\t\t.velocity(\"style\", \"visibility\", \"\")\r\n\t\t.then(function(elements) {\r\n\t\t\t// NOTE: The test elements inherit \"hidden\", so while illogical it\r\n\t\t\t// is in fact correct.\r\n\t\t\tassert.equal(elements.velocity(\"style\", \"visibility\"), \"hidden\", \"Visibility:'' was reset correctly.\");\r\n\r\n\t\t\tdone();\r\n\t\t});\r\n\r\n\tVelocity(getTarget(), {visibility: \"hidden\"}, {\r\n\t\tprogress: once(function(elements: VelocityResult) {\r\n\t\t\tassert.notEqual(elements.velocity(\"style\", \"visibility\"), \"visible\", \"Visibility:'hidden' was not set immediately.\");\r\n\r\n\t\t\tdone();\r\n\t\t})\r\n\t}).then(function(elements) {\r\n\t\tassert.equal(elements.velocity(\"style\", \"visibility\"), \"hidden\", \"Visibility:'hidden' was set upon completion.\");\r\n\r\n\t\tdone();\r\n\t});\r\n});\r\n","///\r\n///\r\n///\r\n///\r\n///\r\n///\r\n///\r\n///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\ninterface QUnit {\r\n\ttodo(name: string, callback: (assert: Assert) => void): void;\r\n}\r\n\r\ninterface Assert {\r\n\tclose: {\r\n\t\t(actual: number, expected: number, maxDifference: number, message: string): void;\r\n\t\tpercent(actual: number, expected: number, maxPercentDifference: number, message: string): void;\r\n\t};\r\n\tnotClose: {\r\n\t\t(actual: number, expected: number, minDifference: number, message: string): void;\r\n\t\tpercent(actual: number, expected: number, minPercentDifference: number, message: string): void;\r\n\t};\r\n}\r\n\r\ninterface VelocityExtended {\r\n\t__count?: number;\r\n\t__start?: number;\r\n}\r\n\r\n// Needed tests:\r\n// - new stop behvaior\r\n// - e/p/o shorthands\r\n\r\nconst defaultStyles = {\r\n\topacity: 1,\r\n\twidth: 1,\r\n\theight: 1,\r\n\tmarginBottom: 1,\r\n\tcolorGreen: 200,\r\n\ttextShadowBlur: 3\r\n},\r\n\tdefaultProperties: VelocityProperties = {\r\n\t\topacity: String(defaultStyles.opacity / 2),\r\n\t\twidth: defaultStyles.width * 2 + \"px\",\r\n\t\theight: defaultStyles.height * 2 + \"px\"\r\n\t},\r\n\tdefaultOptions: VelocityOptions = {\r\n\t\tqueue: \"\",\r\n\t\tduration: 300,\r\n\t\teasing: \"swing\",\r\n\t\tbegin: null,\r\n\t\tcomplete: null,\r\n\t\tprogress: null,\r\n\t\tloop: false,\r\n\t\tdelay: 0,\r\n\t\tmobileHA: true\r\n\t},\r\n\tisMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),\r\n\tisAndroid = /Android/i.test(navigator.userAgent),\r\n\t$ = ((window as any).jQuery || (window as any).Zepto),\r\n\t$qunitStage = document.getElementById(\"qunit-stage\"),\r\n\tasyncCheckDuration = (defaultOptions.duration as number) / 2,\r\n\tcompleteCheckDuration = (defaultOptions.duration as number) * 2,\r\n\tIE = (function() {\r\n\t\tif ((document as any).documentMode) {\r\n\t\t\treturn (document as any).documentMode as number;\r\n\t\t} else {\r\n\t\t\tfor (var i = 7; i > 0; i--) {\r\n\t\t\t\tvar div = document.createElement(\"div\");\r\n\r\n\t\t\t\tdiv.innerHTML = \"\";\r\n\t\t\t\tif (div.getElementsByTagName(\"span\").length) {\r\n\t\t\t\t\tdiv = null;\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t\tdiv = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t})();\r\n\r\nlet targets: HTMLDivElement[] = [],\r\n\tasyncCount = 0;\r\n\r\nQUnit.config.reorder = false;\r\n\r\nfunction applyStartValues(element: HTMLElement, startValues: {[name: string]: string}) {\r\n\t$.each(startValues, function(property, startValue) {\r\n\t\telement.style[property] = startValue;\r\n\t});\r\n}\r\n\r\nfunction Data(element): ElementData {\r\n\treturn (element.jquery ? element[0] : element).velocityData;\r\n}\r\n\r\nfunction getNow(): number {\r\n\treturn performance && performance.now ? performance.now() : Date.now();\r\n}\r\n\r\nfunction getPropertyValue(element: HTMLElement, property: string): string {\r\n\treturn Velocity.CSS.getPropertyValue(element, property);\r\n}\r\n\r\nfunction getTarget(startValues?: {[name: string]: string}): HTMLDivElement {\r\n\tvar div = document.createElement(\"div\") as HTMLDivElement;\r\n\r\n\tdiv.className = \"target\";\r\n\tdiv.style.opacity = String(defaultStyles.opacity);\r\n\tdiv.style.color = \"rgb(125, \" + defaultStyles.colorGreen + \", 125)\";\r\n\tdiv.style.width = defaultStyles.width + \"px\";\r\n\tdiv.style.height = defaultStyles.height + \"px\";\r\n\tdiv.style.marginBottom = defaultStyles.marginBottom + \"px\";\r\n\tdiv.style.textShadow = \"0px 0px \" + defaultStyles.textShadowBlur + \"px red\";\r\n\t$qunitStage.appendChild(div);\r\n\ttargets.push(div);\r\n\tif (startValues) {\r\n\t\tapplyStartValues(div, startValues);\r\n\t}\r\n\treturn div;\r\n}\r\n\r\nfunction once(func): typeof func {\r\n\tvar done, result;\r\n\r\n\treturn function() {\r\n\t\tif (!done) {\r\n\t\t\tresult = func.apply(this, arguments);\r\n\t\t\tfunc = done = true; // Don't care about type, just let the GC collect if possible\r\n\t\t}\r\n\t\treturn result;\r\n\t};\r\n}\r\n\r\nfunction sleep(ms: number) {\r\n\treturn new Promise(resolve => setTimeout(resolve, ms));\r\n}\r\n\r\n/**\r\n * Create an asyn callback. Each callback must be independant of all others, and\r\n * gets it's own unique done() callback to use. This also requires a count of\r\n * the number of tests run, and the assert object used.\r\n * Call without any arguments to get a total count of tests requested.\r\n */\r\nfunction async(): number;\r\nfunction async(assert: Assert, count: number, callback: (done: () => void) => void): void;\r\nfunction async(assert?: Assert, count?: number, callback?: (done: () => void) => void): number {\r\n\tif (!assert) {\r\n\t\tconst count = asyncCount;\r\n\r\n\t\tasyncCount = 0;\r\n\t\treturn count;\r\n\t}\r\n\tconst done = assert.async(1);\r\n\r\n\tasyncCount += count;\r\n\tsetTimeout(function() {\r\n\t\tcallback(done);\r\n\t}, 1);\r\n}\r\n\r\nfunction isEmptyObject(variable): variable is {} {\r\n\tfor (let name in variable) {\r\n\t\tif (variable.hasOwnProperty(name)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nQUnit.testDone(function() {\r\n\ttry {\r\n\t\tdocument.querySelectorAll(\".velocity-animating\").velocity(\"stop\");\r\n\t} catch (e) {}\r\n\t// Free all targets requested by the current test.\r\n\twhile (targets.length) {\r\n\t\ttry {\r\n\t\t\t$qunitStage.removeChild(targets.pop());\r\n\t\t} catch (e) {}\r\n\t}\r\n\t// Ensure we have reset the test counter.\r\n\tasync();\r\n\t// Make sure Velocity goes back to defaults.\r\n\tVelocity.defaults.reset();\r\n});\r\n\r\n/* Cleanup */\r\nQUnit.done(function(details) {\r\n\t//\t$(\".velocity-animating\").velocity(\"stop\");\r\n\tconsole.log(\"Total: \", details.total, \" Failed: \", details.failed, \" Passed: \", details.passed, \" Runtime: \", details.runtime);\r\n});\r\n\r\n/* Helpful redirect for testing custom and parallel queues. */\r\n// var $div2 = $(\"#DataBody-PropertiesDummy\");\r\n// $.fn.velocity.defaults.duration = 1000;\r\n// $div2.velocity(\"scroll\", { queue: \"test\" })\r\n// $div2.velocity({width: 100}, { queue: \"test\" })\r\n// $div2.velocity({ borderWidth: 50 }, { queue: \"test\" })\r\n// $div2.velocity({height: 20}, { queue: \"test\" })\r\n// $div2.velocity({marginLeft: 200}, { queue: \"test\" })\r\n// $div2.velocity({paddingTop: 60});\r\n// $div2.velocity({marginTop: 100});\r\n// $div2.velocity({paddingRight: 40});\r\n// $div2.velocity({marginTop: 0})\r\n// $div2.dequeue(\"test\")\r\n"]} \ No newline at end of file +{"version":3,"file":"test.js","sourceRoot":"","sources":["src/1. Core/_module.ts","src/1. Core/Arguments.ts","src/1. Core/End Value Caching.ts","src/1. Core/End Value Setting.ts","src/1. Core/Start Value Calculation.ts","src/1. Core/Unit Calculation.ts","src/2. Option/_module.ts","src/2. Option/Option Begin.ts","src/2. Option/Option Complete.ts","src/2. Option/Option Delay.ts","src/2. Option/Option Easing.ts","src/2. Option/Option Fps Limit.ts","src/2. Option/Option Loop.ts","src/2. Option/Option Progress.ts","src/2. Option/Option Queue.ts","src/2. Option/Option Repeat.ts","src/2. Option/Option Speed.ts","src/2. Option/Option Sync.ts","src/3. Command/_module.ts","src/3. Command/Command Finish.ts","src/3. Command/Command Pause + Resume.ts","src/3. Command/Command Reverse.ts","src/3. Command/Command Scroll.ts","src/3. Command/Command Stop.ts","src/3. Command/Command Tween.ts","src/4. Feature/_module.ts","src/4. Feature/Feature Classname.ts","src/4. Feature/Feature Colors.ts","src/4. Feature/Feature Forcefeeding.ts","src/4. Feature/Feature Promises.ts","src/4. Feature/Feature Redirects.ts","src/4. Feature/Feature Value Functions.ts","src/5. UI Pack/_module.ts","src/5. UI Pack/Packaged Effect slideUp+Down.ts","src/5. UI Pack/UI Pack Call Options.ts","src/5. UI Pack/UI Pack Callbacks.ts","src/5. UI Pack/UI Pack In+Out.ts","src/5. UI Pack/UI Pack RegisterEffect.ts","src/5. UI Pack/UI Pack RunSequence.ts","src/6. Properties/_module.ts","src/6. Properties/Normalization property value reordering.ts","src/6. Properties/Property Display.ts","src/6. Properties/Property Visibility.ts","src/app.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;GAIG;AAEH,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;ACNrB,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,UAAS,MAAM;IACtC,IAAI,YAAY,GAAG,cAAY,CAAC,EAAE,aAAa;IAC9C,YAAY,GAAG,IAAI,EACnB,UAAU,GAAG,YAAY,EACzB,MAAsB,EACtB,WAAW,GAAoB;QAC9B,QAAQ,EAAE,GAAG;QACb,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,YAAY;KACtB,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAElB;;sBAEkB;IAElB,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,yDAAyD,CAAC,CAAC;IACpF,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,yDAAyD,CAAC,CAAC;IAExG,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAChE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,2EAA2E,CAAC,CAAC;IACxJ,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,yEAAyE,CAAC,CAAC;IAC7I,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,2EAA2E,CAAC,CAAC;IAC/I,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,yEAAyE,CAAC,CAAC;IAE7I,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,gEAAgE,CAAC,CAAC;IAEhJ,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAChE,MAAM,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,kEAAkE,CAAC,CAAC;IAEpJ,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,2EAA2E,CAAC,CAAC;IACxJ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,kBAAkB,EAAE,2EAA2E,CAAC,CAAC;IAEvK,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAC9E,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,6EAA6E,CAAC,CAAC;IAC1J,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,6EAA6E,CAAC,CAAC;IAE1J,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IAC1F,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,qFAAqF,CAAC,CAAC;IAClK,MAAM,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,qFAAqF,CAAC,CAAC;IACrK,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,qFAAqF,CAAC,CAAC;IAElK,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAC/D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,mEAAmE,CAAC,CAAC;IAExJ,QAAQ,CAAC,EAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,EAAC,CAAC,CAAC;IACzF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,mGAAmG,CAAC,CAAC;IAExL,QAAQ,CAAC,EAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAC,CAAC,CAAC;IAC9E,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,kGAAkG,CAAC,CAAC;IAEvL,+BAA+B;IAC/B,wEAAwE;IACxE,4FAA4F;IAC5F,4FAA4F;IAC5F,0FAA0F;IAE1F,+BAA+B;IAC/B,8DAA8D;IAC9D,4FAA4F;IAC5F,0FAA0F;IAE1F,+BAA+B;IAC/B,kEAAkE;IAClE,0FAA0F;IAC1F,4FAA4F;IAE5F,WAAW;IACX,gCAAgC;IAChC,0DAA0D;IAC1D,iHAAiH;IACjH,EAAE;IACF,gCAAgC;IAChC,iFAAiF;IACjF,gHAAgH;IAChH,EAAE;IACF,gCAAgC;IAChC,qFAAqF;IACrF,wGAAwG;IACxG,oGAAoG;IACpG,wGAAwG;IACxG,EAAE;IACF,gCAAgC;IAChC,qPAAqP;IACrP,oJAAoJ;IACpJ,IAAI;AACL,CAAC,CAAC,CAAC;ACpGH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAS,MAAM;IAC9C,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,aAAa,GAAG,EAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC;IAElD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjB,kHAAkH;IAClH,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;SACnD,IAAI,CAAC,UAAS,QAAQ;QACtB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,EAAE,mCAAmC,CAAC,CAAC;QAC1G,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,mCAAmC,CAAC,CAAC;QAE5G,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;IAEJ,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,CAAC;SACtC,QAAQ,CAAC,aAAa,CAAC;SACvB,IAAI,CAAC,UAAS,QAAQ;QACtB,2CAA2C;QAC3C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAC;QACrG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;QAEvG,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AC/BH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAS,MAAM;IAC9C,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,0BAA0B;IAC1B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,CAAC;SACtC,IAAI,CAAC,UAAS,QAAQ;QACtB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;QACjH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,iBAAiB,CAAC,OAAO,EAAE,gCAAgC,CAAC,CAAC;QAErH,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AClBH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,yBAAyB,EAAE,UAAS,MAAM;IACpD,IAAI,eAAe,GAAG;QACrB,WAAW,EAAE,MAAM;QACnB,MAAM,EAAE,OAAO;QACf,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,OAAO;QACnB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,OAAO;QAClB,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,MAAM;QACnB,eAAe,EAAE,cAAc;KAC/B,CAAC;IAEF,uDAAuD;IACvD,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACpC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,eAAe,CAAC,WAAW,EAAE,gDAAgD,CAAC,CAAC;IAC9H,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,eAAe,CAAC,eAAe,EAAE,4CAA4C,CAAC,CAAC;IAElI,mDAAmD;IACnD,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IACtC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,KAAY,CAAC,EAAE,wCAAwC,CAAC,CAAC;IAC3H,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,aAAa,CAAC,OAAc,CAAC,EAAE,wCAAwC,CAAC,CAAC;IAC/H,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,UAAiB,CAAC,EAAE,4CAA4C,CAAC,CAAC;IAEpI,wEAAwE;IACxE,IAAI,0BAA0B,GAAG,EAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAC,CAAC;IAC5F,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC3B,gBAAgB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC;IAC/C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,uCAAuC,CAAC,CAAC;IACjI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,uCAAuC,CAAC,CAAC;IACvH,4LAA4L;IAE5L,qEAAqE;IACrE,IAAI,wBAAwB,GAAG,EAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAC,EACxK,WAAW,GAAG,WAAW,CAAC,WAAW,EACrC,YAAY,GAAG,WAAW,CAAC,YAAY,EACvC,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC,EACvE,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAQ,CAAC,CAAC;IAEvF,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC3B,gBAAgB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;IAE7C,6KAA6K;IAC7K,wJAAwJ;IACxJ,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,EAAE,mCAAmC,CAAC,CAAC;IAChK,4KAA4K;IAC5K,wKAAwK;IACxK,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAkB,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAE/L,kCAAkC;IAClC,qLAAqL;IACrL,kLAAkL;IAClL,MAAM;IAEN,wEAAwE;IAExE,4BAA4B;IAC5B,IAAI,kBAAkB,GAAG,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC;IAC1C,IAAI,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAEnD,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACnD,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC;IAC1D,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;IACrC,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAE1C,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;IACrC,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IAEvC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAQ,CAAC,CAAC,EAAE,oCAAoC,CAAC,CAAC;AAC1N,CAAC,CAAC,CAAC;ACnFH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAS,MAAM;IAC7C,4EAA4E;IAC5E,4CAA4C;IAC5C,kCAAkC;IAClC,iCAAiC;IACjC,kCAAkC;IAClC,0BAA0B;IAC1B,EAAE;IACF,8BAA8B;IAC9B,gLAAgL;IAChL,0BAA0B;IAC1B,EAAE;IACF,qJAAqJ;IACrJ,+IAA+I;IAC/I,4JAA4J;IAC5J,qIAAqI;IACrI,EAAE;IACF,WAAW;IACX,0BAA0B;IAE1B,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;wBAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;wBAE5B,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,OAAO,EAAC,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;wBACnD,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAAhB,SAAgB,CAAC;wBACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,+DAA+D,CAAC,CAAC;wBAC1H,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;wBACjD,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAAhB,SAAgB,CAAC;wBACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,sDAAsD,CAAC,CAAC;wBAE/G,IAAI,EAAE,CAAC;;;;;KACP,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;wBAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;wBAE5B,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,OAAO,EAAC,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;wBACnD,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAAhB,SAAgB,CAAC;wBACjB,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;wBAC/C,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAAhB,SAAgB,CAAC;wBACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,4FAA4F,CAAC,CAAC;wBAErJ,IAAI,EAAE,CAAC;;;;;KACP,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;wBAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;wBAE5B,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,OAAO,EAAC,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;wBACnD,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAAhB,SAAgB,CAAC;wBACjB,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;wBAC7C,qBAAM,KAAK,CAAC,IAAI,CAAC,EAAA;;wBAAjB,SAAiB,CAAC;wBAClB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,sEAAsE,CAAC,CAAC;wBAE/H,IAAI,EAAE,CAAC;;;;;KACP,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;wBAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;wBAE5B,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;wBAC/C,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAAhB,SAAgB,CAAC;wBACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,+DAA+D,CAAC,CAAC;wBAC1H,QAAQ,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,EAAE,EAAC,QAAQ,EAAE,EAAE,EAAC,CAAC,CAAC;wBAC7C,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAAhB,SAAgB,CAAC;wBACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,+DAA+D,CAAC,CAAC;wBAExH,IAAI,EAAE,CAAC;;;;;KACP,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AC5EH;;;;GAIG;AAEH,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;ACNvB,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAS,MAAM;IAClC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAM,UAAU,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAE9C,QAAQ,CAAC,UAAU,EAAE,iBAAiB,EAAE;YACvC,QAAQ,EAAE,kBAAkB;YAC5B,KAAK,EAAE;gBACN,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,gCAAgC,CAAC,CAAC;gBAErE,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;ACtBH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,UAAS,MAAM;IACrC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAM,UAAU,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAE9C,QAAQ,CAAC,UAAU,EAAE,iBAAiB,EAAE;YACvC,QAAQ,EAAE,kBAAkB;YAC5B,QAAQ,EAAE;gBACT,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,gCAAgC,CAAC,CAAC;gBACrE,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;ACrBH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAS,MAAM;IAClC,IAAM,SAAS,GAAG,GAAG,CAAC;IAEtB,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAM,KAAK,GAAG,MAAM,EAAE,CAAC;QAEvB,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,cAAc,CAAC,QAAQ;YACjC,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,UAAS,QAAQ,EAAE,UAAU;gBACnC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,8CAA8C,CAAC,CAAC;gBAC9F,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAM,KAAK,GAAG,MAAM,EAAE,CAAC;QAEvB,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,cAAc,CAAC,QAAQ;YACjC,KAAK,EAAE,SAAS;SAChB,CAAC;aACA,QAAQ,CAAC,iBAAiB,EAAE;YAC5B,QAAQ,EAAE,cAAc,CAAC,QAAQ;YACjC,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,UAAS,QAAQ,EAAE,UAAU;gBACnC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,GAAI,cAAc,CAAC,QAAmB,EAAE,EAAE,EAAE,8CAA8C,CAAC,CAAC;gBAC1I,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;ACzCH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAS,MAAM;IACnC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC;YACJ,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC;QAC5D,CAAC;QAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACZ,OAAO,GAAG,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,wCAAwC,CAAC,CAAC;QAE7D,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC;YACJ,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,EAAC,MAAM,EAAE,CAAC,GAAU,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,CAAC;YAChF,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,EAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAC,CAAC,CAAC;QACrE,CAAC;QAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACZ,OAAO,GAAG,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,0CAA0C,CAAC,CAAC;QAE/D,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,8BAA8B;QAC9B,oFAAoF;QACpF,IAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClD,uBAAuB,GAAG,IAAI,EAC9B,qBAAqB,GAAG,CAAC,IAAI,CAAC;QAE/B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,UAAS,QAAQ,EAAE,SAAS;gBAClC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,qBAAqB,EAAE,KAAK,EAAE,uCAAuC,CAAC,CAAC;gBAE7I,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,kFAAkF;QAClF,IAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EACrC,0BAA0B,GAAG,IAAI,EACjC,wBAAwB,GAAG,KAAK,EAAE,uBAAuB;QACzD,2BAA2B,GAAG,GAAG,CAAC;QAEnC,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,GAAG;YACb,MAAM,EAAE,oBAAoB;YAC5B,KAAK,EAAE,UAAS,QAAQ,EAAE,SAAS;gBAClC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,wBAAwB,EAAE,EAAE,EAAE,wDAAwD,CAAC,CAAC;gBAEjK,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,2DAA2D;IAC3D,oCAAoC;IACpC,6CAA6C;IAC7C,iCAAiC;IACjC,0CAA0C;IAC1C,gIAAgI;IAChI,YAAY;IACZ,KAAK;IACL,MAAM;IACN,MAAM;IAEN,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,iFAAiF;QACjF,IAAM,eAAe,GAAG,CAAC,CAAC,CAAC,EAC1B,qBAAqB,GAAG,IAAI,EAC5B,mBAAmB,GAAG,IAAI,CAAC;QAE5B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,UAAS,QAAQ,EAAE,SAAS;gBAClC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,qCAAqC,CAAC,CAAC;gBACtI,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAC,EAAE;YAClD,QAAQ,EAAE,kBAAkB;YAC5B,KAAK,EAAE,UAAS,QAAQ;gBACvB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,wCAAwC,CAAC,CAAC;YAClG,CAAC;YACD,QAAQ,EAAE,IAAI,CAAC,UAAS,QAAwB;gBAC/C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,2CAA2C,CAAC,CAAC;YACrG,CAAC,CAAC;YACF,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,2CAA2C,CAAC,CAAC;gBAEpG,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAC,EAAE;YACpD,QAAQ,EAAE,kBAAkB;YAC5B,KAAK,EAAE,UAAS,QAAQ;gBACvB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,0CAA0C,CAAC,CAAC;YACpG,CAAC;YACD,QAAQ,EAAE,IAAI,CAAC,UAAS,QAAwB;gBAC/C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,6CAA6C,CAAC,CAAC;YACvG,CAAC,CAAC;YACF,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,6CAA6C,CAAC,CAAC;gBAEtG,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAC,EAAE;YAClD,QAAQ,EAAE,kBAAkB;YAC5B,KAAK,EAAE,UAAS,QAAQ;gBACvB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,wCAAwC,CAAC,CAAC;YAClG,CAAC;YACD,QAAQ,EAAE,IAAI,CAAC,UAAS,QAAwB;gBAC/C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,2CAA2C,CAAC,CAAC;YACrG,CAAC,CAAC;YACF,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,2CAA2C,CAAC,CAAC;gBAEpG,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;ACtJH,kCAAkC;AAClC;;;;GAIG;AAEH,iBAwBA;AAxBA,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,UAAM,MAAM;;;;;gBAElC,OAAO,GAAG,SAAS,EAAE,EACrB,UAAU,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC5B,SAAS,GAAG,UAAS,SAAS;oBAC7B,IAAI,OAAO,GAAG,CAAC,CAAC;oBAEhB,QAAQ,CAAC,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC;oBACvC,kDAAkD;oBAClD,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,8BAA8B,GAAG,SAAS,CAAC,CAAC;oBAChG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE;wBAC3C,QAAQ,EAAE,IAAI;wBACd,QAAQ,EAAE;4BACT,OAAO,EAAE,CAAC;wBACX,CAAC;qBACD,CAAC,CAAC,IAAI,CAAC,cAAM,OAAA,OAAO,EAAP,CAAO,CAAC,CAAC;gBACxB,CAAC,CAAC;gBAEH,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAE5B,CAAC,GAAG,CAAC;;;qBAAE,CAAA,CAAC,GAAG,UAAU,CAAC,MAAM,CAAA;gBACpC,KAAA,CAAA,KAAA,MAAM,CAAA,CAAC,KAAK,CAAA;gBAAS,qBAAM,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAA;;gBAAnD,cAAa,KAAK,GAAG,SAA8B,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,GAAG,KAAK,GAAG,uBAAuB,EAAC,CAAC;;;gBADlF,CAAC,EAAE,CAAA;;;;;KAG1C,CAAC,CAAC;AC9BH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,UAAS,MAAM;IACjC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAM,WAAW,GAAG,EAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAC,EACvD,KAAK,GAAG,MAAM,EAAE,CAAC;QAClB,IAAI,KAAK,GAAG,CAAC,EACZ,QAAQ,GAAG,CAAC,EACZ,IAAI,GAAG,CAAC,EACR,mBAAmB,GAAG,CAAC,CAAC;QAEzB,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,KAAK,EAAE,UAAS,QAAQ,EAAE,SAAS;gBAClC,KAAK,EAAE,CAAC;YACT,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU;gBACzE,EAAE,CAAC,CAAC,mBAAmB,GAAG,eAAe,CAAC,CAAC,CAAC;oBAC3C,IAAI,EAAE,CAAC;gBACR,CAAC;gBACD,mBAAmB,GAAG,eAAe,CAAC;YACvC,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ,EAAE,SAAS;gBACrC,QAAQ,EAAE,CAAC;YACZ,CAAC;SACD,CAAC,CAAC,IAAI,CAAC;YACP,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,kCAAkC,CAAC,CAAC;YAC3D,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,0EAA0E,CAAC,CAAC;YACzH,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE,4CAA4C,CAAC,CAAC;YACpI,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,qCAAqC,CAAC,CAAC;YAEjE,IAAI,EAAE,CAAC;QACR,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AC3CH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,UAAS,MAAM;IACrC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAM,OAAO,GAAG,SAAS,EAAE,CAAC;QAE5B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE;YACpC,QAAQ,EAAE,kBAAkB;YAC5B,QAAQ,EAAE,IAAI,CAAC,UAAS,QAAQ,EAAE,eAAe,EAAE,WAAW;gBAC7D,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,gCAAgC,CAAC,CAAC;gBACxE,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,wCAAwC,CAAC,CAAC;gBAC5E,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,EAAE,IAAI,EAAE,yCAAyC,CAAC,CAAC;gBAC5G,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,kBAAkB,GAAG,EAAE,EAAE,IAAI,EAAE,qCAAqC,CAAC,CAAC;gBAEjG,IAAI,EAAE,CAAC;YACR,CAAC,CAAC;SACF,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;ACzBH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAS,MAAM;IAClC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,SAAS,GAAG,QAAQ,EACpB,OAAO,GAAG,SAAS,EAAE,EACrB,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,sBAAsB;IACrE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EACpB,KAAc,EACd,KAAc,EACd,KAAc,CAAC;IAEhB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC,kBAAkB;IAEhG,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE;QACnC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE;YACN,KAAK,GAAG,IAAI,CAAC;QACd,CAAC;QACD,QAAQ,EAAE;YACT,KAAK,GAAG,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,uCAAuC,CAAC,CAAC;YAC3D,IAAI,EAAE,CAAC;QACR,CAAC;KACD,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,2BAA2B,CAAC,CAAC,CAAC,8BAA8B;IAE/G,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE;QACnC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE;YACN,KAAK,GAAG,IAAI,CAAC;YACb,MAAM,CAAC,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,sCAAsC,CAAC,CAAC;YACnE,IAAI,EAAE,CAAC;QACR,CAAC;QACD,QAAQ,EAAE;YACT,KAAK,GAAG,KAAK,CAAC;QACf,CAAC;KACD,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,+CAA+C;IAE5G,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE;QACnC,KAAK,EAAE;YACN,KAAK,GAAG,IAAI,CAAC;YACb,MAAM,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,EAAE,+CAA+C,CAAC,CAAC;YAC3E,IAAI,EAAE,CAAC;QACR,CAAC;QACD,QAAQ,EAAE;YACT,KAAK,GAAG,KAAK,CAAC;QACf,CAAC;KACD,CAAC,CAAC;IAEH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE;QACnC,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE;YACN,MAAM,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,EAAE,2CAA2C,CAAC,CAAC;YACvE,IAAI,EAAE,CAAC;QACR,CAAC;KACD,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;ACjEH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAS,MAAM;IACnC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,IAAM,WAAW,GAAG,EAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAC,EACzD,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpB,IAAI,KAAK,GAAG,CAAC,EACZ,QAAQ,GAAG,CAAC,EACZ,MAAM,GAAG,CAAC,CAAC;QAEZ,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,KAAK,EAAE,UAAS,QAAQ,EAAE,SAAS;gBAClC,KAAK,EAAE,CAAC;YACT,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU;gBACzE,EAAE,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC3B,MAAM,EAAE,CAAC;gBACV,CAAC;YACF,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ,EAAE,SAAS;gBACrC,QAAQ,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,kCAAkC,CAAC,CAAC;gBAC3D,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,qEAAqE,CAAC,CAAC;gBACpH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,2CAA2C,CAAC,CAAC;gBACzL,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,qCAAqC,CAAC,CAAC;gBACjE,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;ACvCH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAS,MAAM;IAClC,IAAM,KAAK,GAAG,GAAG,EAChB,QAAQ,GAAG,GAAG,EACd,UAAU,GAAG,MAAM,EAAE,CAAC;IAEvB,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;QAC5B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,UAAS,QAAQ;gBACvB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,qCAAqC,CAAC,CAAC;gBAEtG,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,UAAS,QAAQ;gBACvB,QAAQ,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC;YAC7B,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,IAAM,MAAM,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EACzC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;gBAEzB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,uDAAuD,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC;gBAE7I,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,UAAS,QAAQ;gBACvB,QAAQ,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC;YAC7B,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,IAAM,MAAM,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EACzC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;gBAEzB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,qDAAqD,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC;gBAE3I,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,UAAS,QAAQ;gBACvB,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC;YAC/B,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,IAAM,MAAM,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EACzC,QAAQ,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBAEnC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,sDAAsD,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC;gBAE5I,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,CAAC,KAAK;YACb,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,UAAS,QAAQ;gBACvB,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC;YAC/B,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,IAAM,MAAM,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EACzC,QAAQ,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBAEnC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,6DAA6D,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC;gBAEnJ,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,GAAG;YACV,KAAK,EAAE,UAAS,QAAQ;gBACvB,QAAQ,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC;YAC7B,CAAC;YACD,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,IAAM,MAAM,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EACzC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;gBAEzB,oGAAoG;gBACpG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,uDAAuD,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC;gBAE7I,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;YACxC,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,UAAS,QAAQ,EAAE,eAAe;gBAC3C,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;oBACvB,QAAQ,CAAC,OAAO,GAAG,eAAe,CAAC;oBACnC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;gBACtB,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACP,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,8CAA8C,CAAC,CAAC;oBAChG,QAAQ;yBACN,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,gCAAgC;yBAC/D,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAEnB,IAAI,EAAE,CAAC;gBACR,CAAC;YACF,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;ACzIH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,UAAS,MAAM;IACjC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;wBAC7B,OAAO,GAAG,SAAS,EAAE,EAC1B,UAAU,GAAG,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;wBAC9C,QAAQ,GAAG,KAAK,CAAC;wBAErB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE;4BACpC,QAAQ,EAAE,GAAG;4BACb,QAAQ,EAAE;gCACT,QAAQ,GAAG,IAAI,CAAC;4BACjB,CAAC;yBACD,CAAC,CAAC;wBACH,QAAQ,CAAC,UAAU,EAAE,iBAAiB,EAAE;4BACvC,IAAI,EAAE,KAAK;4BACX,QAAQ,EAAE,GAAG;yBACb,CAAC,CAAC;wBACH,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAAhB,SAAgB,CAAC;wBACjB,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,oDAAoD,CAAC,CAAC;wBAE7E,IAAI,EAAE,CAAC;;;;;KACP,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;gBAC7B,OAAO,GAAG,SAAS,EAAE,EAC1B,UAAU,GAAG,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC9C,QAAQ,GAAG,KAAK,CAAC;gBAErB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE;oBACpC,QAAQ,EAAE,GAAG;oBACb,QAAQ,EAAE;wBACT,QAAQ,GAAG,IAAI,CAAC;oBACjB,CAAC;iBACD,CAAC,CAAC;gBACH,QAAQ,CAAC,UAAU,EAAE,iBAAiB,EAAE;oBACvC,IAAI,EAAE,IAAI;oBACV,QAAQ,EAAE,GAAG;oBACb,KAAK,EAAE;wBACN,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,6CAA6C,CAAC,CAAC;wBAEnE,IAAI,EAAE,CAAC;oBACR,CAAC;iBACD,CAAC,CAAC;;;;KACH,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;ACpDH;;;;GAIG;AAEH,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;ACNxB,kCAAkC;AAClC;;;;GAIG;AAEH,iBAkGA;AAlGA,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAO,MAAM;;QACjC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;YAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;YAChC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,oEAAoE,CAAC,CAAC;YAEtF,IAAI,EAAE,CAAC;QACR,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;YAC7B,IAAM,OAAO,GAAG,SAAS,EAAE,CAAC;YAE5B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;YACrD,QAAQ,CAAC,OAAO,EAAE,EAAC,GAAG,EAAE,CAAC,EAAC,EAAE,cAAc,CAAC,CAAC;YAC5C,QAAQ,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,EAAE,cAAc,CAAC,CAAC;YAC9C,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC5B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,iEAAiE,CAAC,CAAC;YAEnF,IAAI,EAAE,CAAC;QACR,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;4BAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;4BACxB,SAAS,GAAG,KAAK,EACpB,SAAS,GAAG,KAAK,CAAC;4BAEnB,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;gCACpC,KAAK,EAAE,OAAO;gCACd,QAAQ,EAAE,cAAO,SAAS,GAAG,IAAI,CAAA,CAAA,CAAC;6BAClC,CAAC,CAAC;4BACH,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;gCACpC,KAAK,EAAE,OAAO;gCACd,QAAQ,EAAE,cAAO,SAAS,GAAG,IAAI,CAAA,CAAA,CAAC;6BAClC,CAAC,CAAC;4BACH,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;4BACrC,qBAAM,KAAK,CAAC,cAAc,CAAC,QAAkB,GAAG,CAAC,CAAC,EAAA;;4BAAlD,SAAkD,CAAC;4BACnD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,sCAAsC,CAAC,CAAC;4BAC7D,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,0CAA0C,CAAC,CAAC;4BAEpE,IAAI,EAAE,CAAC;;;;;SACP,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;4BAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;4BACxB,KAAK,GAAG,KAAK,EAChB,QAAQ,GAAG,KAAK,CAAC;4BAElB,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;gCACpC,KAAK,EAAE,cAAO,KAAK,GAAG,IAAI,CAAA,CAAA,CAAC;gCAC3B,QAAQ,EAAE,cAAO,QAAQ,GAAG,IAAI,CAAA,CAAA,CAAC;6BACjC,CAAC,CAAC;4BACH,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;4BAAhB,SAAgB,CAAC;4BACjB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;4BAC5B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,gDAAgD,CAAC,CAAC;4BACnE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,mDAAmD,CAAC,CAAC;4BACzE,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,sCAAsC,CAAC,CAAC;4BAEhG,IAAI,EAAE,CAAC;;;;;SACP,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;4BAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;4BACxB,KAAK,GAAG,KAAK,EAChB,QAAQ,GAAG,KAAK,CAAC;4BAElB,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;gCACpC,KAAK,EAAE,IAAI;gCACX,KAAK,EAAE,cAAO,KAAK,GAAG,IAAI,CAAA,CAAA,CAAC;gCAC3B,QAAQ,EAAE,cAAO,QAAQ,GAAG,IAAI,CAAA,CAAA,CAAC;6BACjC,CAAC,CAAC;4BACH,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;4BAAhB,SAAgB,CAAC;4BACjB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;4BAC5B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;4BAChE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,gDAAgD,CAAC,CAAC;4BACtE,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,wDAAwD,CAAC,CAAC;4BAElH,IAAI,EAAE,CAAC;;;;;SACP,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;oBAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;oBAE5B,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC;yBAC7B,QAAQ,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC;yBACtB,QAAQ,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;yBACzB,QAAQ,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;yBACzB,QAAQ,CAAC,EAAC,OAAO,EAAE,GAAG,EAAC,CAAC,CAAC;oBAC3B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,0CAA0C,CAAC,CAAC;oBACpG,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,0CAA0C,CAAC,CAAC;oBACpG,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;oBAClC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,wCAAwC,CAAC,CAAC;oBAEpG,IAAI,EAAE,CAAC;;;;SACP,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;;;KACvB,CAAC,CAAC;ACxGH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAe,MAAM;;;YACjD,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;gBAC7B,IAAM,OAAO,GAAG,SAAS,EAAE,CAAC;gBAE5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,8EAA8E,CAAC,CAAC;gBAChG,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC5B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,+EAA+E,CAAC,CAAC;gBAEjG,IAAI,EAAE,CAAC;YACR,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;gCACxB,QAAQ,GAAG,KAAK,CAAC;gCAErB,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,EAAC,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAO,QAAQ,GAAG,IAAI,CAAC,CAAA,CAAC,EAAC,CAAC,CAAC;gCACrF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gCAC3B,qBAAM,KAAK,CAAC,EAAE,CAAC,EAAA;;gCAAf,SAAe,CAAC;gCAChB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,uCAAuC,CAAC,CAAC;gCACjG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,yCAAyC,CAAC,CAAC;gCAClE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gCAC5B,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;gCAAhB,SAAgB,CAAC;gCACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,qCAAqC,CAAC,CAAC;gCAC/F,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,oCAAoC,CAAC,CAAC;gCAE1D,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;gCAE5B,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,EAAC,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC,CAAC,CAAC;gCAC7D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gCAC3B,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;gCAAhB,SAAgB,CAAC;gCACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,+CAA+C,CAAC,CAAC;gCACzG,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gCAC5B,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;gCAAhB,SAAgB,CAAC;gCACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,gDAAgD,CAAC,CAAC;gCAC1G,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;gCAAhB,SAAgB,CAAC;gCACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,6CAA6C,CAAC,CAAC;gCAEvG,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;gCAE5B,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,EAAC,EAAE,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAC,CAAC,CAAC;gCAChE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gCAC1B,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;gCAAhB,SAAgB,CAAC;gCACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,+BAA+B,CAAC,CAAC;gCAEzF,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;gCAE5B,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC;qCAC7B,QAAQ,CAAC,OAAO,CAAC,CAAC;gCACpB,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;gCAAhB,SAAgB,CAAC;gCACjB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,2CAA2C,CAAC,CAAC;gCAErG,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,wDAAwD;YAExD,iDAAiD;YACjD,8BAA8B;YAC9B,qDAAqD;YACrD,EAAE;YACF,yBAAyB;YACzB,EAAE;YACF,oBAAoB;YACpB,+BAA+B;YAC/B,oCAAoC;YACpC,kBAAkB;YAClB,qBAAqB;YACrB,iBAAiB;YACjB,+BAA+B;YAC/B,0GAA0G;YAC1G,KAAK;YACL,MAAM;YACN,EAAE;YACF,kCAAkC;YAClC,kBAAkB;YAClB,qBAAqB;YACrB,+BAA+B;YAC/B,gGAAgG;YAChG,KAAK;YACL,MAAM;YACN,EAAE;YACF,oBAAoB;YACpB,EAAE;YACF,oBAAoB;YACpB,gCAAgC;YAChC,oBAAoB;YAEpB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;;;;CACvB,CAAC,CAAC;AC5GH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,UAAS,MAAM;IACpC,IAAI,OAAO,GAAG,SAAS,EAAE,EACxB,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAC9C,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE5C,EAAE,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC;QACnB,mDAAmD;QACnD,KAAK,GAAG,KAAK,CAAC;IACf,CAAC;IACD,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE;YACpC,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,iBAAiB,CAAC,OAAO,EAAE,sCAAsC,GAAG,iBAAiB,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;gBAC5J,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,KAAK,EAAE,sCAAsC,GAAG,iBAAiB,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;gBAEtJ,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE;YAC5B,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,uCAAuC,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC;gBACzH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,uCAAuC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;gBAEnH,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;QAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE;YAC5B,QAAQ,EAAE,UAAS,QAAQ;gBAC1B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,iBAAiB,CAAC,OAAO,EAAE,+CAA+C,GAAG,iBAAiB,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;gBACrK,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,KAAK,EAAE,+CAA+C,GAAG,iBAAiB,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;gBAE/J,IAAI,EAAE,CAAC;YACR,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AClDH,kCAAkC;AAClC;;;;GAIG;AAEH,uBAAuB;AACvB,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAS,MAAM;IAC5C,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACxB,QAAQ,GAAG,CAAC,CAAC,UAAU,CAAC,EACxB,cAAc,GAAG,CAAC,CAAC,sEAAsE,CAAC,EAC1F,cAAc,GAAG,CAAC,CAAC,uEAAuE,CAAC,EAC3F,YAAY,GAAG,CAAC,EAAE,CAAC;IAErB,cAAc;SACX,GAAG,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAC,CAAC;SACzE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvB,cAAc;SACX,GAAG,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAC,CAAC;SAClF,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvB,cAAc;SACX,QAAQ,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE;YAClE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,yCAAyC,CAAC,CAAC;YAE7L,IAAI,EAAE,CAAC;QACR,CAAC;KACD,CAAC;SACD,QAAQ,CAAC,EAAC,OAAO,EAAE,GAAG,EAAC,EAAE;QACzB,QAAQ;aACL,QAAQ,CAAC,EAAC,OAAO,EAAE,GAAG,EAAC,EAAE,GAAG,CAAC;aAC7B,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC;aACvB,QAAQ,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,EAAE,GAAG,EAAE;YAC5B,qHAAqH;YACrH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,8BAA8B,CAAC,CAAC;YAE5K,IAAI,EAAE,CAAC;YAEP,0BAA0B;YAE1B,cAAc;iBACX,QAAQ,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE;oBAC7E,sIAAsI;oBACtI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,0CAA0C,CAAC,CAAC;oBAEhM,IAAI,EAAE,CAAC;gBACR,CAAC;aACD,CAAC;iBACD,QAAQ,CAAC,EAAC,OAAO,EAAE,GAAG,EAAC,EAAE;gBACzB,QAAQ;qBACL,QAAQ,CAAC,EAAC,OAAO,EAAE,GAAG,EAAC,EAAE,GAAG,CAAC;qBAC7B,QAAQ,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC;qBAC9C,QAAQ,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,EAAE,GAAG,EAAE;oBAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,+BAA+B,CAAC,CAAC;oBAE/K,IAAI,EAAE,CAAC;gBACR,CAAC,CAAC,CAAC;YACN,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,wBAAwB;AACxB,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAS,MAAM;IAC7C,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACxB,cAAc,GAAG,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkCjB,CAAC,CAAC;IAEN,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjB,cAAc;SACX,GAAG,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAC,CAAC;SAC1H,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvB,0CAA0C;IAC1C,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAC,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE;YAC3F,4CAA4C;YAC5C,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAC,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE;oBAC9F,iCAAiC;oBACjC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;oBAEhB,cAAc,CAAC,MAAM,EAAE,CAAC;oBAExB,IAAI,cAAc,GAAG,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA6BnB,CAAC,CAAC;oBAEN,cAAc;yBACX,GAAG,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAC,CAAC;yBAC1H,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oBAEvB,0CAA0C;oBAC1C,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE;4BACtG,4CAA4C;4BAC5C,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE;oCACzG,iCAAiC;oCACjC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;oCAEhB,cAAc,CAAC,MAAM,EAAE,CAAC;oCAExB,IAAI,EAAE,CAAC;gCACR,CAAC;6BACD,CAAC,CAAC;wBACJ,CAAC;qBACD,CAAC,CAAC;oBAEH,IAAI,EAAE,CAAC;gBACR,CAAC;aACD,CAAC,CAAC;QACJ,CAAC;KACD,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AC5KH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,UAAe,MAAM;;;YACvC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;gBAC7B,QAAQ,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;gBAC9B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,oEAAoE,CAAC,CAAC;gBAEtF,IAAI,EAAE,CAAC;YACR,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAS,IAAI;gBAC7B,IAAM,OAAO,GAAG,SAAS,EAAE,CAAC;gBAE5B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;gBACrD,QAAQ,CAAC,OAAO,EAAE,EAAC,GAAG,EAAE,CAAC,EAAC,EAAE,cAAc,CAAC,CAAC;gBAC5C,QAAQ,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,EAAE,cAAc,CAAC,CAAC;gBAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC1B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,iEAAiE,CAAC,CAAC;gBAEnF,IAAI,EAAE,CAAC;YACR,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,EAC1B,YAAY,GAAG,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gCAErD,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE,cAAc,CAAC,CAAC;gCACrD,qBAAM,KAAK,CAAC,cAAc,CAAC,QAAkB,GAAG,CAAC,CAAC,EAAA;;gCAAlD,SAAkD,CAAC;gCACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gCAC1B,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,+BAA+B,CAAC,CAAC;gCAEnI,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;gCACxB,KAAK,GAAG,KAAK,CAAC;gCAElB,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;oCACpC,KAAK,EAAE,IAAI;oCACX,KAAK,EAAE,cAAO,KAAK,GAAG,IAAI,CAAA,CAAA,CAAC;iCAC3B,CAAC,CAAC;gCACH,qBAAM,KAAK,CAAC,GAAG,CAAC,EAAA;;gCAAhB,SAAgB,CAAC;gCACjB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gCAC1B,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,mCAAmC,CAAC,CAAC;gCAEzD,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;gCACxB,SAAS,GAAG,KAAK,EACpB,SAAS,GAAG,KAAK,CAAC;gCAEnB,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;oCACpC,KAAK,EAAE,OAAO;oCACd,QAAQ,EAAE,cAAO,SAAS,GAAG,IAAI,CAAA,CAAA,CAAC;iCAClC,CAAC,CAAC;gCACH,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;oCACpC,KAAK,EAAE,OAAO;oCACd,QAAQ,EAAE,cAAO,SAAS,GAAG,IAAI,CAAA,CAAA,CAAC;iCAClC,CAAC,CAAC;gCACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gCACnC,qBAAM,KAAK,CAAC,cAAc,CAAC,QAAkB,GAAG,CAAC,CAAC,EAAA;;gCAAlD,SAAkD,CAAC;gCACnD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,oCAAoC,CAAC,CAAC;gCAC3D,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,wCAAwC,CAAC,CAAC;gCAElE,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,CAAC;gCACxB,MAAM,GAAG,KAAK,EACjB,MAAM,GAAG,KAAK,CAAC;gCAEhB,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;oCACpC,KAAK,EAAE,cAAO,MAAM,GAAG,IAAI,CAAA,CAAA,CAAC;iCAC5B,CAAC,CAAC;gCACH,QAAQ,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC,EAAE;oCACnC,KAAK,EAAE,cAAO,MAAM,GAAG,IAAI,CAAA,CAAA,CAAC;iCAC5B,CAAC,CAAC;gCACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gCAChC,qBAAM,KAAK,CAAC,cAAc,CAAC,QAAkB,GAAG,CAAC,CAAC,EAAA;;gCAAlD,SAAkD,CAAC;gCACnD,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,EAAE,mCAAmC,CAAC,CAAC;gCAEpE,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAe,IAAI;;;;;;gCAC7B,OAAO,GAAG,SAAS,EAAE,EAC1B,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;oCAC3C,KAAK,EAAE,MAAM;oCACb,KAAK,EAAE,cAAO,MAAM,GAAG,IAAI,CAAA,CAAA,CAAC;iCAC5B,CAAC,CAAC;gCACA,MAAM,GAAG,KAAK,EACjB,MAAM,GAAG,KAAK,CAAC;gCAEhB,QAAQ,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE;oCACpC,KAAK,EAAE,cAAO,MAAM,GAAG,IAAI,CAAA,CAAA,CAAC;iCAC5B,CAAC,CAAC;gCACH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gCACtB,qBAAM,KAAK,CAAC,cAAc,CAAC,QAAkB,GAAG,CAAC,CAAC,EAAA;;gCAAlD,SAAkD,CAAC;gCACnD,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,2DAA2D,CAAC,CAAC;gCAClF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,kEAAkE,CAAC,CAAC;gCAEtF,IAAI,EAAE,CAAC;;;;;aACP,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;;;;CACvB,CAAC,CAAC;AClHH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAS,MAAM;IAClC,IAAI,QAAQ,GAAG,SAAS,EAAE,EACzB,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;IAEvC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAElB,MAAM,CAAC,MAAM,CAAC,cAAQ,QAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA,CAAA,CAAC,EAAE,0CAA0C,CAAC,CAAC;IACzG,MAAM,CAAC,MAAM,CAAC,cAAQ,QAAgB,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA,CAAA,CAAC,EAAE,+CAA+C,CAAC,CAAC;IACpI,MAAM,CAAC,MAAM,CAAC,cAAQ,QAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA,CAAA,CAAC,EAAE,sCAAsC,CAAC,CAAC;IAC1G,MAAM,CAAC,MAAM,CAAC,cAAQ,QAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA,CAAA,CAAC,EAAE,iEAAiE,CAAC,CAAC;IAEtI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,gDAAgD,CAAC,CAAC;IACpI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,oDAAoD,CAAC,CAAC;IACzI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,uDAAuD,CAAC,CAAC;IAClI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,yCAAyC,CAAC,CAAC;IAE9F,MAAM,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,4CAA4C,CAAC,CAAC;IAC3I,MAAM,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,4CAA4C,CAAC,CAAC;IAC3I,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,EAAE,QAAQ,CAAC,EAAE,+CAA+C,CAAC,CAAC;AAChM,CAAC,CAAC,CAAC;AC1BH;;;;GAIG;AAEH,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;ACNxB,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,gCAAgC,EAAE,UAAS,MAAM;IAC3D,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE;QACxC,KAAK,EAAE,UAAS,QAAQ;YACvB,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACtF,CAAC;QACD,QAAQ,EAAE,UAAS,QAAQ;YAC1B,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;QACzF,CAAC;KACD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC,CAAC,CAAC;AClBH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,UAAS,MAAM;IAChD,IAAI,OAAO,GAAG,SAAS,EAAE,CAAC;IAE1B,QAAQ,CAAC,OAAO,EAAE,EAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAC,CAAC,CAAC;IAErF,wFAAwF;IACxF,0FAA0F;IAC1F,yFAAyF;IACzF,uFAAuF;IACvF,4FAA4F;IAC5F,+FAA+F;IAC/F,6FAA6F;IAC7F,iFAAiF;IACjF,oFAAoF;IACpF,mFAAmF;AACpF,CAAC,CAAC,CAAC;ACtBH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,UAAS,MAAM;IACzC,gIAAgI;IAChI,IAAI,cAAc,GAAG,MAAM,EAC1B,kBAAkB,GAAG,MAAM,EAC3B,eAAe,GAAG,MAAM,CAAC;IAE1B,IAAI,OAAO,GAAG,SAAS,EAAE,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE;QACjB,KAAK,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC;QACtC,MAAM,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC;QAC9B,OAAO,EAAE,CAAC,iBAAiB,CAAC,OAAc,EAAE,YAAY,CAAC;KACzD,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE,oCAAoC,CAAC,CAAC;IAC9G,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,eAAe,CAAC,EAAE,oCAAoC,CAAC,CAAC;IAC5G,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,8CAA8C,CAAC,CAAC;AAClH,CAAC,CAAC,CAAC;ACvBH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,UAAS,MAAM;IACrC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,MAAsB,EACtB,KAAK,GAAG,MAAM,EAAE,CAAC;IAElB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjB;;4BAEwB;IAEvB,QAAgB,EAAE,CAAC,IAAI,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,oDAAoD,CAAC,CAAC;IAC1E,CAAC,EAAE;QACF,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,oDAAoD,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,QAAQ,CAAC,SAAS,EAAS,CAAC,CAAC,IAAI,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,qDAAqD,CAAC,CAAC;IAC3E,CAAC,EAAE;QACF,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,qDAAqD,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;QAC9B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,4DAA4D,CAAC,CAAC;IAC/E,CAAC,EAAE;QACF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,4DAA4D,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;QACvD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,uEAAuE,CAAC,CAAC;IAC1F,CAAC,EAAE;QACF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,uEAAuE,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC;QAC7D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,yDAAyD,CAAC,CAAC;IAC5E,CAAC,EAAE;QACF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,yDAAyD,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;IAClE,MAAM,CAAC,IAAI,CAAC,UAAS,QAAQ;QAC5B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,qEAAqE,CAAC,CAAC;IACzG,CAAC,EAAE;QACF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,qEAAqE,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,UAAS,QAAQ;QACxD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,GAAI,cAAc,CAAC,QAAmB,EAAE,4CAA4C,CAAC,CAAC;IACrH,CAAC,EAAE;QACF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,4CAA4C,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,GAAG,QAAQ,CAAC,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;IACjF,MAAM,CAAC,IAAI,CAAC,UAAS,QAAQ;QAC5B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,wEAAwE,CAAC,CAAC;IAC5G,CAAC,EAAE;QACF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,wEAAwE,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,IAAI,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;IAEpE,IAAI,CAAC,IAAI,CAAC;QACT,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,GAAI,cAAc,CAAC,QAAmB,EAAE,0CAA0C,CAAC,CAAC;IAC/G,CAAC,EAAE;QACF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,0CAA0C,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AC5EH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,UAAS,MAAM;IACtC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,EACtB,eAAe,GAAG,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;IAEpC,CAAE,MAAc,CAAC,MAAM,IAAK,MAAc,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,UAAS,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc;QAC5I,EAAE,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;YAClE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,mCAAmC,CAAC,CAAC;YAChF,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,kCAAkC,CAAC,CAAC;YAClE,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,oCAAoC,CAAC,CAAC;YAEtE,IAAI,EAAE,CAAC;QACR,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;YAClE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,mCAAmC,CAAC,CAAC;YAChF,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,kCAAkC,CAAC,CAAC;YAClE,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,oCAAoC,CAAC,CAAC;YAEtE,IAAI,EAAE,CAAC;QACR,CAAC;IACF,CAAC,CAAC;IAEF,QAAQ,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC;AChCH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAS,MAAM;IAC5C,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,IAAI,QAAQ,GAAG,SAAS,EAAE,EACzB,QAAQ,GAAG,SAAS,EAAE,CAAC;IAExB,QAAQ,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;QAC9B,KAAK,EAAE,UAAS,CAAC,EAAE,KAAK;YACvB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,SAAS,CAAC;QACpC,CAAC;KACD,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,SAAgB,CAAC,GAAG,CAAC,EAAE,oCAAoC,CAAC,CAAC;IACjH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,SAAgB,CAAC,EAAE,oCAAoC,CAAC,CAAC;AAC9G,CAAC,CAAC,CAAC;ACrBH;;;;GAIG;AAEH,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;ACNxB,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,+BAA+B,EAAE,UAAS,MAAM;IAC1D,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,EACtB,aAAa,GAAG;QACf,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,OAAO;KACnB,CAAC;IAEH,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;IAC/C,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC;IAErD,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE;QAC/B,KAAK,EAAE,UAAS,QAAQ;YACvB,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,qCAAqC,CAAC,CAAC;YAE9E,IAAI,EAAE,CAAC;QACR,CAAC;QACD,QAAQ,EAAE,UAAS,QAAQ;YAC1B,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,wCAAwC,CAAC,CAAC;YACjF,0JAA0J;YAC1J,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC;YAChG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAC;YAE5H,IAAI,EAAE,CAAC;QACR,CAAC;QACD,+BAA+B;QAC/B,4EAA4E;QAC5E,EAAE;QACF,WAAW;KACX,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE;QAC7B,KAAK,EAAE,UAAS,QAAQ;YACvB,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,mCAAmC,CAAC,CAAC;YAE5E,IAAI,EAAE,CAAC;QACR,CAAC;QACD,QAAQ,EAAE,UAAS,QAAQ;YAC1B,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,sCAAsC,CAAC,CAAC;YAC/E,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,+BAA+B,CAAC,CAAC;YACrG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC;YAChG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAC;YAE5H,IAAI,EAAE,CAAC;QACR,CAAC;QACD,+BAA+B;QAC/B,0EAA0E;QAC1E,EAAE;QACF,WAAW;KACX,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AC1DH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,UAAS,MAAM;IACzC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACxB,cAAc,GAAG;QAChB,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,cAAc,CAAC,QAAQ;QACjC,MAAM,EAAE,QAAQ,CAAC,qBAAqB;KACtC,EACD,QAAQ,GAAG,SAAS,EAAE,CAAC;IAEzB,mBAAmB;IACnB,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,EAAE,cAAc,CAAC,CAAC;IAE7D,UAAU,CAAC;QACV,oFAAoF;QACtF,mGAAmG;QACnG,oHAAoH;QACpH,2GAA2G;QAEzG,IAAI,EAAE,CAAC;IACR,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAE1B,IAAI,cAAc,GAAG;QACpB,OAAO,EAAE,GAAG;QACZ,QAAQ,EAAE,cAAc,CAAC,QAAQ;QACjC,SAAS,EAAE,IAAI;KACf,CAAC;IAEF,IAAI,QAAQ,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACvD,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,EAAE,cAAc,CAAC,CAAC;IAE7D,UAAU,CAAC;QACZ,qHAAqH;QACrH,qHAAqH;QACrH,qHAAqH;QAEnH,IAAI,EAAE,CAAC;IACR,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AC5CH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,UAAS,MAAM;IACtC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,QAAQ,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAEvC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjB,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,EAAE;QACzC,KAAK,EAAE,UAAS,QAAQ;YACvB,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,0BAA0B,CAAC,CAAC;YAEjE,IAAI,EAAE,CAAC;QACR,CAAC;QACD,QAAQ,EAAE,UAAS,QAAQ;YAC1B,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,6BAA6B,CAAC,CAAC;YAEpE,IAAI,EAAE,CAAC;QACR,CAAC;QACD,+BAA+B;QAC/B,+DAA+D;QAC/D,EAAE;QACF,WAAW;KACX,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AC5BH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAS,MAAM;IACnC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,CAAC;IAExB,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEnE,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,EAAE,EAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAC,CAAC,CAAC;IAElG,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEpE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,EAAE,EAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;IAE/F,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,EAAE,EAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAC,CAAC,CAAC;IAEtG,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,EAAE,EAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAC,CAAC,CAAC;IAEtG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjB,UAAU,CAAC;QACV,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,2CAA2C,CAAC,CAAC;QACpH,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,gDAAgD,CAAC,CAAC;QAEnI,IAAI,EAAE,CAAC;IACR,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAEvB,UAAU,CAAC;QACV,kJAAkJ;QAClJ,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,8BAA8B,CAAC,CAAC;QAE3G,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,2BAA2B,CAAC,CAAC;QACjG,iJAAiJ;QAEjJ,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,SAAS,EAAE,gCAAgC,CAAC,CAAC;QACjH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,gCAAgC,CAAC,CAAC;QAEhH,IAAI,EAAE,CAAC;IACR,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AClDH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAS,MAAM;IAC3C,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,qBAAqB,GAAG,GAAG,CAAC;IAE7B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjB,QAAQ,CAAC,cAAc,CAAC,eAAe,EAAE;QACxC,eAAe,EAAE,qBAAqB;QACtC,KAAK,EAAE;YACN,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,EAAE,IAAI,CAAC;YACvB,CAAC,EAAC,MAAM,EAAE,GAAG,EAAC,EAAE,IAAI,EAAE,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC;YACzC,CAAC,EAAC,MAAM,EAAE,CAAC,EAAC,EAAE,IAAI,EAAE,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC;SACvC;KACD,CAAC,CAAC;IAEH,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAEpC,UAAU,CAAC;QACV,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAW,CAAC,EAAE,IAAI,EAAE,iCAAiC,CAAC,CAAC;QAChI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAW,CAAC,EAAE,CAAC,EAAE,gCAAgC,CAAC,CAAC;QAE3H,IAAI,EAAE,CAAC;IACR,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AC9BH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,UAAS,MAAM;IAExC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACzB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,EACtB,QAAQ,GAAG,SAAS,EAAE,EACtB,UAAU,GAAG;QACZ,EAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,EAAC,EAAC;QACtE,EAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAC,EAAC;QACpE;YACC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,EAAC,EAAE,OAAO,EAAE;gBAC1E,KAAK,EAAE,GAAG;gBACV,aAAa,EAAE,KAAK;gBACpB,QAAQ,EAAE;oBACT,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAW,CAAC,EAAE,iBAAiB,CAAC,OAAO,EAAE,iCAAiC,CAAC,CAAC;oBACrJ,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAW,CAAC,EAAE,iBAAiB,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;oBACpJ,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAW,CAAC,EAAE,iBAAiB,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;oBAEhJ,IAAI,EAAE,CAAC;gBACR,CAAC;aACD;SACD;KACD,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjB,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;ACjCH;;;;GAIG;AAEH,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;ACN3B,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAS,MAAM;IAE9C,2BAA2B,OAAyB,EAAE,aAAsB;QAC3E,EAAE,CAAC,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC;YACjC,aAAa,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YACzD,IAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EACvC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,QAAQ,GAAG,EAAE,CAAC;YAElB,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACxC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACtB,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBACtD,IAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEjG,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;YAClF,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,QAAQ,GAAG,aAAa,CAAC;YAC1B,CAAC;YACD,MAAM,CAAC,QAAQ,CAAC;QACjB,CAAC;IACF,CAAC;IAED,QAAQ,CAAC,uBAAuB,EAAE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IAEnF,IAAI,KAAK,GAAG;QACX;YACC,IAAI,EAAE,gCAAgC;YACtC,MAAM,EAAE,gCAAgC;SACxC,EAAE;YACF,IAAI,EAAE,kDAAkD;YACxD,MAAM,EAAE,yEAAyE;SACjF,EAAE;YACF,IAAI,EAAE,6CAA6C;YACnD,MAAM,EAAE,oEAAoE;SAC5E,EAAE;YACF,IAAI,EAAE,+CAA+C;YACrD,MAAM,EAAE,sEAAsE;SAC9E,EAAE;YACF,IAAI,EAAE,0CAA0C;YAChD,MAAM,EAAE,iEAAiE;SACzE,EAAE;YACF,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,6BAA6B;SACrC,EAAE;YACF,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,2BAA2B;SACnC,EAAE;YACF,IAAI,EAAE,0BAA0B;YAChC,MAAM,EAAE,2BAA2B;SACnC,EAAE;YACF,IAAI,EAAE,8BAA8B;YACpC,MAAM,EAAE,2BAA2B;SACnC,EAAE;YACF,IAAI,EAAE,0BAA0B;YAChC,MAAM,EAAE,2BAA2B;SACnC;KACD,CAAC;IAEF,GAAG,CAAC,CAAa,UAAK,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK;QAAjB,IAAI,IAAI,cAAA;QACZ,IAAI,OAAO,GAAG,SAAS,EAAE,CAAC;QAE1B,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACrF;AAEF,CAAC,CAAC,CAAC;AC1EH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,UAAS,MAAM;IACpC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC;SAC/C,QAAQ,CAAC,EAAC,OAAO,EAAE,OAAO,EAAC,EAAE;QAC7B,QAAQ,EAAE,IAAI,CAAC,UAAS,QAAwB;YAC/C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,sCAAsC,CAAC,CAAC;YAErG,IAAI,EAAE,CAAC;QACR,CAAC,CAAC;KACF,CAAC,CAAC;IAEJ,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC;SAC/C,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC;SACpC,IAAI,CAAC,UAAS,QAAQ;QACtB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,gCAAgC,CAAC,CAAC;QACnF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,uCAAuC,CAAC,CAAC;QAEtG,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;IAEJ,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC;SAC/C,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC;SAChC,IAAI,CAAC,UAAS,QAAQ;QACtB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,iCAAiC,CAAC,CAAC;QAEhG,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;IAEJ,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAC,OAAO,EAAE,MAAM,EAAC,EAAE;QACxC,QAAQ,EAAE,IAAI,CAAC,UAAS,QAAwB;YAC/C,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,yCAAyC,CAAC,CAAC;YAE1G,IAAI,EAAE,CAAC;QACR,CAAC,CAAC;KACF,CAAC,CAAC,IAAI,CAAC,UAAS,QAAQ;QACxB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,yCAAyC,CAAC,CAAC;QAEvG,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AC/CH,kCAAkC;AAClC;;;;GAIG;AAEH,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,UAAS,MAAM;IACvC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC;SACpD,QAAQ,CAAC,EAAC,UAAU,EAAE,SAAS,EAAC,EAAE;QAClC,QAAQ,EAAE,IAAI,CAAC,UAAS,QAAwB;YAC/C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,SAAS,EAAE,2CAA2C,CAAC,CAAC;YAE/G,IAAI,EAAE,CAAC;QACR,CAAC,CAAC;KACF,CAAC,CAAC;IAEJ,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC;SACpD,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC;SACnC,IAAI,CAAC,UAAS,QAAQ;QACtB,kEAAkE;QAClE,sBAAsB;QACtB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,oCAAoC,CAAC,CAAC;QAEvG,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;IAEJ,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAC,EAAE;QAC7C,QAAQ,EAAE,IAAI,CAAC,UAAS,QAAwB;YAC/C,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,SAAS,EAAE,8CAA8C,CAAC,CAAC;YAErH,IAAI,EAAE,CAAC;QACR,CAAC,CAAC;KACF,CAAC,CAAC,IAAI,CAAC,UAAS,QAAQ;QACxB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,8CAA8C,CAAC,CAAC;QAEjH,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;ACxCH,8BAA8B;AAC9B,wCAAwC;AACxC,yCAAyC;AACzC,2CAA2C;AAC3C,4CAA4C;AAC5C,4CAA4C;AAC5C,4CAA4C;AAC5C,+CAA+C;AAC/C;;;;GAIG;AAsBH,gBAAgB;AAChB,sBAAsB;AACtB,qBAAqB;AAErB,IAAM,aAAa,GAAG;IACrB,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,GAAG;IACf,cAAc,EAAE,CAAC;CACjB,EACA,iBAAiB,GAAuB;IACvC,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,GAAG,CAAC,CAAC;IAC1C,KAAK,EAAE,aAAa,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI;IACrC,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI;CACvC,EACD,cAAc,GAAoB;IACjC,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,GAAG;IACb,MAAM,EAAE,OAAO;IACf,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,IAAI;CACd,EACD,QAAQ,GAAG,gEAAgE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EACrG,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAChD,CAAC,GAAG,CAAE,MAAc,CAAC,MAAM,IAAK,MAAc,CAAC,KAAK,CAAC,EACrD,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,EACpD,kBAAkB,GAAI,cAAc,CAAC,QAAmB,GAAG,CAAC,EAC5D,qBAAqB,GAAI,cAAc,CAAC,QAAmB,GAAG,CAAC,EAC/D,EAAE,GAAG,CAAC;IACL,EAAE,CAAC,CAAE,QAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;QACpC,MAAM,CAAE,QAAgB,CAAC,YAAsB,CAAC;IACjD,CAAC;IAAC,IAAI,CAAC,CAAC;QACP,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAExC,GAAG,CAAC,SAAS,GAAG,IAAI,GAAG,WAAW,GAAG,CAAC,GAAG,4BAA4B,GAAG,GAAG,CAAC;YAC5E,EAAE,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC7C,GAAG,GAAG,IAAI,CAAC;gBACX,MAAM,CAAC,CAAC,CAAC;YACV,CAAC;YACD,GAAG,GAAG,IAAI,CAAC;QACZ,CAAC;IACF,CAAC;IAED,MAAM,CAAC,SAAS,CAAC;AAClB,CAAC,CAAC,EAAE,CAAC;AAEN,IAAI,OAAO,GAAqB,EAAE,EACjC,UAAU,GAAG,CAAC,CAAC;AAEhB,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;AAE7B,0BAA0B,OAAoB,EAAE,WAAqC;IACpF,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,UAAS,QAAQ,EAAE,UAAU;QAChD,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;IACtC,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,cAAc,OAAO;IACpB,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC;AAC7D,CAAC;AAED;IACC,MAAM,CAAC,WAAW,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACxE,CAAC;AAED,0BAA0B,OAAoB,EAAE,QAAgB;IAC/D,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED,mBAAmB,WAAsC;IACxD,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAmB,CAAC;IAE1D,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;IACzB,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAClD,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,GAAG,aAAa,CAAC,UAAU,GAAG,QAAQ,CAAC;IACpE,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC;IAC7C,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC;IAC/C,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3D,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC,cAAc,GAAG,QAAQ,CAAC;IAC5E,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACjB,gBAAgB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,CAAC,GAAG,CAAC;AACZ,CAAC;AAED,cAAc,IAAI;IACjB,IAAI,IAAI,EAAE,MAAM,CAAC;IAEjB,MAAM,CAAC;QACN,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACX,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACrC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,6DAA6D;QAClF,CAAC;QACD,MAAM,CAAC,MAAM,CAAC;IACf,CAAC,CAAC;AACH,CAAC;AAED,eAAe,EAAU;IACxB,MAAM,CAAC,IAAI,OAAO,CAAC,UAAA,OAAO,IAAI,OAAA,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,EAAvB,CAAuB,CAAC,CAAC;AACxD,CAAC;AAUD,eAAe,MAAe,EAAE,KAAc,EAAE,QAAqC;IACpF,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACb,IAAM,OAAK,GAAG,UAAU,CAAC;QAEzB,UAAU,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,OAAK,CAAC;IACd,CAAC;IACD,IAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE7B,UAAU,IAAI,KAAK,CAAC;IACpB,UAAU,CAAC;QACV,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,EAAE,CAAC,CAAC,CAAC;AACP,CAAC;AAED,uBAAuB,QAAQ;IAC9B,GAAG,CAAC,CAAC,IAAI,MAAI,IAAI,QAAQ,CAAC,CAAC,CAAC;QAC3B,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAI,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IACD,MAAM,CAAC,IAAI,CAAC;AACb,CAAC;AAED,KAAK,CAAC,QAAQ,CAAC;IACd,IAAI,CAAC;QACJ,QAAQ,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC;IAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC;IACd,kDAAkD;IAClD,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC;YACJ,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,CAAC;QAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC;IACf,CAAC;IACD,yCAAyC;IACzC,KAAK,EAAE,CAAC;IACR,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,aAAa;AACb,KAAK,CAAC,IAAI,CAAC,UAAS,OAAO;IAC1B,6CAA6C;IAC7C,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AAChI,CAAC,CAAC,CAAC;AAEH,8DAA8D;AAC9D,8CAA8C;AAC9C,0CAA0C;AAC1C,8CAA8C;AAC9C,kDAAkD;AAClD,yDAAyD;AACzD,kDAAkD;AAClD,uDAAuD;AACvD,oCAAoC;AACpC,oCAAoC;AACpC,sCAAsC;AACtC,iCAAiC;AACjC,wBAAwB","sourcesContent":["/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.module(\"Core\");\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Arguments\", function(assert) {\r\n\tlet testComplete = function() {}, // Do nothing\r\n\t\ttestDuration = 1000,\r\n\t\ttestEasing = \"easeInSine\",\r\n\t\tresult: VelocityResult,\r\n\t\ttestOptions: VelocityOptions = {\r\n\t\t\tduration: 123,\r\n\t\t\teasing: testEasing,\r\n\t\t\tcomplete: testComplete\r\n\t\t};\r\n\r\n\tassert.expect(18);\r\n\r\n\t/****************\r\n\t Overloading\r\n\t ****************/\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties);\r\n\tassert.ok(result.length, \"Overload variation #1a: Velocity(ELEMENT, {properties})\");\r\n\tassert.ok(result.velocity.animations.length, \"Overload variation #1b: Velocity(element, {PROPERTIES})\");\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties, testDuration);\r\n\tassert.equal(result.velocity.animations[0].options.duration, testDuration, \"Overload variation #2a: Velocity(element, {properties}, DURATION)\");\r\n\tresult = Velocity(getTarget(), defaultProperties, \"slow\");\r\n\tassert.equal(result.velocity.animations[0].options.duration, 600, \"Overload variation #2b: Velocity(element, {properties}, DURATION)\");\r\n\tresult = Velocity(getTarget(), defaultProperties, \"normal\");\r\n\tassert.equal(result.velocity.animations[0].options.duration, 400, \"Overload variation #2c: Velocity(element, {properties}, DURATION)\");\r\n\tresult = Velocity(getTarget(), defaultProperties, \"fast\");\r\n\tassert.equal(result.velocity.animations[0].options.duration, 200, \"Overload variation #2d: Velocity(element, {properties}, DURATION)\");\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties, testEasing);\r\n\tassert.equal(typeof result.velocity.animations[0].options.easing, \"function\", \"Overload variation #3: Velocity(element, {properties}, EASING)\");\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties, testComplete);\r\n\tassert.equal(typeof result.velocity.animations[0].options.complete, \"function\", \"Overload variation #4: Velocity(element, {properties}, COMPLETE)\");\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties, testDuration, [0.42, 0, 0.58, 1]);\r\n\tassert.equal(result.velocity.animations[0].options.duration, testDuration, \"Overload variation #5a: Velocity(element, {properties}, DURATION, easing)\");\r\n\tassert.equal(result.velocity.animations[0].options.easing(0.2, 0, 1), 0.0816598562658975, \"Overload variation #5b: Velocity(element, {properties}, duration, EASING)\");\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties, testDuration, testComplete);\r\n\tassert.equal(result.velocity.animations[0].options.duration, testDuration, \"Overload variation #6a: Velocity(element, {properties}, DURATION, complete)\");\r\n\tassert.equal(result.velocity.animations[0].options.complete, testComplete, \"Overload variation #6b: Velocity(element, {properties}, duration, COMPLETE)\");\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties, testDuration, testEasing, testComplete);\r\n\tassert.equal(result.velocity.animations[0].options.duration, testDuration, \"Overload variation #7a: Velocity(element, {properties}, DURATION, easing, complete)\");\r\n\tassert.equal(typeof result.velocity.animations[0].options.easing, \"function\", \"Overload variation #7b: Velocity(element, {properties}, duration, EASING, complete)\");\r\n\tassert.equal(result.velocity.animations[0].options.complete, testComplete, \"Overload variation #7c: Velocity(element, {properties}, duration, easing, COMPLETE)\");\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties, testOptions);\r\n\tassert.equal(result.velocity.animations[0].options.duration, testOptions.duration, \"Overload variation #8: Velocity(element, {properties}, {OPTIONS})\");\r\n\r\n\tVelocity({elements: [getTarget()], properties: defaultProperties, options: testOptions});\r\n\tassert.equal(result.velocity.animations[0].options.duration, testOptions.duration, \"Overload variation #9: Velocity({elements:[elements], properties:{properties}, options:{OPTIONS})\");\r\n\r\n\tVelocity({elements: [getTarget()], properties: \"stop\", options: testOptions});\r\n\tassert.equal(result.velocity.animations[0].options.duration, testOptions.duration, \"Overload variation #10: Velocity({elements:[elements], properties:\\\"ACTION\\\", options:{OPTIONS})\");\r\n\r\n\t//\tvar $target12 = getTarget();\r\n\t//\tVelocity($target12, {opacity: [0.75, \"spring\", 0.25]}, testDuration);\r\n\t//\tassert.equal(Data($target12).style.opacity.startValue, 0.25, \"Overload variation #10a.\");\r\n\t//\tassert.equal(Data($target12).style.opacity.easing, \"spring\", \"Overload variation #10b.\");\r\n\t//\tassert.equal(Data($target12).style.opacity.endValue, 0.75, \"Overload variation #10c.\");\r\n\r\n\t//\tvar $target13 = getTarget();\r\n\t//\tVelocity($target13, {opacity: [0.75, 0.25]}, testDuration);\r\n\t//\tassert.equal(Data($target13).style.opacity.startValue, 0.25, \"Overload variation #11a.\");\r\n\t//\tassert.equal(Data($target13).style.opacity.endValue, 0.75, \"Overload variation #11b.\");\r\n\r\n\t//\tvar $target14 = getTarget();\r\n\t//\tVelocity($target14, {opacity: [0.75, \"spring\"]}, testDuration);\r\n\t//\tassert.equal(Data($target14).style.opacity.endValue, 0.75, \"Overload variation #12a.\");\r\n\t//\tassert.equal(Data($target14).style.opacity.easing, \"spring\", \"Overload variation #12b.\");\r\n\r\n\t//\tif ($) {\r\n\t//\t\tvar $target17 = getTarget();\r\n\t//\t\t$($target17).velocity(defaultProperties, testOptions);\r\n\t//\t\tassert.deepEqual(Data($target17).opts, testOptions, \"$.fn.: Utility function variation #1: options object.\");\r\n\t//\r\n\t//\t\tvar $target18 = getTarget();\r\n\t//\t\t$($target18).velocity({properties: defaultProperties, options: testOptions});\r\n\t//\t\tassert.deepEqual(Data($target18).opts, testOptions, \"$.fn.: Utility function variation #2: single object.\");\r\n\t//\r\n\t//\t\tvar $target19 = getTarget();\r\n\t//\t\t$($target19).velocity(defaultProperties, testDuration, testEasing, testComplete);\r\n\t//\t\tassert.equal(Data($target19).opts.duration, testDuration, \"$.fn.: Utility function variation #2a.\");\r\n\t//\t\tassert.equal(Data($target19).opts.easing, testEasing, \"$.fn.: Utility function variation #2b.\");\r\n\t//\t\tassert.equal(Data($target19).opts.complete, testComplete, \"$.fn.: Utility function variation #2c.\");\r\n\t//\r\n\t//\t\tvar $target20 = getTarget();\r\n\t//\t\tassert.equal($($target20).length, $($target20).velocity(defaultProperties, testDuration, testEasing, testComplete).velocity(defaultProperties, testDuration, testEasing, testComplete).length, \"$.fn.: Elements passed back to the call stack.\");\r\n\t//\t\t// TODO: Should check in a better way - but the prototype chain is now extended with a Promise so a standard (non-length) comparison *will* fail\r\n\t//\t}\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"End Value Caching\", function(assert) {\r\n\tvar done = assert.async(2),\r\n\t\tnewProperties = {height: \"50px\", width: \"250px\"};\r\n\r\n\tassert.expect(4);\r\n\r\n\t/* Called after the last call is complete (stale). Ensure that the newly-set (via $.css()) properties are used. */\r\n\tVelocity(getTarget(newProperties), defaultProperties)\r\n\t\t.then(function(elements) {\r\n\t\t\tassert.equal(Data(elements[0]).cache.width, defaultProperties.width, \"Stale end value #1 wasn't pulled.\");\r\n\t\t\tassert.equal(Data(elements[0]).cache.height, defaultProperties.height, \"Stale end value #2 wasn't pulled.\");\r\n\r\n\t\t\tdone();\r\n\t\t});\r\n\r\n\tVelocity(getTarget(), defaultProperties)\r\n\t\t.velocity(newProperties)\r\n\t\t.then(function(elements) {\r\n\t\t\t/* Chained onto a previous call (fresh). */\r\n\t\t\tassert.equal(Data(elements[0]).cache.width, newProperties.width, \"Chained end value #1 was pulled.\");\r\n\t\t\tassert.equal(Data(elements[0]).cache.height, newProperties.height, \"Chained end value #2 was pulled.\");\r\n\r\n\t\t\tdone();\r\n\t\t});\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"End Value Setting\", function(assert) {\r\n\tvar done = assert.async(1);\r\n\r\n\t/* Standard properties. */\r\n\tVelocity(getTarget(), defaultProperties)\r\n\t\t.then(function(elements) {\r\n\t\t\tassert.equal(Velocity(elements[0], \"style\", \"width\"), defaultProperties.width, \"Standard end value #1 was set.\");\r\n\t\t\tassert.equal(Velocity(elements[0], \"style\", \"opacity\"), defaultProperties.opacity, \"Standard end value #2 was set.\");\r\n\r\n\t\t\tdone();\r\n\t\t});\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.todo(\"Start Value Calculation\", function(assert) {\r\n\tvar testStartValues = {\r\n\t\tpaddingLeft: \"10px\",\r\n\t\theight: \"100px\",\r\n\t\tpaddingRight: \"50%\",\r\n\t\tmarginLeft: \"100px\",\r\n\t\tmarginBottom: \"33%\",\r\n\t\tmarginTop: \"100px\",\r\n\t\tlineHeight: \"30px\",\r\n\t\twordSpacing: \"40px\",\r\n\t\tbackgroundColor: \"rgb(123,0,0)\"\r\n\t};\r\n\r\n\t/* Properties not previously defined on the element. */\r\n\tvar $target1 = getTarget();\r\n\tVelocity($target1, testStartValues);\r\n\tassert.equal(Data($target1).cache.paddingLeft, testStartValues.paddingLeft, \"Undefined standard start value was calculated.\");\r\n\tassert.equal(Data($target1).cache.backgroundColor, testStartValues.backgroundColor, \"Undefined start value hook was calculated.\");\r\n\r\n\t/* Properties previously defined on the element. */\r\n\tvar $target2 = getTarget();\r\n\tVelocity($target2, defaultProperties);\r\n\tassert.equal(Data($target2).cache.width, parseFloat(defaultStyles.width as any), \"Defined start value #1 was calculated.\");\r\n\tassert.equal(Data($target2).cache.opacity, parseFloat(defaultStyles.opacity as any), \"Defined start value #2 was calculated.\");\r\n\tassert.equal(Data($target2).cache.color, parseFloat(defaultStyles.colorGreen as any), \"Defined hooked start value was calculated.\");\r\n\r\n\t/* Properties that shouldn't cause start values to be unit-converted. */\r\n\tvar testPropertiesEndNoConvert = {paddingLeft: \"20px\", height: \"40px\", paddingRight: \"75%\"};\r\n\tvar $target3 = getTarget();\r\n\tapplyStartValues($target3, testStartValues);\r\n\tVelocity($target3, testPropertiesEndNoConvert);\r\n\tassert.equal(Data($target3).cache.paddingLeft, parseFloat(testStartValues.paddingLeft), \"Start value #1 wasn't unit converted.\");\r\n\tassert.equal(Data($target3).cache.height, parseFloat(testStartValues.height), \"Start value #2 wasn't unit converted.\");\r\n\t//\t\t\tassert.deepEqual(Data($target3).cache.paddingRight.startValue, [Math.floor((parentWidth * parseFloat(testStartValues.paddingRight)) / 100), 0], \"Start value #3 was pattern matched.\");\r\n\r\n\t/* Properties that should cause start values to be unit-converted. */\r\n\tvar testPropertiesEndConvert = {paddingLeft: \"20%\", height: \"40%\", lineHeight: \"0.5em\", wordSpacing: \"2rem\", marginLeft: \"10vw\", marginTop: \"5vh\", marginBottom: \"100px\"},\r\n\t\tparentWidth = $qunitStage.clientWidth,\r\n\t\tparentHeight = $qunitStage.clientHeight,\r\n\t\tparentFontSize = Velocity.CSS.getPropertyValue($qunitStage, \"fontSize\"),\r\n\t\tremSize = parseFloat(Velocity.CSS.getPropertyValue(document.body, \"fontSize\") as any);\r\n\r\n\tvar $target4 = getTarget();\r\n\tapplyStartValues($target4, testStartValues);\r\n\tVelocity($target4, testPropertiesEndConvert);\r\n\r\n\t/* Long decimal results can be returned after unit conversion, and Velocity's code and the code here can differ in precision. So, we round floor values before comparison. */\r\n\t//\t\t\tassert.deepEqual(Data($target4).cache.paddingLeft.startValue, [parseFloat(testStartValues.paddingLeft), 0], \"Horizontal property converted to %.\");\r\n\tassert.equal(parseInt(Data($target4).cache.height), Math.floor((parseFloat(testStartValues.height) / parentHeight) * 100), \"Vertical property converted to %.\");\r\n\t//\t\t\tassert.equal(Data($target4).cache.lineHeight.startValue, Math.floor(parseFloat(testStartValues.lineHeight) / parseFloat(parentFontSize)), \"Property converted to em.\");\r\n\t//\t\t\tassert.equal(Data($target4).cache.wordSpacing.startValue, Math.floor(parseFloat(testStartValues.wordSpacing) / parseFloat(remSize)), \"Property converted to rem.\");\r\n\tassert.equal(parseInt(Data($target4).cache.marginBottom), parseFloat(testStartValues.marginBottom) / 100 * parseFloat($target4.parentElement.offsetWidth as any), \"Property converted to px.\");\r\n\r\n\t//\t\t\tif (!(IE<=8) && !isAndroid) {\r\n\t//\t\t\t\tassert.equal(Data($target4).cache.marginLeft.startValue, Math.floor(parseFloat(testStartValues.marginLeft) / window.innerWidth * 100), \"Horizontal property converted to vw.\");\r\n\t//\t\t\t\tassert.equal(Data($target4).cache.marginTop.startValue, Math.floor(parseFloat(testStartValues.marginTop) / window.innerHeight * 100), \"Vertical property converted to vh.\");\r\n\t//\t\t\t}\r\n\r\n\t// TODO: Tests for auto-parameters as the units are no longer converted.\r\n\r\n\t/* jQuery TRBL deferring. */\r\n\tvar testPropertiesTRBL = {left: \"1000px\"};\r\n\tvar $TRBLContainer = document.createElement(\"div\");\r\n\r\n\t$TRBLContainer.setAttribute(\"id\", \"TRBLContainer\");\r\n\t$TRBLContainer.style.marginLeft = testPropertiesTRBL.left;\r\n\t$TRBLContainer.style.width = \"100px\";\r\n\t$TRBLContainer.style.height = \"100px\";\r\n\tdocument.body.appendChild($TRBLContainer);\r\n\r\n\tvar $target5 = getTarget();\r\n\t$target5.style.position = \"absolute\";\r\n\t$TRBLContainer.appendChild($target5);\r\n\tVelocity($target5, testPropertiesTRBL);\r\n\r\n\tassert.equal(parseInt(Data($target5).cache.left), Math.round(parseFloat(testPropertiesTRBL.left) + parseFloat(Velocity.CSS.getPropertyValue(document.body, \"marginLeft\") as any)), \"TRBL value was deferred to jQuery.\");\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Unit Calculation\", function(assert) {\r\n\t// TODO: Add code and tests for operators - probably using calc() internally\r\n\t//\t/* Standard properties with operators. */\r\n\t//\tvar testIncrementWidth = \"5px\",\r\n\t//\t\t\ttestDecrementOpacity = 0.25,\r\n\t//\t\t\ttestMultiplyMarginBottom = 4,\r\n\t//\t\t\ttestDivideHeight = 2;\r\n\t//\r\n\t//\tvar $target2 = getTarget();\r\n\t//\tVelocity($target2, {width: \"+=\" + testIncrementWidth, opacity: \"-=\" + testDecrementOpacity, marginBottom: \"*=\" + testMultiplyMarginBottom, height: \"/=\" + testDivideHeight});\r\n\t//\tsetTimeout(function() {\r\n\t//\r\n\t//\t\tassert.equal(Data($target2).style.width.endValue, defaultStyles.width + parseFloat(testIncrementWidth), \"Incremented end value was calculated.\");\r\n\t//\t\tassert.equal(Data($target2).style.opacity.endValue, defaultStyles.opacity - testDecrementOpacity, \"Decremented end value was calculated.\");\r\n\t//\t\tassert.equal(Data($target2).style.marginBottom.endValue, defaultStyles.marginBottom * testMultiplyMarginBottom, \"Multiplied end value was calculated.\");\r\n\t//\t\tassert.equal(Data($target2).style.height.endValue, defaultStyles.height / testDivideHeight, \"Divided end value was calculated.\");\r\n\t//\r\n\t//\t\tdone();\r\n\t//\t}, asyncCheckDuration);\r\n\r\n\tasync(assert, 2, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, {left: \"500px\"}, {duration: 10});\r\n\t\tawait sleep(100);\r\n\t\tassert.equal(getPropertyValue($target, \"left\"), \"500px\", \"Finished animated value with given pixels should be the same.\");\r\n\t\tVelocity($target, {left: \"0px\"}, {duration: 10});\r\n\t\tawait sleep(100);\r\n\t\tassert.equal(getPropertyValue($target, \"left\"), \"0px\", \"Finished animated value with 0px should be the same.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, {left: \"500px\"}, {duration: 10});\r\n\t\tawait sleep(100);\r\n\t\tVelocity($target, {left: \"0\"}, {duration: 10});\r\n\t\tawait sleep(100);\r\n\t\tassert.equal(getPropertyValue($target, \"left\"), \"0px\", \"Finished animated value without giving px, but only number as a string should be the same.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, {left: \"500px\"}, {duration: 10});\r\n\t\tawait sleep(100);\r\n\t\tVelocity($target, {left: 0}, {duration: 10});\r\n\t\tawait sleep(1000);\r\n\t\tassert.equal(getPropertyValue($target, \"left\"), \"0px\", \"Finished animated value given as number 0 should be the same as 0px.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 2, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, {left: 500}, {duration: 10});\r\n\t\tawait sleep(100);\r\n\t\tassert.equal(getPropertyValue($target, \"left\"), \"500px\", \"Finished animated value with given pixels should be the same.\");\r\n\t\tVelocity($target, {left: 0}, {duration: 10});\r\n\t\tawait sleep(100);\r\n\t\tassert.equal(getPropertyValue($target, \"left\"), \"0px\", \"Omitted pixels (px) when given animation should run properly.\");\r\n\r\n\t\tdone();\r\n\t});\r\n});\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.module(\"Option\");\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Begin\", function(assert) {\r\n\tasync(assert, 1, function(done) {\r\n\t\tconst $targetSet = [getTarget(), getTarget()];\r\n\r\n\t\tVelocity($targetSet, defaultProperties, {\r\n\t\t\tduration: asyncCheckDuration,\r\n\t\t\tbegin: function() {\r\n\t\t\t\tassert.deepEqual(this, $targetSet, \"Elements passed into callback.\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Complete\", function(assert) {\r\n\tasync(assert, 1, function(done) {\r\n\t\tconst $targetSet = [getTarget(), getTarget()];\r\n\r\n\t\tVelocity($targetSet, defaultProperties, {\r\n\t\t\tduration: asyncCheckDuration,\r\n\t\t\tcomplete: function() {\r\n\t\t\t\tassert.deepEqual(this, $targetSet, \"Elements passed into callback.\");\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Delay\", function(assert) {\r\n\tconst testDelay = 250;\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tconst start = getNow();\r\n\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: defaultOptions.duration,\r\n\t\t\tdelay: testDelay,\r\n\t\t\tbegin: function(elements, activeCall) {\r\n\t\t\t\tassert.close(getNow() - start, testDelay, 32, \"Delayed calls start after the correct delay.\");\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tconst start = getNow();\r\n\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: defaultOptions.duration,\r\n\t\t\tdelay: testDelay\r\n\t\t})\r\n\t\t\t.velocity(defaultProperties, {\r\n\t\t\t\tduration: defaultOptions.duration,\r\n\t\t\t\tdelay: testDelay,\r\n\t\t\t\tbegin: function(elements, activeCall) {\r\n\t\t\t\t\tassert.close(getNow() - start, (testDelay * 2) + (defaultOptions.duration as number), 32, \"Queued delays start after the correct delay.\");\r\n\t\t\t\t\tdone();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Easing\", function(assert) {\r\n\tasync(assert, 1, function(done) {\r\n\t\tlet success = false;\r\n\r\n\t\ttry {\r\n\t\t\tsuccess = true;\r\n\t\t\tVelocity(getTarget(), defaultProperties, {easing: \"fake\"});\r\n\t\t} catch (e) {\r\n\t\t\tsuccess = false;\r\n\t\t}\r\n\t\tassert.ok(success, \"Fake easing string didn't throw error.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tlet success = false;\r\n\r\n\t\ttry {\r\n\t\t\tsuccess = true;\r\n\t\t\tVelocity(getTarget(), defaultProperties, {easing: [\"a\" as any, 0.5, 0.5, 0.5]});\r\n\t\t\tVelocity(getTarget(), defaultProperties, {easing: [0.5, 0.5, 0.5]});\r\n\t\t} catch (e) {\r\n\t\t\tsuccess = false;\r\n\t\t}\r\n\t\tassert.ok(success, \"Invalid bezier curve didn't throw error.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\t// TODO: Use a \"tween\" action?\r\n\t\t/* Ensure that a properly-formatted bezier curve array returns a bezier function. */\r\n\t\tconst easingBezierArray = [0.27, -0.65, 0.78, 0.19],\r\n\t\t\teasingBezierTestPercent = 0.25,\r\n\t\t\teasingBezierTestValue = -0.23;\r\n\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\teasing: easingBezierArray,\r\n\t\t\tbegin: function(elements, animation) {\r\n\t\t\t\tassert.close(animation.options.easing(easingBezierTestPercent, 0, 1), easingBezierTestValue, 0.005, \"Array converted into bezier function.\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\t/* Ensure that a properly-formatted spring RK4 array returns a bezier function. */\r\n\t\tconst easingSpringRK4Array = [250, 12],\r\n\t\t\teasingSpringRK4TestPercent = 0.25,\r\n\t\t\teasingSpringRK4TestValue = 0.928, // TODO: Check accuracy\r\n\t\t\teasingSpringRK4TestDuration = 992;\r\n\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: 150,\r\n\t\t\teasing: easingSpringRK4Array,\r\n\t\t\tbegin: function(elements, animation) {\r\n\t\t\t\tassert.close(animation.options.easing(easingSpringRK4TestPercent, 0, 1), easingSpringRK4TestValue, 10, \"Array with duration converted into springRK4 function.\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\t// TODO: Get this working in Velocity - so it can be tested\r\n\t//\tasync(assert, 1, function(done) {\r\n\t//\tVelocity(getTarget(), defaultProperties, {\r\n\t//\t\teasing: easingSpringRK4Array,\r\n\t//\t\tbegin: function(elements, animation) {\r\n\t//\t\t\tassert.equal(animation.duration, easingSpringRK4TestDuration, \"Array without duration converted into springRK4 duration.\");\r\n\t//\t\t\tdone();\r\n\t//\t\t}\r\n\t//\t});\r\n\t//\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\t/* Ensure that a properly-formatted step easing array returns a step function. */\r\n\t\tconst easingStepArray = [4],\r\n\t\t\teasingStepTestPercent = 0.35,\r\n\t\t\teasingStepTestValue = 0.25;\r\n\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\teasing: easingStepArray,\r\n\t\t\tbegin: function(elements, animation) {\r\n\t\t\t\tassert.close(animation.options.easing(easingStepTestPercent, 0, 1), easingStepTestValue, 0.05, \"Array converted into Step function.\");\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 3, function(done) {\r\n\t\tVelocity(getTarget(), {opacity: [0, \"during\", 1]}, {\r\n\t\t\tduration: asyncCheckDuration,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 1, \"Correct begin value (easing:'during').\");\r\n\t\t\t},\r\n\t\t\tprogress: once(function(elements: VelocityResult) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 0, \"Correct progress value (easing:'during').\");\r\n\t\t\t}),\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 1, \"Correct complete value (easing:'during').\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 3, function(done) {\r\n\t\tVelocity(getTarget(), {opacity: [0, \"at-start\", 1]}, {\r\n\t\t\tduration: asyncCheckDuration,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 1, \"Correct begin value (easing:'at-start').\");\r\n\t\t\t},\r\n\t\t\tprogress: once(function(elements: VelocityResult) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 0, \"Correct progress value (easing:'at-start').\");\r\n\t\t\t}),\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 0, \"Correct complete value (easing:'at-start').\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 3, function(done) {\r\n\t\tVelocity(getTarget(), {opacity: [0, \"at-end\", 1]}, {\r\n\t\t\tduration: asyncCheckDuration,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 1, \"Correct begin value (easing:'at-end').\");\r\n\t\t\t},\r\n\t\t\tprogress: once(function(elements: VelocityResult) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 1, \"Correct progress value (easing:'at-end').\");\r\n\t\t\t}),\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"opacity\"), 0, \"Correct complete value (easing:'at-end').\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"FPS Limit\", async assert => {\r\n\tlet count: number,\r\n\t\t$target = getTarget(),\r\n\t\tframeRates = [5, 15, 30, 60],\r\n\t\ttestFrame = function(frameRate) {\r\n\t\t\tlet counter = 0;\r\n\r\n\t\t\tVelocity.defaults.fpsLimit = frameRate;\r\n\t\t\t// Test if the frame rate is assigned succesfully.\r\n\t\t\tassert.equal(frameRate, Velocity.defaults.fpsLimit, \"Setting global fps limit to \" + frameRate);\r\n\t\t\treturn Velocity($target, defaultProperties, {\r\n\t\t\t\tduration: 1000,\r\n\t\t\t\tprogress: () => {\r\n\t\t\t\t\tcounter++;\r\n\t\t\t\t}\r\n\t\t\t}).then(() => counter);\r\n\t\t};\r\n\r\n\tassert.expect(frameRates.length * 2);\r\n\t// Test if the limit is working for 60, 30, 15 and 5 fps.\r\n\tfor (let i = 0; i < frameRates.length; i++) {\r\n\t\tassert.close(count = await testFrame(frameRates[i]), frameRates[i], 1, \"...counted \" + count + \" frames (\\xB11 frame)\");\r\n\t}\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Loop\", function(assert) {\r\n\tasync(assert, 4, function(done) {\r\n\t\tconst testOptions = {loop: 2, delay: 100, duration: 100},\r\n\t\t\tstart = getNow();\r\n\t\tlet begin = 0,\r\n\t\t\tcomplete = 0,\r\n\t\t\tloop = 0,\r\n\t\t\tlastPercentComplete = 2;\r\n\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tloop: testOptions.loop,\r\n\t\t\tdelay: testOptions.delay,\r\n\t\t\tduration: testOptions.duration,\r\n\t\t\tbegin: function(elements, animation) {\r\n\t\t\t\tbegin++;\r\n\t\t\t},\r\n\t\t\tprogress: function(elements, percentComplete, remaining, start, tweenValue) {\r\n\t\t\t\tif (lastPercentComplete > percentComplete) {\r\n\t\t\t\t\tloop++;\r\n\t\t\t\t}\r\n\t\t\t\tlastPercentComplete = percentComplete;\r\n\t\t\t},\r\n\t\t\tcomplete: function(elements, animation) {\r\n\t\t\t\tcomplete++;\r\n\t\t\t}\r\n\t\t}).then(() => {\r\n\t\t\tassert.equal(begin, 1, \"Begin callback only called once.\");\r\n\t\t\tassert.equal(loop, testOptions.loop * 2 - 1, \"Animation looped correct number of times (once each direction per loop).\");\r\n\t\t\tassert.close(getNow() - start, (testOptions.delay + testOptions.duration) * loop, 32, \"Looping with 'delay' has correct duration.\");\r\n\t\t\tassert.equal(complete, 1, \"Complete callback only called once.\");\r\n\r\n\t\t\tdone();\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Progress\", function(assert) {\r\n\tasync(assert, 4, function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, defaultProperties, {\r\n\t\t\tduration: asyncCheckDuration,\r\n\t\t\tprogress: once(function(elements, percentComplete, msRemaining) {\r\n\t\t\t\tassert.deepEqual(elements, [$target], \"Elements passed into progress.\");\r\n\t\t\t\tassert.deepEqual(this, [$target], \"Elements passed into progress as this.\");\r\n\t\t\t\tassert.equal(percentComplete >= 0 && percentComplete <= 1, true, \"'percentComplete' passed into progress.\");\r\n\t\t\t\tassert.equal(msRemaining > asyncCheckDuration - 50, true, \"'msRemaining' passed into progress.\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t})\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Queue\", function(assert) {\r\n\tvar done = assert.async(4),\r\n\t\ttestQueue = \"custom\",\r\n\t\t$target = getTarget(),\r\n\t\tignore = $target.velocity(\"style\", \"display\"), // Force data creation\r\n\t\tdata = Data($target),\r\n\t\tanim1: boolean,\r\n\t\tanim2: boolean,\r\n\t\tanim3: boolean;\r\n\r\n\tassert.expect(7);\r\n\r\n\tassert.ok(data.queueList[testQueue] === undefined, \"Custom queue is empty.\"); // Shouldn't exist\r\n\r\n\t$target.velocity(defaultProperties, {\r\n\t\tqueue: testQueue,\r\n\t\tbegin: function() {\r\n\t\t\tanim1 = true;\r\n\t\t},\r\n\t\tcomplete: function() {\r\n\t\t\tanim1 = false;\r\n\t\t\tassert.ok(!anim2, \"Queued animation isn't started early.\");\r\n\t\t\tdone();\r\n\t\t}\r\n\t});\r\n\tassert.ok(data.queueList[testQueue] !== undefined, \"Custom queue was created.\"); // Should exist, but be \"null\"\r\n\r\n\t$target.velocity(defaultProperties, {\r\n\t\tqueue: testQueue,\r\n\t\tbegin: function() {\r\n\t\t\tanim2 = true;\r\n\t\t\tassert.ok(anim1 === false, \"Queued animation starts after first.\");\r\n\t\t\tdone();\r\n\t\t},\r\n\t\tcomplete: function() {\r\n\t\t\tanim2 = false;\r\n\t\t}\r\n\t});\r\n\tassert.ok(data.queueList[testQueue], \"Custom queue grows.\"); // Should exist and point at the next animation\r\n\r\n\t$target.velocity(defaultProperties, {\r\n\t\tbegin: function() {\r\n\t\t\tanim3 = true;\r\n\t\t\tassert.ok(anim1 === true, \"Different queue animation starts in parallel.\");\r\n\t\t\tdone();\r\n\t\t},\r\n\t\tcomplete: function() {\r\n\t\t\tanim3 = false;\r\n\t\t}\r\n\t});\r\n\r\n\t$target.velocity(defaultProperties, {\r\n\t\tqueue: false,\r\n\t\tbegin: function() {\r\n\t\t\tassert.ok(anim1 === true, \"Queue:false animation starts in parallel.\");\r\n\t\t\tdone();\r\n\t\t}\r\n\t});\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Repeat\", function(assert) {\r\n\tasync(assert, 4, function(done) {\r\n\t\tconst testOptions = {repeat: 2, delay: 100, duration: 100},\r\n\t\t\tstart = Date.now();\r\n\t\tlet begin = 0,\r\n\t\t\tcomplete = 0,\r\n\t\t\trepeat = 0;\r\n\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\trepeat: testOptions.repeat,\r\n\t\t\tdelay: testOptions.delay,\r\n\t\t\tduration: testOptions.duration,\r\n\t\t\tbegin: function(elements, animation) {\r\n\t\t\t\tbegin++;\r\n\t\t\t},\r\n\t\t\tprogress: function(elements, percentComplete, remaining, start, tweenValue) {\r\n\t\t\t\tif (percentComplete === 1) {\r\n\t\t\t\t\trepeat++;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tcomplete: function(elements, animation) {\r\n\t\t\t\tcomplete++;\r\n\t\t\t\tassert.equal(begin, 1, \"Begin callback only called once.\");\r\n\t\t\t\tassert.equal(repeat, testOptions.repeat + 1, \"Animation repeated correct number of times (original plus repeats).\");\r\n\t\t\t\tassert.close(Date.now() - start, (testOptions.delay + testOptions.duration) * (testOptions.repeat + 1), (testOptions.repeat + 1) * 16 + 32, \"Repeat with 'delay' has correct duration.\");\r\n\t\t\t\tassert.equal(complete, 1, \"Complete callback only called once.\");\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Speed\", function(assert) {\r\n\tconst delay = 200,\r\n\t\tduration = 400,\r\n\t\tstartDelay = getNow();\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity.defaults.speed = 3;\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tspeed: 5,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\tassert.equal(elements.velocity.animations[0].options.speed, 5, \"Speed on options overrides default.\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: duration,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\telements.__start = getNow();\r\n\t\t\t},\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tconst actual = getNow() - elements.__start,\r\n\t\t\t\t\texpected = duration / 3;\r\n\r\n\t\t\t\tassert.close(actual, expected, 32, \"Velocity.defaults.speed change is respected. (\\xD73, \" + Math.floor(actual - expected) + \"ms \\xB132ms)\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: duration,\r\n\t\t\tspeed: 2,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\telements.__start = getNow();\r\n\t\t\t},\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tconst actual = getNow() - elements.__start,\r\n\t\t\t\t\texpected = duration / 2;\r\n\r\n\t\t\t\tassert.close(actual, expected, 32, \"Double speed animation lasts half as long. (\\xD72, \" + Math.floor(actual - expected) + \"ms \\xB132ms)\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: duration,\r\n\t\t\tdelay: delay,\r\n\t\t\tspeed: 2,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\telements.__start = startDelay;\r\n\t\t\t},\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tconst actual = getNow() - elements.__start,\r\n\t\t\t\t\texpected = (duration + delay) / 2;\r\n\r\n\t\t\t\tassert.close(actual, expected, 32, \"Delayed animation includes speed for delay. (\\xD72, \" + Math.floor(actual - expected) + \"ms \\xB132ms)\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: duration,\r\n\t\t\tdelay: -delay,\r\n\t\t\tspeed: 2,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\telements.__start = startDelay;\r\n\t\t\t},\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tconst actual = getNow() - elements.__start,\r\n\t\t\t\t\texpected = (duration - delay) / 2;\r\n\r\n\t\t\t\tassert.close(actual, expected, 32, \"Negative delay animation includes speed for delay. (\\xD72, \" + Math.floor(actual - expected) + \"ms \\xB132ms)\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: duration,\r\n\t\t\tspeed: 0.5,\r\n\t\t\tbegin: function(elements) {\r\n\t\t\t\telements.__start = getNow();\r\n\t\t\t},\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tconst actual = getNow() - elements.__start,\r\n\t\t\t\t\texpected = duration * 2;\r\n\r\n\t\t\t\t// TODO: Really not happy with the allowed range - it sits around 40ms, but should be closer to 16ms\r\n\t\t\t\tassert.close(actual, expected, 64, \"Half speed animation lasts twice as long. (\\xD7\\xBD, \" + Math.floor(actual - expected) + \"ms \\xB164ms)\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity(getTarget(), defaultProperties, {\r\n\t\t\tduration: duration,\r\n\t\t\tspeed: 0,\r\n\t\t\tprogress: function(elements, percentComplete) {\r\n\t\t\t\tif (!elements.__count) {\r\n\t\t\t\t\telements.__start = percentComplete;\r\n\t\t\t\t\telements.__count = 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tassert.equal(elements.__start, percentComplete, \"Frozen (speed:0) animation doesn't progress.\");\r\n\t\t\t\t\telements\r\n\t\t\t\t\t\t.velocity(\"option\", \"speed\", 1) // Just in case \"stop\" is broken\r\n\t\t\t\t\t\t.velocity(\"stop\");\r\n\r\n\t\t\t\t\tdone();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Sync\", function(assert) {\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget(),\r\n\t\t\t$targetSet = [getTarget(), $target, getTarget()];\r\n\t\tlet complete = false;\r\n\r\n\t\tVelocity($target, defaultProperties, {\r\n\t\t\tduration: 300,\r\n\t\t\tcomplete: function() {\r\n\t\t\t\tcomplete = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\tVelocity($targetSet, defaultProperties, {\r\n\t\t\tsync: false,\r\n\t\t\tduration: 250\r\n\t\t});\r\n\t\tawait sleep(275);\r\n\t\tassert.notOk(complete, \"Sync 'false' animations don't wait for completion.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget(),\r\n\t\t\t$targetSet = [getTarget(), $target, getTarget()];\r\n\t\tlet complete = false;\r\n\r\n\t\tVelocity($target, defaultProperties, {\r\n\t\t\tduration: 300,\r\n\t\t\tcomplete: function() {\r\n\t\t\t\tcomplete = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\tVelocity($targetSet, defaultProperties, {\r\n\t\t\tsync: true,\r\n\t\t\tduration: 250,\r\n\t\t\tbegin: function() {\r\n\t\t\t\tassert.ok(complete, \"Sync 'true' animations wait for completion.\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.module(\"Command\");\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Finish\", async (assert) => {\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity(getTarget(), \"finish\");\r\n\t\tassert.ok(true, \"Calling on an element that isn't animating doesn't cause an error.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, defaultProperties, defaultOptions);\r\n\t\tVelocity($target, {top: 0}, defaultOptions);\r\n\t\tVelocity($target, {width: 0}, defaultOptions);\r\n\t\tVelocity($target, \"finish\");\r\n\t\tassert.ok(true, \"Calling on an element that is animating doesn't cause an error.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 2, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\t\tlet complete1 = false,\r\n\t\t\tcomplete2 = false;\r\n\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tqueue: \"test1\",\r\n\t\t\tcomplete: () => {complete1 = true}\r\n\t\t});\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tqueue: \"test2\",\r\n\t\t\tcomplete: () => {complete2 = true}\r\n\t\t});\r\n\t\tVelocity($target, \"finish\", \"test1\");\r\n\t\tawait sleep(defaultOptions.duration as number / 2);\r\n\t\tassert.ok(complete1, \"Finish animation with correct queue.\");\r\n\t\tassert.notOk(complete2, \"Don't finish animation with wrong queue.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 3, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\t\tlet begin = false,\r\n\t\t\tcomplete = false;\r\n\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tbegin: () => {begin = true},\r\n\t\t\tcomplete: () => {complete = true}\r\n\t\t});\r\n\t\tawait sleep(500);\r\n\t\tVelocity($target, \"finish\");\r\n\t\tassert.ok(begin, \"Finish calls 'begin()' callback without delay.\");\r\n\t\tassert.ok(complete, \"Finish calls 'complete()' callback without delay.\");\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"0\", \"Finish animation with correct value.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 3, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\t\tlet begin = false,\r\n\t\t\tcomplete = false;\r\n\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tdelay: 1000,\r\n\t\t\tbegin: () => {begin = true},\r\n\t\t\tcomplete: () => {complete = true}\r\n\t\t});\r\n\t\tawait sleep(500);\r\n\t\tVelocity($target, \"finish\");\r\n\t\tassert.ok(begin, \"Finish calls 'begin()' callback with delay.\");\r\n\t\tassert.ok(complete, \"Finish calls 'complete()' callback with delay.\");\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"0\", \"Finish animation with correct value before delay ends.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 3, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, {opacity: 0})\r\n\t\t\t.velocity({opacity: 1})\r\n\t\t\t.velocity({opacity: 0.25})\r\n\t\t\t.velocity({opacity: 0.75})\r\n\t\t\t.velocity({opacity: 0.5});\r\n\t\tVelocity($target, \"finish\");\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"0\", \"Finish once starts the second animation.\");\r\n\t\tVelocity($target, \"finish\");\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"1\", \"Finish twice starts the third animation.\");\r\n\t\tVelocity($target, \"finish\", true);\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"0.5\", \"Finish 'true' finishes all animations.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Pause + Resume\", async function(assert) {\r\n\tasync(assert, 2, function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, \"pause\");\r\n\t\tassert.ok(true, \"Calling \\\"pause\\\" on an element that isn't animating doesn't cause an error.\");\r\n\t\tVelocity($target, \"resume\");\r\n\t\tassert.ok(true, \"Calling \\\"resume\\\" on an element that isn't animating doesn't cause an error.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 4, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\t\tlet progress = false;\r\n\r\n\t\tVelocity($target, {opacity: 0}, {duration: 250, progress: () => {progress = true;}});\r\n\t\tVelocity($target, \"pause\");\r\n\t\tawait sleep(50);\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"1\", \"Property value unchanged after pause.\");\r\n\t\tassert.notOk(progress, \"Progress callback not run during pause.\");\r\n\t\tVelocity($target, \"resume\");\r\n\t\tawait sleep(300);\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"0\", \"Tween completed after pause/resume.\");\r\n\t\tassert.ok(progress, \"Progress callback run after pause.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 3, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, {opacity: 0}, {duration: 250, delay: 250});\r\n\t\tVelocity($target, \"pause\");\r\n\t\tawait sleep(500);\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"1\", \"Delayed property value unchanged after pause.\");\r\n\t\tVelocity($target, \"resume\");\r\n\t\tawait sleep(100);\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"1\", \"Delayed tween did not start early after pause.\");\r\n\t\tawait sleep(500);\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"0\", \"Delayed tween completed after pause/resume.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, {opacity: 0}, {queue: \"test\", duration: 250});\r\n\t\tVelocity(\"pause\", \"test\");\r\n\t\tawait sleep(300);\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"1\", \"Pause 'queue' works globally.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, {opacity: 0})\r\n\t\t\t.velocity(\"pause\");\r\n\t\tawait sleep(300);\r\n\t\tassert.equal(getPropertyValue($target, \"opacity\"), \"1\", \"Chained pause only pauses chained tweens.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\t// TODO: Better global tests, queue: false, named queues\r\n\r\n\t//\t/* Ensure proper behavior with queue:false */\r\n\t//\tvar $target4 = getTarget();\r\n\t//\tVelocity($target4, {opacity: 0}, {duration: 200});\r\n\t//\r\n\t//\tvar isResumed = false;\r\n\t//\r\n\t//\tawait sleep(100);\r\n\t//\tVelocity($target4, \"pause\");\r\n\t//\tVelocity($target4, {left: -20}, {\r\n\t//\t\tduration: 100,\r\n\t//\t\teasing: \"linear\",\r\n\t//\t\tqueue: false,\r\n\t//\t\tbegin: function(elements) {\r\n\t//\t\t\tassert.ok(true, \"Animation with {queue:false} will run regardless of previously paused animations.\");\r\n\t//\t\t}\r\n\t//\t});\r\n\t//\r\n\t//\tVelocity($target4, {top: 20}, {\r\n\t//\t\tduration: 100,\r\n\t//\t\teasing: \"linear\",\r\n\t//\t\tbegin: function(elements) {\r\n\t//\t\t\tassert.ok(isResumed, \"Queued animation began after previously paused animation completed\");\r\n\t//\t\t}\r\n\t//\t});\r\n\t//\r\n\t//\tawait sleep(100);\r\n\t//\r\n\t//\tisResumed = true;\r\n\t//\tVelocity($target4, \"resume\");\r\n\t//\tawait sleep(100);\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Reverse\", function(assert) {\r\n\tvar $target = getTarget(),\r\n\t\topacity = $target.velocity(\"style\", \"opacity\"),\r\n\t\twidth = $target.velocity(\"style\", \"width\");\r\n\r\n\tif (width === \"0\") {\r\n\t\t// Browsers don't always suffix, but Velocity does.\r\n\t\twidth = \"0px\";\r\n\t}\r\n\tasync(assert, 2, function(done) {\r\n\t\tVelocity($target, defaultProperties, {\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tassert.equal(elements[0].velocity(\"style\", \"opacity\"), defaultProperties.opacity, \"Initial property #1 set correctly. (\" + defaultProperties.opacity + \")\");\r\n\t\t\t\tassert.equal(elements[0].velocity(\"style\", \"width\"), defaultProperties.width, \"Initial property #2 set correctly. (\" + defaultProperties.width + \")\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 2, function(done) {\r\n\t\tVelocity($target, \"reverse\", {\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tassert.equal(elements[0].velocity(\"style\", \"opacity\"), opacity, \"Reversed property #1 set correctly. (\" + opacity + \")\");\r\n\t\t\t\tassert.equal(elements[0].velocity(\"style\", \"width\"), width, \"Reversed property #2 set correctly. (\" + width + \")\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tasync(assert, 2, function(done) {\r\n\t\tVelocity($target, \"reverse\", {\r\n\t\t\tcomplete: function(elements) {\r\n\t\t\t\tassert.equal(elements[0].velocity(\"style\", \"opacity\"), defaultProperties.opacity, \"Chained reversed property #1 set correctly. (\" + defaultProperties.opacity + \")\");\r\n\t\t\t\tassert.equal(elements[0].velocity(\"style\", \"width\"), defaultProperties.width, \"Chained reversed property #2 set correctly. (\" + defaultProperties.width + \")\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\n/* Window scrolling. */\r\nQUnit.skip(\"Scroll (Window)\", function(assert) {\r\n\tvar done = assert.async(4),\r\n\t\t\t$details = $(\"#details\"),\r\n\t\t\t$scrollTarget1 = $(\"
Scroll target #1. Should stop 50 pixels above this point.
\"),\r\n\t\t\t$scrollTarget2 = $(\"
Scroll target #2. Should stop 50 pixels before this point.
\"),\r\n\t\t\tscrollOffset = -50;\r\n\r\n\t$scrollTarget1\r\n\t\t\t.css({position: \"relative\", top: 3000, height: 100, paddingBottom: 10000})\r\n\t\t\t.appendTo($(\"body\"));\r\n\r\n\t$scrollTarget2\r\n\t\t\t.css({position: \"absolute\", top: 100, left: 3000, width: 100, paddingRight: 15000})\r\n\t\t\t.appendTo($(\"body\"));\r\n\r\n\t$scrollTarget1\r\n\t\t\t.velocity(\"scroll\", {duration: 500, offset: scrollOffset, complete: function() {\r\n\t\t\t\t\tassert.equal(Math.abs(Velocity.State.scrollAnchor[Velocity.State.scrollPropertyTop] - ($scrollTarget1.offset().top + scrollOffset)) <= 100, true, \"Page scrolled top with a scroll offset.\");\r\n\r\n\t\t\t\t\tdone();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.velocity({opacity: 0.5}, function() {\r\n\t\t\t\t$details\r\n\t\t\t\t\t\t.velocity({opacity: 0.5}, 500)\r\n\t\t\t\t\t\t.velocity(\"scroll\", 500)\r\n\t\t\t\t\t\t.velocity({opacity: 1}, 500, function() {\r\n\t\t\t\t\t\t\t//alert(Velocity.State.scrollAnchor[Velocity.State.scrollPropertyTop] + \" \" + ($details.offset().top + scrollOffset))\r\n\t\t\t\t\t\t\tassert.equal(Math.abs(Velocity.State.scrollAnchor[Velocity.State.scrollPropertyTop] - ($details.offset().top + scrollOffset)) <= 100, true, \"Page scroll top was chained.\");\r\n\r\n\t\t\t\t\t\t\tdone();\r\n\r\n\t\t\t\t\t\t\t//$scrollTarget1.remove();\r\n\r\n\t\t\t\t\t\t\t$scrollTarget2\r\n\t\t\t\t\t\t\t\t\t.velocity(\"scroll\", {duration: 500, axis: \"x\", offset: scrollOffset, complete: function() {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Phones can reposition the browser's scroll position by a 10 pixels or so, so we just check for a value that's within that range. */\r\n\t\t\t\t\t\t\t\t\t\t\tassert.equal(Math.abs(Velocity.State.scrollAnchor[Velocity.State.scrollPropertyLeft] - ($scrollTarget2.offset().left + scrollOffset)) <= 100, true, \"Page scrolled left with a scroll offset.\");\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tdone();\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t.velocity({opacity: 0.5}, function() {\r\n\t\t\t\t\t\t\t\t\t\t$details\r\n\t\t\t\t\t\t\t\t\t\t\t\t.velocity({opacity: 0.5}, 500)\r\n\t\t\t\t\t\t\t\t\t\t\t\t.velocity(\"scroll\", {duration: 500, axis: \"x\"})\r\n\t\t\t\t\t\t\t\t\t\t\t\t.velocity({opacity: 1}, 500, function() {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tassert.equal(Math.abs(Velocity.State.scrollAnchor[Velocity.State.scrollPropertyLeft] - ($details.offset().left + scrollOffset)) <= 100, true, \"Page scroll left was chained.\");\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdone();\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t});\r\n});\r\n\r\n/* Element scrolling. */\r\nQUnit.skip(\"Scroll (Element)\", function(assert) {\r\n\tvar done = assert.async(2),\r\n\t\t\t$scrollTarget1 = $(\"\\\r\n\t\t\t\t\t
\\\r\n\t\t\t\t\t\taaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\r\n\t\t\t\t\t\taaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\r\n\t\t\t\t\t\taaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\r\n\t\t\t\t\t\taaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\r\n\t\t\t\t\t\taaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\r\n\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\t\tStop #1\\\r\n\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\t\tStop #2\\\r\n\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t
\\\r\n\t\t\t\t\");\r\n\r\n\tassert.expect(2);\r\n\t$scrollTarget1\r\n\t\t\t.css({position: \"absolute\", backgroundColor: \"white\", top: 100, left: \"50%\", width: 500, height: 100, overflowY: \"scroll\"})\r\n\t\t\t.appendTo($(\"body\"));\r\n\r\n\t/* Test with a jQuery object container. */\r\n\t$(\"#scrollerChild1\").velocity(\"scroll\", {container: $(\"#scroller\"), duration: 750, complete: function() {\r\n\t\t\t/* Test with a raw DOM element container. */\r\n\t\t\t$(\"#scrollerChild2\").velocity(\"scroll\", {container: $(\"#scroller\")[0], duration: 750, complete: function() {\r\n\t\t\t\t\t/* This test is purely visual. */\r\n\t\t\t\t\tassert.ok(true);\r\n\r\n\t\t\t\t\t$scrollTarget1.remove();\r\n\r\n\t\t\t\t\tvar $scrollTarget2 = $(\"\\\r\n\t\t\t\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\t\t\t\t\t\tStop #1\\\r\n\t\t\t\t\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\t\t\t\t\tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\r\n\t\t\t\t\t\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\t\t\t\t\t\tcccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\\r\n\t\t\t\t\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\t\t\t\t\t\tStop #2\\\r\n\t\t\t\t\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\t\t\t\t\tdddddddddddddddddddddddddddddddddddddddddddddddddddddddd\\\r\n\t\t\t\t\t\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\t\t\t\t\t\teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\\\r\n\t\t\t\t\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\t\t\t\t
\\\r\n\t\t\t\t\t\t\t\t\");\r\n\r\n\t\t\t\t\t$scrollTarget2\r\n\t\t\t\t\t\t\t.css({position: \"absolute\", backgroundColor: \"white\", top: 100, left: \"50%\", width: 100, height: 500, overflowX: \"scroll\"})\r\n\t\t\t\t\t\t\t.appendTo($(\"body\"));\r\n\r\n\t\t\t\t\t/* Test with a jQuery object container. */\r\n\t\t\t\t\t$(\"#scrollerChild2\").velocity(\"scroll\", {axis: \"x\", container: $(\"#scroller\"), duration: 750, complete: function() {\r\n\t\t\t\t\t\t\t/* Test with a raw DOM element container. */\r\n\t\t\t\t\t\t\t$(\"#scrollerChild1\").velocity(\"scroll\", {axis: \"x\", container: $(\"#scroller\")[0], duration: 750, complete: function() {\r\n\t\t\t\t\t\t\t\t\t/* This test is purely visual. */\r\n\t\t\t\t\t\t\t\t\tassert.ok(true);\r\n\r\n\t\t\t\t\t\t\t\t\t$scrollTarget2.remove();\r\n\r\n\t\t\t\t\t\t\t\t\tdone();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tdone();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n});\r\n\t","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Stop\", async function(assert) {\r\n\tasync(assert, 1, function(done) {\r\n\t\tVelocity(getTarget(), \"stop\");\r\n\t\tassert.ok(true, \"Calling on an element that isn't animating doesn't cause an error.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, function(done) {\r\n\t\tconst $target = getTarget();\r\n\r\n\t\tVelocity($target, defaultProperties, defaultOptions);\r\n\t\tVelocity($target, {top: 0}, defaultOptions);\r\n\t\tVelocity($target, {width: 0}, defaultOptions);\r\n\t\tVelocity($target, \"stop\");\r\n\t\tassert.ok(true, \"Calling on an element that is animating doesn't cause an error.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget(),\r\n\t\t\tstartOpacity = getPropertyValue($target, \"opacity\");\r\n\r\n\t\tVelocity($target, {opacity: [0, 1]}, defaultOptions);\r\n\t\tawait sleep(defaultOptions.duration as number / 2);\r\n\t\tVelocity($target, \"stop\");\r\n\t\tassert.close(parseFloat(getPropertyValue($target, \"opacity\")), parseFloat(startOpacity) / 2, 0.1, \"Animation runs until stopped.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\t\tlet begin = false;\r\n\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tdelay: 1000,\r\n\t\t\tbegin: () => {begin = true}\r\n\t\t});\r\n\t\tawait sleep(500);\r\n\t\tVelocity($target, \"stop\");\r\n\t\tassert.notOk(begin, \"Stop animation before delay ends.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 2, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\t\tlet complete1 = false,\r\n\t\t\tcomplete2 = false;\r\n\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tqueue: \"test1\",\r\n\t\t\tcomplete: () => {complete1 = true}\r\n\t\t});\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tqueue: \"test2\",\r\n\t\t\tcomplete: () => {complete2 = true}\r\n\t\t});\r\n\t\tVelocity($target, \"stop\", \"test1\");\r\n\t\tawait sleep(defaultOptions.duration as number * 2);\r\n\t\tassert.ok(complete2, \"Stop animation with correct queue.\");\r\n\t\tassert.notOk(complete1, \"Don't stop animation with wrong queue.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 1, async function(done) {\r\n\t\tconst $target = getTarget();\r\n\t\tlet begin1 = false,\r\n\t\t\tbegin2 = false;\r\n\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tbegin: () => {begin1 = true}\r\n\t\t});\r\n\t\tVelocity($target, {width: \"500px\"}, {\r\n\t\t\tbegin: () => {begin2 = true}\r\n\t\t});\r\n\t\tVelocity($target, \"stop\", true);\r\n\t\tawait sleep(defaultOptions.duration as number * 2);\r\n\t\tassert.notOk(begin1 || begin2, \"Stop 'true' stops all animations.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tasync(assert, 2, async function(done) {\r\n\t\tconst $target = getTarget(),\r\n\t\t\tanim = Velocity($target, {opacity: [0, 1]}, {\r\n\t\t\t\tqueue: \"test\",\r\n\t\t\t\tbegin: () => {begin1 = true}\r\n\t\t\t});\r\n\t\tlet begin1 = false,\r\n\t\t\tbegin2 = false;\r\n\r\n\t\tVelocity($target, {opacity: [0, 1]}, {\r\n\t\t\tbegin: () => {begin2 = true}\r\n\t\t});\r\n\t\tanim.velocity(\"stop\");\r\n\t\tawait sleep(defaultOptions.duration as number * 2);\r\n\t\tassert.notOk(begin1, \"Stop without arguments on a chain stops chain animations.\");\r\n\t\tassert.ok(begin2, \"Stop without arguments on a chain doesn't stop other animations.\");\r\n\r\n\t\tdone();\r\n\t});\r\n\r\n\tassert.expect(async());\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Tween\", function(assert) {\r\n\tvar $target1 = getTarget(),\r\n\t\tstartOpacity = $target1.style.opacity;\r\n\r\n\tassert.expect(11);\r\n\r\n\tassert.raises(() => {(Velocity as any)(\"tween\", \"invalid\")}, \"Invalid percentComplete throws an error.\");\r\n\tassert.raises(() => {(Velocity as any)([$target1, $target1], \"tween\", \"invalid\")}, \"Passing more than one target throws an error.\");\r\n\tassert.raises(() => {(Velocity as any)(\"tween\", 0, [\"invalid\"])}, \"Invalid propertyMap throws an error.\");\r\n\tassert.raises(() => {(Velocity as any)(\"tween\", 0, \"invalid\", 1)}, \"Property without an element must be forcefed or throw an error.\");\r\n\r\n\tassert.equal($target1.velocity(\"tween\", 0.5, \"opacity\", [1, 0], \"linear\"), \"0.5\", \"Calling on an chain returns the correct value.\");\r\n\tassert.equal(Velocity($target1, \"tween\", 0.5, \"opacity\", [1, 0], \"linear\"), \"0.5\", \"Calling with an element returns the correct value.\");\r\n\tassert.equal(Velocity(\"tween\", 0.5, \"opacity\", [1, 0], \"linear\"), \"0.5\", \"Calling without an element returns the correct value.\");\r\n\tassert.equal($target1.style.opacity, startOpacity, \"Ensure that the element is not altered.\");\r\n\r\n\tassert.equal(typeof Velocity($target1, \"tween\", 0.5, \"opacity\", [1, 0], \"linear\"), \"string\", \"Calling a single property returns a value.\");\r\n\tassert.equal(typeof Velocity($target1, \"tween\", 0.5, {opacity: [1, 0]}, \"linear\"), \"object\", \"Calling a propertiesMap returns an object.\");\r\n\tassert.deepEqual($target1.velocity(\"tween\", 0.5, {opacity: [1, 0]}, \"linear\"), Velocity($target1, \"tween\", 0.5, {opacity: [1, 0]}, \"linear\"), \"Calling directly returns the same as a chain.\");\r\n});\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.module(\"Feature\");\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"'velocity-animating' Classname\", function(assert) {\r\n\tvar done = assert.async(1);\r\n\r\n\tVelocity(getTarget(), defaultProperties, {\r\n\t\tbegin: function(elements) {\r\n\t\t\tassert.equal(/velocity-animating/.test(elements[0].className), true, \"Class added.\");\r\n\t\t},\r\n\t\tcomplete: function(elements) {\r\n\t\t\tassert.equal(/velocity-animating/.test(elements[0].className), false, \"Class removed.\");\r\n\t\t}\r\n\t}).then(done);\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.skip(\"Colors (Shorthands)\", function(assert) {\r\n\tvar $target = getTarget();\r\n\r\n\tVelocity($target, {borderColor: \"#7871c2\", color: [\"#297dad\", \"spring\", \"#5ead29\"]});\r\n\r\n\t//\tassert.equal(Data($target).style.borderColorRed.endValue, 120, \"Hex #1a component.\");\r\n\t//\tassert.equal(Data($target).style.borderColorGreen.endValue, 113, \"Hex #1b component.\");\r\n\t//\tassert.equal(Data($target).style.borderColorBlue.endValue, 194, \"Hex #1c component.\");\r\n\t//\tassert.equal(Data($target).style.colorRed.easing, \"spring\", \"Per-property easing.\");\r\n\t//\tassert.equal(Data($target).style.colorRed.startValue, 94, \"Forcefed hex #2a component.\");\r\n\t//\tassert.equal(Data($target).style.colorGreen.startValue, 173, \"Forcefed hex #2b component.\");\r\n\t//\tassert.equal(Data($target).style.colorBlue.startValue, 41, \"Forcefed hex #2c component.\");\r\n\t//\tassert.equal(Data($target).style.colorRed.endValue, 41, \"Hex #3a component.\");\r\n\t//\tassert.equal(Data($target).style.colorGreen.endValue, 125, \"Hex #3b component.\");\r\n\t//\tassert.equal(Data($target).style.colorBlue.endValue, 173, \"Hex #3c component.\");\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.todo(\"Forcefeeding\", function(assert) {\r\n\t/* Note: Start values are always converted into pixels. W test the conversion ratio we already know to avoid additional work. */\r\n\tlet testStartWidth = \"1rem\",\r\n\t\ttestStartWidthToPx = \"16px\",\r\n\t\ttestStartHeight = \"10px\";\r\n\r\n\tvar $target = getTarget();\r\n\tVelocity($target, {\r\n\t\twidth: [100, \"linear\", testStartWidth],\r\n\t\theight: [100, testStartHeight],\r\n\t\topacity: [defaultProperties.opacity as any, \"easeInQuad\"]\r\n\t});\r\n\r\n\tassert.equal(Data($target).cache.width, parseFloat(testStartWidthToPx), \"Forcefed value #1 passed to tween.\");\r\n\tassert.equal(Data($target).cache.height, parseFloat(testStartHeight), \"Forcefed value #2 passed to tween.\");\r\n\tassert.equal(Data($target).cache.opacity, defaultStyles.opacity, \"Easing was misinterpreted as forcefed value.\");\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Promises\", function(assert) {\r\n\tlet done = assert.async(9),\r\n\t\tresult: VelocityResult,\r\n\t\tstart = getNow();\r\n\r\n\tassert.expect(9);\r\n\r\n\t/**********************\r\n\t Invalid Arguments\r\n\t **********************/\r\n\r\n\t(Velocity as any)().then(function() {\r\n\t\tassert.notOk(true, \"Calling with no arguments should reject a Promise.\");\r\n\t}, function() {\r\n\t\tassert.ok(true, \"Calling with no arguments should reject a Promise.\");\r\n\t}).then(done);\r\n\r\n\tVelocity(getTarget() as any).then(function() {\r\n\t\tassert.notOk(true, \"Calling with no properties should reject a Promise.\");\r\n\t}, function() {\r\n\t\tassert.ok(true, \"Calling with no properties should reject a Promise.\");\r\n\t}).then(done);\r\n\r\n\tVelocity(getTarget(), {}).then(function() {\r\n\t\tassert.ok(true, \"Calling with empty properties should not reject a Promise.\");\r\n\t}, function() {\r\n\t\tassert.notOk(true, \"Calling with empty properties should not reject a Promise.\");\r\n\t}).then(done);\r\n\r\n\tVelocity(getTarget(), {}, defaultOptions.duration).then(function() {\r\n\t\tassert.ok(true, \"Calling with empty properties + duration should not reject a Promise.\");\r\n\t}, function() {\r\n\t\tassert.notOk(true, \"Calling with empty properties + duration should not reject a Promise.\");\r\n\t}).then(done);\r\n\r\n\t/* Invalid arguments: Ensure an error isn't thrown. */\r\n\tVelocity(getTarget(), {} as any, \"fakeArg1\", \"fakeArg2\").then(function() {\r\n\t\tassert.ok(true, \"Calling with invalid arguments should reject a Promise.\");\r\n\t}, function() {\r\n\t\tassert.notOk(true, \"Calling with invalid arguments should reject a Promise.\");\r\n\t}).then(done);\r\n\r\n\tresult = Velocity(getTarget(), defaultProperties, defaultOptions);\r\n\tresult.then(function(elements) {\r\n\t\tassert.equal(elements.length, 1, \"Calling with a single element fulfills with a single element array.\");\r\n\t}, function() {\r\n\t\tassert.ok(false, \"Calling with a single element fulfills with a single element array.\");\r\n\t}).then(done);\r\n\tresult.velocity(defaultProperties).then(function(elements) {\r\n\t\tassert.ok(getNow() - start > 2 * (defaultOptions.duration as number), \"Queued call fulfilled after correct delay.\");\r\n\t}, function() {\r\n\t\tassert.ok(false, \"Queued call fulfilled after correct delay.\");\r\n\t}).then(done);\r\n\r\n\tresult = Velocity([getTarget(), getTarget()], defaultProperties, defaultOptions);\r\n\tresult.then(function(elements) {\r\n\t\tassert.equal(elements.length, 2, \"Calling with multiple elements fulfills with a multiple element array.\");\r\n\t}, function() {\r\n\t\tassert.ok(false, \"Calling with multiple elements fulfills with a multiple element array.\");\r\n\t}).then(done);\r\n\r\n\tlet anim = Velocity(getTarget(), defaultProperties, defaultOptions);\r\n\r\n\tanim.then(function() {\r\n\t\tassert.ok(getNow() - start < (defaultOptions.duration as number), \"Stop call fulfilled after correct delay.\");\r\n\t}, function() {\r\n\t\tassert.ok(false, \"Stop call fulfilled after correct delay.\");\r\n\t}).then(done);\r\n\tanim.velocity(\"stop\");\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Redirects\", function(assert) {\r\n\tvar done = assert.async(2),\r\n\t\t$target1 = getTarget(),\r\n\t\t$target2 = getTarget(),\r\n\t\tredirectOptions = {duration: 1500};\r\n\r\n\t((window as any).jQuery || (window as any).Zepto || window).Velocity.Redirects.test = function(element, options, elementIndex, elementsLength) {\r\n\t\tif (elementIndex === 0) {\r\n\t\t\tassert.deepEqual(element, $target1, \"Element passed through #1.\");\r\n\t\t\tassert.deepEqual(options, redirectOptions, \"Options object passed through #1.\");\r\n\t\t\tassert.equal(elementIndex, 0, \"Element index passed through #1.\");\r\n\t\t\tassert.equal(elementsLength, 2, \"Elements length passed through #1.\");\r\n\r\n\t\t\tdone();\r\n\t\t} else if (elementIndex === 1) {\r\n\t\t\tassert.deepEqual(element, $target2, \"Element passed through #2.\");\r\n\t\t\tassert.deepEqual(options, redirectOptions, \"Options object passed through #2.\");\r\n\t\t\tassert.equal(elementIndex, 1, \"Element index passed through #2.\");\r\n\t\t\tassert.equal(elementsLength, 2, \"Elements length passed through #2.\");\r\n\r\n\t\t\tdone();\r\n\t\t}\r\n\t};\r\n\r\n\tVelocity([$target1, $target2], \"test\", redirectOptions);\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.todo(\"Value Functions\", function(assert) {\r\n\tvar testWidth = 10;\r\n\r\n\tvar $target1 = getTarget(),\r\n\t\t$target2 = getTarget();\r\n\r\n\tVelocity([$target1, $target2], {\r\n\t\twidth: function(i, total) {\r\n\t\t\treturn (i + 1) / total * testWidth;\r\n\t\t}\r\n\t});\r\n\r\n\tassert.equal(Data($target1).cache.width, parseFloat(testWidth as any) / 2, \"Function value #1 passed to tween.\");\r\n\tassert.equal(Data($target2).cache.width, parseFloat(testWidth as any), \"Function value #2 passed to tween.\");\r\n});\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.module(\"UI Pack\");\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.skip(\"Packaged Effect: slideUp/Down\", function(assert) {\r\n\tvar done = assert.async(4),\r\n\t\t$target1 = getTarget(),\r\n\t\t$target2 = getTarget(),\r\n\t\tinitialStyles = {\r\n\t\t\tdisplay: \"none\",\r\n\t\t\tpaddingTop: \"123px\"\r\n\t\t};\r\n\r\n\t$target1.style.display = initialStyles.display;\r\n\t$target1.style.paddingTop = initialStyles.paddingTop;\r\n\r\n\tVelocity($target1, \"slideDown\", {\r\n\t\tbegin: function(elements) {\r\n\t\t\tassert.deepEqual(elements, [$target1], \"slideDown: Begin callback returned.\");\r\n\r\n\t\t\tdone();\r\n\t\t},\r\n\t\tcomplete: function(elements) {\r\n\t\t\tassert.deepEqual(elements, [$target1], \"slideDown: Complete callback returned.\");\r\n\t\t\t//\t\t\tassert.equal(Velocity.CSS.getPropertyValue($target1, \"display\"), Velocity.CSS.Values.getDisplayType($target1), \"slideDown: display set to default.\");\r\n\t\t\tassert.notEqual(Velocity.CSS.getPropertyValue($target1, \"height\"), 0, \"slideDown: height set.\");\r\n\t\t\tassert.equal(Velocity.CSS.getPropertyValue($target1, \"paddingTop\"), initialStyles.paddingTop, \"slideDown: paddingTop set.\");\r\n\r\n\t\t\tdone();\r\n\t\t}\r\n\t\t//\t}).then(function(elements) {\r\n\t\t//\t\tassert.deepEqual(elements, [$target1], \"slideDown: Promise fulfilled.\");\r\n\t\t//\r\n\t\t//\t\tdone();\r\n\t});\r\n\r\n\tVelocity($target2, \"slideUp\", {\r\n\t\tbegin: function(elements) {\r\n\t\t\tassert.deepEqual(elements, [$target2], \"slideUp: Begin callback returned.\");\r\n\r\n\t\t\tdone();\r\n\t\t},\r\n\t\tcomplete: function(elements) {\r\n\t\t\tassert.deepEqual(elements, [$target2], \"slideUp: Complete callback returned.\");\r\n\t\t\tassert.equal(Velocity.CSS.getPropertyValue($target2, \"display\"), 0, \"slideUp: display set to none.\");\r\n\t\t\tassert.notEqual(Velocity.CSS.getPropertyValue($target2, \"height\"), 0, \"slideUp: height reset.\");\r\n\t\t\tassert.equal(Velocity.CSS.getPropertyValue($target1, \"paddingTop\"), initialStyles.paddingTop, \"slideUp: paddingTop reset.\");\r\n\r\n\t\t\tdone();\r\n\t\t}\r\n\t\t//\t}).then(function(elements) {\r\n\t\t//\t\tassert.deepEqual(elements, [$target2], \"slideUp: Promise fulfilled.\");\r\n\t\t//\r\n\t\t//\t\tdone();\r\n\t});\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.skip(\"Call Options\", function(assert) {\r\n\tvar done = assert.async(2),\r\n\t\t\tUICallOptions1 = {\r\n\t\t\t\tdelay: 123,\r\n\t\t\t\tduration: defaultOptions.duration,\r\n\t\t\t\teasing: \"spring\" // Should get ignored\r\n\t\t\t},\r\n\t\t\t$target1 = getTarget();\r\n\r\n\t//assert.expect(1);\r\n\tVelocity($target1, \"transition.slideLeftIn\", UICallOptions1);\r\n\r\n\tsetTimeout(function() {\r\n\t\t// Note: We can do this because transition.slideLeftIn is composed of a single call.\r\n//\t\tassert.equal(Data($target1).opts.delay, UICallOptions1.delay, \"Whitelisted option passed in.\");\r\n//\t\tassert.notEqual(Data($target1).opts.easing, UICallOptions1.easing, \"Non-whitelisted option not passed in #1a.\");\r\n//\t\tassert.equal(!/velocity-animating/.test(Data($target1).className), true, \"Duration option passed in.\");\r\n\r\n\t\tdone();\r\n\t}, completeCheckDuration);\r\n\r\n\tvar UICallOptions2 = {\r\n\t\tstagger: 100,\r\n\t\tduration: defaultOptions.duration,\r\n\t\tbackwards: true\r\n\t};\r\n\r\n\tvar $targets = [getTarget(), getTarget(), getTarget()];\r\n\tVelocity($targets, \"transition.slideLeftIn\", UICallOptions2);\r\n\r\n\tsetTimeout(function() {\r\n//\t\tassert.equal(Data($targets[0]).opts.delay, UICallOptions2.stagger * 2, \"Backwards stagger delay passed in #1a.\");\r\n//\t\tassert.equal(Data($targets[1]).opts.delay, UICallOptions2.stagger * 1, \"Backwards stagger delay passed in #1b.\");\r\n//\t\tassert.equal(Data($targets[2]).opts.delay, UICallOptions2.stagger * 0, \"Backwards stagger delay passed in #1c.\");\r\n\r\n\t\tdone();\r\n\t}, completeCheckDuration);\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.skip(\"Callbacks\", function(assert) {\r\n\tvar done = assert.async(2),\r\n\t\t$targets = [getTarget(), getTarget()];\r\n\r\n\tassert.expect(3);\r\n\tVelocity($targets, \"transition.bounceIn\", {\r\n\t\tbegin: function(elements) {\r\n\t\t\tassert.deepEqual(elements, $targets, \"Begin callback returned.\");\r\n\r\n\t\t\tdone();\r\n\t\t},\r\n\t\tcomplete: function(elements) {\r\n\t\t\tassert.deepEqual(elements, $targets, \"Complete callback returned.\");\r\n\r\n\t\t\tdone();\r\n\t\t}\r\n\t\t//\t}).then(function(elements) {\r\n\t\t//\t\tassert.deepEqual(elements, $targets, \"Promise fulfilled.\");\r\n\t\t//\r\n\t\t//\t\tdone();\r\n\t});\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.skip(\"In/Out\", function(assert) {\r\n\tvar done = assert.async(2),\r\n\t\t$target1 = getTarget(),\r\n\t\t$target2 = getTarget(),\r\n\t\t$target3 = getTarget(),\r\n\t\t$target4 = getTarget(),\r\n\t\t$target5 = getTarget(),\r\n\t\t$target6 = getTarget();\r\n\r\n\tVelocity($target1, \"transition.bounceIn\", defaultOptions.duration);\r\n\r\n\tVelocity($target2, \"transition.bounceIn\", {duration: defaultOptions.duration, display: \"inline\"});\r\n\r\n\tVelocity($target3, \"transition.bounceOut\", defaultOptions.duration);\r\n\r\n\tVelocity($target4, \"transition.bounceOut\", {duration: defaultOptions.duration, display: null});\r\n\r\n\t$target5.style.visibility = \"hidden\";\r\n\tVelocity($target5, \"transition.bounceIn\", {duration: defaultOptions.duration, visibility: \"visible\"});\r\n\r\n\t$target6.style.visibility = \"visible\";\r\n\tVelocity($target6, \"transition.bounceOut\", {duration: defaultOptions.duration, visibility: \"hidden\"});\r\n\r\n\tassert.expect(8);\r\n\tsetTimeout(function() {\r\n\t\tassert.notEqual(Velocity.CSS.getPropertyValue($target3, \"display\"), 0, \"Out: display not prematurely set to none.\");\r\n\t\tassert.notEqual(Velocity.CSS.getPropertyValue($target6, \"visibility\"), \"hidden\", \"Out: visibility not prematurely set to hidden.\");\r\n\r\n\t\tdone();\r\n\t}, asyncCheckDuration);\r\n\r\n\tsetTimeout(function() {\r\n\t\t//\t\tassert.equal(Velocity.CSS.getPropertyValue($target1, \"display\"), Velocity.CSS.Values.getDisplayType($target1), \"In: display set to default.\");\r\n\t\tassert.equal(Velocity.CSS.getPropertyValue($target2, \"display\"), \"inline\", \"In: Custom inline value set.\");\r\n\r\n\t\tassert.equal(Velocity.CSS.getPropertyValue($target3, \"display\"), 0, \"Out: display set to none.\");\r\n\t\t//\t\tassert.equal(Velocity.CSS.getPropertyValue($target4, \"display\"), Velocity.CSS.Values.getDisplayType($target3), \"Out: No display value set.\");\r\n\r\n\t\tassert.equal(Velocity.CSS.getPropertyValue($target5, \"visibility\"), \"visible\", \"In: visibility set to visible.\");\r\n\t\tassert.equal(Velocity.CSS.getPropertyValue($target6, \"visibility\"), \"hidden\", \"Out: visibility set to hidden.\");\r\n\r\n\t\tdone();\r\n\t}, completeCheckDuration);\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.skip(\"RegisterEffect\", function(assert) {\r\n\tvar done = assert.async(1),\r\n\t\teffectDefaultDuration = 800;\r\n\r\n\tassert.expect(2);\r\n\tVelocity.RegisterEffect(\"callout.twirl\", {\r\n\t\tdefaultDuration: effectDefaultDuration,\r\n\t\tcalls: [\r\n\t\t\t[{rotateZ: 1080}, 0.50],\r\n\t\t\t[{scaleX: 0.5}, 0.25, {easing: \"spring\"}],\r\n\t\t\t[{scaleX: 1}, 0.25, {easing: \"spring\"}]\r\n\t\t]\r\n\t});\r\n\r\n\tvar $target1 = getTarget();\r\n\tVelocity($target1, \"callout.twirl\");\r\n\r\n\tsetTimeout(function() {\r\n\t\tassert.equal(parseFloat(Velocity.CSS.getPropertyValue($target1, \"rotateZ\") as string), 1080, \"First call's property animated.\");\r\n\t\tassert.equal(parseFloat(Velocity.CSS.getPropertyValue($target1, \"scaleX\") as string), 1, \"Last call's property animated.\");\r\n\r\n\t\tdone();\r\n\t}, effectDefaultDuration * 1.50);\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.skip(\"RunSequence\", function(assert) {\r\n\r\n\tvar done = assert.async(1),\r\n\t\t$target1 = getTarget(),\r\n\t\t$target2 = getTarget(),\r\n\t\t$target3 = getTarget(),\r\n\t\tmySequence = [\r\n\t\t\t{elements: $target1, properties: {opacity: defaultProperties.opacity}},\r\n\t\t\t{elements: $target2, properties: {height: defaultProperties.height}},\r\n\t\t\t{\r\n\t\t\t\telements: $target3, properties: {width: defaultProperties.width}, options: {\r\n\t\t\t\t\tdelay: 100,\r\n\t\t\t\t\tsequenceQueue: false,\r\n\t\t\t\t\tcomplete: function() {\r\n\t\t\t\t\t\tassert.equal(parseFloat(Velocity.CSS.getPropertyValue($target1, \"opacity\") as string), defaultProperties.opacity, \"First call's property animated.\");\r\n\t\t\t\t\t\tassert.equal(parseFloat(Velocity.CSS.getPropertyValue($target2, \"height\") as string), defaultProperties.height, \"Second call's property animated.\");\r\n\t\t\t\t\t\tassert.equal(parseFloat(Velocity.CSS.getPropertyValue($target3, \"width\") as string), defaultProperties.width, \"Last call's property animated.\");\r\n\r\n\t\t\t\t\t\tdone();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t];\r\n\r\n\tassert.expect(3);\r\n\tVelocity.RunSequence(mySequence);\r\n});\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.module(\"Properties\");\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"GenericReordering\", function(assert) {\r\n\r\n\tfunction genericReordering(element: HTMLorSVGElement, propertyValue?: string): string | void {\r\n\t\tif (propertyValue === undefined) {\r\n\t\t\tpropertyValue = Velocity(element, \"style\", \"textShadow\");\r\n\t\t\tconst split = propertyValue.split(/\\s/g),\r\n\t\t\t\tfirstPart = split[0];\r\n\t\t\tlet newValue = \"\";\r\n\r\n\t\t\tif (Velocity.CSS.ColorNames[firstPart]) {\r\n\t\t\t\tsplit.shift();\r\n\t\t\t\tsplit.push(firstPart);\r\n\t\t\t\tnewValue = split.join(\" \");\r\n\t\t\t} else if (firstPart.match(/^#|^hsl|^rgb|-gradient/)) {\r\n\t\t\t\tconst matchedString = propertyValue.match(/(hsl.*\\)|#[\\da-fA-F]+|rgb.*\\)|.*gradient.*\\))\\s/g)[0];\r\n\r\n\t\t\t\tnewValue = propertyValue.replace(matchedString, \"\") + \" \" + matchedString.trim();\r\n\t\t\t} else {\r\n\t\t\t\tnewValue = propertyValue;\r\n\t\t\t}\r\n\t\t\treturn newValue;\r\n\t\t}\r\n\t}\r\n\r\n\tVelocity(\"registerNormalization\", Element, \"genericReordering\", genericReordering);\r\n\r\n\tlet tests = [\r\n\t\t{\r\n\t\t\ttest: \"hsl(16, 100%, 66%) 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px hsl(16, 100%, 66%)\",\r\n\t\t}, {\r\n\t\t\ttest: \"-webkit-linear-gradient(red, yellow) 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px -webkit-linear-gradient(rgba(255,0,0,1), rgba(255,255,0,1))\",\r\n\t\t}, {\r\n\t\t\ttest: \"-o-linear-gradient(red, yellow) 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px -o-linear-gradient(rgba(255,0,0,1), rgba(255,255,0,1))\",\r\n\t\t}, {\r\n\t\t\ttest: \"-moz-linear-gradient(red, yellow) 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px -moz-linear-gradient(rgba(255,0,0,1), rgba(255,255,0,1))\",\r\n\t\t}, {\r\n\t\t\ttest: \"linear-gradient(red, yellow) 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px linear-gradient(rgba(255,0,0,1), rgba(255,255,0,1))\",\r\n\t\t}, {\r\n\t\t\ttest: \"red 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px rgba(255,0,0,1)\",\r\n\t\t}, {\r\n\t\t\ttest: \"#000000 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px rgba(0,0,0,1)\",\r\n\t\t}, {\r\n\t\t\ttest: \"rgb(0, 0, 0) 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px rgba(0,0,0,1)\",\r\n\t\t}, {\r\n\t\t\ttest: \"rgba(0, 0, 0, 1) 1px 1px 1px\",\r\n\t\t\tresult: \"1px 1px 1px rgba(0,0,0,1)\",\r\n\t\t}, {\r\n\t\t\ttest: \"1px 1px 1px rgb(0, 0, 0)\",\r\n\t\t\tresult: \"1px 1px 1px rgba(0,0,0,1)\",\r\n\t\t},\r\n\t];\r\n\r\n\tfor (let test of tests) {\r\n\t\tlet element = getTarget();\r\n\r\n\t\telement.velocity(\"style\", \"textShadow\", test.test);\r\n\t\tassert.equal(element.velocity(\"style\", \"genericReordering\"), test.result, test.test);\r\n\t}\r\n\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Display\", function(assert) {\r\n\tvar done = assert.async(5);\r\n\r\n\tVelocity(getTarget(), \"style\", \"display\", \"none\")\r\n\t\t.velocity({display: \"block\"}, {\r\n\t\t\tprogress: once(function(elements: VelocityResult) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"display\"), \"block\", \"Display:'block' was set immediately.\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t})\r\n\t\t});\r\n\r\n\tVelocity(getTarget(), \"style\", \"display\", \"none\")\r\n\t\t.velocity(\"style\", \"display\", \"auto\")\r\n\t\t.then(function(elements) {\r\n\t\t\tassert.equal(elements[0].style.display, \"block\", \"Display:'auto' was understood.\");\r\n\t\t\tassert.equal(elements.velocity(\"style\", \"display\"), \"block\", \"Display:'auto' was cached as 'block'.\");\r\n\r\n\t\t\tdone();\r\n\t\t});\r\n\r\n\tVelocity(getTarget(), \"style\", \"display\", \"none\")\r\n\t\t.velocity(\"style\", \"display\", \"\")\r\n\t\t.then(function(elements) {\r\n\t\t\tassert.equal(elements.velocity(\"style\", \"display\"), \"block\", \"Display:'' was reset correctly.\");\r\n\r\n\t\t\tdone();\r\n\t\t});\r\n\r\n\tVelocity(getTarget(), {display: \"none\"}, {\r\n\t\tprogress: once(function(elements: VelocityResult) {\r\n\t\t\tassert.notEqual(elements.velocity(\"style\", \"display\"), \"none\", \"Display:'none' was not set immediately.\");\r\n\r\n\t\t\tdone();\r\n\t\t})\r\n\t}).then(function(elements) {\r\n\t\tassert.equal(elements.velocity(\"style\", \"display\"), \"none\", \"Display:'none' was set upon completion.\");\r\n\r\n\t\tdone();\r\n\t});\r\n});\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nQUnit.test(\"Visibility\", function(assert) {\r\n\tvar done = assert.async(4);\r\n\r\n\tVelocity(getTarget(), \"style\", \"visibility\", \"hidden\")\r\n\t\t.velocity({visibility: \"visible\"}, {\r\n\t\t\tprogress: once(function(elements: VelocityResult) {\r\n\t\t\t\tassert.equal(elements.velocity(\"style\", \"visibility\"), \"visible\", \"Visibility:'visible' was set immediately.\");\r\n\r\n\t\t\t\tdone();\r\n\t\t\t})\r\n\t\t});\r\n\r\n\tVelocity(getTarget(), \"style\", \"visibility\", \"hidden\")\r\n\t\t.velocity(\"style\", \"visibility\", \"\")\r\n\t\t.then(function(elements) {\r\n\t\t\t// NOTE: The test elements inherit \"hidden\", so while illogical it\r\n\t\t\t// is in fact correct.\r\n\t\t\tassert.equal(elements.velocity(\"style\", \"visibility\"), \"hidden\", \"Visibility:'' was reset correctly.\");\r\n\r\n\t\t\tdone();\r\n\t\t});\r\n\r\n\tVelocity(getTarget(), {visibility: \"hidden\"}, {\r\n\t\tprogress: once(function(elements: VelocityResult) {\r\n\t\t\tassert.notEqual(elements.velocity(\"style\", \"visibility\"), \"visible\", \"Visibility:'hidden' was not set immediately.\");\r\n\r\n\t\t\tdone();\r\n\t\t})\r\n\t}).then(function(elements) {\r\n\t\tassert.equal(elements.velocity(\"style\", \"visibility\"), \"hidden\", \"Visibility:'hidden' was set upon completion.\");\r\n\r\n\t\tdone();\r\n\t});\r\n});\r\n","///\r\n///\r\n///\r\n///\r\n///\r\n///\r\n///\r\n///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\ninterface QUnit {\r\n\ttodo(name: string, callback: (assert: Assert) => void): void;\r\n}\r\n\r\ninterface Assert {\r\n\tclose: {\r\n\t\t(actual: number, expected: number, maxDifference: number, message: string): void;\r\n\t\tpercent(actual: number, expected: number, maxPercentDifference: number, message: string): void;\r\n\t};\r\n\tnotClose: {\r\n\t\t(actual: number, expected: number, minDifference: number, message: string): void;\r\n\t\tpercent(actual: number, expected: number, minPercentDifference: number, message: string): void;\r\n\t};\r\n}\r\n\r\ninterface VelocityExtended {\r\n\t__count?: number;\r\n\t__start?: number;\r\n}\r\n\r\n// Needed tests:\r\n// - new stop behvaior\r\n// - e/p/o shorthands\r\n\r\nconst defaultStyles = {\r\n\topacity: 1,\r\n\twidth: 1,\r\n\theight: 1,\r\n\tmarginBottom: 1,\r\n\tcolorGreen: 200,\r\n\ttextShadowBlur: 3\r\n},\r\n\tdefaultProperties: VelocityProperties = {\r\n\t\topacity: String(defaultStyles.opacity / 2),\r\n\t\twidth: defaultStyles.width * 2 + \"px\",\r\n\t\theight: defaultStyles.height * 2 + \"px\"\r\n\t},\r\n\tdefaultOptions: VelocityOptions = {\r\n\t\tqueue: \"\",\r\n\t\tduration: 300,\r\n\t\teasing: \"swing\",\r\n\t\tbegin: null,\r\n\t\tcomplete: null,\r\n\t\tprogress: null,\r\n\t\tloop: false,\r\n\t\tdelay: 0,\r\n\t\tmobileHA: true\r\n\t},\r\n\tisMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),\r\n\tisAndroid = /Android/i.test(navigator.userAgent),\r\n\t$ = ((window as any).jQuery || (window as any).Zepto),\r\n\t$qunitStage = document.getElementById(\"qunit-stage\"),\r\n\tasyncCheckDuration = (defaultOptions.duration as number) / 2,\r\n\tcompleteCheckDuration = (defaultOptions.duration as number) * 2,\r\n\tIE = (function() {\r\n\t\tif ((document as any).documentMode) {\r\n\t\t\treturn (document as any).documentMode as number;\r\n\t\t} else {\r\n\t\t\tfor (var i = 7; i > 0; i--) {\r\n\t\t\t\tvar div = document.createElement(\"div\");\r\n\r\n\t\t\t\tdiv.innerHTML = \"\";\r\n\t\t\t\tif (div.getElementsByTagName(\"span\").length) {\r\n\t\t\t\t\tdiv = null;\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t\tdiv = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t})();\r\n\r\nlet targets: HTMLDivElement[] = [],\r\n\tasyncCount = 0;\r\n\r\nQUnit.config.reorder = false;\r\n\r\nfunction applyStartValues(element: HTMLElement, startValues: {[name: string]: string}) {\r\n\t$.each(startValues, function(property, startValue) {\r\n\t\telement.style[property] = startValue;\r\n\t});\r\n}\r\n\r\nfunction Data(element): ElementData {\r\n\treturn (element.jquery ? element[0] : element).velocityData;\r\n}\r\n\r\nfunction getNow(): number {\r\n\treturn performance && performance.now ? performance.now() : Date.now();\r\n}\r\n\r\nfunction getPropertyValue(element: HTMLElement, property: string): string {\r\n\treturn Velocity.CSS.getPropertyValue(element, property);\r\n}\r\n\r\nfunction getTarget(startValues?: {[name: string]: string}): HTMLDivElement {\r\n\tvar div = document.createElement(\"div\") as HTMLDivElement;\r\n\r\n\tdiv.className = \"target\";\r\n\tdiv.style.opacity = String(defaultStyles.opacity);\r\n\tdiv.style.color = \"rgb(125, \" + defaultStyles.colorGreen + \", 125)\";\r\n\tdiv.style.width = defaultStyles.width + \"px\";\r\n\tdiv.style.height = defaultStyles.height + \"px\";\r\n\tdiv.style.marginBottom = defaultStyles.marginBottom + \"px\";\r\n\tdiv.style.textShadow = \"0px 0px \" + defaultStyles.textShadowBlur + \"px red\";\r\n\t$qunitStage.appendChild(div);\r\n\ttargets.push(div);\r\n\tif (startValues) {\r\n\t\tapplyStartValues(div, startValues);\r\n\t}\r\n\treturn div;\r\n}\r\n\r\nfunction once(func): typeof func {\r\n\tvar done, result;\r\n\r\n\treturn function() {\r\n\t\tif (!done) {\r\n\t\t\tresult = func.apply(this, arguments);\r\n\t\t\tfunc = done = true; // Don't care about type, just let the GC collect if possible\r\n\t\t}\r\n\t\treturn result;\r\n\t};\r\n}\r\n\r\nfunction sleep(ms: number) {\r\n\treturn new Promise(resolve => setTimeout(resolve, ms));\r\n}\r\n\r\n/**\r\n * Create an asyn callback. Each callback must be independant of all others, and\r\n * gets it's own unique done() callback to use. This also requires a count of\r\n * the number of tests run, and the assert object used.\r\n * Call without any arguments to get a total count of tests requested.\r\n */\r\nfunction async(): number;\r\nfunction async(assert: Assert, count: number, callback: (done: () => void) => void): void;\r\nfunction async(assert?: Assert, count?: number, callback?: (done: () => void) => void): number {\r\n\tif (!assert) {\r\n\t\tconst count = asyncCount;\r\n\r\n\t\tasyncCount = 0;\r\n\t\treturn count;\r\n\t}\r\n\tconst done = assert.async(1);\r\n\r\n\tasyncCount += count;\r\n\tsetTimeout(function() {\r\n\t\tcallback(done);\r\n\t}, 1);\r\n}\r\n\r\nfunction isEmptyObject(variable): variable is {} {\r\n\tfor (let name in variable) {\r\n\t\tif (variable.hasOwnProperty(name)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nQUnit.testDone(function() {\r\n\ttry {\r\n\t\tdocument.querySelectorAll(\".velocity-animating\").velocity(\"stop\");\r\n\t} catch (e) {}\r\n\t// Free all targets requested by the current test.\r\n\twhile (targets.length) {\r\n\t\ttry {\r\n\t\t\t$qunitStage.removeChild(targets.pop());\r\n\t\t} catch (e) {}\r\n\t}\r\n\t// Ensure we have reset the test counter.\r\n\tasync();\r\n\t// Make sure Velocity goes back to defaults.\r\n\tVelocity.defaults.reset();\r\n});\r\n\r\n/* Cleanup */\r\nQUnit.done(function(details) {\r\n\t//\t$(\".velocity-animating\").velocity(\"stop\");\r\n\tconsole.log(\"Total: \", details.total, \" Failed: \", details.failed, \" Passed: \", details.passed, \" Runtime: \", details.runtime);\r\n});\r\n\r\n/* Helpful redirect for testing custom and parallel queues. */\r\n// var $div2 = $(\"#DataBody-PropertiesDummy\");\r\n// $.fn.velocity.defaults.duration = 1000;\r\n// $div2.velocity(\"scroll\", { queue: \"test\" })\r\n// $div2.velocity({width: 100}, { queue: \"test\" })\r\n// $div2.velocity({ borderWidth: 50 }, { queue: \"test\" })\r\n// $div2.velocity({height: 20}, { queue: \"test\" })\r\n// $div2.velocity({marginLeft: 200}, { queue: \"test\" })\r\n// $div2.velocity({paddingTop: 60});\r\n// $div2.velocity({marginTop: 100});\r\n// $div2.velocity({paddingRight: 40});\r\n// $div2.velocity({marginTop: 0})\r\n// $div2.dequeue(\"test\")\r\n"]} \ No newline at end of file diff --git a/velocity.js b/velocity.js index 397f8ca4..462ce1ef 100644 --- a/velocity.js +++ b/velocity.js @@ -71,8 +71,6 @@ var TWEEN_NUMBER_REGEX = /[\d\.-]/; var CLASSNAME = "velocity-animating"; -var VERSION = "2.0.1"; - var Duration = { fast: DURATION_FAST, normal: DURATION_NORMAL, @@ -405,15 +403,15 @@ function getValue(args) { animation._flags |= 4 /* STARTED */; } for (var property in animation.tweens) { - var tween_1 = animation.tweens[property], pattern = tween_1[3 /* PATTERN */ ]; + var tween_1 = animation.tweens[property], pattern = tween_1.pattern; var currentValue = "", i = 0; if (pattern) { for (;i < pattern.length; i++) { - var endValue = tween_1[0 /* END */ ][i]; + var endValue = tween_1.end[i]; currentValue += endValue == null ? pattern[i] : endValue; } } - VelocityStatic.CSS.setPropertyValue(animation.element, property, currentValue); + VelocityStatic.CSS.setPropertyValue(animation.element, property, currentValue, tween_1.fn); } VelocityStatic.completeCall(animation); } @@ -799,11 +797,11 @@ function getValue(args) { // If only a single animation is found and we're only targetting a // single element, then return the value directly if (elements.length === 1) { - return VelocityStatic.CSS.getPropertyValue(elements[0], property); + return VelocityStatic.CSS.fixColors(VelocityStatic.CSS.getPropertyValue(elements[0], property)); } var result = []; for (var i = 0; i < elements.length; i++) { - result.push(VelocityStatic.CSS.getPropertyValue(elements[i], property)); + result.push(VelocityStatic.CSS.fixColors(VelocityStatic.CSS.getPropertyValue(elements[i], property))); } return result; } @@ -909,17 +907,17 @@ function getValue(args) { VelocityStatic.expandProperties(fakeAnimation, properties); for (var property in fakeAnimation.tweens) { // For every element, iterate through each property. - var tween_2 = fakeAnimation.tweens[property], easing_1 = tween_2[1 /* EASING */ ] || activeEasing, pattern = tween_2[3 /* PATTERN */ ], rounding = tween_2[4 /* ROUNDING */ ]; + var tween_2 = fakeAnimation.tweens[property], easing_1 = tween_2.easing || activeEasing, pattern = tween_2.pattern; var currentValue = ""; count++; if (pattern) { for (var i = 0; i < pattern.length; i++) { - var startValue = tween_2[2 /* START */ ][i]; + var startValue = tween_2.start[i]; if (startValue == null) { currentValue += pattern[i]; } else { - var result_1 = easing_1(percentComplete, startValue, tween_2[0 /* END */ ][i], property); - currentValue += rounding && rounding[i] ? Math.round(result_1) : result_1; + var result_1 = easing_1(percentComplete, startValue, tween_2.end[i], property); + currentValue += pattern[i] === true ? Math.round(result_1) : result_1; } } } @@ -1036,8 +1034,8 @@ var VelocityStatic; if (fixed) { return fixed; } - return cache[property] = property.replace(/-([a-z])/g, function(match, subMatch) { - return subMatch.toUpperCase(); + return cache[property] = property.replace(/-([a-z])/g, function($, letter) { + return letter.toUpperCase(); }); } CSS.camelCase = camelCase; @@ -1064,7 +1062,7 @@ var VelocityStatic; */ function makeRGBA(ignore, r, g, b) { return "rgba(" + parseInt(r, 16) + "," + parseInt(g, 16) + "," + parseInt(b, 16) + ",1)"; } - var rxColor6 = /#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})/gi, rxColor3 = /#([a-f\d])([a-f\d])([a-f\d])/gi, rxColorName = /(rgba?\(\s*)?(\b[a-z]+\b)/g, rxRGB = /rgba?\([^\)]+\)/gi, rxSpaces = /\s+/g; + var rxColor6 = /#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})/gi, rxColor3 = /#([a-f\d])([a-f\d])([a-f\d])/gi, rxColorName = /(rgba?\(\s*)?(\b[a-z]+\b)/g, rxRGB = /rgb(a?)\(([^\)]+)\)/gi, rxSpaces = /\s+/g; /** * Replace any css colour name with its rgba() value. It is possible to use * the name within an "rgba(blue, 0.4)" string this way. @@ -1076,8 +1074,8 @@ var VelocityStatic; return ($1 ? $1 : "rgba(") + CSS.ColorNames[$2] + ($1 ? "" : ",1)"); } return $0; - }).replace(rxRGB, function($0) { - return $0.replace(rxSpaces, ""); + }).replace(rxRGB, function($0, $1, $2) { + return "rgba(" + $2.replace(rxSpaces, "") + ($1 ? "" : ",1") + ")"; }); } CSS.fixColors = fixColors; @@ -1299,11 +1297,7 @@ var VelocityStatic; /* IE and Firefox do not return a value for the generic borderColor -- they only return individual values for each border side's color. Also, in all browsers, when border colors aren't all the same, a compound value is returned that Velocity isn't setup to parse. So, as a polyfill for querying individual border side colors, we just return the top border's color and animate all borders from that value. */ - /* TODO: There is a borderColor normalisation in legacy/ - figure out where this is needed... */ - // if (property === "borderColor") { - // property = "borderTopColor"; - // } - computedValue = computedStyle[property]; + /* TODO: There is a borderColor normalisation in legacy/ - figure out where this is needed... */ computedValue = computedStyle[property]; /* Fall back to the property's style value (if defined) when computedValue returns nothing, which can happen when the element hasn't been painted. */ if (!computedValue) { computedValue = element.style[property]; @@ -1341,8 +1335,8 @@ var VelocityStatic; CSS.computePropertyValue = computePropertyValue; /** * Get a property value. This will grab via the cache if it exists, then - * via any normalisations, then it will check the css values directly. - */ function getPropertyValue(element, propertyName, skipNormalisation, skipCache) { + * via any normalisations. + */ function getPropertyValue(element, propertyName, fn, skipCache) { var data = Data(element); var propertyValue; if (VelocityStatic.NoCacheNormalizations.has(propertyName)) { @@ -1350,35 +1344,18 @@ var VelocityStatic; } if (!skipCache && data && data.cache[propertyName] != null) { propertyValue = data.cache[propertyName]; - if (VelocityStatic.debug >= 2) { - console.info("Get " + propertyName + ": " + propertyValue); - } - return propertyValue; } else { - var types = data.types, best = void 0; - for (var index = 0; types; types >>= 1, index++) { - if (types & 1) { - best = VelocityStatic.Normalizations[index][propertyName] || best; + fn = fn || VelocityStatic.getNormalization(element, propertyName); + if (fn) { + propertyValue = fn(element); + if (data) { + data.cache[propertyName] = propertyValue; } } - if (best) { - propertyValue = best(element); - } else { - // Note: Retrieving the value of a CSS property cannot simply be - // performed by checking an element's style attribute (which - // only reflects user-defined values). Instead, the browser must - // be queried for a property's *computed* value. You can read - // more about getComputedStyle here: - // https://developer.mozilla.org/en/docs/Web/API/window.getComputedStyle - propertyValue = computePropertyValue(element, propertyName); - } } if (VelocityStatic.debug >= 2) { console.info("Get " + propertyName + ": " + propertyValue); } - if (data) { - data.cache[propertyName] = propertyValue; - } return propertyValue; } CSS.getPropertyValue = getPropertyValue; @@ -1423,28 +1400,6 @@ var VelocityStatic; })(CSS = VelocityStatic.CSS || (VelocityStatic.CSS = {})); })(VelocityStatic || (VelocityStatic = {})); -/* - * VelocityJS.org (C) 2014-2017 Julian Shapiro. - * - * Licensed under the MIT license. See LICENSE file in the project root for details. - * - * Regular Expressions - cached as they can be expensive to create. - */ var VelocityStatic; - -(function(VelocityStatic) { - var CSS; - (function(CSS) { - CSS.RegEx = { - isHex: /^#([A-f\d]{3}){1,2}$/i, - /* Unwrap a property value's surrounding text, e.g. "rgba(4, 3, 2, 1)" ==> "4, 3, 2, 1" and "rect(4px 3px 2px 1px)" ==> "4px 3px 2px 1px". */ - valueUnwrap: /^[A-z]+\((.*)\)$/i, - wrappedValueAlreadyExtracted: /[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/, - /* Split a multi-value property into an array of subvalues, e.g. "rgba(4, 3, 2, 1) 4px 3px 2px 1px" ==> [ "rgba(4, 3, 2, 1)", "4px", "3px", "2px", "1px" ]. */ - valueSplit: /([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi - }; - })(CSS = VelocityStatic.CSS || (VelocityStatic.CSS = {})); -})(VelocityStatic || (VelocityStatic = {})); - /* * VelocityJS.org (C) 2014-2017 Julian Shapiro. * @@ -1456,9 +1411,9 @@ var VelocityStatic; (function(CSS) { /** * The singular setPropertyValue, which routes the logic for all - * normalizations, hooks, and standard CSS properties. + * normalizations. */ - function setPropertyValue(element, propertyName, propertyValue) { + function setPropertyValue(element, propertyName, propertyValue, fn) { var data = Data(element); if (isString(propertyValue) && propertyValue[0] === "c" && propertyValue[1] === "a" && propertyValue[2] === "l" && propertyValue[3] === "c" && propertyValue[4] === "(" && propertyValue[5] === "0" && propertyValue[5] === " ") { // Make sure we un-calc unit changing values - try not to trigger @@ -1468,14 +1423,9 @@ var VelocityStatic; if (data && data.cache[propertyName] !== propertyValue) { // By setting it to undefined we force a true "get" later data.cache[propertyName] = propertyValue || undefined; - var types = data.types, best = void 0; - for (var index = 0; types; types >>= 1, index++) { - if (types & 1) { - best = VelocityStatic.Normalizations[index][propertyName] || best; - } - } - if (!best || !best(element, propertyValue)) { - element.style[propertyName] = propertyValue; + fn = fn || VelocityStatic.getNormalization(element, propertyName); + if (fn) { + fn(element, propertyValue); } if (VelocityStatic.debug >= 2) { console.info("Set " + propertyName + ": " + propertyValue, element); @@ -2025,9 +1975,12 @@ var VelocityStatic; (function(VelocityStatic) { /** - * Unlike "actions", normalizations can always be replaced by users. + * The highest type index for finding the best normalization for a property. */ - VelocityStatic.Normalizations = []; + VelocityStatic.MaxType = -1; + /** + * Unlike "actions", normalizations can always be replaced by users. + */ VelocityStatic.Normalizations = []; /** * Any normalisations that should never be cached are listed here. * Faster than an array - https://jsperf.com/array-includes-and-find-methods-vs-set-has @@ -2059,7 +2012,7 @@ var VelocityStatic; } else { var index = VelocityStatic.constructors.indexOf(constructor); if (index < 0) { - index = VelocityStatic.constructors.push(constructor) - 1; + VelocityStatic.MaxType = index = VelocityStatic.constructors.push(constructor) - 1; VelocityStatic.Normalizations[index] = Object.create(null); } VelocityStatic.Normalizations[index][name] = callback; @@ -2069,7 +2022,27 @@ var VelocityStatic; } } VelocityStatic.registerNormalization = registerNormalization; + /** + * Used to check if a normalisation exists on a specific class. + */ function hasNormalization(args) { + var constructor = args[0], name = args[1]; + var index = VelocityStatic.constructors.indexOf(constructor); + return !!VelocityStatic.Normalizations[index][name]; + } + VelocityStatic.hasNormalization = hasNormalization; + function getNormalization(element, propertyName) { + var data = Data(element); + var fn; + for (var index = VelocityStatic.MaxType, types = data.types; !fn && index >= 0; index--) { + if (types & 1 << index) { + fn = VelocityStatic.Normalizations[index][propertyName]; + } + } + return fn; + } + VelocityStatic.getNormalization = getNormalization; VelocityStatic.registerAction([ "registerNormalization", registerNormalization ]); + VelocityStatic.registerAction([ "hasNormalization", hasNormalization ]); })(VelocityStatic || (VelocityStatic = {})); /// @@ -2091,20 +2064,23 @@ var VelocityStatic; return element.getAttribute(name); } element.setAttribute(name, propertyValue); - return true; }; } var base = document.createElement("div"), rxSubtype = /^SVG(.*)Element$/, rxElement = /Element$/; Object.getOwnPropertyNames(window).forEach(function(globals) { var subtype = rxSubtype.exec(globals); - if (subtype) { - var element = document.createElementNS("http://www.w3.org/2000/svg", (subtype[1] || "svg").toLowerCase()), constructor = element.constructor; - for (var attribute in element) { - var value = element[attribute]; - if (isString(attribute) && !(attribute[0] === "o" && attribute[1] === "n") && attribute !== attribute.toUpperCase() && !rxElement.test(attribute) && !(attribute in base) && !isFunction(value)) { - // TODO: Should this all be set on the generic SVGElement, it would save space and time, but not as powerful - VelocityStatic.registerNormalization([ constructor, attribute, getAttribute(attribute) ]); + if (subtype && subtype[1] !== "SVG") { + try { + var element = subtype[1] ? document.createElementNS("http://www.w3.org/2000/svg", (subtype[1] || "svg").toLowerCase()) : document.createElement("svg"), constructor = element.constructor; + for (var attribute in element) { + var value = element[attribute]; + if (isString(attribute) && !(attribute[0] === "o" && attribute[1] === "n") && attribute !== attribute.toUpperCase() && !rxElement.test(attribute) && !(attribute in base) && !isFunction(value)) { + // TODO: Should this all be set on the generic SVGElement, it would save space and time, but not as powerful + VelocityStatic.registerNormalization([ constructor, attribute, getAttribute(attribute) ]); + } } + } catch (e) { + console.error("VelocityJS: Error when trying to identify SVG attributes on " + globals + ".", e); } } }); @@ -2135,7 +2111,6 @@ var VelocityStatic; } } element.setAttribute(name, propertyValue); - return true; }; } VelocityStatic.registerNormalization([ SVGElement, "width", getDimension("width") ]); @@ -2181,7 +2156,6 @@ var VelocityStatic; return augmentDimension(element, name, wantInner) + "px"; } VelocityStatic.CSS.setPropertyValue(element, name, parseFloat(propertyValue) - augmentDimension(element, name, wantInner) + "px"); - return true; }; } VelocityStatic.registerNormalization([ Element, "innerWidth", getDimension("width", true) ]); @@ -2227,41 +2201,10 @@ var VelocityStatic; data.cache["display"] = propertyValue; } style.display = propertyValue; - return true; } VelocityStatic.registerNormalization([ Element, "display", display ]); })(VelocityStatic || (VelocityStatic = {})); -/// -/* - * VelocityJS.org (C) 2014-2017 Julian Shapiro. - * - * Licensed under the MIT license. See LICENSE file in the project root for details. - */ var VelocityStatic; - -(function(VelocityStatic) { - function genericReordering(element, propertyValue) { - if (propertyValue === undefined) { - propertyValue = VelocityStatic.CSS.getPropertyValue(element, "textShadow"); - var split = propertyValue.split(/\s/g), firstPart = split[0]; - var newValue = ""; - if (VelocityStatic.CSS.ColorNames[firstPart]) { - split.shift(); - split.push(firstPart); - newValue = split.join(" "); - } else if (firstPart.match(/^#|^hsl|^rgb|-gradient/)) { - var matchedString = propertyValue.match(/(hsl.*\)|#[\da-fA-F]+|rgb.*\)|.*gradient.*\))\s/g)[0]; - newValue = propertyValue.replace(matchedString, "") + " " + matchedString.trim(); - } else { - newValue = propertyValue; - } - return newValue; - } - return false; - } - VelocityStatic.registerNormalization([ Element, "textShadow", genericReordering ]); -})(VelocityStatic || (VelocityStatic = {})); - /// /* * VelocityJS.org (C) 2014-2017 Julian Shapiro. @@ -2274,79 +2217,49 @@ var VelocityStatic; if (propertyValue == null) { return element.clientWidth + "px"; } - return false; } function scrollWidth(element, propertyValue) { if (propertyValue == null) { return element.scrollWidth + "px"; } - return false; } function clientHeight(element, propertyValue) { if (propertyValue == null) { return element.clientHeight + "px"; } - return false; } function scrollHeight(element, propertyValue) { if (propertyValue == null) { return element.scrollHeight + "px"; } - return false; } - function scrollTop(element, propertyValue) { - if (propertyValue == null) { - // getPropertyValue(element, "clientWidth", false, true); - // getPropertyValue(element, "scrollWidth", false, true); - // getPropertyValue(element, "scrollLeft", false, true); - VelocityStatic.CSS.getPropertyValue(element, "clientHeight", false, true); - VelocityStatic.CSS.getPropertyValue(element, "scrollHeight", false, true); - VelocityStatic.CSS.getPropertyValue(element, "scrollTop", false, true); - return element.scrollTop + "px"; - } - // console.log("setScrollTop", propertyValue) - var value = parseFloat(propertyValue), unit = propertyValue.replace(String(value), ""); - switch (unit) { - case "": - case "px": - element.scrollTop = value; - break; - - case "%": - var clientHeight_1 = parseFloat(VelocityStatic.CSS.getPropertyValue(element, "clientHeight")), scrollHeight_1 = parseFloat(VelocityStatic.CSS.getPropertyValue(element, "scrollHeight")); - // console.log("setScrollTop percent", scrollHeight, clientHeight, value, Math.max(0, scrollHeight - clientHeight) * value / 100) - element.scrollTop = Math.max(0, scrollHeight_1 - clientHeight_1) * value / 100; - } - return false; - } - function scrollLeft(element, propertyValue) { - if (propertyValue == null) { - // getPropertyValue(element, "clientWidth", false, true); - // getPropertyValue(element, "scrollWidth", false, true); - // getPropertyValue(element, "scrollLeft", false, true); - VelocityStatic.CSS.getPropertyValue(element, "clientWidth", false, true); - VelocityStatic.CSS.getPropertyValue(element, "scrollWidth", false, true); - VelocityStatic.CSS.getPropertyValue(element, "scrollLeft", false, true); - return element.scrollLeft + "px"; - } - // console.log("setScrollLeft", propertyValue) - var value = parseFloat(propertyValue), unit = propertyValue.replace(String(value), ""); - switch (unit) { - case "": - case "px": - element.scrollLeft = value; - break; + function scroll(direction, end) { + return function(element, propertyValue) { + if (propertyValue == null) { + // Make sure we have these values cached. + VelocityStatic.CSS.getPropertyValue(element, "client" + direction, null, true); + VelocityStatic.CSS.getPropertyValue(element, "scroll" + direction, null, true); + VelocityStatic.CSS.getPropertyValue(element, "scroll" + end, null, true); + return element["scroll" + end] + "px"; + } + // console.log("setScrollTop", propertyValue) + var value = parseFloat(propertyValue), unit = propertyValue.replace(String(value), ""); + switch (unit) { + case "": + case "px": + element["scroll" + end] = value; + break; - case "%": - var clientWidth_1 = parseFloat(VelocityStatic.CSS.getPropertyValue(element, "clientWidth")), scrollWidth_1 = parseFloat(VelocityStatic.CSS.getPropertyValue(element, "scrollWidth")); - // console.log("setScrollLeft percent", scrollWidth, clientWidth, value, Math.max(0, scrollWidth - clientWidth) * value / 100) - element.scrollTop = Math.max(0, scrollWidth_1 - clientWidth_1) * value / 100; - } - return false; + case "%": + var client = parseFloat(VelocityStatic.CSS.getPropertyValue(element, "client" + direction)), scroll_1 = parseFloat(VelocityStatic.CSS.getPropertyValue(element, "scroll" + direction)); + // console.log("setScrollTop percent", scrollHeight, clientHeight, value, Math.max(0, scrollHeight - clientHeight) * value / 100) + element["scroll" + end] = Math.max(0, scroll_1 - client) * value / 100; + } + }; } - VelocityStatic.registerNormalization([ HTMLElement, "scroll", scrollTop, false ]); - VelocityStatic.registerNormalization([ HTMLElement, "scrollTop", scrollTop, false ]); - VelocityStatic.registerNormalization([ HTMLElement, "scrollLeft", scrollLeft, false ]); + VelocityStatic.registerNormalization([ HTMLElement, "scroll", scroll("Height", "Top"), false ]); + VelocityStatic.registerNormalization([ HTMLElement, "scrollTop", scroll("Height", "Top"), false ]); + VelocityStatic.registerNormalization([ HTMLElement, "scrollLeft", scroll("Width", "Left"), false ]); VelocityStatic.registerNormalization([ HTMLElement, "scrollWidth", scrollWidth ]); VelocityStatic.registerNormalization([ HTMLElement, "clientWidth", clientWidth ]); VelocityStatic.registerNormalization([ HTMLElement, "scrollHeight", scrollHeight ]); @@ -2358,35 +2271,67 @@ var VelocityStatic; * VelocityJS.org (C) 2014-2017 Julian Shapiro. * * Licensed under the MIT license. See LICENSE file in the project root for details. + * + * This handles all CSS style properties. With browser prefixed properties it + * will register a version that handles setting (and getting) both the prefixed + * and non-prefixed version. */ var VelocityStatic; (function(VelocityStatic) { /** - * Return a Normalisation that can be used to set / get the vendor prefixed - * real name for a propery. + * Return a Normalisation that can be used to set / get a prefixed style + * property. */ - function vendorPrefix(property, unprefixed) { + function getSetPrefixed(propertyName, unprefixed) { return function(element, propertyValue) { if (propertyValue === undefined) { - return element.style[unprefixed]; + return VelocityStatic.CSS.computePropertyValue(element, propertyName) || VelocityStatic.CSS.computePropertyValue(element, unprefixed); } - VelocityStatic.CSS.setPropertyValue(element, property, propertyValue); - return true; + element.style[propertyName] = element.style[unprefixed] = propertyValue; }; } - var vendors = [ /^webkit[A-Z]/, /^moz[A-Z]/, /^ms[A-Z]/, /^o[A-Z]/ ], prefixElement = VelocityStatic.State.prefixElement; - for (var property in prefixElement.style) { - for (var i = 0; i < vendors.length; i++) { - if (vendors[i].test(property)) { - var unprefixed = property.replace(/^[a-z]+([A-Z])/, function($, letter) { - return letter.toLowerCase(); - }); - if (ALL_VENDOR_PREFIXES || isString(prefixElement.style[unprefixed])) { - VelocityStatic.registerNormalization([ Element, unprefixed, vendorPrefix(property, unprefixed) ]); - } + /** + * Return a Normalisation that can be used to set / get a style property. + */ function getSetStyle(propertyName) { + return function(element, propertyValue) { + if (propertyValue === undefined) { + return VelocityStatic.CSS.computePropertyValue(element, propertyName); + } + element.style[propertyName] = propertyValue; + }; + } + var rxVendors = /^(webkit|moz|ms|o)[A-Z]/, rxUnit = /^\d+([a-z]+)/, prefixElement = VelocityStatic.State.prefixElement; + for (var propertyName in prefixElement.style) { + if (rxVendors.test(propertyName)) { + var unprefixed = propertyName.replace(/^[a-z]+([A-Z])/, function($, letter) { + return letter.toLowerCase(); + }); + if (ALL_VENDOR_PREFIXES || isString(prefixElement.style[unprefixed])) { + VelocityStatic.registerNormalization([ Element, unprefixed, getSetPrefixed(propertyName, unprefixed) ]); } + } else if (!VelocityStatic.hasNormalization([ Element, propertyName ])) { + VelocityStatic.registerNormalization([ Element, propertyName, getSetStyle(propertyName) ]); + } + } +})(VelocityStatic || (VelocityStatic = {})); + +/// +/* + * VelocityJS.org (C) 2014-2017 Julian Shapiro. + * + * Licensed under the MIT license. See LICENSE file in the project root for details. + */ var VelocityStatic; + +(function(VelocityStatic) { + /** + * A fake normalization used to allow the "tween" property easy access. + */ + function getSetTween(element, propertyValue) { + if (propertyValue === undefined) { + return ""; } } + VelocityStatic.registerNormalization([ Element, "tween", getSetTween ]); })(VelocityStatic || (VelocityStatic = {})); /* @@ -3473,23 +3418,23 @@ var VelocityStatic; } for (var property in tweens) { // For every element, iterate through each property. - var tween_3 = tweens[property], easing = tween_3[1 /* EASING */ ] || activeEasing, pattern = tween_3[3 /* PATTERN */ ], rounding = tween_3[4 /* ROUNDING */ ]; + var tween_3 = tweens[property], easing = tween_3.easing || activeEasing, pattern = tween_3.pattern; var currentValue = "", i = 0; if (pattern) { for (;i < pattern.length; i++) { - var startValue = tween_3[2 /* START */ ][i]; + var startValue = tween_3.start[i]; if (startValue == null) { currentValue += pattern[i]; } else { // All easings must deal with numbers except for // our internal ones - var result = easing(reverse ? 1 - percentComplete : percentComplete, startValue, tween_3[0 /* END */ ][i], property); - currentValue += rounding && rounding[i] ? Math.round(result) : result; + var result = easing(reverse ? 1 - percentComplete : percentComplete, startValue, tween_3.end[i], property); + currentValue += pattern[i] === true ? Math.round(result) : result; } } if (property !== "tween") { // TODO: To solve an IE<=8 positioning bug, the unit type must be dropped when setting a property value of 0 - add normalisations to legacy - VelocityStatic.CSS.setPropertyValue(activeCall.element, property, currentValue); + VelocityStatic.CSS.setPropertyValue(activeCall.element, property, currentValue, tween_3.fn); } else { // Skip the fake 'tween' property as that is only // passed into the progress callback. @@ -3537,54 +3482,32 @@ var VelocityStatic; * * Tweens */ -var Tween; - -(function(Tween) { - Tween[Tween["END"] = 0] = "END"; - Tween[Tween["EASING"] = 1] = "EASING"; - Tween[Tween["START"] = 2] = "START"; - Tween[Tween["PATTERN"] = 3] = "PATTERN"; - Tween[Tween["ROUNDING"] = 4] = "ROUNDING"; - Tween[Tween["length"] = 5] = "length"; -})(Tween || (Tween = {})); - var VelocityStatic; (function(VelocityStatic) { + var rxHex = /^#([A-f\d]{3}){1,2}$/i; var commands = new Map(); - commands.set("function", function(value, element, elements, elementArrayIndex) { + commands.set("function", function(value, element, elements, elementArrayIndex, propertyName, tween) { return value.call(element, elementArrayIndex, elements.length); }); - commands.set("number", function(value, element, elements, elementArrayIndex, propertyName) { + commands.set("number", function(value, element, elements, elementArrayIndex, propertyName, tween) { return value + (element instanceof HTMLElement ? getUnitType(propertyName) : ""); }); - commands.set("string", function(value, element, elements, elementArrayIndex, propertyName) { + commands.set("string", function(value, element, elements, elementArrayIndex, propertyName, tween) { return VelocityStatic.CSS.fixColors(value); }); - commands.set("undefined", function(value, element, elements, elementArrayIndex, propertyName) { - return VelocityStatic.CSS.fixColors(VelocityStatic.CSS.getPropertyValue(element, propertyName) || ""); + commands.set("undefined", function(value, element, elements, elementArrayIndex, propertyName, tween) { + return VelocityStatic.CSS.fixColors(VelocityStatic.CSS.getPropertyValue(element, propertyName, tween.fn) || ""); }); - var - /** - * Properties that take "deg" as the default numeric suffix. - */ - degree = [], /** * Properties that take no default numeric suffix. - */ - unitless = [ "borderImageSlice", "columnCount", "counterIncrement", "counterReset", "flex", "flexGrow", "flexShrink", "floodOpacity", "fontSizeAdjust", "fontWeight", "lineHeight", "opacity", "order", "orphans", "shapeImageThreshold", "tabSize", "widows", "zIndex" ]; + */ var unitless = [ "borderImageSlice", "columnCount", "counterIncrement", "counterReset", "flex", "flexGrow", "flexShrink", "floodOpacity", "fontSizeAdjust", "fontWeight", "lineHeight", "opacity", "order", "orphans", "shapeImageThreshold", "tabSize", "widows", "zIndex" ]; /** * Retrieve a property's default unit type. Used for assigning a unit * type when one is not supplied by the user. These are only valid for * HTMLElement style properties. */ function getUnitType(property) { - if (_inArray(degree, property)) { - return "deg"; - } - if (_inArray(unitless, property)) { - return ""; - } - return "px"; + return _inArray(unitless, property) ? "" : "px"; } /** * Expand a VelocityProperty argument into a valid sparse Tween array. This @@ -3594,11 +3517,8 @@ var VelocityStatic; var tweens = animation.tweens = Object.create(null), elements = animation.elements, element = animation.element, elementArrayIndex = elements.indexOf(element), data = Data(element), queue = getValue(animation.queue, animation.options.queue), duration = getValue(animation.options.duration, VelocityStatic.defaults.duration); for (var property in properties) { var propertyName = VelocityStatic.CSS.camelCase(property); - var valueData = properties[property], types = data.types, found = propertyName === "tween"; - for (var index = 0; types && !found; types >>= 1, index++) { - found = !!(types & 1 && VelocityStatic.Normalizations[index][propertyName]); - } - if (!found && (!VelocityStatic.State.prefixElement || !isString(VelocityStatic.State.prefixElement.style[propertyName]))) { + var valueData = properties[property], fn = VelocityStatic.getNormalization(element, propertyName); + if (!fn && propertyName !== "tween") { if (VelocityStatic.debug) { console.log("Skipping [" + property + "] due to a lack of browser support."); } @@ -3610,8 +3530,9 @@ var VelocityStatic; } continue; } - var tween_4 = tweens[propertyName] = new Array(5 /* length */); + var tween_4 = tweens[propertyName] = Object.create(null); var endValue = void 0, startValue = void 0; + tween_4.fn = fn; if (isFunction(valueData)) { // If we have a function as the main argument then resolve // it first, in case it returns an array that needs to be @@ -3623,10 +3544,10 @@ var VelocityStatic; // [ endValue, [, easing] [, startValue] ] var arr1 = valueData[1], arr2 = valueData[2]; endValue = valueData[0]; - if (isString(arr1) && (/^[\d-]/.test(arr1) || VelocityStatic.CSS.RegEx.isHex.test(arr1)) || isFunction(arr1) || isNumber(arr1)) { + if (isString(arr1) && (/^[\d-]/.test(arr1) || rxHex.test(arr1)) || isFunction(arr1) || isNumber(arr1)) { startValue = arr1; } else if (isString(arr1) && VelocityStatic.Easing.Easings[arr1] || Array.isArray(arr1)) { - tween_4[1 /* EASING */ ] = arr1; + tween_4.easing = arr1; startValue = arr2; } else { startValue = arr1 || arr2; @@ -3634,9 +3555,9 @@ var VelocityStatic; } else { endValue = valueData; } - tween_4[0 /* END */ ] = commands.get(typeof endValue)(endValue, element, elements, elementArrayIndex, propertyName); + tween_4.end = commands.get(typeof endValue)(endValue, element, elements, elementArrayIndex, propertyName, tween_4); if (startValue != null || (queue === false || data.queueList[queue] === undefined)) { - tween_4[2 /* START */ ] = commands.get(typeof startValue)(startValue, element, elements, elementArrayIndex, propertyName); + tween_4.start = commands.get(typeof startValue)(startValue, element, elements, elementArrayIndex, propertyName, tween_4); } explodeTween(propertyName, tween_4, duration, !!startValue); } @@ -3646,8 +3567,8 @@ var VelocityStatic; * Convert a string-based tween with start and end strings, into a pattern * based tween with arrays. */ function explodeTween(propertyName, tween, duration, isForcefeed) { - var endValue = tween[0 /* END */ ]; - var startValue = tween[2 /* START */ ]; + var endValue = tween.end; + var startValue = tween.start; if (!isString(endValue) || !isString(startValue)) { return; } @@ -3655,8 +3576,8 @@ var VelocityStatic; // Can only be set once if the Start value doesn't match the End value and it's not forcefed do { runAgain = false; - var arrayStart = tween[2 /* START */ ] = [ null ], arrayEnd = tween[0 /* END */ ] = [ null ], pattern = tween[3 /* PATTERN */ ] = [ "" ]; - var easing = tween[1 /* EASING */ ], rounding = void 0, indexStart = 0, // index in startValue + var arrayStart = tween.start = [ null ], arrayEnd = tween.end = [ null ], pattern = tween.pattern = [ "" ]; + var easing = tween.easing, indexStart = 0, // index in startValue indexEnd = 0, // index in endValue inCalc = 0, // Keep track of being inside a "calc()" so we don't duplicate it inRGB = 0, // Keep track of being inside an RGB as we can't use fractional values @@ -3709,13 +3630,7 @@ var VelocityStatic; // Same numbers, so just copy over pattern[pattern.length - 1] += tempStart + unitStart; } else { - if (inRGB) { - if (!rounding) { - rounding = tween[4 /* ROUNDING */ ] = []; - } - rounding[arrayStart.length] = true; - } - pattern.push(0, unitStart); + pattern.push(inRGB ? true : false, unitStart); arrayStart.push(parseFloat(tempStart), null); arrayEnd.push(parseFloat(tempEnd), null); } @@ -3725,7 +3640,7 @@ var VelocityStatic; // look out for the final "calc(0 + " prefix and remove // it from the value when it finds it. pattern[pattern.length - 1] += inCalc ? "+ (" : "calc("; - pattern.push(0, unitStart + " + ", 0, unitEnd + ")"); + pattern.push(false, unitStart + " + ", false, unitEnd + ")"); arrayStart.push(parseFloat(tempStart) || 0, null, 0, null); arrayEnd.push(0, null, parseFloat(tempEnd) || 0, null); } @@ -3857,7 +3772,7 @@ var VelocityStatic; console.warn("Velocity: String easings must use one of 'at-start', 'during' or 'at-end': {" + propertyName + ': ["' + endValue + '", ' + easing + ', "' + startValue + '"]}'); easing = "at-start"; } - tween[1 /* EASING */ ] = validateEasing(easing, duration); + tween.easing = validateEasing(easing, duration); } // This can only run a second time once - if going from automatic startValue to "fixed" pattern from endValue with startValue numbers } while (runAgain); @@ -3879,11 +3794,11 @@ var VelocityStatic; var element = activeCall.element, tweens = activeCall.tweens, duration = getValue(activeCall.options.duration, VelocityStatic.defaults.duration); for (var propertyName in tweens) { var tween_5 = tweens[propertyName]; - if (tween_5[2 /* START */ ] == null) { + if (tween_5.start == null) { // Get the start value as it's not been passed in var startValue = VelocityStatic.CSS.getPropertyValue(activeCall.element, propertyName); if (isString(startValue)) { - tween_5[2 /* START */ ] = VelocityStatic.CSS.fixColors(startValue); + tween_5.start = VelocityStatic.CSS.fixColors(startValue); explodeTween(propertyName, tween_5, duration); } else if (!Array.isArray(startValue)) { console.warn("bad type", tween_5, propertyName, startValue); @@ -4153,7 +4068,7 @@ var VelocityStatic; */ var VelocityStatic; (function(VelocityStatic) { - VelocityStatic.version = VERSION; + VelocityStatic.version = "2.0.1"; })(VelocityStatic || (VelocityStatic = {})); /* @@ -4575,12 +4490,25 @@ if (window === this) { /* The CSS spec mandates that the translateX/Y/Z transforms are %-relative to the element itself -- not its parent. Velocity, however, doesn't make this distinction. Thus, converting to or from the % unit with these subproperties will produce an inaccurate conversion value. The same issue exists with the cx/cy attributes of SVG circles and ellipses. */ var _loop_3 = function(key) { - Object.defineProperty(VelocityFn, key, { - enumerable: PUBLIC_MEMBERS.indexOf(key) >= 0, - get: function() { - return VelocityStatic[key]; - } - }); + var value = VelocityStatic[key]; + if (isString(value) || isNumber(value) || isBoolean(value)) { + Object.defineProperty(VelocityFn, key, { + enumerable: PUBLIC_MEMBERS.indexOf(key) >= 0, + get: function() { + return VelocityStatic[key]; + }, + set: function(value) { + VelocityStatic[key] = value; + } + }); + } else { + Object.defineProperty(VelocityFn, key, { + enumerable: PUBLIC_MEMBERS.indexOf(key) >= 0, + get: function() { + return VelocityStatic[key]; + } + }); + } }; /// diff --git a/velocity.js.map b/velocity.js.map index e4b7a2a1..19cd928c 100644 --- a/velocity.js.map +++ b/velocity.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/constants.ts","../src/types.ts","../src/utility.ts","../src/Velocity/actions/actions.ts","../src/Velocity/actions/defaultAction.ts","../src/Velocity/actions/finish.ts","../src/Velocity/actions/option.ts","../src/Velocity/actions/pauseResume.ts","../src/Velocity/actions/reverse.ts","../src/Velocity/actions/stop.ts","../src/Velocity/actions/style.ts","../src/Velocity/actions/tween.ts","../src/Velocity/state.ts","../src/Velocity/css/camelCase.ts","../src/Velocity/css/fixColors.ts","../src/Velocity/css/colors.ts","../src/Velocity/css/getPropertyValue.ts","../src/Velocity/css/getUnit.ts","../src/Velocity/css/regex.ts","../src/Velocity/css/setPropertyValue.ts","../src/Velocity/easing/easings.ts","../src/Velocity/easing/back.ts","../src/Velocity/easing/bezier.ts","../src/Velocity/easing/bounce.ts","../src/Velocity/easing/elastic.ts","../src/Velocity/easing/spring_rk4.ts","../src/Velocity/easing/step.ts","../src/Velocity/easing/string.ts","../src/Velocity/normalizations/normalizations.ts","../src/Velocity/normalizations/svg/attributes.ts","../src/Velocity/normalizations/svg/dimensions.ts","../src/Velocity/normalizations/dimensions.ts","../src/Velocity/normalizations/display.ts","../src/Velocity/normalizations/genericReordering.ts","../src/Velocity/normalizations/scroll.ts","../src/Velocity/normalizations/vendorPrefix.ts","../src/Velocity/complete.ts","../src/Velocity/data.ts","../src/Velocity/debug.ts","../src/Velocity/defaults.ts","../src/Velocity/mock.ts","../src/Velocity/patch.ts","../src/Velocity/queue.ts","../src/Velocity/redirects.ts","../src/Velocity/registereffect.ts","../src/Velocity/runsequence.ts","../src/Velocity/tick.ts","../src/Velocity/timestamp.ts","../src/Velocity/tweens.ts","../src/Velocity/validate.ts","../src/Velocity/version.ts","../src/core.ts","../src/app.ts"],"names":["PUBLIC_MEMBERS","ALL_VENDOR_PREFIXES","DURATION_FAST","DURATION_NORMAL","DURATION_SLOW","FUZZY_MS_PER_SECOND","DEFAULT_CACHE","DEFAULT_DELAY","DEFAULT_DURATION","DEFAULT_EASING","DEFAULT_FPSLIMIT","DEFAULT_LOOP","DEFAULT_PROMISE","DEFAULT_PROMISE_REJECT_EMPTY","DEFAULT_QUEUE","DEFAULT_REPEAT","DEFAULT_SPEED","DEFAULT_SYNC","TWEEN_NUMBER_REGEX","CLASSNAME","VERSION","Duration","fast","normal","slow","isBoolean","variable","isNumber","isNumberWhenParsed","isNaN","Number","isString","isFunction","Object","prototype","toString","call","isNode","nodeType","isVelocityResult","length","velocity","propertyIsEnumerable","object","property","isWrapped","window","isSVG","SVGElement","isPlainObject","proto","getPrototypeOf","hasOwnProperty","constructor","isEmptyObject","name_1","defineProperty","name","value","configurable","writable","_deepCopyObject","target","sources","_i","arguments","TypeError","to","source","shift","key","Array","isArray","_now","Date","now","getTime","_inArray","array","i","sanitizeElements","elements","getValue","args","_args","_arg","undefined","addClass","element","className","Element","classList","add","removeClass","remove","replace","RegExp","VelocityStatic","Actions","create","registerAction","internal","callback","console","warn","defaultAction","promiseHandler","action","Redirects","options","opts_1","__assign","durationOriginal_1","parseFloat","duration","delayOriginal_1","delay","backwards","reverse","forEach","elementIndex","stagger","drag","test","Math","max","_resolver","abortError","_rejecter","Error","log","checkAnimationShouldBeFinished","animation","queueName","defaultQueue","validateTweens","queue","_flags","_started","_first","begin","callBegin","tweens","tween_1","pattern","currentValue","endValue","CSS","setPropertyValue","completeCall","finish","validateQueue","defaults","finishAll","animations","activeCall","State","first","nextCall","firstNew","_next","then","animationFlags","isExpanded","isReady","isStarted","isStopped","isPaused","isSync","isReverse","option","indexOf","push","result","flag","isPercentComplete","validateCache","validateBegin","validateComplete","validateDelay","validateDuration","validateFpsLimit","validateLoop","validateRepeat","num","timeStart","lastTick","checkAnimation","pauseResume","SyntaxError","checkAnimationShouldBeStopped","stop","style","styleAction","getPropertyValue","error","propertyName","value_1","String","tween","percentComplete","properties","easing","tweenAction","requireForcefeeding","info","document","body","fakeAnimation","singleResult","count","_a","activeEasing","validateEasing","expandProperties","tween_2","easing_1","rounding","startValue","result_1","round","isClient","isMobile","navigator","userAgent","isAndroid","isGingerbread","isChrome","chrome","isFirefox","prefixElement","createElement","windowScrollAnchor","pageYOffset","scrollAnchor","documentElement","parentNode","scrollPropertyLeft","scrollPropertyTop","isTicking","cache","camelCase","fixed","match","subMatch","toUpperCase","ColorNames","makeRGBA","ignore","r","g","b","parseInt","rxColor6","rxColor3","rxColorName","rxRGB","rxSpaces","fixColors","str","$0","$1","$2","colorValues","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","name_2","color","floor","computePropertyValue","data","Data","computedStyle","getComputedStyle","computedValue","toggleDisplay","augmentDimension","topLeft","position","getBoundingClientRect","skipNormalisation","skipCache","propertyValue","NoCacheNormalizations","has","debug","types","best","index","Normalizations","Units","getUnit","start","units","unit","j","RegEx","isHex","valueUnwrap","wrappedValueAlreadyExtracted","valueSplit","Easing","Easings","registerEasing","cos","PI","exp","registerBackIn","amount","pow","registerBackOut","registerBackInOut","fixRange","min","A","aA1","aA2","B","C","calcBezier","aT","getSlope","generateBezier","mX1","mY1","mX2","mY2","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","isFinite","mSampleValues","Float32Array","newtonRaphsonIterate","aX","aGuessT","currentSlope","currentX","calcSampleValues","binarySubdivide","aA","aB","currentT","abs","getTForX","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","_precomputed","precompute","f","getControlPoints","x","y","easeIn","easeOut","easeInOut","easeOutBounce","easeInBounce","pi2","registerElasticIn","amplitude","period","sin","asin","registerElasticOut","registerElasticInOut","s","springAccelerationForState","state","tension","friction","v","springEvaluateStateWithDerivative","initialState","dt","derivative","dx","dv","springIntegrateState","a","c","d","dxdt","dvdt","generateSpringRK4","initState","path","time_lapsed","tolerance","DT","have_duration","last_state","generateStep","steps","fn","Set","constructors","registerNormalization","getAttribute","setAttribute","base","rxSubtype","rxElement","getOwnPropertyNames","globals","subtype","exec","createElementNS","toLowerCase","attribute","getDimension","getBBox","e","wantInner","isBorderBox","sides","fields","augment","inlineRx","listItemRx","tableRowRx","tableRx","tableRowGroupRx","display","nodeName","genericReordering","split","firstPart","newValue","join","matchedString","trim","clientWidth","scrollWidth","clientHeight","scrollHeight","scrollTop","clientHeight_1","scrollHeight_1","scrollLeft","clientWidth_1","scrollWidth_1","HTMLElement","vendorPrefix","unprefixed","vendors","$","letter","callComplete","complete","setTimeout","isLoop","loop","isRepeat","repeat","repeatAgain","lastFinishList","ellapsedTime","_completed","_total","resolver","dequeue","freeAnimationCall","newData","queueList","lastAnimationList","_cache","_begin","_complete","_delay","_duration","_easing","_fpsLimit","_loop","_minFrameTime","_promise","_promiseRejectEmpty","_queue","_repeat","_speed","_sync","mobileHA","defineProperties","reset","enumerable","get","set","fpsLimit","minFrameTime","promise","validatePromise","promiseRejectEmpty","validatePromiseRejectEmpty","speed","validateSpeed","sync","validateSync","mock","patch","global","VelocityFn","animate","prev","last","_prev","skip","next","direction","elementsIndex","elementsSize","opts","inlineValues","computedValues","height","marginTop","marginBottom","paddingTop","paddingBottom","isInline","overflow","promiseData","propertiesMap","opacity","this","animateParentHeight","totalDuration","totalHeightDelta","propertiesToSum","RegisterEffect","effectName","redirectOptions","finalElement","defaultDuration","callIndex","calls","durationPercentage","shareDuration","propertyMap","redirectDuration","callOptions","visibility","injectFinalCallbacks_1","resetProperty","resetValue","resetOptions","RunSequence","originalSequence","sequence","currentCall","currentCallOptions","o","nextCallOptions","timing","sequenceQueue","callbackOriginal_1","nextCallElements","callProgress","timeCurrent","tweenValue","progress","firstProgress","firstComplete","asyncCallbacks","_nextProgress","_nextComplete","FRAME_TIME","performance","perf","nowOffset_1","navigationStart","rAFProxy","rAFShim","requestAnimationFrame","ticker","hidden","addEventListener","updateTicker","event","tick","ticking","timestamp","deltaTime","defaultSpeed","defaultEasing","lastProgress","lastComplete","flags","queue_1","_ready","delta","millisecondsEllapsed","tween_3","JSON","stringify","Tween","commands","Map","elementArrayIndex","getUnitType","degree","unitless","valueData","found","tween_4","arr1","arr2","explodeTween","isForcefeed","runAgain","arrayStart","arrayEnd","indexStart","indexEnd","inCalc","inRGB","inRGBA","isStringValue","charStart","charEnd","tempStart","tempEnd","dotStart","dotEnd","unitStart","unitEnd","startNumbers_1","count_1","index_1","pop","tween_5","parseDuration","def","noError","parsed","apply","validateProgress","version","__args","_arguments","args0","syntacticSugar","p","names","argumentIndex","optionsMap","rejecter","assign","bind","isAction","Promise","_resolve","_reject","_then","catch","finally","optionsBegin","optionsComplete","optionsProgress","optionsSync","offset","rootAnimation","lastAnimation","IE","documentMode","div","innerHTML","getElementsByTagName","jQuery","Zepto","NodeList","HTMLCollection"],"mappings":"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","file":"velocity.js","sourceRoot":"src/","sourcesContent":["/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Constants and defaults. These values should never change without a MINOR\r\n * version bump.\r\n */\r\n\r\n//[\"completeCall\", \"CSS\", \"State\", \"getEasing\", \"Easings\", \"data\", \"debug\", \"defaults\", \"hook\", \"init\", \"mock\", \"pauseAll\", \"queue\", \"dequeue\", \"freeAnimationCall\", \"Redirects\", \"RegisterEffect\", \"resumeAll\", \"RunSequence\", \"lastTick\", \"tick\", \"timestamp\", \"expandTween\", \"version\"]\r\nconst PUBLIC_MEMBERS = [\"version\", \"RegisterEffect\", \"style\", \"patch\", \"timestamp\"];\r\n/**\r\n * Without this it will only un-prefix properties that have a valid \"normal\"\r\n * version.\r\n */\r\nconst ALL_VENDOR_PREFIXES = true;\r\n\r\nconst DURATION_FAST = 200;\r\nconst DURATION_NORMAL = 400;\r\nconst DURATION_SLOW = 600;\r\n\r\nconst FUZZY_MS_PER_SECOND = 980;\r\n\r\nconst DEFAULT_CACHE = true;\r\nconst DEFAULT_DELAY = 0;\r\nconst DEFAULT_DURATION = DURATION_NORMAL;\r\nconst DEFAULT_EASING = \"swing\";\r\nconst DEFAULT_FPSLIMIT = 60;\r\nconst DEFAULT_LOOP = 0;\r\nconst DEFAULT_PROMISE = true;\r\nconst DEFAULT_PROMISE_REJECT_EMPTY = true;\r\nconst DEFAULT_QUEUE = \"\";\r\nconst DEFAULT_REPEAT = 0;\r\nconst DEFAULT_SPEED = 1;\r\nconst DEFAULT_SYNC = true;\r\nconst TWEEN_NUMBER_REGEX = /[\\d\\.-]/;\r\n\r\nconst CLASSNAME = \"velocity-animating\";\r\n\r\nconst VERSION = \"2.0.1\";\r\n\r\nconst Duration = {\r\n\t\"fast\": DURATION_FAST,\r\n\t\"normal\": DURATION_NORMAL,\r\n\t\"slow\": DURATION_SLOW,\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Runtime type checking methods.\r\n */\r\n\r\nfunction isBoolean(variable): variable is boolean {\r\n\treturn variable === true || variable === false;\r\n}\r\n\r\nfunction isNumber(variable): variable is number {\r\n\treturn typeof variable === \"number\";\r\n}\r\n\r\n/**\r\n * Faster way to parse a string/number as a number https://jsperf.com/number-vs-parseint-vs-plus/3\r\n * @param variable The given string or number\r\n * @returns {variable is number} Returns boolean true if it is a number, false otherwise\r\n */\r\nfunction isNumberWhenParsed(variable: string | number): variable is number {\r\n\treturn !isNaN(Number(variable));\r\n}\r\n\r\nfunction isString(variable): variable is string {\r\n\treturn typeof variable === \"string\";\r\n}\r\n\r\nfunction isFunction(variable): variable is Function {\r\n\treturn Object.prototype.toString.call(variable) === \"[object Function]\";\r\n}\r\n\r\nfunction isNode(variable): variable is HTMLorSVGElement {\r\n\treturn !!(variable && variable.nodeType);\r\n}\r\n\r\nfunction isVelocityResult(variable): variable is VelocityResult {\r\n\treturn variable && isNumber(variable.length) && isFunction((variable as VelocityResult).velocity);\r\n}\r\n\r\nfunction propertyIsEnumerable(object: Object, property: string): boolean {\r\n\treturn Object.prototype.propertyIsEnumerable.call(object, property);\r\n}\r\n\r\n/* Determine if variable is an array-like wrapped jQuery, Zepto or similar element, or even a NodeList etc. */\r\n\r\n/* NOTE: HTMLFormElements also have a length. */\r\nfunction isWrapped(variable): variable is HTMLorSVGElement[] {\r\n\treturn variable\r\n\t\t&& variable !== window\r\n\t\t&& isNumber(variable.length)\r\n\t\t&& !isString(variable)\r\n\t\t&& !isFunction(variable)\r\n\t\t&& !isNode(variable)\r\n\t\t&& (variable.length === 0 || isNode(variable[0]));\r\n}\r\n\r\nfunction isSVG(variable): variable is SVGElement {\r\n\treturn SVGElement && variable instanceof SVGElement;\r\n}\r\n\r\nfunction isPlainObject(variable): variable is {} {\r\n\tif (!variable || typeof variable !== \"object\" || variable.nodeType || Object.prototype.toString.call(variable) !== \"[object Object]\") {\r\n\t\treturn false;\r\n\t}\r\n\tlet proto = Object.getPrototypeOf(variable) as Object;\r\n\r\n\treturn !proto || (proto.hasOwnProperty(\"constructor\") && proto.constructor === Object);\r\n}\r\n\r\nfunction isEmptyObject(variable): variable is {} {\r\n\tfor (let name in variable) {\r\n\t\tif (variable.hasOwnProperty(name)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\n/**\r\n * The defineProperty() function provides a\r\n * shortcut to defining a property that cannot be accidentally iterated across.\r\n */\r\nfunction defineProperty(proto: any, name: string, value: Function | any) {\r\n\tif (proto) {\r\n\t\tObject.defineProperty(proto, name, {\r\n\t\t\tconfigurable: true,\r\n\t\t\twritable: true,\r\n\t\t\tvalue: value\r\n\t\t});\r\n\t}\r\n}\r\n\r\n/**\r\n * Perform a deep copy of an object - also copies children so they're not\r\n * going to be affected by changing original.\r\n */\r\nfunction _deepCopyObject(target: T, ...sources: U[]): T & U {\r\n\tif (target == null) { // TypeError if undefined or null\r\n\t\tthrow new TypeError(\"Cannot convert undefined or null to object\");\r\n\t}\r\n\tconst to = Object(target),\r\n\t\thasOwnProperty = Object.prototype.hasOwnProperty;\r\n\tlet source: any;\r\n\r\n\twhile ((source = sources.shift())) {\r\n\t\tif (source != null) {\r\n\t\t\tfor (const key in source) {\r\n\t\t\t\tif (hasOwnProperty.call(source, key)) {\r\n\t\t\t\t\tconst value = source[key];\r\n\r\n\t\t\t\t\tif (Array.isArray(value)) {\r\n\t\t\t\t\t\t_deepCopyObject(to[key] = [], value);\r\n\t\t\t\t\t} else if (isPlainObject(value)) {\r\n\t\t\t\t\t\t_deepCopyObject(to[key] = {}, value);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tto[key] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn to;\r\n}\r\n\r\n/**\r\n * Shim to get the current milliseconds - on anything except old IE it'll use\r\n * Date.now() and save creating an object. If that doesn't exist then it'll\r\n * create one that gets GC.\r\n */\r\nconst _now = Date.now ? Date.now : function() {\r\n\treturn (new Date()).getTime();\r\n};\r\n\r\n/**\r\n * Check whether a value belongs to an array\r\n * https://jsperf.com/includes-vs-indexof-vs-while-loop/6\r\n * @param array The given array\r\n * @param value The given element to check if it is part of the array\r\n * @returns {boolean} True if it exists, false otherwise\r\n */\r\nfunction _inArray(array: T[], value: T): boolean {\r\n\tlet i = 0;\r\n\r\n\twhile (i < array.length) {\r\n\t\tif (array[i++] === value) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n}\r\n\r\n/**\r\n * Convert an element or array-like element list into an array if needed.\r\n */\r\nfunction sanitizeElements(elements: HTMLorSVGElement | HTMLorSVGElement[]): HTMLorSVGElement[] {\r\n\tif (isNode(elements)) {\r\n\t\treturn [elements];\r\n\t}\r\n\treturn elements as HTMLorSVGElement[];\r\n}\r\n\r\n/**\r\n * When there are multiple locations for a value pass them all in, then get the\r\n * first value that is valid.\r\n */\r\nfunction getValue(...args: T[]): T;\r\nfunction getValue(args: any): T {\r\n\tfor (let i = 0, _args = arguments; i < _args.length; i++) {\r\n\t\tconst _arg = _args[i];\r\n\r\n\t\tif (_arg !== undefined && _arg === _arg) {\r\n\t\t\treturn _arg;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Add a single className to an Element.\r\n */\r\nfunction addClass(element: HTMLorSVGElement, className: string): void {\r\n\tif (element instanceof Element) {\r\n\t\tif (element.classList) {\r\n\t\t\telement.classList.add(className);\r\n\t\t} else {\r\n\t\t\tremoveClass(element, className);\r\n\t\t\telement.className += (element.className.length ? \" \" : \"\") + className;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Remove a single className from an Element.\r\n */\r\nfunction removeClass(element: HTMLorSVGElement, className: string): void {\r\n\tif (element instanceof Element) {\r\n\t\tif (element.classList) {\r\n\t\t\telement.classList.remove(className);\r\n\t\t} else {\r\n\t\t\t// TODO: Need some jsperf tests on performance - can we get rid of the regex and maybe use split / array manipulation?\r\n\t\t\telement.className = element.className.toString().replace(new RegExp(\"(^|\\\\s)\" + className + \"(\\\\s|$)\", \"gi\"), \" \");\r\n\t\t}\r\n\t}\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Actions that can be performed by passing a string instead of a propertiesMap.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/**\r\n\t * Actions cannot be replaced if they are internal (hasOwnProperty is false\r\n\t * but they still exist). Otherwise they can be replaced by users.\r\n\t * \r\n\t * All external method calls should be using actions rather than sub-calls\r\n\t * of Velocity itself.\r\n\t */\r\n\texport const Actions: {[name: string]: VelocityActionFn} = Object.create(null);\r\n\r\n\t/**\r\n\t * Used to register an action. This should never be called by users\r\n\t * directly, instead it should be called via an action:
\r\n\t * Velocity(\"registerAction\", \"name\", VelocityActionFn);\r\n\t * \r\n\t * @private\r\n\t */\r\n\texport function registerAction(args?: [string, VelocityActionFn], internal?: boolean) {\r\n\t\tconst name: string = args[0],\r\n\t\t\tcallback = args[1];\r\n\r\n\t\tif (!isString(name)) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to set 'registerAction' name to an invalid value:\", name);\r\n\t\t} else if (!isFunction(callback)) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to set 'registerAction' callback to an invalid value:\", name, callback);\r\n\t\t} else if (Actions[name] && !propertyIsEnumerable(Actions, name)) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to override internal 'registerAction' callback\", name);\r\n\t\t} else if (internal === true) {\r\n\t\t\tdefineProperty(Actions, name, callback);\r\n\t\t} else {\r\n\t\t\tActions[name] = callback;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterAction([\"registerAction\", registerAction as any], true);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Default action.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * When the stop action is triggered, the elements' currently active call is immediately stopped. The active call might have\r\n\t * been applied to multiple elements, in which case all of the call's elements will be stopped. When an element\r\n\t * is stopped, the next item in its animation queue is immediately triggered.\r\n\t * An additional argument may be passed in to clear an element's remaining queued calls. Either true (which defaults to the \"fx\" queue)\r\n\t * or a custom queue string can be passed in.\r\n\t * Note: The stop command runs prior to Velocity's Queueing phase since its behavior is intended to take effect *immediately*,\r\n\t * regardless of the element's current queue state.\r\n\t * \r\n\t * @param {HTMLorSVGElement[]} elements The collection of HTML or SVG elements\r\n\t * @param {StrictVelocityOptions} The strict Velocity options\r\n\t * @param {Promise} An optional promise if the user uses promises\r\n\t * @param {(value?: (HTMLorSVGElement[] | VelocityResult)) => void} resolver The resolve method of the promise\r\n\t */\r\n\tfunction defaultAction(args?: any[], elements?: HTMLorSVGElement[] | VelocityResult, promiseHandler?: VelocityPromise, action?: string): void {\r\n\t\t// TODO: default is wrong, should be runSequence based, and needs all arguments\r\n\t\tif (isString(action) && VelocityStatic.Redirects[action]) {\r\n\t\t\tconst options = isPlainObject(args[0]) ? args[0] as VelocityOptions : {},\r\n\t\t\t\topts = {...options},\r\n\t\t\t\tdurationOriginal = parseFloat(options.duration as any),\r\n\t\t\t\tdelayOriginal = parseFloat(options.delay as any) || 0;\r\n\r\n\t\t\t/* If the backwards option was passed in, reverse the element set so that elements animate from the last to the first. */\r\n\t\t\tif (opts.backwards === true) {\r\n\t\t\t\telements = elements.reverse();\r\n\t\t\t}\r\n\r\n\t\t\t/* Individually trigger the redirect for each element in the set to prevent users from having to handle iteration logic in their redirect. */\r\n\t\t\telements.forEach(function(element, elementIndex) {\r\n\r\n\t\t\t\t/* If the stagger option was passed in, successively delay each element by the stagger value (in ms). Retain the original delay value. */\r\n\t\t\t\tif (parseFloat(opts.stagger as string)) {\r\n\t\t\t\t\topts.delay = delayOriginal + (parseFloat(opts.stagger as string) * elementIndex);\r\n\t\t\t\t} else if (isFunction(opts.stagger)) {\r\n\t\t\t\t\topts.delay = delayOriginal + opts.stagger.call(element, elementIndex, elements.length);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* If the drag option was passed in, successively increase/decrease (depending on the presense of opts.backwards)\r\n the duration of each element's animation, using floors to prevent producing very short durations. */\r\n\t\t\t\tif (opts.drag) {\r\n\t\t\t\t\t/* Default the duration of UI pack effects (callouts and transitions) to 1000ms instead of the usual default duration of 400ms. */\r\n\t\t\t\t\topts.duration = durationOriginal || (/^(callout|transition)/.test(action) ? 1000 : DEFAULT_DURATION);\r\n\r\n\t\t\t\t\t/* For each element, take the greater duration of: A) animation completion percentage relative to the original duration,\r\n B) 75% of the original duration, or C) a 200ms fallback (in case duration is already set to a low value).\r\n The end result is a baseline of 75% of the redirect's duration that increases/decreases as the end of the element set is approached. */\r\n\t\t\t\t\topts.duration = Math.max(opts.duration * (opts.backwards ? 1 - elementIndex / elements.length : (elementIndex + 1) / elements.length), opts.duration * 0.75, 200);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Pass in the call's opts object so that the redirect can optionally extend it. It defaults to an empty object instead of null to\r\n reduce the opts checking logic required inside the redirect. */\r\n\t\t\t\tVelocityStatic.Redirects[action].call(element, element, opts, elementIndex, elements.length, elements, promiseHandler && promiseHandler._resolver);\r\n\t\t\t});\r\n\r\n\t\t\t/* Since the animation logic resides within the redirect's own code, abort the remainder of this call.\r\n (The performance overhead up to this point is virtually non-existant.) */\r\n\t\t\t/* Note: The jQuery call chain is kept intact by returning the complete element set. */\r\n\t\t} else {\r\n\t\t\tconst abortError = \"Velocity: First argument (\" + action + \") was not a property map, a known action, or a registered redirect. Aborting.\";\r\n\r\n\t\t\tif (promiseHandler) {\r\n\t\t\t\tpromiseHandler._rejecter(new Error(abortError));\r\n\t\t\t} else if (window.console) {\r\n\t\t\t\tconsole.log(abortError);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tregisterAction([\"default\", defaultAction], true);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Finish all animation.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Check if an animation should be finished, and if so we set the tweens to\r\n\t * the final value for it, then call complete.\r\n\t */\r\n\tfunction checkAnimationShouldBeFinished(animation: AnimationCall, queueName: false | string, defaultQueue: false | string) {\r\n\t\tvalidateTweens(animation);\r\n\t\tif (queueName === undefined || queueName === getValue(animation.queue, animation.options.queue, defaultQueue)) {\r\n\t\t\tif (!(animation._flags & AnimationFlags.STARTED)) {\r\n\t\t\t\t// Copied from tick.ts - ensure that the animation is completely\r\n\t\t\t\t// valid and run begin() before complete().\r\n\t\t\t\tconst options = animation.options;\r\n\r\n\t\t\t\t// The begin callback is fired once per call, not once per\r\n\t\t\t\t// element, and is passed the full raw DOM element set as both\r\n\t\t\t\t// its context and its first argument.\r\n\t\t\t\tif (options._started++ === 0) {\r\n\t\t\t\t\toptions._first = animation;\r\n\t\t\t\t\tif (options.begin) {\r\n\t\t\t\t\t\t// Pass to an external fn with a try/catch block for optimisation\r\n\t\t\t\t\t\tcallBegin(animation);\r\n\t\t\t\t\t\t// Only called once, even if reversed or repeated\r\n\t\t\t\t\t\toptions.begin = undefined;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tanimation._flags |= AnimationFlags.STARTED;\r\n\t\t\t}\r\n\t\t\tfor (const property in animation.tweens) {\r\n\t\t\t\tconst tween = animation.tweens[property],\r\n\t\t\t\t\tpattern = tween[Tween.PATTERN];\r\n\t\t\t\tlet currentValue = \"\",\r\n\t\t\t\t\ti = 0;\r\n\r\n\t\t\t\tif (pattern) {\r\n\t\t\t\t\tfor (; i < pattern.length; i++) {\r\n\t\t\t\t\t\tconst endValue = tween[Tween.END][i];\r\n\r\n\t\t\t\t\t\tcurrentValue += endValue == null ? pattern[i] : endValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tCSS.setPropertyValue(animation.element, property, currentValue);\r\n\t\t\t}\r\n\t\t\tcompleteCall(animation);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * When the finish action is triggered, the elements' currently active call is\r\n\t * immediately finished. When an element is finished, the next item in its\r\n\t * animation queue is immediately triggered. If passed via a chained call\r\n\t * then this will only target the animations in that call, and not the\r\n\t * elements linked to it.\r\n\t * \r\n\t * A queue name may be passed in to specify that only animations on the\r\n\t * named queue are finished. The default queue is named \"\". In addition the\r\n\t * value of `false` is allowed for the queue name.\r\n\t * \r\n\t * An final argument may be passed in to clear an element's remaining queued\r\n\t * calls. This may only be the value `true`.\r\n\t */\r\n\tfunction finish(args: any[], elements: VelocityResult, promiseHandler?: VelocityPromise): void {\r\n\t\tconst queueName: string | false = validateQueue(args[0], true),\r\n\t\t\tdefaultQueue: false | string = defaults.queue,\r\n\t\t\tfinishAll = args[queueName === undefined ? 0 : 1] === true;\r\n\r\n\t\tif (isVelocityResult(elements) && elements.velocity.animations) {\r\n\t\t\tfor (let i = 0, animations = elements.velocity.animations; i < animations.length; i++) {\r\n\t\t\t\tcheckAnimationShouldBeFinished(animations[i], queueName, defaultQueue);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tlet activeCall = State.first,\r\n\t\t\t\tnextCall: AnimationCall;\r\n\r\n\t\t\twhile ((activeCall = State.firstNew)) {\r\n\t\t\t\tvalidateTweens(activeCall);\r\n\t\t\t}\r\n\t\t\tfor (activeCall = State.first; activeCall && (finishAll || activeCall !== State.firstNew); activeCall = nextCall || State.firstNew) {\r\n\t\t\t\tnextCall = activeCall._next;\r\n\t\t\t\tif (!elements || _inArray(elements, activeCall.element)) {\r\n\t\t\t\t\tcheckAnimationShouldBeFinished(activeCall, queueName, defaultQueue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (promiseHandler) {\r\n\t\t\tif (isVelocityResult(elements) && elements.velocity.animations && elements.then) {\r\n\t\t\t\telements.then(promiseHandler._resolver);\r\n\t\t\t} else {\r\n\t\t\t\tpromiseHandler._resolver(elements);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tregisterAction([\"finish\", finish], true);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Get or set a value from one or more running animations.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/**\r\n\t * Used to map getters for the various AnimationFlags.\r\n\t */\r\n\tconst animationFlags: {[key: string]: number} = {\r\n\t\t\"isExpanded\": AnimationFlags.EXPANDED,\r\n\t\t\"isReady\": AnimationFlags.READY,\r\n\t\t\"isStarted\": AnimationFlags.STARTED,\r\n\t\t\"isStopped\": AnimationFlags.STOPPED,\r\n\t\t\"isPaused\": AnimationFlags.PAUSED,\r\n\t\t\"isSync\": AnimationFlags.SYNC,\r\n\t\t\"isReverse\": AnimationFlags.REVERSE\r\n\t};\r\n\r\n\t/**\r\n\t * Get or set an option or running AnimationCall data value. If there is no\r\n\t * value passed then it will get, otherwise we will set.\r\n\t * \r\n\t * NOTE: When using \"get\" this will not touch the Promise as it is never\r\n\t * returned to the user.\r\n\t */\r\n\tfunction option(args?: any[], elements?: VelocityResult, promiseHandler?: VelocityPromise, action?: string): any {\r\n\t\tconst key = args[0],\r\n\t\t\tqueue = action.indexOf(\".\") >= 0 ? action.replace(/^.*\\./, \"\") : undefined,\r\n\t\t\tqueueName = queue === \"false\" ? false : validateQueue(queue, true);\r\n\t\tlet animations: AnimationCall[],\r\n\t\t\tvalue = args[1];\r\n\r\n\t\tif (!key) {\r\n\t\t\tconsole.warn(\"VelocityJS: Cannot access a non-existant key!\");\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\t// If we're chaining the return value from Velocity then we are only\r\n\t\t// interested in the values related to that call\r\n\t\tif (isVelocityResult(elements) && elements.velocity.animations) {\r\n\t\t\tanimations = elements.velocity.animations;\r\n\t\t} else {\r\n\t\t\tanimations = [];\r\n\r\n\t\t\tfor (let activeCall = State.first; activeCall; activeCall = activeCall._next) {\r\n\t\t\t\tif (elements.indexOf(activeCall.element) >= 0 && getValue(activeCall.queue, activeCall.options.queue) === queueName) {\r\n\t\t\t\t\tanimations.push(activeCall);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If we're dealing with multiple elements that are pointing at a\r\n\t\t\t// single running animation, then instead treat them as a single\r\n\t\t\t// animation.\r\n\t\t\tif (elements.length > 1 && animations.length > 1) {\r\n\t\t\t\tlet i = 1,\r\n\t\t\t\t\toptions = animations[0].options;\r\n\r\n\t\t\t\twhile (i < animations.length) {\r\n\t\t\t\t\tif (animations[i++].options !== options) {\r\n\t\t\t\t\t\toptions = null;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// TODO: this needs to check that they're actually a sync:true animation to merge the results, otherwise the individual values may be different\r\n\t\t\t\tif (options) {\r\n\t\t\t\t\tanimations = [animations[0]];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// GET\r\n\t\tif (value === undefined) {\r\n\t\t\tconst result = [],\r\n\t\t\t\tflag = animationFlags[key];\r\n\r\n\t\t\tfor (let i = 0; i < animations.length; i++) {\r\n\t\t\t\tif (flag === undefined) {\r\n\t\t\t\t\t// A normal key to get.\r\n\t\t\t\t\tresult.push(getValue(animations[i][key], animations[i].options[key]));\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// A flag that we're checking against.\r\n\t\t\t\t\tresult.push((animations[i]._flags & flag) === 0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (elements.length === 1 && animations.length === 1) {\r\n\t\t\t\t// If only a single animation is found and we're only targetting a\r\n\t\t\t\t// single element, then return the value directly\r\n\t\t\t\treturn result[0];\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\t// SET\r\n\t\tlet isPercentComplete: boolean;\r\n\r\n\t\tswitch (key) {\r\n\t\t\tcase \"cache\":\r\n\t\t\t\tvalue = validateCache(value);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"begin\":\r\n\t\t\t\tvalue = validateBegin(value);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"complete\":\r\n\t\t\t\tvalue = validateComplete(value);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"delay\":\r\n\t\t\t\tvalue = validateDelay(value);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"duration\":\r\n\t\t\t\tvalue = validateDuration(value);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"fpsLimit\":\r\n\t\t\t\tvalue = validateFpsLimit(value);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"loop\":\r\n\t\t\t\tvalue = validateLoop(value);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"percentComplete\":\r\n\t\t\t\tisPercentComplete = true;\r\n\t\t\t\tvalue = parseFloat(value);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"repeat\":\r\n\t\t\tcase \"repeatAgain\":\r\n\t\t\t\tvalue = validateRepeat(value);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tif (key[0] !== \"_\") {\r\n\t\t\t\t\tconst num = parseFloat(value);\r\n\r\n\t\t\t\t\tif (value == num) {\r\n\t\t\t\t\t\tvalue = num;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t// deliberate fallthrough\r\n\t\t\tcase \"queue\":\r\n\t\t\tcase \"promise\":\r\n\t\t\tcase \"promiseRejectEmpty\":\r\n\t\t\tcase \"easing\":\r\n\t\t\tcase \"started\":\r\n\t\t\t\tconsole.warn(\"VelocityJS: Trying to set a read-only key:\", key);\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t\tif (value === undefined || value !== value) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to set an invalid value:\", key, \"=\", value, \"(\" + args[1] + \")\");\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tfor (let i = 0; i < animations.length; i++) {\r\n\t\t\tconst animation = animations[i];\r\n\r\n\t\t\tif (isPercentComplete) {\r\n\t\t\t\tanimation.timeStart = lastTick - (getValue(animation.duration, animation.options.duration, defaults.duration) * value);\r\n\t\t\t} else {\r\n\t\t\t\tanimation[key] = value;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (promiseHandler) {\r\n\t\t\tif (isVelocityResult(elements) && elements.velocity.animations && elements.then) {\r\n\t\t\t\telements.then(promiseHandler._resolver);\r\n\t\t\t} else {\r\n\t\t\t\tpromiseHandler._resolver(elements);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tregisterAction([\"option\", option], true);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Pause and resume animation.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Check if an animation should be paused / resumed.\r\n\t */\r\n\tfunction checkAnimation(animation: AnimationCall, queueName: false | string, defaultQueue: false | string, isPaused: boolean) {\r\n\t\tif (queueName === undefined || queueName === getValue(animation.queue, animation.options.queue, defaultQueue)) {\r\n\t\t\tif (isPaused) {\r\n\t\t\t\tanimation._flags |= AnimationFlags.PAUSED;\r\n\t\t\t} else {\r\n\t\t\t\tanimation._flags &= ~AnimationFlags.PAUSED;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Pause and Resume are call-wide (not on a per element basis). Thus, calling pause or resume on a\r\n\t * single element will cause any calls that contain tweens for that element to be paused/resumed\r\n\t * as well.\r\n\t */\r\n\tfunction pauseResume(args?: any[], elements?: VelocityResult, promiseHandler?: VelocityPromise, action?: string) {\r\n\t\tconst isPaused = action.indexOf(\"pause\") === 0,\r\n\t\t\tqueue = action.indexOf(\".\") >= 0 ? action.replace(/^.*\\./, \"\") : undefined,\r\n\t\t\tqueueName = queue === \"false\" ? false : validateQueue(args[0]),\r\n\t\t\tdefaultQueue = defaults.queue;\r\n\r\n\t\tif (isVelocityResult(elements) && elements.velocity.animations) {\r\n\t\t\tfor (let i = 0, animations = elements.velocity.animations; i < animations.length; i++) {\r\n\t\t\t\tcheckAnimation(animations[i], queueName, defaultQueue, isPaused);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tlet activeCall: AnimationCall = State.first;\r\n\r\n\t\t\twhile (activeCall) {\r\n\t\t\t\tif (!elements || _inArray(elements, activeCall.element)) {\r\n\t\t\t\t\tcheckAnimation(activeCall, queueName, defaultQueue, isPaused);\r\n\t\t\t\t}\r\n\t\t\t\tactiveCall = activeCall._next;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (promiseHandler) {\r\n\t\t\tif (isVelocityResult(elements) && elements.velocity.animations && elements.then) {\r\n\t\t\t\telements.then(promiseHandler._resolver);\r\n\t\t\t} else {\r\n\t\t\t\tpromiseHandler._resolver(elements);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tregisterAction([\"pause\", pauseResume], true);\r\n\tregisterAction([\"resume\", pauseResume], true);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Actions that can be performed by passing a string instead of a propertiesMap.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\tregisterAction([\"reverse\", function(args?: any[], elements?: HTMLorSVGElement[] | VelocityResult, promiseHandler?: VelocityPromise, action?: string) {\r\n\t\t// TODO: Code needs to split out before here - but this is needed to prevent it being overridden\r\n\t\tthrow new SyntaxError(\"VelocityJS: The 'reverse' action is private.\");\r\n\t}], true)\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Stop animation.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Check if an animation should be stopped, and if so then set the STOPPED\r\n\t * flag on it, then call complete.\r\n\t */\r\n\tfunction checkAnimationShouldBeStopped(animation: AnimationCall, queueName: false | string, defaultQueue: false | string) {\r\n\t\tvalidateTweens(animation);\r\n\t\tif (queueName === undefined || queueName === getValue(animation.queue, animation.options.queue, defaultQueue)) {\r\n\t\t\tanimation._flags |= AnimationFlags.STOPPED;\r\n\t\t\tcompleteCall(animation);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * When the stop action is triggered, the elements' currently active call is\r\n\t * immediately stopped. When an element is stopped, the next item in its\r\n\t * animation queue is immediately triggered. If passed via a chained call\r\n\t * then this will only target the animations in that call, and not the\r\n\t * elements linked to it.\r\n\t * \r\n\t * A queue name may be passed in to specify that only animations on the\r\n\t * named queue are stopped. The default queue is named \"\". In addition the\r\n\t * value of `false` is allowed for the queue name.\r\n\t * \r\n\t * An final argument may be passed in to clear an element's remaining queued\r\n\t * calls. This may only be the value `true`.\r\n\t * \r\n\t * Note: The stop command runs prior to Velocity's Queueing phase since its\r\n\t * behavior is intended to take effect *immediately*, regardless of the\r\n\t * element's current queue state.\r\n\t */\r\n\tfunction stop(args: any[], elements: VelocityResult, promiseHandler?: VelocityPromise, action?: string): void {\r\n\t\tconst queueName: string | false = validateQueue(args[0], true),\r\n\t\t\tdefaultQueue: false | string = defaults.queue,\r\n\t\t\tfinishAll = args[queueName === undefined ? 0 : 1] === true;\r\n\r\n\t\tif (isVelocityResult(elements) && elements.velocity.animations) {\r\n\t\t\tfor (let i = 0, animations = elements.velocity.animations; i < animations.length; i++) {\r\n\t\t\t\tcheckAnimationShouldBeStopped(animations[i], queueName, defaultQueue);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tlet activeCall = State.first,\r\n\t\t\t\tnextCall: AnimationCall;\r\n\r\n\t\t\twhile ((activeCall = State.firstNew)) {\r\n\t\t\t\tvalidateTweens(activeCall);\r\n\t\t\t}\r\n\t\t\tfor (activeCall = State.first; activeCall && (finishAll || activeCall !== State.firstNew); activeCall = nextCall || State.firstNew) {\r\n\t\t\t\tnextCall = activeCall._next;\r\n\t\t\t\tif (!elements || _inArray(elements, activeCall.element)) {\r\n\t\t\t\t\tcheckAnimationShouldBeStopped(activeCall, queueName, defaultQueue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (promiseHandler) {\r\n\t\t\tif (isVelocityResult(elements) && elements.velocity.animations && elements.then) {\r\n\t\t\t\telements.then(promiseHandler._resolver);\r\n\t\t\t} else {\r\n\t\t\t\tpromiseHandler._resolver(elements);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tregisterAction([\"stop\", stop], true);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Get or set a property from one or more elements.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Expose a style shortcut - can't be used with chaining, but might be of\r\n\t * use to people.\r\n\t */\r\n\texport function style(elements: VelocityResult, property: {[property: string]: string}): VelocityResult;\r\n\texport function style(elements: VelocityResult, property: string): string | string[];\r\n\texport function style(elements: VelocityResult, property: string, value: string): VelocityResult;\r\n\texport function style(elements: VelocityResult, property: string | {[property: string]: string}, value?: string) {\r\n\t\treturn styleAction([property, value], elements);\r\n\t}\r\n\r\n\t/**\r\n\t * Get or set a style of Nomralised property value on one or more elements.\r\n\t * If there is no value passed then it will get, otherwise we will set.\r\n\t * \r\n\t * NOTE: When using \"get\" this will not touch the Promise as it is never\r\n\t * returned to the user.\r\n\t * \r\n\t * This can fail to set, and will reject the Promise if it does so.\r\n\t * \r\n\t * Velocity(elements, \"style\", \"property\", \"value\") => elements;\r\n\t * Velocity(elements, \"style\", {\"property\": \"value\", ...}) => elements;\r\n\t * Velocity(element, \"style\", \"property\") => \"value\";\r\n\t * Velocity(elements, \"style\", \"property\") => [\"value\", ...];\r\n\t */\r\n\tfunction styleAction(args?: any[], elements?: VelocityResult, promiseHandler?: VelocityPromise, action?: string): any {\r\n\t\tconst property = args[0],\r\n\t\t\tvalue = args[1];\r\n\r\n\t\tif (!property) {\r\n\t\t\tconsole.warn(\"VelocityJS: Cannot access a non-existant property!\");\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\t// GET\r\n\t\tif (value === undefined && !isPlainObject(property)) {\r\n\t\t\t// If only a single animation is found and we're only targetting a\r\n\t\t\t// single element, then return the value directly\r\n\t\t\tif (elements.length === 1) {\r\n\t\t\t\treturn CSS.getPropertyValue(elements[0], property);\r\n\t\t\t}\r\n\t\t\tconst result = [];\r\n\r\n\t\t\tfor (let i = 0; i < elements.length; i++) {\r\n\t\t\t\tresult.push(CSS.getPropertyValue(elements[i], property));\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\t// SET\r\n\t\tlet error: string;\r\n\r\n\t\tif (isPlainObject(property)) {\r\n\t\t\tfor (const propertyName in property) {\r\n\t\t\t\tfor (let i = 0; i < elements.length; i++) {\r\n\t\t\t\t\tconst value = property[propertyName];\r\n\r\n\t\t\t\t\tif (isString(value) || isNumber(value)) {\r\n\t\t\t\t\t\tCSS.setPropertyValue(elements[i], propertyName, property[propertyName]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\terror = (error ? error + \", \" : \"\") + \"Cannot set a property '\" + propertyName + \"' to an unknown type: \" + (typeof value);\r\n\t\t\t\t\t\tconsole.warn(\"VelocityJS: Cannot set a property '\" + propertyName + \"' to an unknown type:\", value);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (isString(value) || isNumber(value)) {\r\n\t\t\tfor (let i = 0; i < elements.length; i++) {\r\n\t\t\t\tCSS.setPropertyValue(elements[i], property, String(value));\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\terror = \"Cannot set a property '\" + property + \"' to an unknown type: \" + (typeof value);\r\n\t\t\tconsole.warn(\"VelocityJS: Cannot set a property '\" + property + \"' to an unknown type:\", value);\r\n\t\t}\r\n\t\tif (promiseHandler) {\r\n\t\t\tif (error) {\r\n\t\t\t\tpromiseHandler._rejecter(error);\r\n\t\t\t} else if (isVelocityResult(elements) && elements.velocity.animations && elements.then) {\r\n\t\t\t\telements.then(promiseHandler._resolver);\r\n\t\t\t} else {\r\n\t\t\t\tpromiseHandler._resolver(elements);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tregisterAction([\"style\", styleAction], true);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Get or set a property from one or more elements.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Expose a style shortcut - can't be used with chaining, but might be of\r\n\t * use to people.\r\n\t */\r\n\texport function tween(elements: HTMLorSVGElement[], percentComplete: number, properties: VelocityProperties, easing?: VelocityEasingType);\r\n\texport function tween(elements: HTMLorSVGElement[], percentComplete: number, propertyName: string, property: VelocityProperty, easing?: VelocityEasingType);\r\n\texport function tween(elements: HTMLorSVGElement[], percentComplete: number, properties: VelocityProperties | string, property?: VelocityProperty | VelocityEasingType, easing?: VelocityEasingType) {\r\n\t\treturn tweenAction(arguments as any, elements);\r\n\t}\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tfunction tweenAction(args?: any[], elements?: HTMLorSVGElement[], promiseHandler?: VelocityPromise, action?: string): any {\r\n\t\tlet requireForcefeeding: boolean;\r\n\r\n\t\tif (!elements) {\r\n\t\t\tif (!args.length) {\r\n\t\t\t\tconsole.info(\"Velocity(, \\\"tween\\\", percentComplete, property, end | [end, , ], ) => value\\n\"\r\n\t\t\t\t\t+ \"Velocity(, \\\"tween\\\", percentComplete, {property: end | [end, , ], ...}, ) => {property: value, ...}\");\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\telements = [document.body];\r\n\t\t\trequireForcefeeding = true;\r\n\t\t} else if (elements.length !== 1) {\r\n\t\t\t// TODO: Allow more than a single element to return an array of results\r\n\t\t\tthrow new Error(\"VelocityJS: Cannot tween more than one element!\");\r\n\t\t}\r\n\t\tconst percentComplete: number = args[0],\r\n\t\t\tfakeAnimation = {\r\n\t\t\t\telements: elements,\r\n\t\t\t\telement: elements[0],\r\n\t\t\t\tqueue: false,\r\n\t\t\t\toptions: {\r\n\t\t\t\t\tduration: 1000\r\n\t\t\t\t},\r\n\t\t\t\ttweens: null as {[property: string]: VelocityTween}\r\n\t\t\t},\r\n\t\t\tresult: {[property: string]: string} = {};\r\n\t\tlet properties: VelocityProperties = args[1],\r\n\t\t\tsingleResult: boolean,\r\n\t\t\teasing: VelocityEasingType = args[2],\r\n\t\t\tcount = 0;\r\n\r\n\t\tif (isString(args[1])) {\r\n\t\t\tsingleResult = true;\r\n\t\t\tproperties = {\r\n\t\t\t\t[args[1]]: args[2]\r\n\t\t\t};\r\n\t\t\teasing = args[3];\r\n\t\t} else if (Array.isArray(args[1])) {\r\n\t\t\tsingleResult = true;\r\n\t\t\tproperties = {\r\n\t\t\t\t\"tween\": args[1]\r\n\t\t\t} as any;\r\n\t\t\teasing = args[2];\r\n\t\t}\r\n\t\tif (!isNumber(percentComplete) || percentComplete < 0 || percentComplete > 1) {\r\n\t\t\tthrow new Error(\"VelocityJS: Must tween a percentage from 0 to 1!\");\r\n\t\t}\r\n\t\tif (!isPlainObject(properties)) {\r\n\t\t\tthrow new Error(\"VelocityJS: Cannot tween an invalid property!\");\r\n\t\t}\r\n\t\tif (requireForcefeeding) {\r\n\t\t\tfor (const property in properties) {\r\n\t\t\t\tif (properties.hasOwnProperty(property) && (!Array.isArray(properties[property]) || properties[property].length < 2)) {\r\n\t\t\t\t\tthrow new Error(\"VelocityJS: When not supplying an element you must force-feed values: \" + property);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tconst activeEasing = validateEasing(getValue(easing, defaults.easing), 1000);\r\n\r\n\t\texpandProperties(fakeAnimation as AnimationCall, properties);\r\n\t\tfor (const property in fakeAnimation.tweens) {\r\n\t\t\t// For every element, iterate through each property.\r\n\t\t\tconst tween = fakeAnimation.tweens[property],\r\n\t\t\t\teasing = tween[Tween.EASING] || activeEasing,\r\n\t\t\t\tpattern = tween[Tween.PATTERN],\r\n\t\t\t\trounding = tween[Tween.ROUNDING];\r\n\t\t\tlet currentValue = \"\";\r\n\r\n\t\t\tcount++;\r\n\t\t\tif (pattern) {\r\n\t\t\t\tfor (let i = 0; i < pattern.length; i++) {\r\n\t\t\t\t\tconst startValue = tween[Tween.START][i];\r\n\r\n\t\t\t\t\tif (startValue == null) {\r\n\t\t\t\t\t\tcurrentValue += pattern[i];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconst result = easing(percentComplete, startValue as number, tween[Tween.END][i] as number, property)\r\n\r\n\t\t\t\t\t\tcurrentValue += rounding && rounding[i] ? Math.round(result) : result;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tresult[property] = currentValue;\r\n\t\t}\r\n\t\tif (singleResult && count === 1) {\r\n\t\t\tfor (const property in result) {\r\n\t\t\t\tif (result.hasOwnProperty(property)) {\r\n\t\t\t\t\treturn result[property];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tregisterAction([\"tween\", tweenAction], true);\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/**\r\n\t * Container for page-wide Velocity state data.\r\n\t */\r\n\texport namespace State {\r\n\t\texport let\r\n\t\t\t/**\r\n\t\t\t * Detect if this is a NodeJS or web browser\r\n\t\t\t */\r\n\t\t\tisClient = window && window === window.window,\r\n\t\t\t/**\r\n\t\t\t * Detect mobile devices to determine if mobileHA should be turned\r\n\t\t\t * on.\r\n\t\t\t */\r\n\t\t\tisMobile = isClient && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),\r\n\t\t\t/**\r\n\t\t\t * The mobileHA option's behavior changes on older Android devices\r\n\t\t\t * (Gingerbread, versions 2.3.3-2.3.7).\r\n\t\t\t */\r\n\t\t\tisAndroid = isClient && /Android/i.test(navigator.userAgent),\r\n\t\t\t/**\r\n\t\t\t * The mobileHA option's behavior changes on older Android devices\r\n\t\t\t * (Gingerbread, versions 2.3.3-2.3.7).\r\n\t\t\t */\r\n\t\t\tisGingerbread = isClient && /Android 2\\.3\\.[3-7]/i.test(navigator.userAgent),\r\n\t\t\t/**\r\n\t\t\t * Chrome browser\r\n\t\t\t */\r\n\t\t\tisChrome = isClient && (window as any).chrome,\r\n\t\t\t/**\r\n\t\t\t * Firefox browser\r\n\t\t\t */\r\n\t\t\tisFirefox = isClient && /Firefox/i.test(navigator.userAgent),\r\n\t\t\t/**\r\n\t\t\t * Create a cached element for re-use when checking for CSS property\r\n\t\t\t * prefixes.\r\n\t\t\t */\r\n\t\t\tprefixElement = isClient && document.createElement(\"div\"),\r\n\t\t\t/**\r\n\t\t\t * Retrieve the appropriate scroll anchor and property name for the\r\n\t\t\t * browser: https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY\r\n\t\t\t */\r\n\t\t\twindowScrollAnchor = isClient && window.pageYOffset !== undefined,\r\n\t\t\t/**\r\n\t\t\t * Cache the anchor used for animating window scrolling.\r\n\t\t\t */\r\n\t\t\tscrollAnchor = windowScrollAnchor ? window : (!isClient || document.documentElement || document.body.parentNode || document.body),\r\n\t\t\t/**\r\n\t\t\t * Cache the browser-specific property names associated with the\r\n\t\t\t * scroll anchor.\r\n\t\t\t */\r\n\t\t\tscrollPropertyLeft = windowScrollAnchor ? \"pageXOffset\" : \"scrollLeft\",\r\n\t\t\t/**\r\n\t\t\t * Cache the browser-specific property names associated with the\r\n\t\t\t * scroll anchor.\r\n\t\t\t */\r\n\t\t\tscrollPropertyTop = windowScrollAnchor ? \"pageYOffset\" : \"scrollTop\",\r\n\t\t\t/**\r\n\t\t\t * The className we add / remove when animating.\r\n\t\t\t */\r\n\t\t\tclassName = CLASSNAME,\r\n\t\t\t/**\r\n\t\t\t * Keep track of whether our RAF tick is running.\r\n\t\t\t */\r\n\t\t\tisTicking = false,\r\n\t\t\t/**\r\n\t\t\t * Container for every in-progress call to Velocity.\r\n\t\t\t */\r\n\t\t\tfirst: AnimationCall,\r\n\t\t\t/**\r\n\t\t\t * Container for every in-progress call to Velocity.\r\n\t\t\t */\r\n\t\t\tlast: AnimationCall,\r\n\t\t\t/**\r\n\t\t\t * First new animation - to shortcut starting them all up and push\r\n\t\t\t * any css reads to the start of the tick\r\n\t\t\t */\r\n\t\t\tfirstNew: AnimationCall\r\n\t};\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.CSS {\r\n\t/**\r\n\t * Cache every camelCase match to avoid repeating lookups.\r\n\t */\r\n\tconst cache: {[property: string]: string} = Object.create(null);\r\n\r\n\t/**\r\n\t * Camelcase a property name into its JavaScript notation (e.g.\r\n\t * \"background-color\" ==> \"backgroundColor\"). Camelcasing is used to\r\n\t * normalize property names between and across calls.\r\n\t */\r\n\texport function camelCase(property: string): string {\r\n\t\tconst fixed = cache[property];\r\n\r\n\t\tif (fixed) {\r\n\t\t\treturn fixed;\r\n\t\t}\r\n\t\treturn cache[property] = property.replace(/-([a-z])/g, function(match: string, subMatch: string) {\r\n\t\t\treturn subMatch.toUpperCase();\r\n\t\t})\r\n\t}\r\n}","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.CSS {\r\n\t/**\r\n\t * This is the list of color names -> rgb values. The object is in here so\r\n\t * that the actual name conversion can be in a separate file and not\r\n\t * included for custom builds.\r\n\t */\r\n\texport const ColorNames: {[name: string]: string} = Object.create(null);\r\n\r\n\t/**\r\n\t * Convert a hex list to an rgba value. Designed to be used in replace.\r\n\t */\r\n\tfunction makeRGBA(ignore: any, r: string, g: string, b: string): string {\r\n\t\treturn \"rgba(\" + parseInt(r, 16) + \",\" + parseInt(g, 16) + \",\" + parseInt(b, 16) + \",1)\";\r\n\t}\r\n\r\n\tconst rxColor6 = /#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})/gi,\r\n\t\trxColor3 = /#([a-f\\d])([a-f\\d])([a-f\\d])/gi,\r\n\t\trxColorName = /(rgba?\\(\\s*)?(\\b[a-z]+\\b)/g,\r\n\t\trxRGB = /rgba?\\([^\\)]+\\)/gi,\r\n\t\trxSpaces = /\\s+/g;\r\n\r\n\t/**\r\n\t * Replace any css colour name with its rgba() value. It is possible to use\r\n\t * the name within an \"rgba(blue, 0.4)\" string this way.\r\n\t */\r\n\texport function fixColors(str: string): string {\r\n\t\treturn str\r\n\t\t\t.replace(rxColor6, makeRGBA)\r\n\t\t\t.replace(rxColor3, function($0, r, g, b) {\r\n\t\t\t\treturn makeRGBA($0, r + r, g + g, b + b);\r\n\t\t\t})\r\n\t\t\t.replace(rxColorName, function($0, $1, $2) {\r\n\t\t\t\tif (ColorNames[$2]) {\r\n\t\t\t\t\treturn ($1 ? $1 : \"rgba(\") + ColorNames[$2] + ($1 ? \"\" : \",1)\");\r\n\t\t\t\t}\r\n\t\t\t\treturn $0;\r\n\t\t\t})\r\n\t\t\t.replace(rxRGB, function($0) {\r\n\t\t\t\treturn $0.replace(rxSpaces, \"\");\r\n\t\t\t});\r\n\t}\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.CSS {\r\n\t// Converting from hex as it makes for a smaller file.\r\n\t// TODO: When build system changes to webpack, make this one optional.\r\n\tconst colorValues = {\r\n\t\t\"aliceblue\": 0xf0f8ff,\r\n\t\t\"antiquewhite\": 0xfaebd7,\r\n\t\t\"aqua\": 0x00ffff,\r\n\t\t\"aquamarine\": 0x7fffd4,\r\n\t\t\"azure\": 0xf0ffff,\r\n\t\t\"beige\": 0xf5f5dc,\r\n\t\t\"bisque\": 0xffe4c4,\r\n\t\t\"black\": 0x000000,\r\n\t\t\"blanchedalmond\": 0xffebcd,\r\n\t\t\"blue\": 0x0000ff,\r\n\t\t\"blueviolet\": 0x8a2be2,\r\n\t\t\"brown\": 0xa52a2a,\r\n\t\t\"burlywood\": 0xdeb887,\r\n\t\t\"cadetblue\": 0x5f9ea0,\r\n\t\t\"chartreuse\": 0x7fff00,\r\n\t\t\"chocolate\": 0xd2691e,\r\n\t\t\"coral\": 0xff7f50,\r\n\t\t\"cornflowerblue\": 0x6495ed,\r\n\t\t\"cornsilk\": 0xfff8dc,\r\n\t\t\"crimson\": 0xdc143c,\r\n\t\t\"cyan\": 0x00ffff,\r\n\t\t\"darkblue\": 0x00008b,\r\n\t\t\"darkcyan\": 0x008b8b,\r\n\t\t\"darkgoldenrod\": 0xb8860b,\r\n\t\t\"darkgray\": 0xa9a9a9,\r\n\t\t\"darkgrey\": 0xa9a9a9,\r\n\t\t\"darkgreen\": 0x006400,\r\n\t\t\"darkkhaki\": 0xbdb76b,\r\n\t\t\"darkmagenta\": 0x8b008b,\r\n\t\t\"darkolivegreen\": 0x556b2f,\r\n\t\t\"darkorange\": 0xff8c00,\r\n\t\t\"darkorchid\": 0x9932cc,\r\n\t\t\"darkred\": 0x8b0000,\r\n\t\t\"darksalmon\": 0xe9967a,\r\n\t\t\"darkseagreen\": 0x8fbc8f,\r\n\t\t\"darkslateblue\": 0x483d8b,\r\n\t\t\"darkslategray\": 0x2f4f4f,\r\n\t\t\"darkslategrey\": 0x2f4f4f,\r\n\t\t\"darkturquoise\": 0x00ced1,\r\n\t\t\"darkviolet\": 0x9400d3,\r\n\t\t\"deeppink\": 0xff1493,\r\n\t\t\"deepskyblue\": 0x00bfff,\r\n\t\t\"dimgray\": 0x696969,\r\n\t\t\"dimgrey\": 0x696969,\r\n\t\t\"dodgerblue\": 0x1e90ff,\r\n\t\t\"firebrick\": 0xb22222,\r\n\t\t\"floralwhite\": 0xfffaf0,\r\n\t\t\"forestgreen\": 0x228b22,\r\n\t\t\"fuchsia\": 0xff00ff,\r\n\t\t\"gainsboro\": 0xdcdcdc,\r\n\t\t\"ghostwhite\": 0xf8f8ff,\r\n\t\t\"gold\": 0xffd700,\r\n\t\t\"goldenrod\": 0xdaa520,\r\n\t\t\"gray\": 0x808080,\r\n\t\t\"grey\": 0x808080,\r\n\t\t\"green\": 0x008000,\r\n\t\t\"greenyellow\": 0xadff2f,\r\n\t\t\"honeydew\": 0xf0fff0,\r\n\t\t\"hotpink\": 0xff69b4,\r\n\t\t\"indianred\": 0xcd5c5c,\r\n\t\t\"indigo\": 0x4b0082,\r\n\t\t\"ivory\": 0xfffff0,\r\n\t\t\"khaki\": 0xf0e68c,\r\n\t\t\"lavender\": 0xe6e6fa,\r\n\t\t\"lavenderblush\": 0xfff0f5,\r\n\t\t\"lawngreen\": 0x7cfc00,\r\n\t\t\"lemonchiffon\": 0xfffacd,\r\n\t\t\"lightblue\": 0xadd8e6,\r\n\t\t\"lightcoral\": 0xf08080,\r\n\t\t\"lightcyan\": 0xe0ffff,\r\n\t\t\"lightgoldenrodyellow\": 0xfafad2,\r\n\t\t\"lightgray\": 0xd3d3d3,\r\n\t\t\"lightgrey\": 0xd3d3d3,\r\n\t\t\"lightgreen\": 0x90ee90,\r\n\t\t\"lightpink\": 0xffb6c1,\r\n\t\t\"lightsalmon\": 0xffa07a,\r\n\t\t\"lightseagreen\": 0x20b2aa,\r\n\t\t\"lightskyblue\": 0x87cefa,\r\n\t\t\"lightslategray\": 0x778899,\r\n\t\t\"lightslategrey\": 0x778899,\r\n\t\t\"lightsteelblue\": 0xb0c4de,\r\n\t\t\"lightyellow\": 0xffffe0,\r\n\t\t\"lime\": 0x00ff00,\r\n\t\t\"limegreen\": 0x32cd32,\r\n\t\t\"linen\": 0xfaf0e6,\r\n\t\t\"magenta\": 0xff00ff,\r\n\t\t\"maroon\": 0x800000,\r\n\t\t\"mediumaquamarine\": 0x66cdaa,\r\n\t\t\"mediumblue\": 0x0000cd,\r\n\t\t\"mediumorchid\": 0xba55d3,\r\n\t\t\"mediumpurple\": 0x9370db,\r\n\t\t\"mediumseagreen\": 0x3cb371,\r\n\t\t\"mediumslateblue\": 0x7b68ee,\r\n\t\t\"mediumspringgreen\": 0x00fa9a,\r\n\t\t\"mediumturquoise\": 0x48d1cc,\r\n\t\t\"mediumvioletred\": 0xc71585,\r\n\t\t\"midnightblue\": 0x191970,\r\n\t\t\"mintcream\": 0xf5fffa,\r\n\t\t\"mistyrose\": 0xffe4e1,\r\n\t\t\"moccasin\": 0xffe4b5,\r\n\t\t\"navajowhite\": 0xffdead,\r\n\t\t\"navy\": 0x000080,\r\n\t\t\"oldlace\": 0xfdf5e6,\r\n\t\t\"olive\": 0x808000,\r\n\t\t\"olivedrab\": 0x6b8e23,\r\n\t\t\"orange\": 0xffa500,\r\n\t\t\"orangered\": 0xff4500,\r\n\t\t\"orchid\": 0xda70d6,\r\n\t\t\"palegoldenrod\": 0xeee8aa,\r\n\t\t\"palegreen\": 0x98fb98,\r\n\t\t\"paleturquoise\": 0xafeeee,\r\n\t\t\"palevioletred\": 0xdb7093,\r\n\t\t\"papayawhip\": 0xffefd5,\r\n\t\t\"peachpuff\": 0xffdab9,\r\n\t\t\"peru\": 0xcd853f,\r\n\t\t\"pink\": 0xffc0cb,\r\n\t\t\"plum\": 0xdda0dd,\r\n\t\t\"powderblue\": 0xb0e0e6,\r\n\t\t\"purple\": 0x800080,\r\n\t\t\"rebeccapurple\": 0x663399,\r\n\t\t\"red\": 0xff0000,\r\n\t\t\"rosybrown\": 0xbc8f8f,\r\n\t\t\"royalblue\": 0x4169e1,\r\n\t\t\"saddlebrown\": 0x8b4513,\r\n\t\t\"salmon\": 0xfa8072,\r\n\t\t\"sandybrown\": 0xf4a460,\r\n\t\t\"seagreen\": 0x2e8b57,\r\n\t\t\"seashell\": 0xfff5ee,\r\n\t\t\"sienna\": 0xa0522d,\r\n\t\t\"silver\": 0xc0c0c0,\r\n\t\t\"skyblue\": 0x87ceeb,\r\n\t\t\"slateblue\": 0x6a5acd,\r\n\t\t\"slategray\": 0x708090,\r\n\t\t\"slategrey\": 0x708090,\r\n\t\t\"snow\": 0xfffafa,\r\n\t\t\"springgreen\": 0x00ff7f,\r\n\t\t\"steelblue\": 0x4682b4,\r\n\t\t\"tan\": 0xd2b48c,\r\n\t\t\"teal\": 0x008080,\r\n\t\t\"thistle\": 0xd8bfd8,\r\n\t\t\"tomato\": 0xff6347,\r\n\t\t\"turquoise\": 0x40e0d0,\r\n\t\t\"violet\": 0xee82ee,\r\n\t\t\"wheat\": 0xf5deb3,\r\n\t\t\"white\": 0xffffff,\r\n\t\t\"whitesmoke\": 0xf5f5f5,\r\n\t\t\"yellow\": 0xffff00,\r\n\t\t\"yellowgreen\": 0x9acd32\r\n\t};\r\n\r\n\tfor (let name in colorValues) {\r\n\t\tif (colorValues.hasOwnProperty(name)) {\r\n\t\t\tlet color = colorValues[name];\r\n\r\n\t\t\tColorNames[name] = Math.floor(color / 65536) + \",\" + Math.floor(color / 256 % 256) + \",\" + (color % 256);\r\n\t\t}\r\n\t}\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.CSS {\r\n\r\n\t// TODO: This is still a complete mess\r\n\texport function computePropertyValue(element: HTMLorSVGElement, property: string): string {\r\n\t\tconst data = Data(element),\r\n\t\t\t// If computedStyle is cached, use it.\r\n\t\t\tcomputedStyle = data && data.computedStyle ? data.computedStyle : window.getComputedStyle(element, null);\r\n\t\tlet computedValue: string | number = 0;\r\n\r\n\t\tif (data && !data.computedStyle) {\r\n\t\t\tdata.computedStyle = computedStyle;\r\n\t\t}\r\n\t\tif (property === \"width\" || property === \"height\") {\r\n\t\t\t// Browsers do not return height and width values for elements\r\n\t\t\t// that are set to display:\"none\". Thus, we temporarily toggle\r\n\t\t\t// display to the element type's default value.\r\n\t\t\tconst toggleDisplay: boolean = getPropertyValue(element, \"display\") === \"none\";\r\n\r\n\t\t\t// When box-sizing isn't set to border-box, height and width\r\n\t\t\t// style values are incorrectly computed when an element's\r\n\t\t\t// scrollbars are visible (which expands the element's\r\n\t\t\t// dimensions). Thus, we defer to the more accurate\r\n\t\t\t// offsetHeight/Width property, which includes the total\r\n\t\t\t// dimensions for interior, border, padding, and scrollbar. We\r\n\t\t\t// subtract border and padding to get the sum of interior +\r\n\t\t\t// scrollbar.\r\n\t\t\t// TODO: offsetHeight does not exist on SVGElement\r\n\t\t\tif (toggleDisplay) {\r\n\t\t\t\tsetPropertyValue(element, \"display\", \"auto\");\r\n\t\t\t}\r\n\t\t\tcomputedValue = augmentDimension(element, property, true);\r\n\t\t\tif (toggleDisplay) {\r\n\t\t\t\tsetPropertyValue(element, \"display\", \"none\");\r\n\t\t\t}\r\n\t\t\treturn String(computedValue);\r\n\t\t}\r\n\r\n\t\t/* IE and Firefox do not return a value for the generic borderColor -- they only return individual values for each border side's color.\r\n\t\t Also, in all browsers, when border colors aren't all the same, a compound value is returned that Velocity isn't setup to parse.\r\n\t\t So, as a polyfill for querying individual border side colors, we just return the top border's color and animate all borders from that value. */\r\n\t\t/* TODO: There is a borderColor normalisation in legacy/ - figure out where this is needed... */\r\n\t\t//\t\tif (property === \"borderColor\") {\r\n\t\t//\t\t\tproperty = \"borderTopColor\";\r\n\t\t//\t\t}\r\n\r\n\t\tcomputedValue = computedStyle[property];\r\n\t\t/* Fall back to the property's style value (if defined) when computedValue returns nothing,\r\n\t\t which can happen when the element hasn't been painted. */\r\n\t\tif (!computedValue) {\r\n\t\t\tcomputedValue = element.style[property];\r\n\t\t}\r\n\t\t/* For top, right, bottom, and left (TRBL) values that are set to \"auto\" on elements of \"fixed\" or \"absolute\" position,\r\n\t\t defer to jQuery for converting \"auto\" to a numeric value. (For elements with a \"static\" or \"relative\" position, \"auto\" has the same\r\n\t\t effect as being set to 0, so no conversion is necessary.) */\r\n\t\t/* An example of why numeric conversion is necessary: When an element with \"position:absolute\" has an untouched \"left\"\r\n\t\t property, which reverts to \"auto\", left's value is 0 relative to its parent element, but is often non-zero relative\r\n\t\t to its *containing* (not parent) element, which is the nearest \"position:relative\" ancestor or the viewport (and always the viewport in the case of \"position:fixed\"). */\r\n\t\tif (computedValue === \"auto\") {\r\n\t\t\tswitch (property) {\r\n\t\t\t\tcase \"top\":\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tlet topLeft = true;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\tcase \"bottom\":\r\n\t\t\t\t\tconst position = getPropertyValue(element, \"position\"); /* GET */\r\n\r\n\t\t\t\t\tif (position === \"fixed\" || (topLeft && position === \"absolute\")) {\r\n\t\t\t\t\t\t// Note: this has no pixel unit on its returned values,\r\n\t\t\t\t\t\t// we re-add it here to conform with\r\n\t\t\t\t\t\t// computePropertyValue's behavior.\r\n\t\t\t\t\t\tcomputedValue = element.getBoundingClientRect[property] + \"px\"; /* GET */\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t// Deliberate fallthrough!\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tcomputedValue = \"0px\";\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn computedValue ? String(computedValue) : \"\";\r\n\t}\r\n\r\n\t/**\r\n\t * Get a property value. This will grab via the cache if it exists, then\r\n\t * via any normalisations, then it will check the css values directly.\r\n\t */\r\n\texport function getPropertyValue(element: HTMLorSVGElement, propertyName: string, skipNormalisation?: boolean, skipCache?: boolean): string {\r\n\t\tconst data = Data(element);\r\n\t\tlet propertyValue: string;\r\n\r\n\t\tif (NoCacheNormalizations.has(propertyName)) {\r\n\t\t\tskipCache = true;\r\n\t\t}\r\n\t\tif (!skipCache && data && data.cache[propertyName] != null) {\r\n\t\t\tpropertyValue = data.cache[propertyName];\r\n\t\t\tif (debug >= 2) {\r\n\t\t\t\tconsole.info(\"Get \" + propertyName + \": \" + propertyValue);\r\n\t\t\t}\r\n\t\t\treturn propertyValue;\r\n\t\t} else {\r\n\t\t\tlet types = data.types,\r\n\t\t\t\tbest: VelocityNormalizationsFn;\r\n\r\n\t\t\tfor (let index = 0; types; types >>= 1, index++) {\r\n\t\t\t\tif (types & 1) {\r\n\t\t\t\t\tbest = Normalizations[index][propertyName] || best;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (best) {\r\n\t\t\t\tpropertyValue = best(element);\r\n\t\t\t} else {\r\n\t\t\t\t// Note: Retrieving the value of a CSS property cannot simply be\r\n\t\t\t\t// performed by checking an element's style attribute (which\r\n\t\t\t\t// only reflects user-defined values). Instead, the browser must\r\n\t\t\t\t// be queried for a property's *computed* value. You can read\r\n\t\t\t\t// more about getComputedStyle here:\r\n\t\t\t\t// https://developer.mozilla.org/en/docs/Web/API/window.getComputedStyle\r\n\t\t\t\tpropertyValue = computePropertyValue(element, propertyName);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (debug >= 2) {\r\n\t\t\tconsole.info(\"Get \" + propertyName + \": \" + propertyValue);\r\n\t\t}\r\n\t\tif (data) {\r\n\t\t\tdata.cache[propertyName] = propertyValue;\r\n\t\t}\r\n\t\treturn propertyValue;\r\n\t}\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.CSS {\r\n\t/**\r\n\t * All possible units in CSS. Used to recognise units when parsing tweens.\r\n\t */\r\n\tconst Units = [\r\n\t\t\"%\", // relative\r\n\t\t\"em\", \"ex\", \"ch\", \"rem\", // font relative\r\n\t\t\"vw\", \"vh\", \"vmin\", \"vmax\", // viewport relative\r\n\t\t\"cm\", \"mm\", \"Q\", \"in\", \"pc\", \"pt\", \"px\", // absolute lengths\r\n\t\t\"deg\", \"grad\", \"rad\", \"turn\", // angles\r\n\t\t\"s\", \"ms\" // time\r\n\t];\r\n\r\n\t/**\r\n\t * Get the current unit for this property. Only used when parsing tweens\r\n\t * to check if the unit is changing between the start and end values.\r\n\t */\r\n\texport function getUnit(property: string, start?: number): string {\r\n\t\tstart = start || 0;\r\n\t\tif (property[start] && property[start] !== \" \") {\r\n\t\t\tfor (let i = 0, units = Units; i < units.length; i++) {\r\n\t\t\t\tconst unit = units[i];\r\n\t\t\t\tlet j = 0;\r\n\r\n\t\t\t\tdo {\r\n\t\t\t\t\tif (j >= unit.length) {\r\n\t\t\t\t\t\treturn unit;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (unit[j] !== property[start + j]) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t} while (++j);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n * \r\n * Regular Expressions - cached as they can be expensive to create.\r\n */\r\n\r\nnamespace VelocityStatic.CSS {\r\n\r\n\texport const RegEx = {\r\n\t\tisHex: /^#([A-f\\d]{3}){1,2}$/i,\r\n\t\t/* Unwrap a property value's surrounding text, e.g. \"rgba(4, 3, 2, 1)\" ==> \"4, 3, 2, 1\" and \"rect(4px 3px 2px 1px)\" ==> \"4px 3px 2px 1px\". */\r\n\t\tvalueUnwrap: /^[A-z]+\\((.*)\\)$/i,\r\n\t\twrappedValueAlreadyExtracted: /[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,\r\n\t\t/* Split a multi-value property into an array of subvalues, e.g. \"rgba(4, 3, 2, 1) 4px 3px 2px 1px\" ==> [ \"rgba(4, 3, 2, 1)\", \"4px\", \"3px\", \"2px\", \"1px\" ]. */\r\n\t\tvalueSplit: /([A-z]+\\(.+\\))|(([A-z0-9#-.]+?)(?=\\s|$))/ig\r\n\t};\r\n}","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.CSS {\r\n\t/**\r\n\t * The singular setPropertyValue, which routes the logic for all\r\n\t * normalizations, hooks, and standard CSS properties.\r\n\t */\r\n\texport function setPropertyValue(element: HTMLorSVGElement, propertyName: string, propertyValue: any) {\r\n\t\tconst data = Data(element);\r\n\r\n\t\tif (isString(propertyValue)\r\n\t\t\t&& propertyValue[0] === \"c\"\r\n\t\t\t&& propertyValue[1] === \"a\"\r\n\t\t\t&& propertyValue[2] === \"l\"\r\n\t\t\t&& propertyValue[3] === \"c\"\r\n\t\t\t&& propertyValue[4] === \"(\"\r\n\t\t\t&& propertyValue[5] === \"0\"\r\n\t\t\t&& propertyValue[5] === \" \") {\r\n\t\t\t// Make sure we un-calc unit changing values - try not to trigger\r\n\t\t\t// this code any more often than we have to since it's expensive\r\n\t\t\tpropertyValue = propertyValue.replace(/^calc\\(0[^\\d]* \\+ ([^\\(\\)]+)\\)$/, \"$1\");\r\n\t\t}\r\n\t\tif (data && data.cache[propertyName] !== propertyValue) {\r\n\t\t\t// By setting it to undefined we force a true \"get\" later\r\n\t\t\tdata.cache[propertyName] = propertyValue || undefined;\r\n\t\t\tlet types = data.types,\r\n\t\t\t\tbest: VelocityNormalizationsFn;\r\n\r\n\t\t\tfor (let index = 0; types; types >>= 1, index++) {\r\n\t\t\t\tif (types & 1) {\r\n\t\t\t\t\tbest = Normalizations[index][propertyName] || best;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (!best || !best(element, propertyValue)) {\r\n\t\t\t\telement.style[propertyName] = propertyValue;\r\n\t\t\t}\r\n\t\t\tif (debug >= 2) {\r\n\t\t\t\tconsole.info(\"Set \" + propertyName + \": \" + propertyValue, element);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.Easing {\r\n\texport const Easings: {[name: string]: VelocityEasingFn} = Object.create(null);\r\n\r\n\t/**\r\n\t * Used to register a easing. This should never be called by users\r\n\t * directly, instead it should be called via an action:
\r\n\t * Velocity(\"registerEasing\", \"name\", VelocityEasingFn);\r\n\t *\r\n\t * @private\r\n\t */\r\n\texport function registerEasing(args?: [string, VelocityEasingFn]) {\r\n\t\tconst name: string = args[0],\r\n\t\t\tcallback = args[1];\r\n\r\n\t\tif (!isString(name)) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to set 'registerEasing' name to an invalid value:\", name);\r\n\t\t} else if (!isFunction(callback)) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to set 'registerEasing' callback to an invalid value:\", name, callback);\r\n\t\t} else if (Easings[name]) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to override 'registerEasing' callback\", name);\r\n\t\t} else {\r\n\t\t\tEasings[name] = callback;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterAction([\"registerEasing\", registerEasing], true);\r\n\r\n\t/* Basic (same as jQuery) easings. */\r\n\tregisterEasing([\"linear\", function(percentComplete, startValue, endValue) {\r\n\t\treturn startValue + percentComplete * (endValue - startValue);\r\n\t}]);\r\n\r\n\tregisterEasing([\"swing\", function(percentComplete, startValue, endValue) {\r\n\t\treturn startValue + (0.5 - Math.cos(percentComplete * Math.PI) / 2) * (endValue - startValue);\r\n\t}]);\r\n\r\n\t/* Bonus \"spring\" easing, which is a less exaggerated version of easeInOutElastic. */\r\n\tregisterEasing([\"spring\", function(percentComplete, startValue, endValue) {\r\n\t\treturn startValue + (1 - (Math.cos(percentComplete * 4.5 * Math.PI) * Math.exp(-percentComplete * 6))) * (endValue - startValue);\r\n\t}]);\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Back easings, based on code from https://github.com/yuichiroharai/easeplus-velocity\r\n */\r\n\r\nnamespace VelocityStatic.Easing {\r\n\texport function registerBackIn(name: string, amount: number) {\r\n\t\tregisterEasing([name, function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\treturn Math.pow(percentComplete, 2) * ((amount + 1) * percentComplete - amount) * (endValue - startValue);\r\n\t\t}]);\r\n\t}\r\n\r\n\texport function registerBackOut(name: string, amount: number) {\r\n\t\tregisterEasing([name, function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\treturn (Math.pow(--percentComplete, 2) * ((amount + 1) * percentComplete + amount) + 1) * (endValue - startValue);\r\n\t\t}]);\r\n\t}\r\n\r\n\texport function registerBackInOut(name: string, amount: number) {\r\n\t\tamount *= 1.525;\r\n\t\tregisterEasing([name, function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\treturn ((percentComplete *= 2) < 1\r\n\t\t\t\t? (Math.pow(percentComplete, 2) * ((amount + 1) * percentComplete - amount))\r\n\t\t\t\t: (Math.pow(percentComplete -= 2, 2) * ((amount + 1) * percentComplete + amount) + 2)\r\n\t\t\t) * 0.5 * (endValue - startValue);\r\n\t\t}]);\r\n\t}\r\n\r\n\tregisterBackIn(\"easeInBack\", 1.7);\r\n\tregisterBackOut(\"easeOutBack\", 1.7);\r\n\tregisterBackInOut(\"easeInOutBack\", 1.7);\r\n\r\n\t// TODO: Expose these as actions to register custom easings?\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License\r\n */\r\n\r\nnamespace VelocityStatic.Easing {\r\n\t/**\r\n\t * Fix to a range of 0 <= num <= 1.\r\n\t */\r\n\tfunction fixRange(num: number) {\r\n\t\treturn Math.min(Math.max(num, 0), 1);\r\n\t}\r\n\r\n\tfunction A(aA1, aA2) {\r\n\t\treturn 1.0 - 3.0 * aA2 + 3.0 * aA1;\r\n\t}\r\n\r\n\tfunction B(aA1, aA2) {\r\n\t\treturn 3.0 * aA2 - 6.0 * aA1;\r\n\t}\r\n\r\n\tfunction C(aA1) {\r\n\t\treturn 3.0 * aA1;\r\n\t}\r\n\r\n\tfunction calcBezier(aT, aA1, aA2) {\r\n\t\treturn ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\r\n\t}\r\n\r\n\tfunction getSlope(aT, aA1, aA2) {\r\n\t\treturn 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n\t}\r\n\r\n\texport function generateBezier(mX1: number, mY1: number, mX2: number, mY2: number): VelocityEasingFn {\r\n\t\tconst NEWTON_ITERATIONS = 4,\r\n\t\t\tNEWTON_MIN_SLOPE = 0.001,\r\n\t\t\tSUBDIVISION_PRECISION = 0.0000001,\r\n\t\t\tSUBDIVISION_MAX_ITERATIONS = 10,\r\n\t\t\tkSplineTableSize = 11,\r\n\t\t\tkSampleStepSize = 1.0 / (kSplineTableSize - 1.0),\r\n\t\t\tfloat32ArraySupported = \"Float32Array\" in window;\r\n\r\n\t\t/* Must contain four arguments. */\r\n\t\tif (arguments.length !== 4) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t/* Arguments must be numbers. */\r\n\t\tfor (let i = 0; i < 4; ++i) {\r\n\t\t\tif (typeof arguments[i] !== \"number\" || isNaN(arguments[i]) || !isFinite(arguments[i])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* X values must be in the [0, 1] range. */\r\n\t\tmX1 = fixRange(mX1);\r\n\t\tmX2 = fixRange(mX2);\r\n\r\n\t\tconst mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n\r\n\t\tfunction newtonRaphsonIterate(aX, aGuessT) {\r\n\t\t\tfor (let i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n\t\t\t\tconst currentSlope = getSlope(aGuessT, mX1, mX2);\r\n\r\n\t\t\t\tif (currentSlope === 0.0) {\r\n\t\t\t\t\treturn aGuessT;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n\t\t\t\taGuessT -= currentX / currentSlope;\r\n\t\t\t}\r\n\r\n\t\t\treturn aGuessT;\r\n\t\t}\r\n\r\n\t\tfunction calcSampleValues() {\r\n\t\t\tfor (let i = 0; i < kSplineTableSize; ++i) {\r\n\t\t\t\tmSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction binarySubdivide(aX, aA, aB) {\r\n\t\t\tlet currentX, currentT, i = 0;\r\n\r\n\t\t\tdo {\r\n\t\t\t\tcurrentT = aA + (aB - aA) / 2.0;\r\n\t\t\t\tcurrentX = calcBezier(currentT, mX1, mX2) - aX;\r\n\t\t\t\tif (currentX > 0.0) {\r\n\t\t\t\t\taB = currentT;\r\n\t\t\t\t} else {\r\n\t\t\t\t\taA = currentT;\r\n\t\t\t\t}\r\n\t\t\t} while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n\r\n\t\t\treturn currentT;\r\n\t\t}\r\n\r\n\t\tfunction getTForX(aX) {\r\n\t\t\tlet intervalStart = 0.0,\r\n\t\t\t\tcurrentSample = 1,\r\n\t\t\t\tlastSample = kSplineTableSize - 1;\r\n\r\n\t\t\tfor (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\r\n\t\t\t\tintervalStart += kSampleStepSize;\r\n\t\t\t}\r\n\r\n\t\t\t--currentSample;\r\n\r\n\t\t\tconst dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]),\r\n\t\t\t\tguessForT = intervalStart + dist * kSampleStepSize,\r\n\t\t\t\tinitialSlope = getSlope(guessForT, mX1, mX2);\r\n\r\n\t\t\tif (initialSlope >= NEWTON_MIN_SLOPE) {\r\n\t\t\t\treturn newtonRaphsonIterate(aX, guessForT);\r\n\t\t\t} else if (initialSlope === 0.0) {\r\n\t\t\t\treturn guessForT;\r\n\t\t\t} else {\r\n\t\t\t\treturn binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet _precomputed = false;\r\n\r\n\t\tfunction precompute() {\r\n\t\t\t_precomputed = true;\r\n\t\t\tif (mX1 !== mY1 || mX2 !== mY2) {\r\n\t\t\t\tcalcSampleValues();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst f = function(percentComplete: number, startValue: number, endValue: number, property?: string) {\r\n\t\t\tif (!_precomputed) {\r\n\t\t\t\tprecompute();\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\tif (mX1 === mY1 && mX2 === mY2) {\r\n\t\t\t\treturn startValue + percentComplete * (endValue - startValue);\r\n\t\t\t}\r\n\t\t\treturn startValue + calcBezier(getTForX(percentComplete), mY1, mY2) * (endValue - startValue);\r\n\t\t};\r\n\r\n\t\t(f as any).getControlPoints = function() {\r\n\t\t\treturn [{x: mX1, y: mY1}, {x: mX2, y: mY2}];\r\n\t\t};\r\n\r\n\t\tconst str = \"generateBezier(\" + [mX1, mY1, mX2, mY2] + \")\";\r\n\t\tf.toString = function() {\r\n\t\t\treturn str;\r\n\t\t};\r\n\r\n\t\treturn f;\r\n\t}\r\n\r\n\t/* Common easings */\r\n\tconst easeIn = generateBezier(0.42, 0.0, 1.00, 1.0),\r\n\t\teaseOut = generateBezier(0.00, 0.0, 0.58, 1.0),\r\n\t\teaseInOut = generateBezier(0.42, 0.0, 0.58, 1.0);\r\n\r\n\tregisterEasing([\"ease\", generateBezier(0.25, 0.1, 0.25, 1.0)]);\r\n\tregisterEasing([\"easeIn\", easeIn]);\r\n\tregisterEasing([\"ease-in\", easeIn]);\r\n\tregisterEasing([\"easeOut\", easeOut]);\r\n\tregisterEasing([\"ease-out\", easeOut]);\r\n\tregisterEasing([\"easeInOut\", easeInOut]);\r\n\tregisterEasing([\"ease-in-out\", easeInOut]);\r\n\tregisterEasing([\"easeInSine\", generateBezier(0.47, 0, 0.745, 0.715)]);\r\n\tregisterEasing([\"easeOutSine\", generateBezier(0.39, 0.575, 0.565, 1)]);\r\n\tregisterEasing([\"easeInOutSine\", generateBezier(0.445, 0.05, 0.55, 0.95)]);\r\n\tregisterEasing([\"easeInQuad\", generateBezier(0.55, 0.085, 0.68, 0.53)]);\r\n\tregisterEasing([\"easeOutQuad\", generateBezier(0.25, 0.46, 0.45, 0.94)]);\r\n\tregisterEasing([\"easeInOutQuad\", generateBezier(0.455, 0.03, 0.515, 0.955)]);\r\n\tregisterEasing([\"easeInCubic\", generateBezier(0.55, 0.055, 0.675, 0.19)]);\r\n\tregisterEasing([\"easeOutCubic\", generateBezier(0.215, 0.61, 0.355, 1)]);\r\n\tregisterEasing([\"easeInOutCubic\", generateBezier(0.645, 0.045, 0.355, 1)]);\r\n\tregisterEasing([\"easeInQuart\", generateBezier(0.895, 0.03, 0.685, 0.22)]);\r\n\tregisterEasing([\"easeOutQuart\", generateBezier(0.165, 0.84, 0.44, 1)]);\r\n\tregisterEasing([\"easeInOutQuart\", generateBezier(0.77, 0, 0.175, 1)]);\r\n\tregisterEasing([\"easeInQuint\", generateBezier(0.755, 0.05, 0.855, 0.06)]);\r\n\tregisterEasing([\"easeOutQuint\", generateBezier(0.23, 1, 0.32, 1)]);\r\n\tregisterEasing([\"easeInOutQuint\", generateBezier(0.86, 0, 0.07, 1)]);\r\n\tregisterEasing([\"easeInExpo\", generateBezier(0.95, 0.05, 0.795, 0.035)]);\r\n\tregisterEasing([\"easeOutExpo\", generateBezier(0.19, 1, 0.22, 1)]);\r\n\tregisterEasing([\"easeInOutExpo\", generateBezier(1, 0, 0, 1)]);\r\n\tregisterEasing([\"easeInCirc\", generateBezier(0.6, 0.04, 0.98, 0.335)]);\r\n\tregisterEasing([\"easeOutCirc\", generateBezier(0.075, 0.82, 0.165, 1)]);\r\n\tregisterEasing([\"easeInOutCirc\", generateBezier(0.785, 0.135, 0.15, 0.86)]);\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Bounce easings, based on code from https://github.com/yuichiroharai/easeplus-velocity\r\n */\r\n\r\nnamespace VelocityStatic.Easing {\r\n\tfunction easeOutBounce(percentComplete: number): number {\r\n\t\tif (percentComplete < 1 / 2.75) {\r\n\t\t\treturn (7.5625 * percentComplete * percentComplete);\r\n\t\t}\r\n\t\tif (percentComplete < 2 / 2.75) {\r\n\t\t\treturn (7.5625 * (percentComplete -= 1.5 / 2.75) * percentComplete + 0.75);\r\n\t\t}\r\n\t\tif (percentComplete < 2.5 / 2.75) {\r\n\t\t\treturn (7.5625 * (percentComplete -= 2.25 / 2.75) * percentComplete + 0.9375);\r\n\t\t}\r\n\t\treturn (7.5625 * (percentComplete -= 2.625 / 2.75) * percentComplete + 0.984375);\r\n\t};\r\n\r\n\tfunction easeInBounce(percentComplete: number): number {\r\n\t\treturn 1 - easeOutBounce(1 - percentComplete);\r\n\t};\r\n\r\n\tregisterEasing([\"easeInBounce\", function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\tif (percentComplete === 0) {\r\n\t\t\treturn startValue;\r\n\t\t}\r\n\t\tif (percentComplete === 1) {\r\n\t\t\treturn endValue;\r\n\t\t}\r\n\t\treturn easeInBounce(percentComplete) * (endValue - startValue);\r\n\t}]);\r\n\r\n\tregisterEasing([\"easeOutBounce\", function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\tif (percentComplete === 0) {\r\n\t\t\treturn startValue;\r\n\t\t}\r\n\t\tif (percentComplete === 1) {\r\n\t\t\treturn endValue;\r\n\t\t}\r\n\t\treturn easeOutBounce(percentComplete) * (endValue - startValue);\r\n\t}]);\r\n\r\n\tregisterEasing([\"easeInOutBounce\", function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\tif (percentComplete === 0) {\r\n\t\t\treturn startValue;\r\n\t\t}\r\n\t\tif (percentComplete === 1) {\r\n\t\t\treturn endValue;\r\n\t\t}\r\n\t\treturn (percentComplete < 0.5\r\n\t\t\t? easeInBounce(percentComplete * 2) * .5\r\n\t\t\t: easeOutBounce(percentComplete * 2 - 1) * 0.5 + 0.5\r\n\t\t) * (endValue - startValue);\r\n\t}]);\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Elastic easings, based on code from https://github.com/yuichiroharai/easeplus-velocity\r\n */\r\n\r\nnamespace VelocityStatic.Easing {\r\n\tconst pi2 = Math.PI * 2;\r\n\r\n\texport function registerElasticIn(name: string, amplitude: number, period: number) {\r\n\t\tregisterEasing([name, function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\treturn -(amplitude * Math.pow(2, 10 * (percentComplete -= 1)) * Math.sin((percentComplete - (period / pi2 * Math.asin(1 / amplitude))) * pi2 / period)) * (endValue - startValue);\r\n\t\t}]);\r\n\t}\r\n\r\n\texport function registerElasticOut(name: string, amplitude: number, period: number) {\r\n\t\tregisterEasing([name, function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\treturn (amplitude * Math.pow(2, -10 * percentComplete) * Math.sin((percentComplete - (period / pi2 * Math.asin(1 / amplitude))) * pi2 / period) + 1) * (endValue - startValue);\r\n\t\t}]);\r\n\t}\r\n\r\n\texport function registerElasticInOut(name: string, amplitude: number, period: number) {\r\n\t\tregisterEasing([name, function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\tconst s = period / pi2 * Math.asin(1 / amplitude);\r\n\r\n\t\t\tpercentComplete = percentComplete * 2 - 1;\r\n\t\t\treturn (percentComplete < 0\r\n\t\t\t\t? -0.5 * (amplitude * Math.pow(2, 10 * percentComplete) * Math.sin((percentComplete - s) * pi2 / period))\r\n\t\t\t\t: amplitude * Math.pow(2, -10 * percentComplete) * Math.sin((percentComplete - s) * pi2 / period) * 0.5 + 1\r\n\t\t\t) * (endValue - startValue);\r\n\t\t}]);\r\n\t}\r\n\r\n\tregisterElasticIn(\"easeInElastic\", 1, 0.3);\r\n\tregisterElasticOut(\"easeOutElastic\", 1, 0.3);\r\n\tregisterElasticInOut(\"easeInOutElastic\", 1, 0.3 * 1.5);\r\n\r\n\t// TODO: Expose these as actions to register custom easings?\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.Easing {\r\n\r\n\tinterface springState {\r\n\t\tx: number;\r\n\t\tv: number;\r\n\t\ttension: number;\r\n\t\tfriction: number;\r\n\t};\r\n\r\n\tinterface springDelta {\r\n\t\tdx: number;\r\n\t\tdv: number;\r\n\t};\r\n\r\n\t/* Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */\r\n\t/* Given a tension, friction, and duration, a simulation at 60FPS will first run without a defined duration in order to calculate the full path. A second pass\r\n\t then adjusts the time delta -- using the relation between actual time and duration -- to calculate the path for the duration-constrained animation. */\r\n\tfunction springAccelerationForState(state: springState) {\r\n\t\treturn (-state.tension * state.x) - (state.friction * state.v);\r\n\t}\r\n\r\n\tfunction springEvaluateStateWithDerivative(initialState: springState, dt: number, derivative: springDelta): springDelta {\r\n\t\tconst state = {\r\n\t\t\tx: initialState.x + derivative.dx * dt,\r\n\t\t\tv: initialState.v + derivative.dv * dt,\r\n\t\t\ttension: initialState.tension,\r\n\t\t\tfriction: initialState.friction\r\n\t\t};\r\n\r\n\t\treturn {\r\n\t\t\tdx: state.v,\r\n\t\t\tdv: springAccelerationForState(state)\r\n\t\t};\r\n\t}\r\n\r\n\tfunction springIntegrateState(state: springState, dt: number) {\r\n\t\tconst a = {\r\n\t\t\tdx: state.v,\r\n\t\t\tdv: springAccelerationForState(state)\r\n\t\t},\r\n\t\t\tb = springEvaluateStateWithDerivative(state, dt * 0.5, a),\r\n\t\t\tc = springEvaluateStateWithDerivative(state, dt * 0.5, b),\r\n\t\t\td = springEvaluateStateWithDerivative(state, dt, c),\r\n\t\t\tdxdt = 1.0 / 6.0 * (a.dx + 2.0 * (b.dx + c.dx) + d.dx),\r\n\t\t\tdvdt = 1.0 / 6.0 * (a.dv + 2.0 * (b.dv + c.dv) + d.dv);\r\n\r\n\t\tstate.x = state.x + dxdt * dt;\r\n\t\tstate.v = state.v + dvdt * dt;\r\n\r\n\t\treturn state;\r\n\t}\r\n\r\n\texport function generateSpringRK4(tension: number, friction: number): number;\r\n\texport function generateSpringRK4(tension: number, friction: number, duration: number): VelocityEasingFn;\r\n\texport function generateSpringRK4(tension: number, friction: number, duration?: number): any {\r\n\t\tlet initState: springState = {\r\n\t\t\tx: -1,\r\n\t\t\tv: 0,\r\n\t\t\ttension: parseFloat(tension as any) || 500,\r\n\t\t\tfriction: parseFloat(friction as any) || 20\r\n\t\t},\r\n\t\t\tpath = [0],\r\n\t\t\ttime_lapsed = 0,\r\n\t\t\ttolerance = 1 / 10000,\r\n\t\t\tDT = 16 / 1000,\r\n\t\t\thave_duration = duration != null, // deliberate \"==\", as undefined == null != 0\r\n\t\t\tdt: number,\r\n\t\t\tlast_state: springState;\r\n\r\n\t\t/* Calculate the actual time it takes for this animation to complete with the provided conditions. */\r\n\t\tif (have_duration) {\r\n\t\t\t/* Run the simulation without a duration. */\r\n\t\t\ttime_lapsed = generateSpringRK4(initState.tension, initState.friction);\r\n\t\t\t/* Compute the adjusted time delta. */\r\n\t\t\tdt = (time_lapsed as number) / duration * DT;\r\n\t\t} else {\r\n\t\t\tdt = DT;\r\n\t\t}\r\n\r\n\t\twhile (true) {\r\n\t\t\t/* Next/step function .*/\r\n\t\t\tlast_state = springIntegrateState(last_state || initState, dt);\r\n\t\t\t/* Store the position. */\r\n\t\t\tpath.push(1 + last_state.x);\r\n\t\t\ttime_lapsed += 16;\r\n\t\t\t/* If the change threshold is reached, break. */\r\n\t\t\tif (!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* If duration is not defined, return the actual time required for completing this animation. Otherwise, return a closure that holds the\r\n\t\t computed path and returns a snapshot of the position according to a given percentComplete. */\r\n\t\treturn !have_duration ? time_lapsed : function(percentComplete: number, startValue: number, endValue: number) {\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\treturn startValue + path[(percentComplete * (path.length - 1)) | 0] * (endValue - startValue);\r\n\t\t};\r\n\t};\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details\r\n * \r\n * Step easing generator.\r\n */\r\n\r\nnamespace VelocityStatic.Easing {\r\n\tconst cache: {[steps: number]: VelocityEasingFn} = {};\r\n\r\n\texport function generateStep(steps): VelocityEasingFn {\r\n\t\tconst fn = cache[steps];\r\n\r\n\t\tif (fn) {\r\n\t\t\treturn fn;\r\n\t\t}\r\n\t\treturn cache[steps] = function(percentComplete: number, startValue: number, endValue: number) {\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\treturn startValue + Math.round(percentComplete * steps) * (1 / steps) * (endValue - startValue);\r\n\t\t};\r\n\t}\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n * \r\n * Easings to act on strings, either set at the start or at the end depending on\r\n * need.\r\n */\r\n\r\nnamespace VelocityStatic.Easing {\r\n\t/**\r\n\t * Easing function that sets to the specified value immediately after the\r\n\t * animation starts.\r\n\t */\r\n\tregisterEasing([\"at-start\", function(percentComplete: number, startValue: any, endValue: any): any {\r\n\t\treturn percentComplete === 0\r\n\t\t\t? startValue\r\n\t\t\t: endValue;\r\n\t} as any]);\r\n\r\n\t/**\r\n\t * Easing function that sets to the specified value while the animation is\r\n\t * running.\r\n\t */\r\n\tregisterEasing([\"during\", function(percentComplete: number, startValue: any, endValue: any): any {\r\n\t\treturn percentComplete === 0 || percentComplete === 1\r\n\t\t\t? startValue\r\n\t\t\t: endValue;\r\n\t} as any]);\r\n\r\n\t/**\r\n\t * Easing function that sets to the specified value when the animation ends.\r\n\t */\r\n\tregisterEasing([\"at-end\", function(percentComplete: number, startValue: any, endValue: any): any {\r\n\t\treturn percentComplete === 1\r\n\t\t\t? endValue\r\n\t\t\t: startValue;\r\n\t} as any]);\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n * \r\n * Normalisations are used when getting or setting a (normally css compound\r\n * properties) value that can have a different order in different browsers.\r\n * \r\n * It can also be used to extend and create specific properties that otherwise\r\n * don't exist (such as for scrolling, or inner/outer dimensions).\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Unlike \"actions\", normalizations can always be replaced by users.\r\n\t */\r\n\texport const Normalizations: {[name: string]: VelocityNormalizationsFn}[] = [];\r\n\r\n\t/**\r\n\t * Any normalisations that should never be cached are listed here.\r\n\t * Faster than an array - https://jsperf.com/array-includes-and-find-methods-vs-set-has\r\n\t */\r\n\texport const NoCacheNormalizations = new Set();\r\n\r\n\t/**\r\n\t * Used to define a constructor.\r\n\t */\r\n\tinterface ClassConstructor {\r\n\t\tnew(): Object;\r\n\t}\r\n\r\n\t/**\r\n\t * An array of classes used for the per-class normalizations. This\r\n\t * translates into a bitwise enum for quick cross-reference, and so that\r\n\t * the element doesn't need multiple instanceof calls every\r\n\t * frame.\r\n\t */\r\n\texport const constructors: ClassConstructor[] = [];\r\n\r\n\t/**\r\n\t * Used to register a normalization. This should never be called by users\r\n\t * directly, instead it should be called via an action:
\r\n\t * Velocity(\"registerNormalization\", Element, \"name\", VelocityNormalizationsFn[, false]);\r\n\t * \r\n\t * The fourth argument can be an explicit false, which prevents\r\n\t * the property from being cached. Please note that this can be dangerous\r\n\t * for performance!\r\n\t *\r\n\t * @private\r\n\t */\r\n\texport function registerNormalization(args?: [ClassConstructor, string, VelocityNormalizationsFn] | [ClassConstructor, string, VelocityNormalizationsFn, boolean]) {\r\n\t\tconst constructor = args[0],\r\n\t\t\tname: string = args[1],\r\n\t\t\tcallback = args[2];\r\n\r\n\t\tif (isString(constructor) || !(constructor instanceof Object)) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to set 'registerNormalization' constructor to an invalid value:\", constructor);\r\n\t\t} else if (!isString(name)) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to set 'registerNormalization' name to an invalid value:\", name);\r\n\t\t} else if (!isFunction(callback)) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to set 'registerNormalization' callback to an invalid value:\", name, callback);\r\n\t\t} else {\r\n\t\t\tlet index = constructors.indexOf(constructor);\r\n\r\n\t\t\tif (index < 0) {\r\n\t\t\t\tindex = constructors.push(constructor) - 1;\r\n\t\t\t\tNormalizations[index] = Object.create(null);\r\n\t\t\t}\r\n\t\t\tNormalizations[index][name] = callback;\r\n\t\t\tif (args[3] === false) {\r\n\t\t\t\tNoCacheNormalizations.add(name);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tregisterAction([\"registerNormalization\", registerNormalization as any]);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.CSS {\r\n\r\n\t/**\r\n\t * Get/set an attribute.\r\n\t */\r\n\tfunction getAttribute(name: string) {\r\n\t\treturn function(element: Element, propertyValue?: string): string | boolean {\r\n\t\t\tif (propertyValue === undefined) {\r\n\t\t\t\treturn element.getAttribute(name);\r\n\t\t\t}\r\n\t\t\telement.setAttribute(name, propertyValue);\r\n\t\t\treturn true;\r\n\t\t} as VelocityNormalizationsFn;\r\n\t}\r\n\r\n\tconst base = document.createElement(\"div\"),\r\n\t\trxSubtype = /^SVG(.*)Element$/,\r\n\t\trxElement = /Element$/;\r\n\r\n\tObject.getOwnPropertyNames(window).forEach(function(globals) {\r\n\t\tconst subtype = rxSubtype.exec(globals);\r\n\r\n\t\tif (subtype) {\r\n\t\t\tconst element = document.createElementNS(\"http://www.w3.org/2000/svg\", (subtype[1] || \"svg\").toLowerCase()),\r\n\t\t\t\tconstructor = element.constructor;\r\n\r\n\t\t\tfor (let attribute in element) {\r\n\t\t\t\tconst value = element[attribute];\r\n\r\n\t\t\t\tif (isString(attribute)\r\n\t\t\t\t\t&& !(attribute[0] === \"o\" && attribute[1] === \"n\")\r\n\t\t\t\t\t&& attribute !== attribute.toUpperCase()\r\n\t\t\t\t\t&& !rxElement.test(attribute)\r\n\t\t\t\t\t&& !(attribute in base)\r\n\t\t\t\t\t&& !isFunction(value)) {\r\n\t\t\t\t\t// TODO: Should this all be set on the generic SVGElement, it would save space and time, but not as powerful\r\n\t\t\t\t\tregisterNormalization([constructor as any, attribute, getAttribute(attribute)]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.CSS {\r\n\r\n\t/**\r\n\t * Get/set the width or height.\r\n\t */\r\n\tfunction getDimension(name: string) {\r\n\t\treturn function(element: HTMLorSVGElement, propertyValue?: string): string | boolean {\r\n\t\t\tif (propertyValue === undefined) {\r\n\t\t\t\t// Firefox throws an error if .getBBox() is called on an SVG that isn't attached to the DOM.\r\n\t\t\t\ttry {\r\n\t\t\t\t\treturn (element as SVGGraphicsElement).getBBox()[name] + \"px\";\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\treturn \"0px\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telement.setAttribute(name, propertyValue);\r\n\t\t\treturn true;\r\n\t\t} as VelocityNormalizationsFn;\r\n\t}\r\n\r\n\tregisterNormalization([SVGElement, \"width\", getDimension(\"width\")]);\r\n\tregisterNormalization([SVGElement, \"height\", getDimension(\"height\")]);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Figure out the dimensions for this width / height based on the\r\n\t * potential borders and whether we care about them.\r\n\t */\r\n\texport function augmentDimension(element: HTMLorSVGElement, name: string, wantInner: boolean): number {\r\n\t\tconst isBorderBox = CSS.getPropertyValue(element, \"boxSizing\").toString().toLowerCase() === \"border-box\";\r\n\r\n\t\tif (isBorderBox === wantInner) {\r\n\t\t\t// in box-sizing mode, the CSS width / height accessors already\r\n\t\t\t// give the outerWidth / outerHeight.\r\n\t\t\tconst sides = name === \"width\" ? [\"Left\", \"Right\"] : [\"Top\", \"Bottom\"],\r\n\t\t\t\tfields = [\"padding\" + sides[0], \"padding\" + sides[1], \"border\" + sides[0] + \"Width\", \"border\" + sides[1] + \"Width\"];\r\n\t\t\tlet i: number,\r\n\t\t\t\tvalue: number,\r\n\t\t\t\taugment = 0;\r\n\r\n\t\t\tfor (i = 0; i < fields.length; i++) {\r\n\t\t\t\tvalue = parseFloat(CSS.getPropertyValue(element, fields[i]) as string);\r\n\t\t\t\tif (!isNaN(value)) {\r\n\t\t\t\t\taugment += value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn wantInner ? -augment : augment;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Get/set the inner/outer dimension.\r\n\t */\r\n\tfunction getDimension(name, wantInner: boolean) {\r\n\t\treturn function(element: HTMLorSVGElement, propertyValue?: string): string | boolean {\r\n\t\t\tif (propertyValue === undefined) {\r\n\t\t\t\treturn augmentDimension(element, name, wantInner) + \"px\";\r\n\t\t\t}\r\n\t\t\tCSS.setPropertyValue(element, name, (parseFloat(propertyValue) - augmentDimension(element, name, wantInner)) + \"px\");\r\n\t\t\treturn true;\r\n\t\t} as VelocityNormalizationsFn;\r\n\t}\r\n\r\n\tregisterNormalization([Element, \"innerWidth\", getDimension(\"width\", true)]);\r\n\tregisterNormalization([Element, \"innerHeight\", getDimension(\"height\", true)]);\r\n\tregisterNormalization([Element, \"outerWidth\", getDimension(\"width\", false)]);\r\n\tregisterNormalization([Element, \"outerHeight\", getDimension(\"height\", false)]);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\texport const inlineRx = /^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|let|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i,\r\n\t\tlistItemRx = /^(li)$/i,\r\n\t\ttableRowRx = /^(tr)$/i,\r\n\t\ttableRx = /^(table)$/i,\r\n\t\ttableRowGroupRx = /^(tbody)$/i;\r\n\r\n\t/**\r\n\t * Display has an extra value of \"auto\" that works out the correct value\r\n\t * based on the type of element.\r\n\t */\r\n\tfunction display(element: HTMLorSVGElement): string;\r\n\tfunction display(element: HTMLorSVGElement, propertyValue: string): boolean;\r\n\tfunction display(element: HTMLorSVGElement, propertyValue?: string): string | boolean {\r\n\t\tconst style = element.style;\r\n\r\n\t\tif (propertyValue === undefined) {\r\n\t\t\treturn CSS.computePropertyValue(element, \"display\");\r\n\t\t}\r\n\t\tif (propertyValue === \"auto\") {\r\n\t\t\tconst nodeName = element && element.nodeName,\r\n\t\t\t\tdata = Data(element);\r\n\r\n\t\t\tif (inlineRx.test(nodeName)) {\r\n\t\t\t\tpropertyValue = \"inline\";\r\n\t\t\t} else if (listItemRx.test(nodeName)) {\r\n\t\t\t\tpropertyValue = \"list-item\";\r\n\t\t\t} else if (tableRowRx.test(nodeName)) {\r\n\t\t\t\tpropertyValue = \"table-row\";\r\n\t\t\t} else if (tableRx.test(nodeName)) {\r\n\t\t\t\tpropertyValue = \"table\";\r\n\t\t\t} else if (tableRowGroupRx.test(nodeName)) {\r\n\t\t\t\tpropertyValue = \"table-row-group\";\r\n\t\t\t} else {\r\n\t\t\t\t// Default to \"block\" when no match is found.\r\n\t\t\t\tpropertyValue = \"block\";\r\n\t\t\t}\r\n\t\t\t// IMPORTANT: We need to do this as getPropertyValue bypasses the\r\n\t\t\t// Normalisation when it exists in the cache.\r\n\t\t\tdata.cache[\"display\"] = propertyValue;\r\n\t\t}\r\n\t\tstyle.display = propertyValue;\r\n\t\treturn true;\r\n\t}\r\n\r\n\tregisterNormalization([Element, \"display\", display]);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\tfunction genericReordering(element: HTMLorSVGElement): string;\r\n\tfunction genericReordering(element: HTMLorSVGElement, propertyValue: string): boolean;\r\n\tfunction genericReordering(element: HTMLorSVGElement, propertyValue?: string): string | boolean {\r\n\t\tif (propertyValue === undefined) {\r\n\t\t\tpropertyValue = CSS.getPropertyValue(element, \"textShadow\");\r\n\t\t\tconst split = propertyValue.split(/\\s/g),\r\n\t\t\t\tfirstPart = split[0];\r\n\t\t\tlet newValue = \"\";\r\n\r\n\t\t\tif (CSS.ColorNames[firstPart]) {\r\n\t\t\t\tsplit.shift();\r\n\t\t\t\tsplit.push(firstPart);\r\n\t\t\t\tnewValue = split.join(\" \");\r\n\t\t\t} else if (firstPart.match(/^#|^hsl|^rgb|-gradient/)) {\r\n\t\t\t\tconst matchedString = propertyValue.match(/(hsl.*\\)|#[\\da-fA-F]+|rgb.*\\)|.*gradient.*\\))\\s/g)[0];\r\n\r\n\t\t\t\tnewValue = propertyValue.replace(matchedString, \"\") + \" \" + matchedString.trim();\r\n\t\t\t} else {\r\n\t\t\t\tnewValue = propertyValue;\r\n\t\t\t}\r\n\t\t\treturn newValue;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tregisterNormalization([Element, \"textShadow\", genericReordering]);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/**\r\n\t * Get the scrollWidth of an element.\r\n\t */\r\n\tfunction clientWidth(element: HTMLorSVGElement): string;\r\n\tfunction clientWidth(element: HTMLorSVGElement, propertyValue: string): boolean;\r\n\tfunction clientWidth(element: HTMLorSVGElement, propertyValue?: string): string | boolean {\r\n\t\tif (propertyValue == null) {\r\n\t\t\treturn element.clientWidth + \"px\";\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the scrollWidth of an element.\r\n\t */\r\n\tfunction scrollWidth(element: HTMLorSVGElement): string;\r\n\tfunction scrollWidth(element: HTMLorSVGElement, propertyValue: string): boolean;\r\n\tfunction scrollWidth(element: HTMLorSVGElement, propertyValue?: string): string | boolean {\r\n\t\tif (propertyValue == null) {\r\n\t\t\treturn element.scrollWidth + \"px\";\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the scrollHeight of an element.\r\n\t */\r\n\tfunction clientHeight(element: HTMLorSVGElement): string;\r\n\tfunction clientHeight(element: HTMLorSVGElement, propertyValue: string): boolean;\r\n\tfunction clientHeight(element: HTMLorSVGElement, propertyValue?: string): string | boolean {\r\n\t\tif (propertyValue == null) {\r\n\t\t\treturn element.clientHeight + \"px\";\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the scrollHeight of an element.\r\n\t */\r\n\tfunction scrollHeight(element: HTMLorSVGElement): string;\r\n\tfunction scrollHeight(element: HTMLorSVGElement, propertyValue: string): boolean;\r\n\tfunction scrollHeight(element: HTMLorSVGElement, propertyValue?: string): string | boolean {\r\n\t\tif (propertyValue == null) {\r\n\t\t\treturn element.scrollHeight + \"px\";\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Scroll an element (vertical).\r\n\t */\r\n\tfunction scrollTop(element: HTMLorSVGElement): string;\r\n\tfunction scrollTop(element: HTMLorSVGElement, propertyValue: string): boolean;\r\n\tfunction scrollTop(element: HTMLorSVGElement, propertyValue?: string): string | boolean {\r\n\t\tif (propertyValue == null) {\r\n\t\t\t//\t\t\tgetPropertyValue(element, \"clientWidth\", false, true);\r\n\t\t\t//\t\t\tgetPropertyValue(element, \"scrollWidth\", false, true);\r\n\t\t\t//\t\t\tgetPropertyValue(element, \"scrollLeft\", false, true);\r\n\t\t\tCSS.getPropertyValue(element, \"clientHeight\", false, true);\r\n\t\t\tCSS.getPropertyValue(element, \"scrollHeight\", false, true);\r\n\t\t\tCSS.getPropertyValue(element, \"scrollTop\", false, true);\r\n\t\t\treturn element.scrollTop + \"px\";\r\n\t\t}\r\n\t\t//\t\tconsole.log(\"setScrollTop\", propertyValue)\r\n\t\tconst value = parseFloat(propertyValue),\r\n\t\t\tunit = propertyValue.replace(String(value), \"\");\r\n\r\n\t\tswitch (unit) {\r\n\t\t\tcase \"\":\r\n\t\t\tcase \"px\":\r\n\t\t\t\telement.scrollTop = value;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"%\":\r\n\t\t\t\tlet clientHeight = parseFloat(CSS.getPropertyValue(element, \"clientHeight\")),\r\n\t\t\t\t\tscrollHeight = parseFloat(CSS.getPropertyValue(element, \"scrollHeight\"));\r\n\r\n\t\t\t\t//\t\t\t\tconsole.log(\"setScrollTop percent\", scrollHeight, clientHeight, value, Math.max(0, scrollHeight - clientHeight) * value / 100)\r\n\t\t\t\telement.scrollTop = Math.max(0, scrollHeight - clientHeight) * value / 100;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Scroll an element (horizontal).\r\n\t */\r\n\tfunction scrollLeft(element: HTMLorSVGElement): string;\r\n\tfunction scrollLeft(element: HTMLorSVGElement, propertyValue: string): boolean;\r\n\tfunction scrollLeft(element: HTMLorSVGElement, propertyValue?: string): string | boolean {\r\n\t\tif (propertyValue == null) {\r\n\t\t\t//\t\t\tgetPropertyValue(element, \"clientWidth\", false, true);\r\n\t\t\t//\t\t\tgetPropertyValue(element, \"scrollWidth\", false, true);\r\n\t\t\t//\t\t\tgetPropertyValue(element, \"scrollLeft\", false, true);\r\n\t\t\tCSS.getPropertyValue(element, \"clientWidth\", false, true);\r\n\t\t\tCSS.getPropertyValue(element, \"scrollWidth\", false, true);\r\n\t\t\tCSS.getPropertyValue(element, \"scrollLeft\", false, true);\r\n\t\t\treturn element.scrollLeft + \"px\";\r\n\t\t}\r\n\t\t//\t\tconsole.log(\"setScrollLeft\", propertyValue)\r\n\t\tconst value = parseFloat(propertyValue),\r\n\t\t\tunit = propertyValue.replace(String(value), \"\");\r\n\r\n\t\tswitch (unit) {\r\n\t\t\tcase \"\":\r\n\t\t\tcase \"px\":\r\n\t\t\t\telement.scrollLeft = value;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"%\":\r\n\t\t\t\tlet clientWidth = parseFloat(CSS.getPropertyValue(element, \"clientWidth\")),\r\n\t\t\t\t\tscrollWidth = parseFloat(CSS.getPropertyValue(element, \"scrollWidth\"));\r\n\r\n\t\t\t\t//\t\t\t\tconsole.log(\"setScrollLeft percent\", scrollWidth, clientWidth, value, Math.max(0, scrollWidth - clientWidth) * value / 100)\r\n\t\t\t\telement.scrollTop = Math.max(0, scrollWidth - clientWidth) * value / 100;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tregisterNormalization([HTMLElement, \"scroll\", scrollTop, false]);\r\n\tregisterNormalization([HTMLElement, \"scrollTop\", scrollTop, false]);\r\n\tregisterNormalization([HTMLElement, \"scrollLeft\", scrollLeft, false]);\r\n\tregisterNormalization([HTMLElement, \"scrollWidth\", scrollWidth]);\r\n\tregisterNormalization([HTMLElement, \"clientWidth\", clientWidth]);\r\n\tregisterNormalization([HTMLElement, \"scrollHeight\", scrollHeight]);\r\n\tregisterNormalization([HTMLElement, \"clientHeight\", clientHeight]);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Return a Normalisation that can be used to set / get the vendor prefixed\r\n\t * real name for a propery.\r\n\t */\r\n\tfunction vendorPrefix(property: string, unprefixed: string) {\r\n\t\treturn function(element: HTMLorSVGElement, propertyValue?: string): string | boolean {\r\n\t\t\tif (propertyValue === undefined) {\r\n\t\t\t\treturn element.style[unprefixed];\r\n\t\t\t}\r\n\t\t\tCSS.setPropertyValue(element, property, propertyValue);\r\n\t\t\treturn true;\r\n\t\t} as VelocityNormalizationsFn;\r\n\t}\r\n\r\n\tconst vendors = [/^webkit[A-Z]/, /^moz[A-Z]/, /^ms[A-Z]/, /^o[A-Z]/],\r\n\t\tprefixElement = State.prefixElement;\r\n\r\n\tfor (const property in prefixElement.style) {\r\n\t\tfor (let i = 0; i < vendors.length; i++) {\r\n\t\t\tif (vendors[i].test(property)) {\r\n\t\t\t\tlet unprefixed = property.replace(/^[a-z]+([A-Z])/, ($, letter: string) => letter.toLowerCase());\r\n\r\n\t\t\t\tif (ALL_VENDOR_PREFIXES || isString(prefixElement.style[unprefixed])) {\r\n\t\t\t\t\tregisterNormalization([Element, unprefixed, vendorPrefix(property, unprefixed)]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Call Completion\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/**\r\n\t * Call the complete method of an animation in a separate function so it can\r\n\t * benefit from JIT compiling while still having a try/catch block.\r\n\t */\r\n\tfunction callComplete(activeCall: AnimationCall) {\r\n\t\ttry {\r\n\t\t\tconst elements = activeCall.elements;\r\n\r\n\t\t\t(activeCall.options.complete as VelocityCallback).call(elements, elements, activeCall);\r\n\t\t} catch (error) {\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tthrow error;\r\n\t\t\t}, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Complete an animation. This might involve restarting (for loop or repeat\r\n\t * options). Once it is finished we also check for any callbacks or Promises\r\n\t * that need updating.\r\n\t */\r\n\texport function completeCall(activeCall: AnimationCall) {\r\n\t\t//\t\tconsole.log(\"complete\", activeCall)\r\n\t\t// TODO: Check if it's not been completed already\r\n\r\n\t\tconst options = activeCall.options,\r\n\t\t\tqueue = getValue(activeCall.queue, options.queue),\r\n\t\t\tisLoop = getValue(activeCall.loop, options.loop, defaults.loop),\r\n\t\t\tisRepeat = getValue(activeCall.repeat, options.repeat, defaults.repeat),\r\n\t\t\tisStopped = activeCall._flags & AnimationFlags.STOPPED;\r\n\r\n\t\tif (!isStopped && (isLoop || isRepeat)) {\r\n\r\n\t\t\t////////////////////\r\n\t\t\t// Option: Loop //\r\n\t\t\t// Option: Repeat //\r\n\t\t\t////////////////////\r\n\r\n\t\t\tif (isRepeat && isRepeat !== true) {\r\n\t\t\t\tactiveCall.repeat = isRepeat - 1;\r\n\t\t\t} else if (isLoop && isLoop !== true) {\r\n\t\t\t\tactiveCall.loop = isLoop - 1;\r\n\t\t\t\tactiveCall.repeat = getValue(activeCall.repeatAgain, options.repeatAgain, defaults.repeatAgain);\r\n\t\t\t}\r\n\t\t\tif (isLoop) {\r\n\t\t\t\tactiveCall._flags ^= AnimationFlags.REVERSE;\r\n\t\t\t}\r\n\t\t\tif (queue !== false) {\r\n\t\t\t\t// Can't be called when stopped so no need for an extra check.\r\n\t\t\t\tData(activeCall.element).lastFinishList[queue] = activeCall.timeStart + getValue(activeCall.duration, options.duration, defaults.duration);\r\n\t\t\t}\r\n\t\t\tactiveCall.timeStart = activeCall.ellapsedTime = activeCall.percentComplete = 0;\r\n\t\t\tactiveCall._flags &= ~AnimationFlags.STARTED;\r\n\t\t} else {\r\n\t\t\tconst element = activeCall.element,\r\n\t\t\t\tdata = Data(element);\r\n\r\n\t\t\tif (!--data.count && !isStopped) {\r\n\r\n\t\t\t\t////////////////////////\r\n\t\t\t\t// Feature: Classname //\r\n\t\t\t\t////////////////////////\r\n\r\n\t\t\t\tremoveClass(element, State.className);\r\n\t\t\t}\r\n\r\n\t\t\t//////////////////////\r\n\t\t\t// Option: Complete //\r\n\t\t\t//////////////////////\r\n\r\n\t\t\t// If this is the last animation in this list then we can check for\r\n\t\t\t// and complete calls or Promises.\r\n\t\t\t// TODO: When deleting an element we need to adjust these values.\r\n\t\t\tif (options && ++options._completed === options._total) {\r\n\t\t\t\tif (!isStopped && options.complete) {\r\n\t\t\t\t\t// We don't call the complete if the animation is stopped,\r\n\t\t\t\t\t// and we clear the key to prevent it being called again.\r\n\t\t\t\t\tcallComplete(activeCall);\r\n\t\t\t\t\toptions.complete = null;\r\n\t\t\t\t}\r\n\t\t\t\tconst resolver = options._resolver;\r\n\r\n\t\t\t\tif (resolver) {\r\n\t\t\t\t\t// Fulfil the Promise\r\n\t\t\t\t\tresolver(activeCall.elements as any);\r\n\t\t\t\t\tdelete options._resolver;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t///////////////////\r\n\t\t\t// Option: Queue //\r\n\t\t\t///////////////////\r\n\r\n\t\t\tif (queue !== false) {\r\n\t\t\t\t// We only do clever things with queues...\r\n\t\t\t\tif (!isStopped) {\r\n\t\t\t\t\t// If we're not stopping an animation, we need to remember\r\n\t\t\t\t\t// what time it finished so that the next animation in\r\n\t\t\t\t\t// sequence gets the correct start time.\r\n\t\t\t\t\tdata.lastFinishList[queue] = activeCall.timeStart + getValue(activeCall.duration, options.duration, defaults.duration);\r\n\t\t\t\t}\r\n\t\t\t\t// Start the next animation in sequence, or delete the queue if\r\n\t\t\t\t// this was the last one.\r\n\t\t\t\tdequeue(element, queue);\r\n\t\t\t}\r\n\t\t\t// Cleanup any pointers, and remember the last animation etc.\r\n\t\t\tfreeAnimationCall(activeCall);\r\n\t\t}\r\n\t}\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\ninterface Element {\r\n\tvelocityData: ElementData;\r\n}\r\n\r\n/**\r\n * Get (and create) the internal data store for an element.\r\n */\r\nfunction Data(element: HTMLorSVGElement): ElementData {\r\n\t// Use a string member so Uglify doesn't mangle it.\r\n\tconst data = element[\"velocityData\"];\r\n\r\n\tif (data) {\r\n\t\treturn data;\r\n\t}\r\n\tlet types = 0;\r\n\r\n\tfor (let index = 0, constructors = VelocityStatic.constructors; index < constructors.length; index++) {\r\n\t\tif (element instanceof constructors[index]) {\r\n\t\t\ttypes |= 1 << index;\r\n\t\t}\r\n\t}\r\n\t// Do it this way so it errors on incorrect data.\r\n\tlet newData: ElementData = {\r\n\t\ttypes: types,\r\n\t\tcount: 0,\r\n\t\tcomputedStyle: null,\r\n\t\tcache: Object.create(null),\r\n\t\tqueueList: Object.create(null),\r\n\t\tlastAnimationList: Object.create(null),\r\n\t\tlastFinishList: Object.create(null)\r\n\t};\r\n\tObject.defineProperty(element, \"velocityData\", {\r\n\t\tvalue: newData\r\n\t});\r\n\treturn newData;\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/**\r\n\t * Set to true, 1 or 2 (most verbose) to output debug info to console.\r\n\t */\r\n\texport let debug: boolean | 1 | 2 = false;\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Velocity option defaults, which can be overriden by the user.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t// NOTE: Add the variable here, then add the default state in \"reset\" below.\r\n\tlet _cache: boolean,\r\n\t\t_begin: VelocityCallback,\r\n\t\t_complete: VelocityCallback,\r\n\t\t_delay: number,\r\n\t\t_duration: number,\r\n\t\t_easing: VelocityEasingType,\r\n\t\t_fpsLimit: number,\r\n\t\t_loop: number | true,\r\n\t\t_minFrameTime: number,\r\n\t\t_promise: boolean,\r\n\t\t_promiseRejectEmpty: boolean,\r\n\t\t_queue: string | false,\r\n\t\t_repeat: number | true,\r\n\t\t_speed: number,\r\n\t\t_sync: boolean;\r\n\r\n\texport const defaults: StrictVelocityOptions & {reset?: () => void} = {\r\n\t\tmobileHA: true\r\n\t};\r\n\r\n\t// IMPORTANT: Make sure any new defaults get added to the actions/set.ts list\r\n\tObject.defineProperties(defaults, {\r\n\t\treset: {\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: function() {\r\n\t\t\t\t_cache = DEFAULT_CACHE;\r\n\t\t\t\t_begin = undefined;\r\n\t\t\t\t_complete = undefined;\r\n\t\t\t\t_delay = DEFAULT_DELAY;\r\n\t\t\t\t_duration = DEFAULT_DURATION;\r\n\t\t\t\t_easing = validateEasing(DEFAULT_EASING, DEFAULT_DURATION);\r\n\t\t\t\t_fpsLimit = DEFAULT_FPSLIMIT;\r\n\t\t\t\t_loop = DEFAULT_LOOP;\r\n\t\t\t\t_minFrameTime = FUZZY_MS_PER_SECOND / DEFAULT_FPSLIMIT;\r\n\t\t\t\t_promise = DEFAULT_PROMISE;\r\n\t\t\t\t_promiseRejectEmpty = DEFAULT_PROMISE_REJECT_EMPTY;\r\n\t\t\t\t_queue = DEFAULT_QUEUE;\r\n\t\t\t\t_repeat = DEFAULT_REPEAT;\r\n\t\t\t\t_speed = DEFAULT_SPEED;\r\n\t\t\t\t_sync = DEFAULT_SYNC;\r\n\t\t\t}\r\n\t\t},\r\n\t\tcache: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): boolean {\r\n\t\t\t\treturn _cache;\r\n\t\t\t},\r\n\t\t\tset: function(value: boolean) {\r\n\t\t\t\tvalue = validateCache(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_cache = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tbegin: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): VelocityCallback {\r\n\t\t\t\treturn _begin;\r\n\t\t\t},\r\n\t\t\tset: function(value: VelocityCallback) {\r\n\t\t\t\tvalue = validateBegin(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_begin = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tcomplete: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): VelocityCallback {\r\n\t\t\t\treturn _complete;\r\n\t\t\t},\r\n\t\t\tset: function(value: VelocityCallback) {\r\n\t\t\t\tvalue = validateComplete(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_complete = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tdelay: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): \"fast\" | \"normal\" | \"slow\" | number {\r\n\t\t\t\treturn _delay;\r\n\t\t\t},\r\n\t\t\tset: function(value: \"fast\" | \"normal\" | \"slow\" | number) {\r\n\t\t\t\tvalue = validateDelay(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_delay = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tduration: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): \"fast\" | \"normal\" | \"slow\" | number {\r\n\t\t\t\treturn _duration;\r\n\t\t\t},\r\n\t\t\tset: function(value: \"fast\" | \"normal\" | \"slow\" | number) {\r\n\t\t\t\tvalue = validateDuration(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_duration = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\teasing: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): VelocityEasingType {\r\n\t\t\t\treturn _easing;\r\n\t\t\t},\r\n\t\t\tset: function(value: VelocityEasingType) {\r\n\t\t\t\tvalue = validateEasing(value, _duration);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_easing = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tfpsLimit: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): number | false {\r\n\t\t\t\treturn _fpsLimit;\r\n\t\t\t},\r\n\t\t\tset: function(value: number | false) {\r\n\t\t\t\tvalue = validateFpsLimit(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_fpsLimit = value;\r\n\t\t\t\t\t_minFrameTime = FUZZY_MS_PER_SECOND / value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tloop: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): number | true {\r\n\t\t\t\treturn _loop;\r\n\t\t\t},\r\n\t\t\tset: function(value: number | boolean) {\r\n\t\t\t\tvalue = validateLoop(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_loop = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tminFrameTime: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): number | false {\r\n\t\t\t\treturn _minFrameTime;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpromise: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): boolean {\r\n\t\t\t\treturn _promise;\r\n\t\t\t},\r\n\t\t\tset: function(value: boolean) {\r\n\t\t\t\tvalue = validatePromise(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_promise = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tpromiseRejectEmpty: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): boolean {\r\n\t\t\t\treturn _promiseRejectEmpty;\r\n\t\t\t},\r\n\t\t\tset: function(value: boolean) {\r\n\t\t\t\tvalue = validatePromiseRejectEmpty(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_promiseRejectEmpty = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tqueue: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): string | false {\r\n\t\t\t\treturn _queue;\r\n\t\t\t},\r\n\t\t\tset: function(value: string | false) {\r\n\t\t\t\tvalue = validateQueue(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_queue = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\trepeat: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): number | true {\r\n\t\t\t\treturn _repeat;\r\n\t\t\t},\r\n\t\t\tset: function(value: number | boolean) {\r\n\t\t\t\tvalue = validateRepeat(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_repeat = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tspeed: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): number {\r\n\t\t\t\treturn _speed;\r\n\t\t\t},\r\n\t\t\tset: function(value: number) {\r\n\t\t\t\tvalue = validateSpeed(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_speed = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tsync: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): boolean {\r\n\t\t\t\treturn _sync;\r\n\t\t\t},\r\n\t\t\tset: function(value: boolean) {\r\n\t\t\t\tvalue = validateSync(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_sync = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\tdefaults.reset();\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Velocity-wide animation time remapping for testing purposes.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/**\r\n\t * In mock mode, all animations are forced to complete immediately upon the\r\n\t * next rAF tick. If there are further animations queued then they will each\r\n\t * take one single frame in turn. Loops and repeats will be disabled while\r\n\t * mock = true.\r\n\t */\r\n\texport let mock: boolean = false;\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/**\r\n\t * Used to patch any object to allow Velocity chaining. In order to chain an\r\n\t * object must either be treatable as an array - with a .length\r\n\t * property, and each member a Node, or a Node directly.\r\n\t * \r\n\t * By default Velocity will try to patch window,\r\n\t * jQuery, Zepto, and several classes that return\r\n\t * Nodes or lists of Nodes.\r\n\t * \r\n\t * @public\r\n\t */\r\n\texport function patch(proto: any, global?: boolean) {\r\n\t\ttry {\r\n\t\t\tdefineProperty(proto, (global ? \"V\" : \"v\") + \"elocity\", VelocityFn);\r\n\t\t} catch (e) {\r\n\t\t\tconsole.warn(\"VelocityJS: Error when trying to add prototype.\", e);\r\n\t\t}\r\n\t}\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * AnimationCall queue\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Simple queue management. Un-named queue is directly within the element data,\r\n\t * named queue is within an object within it.\r\n\t */\r\n\tfunction animate(animation: AnimationCall) {\r\n\t\tconst prev = State.last;\r\n\r\n\t\tanimation._prev = prev;\r\n\t\tanimation._next = undefined;\r\n\t\tif (prev) {\r\n\t\t\tprev._next = animation;\r\n\t\t} else {\r\n\t\t\tState.first = animation;\r\n\t\t}\r\n\t\tState.last = animation;\r\n\t\tif (!State.firstNew) {\r\n\t\t\tState.firstNew = animation;\r\n\t\t}\r\n\t\tconst element = animation.element,\r\n\t\t\tdata = Data(element);\r\n\r\n\t\tif (!data.count++) {\r\n\r\n\t\t\t////////////////////////\r\n\t\t\t// Feature: Classname //\r\n\t\t\t////////////////////////\r\n\r\n\t\t\taddClass(element, State.className);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Add an item to an animation queue.\r\n\t */\r\n\texport function queue(element: HTMLorSVGElement, animation: AnimationCall, queue: string | false): void {\r\n\t\tconst data = Data(element);\r\n\r\n\t\tif (queue !== false) {\r\n\t\t\t// Store the last animation added so we can use it for the\r\n\t\t\t// beginning of the next one.\r\n\t\t\tdata.lastAnimationList[queue] = animation;\r\n\t\t}\r\n\t\tif (queue === false) {\r\n\t\t\tanimate(animation);\r\n\t\t} else {\r\n\t\t\tif (!isString(queue)) {\r\n\t\t\t\tqueue = \"\";\r\n\t\t\t}\r\n\t\t\tlet last = data.queueList[queue];\r\n\r\n\t\t\tif (!last) {\r\n\t\t\t\tif (last === null) {\r\n\t\t\t\t\tdata.queueList[queue] = animation;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdata.queueList[queue] = null;\r\n\t\t\t\t\tanimate(animation);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\twhile (last._next) {\r\n\t\t\t\t\tlast = last._next;\r\n\t\t\t\t}\r\n\t\t\t\tlast._next = animation;\r\n\t\t\t\tanimation._prev = last;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Start the next animation on this element's queue (named or default).\r\n\t *\r\n\t * @returns the next animation that is starting.\r\n\t */\r\n\texport function dequeue(element: HTMLorSVGElement, queue?: string | boolean, skip?: boolean): AnimationCall {\r\n\t\tif (queue !== false) {\r\n\t\t\tif (!isString(queue)) {\r\n\t\t\t\tqueue = \"\";\r\n\t\t\t}\r\n\t\t\tconst data = Data(element),\r\n\t\t\t\tanimation = data.queueList[queue];\r\n\r\n\t\t\tif (animation) {\r\n\t\t\t\tdata.queueList[queue] = animation._next || null;\r\n\t\t\t\tif (!skip) {\r\n\t\t\t\t\tanimate(animation);\r\n\t\t\t\t}\r\n\t\t\t} else if (animation === null) {\r\n\t\t\t\tdelete data.queueList[queue];\r\n\t\t\t}\r\n\t\t\treturn animation;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Remove an animation from the active animation list. If it has a queue set\r\n\t * then remember it as the last animation for that queue, and free the one\r\n\t * that was previously there. If the animation list is completely empty then\r\n\t * mark us as finished.\r\n\t */\r\n\texport function freeAnimationCall(animation: AnimationCall): void {\r\n\t\tconst next = animation._next,\r\n\t\t\tprev = animation._prev,\r\n\t\t\tqueue = animation.queue == null ? animation.options.queue : animation.queue;\r\n\r\n\t\tif (State.firstNew === animation) {\r\n\t\t\tState.firstNew = next;\r\n\t\t}\r\n\t\tif (State.first === animation) {\r\n\t\t\tState.first = next;\r\n\t\t} else if (prev) {\r\n\t\t\tprev._next = next;\r\n\t\t}\r\n\t\tif (State.last === animation) {\r\n\t\t\tState.last = prev;\r\n\t\t} else if (next) {\r\n\t\t\tnext._prev = prev;\r\n\t\t}\r\n\t\tif (queue) {\r\n\t\t\tconst data = Data(animation.element);\r\n\r\n\t\t\tif (data) {\r\n\t\t\t\tanimation._next = animation._prev = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/* Container for the user's custom animation redirects that are referenced by name in place of the properties map argument. */\r\n\texport let Redirects = {/* Manually registered by the user. */};\r\n\r\n\t/***********************\r\n\t Packaged Redirects\r\n\t ***********************/\r\n\r\n\t/* slideUp, slideDown */\r\n\t[\"Down\", \"Up\"].forEach(function(direction) {\r\n\t\tRedirects[\"slide\" + direction] = function(element: HTMLorSVGElement, options: VelocityOptions, elementsIndex: number, elementsSize, elements: HTMLorSVGElement[], resolver: (value?: HTMLorSVGElement[] | VelocityResult) => void) {\r\n\t\t\tlet opts = {...options},\r\n\t\t\t\tbegin = opts.begin,\r\n\t\t\t\tcomplete = opts.complete,\r\n\t\t\t\tinlineValues = {},\r\n\t\t\t\tcomputedValues = {\r\n\t\t\t\t\theight: \"\",\r\n\t\t\t\t\tmarginTop: \"\",\r\n\t\t\t\t\tmarginBottom: \"\",\r\n\t\t\t\t\tpaddingTop: \"\",\r\n\t\t\t\t\tpaddingBottom: \"\"\r\n\t\t\t\t};\r\n\r\n\t\t\tif (opts.display === undefined) {\r\n\t\t\t\tlet isInline = inlineRx.test(element.nodeName.toLowerCase());\r\n\r\n\t\t\t\t/* Show the element before slideDown begins and hide the element after slideUp completes. */\r\n\t\t\t\t/* Note: Inline elements cannot have dimensions animated, so they're reverted to inline-block. */\r\n\t\t\t\topts.display = (direction === \"Down\" ? (isInline ? \"inline-block\" : \"block\") : \"none\");\r\n\t\t\t}\r\n\r\n\t\t\topts.begin = function() {\r\n\t\t\t\t/* If the user passed in a begin callback, fire it now. */\r\n\t\t\t\tif (elementsIndex === 0 && begin) {\r\n\t\t\t\t\tbegin.call(elements, elements);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Cache the elements' original vertical dimensional property values so that we can animate back to them. */\r\n\t\t\t\tfor (let property in computedValues) {\r\n\t\t\t\t\tif (!computedValues.hasOwnProperty(property)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tinlineValues[property] = element.style[property];\r\n\r\n\t\t\t\t\t/* For slideDown, use forcefeeding to animate all vertical properties from 0. For slideUp,\r\n\t\t\t\t\t use forcefeeding to start from computed values and animate down to 0. */\r\n\t\t\t\t\tlet propertyValue = CSS.getPropertyValue(element, property);\r\n\t\t\t\t\tcomputedValues[property] = (direction === \"Down\") ? [propertyValue, 0] : [0, propertyValue];\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Force vertical overflow content to clip so that sliding works as expected. */\r\n\t\t\t\t(inlineValues as any).overflow = element.style.overflow;\r\n\t\t\t\telement.style.overflow = \"hidden\";\r\n\t\t\t};\r\n\r\n\t\t\topts.complete = function() {\r\n\t\t\t\t/* Reset element to its pre-slide inline values once its slide animation is complete. */\r\n\t\t\t\tfor (let property in inlineValues) {\r\n\t\t\t\t\tif (inlineValues.hasOwnProperty(property)) {\r\n\t\t\t\t\t\telement.style[property] = inlineValues[property];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* If the user passed in a complete callback, fire it now. */\r\n\t\t\t\tif (elementsIndex === elementsSize - 1) {\r\n\t\t\t\t\tif (complete) {\r\n\t\t\t\t\t\tcomplete.call(elements, elements);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (resolver) {\r\n\t\t\t\t\t\tresolver(elements);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t(VelocityFn as any)(element, computedValues, opts);\r\n\t\t};\r\n\t});\r\n\r\n\t/* fadeIn, fadeOut */\r\n\t[\"In\", \"Out\"].forEach(function(direction) {\r\n\t\tRedirects[\"fade\" + direction] = function(element: HTMLorSVGElement, options: VelocityOptions, elementsIndex: number, elementsSize, elements: HTMLorSVGElement[], promiseData) {\r\n\t\t\tlet opts = {...options},\r\n\t\t\t\tcomplete = opts.complete,\r\n\t\t\t\tpropertiesMap = {\r\n\t\t\t\t\topacity: (direction === \"In\") ? 1 : 0\r\n\t\t\t\t};\r\n\r\n\t\t\t/* Since redirects are triggered individually for each element in the animated set, avoid repeatedly triggering\r\n\t\t\t callbacks by firing them only when the final element has been reached. */\r\n\t\t\tif (elementsIndex !== 0) {\r\n\t\t\t\topts.begin = null;\r\n\t\t\t}\r\n\t\t\tif (elementsIndex !== elementsSize - 1) {\r\n\t\t\t\topts.complete = null;\r\n\t\t\t} else {\r\n\t\t\t\topts.complete = function() {\r\n\t\t\t\t\tif (complete) {\r\n\t\t\t\t\t\tcomplete.call(elements, elements);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (promiseData) {\r\n\t\t\t\t\t\tpromiseData.resolver(elements);\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\t/* If a display was passed in, use it. Otherwise, default to \"none\" for fadeOut or the element-specific default for fadeIn. */\r\n\t\t\t/* Note: We allow users to pass in \"null\" to skip display setting altogether. */\r\n\t\t\tif (opts.display === undefined) {\r\n\t\t\t\topts.display = (direction === \"In\" ? \"auto\" : \"none\");\r\n\t\t\t}\r\n\r\n\t\t\t(VelocityFn as any)(this, propertiesMap, opts);\r\n\t\t};\r\n\t});\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Effect Registration\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/* Animate the expansion/contraction of the elements' parent's height for In/Out effects. */\r\n\tfunction animateParentHeight(elements: HTMLorSVGElement | HTMLorSVGElement[], direction, totalDuration, stagger) {\r\n\t\tlet totalHeightDelta = 0,\r\n\t\t\tparentNode: HTMLorSVGElement;\r\n\r\n\t\t/* Sum the total height (including padding and margin) of all targeted elements. */\r\n\t\t((elements as HTMLorSVGElement).nodeType ? [elements as HTMLorSVGElement] : elements as HTMLorSVGElement[]).forEach(function(element: HTMLorSVGElement, i) {\r\n\t\t\tif (stagger) {\r\n\t\t\t\t/* Increase the totalDuration by the successive delay amounts produced by the stagger option. */\r\n\t\t\t\ttotalDuration += i * stagger;\r\n\t\t\t}\r\n\r\n\t\t\tparentNode = element.parentNode as HTMLorSVGElement;\r\n\r\n\t\t\tlet propertiesToSum = [\"height\", \"paddingTop\", \"paddingBottom\", \"marginTop\", \"marginBottom\"];\r\n\r\n\t\t\t/* If box-sizing is border-box, the height already includes padding and margin */\r\n\t\t\tif (CSS.getPropertyValue(element, \"boxSizing\").toString().toLowerCase() === \"border-box\") {\r\n\t\t\t\tpropertiesToSum = [\"height\"];\r\n\t\t\t}\r\n\r\n\t\t\tpropertiesToSum.forEach(function(property) {\r\n\t\t\t\ttotalHeightDelta += parseFloat(CSS.getPropertyValue(element, property) as string);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t/* Animate the parent element's height adjustment (with a varying duration multiplier for aesthetic benefits). */\r\n\t\t// TODO: Get this typesafe again\r\n\t\t(VelocityFn as any)(\r\n\t\t\tparentNode,\r\n\t\t\t{height: (direction === \"In\" ? \"+\" : \"-\") + \"=\" + totalHeightDelta},\r\n\t\t\t{queue: false, easing: \"ease-in-out\", duration: totalDuration * (direction === \"In\" ? 0.6 : 1)}\r\n\t\t);\r\n\t}\r\n\r\n\t/* Note: RegisterUI is a legacy name. */\r\n\texport function RegisterEffect(effectName: string, properties): Velocity {\r\n\r\n\t\t/* Register a custom redirect for each effect. */\r\n\t\tRedirects[effectName] = function(element, redirectOptions, elementsIndex, elementsSize, elements, resolver: (value?: HTMLorSVGElement[] | VelocityResult) => void, loop) {\r\n\t\t\tlet finalElement = (elementsIndex === elementsSize - 1),\r\n\t\t\t\ttotalDuration = 0;\r\n\r\n\t\t\tloop = loop || properties.loop;\r\n\t\t\tif (typeof properties.defaultDuration === \"function\") {\r\n\t\t\t\tproperties.defaultDuration = properties.defaultDuration.call(elements, elements);\r\n\t\t\t} else {\r\n\t\t\t\tproperties.defaultDuration = parseFloat(properties.defaultDuration);\r\n\t\t\t}\r\n\r\n\t\t\t/* Get the total duration used, so we can share it out with everything that doesn't have a duration */\r\n\t\t\tfor (let callIndex = 0; callIndex < properties.calls.length; callIndex++) {\r\n\t\t\t\tlet durationPercentage = properties.calls[callIndex][1];\r\n\t\t\t\tif (typeof durationPercentage === \"number\") {\r\n\t\t\t\t\ttotalDuration += durationPercentage;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlet shareDuration = totalDuration >= 1 ? 0 : properties.calls.length ? (1 - totalDuration) / properties.calls.length : 1;\r\n\r\n\t\t\t/* Iterate through each effect's call array. */\r\n\t\t\tfor (let callIndex = 0; callIndex < properties.calls.length; callIndex++) {\r\n\t\t\t\tlet call = properties.calls[callIndex],\r\n\t\t\t\t\tpropertyMap = call[0],\r\n\t\t\t\t\tredirectDuration = 1000,\r\n\t\t\t\t\tdurationPercentage = call[1],\r\n\t\t\t\t\tcallOptions = call[2] || {},\r\n\t\t\t\t\topts: VelocityOptions = {};\r\n\r\n\t\t\t\tif (redirectOptions.duration !== undefined) {\r\n\t\t\t\t\tredirectDuration = redirectOptions.duration;\r\n\t\t\t\t} else if (properties.defaultDuration !== undefined) {\r\n\t\t\t\t\tredirectDuration = properties.defaultDuration;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Assign the whitelisted per-call options. */\r\n\t\t\t\topts.duration = redirectDuration * (typeof durationPercentage === \"number\" ? durationPercentage : shareDuration);\r\n\t\t\t\topts.queue = redirectOptions.queue || \"\";\r\n\t\t\t\topts.easing = callOptions.easing || \"ease\";\r\n\t\t\t\topts.delay = parseFloat(callOptions.delay) || 0;\r\n\t\t\t\topts.loop = !properties.loop && callOptions.loop;\r\n\t\t\t\topts.cache = callOptions.cache || true;\r\n\r\n\t\t\t\t/* Special processing for the first effect call. */\r\n\t\t\t\tif (callIndex === 0) {\r\n\t\t\t\t\t/* If a delay was passed into the redirect, combine it with the first call's delay. */\r\n\t\t\t\t\topts.delay += (parseFloat(redirectOptions.delay) || 0);\r\n\r\n\t\t\t\t\tif (elementsIndex === 0) {\r\n\t\t\t\t\t\topts.begin = function() {\r\n\t\t\t\t\t\t\t/* Only trigger a begin callback on the first effect call with the first element in the set. */\r\n\t\t\t\t\t\t\tif (redirectOptions.begin) {\r\n\t\t\t\t\t\t\t\tredirectOptions.begin.call(elements, elements);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tlet direction = effectName.match(/(In|Out)$/);\r\n\r\n\t\t\t\t\t\t\t/* Make \"in\" transitioning elements invisible immediately so that there's no FOUC between now\r\n\t\t\t\t\t\t\t and the first RAF tick. */\r\n\t\t\t\t\t\t\tif ((direction && direction[0] === \"In\") && propertyMap.opacity !== undefined) {\r\n\t\t\t\t\t\t\t\t(elements.nodeType ? [elements] : elements).forEach(function(element) {\r\n\t\t\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"opacity\", 0);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Only trigger animateParentHeight() if we're using an In/Out transition. */\r\n\t\t\t\t\t\t\tif (redirectOptions.animateParentHeight && direction) {\r\n\t\t\t\t\t\t\t\tanimateParentHeight(elements, direction[0], redirectDuration + (opts.delay as number), redirectOptions.stagger);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* If the user isn't overriding the display option, default to \"auto\" for \"In\"-suffixed transitions. */\r\n\t\t\t\t\t//\t\t\t\t\tif (redirectOptions.display !== null) {\r\n\t\t\t\t\t//\t\t\t\t\t\tif (redirectOptions.display !== undefined && redirectOptions.display !== \"none\") {\r\n\t\t\t\t\t//\t\t\t\t\t\t\topts.display = redirectOptions.display;\r\n\t\t\t\t\t//\t\t\t\t\t\t} else if (/In$/.test(effectName)) {\r\n\t\t\t\t\t//\t\t\t\t\t\t\t/* Inline elements cannot be subjected to transforms, so we switch them to inline-block. */\r\n\t\t\t\t\t//\t\t\t\t\t\t\tlet defaultDisplay = CSS.Values.getDisplayType(element);\r\n\t\t\t\t\t//\t\t\t\t\t\t\topts.display = (defaultDisplay === \"inline\") ? \"inline-block\" : defaultDisplay;\r\n\t\t\t\t\t//\t\t\t\t\t\t}\r\n\t\t\t\t\t//\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (redirectOptions.visibility && redirectOptions.visibility !== \"hidden\") {\r\n\t\t\t\t\t\topts.visibility = redirectOptions.visibility;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Special processing for the last effect call. */\r\n\t\t\t\tif (callIndex === properties.calls.length - 1) {\r\n\t\t\t\t\t/* Append promise resolving onto the user's redirect callback. */\r\n\t\t\t\t\tlet injectFinalCallbacks = function() {\r\n\t\t\t\t\t\tif ((redirectOptions.display === undefined || redirectOptions.display === \"none\") && /Out$/.test(effectName)) {\r\n\t\t\t\t\t\t\t(elements.nodeType ? [elements] : elements).forEach(function(element) {\r\n\t\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"display\", \"none\");\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (redirectOptions.complete) {\r\n\t\t\t\t\t\t\tredirectOptions.complete.call(elements, elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (resolver) {\r\n\t\t\t\t\t\t\tresolver(elements || element);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\topts.complete = function() {\r\n\t\t\t\t\t\tif (loop) {\r\n\t\t\t\t\t\t\tRedirects[effectName](element, redirectOptions, elementsIndex, elementsSize, elements, resolver, loop === true ? true : Math.max(0, loop - 1));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (properties.reset) {\r\n\t\t\t\t\t\t\tfor (let resetProperty in properties.reset) {\r\n\t\t\t\t\t\t\t\tif (!properties.reset.hasOwnProperty(resetProperty)) {\r\n\t\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tlet resetValue = properties.reset[resetProperty];\r\n\r\n\t\t\t\t\t\t\t\t/* Format each non-array value in the reset property map to [ value, value ] so that changes apply\r\n\t\t\t\t\t\t\t\t immediately and DOM querying is avoided (via forcefeeding). */\r\n\t\t\t\t\t\t\t\t/* Note: Don't forcefeed hooks, otherwise their hook roots will be defaulted to their null values. */\r\n\t\t\t\t\t\t\t\t// TODO: Fix this\r\n\t\t\t\t\t\t\t\t//\t\t\t\t\t\t\t\tif (CSS.Hooks.registered[resetProperty] === undefined && (typeof resetValue === \"string\" || typeof resetValue === \"number\")) {\r\n\t\t\t\t\t\t\t\t//\t\t\t\t\t\t\t\t\tproperties.reset[resetProperty] = [properties.reset[resetProperty], properties.reset[resetProperty]];\r\n\t\t\t\t\t\t\t\t//\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* So that the reset values are applied instantly upon the next rAF tick, use a zero duration and parallel queueing. */\r\n\t\t\t\t\t\t\tlet resetOptions: VelocityOptions = {duration: 0, queue: false};\r\n\r\n\t\t\t\t\t\t\t/* Since the reset option uses up the complete callback, we trigger the user's complete callback at the end of ours. */\r\n\t\t\t\t\t\t\tif (finalElement) {\r\n\t\t\t\t\t\t\t\tresetOptions.complete = injectFinalCallbacks;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tVelocityFn(element, properties.reset, resetOptions);\r\n\t\t\t\t\t\t\t/* Only trigger the user's complete callback on the last effect call with the last element in the set. */\r\n\t\t\t\t\t\t} else if (finalElement) {\r\n\t\t\t\t\t\t\tinjectFinalCallbacks();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif (redirectOptions.visibility === \"hidden\") {\r\n\t\t\t\t\t\topts.visibility = redirectOptions.visibility;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tVelocityFn(element, propertyMap, opts);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/* Return the Velocity object so that RegisterUI calls can be chained. */\r\n\t\treturn VelocityFn as any;\r\n\t};\r\n};","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Sequence Running\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/* Note: Sequence calls must use Velocity's single-object arguments syntax. */\r\n\texport function RunSequence(originalSequence): void {\r\n\t\tlet sequence = _deepCopyObject([], originalSequence);\r\n\r\n\t\tif (sequence.length > 1) {\r\n\t\t\tsequence.reverse().forEach(function(currentCall, i) {\r\n\t\t\t\tlet nextCall = sequence[i + 1];\r\n\r\n\t\t\t\tif (nextCall) {\r\n\t\t\t\t\t/* Parallel sequence calls (indicated via sequenceQueue:false) are triggered\r\n\t\t\t\t\t in the previous call's begin callback. Otherwise, chained calls are normally triggered\r\n\t\t\t\t\t in the previous call's complete callback. */\r\n\t\t\t\t\tlet currentCallOptions = currentCall.o || currentCall.options,\r\n\t\t\t\t\t\tnextCallOptions = nextCall.o || nextCall.options;\r\n\r\n\t\t\t\t\tlet timing = (currentCallOptions && currentCallOptions.sequenceQueue === false) ? \"begin\" : \"complete\",\r\n\t\t\t\t\t\tcallbackOriginal = nextCallOptions && nextCallOptions[timing],\r\n\t\t\t\t\t\toptions = {};\r\n\r\n\t\t\t\t\toptions[timing] = function() {\r\n\t\t\t\t\t\tlet nextCallElements = nextCall.e || nextCall.elements;\r\n\t\t\t\t\t\tlet elements = nextCallElements.nodeType ? [nextCallElements] : nextCallElements;\r\n\r\n\t\t\t\t\t\tif (callbackOriginal) {\r\n\t\t\t\t\t\t\tcallbackOriginal.call(elements, elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tVelocityFn(currentCall);\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif (nextCall.o) {\r\n\t\t\t\t\t\tnextCall.o = {...nextCallOptions, ...options};\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnextCall.options = {...nextCallOptions, ...options};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tsequence.reverse();\r\n\t\t}\r\n\r\n\t\tVelocityFn(sequence[0]);\r\n\t};\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Tick\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Call the begin method of an animation in a separate function so it can\r\n\t * benefit from JIT compiling while still having a try/catch block.\r\n\t */\r\n\texport function callBegin(activeCall: AnimationCall) {\r\n\t\ttry {\r\n\t\t\tconst elements = activeCall.elements;\r\n\r\n\t\t\t(activeCall.options.begin as VelocityCallback).call(elements, elements, activeCall);\r\n\t\t} catch (error) {\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tthrow error;\r\n\t\t\t}, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Call the progress method of an animation in a separate function so it can\r\n\t * benefit from JIT compiling while still having a try/catch block.\r\n\t */\r\n\tfunction callProgress(activeCall: AnimationCall, timeCurrent: number) {\r\n\t\ttry {\r\n\t\t\tconst elements = activeCall.elements,\r\n\t\t\t\tpercentComplete = activeCall.percentComplete,\r\n\t\t\t\toptions = activeCall.options,\r\n\t\t\t\ttweenValue = activeCall.tween;\r\n\r\n\t\t\t(activeCall.options.progress as VelocityProgress).call(elements,\r\n\t\t\t\telements,\r\n\t\t\t\tpercentComplete,\r\n\t\t\t\tMath.max(0, activeCall.timeStart + (activeCall.duration != null ? activeCall.duration : options.duration != null ? options.duration : defaults.duration) - timeCurrent),\r\n\t\t\t\ttweenValue !== undefined ? tweenValue : String(percentComplete * 100),\r\n\t\t\t\tactiveCall);\r\n\t\t} catch (error) {\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tthrow error;\r\n\t\t\t}, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tlet firstProgress: AnimationCall,\r\n\t\tfirstComplete: AnimationCall;\r\n\r\n\tfunction asyncCallbacks() {\r\n\t\tlet activeCall: AnimationCall,\r\n\t\t\tnextCall: AnimationCall;\r\n\t\t// Callbacks and complete that might read the DOM again.\r\n\r\n\t\t// Progress callback\r\n\t\tfor (activeCall = firstProgress; activeCall; activeCall = nextCall) {\r\n\t\t\tnextCall = activeCall._nextProgress;\r\n\t\t\t// Pass to an external fn with a try/catch block for optimisation\r\n\t\t\tcallProgress(activeCall, lastTick);\r\n\t\t}\r\n\t\t// Complete animations, including complete callback or looping\r\n\t\tfor (activeCall = firstComplete; activeCall; activeCall = nextCall) {\r\n\t\t\tnextCall = activeCall._nextComplete;\r\n\t\t\t/* If this call has finished tweening, pass it to complete() to handle call cleanup. */\r\n\t\t\tcompleteCall(activeCall);\r\n\t\t}\r\n\t}\r\n\r\n\t/**************\r\n\t Timing\r\n\t **************/\r\n\r\n\tconst FRAME_TIME = 1000 / 60,\r\n\t\t/**\r\n\t\t* Shim for window.performance in case it doesn't exist\r\n\t\t*/\r\n\t\tperformance = (function() {\r\n\t\t\tconst perf = window.performance || {} as Performance;\r\n\r\n\t\t\tif (typeof perf.now !== \"function\") {\r\n\t\t\t\tconst nowOffset = perf.timing && perf.timing.navigationStart ? perf.timing.navigationStart : _now();\r\n\r\n\t\t\t\tperf.now = function() {\r\n\t\t\t\t\treturn _now() - nowOffset;\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn perf;\r\n\t\t})(),\r\n\t\t/**\r\n\t\t * Proxy function for when rAF is not available - try to be as accurate\r\n\t\t * as possible with the setTimeout calls, however they are far less\r\n\t\t * accurate than rAF can be - so try not to use normally (unless the tab\r\n\t\t * is in the background).\r\n\t\t */\r\n\t\trAFProxy = function(callback: FrameRequestCallback) {\r\n\t\t\tconsole.log(\"rAFProxy\", Math.max(0, FRAME_TIME - (performance.now() - lastTick)), performance.now(), lastTick, FRAME_TIME)\r\n\t\t\treturn setTimeout(function() {\r\n\t\t\t\tcallback(performance.now());\r\n\t\t\t}, Math.max(0, FRAME_TIME - (performance.now() - lastTick)));\r\n\t\t},\r\n\t\t/* rAF shim. Gist: https://gist.github.com/julianshapiro/9497513 */\r\n\t\trAFShim = window.requestAnimationFrame || rAFProxy;\r\n\t/**\r\n\t * The ticker function being used, either rAF, or a function that\r\n\t * emulates it.\r\n\t */\r\n\tlet ticker: (callback: FrameRequestCallback) => number = document.hidden ? rAFProxy : rAFShim;\r\n\t/**\r\n\t * The time that the last animation frame ran at. Set from tick(), and used\r\n\t * for missing rAF (ie, when not in focus etc).\r\n\t */\r\n\texport let lastTick: number = 0;\r\n\r\n\t/* Inactive browser tabs pause rAF, which results in all active animations immediately sprinting to their completion states when the tab refocuses.\r\n\t To get around this, we dynamically switch rAF to setTimeout (which the browser *doesn't* pause) when the tab loses focus. We skip this for mobile\r\n\t devices to avoid wasting battery power on inactive tabs. */\r\n\t/* Note: Tab focus detection doesn't work on older versions of IE, but that's okay since they don't support rAF to begin with. */\r\n\tif (!State.isMobile && document.hidden !== undefined) {\r\n\t\tdocument.addEventListener(\"visibilitychange\", function updateTicker(event?: Event) {\r\n\t\t\tlet hidden = document.hidden;\r\n\r\n\t\t\tticker = hidden ? rAFProxy : rAFShim;\r\n\t\t\tif (event) {\r\n\t\t\t\tsetTimeout(tick, 2000);\r\n\t\t\t}\r\n\t\t\ttick();\r\n\t\t});\r\n\t}\r\n\r\n\tlet ticking: boolean;\r\n\r\n\t/**\r\n\t * Called on every tick, preferably through rAF. This is reponsible for\r\n\t * initialising any new animations, then starting any that need starting.\r\n\t * Finally it will expand any tweens and set the properties relating to\r\n\t * them. If there are any callbacks relating to the animations then they\r\n\t * will attempt to call at the end (with the exception of \"begin\").\r\n\t */\r\n\texport function tick(timestamp?: number | boolean) {\r\n\t\tif (ticking) {\r\n\t\t\t// Should never happen - but if we've swapped back from hidden to\r\n\t\t\t// visibile then we want to make sure\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tticking = true;\r\n\t\t/* An empty timestamp argument indicates that this is the first tick occurence since ticking was turned on.\r\n\t\t We leverage this metadata to fully ignore the first tick pass since RAF's initial pass is fired whenever\r\n\t\t the browser's next tick sync time occurs, which results in the first elements subjected to Velocity\r\n\t\t calls being animated out of sync with any elements animated immediately thereafter. In short, we ignore\r\n\t\t the first RAF tick pass so that elements being immediately consecutively animated -- instead of simultaneously animated\r\n\t\t by the same Velocity call -- are properly batched into the same initial RAF tick and consequently remain in sync thereafter. */\r\n\t\tif (timestamp) {\r\n\t\t\t/* We normally use RAF's high resolution timestamp but as it can be significantly offset when the browser is\r\n\t\t\t under high stress we give the option for choppiness over allowing the browser to drop huge chunks of frames.\r\n\t\t\t We use performance.now() and shim it if it doesn't exist for when the tab is hidden. */\r\n\t\t\tconst timeCurrent = timestamp && timestamp !== true ? timestamp : performance.now(),\r\n\t\t\t\tdeltaTime = lastTick ? timeCurrent - lastTick : FRAME_TIME,\r\n\t\t\t\tdefaultSpeed = defaults.speed,\r\n\t\t\t\tdefaultEasing = defaults.easing,\r\n\t\t\t\tdefaultDuration = defaults.duration;\r\n\t\t\tlet activeCall: AnimationCall,\r\n\t\t\t\tnextCall: AnimationCall,\r\n\t\t\t\tlastProgress: AnimationCall,\r\n\t\t\t\tlastComplete: AnimationCall;\r\n\r\n\t\t\tfirstProgress = null;\r\n\t\t\tfirstComplete = null;\r\n\t\t\tif (deltaTime >= defaults.minFrameTime || !lastTick) {\r\n\t\t\t\tlastTick = timeCurrent;\r\n\r\n\t\t\t\t/********************\r\n\t\t\t\t Call Iteration\r\n\t\t\t\t ********************/\r\n\r\n\t\t\t\t// Expand any tweens that might need it.\r\n\t\t\t\twhile ((activeCall = State.firstNew)) {\r\n\t\t\t\t\tvalidateTweens(activeCall);\r\n\t\t\t\t}\r\n\t\t\t\t// Iterate through each active call.\r\n\t\t\t\tfor (activeCall = State.first; activeCall && activeCall !== State.firstNew; activeCall = activeCall._next) {\r\n\t\t\t\t\tconst element = activeCall.element;\r\n\t\t\t\t\tlet data: ElementData;\r\n\r\n\t\t\t\t\t// Check to see if this element has been deleted midway\r\n\t\t\t\t\t// through the animation. If it's gone then end this\r\n\t\t\t\t\t// animation.\r\n\t\t\t\t\tif (!element.parentNode || !(data = Data(element))) {\r\n\t\t\t\t\t\t// TODO: Remove safely - decrease count, delete data, remove from arrays\r\n\t\t\t\t\t\tfreeAnimationCall(activeCall);\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Don't bother getting until we can use these.\r\n\t\t\t\t\tconst options = activeCall.options,\r\n\t\t\t\t\t\tflags = activeCall._flags;\r\n\t\t\t\t\tlet timeStart = activeCall.timeStart;\r\n\r\n\t\t\t\t\t// If this is the first time that this call has been\r\n\t\t\t\t\t// processed by tick() then we assign timeStart now so that\r\n\t\t\t\t\t// it's value is as close to the real animation start time\r\n\t\t\t\t\t// as possible.\r\n\t\t\t\t\tif (!timeStart) {\r\n\t\t\t\t\t\tconst queue = activeCall.queue != null ? activeCall.queue : options.queue;\r\n\r\n\t\t\t\t\t\ttimeStart = timeCurrent - deltaTime;\r\n\t\t\t\t\t\tif (queue !== false) {\r\n\t\t\t\t\t\t\ttimeStart = Math.max(timeStart, data.lastFinishList[queue] || 0);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tactiveCall.timeStart = timeStart;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// If this animation is paused then skip processing unless\r\n\t\t\t\t\t// it has been set to resume.\r\n\t\t\t\t\tif (flags & AnimationFlags.PAUSED) {\r\n\t\t\t\t\t\t// Update the time start to accomodate the paused\r\n\t\t\t\t\t\t// completion amount.\r\n\t\t\t\t\t\tactiveCall.timeStart += deltaTime;\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Check if this animation is ready - if it's synced then it\r\n\t\t\t\t\t// needs to wait for all other animations in the sync\r\n\t\t\t\t\tif (!(flags & AnimationFlags.READY)) {\r\n\t\t\t\t\t\tactiveCall._flags |= AnimationFlags.READY;\r\n\t\t\t\t\t\toptions._ready++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// Need to split the loop, as ready sync animations must all get\r\n\t\t\t\t// the same start time.\r\n\t\t\t\tfor (activeCall = State.first; activeCall && activeCall !== State.firstNew; activeCall = nextCall) {\r\n\t\t\t\t\tconst flags = activeCall._flags;\r\n\r\n\t\t\t\t\tnextCall = activeCall._next;\r\n\t\t\t\t\tif (!(flags & AnimationFlags.READY) || (flags & AnimationFlags.PAUSED)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst options = activeCall.options;\r\n\r\n\t\t\t\t\tif ((flags & AnimationFlags.SYNC) && options._ready < options._total) {\r\n\t\t\t\t\t\tactiveCall.timeStart += deltaTime;\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst speed = activeCall.speed != null ? activeCall.speed : options.speed != null ? options.speed : defaultSpeed;\r\n\t\t\t\t\tlet timeStart = activeCall.timeStart;\r\n\r\n\t\t\t\t\t// Don't bother getting until we can use these.\r\n\t\t\t\t\tif (!(flags & AnimationFlags.STARTED)) {\r\n\t\t\t\t\t\tconst delay = activeCall.delay != null ? activeCall.delay : options.delay;\r\n\r\n\t\t\t\t\t\t// Make sure anything we've delayed doesn't start\r\n\t\t\t\t\t\t// animating yet, there might still be an active delay\r\n\t\t\t\t\t\t// after something has been un-paused\r\n\t\t\t\t\t\tif (delay) {\r\n\t\t\t\t\t\t\tif (timeStart + (delay / speed) > timeCurrent) {\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tactiveCall.timeStart = timeStart += delay / (delay > 0 ? speed : 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tactiveCall._flags |= AnimationFlags.STARTED;\r\n\t\t\t\t\t\t// The begin callback is fired once per call, not once\r\n\t\t\t\t\t\t// per element, and is passed the full raw DOM element\r\n\t\t\t\t\t\t// set as both its context and its first argument.\r\n\t\t\t\t\t\tif (options._started++ === 0) {\r\n\t\t\t\t\t\t\toptions._first = activeCall;\r\n\t\t\t\t\t\t\tif (options.begin) {\r\n\t\t\t\t\t\t\t\t// Pass to an external fn with a try/catch block for optimisation\r\n\t\t\t\t\t\t\t\tcallBegin(activeCall);\r\n\t\t\t\t\t\t\t\t// Only called once, even if reversed or repeated\r\n\t\t\t\t\t\t\t\toptions.begin = undefined;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (speed !== 1) {\r\n\t\t\t\t\t\t// On the first frame we may have a shorter delta\r\n\t\t\t\t\t\tconst delta = Math.min(deltaTime, timeCurrent - timeStart);\r\n\t\t\t\t\t\tactiveCall.timeStart = timeStart += delta * (1 - speed);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (options._first === activeCall && options.progress) {\r\n\t\t\t\t\t\tactiveCall._nextProgress = undefined;\r\n\t\t\t\t\t\tif (lastProgress) {\r\n\t\t\t\t\t\t\tlastProgress._nextProgress = lastProgress = activeCall;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tfirstProgress = lastProgress = activeCall;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst activeEasing = activeCall.easing != null ? activeCall.easing : options.easing != null ? options.easing : defaultEasing,\r\n\t\t\t\t\t\tmillisecondsEllapsed = activeCall.ellapsedTime = timeCurrent - timeStart,\r\n\t\t\t\t\t\tduration = activeCall.duration != null ? activeCall.duration : options.duration != null ? options.duration : defaultDuration,\r\n\t\t\t\t\t\tpercentComplete = activeCall.percentComplete = mock ? 1 : Math.min(millisecondsEllapsed / duration, 1),\r\n\t\t\t\t\t\ttweens = activeCall.tweens,\r\n\t\t\t\t\t\treverse = flags & AnimationFlags.REVERSE;\r\n\r\n\t\t\t\t\tif (percentComplete === 1) {\r\n\t\t\t\t\t\tactiveCall._nextComplete = undefined;\r\n\t\t\t\t\t\tif (lastComplete) {\r\n\t\t\t\t\t\t\tlastComplete._nextComplete = lastComplete = activeCall;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tfirstComplete = lastComplete = activeCall;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (const property in tweens) {\r\n\t\t\t\t\t\t// For every element, iterate through each property.\r\n\t\t\t\t\t\tconst tween = tweens[property],\r\n\t\t\t\t\t\t\teasing = tween[Tween.EASING] || activeEasing,\r\n\t\t\t\t\t\t\tpattern = tween[Tween.PATTERN],\r\n\t\t\t\t\t\t\trounding = tween[Tween.ROUNDING];\r\n\t\t\t\t\t\tlet currentValue = \"\",\r\n\t\t\t\t\t\t\ti = 0;\r\n\r\n\t\t\t\t\t\tif (pattern) {\r\n\t\t\t\t\t\t\tfor (; i < pattern.length; i++) {\r\n\t\t\t\t\t\t\t\tconst startValue = tween[Tween.START][i];\r\n\r\n\t\t\t\t\t\t\t\tif (startValue == null) {\r\n\t\t\t\t\t\t\t\t\tcurrentValue += pattern[i];\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t// All easings must deal with numbers except for\r\n\t\t\t\t\t\t\t\t\t// our internal ones\r\n\t\t\t\t\t\t\t\t\tconst result = easing(reverse ? 1 - percentComplete : percentComplete, startValue as number, tween[Tween.END][i] as number, property)\r\n\r\n\t\t\t\t\t\t\t\t\tcurrentValue += rounding && rounding[i] ? Math.round(result) : result;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (property !== \"tween\") {\r\n\t\t\t\t\t\t\t\t// TODO: To solve an IE<=8 positioning bug, the unit type must be dropped when setting a property value of 0 - add normalisations to legacy\r\n\t\t\t\t\t\t\t\tCSS.setPropertyValue(activeCall.element, property, currentValue);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t// Skip the fake 'tween' property as that is only\r\n\t\t\t\t\t\t\t\t// passed into the progress callback.\r\n\t\t\t\t\t\t\t\tactiveCall.tween = currentValue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconsole.warn(\"VelocityJS: Missing pattern:\", property, JSON.stringify(tween[property]))\r\n\t\t\t\t\t\t\tdelete tweens[property];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (firstProgress || firstComplete) {\r\n\t\t\t\t\tsetTimeout(asyncCallbacks, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (State.first) {\r\n\t\t\tState.isTicking = true;\r\n\t\t\tticker(tick);\r\n\t\t} else {\r\n\t\t\tState.isTicking = false;\r\n\t\t\tlastTick = 0;\r\n\t\t}\r\n\t\tticking = false;\r\n\t}\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Use rAF high resolution timestamp when available.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\texport let timestamp: boolean = true;\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Tweens\r\n */\r\n\r\nconst enum Tween {\r\n\tEND,\r\n\tEASING,\r\n\tSTART,\r\n\tPATTERN,\r\n\tROUNDING,\r\n\tlength\r\n};\r\n\r\nnamespace VelocityStatic {\r\n\tlet commands = new Map string>();\r\n\r\n\tcommands.set(\"function\", function(value: any, element: HTMLorSVGElement, elements: HTMLorSVGElement[], elementArrayIndex: number) {\r\n\t\treturn (value as any as VelocityPropertyValueFn).call(element, elementArrayIndex, elements.length);\r\n\t})\r\n\tcommands.set(\"number\", function(value, element, elements, elementArrayIndex, propertyName) {\r\n\t\treturn value + (element instanceof HTMLElement ? getUnitType(propertyName) : \"\");\r\n\t});\r\n\tcommands.set(\"string\", function(value, element, elements, elementArrayIndex, propertyName) {\r\n\t\treturn CSS.fixColors(value);\r\n\t});\r\n\tcommands.set(\"undefined\", function(value, element, elements, elementArrayIndex, propertyName) {\r\n\t\treturn CSS.fixColors(CSS.getPropertyValue(element, propertyName) || \"\");\r\n\t});\r\n\r\n\tconst\r\n\t\t/**\r\n\t\t * Properties that take \"deg\" as the default numeric suffix.\r\n\t\t */\r\n\t\tdegree = [\r\n\t\t\t// \"azimuth\" // Deprecated\r\n\t\t],\r\n\t\t/**\r\n\t\t * Properties that take no default numeric suffix.\r\n\t\t */\r\n\t\tunitless = [\r\n\t\t\t\"borderImageSlice\",\r\n\t\t\t\"columnCount\",\r\n\t\t\t\"counterIncrement\",\r\n\t\t\t\"counterReset\",\r\n\t\t\t\"flex\",\r\n\t\t\t\"flexGrow\",\r\n\t\t\t\"flexShrink\",\r\n\t\t\t\"floodOpacity\",\r\n\t\t\t\"fontSizeAdjust\",\r\n\t\t\t\"fontWeight\",\r\n\t\t\t\"lineHeight\",\r\n\t\t\t\"opacity\",\r\n\t\t\t\"order\",\r\n\t\t\t\"orphans\",\r\n\t\t\t\"shapeImageThreshold\",\r\n\t\t\t\"tabSize\",\r\n\t\t\t\"widows\",\r\n\t\t\t\"zIndex\"\r\n\t\t];\r\n\r\n\t/**\r\n\t * Retrieve a property's default unit type. Used for assigning a unit\r\n\t * type when one is not supplied by the user. These are only valid for\r\n\t * HTMLElement style properties.\r\n\t */\r\n\tfunction getUnitType(property: string): string {\r\n\t\tif (_inArray(degree, property)) {\r\n\t\t\treturn \"deg\";\r\n\t\t}\r\n\t\tif (_inArray(unitless, property)) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\treturn \"px\";\r\n\t}\r\n\r\n\t/**\r\n\t * Expand a VelocityProperty argument into a valid sparse Tween array. This\r\n\t * pre-allocates the array as it is then the correct size and slightly\r\n\t * faster to access.\r\n\t */\r\n\texport function expandProperties(animation: AnimationCall, properties: VelocityProperties) {\r\n\t\tconst tweens = animation.tweens = Object.create(null),\r\n\t\t\telements = animation.elements,\r\n\t\t\telement = animation.element,\r\n\t\t\telementArrayIndex = elements.indexOf(element),\r\n\t\t\tdata = Data(element),\r\n\t\t\tqueue = getValue(animation.queue, animation.options.queue),\r\n\t\t\tduration = getValue(animation.options.duration, defaults.duration);\r\n\r\n\t\tfor (const property in properties) {\r\n\t\t\tconst propertyName = CSS.camelCase(property);\r\n\t\t\tlet valueData = properties[property],\r\n\t\t\t\ttypes = data.types,\r\n\t\t\t\tfound: boolean = propertyName === \"tween\";\r\n\r\n\t\t\tfor (let index = 0; types && !found; types >>= 1, index++) {\r\n\t\t\t\tfound = !!(types & 1 && Normalizations[index][propertyName]);\r\n\t\t\t}\r\n\t\t\tif (!found\r\n\t\t\t\t&& (!State.prefixElement\r\n\t\t\t\t\t|| !isString(State.prefixElement.style[propertyName]))) {\r\n\t\t\t\tif (debug) {\r\n\t\t\t\t\tconsole.log(\"Skipping [\" + property + \"] due to a lack of browser support.\");\r\n\t\t\t\t}\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (valueData == null) {\r\n\t\t\t\tif (debug) {\r\n\t\t\t\t\tconsole.log(\"Skipping [\" + property + \"] due to no value supplied.\");\r\n\t\t\t\t}\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tconst tween: VelocityTween = tweens[propertyName] = new Array(Tween.length) as any;\r\n\t\t\tlet endValue: string,\r\n\t\t\t\tstartValue: string;\r\n\r\n\t\t\tif (isFunction(valueData)) {\r\n\t\t\t\t// If we have a function as the main argument then resolve\r\n\t\t\t\t// it first, in case it returns an array that needs to be\r\n\t\t\t\t// split.\r\n\t\t\t\tvalueData = (valueData as VelocityPropertyFn).call(element, elementArrayIndex, elements.length, elements);\r\n\t\t\t}\r\n\t\t\tif (Array.isArray(valueData)) {\r\n\t\t\t\t// valueData is an array in the form of\r\n\t\t\t\t// [ endValue, [, easing] [, startValue] ]\r\n\t\t\t\tconst arr1 = valueData[1],\r\n\t\t\t\t\tarr2 = valueData[2];\r\n\r\n\t\t\t\tendValue = valueData[0] as any;\r\n\t\t\t\tif ((isString(arr1) && (/^[\\d-]/.test(arr1) || CSS.RegEx.isHex.test(arr1))) || isFunction(arr1) || isNumber(arr1)) {\r\n\t\t\t\t\tstartValue = arr1 as any;\r\n\t\t\t\t} else if ((isString(arr1) && Easing.Easings[arr1]) || Array.isArray(arr1)) {\r\n\t\t\t\t\ttween[Tween.EASING] = arr1 as any;\r\n\t\t\t\t\tstartValue = arr2 as any;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstartValue = arr1 || arr2 as any;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tendValue = valueData as any;\r\n\t\t\t}\r\n\t\t\ttween[Tween.END] = commands.get(typeof endValue)(endValue, element, elements, elementArrayIndex, propertyName) as any;\r\n\t\t\tif (startValue != null || (queue === false || data.queueList[queue] === undefined)) {\r\n\t\t\t\ttween[Tween.START] = commands.get(typeof startValue)(startValue, element, elements, elementArrayIndex, propertyName) as any;\r\n\t\t\t}\r\n\t\t\texplodeTween(propertyName, tween, duration, !!startValue);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Convert a string-based tween with start and end strings, into a pattern\r\n\t * based tween with arrays.\r\n\t */\r\n\tfunction explodeTween(propertyName: string, tween: VelocityTween, duration: number, isForcefeed?: boolean) {\r\n\t\tconst endValue: string = tween[Tween.END] as any as string;\r\n\t\tlet startValue: string = tween[Tween.START] as any as string;\r\n\r\n\t\tif (!isString(endValue) || !isString(startValue)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet runAgain = false; // Can only be set once if the Start value doesn't match the End value and it's not forcefed\r\n\t\tdo {\r\n\t\t\trunAgain = false;\r\n\t\t\tconst arrayStart: (string | number)[] = tween[Tween.START] = [null],\r\n\t\t\t\tarrayEnd: (string | number)[] = tween[Tween.END] = [null],\r\n\t\t\t\tpattern: (string | number)[] = tween[Tween.PATTERN] = [\"\"];\r\n\t\t\tlet easing = tween[Tween.EASING] as any,\r\n\t\t\t\trounding: boolean[],\r\n\t\t\t\tindexStart = 0, // index in startValue\r\n\t\t\t\tindexEnd = 0, // index in endValue\r\n\t\t\t\tinCalc = 0, // Keep track of being inside a \"calc()\" so we don't duplicate it\r\n\t\t\t\tinRGB = 0, // Keep track of being inside an RGB as we can't use fractional values\r\n\t\t\t\tinRGBA = 0, // Keep track of being inside an RGBA as we must pass fractional for the alpha channel\r\n\t\t\t\tisStringValue: boolean;\r\n\r\n\t\t\t// TODO: Relative Values\r\n\r\n\t\t\t/* Operator logic must be performed last since it requires unit-normalized start and end values. */\r\n\t\t\t/* Note: Relative *percent values* do not behave how most people think; while one would expect \"+=50%\"\r\n\t\t\t to increase the property 1.5x its current value, it in fact increases the percent units in absolute terms:\r\n\t\t\t 50 points is added on top of the current % value. */\r\n\t\t\t//\t\t\t\t\tswitch (operator as any as string) {\r\n\t\t\t//\t\t\t\t\t\tcase \"+\":\r\n\t\t\t//\t\t\t\t\t\t\tendValue = startValue + endValue;\r\n\t\t\t//\t\t\t\t\t\t\tbreak;\r\n\t\t\t//\r\n\t\t\t//\t\t\t\t\t\tcase \"-\":\r\n\t\t\t//\t\t\t\t\t\t\tendValue = startValue - endValue;\r\n\t\t\t//\t\t\t\t\t\t\tbreak;\r\n\t\t\t//\r\n\t\t\t//\t\t\t\t\t\tcase \"*\":\r\n\t\t\t//\t\t\t\t\t\t\tendValue = startValue * endValue;\r\n\t\t\t//\t\t\t\t\t\t\tbreak;\r\n\t\t\t//\r\n\t\t\t//\t\t\t\t\t\tcase \"/\":\r\n\t\t\t//\t\t\t\t\t\t\tendValue = startValue / endValue;\r\n\t\t\t//\t\t\t\t\t\t\tbreak;\r\n\t\t\t//\t\t\t\t\t}\r\n\r\n\t\t\t// TODO: Leading from a calc value\r\n\t\t\twhile (indexStart < startValue.length && indexEnd < endValue.length) {\r\n\t\t\t\tlet charStart = startValue[indexStart],\r\n\t\t\t\t\tcharEnd = endValue[indexEnd];\r\n\r\n\t\t\t\t// If they're both numbers, then parse them as a whole\r\n\t\t\t\tif (TWEEN_NUMBER_REGEX.test(charStart) && TWEEN_NUMBER_REGEX.test(charEnd)) {\r\n\t\t\t\t\tlet tempStart = charStart, // temporary character buffer\r\n\t\t\t\t\t\ttempEnd = charEnd, // temporary character buffer\r\n\t\t\t\t\t\tdotStart = \".\", // Make sure we can only ever match a single dot in a decimal\r\n\t\t\t\t\t\tdotEnd = \".\"; // Make sure we can only ever match a single dot in a decimal\r\n\r\n\t\t\t\t\twhile (++indexStart < startValue.length) {\r\n\t\t\t\t\t\tcharStart = startValue[indexStart];\r\n\t\t\t\t\t\tif (charStart === dotStart) {\r\n\t\t\t\t\t\t\tdotStart = \"..\"; // Can never match two characters\r\n\t\t\t\t\t\t} else if (!isNumberWhenParsed(charStart)) {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ttempStart += charStart;\r\n\t\t\t\t\t}\r\n\t\t\t\t\twhile (++indexEnd < endValue.length) {\r\n\t\t\t\t\t\tcharEnd = endValue[indexEnd];\r\n\t\t\t\t\t\tif (charEnd === dotEnd) {\r\n\t\t\t\t\t\t\tdotEnd = \"..\"; // Can never match two characters\r\n\t\t\t\t\t\t} else if (!isNumberWhenParsed(charEnd)) {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ttempEnd += charEnd;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet unitStart = CSS.getUnit(startValue, indexStart), // temporary unit type\r\n\t\t\t\t\t\tunitEnd = CSS.getUnit(endValue, indexEnd); // temporary unit type\r\n\r\n\t\t\t\t\tindexStart += unitStart.length;\r\n\t\t\t\t\tindexEnd += unitEnd.length;\r\n\t\t\t\t\tif (unitEnd.length === 0) {\r\n\t\t\t\t\t\t// This order as it's most common for the user supplied\r\n\t\t\t\t\t\t// value to be a number.\r\n\t\t\t\t\t\tunitEnd = unitStart;\r\n\t\t\t\t\t} else if (unitStart.length === 0) {\r\n\t\t\t\t\t\tunitStart = unitEnd;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (unitStart === unitEnd) {\r\n\t\t\t\t\t\t// Same units\r\n\t\t\t\t\t\tif (tempStart === tempEnd) {\r\n\t\t\t\t\t\t\t// Same numbers, so just copy over\r\n\t\t\t\t\t\t\tpattern[pattern.length - 1] += tempStart + unitStart;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif (inRGB) {\r\n\t\t\t\t\t\t\t\tif (!rounding) {\r\n\t\t\t\t\t\t\t\t\trounding = tween[Tween.ROUNDING] = [];\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\trounding[arrayStart.length] = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tpattern.push(0, unitStart);\r\n\t\t\t\t\t\t\tarrayStart.push(parseFloat(tempStart), null);\r\n\t\t\t\t\t\t\tarrayEnd.push(parseFloat(tempEnd), null);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Different units, so put into a \"calc(from + to)\" and\r\n\t\t\t\t\t\t// animate each side to/from zero. setPropertyValue will\r\n\t\t\t\t\t\t// look out for the final \"calc(0 + \" prefix and remove\r\n\t\t\t\t\t\t// it from the value when it finds it.\r\n\t\t\t\t\t\tpattern[pattern.length - 1] += inCalc ? \"+ (\" : \"calc(\";\r\n\t\t\t\t\t\tpattern.push(0, unitStart + \" + \", 0, unitEnd + \")\");\r\n\t\t\t\t\t\tarrayStart.push(parseFloat(tempStart) || 0, null, 0, null);\r\n\t\t\t\t\t\tarrayEnd.push(0, null, parseFloat(tempEnd) || 0, null);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (charStart === charEnd) {\r\n\t\t\t\t\tpattern[pattern.length - 1] += charStart;\r\n\t\t\t\t\tindexStart++;\r\n\t\t\t\t\tindexEnd++;\r\n\t\t\t\t\t// Keep track of being inside a calc()\r\n\t\t\t\t\tif (inCalc === 0 && charStart === \"c\"\r\n\t\t\t\t\t\t|| inCalc === 1 && charStart === \"a\"\r\n\t\t\t\t\t\t|| inCalc === 2 && charStart === \"l\"\r\n\t\t\t\t\t\t|| inCalc === 3 && charStart === \"c\"\r\n\t\t\t\t\t\t|| inCalc >= 4 && charStart === \"(\"\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tinCalc++;\r\n\t\t\t\t\t} else if ((inCalc && inCalc < 5)\r\n\t\t\t\t\t\t|| inCalc >= 4 && charStart === \")\" && --inCalc < 5) {\r\n\t\t\t\t\t\tinCalc = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Keep track of being inside an rgb() / rgba()\r\n\t\t\t\t\t// The opacity must not be rounded.\r\n\t\t\t\t\tif (inRGB === 0 && charStart === \"r\"\r\n\t\t\t\t\t\t|| inRGB === 1 && charStart === \"g\"\r\n\t\t\t\t\t\t|| inRGB === 2 && charStart === \"b\"\r\n\t\t\t\t\t\t|| inRGB === 3 && charStart === \"a\"\r\n\t\t\t\t\t\t|| inRGB >= 3 && charStart === \"(\"\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tif (inRGB === 3 && charStart === \"a\") {\r\n\t\t\t\t\t\t\tinRGBA = 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tinRGB++;\r\n\t\t\t\t\t} else if (inRGBA && charStart === \",\") {\r\n\t\t\t\t\t\tif (++inRGBA > 3) {\r\n\t\t\t\t\t\t\tinRGB = inRGBA = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if ((inRGBA && inRGB < (inRGBA ? 5 : 4))\r\n\t\t\t\t\t\t|| inRGB >= (inRGBA ? 4 : 3) && charStart === \")\" && --inRGB < (inRGBA ? 5 : 4)) {\r\n\t\t\t\t\t\tinRGB = inRGBA = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (charStart || charEnd) {\r\n\t\t\t\t\t// Different letters, so we're going to push them into start\r\n\t\t\t\t\t// and end until the next word\r\n\t\t\t\t\tisStringValue = true;\r\n\t\t\t\t\tif (!isString(arrayStart[arrayStart.length - 1])) {\r\n\t\t\t\t\t\tif (pattern.length === 1 && !pattern[0]) {\r\n\t\t\t\t\t\t\tarrayStart[0] = arrayEnd[0] = \"\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tpattern.push(\"\");\r\n\t\t\t\t\t\t\tarrayStart.push(\"\");\r\n\t\t\t\t\t\t\tarrayEnd.push(\"\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\twhile (indexStart < startValue.length) {\r\n\t\t\t\t\t\tcharStart = startValue[indexStart++];\r\n\t\t\t\t\t\tif (charStart === \" \" || TWEEN_NUMBER_REGEX.test(charStart)) {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tarrayStart[arrayStart.length - 1] += charStart;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\twhile (indexEnd < endValue.length) {\r\n\t\t\t\t\t\tcharEnd = endValue[indexEnd++];\r\n\t\t\t\t\t\tif (charEnd === \" \" || TWEEN_NUMBER_REGEX.test(charEnd)) {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tarrayEnd[arrayEnd.length - 1] += charEnd;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (!isForcefeed && (indexStart === startValue.length) !== (indexEnd === endValue.length)) {\r\n\t\t\t\t\t// This little piece will take a startValue, split out the\r\n\t\t\t\t\t// various numbers in it, then copy the endValue into the\r\n\t\t\t\t\t// startValue while replacing the numbers in it to match the\r\n\t\t\t\t\t// original start numbers as a repeating sequence.\r\n\t\t\t\t\t// Finally this function will run again with the new\r\n\t\t\t\t\t// startValue and a now matching pattern.\r\n\t\t\t\t\tlet startNumbers = startValue.match(/\\d\\.?\\d*/g) || [\"0\"],\r\n\t\t\t\t\t\tcount = startNumbers.length,\r\n\t\t\t\t\t\tindex = 0;\r\n\r\n\t\t\t\t\tstartValue = endValue.replace(/\\d+\\.?\\d*/g, function() {\r\n\t\t\t\t\t\treturn startNumbers[index++ % count];\r\n\t\t\t\t\t});\r\n\t\t\t\t\trunAgain = isForcefeed = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (!runAgain) {\r\n\t\t\t\t// TODO: These two would be slightly better to not add the array indices in the first place\r\n\t\t\t\tif (pattern[0] === \"\" && arrayEnd[0] == null) {\r\n\t\t\t\t\tpattern.shift();\r\n\t\t\t\t\tarrayStart.shift();\r\n\t\t\t\t\tarrayEnd.shift();\r\n\t\t\t\t}\r\n\t\t\t\tif (pattern[pattern.length] === \"\" && arrayEnd[arrayEnd.length] == null) {\r\n\t\t\t\t\tpattern.pop();\r\n\t\t\t\t\tarrayStart.pop();\r\n\t\t\t\t\tarrayEnd.pop();\r\n\t\t\t\t}\r\n\t\t\t\tif (indexStart < startValue.length || indexEnd < endValue.length) {\r\n\t\t\t\t\t// NOTE: We should never be able to reach this code unless a\r\n\t\t\t\t\t// bad forcefed value is supplied.\r\n\t\t\t\t\tconsole.error(\"Velocity: Trying to pattern match mis-matched strings \" + propertyName + \":[\\\"\" + endValue + \"\\\", \\\"\" + startValue + \"\\\"]\");\r\n\t\t\t\t}\r\n\t\t\t\tif (debug) {\r\n\t\t\t\t\tconsole.log(\"Velocity: Pattern found:\", pattern, \" -> \", arrayStart, arrayEnd, \"[\" + startValue + \",\" + endValue + \"]\");\r\n\t\t\t\t}\r\n\t\t\t\tif (propertyName === \"display\") {\r\n\t\t\t\t\tif (!/^(at-start|at-end|during)$/.test(easing)) {\r\n\t\t\t\t\t\teasing = endValue === \"none\" ? \"at-end\" : \"at-start\";\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (propertyName === \"visibility\") {\r\n\t\t\t\t\tif (!/^(at-start|at-end|during)$/.test(easing)) {\r\n\t\t\t\t\t\teasing = endValue === \"hidden\" ? \"at-end\" : \"at-start\";\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (isStringValue\r\n\t\t\t\t\t&& easing !== \"at-start\" && easing !== \"during\" && easing !== \"at-end\"\r\n\t\t\t\t\t&& easing !== Easing.Easings[\"at-Start\"] && easing !== Easing.Easings[\"during\"] && easing !== Easing.Easings[\"at-end\"]) {\r\n\t\t\t\t\tconsole.warn(\"Velocity: String easings must use one of 'at-start', 'during' or 'at-end': {\" + propertyName + \": [\\\"\" + endValue + \"\\\", \" + easing + \", \\\"\" + startValue + \"\\\"]}\");\r\n\t\t\t\t\teasing = \"at-start\";\r\n\t\t\t\t}\r\n\t\t\t\ttween[Tween.EASING] = validateEasing(easing, duration);\r\n\t\t\t}\r\n\t\t\t// This can only run a second time once - if going from automatic startValue to \"fixed\" pattern from endValue with startValue numbers\r\n\t\t} while (runAgain);\r\n\t}\r\n\r\n\t/**\r\n\t * Expand all queued animations that haven't gone yet\r\n\t *\r\n\t * This will automatically expand the properties map for any recently added\r\n\t * animations so that the start and end values are correct.\r\n\t */\r\n\texport function validateTweens(activeCall: AnimationCall) {\r\n\t\t// This might be called on an already-ready animation\r\n\t\tif (State.firstNew === activeCall) {\r\n\t\t\tState.firstNew = activeCall._next;\r\n\t\t}\r\n\t\t// Check if we're actually already ready\r\n\t\tif (activeCall._flags & AnimationFlags.EXPANDED) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet element = activeCall.element,\r\n\t\t\ttweens = activeCall.tweens,\r\n\t\t\tduration = getValue(activeCall.options.duration, defaults.duration);\r\n\r\n\t\tfor (const propertyName in tweens) {\r\n\t\t\tconst tween = tweens[propertyName];\r\n\r\n\t\t\tif (tween[Tween.START] == null) {\r\n\t\t\t\t// Get the start value as it's not been passed in\r\n\t\t\t\tconst startValue = CSS.getPropertyValue(activeCall.element, propertyName);\r\n\r\n\t\t\t\tif (isString(startValue)) {\r\n\t\t\t\t\ttween[Tween.START] = CSS.fixColors(startValue) as any;\r\n\t\t\t\t\texplodeTween(propertyName, tween, duration);\r\n\t\t\t\t} else if (!Array.isArray(startValue)) {\r\n\t\t\t\t\tconsole.warn(\"bad type\", tween, propertyName, startValue)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (debug) {\r\n\t\t\t\tconsole.log(\"tweensContainer (\" + propertyName + \"): \" + JSON.stringify(tween), element);\r\n\t\t\t}\r\n\t\t}\r\n\t\tactiveCall._flags |= AnimationFlags.EXPANDED;\r\n\t}\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Validation functions used for various types of data that can be supplied.\r\n * All errors are reported in the non-minified version for development. If a\r\n * validation fails then it should return undefined.\r\n */\r\n\r\n/**\r\n * Parse a duration value and return an ms number. Optionally return a\r\n * default value if the number is not valid.\r\n */\r\nfunction parseDuration(duration: \"fast\" | \"normal\" | \"slow\" | number, def?: \"fast\" | \"normal\" | \"slow\" | number): number {\r\n\tif (isNumber(duration)) {\r\n\t\treturn duration;\r\n\t}\r\n\r\n\tif (isString(duration)) {\r\n\t\treturn Duration[duration.toLowerCase()] || parseFloat(duration.replace(\"ms\", \"\").replace(\"s\", \"000\"));\r\n\t}\r\n\r\n\treturn def == null ? undefined : parseDuration(def);\r\n}\r\n\r\n/**\r\n * Validate a cache option.\r\n * @private\r\n */\r\nfunction validateCache(value: boolean): boolean {\r\n\tif (isBoolean(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'cache' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a begin option.\r\n * @private\r\n */\r\nfunction validateBegin(value: VelocityCallback): VelocityCallback {\r\n\tif (isFunction(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'begin' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a complete option.\r\n * @private\r\n */\r\nfunction validateComplete(value: VelocityCallback, noError?: true): VelocityCallback {\r\n\tif (isFunction(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null && !noError) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'complete' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a delay option.\r\n * @private\r\n */\r\nfunction validateDelay(value: \"fast\" | \"normal\" | \"slow\" | number): number {\r\n\tconst parsed = parseDuration(value);\r\n\r\n\tif (!isNaN(parsed)) {\r\n\t\treturn parsed;\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.error(\"VelocityJS: Trying to set 'delay' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a duration option.\r\n * @private\r\n */\r\nfunction validateDuration(value: \"fast\" | \"normal\" | \"slow\" | number, noError?: true): number {\r\n\tconst parsed = parseDuration(value);\r\n\r\n\tif (!isNaN(parsed) && parsed >= 0) {\r\n\t\treturn parsed;\r\n\t}\r\n\tif (value != null && !noError) {\r\n\t\tconsole.error(\"VelocityJS: Trying to set 'duration' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a easing option.\r\n * @private\r\n */\r\nfunction validateEasing(value: VelocityEasingType, duration: number, noError?: true): VelocityEasingFn {\r\n\tconst Easing = VelocityStatic.Easing;\r\n\r\n\tif (isString(value)) {\r\n\t\t// Named easing\r\n\t\treturn Easing.Easings[value];\r\n\t}\r\n\tif (isFunction(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (Array.isArray(value)) {\r\n\t\tif (value.length === 1) {\r\n\t\t\t// Steps\r\n\t\t\treturn Easing.generateStep(value[0]);\r\n\t\t}\r\n\t\tif (value.length === 2) {\r\n\t\t\t// springRK4 must be passed the animation's duration.\r\n\t\t\t// Note: If the springRK4 array contains non-numbers,\r\n\t\t\t// generateSpringRK4() returns an easing function generated with\r\n\t\t\t// default tension and friction values.\r\n\t\t\treturn Easing.generateSpringRK4(value[0], value[1], duration);\r\n\t\t}\r\n\t\tif (value.length === 4) {\r\n\t\t\t// Note: If the bezier array contains non-numbers, generateBezier()\r\n\t\t\t// returns undefined.\r\n\t\t\treturn Easing.generateBezier.apply(null, value) || false;\r\n\t\t}\r\n\t}\r\n\tif (value != null && !noError) {\r\n\t\tconsole.error(\"VelocityJS: Trying to set 'easing' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a fpsLimit option.\r\n * @private\r\n */\r\nfunction validateFpsLimit(value: number | false): number {\r\n\tif (value === false) {\r\n\t\treturn 0;\r\n\t} else {\r\n\t\tconst parsed = parseInt(value as any, 10);\r\n\r\n\t\tif (!isNaN(parsed) && parsed >= 0) {\r\n\t\t\treturn Math.min(parsed, 60);\r\n\t\t}\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'fpsLimit' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * Validate a loop option.\r\n * @private\r\n */\r\nfunction validateLoop(value: number | boolean): number | true {\r\n\tif (value === false) {\r\n\t\treturn 0;\r\n\t} else if (value === true) {\r\n\t\treturn true;\r\n\t} else {\r\n\t\tconst parsed = parseInt(value as any, 10);\r\n\r\n\t\tif (!isNaN(parsed) && parsed >= 0) {\r\n\t\t\treturn parsed;\r\n\t\t}\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'loop' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a progress option.\r\n * @private\r\n */\r\nfunction validateProgress(value: VelocityProgress): VelocityProgress {\r\n\tif (isFunction(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'progress' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a promise option.\r\n * @private\r\n */\r\nfunction validatePromise(value: boolean): boolean {\r\n\tif (isBoolean(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'promise' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a promiseRejectEmpty option.\r\n * @private\r\n */\r\nfunction validatePromiseRejectEmpty(value: boolean): boolean {\r\n\tif (isBoolean(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'promiseRejectEmpty' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a queue option.\r\n * @private\r\n */\r\nfunction validateQueue(value: string | false, noError?: true): string | false {\r\n\tif (value === false || isString(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null && !noError) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'queue' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a repeat option.\r\n * @private\r\n */\r\nfunction validateRepeat(value: number | boolean): number | true {\r\n\tif (value === false) {\r\n\t\treturn 0;\r\n\t} else if (value === true) {\r\n\t\treturn true;\r\n\t} else {\r\n\t\tconst parsed = parseInt(value as any, 10);\r\n\r\n\t\tif (!isNaN(parsed) && parsed >= 0) {\r\n\t\t\treturn parsed;\r\n\t\t}\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'repeat' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a speed option.\r\n * @private\r\n */\r\nfunction validateSpeed(value: number): number {\r\n\tif (isNumber(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.error(\"VelocityJS: Trying to set 'speed' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a sync option.\r\n * @private\r\n */\r\nfunction validateSync(value: boolean): boolean {\r\n\tif (isBoolean(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.error(\"VelocityJS: Trying to set 'sync' to an invalid value:\", value);\r\n\t}\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n * \r\n * Velocity version (should grab from package.json during build).\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\texport let version = VERSION;\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Core \"Velocity\" function.\r\n */\r\n\r\ninterface Document {\r\n\tdocumentMode: any; // IE\r\n}\r\n\r\n/**\r\n * The main Velocity function. Acts as a gateway to everything else.\r\n */\r\nfunction VelocityFn(options: VelocityObjectArgs): VelocityResult;\r\nfunction VelocityFn(elements: VelocityElements, propertyMap: string | VelocityProperties, options?: VelocityOptions): VelocityResult;\r\nfunction VelocityFn(elements: VelocityElements, propertyMap: string | VelocityProperties, duration?: number | \"fast\" | \"normal\" | \"slow\", complete?: () => void): VelocityResult;\r\nfunction VelocityFn(elements: VelocityElements, propertyMap: string | VelocityProperties, complete?: () => void): VelocityResult;\r\nfunction VelocityFn(elements: VelocityElements, propertyMap: string | VelocityProperties, easing?: string | number[], complete?: () => void): VelocityResult;\r\nfunction VelocityFn(elements: VelocityElements, propertyMap: string | VelocityProperties, duration?: number | \"fast\" | \"normal\" | \"slow\", easing?: string | number[], complete?: () => void): VelocityResult;\r\nfunction VelocityFn(this: VelocityElements, propertyMap: string | VelocityProperties, duration?: number | \"fast\" | \"normal\" | \"slow\", complete?: () => void): VelocityResult;\r\nfunction VelocityFn(this: VelocityElements, propertyMap: string | VelocityProperties, complete?: () => void): VelocityResult;\r\nfunction VelocityFn(this: VelocityElements, propertyMap: string | VelocityProperties, easing?: string | number[], complete?: () => void): VelocityResult;\r\nfunction VelocityFn(this: VelocityElements, propertyMap: string | VelocityProperties, duration?: number | \"fast\" | \"normal\" | \"slow\", easing?: string | number[], complete?: () => void): VelocityResult;\r\nfunction VelocityFn(this: VelocityElements | void, ...__args: any[]): VelocityResult {\r\n\tconst\r\n\t\t/**\r\n\t\t * A shortcut to the default options.\r\n\t\t */\r\n\t\tdefaults = VelocityStatic.defaults,\r\n\t\t/**\r\n\t\t * Shortcut to arguments for file size.\r\n\t\t */\r\n\t\t_arguments = arguments,\r\n\t\t/**\r\n\t\t * Cache of the first argument - this is used often enough to be saved.\r\n\t\t */\r\n\t\targs0 = _arguments[0] as VelocityObjectArgs,\r\n\t\t/**\r\n\t\t * To allow for expressive CoffeeScript code, Velocity supports an\r\n\t\t * alternative syntax in which \"elements\" (or \"e\"), \"properties\" (or\r\n\t\t * \"p\"), and \"options\" (or \"o\") objects are defined on a container\r\n\t\t * object that's passed in as Velocity's sole argument.\r\n\t\t *\r\n\t\t * Note: Some browsers automatically populate arguments with a\r\n\t\t * \"properties\" object. We detect it by checking for its default\r\n\t\t * \"names\" property.\r\n\t\t */\r\n\t\t// TODO: Confirm which browsers - if <=IE8 the we can drop completely\r\n\t\tsyntacticSugar = isPlainObject(args0) && (args0.p || ((isPlainObject(args0.properties) && !(args0.properties as any).names) || isString(args0.properties)));\r\n\tlet\r\n\t\t/**\r\n\t\t * When Velocity is called via the utility function (Velocity()),\r\n\t\t * elements are explicitly passed in as the first parameter. Thus,\r\n\t\t * argument positioning varies.\r\n\t\t */\r\n\t\targumentIndex: number = 0,\r\n\t\t/**\r\n\t\t * The list of elements, extended with Promise and Velocity.\r\n\t\t */\r\n\t\telements: VelocityResult,\r\n\t\t/**\r\n\t\t * The properties being animated. This can be a string, in which case it\r\n\t\t * is either a function for these elements, or it is a \"named\" animation\r\n\t\t * sequence to use instead. Named sequences start with either \"callout.\"\r\n\t\t * or \"transition.\". When used as a callout the values will be reset\r\n\t\t * after finishing. When used as a transtition then there is no special\r\n\t\t * handling after finishing.\r\n\t\t */\r\n\t\tpropertiesMap: string | VelocityProperties,\r\n\t\t/**\r\n\t\t * Options supplied, this will be mapped and validated into\r\n\t\t * options.\r\n\t\t */\r\n\t\toptionsMap: VelocityOptions,\r\n\t\t/**\r\n\t\t * If called via a chain then this contains the last calls\r\n\t\t * animations. If this does not have a value then any access to the\r\n\t\t * element's animations needs to be to the currently-running ones.\r\n\t\t */\r\n\t\tanimations: AnimationCall[],\r\n\t\t/**\r\n\t\t * The promise that is returned.\r\n\t\t */\r\n\t\tpromise: Promise,\r\n\t\t// Used when the animation is finished\r\n\t\tresolver: (value?: VelocityResult) => void,\r\n\t\t// Used when there was an issue with one or more of the Velocity arguments\r\n\t\trejecter: (reason: any) => void;\r\n\r\n\t//console.log(\"Velocity\", _arguments)\r\n\t// First get the elements, and the animations connected to the last call if\r\n\t// this is chained.\r\n\t// TODO: Clean this up a bit\r\n\t// TODO: Throw error if the chain is called with elements as the first argument. isVelocityResult(this) && ( (isNode(arg0) || isWrapped(arg0)) && arg0 == this)\r\n\tif (isNode(this)) {\r\n\t\t// This is from a chain such as document.getElementById(\"\").velocity(...)\r\n\t\telements = [this as HTMLorSVGElement] as VelocityResult;\r\n\t} else if (isWrapped(this)) {\r\n\t\t// This might be a chain from something else, but if chained from a\r\n\t\t// previous Velocity() call then grab the animations it's related to.\r\n\t\telements = Object.assign([], this as HTMLorSVGElement[]) as VelocityResult;\r\n\t\tif (isVelocityResult(this)) {\r\n\t\t\tanimations = (this as VelocityResult).velocity.animations;\r\n\t\t}\r\n\t} else if (syntacticSugar) {\r\n\t\telements = Object.assign([], args0.elements || args0.e) as VelocityResult;\r\n\t\targumentIndex++;\r\n\t} else if (isNode(args0)) {\r\n\t\telements = Object.assign([], [args0]) as VelocityResult;\r\n\t\targumentIndex++;\r\n\t} else if (isWrapped(args0)) {\r\n\t\telements = Object.assign([], args0) as VelocityResult;\r\n\t\targumentIndex++;\r\n\t}\r\n\t// Allow elements to be chained.\r\n\tif (elements) {\r\n\t\tdefineProperty(elements, \"velocity\", VelocityFn.bind(elements));\r\n\t\tif (animations) {\r\n\t\t\tdefineProperty(elements.velocity, \"animations\", animations);\r\n\t\t}\r\n\t}\r\n\t// Next get the propertiesMap and options.\r\n\tif (syntacticSugar) {\r\n\t\tpropertiesMap = getValue(args0.properties, args0.p);\r\n\t} else {\r\n\t\t// TODO: Should be possible to call Velocity(\"pauseAll\") - currently not possible\r\n\t\tpropertiesMap = _arguments[argumentIndex++] as string | VelocityProperties;\r\n\t}\r\n\t// Get any options map passed in as arguments first, expand any direct\r\n\t// options if possible.\r\n\tconst isReverse = propertiesMap === \"reverse\",\r\n\t\tisAction = !isReverse && isString(propertiesMap),\r\n\t\topts = syntacticSugar ? getValue(args0.options, args0.o) : _arguments[argumentIndex];\r\n\r\n\tif (isPlainObject(opts)) {\r\n\t\toptionsMap = opts;\r\n\t}\r\n\t// Create the promise if supported and wanted.\r\n\tif (Promise && getValue(optionsMap && optionsMap.promise, defaults.promise)) {\r\n\t\tpromise = new Promise(function(_resolve, _reject) {\r\n\t\t\trejecter = _reject;\r\n\t\t\t// IMPORTANT:\r\n\t\t\t// If a resolver tries to run on a Promise then it will wait until\r\n\t\t\t// that Promise resolves - but in this case we're running on our own\r\n\t\t\t// Promise, so need to make sure it's not seen as one. Setting these\r\n\t\t\t// values to undefined for the duration of the resolve.\r\n\t\t\t// Due to being an async call, they should be back to \"normal\"\r\n\t\t\t// before the .then() function gets called.\r\n\t\t\tresolver = function(args: VelocityResult) {\r\n\t\t\t\tif (isVelocityResult(args)) {\r\n\t\t\t\t\tconst _then = args && args.then;\r\n\r\n\t\t\t\t\tif (_then) {\r\n\t\t\t\t\t\targs.then = undefined; // Preserving enumeration etc\r\n\t\t\t\t\t}\r\n\t\t\t\t\t_resolve(args);\r\n\t\t\t\t\tif (_then) {\r\n\t\t\t\t\t\targs.then = _then;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t_resolve(args);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t});\r\n\t\tif (elements) {\r\n\t\t\tdefineProperty(elements, \"then\", promise.then.bind(promise));\r\n\t\t\tdefineProperty(elements, \"catch\", promise.catch.bind(promise));\r\n\t\t\tif ((promise as any).finally) {\r\n\t\t\t\t// Semi-standard\r\n\t\t\t\tdefineProperty(elements, \"finally\", (promise as any).finally.bind(promise));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tconst promiseRejectEmpty: boolean = getValue(optionsMap && optionsMap.promiseRejectEmpty, defaults.promiseRejectEmpty);\r\n\r\n\tif (promise) {\r\n\t\tif (!elements && !isAction) {\r\n\t\t\tif (promiseRejectEmpty) {\r\n\t\t\t\trejecter(\"Velocity: No elements supplied, if that is deliberate then pass `promiseRejectEmpty:false` as an option. Aborting.\");\r\n\t\t\t} else {\r\n\t\t\t\tresolver();\r\n\t\t\t}\r\n\t\t} else if (!propertiesMap) {\r\n\t\t\tif (promiseRejectEmpty) {\r\n\t\t\t\trejecter(\"Velocity: No properties supplied, if that is deliberate then pass `promiseRejectEmpty:false` as an option. Aborting.\");\r\n\t\t\t} else {\r\n\t\t\t\tresolver();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif ((!elements && !isAction) || !propertiesMap) {\r\n\t\treturn promise as any;\r\n\t}\r\n\r\n\t// NOTE: Can't use isAction here due to type inference - there are callbacks\r\n\t// between so the type isn't considered safe.\r\n\tif (isAction) {\r\n\t\tconst args: any[] = [],\r\n\t\t\tpromiseHandler: VelocityPromise = promise && {\r\n\t\t\t\t_promise: promise,\r\n\t\t\t\t_resolver: resolver,\r\n\t\t\t\t_rejecter: rejecter\r\n\t\t\t};\r\n\r\n\t\twhile (argumentIndex < _arguments.length) {\r\n\t\t\targs.push(_arguments[argumentIndex++]);\r\n\t\t}\r\n\r\n\t\t// Velocity's behavior is categorized into \"actions\". If a string is\r\n\t\t// passed in instead of a propertiesMap then that will call a function\r\n\t\t// to do something special to the animation linked.\r\n\t\t// There is one special case - \"reverse\" - which is handled differently,\r\n\t\t// by being stored on the animation and then expanded when the animation\r\n\t\t// starts.\r\n\t\tconst action = (propertiesMap as string).replace(/\\..*$/, \"\"),\r\n\t\t\tcallback = VelocityStatic.Actions[action] || VelocityStatic.Actions[\"default\"];\r\n\r\n\t\tif (callback) {\r\n\t\t\tconst result = callback(args, elements, promiseHandler, propertiesMap as string);\r\n\r\n\t\t\tif (result !== undefined) {\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"VelocityJS: Unknown action:\", propertiesMap);\r\n\t\t}\r\n\t} else if (isPlainObject(propertiesMap) || isReverse) {\r\n\t\t/**\r\n\t\t * The options for this set of animations.\r\n\t\t */\r\n\t\tconst options: StrictVelocityOptions = {};\r\n\t\tlet isSync = defaults.sync;\r\n\r\n\t\t// Private options first - set as non-enumerable, and starting with an\r\n\t\t// underscore so we can filter them out.\r\n\t\tif (promise) {\r\n\t\t\tdefineProperty(options, \"_promise\", promise);\r\n\t\t\tdefineProperty(options, \"_rejecter\", rejecter);\r\n\t\t\tdefineProperty(options, \"_resolver\", resolver);\r\n\t\t}\r\n\t\tdefineProperty(options, \"_ready\", 0);\r\n\t\tdefineProperty(options, \"_started\", 0);\r\n\t\tdefineProperty(options, \"_completed\", 0);\r\n\t\tdefineProperty(options, \"_total\", 0);\r\n\r\n\t\t// Now check the optionsMap\r\n\t\tif (isPlainObject(optionsMap)) {\r\n\t\t\toptions.duration = getValue(validateDuration(optionsMap.duration), defaults.duration);\r\n\t\t\toptions.delay = getValue(validateDelay(optionsMap.delay), defaults.delay);\r\n\t\t\t// Need the extra fallback here in case it supplies an invalid\r\n\t\t\t// easing that we need to overrride with the default.\r\n\t\t\toptions.easing = validateEasing(getValue(optionsMap.easing, defaults.easing), options.duration) || validateEasing(defaults.easing, options.duration);\r\n\t\t\toptions.loop = getValue(validateLoop(optionsMap.loop), defaults.loop);\r\n\t\t\toptions.repeat = options.repeatAgain = getValue(validateRepeat(optionsMap.repeat), defaults.repeat);\r\n\t\t\tif (optionsMap.speed != null) {\r\n\t\t\t\toptions.speed = getValue(validateSpeed(optionsMap.speed), 1);\r\n\t\t\t}\r\n\t\t\tif (isBoolean(optionsMap.promise)) {\r\n\t\t\t\toptions.promise = optionsMap.promise;\r\n\t\t\t}\r\n\t\t\toptions.queue = getValue(validateQueue(optionsMap.queue), defaults.queue);\r\n\t\t\tif (optionsMap.mobileHA && !VelocityStatic.State.isGingerbread) {\r\n\t\t\t\t/* When set to true, and if this is a mobile device, mobileHA automatically enables hardware acceleration (via a null transform hack)\r\n\t\t\t\t on animating elements. HA is removed from the element at the completion of its animation. */\r\n\t\t\t\t/* Note: Android Gingerbread doesn't support HA. If a null transform hack (mobileHA) is in fact set, it will prevent other tranform subproperties from taking effect. */\r\n\t\t\t\t/* Note: You can read more about the use of mobileHA in Velocity's documentation: VelocityJS.org/#mobileHA. */\r\n\t\t\t\toptions.mobileHA = true;\r\n\t\t\t}\r\n\t\t\tif (!isReverse) {\r\n\t\t\t\tif (optionsMap.display != null) {\r\n\t\t\t\t\t(propertiesMap as VelocityProperties).display = optionsMap.display as string;\r\n\t\t\t\t\tconsole.error(\"Deprecated 'options.display' used, this is now a property:\", optionsMap.display);\r\n\t\t\t\t}\r\n\t\t\t\tif (optionsMap.visibility != null) {\r\n\t\t\t\t\t(propertiesMap as VelocityProperties).visibility = optionsMap.visibility as string;\r\n\t\t\t\t\tconsole.error(\"Deprecated 'options.visibility' used, this is now a property:\", optionsMap.visibility);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// TODO: Allow functional options for different options per element\r\n\t\t\tconst optionsBegin = validateBegin(optionsMap.begin),\r\n\t\t\t\toptionsComplete = validateComplete(optionsMap.complete),\r\n\t\t\t\toptionsProgress = validateProgress(optionsMap.progress),\r\n\t\t\t\toptionsSync = validateSync(optionsMap.sync);\r\n\r\n\t\t\tif (optionsBegin != null) {\r\n\t\t\t\toptions.begin = optionsBegin;\r\n\t\t\t}\r\n\t\t\tif (optionsComplete != null) {\r\n\t\t\t\toptions.complete = optionsComplete;\r\n\t\t\t}\r\n\t\t\tif (optionsProgress != null) {\r\n\t\t\t\toptions.progress = optionsProgress;\r\n\t\t\t}\r\n\t\t\tif (optionsSync != null) {\r\n\t\t\t\tisSync = optionsSync;\r\n\t\t\t}\r\n\t\t} else if (!syntacticSugar) {\r\n\t\t\t// Expand any direct options if possible.\r\n\t\t\tconst duration = validateDuration(_arguments[argumentIndex], true);\r\n\t\t\tlet offset = 0;\r\n\r\n\t\t\tif (duration !== undefined) {\r\n\t\t\t\toffset++;\r\n\t\t\t\toptions.duration = duration;\r\n\t\t\t}\r\n\t\t\tif (!isFunction(_arguments[argumentIndex + offset])) {\r\n\t\t\t\t// Despite coming before Complete, we can't pass a fn easing\r\n\t\t\t\tconst easing = validateEasing(_arguments[argumentIndex + offset], getValue(options && validateDuration(options.duration), defaults.duration) as number, true);\r\n\r\n\t\t\t\tif (easing !== undefined) {\r\n\t\t\t\t\toffset++;\r\n\t\t\t\t\toptions.easing = easing;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tconst complete = validateComplete(_arguments[argumentIndex + offset], true);\r\n\r\n\t\t\tif (complete !== undefined) {\r\n\t\t\t\toptions.complete = complete;\r\n\t\t\t}\r\n\t\t\toptions.loop = defaults.loop;\r\n\t\t\toptions.repeat = options.repeatAgain = defaults.repeat;\r\n\t\t}\r\n\r\n\t\tif (isReverse && options.queue === false) {\r\n\t\t\tthrow new Error(\"VelocityJS: Cannot reverse a queue:false animation.\");\r\n\t\t}\r\n\r\n\t\t/* When a set of elements is targeted by a Velocity call, the set is broken up and each element has the current Velocity call individually queued onto it.\r\n\t\t In this way, each element's existing queue is respected; some elements may already be animating and accordingly should not have this current Velocity call triggered immediately. */\r\n\t\t/* In each queue, tween data is processed for each animating property then pushed onto the call-wide calls array. When the last element in the set has had its tweens processed,\r\n\t\t the call array is pushed to VelocityStatic.State.calls for live processing by the requestAnimationFrame tick. */\r\n\r\n\t\tconst rootAnimation: AnimationCall = {\r\n\t\t\t_prev: undefined,\r\n\t\t\t_next: undefined,\r\n\t\t\t_flags: isSync ? AnimationFlags.SYNC : 0,\r\n\t\t\toptions: options,\r\n\t\t\tpercentComplete: 0,\r\n\t\t\t//element: element,\r\n\t\t\telements: elements,\r\n\t\t\tellapsedTime: 0,\r\n\t\t\ttimeStart: 0\r\n\t\t};\r\n\r\n\t\tanimations = [];\r\n\t\tfor (let index = 0; index < elements.length; index++) {\r\n\t\t\tconst element = elements[index];\r\n\t\t\tlet flags = 0;\r\n\r\n\t\t\tif (isNode(element)) { // TODO: This needs to check for valid animation targets, not just Elements\r\n\t\t\t\tif (isReverse) {\r\n\t\t\t\t\tconst lastAnimation = Data(element).lastAnimationList[options.queue as string];\r\n\r\n\t\t\t\t\tpropertiesMap = lastAnimation && lastAnimation.tweens;\r\n\t\t\t\t\tif (!propertiesMap) {\r\n\t\t\t\t\t\tconsole.error(\"VelocityJS: Attempting to reverse an animation on an element with no previous animation:\", element);\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tflags |= AnimationFlags.REVERSE & ~(lastAnimation._flags & AnimationFlags.REVERSE);\r\n\t\t\t\t}\r\n\t\t\t\tconst tweens = Object.create(null),\r\n\t\t\t\t\tanimation: AnimationCall = Object.assign({\r\n\t\t\t\t\t\telement: element,\r\n\t\t\t\t\t\ttweens: tweens\r\n\t\t\t\t\t}, rootAnimation);\r\n\r\n\t\t\t\toptions._total++;\r\n\t\t\t\tanimation._flags |= flags;\r\n\t\t\t\tanimations.push(animation);\r\n\t\t\t\tif (isReverse) {\r\n\t\t\t\t\t// In this case we're using the previous animation, so\r\n\t\t\t\t\t// it will be expanded correctly when that one runs.\r\n\t\t\t\t\tanimation.tweens = propertiesMap as any;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tVelocityStatic.expandProperties(animation, propertiesMap);\r\n\t\t\t\t}\r\n\t\t\t\tVelocityStatic.queue(element, animation, options.queue);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (VelocityStatic.State.isTicking === false) {\r\n\t\t\t// If the animation tick isn't running, start it. (Velocity shuts it\r\n\t\t\t// off when there are no active calls to process.)\r\n\t\t\tVelocityStatic.tick();\r\n\t\t}\r\n\t\tif (animations) {\r\n\t\t\tdefineProperty(elements.velocity, \"animations\", animations);\r\n\t\t}\r\n\t}\r\n\t/***************\r\n\t Chaining\r\n\t ***************/\r\n\r\n\t/* Return the elements back to the call chain, with wrapped elements taking precedence in case Velocity was called via the $.fn. extension. */\r\n\treturn elements || promise as any;\r\n};\r\n\r\n\r\n/***************\r\n Summary\r\n ***************/\r\n\r\n/*\r\n - CSS: CSS stack that works independently from the rest of Velocity.\r\n - animate(): Core animation method that iterates over the targeted elements and queues the incoming call onto each element individually.\r\n - Pre-Queueing: Prepare the element for animation by instantiating its data cache and processing the call's options.\r\n - Queueing: The logic that runs once the call has reached its point of execution in the element's queue stack.\r\n Most logic is placed here to avoid risking it becoming stale (if the element's properties have changed).\r\n - Pushing: Consolidation of the tween data followed by its push onto the global in-progress calls container.\r\n - tick(): The single requestAnimationFrame loop responsible for tweening all in-progress calls.\r\n - completeCall(): Handles the cleanup process for each Velocity call.\r\n */\r\n\r\n/*********************\r\n Helper Functions\r\n *********************/\r\n\r\n/* IE detection. Gist: https://gist.github.com/julianshapiro/9098609 */\r\nvar IE = (function() {\r\n\tif (document.documentMode) {\r\n\t\treturn document.documentMode;\r\n\t} else {\r\n\t\tfor (let i = 7; i > 4; i--) {\r\n\t\t\tlet div = document.createElement(\"div\");\r\n\r\n\t\t\tdiv.innerHTML = \"\";\r\n\t\t\tif (div.getElementsByTagName(\"span\").length) {\r\n\t\t\t\tdiv = null;\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn undefined;\r\n})();\r\n\r\n/******************\r\n Unsupported\r\n ******************/\r\n\r\nif (IE <= 8) {\r\n\tthrow new Error(\"VelocityJS cannot run on Internet Explorer 8 or earlier\");\r\n}\r\n\r\n/******************\r\n Frameworks\r\n ******************/\r\n\r\ninterface Window {\r\n\tjQuery: {fn?: any};\r\n\tZepto: {fn?: any};\r\n\tVelocity: any;\r\n}\r\n\r\nif (window === this) {\r\n\t/*\r\n\t * Both jQuery and Zepto allow their $.fn object to be extended to allow\r\n\t * wrapped elements to be subjected to plugin calls. If either framework is\r\n\t * loaded, register a \"velocity\" extension pointing to Velocity's core\r\n\t * animate() method. Velocity also registers itself onto a global container\r\n\t * (window.jQuery || window.Zepto || window) so that certain features are\r\n\t * accessible beyond just a per-element scope. Accordingly, Velocity can\r\n\t * both act on wrapped DOM elements and stand alone for targeting raw DOM\r\n\t * elements.\r\n\t */\r\n\tconst patch = VelocityStatic.patch,\r\n\t\tjQuery = window.jQuery,\r\n\t\tZepto = window.Zepto;\r\n\r\n\tpatch(window, true);\r\n\tpatch(Element && Element.prototype);\r\n\tpatch(NodeList && NodeList.prototype);\r\n\tpatch(HTMLCollection && HTMLCollection.prototype);\r\n\r\n\tpatch(jQuery, true);\r\n\tpatch(jQuery && jQuery.fn);\r\n\r\n\tpatch(Zepto, true);\r\n\tpatch(Zepto && Zepto.fn);\r\n}\r\n\r\n/******************\r\n Known Issues\r\n ******************/\r\n\r\n/* The CSS spec mandates that the translateX/Y/Z transforms are %-relative to the element itself -- not its parent.\r\n Velocity, however, doesn't make this distinction. Thus, converting to or from the % unit with these subproperties\r\n will produce an inaccurate conversion value. The same issue exists with the cx/cy attributes of SVG circles and ellipses. */\r\n","///\r\n///\r\n///\r\n///\r\n///\r\n///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n * \r\n * Merge the VelocityStatic namespace onto the Velocity function for external\r\n * use. This is done as a read-only way. Any attempt to change these values will\r\n * be allowed.\r\n */\r\nfor (const key in VelocityStatic) {\r\n\tObject.defineProperty(VelocityFn, key, {\r\n\t\tenumerable: PUBLIC_MEMBERS.indexOf(key) >= 0,\r\n\t\tget: function() {\r\n\t\t\treturn VelocityStatic[key];\r\n\t\t}\r\n\t});\r\n}\r\n\r\n// console.log(\"Velocity keys\", Object.keys(VelocityStatic));\r\n"]} \ No newline at end of file +{"version":3,"sources":["../src/constants.ts","../src/types.ts","../src/utility.ts","../src/Velocity/actions/actions.ts","../src/Velocity/actions/defaultAction.ts","../src/Velocity/actions/finish.ts","../src/Velocity/actions/option.ts","../src/Velocity/actions/pauseResume.ts","../src/Velocity/actions/reverse.ts","../src/Velocity/actions/stop.ts","../src/Velocity/actions/style.ts","../src/Velocity/actions/tween.ts","../src/Velocity/state.ts","../src/Velocity/css/camelCase.ts","../src/Velocity/css/fixColors.ts","../src/Velocity/css/colors.ts","../src/Velocity/css/getPropertyValue.ts","../src/Velocity/css/getUnit.ts","../src/Velocity/css/setPropertyValue.ts","../src/Velocity/easing/easings.ts","../src/Velocity/easing/back.ts","../src/Velocity/easing/bezier.ts","../src/Velocity/easing/bounce.ts","../src/Velocity/easing/elastic.ts","../src/Velocity/easing/spring_rk4.ts","../src/Velocity/easing/step.ts","../src/Velocity/easing/string.ts","../src/Velocity/normalizations/normalizations.ts","../src/Velocity/normalizations/svg/attributes.ts","../src/Velocity/normalizations/svg/dimensions.ts","../src/Velocity/normalizations/dimensions.ts","../src/Velocity/normalizations/display.ts","../src/Velocity/normalizations/scroll.ts","../src/Velocity/normalizations/style.ts","../src/Velocity/normalizations/tween.ts","../src/Velocity/complete.ts","../src/Velocity/data.ts","../src/Velocity/debug.ts","../src/Velocity/defaults.ts","../src/Velocity/mock.ts","../src/Velocity/patch.ts","../src/Velocity/queue.ts","../src/Velocity/redirects.ts","../src/Velocity/registereffect.ts","../src/Velocity/runsequence.ts","../src/Velocity/tick.ts","../src/Velocity/timestamp.ts","../src/Velocity/tweens.ts","../src/Velocity/validate.ts","../src/Velocity/version.ts","../src/core.ts","../src/app.ts"],"names":["PUBLIC_MEMBERS","ALL_VENDOR_PREFIXES","DURATION_FAST","DURATION_NORMAL","DURATION_SLOW","FUZZY_MS_PER_SECOND","DEFAULT_CACHE","DEFAULT_DELAY","DEFAULT_DURATION","DEFAULT_EASING","DEFAULT_FPSLIMIT","DEFAULT_LOOP","DEFAULT_PROMISE","DEFAULT_PROMISE_REJECT_EMPTY","DEFAULT_QUEUE","DEFAULT_REPEAT","DEFAULT_SPEED","DEFAULT_SYNC","TWEEN_NUMBER_REGEX","CLASSNAME","Duration","fast","normal","slow","isBoolean","variable","isNumber","isNumberWhenParsed","isNaN","Number","isString","isFunction","Object","prototype","toString","call","isNode","nodeType","isVelocityResult","length","velocity","propertyIsEnumerable","object","property","isWrapped","window","isSVG","SVGElement","isPlainObject","proto","getPrototypeOf","hasOwnProperty","constructor","isEmptyObject","name_1","defineProperty","name","value","configurable","writable","_deepCopyObject","target","sources","_i","arguments","TypeError","to","source","shift","key","Array","isArray","_now","Date","now","getTime","_inArray","array","i","sanitizeElements","elements","getValue","args","_args","_arg","undefined","addClass","element","className","Element","classList","add","removeClass","remove","replace","RegExp","VelocityStatic","Actions","create","registerAction","internal","callback","console","warn","defaultAction","promiseHandler","action","Redirects","options","opts_1","__assign","durationOriginal_1","parseFloat","duration","delayOriginal_1","delay","backwards","reverse","forEach","elementIndex","stagger","drag","test","Math","max","_resolver","abortError","_rejecter","Error","log","checkAnimationShouldBeFinished","animation","queueName","defaultQueue","validateTweens","queue","_flags","_started","_first","begin","callBegin","tweens","tween_1","pattern","currentValue","endValue","end","CSS","setPropertyValue","fn","completeCall","finish","validateQueue","defaults","finishAll","animations","activeCall","State","first","nextCall","firstNew","_next","then","animationFlags","isExpanded","isReady","isStarted","isStopped","isPaused","isSync","isReverse","option","indexOf","push","result","flag","isPercentComplete","validateCache","validateBegin","validateComplete","validateDelay","validateDuration","validateFpsLimit","validateLoop","validateRepeat","num","timeStart","lastTick","checkAnimation","pauseResume","SyntaxError","checkAnimationShouldBeStopped","stop","style","styleAction","fixColors","getPropertyValue","error","propertyName","value_1","String","tween","percentComplete","properties","easing","tweenAction","requireForcefeeding","info","document","body","fakeAnimation","singleResult","count","_a","activeEasing","validateEasing","expandProperties","tween_2","easing_1","startValue","start","result_1","round","isClient","isMobile","navigator","userAgent","isAndroid","isGingerbread","isChrome","chrome","isFirefox","prefixElement","createElement","windowScrollAnchor","pageYOffset","scrollAnchor","documentElement","parentNode","scrollPropertyLeft","scrollPropertyTop","isTicking","cache","camelCase","fixed","$","letter","toUpperCase","ColorNames","makeRGBA","ignore","r","g","b","parseInt","rxColor6","rxColor3","rxColorName","rxRGB","rxSpaces","str","$0","$1","$2","colorValues","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","name_2","color","floor","computePropertyValue","data","Data","computedStyle","getComputedStyle","computedValue","toggleDisplay","augmentDimension","topLeft","position","getBoundingClientRect","skipCache","propertyValue","NoCacheNormalizations","has","getNormalization","debug","Units","getUnit","units","unit","j","Easing","Easings","registerEasing","cos","PI","exp","registerBackIn","amount","pow","registerBackOut","registerBackInOut","fixRange","min","A","aA1","aA2","B","C","calcBezier","aT","getSlope","generateBezier","mX1","mY1","mX2","mY2","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","isFinite","mSampleValues","Float32Array","newtonRaphsonIterate","aX","aGuessT","currentSlope","currentX","calcSampleValues","binarySubdivide","aA","aB","currentT","abs","getTForX","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","_precomputed","precompute","f","getControlPoints","x","y","easeIn","easeOut","easeInOut","easeOutBounce","easeInBounce","pi2","registerElasticIn","amplitude","period","sin","asin","registerElasticOut","registerElasticInOut","s","springAccelerationForState","state","tension","friction","v","springEvaluateStateWithDerivative","initialState","dt","derivative","dx","dv","springIntegrateState","a","c","d","dxdt","dvdt","generateSpringRK4","initState","path","time_lapsed","tolerance","DT","have_duration","last_state","generateStep","steps","MaxType","Normalizations","Set","constructors","registerNormalization","index","hasNormalization","types","getAttribute","setAttribute","base","rxSubtype","rxElement","getOwnPropertyNames","globals","subtype","exec","createElementNS","toLowerCase","attribute","e","getDimension","getBBox","wantInner","isBorderBox","sides","fields","augment","inlineRx","listItemRx","tableRowRx","tableRx","tableRowGroupRx","display","nodeName","clientWidth","scrollWidth","clientHeight","scrollHeight","scroll","direction","client","scroll_1","HTMLElement","getSetPrefixed","unprefixed","getSetStyle","rxVendors","rxUnit","getSetTween","callComplete","complete","setTimeout","isLoop","loop","isRepeat","repeat","repeatAgain","lastFinishList","ellapsedTime","_completed","_total","resolver","dequeue","freeAnimationCall","newData","queueList","lastAnimationList","_cache","_begin","_complete","_delay","_duration","_easing","_fpsLimit","_loop","_minFrameTime","_promise","_promiseRejectEmpty","_queue","_repeat","_speed","_sync","mobileHA","defineProperties","reset","enumerable","get","set","fpsLimit","minFrameTime","promise","validatePromise","promiseRejectEmpty","validatePromiseRejectEmpty","speed","validateSpeed","sync","validateSync","mock","patch","global","VelocityFn","animate","prev","last","_prev","skip","next","elementsIndex","elementsSize","opts","inlineValues","computedValues","height","marginTop","marginBottom","paddingTop","paddingBottom","isInline","overflow","promiseData","propertiesMap","opacity","this","animateParentHeight","totalDuration","totalHeightDelta","propertiesToSum","RegisterEffect","effectName","redirectOptions","finalElement","defaultDuration","callIndex","calls","durationPercentage","shareDuration","propertyMap","redirectDuration","callOptions","match","visibility","injectFinalCallbacks_1","resetProperty","resetValue","resetOptions","RunSequence","originalSequence","sequence","currentCall","currentCallOptions","o","nextCallOptions","timing","sequenceQueue","callbackOriginal_1","nextCallElements","callProgress","timeCurrent","tweenValue","progress","firstProgress","firstComplete","asyncCallbacks","_nextProgress","_nextComplete","FRAME_TIME","performance","perf","nowOffset_1","navigationStart","rAFProxy","rAFShim","requestAnimationFrame","ticker","hidden","addEventListener","updateTicker","event","tick","ticking","timestamp","deltaTime","defaultSpeed","defaultEasing","lastProgress","lastComplete","flags","queue_1","_ready","delta","millisecondsEllapsed","tween_3","JSON","stringify","rxHex","commands","Map","elementArrayIndex","getUnitType","unitless","valueData","tween_4","arr1","arr2","explodeTween","isForcefeed","runAgain","arrayStart","arrayEnd","indexStart","indexEnd","inCalc","inRGB","inRGBA","isStringValue","charStart","charEnd","tempStart","tempEnd","dotStart","dotEnd","unitStart","unitEnd","startNumbers_1","count_1","index_1","pop","tween_5","parseDuration","def","noError","parsed","apply","validateProgress","version","__args","_arguments","args0","syntacticSugar","p","names","argumentIndex","optionsMap","rejecter","assign","bind","isAction","Promise","_resolve","_reject","_then","catch","finally","optionsBegin","optionsComplete","optionsProgress","optionsSync","offset","rootAnimation","lastAnimation","IE","documentMode","div","innerHTML","getElementsByTagName","jQuery","Zepto","NodeList","HTMLCollection"],"mappings":"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","file":"velocity.js","sourceRoot":"src/","sourcesContent":["/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Constants and defaults. These values should never change without a MINOR\r\n * version bump.\r\n */\r\n\r\n//[\"completeCall\", \"CSS\", \"State\", \"getEasing\", \"Easings\", \"data\", \"debug\", \"defaults\", \"hook\", \"init\", \"mock\", \"pauseAll\", \"queue\", \"dequeue\", \"freeAnimationCall\", \"Redirects\", \"RegisterEffect\", \"resumeAll\", \"RunSequence\", \"lastTick\", \"tick\", \"timestamp\", \"expandTween\", \"version\"]\r\nconst PUBLIC_MEMBERS = [\"version\", \"RegisterEffect\", \"style\", \"patch\", \"timestamp\"];\r\n/**\r\n * Without this it will only un-prefix properties that have a valid \"normal\"\r\n * version.\r\n */\r\nconst ALL_VENDOR_PREFIXES = true;\r\n\r\nconst DURATION_FAST = 200;\r\nconst DURATION_NORMAL = 400;\r\nconst DURATION_SLOW = 600;\r\n\r\nconst FUZZY_MS_PER_SECOND = 980;\r\n\r\nconst DEFAULT_CACHE = true;\r\nconst DEFAULT_DELAY = 0;\r\nconst DEFAULT_DURATION = DURATION_NORMAL;\r\nconst DEFAULT_EASING = \"swing\";\r\nconst DEFAULT_FPSLIMIT = 60;\r\nconst DEFAULT_LOOP = 0;\r\nconst DEFAULT_PROMISE = true;\r\nconst DEFAULT_PROMISE_REJECT_EMPTY = true;\r\nconst DEFAULT_QUEUE = \"\";\r\nconst DEFAULT_REPEAT = 0;\r\nconst DEFAULT_SPEED = 1;\r\nconst DEFAULT_SYNC = true;\r\nconst TWEEN_NUMBER_REGEX = /[\\d\\.-]/;\r\n\r\nconst CLASSNAME = \"velocity-animating\";\r\n\r\nconst Duration = {\r\n\t\"fast\": DURATION_FAST,\r\n\t\"normal\": DURATION_NORMAL,\r\n\t\"slow\": DURATION_SLOW,\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Runtime type checking methods.\r\n */\r\n\r\nfunction isBoolean(variable): variable is boolean {\r\n\treturn variable === true || variable === false;\r\n}\r\n\r\nfunction isNumber(variable): variable is number {\r\n\treturn typeof variable === \"number\";\r\n}\r\n\r\n/**\r\n * Faster way to parse a string/number as a number https://jsperf.com/number-vs-parseint-vs-plus/3\r\n * @param variable The given string or number\r\n * @returns {variable is number} Returns boolean true if it is a number, false otherwise\r\n */\r\nfunction isNumberWhenParsed(variable: string | number): variable is number {\r\n\treturn !isNaN(Number(variable));\r\n}\r\n\r\nfunction isString(variable): variable is string {\r\n\treturn typeof variable === \"string\";\r\n}\r\n\r\nfunction isFunction(variable): variable is Function {\r\n\treturn Object.prototype.toString.call(variable) === \"[object Function]\";\r\n}\r\n\r\nfunction isNode(variable): variable is HTMLorSVGElement {\r\n\treturn !!(variable && variable.nodeType);\r\n}\r\n\r\nfunction isVelocityResult(variable): variable is VelocityResult {\r\n\treturn variable && isNumber(variable.length) && isFunction((variable as VelocityResult).velocity);\r\n}\r\n\r\nfunction propertyIsEnumerable(object: Object, property: string): boolean {\r\n\treturn Object.prototype.propertyIsEnumerable.call(object, property);\r\n}\r\n\r\n/* Determine if variable is an array-like wrapped jQuery, Zepto or similar element, or even a NodeList etc. */\r\n\r\n/* NOTE: HTMLFormElements also have a length. */\r\nfunction isWrapped(variable): variable is HTMLorSVGElement[] {\r\n\treturn variable\r\n\t\t&& variable !== window\r\n\t\t&& isNumber(variable.length)\r\n\t\t&& !isString(variable)\r\n\t\t&& !isFunction(variable)\r\n\t\t&& !isNode(variable)\r\n\t\t&& (variable.length === 0 || isNode(variable[0]));\r\n}\r\n\r\nfunction isSVG(variable): variable is SVGElement {\r\n\treturn SVGElement && variable instanceof SVGElement;\r\n}\r\n\r\nfunction isPlainObject(variable): variable is {} {\r\n\tif (!variable || typeof variable !== \"object\" || variable.nodeType || Object.prototype.toString.call(variable) !== \"[object Object]\") {\r\n\t\treturn false;\r\n\t}\r\n\tlet proto = Object.getPrototypeOf(variable) as Object;\r\n\r\n\treturn !proto || (proto.hasOwnProperty(\"constructor\") && proto.constructor === Object);\r\n}\r\n\r\nfunction isEmptyObject(variable): variable is {} {\r\n\tfor (let name in variable) {\r\n\t\tif (variable.hasOwnProperty(name)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\n/**\r\n * The defineProperty() function provides a\r\n * shortcut to defining a property that cannot be accidentally iterated across.\r\n */\r\nfunction defineProperty(proto: any, name: string, value: Function | any) {\r\n\tif (proto) {\r\n\t\tObject.defineProperty(proto, name, {\r\n\t\t\tconfigurable: true,\r\n\t\t\twritable: true,\r\n\t\t\tvalue: value\r\n\t\t});\r\n\t}\r\n}\r\n\r\n/**\r\n * Perform a deep copy of an object - also copies children so they're not\r\n * going to be affected by changing original.\r\n */\r\nfunction _deepCopyObject(target: T, ...sources: U[]): T & U {\r\n\tif (target == null) { // TypeError if undefined or null\r\n\t\tthrow new TypeError(\"Cannot convert undefined or null to object\");\r\n\t}\r\n\tconst to = Object(target),\r\n\t\thasOwnProperty = Object.prototype.hasOwnProperty;\r\n\tlet source: any;\r\n\r\n\twhile ((source = sources.shift())) {\r\n\t\tif (source != null) {\r\n\t\t\tfor (const key in source) {\r\n\t\t\t\tif (hasOwnProperty.call(source, key)) {\r\n\t\t\t\t\tconst value = source[key];\r\n\r\n\t\t\t\t\tif (Array.isArray(value)) {\r\n\t\t\t\t\t\t_deepCopyObject(to[key] = [], value);\r\n\t\t\t\t\t} else if (isPlainObject(value)) {\r\n\t\t\t\t\t\t_deepCopyObject(to[key] = {}, value);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tto[key] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn to;\r\n}\r\n\r\n/**\r\n * Shim to get the current milliseconds - on anything except old IE it'll use\r\n * Date.now() and save creating an object. If that doesn't exist then it'll\r\n * create one that gets GC.\r\n */\r\nconst _now = Date.now ? Date.now : function() {\r\n\treturn (new Date()).getTime();\r\n};\r\n\r\n/**\r\n * Check whether a value belongs to an array\r\n * https://jsperf.com/includes-vs-indexof-vs-while-loop/6\r\n * @param array The given array\r\n * @param value The given element to check if it is part of the array\r\n * @returns {boolean} True if it exists, false otherwise\r\n */\r\nfunction _inArray(array: T[], value: T): boolean {\r\n\tlet i = 0;\r\n\r\n\twhile (i < array.length) {\r\n\t\tif (array[i++] === value) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n}\r\n\r\n/**\r\n * Convert an element or array-like element list into an array if needed.\r\n */\r\nfunction sanitizeElements(elements: HTMLorSVGElement | HTMLorSVGElement[]): HTMLorSVGElement[] {\r\n\tif (isNode(elements)) {\r\n\t\treturn [elements];\r\n\t}\r\n\treturn elements as HTMLorSVGElement[];\r\n}\r\n\r\n/**\r\n * When there are multiple locations for a value pass them all in, then get the\r\n * first value that is valid.\r\n */\r\nfunction getValue(...args: T[]): T;\r\nfunction getValue(args: any): T {\r\n\tfor (let i = 0, _args = arguments; i < _args.length; i++) {\r\n\t\tconst _arg = _args[i];\r\n\r\n\t\tif (_arg !== undefined && _arg === _arg) {\r\n\t\t\treturn _arg;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Add a single className to an Element.\r\n */\r\nfunction addClass(element: HTMLorSVGElement, className: string): void {\r\n\tif (element instanceof Element) {\r\n\t\tif (element.classList) {\r\n\t\t\telement.classList.add(className);\r\n\t\t} else {\r\n\t\t\tremoveClass(element, className);\r\n\t\t\telement.className += (element.className.length ? \" \" : \"\") + className;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Remove a single className from an Element.\r\n */\r\nfunction removeClass(element: HTMLorSVGElement, className: string): void {\r\n\tif (element instanceof Element) {\r\n\t\tif (element.classList) {\r\n\t\t\telement.classList.remove(className);\r\n\t\t} else {\r\n\t\t\t// TODO: Need some jsperf tests on performance - can we get rid of the regex and maybe use split / array manipulation?\r\n\t\t\telement.className = element.className.toString().replace(new RegExp(\"(^|\\\\s)\" + className + \"(\\\\s|$)\", \"gi\"), \" \");\r\n\t\t}\r\n\t}\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Actions that can be performed by passing a string instead of a propertiesMap.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/**\r\n\t * Actions cannot be replaced if they are internal (hasOwnProperty is false\r\n\t * but they still exist). Otherwise they can be replaced by users.\r\n\t * \r\n\t * All external method calls should be using actions rather than sub-calls\r\n\t * of Velocity itself.\r\n\t */\r\n\texport const Actions: {[name: string]: VelocityActionFn} = Object.create(null);\r\n\r\n\t/**\r\n\t * Used to register an action. This should never be called by users\r\n\t * directly, instead it should be called via an action:
\r\n\t * Velocity(\"registerAction\", \"name\", VelocityActionFn);\r\n\t * \r\n\t * @private\r\n\t */\r\n\texport function registerAction(args?: [string, VelocityActionFn], internal?: boolean) {\r\n\t\tconst name: string = args[0],\r\n\t\t\tcallback = args[1];\r\n\r\n\t\tif (!isString(name)) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to set 'registerAction' name to an invalid value:\", name);\r\n\t\t} else if (!isFunction(callback)) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to set 'registerAction' callback to an invalid value:\", name, callback);\r\n\t\t} else if (Actions[name] && !propertyIsEnumerable(Actions, name)) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to override internal 'registerAction' callback\", name);\r\n\t\t} else if (internal === true) {\r\n\t\t\tdefineProperty(Actions, name, callback);\r\n\t\t} else {\r\n\t\t\tActions[name] = callback;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterAction([\"registerAction\", registerAction as any], true);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Default action.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * When the stop action is triggered, the elements' currently active call is immediately stopped. The active call might have\r\n\t * been applied to multiple elements, in which case all of the call's elements will be stopped. When an element\r\n\t * is stopped, the next item in its animation queue is immediately triggered.\r\n\t * An additional argument may be passed in to clear an element's remaining queued calls. Either true (which defaults to the \"fx\" queue)\r\n\t * or a custom queue string can be passed in.\r\n\t * Note: The stop command runs prior to Velocity's Queueing phase since its behavior is intended to take effect *immediately*,\r\n\t * regardless of the element's current queue state.\r\n\t * \r\n\t * @param {HTMLorSVGElement[]} elements The collection of HTML or SVG elements\r\n\t * @param {StrictVelocityOptions} The strict Velocity options\r\n\t * @param {Promise} An optional promise if the user uses promises\r\n\t * @param {(value?: (HTMLorSVGElement[] | VelocityResult)) => void} resolver The resolve method of the promise\r\n\t */\r\n\tfunction defaultAction(args?: any[], elements?: HTMLorSVGElement[] | VelocityResult, promiseHandler?: VelocityPromise, action?: string): void {\r\n\t\t// TODO: default is wrong, should be runSequence based, and needs all arguments\r\n\t\tif (isString(action) && VelocityStatic.Redirects[action]) {\r\n\t\t\tconst options = isPlainObject(args[0]) ? args[0] as VelocityOptions : {},\r\n\t\t\t\topts = {...options},\r\n\t\t\t\tdurationOriginal = parseFloat(options.duration as any),\r\n\t\t\t\tdelayOriginal = parseFloat(options.delay as any) || 0;\r\n\r\n\t\t\t/* If the backwards option was passed in, reverse the element set so that elements animate from the last to the first. */\r\n\t\t\tif (opts.backwards === true) {\r\n\t\t\t\telements = elements.reverse();\r\n\t\t\t}\r\n\r\n\t\t\t/* Individually trigger the redirect for each element in the set to prevent users from having to handle iteration logic in their redirect. */\r\n\t\t\telements.forEach(function(element, elementIndex) {\r\n\r\n\t\t\t\t/* If the stagger option was passed in, successively delay each element by the stagger value (in ms). Retain the original delay value. */\r\n\t\t\t\tif (parseFloat(opts.stagger as string)) {\r\n\t\t\t\t\topts.delay = delayOriginal + (parseFloat(opts.stagger as string) * elementIndex);\r\n\t\t\t\t} else if (isFunction(opts.stagger)) {\r\n\t\t\t\t\topts.delay = delayOriginal + opts.stagger.call(element, elementIndex, elements.length);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* If the drag option was passed in, successively increase/decrease (depending on the presense of opts.backwards)\r\n the duration of each element's animation, using floors to prevent producing very short durations. */\r\n\t\t\t\tif (opts.drag) {\r\n\t\t\t\t\t/* Default the duration of UI pack effects (callouts and transitions) to 1000ms instead of the usual default duration of 400ms. */\r\n\t\t\t\t\topts.duration = durationOriginal || (/^(callout|transition)/.test(action) ? 1000 : DEFAULT_DURATION);\r\n\r\n\t\t\t\t\t/* For each element, take the greater duration of: A) animation completion percentage relative to the original duration,\r\n B) 75% of the original duration, or C) a 200ms fallback (in case duration is already set to a low value).\r\n The end result is a baseline of 75% of the redirect's duration that increases/decreases as the end of the element set is approached. */\r\n\t\t\t\t\topts.duration = Math.max(opts.duration * (opts.backwards ? 1 - elementIndex / elements.length : (elementIndex + 1) / elements.length), opts.duration * 0.75, 200);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Pass in the call's opts object so that the redirect can optionally extend it. It defaults to an empty object instead of null to\r\n reduce the opts checking logic required inside the redirect. */\r\n\t\t\t\tVelocityStatic.Redirects[action].call(element, element, opts, elementIndex, elements.length, elements, promiseHandler && promiseHandler._resolver);\r\n\t\t\t});\r\n\r\n\t\t\t/* Since the animation logic resides within the redirect's own code, abort the remainder of this call.\r\n (The performance overhead up to this point is virtually non-existant.) */\r\n\t\t\t/* Note: The jQuery call chain is kept intact by returning the complete element set. */\r\n\t\t} else {\r\n\t\t\tconst abortError = \"Velocity: First argument (\" + action + \") was not a property map, a known action, or a registered redirect. Aborting.\";\r\n\r\n\t\t\tif (promiseHandler) {\r\n\t\t\t\tpromiseHandler._rejecter(new Error(abortError));\r\n\t\t\t} else if (window.console) {\r\n\t\t\t\tconsole.log(abortError);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tregisterAction([\"default\", defaultAction], true);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Finish all animation.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Check if an animation should be finished, and if so we set the tweens to\r\n\t * the final value for it, then call complete.\r\n\t */\r\n\tfunction checkAnimationShouldBeFinished(animation: AnimationCall, queueName: false | string, defaultQueue: false | string) {\r\n\t\tvalidateTweens(animation);\r\n\t\tif (queueName === undefined || queueName === getValue(animation.queue, animation.options.queue, defaultQueue)) {\r\n\t\t\tif (!(animation._flags & AnimationFlags.STARTED)) {\r\n\t\t\t\t// Copied from tick.ts - ensure that the animation is completely\r\n\t\t\t\t// valid and run begin() before complete().\r\n\t\t\t\tconst options = animation.options;\r\n\r\n\t\t\t\t// The begin callback is fired once per call, not once per\r\n\t\t\t\t// element, and is passed the full raw DOM element set as both\r\n\t\t\t\t// its context and its first argument.\r\n\t\t\t\tif (options._started++ === 0) {\r\n\t\t\t\t\toptions._first = animation;\r\n\t\t\t\t\tif (options.begin) {\r\n\t\t\t\t\t\t// Pass to an external fn with a try/catch block for optimisation\r\n\t\t\t\t\t\tcallBegin(animation);\r\n\t\t\t\t\t\t// Only called once, even if reversed or repeated\r\n\t\t\t\t\t\toptions.begin = undefined;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tanimation._flags |= AnimationFlags.STARTED;\r\n\t\t\t}\r\n\t\t\tfor (const property in animation.tweens) {\r\n\t\t\t\tconst tween = animation.tweens[property],\r\n\t\t\t\t\tpattern = tween.pattern;\r\n\t\t\t\tlet currentValue = \"\",\r\n\t\t\t\t\ti = 0;\r\n\r\n\t\t\t\tif (pattern) {\r\n\t\t\t\t\tfor (; i < pattern.length; i++) {\r\n\t\t\t\t\t\tconst endValue = tween.end[i];\r\n\r\n\t\t\t\t\t\tcurrentValue += endValue == null ? pattern[i] : endValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tCSS.setPropertyValue(animation.element, property, currentValue, tween.fn);\r\n\t\t\t}\r\n\t\t\tcompleteCall(animation);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * When the finish action is triggered, the elements' currently active call is\r\n\t * immediately finished. When an element is finished, the next item in its\r\n\t * animation queue is immediately triggered. If passed via a chained call\r\n\t * then this will only target the animations in that call, and not the\r\n\t * elements linked to it.\r\n\t * \r\n\t * A queue name may be passed in to specify that only animations on the\r\n\t * named queue are finished. The default queue is named \"\". In addition the\r\n\t * value of `false` is allowed for the queue name.\r\n\t * \r\n\t * An final argument may be passed in to clear an element's remaining queued\r\n\t * calls. This may only be the value `true`.\r\n\t */\r\n\tfunction finish(args: any[], elements: VelocityResult, promiseHandler?: VelocityPromise): void {\r\n\t\tconst queueName: string | false = validateQueue(args[0], true),\r\n\t\t\tdefaultQueue: false | string = defaults.queue,\r\n\t\t\tfinishAll = args[queueName === undefined ? 0 : 1] === true;\r\n\r\n\t\tif (isVelocityResult(elements) && elements.velocity.animations) {\r\n\t\t\tfor (let i = 0, animations = elements.velocity.animations; i < animations.length; i++) {\r\n\t\t\t\tcheckAnimationShouldBeFinished(animations[i], queueName, defaultQueue);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tlet activeCall = State.first,\r\n\t\t\t\tnextCall: AnimationCall;\r\n\r\n\t\t\twhile ((activeCall = State.firstNew)) {\r\n\t\t\t\tvalidateTweens(activeCall);\r\n\t\t\t}\r\n\t\t\tfor (activeCall = State.first; activeCall && (finishAll || activeCall !== State.firstNew); activeCall = nextCall || State.firstNew) {\r\n\t\t\t\tnextCall = activeCall._next;\r\n\t\t\t\tif (!elements || _inArray(elements, activeCall.element)) {\r\n\t\t\t\t\tcheckAnimationShouldBeFinished(activeCall, queueName, defaultQueue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (promiseHandler) {\r\n\t\t\tif (isVelocityResult(elements) && elements.velocity.animations && elements.then) {\r\n\t\t\t\telements.then(promiseHandler._resolver);\r\n\t\t\t} else {\r\n\t\t\t\tpromiseHandler._resolver(elements);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tregisterAction([\"finish\", finish], true);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Get or set a value from one or more running animations.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/**\r\n\t * Used to map getters for the various AnimationFlags.\r\n\t */\r\n\tconst animationFlags: {[key: string]: number} = {\r\n\t\t\"isExpanded\": AnimationFlags.EXPANDED,\r\n\t\t\"isReady\": AnimationFlags.READY,\r\n\t\t\"isStarted\": AnimationFlags.STARTED,\r\n\t\t\"isStopped\": AnimationFlags.STOPPED,\r\n\t\t\"isPaused\": AnimationFlags.PAUSED,\r\n\t\t\"isSync\": AnimationFlags.SYNC,\r\n\t\t\"isReverse\": AnimationFlags.REVERSE\r\n\t};\r\n\r\n\t/**\r\n\t * Get or set an option or running AnimationCall data value. If there is no\r\n\t * value passed then it will get, otherwise we will set.\r\n\t * \r\n\t * NOTE: When using \"get\" this will not touch the Promise as it is never\r\n\t * returned to the user.\r\n\t */\r\n\tfunction option(args?: any[], elements?: VelocityResult, promiseHandler?: VelocityPromise, action?: string): any {\r\n\t\tconst key = args[0],\r\n\t\t\tqueue = action.indexOf(\".\") >= 0 ? action.replace(/^.*\\./, \"\") : undefined,\r\n\t\t\tqueueName = queue === \"false\" ? false : validateQueue(queue, true);\r\n\t\tlet animations: AnimationCall[],\r\n\t\t\tvalue = args[1];\r\n\r\n\t\tif (!key) {\r\n\t\t\tconsole.warn(\"VelocityJS: Cannot access a non-existant key!\");\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\t// If we're chaining the return value from Velocity then we are only\r\n\t\t// interested in the values related to that call\r\n\t\tif (isVelocityResult(elements) && elements.velocity.animations) {\r\n\t\t\tanimations = elements.velocity.animations;\r\n\t\t} else {\r\n\t\t\tanimations = [];\r\n\r\n\t\t\tfor (let activeCall = State.first; activeCall; activeCall = activeCall._next) {\r\n\t\t\t\tif (elements.indexOf(activeCall.element) >= 0 && getValue(activeCall.queue, activeCall.options.queue) === queueName) {\r\n\t\t\t\t\tanimations.push(activeCall);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If we're dealing with multiple elements that are pointing at a\r\n\t\t\t// single running animation, then instead treat them as a single\r\n\t\t\t// animation.\r\n\t\t\tif (elements.length > 1 && animations.length > 1) {\r\n\t\t\t\tlet i = 1,\r\n\t\t\t\t\toptions = animations[0].options;\r\n\r\n\t\t\t\twhile (i < animations.length) {\r\n\t\t\t\t\tif (animations[i++].options !== options) {\r\n\t\t\t\t\t\toptions = null;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// TODO: this needs to check that they're actually a sync:true animation to merge the results, otherwise the individual values may be different\r\n\t\t\t\tif (options) {\r\n\t\t\t\t\tanimations = [animations[0]];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// GET\r\n\t\tif (value === undefined) {\r\n\t\t\tconst result = [],\r\n\t\t\t\tflag = animationFlags[key];\r\n\r\n\t\t\tfor (let i = 0; i < animations.length; i++) {\r\n\t\t\t\tif (flag === undefined) {\r\n\t\t\t\t\t// A normal key to get.\r\n\t\t\t\t\tresult.push(getValue(animations[i][key], animations[i].options[key]));\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// A flag that we're checking against.\r\n\t\t\t\t\tresult.push((animations[i]._flags & flag) === 0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (elements.length === 1 && animations.length === 1) {\r\n\t\t\t\t// If only a single animation is found and we're only targetting a\r\n\t\t\t\t// single element, then return the value directly\r\n\t\t\t\treturn result[0];\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\t// SET\r\n\t\tlet isPercentComplete: boolean;\r\n\r\n\t\tswitch (key) {\r\n\t\t\tcase \"cache\":\r\n\t\t\t\tvalue = validateCache(value);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"begin\":\r\n\t\t\t\tvalue = validateBegin(value);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"complete\":\r\n\t\t\t\tvalue = validateComplete(value);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"delay\":\r\n\t\t\t\tvalue = validateDelay(value);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"duration\":\r\n\t\t\t\tvalue = validateDuration(value);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"fpsLimit\":\r\n\t\t\t\tvalue = validateFpsLimit(value);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"loop\":\r\n\t\t\t\tvalue = validateLoop(value);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"percentComplete\":\r\n\t\t\t\tisPercentComplete = true;\r\n\t\t\t\tvalue = parseFloat(value);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"repeat\":\r\n\t\t\tcase \"repeatAgain\":\r\n\t\t\t\tvalue = validateRepeat(value);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tif (key[0] !== \"_\") {\r\n\t\t\t\t\tconst num = parseFloat(value);\r\n\r\n\t\t\t\t\tif (value == num) {\r\n\t\t\t\t\t\tvalue = num;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t// deliberate fallthrough\r\n\t\t\tcase \"queue\":\r\n\t\t\tcase \"promise\":\r\n\t\t\tcase \"promiseRejectEmpty\":\r\n\t\t\tcase \"easing\":\r\n\t\t\tcase \"started\":\r\n\t\t\t\tconsole.warn(\"VelocityJS: Trying to set a read-only key:\", key);\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t\tif (value === undefined || value !== value) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to set an invalid value:\", key, \"=\", value, \"(\" + args[1] + \")\");\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tfor (let i = 0; i < animations.length; i++) {\r\n\t\t\tconst animation = animations[i];\r\n\r\n\t\t\tif (isPercentComplete) {\r\n\t\t\t\tanimation.timeStart = lastTick - (getValue(animation.duration, animation.options.duration, defaults.duration) * value);\r\n\t\t\t} else {\r\n\t\t\t\tanimation[key] = value;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (promiseHandler) {\r\n\t\t\tif (isVelocityResult(elements) && elements.velocity.animations && elements.then) {\r\n\t\t\t\telements.then(promiseHandler._resolver);\r\n\t\t\t} else {\r\n\t\t\t\tpromiseHandler._resolver(elements);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tregisterAction([\"option\", option], true);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Pause and resume animation.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Check if an animation should be paused / resumed.\r\n\t */\r\n\tfunction checkAnimation(animation: AnimationCall, queueName: false | string, defaultQueue: false | string, isPaused: boolean) {\r\n\t\tif (queueName === undefined || queueName === getValue(animation.queue, animation.options.queue, defaultQueue)) {\r\n\t\t\tif (isPaused) {\r\n\t\t\t\tanimation._flags |= AnimationFlags.PAUSED;\r\n\t\t\t} else {\r\n\t\t\t\tanimation._flags &= ~AnimationFlags.PAUSED;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Pause and Resume are call-wide (not on a per element basis). Thus, calling pause or resume on a\r\n\t * single element will cause any calls that contain tweens for that element to be paused/resumed\r\n\t * as well.\r\n\t */\r\n\tfunction pauseResume(args?: any[], elements?: VelocityResult, promiseHandler?: VelocityPromise, action?: string) {\r\n\t\tconst isPaused = action.indexOf(\"pause\") === 0,\r\n\t\t\tqueue = action.indexOf(\".\") >= 0 ? action.replace(/^.*\\./, \"\") : undefined,\r\n\t\t\tqueueName = queue === \"false\" ? false : validateQueue(args[0]),\r\n\t\t\tdefaultQueue = defaults.queue;\r\n\r\n\t\tif (isVelocityResult(elements) && elements.velocity.animations) {\r\n\t\t\tfor (let i = 0, animations = elements.velocity.animations; i < animations.length; i++) {\r\n\t\t\t\tcheckAnimation(animations[i], queueName, defaultQueue, isPaused);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tlet activeCall: AnimationCall = State.first;\r\n\r\n\t\t\twhile (activeCall) {\r\n\t\t\t\tif (!elements || _inArray(elements, activeCall.element)) {\r\n\t\t\t\t\tcheckAnimation(activeCall, queueName, defaultQueue, isPaused);\r\n\t\t\t\t}\r\n\t\t\t\tactiveCall = activeCall._next;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (promiseHandler) {\r\n\t\t\tif (isVelocityResult(elements) && elements.velocity.animations && elements.then) {\r\n\t\t\t\telements.then(promiseHandler._resolver);\r\n\t\t\t} else {\r\n\t\t\t\tpromiseHandler._resolver(elements);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tregisterAction([\"pause\", pauseResume], true);\r\n\tregisterAction([\"resume\", pauseResume], true);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Actions that can be performed by passing a string instead of a propertiesMap.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\tregisterAction([\"reverse\", function(args?: any[], elements?: HTMLorSVGElement[] | VelocityResult, promiseHandler?: VelocityPromise, action?: string) {\r\n\t\t// TODO: Code needs to split out before here - but this is needed to prevent it being overridden\r\n\t\tthrow new SyntaxError(\"VelocityJS: The 'reverse' action is private.\");\r\n\t}], true)\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Stop animation.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Check if an animation should be stopped, and if so then set the STOPPED\r\n\t * flag on it, then call complete.\r\n\t */\r\n\tfunction checkAnimationShouldBeStopped(animation: AnimationCall, queueName: false | string, defaultQueue: false | string) {\r\n\t\tvalidateTweens(animation);\r\n\t\tif (queueName === undefined || queueName === getValue(animation.queue, animation.options.queue, defaultQueue)) {\r\n\t\t\tanimation._flags |= AnimationFlags.STOPPED;\r\n\t\t\tcompleteCall(animation);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * When the stop action is triggered, the elements' currently active call is\r\n\t * immediately stopped. When an element is stopped, the next item in its\r\n\t * animation queue is immediately triggered. If passed via a chained call\r\n\t * then this will only target the animations in that call, and not the\r\n\t * elements linked to it.\r\n\t * \r\n\t * A queue name may be passed in to specify that only animations on the\r\n\t * named queue are stopped. The default queue is named \"\". In addition the\r\n\t * value of `false` is allowed for the queue name.\r\n\t * \r\n\t * An final argument may be passed in to clear an element's remaining queued\r\n\t * calls. This may only be the value `true`.\r\n\t * \r\n\t * Note: The stop command runs prior to Velocity's Queueing phase since its\r\n\t * behavior is intended to take effect *immediately*, regardless of the\r\n\t * element's current queue state.\r\n\t */\r\n\tfunction stop(args: any[], elements: VelocityResult, promiseHandler?: VelocityPromise, action?: string): void {\r\n\t\tconst queueName: string | false = validateQueue(args[0], true),\r\n\t\t\tdefaultQueue: false | string = defaults.queue,\r\n\t\t\tfinishAll = args[queueName === undefined ? 0 : 1] === true;\r\n\r\n\t\tif (isVelocityResult(elements) && elements.velocity.animations) {\r\n\t\t\tfor (let i = 0, animations = elements.velocity.animations; i < animations.length; i++) {\r\n\t\t\t\tcheckAnimationShouldBeStopped(animations[i], queueName, defaultQueue);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tlet activeCall = State.first,\r\n\t\t\t\tnextCall: AnimationCall;\r\n\r\n\t\t\twhile ((activeCall = State.firstNew)) {\r\n\t\t\t\tvalidateTweens(activeCall);\r\n\t\t\t}\r\n\t\t\tfor (activeCall = State.first; activeCall && (finishAll || activeCall !== State.firstNew); activeCall = nextCall || State.firstNew) {\r\n\t\t\t\tnextCall = activeCall._next;\r\n\t\t\t\tif (!elements || _inArray(elements, activeCall.element)) {\r\n\t\t\t\t\tcheckAnimationShouldBeStopped(activeCall, queueName, defaultQueue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (promiseHandler) {\r\n\t\t\tif (isVelocityResult(elements) && elements.velocity.animations && elements.then) {\r\n\t\t\t\telements.then(promiseHandler._resolver);\r\n\t\t\t} else {\r\n\t\t\t\tpromiseHandler._resolver(elements);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tregisterAction([\"stop\", stop], true);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Get or set a property from one or more elements.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Expose a style shortcut - can't be used with chaining, but might be of\r\n\t * use to people.\r\n\t */\r\n\texport function style(elements: VelocityResult, property: {[property: string]: string}): VelocityResult;\r\n\texport function style(elements: VelocityResult, property: string): string | string[];\r\n\texport function style(elements: VelocityResult, property: string, value: string): VelocityResult;\r\n\texport function style(elements: VelocityResult, property: string | {[property: string]: string}, value?: string) {\r\n\t\treturn styleAction([property, value], elements);\r\n\t}\r\n\r\n\t/**\r\n\t * Get or set a style of Nomralised property value on one or more elements.\r\n\t * If there is no value passed then it will get, otherwise we will set.\r\n\t * \r\n\t * NOTE: When using \"get\" this will not touch the Promise as it is never\r\n\t * returned to the user.\r\n\t * \r\n\t * This can fail to set, and will reject the Promise if it does so.\r\n\t * \r\n\t * Velocity(elements, \"style\", \"property\", \"value\") => elements;\r\n\t * Velocity(elements, \"style\", {\"property\": \"value\", ...}) => elements;\r\n\t * Velocity(element, \"style\", \"property\") => \"value\";\r\n\t * Velocity(elements, \"style\", \"property\") => [\"value\", ...];\r\n\t */\r\n\tfunction styleAction(args?: any[], elements?: VelocityResult, promiseHandler?: VelocityPromise, action?: string): any {\r\n\t\tconst property = args[0],\r\n\t\t\tvalue = args[1];\r\n\r\n\t\tif (!property) {\r\n\t\t\tconsole.warn(\"VelocityJS: Cannot access a non-existant property!\");\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\t// GET\r\n\t\tif (value === undefined && !isPlainObject(property)) {\r\n\t\t\t// If only a single animation is found and we're only targetting a\r\n\t\t\t// single element, then return the value directly\r\n\t\t\tif (elements.length === 1) {\r\n\t\t\t\treturn CSS.fixColors(CSS.getPropertyValue(elements[0], property));\r\n\t\t\t}\r\n\t\t\tconst result = [];\r\n\r\n\t\t\tfor (let i = 0; i < elements.length; i++) {\r\n\t\t\t\tresult.push(CSS.fixColors(CSS.getPropertyValue(elements[i], property)));\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\t// SET\r\n\t\tlet error: string;\r\n\r\n\t\tif (isPlainObject(property)) {\r\n\t\t\tfor (const propertyName in property) {\r\n\t\t\t\tfor (let i = 0; i < elements.length; i++) {\r\n\t\t\t\t\tconst value = property[propertyName];\r\n\r\n\t\t\t\t\tif (isString(value) || isNumber(value)) {\r\n\t\t\t\t\t\tCSS.setPropertyValue(elements[i], propertyName, property[propertyName]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\terror = (error ? error + \", \" : \"\") + \"Cannot set a property '\" + propertyName + \"' to an unknown type: \" + (typeof value);\r\n\t\t\t\t\t\tconsole.warn(\"VelocityJS: Cannot set a property '\" + propertyName + \"' to an unknown type:\", value);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (isString(value) || isNumber(value)) {\r\n\t\t\tfor (let i = 0; i < elements.length; i++) {\r\n\t\t\t\tCSS.setPropertyValue(elements[i], property, String(value));\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\terror = \"Cannot set a property '\" + property + \"' to an unknown type: \" + (typeof value);\r\n\t\t\tconsole.warn(\"VelocityJS: Cannot set a property '\" + property + \"' to an unknown type:\", value);\r\n\t\t}\r\n\t\tif (promiseHandler) {\r\n\t\t\tif (error) {\r\n\t\t\t\tpromiseHandler._rejecter(error);\r\n\t\t\t} else if (isVelocityResult(elements) && elements.velocity.animations && elements.then) {\r\n\t\t\t\telements.then(promiseHandler._resolver);\r\n\t\t\t} else {\r\n\t\t\t\tpromiseHandler._resolver(elements);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tregisterAction([\"style\", styleAction], true);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Get or set a property from one or more elements.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Expose a style shortcut - can't be used with chaining, but might be of\r\n\t * use to people.\r\n\t */\r\n\texport function tween(elements: HTMLorSVGElement[], percentComplete: number, properties: VelocityProperties, easing?: VelocityEasingType);\r\n\texport function tween(elements: HTMLorSVGElement[], percentComplete: number, propertyName: string, property: VelocityProperty, easing?: VelocityEasingType);\r\n\texport function tween(elements: HTMLorSVGElement[], percentComplete: number, properties: VelocityProperties | string, property?: VelocityProperty | VelocityEasingType, easing?: VelocityEasingType) {\r\n\t\treturn tweenAction(arguments as any, elements);\r\n\t}\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tfunction tweenAction(args?: any[], elements?: HTMLorSVGElement[], promiseHandler?: VelocityPromise, action?: string): any {\r\n\t\tlet requireForcefeeding: boolean;\r\n\r\n\t\tif (!elements) {\r\n\t\t\tif (!args.length) {\r\n\t\t\t\tconsole.info(\"Velocity(, \\\"tween\\\", percentComplete, property, end | [end, , ], ) => value\\n\"\r\n\t\t\t\t\t+ \"Velocity(, \\\"tween\\\", percentComplete, {property: end | [end, , ], ...}, ) => {property: value, ...}\");\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\telements = [document.body];\r\n\t\t\trequireForcefeeding = true;\r\n\t\t} else if (elements.length !== 1) {\r\n\t\t\t// TODO: Allow more than a single element to return an array of results\r\n\t\t\tthrow new Error(\"VelocityJS: Cannot tween more than one element!\");\r\n\t\t}\r\n\t\tconst percentComplete: number = args[0],\r\n\t\t\tfakeAnimation = {\r\n\t\t\t\telements: elements,\r\n\t\t\t\telement: elements[0],\r\n\t\t\t\tqueue: false,\r\n\t\t\t\toptions: {\r\n\t\t\t\t\tduration: 1000\r\n\t\t\t\t},\r\n\t\t\t\ttweens: null as {[property: string]: VelocityTween}\r\n\t\t\t},\r\n\t\t\tresult: {[property: string]: string} = {};\r\n\t\tlet properties: VelocityProperties = args[1],\r\n\t\t\tsingleResult: boolean,\r\n\t\t\teasing: VelocityEasingType = args[2],\r\n\t\t\tcount = 0;\r\n\r\n\t\tif (isString(args[1])) {\r\n\t\t\tsingleResult = true;\r\n\t\t\tproperties = {\r\n\t\t\t\t[args[1]]: args[2]\r\n\t\t\t};\r\n\t\t\teasing = args[3];\r\n\t\t} else if (Array.isArray(args[1])) {\r\n\t\t\tsingleResult = true;\r\n\t\t\tproperties = {\r\n\t\t\t\t\"tween\": args[1]\r\n\t\t\t} as any;\r\n\t\t\teasing = args[2];\r\n\t\t}\r\n\t\tif (!isNumber(percentComplete) || percentComplete < 0 || percentComplete > 1) {\r\n\t\t\tthrow new Error(\"VelocityJS: Must tween a percentage from 0 to 1!\");\r\n\t\t}\r\n\t\tif (!isPlainObject(properties)) {\r\n\t\t\tthrow new Error(\"VelocityJS: Cannot tween an invalid property!\");\r\n\t\t}\r\n\t\tif (requireForcefeeding) {\r\n\t\t\tfor (const property in properties) {\r\n\t\t\t\tif (properties.hasOwnProperty(property) && (!Array.isArray(properties[property]) || properties[property].length < 2)) {\r\n\t\t\t\t\tthrow new Error(\"VelocityJS: When not supplying an element you must force-feed values: \" + property);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tconst activeEasing = validateEasing(getValue(easing, defaults.easing), 1000);\r\n\r\n\t\texpandProperties(fakeAnimation as AnimationCall, properties);\r\n\t\tfor (const property in fakeAnimation.tweens) {\r\n\t\t\t// For every element, iterate through each property.\r\n\t\t\tconst tween = fakeAnimation.tweens[property],\r\n\t\t\t\teasing = tween.easing || activeEasing,\r\n\t\t\t\tpattern = tween.pattern;\r\n\t\t\tlet currentValue = \"\";\r\n\r\n\t\t\tcount++;\r\n\t\t\tif (pattern) {\r\n\t\t\t\tfor (let i = 0; i < pattern.length; i++) {\r\n\t\t\t\t\tconst startValue = tween.start[i];\r\n\r\n\t\t\t\t\tif (startValue == null) {\r\n\t\t\t\t\t\tcurrentValue += pattern[i];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconst result = easing(percentComplete, startValue as number, tween.end[i] as number, property)\r\n\r\n\t\t\t\t\t\tcurrentValue += pattern[i] === true ? Math.round(result) : result;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tresult[property] = currentValue;\r\n\t\t}\r\n\t\tif (singleResult && count === 1) {\r\n\t\t\tfor (const property in result) {\r\n\t\t\t\tif (result.hasOwnProperty(property)) {\r\n\t\t\t\t\treturn result[property];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tregisterAction([\"tween\", tweenAction], true);\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/**\r\n\t * Container for page-wide Velocity state data.\r\n\t */\r\n\texport namespace State {\r\n\t\texport let\r\n\t\t\t/**\r\n\t\t\t * Detect if this is a NodeJS or web browser\r\n\t\t\t */\r\n\t\t\tisClient = window && window === window.window,\r\n\t\t\t/**\r\n\t\t\t * Detect mobile devices to determine if mobileHA should be turned\r\n\t\t\t * on.\r\n\t\t\t */\r\n\t\t\tisMobile = isClient && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),\r\n\t\t\t/**\r\n\t\t\t * The mobileHA option's behavior changes on older Android devices\r\n\t\t\t * (Gingerbread, versions 2.3.3-2.3.7).\r\n\t\t\t */\r\n\t\t\tisAndroid = isClient && /Android/i.test(navigator.userAgent),\r\n\t\t\t/**\r\n\t\t\t * The mobileHA option's behavior changes on older Android devices\r\n\t\t\t * (Gingerbread, versions 2.3.3-2.3.7).\r\n\t\t\t */\r\n\t\t\tisGingerbread = isClient && /Android 2\\.3\\.[3-7]/i.test(navigator.userAgent),\r\n\t\t\t/**\r\n\t\t\t * Chrome browser\r\n\t\t\t */\r\n\t\t\tisChrome = isClient && (window as any).chrome,\r\n\t\t\t/**\r\n\t\t\t * Firefox browser\r\n\t\t\t */\r\n\t\t\tisFirefox = isClient && /Firefox/i.test(navigator.userAgent),\r\n\t\t\t/**\r\n\t\t\t * Create a cached element for re-use when checking for CSS property\r\n\t\t\t * prefixes.\r\n\t\t\t */\r\n\t\t\tprefixElement = isClient && document.createElement(\"div\"),\r\n\t\t\t/**\r\n\t\t\t * Retrieve the appropriate scroll anchor and property name for the\r\n\t\t\t * browser: https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY\r\n\t\t\t */\r\n\t\t\twindowScrollAnchor = isClient && window.pageYOffset !== undefined,\r\n\t\t\t/**\r\n\t\t\t * Cache the anchor used for animating window scrolling.\r\n\t\t\t */\r\n\t\t\tscrollAnchor = windowScrollAnchor ? window : (!isClient || document.documentElement || document.body.parentNode || document.body),\r\n\t\t\t/**\r\n\t\t\t * Cache the browser-specific property names associated with the\r\n\t\t\t * scroll anchor.\r\n\t\t\t */\r\n\t\t\tscrollPropertyLeft = windowScrollAnchor ? \"pageXOffset\" : \"scrollLeft\",\r\n\t\t\t/**\r\n\t\t\t * Cache the browser-specific property names associated with the\r\n\t\t\t * scroll anchor.\r\n\t\t\t */\r\n\t\t\tscrollPropertyTop = windowScrollAnchor ? \"pageYOffset\" : \"scrollTop\",\r\n\t\t\t/**\r\n\t\t\t * The className we add / remove when animating.\r\n\t\t\t */\r\n\t\t\tclassName = CLASSNAME,\r\n\t\t\t/**\r\n\t\t\t * Keep track of whether our RAF tick is running.\r\n\t\t\t */\r\n\t\t\tisTicking = false,\r\n\t\t\t/**\r\n\t\t\t * Container for every in-progress call to Velocity.\r\n\t\t\t */\r\n\t\t\tfirst: AnimationCall,\r\n\t\t\t/**\r\n\t\t\t * Container for every in-progress call to Velocity.\r\n\t\t\t */\r\n\t\t\tlast: AnimationCall,\r\n\t\t\t/**\r\n\t\t\t * First new animation - to shortcut starting them all up and push\r\n\t\t\t * any css reads to the start of the tick\r\n\t\t\t */\r\n\t\t\tfirstNew: AnimationCall\r\n\t};\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.CSS {\r\n\t/**\r\n\t * Cache every camelCase match to avoid repeating lookups.\r\n\t */\r\n\tconst cache: {[property: string]: string} = Object.create(null);\r\n\r\n\t/**\r\n\t * Camelcase a property name into its JavaScript notation (e.g.\r\n\t * \"background-color\" ==> \"backgroundColor\"). Camelcasing is used to\r\n\t * normalize property names between and across calls.\r\n\t */\r\n\texport function camelCase(property: string): string {\r\n\t\tconst fixed = cache[property];\r\n\r\n\t\tif (fixed) {\r\n\t\t\treturn fixed;\r\n\t\t}\r\n\t\treturn cache[property] = property.replace(/-([a-z])/g, ($: string, letter: string) => letter.toUpperCase());\r\n\t}\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.CSS {\r\n\t/**\r\n\t * This is the list of color names -> rgb values. The object is in here so\r\n\t * that the actual name conversion can be in a separate file and not\r\n\t * included for custom builds.\r\n\t */\r\n\texport const ColorNames: {[name: string]: string} = Object.create(null);\r\n\r\n\t/**\r\n\t * Convert a hex list to an rgba value. Designed to be used in replace.\r\n\t */\r\n\tfunction makeRGBA(ignore: any, r: string, g: string, b: string): string {\r\n\t\treturn \"rgba(\" + parseInt(r, 16) + \",\" + parseInt(g, 16) + \",\" + parseInt(b, 16) + \",1)\";\r\n\t}\r\n\r\n\tconst rxColor6 = /#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})/gi,\r\n\t\trxColor3 = /#([a-f\\d])([a-f\\d])([a-f\\d])/gi,\r\n\t\trxColorName = /(rgba?\\(\\s*)?(\\b[a-z]+\\b)/g,\r\n\t\trxRGB = /rgb(a?)\\(([^\\)]+)\\)/gi,\r\n\t\trxSpaces = /\\s+/g;\r\n\r\n\t/**\r\n\t * Replace any css colour name with its rgba() value. It is possible to use\r\n\t * the name within an \"rgba(blue, 0.4)\" string this way.\r\n\t */\r\n\texport function fixColors(str: string): string {\r\n\t\treturn str\r\n\t\t\t.replace(rxColor6, makeRGBA)\r\n\t\t\t.replace(rxColor3, function($0, r, g, b) {\r\n\t\t\t\treturn makeRGBA($0, r + r, g + g, b + b);\r\n\t\t\t})\r\n\t\t\t.replace(rxColorName, function($0, $1, $2) {\r\n\t\t\t\tif (ColorNames[$2]) {\r\n\t\t\t\t\treturn ($1 ? $1 : \"rgba(\") + ColorNames[$2] + ($1 ? \"\" : \",1)\");\r\n\t\t\t\t}\r\n\t\t\t\treturn $0;\r\n\t\t\t})\r\n\t\t\t.replace(rxRGB, function($0, $1, $2: string) {\r\n\t\t\t\treturn \"rgba(\" + $2.replace(rxSpaces, \"\") + ($1 ? \"\" : \",1\") + \")\";\r\n\t\t\t});\r\n\t}\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.CSS {\r\n\t// Converting from hex as it makes for a smaller file.\r\n\t// TODO: When build system changes to webpack, make this one optional.\r\n\tconst colorValues = {\r\n\t\t\"aliceblue\": 0xf0f8ff,\r\n\t\t\"antiquewhite\": 0xfaebd7,\r\n\t\t\"aqua\": 0x00ffff,\r\n\t\t\"aquamarine\": 0x7fffd4,\r\n\t\t\"azure\": 0xf0ffff,\r\n\t\t\"beige\": 0xf5f5dc,\r\n\t\t\"bisque\": 0xffe4c4,\r\n\t\t\"black\": 0x000000,\r\n\t\t\"blanchedalmond\": 0xffebcd,\r\n\t\t\"blue\": 0x0000ff,\r\n\t\t\"blueviolet\": 0x8a2be2,\r\n\t\t\"brown\": 0xa52a2a,\r\n\t\t\"burlywood\": 0xdeb887,\r\n\t\t\"cadetblue\": 0x5f9ea0,\r\n\t\t\"chartreuse\": 0x7fff00,\r\n\t\t\"chocolate\": 0xd2691e,\r\n\t\t\"coral\": 0xff7f50,\r\n\t\t\"cornflowerblue\": 0x6495ed,\r\n\t\t\"cornsilk\": 0xfff8dc,\r\n\t\t\"crimson\": 0xdc143c,\r\n\t\t\"cyan\": 0x00ffff,\r\n\t\t\"darkblue\": 0x00008b,\r\n\t\t\"darkcyan\": 0x008b8b,\r\n\t\t\"darkgoldenrod\": 0xb8860b,\r\n\t\t\"darkgray\": 0xa9a9a9,\r\n\t\t\"darkgrey\": 0xa9a9a9,\r\n\t\t\"darkgreen\": 0x006400,\r\n\t\t\"darkkhaki\": 0xbdb76b,\r\n\t\t\"darkmagenta\": 0x8b008b,\r\n\t\t\"darkolivegreen\": 0x556b2f,\r\n\t\t\"darkorange\": 0xff8c00,\r\n\t\t\"darkorchid\": 0x9932cc,\r\n\t\t\"darkred\": 0x8b0000,\r\n\t\t\"darksalmon\": 0xe9967a,\r\n\t\t\"darkseagreen\": 0x8fbc8f,\r\n\t\t\"darkslateblue\": 0x483d8b,\r\n\t\t\"darkslategray\": 0x2f4f4f,\r\n\t\t\"darkslategrey\": 0x2f4f4f,\r\n\t\t\"darkturquoise\": 0x00ced1,\r\n\t\t\"darkviolet\": 0x9400d3,\r\n\t\t\"deeppink\": 0xff1493,\r\n\t\t\"deepskyblue\": 0x00bfff,\r\n\t\t\"dimgray\": 0x696969,\r\n\t\t\"dimgrey\": 0x696969,\r\n\t\t\"dodgerblue\": 0x1e90ff,\r\n\t\t\"firebrick\": 0xb22222,\r\n\t\t\"floralwhite\": 0xfffaf0,\r\n\t\t\"forestgreen\": 0x228b22,\r\n\t\t\"fuchsia\": 0xff00ff,\r\n\t\t\"gainsboro\": 0xdcdcdc,\r\n\t\t\"ghostwhite\": 0xf8f8ff,\r\n\t\t\"gold\": 0xffd700,\r\n\t\t\"goldenrod\": 0xdaa520,\r\n\t\t\"gray\": 0x808080,\r\n\t\t\"grey\": 0x808080,\r\n\t\t\"green\": 0x008000,\r\n\t\t\"greenyellow\": 0xadff2f,\r\n\t\t\"honeydew\": 0xf0fff0,\r\n\t\t\"hotpink\": 0xff69b4,\r\n\t\t\"indianred\": 0xcd5c5c,\r\n\t\t\"indigo\": 0x4b0082,\r\n\t\t\"ivory\": 0xfffff0,\r\n\t\t\"khaki\": 0xf0e68c,\r\n\t\t\"lavender\": 0xe6e6fa,\r\n\t\t\"lavenderblush\": 0xfff0f5,\r\n\t\t\"lawngreen\": 0x7cfc00,\r\n\t\t\"lemonchiffon\": 0xfffacd,\r\n\t\t\"lightblue\": 0xadd8e6,\r\n\t\t\"lightcoral\": 0xf08080,\r\n\t\t\"lightcyan\": 0xe0ffff,\r\n\t\t\"lightgoldenrodyellow\": 0xfafad2,\r\n\t\t\"lightgray\": 0xd3d3d3,\r\n\t\t\"lightgrey\": 0xd3d3d3,\r\n\t\t\"lightgreen\": 0x90ee90,\r\n\t\t\"lightpink\": 0xffb6c1,\r\n\t\t\"lightsalmon\": 0xffa07a,\r\n\t\t\"lightseagreen\": 0x20b2aa,\r\n\t\t\"lightskyblue\": 0x87cefa,\r\n\t\t\"lightslategray\": 0x778899,\r\n\t\t\"lightslategrey\": 0x778899,\r\n\t\t\"lightsteelblue\": 0xb0c4de,\r\n\t\t\"lightyellow\": 0xffffe0,\r\n\t\t\"lime\": 0x00ff00,\r\n\t\t\"limegreen\": 0x32cd32,\r\n\t\t\"linen\": 0xfaf0e6,\r\n\t\t\"magenta\": 0xff00ff,\r\n\t\t\"maroon\": 0x800000,\r\n\t\t\"mediumaquamarine\": 0x66cdaa,\r\n\t\t\"mediumblue\": 0x0000cd,\r\n\t\t\"mediumorchid\": 0xba55d3,\r\n\t\t\"mediumpurple\": 0x9370db,\r\n\t\t\"mediumseagreen\": 0x3cb371,\r\n\t\t\"mediumslateblue\": 0x7b68ee,\r\n\t\t\"mediumspringgreen\": 0x00fa9a,\r\n\t\t\"mediumturquoise\": 0x48d1cc,\r\n\t\t\"mediumvioletred\": 0xc71585,\r\n\t\t\"midnightblue\": 0x191970,\r\n\t\t\"mintcream\": 0xf5fffa,\r\n\t\t\"mistyrose\": 0xffe4e1,\r\n\t\t\"moccasin\": 0xffe4b5,\r\n\t\t\"navajowhite\": 0xffdead,\r\n\t\t\"navy\": 0x000080,\r\n\t\t\"oldlace\": 0xfdf5e6,\r\n\t\t\"olive\": 0x808000,\r\n\t\t\"olivedrab\": 0x6b8e23,\r\n\t\t\"orange\": 0xffa500,\r\n\t\t\"orangered\": 0xff4500,\r\n\t\t\"orchid\": 0xda70d6,\r\n\t\t\"palegoldenrod\": 0xeee8aa,\r\n\t\t\"palegreen\": 0x98fb98,\r\n\t\t\"paleturquoise\": 0xafeeee,\r\n\t\t\"palevioletred\": 0xdb7093,\r\n\t\t\"papayawhip\": 0xffefd5,\r\n\t\t\"peachpuff\": 0xffdab9,\r\n\t\t\"peru\": 0xcd853f,\r\n\t\t\"pink\": 0xffc0cb,\r\n\t\t\"plum\": 0xdda0dd,\r\n\t\t\"powderblue\": 0xb0e0e6,\r\n\t\t\"purple\": 0x800080,\r\n\t\t\"rebeccapurple\": 0x663399,\r\n\t\t\"red\": 0xff0000,\r\n\t\t\"rosybrown\": 0xbc8f8f,\r\n\t\t\"royalblue\": 0x4169e1,\r\n\t\t\"saddlebrown\": 0x8b4513,\r\n\t\t\"salmon\": 0xfa8072,\r\n\t\t\"sandybrown\": 0xf4a460,\r\n\t\t\"seagreen\": 0x2e8b57,\r\n\t\t\"seashell\": 0xfff5ee,\r\n\t\t\"sienna\": 0xa0522d,\r\n\t\t\"silver\": 0xc0c0c0,\r\n\t\t\"skyblue\": 0x87ceeb,\r\n\t\t\"slateblue\": 0x6a5acd,\r\n\t\t\"slategray\": 0x708090,\r\n\t\t\"slategrey\": 0x708090,\r\n\t\t\"snow\": 0xfffafa,\r\n\t\t\"springgreen\": 0x00ff7f,\r\n\t\t\"steelblue\": 0x4682b4,\r\n\t\t\"tan\": 0xd2b48c,\r\n\t\t\"teal\": 0x008080,\r\n\t\t\"thistle\": 0xd8bfd8,\r\n\t\t\"tomato\": 0xff6347,\r\n\t\t\"turquoise\": 0x40e0d0,\r\n\t\t\"violet\": 0xee82ee,\r\n\t\t\"wheat\": 0xf5deb3,\r\n\t\t\"white\": 0xffffff,\r\n\t\t\"whitesmoke\": 0xf5f5f5,\r\n\t\t\"yellow\": 0xffff00,\r\n\t\t\"yellowgreen\": 0x9acd32\r\n\t};\r\n\r\n\tfor (let name in colorValues) {\r\n\t\tif (colorValues.hasOwnProperty(name)) {\r\n\t\t\tlet color = colorValues[name];\r\n\r\n\t\t\tColorNames[name] = Math.floor(color / 65536) + \",\" + Math.floor(color / 256 % 256) + \",\" + (color % 256);\r\n\t\t}\r\n\t}\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.CSS {\r\n\r\n\t// TODO: This is still a complete mess\r\n\texport function computePropertyValue(element: HTMLorSVGElement, property: string): string {\r\n\t\tconst data = Data(element),\r\n\t\t\t// If computedStyle is cached, use it.\r\n\t\t\tcomputedStyle = data && data.computedStyle ? data.computedStyle : window.getComputedStyle(element, null);\r\n\t\tlet computedValue: string | number = 0;\r\n\r\n\t\tif (data && !data.computedStyle) {\r\n\t\t\tdata.computedStyle = computedStyle;\r\n\t\t}\r\n\t\tif (property === \"width\" || property === \"height\") {\r\n\t\t\t// Browsers do not return height and width values for elements\r\n\t\t\t// that are set to display:\"none\". Thus, we temporarily toggle\r\n\t\t\t// display to the element type's default value.\r\n\t\t\tconst toggleDisplay: boolean = getPropertyValue(element, \"display\") === \"none\";\r\n\r\n\t\t\t// When box-sizing isn't set to border-box, height and width\r\n\t\t\t// style values are incorrectly computed when an element's\r\n\t\t\t// scrollbars are visible (which expands the element's\r\n\t\t\t// dimensions). Thus, we defer to the more accurate\r\n\t\t\t// offsetHeight/Width property, which includes the total\r\n\t\t\t// dimensions for interior, border, padding, and scrollbar. We\r\n\t\t\t// subtract border and padding to get the sum of interior +\r\n\t\t\t// scrollbar.\r\n\t\t\t// TODO: offsetHeight does not exist on SVGElement\r\n\t\t\tif (toggleDisplay) {\r\n\t\t\t\tsetPropertyValue(element, \"display\", \"auto\");\r\n\t\t\t}\r\n\t\t\tcomputedValue = augmentDimension(element, property, true);\r\n\t\t\tif (toggleDisplay) {\r\n\t\t\t\tsetPropertyValue(element, \"display\", \"none\");\r\n\t\t\t}\r\n\t\t\treturn String(computedValue);\r\n\t\t}\r\n\r\n\t\t/* IE and Firefox do not return a value for the generic borderColor -- they only return individual values for each border side's color.\r\n\t\t Also, in all browsers, when border colors aren't all the same, a compound value is returned that Velocity isn't setup to parse.\r\n\t\t So, as a polyfill for querying individual border side colors, we just return the top border's color and animate all borders from that value. */\r\n\t\t/* TODO: There is a borderColor normalisation in legacy/ - figure out where this is needed... */\r\n\r\n\t\tcomputedValue = computedStyle[property];\r\n\t\t/* Fall back to the property's style value (if defined) when computedValue returns nothing,\r\n\t\t which can happen when the element hasn't been painted. */\r\n\t\tif (!computedValue) {\r\n\t\t\tcomputedValue = element.style[property];\r\n\t\t}\r\n\t\t/* For top, right, bottom, and left (TRBL) values that are set to \"auto\" on elements of \"fixed\" or \"absolute\" position,\r\n\t\t defer to jQuery for converting \"auto\" to a numeric value. (For elements with a \"static\" or \"relative\" position, \"auto\" has the same\r\n\t\t effect as being set to 0, so no conversion is necessary.) */\r\n\t\t/* An example of why numeric conversion is necessary: When an element with \"position:absolute\" has an untouched \"left\"\r\n\t\t property, which reverts to \"auto\", left's value is 0 relative to its parent element, but is often non-zero relative\r\n\t\t to its *containing* (not parent) element, which is the nearest \"position:relative\" ancestor or the viewport (and always the viewport in the case of \"position:fixed\"). */\r\n\t\tif (computedValue === \"auto\") {\r\n\t\t\tswitch (property) {\r\n\t\t\t\tcase \"top\":\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tlet topLeft = true;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\tcase \"bottom\":\r\n\t\t\t\t\tconst position = getPropertyValue(element, \"position\"); /* GET */\r\n\r\n\t\t\t\t\tif (position === \"fixed\" || (topLeft && position === \"absolute\")) {\r\n\t\t\t\t\t\t// Note: this has no pixel unit on its returned values,\r\n\t\t\t\t\t\t// we re-add it here to conform with\r\n\t\t\t\t\t\t// computePropertyValue's behavior.\r\n\t\t\t\t\t\tcomputedValue = element.getBoundingClientRect[property] + \"px\"; /* GET */\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t// Deliberate fallthrough!\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tcomputedValue = \"0px\";\r\n\t\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn computedValue ? String(computedValue) : \"\";\r\n\t}\r\n\r\n\t/**\r\n\t * Get a property value. This will grab via the cache if it exists, then\r\n\t * via any normalisations.\r\n\t */\r\n\texport function getPropertyValue(element: HTMLorSVGElement, propertyName: string, fn?: VelocityNormalizationsFn, skipCache?: boolean): string {\r\n\t\tconst data = Data(element);\r\n\t\tlet propertyValue: string;\r\n\r\n\t\tif (NoCacheNormalizations.has(propertyName)) {\r\n\t\t\tskipCache = true;\r\n\t\t}\r\n\t\tif (!skipCache && data && data.cache[propertyName] != null) {\r\n\t\t\tpropertyValue = data.cache[propertyName];\r\n\t\t} else {\r\n\t\t\tfn = fn || getNormalization(element, propertyName);\r\n\t\t\tif (fn) {\r\n\t\t\t\tpropertyValue = fn(element);\r\n\t\t\t\tif (data) {\r\n\t\t\t\t\tdata.cache[propertyName] = propertyValue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (debug >= 2) {\r\n\t\t\tconsole.info(\"Get \" + propertyName + \": \" + propertyValue);\r\n\t\t}\r\n\t\treturn propertyValue;\r\n\t}\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.CSS {\r\n\t/**\r\n\t * All possible units in CSS. Used to recognise units when parsing tweens.\r\n\t */\r\n\tconst Units = [\r\n\t\t\"%\", // relative\r\n\t\t\"em\", \"ex\", \"ch\", \"rem\", // font relative\r\n\t\t\"vw\", \"vh\", \"vmin\", \"vmax\", // viewport relative\r\n\t\t\"cm\", \"mm\", \"Q\", \"in\", \"pc\", \"pt\", \"px\", // absolute lengths\r\n\t\t\"deg\", \"grad\", \"rad\", \"turn\", // angles\r\n\t\t\"s\", \"ms\" // time\r\n\t];\r\n\r\n\t/**\r\n\t * Get the current unit for this property. Only used when parsing tweens\r\n\t * to check if the unit is changing between the start and end values.\r\n\t */\r\n\texport function getUnit(property: string, start?: number): string {\r\n\t\tstart = start || 0;\r\n\t\tif (property[start] && property[start] !== \" \") {\r\n\t\t\tfor (let i = 0, units = Units; i < units.length; i++) {\r\n\t\t\t\tconst unit = units[i];\r\n\t\t\t\tlet j = 0;\r\n\r\n\t\t\t\tdo {\r\n\t\t\t\t\tif (j >= unit.length) {\r\n\t\t\t\t\t\treturn unit;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (unit[j] !== property[start + j]) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t} while (++j);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.CSS {\r\n\t/**\r\n\t * The singular setPropertyValue, which routes the logic for all\r\n\t * normalizations.\r\n\t */\r\n\texport function setPropertyValue(element: HTMLorSVGElement, propertyName: string, propertyValue: any, fn?: VelocityNormalizationsFn) {\r\n\t\tconst data = Data(element);\r\n\r\n\t\tif (isString(propertyValue)\r\n\t\t\t&& propertyValue[0] === \"c\"\r\n\t\t\t&& propertyValue[1] === \"a\"\r\n\t\t\t&& propertyValue[2] === \"l\"\r\n\t\t\t&& propertyValue[3] === \"c\"\r\n\t\t\t&& propertyValue[4] === \"(\"\r\n\t\t\t&& propertyValue[5] === \"0\"\r\n\t\t\t&& propertyValue[5] === \" \") {\r\n\t\t\t// Make sure we un-calc unit changing values - try not to trigger\r\n\t\t\t// this code any more often than we have to since it's expensive\r\n\t\t\tpropertyValue = propertyValue.replace(/^calc\\(0[^\\d]* \\+ ([^\\(\\)]+)\\)$/, \"$1\");\r\n\t\t}\r\n\t\tif (data && data.cache[propertyName] !== propertyValue) {\r\n\t\t\t// By setting it to undefined we force a true \"get\" later\r\n\t\t\tdata.cache[propertyName] = propertyValue || undefined;\r\n\t\t\tfn = fn || getNormalization(element, propertyName);\r\n\t\t\tif (fn) {\r\n\t\t\t\tfn(element, propertyValue);\r\n\t\t\t}\r\n\t\t\tif (debug >= 2) {\r\n\t\t\t\tconsole.info(\"Set \" + propertyName + \": \" + propertyValue, element);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\ninterface VelocityEasingsType {\r\n\t\"linear\": true;\r\n\t\"swing\": true;\r\n\t\"spring\": true;\r\n}\r\n\r\nnamespace VelocityStatic.Easing {\r\n\texport const Easings: {[name: string]: VelocityEasingFn} = Object.create(null);\r\n\r\n\t/**\r\n\t * Used to register a easing. This should never be called by users\r\n\t * directly, instead it should be called via an action:
\r\n\t * Velocity(\"registerEasing\", \"name\", VelocityEasingFn);\r\n\t *\r\n\t * @private\r\n\t */\r\n\texport function registerEasing(args?: [string, VelocityEasingFn]) {\r\n\t\tconst name: string = args[0],\r\n\t\t\tcallback = args[1];\r\n\r\n\t\tif (!isString(name)) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to set 'registerEasing' name to an invalid value:\", name);\r\n\t\t} else if (!isFunction(callback)) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to set 'registerEasing' callback to an invalid value:\", name, callback);\r\n\t\t} else if (Easings[name]) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to override 'registerEasing' callback\", name);\r\n\t\t} else {\r\n\t\t\tEasings[name] = callback;\r\n\t\t}\r\n\t}\r\n\r\n\tregisterAction([\"registerEasing\", registerEasing], true);\r\n\r\n\t/* Basic (same as jQuery) easings. */\r\n\tregisterEasing([\"linear\", function(percentComplete, startValue, endValue) {\r\n\t\treturn startValue + percentComplete * (endValue - startValue);\r\n\t}]);\r\n\r\n\tregisterEasing([\"swing\", function(percentComplete, startValue, endValue) {\r\n\t\treturn startValue + (0.5 - Math.cos(percentComplete * Math.PI) / 2) * (endValue - startValue);\r\n\t}]);\r\n\r\n\t/* Bonus \"spring\" easing, which is a less exaggerated version of easeInOutElastic. */\r\n\tregisterEasing([\"spring\", function(percentComplete, startValue, endValue) {\r\n\t\treturn startValue + (1 - (Math.cos(percentComplete * 4.5 * Math.PI) * Math.exp(-percentComplete * 6))) * (endValue - startValue);\r\n\t}]);\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Back easings, based on code from https://github.com/yuichiroharai/easeplus-velocity\r\n */\r\n\r\ninterface VelocityEasingsType {\r\n\t\"easeInBack\": true;\r\n\t\"easeOutBack\": true;\r\n\t\"easeInOutBack\": true;\r\n}\r\n\r\nnamespace VelocityStatic.Easing {\r\n\texport function registerBackIn(name: string, amount: number) {\r\n\t\tregisterEasing([name, function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\treturn Math.pow(percentComplete, 2) * ((amount + 1) * percentComplete - amount) * (endValue - startValue);\r\n\t\t}]);\r\n\t}\r\n\r\n\texport function registerBackOut(name: string, amount: number) {\r\n\t\tregisterEasing([name, function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\treturn (Math.pow(--percentComplete, 2) * ((amount + 1) * percentComplete + amount) + 1) * (endValue - startValue);\r\n\t\t}]);\r\n\t}\r\n\r\n\texport function registerBackInOut(name: string, amount: number) {\r\n\t\tamount *= 1.525;\r\n\t\tregisterEasing([name, function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\treturn ((percentComplete *= 2) < 1\r\n\t\t\t\t? (Math.pow(percentComplete, 2) * ((amount + 1) * percentComplete - amount))\r\n\t\t\t\t: (Math.pow(percentComplete -= 2, 2) * ((amount + 1) * percentComplete + amount) + 2)\r\n\t\t\t) * 0.5 * (endValue - startValue);\r\n\t\t}]);\r\n\t}\r\n\r\n\tregisterBackIn(\"easeInBack\", 1.7);\r\n\tregisterBackOut(\"easeOutBack\", 1.7);\r\n\tregisterBackInOut(\"easeInOutBack\", 1.7);\r\n\r\n\t// TODO: Expose these as actions to register custom easings?\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License\r\n */\r\n\r\ninterface VelocityEasingsType {\r\n\t\"ease\": true;\r\n\t\"easeIn\": true;\r\n\t\"ease-in\": true;\r\n\t\"easeOut\": true;\r\n\t\"ease-out\": true;\r\n\t\"easeInOut\": true;\r\n\t\"ease-in-out\": true;\r\n\t\"easeInSine\": true;\r\n\t\"easeOutSine\": true;\r\n\t\"easeInOutSine\": true;\r\n\t\"easeInQuad\": true;\r\n\t\"easeOutQuad\": true;\r\n\t\"easeInOutQuad\": true;\r\n\t\"easeInCubic\": true;\r\n\t\"easeOutCubic\": true;\r\n\t\"easeInOutCubic\": true;\r\n\t\"easeInQuart\": true;\r\n\t\"easeOutQuart\": true;\r\n\t\"easeInOutQuart\": true;\r\n\t\"easeInQuint\": true;\r\n\t\"easeOutQuint\": true;\r\n\t\"easeInOutQuint\": true;\r\n\t\"easeInExpo\": true;\r\n\t\"easeOutExpo\": true;\r\n\t\"easeInOutExpo\": true;\r\n\t\"easeInCirc\": true;\r\n\t\"easeOutCirc\": true;\r\n\t\"easeInOutCirc\": true;\r\n}\r\n\r\nnamespace VelocityStatic.Easing {\r\n\t/**\r\n\t * Fix to a range of 0 <= num <= 1.\r\n\t */\r\n\tfunction fixRange(num: number) {\r\n\t\treturn Math.min(Math.max(num, 0), 1);\r\n\t}\r\n\r\n\tfunction A(aA1, aA2) {\r\n\t\treturn 1.0 - 3.0 * aA2 + 3.0 * aA1;\r\n\t}\r\n\r\n\tfunction B(aA1, aA2) {\r\n\t\treturn 3.0 * aA2 - 6.0 * aA1;\r\n\t}\r\n\r\n\tfunction C(aA1) {\r\n\t\treturn 3.0 * aA1;\r\n\t}\r\n\r\n\tfunction calcBezier(aT, aA1, aA2) {\r\n\t\treturn ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\r\n\t}\r\n\r\n\tfunction getSlope(aT, aA1, aA2) {\r\n\t\treturn 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n\t}\r\n\r\n\texport function generateBezier(mX1: number, mY1: number, mX2: number, mY2: number): VelocityEasingFn {\r\n\t\tconst NEWTON_ITERATIONS = 4,\r\n\t\t\tNEWTON_MIN_SLOPE = 0.001,\r\n\t\t\tSUBDIVISION_PRECISION = 0.0000001,\r\n\t\t\tSUBDIVISION_MAX_ITERATIONS = 10,\r\n\t\t\tkSplineTableSize = 11,\r\n\t\t\tkSampleStepSize = 1.0 / (kSplineTableSize - 1.0),\r\n\t\t\tfloat32ArraySupported = \"Float32Array\" in window;\r\n\r\n\t\t/* Must contain four arguments. */\r\n\t\tif (arguments.length !== 4) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t/* Arguments must be numbers. */\r\n\t\tfor (let i = 0; i < 4; ++i) {\r\n\t\t\tif (typeof arguments[i] !== \"number\" || isNaN(arguments[i]) || !isFinite(arguments[i])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* X values must be in the [0, 1] range. */\r\n\t\tmX1 = fixRange(mX1);\r\n\t\tmX2 = fixRange(mX2);\r\n\r\n\t\tconst mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n\r\n\t\tfunction newtonRaphsonIterate(aX, aGuessT) {\r\n\t\t\tfor (let i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n\t\t\t\tconst currentSlope = getSlope(aGuessT, mX1, mX2);\r\n\r\n\t\t\t\tif (currentSlope === 0.0) {\r\n\t\t\t\t\treturn aGuessT;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n\t\t\t\taGuessT -= currentX / currentSlope;\r\n\t\t\t}\r\n\r\n\t\t\treturn aGuessT;\r\n\t\t}\r\n\r\n\t\tfunction calcSampleValues() {\r\n\t\t\tfor (let i = 0; i < kSplineTableSize; ++i) {\r\n\t\t\t\tmSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction binarySubdivide(aX, aA, aB) {\r\n\t\t\tlet currentX, currentT, i = 0;\r\n\r\n\t\t\tdo {\r\n\t\t\t\tcurrentT = aA + (aB - aA) / 2.0;\r\n\t\t\t\tcurrentX = calcBezier(currentT, mX1, mX2) - aX;\r\n\t\t\t\tif (currentX > 0.0) {\r\n\t\t\t\t\taB = currentT;\r\n\t\t\t\t} else {\r\n\t\t\t\t\taA = currentT;\r\n\t\t\t\t}\r\n\t\t\t} while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n\r\n\t\t\treturn currentT;\r\n\t\t}\r\n\r\n\t\tfunction getTForX(aX) {\r\n\t\t\tlet intervalStart = 0.0,\r\n\t\t\t\tcurrentSample = 1,\r\n\t\t\t\tlastSample = kSplineTableSize - 1;\r\n\r\n\t\t\tfor (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\r\n\t\t\t\tintervalStart += kSampleStepSize;\r\n\t\t\t}\r\n\r\n\t\t\t--currentSample;\r\n\r\n\t\t\tconst dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]),\r\n\t\t\t\tguessForT = intervalStart + dist * kSampleStepSize,\r\n\t\t\t\tinitialSlope = getSlope(guessForT, mX1, mX2);\r\n\r\n\t\t\tif (initialSlope >= NEWTON_MIN_SLOPE) {\r\n\t\t\t\treturn newtonRaphsonIterate(aX, guessForT);\r\n\t\t\t} else if (initialSlope === 0.0) {\r\n\t\t\t\treturn guessForT;\r\n\t\t\t} else {\r\n\t\t\t\treturn binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet _precomputed = false;\r\n\r\n\t\tfunction precompute() {\r\n\t\t\t_precomputed = true;\r\n\t\t\tif (mX1 !== mY1 || mX2 !== mY2) {\r\n\t\t\t\tcalcSampleValues();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst f = function(percentComplete: number, startValue: number, endValue: number, property?: string) {\r\n\t\t\tif (!_precomputed) {\r\n\t\t\t\tprecompute();\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\tif (mX1 === mY1 && mX2 === mY2) {\r\n\t\t\t\treturn startValue + percentComplete * (endValue - startValue);\r\n\t\t\t}\r\n\t\t\treturn startValue + calcBezier(getTForX(percentComplete), mY1, mY2) * (endValue - startValue);\r\n\t\t};\r\n\r\n\t\t(f as any).getControlPoints = function() {\r\n\t\t\treturn [{x: mX1, y: mY1}, {x: mX2, y: mY2}];\r\n\t\t};\r\n\r\n\t\tconst str = \"generateBezier(\" + [mX1, mY1, mX2, mY2] + \")\";\r\n\t\tf.toString = function() {\r\n\t\t\treturn str;\r\n\t\t};\r\n\r\n\t\treturn f;\r\n\t}\r\n\r\n\t/* Common easings */\r\n\tconst easeIn = generateBezier(0.42, 0.0, 1.00, 1.0),\r\n\t\teaseOut = generateBezier(0.00, 0.0, 0.58, 1.0),\r\n\t\teaseInOut = generateBezier(0.42, 0.0, 0.58, 1.0);\r\n\r\n\tregisterEasing([\"ease\", generateBezier(0.25, 0.1, 0.25, 1.0)]);\r\n\tregisterEasing([\"easeIn\", easeIn]);\r\n\tregisterEasing([\"ease-in\", easeIn]);\r\n\tregisterEasing([\"easeOut\", easeOut]);\r\n\tregisterEasing([\"ease-out\", easeOut]);\r\n\tregisterEasing([\"easeInOut\", easeInOut]);\r\n\tregisterEasing([\"ease-in-out\", easeInOut]);\r\n\tregisterEasing([\"easeInSine\", generateBezier(0.47, 0, 0.745, 0.715)]);\r\n\tregisterEasing([\"easeOutSine\", generateBezier(0.39, 0.575, 0.565, 1)]);\r\n\tregisterEasing([\"easeInOutSine\", generateBezier(0.445, 0.05, 0.55, 0.95)]);\r\n\tregisterEasing([\"easeInQuad\", generateBezier(0.55, 0.085, 0.68, 0.53)]);\r\n\tregisterEasing([\"easeOutQuad\", generateBezier(0.25, 0.46, 0.45, 0.94)]);\r\n\tregisterEasing([\"easeInOutQuad\", generateBezier(0.455, 0.03, 0.515, 0.955)]);\r\n\tregisterEasing([\"easeInCubic\", generateBezier(0.55, 0.055, 0.675, 0.19)]);\r\n\tregisterEasing([\"easeOutCubic\", generateBezier(0.215, 0.61, 0.355, 1)]);\r\n\tregisterEasing([\"easeInOutCubic\", generateBezier(0.645, 0.045, 0.355, 1)]);\r\n\tregisterEasing([\"easeInQuart\", generateBezier(0.895, 0.03, 0.685, 0.22)]);\r\n\tregisterEasing([\"easeOutQuart\", generateBezier(0.165, 0.84, 0.44, 1)]);\r\n\tregisterEasing([\"easeInOutQuart\", generateBezier(0.77, 0, 0.175, 1)]);\r\n\tregisterEasing([\"easeInQuint\", generateBezier(0.755, 0.05, 0.855, 0.06)]);\r\n\tregisterEasing([\"easeOutQuint\", generateBezier(0.23, 1, 0.32, 1)]);\r\n\tregisterEasing([\"easeInOutQuint\", generateBezier(0.86, 0, 0.07, 1)]);\r\n\tregisterEasing([\"easeInExpo\", generateBezier(0.95, 0.05, 0.795, 0.035)]);\r\n\tregisterEasing([\"easeOutExpo\", generateBezier(0.19, 1, 0.22, 1)]);\r\n\tregisterEasing([\"easeInOutExpo\", generateBezier(1, 0, 0, 1)]);\r\n\tregisterEasing([\"easeInCirc\", generateBezier(0.6, 0.04, 0.98, 0.335)]);\r\n\tregisterEasing([\"easeOutCirc\", generateBezier(0.075, 0.82, 0.165, 1)]);\r\n\tregisterEasing([\"easeInOutCirc\", generateBezier(0.785, 0.135, 0.15, 0.86)]);\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Bounce easings, based on code from https://github.com/yuichiroharai/easeplus-velocity\r\n */\r\n\r\ninterface VelocityEasingsType {\r\n\t\"easeInBounce\": true;\r\n\t\"easeOutBounce\": true;\r\n\t\"easeInOutBounce\": true;\r\n}\r\n\r\nnamespace VelocityStatic.Easing {\r\n\tfunction easeOutBounce(percentComplete: number): number {\r\n\t\tif (percentComplete < 1 / 2.75) {\r\n\t\t\treturn (7.5625 * percentComplete * percentComplete);\r\n\t\t}\r\n\t\tif (percentComplete < 2 / 2.75) {\r\n\t\t\treturn (7.5625 * (percentComplete -= 1.5 / 2.75) * percentComplete + 0.75);\r\n\t\t}\r\n\t\tif (percentComplete < 2.5 / 2.75) {\r\n\t\t\treturn (7.5625 * (percentComplete -= 2.25 / 2.75) * percentComplete + 0.9375);\r\n\t\t}\r\n\t\treturn (7.5625 * (percentComplete -= 2.625 / 2.75) * percentComplete + 0.984375);\r\n\t};\r\n\r\n\tfunction easeInBounce(percentComplete: number): number {\r\n\t\treturn 1 - easeOutBounce(1 - percentComplete);\r\n\t};\r\n\r\n\tregisterEasing([\"easeInBounce\", function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\tif (percentComplete === 0) {\r\n\t\t\treturn startValue;\r\n\t\t}\r\n\t\tif (percentComplete === 1) {\r\n\t\t\treturn endValue;\r\n\t\t}\r\n\t\treturn easeInBounce(percentComplete) * (endValue - startValue);\r\n\t}]);\r\n\r\n\tregisterEasing([\"easeOutBounce\", function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\tif (percentComplete === 0) {\r\n\t\t\treturn startValue;\r\n\t\t}\r\n\t\tif (percentComplete === 1) {\r\n\t\t\treturn endValue;\r\n\t\t}\r\n\t\treturn easeOutBounce(percentComplete) * (endValue - startValue);\r\n\t}]);\r\n\r\n\tregisterEasing([\"easeInOutBounce\", function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\tif (percentComplete === 0) {\r\n\t\t\treturn startValue;\r\n\t\t}\r\n\t\tif (percentComplete === 1) {\r\n\t\t\treturn endValue;\r\n\t\t}\r\n\t\treturn (percentComplete < 0.5\r\n\t\t\t? easeInBounce(percentComplete * 2) * .5\r\n\t\t\t: easeOutBounce(percentComplete * 2 - 1) * 0.5 + 0.5\r\n\t\t) * (endValue - startValue);\r\n\t}]);\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Elastic easings, based on code from https://github.com/yuichiroharai/easeplus-velocity\r\n */\r\n\r\ninterface VelocityEasingsType {\r\n\t\"easeInElastic\": true;\r\n\t\"easeOutElastic\": true;\r\n\t\"easeInOutElastic\": true;\r\n}\r\n\r\nnamespace VelocityStatic.Easing {\r\n\tconst pi2 = Math.PI * 2;\r\n\r\n\texport function registerElasticIn(name: string, amplitude: number, period: number) {\r\n\t\tregisterEasing([name, function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\treturn -(amplitude * Math.pow(2, 10 * (percentComplete -= 1)) * Math.sin((percentComplete - (period / pi2 * Math.asin(1 / amplitude))) * pi2 / period)) * (endValue - startValue);\r\n\t\t}]);\r\n\t}\r\n\r\n\texport function registerElasticOut(name: string, amplitude: number, period: number) {\r\n\t\tregisterEasing([name, function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\treturn (amplitude * Math.pow(2, -10 * percentComplete) * Math.sin((percentComplete - (period / pi2 * Math.asin(1 / amplitude))) * pi2 / period) + 1) * (endValue - startValue);\r\n\t\t}]);\r\n\t}\r\n\r\n\texport function registerElasticInOut(name: string, amplitude: number, period: number) {\r\n\t\tregisterEasing([name, function(percentComplete: number, startValue: number, endValue: number): number {\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\tconst s = period / pi2 * Math.asin(1 / amplitude);\r\n\r\n\t\t\tpercentComplete = percentComplete * 2 - 1;\r\n\t\t\treturn (percentComplete < 0\r\n\t\t\t\t? -0.5 * (amplitude * Math.pow(2, 10 * percentComplete) * Math.sin((percentComplete - s) * pi2 / period))\r\n\t\t\t\t: amplitude * Math.pow(2, -10 * percentComplete) * Math.sin((percentComplete - s) * pi2 / period) * 0.5 + 1\r\n\t\t\t) * (endValue - startValue);\r\n\t\t}]);\r\n\t}\r\n\r\n\tregisterElasticIn(\"easeInElastic\", 1, 0.3);\r\n\tregisterElasticOut(\"easeOutElastic\", 1, 0.3);\r\n\tregisterElasticInOut(\"easeInOutElastic\", 1, 0.3 * 1.5);\r\n\r\n\t// TODO: Expose these as actions to register custom easings?\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.Easing {\r\n\r\n\tinterface springState {\r\n\t\tx: number;\r\n\t\tv: number;\r\n\t\ttension: number;\r\n\t\tfriction: number;\r\n\t};\r\n\r\n\tinterface springDelta {\r\n\t\tdx: number;\r\n\t\tdv: number;\r\n\t};\r\n\r\n\t/* Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */\r\n\t/* Given a tension, friction, and duration, a simulation at 60FPS will first run without a defined duration in order to calculate the full path. A second pass\r\n\t then adjusts the time delta -- using the relation between actual time and duration -- to calculate the path for the duration-constrained animation. */\r\n\tfunction springAccelerationForState(state: springState) {\r\n\t\treturn (-state.tension * state.x) - (state.friction * state.v);\r\n\t}\r\n\r\n\tfunction springEvaluateStateWithDerivative(initialState: springState, dt: number, derivative: springDelta): springDelta {\r\n\t\tconst state = {\r\n\t\t\tx: initialState.x + derivative.dx * dt,\r\n\t\t\tv: initialState.v + derivative.dv * dt,\r\n\t\t\ttension: initialState.tension,\r\n\t\t\tfriction: initialState.friction\r\n\t\t};\r\n\r\n\t\treturn {\r\n\t\t\tdx: state.v,\r\n\t\t\tdv: springAccelerationForState(state)\r\n\t\t};\r\n\t}\r\n\r\n\tfunction springIntegrateState(state: springState, dt: number) {\r\n\t\tconst a = {\r\n\t\t\tdx: state.v,\r\n\t\t\tdv: springAccelerationForState(state)\r\n\t\t},\r\n\t\t\tb = springEvaluateStateWithDerivative(state, dt * 0.5, a),\r\n\t\t\tc = springEvaluateStateWithDerivative(state, dt * 0.5, b),\r\n\t\t\td = springEvaluateStateWithDerivative(state, dt, c),\r\n\t\t\tdxdt = 1.0 / 6.0 * (a.dx + 2.0 * (b.dx + c.dx) + d.dx),\r\n\t\t\tdvdt = 1.0 / 6.0 * (a.dv + 2.0 * (b.dv + c.dv) + d.dv);\r\n\r\n\t\tstate.x = state.x + dxdt * dt;\r\n\t\tstate.v = state.v + dvdt * dt;\r\n\r\n\t\treturn state;\r\n\t}\r\n\r\n\texport function generateSpringRK4(tension: number, friction: number): number;\r\n\texport function generateSpringRK4(tension: number, friction: number, duration: number): VelocityEasingFn;\r\n\texport function generateSpringRK4(tension: number, friction: number, duration?: number): any {\r\n\t\tlet initState: springState = {\r\n\t\t\tx: -1,\r\n\t\t\tv: 0,\r\n\t\t\ttension: parseFloat(tension as any) || 500,\r\n\t\t\tfriction: parseFloat(friction as any) || 20\r\n\t\t},\r\n\t\t\tpath = [0],\r\n\t\t\ttime_lapsed = 0,\r\n\t\t\ttolerance = 1 / 10000,\r\n\t\t\tDT = 16 / 1000,\r\n\t\t\thave_duration = duration != null, // deliberate \"==\", as undefined == null != 0\r\n\t\t\tdt: number,\r\n\t\t\tlast_state: springState;\r\n\r\n\t\t/* Calculate the actual time it takes for this animation to complete with the provided conditions. */\r\n\t\tif (have_duration) {\r\n\t\t\t/* Run the simulation without a duration. */\r\n\t\t\ttime_lapsed = generateSpringRK4(initState.tension, initState.friction);\r\n\t\t\t/* Compute the adjusted time delta. */\r\n\t\t\tdt = (time_lapsed as number) / duration * DT;\r\n\t\t} else {\r\n\t\t\tdt = DT;\r\n\t\t}\r\n\r\n\t\twhile (true) {\r\n\t\t\t/* Next/step function .*/\r\n\t\t\tlast_state = springIntegrateState(last_state || initState, dt);\r\n\t\t\t/* Store the position. */\r\n\t\t\tpath.push(1 + last_state.x);\r\n\t\t\ttime_lapsed += 16;\r\n\t\t\t/* If the change threshold is reached, break. */\r\n\t\t\tif (!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* If duration is not defined, return the actual time required for completing this animation. Otherwise, return a closure that holds the\r\n\t\t computed path and returns a snapshot of the position according to a given percentComplete. */\r\n\t\treturn !have_duration ? time_lapsed : function(percentComplete: number, startValue: number, endValue: number) {\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\treturn startValue + path[(percentComplete * (path.length - 1)) | 0] * (endValue - startValue);\r\n\t\t};\r\n\t};\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details\r\n * \r\n * Step easing generator.\r\n */\r\n\r\nnamespace VelocityStatic.Easing {\r\n\tconst cache: {[steps: number]: VelocityEasingFn} = {};\r\n\r\n\texport function generateStep(steps): VelocityEasingFn {\r\n\t\tconst fn = cache[steps];\r\n\r\n\t\tif (fn) {\r\n\t\t\treturn fn;\r\n\t\t}\r\n\t\treturn cache[steps] = function(percentComplete: number, startValue: number, endValue: number) {\r\n\t\t\tif (percentComplete === 0) {\r\n\t\t\t\treturn startValue;\r\n\t\t\t}\r\n\t\t\tif (percentComplete === 1) {\r\n\t\t\t\treturn endValue;\r\n\t\t\t}\r\n\t\t\treturn startValue + Math.round(percentComplete * steps) * (1 / steps) * (endValue - startValue);\r\n\t\t};\r\n\t}\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n * \r\n * Easings to act on strings, either set at the start or at the end depending on\r\n * need.\r\n */\r\n\r\ninterface VelocityEasingsType {\r\n\t\"at-start\": true;\r\n\t\"during\": true;\r\n\t\"at-end\": true;\r\n}\r\n\r\nnamespace VelocityStatic.Easing {\r\n\t/**\r\n\t * Easing function that sets to the specified value immediately after the\r\n\t * animation starts.\r\n\t */\r\n\tregisterEasing([\"at-start\", function(percentComplete: number, startValue: any, endValue: any): any {\r\n\t\treturn percentComplete === 0\r\n\t\t\t? startValue\r\n\t\t\t: endValue;\r\n\t} as any]);\r\n\r\n\t/**\r\n\t * Easing function that sets to the specified value while the animation is\r\n\t * running.\r\n\t */\r\n\tregisterEasing([\"during\", function(percentComplete: number, startValue: any, endValue: any): any {\r\n\t\treturn percentComplete === 0 || percentComplete === 1\r\n\t\t\t? startValue\r\n\t\t\t: endValue;\r\n\t} as any]);\r\n\r\n\t/**\r\n\t * Easing function that sets to the specified value when the animation ends.\r\n\t */\r\n\tregisterEasing([\"at-end\", function(percentComplete: number, startValue: any, endValue: any): any {\r\n\t\treturn percentComplete === 1\r\n\t\t\t? endValue\r\n\t\t\t: startValue;\r\n\t} as any]);\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n * \r\n * Normalisations are used when getting or setting a (normally css compound\r\n * properties) value that can have a different order in different browsers.\r\n * \r\n * It can also be used to extend and create specific properties that otherwise\r\n * don't exist (such as for scrolling, or inner/outer dimensions).\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * The highest type index for finding the best normalization for a property.\r\n\t */\r\n\texport let MaxType: number = -1;\r\n\r\n\t/**\r\n\t * Unlike \"actions\", normalizations can always be replaced by users.\r\n\t */\r\n\texport const Normalizations: {[name: string]: VelocityNormalizationsFn}[] = [];\r\n\r\n\t/**\r\n\t * Any normalisations that should never be cached are listed here.\r\n\t * Faster than an array - https://jsperf.com/array-includes-and-find-methods-vs-set-has\r\n\t */\r\n\texport const NoCacheNormalizations = new Set();\r\n\r\n\t/**\r\n\t * Used to define a constructor.\r\n\t */\r\n\tinterface ClassConstructor {\r\n\t\tnew(): Object;\r\n\t}\r\n\r\n\t/**\r\n\t * An array of classes used for the per-class normalizations. This\r\n\t * translates into a bitwise enum for quick cross-reference, and so that\r\n\t * the element doesn't need multiple instanceof calls every\r\n\t * frame.\r\n\t */\r\n\texport const constructors: ClassConstructor[] = [];\r\n\r\n\t/**\r\n\t * Used to register a normalization. This should never be called by users\r\n\t * directly, instead it should be called via an action:
\r\n\t * Velocity(\"registerNormalization\", Element, \"name\", VelocityNormalizationsFn[, false]);\r\n\t * \r\n\t * The fourth argument can be an explicit false, which prevents\r\n\t * the property from being cached. Please note that this can be dangerous\r\n\t * for performance!\r\n\t *\r\n\t * @private\r\n\t */\r\n\texport function registerNormalization(args?: [ClassConstructor, string, VelocityNormalizationsFn] | [ClassConstructor, string, VelocityNormalizationsFn, boolean]) {\r\n\t\tconst constructor = args[0],\r\n\t\t\tname: string = args[1],\r\n\t\t\tcallback = args[2];\r\n\r\n\t\tif (isString(constructor) || !(constructor instanceof Object)) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to set 'registerNormalization' constructor to an invalid value:\", constructor);\r\n\t\t} else if (!isString(name)) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to set 'registerNormalization' name to an invalid value:\", name);\r\n\t\t} else if (!isFunction(callback)) {\r\n\t\t\tconsole.warn(\"VelocityJS: Trying to set 'registerNormalization' callback to an invalid value:\", name, callback);\r\n\t\t} else {\r\n\t\t\tlet index = constructors.indexOf(constructor);\r\n\r\n\t\t\tif (index < 0) {\r\n\t\t\t\tMaxType = index = constructors.push(constructor) - 1;\r\n\t\t\t\tNormalizations[index] = Object.create(null);\r\n\t\t\t}\r\n\t\t\tNormalizations[index][name] = callback;\r\n\t\t\tif (args[3] === false) {\r\n\t\t\t\tNoCacheNormalizations.add(name);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Used to check if a normalisation exists on a specific class.\r\n\t */\r\n\texport function hasNormalization(args?: [ClassConstructor, string]) {\r\n\t\tconst constructor = args[0],\r\n\t\t\tname: string = args[1];\r\n\t\tlet index = constructors.indexOf(constructor);\r\n\r\n\t\treturn !!Normalizations[index][name];\r\n\t}\r\n\r\n\texport function getNormalization(element: HTMLorSVGElement, propertyName: string) {\r\n\t\tconst data = Data(element);\r\n\t\tlet fn: VelocityNormalizationsFn;\r\n\r\n\t\tfor (let index = MaxType, types = data.types; !fn && index >= 0; index--) {\r\n\t\t\tif (types & (1 << index)) {\r\n\t\t\t\tfn = Normalizations[index][propertyName];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn fn;\r\n\t}\r\n\r\n\tregisterAction([\"registerNormalization\", registerNormalization]);\r\n\tregisterAction([\"hasNormalization\", hasNormalization]);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.CSS {\r\n\r\n\t/**\r\n\t * Get/set an attribute.\r\n\t */\r\n\tfunction getAttribute(name: string) {\r\n\t\treturn function(element: Element, propertyValue?: string): string | void {\r\n\t\t\tif (propertyValue === undefined) {\r\n\t\t\t\treturn element.getAttribute(name);\r\n\t\t\t}\r\n\t\t\telement.setAttribute(name, propertyValue);\r\n\t\t} as VelocityNormalizationsFn;\r\n\t}\r\n\r\n\tconst base = document.createElement(\"div\"),\r\n\t\trxSubtype = /^SVG(.*)Element$/,\r\n\t\trxElement = /Element$/;\r\n\r\n\tObject.getOwnPropertyNames(window).forEach(function(globals) {\r\n\t\tconst subtype = rxSubtype.exec(globals);\r\n\r\n\t\tif (subtype && subtype[1] !== \"SVG\") { // Don't do SVGSVGElement.\r\n\t\t\ttry {\r\n\t\t\t\tconst element = subtype[1] ? document.createElementNS(\"http://www.w3.org/2000/svg\", (subtype[1] || \"svg\").toLowerCase()) : document.createElement(\"svg\"),\r\n\t\t\t\t\tconstructor = element.constructor;\r\n\r\n\t\t\t\tfor (let attribute in element) {\r\n\t\t\t\t\tconst value = element[attribute];\r\n\r\n\t\t\t\t\tif (isString(attribute)\r\n\t\t\t\t\t\t&& !(attribute[0] === \"o\" && attribute[1] === \"n\")\r\n\t\t\t\t\t\t&& attribute !== attribute.toUpperCase()\r\n\t\t\t\t\t\t&& !rxElement.test(attribute)\r\n\t\t\t\t\t\t&& !(attribute in base)\r\n\t\t\t\t\t\t&& !isFunction(value)) {\r\n\t\t\t\t\t\t// TODO: Should this all be set on the generic SVGElement, it would save space and time, but not as powerful\r\n\t\t\t\t\t\tregisterNormalization([constructor as any, attribute, getAttribute(attribute)]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.error(\"VelocityJS: Error when trying to identify SVG attributes on \" + globals + \".\", e);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic.CSS {\r\n\r\n\t/**\r\n\t * Get/set the width or height.\r\n\t */\r\n\tfunction getDimension(name: string) {\r\n\t\treturn function(element: HTMLorSVGElement, propertyValue?: string): string | void {\r\n\t\t\tif (propertyValue === undefined) {\r\n\t\t\t\t// Firefox throws an error if .getBBox() is called on an SVG that isn't attached to the DOM.\r\n\t\t\t\ttry {\r\n\t\t\t\t\treturn (element as SVGGraphicsElement).getBBox()[name] + \"px\";\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\treturn \"0px\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telement.setAttribute(name, propertyValue);\r\n\t\t} as VelocityNormalizationsFn;\r\n\t}\r\n\r\n\tregisterNormalization([SVGElement, \"width\", getDimension(\"width\")]);\r\n\tregisterNormalization([SVGElement, \"height\", getDimension(\"height\")]);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Figure out the dimensions for this width / height based on the\r\n\t * potential borders and whether we care about them.\r\n\t */\r\n\texport function augmentDimension(element: HTMLorSVGElement, name: \"width\" | \"height\", wantInner: boolean): number {\r\n\t\tconst isBorderBox = CSS.getPropertyValue(element, \"boxSizing\").toString().toLowerCase() === \"border-box\";\r\n\r\n\t\tif (isBorderBox === wantInner) {\r\n\t\t\t// in box-sizing mode, the CSS width / height accessors already\r\n\t\t\t// give the outerWidth / outerHeight.\r\n\t\t\tconst sides = name === \"width\" ? [\"Left\", \"Right\"] : [\"Top\", \"Bottom\"],\r\n\t\t\t\tfields = [\"padding\" + sides[0], \"padding\" + sides[1], \"border\" + sides[0] + \"Width\", \"border\" + sides[1] + \"Width\"];\r\n\t\t\tlet i: number,\r\n\t\t\t\tvalue: number,\r\n\t\t\t\taugment = 0;\r\n\r\n\t\t\tfor (i = 0; i < fields.length; i++) {\r\n\t\t\t\tvalue = parseFloat(CSS.getPropertyValue(element, fields[i]) as string);\r\n\t\t\t\tif (!isNaN(value)) {\r\n\t\t\t\t\taugment += value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn wantInner ? -augment : augment;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Get/set the inner/outer dimension.\r\n\t */\r\n\tfunction getDimension(name: \"width\" | \"height\", wantInner: boolean) {\r\n\t\treturn function(element: HTMLorSVGElement, propertyValue?: string): string | void {\r\n\t\t\tif (propertyValue === undefined) {\r\n\t\t\t\treturn augmentDimension(element, name, wantInner) + \"px\";\r\n\t\t\t}\r\n\t\t\tCSS.setPropertyValue(element, name, (parseFloat(propertyValue) - augmentDimension(element, name, wantInner)) + \"px\");\r\n\t\t} as VelocityNormalizationsFn;\r\n\t}\r\n\r\n\tregisterNormalization([Element, \"innerWidth\", getDimension(\"width\", true)]);\r\n\tregisterNormalization([Element, \"innerHeight\", getDimension(\"height\", true)]);\r\n\tregisterNormalization([Element, \"outerWidth\", getDimension(\"width\", false)]);\r\n\tregisterNormalization([Element, \"outerHeight\", getDimension(\"height\", false)]);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\texport const inlineRx = /^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|let|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i,\r\n\t\tlistItemRx = /^(li)$/i,\r\n\t\ttableRowRx = /^(tr)$/i,\r\n\t\ttableRx = /^(table)$/i,\r\n\t\ttableRowGroupRx = /^(tbody)$/i;\r\n\r\n\t/**\r\n\t * Display has an extra value of \"auto\" that works out the correct value\r\n\t * based on the type of element.\r\n\t */\r\n\tfunction display(element: HTMLorSVGElement): string;\r\n\tfunction display(element: HTMLorSVGElement, propertyValue: string): void;\r\n\tfunction display(element: HTMLorSVGElement, propertyValue?: string): string | void {\r\n\t\tconst style = element.style;\r\n\r\n\t\tif (propertyValue === undefined) {\r\n\t\t\treturn CSS.computePropertyValue(element, \"display\");\r\n\t\t}\r\n\t\tif (propertyValue === \"auto\") {\r\n\t\t\tconst nodeName = element && element.nodeName,\r\n\t\t\t\tdata = Data(element);\r\n\r\n\t\t\tif (inlineRx.test(nodeName)) {\r\n\t\t\t\tpropertyValue = \"inline\";\r\n\t\t\t} else if (listItemRx.test(nodeName)) {\r\n\t\t\t\tpropertyValue = \"list-item\";\r\n\t\t\t} else if (tableRowRx.test(nodeName)) {\r\n\t\t\t\tpropertyValue = \"table-row\";\r\n\t\t\t} else if (tableRx.test(nodeName)) {\r\n\t\t\t\tpropertyValue = \"table\";\r\n\t\t\t} else if (tableRowGroupRx.test(nodeName)) {\r\n\t\t\t\tpropertyValue = \"table-row-group\";\r\n\t\t\t} else {\r\n\t\t\t\t// Default to \"block\" when no match is found.\r\n\t\t\t\tpropertyValue = \"block\";\r\n\t\t\t}\r\n\t\t\t// IMPORTANT: We need to do this as getPropertyValue bypasses the\r\n\t\t\t// Normalisation when it exists in the cache.\r\n\t\t\tdata.cache[\"display\"] = propertyValue;\r\n\t\t}\r\n\t\tstyle.display = propertyValue;\r\n\t}\r\n\r\n\tregisterNormalization([Element, \"display\", display]);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/**\r\n\t * Get the scrollWidth of an element.\r\n\t */\r\n\tfunction clientWidth(element: HTMLorSVGElement): string;\r\n\tfunction clientWidth(element: HTMLorSVGElement, propertyValue: string): void;\r\n\tfunction clientWidth(element: HTMLorSVGElement, propertyValue?: string): string | void {\r\n\t\tif (propertyValue == null) {\r\n\t\t\treturn element.clientWidth + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Get the scrollWidth of an element.\r\n\t */\r\n\tfunction scrollWidth(element: HTMLorSVGElement): string;\r\n\tfunction scrollWidth(element: HTMLorSVGElement, propertyValue: string): void;\r\n\tfunction scrollWidth(element: HTMLorSVGElement, propertyValue?: string): string | void {\r\n\t\tif (propertyValue == null) {\r\n\t\t\treturn element.scrollWidth + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Get the scrollHeight of an element.\r\n\t */\r\n\tfunction clientHeight(element: HTMLorSVGElement): string;\r\n\tfunction clientHeight(element: HTMLorSVGElement, propertyValue: string): void;\r\n\tfunction clientHeight(element: HTMLorSVGElement, propertyValue?: string): string | void {\r\n\t\tif (propertyValue == null) {\r\n\t\t\treturn element.clientHeight + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Get the scrollHeight of an element.\r\n\t */\r\n\tfunction scrollHeight(element: HTMLorSVGElement): string;\r\n\tfunction scrollHeight(element: HTMLorSVGElement, propertyValue: string): void;\r\n\tfunction scrollHeight(element: HTMLorSVGElement, propertyValue?: string): string | void {\r\n\t\tif (propertyValue == null) {\r\n\t\t\treturn element.scrollHeight + \"px\";\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Scroll an element.\r\n\t */\r\n\tfunction scroll(direction: \"Height\", end: \"Top\"): VelocityNormalizationsFn;\r\n\tfunction scroll(direction: \"Width\", end: \"Left\"): VelocityNormalizationsFn;\r\n\tfunction scroll(direction: \"Height\" | \"Width\", end: \"Top\" | \"Left\"): VelocityNormalizationsFn {\r\n\t\treturn function(element: HTMLorSVGElement, propertyValue?: string): string | void {\r\n\t\t\tif (propertyValue == null) {\r\n\t\t\t\t// Make sure we have these values cached.\r\n\t\t\t\tCSS.getPropertyValue(element, \"client\" + direction, null, true);\r\n\t\t\t\tCSS.getPropertyValue(element, \"scroll\" + direction, null, true);\r\n\t\t\t\tCSS.getPropertyValue(element, \"scroll\" + end, null, true);\r\n\t\t\t\treturn element[\"scroll\" + end] + \"px\";\r\n\t\t\t}\r\n\t\t\t//\t\tconsole.log(\"setScrollTop\", propertyValue)\r\n\t\t\tconst value = parseFloat(propertyValue),\r\n\t\t\t\tunit = propertyValue.replace(String(value), \"\");\r\n\r\n\t\t\tswitch (unit) {\r\n\t\t\t\tcase \"\":\r\n\t\t\t\tcase \"px\":\r\n\t\t\t\t\telement[\"scroll\" + end] = value;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"%\":\r\n\t\t\t\t\tlet client = parseFloat(CSS.getPropertyValue(element, \"client\" + direction)),\r\n\t\t\t\t\t\tscroll = parseFloat(CSS.getPropertyValue(element, \"scroll\" + direction));\r\n\r\n\t\t\t\t\t//\t\t\t\tconsole.log(\"setScrollTop percent\", scrollHeight, clientHeight, value, Math.max(0, scrollHeight - clientHeight) * value / 100)\r\n\t\t\t\t\telement[\"scroll\" + end] = Math.max(0, scroll - client) * value / 100;\r\n\t\t\t}\r\n\t\t} as VelocityNormalizationsFn;\r\n\t}\r\n\r\n\tregisterNormalization([HTMLElement, \"scroll\", scroll(\"Height\", \"Top\"), false]);\r\n\tregisterNormalization([HTMLElement, \"scrollTop\", scroll(\"Height\", \"Top\"), false]);\r\n\tregisterNormalization([HTMLElement, \"scrollLeft\", scroll(\"Width\", \"Left\"), false]);\r\n\tregisterNormalization([HTMLElement, \"scrollWidth\", scrollWidth]);\r\n\tregisterNormalization([HTMLElement, \"clientWidth\", clientWidth]);\r\n\tregisterNormalization([HTMLElement, \"scrollHeight\", scrollHeight]);\r\n\tregisterNormalization([HTMLElement, \"clientHeight\", clientHeight]);\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n * \r\n * This handles all CSS style properties. With browser prefixed properties it\r\n * will register a version that handles setting (and getting) both the prefixed\r\n * and non-prefixed version.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Return a Normalisation that can be used to set / get a prefixed style\r\n\t * property.\r\n\t */\r\n\tfunction getSetPrefixed(propertyName: string, unprefixed: string) {\r\n\t\treturn function(element: HTMLorSVGElement, propertyValue?: string): string | void {\r\n\t\t\tif (propertyValue === undefined) {\r\n\t\t\t\treturn CSS.computePropertyValue(element, propertyName) || CSS.computePropertyValue(element, unprefixed);\r\n\t\t\t}\r\n\t\t\telement.style[propertyName] = element.style[unprefixed] = propertyValue;\r\n\t\t} as VelocityNormalizationsFn;\r\n\t}\r\n\r\n\t/**\r\n\t * Return a Normalisation that can be used to set / get a style property.\r\n\t */\r\n\tfunction getSetStyle(propertyName: string) {\r\n\t\treturn function(element: HTMLorSVGElement, propertyValue?: string): string | void {\r\n\t\t\tif (propertyValue === undefined) {\r\n\t\t\t\treturn CSS.computePropertyValue(element, propertyName);\r\n\t\t\t}\r\n\t\t\telement.style[propertyName] = propertyValue;\r\n\t\t} as VelocityNormalizationsFn;\r\n\t}\r\n\r\n\tconst rxVendors = /^(webkit|moz|ms|o)[A-Z]/,\r\n\t\trxUnit = /^\\d+([a-z]+)/,\r\n\t\tprefixElement = State.prefixElement;\r\n\r\n\tfor (const propertyName in prefixElement.style) {\r\n\t\tif (rxVendors.test(propertyName)) {\r\n\t\t\tlet unprefixed = propertyName.replace(/^[a-z]+([A-Z])/, ($, letter: string) => letter.toLowerCase());\r\n\r\n\t\t\tif (ALL_VENDOR_PREFIXES || isString(prefixElement.style[unprefixed])) {\r\n\t\t\t\tregisterNormalization([Element, unprefixed, getSetPrefixed(propertyName, unprefixed)]);\r\n\t\t\t}\r\n\t\t} else if (!hasNormalization([Element, propertyName])) {\r\n\t\t\tregisterNormalization([Element, propertyName, getSetStyle(propertyName)]);\r\n\t\t}\r\n\t}\r\n}\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * A fake normalization used to allow the \"tween\" property easy access.\r\n\t */\r\n\tfunction getSetTween(element: HTMLorSVGElement, propertyValue?: string) {\r\n\t\tif (propertyValue === undefined) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tregisterNormalization([Element, \"tween\", getSetTween]);\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Call Completion\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/**\r\n\t * Call the complete method of an animation in a separate function so it can\r\n\t * benefit from JIT compiling while still having a try/catch block.\r\n\t */\r\n\tfunction callComplete(activeCall: AnimationCall) {\r\n\t\ttry {\r\n\t\t\tconst elements = activeCall.elements;\r\n\r\n\t\t\t(activeCall.options.complete as VelocityCallback).call(elements, elements, activeCall);\r\n\t\t} catch (error) {\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tthrow error;\r\n\t\t\t}, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Complete an animation. This might involve restarting (for loop or repeat\r\n\t * options). Once it is finished we also check for any callbacks or Promises\r\n\t * that need updating.\r\n\t */\r\n\texport function completeCall(activeCall: AnimationCall) {\r\n\t\t//\t\tconsole.log(\"complete\", activeCall)\r\n\t\t// TODO: Check if it's not been completed already\r\n\r\n\t\tconst options = activeCall.options,\r\n\t\t\tqueue = getValue(activeCall.queue, options.queue),\r\n\t\t\tisLoop = getValue(activeCall.loop, options.loop, defaults.loop),\r\n\t\t\tisRepeat = getValue(activeCall.repeat, options.repeat, defaults.repeat),\r\n\t\t\tisStopped = activeCall._flags & AnimationFlags.STOPPED;\r\n\r\n\t\tif (!isStopped && (isLoop || isRepeat)) {\r\n\r\n\t\t\t////////////////////\r\n\t\t\t// Option: Loop //\r\n\t\t\t// Option: Repeat //\r\n\t\t\t////////////////////\r\n\r\n\t\t\tif (isRepeat && isRepeat !== true) {\r\n\t\t\t\tactiveCall.repeat = isRepeat - 1;\r\n\t\t\t} else if (isLoop && isLoop !== true) {\r\n\t\t\t\tactiveCall.loop = isLoop - 1;\r\n\t\t\t\tactiveCall.repeat = getValue(activeCall.repeatAgain, options.repeatAgain, defaults.repeatAgain);\r\n\t\t\t}\r\n\t\t\tif (isLoop) {\r\n\t\t\t\tactiveCall._flags ^= AnimationFlags.REVERSE;\r\n\t\t\t}\r\n\t\t\tif (queue !== false) {\r\n\t\t\t\t// Can't be called when stopped so no need for an extra check.\r\n\t\t\t\tData(activeCall.element).lastFinishList[queue] = activeCall.timeStart + getValue(activeCall.duration, options.duration, defaults.duration);\r\n\t\t\t}\r\n\t\t\tactiveCall.timeStart = activeCall.ellapsedTime = activeCall.percentComplete = 0;\r\n\t\t\tactiveCall._flags &= ~AnimationFlags.STARTED;\r\n\t\t} else {\r\n\t\t\tconst element = activeCall.element,\r\n\t\t\t\tdata = Data(element);\r\n\r\n\t\t\tif (!--data.count && !isStopped) {\r\n\r\n\t\t\t\t////////////////////////\r\n\t\t\t\t// Feature: Classname //\r\n\t\t\t\t////////////////////////\r\n\r\n\t\t\t\tremoveClass(element, State.className);\r\n\t\t\t}\r\n\r\n\t\t\t//////////////////////\r\n\t\t\t// Option: Complete //\r\n\t\t\t//////////////////////\r\n\r\n\t\t\t// If this is the last animation in this list then we can check for\r\n\t\t\t// and complete calls or Promises.\r\n\t\t\t// TODO: When deleting an element we need to adjust these values.\r\n\t\t\tif (options && ++options._completed === options._total) {\r\n\t\t\t\tif (!isStopped && options.complete) {\r\n\t\t\t\t\t// We don't call the complete if the animation is stopped,\r\n\t\t\t\t\t// and we clear the key to prevent it being called again.\r\n\t\t\t\t\tcallComplete(activeCall);\r\n\t\t\t\t\toptions.complete = null;\r\n\t\t\t\t}\r\n\t\t\t\tconst resolver = options._resolver;\r\n\r\n\t\t\t\tif (resolver) {\r\n\t\t\t\t\t// Fulfil the Promise\r\n\t\t\t\t\tresolver(activeCall.elements as any);\r\n\t\t\t\t\tdelete options._resolver;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t///////////////////\r\n\t\t\t// Option: Queue //\r\n\t\t\t///////////////////\r\n\r\n\t\t\tif (queue !== false) {\r\n\t\t\t\t// We only do clever things with queues...\r\n\t\t\t\tif (!isStopped) {\r\n\t\t\t\t\t// If we're not stopping an animation, we need to remember\r\n\t\t\t\t\t// what time it finished so that the next animation in\r\n\t\t\t\t\t// sequence gets the correct start time.\r\n\t\t\t\t\tdata.lastFinishList[queue] = activeCall.timeStart + getValue(activeCall.duration, options.duration, defaults.duration);\r\n\t\t\t\t}\r\n\t\t\t\t// Start the next animation in sequence, or delete the queue if\r\n\t\t\t\t// this was the last one.\r\n\t\t\t\tdequeue(element, queue);\r\n\t\t\t}\r\n\t\t\t// Cleanup any pointers, and remember the last animation etc.\r\n\t\t\tfreeAnimationCall(activeCall);\r\n\t\t}\r\n\t}\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\ninterface Element {\r\n\tvelocityData: ElementData;\r\n}\r\n\r\n/**\r\n * Get (and create) the internal data store for an element.\r\n */\r\nfunction Data(element: HTMLorSVGElement): ElementData {\r\n\t// Use a string member so Uglify doesn't mangle it.\r\n\tconst data = element[\"velocityData\"];\r\n\r\n\tif (data) {\r\n\t\treturn data;\r\n\t}\r\n\tlet types = 0;\r\n\r\n\tfor (let index = 0, constructors = VelocityStatic.constructors; index < constructors.length; index++) {\r\n\t\tif (element instanceof constructors[index]) {\r\n\t\t\ttypes |= 1 << index;\r\n\t\t}\r\n\t}\r\n\t// Do it this way so it errors on incorrect data.\r\n\tlet newData: ElementData = {\r\n\t\ttypes: types,\r\n\t\tcount: 0,\r\n\t\tcomputedStyle: null,\r\n\t\tcache: Object.create(null),\r\n\t\tqueueList: Object.create(null),\r\n\t\tlastAnimationList: Object.create(null),\r\n\t\tlastFinishList: Object.create(null)\r\n\t};\r\n\tObject.defineProperty(element, \"velocityData\", {\r\n\t\tvalue: newData\r\n\t});\r\n\treturn newData;\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/**\r\n\t * Set to true, 1 or 2 (most verbose) to output debug info to console.\r\n\t */\r\n\texport let debug: boolean | 1 | 2 = false;\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Velocity option defaults, which can be overriden by the user.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t// NOTE: Add the variable here, then add the default state in \"reset\" below.\r\n\tlet _cache: boolean,\r\n\t\t_begin: VelocityCallback,\r\n\t\t_complete: VelocityCallback,\r\n\t\t_delay: number,\r\n\t\t_duration: number,\r\n\t\t_easing: VelocityEasingType,\r\n\t\t_fpsLimit: number,\r\n\t\t_loop: number | true,\r\n\t\t_minFrameTime: number,\r\n\t\t_promise: boolean,\r\n\t\t_promiseRejectEmpty: boolean,\r\n\t\t_queue: string | false,\r\n\t\t_repeat: number | true,\r\n\t\t_speed: number,\r\n\t\t_sync: boolean;\r\n\r\n\texport const defaults: StrictVelocityOptions & {reset?: () => void} = {\r\n\t\tmobileHA: true\r\n\t};\r\n\r\n\t// IMPORTANT: Make sure any new defaults get added to the actions/set.ts list\r\n\tObject.defineProperties(defaults, {\r\n\t\treset: {\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: function() {\r\n\t\t\t\t_cache = DEFAULT_CACHE;\r\n\t\t\t\t_begin = undefined;\r\n\t\t\t\t_complete = undefined;\r\n\t\t\t\t_delay = DEFAULT_DELAY;\r\n\t\t\t\t_duration = DEFAULT_DURATION;\r\n\t\t\t\t_easing = validateEasing(DEFAULT_EASING, DEFAULT_DURATION);\r\n\t\t\t\t_fpsLimit = DEFAULT_FPSLIMIT;\r\n\t\t\t\t_loop = DEFAULT_LOOP;\r\n\t\t\t\t_minFrameTime = FUZZY_MS_PER_SECOND / DEFAULT_FPSLIMIT;\r\n\t\t\t\t_promise = DEFAULT_PROMISE;\r\n\t\t\t\t_promiseRejectEmpty = DEFAULT_PROMISE_REJECT_EMPTY;\r\n\t\t\t\t_queue = DEFAULT_QUEUE;\r\n\t\t\t\t_repeat = DEFAULT_REPEAT;\r\n\t\t\t\t_speed = DEFAULT_SPEED;\r\n\t\t\t\t_sync = DEFAULT_SYNC;\r\n\t\t\t}\r\n\t\t},\r\n\t\tcache: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): boolean {\r\n\t\t\t\treturn _cache;\r\n\t\t\t},\r\n\t\t\tset: function(value: boolean) {\r\n\t\t\t\tvalue = validateCache(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_cache = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tbegin: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): VelocityCallback {\r\n\t\t\t\treturn _begin;\r\n\t\t\t},\r\n\t\t\tset: function(value: VelocityCallback) {\r\n\t\t\t\tvalue = validateBegin(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_begin = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tcomplete: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): VelocityCallback {\r\n\t\t\t\treturn _complete;\r\n\t\t\t},\r\n\t\t\tset: function(value: VelocityCallback) {\r\n\t\t\t\tvalue = validateComplete(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_complete = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tdelay: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): \"fast\" | \"normal\" | \"slow\" | number {\r\n\t\t\t\treturn _delay;\r\n\t\t\t},\r\n\t\t\tset: function(value: \"fast\" | \"normal\" | \"slow\" | number) {\r\n\t\t\t\tvalue = validateDelay(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_delay = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tduration: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): \"fast\" | \"normal\" | \"slow\" | number {\r\n\t\t\t\treturn _duration;\r\n\t\t\t},\r\n\t\t\tset: function(value: \"fast\" | \"normal\" | \"slow\" | number) {\r\n\t\t\t\tvalue = validateDuration(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_duration = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\teasing: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): VelocityEasingType {\r\n\t\t\t\treturn _easing;\r\n\t\t\t},\r\n\t\t\tset: function(value: VelocityEasingType) {\r\n\t\t\t\tvalue = validateEasing(value, _duration);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_easing = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tfpsLimit: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): number | false {\r\n\t\t\t\treturn _fpsLimit;\r\n\t\t\t},\r\n\t\t\tset: function(value: number | false) {\r\n\t\t\t\tvalue = validateFpsLimit(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_fpsLimit = value;\r\n\t\t\t\t\t_minFrameTime = FUZZY_MS_PER_SECOND / value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tloop: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): number | true {\r\n\t\t\t\treturn _loop;\r\n\t\t\t},\r\n\t\t\tset: function(value: number | boolean) {\r\n\t\t\t\tvalue = validateLoop(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_loop = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tminFrameTime: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): number | false {\r\n\t\t\t\treturn _minFrameTime;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpromise: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): boolean {\r\n\t\t\t\treturn _promise;\r\n\t\t\t},\r\n\t\t\tset: function(value: boolean) {\r\n\t\t\t\tvalue = validatePromise(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_promise = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tpromiseRejectEmpty: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): boolean {\r\n\t\t\t\treturn _promiseRejectEmpty;\r\n\t\t\t},\r\n\t\t\tset: function(value: boolean) {\r\n\t\t\t\tvalue = validatePromiseRejectEmpty(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_promiseRejectEmpty = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tqueue: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): string | false {\r\n\t\t\t\treturn _queue;\r\n\t\t\t},\r\n\t\t\tset: function(value: string | false) {\r\n\t\t\t\tvalue = validateQueue(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_queue = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\trepeat: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): number | true {\r\n\t\t\t\treturn _repeat;\r\n\t\t\t},\r\n\t\t\tset: function(value: number | boolean) {\r\n\t\t\t\tvalue = validateRepeat(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_repeat = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tspeed: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): number {\r\n\t\t\t\treturn _speed;\r\n\t\t\t},\r\n\t\t\tset: function(value: number) {\r\n\t\t\t\tvalue = validateSpeed(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_speed = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tsync: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function(): boolean {\r\n\t\t\t\treturn _sync;\r\n\t\t\t},\r\n\t\t\tset: function(value: boolean) {\r\n\t\t\t\tvalue = validateSync(value);\r\n\t\t\t\tif (value !== undefined) {\r\n\t\t\t\t\t_sync = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\tdefaults.reset();\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Velocity-wide animation time remapping for testing purposes.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/**\r\n\t * In mock mode, all animations are forced to complete immediately upon the\r\n\t * next rAF tick. If there are further animations queued then they will each\r\n\t * take one single frame in turn. Loops and repeats will be disabled while\r\n\t * mock = true.\r\n\t */\r\n\texport let mock: boolean = false;\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/**\r\n\t * Used to patch any object to allow Velocity chaining. In order to chain an\r\n\t * object must either be treatable as an array - with a .length\r\n\t * property, and each member a Node, or a Node directly.\r\n\t * \r\n\t * By default Velocity will try to patch window,\r\n\t * jQuery, Zepto, and several classes that return\r\n\t * Nodes or lists of Nodes.\r\n\t * \r\n\t * @public\r\n\t */\r\n\texport function patch(proto: any, global?: boolean) {\r\n\t\ttry {\r\n\t\t\tdefineProperty(proto, (global ? \"V\" : \"v\") + \"elocity\", VelocityFn);\r\n\t\t} catch (e) {\r\n\t\t\tconsole.warn(\"VelocityJS: Error when trying to add prototype.\", e);\r\n\t\t}\r\n\t}\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * AnimationCall queue\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Simple queue management. Un-named queue is directly within the element data,\r\n\t * named queue is within an object within it.\r\n\t */\r\n\tfunction animate(animation: AnimationCall) {\r\n\t\tconst prev = State.last;\r\n\r\n\t\tanimation._prev = prev;\r\n\t\tanimation._next = undefined;\r\n\t\tif (prev) {\r\n\t\t\tprev._next = animation;\r\n\t\t} else {\r\n\t\t\tState.first = animation;\r\n\t\t}\r\n\t\tState.last = animation;\r\n\t\tif (!State.firstNew) {\r\n\t\t\tState.firstNew = animation;\r\n\t\t}\r\n\t\tconst element = animation.element,\r\n\t\t\tdata = Data(element);\r\n\r\n\t\tif (!data.count++) {\r\n\r\n\t\t\t////////////////////////\r\n\t\t\t// Feature: Classname //\r\n\t\t\t////////////////////////\r\n\r\n\t\t\taddClass(element, State.className);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Add an item to an animation queue.\r\n\t */\r\n\texport function queue(element: HTMLorSVGElement, animation: AnimationCall, queue: string | false): void {\r\n\t\tconst data = Data(element);\r\n\r\n\t\tif (queue !== false) {\r\n\t\t\t// Store the last animation added so we can use it for the\r\n\t\t\t// beginning of the next one.\r\n\t\t\tdata.lastAnimationList[queue] = animation;\r\n\t\t}\r\n\t\tif (queue === false) {\r\n\t\t\tanimate(animation);\r\n\t\t} else {\r\n\t\t\tif (!isString(queue)) {\r\n\t\t\t\tqueue = \"\";\r\n\t\t\t}\r\n\t\t\tlet last = data.queueList[queue];\r\n\r\n\t\t\tif (!last) {\r\n\t\t\t\tif (last === null) {\r\n\t\t\t\t\tdata.queueList[queue] = animation;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdata.queueList[queue] = null;\r\n\t\t\t\t\tanimate(animation);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\twhile (last._next) {\r\n\t\t\t\t\tlast = last._next;\r\n\t\t\t\t}\r\n\t\t\t\tlast._next = animation;\r\n\t\t\t\tanimation._prev = last;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Start the next animation on this element's queue (named or default).\r\n\t *\r\n\t * @returns the next animation that is starting.\r\n\t */\r\n\texport function dequeue(element: HTMLorSVGElement, queue?: string | boolean, skip?: boolean): AnimationCall {\r\n\t\tif (queue !== false) {\r\n\t\t\tif (!isString(queue)) {\r\n\t\t\t\tqueue = \"\";\r\n\t\t\t}\r\n\t\t\tconst data = Data(element),\r\n\t\t\t\tanimation = data.queueList[queue];\r\n\r\n\t\t\tif (animation) {\r\n\t\t\t\tdata.queueList[queue] = animation._next || null;\r\n\t\t\t\tif (!skip) {\r\n\t\t\t\t\tanimate(animation);\r\n\t\t\t\t}\r\n\t\t\t} else if (animation === null) {\r\n\t\t\t\tdelete data.queueList[queue];\r\n\t\t\t}\r\n\t\t\treturn animation;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Remove an animation from the active animation list. If it has a queue set\r\n\t * then remember it as the last animation for that queue, and free the one\r\n\t * that was previously there. If the animation list is completely empty then\r\n\t * mark us as finished.\r\n\t */\r\n\texport function freeAnimationCall(animation: AnimationCall): void {\r\n\t\tconst next = animation._next,\r\n\t\t\tprev = animation._prev,\r\n\t\t\tqueue = animation.queue == null ? animation.options.queue : animation.queue;\r\n\r\n\t\tif (State.firstNew === animation) {\r\n\t\t\tState.firstNew = next;\r\n\t\t}\r\n\t\tif (State.first === animation) {\r\n\t\t\tState.first = next;\r\n\t\t} else if (prev) {\r\n\t\t\tprev._next = next;\r\n\t\t}\r\n\t\tif (State.last === animation) {\r\n\t\t\tState.last = prev;\r\n\t\t} else if (next) {\r\n\t\t\tnext._prev = prev;\r\n\t\t}\r\n\t\tif (queue) {\r\n\t\t\tconst data = Data(animation.element);\r\n\r\n\t\t\tif (data) {\r\n\t\t\t\tanimation._next = animation._prev = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/* Container for the user's custom animation redirects that are referenced by name in place of the properties map argument. */\r\n\texport let Redirects = {/* Manually registered by the user. */};\r\n\r\n\t/***********************\r\n\t Packaged Redirects\r\n\t ***********************/\r\n\r\n\t/* slideUp, slideDown */\r\n\t[\"Down\", \"Up\"].forEach(function(direction) {\r\n\t\tRedirects[\"slide\" + direction] = function(element: HTMLorSVGElement, options: VelocityOptions, elementsIndex: number, elementsSize, elements: HTMLorSVGElement[], resolver: (value?: HTMLorSVGElement[] | VelocityResult) => void) {\r\n\t\t\tlet opts = {...options},\r\n\t\t\t\tbegin = opts.begin,\r\n\t\t\t\tcomplete = opts.complete,\r\n\t\t\t\tinlineValues = {},\r\n\t\t\t\tcomputedValues = {\r\n\t\t\t\t\theight: \"\",\r\n\t\t\t\t\tmarginTop: \"\",\r\n\t\t\t\t\tmarginBottom: \"\",\r\n\t\t\t\t\tpaddingTop: \"\",\r\n\t\t\t\t\tpaddingBottom: \"\"\r\n\t\t\t\t};\r\n\r\n\t\t\tif (opts.display === undefined) {\r\n\t\t\t\tlet isInline = inlineRx.test(element.nodeName.toLowerCase());\r\n\r\n\t\t\t\t/* Show the element before slideDown begins and hide the element after slideUp completes. */\r\n\t\t\t\t/* Note: Inline elements cannot have dimensions animated, so they're reverted to inline-block. */\r\n\t\t\t\topts.display = (direction === \"Down\" ? (isInline ? \"inline-block\" : \"block\") : \"none\");\r\n\t\t\t}\r\n\r\n\t\t\topts.begin = function() {\r\n\t\t\t\t/* If the user passed in a begin callback, fire it now. */\r\n\t\t\t\tif (elementsIndex === 0 && begin) {\r\n\t\t\t\t\tbegin.call(elements, elements);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Cache the elements' original vertical dimensional property values so that we can animate back to them. */\r\n\t\t\t\tfor (let property in computedValues) {\r\n\t\t\t\t\tif (!computedValues.hasOwnProperty(property)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tinlineValues[property] = element.style[property];\r\n\r\n\t\t\t\t\t/* For slideDown, use forcefeeding to animate all vertical properties from 0. For slideUp,\r\n\t\t\t\t\t use forcefeeding to start from computed values and animate down to 0. */\r\n\t\t\t\t\tlet propertyValue = CSS.getPropertyValue(element, property);\r\n\t\t\t\t\tcomputedValues[property] = (direction === \"Down\") ? [propertyValue, 0] : [0, propertyValue];\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Force vertical overflow content to clip so that sliding works as expected. */\r\n\t\t\t\t(inlineValues as any).overflow = element.style.overflow;\r\n\t\t\t\telement.style.overflow = \"hidden\";\r\n\t\t\t};\r\n\r\n\t\t\topts.complete = function() {\r\n\t\t\t\t/* Reset element to its pre-slide inline values once its slide animation is complete. */\r\n\t\t\t\tfor (let property in inlineValues) {\r\n\t\t\t\t\tif (inlineValues.hasOwnProperty(property)) {\r\n\t\t\t\t\t\telement.style[property] = inlineValues[property];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* If the user passed in a complete callback, fire it now. */\r\n\t\t\t\tif (elementsIndex === elementsSize - 1) {\r\n\t\t\t\t\tif (complete) {\r\n\t\t\t\t\t\tcomplete.call(elements, elements);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (resolver) {\r\n\t\t\t\t\t\tresolver(elements);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t(VelocityFn as any)(element, computedValues, opts);\r\n\t\t};\r\n\t});\r\n\r\n\t/* fadeIn, fadeOut */\r\n\t[\"In\", \"Out\"].forEach(function(direction) {\r\n\t\tRedirects[\"fade\" + direction] = function(element: HTMLorSVGElement, options: VelocityOptions, elementsIndex: number, elementsSize, elements: HTMLorSVGElement[], promiseData) {\r\n\t\t\tlet opts = {...options},\r\n\t\t\t\tcomplete = opts.complete,\r\n\t\t\t\tpropertiesMap = {\r\n\t\t\t\t\topacity: (direction === \"In\") ? 1 : 0\r\n\t\t\t\t};\r\n\r\n\t\t\t/* Since redirects are triggered individually for each element in the animated set, avoid repeatedly triggering\r\n\t\t\t callbacks by firing them only when the final element has been reached. */\r\n\t\t\tif (elementsIndex !== 0) {\r\n\t\t\t\topts.begin = null;\r\n\t\t\t}\r\n\t\t\tif (elementsIndex !== elementsSize - 1) {\r\n\t\t\t\topts.complete = null;\r\n\t\t\t} else {\r\n\t\t\t\topts.complete = function() {\r\n\t\t\t\t\tif (complete) {\r\n\t\t\t\t\t\tcomplete.call(elements, elements);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (promiseData) {\r\n\t\t\t\t\t\tpromiseData.resolver(elements);\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\t/* If a display was passed in, use it. Otherwise, default to \"none\" for fadeOut or the element-specific default for fadeIn. */\r\n\t\t\t/* Note: We allow users to pass in \"null\" to skip display setting altogether. */\r\n\t\t\tif (opts.display === undefined) {\r\n\t\t\t\topts.display = (direction === \"In\" ? \"auto\" : \"none\");\r\n\t\t\t}\r\n\r\n\t\t\t(VelocityFn as any)(this, propertiesMap, opts);\r\n\t\t};\r\n\t});\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Effect Registration\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/* Animate the expansion/contraction of the elements' parent's height for In/Out effects. */\r\n\tfunction animateParentHeight(elements: HTMLorSVGElement | HTMLorSVGElement[], direction, totalDuration, stagger) {\r\n\t\tlet totalHeightDelta = 0,\r\n\t\t\tparentNode: HTMLorSVGElement;\r\n\r\n\t\t/* Sum the total height (including padding and margin) of all targeted elements. */\r\n\t\t((elements as HTMLorSVGElement).nodeType ? [elements as HTMLorSVGElement] : elements as HTMLorSVGElement[]).forEach(function(element: HTMLorSVGElement, i) {\r\n\t\t\tif (stagger) {\r\n\t\t\t\t/* Increase the totalDuration by the successive delay amounts produced by the stagger option. */\r\n\t\t\t\ttotalDuration += i * stagger;\r\n\t\t\t}\r\n\r\n\t\t\tparentNode = element.parentNode as HTMLorSVGElement;\r\n\r\n\t\t\tlet propertiesToSum = [\"height\", \"paddingTop\", \"paddingBottom\", \"marginTop\", \"marginBottom\"];\r\n\r\n\t\t\t/* If box-sizing is border-box, the height already includes padding and margin */\r\n\t\t\tif (CSS.getPropertyValue(element, \"boxSizing\").toString().toLowerCase() === \"border-box\") {\r\n\t\t\t\tpropertiesToSum = [\"height\"];\r\n\t\t\t}\r\n\r\n\t\t\tpropertiesToSum.forEach(function(property) {\r\n\t\t\t\ttotalHeightDelta += parseFloat(CSS.getPropertyValue(element, property) as string);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t/* Animate the parent element's height adjustment (with a varying duration multiplier for aesthetic benefits). */\r\n\t\t// TODO: Get this typesafe again\r\n\t\t(VelocityFn as any)(\r\n\t\t\tparentNode,\r\n\t\t\t{height: (direction === \"In\" ? \"+\" : \"-\") + \"=\" + totalHeightDelta},\r\n\t\t\t{queue: false, easing: \"ease-in-out\", duration: totalDuration * (direction === \"In\" ? 0.6 : 1)}\r\n\t\t);\r\n\t}\r\n\r\n\t/* Note: RegisterUI is a legacy name. */\r\n\texport function RegisterEffect(effectName: string, properties): Velocity {\r\n\r\n\t\t/* Register a custom redirect for each effect. */\r\n\t\tRedirects[effectName] = function(element, redirectOptions, elementsIndex, elementsSize, elements, resolver: (value?: HTMLorSVGElement[] | VelocityResult) => void, loop) {\r\n\t\t\tlet finalElement = (elementsIndex === elementsSize - 1),\r\n\t\t\t\ttotalDuration = 0;\r\n\r\n\t\t\tloop = loop || properties.loop;\r\n\t\t\tif (typeof properties.defaultDuration === \"function\") {\r\n\t\t\t\tproperties.defaultDuration = properties.defaultDuration.call(elements, elements);\r\n\t\t\t} else {\r\n\t\t\t\tproperties.defaultDuration = parseFloat(properties.defaultDuration);\r\n\t\t\t}\r\n\r\n\t\t\t/* Get the total duration used, so we can share it out with everything that doesn't have a duration */\r\n\t\t\tfor (let callIndex = 0; callIndex < properties.calls.length; callIndex++) {\r\n\t\t\t\tlet durationPercentage = properties.calls[callIndex][1];\r\n\t\t\t\tif (typeof durationPercentage === \"number\") {\r\n\t\t\t\t\ttotalDuration += durationPercentage;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlet shareDuration = totalDuration >= 1 ? 0 : properties.calls.length ? (1 - totalDuration) / properties.calls.length : 1;\r\n\r\n\t\t\t/* Iterate through each effect's call array. */\r\n\t\t\tfor (let callIndex = 0; callIndex < properties.calls.length; callIndex++) {\r\n\t\t\t\tlet call = properties.calls[callIndex],\r\n\t\t\t\t\tpropertyMap = call[0],\r\n\t\t\t\t\tredirectDuration = 1000,\r\n\t\t\t\t\tdurationPercentage = call[1],\r\n\t\t\t\t\tcallOptions = call[2] || {},\r\n\t\t\t\t\topts: VelocityOptions = {};\r\n\r\n\t\t\t\tif (redirectOptions.duration !== undefined) {\r\n\t\t\t\t\tredirectDuration = redirectOptions.duration;\r\n\t\t\t\t} else if (properties.defaultDuration !== undefined) {\r\n\t\t\t\t\tredirectDuration = properties.defaultDuration;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Assign the whitelisted per-call options. */\r\n\t\t\t\topts.duration = redirectDuration * (typeof durationPercentage === \"number\" ? durationPercentage : shareDuration);\r\n\t\t\t\topts.queue = redirectOptions.queue || \"\";\r\n\t\t\t\topts.easing = callOptions.easing || \"ease\";\r\n\t\t\t\topts.delay = parseFloat(callOptions.delay) || 0;\r\n\t\t\t\topts.loop = !properties.loop && callOptions.loop;\r\n\t\t\t\topts.cache = callOptions.cache || true;\r\n\r\n\t\t\t\t/* Special processing for the first effect call. */\r\n\t\t\t\tif (callIndex === 0) {\r\n\t\t\t\t\t/* If a delay was passed into the redirect, combine it with the first call's delay. */\r\n\t\t\t\t\topts.delay += (parseFloat(redirectOptions.delay) || 0);\r\n\r\n\t\t\t\t\tif (elementsIndex === 0) {\r\n\t\t\t\t\t\topts.begin = function() {\r\n\t\t\t\t\t\t\t/* Only trigger a begin callback on the first effect call with the first element in the set. */\r\n\t\t\t\t\t\t\tif (redirectOptions.begin) {\r\n\t\t\t\t\t\t\t\tredirectOptions.begin.call(elements, elements);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tlet direction = effectName.match(/(In|Out)$/);\r\n\r\n\t\t\t\t\t\t\t/* Make \"in\" transitioning elements invisible immediately so that there's no FOUC between now\r\n\t\t\t\t\t\t\t and the first RAF tick. */\r\n\t\t\t\t\t\t\tif ((direction && direction[0] === \"In\") && propertyMap.opacity !== undefined) {\r\n\t\t\t\t\t\t\t\t(elements.nodeType ? [elements] : elements).forEach(function(element) {\r\n\t\t\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"opacity\", 0);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Only trigger animateParentHeight() if we're using an In/Out transition. */\r\n\t\t\t\t\t\t\tif (redirectOptions.animateParentHeight && direction) {\r\n\t\t\t\t\t\t\t\tanimateParentHeight(elements, direction[0], redirectDuration + (opts.delay as number), redirectOptions.stagger);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* If the user isn't overriding the display option, default to \"auto\" for \"In\"-suffixed transitions. */\r\n\t\t\t\t\t//\t\t\t\t\tif (redirectOptions.display !== null) {\r\n\t\t\t\t\t//\t\t\t\t\t\tif (redirectOptions.display !== undefined && redirectOptions.display !== \"none\") {\r\n\t\t\t\t\t//\t\t\t\t\t\t\topts.display = redirectOptions.display;\r\n\t\t\t\t\t//\t\t\t\t\t\t} else if (/In$/.test(effectName)) {\r\n\t\t\t\t\t//\t\t\t\t\t\t\t/* Inline elements cannot be subjected to transforms, so we switch them to inline-block. */\r\n\t\t\t\t\t//\t\t\t\t\t\t\tlet defaultDisplay = CSS.Values.getDisplayType(element);\r\n\t\t\t\t\t//\t\t\t\t\t\t\topts.display = (defaultDisplay === \"inline\") ? \"inline-block\" : defaultDisplay;\r\n\t\t\t\t\t//\t\t\t\t\t\t}\r\n\t\t\t\t\t//\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (redirectOptions.visibility && redirectOptions.visibility !== \"hidden\") {\r\n\t\t\t\t\t\topts.visibility = redirectOptions.visibility;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Special processing for the last effect call. */\r\n\t\t\t\tif (callIndex === properties.calls.length - 1) {\r\n\t\t\t\t\t/* Append promise resolving onto the user's redirect callback. */\r\n\t\t\t\t\tlet injectFinalCallbacks = function() {\r\n\t\t\t\t\t\tif ((redirectOptions.display === undefined || redirectOptions.display === \"none\") && /Out$/.test(effectName)) {\r\n\t\t\t\t\t\t\t(elements.nodeType ? [elements] : elements).forEach(function(element) {\r\n\t\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"display\", \"none\");\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (redirectOptions.complete) {\r\n\t\t\t\t\t\t\tredirectOptions.complete.call(elements, elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (resolver) {\r\n\t\t\t\t\t\t\tresolver(elements || element);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\topts.complete = function() {\r\n\t\t\t\t\t\tif (loop) {\r\n\t\t\t\t\t\t\tRedirects[effectName](element, redirectOptions, elementsIndex, elementsSize, elements, resolver, loop === true ? true : Math.max(0, loop - 1));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (properties.reset) {\r\n\t\t\t\t\t\t\tfor (let resetProperty in properties.reset) {\r\n\t\t\t\t\t\t\t\tif (!properties.reset.hasOwnProperty(resetProperty)) {\r\n\t\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tlet resetValue = properties.reset[resetProperty];\r\n\r\n\t\t\t\t\t\t\t\t/* Format each non-array value in the reset property map to [ value, value ] so that changes apply\r\n\t\t\t\t\t\t\t\t immediately and DOM querying is avoided (via forcefeeding). */\r\n\t\t\t\t\t\t\t\t/* Note: Don't forcefeed hooks, otherwise their hook roots will be defaulted to their null values. */\r\n\t\t\t\t\t\t\t\t// TODO: Fix this\r\n\t\t\t\t\t\t\t\t//\t\t\t\t\t\t\t\tif (CSS.Hooks.registered[resetProperty] === undefined && (typeof resetValue === \"string\" || typeof resetValue === \"number\")) {\r\n\t\t\t\t\t\t\t\t//\t\t\t\t\t\t\t\t\tproperties.reset[resetProperty] = [properties.reset[resetProperty], properties.reset[resetProperty]];\r\n\t\t\t\t\t\t\t\t//\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* So that the reset values are applied instantly upon the next rAF tick, use a zero duration and parallel queueing. */\r\n\t\t\t\t\t\t\tlet resetOptions: VelocityOptions = {duration: 0, queue: false};\r\n\r\n\t\t\t\t\t\t\t/* Since the reset option uses up the complete callback, we trigger the user's complete callback at the end of ours. */\r\n\t\t\t\t\t\t\tif (finalElement) {\r\n\t\t\t\t\t\t\t\tresetOptions.complete = injectFinalCallbacks;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tVelocityFn(element, properties.reset, resetOptions);\r\n\t\t\t\t\t\t\t/* Only trigger the user's complete callback on the last effect call with the last element in the set. */\r\n\t\t\t\t\t\t} else if (finalElement) {\r\n\t\t\t\t\t\t\tinjectFinalCallbacks();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif (redirectOptions.visibility === \"hidden\") {\r\n\t\t\t\t\t\topts.visibility = redirectOptions.visibility;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tVelocityFn(element, propertyMap, opts);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/* Return the Velocity object so that RegisterUI calls can be chained. */\r\n\t\treturn VelocityFn as any;\r\n\t};\r\n};","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Sequence Running\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\t/* Note: Sequence calls must use Velocity's single-object arguments syntax. */\r\n\texport function RunSequence(originalSequence): void {\r\n\t\tlet sequence = _deepCopyObject([], originalSequence);\r\n\r\n\t\tif (sequence.length > 1) {\r\n\t\t\tsequence.reverse().forEach(function(currentCall, i) {\r\n\t\t\t\tlet nextCall = sequence[i + 1];\r\n\r\n\t\t\t\tif (nextCall) {\r\n\t\t\t\t\t/* Parallel sequence calls (indicated via sequenceQueue:false) are triggered\r\n\t\t\t\t\t in the previous call's begin callback. Otherwise, chained calls are normally triggered\r\n\t\t\t\t\t in the previous call's complete callback. */\r\n\t\t\t\t\tlet currentCallOptions = currentCall.o || currentCall.options,\r\n\t\t\t\t\t\tnextCallOptions = nextCall.o || nextCall.options;\r\n\r\n\t\t\t\t\tlet timing = (currentCallOptions && currentCallOptions.sequenceQueue === false) ? \"begin\" : \"complete\",\r\n\t\t\t\t\t\tcallbackOriginal = nextCallOptions && nextCallOptions[timing],\r\n\t\t\t\t\t\toptions = {};\r\n\r\n\t\t\t\t\toptions[timing] = function() {\r\n\t\t\t\t\t\tlet nextCallElements = nextCall.e || nextCall.elements;\r\n\t\t\t\t\t\tlet elements = nextCallElements.nodeType ? [nextCallElements] : nextCallElements;\r\n\r\n\t\t\t\t\t\tif (callbackOriginal) {\r\n\t\t\t\t\t\t\tcallbackOriginal.call(elements, elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tVelocityFn(currentCall);\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif (nextCall.o) {\r\n\t\t\t\t\t\tnextCall.o = {...nextCallOptions, ...options};\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnextCall.options = {...nextCallOptions, ...options};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tsequence.reverse();\r\n\t\t}\r\n\r\n\t\tVelocityFn(sequence[0]);\r\n\t};\r\n};\r\n","///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Tick\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\r\n\t/**\r\n\t * Call the begin method of an animation in a separate function so it can\r\n\t * benefit from JIT compiling while still having a try/catch block.\r\n\t */\r\n\texport function callBegin(activeCall: AnimationCall) {\r\n\t\ttry {\r\n\t\t\tconst elements = activeCall.elements;\r\n\r\n\t\t\t(activeCall.options.begin as VelocityCallback).call(elements, elements, activeCall);\r\n\t\t} catch (error) {\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tthrow error;\r\n\t\t\t}, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Call the progress method of an animation in a separate function so it can\r\n\t * benefit from JIT compiling while still having a try/catch block.\r\n\t */\r\n\tfunction callProgress(activeCall: AnimationCall, timeCurrent: number) {\r\n\t\ttry {\r\n\t\t\tconst elements = activeCall.elements,\r\n\t\t\t\tpercentComplete = activeCall.percentComplete,\r\n\t\t\t\toptions = activeCall.options,\r\n\t\t\t\ttweenValue = activeCall.tween;\r\n\r\n\t\t\t(activeCall.options.progress as VelocityProgress).call(elements,\r\n\t\t\t\telements,\r\n\t\t\t\tpercentComplete,\r\n\t\t\t\tMath.max(0, activeCall.timeStart + (activeCall.duration != null ? activeCall.duration : options.duration != null ? options.duration : defaults.duration) - timeCurrent),\r\n\t\t\t\ttweenValue !== undefined ? tweenValue : String(percentComplete * 100),\r\n\t\t\t\tactiveCall);\r\n\t\t} catch (error) {\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tthrow error;\r\n\t\t\t}, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tlet firstProgress: AnimationCall,\r\n\t\tfirstComplete: AnimationCall;\r\n\r\n\tfunction asyncCallbacks() {\r\n\t\tlet activeCall: AnimationCall,\r\n\t\t\tnextCall: AnimationCall;\r\n\t\t// Callbacks and complete that might read the DOM again.\r\n\r\n\t\t// Progress callback\r\n\t\tfor (activeCall = firstProgress; activeCall; activeCall = nextCall) {\r\n\t\t\tnextCall = activeCall._nextProgress;\r\n\t\t\t// Pass to an external fn with a try/catch block for optimisation\r\n\t\t\tcallProgress(activeCall, lastTick);\r\n\t\t}\r\n\t\t// Complete animations, including complete callback or looping\r\n\t\tfor (activeCall = firstComplete; activeCall; activeCall = nextCall) {\r\n\t\t\tnextCall = activeCall._nextComplete;\r\n\t\t\t/* If this call has finished tweening, pass it to complete() to handle call cleanup. */\r\n\t\t\tcompleteCall(activeCall);\r\n\t\t}\r\n\t}\r\n\r\n\t/**************\r\n\t Timing\r\n\t **************/\r\n\r\n\tconst FRAME_TIME = 1000 / 60,\r\n\t\t/**\r\n\t\t* Shim for window.performance in case it doesn't exist\r\n\t\t*/\r\n\t\tperformance = (function() {\r\n\t\t\tconst perf = window.performance || {} as Performance;\r\n\r\n\t\t\tif (typeof perf.now !== \"function\") {\r\n\t\t\t\tconst nowOffset = perf.timing && perf.timing.navigationStart ? perf.timing.navigationStart : _now();\r\n\r\n\t\t\t\tperf.now = function() {\r\n\t\t\t\t\treturn _now() - nowOffset;\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn perf;\r\n\t\t})(),\r\n\t\t/**\r\n\t\t * Proxy function for when rAF is not available - try to be as accurate\r\n\t\t * as possible with the setTimeout calls, however they are far less\r\n\t\t * accurate than rAF can be - so try not to use normally (unless the tab\r\n\t\t * is in the background).\r\n\t\t */\r\n\t\trAFProxy = function(callback: FrameRequestCallback) {\r\n\t\t\tconsole.log(\"rAFProxy\", Math.max(0, FRAME_TIME - (performance.now() - lastTick)), performance.now(), lastTick, FRAME_TIME)\r\n\t\t\treturn setTimeout(function() {\r\n\t\t\t\tcallback(performance.now());\r\n\t\t\t}, Math.max(0, FRAME_TIME - (performance.now() - lastTick)));\r\n\t\t},\r\n\t\t/* rAF shim. Gist: https://gist.github.com/julianshapiro/9497513 */\r\n\t\trAFShim = window.requestAnimationFrame || rAFProxy;\r\n\t/**\r\n\t * The ticker function being used, either rAF, or a function that\r\n\t * emulates it.\r\n\t */\r\n\tlet ticker: (callback: FrameRequestCallback) => number = document.hidden ? rAFProxy : rAFShim;\r\n\t/**\r\n\t * The time that the last animation frame ran at. Set from tick(), and used\r\n\t * for missing rAF (ie, when not in focus etc).\r\n\t */\r\n\texport let lastTick: number = 0;\r\n\r\n\t/* Inactive browser tabs pause rAF, which results in all active animations immediately sprinting to their completion states when the tab refocuses.\r\n\t To get around this, we dynamically switch rAF to setTimeout (which the browser *doesn't* pause) when the tab loses focus. We skip this for mobile\r\n\t devices to avoid wasting battery power on inactive tabs. */\r\n\t/* Note: Tab focus detection doesn't work on older versions of IE, but that's okay since they don't support rAF to begin with. */\r\n\tif (!State.isMobile && document.hidden !== undefined) {\r\n\t\tdocument.addEventListener(\"visibilitychange\", function updateTicker(event?: Event) {\r\n\t\t\tlet hidden = document.hidden;\r\n\r\n\t\t\tticker = hidden ? rAFProxy : rAFShim;\r\n\t\t\tif (event) {\r\n\t\t\t\tsetTimeout(tick, 2000);\r\n\t\t\t}\r\n\t\t\ttick();\r\n\t\t});\r\n\t}\r\n\r\n\tlet ticking: boolean;\r\n\r\n\t/**\r\n\t * Called on every tick, preferably through rAF. This is reponsible for\r\n\t * initialising any new animations, then starting any that need starting.\r\n\t * Finally it will expand any tweens and set the properties relating to\r\n\t * them. If there are any callbacks relating to the animations then they\r\n\t * will attempt to call at the end (with the exception of \"begin\").\r\n\t */\r\n\texport function tick(timestamp?: number | boolean) {\r\n\t\tif (ticking) {\r\n\t\t\t// Should never happen - but if we've swapped back from hidden to\r\n\t\t\t// visibile then we want to make sure\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tticking = true;\r\n\t\t/* An empty timestamp argument indicates that this is the first tick occurence since ticking was turned on.\r\n\t\t We leverage this metadata to fully ignore the first tick pass since RAF's initial pass is fired whenever\r\n\t\t the browser's next tick sync time occurs, which results in the first elements subjected to Velocity\r\n\t\t calls being animated out of sync with any elements animated immediately thereafter. In short, we ignore\r\n\t\t the first RAF tick pass so that elements being immediately consecutively animated -- instead of simultaneously animated\r\n\t\t by the same Velocity call -- are properly batched into the same initial RAF tick and consequently remain in sync thereafter. */\r\n\t\tif (timestamp) {\r\n\t\t\t/* We normally use RAF's high resolution timestamp but as it can be significantly offset when the browser is\r\n\t\t\t under high stress we give the option for choppiness over allowing the browser to drop huge chunks of frames.\r\n\t\t\t We use performance.now() and shim it if it doesn't exist for when the tab is hidden. */\r\n\t\t\tconst timeCurrent = timestamp && timestamp !== true ? timestamp : performance.now(),\r\n\t\t\t\tdeltaTime = lastTick ? timeCurrent - lastTick : FRAME_TIME,\r\n\t\t\t\tdefaultSpeed = defaults.speed,\r\n\t\t\t\tdefaultEasing = defaults.easing,\r\n\t\t\t\tdefaultDuration = defaults.duration;\r\n\t\t\tlet activeCall: AnimationCall,\r\n\t\t\t\tnextCall: AnimationCall,\r\n\t\t\t\tlastProgress: AnimationCall,\r\n\t\t\t\tlastComplete: AnimationCall;\r\n\r\n\t\t\tfirstProgress = null;\r\n\t\t\tfirstComplete = null;\r\n\t\t\tif (deltaTime >= defaults.minFrameTime || !lastTick) {\r\n\t\t\t\tlastTick = timeCurrent;\r\n\r\n\t\t\t\t/********************\r\n\t\t\t\t Call Iteration\r\n\t\t\t\t ********************/\r\n\r\n\t\t\t\t// Expand any tweens that might need it.\r\n\t\t\t\twhile ((activeCall = State.firstNew)) {\r\n\t\t\t\t\tvalidateTweens(activeCall);\r\n\t\t\t\t}\r\n\t\t\t\t// Iterate through each active call.\r\n\t\t\t\tfor (activeCall = State.first; activeCall && activeCall !== State.firstNew; activeCall = activeCall._next) {\r\n\t\t\t\t\tconst element = activeCall.element;\r\n\t\t\t\t\tlet data: ElementData;\r\n\r\n\t\t\t\t\t// Check to see if this element has been deleted midway\r\n\t\t\t\t\t// through the animation. If it's gone then end this\r\n\t\t\t\t\t// animation.\r\n\t\t\t\t\tif (!element.parentNode || !(data = Data(element))) {\r\n\t\t\t\t\t\t// TODO: Remove safely - decrease count, delete data, remove from arrays\r\n\t\t\t\t\t\tfreeAnimationCall(activeCall);\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Don't bother getting until we can use these.\r\n\t\t\t\t\tconst options = activeCall.options,\r\n\t\t\t\t\t\tflags = activeCall._flags;\r\n\t\t\t\t\tlet timeStart = activeCall.timeStart;\r\n\r\n\t\t\t\t\t// If this is the first time that this call has been\r\n\t\t\t\t\t// processed by tick() then we assign timeStart now so that\r\n\t\t\t\t\t// it's value is as close to the real animation start time\r\n\t\t\t\t\t// as possible.\r\n\t\t\t\t\tif (!timeStart) {\r\n\t\t\t\t\t\tconst queue = activeCall.queue != null ? activeCall.queue : options.queue;\r\n\r\n\t\t\t\t\t\ttimeStart = timeCurrent - deltaTime;\r\n\t\t\t\t\t\tif (queue !== false) {\r\n\t\t\t\t\t\t\ttimeStart = Math.max(timeStart, data.lastFinishList[queue] || 0);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tactiveCall.timeStart = timeStart;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// If this animation is paused then skip processing unless\r\n\t\t\t\t\t// it has been set to resume.\r\n\t\t\t\t\tif (flags & AnimationFlags.PAUSED) {\r\n\t\t\t\t\t\t// Update the time start to accomodate the paused\r\n\t\t\t\t\t\t// completion amount.\r\n\t\t\t\t\t\tactiveCall.timeStart += deltaTime;\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Check if this animation is ready - if it's synced then it\r\n\t\t\t\t\t// needs to wait for all other animations in the sync\r\n\t\t\t\t\tif (!(flags & AnimationFlags.READY)) {\r\n\t\t\t\t\t\tactiveCall._flags |= AnimationFlags.READY;\r\n\t\t\t\t\t\toptions._ready++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// Need to split the loop, as ready sync animations must all get\r\n\t\t\t\t// the same start time.\r\n\t\t\t\tfor (activeCall = State.first; activeCall && activeCall !== State.firstNew; activeCall = nextCall) {\r\n\t\t\t\t\tconst flags = activeCall._flags;\r\n\r\n\t\t\t\t\tnextCall = activeCall._next;\r\n\t\t\t\t\tif (!(flags & AnimationFlags.READY) || (flags & AnimationFlags.PAUSED)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst options = activeCall.options;\r\n\r\n\t\t\t\t\tif ((flags & AnimationFlags.SYNC) && options._ready < options._total) {\r\n\t\t\t\t\t\tactiveCall.timeStart += deltaTime;\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconst speed = activeCall.speed != null ? activeCall.speed : options.speed != null ? options.speed : defaultSpeed;\r\n\t\t\t\t\tlet timeStart = activeCall.timeStart;\r\n\r\n\t\t\t\t\t// Don't bother getting until we can use these.\r\n\t\t\t\t\tif (!(flags & AnimationFlags.STARTED)) {\r\n\t\t\t\t\t\tconst delay = activeCall.delay != null ? activeCall.delay : options.delay;\r\n\r\n\t\t\t\t\t\t// Make sure anything we've delayed doesn't start\r\n\t\t\t\t\t\t// animating yet, there might still be an active delay\r\n\t\t\t\t\t\t// after something has been un-paused\r\n\t\t\t\t\t\tif (delay) {\r\n\t\t\t\t\t\t\tif (timeStart + (delay / speed) > timeCurrent) {\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tactiveCall.timeStart = timeStart += delay / (delay > 0 ? speed : 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tactiveCall._flags |= AnimationFlags.STARTED;\r\n\t\t\t\t\t\t// The begin callback is fired once per call, not once\r\n\t\t\t\t\t\t// per element, and is passed the full raw DOM element\r\n\t\t\t\t\t\t// set as both its context and its first argument.\r\n\t\t\t\t\t\tif (options._started++ === 0) {\r\n\t\t\t\t\t\t\toptions._first = activeCall;\r\n\t\t\t\t\t\t\tif (options.begin) {\r\n\t\t\t\t\t\t\t\t// Pass to an external fn with a try/catch block for optimisation\r\n\t\t\t\t\t\t\t\tcallBegin(activeCall);\r\n\t\t\t\t\t\t\t\t// Only called once, even if reversed or repeated\r\n\t\t\t\t\t\t\t\toptions.begin = undefined;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (speed !== 1) {\r\n\t\t\t\t\t\t// On the first frame we may have a shorter delta\r\n\t\t\t\t\t\tconst delta = Math.min(deltaTime, timeCurrent - timeStart);\r\n\t\t\t\t\t\tactiveCall.timeStart = timeStart += delta * (1 - speed);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (options._first === activeCall && options.progress) {\r\n\t\t\t\t\t\tactiveCall._nextProgress = undefined;\r\n\t\t\t\t\t\tif (lastProgress) {\r\n\t\t\t\t\t\t\tlastProgress._nextProgress = lastProgress = activeCall;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tfirstProgress = lastProgress = activeCall;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst activeEasing = activeCall.easing != null ? activeCall.easing : options.easing != null ? options.easing : defaultEasing,\r\n\t\t\t\t\t\tmillisecondsEllapsed = activeCall.ellapsedTime = timeCurrent - timeStart,\r\n\t\t\t\t\t\tduration = activeCall.duration != null ? activeCall.duration : options.duration != null ? options.duration : defaultDuration,\r\n\t\t\t\t\t\tpercentComplete = activeCall.percentComplete = mock ? 1 : Math.min(millisecondsEllapsed / duration, 1),\r\n\t\t\t\t\t\ttweens = activeCall.tweens,\r\n\t\t\t\t\t\treverse = flags & AnimationFlags.REVERSE;\r\n\r\n\t\t\t\t\tif (percentComplete === 1) {\r\n\t\t\t\t\t\tactiveCall._nextComplete = undefined;\r\n\t\t\t\t\t\tif (lastComplete) {\r\n\t\t\t\t\t\t\tlastComplete._nextComplete = lastComplete = activeCall;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tfirstComplete = lastComplete = activeCall;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (const property in tweens) {\r\n\t\t\t\t\t\t// For every element, iterate through each property.\r\n\t\t\t\t\t\tconst tween = tweens[property],\r\n\t\t\t\t\t\t\teasing = tween.easing || activeEasing,\r\n\t\t\t\t\t\t\tpattern = tween.pattern;\r\n\t\t\t\t\t\tlet currentValue = \"\",\r\n\t\t\t\t\t\t\ti = 0;\r\n\r\n\t\t\t\t\t\tif (pattern) {\r\n\t\t\t\t\t\t\tfor (; i < pattern.length; i++) {\r\n\t\t\t\t\t\t\t\tconst startValue = tween.start[i];\r\n\r\n\t\t\t\t\t\t\t\tif (startValue == null) {\r\n\t\t\t\t\t\t\t\t\tcurrentValue += pattern[i];\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t// All easings must deal with numbers except for\r\n\t\t\t\t\t\t\t\t\t// our internal ones\r\n\t\t\t\t\t\t\t\t\tconst result = easing(reverse ? 1 - percentComplete : percentComplete, startValue as number, tween.end[i] as number, property)\r\n\r\n\t\t\t\t\t\t\t\t\tcurrentValue += pattern[i] === true ? Math.round(result) : result;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (property !== \"tween\") {\r\n\t\t\t\t\t\t\t\t// TODO: To solve an IE<=8 positioning bug, the unit type must be dropped when setting a property value of 0 - add normalisations to legacy\r\n\t\t\t\t\t\t\t\tCSS.setPropertyValue(activeCall.element, property, currentValue, tween.fn);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t// Skip the fake 'tween' property as that is only\r\n\t\t\t\t\t\t\t\t// passed into the progress callback.\r\n\t\t\t\t\t\t\t\tactiveCall.tween = currentValue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconsole.warn(\"VelocityJS: Missing pattern:\", property, JSON.stringify(tween[property]))\r\n\t\t\t\t\t\t\tdelete tweens[property];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (firstProgress || firstComplete) {\r\n\t\t\t\t\tsetTimeout(asyncCallbacks, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (State.first) {\r\n\t\t\tState.isTicking = true;\r\n\t\t\tticker(tick);\r\n\t\t} else {\r\n\t\t\tState.isTicking = false;\r\n\t\t\tlastTick = 0;\r\n\t\t}\r\n\t\tticking = false;\r\n\t}\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Use rAF high resolution timestamp when available.\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\texport let timestamp: boolean = true;\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Tweens\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\tconst rxHex = /^#([A-f\\d]{3}){1,2}$/i;\r\n\tlet commands = new Map string>();\r\n\r\n\tcommands.set(\"function\", function(value, element, elements, elementArrayIndex, propertyName, tween) {\r\n\t\treturn (value as any as VelocityPropertyValueFn).call(element, elementArrayIndex, elements.length);\r\n\t})\r\n\tcommands.set(\"number\", function(value, element, elements, elementArrayIndex, propertyName, tween) {\r\n\t\treturn value + (element instanceof HTMLElement ? getUnitType(propertyName) : \"\");\r\n\t});\r\n\tcommands.set(\"string\", function(value, element, elements, elementArrayIndex, propertyName, tween) {\r\n\t\treturn CSS.fixColors(value);\r\n\t});\r\n\tcommands.set(\"undefined\", function(value, element, elements, elementArrayIndex, propertyName, tween) {\r\n\t\treturn CSS.fixColors(CSS.getPropertyValue(element, propertyName, tween.fn) || \"\");\r\n\t});\r\n\r\n\t/**\r\n\t * Properties that take no default numeric suffix.\r\n\t */\r\n\tconst unitless = [\r\n\t\t\"borderImageSlice\",\r\n\t\t\"columnCount\",\r\n\t\t\"counterIncrement\",\r\n\t\t\"counterReset\",\r\n\t\t\"flex\",\r\n\t\t\"flexGrow\",\r\n\t\t\"flexShrink\",\r\n\t\t\"floodOpacity\",\r\n\t\t\"fontSizeAdjust\",\r\n\t\t\"fontWeight\",\r\n\t\t\"lineHeight\",\r\n\t\t\"opacity\",\r\n\t\t\"order\",\r\n\t\t\"orphans\",\r\n\t\t\"shapeImageThreshold\",\r\n\t\t\"tabSize\",\r\n\t\t\"widows\",\r\n\t\t\"zIndex\"\r\n\t];\r\n\r\n\t/**\r\n\t * Retrieve a property's default unit type. Used for assigning a unit\r\n\t * type when one is not supplied by the user. These are only valid for\r\n\t * HTMLElement style properties.\r\n\t */\r\n\tfunction getUnitType(property: string): string {\r\n\t\treturn _inArray(unitless, property) ? \"\" : \"px\";\r\n\t}\r\n\r\n\t/**\r\n\t * Expand a VelocityProperty argument into a valid sparse Tween array. This\r\n\t * pre-allocates the array as it is then the correct size and slightly\r\n\t * faster to access.\r\n\t */\r\n\texport function expandProperties(animation: AnimationCall, properties: VelocityProperties) {\r\n\t\tconst tweens = animation.tweens = Object.create(null),\r\n\t\t\telements = animation.elements,\r\n\t\t\telement = animation.element,\r\n\t\t\telementArrayIndex = elements.indexOf(element),\r\n\t\t\tdata = Data(element),\r\n\t\t\tqueue = getValue(animation.queue, animation.options.queue),\r\n\t\t\tduration = getValue(animation.options.duration, defaults.duration);\r\n\r\n\t\tfor (const property in properties) {\r\n\t\t\tconst propertyName = CSS.camelCase(property);\r\n\t\t\tlet valueData = properties[property],\r\n\t\t\t\tfn = getNormalization(element, propertyName);\r\n\r\n\t\t\tif (!fn && propertyName !== \"tween\") {\r\n\t\t\t\tif (debug) {\r\n\t\t\t\t\tconsole.log(\"Skipping [\" + property + \"] due to a lack of browser support.\");\r\n\t\t\t\t}\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (valueData == null) {\r\n\t\t\t\tif (debug) {\r\n\t\t\t\t\tconsole.log(\"Skipping [\" + property + \"] due to no value supplied.\");\r\n\t\t\t\t}\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tconst tween: VelocityTween = tweens[propertyName] = Object.create(null) as any;\r\n\t\t\tlet endValue: string,\r\n\t\t\t\tstartValue: string;\r\n\r\n\t\t\ttween.fn = fn;\r\n\t\t\tif (isFunction(valueData)) {\r\n\t\t\t\t// If we have a function as the main argument then resolve\r\n\t\t\t\t// it first, in case it returns an array that needs to be\r\n\t\t\t\t// split.\r\n\t\t\t\tvalueData = (valueData as VelocityPropertyFn).call(element, elementArrayIndex, elements.length, elements);\r\n\t\t\t}\r\n\t\t\tif (Array.isArray(valueData)) {\r\n\t\t\t\t// valueData is an array in the form of\r\n\t\t\t\t// [ endValue, [, easing] [, startValue] ]\r\n\t\t\t\tconst arr1 = valueData[1],\r\n\t\t\t\t\tarr2 = valueData[2];\r\n\r\n\t\t\t\tendValue = valueData[0] as any;\r\n\t\t\t\tif ((isString(arr1) && (/^[\\d-]/.test(arr1) || rxHex.test(arr1))) || isFunction(arr1) || isNumber(arr1)) {\r\n\t\t\t\t\tstartValue = arr1 as any;\r\n\t\t\t\t} else if ((isString(arr1) && Easing.Easings[arr1]) || Array.isArray(arr1)) {\r\n\t\t\t\t\ttween.easing = arr1 as any;\r\n\t\t\t\t\tstartValue = arr2 as any;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstartValue = arr1 || arr2 as any;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tendValue = valueData as any;\r\n\t\t\t}\r\n\t\t\ttween.end = commands.get(typeof endValue)(endValue, element, elements, elementArrayIndex, propertyName, tween) as any;\r\n\t\t\tif (startValue != null || (queue === false || data.queueList[queue] === undefined)) {\r\n\t\t\t\ttween.start = commands.get(typeof startValue)(startValue, element, elements, elementArrayIndex, propertyName, tween) as any;\r\n\t\t\t}\r\n\t\t\texplodeTween(propertyName, tween, duration, !!startValue);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Convert a string-based tween with start and end strings, into a pattern\r\n\t * based tween with arrays.\r\n\t */\r\n\tfunction explodeTween(propertyName: string, tween: VelocityTween, duration: number, isForcefeed?: boolean) {\r\n\t\tconst endValue: string = tween.end as any as string;\r\n\t\tlet startValue: string = tween.start as any as string;\r\n\r\n\t\tif (!isString(endValue) || !isString(startValue)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet runAgain = false; // Can only be set once if the Start value doesn't match the End value and it's not forcefed\r\n\t\tdo {\r\n\t\t\trunAgain = false;\r\n\t\t\tconst arrayStart: (string | number)[] = tween.start = [null],\r\n\t\t\t\tarrayEnd: (string | number)[] = tween.end = [null],\r\n\t\t\t\tpattern: (string | boolean)[] = tween.pattern = [\"\"];\r\n\t\t\tlet easing = tween.easing as any,\r\n\t\t\t\tindexStart = 0, // index in startValue\r\n\t\t\t\tindexEnd = 0, // index in endValue\r\n\t\t\t\tinCalc = 0, // Keep track of being inside a \"calc()\" so we don't duplicate it\r\n\t\t\t\tinRGB = 0, // Keep track of being inside an RGB as we can't use fractional values\r\n\t\t\t\tinRGBA = 0, // Keep track of being inside an RGBA as we must pass fractional for the alpha channel\r\n\t\t\t\tisStringValue: boolean;\r\n\r\n\t\t\t// TODO: Relative Values\r\n\r\n\t\t\t/* Operator logic must be performed last since it requires unit-normalized start and end values. */\r\n\t\t\t/* Note: Relative *percent values* do not behave how most people think; while one would expect \"+=50%\"\r\n\t\t\t to increase the property 1.5x its current value, it in fact increases the percent units in absolute terms:\r\n\t\t\t 50 points is added on top of the current % value. */\r\n\t\t\t//\t\t\t\t\tswitch (operator as any as string) {\r\n\t\t\t//\t\t\t\t\t\tcase \"+\":\r\n\t\t\t//\t\t\t\t\t\t\tendValue = startValue + endValue;\r\n\t\t\t//\t\t\t\t\t\t\tbreak;\r\n\t\t\t//\r\n\t\t\t//\t\t\t\t\t\tcase \"-\":\r\n\t\t\t//\t\t\t\t\t\t\tendValue = startValue - endValue;\r\n\t\t\t//\t\t\t\t\t\t\tbreak;\r\n\t\t\t//\r\n\t\t\t//\t\t\t\t\t\tcase \"*\":\r\n\t\t\t//\t\t\t\t\t\t\tendValue = startValue * endValue;\r\n\t\t\t//\t\t\t\t\t\t\tbreak;\r\n\t\t\t//\r\n\t\t\t//\t\t\t\t\t\tcase \"/\":\r\n\t\t\t//\t\t\t\t\t\t\tendValue = startValue / endValue;\r\n\t\t\t//\t\t\t\t\t\t\tbreak;\r\n\t\t\t//\t\t\t\t\t}\r\n\r\n\t\t\t// TODO: Leading from a calc value\r\n\t\t\twhile (indexStart < startValue.length && indexEnd < endValue.length) {\r\n\t\t\t\tlet charStart = startValue[indexStart],\r\n\t\t\t\t\tcharEnd = endValue[indexEnd];\r\n\r\n\t\t\t\t// If they're both numbers, then parse them as a whole\r\n\t\t\t\tif (TWEEN_NUMBER_REGEX.test(charStart) && TWEEN_NUMBER_REGEX.test(charEnd)) {\r\n\t\t\t\t\tlet tempStart = charStart, // temporary character buffer\r\n\t\t\t\t\t\ttempEnd = charEnd, // temporary character buffer\r\n\t\t\t\t\t\tdotStart = \".\", // Make sure we can only ever match a single dot in a decimal\r\n\t\t\t\t\t\tdotEnd = \".\"; // Make sure we can only ever match a single dot in a decimal\r\n\r\n\t\t\t\t\twhile (++indexStart < startValue.length) {\r\n\t\t\t\t\t\tcharStart = startValue[indexStart];\r\n\t\t\t\t\t\tif (charStart === dotStart) {\r\n\t\t\t\t\t\t\tdotStart = \"..\"; // Can never match two characters\r\n\t\t\t\t\t\t} else if (!isNumberWhenParsed(charStart)) {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ttempStart += charStart;\r\n\t\t\t\t\t}\r\n\t\t\t\t\twhile (++indexEnd < endValue.length) {\r\n\t\t\t\t\t\tcharEnd = endValue[indexEnd];\r\n\t\t\t\t\t\tif (charEnd === dotEnd) {\r\n\t\t\t\t\t\t\tdotEnd = \"..\"; // Can never match two characters\r\n\t\t\t\t\t\t} else if (!isNumberWhenParsed(charEnd)) {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ttempEnd += charEnd;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet unitStart = CSS.getUnit(startValue, indexStart), // temporary unit type\r\n\t\t\t\t\t\tunitEnd = CSS.getUnit(endValue, indexEnd); // temporary unit type\r\n\r\n\t\t\t\t\tindexStart += unitStart.length;\r\n\t\t\t\t\tindexEnd += unitEnd.length;\r\n\t\t\t\t\tif (unitEnd.length === 0) {\r\n\t\t\t\t\t\t// This order as it's most common for the user supplied\r\n\t\t\t\t\t\t// value to be a number.\r\n\t\t\t\t\t\tunitEnd = unitStart;\r\n\t\t\t\t\t} else if (unitStart.length === 0) {\r\n\t\t\t\t\t\tunitStart = unitEnd;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (unitStart === unitEnd) {\r\n\t\t\t\t\t\t// Same units\r\n\t\t\t\t\t\tif (tempStart === tempEnd) {\r\n\t\t\t\t\t\t\t// Same numbers, so just copy over\r\n\t\t\t\t\t\t\tpattern[pattern.length - 1] += tempStart + unitStart;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tpattern.push(inRGB ? true : false, unitStart);\r\n\t\t\t\t\t\t\tarrayStart.push(parseFloat(tempStart), null);\r\n\t\t\t\t\t\t\tarrayEnd.push(parseFloat(tempEnd), null);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Different units, so put into a \"calc(from + to)\" and\r\n\t\t\t\t\t\t// animate each side to/from zero. setPropertyValue will\r\n\t\t\t\t\t\t// look out for the final \"calc(0 + \" prefix and remove\r\n\t\t\t\t\t\t// it from the value when it finds it.\r\n\t\t\t\t\t\tpattern[pattern.length - 1] += inCalc ? \"+ (\" : \"calc(\";\r\n\t\t\t\t\t\tpattern.push(false, unitStart + \" + \", false, unitEnd + \")\");\r\n\t\t\t\t\t\tarrayStart.push(parseFloat(tempStart) || 0, null, 0, null);\r\n\t\t\t\t\t\tarrayEnd.push(0, null, parseFloat(tempEnd) || 0, null);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (charStart === charEnd) {\r\n\t\t\t\t\tpattern[pattern.length - 1] += charStart;\r\n\t\t\t\t\tindexStart++;\r\n\t\t\t\t\tindexEnd++;\r\n\t\t\t\t\t// Keep track of being inside a calc()\r\n\t\t\t\t\tif (inCalc === 0 && charStart === \"c\"\r\n\t\t\t\t\t\t|| inCalc === 1 && charStart === \"a\"\r\n\t\t\t\t\t\t|| inCalc === 2 && charStart === \"l\"\r\n\t\t\t\t\t\t|| inCalc === 3 && charStart === \"c\"\r\n\t\t\t\t\t\t|| inCalc >= 4 && charStart === \"(\"\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tinCalc++;\r\n\t\t\t\t\t} else if ((inCalc && inCalc < 5)\r\n\t\t\t\t\t\t|| inCalc >= 4 && charStart === \")\" && --inCalc < 5) {\r\n\t\t\t\t\t\tinCalc = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Keep track of being inside an rgb() / rgba()\r\n\t\t\t\t\t// The opacity must not be rounded.\r\n\t\t\t\t\tif (inRGB === 0 && charStart === \"r\"\r\n\t\t\t\t\t\t|| inRGB === 1 && charStart === \"g\"\r\n\t\t\t\t\t\t|| inRGB === 2 && charStart === \"b\"\r\n\t\t\t\t\t\t|| inRGB === 3 && charStart === \"a\"\r\n\t\t\t\t\t\t|| inRGB >= 3 && charStart === \"(\"\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tif (inRGB === 3 && charStart === \"a\") {\r\n\t\t\t\t\t\t\tinRGBA = 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tinRGB++;\r\n\t\t\t\t\t} else if (inRGBA && charStart === \",\") {\r\n\t\t\t\t\t\tif (++inRGBA > 3) {\r\n\t\t\t\t\t\t\tinRGB = inRGBA = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if ((inRGBA && inRGB < (inRGBA ? 5 : 4))\r\n\t\t\t\t\t\t|| inRGB >= (inRGBA ? 4 : 3) && charStart === \")\" && --inRGB < (inRGBA ? 5 : 4)) {\r\n\t\t\t\t\t\tinRGB = inRGBA = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (charStart || charEnd) {\r\n\t\t\t\t\t// Different letters, so we're going to push them into start\r\n\t\t\t\t\t// and end until the next word\r\n\t\t\t\t\tisStringValue = true;\r\n\t\t\t\t\tif (!isString(arrayStart[arrayStart.length - 1])) {\r\n\t\t\t\t\t\tif (pattern.length === 1 && !pattern[0]) {\r\n\t\t\t\t\t\t\tarrayStart[0] = arrayEnd[0] = \"\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tpattern.push(\"\");\r\n\t\t\t\t\t\t\tarrayStart.push(\"\");\r\n\t\t\t\t\t\t\tarrayEnd.push(\"\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\twhile (indexStart < startValue.length) {\r\n\t\t\t\t\t\tcharStart = startValue[indexStart++];\r\n\t\t\t\t\t\tif (charStart === \" \" || TWEEN_NUMBER_REGEX.test(charStart)) {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tarrayStart[arrayStart.length - 1] += charStart;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\twhile (indexEnd < endValue.length) {\r\n\t\t\t\t\t\tcharEnd = endValue[indexEnd++];\r\n\t\t\t\t\t\tif (charEnd === \" \" || TWEEN_NUMBER_REGEX.test(charEnd)) {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tarrayEnd[arrayEnd.length - 1] += charEnd;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (!isForcefeed && (indexStart === startValue.length) !== (indexEnd === endValue.length)) {\r\n\t\t\t\t\t// This little piece will take a startValue, split out the\r\n\t\t\t\t\t// various numbers in it, then copy the endValue into the\r\n\t\t\t\t\t// startValue while replacing the numbers in it to match the\r\n\t\t\t\t\t// original start numbers as a repeating sequence.\r\n\t\t\t\t\t// Finally this function will run again with the new\r\n\t\t\t\t\t// startValue and a now matching pattern.\r\n\t\t\t\t\tlet startNumbers = startValue.match(/\\d\\.?\\d*/g) || [\"0\"],\r\n\t\t\t\t\t\tcount = startNumbers.length,\r\n\t\t\t\t\t\tindex = 0;\r\n\r\n\t\t\t\t\tstartValue = endValue.replace(/\\d+\\.?\\d*/g, function() {\r\n\t\t\t\t\t\treturn startNumbers[index++ % count];\r\n\t\t\t\t\t});\r\n\t\t\t\t\trunAgain = isForcefeed = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (!runAgain) {\r\n\t\t\t\t// TODO: These two would be slightly better to not add the array indices in the first place\r\n\t\t\t\tif (pattern[0] === \"\" && arrayEnd[0] == null) {\r\n\t\t\t\t\tpattern.shift();\r\n\t\t\t\t\tarrayStart.shift();\r\n\t\t\t\t\tarrayEnd.shift();\r\n\t\t\t\t}\r\n\t\t\t\tif (pattern[pattern.length] === \"\" && arrayEnd[arrayEnd.length] == null) {\r\n\t\t\t\t\tpattern.pop();\r\n\t\t\t\t\tarrayStart.pop();\r\n\t\t\t\t\tarrayEnd.pop();\r\n\t\t\t\t}\r\n\t\t\t\tif (indexStart < startValue.length || indexEnd < endValue.length) {\r\n\t\t\t\t\t// NOTE: We should never be able to reach this code unless a\r\n\t\t\t\t\t// bad forcefed value is supplied.\r\n\t\t\t\t\tconsole.error(\"Velocity: Trying to pattern match mis-matched strings \" + propertyName + \":[\\\"\" + endValue + \"\\\", \\\"\" + startValue + \"\\\"]\");\r\n\t\t\t\t}\r\n\t\t\t\tif (debug) {\r\n\t\t\t\t\tconsole.log(\"Velocity: Pattern found:\", pattern, \" -> \", arrayStart, arrayEnd, \"[\" + startValue + \",\" + endValue + \"]\");\r\n\t\t\t\t}\r\n\t\t\t\tif (propertyName === \"display\") {\r\n\t\t\t\t\tif (!/^(at-start|at-end|during)$/.test(easing)) {\r\n\t\t\t\t\t\teasing = endValue === \"none\" ? \"at-end\" : \"at-start\";\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (propertyName === \"visibility\") {\r\n\t\t\t\t\tif (!/^(at-start|at-end|during)$/.test(easing)) {\r\n\t\t\t\t\t\teasing = endValue === \"hidden\" ? \"at-end\" : \"at-start\";\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (isStringValue\r\n\t\t\t\t\t&& easing !== \"at-start\" && easing !== \"during\" && easing !== \"at-end\"\r\n\t\t\t\t\t&& easing !== Easing.Easings[\"at-Start\"] && easing !== Easing.Easings[\"during\"] && easing !== Easing.Easings[\"at-end\"]) {\r\n\t\t\t\t\tconsole.warn(\"Velocity: String easings must use one of 'at-start', 'during' or 'at-end': {\" + propertyName + \": [\\\"\" + endValue + \"\\\", \" + easing + \", \\\"\" + startValue + \"\\\"]}\");\r\n\t\t\t\t\teasing = \"at-start\";\r\n\t\t\t\t}\r\n\t\t\t\ttween.easing = validateEasing(easing, duration);\r\n\t\t\t}\r\n\t\t\t// This can only run a second time once - if going from automatic startValue to \"fixed\" pattern from endValue with startValue numbers\r\n\t\t} while (runAgain);\r\n\t}\r\n\r\n\t/**\r\n\t * Expand all queued animations that haven't gone yet\r\n\t *\r\n\t * This will automatically expand the properties map for any recently added\r\n\t * animations so that the start and end values are correct.\r\n\t */\r\n\texport function validateTweens(activeCall: AnimationCall) {\r\n\t\t// This might be called on an already-ready animation\r\n\t\tif (State.firstNew === activeCall) {\r\n\t\t\tState.firstNew = activeCall._next;\r\n\t\t}\r\n\t\t// Check if we're actually already ready\r\n\t\tif (activeCall._flags & AnimationFlags.EXPANDED) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet element = activeCall.element,\r\n\t\t\ttweens = activeCall.tweens,\r\n\t\t\tduration = getValue(activeCall.options.duration, defaults.duration);\r\n\r\n\t\tfor (const propertyName in tweens) {\r\n\t\t\tconst tween = tweens[propertyName];\r\n\r\n\t\t\tif (tween.start == null) {\r\n\t\t\t\t// Get the start value as it's not been passed in\r\n\t\t\t\tconst startValue = CSS.getPropertyValue(activeCall.element, propertyName);\r\n\r\n\t\t\t\tif (isString(startValue)) {\r\n\t\t\t\t\ttween.start = CSS.fixColors(startValue) as any;\r\n\t\t\t\t\texplodeTween(propertyName, tween, duration);\r\n\t\t\t\t} else if (!Array.isArray(startValue)) {\r\n\t\t\t\t\tconsole.warn(\"bad type\", tween, propertyName, startValue)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (debug) {\r\n\t\t\t\tconsole.log(\"tweensContainer (\" + propertyName + \"): \" + JSON.stringify(tween), element);\r\n\t\t\t}\r\n\t\t}\r\n\t\tactiveCall._flags |= AnimationFlags.EXPANDED;\r\n\t}\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Validation functions used for various types of data that can be supplied.\r\n * All errors are reported in the non-minified version for development. If a\r\n * validation fails then it should return undefined.\r\n */\r\n\r\n/**\r\n * Parse a duration value and return an ms number. Optionally return a\r\n * default value if the number is not valid.\r\n */\r\nfunction parseDuration(duration: \"fast\" | \"normal\" | \"slow\" | number, def?: \"fast\" | \"normal\" | \"slow\" | number): number {\r\n\tif (isNumber(duration)) {\r\n\t\treturn duration;\r\n\t}\r\n\tif (isString(duration)) {\r\n\t\treturn Duration[duration.toLowerCase()] || parseFloat(duration.replace(\"ms\", \"\").replace(\"s\", \"000\"));\r\n\t}\r\n\treturn def == null ? undefined : parseDuration(def);\r\n}\r\n\r\n/**\r\n * Validate a cache option.\r\n * @private\r\n */\r\nfunction validateCache(value: boolean): boolean {\r\n\tif (isBoolean(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'cache' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a begin option.\r\n * @private\r\n */\r\nfunction validateBegin(value: VelocityCallback): VelocityCallback {\r\n\tif (isFunction(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'begin' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a complete option.\r\n * @private\r\n */\r\nfunction validateComplete(value: VelocityCallback, noError?: true): VelocityCallback {\r\n\tif (isFunction(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null && !noError) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'complete' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a delay option.\r\n * @private\r\n */\r\nfunction validateDelay(value: \"fast\" | \"normal\" | \"slow\" | number): number {\r\n\tconst parsed = parseDuration(value);\r\n\r\n\tif (!isNaN(parsed)) {\r\n\t\treturn parsed;\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.error(\"VelocityJS: Trying to set 'delay' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a duration option.\r\n * @private\r\n */\r\nfunction validateDuration(value: \"fast\" | \"normal\" | \"slow\" | number, noError?: true): number {\r\n\tconst parsed = parseDuration(value);\r\n\r\n\tif (!isNaN(parsed) && parsed >= 0) {\r\n\t\treturn parsed;\r\n\t}\r\n\tif (value != null && !noError) {\r\n\t\tconsole.error(\"VelocityJS: Trying to set 'duration' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a easing option.\r\n * @private\r\n */\r\nfunction validateEasing(value: VelocityEasingType, duration: number, noError?: true): VelocityEasingFn {\r\n\tconst Easing = VelocityStatic.Easing;\r\n\r\n\tif (isString(value)) {\r\n\t\t// Named easing\r\n\t\treturn Easing.Easings[value];\r\n\t}\r\n\tif (isFunction(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (Array.isArray(value)) {\r\n\t\tif (value.length === 1) {\r\n\t\t\t// Steps\r\n\t\t\treturn Easing.generateStep(value[0]);\r\n\t\t}\r\n\t\tif (value.length === 2) {\r\n\t\t\t// springRK4 must be passed the animation's duration.\r\n\t\t\t// Note: If the springRK4 array contains non-numbers,\r\n\t\t\t// generateSpringRK4() returns an easing function generated with\r\n\t\t\t// default tension and friction values.\r\n\t\t\treturn Easing.generateSpringRK4(value[0], value[1], duration);\r\n\t\t}\r\n\t\tif (value.length === 4) {\r\n\t\t\t// Note: If the bezier array contains non-numbers, generateBezier()\r\n\t\t\t// returns undefined.\r\n\t\t\treturn Easing.generateBezier.apply(null, value) || false;\r\n\t\t}\r\n\t}\r\n\tif (value != null && !noError) {\r\n\t\tconsole.error(\"VelocityJS: Trying to set 'easing' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a fpsLimit option.\r\n * @private\r\n */\r\nfunction validateFpsLimit(value: number | false): number {\r\n\tif (value === false) {\r\n\t\treturn 0;\r\n\t} else {\r\n\t\tconst parsed = parseInt(value as any, 10);\r\n\r\n\t\tif (!isNaN(parsed) && parsed >= 0) {\r\n\t\t\treturn Math.min(parsed, 60);\r\n\t\t}\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'fpsLimit' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * Validate a loop option.\r\n * @private\r\n */\r\nfunction validateLoop(value: number | boolean): number | true {\r\n\tif (value === false) {\r\n\t\treturn 0;\r\n\t} else if (value === true) {\r\n\t\treturn true;\r\n\t} else {\r\n\t\tconst parsed = parseInt(value as any, 10);\r\n\r\n\t\tif (!isNaN(parsed) && parsed >= 0) {\r\n\t\t\treturn parsed;\r\n\t\t}\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'loop' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a progress option.\r\n * @private\r\n */\r\nfunction validateProgress(value: VelocityProgress): VelocityProgress {\r\n\tif (isFunction(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'progress' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a promise option.\r\n * @private\r\n */\r\nfunction validatePromise(value: boolean): boolean {\r\n\tif (isBoolean(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'promise' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a promiseRejectEmpty option.\r\n * @private\r\n */\r\nfunction validatePromiseRejectEmpty(value: boolean): boolean {\r\n\tif (isBoolean(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'promiseRejectEmpty' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a queue option.\r\n * @private\r\n */\r\nfunction validateQueue(value: string | false, noError?: true): string | false {\r\n\tif (value === false || isString(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null && !noError) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'queue' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a repeat option.\r\n * @private\r\n */\r\nfunction validateRepeat(value: number | boolean): number | true {\r\n\tif (value === false) {\r\n\t\treturn 0;\r\n\t} else if (value === true) {\r\n\t\treturn true;\r\n\t} else {\r\n\t\tconst parsed = parseInt(value as any, 10);\r\n\r\n\t\tif (!isNaN(parsed) && parsed >= 0) {\r\n\t\t\treturn parsed;\r\n\t\t}\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.warn(\"VelocityJS: Trying to set 'repeat' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a speed option.\r\n * @private\r\n */\r\nfunction validateSpeed(value: number): number {\r\n\tif (isNumber(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.error(\"VelocityJS: Trying to set 'speed' to an invalid value:\", value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validate a sync option.\r\n * @private\r\n */\r\nfunction validateSync(value: boolean): boolean {\r\n\tif (isBoolean(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (value != null) {\r\n\t\tconsole.error(\"VelocityJS: Trying to set 'sync' to an invalid value:\", value);\r\n\t}\r\n}\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n * \r\n * Velocity version (should grab from package.json during build).\r\n */\r\n\r\nnamespace VelocityStatic {\r\n\texport let version = \"2.0.1\";\r\n};\r\n","/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n *\r\n * Core \"Velocity\" function.\r\n */\r\n\r\ninterface Document {\r\n\tdocumentMode: any; // IE\r\n}\r\n\r\n/**\r\n * The main Velocity function. Acts as a gateway to everything else.\r\n */\r\nfunction VelocityFn(options: VelocityObjectArgs): VelocityResult;\r\nfunction VelocityFn(elements: VelocityElements, propertyMap: string | VelocityProperties, options?: VelocityOptions): VelocityResult;\r\nfunction VelocityFn(elements: VelocityElements, propertyMap: string | VelocityProperties, duration?: number | \"fast\" | \"normal\" | \"slow\", complete?: () => void): VelocityResult;\r\nfunction VelocityFn(elements: VelocityElements, propertyMap: string | VelocityProperties, complete?: () => void): VelocityResult;\r\nfunction VelocityFn(elements: VelocityElements, propertyMap: string | VelocityProperties, easing?: string | number[], complete?: () => void): VelocityResult;\r\nfunction VelocityFn(elements: VelocityElements, propertyMap: string | VelocityProperties, duration?: number | \"fast\" | \"normal\" | \"slow\", easing?: string | number[], complete?: () => void): VelocityResult;\r\nfunction VelocityFn(this: VelocityElements, propertyMap: string | VelocityProperties, duration?: number | \"fast\" | \"normal\" | \"slow\", complete?: () => void): VelocityResult;\r\nfunction VelocityFn(this: VelocityElements, propertyMap: string | VelocityProperties, complete?: () => void): VelocityResult;\r\nfunction VelocityFn(this: VelocityElements, propertyMap: string | VelocityProperties, easing?: string | number[], complete?: () => void): VelocityResult;\r\nfunction VelocityFn(this: VelocityElements, propertyMap: string | VelocityProperties, duration?: number | \"fast\" | \"normal\" | \"slow\", easing?: string | number[], complete?: () => void): VelocityResult;\r\nfunction VelocityFn(this: VelocityElements | void, ...__args: any[]): VelocityResult {\r\n\tconst\r\n\t\t/**\r\n\t\t * A shortcut to the default options.\r\n\t\t */\r\n\t\tdefaults = VelocityStatic.defaults,\r\n\t\t/**\r\n\t\t * Shortcut to arguments for file size.\r\n\t\t */\r\n\t\t_arguments = arguments,\r\n\t\t/**\r\n\t\t * Cache of the first argument - this is used often enough to be saved.\r\n\t\t */\r\n\t\targs0 = _arguments[0] as VelocityObjectArgs,\r\n\t\t/**\r\n\t\t * To allow for expressive CoffeeScript code, Velocity supports an\r\n\t\t * alternative syntax in which \"elements\" (or \"e\"), \"properties\" (or\r\n\t\t * \"p\"), and \"options\" (or \"o\") objects are defined on a container\r\n\t\t * object that's passed in as Velocity's sole argument.\r\n\t\t *\r\n\t\t * Note: Some browsers automatically populate arguments with a\r\n\t\t * \"properties\" object. We detect it by checking for its default\r\n\t\t * \"names\" property.\r\n\t\t */\r\n\t\t// TODO: Confirm which browsers - if <=IE8 the we can drop completely\r\n\t\tsyntacticSugar = isPlainObject(args0) && (args0.p || ((isPlainObject(args0.properties) && !(args0.properties as any).names) || isString(args0.properties)));\r\n\tlet\r\n\t\t/**\r\n\t\t * When Velocity is called via the utility function (Velocity()),\r\n\t\t * elements are explicitly passed in as the first parameter. Thus,\r\n\t\t * argument positioning varies.\r\n\t\t */\r\n\t\targumentIndex: number = 0,\r\n\t\t/**\r\n\t\t * The list of elements, extended with Promise and Velocity.\r\n\t\t */\r\n\t\telements: VelocityResult,\r\n\t\t/**\r\n\t\t * The properties being animated. This can be a string, in which case it\r\n\t\t * is either a function for these elements, or it is a \"named\" animation\r\n\t\t * sequence to use instead. Named sequences start with either \"callout.\"\r\n\t\t * or \"transition.\". When used as a callout the values will be reset\r\n\t\t * after finishing. When used as a transtition then there is no special\r\n\t\t * handling after finishing.\r\n\t\t */\r\n\t\tpropertiesMap: string | VelocityProperties,\r\n\t\t/**\r\n\t\t * Options supplied, this will be mapped and validated into\r\n\t\t * options.\r\n\t\t */\r\n\t\toptionsMap: VelocityOptions,\r\n\t\t/**\r\n\t\t * If called via a chain then this contains the last calls\r\n\t\t * animations. If this does not have a value then any access to the\r\n\t\t * element's animations needs to be to the currently-running ones.\r\n\t\t */\r\n\t\tanimations: AnimationCall[],\r\n\t\t/**\r\n\t\t * The promise that is returned.\r\n\t\t */\r\n\t\tpromise: Promise,\r\n\t\t// Used when the animation is finished\r\n\t\tresolver: (value?: VelocityResult) => void,\r\n\t\t// Used when there was an issue with one or more of the Velocity arguments\r\n\t\trejecter: (reason: any) => void;\r\n\r\n\t//console.log(\"Velocity\", _arguments)\r\n\t// First get the elements, and the animations connected to the last call if\r\n\t// this is chained.\r\n\t// TODO: Clean this up a bit\r\n\t// TODO: Throw error if the chain is called with elements as the first argument. isVelocityResult(this) && ( (isNode(arg0) || isWrapped(arg0)) && arg0 == this)\r\n\tif (isNode(this)) {\r\n\t\t// This is from a chain such as document.getElementById(\"\").velocity(...)\r\n\t\telements = [this as HTMLorSVGElement] as VelocityResult;\r\n\t} else if (isWrapped(this)) {\r\n\t\t// This might be a chain from something else, but if chained from a\r\n\t\t// previous Velocity() call then grab the animations it's related to.\r\n\t\telements = Object.assign([], this as HTMLorSVGElement[]) as VelocityResult;\r\n\t\tif (isVelocityResult(this)) {\r\n\t\t\tanimations = (this as VelocityResult).velocity.animations;\r\n\t\t}\r\n\t} else if (syntacticSugar) {\r\n\t\telements = Object.assign([], args0.elements || args0.e) as VelocityResult;\r\n\t\targumentIndex++;\r\n\t} else if (isNode(args0)) {\r\n\t\telements = Object.assign([], [args0]) as VelocityResult;\r\n\t\targumentIndex++;\r\n\t} else if (isWrapped(args0)) {\r\n\t\telements = Object.assign([], args0) as VelocityResult;\r\n\t\targumentIndex++;\r\n\t}\r\n\t// Allow elements to be chained.\r\n\tif (elements) {\r\n\t\tdefineProperty(elements, \"velocity\", VelocityFn.bind(elements));\r\n\t\tif (animations) {\r\n\t\t\tdefineProperty(elements.velocity, \"animations\", animations);\r\n\t\t}\r\n\t}\r\n\t// Next get the propertiesMap and options.\r\n\tif (syntacticSugar) {\r\n\t\tpropertiesMap = getValue(args0.properties, args0.p);\r\n\t} else {\r\n\t\t// TODO: Should be possible to call Velocity(\"pauseAll\") - currently not possible\r\n\t\tpropertiesMap = _arguments[argumentIndex++] as string | VelocityProperties;\r\n\t}\r\n\t// Get any options map passed in as arguments first, expand any direct\r\n\t// options if possible.\r\n\tconst isReverse = propertiesMap === \"reverse\",\r\n\t\tisAction = !isReverse && isString(propertiesMap),\r\n\t\topts = syntacticSugar ? getValue(args0.options, args0.o) : _arguments[argumentIndex];\r\n\r\n\tif (isPlainObject(opts)) {\r\n\t\toptionsMap = opts;\r\n\t}\r\n\t// Create the promise if supported and wanted.\r\n\tif (Promise && getValue(optionsMap && optionsMap.promise, defaults.promise)) {\r\n\t\tpromise = new Promise(function(_resolve, _reject) {\r\n\t\t\trejecter = _reject;\r\n\t\t\t// IMPORTANT:\r\n\t\t\t// If a resolver tries to run on a Promise then it will wait until\r\n\t\t\t// that Promise resolves - but in this case we're running on our own\r\n\t\t\t// Promise, so need to make sure it's not seen as one. Setting these\r\n\t\t\t// values to undefined for the duration of the resolve.\r\n\t\t\t// Due to being an async call, they should be back to \"normal\"\r\n\t\t\t// before the .then() function gets called.\r\n\t\t\tresolver = function(args: VelocityResult) {\r\n\t\t\t\tif (isVelocityResult(args)) {\r\n\t\t\t\t\tconst _then = args && args.then;\r\n\r\n\t\t\t\t\tif (_then) {\r\n\t\t\t\t\t\targs.then = undefined; // Preserving enumeration etc\r\n\t\t\t\t\t}\r\n\t\t\t\t\t_resolve(args);\r\n\t\t\t\t\tif (_then) {\r\n\t\t\t\t\t\targs.then = _then;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t_resolve(args);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t});\r\n\t\tif (elements) {\r\n\t\t\tdefineProperty(elements, \"then\", promise.then.bind(promise));\r\n\t\t\tdefineProperty(elements, \"catch\", promise.catch.bind(promise));\r\n\t\t\tif ((promise as any).finally) {\r\n\t\t\t\t// Semi-standard\r\n\t\t\t\tdefineProperty(elements, \"finally\", (promise as any).finally.bind(promise));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tconst promiseRejectEmpty: boolean = getValue(optionsMap && optionsMap.promiseRejectEmpty, defaults.promiseRejectEmpty);\r\n\r\n\tif (promise) {\r\n\t\tif (!elements && !isAction) {\r\n\t\t\tif (promiseRejectEmpty) {\r\n\t\t\t\trejecter(\"Velocity: No elements supplied, if that is deliberate then pass `promiseRejectEmpty:false` as an option. Aborting.\");\r\n\t\t\t} else {\r\n\t\t\t\tresolver();\r\n\t\t\t}\r\n\t\t} else if (!propertiesMap) {\r\n\t\t\tif (promiseRejectEmpty) {\r\n\t\t\t\trejecter(\"Velocity: No properties supplied, if that is deliberate then pass `promiseRejectEmpty:false` as an option. Aborting.\");\r\n\t\t\t} else {\r\n\t\t\t\tresolver();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif ((!elements && !isAction) || !propertiesMap) {\r\n\t\treturn promise as any;\r\n\t}\r\n\r\n\t// NOTE: Can't use isAction here due to type inference - there are callbacks\r\n\t// between so the type isn't considered safe.\r\n\tif (isAction) {\r\n\t\tconst args: any[] = [],\r\n\t\t\tpromiseHandler: VelocityPromise = promise && {\r\n\t\t\t\t_promise: promise,\r\n\t\t\t\t_resolver: resolver,\r\n\t\t\t\t_rejecter: rejecter\r\n\t\t\t};\r\n\r\n\t\twhile (argumentIndex < _arguments.length) {\r\n\t\t\targs.push(_arguments[argumentIndex++]);\r\n\t\t}\r\n\r\n\t\t// Velocity's behavior is categorized into \"actions\". If a string is\r\n\t\t// passed in instead of a propertiesMap then that will call a function\r\n\t\t// to do something special to the animation linked.\r\n\t\t// There is one special case - \"reverse\" - which is handled differently,\r\n\t\t// by being stored on the animation and then expanded when the animation\r\n\t\t// starts.\r\n\t\tconst action = (propertiesMap as string).replace(/\\..*$/, \"\"),\r\n\t\t\tcallback = VelocityStatic.Actions[action] || VelocityStatic.Actions[\"default\"];\r\n\r\n\t\tif (callback) {\r\n\t\t\tconst result = callback(args, elements, promiseHandler, propertiesMap as string);\r\n\r\n\t\t\tif (result !== undefined) {\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"VelocityJS: Unknown action:\", propertiesMap);\r\n\t\t}\r\n\t} else if (isPlainObject(propertiesMap) || isReverse) {\r\n\t\t/**\r\n\t\t * The options for this set of animations.\r\n\t\t */\r\n\t\tconst options: StrictVelocityOptions = {};\r\n\t\tlet isSync = defaults.sync;\r\n\r\n\t\t// Private options first - set as non-enumerable, and starting with an\r\n\t\t// underscore so we can filter them out.\r\n\t\tif (promise) {\r\n\t\t\tdefineProperty(options, \"_promise\", promise);\r\n\t\t\tdefineProperty(options, \"_rejecter\", rejecter);\r\n\t\t\tdefineProperty(options, \"_resolver\", resolver);\r\n\t\t}\r\n\t\tdefineProperty(options, \"_ready\", 0);\r\n\t\tdefineProperty(options, \"_started\", 0);\r\n\t\tdefineProperty(options, \"_completed\", 0);\r\n\t\tdefineProperty(options, \"_total\", 0);\r\n\r\n\t\t// Now check the optionsMap\r\n\t\tif (isPlainObject(optionsMap)) {\r\n\t\t\toptions.duration = getValue(validateDuration(optionsMap.duration), defaults.duration);\r\n\t\t\toptions.delay = getValue(validateDelay(optionsMap.delay), defaults.delay);\r\n\t\t\t// Need the extra fallback here in case it supplies an invalid\r\n\t\t\t// easing that we need to overrride with the default.\r\n\t\t\toptions.easing = validateEasing(getValue(optionsMap.easing, defaults.easing), options.duration) || validateEasing(defaults.easing, options.duration);\r\n\t\t\toptions.loop = getValue(validateLoop(optionsMap.loop), defaults.loop);\r\n\t\t\toptions.repeat = options.repeatAgain = getValue(validateRepeat(optionsMap.repeat), defaults.repeat);\r\n\t\t\tif (optionsMap.speed != null) {\r\n\t\t\t\toptions.speed = getValue(validateSpeed(optionsMap.speed), 1);\r\n\t\t\t}\r\n\t\t\tif (isBoolean(optionsMap.promise)) {\r\n\t\t\t\toptions.promise = optionsMap.promise;\r\n\t\t\t}\r\n\t\t\toptions.queue = getValue(validateQueue(optionsMap.queue), defaults.queue);\r\n\t\t\tif (optionsMap.mobileHA && !VelocityStatic.State.isGingerbread) {\r\n\t\t\t\t/* When set to true, and if this is a mobile device, mobileHA automatically enables hardware acceleration (via a null transform hack)\r\n\t\t\t\t on animating elements. HA is removed from the element at the completion of its animation. */\r\n\t\t\t\t/* Note: Android Gingerbread doesn't support HA. If a null transform hack (mobileHA) is in fact set, it will prevent other tranform subproperties from taking effect. */\r\n\t\t\t\t/* Note: You can read more about the use of mobileHA in Velocity's documentation: VelocityJS.org/#mobileHA. */\r\n\t\t\t\toptions.mobileHA = true;\r\n\t\t\t}\r\n\t\t\tif (!isReverse) {\r\n\t\t\t\tif (optionsMap.display != null) {\r\n\t\t\t\t\t(propertiesMap as VelocityProperties).display = optionsMap.display as string;\r\n\t\t\t\t\tconsole.error(\"Deprecated 'options.display' used, this is now a property:\", optionsMap.display);\r\n\t\t\t\t}\r\n\t\t\t\tif (optionsMap.visibility != null) {\r\n\t\t\t\t\t(propertiesMap as VelocityProperties).visibility = optionsMap.visibility as string;\r\n\t\t\t\t\tconsole.error(\"Deprecated 'options.visibility' used, this is now a property:\", optionsMap.visibility);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// TODO: Allow functional options for different options per element\r\n\t\t\tconst optionsBegin = validateBegin(optionsMap.begin),\r\n\t\t\t\toptionsComplete = validateComplete(optionsMap.complete),\r\n\t\t\t\toptionsProgress = validateProgress(optionsMap.progress),\r\n\t\t\t\toptionsSync = validateSync(optionsMap.sync);\r\n\r\n\t\t\tif (optionsBegin != null) {\r\n\t\t\t\toptions.begin = optionsBegin;\r\n\t\t\t}\r\n\t\t\tif (optionsComplete != null) {\r\n\t\t\t\toptions.complete = optionsComplete;\r\n\t\t\t}\r\n\t\t\tif (optionsProgress != null) {\r\n\t\t\t\toptions.progress = optionsProgress;\r\n\t\t\t}\r\n\t\t\tif (optionsSync != null) {\r\n\t\t\t\tisSync = optionsSync;\r\n\t\t\t}\r\n\t\t} else if (!syntacticSugar) {\r\n\t\t\t// Expand any direct options if possible.\r\n\t\t\tconst duration = validateDuration(_arguments[argumentIndex], true);\r\n\t\t\tlet offset = 0;\r\n\r\n\t\t\tif (duration !== undefined) {\r\n\t\t\t\toffset++;\r\n\t\t\t\toptions.duration = duration;\r\n\t\t\t}\r\n\t\t\tif (!isFunction(_arguments[argumentIndex + offset])) {\r\n\t\t\t\t// Despite coming before Complete, we can't pass a fn easing\r\n\t\t\t\tconst easing = validateEasing(_arguments[argumentIndex + offset], getValue(options && validateDuration(options.duration), defaults.duration) as number, true);\r\n\r\n\t\t\t\tif (easing !== undefined) {\r\n\t\t\t\t\toffset++;\r\n\t\t\t\t\toptions.easing = easing;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tconst complete = validateComplete(_arguments[argumentIndex + offset], true);\r\n\r\n\t\t\tif (complete !== undefined) {\r\n\t\t\t\toptions.complete = complete;\r\n\t\t\t}\r\n\t\t\toptions.loop = defaults.loop;\r\n\t\t\toptions.repeat = options.repeatAgain = defaults.repeat;\r\n\t\t}\r\n\r\n\t\tif (isReverse && options.queue === false) {\r\n\t\t\tthrow new Error(\"VelocityJS: Cannot reverse a queue:false animation.\");\r\n\t\t}\r\n\r\n\t\t/* When a set of elements is targeted by a Velocity call, the set is broken up and each element has the current Velocity call individually queued onto it.\r\n\t\t In this way, each element's existing queue is respected; some elements may already be animating and accordingly should not have this current Velocity call triggered immediately. */\r\n\t\t/* In each queue, tween data is processed for each animating property then pushed onto the call-wide calls array. When the last element in the set has had its tweens processed,\r\n\t\t the call array is pushed to VelocityStatic.State.calls for live processing by the requestAnimationFrame tick. */\r\n\r\n\t\tconst rootAnimation: AnimationCall = {\r\n\t\t\t_prev: undefined,\r\n\t\t\t_next: undefined,\r\n\t\t\t_flags: isSync ? AnimationFlags.SYNC : 0,\r\n\t\t\toptions: options,\r\n\t\t\tpercentComplete: 0,\r\n\t\t\t//element: element,\r\n\t\t\telements: elements,\r\n\t\t\tellapsedTime: 0,\r\n\t\t\ttimeStart: 0\r\n\t\t};\r\n\r\n\t\tanimations = [];\r\n\t\tfor (let index = 0; index < elements.length; index++) {\r\n\t\t\tconst element = elements[index];\r\n\t\t\tlet flags = 0;\r\n\r\n\t\t\tif (isNode(element)) { // TODO: This needs to check for valid animation targets, not just Elements\r\n\t\t\t\tif (isReverse) {\r\n\t\t\t\t\tconst lastAnimation = Data(element).lastAnimationList[options.queue as string];\r\n\r\n\t\t\t\t\tpropertiesMap = lastAnimation && lastAnimation.tweens;\r\n\t\t\t\t\tif (!propertiesMap) {\r\n\t\t\t\t\t\tconsole.error(\"VelocityJS: Attempting to reverse an animation on an element with no previous animation:\", element);\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tflags |= AnimationFlags.REVERSE & ~(lastAnimation._flags & AnimationFlags.REVERSE);\r\n\t\t\t\t}\r\n\t\t\t\tconst tweens = Object.create(null),\r\n\t\t\t\t\tanimation: AnimationCall = Object.assign({\r\n\t\t\t\t\t\telement: element,\r\n\t\t\t\t\t\ttweens: tweens\r\n\t\t\t\t\t}, rootAnimation);\r\n\r\n\t\t\t\toptions._total++;\r\n\t\t\t\tanimation._flags |= flags;\r\n\t\t\t\tanimations.push(animation);\r\n\t\t\t\tif (isReverse) {\r\n\t\t\t\t\t// In this case we're using the previous animation, so\r\n\t\t\t\t\t// it will be expanded correctly when that one runs.\r\n\t\t\t\t\tanimation.tweens = propertiesMap as any;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tVelocityStatic.expandProperties(animation, propertiesMap);\r\n\t\t\t\t}\r\n\t\t\t\tVelocityStatic.queue(element, animation, options.queue);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (VelocityStatic.State.isTicking === false) {\r\n\t\t\t// If the animation tick isn't running, start it. (Velocity shuts it\r\n\t\t\t// off when there are no active calls to process.)\r\n\t\t\tVelocityStatic.tick();\r\n\t\t}\r\n\t\tif (animations) {\r\n\t\t\tdefineProperty(elements.velocity, \"animations\", animations);\r\n\t\t}\r\n\t}\r\n\t/***************\r\n\t Chaining\r\n\t ***************/\r\n\r\n\t/* Return the elements back to the call chain, with wrapped elements taking precedence in case Velocity was called via the $.fn. extension. */\r\n\treturn elements || promise as any;\r\n};\r\n\r\n\r\n/***************\r\n Summary\r\n ***************/\r\n\r\n/*\r\n - CSS: CSS stack that works independently from the rest of Velocity.\r\n - animate(): Core animation method that iterates over the targeted elements and queues the incoming call onto each element individually.\r\n - Pre-Queueing: Prepare the element for animation by instantiating its data cache and processing the call's options.\r\n - Queueing: The logic that runs once the call has reached its point of execution in the element's queue stack.\r\n Most logic is placed here to avoid risking it becoming stale (if the element's properties have changed).\r\n - Pushing: Consolidation of the tween data followed by its push onto the global in-progress calls container.\r\n - tick(): The single requestAnimationFrame loop responsible for tweening all in-progress calls.\r\n - completeCall(): Handles the cleanup process for each Velocity call.\r\n */\r\n\r\n/*********************\r\n Helper Functions\r\n *********************/\r\n\r\n/* IE detection. Gist: https://gist.github.com/julianshapiro/9098609 */\r\nvar IE = (function() {\r\n\tif (document.documentMode) {\r\n\t\treturn document.documentMode;\r\n\t} else {\r\n\t\tfor (let i = 7; i > 4; i--) {\r\n\t\t\tlet div = document.createElement(\"div\");\r\n\r\n\t\t\tdiv.innerHTML = \"\";\r\n\t\t\tif (div.getElementsByTagName(\"span\").length) {\r\n\t\t\t\tdiv = null;\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn undefined;\r\n})();\r\n\r\n/******************\r\n Unsupported\r\n ******************/\r\n\r\nif (IE <= 8) {\r\n\tthrow new Error(\"VelocityJS cannot run on Internet Explorer 8 or earlier\");\r\n}\r\n\r\n/******************\r\n Frameworks\r\n ******************/\r\n\r\ninterface Window {\r\n\tjQuery: {fn?: any};\r\n\tZepto: {fn?: any};\r\n\tVelocity: any;\r\n}\r\n\r\nif (window === this) {\r\n\t/*\r\n\t * Both jQuery and Zepto allow their $.fn object to be extended to allow\r\n\t * wrapped elements to be subjected to plugin calls. If either framework is\r\n\t * loaded, register a \"velocity\" extension pointing to Velocity's core\r\n\t * animate() method. Velocity also registers itself onto a global container\r\n\t * (window.jQuery || window.Zepto || window) so that certain features are\r\n\t * accessible beyond just a per-element scope. Accordingly, Velocity can\r\n\t * both act on wrapped DOM elements and stand alone for targeting raw DOM\r\n\t * elements.\r\n\t */\r\n\tconst patch = VelocityStatic.patch,\r\n\t\tjQuery = window.jQuery,\r\n\t\tZepto = window.Zepto;\r\n\r\n\tpatch(window, true);\r\n\tpatch(Element && Element.prototype);\r\n\tpatch(NodeList && NodeList.prototype);\r\n\tpatch(HTMLCollection && HTMLCollection.prototype);\r\n\r\n\tpatch(jQuery, true);\r\n\tpatch(jQuery && jQuery.fn);\r\n\r\n\tpatch(Zepto, true);\r\n\tpatch(Zepto && Zepto.fn);\r\n}\r\n\r\n/******************\r\n Known Issues\r\n ******************/\r\n\r\n/* The CSS spec mandates that the translateX/Y/Z transforms are %-relative to the element itself -- not its parent.\r\n Velocity, however, doesn't make this distinction. Thus, converting to or from the % unit with these subproperties\r\n will produce an inaccurate conversion value. The same issue exists with the cx/cy attributes of SVG circles and ellipses. */\r\n","///\r\n///\r\n///\r\n///\r\n///\r\n///\r\n/*\r\n * VelocityJS.org (C) 2014-2017 Julian Shapiro.\r\n *\r\n * Licensed under the MIT license. See LICENSE file in the project root for details.\r\n * \r\n * Merge the VelocityStatic namespace onto the Velocity function for external\r\n * use. This is done as a read-only way. Any attempt to change these values will\r\n * be allowed.\r\n */\r\nfor (const key in VelocityStatic) {\r\n\tlet value = VelocityStatic[key];\r\n\r\n\tif (isString(value) || isNumber(value) || isBoolean(value)) {\r\n\t\tObject.defineProperty(VelocityFn, key, {\r\n\t\t\tenumerable: PUBLIC_MEMBERS.indexOf(key) >= 0,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn VelocityStatic[key];\r\n\t\t\t},\r\n\t\t\tset: function(value?: any) {\r\n\t\t\t\tVelocityStatic[key] = value;\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\tObject.defineProperty(VelocityFn, key, {\r\n\t\t\tenumerable: PUBLIC_MEMBERS.indexOf(key) >= 0,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn VelocityStatic[key];\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\n// console.log(\"Velocity keys\", Object.keys(VelocityStatic));\r\n"]} \ No newline at end of file diff --git a/velocity.min.js b/velocity.min.js index f279ec74..af60063e 100644 --- a/velocity.min.js +++ b/velocity.min.js @@ -1,2 +1,2 @@ -/*! velocity-animate v2.0.1 (Sunday 18th February 2018, 12:13:05 AM) */ -!function(e,t){"function"==typeof define&&define.amd?define("Velocity",[],function(){return e.Velocity=t()}):"object"==typeof module&&module.exports?module.exports=t():e.Velocity=t()}(this,function(){var e=this&&this.__assign||Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0)return n}function ye(e,t,n){var r=oe.Easing;if(l(e))return r.Easings[e];if(u(e))return e;if(Array.isArray(e)){if(1===e.length)return r.generateStep(e[0]);if(2===e.length)return r.generateSpringRK4(e[0],e[1],t);if(4===e.length)return r.generateBezier.apply(null,e)||!1}}function be(e){if(!1===e)return 0;var t=parseInt(e,10);return!isNaN(t)&&t>=0?Math.min(t,60):void 0}function Se(e){if(!1===e)return 0;if(!0===e)return!0;var t=parseInt(e,10);return!isNaN(t)&&t>=0?t:void 0}function we(e,t){if(!1===e||l(e))return e}function Ee(e){if(!1===e)return 0;if(!0===e)return!0;var t=parseInt(e,10);return!isNaN(t)&&t>=0?t:void 0}function xe(e){if(o(e))return e}function Ce(e){if(a(e))return e}function Ne(){for(var e=[],t=0;t=0?a.replace(/^.*\./,""):void 0,c="false"!==u&&we(u,!0),g=n[1];if(!l)return null;if(f(r)&&r.velocity.animations)o=r.velocity.animations;else{o=[];for(var d=e.State.first;d;d=d._next)r.indexOf(d.element)>=0&&ue(d.queue,d.options.queue)===c&&o.push(d);if(r.length>1&&o.length>1){for(var p=1,v=o[0].options;p=0?a.replace(/^.*\./,""):void 0)&&we(n[0]),l=e.defaults.queue;if(f(r)&&r.velocity.animations)for(var u=0,c=r.velocity.animations;u1)throw Error("VelocityJS: Must tween a percentage from 0 to 1!");if(!d(g))throw Error("VelocityJS: Cannot tween an invalid property!");if(a)for(var m in g)if(g.hasOwnProperty(m)&&(!Array.isArray(g[m])||g[m].length<2))throw Error("VelocityJS: When not supplying an element you must force-feed values: "+m);var h,y=ye(ue(p,e.defaults.easing),1e3);for(var m in e.expandProperties(c,g),c.tweens){var b=c.tweens[m],S=b[1]||y,w=b[3],E=b[4],x="";if(v++,w)for(var C=0;C>=1,u++)1&s&&(l=E.Normalizations[u][n]||l);return a=l?l(e):t(e,n),o&&(o.cache[n]=a),a}e.computePropertyValue=t,e.getPropertyValue=n}((E=oe||(oe={})).CSS||(E.CSS={})),N=oe||(oe={}),x=N.CSS||(N.CSS={}),C=["%","em","ex","ch","rem","vw","vh","vmin","vmax","cm","mm","Q","in","pc","pt","px","deg","grad","rad","turn","s","ms"],x.getUnit=function(e,t){if(e[t=t||0]&&" "!==e[t])for(var n=0,r=C;n=i.length)return i;if(i[a]!==e[t+a])break}while(++a)}return""},((k=oe||(oe={})).CSS||(k.CSS={})).RegEx={isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},((A=oe||(oe={})).CSS||(A.CSS={})).setPropertyValue=function(e,t,n){var r=fe(e);if(l(n)&&"c"===n[0]&&"a"===n[1]&&"l"===n[2]&&"c"===n[3]&&"("===n[4]&&"0"===n[5]&&" "===n[5]&&(n=n.replace(/^calc\(0[^\d]* \+ ([^\(\)]+)\)$/,"$1")),r&&r.cache[t]!==n){r.cache[t]=n||void 0;for(var i=r.types,a=void 0,o=0;i;i>>=1,o++)1&i&&(a=A.Normalizations[o][t]||a);a&&a(e,n)||(e.style[t]=n)}},function(e){function t(t){var n=t[0],r=t[1];l(n)&&u(r)&&(e.Easings[n]||(e.Easings[n]=r))}e.Easings=Object.create(null),e.registerEasing=t,O.registerAction(["registerEasing",t],!0),t(["linear",function(e,t,n){return t+e*(n-t)}]),t(["swing",function(e,t,n){return t+(.5-Math.cos(e*Math.PI)/2)*(n-t)}]),t(["spring",function(e,t,n){return t+(1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e))*(n-t)}])}((O=oe||(oe={})).Easing||(O.Easing={})),function(e){function t(t,n){e.registerEasing([t,function(e,t,r){return 0===e?t:1===e?r:Math.pow(e,2)*((n+1)*e-n)*(r-t)}])}function n(t,n){e.registerEasing([t,function(e,t,r){return 0===e?t:1===e?r:(Math.pow(--e,2)*((n+1)*e+n)+1)*(r-t)}])}function r(t,n){n*=1.525,e.registerEasing([t,function(e,t,r){return 0===e?t:1===e?r:.5*((e*=2)<1?Math.pow(e,2)*((n+1)*e-n):Math.pow(e-=2,2)*((n+1)*e+n)+2)*(r-t)}])}e.registerBackIn=t,e.registerBackOut=n,e.registerBackInOut=r,t("easeInBack",1.7),n("easeOutBack",1.7),r("easeInOutBack",1.7)}((_=oe||(oe={})).Easing||(_.Easing={})),function(e){function t(e){return Math.min(Math.max(e,0),1)}function n(e,t){return 1-3*t+3*e}function r(e,t){return 3*t-6*e}function i(e){return 3*e}function a(e,t,a){return((n(t,a)*e+r(t,a))*e+i(t))*e}function o(e,t,a){return 3*n(t,a)*e*e+2*r(t,a)*e+i(t)}function s(e,n,r,i){var s=4,l=.001,u=1e-7,c=10,f=11,g=1/(f-1),d="Float32Array"in window;if(4===arguments.length){for(var p=0;p<4;++p)if("number"!=typeof arguments[p]||isNaN(arguments[p])||!isFinite(arguments[p]))return;e=t(e),r=t(r);var v=d?new Float32Array(f):Array(f),m=!1,h=function(t,o,s,l){return m||S(),0===t?o:1===t?s:e===n&&r===i?o+t*(s-o):o+a(b(t),n,i)*(s-o)};h.getControlPoints=function(){return[{x:e,y:n},{x:r,y:i}]};var y="generateBezier("+[e,n,r,i]+")";return h.toString=function(){return y},h}function b(t){for(var n=0,i=1,d=f-1;i!==d&&v[i]<=t;++i)n+=g;var p=n+(t-v[--i])/(v[i+1]-v[i])*g,m=o(p,e,r);return m>=l?function(t,n){for(var i=0;i0?i=s:n=s}while(Math.abs(o)>u&&++l1e-4&&Math.abs(s.v)>1e-4;);return y?function(e,t,n){return 0===e?t:1===e?n:t+m[e*(m.length-1)|0]*(n-t)}:h}}(),V=oe||(oe={}),I=V.Easing||(V.Easing={}),j={},I.generateStep=function(e){var t=j[e];return t||(j[e]=function(t,n,r){return 0===t?n:1===t?r:n+Math.round(t*e)*(1/e)*(r-n)})},L=oe||(oe={}),(R=L.Easing||(L.Easing={})).registerEasing(["at-start",function(e,t,n){return 0===e?t:n}]),R.registerEasing(["during",function(e,t,n){return 0===e||1===e?t:n}]),R.registerEasing(["at-end",function(e,t,n){return 1===e?n:t}]),function(e){function t(t){var n=t[0],r=t[1],i=t[2];if(!l(n)&&n instanceof Object)if(l(r))if(u(i)){var a=e.constructors.indexOf(n);a<0&&(a=e.constructors.push(n)-1,e.Normalizations[a]=Object.create(null)),e.Normalizations[a][r]=i,!1===t[3]&&e.NoCacheNormalizations.add(r)}else;else;else;}e.Normalizations=[],e.NoCacheNormalizations=new Set,e.constructors=[],e.registerNormalization=t,e.registerAction(["registerNormalization",t])}(oe||(oe={})),function(e){function t(e){return function(t,n){return void 0===n?t.getAttribute(e):(t.setAttribute(e,n),!0)}}var n=document.createElement("div"),r=/^SVG(.*)Element$/,i=/Element$/;Object.getOwnPropertyNames(window).forEach(function(e){var a=r.exec(e);if(a){var o=document.createElementNS("http://www.w3.org/2000/svg",(a[1]||"svg").toLowerCase()),s=o.constructor;for(var c in o){var f=o[c];!l(c)||"o"===c[0]&&"n"===c[1]||c===c.toUpperCase()||i.test(c)||c in n||u(f)||z.registerNormalization([s,c,t(c)])}}})}((z=oe||(oe={})).CSS||(z.CSS={})),function(e){function t(e){return function(t,n){if(void 0===n)try{return t.getBBox()[e]+"px"}catch(e){return"0px"}return t.setAttribute(e,n),!0}}F.registerNormalization([SVGElement,"width",t("width")]),F.registerNormalization([SVGElement,"height",t("height")])}((F=oe||(oe={})).CSS||(F.CSS={})),function(e){function t(t,n,r){if("border-box"===(""+e.CSS.getPropertyValue(t,"boxSizing")).toLowerCase()===r){var i="width"===n?["Left","Right"]:["Top","Bottom"],a=["padding"+i[0],"padding"+i[1],"border"+i[0]+"Width","border"+i[1]+"Width"],o=void 0,s=void 0,l=0;for(o=0;o=1?0:n.calls.length?(1-f)/n.calls.length:1,v=function(f){var g=n.calls[f],d=g[0],v=1e3,m=g[1],h=g[2]||{},y={};if(void 0!==i.duration?v=i.duration:void 0!==n.defaultDuration&&(v=n.defaultDuration),y.duration=v*("number"==typeof m?m:p),y.queue=i.queue||"",y.easing=h.easing||"ease",y.delay=parseFloat(h.delay)||0,y.loop=!n.loop&&h.loop,y.cache=h.cache||!0,0===f&&(y.delay+=parseFloat(i.delay)||0,0===a&&(y.begin=function(){i.begin&&i.begin.call(s,s);var n,r,a,o,l,u,c=t.match(/(In|Out)$/);c&&"In"===c[0]&&void 0!==d.opacity&&(s.nodeType?[s]:s).forEach(function(t){e.CSS.setPropertyValue(t,"opacity",0)}),i.animateParentHeight&&c&&(r=c[0],a=v+y.delay,o=i.stagger,u=0,((n=s).nodeType?[n]:n).forEach(function(t,n){o&&(a+=n*o),l=t.parentNode;var r=["height","paddingTop","paddingBottom","marginTop","marginBottom"];"border-box"===(""+e.CSS.getPropertyValue(t,"boxSizing")).toLowerCase()&&(r=["height"]),r.forEach(function(n){u+=parseFloat(e.CSS.getPropertyValue(t,n))})}),Ne(l,{height:("In"===r?"+":"-")+"="+u},{queue:!1,easing:"ease-in-out",duration:a*("In"===r?.6:1)}))}),i.visibility&&"hidden"!==i.visibility&&(y.visibility=i.visibility)),f===n.calls.length-1){var b=function(){void 0!==i.display&&"none"!==i.display||!/Out$/.test(t)||(s.nodeType?[s]:s).forEach(function(t){e.CSS.setPropertyValue(t,"display","none")}),i.complete&&i.complete.call(s,s),l&&l(s||r)};y.complete=function(){if(u&&e.Redirects[t](r,i,a,o,s,l,!0===u||Math.max(0,u-1)),n.reset){for(var f in n.reset)n.reset.hasOwnProperty(f);var g={duration:0,queue:!1};c&&(g.complete=b),Ne(r,n.reset,g)}else c&&b()},"hidden"===i.visibility&&(y.visibility=i.visibility)}Ne(r,d,y)};for(g=0;g1&&(n.reverse().forEach(function(t,r){var i=n[r+1];if(i){var a=t.o||t.options,o=i.o||i.options,s=a&&!1===a.sequenceQueue?"begin":"complete",l=o&&o[s],u={};u[s]=function(){var e=i.e||i.elements,n=e.nodeType?[e]:e;l&&l.call(n,n),Ne(t)},i.o?i.o=e({},o,u):i.options=e({},o,u)}}),n.reverse()),Ne(n[0])}}(),function(e){function t(e){try{var t=e.elements;e.options.begin.call(t,t,e)}catch(e){setTimeout(function(){throw e},1)}}function n(t,n){try{var r=t.elements,i=t.percentComplete,a=t.options,o=t.tween;t.options.progress.call(r,r,i,Math.max(0,t.timeStart+(null!=t.duration?t.duration:null!=a.duration?a.duration:e.defaults.duration)-n),void 0!==o?o:100*i+"",t)}catch(e){setTimeout(function(){throw e},1)}}var r,i;function a(){var t,a;for(t=r;t;t=a)a=t._nextProgress,n(t,e.lastTick);for(t=i;t;t=a)a=t._nextComplete,e.completeCall(t)}e.callBegin=t;var o,s=1e3/60,l=function(){var e=window.performance||{};if("function"!=typeof e.now){var t=e.timing&&e.timing.navigationStart?e.timing.navigationStart:se();e.now=function(){return se()-t}}return e}(),u=function(t){return setTimeout(function(){t(l.now())},Math.max(0,s-(l.now()-e.lastTick)))},c=window.requestAnimationFrame||u,f=document.hidden?u:c;function g(n){if(!o){if(o=!0,n){var u=n&&!0!==n?n:l.now(),c=e.lastTick?u-e.lastTick:s,d=e.defaults.speed,p=e.defaults.easing,v=e.defaults.duration,m=void 0,h=void 0,y=void 0,b=void 0;if(r=null,i=null,c>=e.defaults.minFrameTime||!e.lastTick){for(e.lastTick=u;m=e.State.firstNew;)e.validateTweens(m);for(m=e.State.first;m&&m!==e.State.firstNew;m=m._next){var S=m.element,w=void 0;if(S.parentNode&&(w=fe(S))){var E=m.options,x=m._flags;if(!(k=m.timeStart)){var C=null!=m.queue?m.queue:E.queue;k=u-c,!1!==C&&(k=Math.max(k,w.lastFinishList[C]||0)),m.timeStart=k}16&x?m.timeStart+=c:2&x||(m._flags|=2,E._ready++)}else e.freeAnimationCall(m)}for(m=e.State.first;m&&m!==e.State.firstNew;m=h){if(h=m._next,2&(x=m._flags)&&!(16&x)){E=m.options;if(32&x&&E._readyu)continue;m.timeStart=k+=A/(A>0?N:1)}m._flags|=4,0==E._started++&&(E._first=m,E.begin&&(t(m),E.begin=void 0))}if(1!==N)m.timeStart=k+=Math.min(c,u-k)*(1-N);E._first===m&&E.progress&&(m._nextProgress=void 0,y?y._nextProgress=y=m:r=y=m);var O=null!=m.easing?m.easing:null!=E.easing?E.easing:p,_=m.ellapsedTime=u-k,T=m.percentComplete=e.mock?1:Math.min(_/(null!=m.duration?m.duration:null!=E.duration?E.duration:v),1),P=m.tweens,q=64&x;for(var M in 1===T&&(m._nextComplete=void 0,b?b._nextComplete=b=m:i=b=m),P){var I=P[M],j=I[1]||O,V=I[3],L=I[4],R="",z=0;if(V){for(;z=4&&"("===t?y++:(y&&y<5||y>=4&&")"===t&&--y<5)&&(y=0),0===b&&"r"===t||1===b&&"g"===t||2===b&&"b"===t||3===b&&"a"===t||b>=3&&"("===t?(3===b&&"a"===t&&(S=1),b++):S&&","===t?++S>3&&(b=S=0):(S&&b<(S?5:4)||b>=(S?4:3)&&")"===t&&--b<(S?5:4))&&(b=S=0);else if(t||i){for(w=!0,l(f[f.length-1])||(1!==d.length||d[0]?(d.push(""),f.push(""),g.push("")):f[0]=g[0]="");m>=1,S++)b=!!(1&y&&e.Normalizations[S][m]);if((b||e.State.prefixElement&&l(e.State.prefixElement.style[m]))&&null!=h){var w=i[m]=Array(5),E=void 0,x=void 0;if(u(h)&&(h=h.call(c,f,s.length,s)),Array.isArray(h)){var C=h[1],N=h[2];E=h[0],l(C)&&(/^[\d-]/.test(C)||e.CSS.RegEx.isHex.test(C))||u(C)||o(C)?x=C:l(C)&&e.Easing.Easings[C]||Array.isArray(C)?(w[1]=C,x=N):x=C||N}else E=h;w[0]=t.get(typeof E)(E,c,s,f,m),null==x&&!1!==d&&void 0!==g.queueList[d]||(w[2]=t.get(typeof x)(x,c,s,f,m)),a(m,w,p,!!x)}}},e.validateTweens=function(t){if(e.State.firstNew===t&&(e.State.firstNew=t._next),!(1&t._flags)){var n=t.tweens,r=ue(t.options.duration,e.defaults.duration);for(var i in n){var o=n[i];if(null==o[2]){var s=e.CSS.getPropertyValue(t.element,i);l(s)&&(o[2]=e.CSS.fixColors(s),a(i,o,r))}}t._flags|=1}}}(oe||(oe={})),(oe||(oe={})).version="2.0.1",function(){if(document.documentMode)return document.documentMode;for(var e=7;e>4;e--){var t=document.createElement("div");if(t.innerHTML="\x3c!--[if IE "+e+"]>=0,get:function(){return oe[e]}})};for(var Te in oe)_e(Te);return Ne}); \ No newline at end of file +/*! velocity-animate v2.0.1 (Saturday 24th February 2018, 7:26:12 AM) */ +!function(e,t){"function"==typeof define&&define.amd?define("Velocity",[],function(){return e.Velocity=t()}):"object"==typeof module&&module.exports?module.exports=t():e.Velocity=t()}(this,function(){var e=this&&this.__assign||Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0)return n}function ve(e,t,n){var r=re.Easing;if(l(e))return r.Easings[e];if(u(e))return e;if(Array.isArray(e)){if(1===e.length)return r.generateStep(e[0]);if(2===e.length)return r.generateSpringRK4(e[0],e[1],t);if(4===e.length)return r.generateBezier.apply(null,e)||!1}}function me(e){if(!1===e)return 0;var t=parseInt(e,10);return!isNaN(t)&&t>=0?Math.min(t,60):void 0}function he(e){if(!1===e)return 0;if(!0===e)return!0;var t=parseInt(e,10);return!isNaN(t)&&t>=0?t:void 0}function ye(e,t){if(!1===e||l(e))return e}function be(e){if(!1===e)return 0;if(!0===e)return!0;var t=parseInt(e,10);return!isNaN(t)&&t>=0?t:void 0}function we(e){if(o(e))return e}function Se(e){if(a(e))return e}function Ee(){for(var e=[],t=0;t=0?a.replace(/^.*\./,""):void 0,c="false"!==u&&ye(u,!0),g=n[1];if(!l)return null;if(f(r)&&r.velocity.animations)o=r.velocity.animations;else{o=[];for(var d=e.State.first;d;d=d._next)r.indexOf(d.element)>=0&&oe(d.queue,d.options.queue)===c&&o.push(d);if(r.length>1&&o.length>1){for(var p=1,v=o[0].options;p=0?a.replace(/^.*\./,""):void 0)&&ye(n[0]),l=e.defaults.queue;if(f(r)&&r.velocity.animations)for(var u=0,c=r.velocity.animations;u1)throw Error("VelocityJS: Must tween a percentage from 0 to 1!");if(!d(g))throw Error("VelocityJS: Cannot tween an invalid property!");if(a)for(var m in g)if(g.hasOwnProperty(m)&&(!Array.isArray(g[m])||g[m].length<2))throw Error("VelocityJS: When not supplying an element you must force-feed values: "+m);var h,y=ve(oe(p,e.defaults.easing),1e3);for(var m in e.expandProperties(c,g),c.tweens){var b=c.tweens[m],w=b.easing||y,S=b.pattern,E="";if(v++,S)for(var x=0;x=i.length)return i;if(i[a]!==e[t+a])break}while(++a)}return""},((O=re||(re={})).CSS||(O.CSS={})).setPropertyValue=function(e,t,n,r){var i=le(e);l(n)&&"c"===n[0]&&"a"===n[1]&&"l"===n[2]&&"c"===n[3]&&"("===n[4]&&"0"===n[5]&&" "===n[5]&&(n=n.replace(/^calc\(0[^\d]* \+ ([^\(\)]+)\)$/,"$1")),i&&i.cache[t]!==n&&(i.cache[t]=n||void 0,(r=r||O.getNormalization(e,t))&&r(e,n))},function(e){function t(t){var n=t[0],r=t[1];l(n)&&u(r)&&(e.Easings[n]||(e.Easings[n]=r))}e.Easings=Object.create(null),e.registerEasing=t,k.registerAction(["registerEasing",t],!0),t(["linear",function(e,t,n){return t+e*(n-t)}]),t(["swing",function(e,t,n){return t+(.5-Math.cos(e*Math.PI)/2)*(n-t)}]),t(["spring",function(e,t,n){return t+(1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e))*(n-t)}])}((k=re||(re={})).Easing||(k.Easing={})),function(e){function t(t,n){e.registerEasing([t,function(e,t,r){return 0===e?t:1===e?r:Math.pow(e,2)*((n+1)*e-n)*(r-t)}])}function n(t,n){e.registerEasing([t,function(e,t,r){return 0===e?t:1===e?r:(Math.pow(--e,2)*((n+1)*e+n)+1)*(r-t)}])}function r(t,n){n*=1.525,e.registerEasing([t,function(e,t,r){return 0===e?t:1===e?r:.5*((e*=2)<1?Math.pow(e,2)*((n+1)*e-n):Math.pow(e-=2,2)*((n+1)*e+n)+2)*(r-t)}])}e.registerBackIn=t,e.registerBackOut=n,e.registerBackInOut=r,t("easeInBack",1.7),n("easeOutBack",1.7),r("easeInOutBack",1.7)}((_=re||(re={})).Easing||(_.Easing={})),function(e){function t(e){return Math.min(Math.max(e,0),1)}function n(e,t){return 1-3*t+3*e}function r(e,t){return 3*t-6*e}function i(e){return 3*e}function a(e,t,a){return((n(t,a)*e+r(t,a))*e+i(t))*e}function o(e,t,a){return 3*n(t,a)*e*e+2*r(t,a)*e+i(t)}function s(e,n,r,i){var s=4,l=.001,u=1e-7,c=10,f=11,g=1/(f-1),d="Float32Array"in window;if(4===arguments.length){for(var p=0;p<4;++p)if("number"!=typeof arguments[p]||isNaN(arguments[p])||!isFinite(arguments[p]))return;e=t(e),r=t(r);var v=d?new Float32Array(f):Array(f),m=!1,h=function(t,o,s,l){return m||w(),0===t?o:1===t?s:e===n&&r===i?o+t*(s-o):o+a(b(t),n,i)*(s-o)};h.getControlPoints=function(){return[{x:e,y:n},{x:r,y:i}]};var y="generateBezier("+[e,n,r,i]+")";return h.toString=function(){return y},h}function b(t){for(var n=0,i=1,d=f-1;i!==d&&v[i]<=t;++i)n+=g;var p=n+(t-v[--i])/(v[i+1]-v[i])*g,m=o(p,e,r);return m>=l?function(t,n){for(var i=0;i0?i=s:n=s}while(Math.abs(o)>u&&++l1e-4&&Math.abs(s.v)>1e-4;);return y?function(e,t,n){return 0===e?t:1===e?n:t+m[e*(m.length-1)|0]*(n-t)}:h}}(),I=re||(re={}),q=I.Easing||(I.Easing={}),j={},q.generateStep=function(e){var t=j[e];return t||(j[e]=function(t,n,r){return 0===t?n:1===t?r:n+Math.round(t*e)*(1/e)*(r-n)})},z=re||(re={}),(V=z.Easing||(z.Easing={})).registerEasing(["at-start",function(e,t,n){return 0===e?t:n}]),V.registerEasing(["during",function(e,t,n){return 0===e||1===e?t:n}]),V.registerEasing(["at-end",function(e,t,n){return 1===e?n:t}]),function(e){function t(t){var n=t[0],r=t[1],i=t[2];if(!l(n)&&n instanceof Object)if(l(r))if(u(i)){var a=e.constructors.indexOf(n);a<0&&(e.MaxType=a=e.constructors.push(n)-1,e.Normalizations[a]=Object.create(null)),e.Normalizations[a][r]=i,!1===t[3]&&e.NoCacheNormalizations.add(r)}else;else;else;}function n(t){var n=t[1],r=e.constructors.indexOf(t[0]);return!!e.Normalizations[r][n]}e.MaxType=-1,e.Normalizations=[],e.NoCacheNormalizations=new Set,e.constructors=[],e.registerNormalization=t,e.hasNormalization=n,e.getNormalization=function(t,n){for(var r,i=le(t),a=e.MaxType,o=i.types;!r&&a>=0;a--)o&1<=1?0:n.calls.length?(1-f)/n.calls.length:1,v=function(f){var g=n.calls[f],d=g[0],v=1e3,m=g[1],h=g[2]||{},y={};if(void 0!==i.duration?v=i.duration:void 0!==n.defaultDuration&&(v=n.defaultDuration),y.duration=v*("number"==typeof m?m:p),y.queue=i.queue||"",y.easing=h.easing||"ease",y.delay=parseFloat(h.delay)||0,y.loop=!n.loop&&h.loop,y.cache=h.cache||!0,0===f&&(y.delay+=parseFloat(i.delay)||0,0===a&&(y.begin=function(){i.begin&&i.begin.call(s,s);var n,r,a,o,l,u,c=t.match(/(In|Out)$/);c&&"In"===c[0]&&void 0!==d.opacity&&(s.nodeType?[s]:s).forEach(function(t){e.CSS.setPropertyValue(t,"opacity",0)}),i.animateParentHeight&&c&&(r=c[0],a=v+y.delay,o=i.stagger,u=0,((n=s).nodeType?[n]:n).forEach(function(t,n){o&&(a+=n*o),l=t.parentNode;var r=["height","paddingTop","paddingBottom","marginTop","marginBottom"];"border-box"===(""+e.CSS.getPropertyValue(t,"boxSizing")).toLowerCase()&&(r=["height"]),r.forEach(function(n){u+=parseFloat(e.CSS.getPropertyValue(t,n))})}),Ee(l,{height:("In"===r?"+":"-")+"="+u},{queue:!1,easing:"ease-in-out",duration:a*("In"===r?.6:1)}))}),i.visibility&&"hidden"!==i.visibility&&(y.visibility=i.visibility)),f===n.calls.length-1){var b=function(){void 0!==i.display&&"none"!==i.display||!/Out$/.test(t)||(s.nodeType?[s]:s).forEach(function(t){e.CSS.setPropertyValue(t,"display","none")}),i.complete&&i.complete.call(s,s),l&&l(s||r)};y.complete=function(){if(u&&e.Redirects[t](r,i,a,o,s,l,!0===u||Math.max(0,u-1)),n.reset){for(var f in n.reset)n.reset.hasOwnProperty(f);var g={duration:0,queue:!1};c&&(g.complete=b),Ee(r,n.reset,g)}else c&&b()},"hidden"===i.visibility&&(y.visibility=i.visibility)}Ee(r,d,y)};for(g=0;g1&&(n.reverse().forEach(function(t,r){var i=n[r+1];if(i){var a=t.o||t.options,o=i.o||i.options,s=a&&!1===a.sequenceQueue?"begin":"complete",l=o&&o[s],u={};u[s]=function(){var e=i.e||i.elements,n=e.nodeType?[e]:e;l&&l.call(n,n),Ee(t)},i.o?i.o=e({},o,u):i.options=e({},o,u)}}),n.reverse()),Ee(n[0])}}(),function(e){function t(e){try{var t=e.elements;e.options.begin.call(t,t,e)}catch(e){setTimeout(function(){throw e},1)}}function n(t,n){try{var r=t.elements,i=t.percentComplete,a=t.options,o=t.tween;t.options.progress.call(r,r,i,Math.max(0,t.timeStart+(null!=t.duration?t.duration:null!=a.duration?a.duration:e.defaults.duration)-n),void 0!==o?o:100*i+"",t)}catch(e){setTimeout(function(){throw e},1)}}var r,i;function a(){var t,a;for(t=r;t;t=a)a=t._nextProgress,n(t,e.lastTick);for(t=i;t;t=a)a=t._nextComplete,e.completeCall(t)}e.callBegin=t;var o,s=1e3/60,l=function(){var e=window.performance||{};if("function"!=typeof e.now){var t=e.timing&&e.timing.navigationStart?e.timing.navigationStart:ie();e.now=function(){return ie()-t}}return e}(),u=function(t){return setTimeout(function(){t(l.now())},Math.max(0,s-(l.now()-e.lastTick)))},c=window.requestAnimationFrame||u,f=document.hidden?u:c;function g(n){if(!o){if(o=!0,n){var u=n&&!0!==n?n:l.now(),c=e.lastTick?u-e.lastTick:s,d=e.defaults.speed,p=e.defaults.easing,v=e.defaults.duration,m=void 0,h=void 0,y=void 0,b=void 0;if(r=null,i=null,c>=e.defaults.minFrameTime||!e.lastTick){for(e.lastTick=u;m=e.State.firstNew;)e.validateTweens(m);for(m=e.State.first;m&&m!==e.State.firstNew;m=m._next){var w=m.element,S=void 0;if(w.parentNode&&(S=le(w))){var E=m.options,x=m._flags;if(!(O=m.timeStart)){var C=null!=m.queue?m.queue:E.queue;O=u-c,!1!==C&&(O=Math.max(O,S.lastFinishList[C]||0)),m.timeStart=O}16&x?m.timeStart+=c:2&x||(m._flags|=2,E._ready++)}else e.freeAnimationCall(m)}for(m=e.State.first;m&&m!==e.State.firstNew;m=h){if(h=m._next,2&(x=m._flags)&&!(16&x)){E=m.options;if(32&x&&E._readyu)continue;m.timeStart=O+=k/(k>0?N:1)}m._flags|=4,0==E._started++&&(E._first=m,E.begin&&(t(m),E.begin=void 0))}if(1!==N)m.timeStart=O+=Math.min(c,u-O)*(1-N);E._first===m&&E.progress&&(m._nextProgress=void 0,y?y._nextProgress=y=m:r=y=m);var _=null!=m.easing?m.easing:null!=E.easing?E.easing:p,A=m.ellapsedTime=u-O,P=m.percentComplete=e.mock?1:Math.min(A/(null!=m.duration?m.duration:null!=E.duration?E.duration:v),1),T=m.tweens,M=64&x;for(var q in 1===P&&(m._nextComplete=void 0,b?b._nextComplete=b=m:i=b=m),T){var j=T[q],I=j.easing||_,z=j.pattern,V="",L=0;if(z){for(;L=4&&"("===t?h++:(h&&h<5||h>=4&&")"===t&&--h<5)&&(h=0),0===y&&"r"===t||1===y&&"g"===t||2===y&&"b"===t||3===y&&"a"===t||y>=3&&"("===t?(3===y&&"a"===t&&(b=1),y++):b&&","===t?++b>3&&(y=b=0):(b&&y<(b?5:4)||y>=(b?4:3)&&")"===t&&--y<(b?5:4))&&(y=b=0);else if(t||n){for(w=!0,l(f[f.length-1])||(1!==d.length||d[0]?(d.push(""),f.push(""),g.push("")):f[0]=g[0]="");v4;e--){var t=document.createElement("div");if(t.innerHTML="\x3c!--[if IE "+e+"]>=0,get:function(){return re[e]},set:function(t){re[e]=t}}):Object.defineProperty(Ee,e,{enumerable:t.indexOf(e)>=0,get:function(){return re[e]}})};for(var ke in re)Oe(ke);return Ee}); \ No newline at end of file diff --git a/velocity.ui.min.js b/velocity.ui.min.js index 71f706fb..70fd769e 100644 --- a/velocity.ui.min.js +++ b/velocity.ui.min.js @@ -1,2 +1,2 @@ -/*! velocity-animate v2.0.1 (Sunday 18th February 2018, 12:13:05 AM) */ +/*! velocity-animate v2.0.1 (Saturday 24th February 2018, 7:26:12 AM) */ !function(t){"use strict";"function"==typeof require&&"object"==typeof exports?module.exports=t():"function"==typeof define&&define.amd?define(["velocity"],t):t()}(function(t){"use strict";return function(a,r){var e=t||(this||a).Velocity;if(e){var n={"callout.bounce":{defaultDuration:550,calls:[[{translateY:-30},.25],[{translateY:0},.125],[{translateY:-15},.125],[{translateY:0},.25]]},"callout.shake":{defaultDuration:800,calls:[[{translateX:-11}],[{translateX:11}],[{translateX:-11}],[{translateX:11}],[{translateX:-11}],[{translateX:11}],[{translateX:-11}],[{translateX:0}]]},"callout.flash":{defaultDuration:1100,calls:[[{opacity:[0,"easeInOutQuad",1]}],[{opacity:[1,"easeInOutQuad"]}],[{opacity:[0,"easeInOutQuad"]}],[{opacity:[1,"easeInOutQuad"]}]]},"callout.pulse":{defaultDuration:825,calls:[[{scaleX:1.1,scaleY:1.1},.5,{easing:"easeInExpo"}],[{scaleX:1,scaleY:1},.5]]},"callout.swing":{defaultDuration:950,calls:[[{rotateZ:15}],[{rotateZ:-10}],[{rotateZ:5}],[{rotateZ:-5}],[{rotateZ:0}]]},"callout.tada":{defaultDuration:1e3,calls:[[{scaleX:.9,scaleY:.9,rotateZ:-3},.1],[{scaleX:1.1,scaleY:1.1,rotateZ:3},.1],[{scaleX:1.1,scaleY:1.1,rotateZ:-3},.1],["reverse",.125],["reverse",.125],["reverse",.125],["reverse",.125],["reverse",.125],[{scaleX:1,scaleY:1,rotateZ:0},.2]]},"transition.fadeIn":{defaultDuration:500,calls:[[{opacity:[1,0]}]]},"transition.fadeOut":{defaultDuration:500,calls:[[{opacity:[0,1]}]]},"transition.flipXIn":{defaultDuration:700,calls:[[{opacity:[1,0],transformPerspective:[800,800],rotateY:[0,-55]}]],reset:{transformPerspective:0}},"transition.flipXOut":{defaultDuration:700,calls:[[{opacity:[0,1],transformPerspective:[800,800],rotateY:55}]],reset:{transformPerspective:0,rotateY:0}},"transition.flipYIn":{defaultDuration:800,calls:[[{opacity:[1,0],transformPerspective:[800,800],rotateX:[0,-45]}]],reset:{transformPerspective:0}},"transition.flipYOut":{defaultDuration:800,calls:[[{opacity:[0,1],transformPerspective:[800,800],rotateX:25}]],reset:{transformPerspective:0,rotateX:0}},"transition.flipBounceXIn":{defaultDuration:900,calls:[[{opacity:[.725,0],transformPerspective:[400,400],rotateY:[-10,90]},.5],[{opacity:.8,rotateY:10},.25],[{opacity:1,rotateY:0},.25]],reset:{transformPerspective:0}},"transition.flipBounceXOut":{defaultDuration:800,calls:[[{opacity:[.9,1],transformPerspective:[400,400],rotateY:-10}],[{opacity:0,rotateY:90}]],reset:{transformPerspective:0,rotateY:0}},"transition.flipBounceYIn":{defaultDuration:850,calls:[[{opacity:[.725,0],transformPerspective:[400,400],rotateX:[-10,90]},.5],[{opacity:.8,rotateX:10},.25],[{opacity:1,rotateX:0},.25]],reset:{transformPerspective:0}},"transition.flipBounceYOut":{defaultDuration:800,calls:[[{opacity:[.9,1],transformPerspective:[400,400],rotateX:-15}],[{opacity:0,rotateX:90}]],reset:{transformPerspective:0,rotateX:0}},"transition.swoopIn":{defaultDuration:850,calls:[[{opacity:[1,0],transformOriginX:["100%","50%"],transformOriginY:["100%","100%"],scaleX:[1,0],scaleY:[1,0],translateX:[0,-700],translateZ:0}]],reset:{transformOriginX:"50%",transformOriginY:"50%"}},"transition.swoopOut":{defaultDuration:850,calls:[[{opacity:[0,1],transformOriginX:["50%","100%"],transformOriginY:["100%","100%"],scaleX:0,scaleY:0,translateX:-700,translateZ:0}]],reset:{transformOriginX:"50%",transformOriginY:"50%",scaleX:1,scaleY:1,translateX:0}},"transition.whirlIn":{defaultDuration:850,calls:[[{opacity:[1,0],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:[1,0],scaleY:[1,0],rotateY:[0,160]},1,{easing:"easeInOutSine"}]]},"transition.whirlOut":{defaultDuration:750,calls:[[{opacity:[0,"easeInOutQuint",1],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:0,scaleY:0,rotateY:160},1,{easing:"swing"}]],reset:{scaleX:1,scaleY:1,rotateY:0}},"transition.shrinkIn":{defaultDuration:750,calls:[[{opacity:[1,0],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:[1,1.5],scaleY:[1,1.5],translateZ:0}]]},"transition.shrinkOut":{defaultDuration:600,calls:[[{opacity:[0,1],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:1.3,scaleY:1.3,translateZ:0}]],reset:{scaleX:1,scaleY:1}},"transition.expandIn":{defaultDuration:700,calls:[[{opacity:[1,0],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:[1,.625],scaleY:[1,.625],translateZ:0}]]},"transition.expandOut":{defaultDuration:700,calls:[[{opacity:[0,1],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:.5,scaleY:.5,translateZ:0}]],reset:{scaleX:1,scaleY:1}},"transition.bounceIn":{defaultDuration:800,calls:[[{opacity:[1,0],scaleX:[1.05,.3],scaleY:[1.05,.3]},.35],[{scaleX:.9,scaleY:.9,translateZ:0},.2],[{scaleX:1,scaleY:1},.45]]},"transition.bounceOut":{defaultDuration:800,calls:[[{scaleX:.95,scaleY:.95},.35],[{scaleX:1.1,scaleY:1.1,translateZ:0},.35],[{opacity:[0,1],scaleX:.3,scaleY:.3},.3]],reset:{scaleX:1,scaleY:1}},"transition.bounceUpIn":{defaultDuration:800,calls:[[{opacity:[1,0],translateY:[-30,1e3]},.6,{easing:"easeOutCirc"}],[{translateY:10},.2],[{translateY:0},.2]]},"transition.bounceUpOut":{defaultDuration:1e3,calls:[[{translateY:20},.2],[{opacity:[0,"easeInCirc",1],translateY:-1e3},.8]],reset:{translateY:0}},"transition.bounceDownIn":{defaultDuration:800,calls:[[{opacity:[1,0],translateY:[30,-1e3]},.6,{easing:"easeOutCirc"}],[{translateY:-10},.2],[{translateY:0},.2]]},"transition.bounceDownOut":{defaultDuration:1e3,calls:[[{translateY:-20},.2],[{opacity:[0,"easeInCirc",1],translateY:1e3},.8]],reset:{translateY:0}},"transition.bounceLeftIn":{defaultDuration:750,calls:[[{opacity:[1,0],translateX:[30,-1250]},.6,{easing:"easeOutCirc"}],[{translateX:-10},.2],[{translateX:0},.2]]},"transition.bounceLeftOut":{defaultDuration:750,calls:[[{translateX:30},.2],[{opacity:[0,"easeInCirc",1],translateX:-1250},.8]],reset:{translateX:0}},"transition.bounceRightIn":{defaultDuration:750,calls:[[{opacity:[1,0],translateX:[-30,1250]},.6,{easing:"easeOutCirc"}],[{translateX:10},.2],[{translateX:0},.2]]},"transition.bounceRightOut":{defaultDuration:750,calls:[[{translateX:-30},.2],[{opacity:[0,"easeInCirc",1],translateX:1250},.8]],reset:{translateX:0}},"transition.slideUpIn":{defaultDuration:900,calls:[[{opacity:[1,0],translateY:[0,20],translateZ:0}]]},"transition.slideUpOut":{defaultDuration:900,calls:[[{opacity:[0,1],translateY:-20,translateZ:0}]],reset:{translateY:0}},"transition.slideDownIn":{defaultDuration:900,calls:[[{opacity:[1,0],translateY:[0,-20],translateZ:0}]]},"transition.slideDownOut":{defaultDuration:900,calls:[[{opacity:[0,1],translateY:20,translateZ:0}]],reset:{translateY:0}},"transition.slideLeftIn":{defaultDuration:1e3,calls:[[{opacity:[1,0],translateX:[0,-20],translateZ:0}]]},"transition.slideLeftOut":{defaultDuration:1050,calls:[[{opacity:[0,1],translateX:-20,translateZ:0}]],reset:{translateX:0}},"transition.slideRightIn":{defaultDuration:1e3,calls:[[{opacity:[1,0],translateX:[0,20],translateZ:0}]]},"transition.slideRightOut":{defaultDuration:1050,calls:[[{opacity:[0,1],translateX:20,translateZ:0}]],reset:{translateX:0}},"transition.slideUpBigIn":{defaultDuration:850,calls:[[{opacity:[1,0],translateY:[0,75],translateZ:0}]]},"transition.slideUpBigOut":{defaultDuration:800,calls:[[{opacity:[0,1],translateY:-75,translateZ:0}]],reset:{translateY:0}},"transition.slideDownBigIn":{defaultDuration:850,calls:[[{opacity:[1,0],translateY:[0,-75],translateZ:0}]]},"transition.slideDownBigOut":{defaultDuration:800,calls:[[{opacity:[0,1],translateY:75,translateZ:0}]],reset:{translateY:0}},"transition.slideLeftBigIn":{defaultDuration:800,calls:[[{opacity:[1,0],translateX:[0,-75],translateZ:0}]]},"transition.slideLeftBigOut":{defaultDuration:750,calls:[[{opacity:[0,1],translateX:-75,translateZ:0}]],reset:{translateX:0}},"transition.slideRightBigIn":{defaultDuration:800,calls:[[{opacity:[1,0],translateX:[0,75],translateZ:0}]]},"transition.slideRightBigOut":{defaultDuration:750,calls:[[{opacity:[0,1],translateX:75,translateZ:0}]],reset:{translateX:0}},"transition.perspectiveUpIn":{defaultDuration:800,calls:[[{opacity:[1,0],transformPerspective:[800,800],transformOriginX:[0,0],transformOriginY:["100%","100%"],rotateX:[0,-180]}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%"}},"transition.perspectiveUpOut":{defaultDuration:850,calls:[[{opacity:[0,1],transformPerspective:[800,800],transformOriginX:[0,0],transformOriginY:["100%","100%"],rotateX:-180}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%",rotateX:0}},"transition.perspectiveDownIn":{defaultDuration:800,calls:[[{opacity:[1,0],transformPerspective:[800,800],transformOriginX:[0,0],transformOriginY:[0,0],rotateX:[0,180]}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%"}},"transition.perspectiveDownOut":{defaultDuration:850,calls:[[{opacity:[0,1],transformPerspective:[800,800],transformOriginX:[0,0],transformOriginY:[0,0],rotateX:180}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%",rotateX:0}},"transition.perspectiveLeftIn":{defaultDuration:950,calls:[[{opacity:[1,0],transformPerspective:[2e3,2e3],transformOriginX:[0,0],transformOriginY:[0,0],rotateY:[0,-180]}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%"}},"transition.perspectiveLeftOut":{defaultDuration:950,calls:[[{opacity:[0,1],transformPerspective:[2e3,2e3],transformOriginX:[0,0],transformOriginY:[0,0],rotateY:-180}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%",rotateY:0}},"transition.perspectiveRightIn":{defaultDuration:950,calls:[[{opacity:[1,0],transformPerspective:[2e3,2e3],transformOriginX:["100%","100%"],transformOriginY:[0,0],rotateY:[0,180]}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%"}},"transition.perspectiveRightOut":{defaultDuration:950,calls:[[{opacity:[0,1],transformPerspective:[2e3,2e3],transformOriginX:["100%","100%"],transformOriginY:[0,0],rotateY:180}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%",rotateY:0}}};for(var s in n)n.hasOwnProperty(s)&&e.RegisterEffect(s,n[s])}}(window)}); \ No newline at end of file