@wolsok/thanos 2.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm2020/index.mjs CHANGED
@@ -3,7 +3,8 @@
3
3
  */
4
4
  export * from './lib/ws-thanos.service';
5
5
  export * from './lib/ws-thanos.directive';
6
- export * from './lib/ws-thanos.options';
7
6
  export * from './lib/ws-thanos-options.token';
7
+ export * from './lib/ws-thanos.options';
8
8
  export * from './lib/create-ws-thanos-options';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3B1YmxpYy93cy10aGFub3Mvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHdzLXRoYW5vc1xyXG4gKi9cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvd3MtdGhhbm9zLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi93cy10aGFub3MuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvd3MtdGhhbm9zLm9wdGlvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi93cy10aGFub3Mtb3B0aW9ucy50b2tlbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NyZWF0ZS13cy10aGFub3Mtb3B0aW9ucyc7XHJcbiJdfQ==
9
+ export * from './lib/simplex-noise';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3B1YmxpYy93cy10aGFub3Mvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygd3MtdGhhbm9zXHJcbiAqL1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi93cy10aGFub3Muc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dzLXRoYW5vcy5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi93cy10aGFub3Mtb3B0aW9ucy50b2tlbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dzLXRoYW5vcy5vcHRpb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY3JlYXRlLXdzLXRoYW5vcy1vcHRpb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2ltcGxleC1ub2lzZSc7XHJcbiJdfQ==
@@ -6,4 +6,4 @@ export function createWsThanosOptions(options) {
6
6
  ...options,
7
7
  };
8
8
  }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXdzLXRoYW5vcy1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wdWJsaWMvd3MtdGhhbm9zL3NyYy9saWIvY3JlYXRlLXdzLXRoYW5vcy1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsT0FBa0M7SUFFbEMsT0FBTztRQUNMLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLGdCQUFnQixFQUFFLE1BQU07UUFDeEIsb0JBQW9CLEVBQUUsRUFBRTtRQUN4QixHQUFHLE9BQU87S0FDWCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdzVGhhbm9zT3B0aW9ucyB9IGZyb20gJy4vd3MtdGhhbm9zLm9wdGlvbnMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdzVGhhbm9zT3B0aW9ucyhcclxuICBvcHRpb25zPzogUGFydGlhbDxXc1RoYW5vc09wdGlvbnM+XHJcbik6IFdzVGhhbm9zT3B0aW9ucyB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGFuaW1hdGlvbkxlbmd0aDogNTAwMCxcclxuICAgIG1heFBhcnRpY2xlQ291bnQ6IDQwMDAwMCxcclxuICAgIHBhcnRpY2xlQWNjZWxlcmF0aW9uOiAzMCxcclxuICAgIC4uLm9wdGlvbnMsXHJcbiAgfTtcclxufVxyXG4iXX0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXdzLXRoYW5vcy1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wdWJsaWMvd3MtdGhhbm9zL3NyYy9saWIvY3JlYXRlLXdzLXRoYW5vcy1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsT0FBa0M7SUFFbEMsT0FBTztRQUNMLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLGdCQUFnQixFQUFFLE1BQU07UUFDeEIsb0JBQW9CLEVBQUUsRUFBRTtRQUN4QixHQUFHLE9BQU87S0FDWCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdzVGhhbm9zT3B0aW9ucyB9IGZyb20gJy4vd3MtdGhhbm9zLm9wdGlvbnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV3NUaGFub3NPcHRpb25zKFxuICBvcHRpb25zPzogUGFydGlhbDxXc1RoYW5vc09wdGlvbnM+XG4pOiBXc1RoYW5vc09wdGlvbnMge1xuICByZXR1cm4ge1xuICAgIGFuaW1hdGlvbkxlbmd0aDogNTAwMCxcbiAgICBtYXhQYXJ0aWNsZUNvdW50OiA0MDAwMDAsXG4gICAgcGFydGljbGVBY2NlbGVyYXRpb246IDMwLFxuICAgIC4uLm9wdGlvbnMsXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxleC1ub2lzZS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wdWJsaWMvd3MtdGhhbm9zL3NyYy9saWIvc2ltcGxleC1ub2lzZS1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNpbXBsZXhOb2lzZU9wdGlvbnMge1xuICBhbXBsaXR1ZGU6IG51bWJlcjsgLy8gVGhlIGJhc2UgYW1wbGl0dWRlIChkZWZhdWx0OiAxLjApXG4gIGZyZXF1ZW5jeTogbnVtYmVyOyAvLyBUaGUgYmFzZSBmcmVxdWVuY3kgKGRlZmF1bHQ6IDEuMClcbiAgbWF4OiBudW1iZXI7IC8vIFRoZSBtYXhpbXVtIHNjYWxlZCB2YWx1ZSB0byByZXR1cm4gKGVmZmVjdGl2ZSBkZWZhdWx0OiAxLjApXG4gIG1pbjogbnVtYmVyOyAvLyBUaGUgbWluaW11bSBzY2FsZWQgdmFsdWUgdG8gcmV0dXJuIChlZmZlY3RpdmUgZGVmYXVsdDogLTEuMClcbiAgb2N0YXZlczogbnVtYmVyOyAvLyBJbnRlZ2VyOyB0aGUgbnVtYmVyIG9mIG9jdGF2ZXMgdG8gc3VtIGZvciBub2lzZSBnZW5lcmF0aW9uIChkZWZhdWx0OiAxKVxuICBwZXJzaXN0ZW5jZTogbnVtYmVyOyAvLyBUaGUgcGVyc2lzdGVuY2Ugb2YgYW1wbGl0dWRlIHBlciBvY3RhdmUgKGRlZmF1bHQ6IDAuNSlcbiAgcmFuZG9tOiAoKSA9PiBudW1iZXI7IC8vIEEgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmFuZG9tIHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDEgKGRlZmF1bHQ6IE1hdGgucmFuZG9tKVxufVxuIl19
@@ -1,45 +1,3 @@
1
- function createOptionsWithDefaults(options) {
2
- if (options != null) {
3
- if (options['amplitude'] && typeof options.amplitude !== 'number') {
4
- throw new Error('options.amplitude must be a number');
5
- }
6
- if (options['frequency'] && typeof options.frequency !== 'number') {
7
- throw new Error('options.frequency must be a number');
8
- }
9
- if (options['octaves'] &&
10
- (typeof options.octaves !== 'number' ||
11
- !isFinite(options.octaves) ||
12
- Math.floor(options.octaves) !== options.octaves)) {
13
- throw new Error('options.octaves must be an integer');
14
- }
15
- if (options['persistence'] && typeof options.persistence !== 'number') {
16
- throw new Error('options.persistence must be a number');
17
- }
18
- if (options['random'] && typeof options.random !== 'function') {
19
- throw new Error('options.random must be a function');
20
- }
21
- if (options['min'] && typeof options.min !== 'number') {
22
- throw new Error('options.min must be a number');
23
- }
24
- if (options['max'] && typeof options.max !== 'number') {
25
- throw new Error('options.max must be a number');
26
- }
27
- }
28
- const optionsResult = {
29
- amplitude: 1.0,
30
- frequency: 1.0,
31
- max: 1.0,
32
- min: -1.0,
33
- octaves: 1,
34
- persistence: 0.5,
35
- random: Math.random,
36
- ...options,
37
- };
38
- if (optionsResult.min > optionsResult.max) {
39
- throw new Error('min must be smaller max');
40
- }
41
- return optionsResult;
42
- }
43
1
  export class SimplexNoise {
44
2
  constructor(options) {
45
3
  this.memScale3D = {};
@@ -196,4 +154,46 @@ SimplexNoise.GRAD3D = [
196
154
  [0, 1, -1],
197
155
  [0, -1, -1],
198
156
  ];
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxleC1ub2lzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcHVibGljL3dzLXRoYW5vcy9zcmMvbGliL3NpbXBsZXgtbm9pc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsU0FBUyx5QkFBeUIsQ0FBQyxPQUEwQjtJQUMzRCxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUU7UUFDbkIsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksT0FBTyxPQUFPLENBQUMsU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUNqRSxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7U0FDdkQ7UUFFRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFO1lBQ2pFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztTQUN2RDtRQUVELElBQ0UsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUNsQixDQUFDLE9BQU8sT0FBTyxDQUFDLE9BQU8sS0FBSyxRQUFRO2dCQUNsQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO2dCQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQ2xEO1lBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksT0FBTyxPQUFPLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRTtZQUNyRSxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7U0FDekQ7UUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFO1lBQzdELE1BQU0sSUFBSSxL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LENBQUMsRUFBRSxDQUFDO1FBQzVDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFFNUMsbUVBQW1FO1FBQ25FLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDbkIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNuQixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ25CLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sR0FBRyxHQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sR0FBRyxHQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTNFLG1EQUFtRDtRQUNuRCxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDN0MsTUFBTSxFQUFFLEdBQ04sRUFBRSxHQUFHLENBQUM7WUFDSixDQUFDLENBQUMsR0FBRztZQUNMLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekUsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQzdDLE1BQU0sRUFBRSxHQUNOLEVBQUUsR0FBRyxDQUFDO1lBQ0osQ0FBQyxDQUFDLEdBQUc7WUFDTCxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUM3QyxNQUFNLEVBQUUsR0FDTixFQUFFLEdBQUcsQ0FBQztZQUNKLENBQUMsQ0FBQyxHQUFHO1lBQ0wsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6RSxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDN0MsTUFBTSxFQUFFLEdBQ04sRUFBRSxHQUFHLENBQUM7WUFDSixDQUFDLENBQUMsR0FBRztZQUNMLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFekUsbUVBQW1FO1FBQ25FLGtEQUFrRDtRQUNsRCxPQUFPLGlCQUFpQixHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELFFBQVEsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxVQUFrQjtRQUMxRCxNQUFNLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQ3pELENBQUMsR0FBRyxVQUFVLENBQ2YsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFO1lBQ25CLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMvQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQy9CLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFFZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQyxLQUFLO2dCQUNILElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUM7WUFDdEUsWUFBWSxJQUFJLFNBQVMsQ0FBQztZQUMxQixTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUM5QixTQUFTLElBQUksQ0FBQyxDQUFDO1NBQ2hCO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDbkMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7QUFsSk0sZUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFFZixtQkFBTSxHQUFHO0lBQ2QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNULENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNWLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNWLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNULENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNWLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNWLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNULENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcclxuICBhbXBsaXR1ZGU6IG51bWJlcjsgLy8gVGhlIGJhc2UgYW1wbGl0dWRlIChkZWZhdWx0OiAxLjApXHJcbiAgZnJlcXVlbmN5OiBudW1iZXI7IC8vIFRoZSBiYXNlIGZyZXF1ZW5jeSAoZGVmYXVsdDogMS4wKVxyXG4gIG1heDogbnVtYmVyOyAvLyBUaGUgbWF4aW11bSBzY2FsZWQgdmFsdWUgdG8gcmV0dXJuIChlZmZlY3RpdmUgZGVmYXVsdDogMS4wKVxyXG4gIG1pbjogbnVtYmVyOyAvLyBUaGUgbWluaW11bSBzY2FsZWQgdmFsdWUgdG8gcmV0dXJuIChlZmZlY3RpdmUgZGVmYXVsdDogLTEuMClcclxuICBvY3RhdmVzOiBudW1iZXI7IC8vIEludGVnZXI7IHRoZSBudW1iZXIgb2Ygb2N0YXZlcyB0byBzdW0gZm9yIG5vaXNlIGdlbmVyYXRpb24gKGRlZmF1bHQ6IDEpXHJcbiAgcGVyc2lzdGVuY2U6IG51bWJlcjsgLy8gVGhlIHBlcnNpc3RlbmNlIG9mIGFtcGxpdHVkZSBwZXIgb2N0YXZlIChkZWZhdWx0OiAwLjUpXHJcbiAgcmFuZG9tOiAoKSA9PiBudW1iZXI7IC8vIEEgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmFuZG9tIHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDEgKGRlZmF1bHQ6IE1hdGgucmFuZG9tKVxyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVPcHRpb25zV2l0aERlZmF1bHRzKG9wdGlvbnM/OiBQYXJ0aWFsPE9wdGlvbnM+KSB7XHJcbiAgaWYgKG9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgaWYgKG9wdGlvbnNbJ2FtcGxpdHVkZSddICYmIHR5cGVvZiBvcHRpb25zLmFtcGxpdHVkZSAhPT0gJ251bWJlcicpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLmFtcGxpdHVkZSBtdXN0IGJlIGEgbnVtYmVyJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnNbJ2ZyZXF1ZW5jeSddICYmIHR5cGVvZiBvcHRpb25zLmZyZXF1ZW5jeSAhPT0gJ251bWJlcicpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLmZyZXF1ZW5jeSBtdXN0IGJlIGEgbnVtYmVyJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICBvcHRpb25zWydvY3RhdmVzJ10gJiZcclxuICAgICAgKHR5cGVvZiBvcHRpb25zLm9jdGF2ZXMgIT09ICdudW1iZXInIHx8XHJcbiAgICAgICAgIWlzRmluaXRlKG9wdGlvbnMub2N0YXZlcykgfHxcclxuICAgICAgICBNYXRoLmZsb29yKG9wdGlvbnMub2N0YXZlcykgIT09IG9wdGlvbnMub2N0YXZlcylcclxuICAgICkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29wdGlvbnMub2N0YXZlcyBtdXN0IGJlIGFuIGludGVnZXInKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9uc1sncGVyc2lzdGVuY2UnXSAmJiB0eXBlb2Ygb3B0aW9ucy5wZXJzaXN0ZW5jZSAhPT0gJ251bWJlcicpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLnBlcnNpc3RlbmNlIG11c3QgYmUgYSBudW1iZXInKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9uc1sncmFuZG9tJ10gJiYgdHlwZW9mIG9wdGlvbnMucmFuZG9tICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3B0aW9ucy5yYW5kb20gbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnNbJ21pbiddICYmIHR5cGVvZiBvcHRpb25zLm1pbiAhPT0gJ251bWJlcicpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLm1pbiBtdXN0IGJlIGEgbnVtYmVyJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnNbJ21heCddICYmIHR5cGVvZiBvcHRpb25zLm1heCAhPT0gJ251bWJlcicpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLm1heCBtdXN0IGJlIGEgbnVtYmVyJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCBvcHRpb25zUmVzdWx0ID0ge1xyXG4gICAgYW1wbGl0dWRlOiAxLjAsXHJcbiAgICBmcmVxdWVuY3k6IDEuMCxcclxuICAgIG1heDogMS4wLFxyXG4gICAgbWluOiAtMS4wLFxyXG4gICAgb2N0YXZlczogMSxcclxuICAgIHBlcnNpc3RlbmNlOiAwLjUsXHJcbiAgICByYW5kb206IE1hdGgucmFuZG9tLFxyXG4gICAgLi4ub3B0aW9ucyxcclxuICB9O1xyXG4gIGlmIChvcHRpb25zUmVzdWx0Lm1pbiA+IG9wdGlvbnNSZXN1bHQubWF4KSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21pbiBtdXN0IGJlIHNtYWxsZXIgbWF4Jyk7XHJcbiAgfVxyXG4gIHJldHVybiBvcHRpb25zUmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2ltcGxleE5vaXNlIHtcclxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxPcHRpb25zPikge1xyXG4gICAgY29uc3QgeyBtaW4sIG1heCwgcmFuZG9tLCBhbXBsaXR1ZGUsIGZyZXF1ZW5jeSwgb2N0YXZlcywgcGVyc2lzdGVuY2UgfSA9XHJcbiAgICAgIGNyZWF0ZU9wdGlvbnNXaXRoRGVmYXVsdHMob3B0aW9ucyk7XHJcblxyXG4gICAgdGhpcy5yYW5kb20gPSByYW5kb207XHJcbiAgICB0aGlzLmFtcGxpdHVkZSA9IGFtcGxpdHVkZTtcclxuICAgIHRoaXMuZnJlcXVlbmN5ID0gZnJlcXVlbmN5O1xyXG4gICAgdGhpcy5vY3RhdmVzID0gb2N0YXZlcztcclxuICAgIHRoaXMucGVyc2lzdGVuY2UgPSBwZXJzaXN0ZW5jZTtcclxuXHJcbiAgICB0aGlzLnNjYWxlID1cclxuICAgICAgbWluID09PSAtMSAmJiBtYXggPT09IDFcclxuICAgICAgICA/ICh2YWx1ZSkgPT4gdmFsdWVcclxuICAgICAgICA6ICh2YWx1ZSkgPT4gbWluICsgKCh2YWx1ZSArIDEpIC8gMikgKiAobWF4IC0gbWluKTtcclxuXHJcbiAgICBjb25zdCBwID0gbmV3IFVpbnQ4QXJyYXkoMjU2KTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjU2OyBpKyspIHtcclxuICAgICAgcFtpXSA9IGk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG46IG51bWJlcjtcclxuICAgIGxldCBxOiBudW1iZXI7XHJcbiAgICBmb3IgKGxldCBpID0gMjU1OyBpID4gMDsgaS0tKSB7XHJcbiAgICAgIG4gPSBNYXRoLmZsb29yKChpICsgMSkgKiB0aGlzLnJhbmRvbSgpKTtcclxuICAgICAgcSA9IHBbaV07XHJcbiAgICAgIHBbaV0gPSBwW25dO1xyXG4gICAgICBwW25dID0gcTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBlcm0gPSBuZXcgVWludDhBcnJheSg1MTIpO1xyXG4gICAgdGhpcy5wZXJtTW9kMTIgPSBuZXcgVWludDhBcnJheSg1MTIpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MTI7IGkrKykge1xyXG4gICAgICB0aGlzLnBlcm1baV0gPSBwW2kgJiAyNTVdO1xyXG4gICAgICB0aGlzLnBlcm1Nb2QxMltpXSA9IHRoaXMucGVybVtpXSAlIDEyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIEczID0gMS4wIC8gNi4wO1xyXG5cclxuICBzdGF0aWMgR1JBRDNEID0gW1xyXG4gICAgWzEsIDEsIDBdLFxyXG4gICAgWy0xLCAxLCAwXSxcclxuICAgIFsxLCAtMSwgMF0sXHJcbiAgICBbLTEsIC0xLCAwXSxcclxuICAgIFsxLCAwLCAxXSxcclxuICAgIFstMSwgMCwgMV0sXHJcbiAgICBbMSwgMCwgLTFdLFxyXG4gICAgWy0xLCAwLCAtMV0sXHJcbiAgICBbMCwgMSwgMV0sXHJcbiAgICBbMCwgLTEsIC0xXSxcclxuICAgIFswLCAxLCAtMV0sXHJcbiAgICBbMCwgLTEsIC0xXSxcclxuICBdO1xyXG5cclxuICByZWFkb25seSBhbXBsaXR1ZGU6IG51bWJlcjtcclxuICByZWFkb25seSBmcmVxdWVuY3k6IG51bWJlcjtcclxuICByZWFkb25seSBvY3RhdmVzOiBudW1iZXI7XHJcbiAgcmVhZG9ubHkgcGVybTogVWludDhBcnJheTtcclxuICByZWFkb25seSBwZXJtTW9kMTI6IFVpbnQ4QXJyYXk7XHJcbiAgcmVhZG9ubHkgcGVyc2lzdGVuY2U6IG51bWJlcjtcclxuICByZWFkb25seSByYW5kb206ICgpID0+IG51bWJlcjtcclxuICByZWFkb25seSBzY2FsZTogKHZhbHVlOiBudW1iZXIpID0+IG51bWJlcjtcclxuICBwcml2YXRlIG1lbVNjYWxlM0Q6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcclxuXHJcbiAgZG90KGdzOiBudW1iZXJbXSwgY29vcmRzOiBudW1iZXJbXSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gZ3NcclxuICAgICAgLnNsaWNlKDAsIE1hdGgubWluKGdzLmxlbmd0aCwgY29vcmRzLmxlbmd0aCkpXHJcbiAgICAgIC5yZWR1Y2UoKHRvdGFsLCBnLCBpKSA9PiB0b3RhbCArIGcgKiBjb29yZHNbaV0sIDApO1xyXG4gIH1cclxuXHJcbiAgcmF3M0QoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAvLyBTa2V3IHRoZSBpbnB1dCBzcGFjZSB0byBkZXRlcm1pbmUgd2hpY2ggc2ltcGxleCBjZWxsIHdlJ3JlIGluXHJcbiAgICBjb25zdCBzID0gKHggKyB5ICsgeikgLyAzLjA7IC8vIFZlcnkgbmljZSBhbmQgc2ltcGxlIHNrZXcgZmFjdG9yIGZvciAzRFxyXG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoeCArIHMpO1xyXG4gICAgY29uc3QgaiA9IE1hdGguZmxvb3IoeSArIHMpO1xyXG4gICAgY29uc3QgayA9IE1hdGguZmxvb3IoeiArIHMpO1xyXG4gICAgY29uc3QgdCA9IChpICsgaiArIGspICogU2ltcGxleE5vaXNlLkczO1xyXG4gICAgY29uc3QgWDAgPSBpIC0gdDsgLy8gVW5za2V3IHRoZSBjZWxsIG9yaWdpbiBiYWNrIHRvICh4LHkseikgc3BhY2VcclxuICAgIGNvbnN0IFkwID0gaiAtIHQ7XHJcbiAgICBjb25zdCBaMCA9IGsgLSB0O1xyXG4gICAgY29uc3QgeDAgPSB4IC0gWDA7IC8vIFRoZSB4LHkseiBkaXN0YW5jZXMgZnJvbSB0aGUgY2VsbCBvcmlnaW5cclxuICAgIGNvbnN0IHkwID0geSAtIFkwO1xyXG4gICAgY29uc3QgejAgPSB6IC0gWjA7XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIHdoaWNoIHNpbXBsZXggd2UgYXJlIGluXHJcbiAgICBsZXQgaTE6IG51bWJlciwgajE6IG51bWJlciwgazE6IG51bWJlcjsgLy8gT2Zmc2V0cyBmb3Igc2Vjb25kIGNvcm5lciBvZiBzaW1wbGV4IGluIChpLGosaykgY29vcmRzXHJcbiAgICBsZXQgaTI6IG51bWJlciwgajI6IG51bWJlciwgazI6IG51bWJlcjsgLy8gT2Zmc2V0cyBmb3IgdGhpcmQgY29ybmVyIG9mIHNpbXBsZXggaW4gKGksaixrKSBjb29yZHNcclxuICAgIGlmICh4MCA+PSB5MCkge1xyXG4gICAgICBpZiAoeTAgPj0gejApIHtcclxuICAgICAgICBpMSA9IGkyID0gajIgPSAxO1xyXG4gICAgICAgIGoxID0gazEgPSBrMiA9IDA7XHJcbiAgICAgIH0gZWxzZSBpZiAoeDAgPj0gejApIHtcclxuICAgICAgICBpMSA9IGkyID0gazIgPSAxO1xyXG4gICAgICAgIGoxID0gazEgPSBqMiA9IDA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgazEgPSBpMiA9IGsyID0gMTtcclxuICAgICAgICBpMSA9IGoxID0gajIgPSAwO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoeTAgPCB6MCkge1xyXG4gICAgICAgIGsxID0gajIgPSBrMiA9IDE7XHJcbiAgICAgICAgaTEgPSBqMSA9IGkyID0gMDtcclxuICAgICAgfSBlbHNlIGlmICh4MCA8IHowKSB7XHJcbiAgICAgICAgajEgPSBqMiA9IGsyID0gMTtcclxuICAgICAgICBpMSA9IGsxID0gaTIgPSAwO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGoxID0gaTIgPSBqMiA9IDE7XHJcbiAgICAgICAgaTEgPSBrMSA9IGsyID0gMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHgxID0geDAgLSBpMSArIFNpbXBsZXhOb2lzZS5HMzsgLy8gT2Zmc2V0cyBmb3Igc2Vjb25kIGNvcm5lciBpbiAoeCx5LHopIGNvb3Jkc1xyXG4gICAgY29uc3QgeTEgPSB5MCAtIGoxICsgU2ltcGxleE5vaXNlLkczO1xyXG4gICAgY29uc3QgejEgPSB6MCAtIGsxICsgU2ltcGxleE5vaXNlLkczO1xyXG4gICAgY29uc3QgeDIgPSB4MCAtIGkyICsgMi4wICogU2ltcGxleE5vaXNlLkczOyAvLyBPZmZzZXRzIGZvciB0aGlyZCBjb3JuZXIgaW4gKHgseSx6KSBjb29yZHNcclxuICAgIGNvbnN0IHkyID0geTAgLSBqMiArIDIuMCAqIFNpbXBsZXhOb2lzZS5HMztcclxuICAgIGNvbnN0IHoyID0gejAgLSBrMiArIDIuMCAqIFNpbXBsZXhOb2lzZS5HMztcclxuICAgIGNvbnN0IHgzID0geDAgLSAxLjAgKyAzLjAgKiBTaW1wbGV4Tm9pc2UuRzM7IC8vIE9mZnNldHMgZm9yIGxhc3QgY29ybmVyIGluICh4LHkseikgY29vcmRzXHJcbiAgICBjb25zdCB5MyA9IHkwIC0gMS4wICsgMy4wICogU2ltcGxleE5vaXNlLkczO1xyXG4gICAgY29uc3QgejMgPSB6MCAtIDEuMCArIDMuMCAqIFNpbXBsZXhOb2lzZS5HMztcclxuXHJcbiAgICAvLyBXb3JrIG91dCB0aGUgaGFzaGVkIGdyYWRpZW50IGluZGljZXMgb2YgdGhlIGZvdXIgc2ltcGxleCBjb3JuZXJzXHJcbiAgICBjb25zdCBpaSA9IGkgJiAyNTU7XHJcbiAgICBjb25zdCBqaiA9IGogJiAyNTU7XHJcbiAgICBjb25zdCBrayA9IGsgJiAyNTU7XHJcbiAgICBjb25zdCBnaTAgPSB0aGlzLnBlcm1Nb2QxMltpaSArIHRoaXMucGVybVtqaiArIHRoaXMucGVybVtra11dXTtcclxuICAgIGNvbnN0IGdpMSA9XHJcbiAgICAgIHRoaXMucGVybU1vZDEyW2lpICsgaTEgKyB0aGlzLnBlcm1bamogKyBqMSArIHRoaXMucGVybVtrayArIGsxXV1dO1xyXG4gICAgY29uc3QgZ2kyID1cclxuICAgICAgdGhpcy5wZXJtTW9kMTJbaWkgKyBpMiArIHRoaXMucGVybVtqaiArIGoyICsgdGhpcy5wZXJtW2trICsgazJdXV07XHJcbiAgICBjb25zdCBnaTMgPSB0aGlzLnBlcm1Nb2QxMltpaSArIDEgKyB0aGlzLnBlcm1bamogKyAxICsgdGhpcy5wZXJtW2trICsgMV1dXTtcclxuXHJcbiAgICAvLyBDYWxjdWxhdGUgdGhlIGNvbnRyaWJ1dGlvbiBmcm9tIHRoZSBmb3VyIGNvcm5lcnNcclxuICAgIGNvbnN0IHQwID0gMC41IC0geDAgKiB4MCAtIHkwICogeTAgLSB6MCAqIHowO1xyXG4gICAgY29uc3QgbjAgPVxyXG4gICAgICB0MCA8IDBcclxuICAgICAgICA/IDAuMFxyXG4gICAgICAgIDogTWF0aC5wb3codDAsIDQpICogdGhpcy5kb3QoU2ltcGxleE5vaXNlLkdSQUQzRFtnaTBdLCBbeDAsIHkwLCB6MF0pO1xyXG4gICAgY29uc3QgdDEgPSAwLjUgLSB4MSAqIHgxIC0geTEgKiB5MSAtIHoxICogejE7XHJcbiAgICBjb25zdCBuMSA9XHJcbiAgICAgIHQxIDwgMFxyXG4gICAgICAgID8gMC4wXHJcbiAgICAgICAgOiBNYXRoLnBvdyh0MSwgNCkgKiB0aGlzLmRvdChTaW1wbGV4Tm9pc2UuR1JBRDNEW2dpMV0sIFt4MSwgeTEsIHoxXSk7XHJcbiAgICBjb25zdCB0MiA9IDAuNSAtIHgyICogeDIgLSB5MiAqIHkyIC0gejIgKiB6MjtcclxuICAgIGNvbnN0IG4yID1cclxuICAgICAgdDIgPCAwXHJcbiAgICAgICAgPyAwLjBcclxuICAgICAgICA6IE1hdGgucG93KHQyLCA0KSAqIHRoaXMuZG90KFNpbXBsZXhOb2lzZS5HUkFEM0RbZ2kyXSwgW3gyLCB5MiwgejJdKTtcclxuICAgIGNvbnN0IHQzID0gMC41IC0geDMgKiB4MyAtIHkzICogeTMgLSB6MyAqIHozO1xyXG4gICAgY29uc3QgbjMgPVxyXG4gICAgICB0MyA8IDBcclxuICAgICAgICA/IDAuMFxyXG4gICAgICAgIDogTWF0aC5wb3codDMsIDQpICogdGhpcy5kb3QoU2ltcGxleE5vaXNlLkdSQUQzRFtnaTNdLCBbeDMsIHkzLCB6M10pO1xyXG5cclxuICAgIC8vIEFkZCBjb250cmlidXRpb25zIGZyb20gZWFjaCBjb3JuZXIgdG8gZ2V0IHRoZSBmaW5hbCBub2lzZSB2YWx1ZS5cclxuICAgIC8vIFRoZSByZXN1bHQgaXMgc2NhbGVkIHRvIHN0YXkganVzdCBpbnNpZGUgWy0xLDFdXHJcbiAgICByZXR1cm4gOTQuNjg0OTMxNTA2ODE5NzIgKiAobjAgKyBuMSArIG4yICsgbjMpO1xyXG4gIH1cclxuXHJcbiAgc2NhbGVkM0QoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlciwgcmVzb2x1dGlvbjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IG1lbUluZGV4ID0gYCR7TWF0aC5yb3VuZCh4ICogcmVzb2x1dGlvbil9JHtNYXRoLnJvdW5kKFxyXG4gICAgICB5ICogcmVzb2x1dGlvblxyXG4gICAgKX0ke01hdGgucm91bmQoeiAqIHJlc29sdXRpb24pfWA7XHJcbiAgICBjb25zdCBtZW1FbGVtID0gdGhpcy5tZW1TY2FsZTNEW21lbUluZGV4XTtcclxuICAgIGlmIChtZW1FbGVtICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG1lbUVsZW07XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGFtcGxpdHVkZSA9IHRoaXMuYW1wbGl0dWRlO1xyXG4gICAgbGV0IGZyZXF1ZW5jeSA9IHRoaXMuZnJlcXVlbmN5O1xyXG4gICAgbGV0IG1heEFtcGxpdHVkZSA9IDA7XHJcbiAgICBsZXQgbm9pc2UgPSAwO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vY3RhdmVzOyBpKyspIHtcclxuICAgICAgbm9pc2UgKz1cclxuICAgICAgICB0aGlzLnJhdzNEKHggKiBmcmVxdWVuY3ksIHkgKiBmcmVxdWVuY3ksIHogKiBmcmVxdWVuY3kpICogYW1wbGl0dWRlO1xyXG4gICAgICBtYXhBbXBsaXR1ZGUgKz0gYW1wbGl0dWRlO1xyXG4gICAgICBhbXBsaXR1ZGUgKj0gdGhpcy5wZXJzaXN0ZW5jZTtcclxuICAgICAgZnJlcXVlbmN5ICo9IDI7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNjYWxlKG5vaXNlIC8gbWF4QW1wbGl0dWRlKTtcclxuICAgIHRoaXMubWVtU2NhbGUzRFttZW1JbmRleF0gPSByZXN1bHQ7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxufVxyXG4iXX0=
157
+ function createOptionsWithDefaults(options) {
158
+ if (options != null) {
159
+ if (options['amplitude'] && typeof options.amplitude !== 'number') {
160
+ throw new Error('options.amplitude must be a number');
161
+ }
162
+ if (options['frequency'] && typeof options.frequency !== 'number') {
163
+ throw new Error('options.frequency must be a number');
164
+ }
165
+ if (options['octaves'] &&
166
+ (typeof options.octaves !== 'number' ||
167
+ !isFinite(options.octaves) ||
168
+ Math.floor(options.octaves) !== options.octaves)) {
169
+ throw new Error('options.octaves must be an integer');
170
+ }
171
+ if (options['persistence'] && typeof options.persistence !== 'number') {
172
+ throw new Error('options.persistence must be a number');
173
+ }
174
+ if (options['random'] && typeof options.random !== 'function') {
175
+ throw new Error('options.random must be a function');
176
+ }
177
+ if (options['min'] && typeof options.min !== 'number') {
178
+ throw new Error('options.min must be a number');
179
+ }
180
+ if (options['max'] && typeof options.max !== 'number') {
181
+ throw new Error('options.max must be a number');
182
+ }
183
+ }
184
+ const optionsResult = {
185
+ amplitude: 1.0,
186
+ frequency: 1.0,
187
+ max: 1.0,
188
+ min: -1.0,
189
+ octaves: 1,
190
+ persistence: 0.5,
191
+ random: Math.random,
192
+ ...options,
193
+ };
194
+ if (optionsResult.min > optionsResult.max) {
195
+ throw new Error('min must be smaller max');
196
+ }
197
+ return optionsResult;
198
+ }
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxleC1ub2lzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcHVibGljL3dzLXRoYW5vcy9zcmMvbGliL3NpbXBsZXgtbm9pc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBWSxPQUFzQztRQThEMUMsZUFBVSxHQUE4QixFQUFFLENBQUM7UUE3RGpELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FDcEUseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFFL0IsSUFBSSxDQUFDLEtBQUs7WUFDUixHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSztnQkFDbEIsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUV2RCxNQUFNLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDVjtRQUVELElBQUksQ0FBUyxDQUFDO1FBQ2QsSUFBSSxDQUFTLENBQUM7UUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVCLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3hDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDVCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNWO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBNkJELEdBQUcsQ0FBQyxFQUFZLEVBQUUsTUFBZ0I7UUFDaEMsT0FBTyxFQUFFO2FBQ04sS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzVDLE1BQU0sQ0FBQyxDQUFD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LEVBQUU7UUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0tBQzVDO0lBQ0QsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2ltcGxleE5vaXNlT3B0aW9ucyB9IGZyb20gJy4vc2ltcGxleC1ub2lzZS1vcHRpb25zJztcblxuZXhwb3J0IGNsYXNzIFNpbXBsZXhOb2lzZSB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBQYXJ0aWFsPFNpbXBsZXhOb2lzZU9wdGlvbnM+KSB7XG4gICAgY29uc3QgeyBtaW4sIG1heCwgcmFuZG9tLCBhbXBsaXR1ZGUsIGZyZXF1ZW5jeSwgb2N0YXZlcywgcGVyc2lzdGVuY2UgfSA9XG4gICAgICBjcmVhdGVPcHRpb25zV2l0aERlZmF1bHRzKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5yYW5kb20gPSByYW5kb207XG4gICAgdGhpcy5hbXBsaXR1ZGUgPSBhbXBsaXR1ZGU7XG4gICAgdGhpcy5mcmVxdWVuY3kgPSBmcmVxdWVuY3k7XG4gICAgdGhpcy5vY3RhdmVzID0gb2N0YXZlcztcbiAgICB0aGlzLnBlcnNpc3RlbmNlID0gcGVyc2lzdGVuY2U7XG5cbiAgICB0aGlzLnNjYWxlID1cbiAgICAgIG1pbiA9PT0gLTEgJiYgbWF4ID09PSAxXG4gICAgICAgID8gKHZhbHVlKSA9PiB2YWx1ZVxuICAgICAgICA6ICh2YWx1ZSkgPT4gbWluICsgKCh2YWx1ZSArIDEpIC8gMikgKiAobWF4IC0gbWluKTtcblxuICAgIGNvbnN0IHAgPSBuZXcgVWludDhBcnJheSgyNTYpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjU2OyBpKyspIHtcbiAgICAgIHBbaV0gPSBpO1xuICAgIH1cblxuICAgIGxldCBuOiBudW1iZXI7XG4gICAgbGV0IHE6IG51bWJlcjtcbiAgICBmb3IgKGxldCBpID0gMjU1OyBpID4gMDsgaS0tKSB7XG4gICAgICBuID0gTWF0aC5mbG9vcigoaSArIDEpICogdGhpcy5yYW5kb20oKSk7XG4gICAgICBxID0gcFtpXTtcbiAgICAgIHBbaV0gPSBwW25dO1xuICAgICAgcFtuXSA9IHE7XG4gICAgfVxuXG4gICAgdGhpcy5wZXJtID0gbmV3IFVpbnQ4QXJyYXkoNTEyKTtcbiAgICB0aGlzLnBlcm1Nb2QxMiA9IG5ldyBVaW50OEFycmF5KDUxMik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MTI7IGkrKykge1xuICAgICAgdGhpcy5wZXJtW2ldID0gcFtpICYgMjU1XTtcbiAgICAgIHRoaXMucGVybU1vZDEyW2ldID0gdGhpcy5wZXJtW2ldICUgMTI7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIEczID0gMS4wIC8gNi4wO1xuXG4gIHN0YXRpYyBHUkFEM0QgPSBbXG4gICAgWzEsIDEsIDBdLFxuICAgIFstMSwgMSwgMF0sXG4gICAgWzEsIC0xLCAwXSxcbiAgICBbLTEsIC0xLCAwXSxcbiAgICBbMSwgMCwgMV0sXG4gICAgWy0xLCAwLCAxXSxcbiAgICBbMSwgMCwgLTFdLFxuICAgIFstMSwgMCwgLTFdLFxuICAgIFswLCAxLCAxXSxcbiAgICBbMCwgLTEsIC0xXSxcbiAgICBbMCwgMSwgLTFdLFxuICAgIFswLCAtMSwgLTFdLFxuICBdO1xuXG4gIHJlYWRvbmx5IGFtcGxpdHVkZTogbnVtYmVyO1xuICByZWFkb25seSBmcmVxdWVuY3k6IG51bWJlcjtcbiAgcmVhZG9ubHkgb2N0YXZlczogbnVtYmVyO1xuICByZWFkb25seSBwZXJtOiBVaW50OEFycmF5O1xuICByZWFkb25seSBwZXJtTW9kMTI6IFVpbnQ4QXJyYXk7XG4gIHJlYWRvbmx5IHBlcnNpc3RlbmNlOiBudW1iZXI7XG4gIHJlYWRvbmx5IHJhbmRvbTogKCkgPT4gbnVtYmVyO1xuICByZWFkb25seSBzY2FsZTogKHZhbHVlOiBudW1iZXIpID0+IG51bWJlcjtcbiAgcHJpdmF0ZSBtZW1TY2FsZTNEOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XG5cbiAgZG90KGdzOiBudW1iZXJbXSwgY29vcmRzOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGdzXG4gICAgICAuc2xpY2UoMCwgTWF0aC5taW4oZ3MubGVuZ3RoLCBjb29yZHMubGVuZ3RoKSlcbiAgICAgIC5yZWR1Y2UoKHRvdGFsLCBnLCBpKSA9PiB0b3RhbCArIGcgKiBjb29yZHNbaV0sIDApO1xuICB9XG5cbiAgcmF3M0QoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlcik6IG51bWJlciB7XG4gICAgLy8gU2tldyB0aGUgaW5wdXQgc3BhY2UgdG8gZGV0ZXJtaW5lIHdoaWNoIHNpbXBsZXggY2VsbCB3ZSdyZSBpblxuICAgIGNvbnN0IHMgPSAoeCArIHkgKyB6KSAvIDMuMDsgLy8gVmVyeSBuaWNlIGFuZCBzaW1wbGUgc2tldyBmYWN0b3IgZm9yIDNEXG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoeCArIHMpO1xuICAgIGNvbnN0IGogPSBNYXRoLmZsb29yKHkgKyBzKTtcbiAgICBjb25zdCBrID0gTWF0aC5mbG9vcih6ICsgcyk7XG4gICAgY29uc3QgdCA9IChpICsgaiArIGspICogU2ltcGxleE5vaXNlLkczO1xuICAgIGNvbnN0IFgwID0gaSAtIHQ7IC8vIFVuc2tldyB0aGUgY2VsbCBvcmlnaW4gYmFjayB0byAoeCx5LHopIHNwYWNlXG4gICAgY29uc3QgWTAgPSBqIC0gdDtcbiAgICBjb25zdCBaMCA9IGsgLSB0O1xuICAgIGNvbnN0IHgwID0geCAtIFgwOyAvLyBUaGUgeCx5LHogZGlzdGFuY2VzIGZyb20gdGhlIGNlbGwgb3JpZ2luXG4gICAgY29uc3QgeTAgPSB5IC0gWTA7XG4gICAgY29uc3QgejAgPSB6IC0gWjA7XG5cbiAgICAvLyBEZXRlcm1pbmUgd2hpY2ggc2ltcGxleCB3ZSBhcmUgaW5cbiAgICBsZXQgaTE6IG51bWJlciwgajE6IG51bWJlciwgazE6IG51bWJlcjsgLy8gT2Zmc2V0cyBmb3Igc2Vjb25kIGNvcm5lciBvZiBzaW1wbGV4IGluIChpLGosaykgY29vcmRzXG4gICAgbGV0IGkyOiBudW1iZXIsIGoyOiBudW1iZXIsIGsyOiBudW1iZXI7IC8vIE9mZnNldHMgZm9yIHRoaXJkIGNvcm5lciBvZiBzaW1wbGV4IGluIChpLGosaykgY29vcmRzXG4gICAgaWYgKHgwID49IHkwKSB7XG4gICAgICBpZiAoeTAgPj0gejApIHtcbiAgICAgICAgaTEgPSBpMiA9IGoyID0gMTtcbiAgICAgICAgajEgPSBrMSA9IGsyID0gMDtcbiAgICAgIH0gZWxzZSBpZiAoeDAgPj0gejApIHtcbiAgICAgICAgaTEgPSBpMiA9IGsyID0gMTtcbiAgICAgICAgajEgPSBrMSA9IGoyID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGsxID0gaTIgPSBrMiA9IDE7XG4gICAgICAgIGkxID0gajEgPSBqMiA9IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh5MCA8IHowKSB7XG4gICAgICAgIGsxID0gajIgPSBrMiA9IDE7XG4gICAgICAgIGkxID0gajEgPSBpMiA9IDA7XG4gICAgICB9IGVsc2UgaWYgKHgwIDwgejApIHtcbiAgICAgICAgajEgPSBqMiA9IGsyID0gMTtcbiAgICAgICAgaTEgPSBrMSA9IGkyID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGoxID0gaTIgPSBqMiA9IDE7XG4gICAgICAgIGkxID0gazEgPSBrMiA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgeDEgPSB4MCAtIGkxICsgU2ltcGxleE5vaXNlLkczOyAvLyBPZmZzZXRzIGZvciBzZWNvbmQgY29ybmVyIGluICh4LHkseikgY29vcmRzXG4gICAgY29uc3QgeTEgPSB5MCAtIGoxICsgU2ltcGxleE5vaXNlLkczO1xuICAgIGNvbnN0IHoxID0gejAgLSBrMSArIFNpbXBsZXhOb2lzZS5HMztcbiAgICBjb25zdCB4MiA9IHgwIC0gaTIgKyAyLjAgKiBTaW1wbGV4Tm9pc2UuRzM7IC8vIE9mZnNldHMgZm9yIHRoaXJkIGNvcm5lciBpbiAoeCx5LHopIGNvb3Jkc1xuICAgIGNvbnN0IHkyID0geTAgLSBqMiArIDIuMCAqIFNpbXBsZXhOb2lzZS5HMztcbiAgICBjb25zdCB6MiA9IHowIC0gazIgKyAyLjAgKiBTaW1wbGV4Tm9pc2UuRzM7XG4gICAgY29uc3QgeDMgPSB4MCAtIDEuMCArIDMuMCAqIFNpbXBsZXhOb2lzZS5HMzsgLy8gT2Zmc2V0cyBmb3IgbGFzdCBjb3JuZXIgaW4gKHgseSx6KSBjb29yZHNcbiAgICBjb25zdCB5MyA9IHkwIC0gMS4wICsgMy4wICogU2ltcGxleE5vaXNlLkczO1xuICAgIGNvbnN0IHozID0gejAgLSAxLjAgKyAzLjAgKiBTaW1wbGV4Tm9pc2UuRzM7XG5cbiAgICAvLyBXb3JrIG91dCB0aGUgaGFzaGVkIGdyYWRpZW50IGluZGljZXMgb2YgdGhlIGZvdXIgc2ltcGxleCBjb3JuZXJzXG4gICAgY29uc3QgaWkgPSBpICYgMjU1O1xuICAgIGNvbnN0IGpqID0gaiAmIDI1NTtcbiAgICBjb25zdCBrayA9IGsgJiAyNTU7XG4gICAgY29uc3QgZ2kwID0gdGhpcy5wZXJtTW9kMTJbaWkgKyB0aGlzLnBlcm1bamogKyB0aGlzLnBlcm1ba2tdXV07XG4gICAgY29uc3QgZ2kxID1cbiAgICAgIHRoaXMucGVybU1vZDEyW2lpICsgaTEgKyB0aGlzLnBlcm1bamogKyBqMSArIHRoaXMucGVybVtrayArIGsxXV1dO1xuICAgIGNvbnN0IGdpMiA9XG4gICAgICB0aGlzLnBlcm1Nb2QxMltpaSArIGkyICsgdGhpcy5wZXJtW2pqICsgajIgKyB0aGlzLnBlcm1ba2sgKyBrMl1dXTtcbiAgICBjb25zdCBnaTMgPSB0aGlzLnBlcm1Nb2QxMltpaSArIDEgKyB0aGlzLnBlcm1bamogKyAxICsgdGhpcy5wZXJtW2trICsgMV1dXTtcblxuICAgIC8vIENhbGN1bGF0ZSB0aGUgY29udHJpYnV0aW9uIGZyb20gdGhlIGZvdXIgY29ybmVyc1xuICAgIGNvbnN0IHQwID0gMC41IC0geDAgKiB4MCAtIHkwICogeTAgLSB6MCAqIHowO1xuICAgIGNvbnN0IG4wID1cbiAgICAgIHQwIDwgMFxuICAgICAgICA/IDAuMFxuICAgICAgICA6IE1hdGgucG93KHQwLCA0KSAqIHRoaXMuZG90KFNpbXBsZXhOb2lzZS5HUkFEM0RbZ2kwXSwgW3gwLCB5MCwgejBdKTtcbiAgICBjb25zdCB0MSA9IDAuNSAtIHgxICogeDEgLSB5MSAqIHkxIC0gejEgKiB6MTtcbiAgICBjb25zdCBuMSA9XG4gICAgICB0MSA8IDBcbiAgICAgICAgPyAwLjBcbiAgICAgICAgOiBNYXRoLnBvdyh0MSwgNCkgKiB0aGlzLmRvdChTaW1wbGV4Tm9pc2UuR1JBRDNEW2dpMV0sIFt4MSwgeTEsIHoxXSk7XG4gICAgY29uc3QgdDIgPSAwLjUgLSB4MiAqIHgyIC0geTIgKiB5MiAtIHoyICogejI7XG4gICAgY29uc3QgbjIgPVxuICAgICAgdDIgPCAwXG4gICAgICAgID8gMC4wXG4gICAgICAgIDogTWF0aC5wb3codDIsIDQpICogdGhpcy5kb3QoU2ltcGxleE5vaXNlLkdSQUQzRFtnaTJdLCBbeDIsIHkyLCB6Ml0pO1xuICAgIGNvbnN0IHQzID0gMC41IC0geDMgKiB4MyAtIHkzICogeTMgLSB6MyAqIHozO1xuICAgIGNvbnN0IG4zID1cbiAgICAgIHQzIDwgMFxuICAgICAgICA/IDAuMFxuICAgICAgICA6IE1hdGgucG93KHQzLCA0KSAqIHRoaXMuZG90KFNpbXBsZXhOb2lzZS5HUkFEM0RbZ2kzXSwgW3gzLCB5MywgejNdKTtcblxuICAgIC8vIEFkZCBjb250cmlidXRpb25zIGZyb20gZWFjaCBjb3JuZXIgdG8gZ2V0IHRoZSBmaW5hbCBub2lzZSB2YWx1ZS5cbiAgICAvLyBUaGUgcmVzdWx0IGlzIHNjYWxlZCB0byBzdGF5IGp1c3QgaW5zaWRlIFstMSwxXVxuICAgIHJldHVybiA5NC42ODQ5MzE1MDY4MTk3MiAqIChuMCArIG4xICsgbjIgKyBuMyk7XG4gIH1cblxuICBzY2FsZWQzRCh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyLCByZXNvbHV0aW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG1lbUluZGV4ID0gYCR7TWF0aC5yb3VuZCh4ICogcmVzb2x1dGlvbil9JHtNYXRoLnJvdW5kKFxuICAgICAgeSAqIHJlc29sdXRpb25cbiAgICApfSR7TWF0aC5yb3VuZCh6ICogcmVzb2x1dGlvbil9YDtcbiAgICBjb25zdCBtZW1FbGVtID0gdGhpcy5tZW1TY2FsZTNEW21lbUluZGV4XTtcbiAgICBpZiAobWVtRWxlbSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gbWVtRWxlbTtcbiAgICB9XG5cbiAgICBsZXQgYW1wbGl0dWRlID0gdGhpcy5hbXBsaXR1ZGU7XG4gICAgbGV0IGZyZXF1ZW5jeSA9IHRoaXMuZnJlcXVlbmN5O1xuICAgIGxldCBtYXhBbXBsaXR1ZGUgPSAwO1xuICAgIGxldCBub2lzZSA9IDA7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub2N0YXZlczsgaSsrKSB7XG4gICAgICBub2lzZSArPVxuICAgICAgICB0aGlzLnJhdzNEKHggKiBmcmVxdWVuY3ksIHkgKiBmcmVxdWVuY3ksIHogKiBmcmVxdWVuY3kpICogYW1wbGl0dWRlO1xuICAgICAgbWF4QW1wbGl0dWRlICs9IGFtcGxpdHVkZTtcbiAgICAgIGFtcGxpdHVkZSAqPSB0aGlzLnBlcnNpc3RlbmNlO1xuICAgICAgZnJlcXVlbmN5ICo9IDI7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2NhbGUobm9pc2UgLyBtYXhBbXBsaXR1ZGUpO1xuICAgIHRoaXMubWVtU2NhbGUzRFttZW1JbmRleF0gPSByZXN1bHQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVPcHRpb25zV2l0aERlZmF1bHRzKG9wdGlvbnM/OiBQYXJ0aWFsPFNpbXBsZXhOb2lzZU9wdGlvbnM+KSB7XG4gIGlmIChvcHRpb25zICE9IG51bGwpIHtcbiAgICBpZiAob3B0aW9uc1snYW1wbGl0dWRlJ10gJiYgdHlwZW9mIG9wdGlvbnMuYW1wbGl0dWRlICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLmFtcGxpdHVkZSBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnNbJ2ZyZXF1ZW5jeSddICYmIHR5cGVvZiBvcHRpb25zLmZyZXF1ZW5jeSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3B0aW9ucy5mcmVxdWVuY3kgbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIG9wdGlvbnNbJ29jdGF2ZXMnXSAmJlxuICAgICAgKHR5cGVvZiBvcHRpb25zLm9jdGF2ZXMgIT09ICdudW1iZXInIHx8XG4gICAgICAgICFpc0Zpbml0ZShvcHRpb25zLm9jdGF2ZXMpIHx8XG4gICAgICAgIE1hdGguZmxvb3Iob3B0aW9ucy5vY3RhdmVzKSAhPT0gb3B0aW9ucy5vY3RhdmVzKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLm9jdGF2ZXMgbXVzdCBiZSBhbiBpbnRlZ2VyJyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnNbJ3BlcnNpc3RlbmNlJ10gJiYgdHlwZW9mIG9wdGlvbnMucGVyc2lzdGVuY2UgIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29wdGlvbnMucGVyc2lzdGVuY2UgbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zWydyYW5kb20nXSAmJiB0eXBlb2Ygb3B0aW9ucy5yYW5kb20gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3B0aW9ucy5yYW5kb20gbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnNbJ21pbiddICYmIHR5cGVvZiBvcHRpb25zLm1pbiAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3B0aW9ucy5taW4gbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zWydtYXgnXSAmJiB0eXBlb2Ygb3B0aW9ucy5tYXggIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29wdGlvbnMubWF4IG11c3QgYmUgYSBudW1iZXInKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBvcHRpb25zUmVzdWx0ID0ge1xuICAgIGFtcGxpdHVkZTogMS4wLFxuICAgIGZyZXF1ZW5jeTogMS4wLFxuICAgIG1heDogMS4wLFxuICAgIG1pbjogLTEuMCxcbiAgICBvY3RhdmVzOiAxLFxuICAgIHBlcnNpc3RlbmNlOiAwLjUsXG4gICAgcmFuZG9tOiBNYXRoLnJhbmRvbSxcbiAgICAuLi5vcHRpb25zLFxuICB9O1xuICBpZiAob3B0aW9uc1Jlc3VsdC5taW4gPiBvcHRpb25zUmVzdWx0Lm1heCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWluIG11c3QgYmUgc21hbGxlciBtYXgnKTtcbiAgfVxuICByZXR1cm4gb3B0aW9uc1Jlc3VsdDtcbn1cbiJdfQ==
@@ -2,9 +2,12 @@ import { InjectionToken } from '@angular/core';
2
2
  import { createWsThanosOptions } from './create-ws-thanos-options';
3
3
  export const WS_THANOS_OPTIONS_TOKEN = new InjectionToken('thanosOptions', {
4
4
  providedIn: 'root',
5
- factory: createWsThanosOptions,
5
+ factory: () => createWsThanosOptions(),
6
6
  });
7
7
  export function provideWsThanosOptions(options) {
8
- return { provide: WS_THANOS_OPTIONS_TOKEN, useValue: createWsThanosOptions(options) };
8
+ return {
9
+ provide: WS_THANOS_OPTIONS_TOKEN,
10
+ useValue: createWsThanosOptions(options),
11
+ };
9
12
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdGhhbm9zLW9wdGlvbnMudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3B1YmxpYy93cy10aGFub3Mvc3JjL2xpYi93cy10aGFub3Mtb3B0aW9ucy50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR25FLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUN2RCxlQUFlLEVBQ2Y7SUFDRSxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUscUJBQXFCO0NBQy9CLENBQ0YsQ0FBQztBQUVGLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxPQUFrQztJQUN2RSxPQUFPLEVBQUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDO0FBQ3RGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNyZWF0ZVdzVGhhbm9zT3B0aW9ucyB9IGZyb20gJy4vY3JlYXRlLXdzLXRoYW5vcy1vcHRpb25zJztcbmltcG9ydCB7IFdzVGhhbm9zT3B0aW9ucyB9IGZyb20gJy4vd3MtdGhhbm9zLm9wdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgV1NfVEhBTk9TX09QVElPTlNfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48V3NUaGFub3NPcHRpb25zPihcbiAgJ3RoYW5vc09wdGlvbnMnLFxuICB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6IGNyZWF0ZVdzVGhhbm9zT3B0aW9ucyxcbiAgfVxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVXc1RoYW5vc09wdGlvbnMob3B0aW9ucz86IFBhcnRpYWw8V3NUaGFub3NPcHRpb25zPik6IFByb3ZpZGVyIHtcbiAgcmV0dXJuIHtwcm92aWRlOiBXU19USEFOT1NfT1BUSU9OU19UT0tFTiwgdXNlVmFsdWU6IGNyZWF0ZVdzVGhhbm9zT3B0aW9ucyhvcHRpb25zKX07XG59XG4iXX0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdGhhbm9zLW9wdGlvbnMudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3B1YmxpYy93cy10aGFub3Mvc3JjL2xpYi93cy10aGFub3Mtb3B0aW9ucy50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR25FLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUN2RCxlQUFlLEVBQ2Y7SUFDRSxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMscUJBQXFCLEVBQUU7Q0FDdkMsQ0FDRixDQUFDO0FBRUYsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxPQUFrQztJQUVsQyxPQUFPO1FBQ0wsT0FBTyxFQUFFLHVCQUF1QjtRQUNoQyxRQUFRLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDO0tBQ3pDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVXc1RoYW5vc09wdGlvbnMgfSBmcm9tICcuL2NyZWF0ZS13cy10aGFub3Mtb3B0aW9ucyc7XG5pbXBvcnQgdHlwZSB7IFdzVGhhbm9zT3B0aW9ucyB9IGZyb20gJy4vd3MtdGhhbm9zLm9wdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgV1NfVEhBTk9TX09QVElPTlNfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48V3NUaGFub3NPcHRpb25zPihcbiAgJ3RoYW5vc09wdGlvbnMnLFxuICB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6ICgpID0+IGNyZWF0ZVdzVGhhbm9zT3B0aW9ucygpLFxuICB9XG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVdzVGhhbm9zT3B0aW9ucyhcbiAgb3B0aW9ucz86IFBhcnRpYWw8V3NUaGFub3NPcHRpb25zPlxuKTogUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IFdTX1RIQU5PU19PUFRJT05TX1RPS0VOLFxuICAgIHVzZVZhbHVlOiBjcmVhdGVXc1RoYW5vc09wdGlvbnMob3B0aW9ucyksXG4gIH07XG59XG4iXX0=
@@ -38,9 +38,9 @@ export class WsThanosDirective {
38
38
  this.subscription?.unsubscribe();
39
39
  }
40
40
  }
41
- WsThanosDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: WsThanosDirective, deps: [{ token: i0.ElementRef }, { token: i1.WsThanosService }, { token: WS_THANOS_OPTIONS_TOKEN }, { token: NgZone }], target: i0.ɵɵFactoryTarget.Directive });
42
- WsThanosDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.1", type: WsThanosDirective, isStandalone: true, selector: "[wsThanos], ws-thanos", outputs: { wsThanosComplete: "wsThanosComplete" }, exportAs: ["thanos"], ngImport: i0 });
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: WsThanosDirective, decorators: [{
41
+ WsThanosDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: WsThanosDirective, deps: [{ token: i0.ElementRef }, { token: i1.WsThanosService }, { token: WS_THANOS_OPTIONS_TOKEN }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
42
+ WsThanosDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.9", type: WsThanosDirective, isStandalone: true, selector: "[wsThanos], ws-thanos", outputs: { wsThanosComplete: "wsThanosComplete" }, exportAs: ["thanos"], ngImport: i0 });
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: WsThanosDirective, decorators: [{
44
44
  type: Directive,
45
45
  args: [{
46
46
  standalone: true,
@@ -50,10 +50,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImpor
50
50
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.WsThanosService }, { type: undefined, decorators: [{
51
51
  type: Inject,
52
52
  args: [WS_THANOS_OPTIONS_TOKEN]
53
- }] }, { type: i0.NgZone, decorators: [{
54
- type: Inject,
55
- args: [NgZone]
56
- }] }]; }, propDecorators: { wsThanosComplete: [{
53
+ }] }, { type: i0.NgZone }]; }, propDecorators: { wsThanosComplete: [{
57
54
  type: Output
58
55
  }] } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdGhhbm9zLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcHVibGljL3dzLXRoYW5vcy9zcmMvbGliL3dzLXRoYW5vcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixNQUFNLEVBRU4sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBT3RELE1BQU0sT0FBTyxpQkFBaUI7SUFNNUIsWUFDbUIsZUFBd0MsRUFDeEMsYUFBOEIsRUFFOUIsYUFBOEIsRUFFOUIsTUFBYztRQUxkLG9CQUFlLEdBQWYsZUFBZSxDQUF5QjtRQUN4QyxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFFOUIsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBRTlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFSekIscUJBQWdCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUFTckUsQ0FBQztJQUVHLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSTtRQUMvQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQztRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUM5RCxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDbkIsSUFBSSxVQUFVLEVBQUU7d0JBQ2QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3FCQUNmO3lCQUFNO3dCQUNMLHFCQUFxQjt3QkFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDO3dCQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7cUJBQzFCO29CQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDL0IsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7OEdBekNVLGlCQUFpQiwyRUFTbEIsdUJBQXVCLGFBRXZCLE1BQU07a0dBWEwsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBTDdCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxRQUFRO2lCQUNuQjs7MEJBVUksTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUU5QixNQUFNOzJCQUFDLE1BQU07NENBUFIsZ0JBQWdCO3NCQUR2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFdTX1RIQU5PU19PUFRJT05TX1RPS0VOIH0gZnJvbSAnLi93cy10aGFub3Mtb3B0aW9ucy50b2tlbic7XG5pbXBvcnQgeyBXc1RoYW5vc09wdGlvbnMgfSBmcm9tICcuL3dzLXRoYW5vcy5vcHRpb25zJztcbmltcG9ydCB7IFdzVGhhbm9zU2VydmljZSB9IGZyb20gJy4vd3MtdGhhbm9zLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbd3NUaGFub3NdLCB3cy10aGFub3MnLFxuICBleHBvcnRBczogJ3RoYW5vcycsXG59KVxuZXhwb3J0IGNsYXNzIFdzVGhhbm9zRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgQE91dHB1dCgpXG4gIHByaXZhdGUgd3NUaGFub3NDb21wbGV0ZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmFwb3JpemVEb21FbGVtOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRoYW5vc1NlcnZpY2U6IFdzVGhhbm9zU2VydmljZSxcbiAgICBASW5qZWN0KFdTX1RIQU5PU19PUFRJT05TX1RPS0VOKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGhhbm9zT3B0aW9uczogV3NUaGFub3NPcHRpb25zLFxuICAgIEBJbmplY3QoTmdab25lKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIHB1YmxpYyB2YXBvcml6ZShyZW1vdmVFbGVtID0gdHJ1ZSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGVsZW0gPSB0aGlzLnZhcG9yaXplRG9tRWxlbS5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy50aGFub3NTZXJ2aWNlLnZhcG9yaXplKGVsZW0pLnN1YnNjcmliZSh7XG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIGlmIChyZW1vdmVFbGVtKSB7XG4gICAgICAgICAgICBlbGVtLnJlbW92ZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBtYWtlIHZpc2libGUgYWdhaW5cbiAgICAgICAgICAgIGVsZW0uc3R5bGUudHJhbnNpdGlvbiA9ICdvcGFjaXR5IDcwMG1zJztcbiAgICAgICAgICAgIGVsZW0uc3R5bGUub3BhY2l0eSA9ICcxJztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy53c1RoYW5vc0NvbXBsZXRlLmVtaXQoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBlbWl0dGVkIGJ5IHZhcG9yaXplJywgZXJyb3IpO1xuICAgICAgICB0aGlzLndzVGhhbm9zQ29tcGxldGUuZW1pdCgpO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLndzVGhhbm9zQ29tcGxldGUuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdGhhbm9zLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcHVibGljL3dzLXRoYW5vcy9zcmMvbGliL3dzLXRoYW5vcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixNQUFNLEVBRU4sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBT3RELE1BQU0sT0FBTyxpQkFBaUI7SUFNNUIsWUFDbUIsZUFBd0MsRUFDeEMsYUFBOEIsRUFFOUIsYUFBOEIsRUFDOUIsTUFBYztRQUpkLG9CQUFlLEdBQWYsZUFBZSxDQUF5QjtRQUN4QyxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFFOUIsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFQekIscUJBQWdCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUFRckUsQ0FBQztJQUVHLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSTtRQUMvQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQztRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUM5RCxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDbkIsSUFBSSxVQUFVLEVBQUU7d0JBQ2QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3FCQUNmO3lCQUFNO3dCQUNMLHFCQUFxQjt3QkFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDO3dCQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7cUJBQzFCO29CQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDL0IsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7OEdBeENVLGlCQUFpQiwyRUFTbEIsdUJBQXVCO2tHQVR0QixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFMN0IsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLFFBQVE7aUJBQ25COzswQkFVSSxNQUFNOzJCQUFDLHVCQUF1QjtpRUFMekIsZ0JBQWdCO3NCQUR2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFdTX1RIQU5PU19PUFRJT05TX1RPS0VOIH0gZnJvbSAnLi93cy10aGFub3Mtb3B0aW9ucy50b2tlbic7XG5pbXBvcnQgdHlwZSB7IFdzVGhhbm9zT3B0aW9ucyB9IGZyb20gJy4vd3MtdGhhbm9zLm9wdGlvbnMnO1xuaW1wb3J0IHsgV3NUaGFub3NTZXJ2aWNlIH0gZnJvbSAnLi93cy10aGFub3Muc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1t3c1RoYW5vc10sIHdzLXRoYW5vcycsXG4gIGV4cG9ydEFzOiAndGhhbm9zJyxcbn0pXG5leHBvcnQgY2xhc3MgV3NUaGFub3NEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICBAT3V0cHV0KClcbiAgcHJpdmF0ZSB3c1RoYW5vc0NvbXBsZXRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB2YXBvcml6ZURvbUVsZW06IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGhhbm9zU2VydmljZTogV3NUaGFub3NTZXJ2aWNlLFxuICAgIEBJbmplY3QoV1NfVEhBTk9TX09QVElPTlNfVE9LRU4pXG4gICAgcHJpdmF0ZSByZWFkb25seSB0aGFub3NPcHRpb25zOiBXc1RoYW5vc09wdGlvbnMsXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZVxuICApIHt9XG5cbiAgcHVibGljIHZhcG9yaXplKHJlbW92ZUVsZW0gPSB0cnVlKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZWxlbSA9IHRoaXMudmFwb3JpemVEb21FbGVtLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnRoYW5vc1NlcnZpY2UudmFwb3JpemUoZWxlbSkuc3Vic2NyaWJlKHtcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgaWYgKHJlbW92ZUVsZW0pIHtcbiAgICAgICAgICAgIGVsZW0ucmVtb3ZlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdmlzaWJsZSBhZ2FpblxuICAgICAgICAgICAgZWxlbS5zdHlsZS50cmFuc2l0aW9uID0gJ29wYWNpdHkgNzAwbXMnO1xuICAgICAgICAgICAgZWxlbS5zdHlsZS5vcGFjaXR5ID0gJzEnO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLndzVGhhbm9zQ29tcGxldGUuZW1pdCgpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yIGVtaXR0ZWQgYnkgdmFwb3JpemUnLCBlcnJvcik7XG4gICAgICAgIHRoaXMud3NUaGFub3NDb21wbGV0ZS5lbWl0KCk7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMud3NUaGFub3NDb21wbGV0ZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdGhhbm9zLm9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3B1YmxpYy93cy10aGFub3Mvc3JjL2xpYi93cy10aGFub3Mub3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBXc1RoYW5vc09wdGlvbnMge1xyXG4gIGFuaW1hdGlvbkxlbmd0aDogbnVtYmVyO1xyXG4gIG1heFBhcnRpY2xlQ291bnQ6IG51bWJlcjtcclxuICBwYXJ0aWNsZUFjY2VsZXJhdGlvbjogbnVtYmVyO1xyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdGhhbm9zLm9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3B1YmxpYy93cy10aGFub3Mvc3JjL2xpYi93cy10aGFub3Mub3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBXc1RoYW5vc09wdGlvbnMge1xuICBhbmltYXRpb25MZW5ndGg6IG51bWJlcjtcbiAgbWF4UGFydGljbGVDb3VudDogbnVtYmVyO1xuICBwYXJ0aWNsZUFjY2VsZXJhdGlvbjogbnVtYmVyO1xufVxuIl19
@@ -1,7 +1,6 @@
1
1
  import { Inject, Injectable, NgZone } from '@angular/core';
2
2
  import { default as html2canvas } from 'html2canvas';
3
- import { animationFrameScheduler, from, interval } from 'rxjs';
4
- import { map, switchMap, takeWhile, tap, timeInterval } from 'rxjs/operators';
3
+ import { animationFrameScheduler, from, interval, map, switchMap, takeWhile, tap, timeInterval, } from 'rxjs';
5
4
  import { SimplexNoise } from './simplex-noise';
6
5
  import { WS_THANOS_OPTIONS_TOKEN } from './ws-thanos-options.token';
7
6
  import * as i0 from "@angular/core";
@@ -11,9 +10,9 @@ const HEIGHT_SCALE = 5;
11
10
  const WIDTH_SCALE = 2;
12
11
  const FLOW_FIELD_RES = 0.05;
13
12
  export class WsThanosService {
14
- constructor(thanosOptions, _ngZone) {
13
+ constructor(thanosOptions, ngZone) {
15
14
  this.thanosOptions = thanosOptions;
16
- this._ngZone = _ngZone;
15
+ this.ngZone = ngZone;
17
16
  }
18
17
  static getParticleIndicesForBase(base) {
19
18
  return {
@@ -180,12 +179,12 @@ export class WsThanosService {
180
179
  return [sampleX, sampleY];
181
180
  }
182
181
  /**
183
- * start the vaporize effect.
182
+ * start the vaporize-effect.
184
183
  *
185
184
  * It's running outside the ngZone.
186
185
  */
187
186
  vaporize(elem) {
188
- return this._ngZone.runOutsideAngular(() => this.vaporizeIntern(elem));
187
+ return this.ngZone.runOutsideAngular(() => this.vaporizeIntern(elem));
189
188
  }
190
189
  vaporizeIntern(elem) {
191
190
  elem.style.opacity = elem.style.opacity || '1';
@@ -249,16 +248,13 @@ export class WsThanosService {
249
248
  }));
250
249
  }
251
250
  }
252
- WsThanosService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: WsThanosService, deps: [{ token: WS_THANOS_OPTIONS_TOKEN }, { token: NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
253
- WsThanosService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: WsThanosService, providedIn: 'root' });
254
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: WsThanosService, decorators: [{
251
+ WsThanosService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: WsThanosService, deps: [{ token: WS_THANOS_OPTIONS_TOKEN }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
252
+ WsThanosService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: WsThanosService, providedIn: 'root' });
253
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: WsThanosService, decorators: [{
255
254
  type: Injectable,
256
255
  args: [{ providedIn: 'root' }]
257
256
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
258
257
  type: Inject,
259
258
  args: [WS_THANOS_OPTIONS_TOKEN]
260
- }] }, { type: i0.NgZone, decorators: [{
261
- type: Inject,
262
- args: [NgZone]
263
- }] }]; } });
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdGhhbm9zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3B1YmxpYy93cy10aGFub3Mvc3JjL2xpYi93cy10aGFub3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0QsT0FBTyxFQUFFLE9BQU8sSUFBSSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBR3BFLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQzFDLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQztBQUN2QixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDdEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBcUM1QixNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUVVLGFBQThCLEVBQ2QsT0FBZTtRQUQvQixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDZCxZQUFPLEdBQVAsT0FBTyxDQUFRO0lBQ3RDLENBQUM7SUFFSSxNQUFNLENBQUMseUJBQXlCLENBQUMsSUFBWTtRQUNuRCxPQUFPO1lBQ0wsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSSxHQUFH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QUM7b0JBQzlCLGFBQWE7b0JBQ2IsY0FBYztvQkFDZCxhQUFhLEVBQUU7d0JBQ2IsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjtxQkFDckI7b0JBQ0QsS0FBSztvQkFDTCxJQUFJO2lCQUNMLENBQUMsQ0FBQztnQkFDSCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLE9BQU8sRUFBRTtvQkFDWCxlQUFlLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ2pFO1lBQ0gsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxFQUM3RCxHQUFHLENBQUM7Z0JBQ0YsUUFBUSxFQUFFLEdBQUcsRUFBRTtvQkFDYixPQUFPLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDL0IsQ0FBQzthQUNGLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OzRHQWpWVSxlQUFlLGtCQUVoQix1QkFBdUIsYUFFdkIsTUFBTTtnSEFKTCxlQUFlLGNBREYsTUFBTTsyRkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQUc3QixNQUFNOzJCQUFDLHVCQUF1Qjs7MEJBRTlCLE1BQU07MkJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBkZWZhdWx0IGFzIGh0bWwyY2FudmFzIH0gZnJvbSAnaHRtbDJjYW52YXMnO1xyXG5pbXBvcnQgeyBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgZnJvbSwgaW50ZXJ2YWwsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAsIHRha2VXaGlsZSwgdGFwLCB0aW1lSW50ZXJ2YWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNpbXBsZXhOb2lzZSB9IGZyb20gJy4vc2ltcGxleC1ub2lzZSc7XHJcbmltcG9ydCB7IFdTX1RIQU5PU19PUFRJT05TX1RPS0VOIH0gZnJvbSAnLi93cy10aGFub3Mtb3B0aW9ucy50b2tlbic7XHJcbmltcG9ydCB7IFdzVGhhbm9zT3B0aW9ucyB9IGZyb20gJy4vd3MtdGhhbm9zLm9wdGlvbnMnO1xyXG5cclxuY29uc3QgUEFSVElDTEVfQllURV9MRU5HVEggPSAxMDtcclxuY29uc3QgTUlOX1BBUlRJQ0xFX0FMUEhBID0gfn4oMjU1ICogMC4wMSk7XHJcbmNvbnN0IEhFSUdIVF9TQ0FMRSA9IDU7XHJcbmNvbnN0IFdJRFRIX1NDQUxFID0gMjtcclxuY29uc3QgRkxPV19GSUVMRF9SRVMgPSAwLjA1O1xyXG5cclxuaW50ZXJmYWNlIFBhcnRpY2xlc0RhdGEge1xyXG4gIHBhcnRpY2xlczogRmxvYXQzMkFycmF5O1xyXG4gIG1heFBhcnRpY2xlWDogbnVtYmVyO1xyXG4gIG1pblBhcnRpY2xlWTogbnVtYmVyO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgQW5pbWF0aW9uU3RhdGUge1xyXG4gIGRlbHRhVFNlYzogbnVtYmVyO1xyXG4gIGFuaW1hdGlvblQ6IG51bWJlcjtcclxuICBtYXhXaWR0aDogbnVtYmVyO1xyXG4gIG1heEhlaWdodDogbnVtYmVyO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVXBkYXRlUGFydGljbGVQYXJhbXMge1xyXG4gIHBhcnRpY2xlc0RhdGE6IFBhcnRpY2xlc0RhdGE7XHJcbiAgYW5pbWF0aW9uU3RhdGU6IEFuaW1hdGlvblN0YXRlO1xyXG4gIHRoYW5vc09wdGlvbnM6IFdzVGhhbm9zT3B0aW9ucztcclxuICBub2lzZTogU2ltcGxleE5vaXNlO1xyXG4gIHNlZWQ6IG51bWJlcjtcclxufVxyXG5cclxuaW50ZXJmYWNlIFBhcnRpY2xlSW5kaWNlcyB7XHJcbiAgeDogbnVtYmVyO1xyXG4gIHk6IG51bWJlcjtcclxuICBkeDogbnVtYmVyO1xyXG4gIGR5OiBudW1iZXI7XHJcbiAgYXg6IG51bWJlcjtcclxuICBheTogbnVtYmVyO1xyXG4gIHI6IG51bWJlcjtcclxuICBnOiBudW1iZXI7XHJcbiAgYjogbnVtYmVyO1xyXG4gIGE6IG51bWJlcjtcclxufVxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFdzVGhhbm9zU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KFdTX1RIQU5PU19PUFRJT05TX1RPS0VOKVxyXG4gICAgcHJpdmF0ZSB0aGFub3NPcHRpb25zOiBXc1RoYW5vc09wdGlvbnMsXHJcbiAgICBASW5qZWN0KE5nWm9uZSkgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmVcclxuICApIHt9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdldFBhcnRpY2xlSW5kaWNlc0ZvckJhc2UoYmFzZTogbnVtYmVyKTogUGFydGljbGVJbmRpY2VzIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHg6IGJhc2UsXHJcbiAgICAgIHk6IGJhc2UgKyAxLFxyXG4gICAgICBkeDogYmFzZSArIDIsXHJcbiAgICAgIGR5OiBiYXNlICsgMyxcclxuICAgICAgYXg6IGJhc2UgKyA0LFxyXG4gICAgICBheTogYmFzZSArIDUsXHJcbiAgICAgIHI6IGJhc2UgKyA2LFxyXG4gICAgICBnOiBiYXNlICsgNyxcclxuICAgICAgYjogYmFzZSArIDgsXHJcbiAgICAgIGE6IGJhc2UgKyA5LFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdldENvbG9ySW5kaWNlc0ZvckNvb3JkKFxyXG4gICAgeDogbnVtYmVyLFxyXG4gICAgeTogbnVtYmVyLFxyXG4gICAgd2lkdGg6IG51bWJlclxyXG4gICk6IHsgYTogbnVtYmVyOyByOiBudW1iZXI7IGI6IG51bWJlcjsgZzogbnVtYmVyIH0ge1xyXG4gICAgY29uc3QgcmVkID0geSAqICh3aWR0aCAqIDQpICsgeCAqIDQ7XHJcbiAgICByZXR1cm4geyByOiByZWQsIGc6IHJlZCArIDEsIGI6IHJlZCArIDIsIGE6IHJlZCArIDMgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHVwZGF0ZVBhcnRpY2xlcyh7XHJcbiAgICBzZWVkLFxyXG4gICAgbm9pc2UsXHJcbiAgICBwYXJ0aWNsZXNEYXRhLFxyXG4gICAgdGhhbm9zT3B0aW9ucyxcclxuICAgIGFuaW1hdGlvblN0YXRlLFxyXG4gIH06IFVwZGF0ZVBhcnRpY2xlUGFyYW1zKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGRlbHRhVFNlYywgYW5pbWF0aW9uVCwgbWF4V2lkdGgsIG1heEhlaWdodCB9ID0gYW5pbWF0aW9uU3RhdGU7XHJcbiAgICBjb25zdCB7IHBhcnRpY2xlQWNjZWxlcmF0aW9uIH0gPSB0aGFub3NPcHRpb25zO1xyXG4gICAgY29uc3QgeyBwYXJ0aWNsZXMsIG1heFBhcnRpY2xlWCwgbWluUGFydGljbGVZIH0gPSBwYXJ0aWNsZXNEYXRhO1xyXG5cclxuICAgIC8vIHRoZSB0aW1lIGlzIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSB2YXBvcml6YXRpb24gZnJvbnQuXHJcbiAgICBjb25zdCB0aW1lID0gTWF0aC5zaW4oYW5pbWF0aW9uVCAqIChNYXRoLlBJIC8gMikpICogMS4xO1xyXG5cclxuICAgIGNvbnN0IHN0YXJ0QWNjZWxlcmF0ZVggPSBtYXhQYXJ0aWNsZVggLSB0aW1lICogbWF4UGFydGljbGVYO1xyXG4gICAgY29uc3Qgc3RhcnRBY2NlbGVyYXRlWSA9IHRpbWUgKiAobWF4SGVpZ2h0IC0gbWluUGFydGljbGVZKSArIG1pblBhcnRpY2xlWTtcclxuXHJcbiAgICBjb25zdCBsZW5ndGhZID0gbWF4SGVpZ2h0IC0gc3RhcnRBY2NlbGVyYXRlWTtcclxuICAgIGNvbnN0IGFjY2VsZXJhdGVSYWRpdXNQb3cgPVxyXG4gICAgICBzdGFydEFjY2VsZXJhdGVYICogc3RhcnRBY2NlbGVyYXRlWCArIGxlbmd0aFkgKiBsZW5ndGhZO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydGljbGVzLmxlbmd0aDsgaSArPSBQQVJUSUNMRV9CWVRFX0xFTkdUSCkge1xyXG4gICAgICBjb25zdCB7IHgsIHksIGR4LCBkeSwgYXgsIGF5LCBhIH0gPVxyXG4gICAgICAgIFdzVGhhbm9zU2VydmljZS5nZXRQYXJ0aWNsZUluZGljZXNGb3JCYXNlKGkpO1xyXG4gICAgICBjb25zdCBwYXJ0aWNsZVggPSBwYXJ0aWNsZXNbeF07XHJcbiAgICAgIGNvbnN0IHBhcnRpY2xlWSA9IHBhcnRpY2xlc1t5XTtcclxuXHJcbiAgICAgIC8vIG9ubHkgdXBkYXRlIHBhcnRpY2xlcyB0aGF0IGFyZSBpbnNpZGUgdmlldyBhbmQgdmlzaWJsZVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcGFydGljbGVYID4gbWF4V2lkdGggfHxcclxuICAgICAgICBwYXJ0aWNsZVggPCAwIHx8XHJcbiAgICAgICAgcGFydGljbGVZID4gbWF4SGVpZ2h0IHx8XHJcbiAgICAgICAgcGFydGljbGVZIDwgMCB8fFxyXG4gICAgICAgIHBhcnRpY2xlc1thXSA8IE1JTl9QQVJUSUNMRV9BTFBIQVxyXG4gICAgICApIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCEoTWF0aC5hYnMocGFydGljbGVzW2F4XSkgPiAwIHx8IE1hdGguYWJzKHBhcnRpY2xlc1theV0pID4gMCkpIHtcclxuICAgICAgICBsZXQgcFlMZW5ndGggPSBtYXhIZWlnaHQgLSBwYXJ0aWNsZVk7XHJcbiAgICAgICAgbGV0IHBYTGVuZ3RoID0gcGFydGljbGVYO1xyXG5cclxuICAgICAgICAvLyB3ZSBjYWxjdWxhdGUgc29tZSByYW5kb20gbG9va2luZyBudW1iZXJzIGFuZCBmdW5jdGlvbnMgdG8gaGF2ZSBuaWNlIGxvb2tpbmcgdmFwb3JpemluZyBmcm9udCBvZiBwYXJ0aWNsZXNcclxuICAgICAgICAvLyB0b2RvIGNvbnNpZGVyIHRvIHVzZSBub2lzZTtcclxuICAgICAgICBwWExlbmd0aCArPSBNYXRoLnRhbigocFhMZW5ndGggLyAyMC4xMikgKiB0aW1lICsgc2VlZCkgKiAwLjU7XHJcbiAgICAgICAgcFhMZW5ndGggKz0gKHBhcnRpY2xlWCAlIGRlbHRhVFNlYykgKiAwLjU7XHJcbiAgICAgICAgcFhMZW5ndGggKz1cclxuICAgICAgICAgIE1hdGguc2luKChwWExlbmd0aCAvIDMwICsgNzIzLjM5NCkgKiB0aW1lICsgc2VlZCAqIDEyLjUpICogMTE7XHJcbiAgICAgICAgcFlMZW5ndGggKz0gTWF0aC50YW4oKHBZTGVuZ3RoIC8gMC40NSkgKiB0aW1lICsgc2VlZCAqIDEuNSkgKiAwLjU7XHJcbiAgICAgICAgcFlMZW5ndGggKz1cclxuICAgICAgICAgIE1hdGguY29zKChwWUxlbmd0aCAvIDEwMCArIDIzMjMuMjM0KSAqIHRpbWUgKyBzZWVkICogNDU2LjEpICogMjM7XHJcblxyXG4gICAgICAgIGNvbnN0IHBMZW5ndGggPSBwWExlbmd0aCAqIHBYTGVuZ3RoICsgcFlMZW5ndGggKiBwWUxlbmd0aDtcclxuICAgICAgICBpZiAocExlbmd0aCA+IGFjY2VsZXJhdGVSYWRpdXNQb3cpIHtcclxuICAgICAgICAgIHBhcnRpY2xlc1theF0gPSBNYXRoLnJhbmRvbSgpO1xyXG4gICAgICAgICAgcGFydGljbGVzW2F5XSA9IE1hdGgucmFuZG9tKCkgKiAtMTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gdXNlIG5vaXNlIHRvIGZsb3cgYWxvbmcgdmVsb2NpdHkgZmllbGRcclxuICAgICAgICBjb25zdCBmbG93RmllbGRBY2MgPSBXc1RoYW5vc1NlcnZpY2UuZ2V0WFlGcm9tRmxvd0ZpZWxkKFxyXG4gICAgICAgICAgbm9pc2UsXHJcbiAgICAgICAgICBzZWVkLFxyXG4gICAgICAgICAgcGFydGljbGVYLFxyXG4gICAgICAgICAgcGFydGljbGVZXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBhY2NlbGVyYXRpb25YID0gZmxvd0ZpZWxkQWNjWzBdO1xyXG4gICAgICAgIGNvbnN0IGFjY2VsZXJhdGlvblkgPSBmbG93RmllbGRBY2NbMV07XHJcbiAgICAgICAgcGFydGljbGVzW2F4XSArPSBhY2NlbGVyYXRpb25YO1xyXG4gICAgICAgIHBhcnRpY2xlc1theV0gKz0gYWNjZWxlcmF0aW9uWTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gKiBNYXRoLnBvdygxICsgYW5pbWF0aW9uVCwgNClcclxuICAgICAgcGFydGljbGVzW2R4XSArPSBwYXJ0aWNsZXNbYXhdICogcGFydGljbGVBY2NlbGVyYXRpb24gKiBkZWx0YVRTZWM7XHJcbiAgICAgIHBhcnRpY2xlc1tkeV0gKz0gcGFydGljbGVzW2F5XSAqIHBhcnRpY2xlQWNjZWxlcmF0aW9uICogZGVsdGFUU2VjO1xyXG4gICAgICBwYXJ0aWNsZXNbeF0gKz0gcGFydGljbGVzW2R4XSAqIGRlbHRhVFNlYztcclxuICAgICAgcGFydGljbGVzW3ldICs9IHBhcnRpY2xlc1tkeV0gKiBkZWx0YVRTZWM7XHJcbiAgICAgIC8vIGZhZGUgcGFydGljbGUgb3V0ICggdmVyeSBsYXRlKTtcclxuICAgICAgcGFydGljbGVzW2FdICo9IDEgLSBNYXRoLnBvdyhhbmltYXRpb25ULCAxNSk7IC8vIDI1NSAtIE1hdGguc3FydChwYXJ0aWNsZXNbZHhdICogcGFydGljbGVzW2R4XSArIHBhcnRpY2xlc1tkeV0gKiBwYXJ0aWNsZXNbZHldKSAvIDEuMjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGRyYXdQYXJ0aWNsZXMoXHJcbiAgICBkcmF3Q3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXHJcbiAgICBwYXJ0aWNsZXM6IEZsb2F0MzJBcnJheVxyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBkcmF3Q3R4LmNhbnZhcztcclxuICAgIGRyYXdDdHguY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xyXG4gICAgY29uc3QgaW1hZ2UgPSBkcmF3Q3R4LmdldEltYWdlRGF0YSgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcclxuICAgIGNvbnN0IGltYWdlRGF0YSA9IGltYWdlLmRhdGE7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRpY2xlcy5sZW5ndGg7IGkgKz0gUEFSVElDTEVfQllURV9MRU5HVEgpIHtcclxuICAgICAgY29uc3QgcGFydGljbGVYID0gcGFydGljbGVzW2ldO1xyXG4gICAgICBjb25zdCBwYXJ0aWNsZVkgPSBwYXJ0aWNsZXNbaSArIDFdO1xyXG4gICAgICBjb25zdCBwSSA9IFdzVGhhbm9zU2VydmljZS5nZXRQYXJ0aWNsZUluZGljZXNGb3JCYXNlKGkpO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcGFydGljbGVYID4gd2lkdGggfHxcclxuICAgICAgICBwYXJ0aWNsZVggPCAwIHx8XHJcbiAgICAgICAgcGFydGljbGVZID4gaGVpZ2h0IHx8XHJcbiAgICAgICAgcGFydGljbGVZIDwgMCB8fFxyXG4gICAgICAgIHBhcnRpY2xlc1twSS5hXSA8IE1JTl9QQVJUSUNMRV9BTFBIQVxyXG4gICAgICApIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB7IHIsIGcsIGIsIGEgfSA9IFdzVGhhbm9zU2VydmljZS5nZXRDb2xvckluZGljZXNGb3JDb29yZChcclxuICAgICAgICB+fnBhcnRpY2xlc1twSS54XSxcclxuICAgICAgICB+fnBhcnRpY2xlc1twSS55XSxcclxuICAgICAgICB3aWR0aFxyXG4gICAgICApO1xyXG4gICAgICBpbWFnZURhdGFbcl0gPSB+fnBhcnRpY2xlc1twSS5yXTtcclxuICAgICAgaW1hZ2VEYXRhW2ddID0gfn5wYXJ0aWNsZXNbcEkuZ107XHJcbiAgICAgIGltYWdlRGF0YVtiXSA9IH5+cGFydGljbGVzW3BJLmJdO1xyXG4gICAgICBpbWFnZURhdGFbYV0gPSB+fnBhcnRpY2xlc1twSS5hXTtcclxuICAgIH1cclxuICAgIGRyYXdDdHgucHV0SW1hZ2VEYXRhKGltYWdlLCAwLCAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHByZXBhcmVDYW52YXNGb3JWYXBvcml6ZShcclxuICAgIGRpdkNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQsXHJcbiAgICBtYXhQYXJ0aWNsZUNvdW50OiBudW1iZXJcclxuICApOiB7XHJcbiAgICBwYXJ0aWNsZXNEYXRhOiBQYXJ0aWNsZXNEYXRhO1xyXG4gICAgcmVzdWx0Q2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudDtcclxuICB9IHtcclxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZGl2Q2FudmFzO1xyXG5cclxuICAgIC8vIHNjYWxlIHJlc3VsdCBjYW52YXMgdG8gaGF2ZSBtb3JlIHJvb20gdG8gZHJhdyBwYXJ0aWNsZXMgd2hpbGUgdmFwb3JpemluZztcclxuICAgIGNvbnN0IHJlc3VsdEhlaWdodCA9IGhlaWdodCAqIEhFSUdIVF9TQ0FMRTtcclxuICAgIGNvbnN0IHJlc3VsdFdpZHRoID0gd2lkdGggKiBXSURUSF9TQ0FMRTtcclxuICAgIGNvbnN0IHJlc3VsdENhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIHJlc3VsdENhbnZhcy5oZWlnaHQgPSByZXN1bHRIZWlnaHQ7XHJcbiAgICByZXN1bHRDYW52YXMud2lkdGggPSByZXN1bHRXaWR0aDtcclxuXHJcbiAgICBjb25zdCBpbWFnZURhdGEgPSBkaXZDYW52YXNcclxuICAgICAgLmdldENvbnRleHQoJzJkJylcclxuICAgICAgPy5nZXRJbWFnZURhdGEoMCwgMCwgd2lkdGgsIGhlaWdodCk7XHJcbiAgICBpZiAoaW1hZ2VEYXRhID09IG51bGwpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52YXMnKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHBhcnRpY2xlc0RhdGEgPSBXc1RoYW5vc1NlcnZpY2UuY3JlYXRlUGFydGljbGVzRm9ySW1hZ2VEYXRhKFxyXG4gICAgICBpbWFnZURhdGEsXHJcbiAgICAgIG1heFBhcnRpY2xlQ291bnQsXHJcbiAgICAgIHJlc3VsdEhlaWdodFxyXG4gICAgKTtcclxuICAgIHJldHVybiB7IHJlc3VsdENhbnZhcywgcGFydGljbGVzRGF0YSB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlUGFydGljbGVzRm9ySW1hZ2VEYXRhKFxyXG4gICAgaW1hZ2VEYXRhOiBJbWFnZURhdGEsXHJcbiAgICBtYXhQYXJ0aWNsZUNvdW50OiBudW1iZXIsXHJcbiAgICByZXN1bHRIZWlnaHQ6IG51bWJlclxyXG4gICk6IHsgbWluUGFydGljbGVZOiBudW1iZXI7IG1heFBhcnRpY2xlWDogbnVtYmVyOyBwYXJ0aWNsZXM6IEZsb2F0MzJBcnJheSB9IHtcclxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gaW1hZ2VEYXRhO1xyXG4gICAgbGV0IHBhcnRpY2xlQ2FuZGlkYXRlcyA9IDA7XHJcbiAgICBsZXQgcGFydGljbGVDb3VudCA9IDA7XHJcblxyXG4gICAgY29uc3QgcGFydGljbGVDYW5kaWF0ZXNMaXN0OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH1bXSA9IFtdO1xyXG4gICAgZm9yIChsZXQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykge1xyXG4gICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHtcclxuICAgICAgICBjb25zdCB7IGEgfSA9IFdzVGhhbm9zU2VydmljZS5nZXRDb2xvckluZGljZXNGb3JDb29yZCh4LCB5LCB3aWR0aCk7XHJcbiAgICAgICAgaWYgKGltYWdlRGF0YS5kYXRhW2FdID49IE1JTl9QQVJUSUNMRV9BTFBIQSkge1xyXG4gICAgICAgICAgcGFydGljbGVDYW5kaWRhdGVzKys7XHJcbiAgICAgICAgICBwYXJ0aWNsZUNhbmRpYXRlc0xpc3QucHVzaCh7IHgsIHkgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWF4TnVtUGFydGljbGVzID0gTWF0aC5taW4ocGFydGljbGVDYW5kaWRhdGVzLCBtYXhQYXJ0aWNsZUNvdW50KTtcclxuICAgIGNvbnN0IHBhcnRpY2xlcyA9IG5ldyBGbG9hdDMyQXJyYXkoXHJcbiAgICAgIEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIG1heE51bVBhcnRpY2xlcyAqIFBBUlRJQ0xFX0JZVEVfTEVOR1RIXHJcbiAgICApO1xyXG5cclxuICAgIGxldCBtYXhQYXJ0aWNsZVggPSAwO1xyXG4gICAgbGV0IG1pblBhcnRpY2xlWSA9IHJlc3VsdEhlaWdodDtcclxuICAgIHdoaWxlIChwYXJ0aWNsZUNvdW50IDwgbWF4TnVtUGFydGljbGVzKSB7XHJcbiAgICAgIC8vIHNlbGVjdCByYW5kb20gaW5kZXggZnJvbSBjYW5kaWF0ZXNcclxuICAgICAgY29uc3QgaW5kZXggPSB+fihNYXRoLnJhbmRvbSgpICogcGFydGljbGVDYW5kaWF0ZXNMaXN0Lmxlbmd0aCk7XHJcbiAgICAgIGNvbnN0IHsgeCwgeSB9ID0gcGFydGljbGVDYW5kaWF0ZXNMaXN0W2luZGV4XTtcclxuXHJcbiAgICAgIC8vIG92ZXJ3cml0ZSBpbmRleCB3aXRoIGxhc3QgZWxlbWVudCB0byBwcmV2ZW50IGRvdWJsZSBzZWxlY3Rpb24gb2YgcGFydGljbGVzXHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgIHBhcnRpY2xlQ2FuZGlhdGVzTGlzdFtpbmRleF0gPSBwYXJ0aWNsZUNhbmRpYXRlc0xpc3QucG9wKCkhO1xyXG5cclxuICAgICAgbWF4UGFydGljbGVYID0gTWF0aC5tYXgobWF4UGFydGljbGVYLCB4KTtcclxuICAgICAgbWluUGFydGljbGVZID0gTWF0aC5taW4obWluUGFydGljbGVZLCB5KTtcclxuICAgICAgY29uc3QgeyBkeCwgZHksIGF4LCBheSwgciwgZywgYiwgYSwgLi4ueHkgfSA9XHJcbiAgICAgICAgV3NUaGFub3NTZXJ2aWNlLmdldFBhcnRpY2xlSW5kaWNlc0ZvckJhc2UoXHJcbiAgICAgICAgICBwYXJ0aWNsZUNvdW50ICogUEFSVElDTEVfQllURV9MRU5HVEhcclxuICAgICAgICApO1xyXG4gICAgICBwYXJ0aWNsZXNbeHkueF0gPSB4O1xyXG4gICAgICBwYXJ0aWNsZXNbeHkueV0gPSB5ICsgcmVzdWx0SGVpZ2h0IC0gaGVpZ2h0O1xyXG4gICAgICBwYXJ0aWNsZXNbZHhdID0gMDtcclxuICAgICAgcGFydGljbGVzW2R5XSA9IDA7XHJcbiAgICAgIHBhcnRpY2xlc1theF0gPSAwO1xyXG4gICAgICBwYXJ0aWNsZXNbYXldID0gMDtcclxuXHJcbiAgICAgIGNvbnN0IGluZGljZXNJbWFnZSA9IFdzVGhhbm9zU2VydmljZS5nZXRDb2xvckluZGljZXNGb3JDb29yZCh4LCB5LCB3aWR0aCk7XHJcblxyXG4gICAgICBwYXJ0aWNsZXNbcl0gPSBpbWFnZURhdGEuZGF0YVtpbmRpY2VzSW1hZ2Uucl07XHJcbiAgICAgIHBhcnRpY2xlc1tnXSA9IGltYWdlRGF0YS5kYXRhW2luZGljZXNJbWFnZS5nXTtcclxuICAgICAgcGFydGljbGVzW2JdID0gaW1hZ2VEYXRhLmRhdGFbaW5kaWNlc0ltYWdlLmJdO1xyXG4gICAgICBwYXJ0aWNsZXNbYV0gPSBpbWFnZURhdGEuZGF0YVtpbmRpY2VzSW1hZ2UuYV07XHJcbiAgICAgIHBhcnRpY2xlQ291bnQrKztcclxuICAgIH1cclxuICAgIHJldHVybiB7IHBhcnRpY2xlcywgbWF4UGFydGljbGVYLCBtaW5QYXJ0aWNsZVkgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdldFhZRnJvbUZsb3dGaWVsZChcclxuICAgIG5vaXNlOiBTaW1wbGV4Tm9pc2UsXHJcbiAgICBzZWVkOiBudW1iZXIsXHJcbiAgICB4OiBudW1iZXIsXHJcbiAgICB5OiBudW1iZXJcclxuICApIHtcclxuICAgIGNvbnN0IHNhbXBsZVggPSBub2lzZS5zY2FsZWQzRCh4LCB5LCBzZWVkICsgMzMuMjMsIEZMT1dfRklFTERfUkVTKTtcclxuICAgIGNvbnN0IHNhbXBsZVkgPSBub2lzZS5zY2FsZWQzRCh4LCBzZWVkIC8gMTMuMjMsIHksIEZMT1dfRklFTERfUkVTKSAqIC0xO1xyXG4gICAgcmV0dXJuIFtzYW1wbGVYLCBzYW1wbGVZXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHN0YXJ0IHRoZSB2YXBvcml6ZSBlZmZlY3QuXHJcbiAgICpcclxuICAgKiBJdCdzIHJ1bm5pbmcgb3V0c2lkZSB0aGUgbmdab25lLlxyXG4gICAqL1xyXG4gIHZhcG9yaXplKGVsZW06IEhUTUxFbGVtZW50KTogT2JzZXJ2YWJsZTxBbmltYXRpb25TdGF0ZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB0aGlzLnZhcG9yaXplSW50ZXJuKGVsZW0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFwb3JpemVJbnRlcm4oZWxlbTogSFRNTEVsZW1lbnQpOiBPYnNlcnZhYmxlPEFuaW1hdGlvblN0YXRlPiB7XHJcbiAgICBlbGVtLnN0eWxlLm9wYWNpdHkgPSBlbGVtLnN0eWxlLm9wYWNpdHkgfHwgJzEnO1xyXG4gICAgZWxlbS5zdHlsZS50cmFuc2l0aW9uID0gYG9wYWNpdHkgJHtNYXRoLmZsb29yKFxyXG4gICAgICB0aGlzLnRoYW5vc09wdGlvbnMuYW5pbWF0aW9uTGVuZ3RoICogMC44XHJcbiAgICApfW1zIGVhc2Utb3V0YDtcclxuICAgIGNvbnN0IG5vaXNlID0gbmV3IFNpbXBsZXhOb2lzZSh7IGZyZXF1ZW5jeTogMC4wMSwgbWluOiAwIH0pO1xyXG4gICAgY29uc3Qgc2VlZCA9IG5ldyBEYXRlKCkuZ2V0RGF0ZSgpICogTWF0aC5yYW5kb20oKTtcclxuICAgIGNvbnN0IGh0bWwyQ2FudmFzUHJvbWlzZTogUHJvbWlzZTxIVE1MQ2FudmFzRWxlbWVudD4gPSBodG1sMmNhbnZhcyhlbGVtLCB7XHJcbiAgICAgIGJhY2tncm91bmRDb2xvcjogbnVsbCxcclxuICAgICAgc2NhbGU6IDEsXHJcbiAgICAgIGFsbG93VGFpbnQ6IHRydWUsXHJcbiAgICAgIHdpbmRvd0hlaWdodDogd2luZG93LmlubmVySGVpZ2h0LFxyXG4gICAgICB3aW5kb3dXaWR0aDogd2luZG93LmlubmVyV2lkdGgsXHJcbiAgICAgIHNjcm9sbFk6IC13aW5kb3cuc2Nyb2xsWSxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmcm9tKGh0bWwyQ2FudmFzUHJvbWlzZSkucGlwZShcclxuICAgICAgbWFwKChjYW52YXNGcm9tSHRtbEVsZW0pID0+IHtcclxuICAgICAgICBjb25zdCBjYW52YXNBbmRQYXJ0aWNsZXMgPSBXc1RoYW5vc1NlcnZpY2UucHJlcGFyZUNhbnZhc0ZvclZhcG9yaXplKFxyXG4gICAgICAgICAgY2FudmFzRnJvbUh0bWxFbGVtLFxyXG4gICAgICAgICAgdGhpcy50aGFub3NPcHRpb25zLm1heFBhcnRpY2xlQ291bnRcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHsgcmVzdWx0Q2FudmFzIH0gPSBjYW52YXNBbmRQYXJ0aWNsZXM7XHJcbiAgICAgICAgaWYgKGVsZW0ucGFyZW50RWxlbWVudCkge1xyXG4gICAgICAgICAgZWxlbS5wYXJlbnRFbGVtZW50LnN0eWxlLnBvc2l0aW9uID1cclxuICAgICAgICAgICAgZWxlbS5wYXJlbnRFbGVtZW50LnN0eWxlLnBvc2l0aW9uIHx8ICdyZWxhdGl2ZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3VsdENhbnZhcy5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XHJcbiAgICAgICAgcmVzdWx0Q2FudmFzLnN0eWxlLmxlZnQgPSAwICsgJ3B4JztcclxuICAgICAgICByZXN1bHRDYW52YXMuc3R5bGUudG9wID1cclxuICAgICAgICAgICctJyArIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0ICogKEhFSUdIVF9TQ0FMRSAtIDEpICsgJ3B4JztcclxuICAgICAgICByZXN1bHRDYW52YXMuc3R5bGUuekluZGV4ID0gJzIwMDAnO1xyXG4gICAgICAgIHJlc3VsdENhbnZhcy5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xyXG5cclxuICAgICAgICBlbGVtLmluc2VydEFkamFjZW50RWxlbWVudCgnYmVmb3JlYmVnaW4nLCByZXN1bHRDYW52YXMpO1xyXG4gICAgICAgIC8vIHRoaXMgc2hvdWxkIHN0YXJ0IHRoZSB0cmFuc2l0aW9uIGFib3ZlIGRlZmluZWRcclxuICAgICAgICBlbGVtLnN0eWxlLm9wYWNpdHkgPSAnMCc7XHJcbiAgICAgICAgcmV0dXJuIGNhbnZhc0FuZFBhcnRpY2xlcztcclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcCgoeyByZXN1bHRDYW52YXMsIHBhcnRpY2xlc0RhdGEgfSkgPT4ge1xyXG4gICAgICAgIGxldCB0aW1lID0gMDtcclxuICAgICAgICBjb25zdCB7IGFuaW1hdGlvbkxlbmd0aCwgbWF4UGFydGljbGVDb3VudCwgcGFydGljbGVBY2NlbGVyYXRpb24gfSA9XHJcbiAgICAgICAgICB0aGlzLnRoYW5vc09wdGlvbnM7XHJcbiAgICAgICAgcmV0dXJuIGludGVydmFsKDEwMDAgLyA2MCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpLnBpcGUoXHJcbiAgICAgICAgICB0aW1lSW50ZXJ2YWwoKSxcclxuICAgICAgICAgIHRhcCgoZGVsdGFUKSA9PiAodGltZSArPSBkZWx0YVQuaW50ZXJ2YWwpKSxcclxuICAgICAgICAgIG1hcChcclxuICAgICAgICAgICAgKGRlbHRhVCkgPT5cclxuICAgICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgICAgZGVsdGFUU2VjOiBkZWx0YVQuaW50ZXJ2YWwgLyAxMDAwLFxyXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uVDogdGltZSAvIGFuaW1hdGlvbkxlbmd0aCxcclxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiByZXN1bHRDYW52YXMud2lkdGgsXHJcbiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IHJlc3VsdENhbnZhcy5oZWlnaHQsXHJcbiAgICAgICAgICAgICAgfSBhcyBBbmltYXRpb25TdGF0ZSlcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICB0YXAoKGFuaW1hdGlvblN0YXRlKSA9PiB7XHJcbiAgICAgICAgICAgIFdzVGhhbm9zU2VydmljZS51cGRhdGVQYXJ0aWNsZXMoe1xyXG4gICAgICAgICAgICAgIHBhcnRpY2xlc0RhdGEsXHJcbiAgICAgICAgICAgICAgYW5pbWF0aW9uU3RhdGUsXHJcbiAgICAgICAgICAgICAgdGhhbm9zT3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uTGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgbWF4UGFydGljbGVDb3VudCxcclxuICAgICAgICAgICAgICAgIHBhcnRpY2xlQWNjZWxlcmF0aW9uLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgbm9pc2UsXHJcbiAgICAgICAgICAgICAgc2VlZCxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSByZXN1bHRDYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgICAgICAgaWYgKGNvbnRleHQpIHtcclxuICAgICAgICAgICAgICBXc1RoYW5vc1NlcnZpY2UuZHJhd1BhcnRpY2xlcyhjb250ZXh0LCBwYXJ0aWNsZXNEYXRhLnBhcnRpY2xlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgdGFrZVdoaWxlKChhbmltYXRpb25TdGF0ZSkgPT4gYW5pbWF0aW9uU3RhdGUuYW5pbWF0aW9uVCA8PSAxKSxcclxuICAgICAgICAgIHRhcCh7XHJcbiAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdENhbnZhcy5yZW1vdmUoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
259
+ }] }, { type: i0.NgZone }]; } });
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdGhhbm9zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3B1YmxpYy93cy10aGFub3Mvc3JjL2xpYi93cy10aGFub3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0QsT0FBTyxFQUFFLE9BQU8sSUFBSSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixJQUFJLEVBQ0osUUFBUSxFQUNSLEdBQUcsRUFFSCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsRUFDSCxZQUFZLEdBQ2IsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBR3BFLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQzFDLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQztBQUN2QixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDdEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBcUM1QixNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUVVLGFBQThCLEVBQzlCLE1BQWM7UUFEZCxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDOUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNyQixDQUFDO0lBRUksTUFBTSxDQUFDLHlCQUF5QixDQUFDLElBQVk7UUFDbkQsT0FBTztZQUNMLENBQUMsRUFBRSxJQUFJO1lBQ1AsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDO1lBQ1gsRUFBRSxFQUFFLElBQUksR0FBRyxD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YUFBYSxFQUFFO3dCQUNiLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixvQkFBb0I7cUJBQ3JCO29CQUNELEtBQUs7b0JBQ0wsSUFBSTtpQkFDTCxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxPQUFPLEVBQUU7b0JBQ1gsZUFBZSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUNqRTtZQUNILENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsRUFDN0QsR0FBRyxDQUFDO2dCQUNGLFFBQVEsRUFBRSxHQUFHLEVBQUU7b0JBQ2IsT0FBTyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQy9CLENBQUM7YUFDRixDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzs0R0FqVlUsZUFBZSxrQkFFaEIsdUJBQXVCO2dIQUZ0QixlQUFlLGNBREYsTUFBTTsyRkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQUc3QixNQUFNOzJCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGRlZmF1bHQgYXMgaHRtbDJjYW52YXMgfSBmcm9tICdodG1sMmNhbnZhcyc7XG5pbXBvcnQge1xuICBhbmltYXRpb25GcmFtZVNjaGVkdWxlcixcbiAgZnJvbSxcbiAgaW50ZXJ2YWwsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgc3dpdGNoTWFwLFxuICB0YWtlV2hpbGUsXG4gIHRhcCxcbiAgdGltZUludGVydmFsLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNpbXBsZXhOb2lzZSB9IGZyb20gJy4vc2ltcGxleC1ub2lzZSc7XG5pbXBvcnQgeyBXU19USEFOT1NfT1BUSU9OU19UT0tFTiB9IGZyb20gJy4vd3MtdGhhbm9zLW9wdGlvbnMudG9rZW4nO1xuaW1wb3J0IHR5cGUgeyBXc1RoYW5vc09wdGlvbnMgfSBmcm9tICcuL3dzLXRoYW5vcy5vcHRpb25zJztcblxuY29uc3QgUEFSVElDTEVfQllURV9MRU5HVEggPSAxMDtcbmNvbnN0IE1JTl9QQVJUSUNMRV9BTFBIQSA9IH5+KDI1NSAqIDAuMDEpO1xuY29uc3QgSEVJR0hUX1NDQUxFID0gNTtcbmNvbnN0IFdJRFRIX1NDQUxFID0gMjtcbmNvbnN0IEZMT1dfRklFTERfUkVTID0gMC4wNTtcblxuaW50ZXJmYWNlIFBhcnRpY2xlc0RhdGEge1xuICBwYXJ0aWNsZXM6IEZsb2F0MzJBcnJheTtcbiAgbWF4UGFydGljbGVYOiBudW1iZXI7XG4gIG1pblBhcnRpY2xlWTogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQW5pbWF0aW9uU3RhdGUge1xuICBkZWx0YVRTZWM6IG51bWJlcjtcbiAgYW5pbWF0aW9uVDogbnVtYmVyO1xuICBtYXhXaWR0aDogbnVtYmVyO1xuICBtYXhIZWlnaHQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFVwZGF0ZVBhcnRpY2xlUGFyYW1zIHtcbiAgcGFydGljbGVzRGF0YTogUGFydGljbGVzRGF0YTtcbiAgYW5pbWF0aW9uU3RhdGU6IEFuaW1hdGlvblN0YXRlO1xuICB0aGFub3NPcHRpb25zOiBXc1RoYW5vc09wdGlvbnM7XG4gIG5vaXNlOiBTaW1wbGV4Tm9pc2U7XG4gIHNlZWQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFBhcnRpY2xlSW5kaWNlcyB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICBkeDogbnVtYmVyO1xuICBkeTogbnVtYmVyO1xuICBheDogbnVtYmVyO1xuICBheTogbnVtYmVyO1xuICByOiBudW1iZXI7XG4gIGc6IG51bWJlcjtcbiAgYjogbnVtYmVyO1xuICBhOiBudW1iZXI7XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgV3NUaGFub3NTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChXU19USEFOT1NfT1BUSU9OU19UT0tFTilcbiAgICBwcml2YXRlIHRoYW5vc09wdGlvbnM6IFdzVGhhbm9zT3B0aW9ucyxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICkge31cblxuICBwcml2YXRlIHN0YXRpYyBnZXRQYXJ0aWNsZUluZGljZXNGb3JCYXNlKGJhc2U6IG51bWJlcik6IFBhcnRpY2xlSW5kaWNlcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IGJhc2UsXG4gICAgICB5OiBiYXNlICsgMSxcbiAgICAgIGR4OiBiYXNlICsgMixcbiAgICAgIGR5OiBiYXNlICsgMyxcbiAgICAgIGF4OiBiYXNlICsgNCxcbiAgICAgIGF5OiBiYXNlICsgNSxcbiAgICAgIHI6IGJhc2UgKyA2LFxuICAgICAgZzogYmFzZSArIDcsXG4gICAgICBiOiBiYXNlICsgOCxcbiAgICAgIGE6IGJhc2UgKyA5LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRDb2xvckluZGljZXNGb3JDb29yZChcbiAgICB4OiBudW1iZXIsXG4gICAgeTogbnVtYmVyLFxuICAgIHdpZHRoOiBudW1iZXJcbiAgKTogeyBhOiBudW1iZXI7IHI6IG51bWJlcjsgYjogbnVtYmVyOyBnOiBudW1iZXIgfSB7XG4gICAgY29uc3QgcmVkID0geSAqICh3aWR0aCAqIDQpICsgeCAqIDQ7XG4gICAgcmV0dXJuIHsgcjogcmVkLCBnOiByZWQgKyAxLCBiOiByZWQgKyAyLCBhOiByZWQgKyAzIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB1cGRhdGVQYXJ0aWNsZXMoe1xuICAgIHNlZWQsXG4gICAgbm9pc2UsXG4gICAgcGFydGljbGVzRGF0YSxcbiAgICB0aGFub3NPcHRpb25zLFxuICAgIGFuaW1hdGlvblN0YXRlLFxuICB9OiBVcGRhdGVQYXJ0aWNsZVBhcmFtcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgZGVsdGFUU2VjLCBhbmltYXRpb25ULCBtYXhXaWR0aCwgbWF4SGVpZ2h0IH0gPSBhbmltYXRpb25TdGF0ZTtcbiAgICBjb25zdCB7IHBhcnRpY2xlQWNjZWxlcmF0aW9uIH0gPSB0aGFub3NPcHRpb25zO1xuICAgIGNvbnN0IHsgcGFydGljbGVzLCBtYXhQYXJ0aWNsZVgsIG1pblBhcnRpY2xlWSB9ID0gcGFydGljbGVzRGF0YTtcblxuICAgIC8vIHRoZSB0aW1lIGlzIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSB2YXBvcml6YXRpb24gZnJvbnQuXG4gICAgY29uc3QgdGltZSA9IE1hdGguc2luKGFuaW1hdGlvblQgKiAoTWF0aC5QSSAvIDIpKSAqIDEuMTtcblxuICAgIGNvbnN0IHN0YXJ0QWNjZWxlcmF0ZVggPSBtYXhQYXJ0aWNsZVggLSB0aW1lICogbWF4UGFydGljbGVYO1xuICAgIGNvbnN0IHN0YXJ0QWNjZWxlcmF0ZVkgPSB0aW1lICogKG1heEhlaWdodCAtIG1pblBhcnRpY2xlWSkgKyBtaW5QYXJ0aWNsZVk7XG5cbiAgICBjb25zdCBsZW5ndGhZID0gbWF4SGVpZ2h0IC0gc3RhcnRBY2NlbGVyYXRlWTtcbiAgICBjb25zdCBhY2NlbGVyYXRlUmFkaXVzUG93ID1cbiAgICAgIHN0YXJ0QWNjZWxlcmF0ZVggKiBzdGFydEFjY2VsZXJhdGVYICsgbGVuZ3RoWSAqIGxlbmd0aFk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRpY2xlcy5sZW5ndGg7IGkgKz0gUEFSVElDTEVfQllURV9MRU5HVEgpIHtcbiAgICAgIGNvbnN0IHsgeCwgeSwgZHgsIGR5LCBheCwgYXksIGEgfSA9XG4gICAgICAgIFdzVGhhbm9zU2VydmljZS5nZXRQYXJ0aWNsZUluZGljZXNGb3JCYXNlKGkpO1xuICAgICAgY29uc3QgcGFydGljbGVYID0gcGFydGljbGVzW3hdO1xuICAgICAgY29uc3QgcGFydGljbGVZID0gcGFydGljbGVzW3ldO1xuXG4gICAgICAvLyBvbmx5IHVwZGF0ZSBwYXJ0aWNsZXMgdGhhdCBhcmUgaW5zaWRlIHZpZXcgYW5kIHZpc2libGVcbiAgICAgIGlmIChcbiAgICAgICAgcGFydGljbGVYID4gbWF4V2lkdGggfHxcbiAgICAgICAgcGFydGljbGVYIDwgMCB8fFxuICAgICAgICBwYXJ0aWNsZVkgPiBtYXhIZWlnaHQgfHxcbiAgICAgICAgcGFydGljbGVZIDwgMCB8fFxuICAgICAgICBwYXJ0aWNsZXNbYV0gPCBNSU5fUEFSVElDTEVfQUxQSEFcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCEoTWF0aC5hYnMocGFydGljbGVzW2F4XSkgPiAwIHx8IE1hdGguYWJzKHBhcnRpY2xlc1theV0pID4gMCkpIHtcbiAgICAgICAgbGV0IHBZTGVuZ3RoID0gbWF4SGVpZ2h0IC0gcGFydGljbGVZO1xuICAgICAgICBsZXQgcFhMZW5ndGggPSBwYXJ0aWNsZVg7XG5cbiAgICAgICAgLy8gd2UgY2FsY3VsYXRlIHNvbWUgcmFuZG9tIGxvb2tpbmcgbnVtYmVycyBhbmQgZnVuY3Rpb25zIHRvIGhhdmUgbmljZSBsb29raW5nIHZhcG9yaXppbmcgZnJvbnQgb2YgcGFydGljbGVzXG4gICAgICAgIC8vIHRvZG8gY29uc2lkZXIgdG8gdXNlIG5vaXNlO1xuICAgICAgICBwWExlbmd0aCArPSBNYXRoLnRhbigocFhMZW5ndGggLyAyMC4xMikgKiB0aW1lICsgc2VlZCkgKiAwLjU7XG4gICAgICAgIHBYTGVuZ3RoICs9IChwYXJ0aWNsZVggJSBkZWx0YVRTZWMpICogMC41O1xuICAgICAgICBwWExlbmd0aCArPVxuICAgICAgICAgIE1hdGguc2luKChwWExlbmd0aCAvIDMwICsgNzIzLjM5NCkgKiB0aW1lICsgc2VlZCAqIDEyLjUpICogMTE7XG4gICAgICAgIHBZTGVuZ3RoICs9IE1hdGgudGFuKChwWUxlbmd0aCAvIDAuNDUpICogdGltZSArIHNlZWQgKiAxLjUpICogMC41O1xuICAgICAgICBwWUxlbmd0aCArPVxuICAgICAgICAgIE1hdGguY29zKChwWUxlbmd0aCAvIDEwMCArIDIzMjMuMjM0KSAqIHRpbWUgKyBzZWVkICogNDU2LjEpICogMjM7XG5cbiAgICAgICAgY29uc3QgcExlbmd0aCA9IHBYTGVuZ3RoICogcFhMZW5ndGggKyBwWUxlbmd0aCAqIHBZTGVuZ3RoO1xuICAgICAgICBpZiAocExlbmd0aCA+IGFjY2VsZXJhdGVSYWRpdXNQb3cpIHtcbiAgICAgICAgICBwYXJ0aWNsZXNbYXhdID0gTWF0aC5yYW5kb20oKTtcbiAgICAgICAgICBwYXJ0aWNsZXNbYXldID0gTWF0aC5yYW5kb20oKSAqIC0xO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB1c2Ugbm9pc2UgdG8gZmxvdyBhbG9uZyB2ZWxvY2l0eSBmaWVsZFxuICAgICAgICBjb25zdCBmbG93RmllbGRBY2MgPSBXc1RoYW5vc1NlcnZpY2UuZ2V0WFlGcm9tRmxvd0ZpZWxkKFxuICAgICAgICAgIG5vaXNlLFxuICAgICAgICAgIHNlZWQsXG4gICAgICAgICAgcGFydGljbGVYLFxuICAgICAgICAgIHBhcnRpY2xlWVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBhY2NlbGVyYXRpb25YID0gZmxvd0ZpZWxkQWNjWzBdO1xuICAgICAgICBjb25zdCBhY2NlbGVyYXRpb25ZID0gZmxvd0ZpZWxkQWNjWzFdO1xuICAgICAgICBwYXJ0aWNsZXNbYXhdICs9IGFjY2VsZXJhdGlvblg7XG4gICAgICAgIHBhcnRpY2xlc1theV0gKz0gYWNjZWxlcmF0aW9uWTtcbiAgICAgIH1cblxuICAgICAgLy8gKiBNYXRoLnBvdygxICsgYW5pbWF0aW9uVCwgNClcbiAgICAgIHBhcnRpY2xlc1tkeF0gKz0gcGFydGljbGVzW2F4XSAqIHBhcnRpY2xlQWNjZWxlcmF0aW9uICogZGVsdGFUU2VjO1xuICAgICAgcGFydGljbGVzW2R5XSArPSBwYXJ0aWNsZXNbYXldICogcGFydGljbGVBY2NlbGVyYXRpb24gKiBkZWx0YVRTZWM7XG4gICAgICBwYXJ0aWNsZXNbeF0gKz0gcGFydGljbGVzW2R4XSAqIGRlbHRhVFNlYztcbiAgICAgIHBhcnRpY2xlc1t5XSArPSBwYXJ0aWNsZXNbZHldICogZGVsdGFUU2VjO1xuICAgICAgLy8gZmFkZSBwYXJ0aWNsZSBvdXQgKCB2ZXJ5IGxhdGUpO1xuICAgICAgcGFydGljbGVzW2FdICo9IDEgLSBNYXRoLnBvdyhhbmltYXRpb25ULCAxNSk7IC8vIDI1NSAtIE1hdGguc3FydChwYXJ0aWNsZXNbZHhdICogcGFydGljbGVzW2R4XSArIHBhcnRpY2xlc1tkeV0gKiBwYXJ0aWNsZXNbZHldKSAvIDEuMjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBkcmF3UGFydGljbGVzKFxuICAgIGRyYXdDdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgICBwYXJ0aWNsZXM6IEZsb2F0MzJBcnJheVxuICApOiB2b2lkIHtcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGRyYXdDdHguY2FudmFzO1xuICAgIGRyYXdDdHguY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgIGNvbnN0IGltYWdlID0gZHJhd0N0eC5nZXRJbWFnZURhdGEoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgY29uc3QgaW1hZ2VEYXRhID0gaW1hZ2UuZGF0YTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRpY2xlcy5sZW5ndGg7IGkgKz0gUEFSVElDTEVfQllURV9MRU5HVEgpIHtcbiAgICAgIGNvbnN0IHBhcnRpY2xlWCA9IHBhcnRpY2xlc1tpXTtcbiAgICAgIGNvbnN0IHBhcnRpY2xlWSA9IHBhcnRpY2xlc1tpICsgMV07XG4gICAgICBjb25zdCBwSSA9IFdzVGhhbm9zU2VydmljZS5nZXRQYXJ0aWNsZUluZGljZXNGb3JCYXNlKGkpO1xuICAgICAgaWYgKFxuICAgICAgICBwYXJ0aWNsZVggPiB3aWR0aCB8fFxuICAgICAgICBwYXJ0aWNsZVggPCAwIHx8XG4gICAgICAgIHBhcnRpY2xlWSA+IGhlaWdodCB8fFxuICAgICAgICBwYXJ0aWNsZVkgPCAwIHx8XG4gICAgICAgIHBhcnRpY2xlc1twSS5hXSA8IE1JTl9QQVJUSUNMRV9BTFBIQVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgeyByLCBnLCBiLCBhIH0gPSBXc1RoYW5vc1NlcnZpY2UuZ2V0Q29sb3JJbmRpY2VzRm9yQ29vcmQoXG4gICAgICAgIH5+cGFydGljbGVzW3BJLnhdLFxuICAgICAgICB+fnBhcnRpY2xlc1twSS55XSxcbiAgICAgICAgd2lkdGhcbiAgICAgICk7XG4gICAgICBpbWFnZURhdGFbcl0gPSB+fnBhcnRpY2xlc1twSS5yXTtcbiAgICAgIGltYWdlRGF0YVtnXSA9IH5+cGFydGljbGVzW3BJLmddO1xuICAgICAgaW1hZ2VEYXRhW2JdID0gfn5wYXJ0aWNsZXNbcEkuYl07XG4gICAgICBpbWFnZURhdGFbYV0gPSB+fnBhcnRpY2xlc1twSS5hXTtcbiAgICB9XG4gICAgZHJhd0N0eC5wdXRJbWFnZURhdGEoaW1hZ2UsIDAsIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcHJlcGFyZUNhbnZhc0ZvclZhcG9yaXplKFxuICAgIGRpdkNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQsXG4gICAgbWF4UGFydGljbGVDb3VudDogbnVtYmVyXG4gICk6IHtcbiAgICBwYXJ0aWNsZXNEYXRhOiBQYXJ0aWNsZXNEYXRhO1xuICAgIHJlc3VsdENhbnZhczogSFRNTENhbnZhc0VsZW1lbnQ7XG4gIH0ge1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZGl2Q2FudmFzO1xuXG4gICAgLy8gc2NhbGUgcmVzdWx0IGNhbnZhcyB0byBoYXZlIG1vcmUgcm9vbSB0byBkcmF3IHBhcnRpY2xlcyB3aGlsZSB2YXBvcml6aW5nO1xuICAgIGNvbnN0IHJlc3VsdEhlaWdodCA9IGhlaWdodCAqIEhFSUdIVF9TQ0FMRTtcbiAgICBjb25zdCByZXN1bHRXaWR0aCA9IHdpZHRoICogV0lEVEhfU0NBTEU7XG4gICAgY29uc3QgcmVzdWx0Q2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIHJlc3VsdENhbnZhcy5oZWlnaHQgPSByZXN1bHRIZWlnaHQ7XG4gICAgcmVzdWx0Q2FudmFzLndpZHRoID0gcmVzdWx0V2lkdGg7XG5cbiAgICBjb25zdCBpbWFnZURhdGEgPSBkaXZDYW52YXNcbiAgICAgIC5nZXRDb250ZXh0KCcyZCcpXG4gICAgICA/LmdldEltYWdlRGF0YSgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICBpZiAoaW1hZ2VEYXRhID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGdldCBpbWFnZSBkYXRhIGZyb20gY2FudmFzJyk7XG4gICAgfVxuICAgIGNvbnN0IHBhcnRpY2xlc0RhdGEgPSBXc1RoYW5vc1NlcnZpY2UuY3JlYXRlUGFydGljbGVzRm9ySW1hZ2VEYXRhKFxuICAgICAgaW1hZ2VEYXRhLFxuICAgICAgbWF4UGFydGljbGVDb3VudCxcbiAgICAgIHJlc3VsdEhlaWdodFxuICAgICk7XG4gICAgcmV0dXJuIHsgcmVzdWx0Q2FudmFzLCBwYXJ0aWNsZXNEYXRhIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVQYXJ0aWNsZXNGb3JJbWFnZURhdGEoXG4gICAgaW1hZ2VEYXRhOiBJbWFnZURhdGEsXG4gICAgbWF4UGFydGljbGVDb3VudDogbnVtYmVyLFxuICAgIHJlc3VsdEhlaWdodDogbnVtYmVyXG4gICk6IHsgbWluUGFydGljbGVZOiBudW1iZXI7IG1heFBhcnRpY2xlWDogbnVtYmVyOyBwYXJ0aWNsZXM6IEZsb2F0MzJBcnJheSB9IHtcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGltYWdlRGF0YTtcbiAgICBsZXQgcGFydGljbGVDYW5kaWRhdGVzID0gMDtcbiAgICBsZXQgcGFydGljbGVDb3VudCA9IDA7XG5cbiAgICBjb25zdCBwYXJ0aWNsZUNhbmRpYXRlc0xpc3Q6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfVtdID0gW107XG4gICAgZm9yIChsZXQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykge1xuICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7XG4gICAgICAgIGNvbnN0IHsgYSB9ID0gV3NUaGFub3NTZXJ2aWNlLmdldENvbG9ySW5kaWNlc0ZvckNvb3JkKHgsIHksIHdpZHRoKTtcbiAgICAgICAgaWYgKGltYWdlRGF0YS5kYXRhW2FdID49IE1JTl9QQVJUSUNMRV9BTFBIQSkge1xuICAgICAgICAgIHBhcnRpY2xlQ2FuZGlkYXRlcysrO1xuICAgICAgICAgIHBhcnRpY2xlQ2FuZGlhdGVzTGlzdC5wdXNoKHsgeCwgeSB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG1heE51bVBhcnRpY2xlcyA9IE1hdGgubWluKHBhcnRpY2xlQ2FuZGlkYXRlcywgbWF4UGFydGljbGVDb3VudCk7XG4gICAgY29uc3QgcGFydGljbGVzID0gbmV3IEZsb2F0MzJBcnJheShcbiAgICAgIEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIG1heE51bVBhcnRpY2xlcyAqIFBBUlRJQ0xFX0JZVEVfTEVOR1RIXG4gICAgKTtcblxuICAgIGxldCBtYXhQYXJ0aWNsZVggPSAwO1xuICAgIGxldCBtaW5QYXJ0aWNsZVkgPSByZXN1bHRIZWlnaHQ7XG4gICAgd2hpbGUgKHBhcnRpY2xlQ291bnQgPCBtYXhOdW1QYXJ0aWNsZXMpIHtcbiAgICAgIC8vIHNlbGVjdCByYW5kb20gaW5kZXggZnJvbSBjYW5kaWF0ZXNcbiAgICAgIGNvbnN0IGluZGV4ID0gfn4oTWF0aC5yYW5kb20oKSAqIHBhcnRpY2xlQ2FuZGlhdGVzTGlzdC5sZW5ndGgpO1xuICAgICAgY29uc3QgeyB4LCB5IH0gPSBwYXJ0aWNsZUNhbmRpYXRlc0xpc3RbaW5kZXhdO1xuXG4gICAgICAvLyBvdmVyd3JpdGUgaW5kZXggd2l0aCBsYXN0IGVsZW1lbnQgdG8gcHJldmVudCBkb3VibGUgc2VsZWN0aW9uIG9mIHBhcnRpY2xlc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgIHBhcnRpY2xlQ2FuZGlhdGVzTGlzdFtpbmRleF0gPSBwYXJ0aWNsZUNhbmRpYXRlc0xpc3QucG9wKCkhO1xuXG4gICAgICBtYXhQYXJ0aWNsZVggPSBNYXRoLm1heChtYXhQYXJ0aWNsZVgsIHgpO1xuICAgICAgbWluUGFydGljbGVZID0gTWF0aC5taW4obWluUGFydGljbGVZLCB5KTtcbiAgICAgIGNvbnN0IHsgZHgsIGR5LCBheCwgYXksIHIsIGcsIGIsIGEsIC4uLnh5IH0gPVxuICAgICAgICBXc1RoYW5vc1NlcnZpY2UuZ2V0UGFydGljbGVJbmRpY2VzRm9yQmFzZShcbiAgICAgICAgICBwYXJ0aWNsZUNvdW50ICogUEFSVElDTEVfQllURV9MRU5HVEhcbiAgICAgICAgKTtcbiAgICAgIHBhcnRpY2xlc1t4eS54XSA9IHg7XG4gICAgICBwYXJ0aWNsZXNbeHkueV0gPSB5ICsgcmVzdWx0SGVpZ2h0IC0gaGVpZ2h0O1xuICAgICAgcGFydGljbGVzW2R4XSA9IDA7XG4gICAgICBwYXJ0aWNsZXNbZHldID0gMDtcbiAgICAgIHBhcnRpY2xlc1theF0gPSAwO1xuICAgICAgcGFydGljbGVzW2F5XSA9IDA7XG5cbiAgICAgIGNvbnN0IGluZGljZXNJbWFnZSA9IFdzVGhhbm9zU2VydmljZS5nZXRDb2xvckluZGljZXNGb3JDb29yZCh4LCB5LCB3aWR0aCk7XG5cbiAgICAgIHBhcnRpY2xlc1tyXSA9IGltYWdlRGF0YS5kYXRhW2luZGljZXNJbWFnZS5yXTtcbiAgICAgIHBhcnRpY2xlc1tnXSA9IGltYWdlRGF0YS5kYXRhW2luZGljZXNJbWFnZS5nXTtcbiAgICAgIHBhcnRpY2xlc1tiXSA9IGltYWdlRGF0YS5kYXRhW2luZGljZXNJbWFnZS5iXTtcbiAgICAgIHBhcnRpY2xlc1thXSA9IGltYWdlRGF0YS5kYXRhW2luZGljZXNJbWFnZS5hXTtcbiAgICAgIHBhcnRpY2xlQ291bnQrKztcbiAgICB9XG4gICAgcmV0dXJuIHsgcGFydGljbGVzLCBtYXhQYXJ0aWNsZVgsIG1pblBhcnRpY2xlWSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0WFlGcm9tRmxvd0ZpZWxkKFxuICAgIG5vaXNlOiBTaW1wbGV4Tm9pc2UsXG4gICAgc2VlZDogbnVtYmVyLFxuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXJcbiAgKSB7XG4gICAgY29uc3Qgc2FtcGxlWCA9IG5vaXNlLnNjYWxlZDNEKHgsIHksIHNlZWQgKyAzMy4yMywgRkxPV19GSUVMRF9SRVMpO1xuICAgIGNvbnN0IHNhbXBsZVkgPSBub2lzZS5zY2FsZWQzRCh4LCBzZWVkIC8gMTMuMjMsIHksIEZMT1dfRklFTERfUkVTKSAqIC0xO1xuICAgIHJldHVybiBbc2FtcGxlWCwgc2FtcGxlWV07XG4gIH1cblxuICAvKipcbiAgICogc3RhcnQgdGhlIHZhcG9yaXplLWVmZmVjdC5cbiAgICpcbiAgICogSXQncyBydW5uaW5nIG91dHNpZGUgdGhlIG5nWm9uZS5cbiAgICovXG4gIHZhcG9yaXplKGVsZW06IEhUTUxFbGVtZW50KTogT2JzZXJ2YWJsZTxBbmltYXRpb25TdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB0aGlzLnZhcG9yaXplSW50ZXJuKGVsZW0pKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFwb3JpemVJbnRlcm4oZWxlbTogSFRNTEVsZW1lbnQpOiBPYnNlcnZhYmxlPEFuaW1hdGlvblN0YXRlPiB7XG4gICAgZWxlbS5zdHlsZS5vcGFjaXR5ID0gZWxlbS5zdHlsZS5vcGFjaXR5IHx8ICcxJztcbiAgICBlbGVtLnN0eWxlLnRyYW5zaXRpb24gPSBgb3BhY2l0eSAke01hdGguZmxvb3IoXG4gICAgICB0aGlzLnRoYW5vc09wdGlvbnMuYW5pbWF0aW9uTGVuZ3RoICogMC44XG4gICAgKX1tcyBlYXNlLW91dGA7XG4gICAgY29uc3Qgbm9pc2UgPSBuZXcgU2ltcGxleE5vaXNlKHsgZnJlcXVlbmN5OiAwLjAxLCBtaW46IDAgfSk7XG4gICAgY29uc3Qgc2VlZCA9IG5ldyBEYXRlKCkuZ2V0RGF0ZSgpICogTWF0aC5yYW5kb20oKTtcbiAgICBjb25zdCBodG1sMkNhbnZhc1Byb21pc2U6IFByb21pc2U8SFRNTENhbnZhc0VsZW1lbnQ+ID0gaHRtbDJjYW52YXMoZWxlbSwge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiBudWxsLFxuICAgICAgc2NhbGU6IDEsXG4gICAgICBhbGxvd1RhaW50OiB0cnVlLFxuICAgICAgd2luZG93SGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHQsXG4gICAgICB3aW5kb3dXaWR0aDogd2luZG93LmlubmVyV2lkdGgsXG4gICAgICBzY3JvbGxZOiAtd2luZG93LnNjcm9sbFksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZnJvbShodG1sMkNhbnZhc1Byb21pc2UpLnBpcGUoXG4gICAgICBtYXAoKGNhbnZhc0Zyb21IdG1sRWxlbSkgPT4ge1xuICAgICAgICBjb25zdCBjYW52YXNBbmRQYXJ0aWNsZXMgPSBXc1RoYW5vc1NlcnZpY2UucHJlcGFyZUNhbnZhc0ZvclZhcG9yaXplKFxuICAgICAgICAgIGNhbnZhc0Zyb21IdG1sRWxlbSxcbiAgICAgICAgICB0aGlzLnRoYW5vc09wdGlvbnMubWF4UGFydGljbGVDb3VudFxuICAgICAgICApO1xuICAgICAgICBjb25zdCB7IHJlc3VsdENhbnZhcyB9ID0gY2FudmFzQW5kUGFydGljbGVzO1xuICAgICAgICBpZiAoZWxlbS5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgZWxlbS5wYXJlbnRFbGVtZW50LnN0eWxlLnBvc2l0aW9uID1cbiAgICAgICAgICAgIGVsZW0ucGFyZW50RWxlbWVudC5zdHlsZS5wb3NpdGlvbiB8fCAncmVsYXRpdmUnO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdENhbnZhcy5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIHJlc3VsdENhbnZhcy5zdHlsZS5sZWZ0ID0gMCArICdweCc7XG4gICAgICAgIHJlc3VsdENhbnZhcy5zdHlsZS50b3AgPVxuICAgICAgICAgICctJyArIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0ICogKEhFSUdIVF9TQ0FMRSAtIDEpICsgJ3B4JztcbiAgICAgICAgcmVzdWx0Q2FudmFzLnN0eWxlLnpJbmRleCA9ICcyMDAwJztcbiAgICAgICAgcmVzdWx0Q2FudmFzLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG5cbiAgICAgICAgZWxlbS5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2JlZm9yZWJlZ2luJywgcmVzdWx0Q2FudmFzKTtcbiAgICAgICAgLy8gdGhpcyBzaG91bGQgc3RhcnQgdGhlIHRyYW5zaXRpb24gYWJvdmUgZGVmaW5lZFxuICAgICAgICBlbGVtLnN0eWxlLm9wYWNpdHkgPSAnMCc7XG4gICAgICAgIHJldHVybiBjYW52YXNBbmRQYXJ0aWNsZXM7XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoeyByZXN1bHRDYW52YXMsIHBhcnRpY2xlc0RhdGEgfSkgPT4ge1xuICAgICAgICBsZXQgdGltZSA9IDA7XG4gICAgICAgIGNvbnN0IHsgYW5pbWF0aW9uTGVuZ3RoLCBtYXhQYXJ0aWNsZUNvdW50LCBwYXJ0aWNsZUFjY2VsZXJhdGlvbiB9ID1cbiAgICAgICAgICB0aGlzLnRoYW5vc09wdGlvbnM7XG4gICAgICAgIHJldHVybiBpbnRlcnZhbCgxMDAwIC8gNjAsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKS5waXBlKFxuICAgICAgICAgIHRpbWVJbnRlcnZhbCgpLFxuICAgICAgICAgIHRhcCgoZGVsdGFUKSA9PiAodGltZSArPSBkZWx0YVQuaW50ZXJ2YWwpKSxcbiAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAoZGVsdGFUKSA9PlxuICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgIGRlbHRhVFNlYzogZGVsdGFULmludGVydmFsIC8gMTAwMCxcbiAgICAgICAgICAgICAgICBhbmltYXRpb25UOiB0aW1lIC8gYW5pbWF0aW9uTGVuZ3RoLFxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiByZXN1bHRDYW52YXMud2lkdGgsXG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiByZXN1bHRDYW52YXMuaGVpZ2h0LFxuICAgICAgICAgICAgICB9IGFzIEFuaW1hdGlvblN0YXRlKVxuICAgICAgICAgICksXG4gICAgICAgICAgdGFwKChhbmltYXRpb25TdGF0ZSkgPT4ge1xuICAgICAgICAgICAgV3NUaGFub3NTZXJ2aWNlLnVwZGF0ZVBhcnRpY2xlcyh7XG4gICAgICAgICAgICAgIHBhcnRpY2xlc0RhdGEsXG4gICAgICAgICAgICAgIGFuaW1hdGlvblN0YXRlLFxuICAgICAgICAgICAgICB0aGFub3NPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uTGVuZ3RoLFxuICAgICAgICAgICAgICAgIG1heFBhcnRpY2xlQ291bnQsXG4gICAgICAgICAgICAgICAgcGFydGljbGVBY2NlbGVyYXRpb24sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG5vaXNlLFxuICAgICAgICAgICAgICBzZWVkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gcmVzdWx0Q2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICAgICAgICBXc1RoYW5vc1NlcnZpY2UuZHJhd1BhcnRpY2xlcyhjb250ZXh0LCBwYXJ0aWNsZXNEYXRhLnBhcnRpY2xlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFrZVdoaWxlKChhbmltYXRpb25TdGF0ZSkgPT4gYW5pbWF0aW9uU3RhdGUuYW5pbWF0aW9uVCA8PSAxKSxcbiAgICAgICAgICB0YXAoe1xuICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdENhbnZhcy5yZW1vdmUoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
package/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './lib/ws-thanos.service';
2
2
  export * from './lib/ws-thanos.directive';
3
- export * from './lib/ws-thanos.options';
4
3
  export * from './lib/ws-thanos-options.token';
4
+ export * from './lib/ws-thanos.options';
5
5
  export * from './lib/create-ws-thanos-options';
6
+ export * from './lib/simplex-noise';
@@ -0,0 +1,9 @@
1
+ export interface SimplexNoiseOptions {
2
+ amplitude: number;
3
+ frequency: number;
4
+ max: number;
5
+ min: number;
6
+ octaves: number;
7
+ persistence: number;
8
+ random: () => number;
9
+ }
@@ -1,14 +1,6 @@
1
- export interface Options {
2
- amplitude: number;
3
- frequency: number;
4
- max: number;
5
- min: number;
6
- octaves: number;
7
- persistence: number;
8
- random: () => number;
9
- }
1
+ import type { SimplexNoiseOptions } from './simplex-noise-options';
10
2
  export declare class SimplexNoise {
11
- constructor(options?: Partial<Options>);
3
+ constructor(options?: Partial<SimplexNoiseOptions>);
12
4
  static G3: number;
13
5
  static GRAD3D: number[][];
14
6
  readonly amplitude: number;
@@ -1,4 +1,4 @@
1
1
  import { InjectionToken, Provider } from '@angular/core';
2
- import { WsThanosOptions } from './ws-thanos.options';
2
+ import type { WsThanosOptions } from './ws-thanos.options';
3
3
  export declare const WS_THANOS_OPTIONS_TOKEN: InjectionToken<WsThanosOptions>;
4
4
  export declare function provideWsThanosOptions(options?: Partial<WsThanosOptions>): Provider;
@@ -1,6 +1,6 @@
1
1
  import { ElementRef, NgZone, OnDestroy } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
- import { WsThanosOptions } from './ws-thanos.options';
3
+ import type { WsThanosOptions } from './ws-thanos.options';
4
4
  import { WsThanosService } from './ws-thanos.service';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class WsThanosDirective implements OnDestroy {
@@ -1,6 +1,6 @@
1
1
  import { NgZone } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
- import { WsThanosOptions } from './ws-thanos.options';
3
+ import type { WsThanosOptions } from './ws-thanos.options';
4
4
  import * as i0 from "@angular/core";
5
5
  interface AnimationState {
6
6
  deltaTSec: number;
@@ -10,8 +10,8 @@ interface AnimationState {
10
10
  }
11
11
  export declare class WsThanosService {
12
12
  private thanosOptions;
13
- private _ngZone;
14
- constructor(thanosOptions: WsThanosOptions, _ngZone: NgZone);
13
+ private ngZone;
14
+ constructor(thanosOptions: WsThanosOptions, ngZone: NgZone);
15
15
  private static getParticleIndicesForBase;
16
16
  private static getColorIndicesForCoord;
17
17
  private static updateParticles;
@@ -20,7 +20,7 @@ export declare class WsThanosService {
20
20
  private static createParticlesForImageData;
21
21
  private static getXYFromFlowField;
22
22
  /**
23
- * start the vaporize effect.
23
+ * start the vaporize-effect.
24
24
  *
25
25
  * It's running outside the ngZone.
26
26
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wolsok/thanos",
3
- "version": "2.0.0",
3
+ "version": "3.0.0",
4
4
  "description": "wolsok's implementation of a cool thanos vaporizing effect for destroying dom elements",
5
5
  "bugs": {
6
6
  "url": "https://github.com/WolfSoko/wol-sok-mono/issues"
@@ -22,16 +22,16 @@
22
22
  "Marvel"
23
23
  ],
24
24
  "peerDependencies": {
25
- "@angular/common": "^14.1.0",
26
- "@angular/core": "^14.1.0",
25
+ "@angular/common": "^14.2.9",
26
+ "@angular/core": "^14.2.9",
27
27
  "html2canvas": "^1.4.1",
28
- "@angular/platform-browser": "14.0.1",
29
- "rxjs": "7.5.4",
30
- "zone.js": "0.11.4",
31
- "@angular/platform-browser-dynamic": "14.0.1"
28
+ "@angular/platform-browser": "14.2.9",
29
+ "rxjs": "7.5.7",
30
+ "zone.js": "0.11.8",
31
+ "@angular/platform-browser-dynamic": "14.2.9"
32
32
  },
33
33
  "dependencies": {
34
- "tslib": "^2.3.0"
34
+ "tslib": "2.4.1"
35
35
  },
36
36
  "module": "esm2020/wolsok-thanos.mjs",
37
37
  "es2020": "esm2020/wolsok-thanos.mjs",
package/README.md DELETED
@@ -1,107 +0,0 @@
1
- # @wolsok/thanos
2
-
3
- An angular directive that vaporizes your DOM Elements like Thanos. This library is generated with [Nx](https://nx.dev).
4
-
5
- #### Live Demo:
6
- Click the technology cards on https://angularexamples.wolsok.de
7
-
8
- ## Usage
9
-
10
- #### Dependencies:
11
-
12
- To install run
13
-
14
- ```
15
- npm install @wolsok/thanos --save
16
- ```
17
- #### Prepare your angular app:
18
-
19
- Add `WsThanosDirective` to your module/standalone component.
20
-
21
- ```typescript
22
- @NgModule_or_@Component({
23
- ...,
24
- imports: [
25
- ...
26
- WsThanosDirective
27
- ],
28
- providers: [
29
- // override the default options
30
- provideWsThanosOptions({
31
- animationLength: 2000,
32
- particleAcceleration: 50,
33
- maxParticleCount: 10000
34
- }),
35
- ]
36
- })
37
- ```
38
-
39
- You can also add WsThanosDirective to your shared module exports.
40
-
41
- ```typescript
42
- @NgModule({
43
- imports: [WsThanosDirective],
44
- exports: [
45
- WsThanosDirective
46
- ]
47
- })
48
- export class SharedModule {
49
- }
50
- ```
51
-
52
- #### `WsThanosOptions` to configure ws-thanos:
53
- | field | type | default | description |
54
- | -------------------- | :----: | ------: | ---------------------------------: |
55
- | animationLength | number | 5000 | the animation length in ms |
56
- | maxParticleCount | number | 400000 | max amount of particles |
57
- | particleAcceleration | number | 30 | speed of the particle acceleration |
58
-
59
- ### `WsThanosDirective` usage
60
-
61
- Use the directive `wsThanos` on your element and reference it using `@ViewChild(WsThanosDirective)` in your component or
62
- directly in html via template ref:
63
-
64
- ```
65
- <div wsThanos
66
- #thanos="thanos"
67
- (wsThanosComplete)=onComplete()>
68
- This div will be vaporized on click
69
- </div>
70
- <button (click)="thanos.vaporize(removeElement)">
71
- ```
72
-
73
- ### `WsThanosService` usage
74
-
75
- Inject the 'WsThanosService' into your class. Call 'vaporize()' and subscribe to it.
76
-
77
- ## Collaboration
78
-
79
- Send issues or PRs to https://github.com/wolsok/wol-sok-mono
80
-
81
- Run `nx test ws-thanos` to execute unit tests.
82
-
83
- ## Migration
84
- From `1.0.1` to `2.0.0`
85
- * Replace `WsThanosModule` in imports and exports with `WsThanosDirective`
86
- * Replace `WsThanosModule.forRoot(options)`:
87
- Before:
88
- ```typescript
89
- @NgModule({
90
- imports: [WsThanosModule.forRoot(options)]
91
- })
92
- ```
93
- After:
94
- ```typescript
95
- @NgModule({
96
- imports: [WsThanosDirective],
97
- providers: [
98
- provideWsThanosOptions(options)
99
- ]
100
- })
101
- ```
102
-
103
- From: `sc-thanos` to `@wolsok/thanos`
104
- * Remove old version `npm uninstall sc-thanos`
105
- * Install `npm install @wolsok/thanos --save`
106
- * The earlier name of this component was `scThanos`. Just switch to `wsThanos`
107
-