@skyux/colorpicker 7.1.0 → 7.1.2

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.
@@ -1,4 +1,4 @@
1
- var _SkyColorpickerSliderDirective_instances, _SkyColorpickerSliderDirective_listenerMove, _SkyColorpickerSliderDirective_listenerStop, _SkyColorpickerSliderDirective_setCursor;
1
+ var _SkyColorpickerSliderDirective_instances, _SkyColorpickerSliderDirective_listenerMove, _SkyColorpickerSliderDirective_listenerStop, _SkyColorpickerSliderDirective_el, _SkyColorpickerSliderDirective_setCursor;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
3
  // spell-checker:ignore Colorpicker
4
4
  import { Directive, EventEmitter, HostListener, Input, Output, } from '@angular/core';
@@ -8,11 +8,12 @@ import * as i0 from "@angular/core";
8
8
  */
9
9
  export class SkyColorpickerSliderDirective {
10
10
  constructor(el) {
11
- this.el = el;
12
11
  _SkyColorpickerSliderDirective_instances.add(this);
13
12
  this.newColorContrast = new EventEmitter();
14
13
  _SkyColorpickerSliderDirective_listenerMove.set(this, void 0);
15
14
  _SkyColorpickerSliderDirective_listenerStop.set(this, void 0);
15
+ _SkyColorpickerSliderDirective_el.set(this, void 0);
16
+ __classPrivateFieldSet(this, _SkyColorpickerSliderDirective_el, el, "f");
16
17
  __classPrivateFieldSet(this, _SkyColorpickerSliderDirective_listenerMove, (event) => {
17
18
  this.move(event);
18
19
  }, "f");
@@ -41,20 +42,20 @@ export class SkyColorpickerSliderDirective {
41
42
  /* Ignoring event.touches as tests are not run on a touch device. */
42
43
  /* istanbul ignore next */
43
44
  return (('pageX' in event ? event.pageX : event.touches[0].pageX) -
44
- this.el.nativeElement.getBoundingClientRect().left -
45
+ __classPrivateFieldGet(this, _SkyColorpickerSliderDirective_el, "f").nativeElement.getBoundingClientRect().left -
45
46
  window.pageXOffset);
46
47
  }
47
48
  getY(event) {
48
49
  /* Ignoring event.touches as tests are not run on a touch device. */
49
50
  /* istanbul ignore next */
50
51
  return (('pageY' in event ? event.pageY : event.touches[0].pageY) -
51
- this.el.nativeElement.getBoundingClientRect().top -
52
+ __classPrivateFieldGet(this, _SkyColorpickerSliderDirective_el, "f").nativeElement.getBoundingClientRect().top -
52
53
  window.pageYOffset);
53
54
  }
54
55
  }
55
- _SkyColorpickerSliderDirective_listenerMove = new WeakMap(), _SkyColorpickerSliderDirective_listenerStop = new WeakMap(), _SkyColorpickerSliderDirective_instances = new WeakSet(), _SkyColorpickerSliderDirective_setCursor = function _SkyColorpickerSliderDirective_setCursor(event) {
56
- const height = this.el.nativeElement.offsetHeight;
57
- const width = this.el.nativeElement.offsetWidth;
56
+ _SkyColorpickerSliderDirective_listenerMove = new WeakMap(), _SkyColorpickerSliderDirective_listenerStop = new WeakMap(), _SkyColorpickerSliderDirective_el = new WeakMap(), _SkyColorpickerSliderDirective_instances = new WeakSet(), _SkyColorpickerSliderDirective_setCursor = function _SkyColorpickerSliderDirective_setCursor(event) {
57
+ const height = __classPrivateFieldGet(this, _SkyColorpickerSliderDirective_el, "f").nativeElement.offsetHeight;
58
+ const width = __classPrivateFieldGet(this, _SkyColorpickerSliderDirective_el, "f").nativeElement.offsetWidth;
58
59
  const xAxis = Math.max(0, Math.min(this.getX(event), width));
59
60
  const yAxis = Math.max(0, Math.min(this.getY(event), height));
60
61
  if (this.xAxis !== undefined && this.yAxis !== undefined) {
@@ -100,4 +101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImpo
100
101
  type: HostListener,
101
102
  args: ['mousedown', ['$event']]
102
103
  }] } });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXItc2xpZGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb2xvcnBpY2tlci9zcmMvbGliL21vZHVsZXMvY29sb3JwaWNrZXIvY29sb3JwaWNrZXItc2xpZGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUFtQztBQUNuQyxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQzs7QUFJdkI7O0dBRUc7QUFJSCxNQUFNLE9BQU8sNkJBQTZCO0lBZXhDLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZOztRQWIzQixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBNEIsQ0FBQztRQVV2RSw4REFBd0Q7UUFDeEQsOERBQTBCO1FBR3hCLHVCQUFBLElBQUksK0NBQWlCLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixDQUFDLE1BQUEsQ0FBQztRQUNGLHVCQUFBLElBQUksK0NBQWlCLEdBQUcsRUFBRTtZQUN4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDLE1BQUEsQ0FBQztJQUNKLENBQUM7SUFJTSxLQUFLLENBQUMsS0FBaUI7UUFDNUIsdUJBQUEsSUFBSSwwRkFBVyxNQUFmLElBQUksRUFBWSxLQUFLLENBQUMsQ0FBQztRQUN2QixRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLHVCQUFBLElBQUksbURBQWMsQ0FBQyxDQUFDO1FBQzNELFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsdUJBQUEsSUFBSSxtREFBYyxDQUFDLENBQUM7UUFDM0QsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSx1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O1NBQ08sQ0FBQyxDQUFDO0tBQ2hDO0lBQ0Q7OztRQUdJO0FBQ04sQ0FBQzsySEF4RFUsNkJBQTZCOytHQUE3Qiw2QkFBNkI7NEZBQTdCLDZCQUE2QjtrQkFIekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2lCQUNuQztpR0FHUSxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBR0Esb0JBQW9CO3NCQUQxQixLQUFLO2dCQUdDLEtBQUs7c0JBRFgsS0FBSztnQkFHQyxLQUFLO3NCQURYLEtBQUs7Z0JBR0MsS0FBSztzQkFEWCxLQUFLO2dCQWlCQyxLQUFLO3NCQUZYLFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDckMsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcGVsbC1jaGVja2VyOmlnbm9yZSBDb2xvcnBpY2tlclxuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUNvbG9ycGlja2VyQ2hhbmdlQXhpcyB9IGZyb20gJy4vdHlwZXMvY29sb3JwaWNrZXItYXhpcyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lDb2xvcnBpY2tlclNsaWRlcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lDb2xvcnBpY2tlclNsaWRlckRpcmVjdGl2ZSB7XG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgbmV3Q29sb3JDb250cmFzdCA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5Q29sb3JwaWNrZXJDaGFuZ2VBeGlzPigpO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2t5Q29sb3JwaWNrZXJTbGlkZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KClcbiAgcHVibGljIGNvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB4QXhpczogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKVxuICBwdWJsaWMgeUF4aXM6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjbGlzdGVuZXJNb3ZlOiAoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSA9PiB2b2lkO1xuICAjbGlzdGVuZXJTdG9wOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLiNsaXN0ZW5lck1vdmUgPSAoZXZlbnQpID0+IHtcbiAgICAgIHRoaXMubW92ZShldmVudCk7XG4gICAgfTtcbiAgICB0aGlzLiNsaXN0ZW5lclN0b3AgPSAoKSA9PiB7XG4gICAgICB0aGlzLnN0b3AoKTtcbiAgICB9O1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigndG91Y2hzdGFydCcsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBzdGFydChldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuI3NldEN1cnNvcihldmVudCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy4jbGlzdGVuZXJNb3ZlKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLiNsaXN0ZW5lck1vdmUpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLiNsaXN0ZW5lclN0b3ApO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy4jbGlzdGVuZXJTdG9wKTtcbiAgfVxuXG4gICNzZXRDdXJzb3IoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSB7XG4gICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICBjb25zdCB4QXhpcyA9IE1hdGgubWF4KDAsIE1hdGgubWluKHRoaXMuZ2V0WChldmVudCksIHdpZHRoKSk7XG4gICAgY29uc3QgeUF4aXMgPSBNYXRoLm1heCgwLCBNYXRoLm1pbih0aGlzLmdldFkoZXZlbnQpLCBoZWlnaHQpKTtcbiAgICBpZiAodGhpcy54QXhpcyAhPT0gdW5kZWZpbmVkICYmIHRoaXMueUF4aXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5uZXdDb2xvckNvbnRyYXN0LmVtaXQoe1xuICAgICAgICB4Q29vcmRpbmF0ZTogeEF4aXMgLyB3aWR0aCxcbiAgICAgICAgeUNvb3JkaW5hdGU6IDEgLSB5QXhpcyAvIGhlaWdodCxcbiAgICAgICAgeEF4aXM6IHRoaXMueEF4aXMsXG4gICAgICAgIHlBeGlzOiB0aGlzLnlBeGlzLFxuICAgICAgfSBhcyBTa3lDb2xvcnBpY2tlckNoYW5nZUF4aXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5ld0NvbG9yQ29udHJhc3QuZW1pdCh7XG4gICAgICAgIHhDb29yZGluYXRlOiB4QXhpcyAvIHdpZHRoLFxuICAgICAgICBtYXhSYW5nZTogdGhpcy54QXhpcyxcbiAgICAgIH0gYXMgU2t5Q29sb3JwaWNrZXJDaGFuZ2VBeGlzKTtcbiAgICB9XG4gICAgLyogLy8gTm8gdmVydGljYWwgYmFyc1xuICAgICBpZiAodGhpcy54QXhpcyA9PT0gdW5kZWZpbmVkICYmIHRoaXMueUF4aXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMubmV3Q29sb3JDb250cmFzdC5lbWl0KHsgeUNvb3JkaW5hdGU6IHlBeGlzIC8gaGVpZ2h0LCBtYXhSYW5nZTogdGhpcy55QXhpcyB9KTtcbiAgICB9ICovXG4gIH1cblxuICBwdWJsaWMgc3RvcCgpIHtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLiNsaXN0ZW5lck1vdmUpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMuI2xpc3RlbmVyTW92ZSk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuI2xpc3RlbmVyU3RvcCk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLiNsaXN0ZW5lclN0b3ApO1xuICB9XG5cbiAgcHVibGljIG1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLiNzZXRDdXJzb3IoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIGdldFgoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KTogbnVtYmVyIHtcbiAgICAvKiBJZ25vcmluZyBldmVudC50b3VjaGVzIGFzIHRlc3RzIGFyZSBub3QgcnVuIG9uIGEgdG91Y2ggZGV2aWNlLiAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIChcbiAgICAgICgncGFnZVgnIGluIGV2ZW50ID8gZXZlbnQucGFnZVggOiBldmVudC50b3VjaGVzWzBdLnBhZ2VYKSAtXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtXG4gICAgICB3aW5kb3cucGFnZVhPZmZzZXRcbiAgICApO1xuICB9XG4gIHB1YmxpYyBnZXRZKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCk6IG51bWJlciB7XG4gICAgLyogSWdub3JpbmcgZXZlbnQudG91Y2hlcyBhcyB0ZXN0cyBhcmUgbm90IHJ1biBvbiBhIHRvdWNoIGRldmljZS4gKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiAoXG4gICAgICAoJ3BhZ2VZJyBpbiBldmVudCA/IGV2ZW50LnBhZ2VZIDogZXZlbnQudG91Y2hlc1swXS5wYWdlWSkgLVxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCAtXG4gICAgICB3aW5kb3cucGFnZVlPZmZzZXRcbiAgICApO1xuICB9XG59XG4iXX0=
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXItc2xpZGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb2xvcnBpY2tlci9zcmMvbGliL21vZHVsZXMvY29sb3JwaWNrZXIvY29sb3JwaWNrZXItc2xpZGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUFtQztBQUNuQyxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQzs7QUFJdkI7O0dBRUc7QUFJSCxNQUFNLE9BQU8sNkJBQTZCO0lBaUJ4QyxZQUFZLEVBQWM7O1FBZm5CLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO1FBVXZFLDhEQUF3RDtRQUN4RCw4REFBMEI7UUFFMUIsb0RBQWdCO1FBR2QsdUJBQUEsSUFBSSxxQ0FBTyxFQUFFLE1BQUEsQ0FBQztRQUNkLHVCQUFBLElBQUksK0NBQWlCLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixDQUFDLE1BQUEsQ0FBQztRQUNGLHVCQUFBLElBQUksK0NBQWlCLEdBQUcsRUFBRTtZQUN4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDLE1BQUEsQ0FBQztJQUNKLENBQUM7SUFJTSxLQUFLLENBQUMsS0FBaUI7UUFDNUIsdUJBQUEsSUFBSSwwRkFBVyxNQUFmLElBQUksRUFBWSxLQUFLLENBQUMsQ0FBQztRQUN2QixRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLHVCQUFBLElBQUksbURBQWMsQ0FBQyxDQUFDO1FBQzNELFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsdUJBQUEsSUFBSSxtREFBYyxDQUFDLENBQUM7UUFDM0QsUUFBUSxDQUFD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SztZQUMxQixRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDTyxDQUFDLENBQUM7S0FDaEM7SUFDRDs7O1FBR0k7QUFDTixDQUFDOzJIQTNEVSw2QkFBNkI7K0dBQTdCLDZCQUE2Qjs0RkFBN0IsNkJBQTZCO2tCQUh6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7aUJBQ25DO2lHQUdRLGdCQUFnQjtzQkFEdEIsTUFBTTtnQkFHQSxvQkFBb0I7c0JBRDFCLEtBQUs7Z0JBR0MsS0FBSztzQkFEWCxLQUFLO2dCQUdDLEtBQUs7c0JBRFgsS0FBSztnQkFHQyxLQUFLO3NCQURYLEtBQUs7Z0JBb0JDLEtBQUs7c0JBRlgsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNyQyxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNwZWxsLWNoZWNrZXI6aWdub3JlIENvbG9ycGlja2VyXG5pbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5Q29sb3JwaWNrZXJDaGFuZ2VBeGlzIH0gZnJvbSAnLi90eXBlcy9jb2xvcnBpY2tlci1heGlzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreUNvbG9ycGlja2VyU2xpZGVyXScsXG59KVxuZXhwb3J0IGNsYXNzIFNreUNvbG9ycGlja2VyU2xpZGVyRGlyZWN0aXZlIHtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBuZXdDb2xvckNvbnRyYXN0ID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lDb2xvcnBpY2tlckNoYW5nZUF4aXM+KCk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBza3lDb2xvcnBpY2tlclNsaWRlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKVxuICBwdWJsaWMgY29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KClcbiAgcHVibGljIHhBeGlzOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB5QXhpczogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICNsaXN0ZW5lck1vdmU6IChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpID0+IHZvaWQ7XG4gICNsaXN0ZW5lclN0b3A6ICgpID0+IHZvaWQ7XG5cbiAgI2VsOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKGVsOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy4jZWwgPSBlbDtcbiAgICB0aGlzLiNsaXN0ZW5lck1vdmUgPSAoZXZlbnQpID0+IHtcbiAgICAgIHRoaXMubW92ZShldmVudCk7XG4gICAgfTtcbiAgICB0aGlzLiNsaXN0ZW5lclN0b3AgPSAoKSA9PiB7XG4gICAgICB0aGlzLnN0b3AoKTtcbiAgICB9O1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigndG91Y2hzdGFydCcsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBzdGFydChldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuI3NldEN1cnNvcihldmVudCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy4jbGlzdGVuZXJNb3ZlKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLiNsaXN0ZW5lck1vdmUpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLiNsaXN0ZW5lclN0b3ApO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy4jbGlzdGVuZXJTdG9wKTtcbiAgfVxuXG4gICNzZXRDdXJzb3IoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSB7XG4gICAgY29uc3QgaGVpZ2h0ID0gdGhpcy4jZWwubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLiNlbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIGNvbnN0IHhBeGlzID0gTWF0aC5tYXgoMCwgTWF0aC5taW4odGhpcy5nZXRYKGV2ZW50KSwgd2lkdGgpKTtcbiAgICBjb25zdCB5QXhpcyA9IE1hdGgubWF4KDAsIE1hdGgubWluKHRoaXMuZ2V0WShldmVudCksIGhlaWdodCkpO1xuICAgIGlmICh0aGlzLnhBeGlzICE9PSB1bmRlZmluZWQgJiYgdGhpcy55QXhpcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm5ld0NvbG9yQ29udHJhc3QuZW1pdCh7XG4gICAgICAgIHhDb29yZGluYXRlOiB4QXhpcyAvIHdpZHRoLFxuICAgICAgICB5Q29vcmRpbmF0ZTogMSAtIHlBeGlzIC8gaGVpZ2h0LFxuICAgICAgICB4QXhpczogdGhpcy54QXhpcyxcbiAgICAgICAgeUF4aXM6IHRoaXMueUF4aXMsXG4gICAgICB9IGFzIFNreUNvbG9ycGlja2VyQ2hhbmdlQXhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmV3Q29sb3JDb250cmFzdC5lbWl0KHtcbiAgICAgICAgeENvb3JkaW5hdGU6IHhBeGlzIC8gd2lkdGgsXG4gICAgICAgIG1heFJhbmdlOiB0aGlzLnhBeGlzLFxuICAgICAgfSBhcyBTa3lDb2xvcnBpY2tlckNoYW5nZUF4aXMpO1xuICAgIH1cbiAgICAvKiAvLyBObyB2ZXJ0aWNhbCBiYXJzXG4gICAgIGlmICh0aGlzLnhBeGlzID09PSB1bmRlZmluZWQgJiYgdGhpcy55QXhpcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5uZXdDb2xvckNvbnRyYXN0LmVtaXQoeyB5Q29vcmRpbmF0ZTogeUF4aXMgLyBoZWlnaHQsIG1heFJhbmdlOiB0aGlzLnlBeGlzIH0pO1xuICAgIH0gKi9cbiAgfVxuXG4gIHB1YmxpYyBzdG9wKCkge1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuI2xpc3RlbmVyTW92ZSk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy4jbGlzdGVuZXJNb3ZlKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy4jbGlzdGVuZXJTdG9wKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRoaXMuI2xpc3RlbmVyU3RvcCk7XG4gIH1cblxuICBwdWJsaWMgbW92ZShldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuI3NldEN1cnNvcihldmVudCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0WChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiBudW1iZXIge1xuICAgIC8qIElnbm9yaW5nIGV2ZW50LnRvdWNoZXMgYXMgdGVzdHMgYXJlIG5vdCBydW4gb24gYSB0b3VjaCBkZXZpY2UuICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gKFxuICAgICAgKCdwYWdlWCcgaW4gZXZlbnQgPyBldmVudC5wYWdlWCA6IGV2ZW50LnRvdWNoZXNbMF0ucGFnZVgpIC1cbiAgICAgIHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtXG4gICAgICB3aW5kb3cucGFnZVhPZmZzZXRcbiAgICApO1xuICB9XG4gIHB1YmxpYyBnZXRZKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCk6IG51bWJlciB7XG4gICAgLyogSWdub3JpbmcgZXZlbnQudG91Y2hlcyBhcyB0ZXN0cyBhcmUgbm90IHJ1biBvbiBhIHRvdWNoIGRldmljZS4gKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiAoXG4gICAgICAoJ3BhZ2VZJyBpbiBldmVudCA/IGV2ZW50LnBhZ2VZIDogZXZlbnQudG91Y2hlc1swXS5wYWdlWSkgLVxuICAgICAgdGhpcy4jZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgLVxuICAgICAgd2luZG93LnBhZ2VZT2Zmc2V0XG4gICAgKTtcbiAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
- var _SkyColorpickerComponent_instances, _SkyColorpickerComponent_idIndex, _SkyColorpickerComponent_alphaChannel, _SkyColorpickerComponent_format, _SkyColorpickerComponent_outputFormat, _SkyColorpickerComponent_hsva, _SkyColorpickerComponent_sliderDimMax, _SkyColorpickerComponent_ngUnsubscribe, _SkyColorpickerComponent_affixer, _SkyColorpickerComponent_overlay, _SkyColorpickerComponent_pickerUnsubscribe, _SkyColorpickerComponent_affixSvc, _SkyColorpickerComponent_changeDetector, _SkyColorpickerComponent_coreAdapter, _SkyColorpickerComponent_overlaySvc, _SkyColorpickerComponent_svc, _SkyColorpickerComponent_themeSvc, _SkyColorpickerComponent__backgroundColorForDisplay, _SkyColorpickerComponent__colorpickerRef, _SkyColorpickerComponent__disabled, _SkyColorpickerComponent_update, _SkyColorpickerComponent_updateSlider, _SkyColorpickerComponent_openPicker, _SkyColorpickerComponent_sendMessage, _SkyColorpickerComponent_handleIncomingMessages, _SkyColorpickerComponent_createAffixer, _SkyColorpickerComponent_destroyAffixer, _SkyColorpickerComponent_addTriggerButtonEventListeners, _SkyColorpickerComponent_removePickerEventListeners, _SkyColorpickerComponent_getHsvaValue, _SkyColorpickerComponent_getAccessibleIconColor;
1
+ var _SkyColorpickerComponent_instances, _SkyColorpickerComponent_idIndex, _SkyColorpickerComponent_alphaChannel, _SkyColorpickerComponent_format, _SkyColorpickerComponent_outputFormat, _SkyColorpickerComponent_hsva, _SkyColorpickerComponent_sliderDimMax, _SkyColorpickerComponent_ngUnsubscribe, _SkyColorpickerComponent_affixer, _SkyColorpickerComponent_overlay, _SkyColorpickerComponent_pickerUnsubscribe, _SkyColorpickerComponent_affixSvc, _SkyColorpickerComponent_changeDetector, _SkyColorpickerComponent_coreAdapter, _SkyColorpickerComponent_overlaySvc, _SkyColorpickerComponent_svc, _SkyColorpickerComponent_themeSvc, _SkyColorpickerComponent__backgroundColorForDisplay, _SkyColorpickerComponent__colorpickerRef, _SkyColorpickerComponent__disabled, _SkyColorpickerComponent_update, _SkyColorpickerComponent_updateSlider, _SkyColorpickerComponent_openPicker, _SkyColorpickerComponent_sendMessage, _SkyColorpickerComponent_handleIncomingMessages, _SkyColorpickerComponent_createAffixer, _SkyColorpickerComponent_destroyAffixer, _SkyColorpickerComponent_createOverlay, _SkyColorpickerComponent_destroyOverlay, _SkyColorpickerComponent_addTriggerButtonEventListeners, _SkyColorpickerComponent_removePickerEventListeners, _SkyColorpickerComponent_getHsvaValue, _SkyColorpickerComponent_getAccessibleIconColor;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
3
  import { Component, ElementRef, EventEmitter, Input, Optional, Output, TemplateRef, ViewChild, ViewEncapsulation, } from '@angular/core';
4
4
  import { SkyAffixAutoFitContext, } from '@skyux/core';
@@ -239,14 +239,14 @@ export class SkyColorpickerComponent {
239
239
  __classPrivateFieldGet(this, _SkyColorpickerComponent_ngUnsubscribe, "f").complete();
240
240
  __classPrivateFieldGet(this, _SkyColorpickerComponent_instances, "m", _SkyColorpickerComponent_removePickerEventListeners).call(this);
241
241
  __classPrivateFieldGet(this, _SkyColorpickerComponent_instances, "m", _SkyColorpickerComponent_destroyAffixer).call(this);
242
- this.destroyOverlay();
242
+ __classPrivateFieldGet(this, _SkyColorpickerComponent_instances, "m", _SkyColorpickerComponent_destroyOverlay).call(this);
243
243
  }
244
244
  onTriggerButtonClick() {
245
245
  __classPrivateFieldGet(this, _SkyColorpickerComponent_instances, "m", _SkyColorpickerComponent_sendMessage).call(this, SkyColorpickerMessageType.Open);
246
246
  }
247
247
  closePicker() {
248
248
  __classPrivateFieldGet(this, _SkyColorpickerComponent_instances, "m", _SkyColorpickerComponent_destroyAffixer).call(this);
249
- this.destroyOverlay();
249
+ __classPrivateFieldGet(this, _SkyColorpickerComponent_instances, "m", _SkyColorpickerComponent_destroyOverlay).call(this);
250
250
  __classPrivateFieldGet(this, _SkyColorpickerComponent_instances, "m", _SkyColorpickerComponent_removePickerEventListeners).call(this);
251
251
  this.triggerButtonRef?.nativeElement.focus();
252
252
  this.isOpen = false;
@@ -279,24 +279,6 @@ export class SkyColorpickerComponent {
279
279
  __classPrivateFieldGet(this, _SkyColorpickerComponent_instances, "m", _SkyColorpickerComponent_update).call(this);
280
280
  }
281
281
  }
282
- createOverlay() {
283
- if (this.colorpickerTemplateRef) {
284
- const overlay = __classPrivateFieldGet(this, _SkyColorpickerComponent_overlaySvc, "f").create({
285
- enableClose: false,
286
- enablePointerEvents: false,
287
- enableScroll: true,
288
- });
289
- overlay.attachTemplate(this.colorpickerTemplateRef);
290
- __classPrivateFieldSet(this, _SkyColorpickerComponent_overlay, overlay, "f");
291
- }
292
- }
293
- destroyOverlay() {
294
- /*istanbul ignore else*/
295
- if (__classPrivateFieldGet(this, _SkyColorpickerComponent_overlay, "f")) {
296
- __classPrivateFieldGet(this, _SkyColorpickerComponent_overlaySvc, "f").close(__classPrivateFieldGet(this, _SkyColorpickerComponent_overlay, "f"));
297
- __classPrivateFieldSet(this, _SkyColorpickerComponent_overlay, undefined, "f");
298
- }
299
- }
300
282
  }
301
283
  _SkyColorpickerComponent_idIndex = new WeakMap(), _SkyColorpickerComponent_alphaChannel = new WeakMap(), _SkyColorpickerComponent_format = new WeakMap(), _SkyColorpickerComponent_outputFormat = new WeakMap(), _SkyColorpickerComponent_hsva = new WeakMap(), _SkyColorpickerComponent_sliderDimMax = new WeakMap(), _SkyColorpickerComponent_ngUnsubscribe = new WeakMap(), _SkyColorpickerComponent_affixer = new WeakMap(), _SkyColorpickerComponent_overlay = new WeakMap(), _SkyColorpickerComponent_pickerUnsubscribe = new WeakMap(), _SkyColorpickerComponent_affixSvc = new WeakMap(), _SkyColorpickerComponent_changeDetector = new WeakMap(), _SkyColorpickerComponent_coreAdapter = new WeakMap(), _SkyColorpickerComponent_overlaySvc = new WeakMap(), _SkyColorpickerComponent_svc = new WeakMap(), _SkyColorpickerComponent_themeSvc = new WeakMap(), _SkyColorpickerComponent__backgroundColorForDisplay = new WeakMap(), _SkyColorpickerComponent__colorpickerRef = new WeakMap(), _SkyColorpickerComponent__disabled = new WeakMap(), _SkyColorpickerComponent_instances = new WeakSet(), _SkyColorpickerComponent_update = function _SkyColorpickerComponent_update() {
302
284
  var _a;
@@ -329,8 +311,8 @@ _SkyColorpickerComponent_idIndex = new WeakMap(), _SkyColorpickerComponent_alpha
329
311
  }, _SkyColorpickerComponent_openPicker = function _SkyColorpickerComponent_openPicker() {
330
312
  this.isPickerVisible = false;
331
313
  __classPrivateFieldGet(this, _SkyColorpickerComponent_instances, "m", _SkyColorpickerComponent_removePickerEventListeners).call(this);
332
- this.destroyOverlay();
333
- this.createOverlay();
314
+ __classPrivateFieldGet(this, _SkyColorpickerComponent_instances, "m", _SkyColorpickerComponent_destroyOverlay).call(this);
315
+ __classPrivateFieldGet(this, _SkyColorpickerComponent_instances, "m", _SkyColorpickerComponent_createOverlay).call(this);
334
316
  this.isOpen = true;
335
317
  }, _SkyColorpickerComponent_sendMessage = function _SkyColorpickerComponent_sendMessage(type) {
336
318
  this.messageStream.next({ type });
@@ -383,6 +365,22 @@ _SkyColorpickerComponent_idIndex = new WeakMap(), _SkyColorpickerComponent_alpha
383
365
  __classPrivateFieldGet(this, _SkyColorpickerComponent_affixer, "f").destroy();
384
366
  __classPrivateFieldSet(this, _SkyColorpickerComponent_affixer, undefined, "f");
385
367
  }
368
+ }, _SkyColorpickerComponent_createOverlay = function _SkyColorpickerComponent_createOverlay() {
369
+ if (this.colorpickerTemplateRef) {
370
+ const overlay = __classPrivateFieldGet(this, _SkyColorpickerComponent_overlaySvc, "f").create({
371
+ enableClose: false,
372
+ enablePointerEvents: false,
373
+ enableScroll: true,
374
+ });
375
+ overlay.attachTemplate(this.colorpickerTemplateRef);
376
+ __classPrivateFieldSet(this, _SkyColorpickerComponent_overlay, overlay, "f");
377
+ }
378
+ }, _SkyColorpickerComponent_destroyOverlay = function _SkyColorpickerComponent_destroyOverlay() {
379
+ /*istanbul ignore else*/
380
+ if (__classPrivateFieldGet(this, _SkyColorpickerComponent_overlay, "f")) {
381
+ __classPrivateFieldGet(this, _SkyColorpickerComponent_overlaySvc, "f").close(__classPrivateFieldGet(this, _SkyColorpickerComponent_overlay, "f"));
382
+ __classPrivateFieldSet(this, _SkyColorpickerComponent_overlay, undefined, "f");
383
+ }
386
384
  }, _SkyColorpickerComponent_addTriggerButtonEventListeners = function _SkyColorpickerComponent_addTriggerButtonEventListeners() {
387
385
  fromEvent(window.document, 'keydown')
388
386
  .pipe(takeUntil(__classPrivateFieldGet(this, _SkyColorpickerComponent_ngUnsubscribe, "f")))
@@ -463,4 +461,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImpo
463
461
  read: ElementRef,
464
462
  }]
465
463
  }] } });
466
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvbG9ycGlja2VyL3NyYy9saWIvbW9kdWxlcy9jb2xvcnBpY2tlci9jb2xvcnBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29sb3JwaWNrZXIvc3JjL2xpYi9tb2R1bGVzL2NvbG9ycGlja2VyL2NvbG9ycGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxzQkFBc0IsR0FNdkIsTUFBTSxhQUFhLENBQUM7QUFJckIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLOUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7O0FBSzdFLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBRXpCOzs7O0dBSUc7QUFRSCxNQUFNLE9BQU8sdUJBQXVCO0lBMlBsQyxZQUNFLFFBQXlCLEVBQ3pCLGNBQWlDLEVBQ2pDLFdBQWtDLEVBQ2xDLFVBQTZCLEVBQzdCLEdBQTBCLEVBQ2QsUUFBMEI7O1FBelB4Qzs7O1dBR0c7UUFFSSx5QkFB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QyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQztLQUNqRTtJQUNELDBCQUEwQjtJQUMxQixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO3FIQXJrQlUsdUJBQXVCO3lHQUF2Qix1QkFBdUIsaVdBSHZCLENBQUMscUJBQXFCLENBQUMsdUlBOEsxQixXQUFXLCtHQUtYLFVBQVUsMkdBS1YsVUFBVSw2QkMxT3BCLGtxVUE4VEE7NEZEelFhLHVCQUF1QjtrQkFQbkMsU0FBUzsrQkFDRSxpQkFBaUIsYUFHaEIsQ0FBQyxxQkFBcUIsQ0FBQyxpQkFDbkIsaUJBQWlCLENBQUMsSUFBSTs7MEJBbVFsQyxRQUFROzRDQTNQSixnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBUUMsb0JBQW9CO3NCQUQxQixLQUFLO2dCQVVDLEtBQUs7c0JBRFgsS0FBSztnQkFVQyxVQUFVO3NCQURoQixLQUFLO2dCQU9DLG9CQUFvQjtzQkFEMUIsTUFBTTtnQkFPQSxvQkFBb0I7c0JBRDFCLE1BQU07Z0JBUUEsYUFBYTtzQkFEbkIsS0FBSztnQkFPQyxlQUFlO3NCQURyQixLQUFLO2dCQXNISSxzQkFBc0I7c0JBSC9CLFNBQVM7dUJBQUMsd0JBQXdCLEVBQUU7d0JBQ25DLElBQUksRUFBRSxXQUFXO3FCQUNsQjtnQkFNUyxnQkFBZ0I7c0JBSHpCLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUU7d0JBQzdCLElBQUksRUFBRSxVQUFVO3FCQUNqQjtnQkFNYSxjQUFjO3NCQUgzQixTQUFTO3VCQUFDLGdCQUFnQixFQUFFO3dCQUMzQixJQUFJLEVBQUUsVUFBVTtxQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5QWZmaXhBdXRvRml0Q29udGV4dCxcbiAgU2t5QWZmaXhTZXJ2aWNlLFxuICBTa3lBZmZpeGVyLFxuICBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gIFNreU92ZXJsYXlJbnN0YW5jZSxcbiAgU2t5T3ZlcmxheVNlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUljb25UeXBlIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuaW1wb3J0IHsgU2t5VGhlbWVTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNsaWRlckRpbWVuc2lvbiwgU2xpZGVyUG9zaXRpb24gfSBmcm9tICcuL2NvbG9ycGlja2VyLWNsYXNzZXMnO1xuaW1wb3J0IHsgU2t5Q29sb3JwaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi9jb2xvcnBpY2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreUNvbG9ycGlja2VyQ2hhbmdlQXhpcyB9IGZyb20gJy4vdHlwZXMvY29sb3JwaWNrZXItYXhpcyc7XG5pbXBvcnQgeyBTa3lDb2xvcnBpY2tlckNoYW5nZUNvbG9yIH0gZnJvbSAnLi90eXBlcy9jb2xvcnBpY2tlci1jb2xvcic7XG5pbXBvcnQgeyBTa3lDb2xvcnBpY2tlckhzdmEgfSBmcm9tICcuL3R5cGVzL2NvbG9ycGlja2VyLWhzdmEnO1xuaW1wb3J0IHsgU2t5Q29sb3JwaWNrZXJNZXNzYWdlIH0gZnJvbSAnLi90eXBlcy9jb2xvcnBpY2tlci1tZXNzYWdlJztcbmltcG9ydCB7IFNreUNvbG9ycGlja2VyTWVzc2FnZVR5cGUgfSBmcm9tICcuL3R5cGVzL2NvbG9ycGlja2VyLW1lc3NhZ2UtdHlwZSc7XG5pbXBvcnQgeyBTa3lDb2xvcnBpY2tlck91dHB1dCB9IGZyb20gJy4vdHlwZXMvY29sb3JwaWNrZXItb3V0cHV0JztcbmltcG9ydCB7IFNreUNvbG9ycGlja2VyUmVzdWx0IH0gZnJvbSAnLi90eXBlcy9jb2xvcnBpY2tlci1yZXN1bHQnO1xuaW1wb3J0IHsgU2t5Q29sb3JwaWNrZXJSZ2JhIH0gZnJvbSAnLi90eXBlcy9jb2xvcnBpY2tlci1yZ2JhJztcblxubGV0IGNvbXBvbmVudElkSW5kZXggPSAwO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgU0tZIFVYLXRoZW1lZCByZXBsYWNlbWVudCBmb3IgdGhlIEhUTUwgYGlucHV0YCBlbGVtZW50IHdpdGggYHR5cGU9XCJjb2xvclwiYC5cbiAqIFRoZSB2YWx1ZSB0aGF0IHVzZXJzIHNlbGVjdCBpcyBkcml2ZW4gdGhyb3VnaCB0aGUgYG5nTW9kZWxgIGF0dHJpYnV0ZSBzcGVjaWZpZWQgb25cbiAqIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1jb2xvcnBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2xvcnBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbG9ycGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1NreUNvbG9ycGlja2VyU2VydmljZV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNreUNvbG9ycGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBbRm9udCBBd2Vzb21lIDQuN10oaHR0cHM6Ly9mb250YXdlc29tZS5jb20vdjQuNy9pY29ucy8pIGljb24gdG8gb3ZlcmxheSBvbiB0b3Agb2YgdGhlIHBpY2tlci4gRG8gbm90IHNwZWNpZnkgdGhlIGBmYSBmYS1gIGNsYXNzZXMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHBpY2tlckJ1dHRvbkljb246IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0eXBlIG9mIGljb24gdG8gZGlzcGxheS4gU3BlY2lmeWluZyBgZmFgIHdpbGwgZGlzcGxheSBhIEZvbnQgQXdlc29tZSBpY29uLCB3aGlsZSBzcGVjaWZ5aW5nIGBza3l1eGAgd2lsbCBkaXNwbGF5IGFuIGljb24gZnJvbSB0aGUgY3VzdG9tIFNLWSBVWCBpY29uIGZvbnQuIE5vdGUgdGhhdCB0aGUgY3VzdG9tIFNLWSBVWCBpY29uIGZvbnQgaXMgY3VycmVudGx5IGluIGJldGEuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHBpY2tlckJ1dHRvbkljb25UeXBlOiBTa3lJY29uVHlwZSA9ICdmYSc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhbiBBUklBIGxhYmVsIGZvciB0aGUgY29sb3JwaWNrZXIuIFRoaXMgc2V0cyB0aGUgY29sb3JwaWNrZXIncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9jaGVja2JveCNhY2Nlc3NpYmlsaXR5KVxuICAgKiB3aGVuIHRoZSBjb2xvcnBpY2tlciBkb2VzIG5vdCBpbmNsdWRlIGEgdmlzaWJsZSBsYWJlbC4gSWYgdGhlIGNvbG9ycGlja2VyIGluY2x1ZGVzIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBsYWJlbGxlZEJ5YCBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCBcIlNlbGVjdCBjb2xvciB2YWx1ZVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBIVE1MIGVsZW1lbnQgSUQgKHdpdGhvdXQgdGhlIGxlYWRpbmcgYCNgKSBvZiB0aGUgZWxlbWVudCB0aGF0IGxhYmVscyB0aGVcbiAgICogY29sb3JwaWNrZXIuIFRoaXMgc2V0cyB0aGUgY29sb3JwaWNrZXIncyBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGVcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2NoZWNrYm94I2FjY2Vzc2liaWxpdHkpLlxuICAgKiBJZiB0aGUgY29sb3JwaWNrZXIgZG9lcyBub3QgaW5jbHVkZSBhIHZpc2libGUgbGFiZWwsIHVzZSBgbGFiZWxgIGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbGFiZWxsZWRCeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCBhIGNvbG9yIGluIHRoZSBjb2xvcnBpY2tlci5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRDb2xvckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNreUNvbG9ycGlja2VyT3V0cHV0PigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCAqKkFwcGx5KiogaW4gdGhlIGNvbG9ycGlja2VyIHRvIGFwcGx5IGEgY29sb3IuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkQ29sb3JBcHBsaWVkID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lDb2xvcnBpY2tlclJlc3VsdD4oKTtcblxuICAvKipcbiAgICogUHJvdmlkZXMgYW4gb2JzZXJ2YWJsZSB0byBzZW5kIGNvbW1hbmRzIHRvIHRoZSBjb2xvcnBpY2tlci4gVGhlIGNvbW1hbmRzIHNob3VsZFxuICAgKiByZXNwZWN0IHRoZSBgU2t5Q29sb3JQaWNrZXJNZXNzYWdlYCB0eXBlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG1lc3NhZ2VTdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lDb2xvcnBpY2tlck1lc3NhZ2U+KCk7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc3BsYXkgYSByZXNldCBidXR0b24gdG8gbGV0IHVzZXJzIHJldHVybiB0byB0aGUgZGVmYXVsdCBjb2xvci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93UmVzZXRCdXR0b24gPSB0cnVlO1xuXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLiNfZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19kaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgYmFja2dyb3VuZENvbG9yRm9yRGlzcGxheSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2JhY2tncm91bmRDb2xvckZvckRpc3BsYXkgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5waWNrZXJCdXR0b25JY29uKSB7XG4gICAgICB0aGlzLmljb25Db2xvciA9IHRoaXMuI2dldEFjY2Vzc2libGVJY29uQ29sb3IodGhpcy5zZWxlY3RlZENvbG9yKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJhY2tncm91bmRDb2xvckZvckRpc3BsYXkoKTogc3RyaW5nIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB0aGlzLiNfYmFja2dyb3VuZENvbG9yRm9yRGlzcGxheSB8fCAnI2ZmZic7XG4gIH1cblxuICBwdWJsaWMgc2V0IGh1ZShjaGFuZ2U6IFNreUNvbG9ycGlja2VyQ2hhbmdlQXhpcykge1xuICAgIGlmIChcbiAgICAgIHRoaXMuI2hzdmEgJiZcbiAgICAgIGNoYW5nZS54Q29vcmRpbmF0ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBjaGFuZ2UubWF4UmFuZ2UgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdGhpcy4jaHN2YS5odWUgPSBjaGFuZ2UueENvb3JkaW5hdGUgLyBjaGFuZ2UubWF4UmFuZ2U7XG4gICAgICB0aGlzLiN1cGRhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0IHJlZChjaGFuZ2U6IFNreUNvbG9ycGlja2VyQ2hhbmdlQ29sb3IpIHtcbiAgICBpZiAodGhpcy4jaHN2YSkge1xuICAgICAgY29uc3QgcmdiYSA9IHRoaXMuI3N2Yy5oc3ZhVG9SZ2JhKHRoaXMuI2hzdmEpO1xuXG4gICAgICAvLyBUT0RPOiBUaGlzIGNvZGUgYXNzdW1lZCBub24tbnVsbCBwcmUtc3RyaWN0IG1vZGUuIFJlZXZhbHVhdGUgaW4gdGhlIGZ1dHVyZT9cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICByZ2JhLnJlZCA9IGNoYW5nZS5jb2xvclZhbHVlISAvIGNoYW5nZS5tYXhSYW5nZSE7XG4gICAgICB0aGlzLiNoc3ZhID0gdGhpcy4jc3ZjLnJnYmFUb0hzdmEocmdiYSk7XG4gICAgICB0aGlzLiN1cGRhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0IGdyZWVuKGNoYW5nZTogU2t5Q29sb3JwaWNrZXJDaGFuZ2VDb2xvcikge1xuICAgIGlmICh0aGlzLiNoc3ZhKSB7XG4gICAgICBjb25zdCByZ2JhID0gdGhpcy4jc3ZjLmhzdmFUb1JnYmEodGhpcy4jaHN2YSk7XG5cbiAgICAgIC8vIFRPRE86IFRoaXMgY29kZSBhc3N1bWVkIG5vbi1udWxsIHByZS1zdHJpY3QgbW9kZS4gUmVldmFsdWF0ZSBpbiB0aGUgZnV0dXJlP1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgIHJnYmEuZ3JlZW4gPSBjaGFuZ2UuY29sb3JWYWx1ZSEgLyBjaGFuZ2UubWF4UmFuZ2UhO1xuICAgICAgdGhpcy4jaHN2YSA9IHRoaXMuI3N2Yy5yZ2JhVG9Ic3ZhKHJnYmEpO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBibHVlKGNoYW5nZTogU2t5Q29sb3JwaWNrZXJDaGFuZ2VDb2xvcikge1xuICAgIGlmICh0aGlzLiNoc3ZhKSB7XG4gICAgICBjb25zdCByZ2JhID0gdGhpcy4jc3ZjLmhzdmFUb1JnYmEodGhpcy4jaHN2YSk7XG5cbiAgICAgIC8vIFRPRE86IFRoaXMgY29kZSBhc3N1bWVkIG5vbi1udWxsIHByZS1zdHJpY3QgbW9kZS4gUmVldmFsdWF0ZSBpbiB0aGUgZnV0dXJlP1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgIHJnYmEuYmx1ZSA9IGNoYW5nZS5jb2xvclZhbHVlISAvIGNoYW5nZS5tYXhSYW5nZSE7XG4gICAgICB0aGlzLiNoc3ZhID0gdGhpcy4jc3ZjLnJnYmFUb0hzdmEocmdiYSk7XG4gICAgICB0aGlzLiN1cGRhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0IGFscGhhQXhpcyhjaGFuZ2U6IFNreUNvbG9ycGlja2VyQ2hhbmdlQXhpcykge1xuICAgIGlmIChcbiAgICAgIHRoaXMuI2hzdmEgJiZcbiAgICAgIGNoYW5nZS54Q29vcmRpbmF0ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBjaGFuZ2UubWF4UmFuZ2UgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdGhpcy4jaHN2YS5hbHBoYSA9IGNoYW5nZS54Q29vcmRpbmF0ZSAvIGNoYW5nZS5tYXhSYW5nZTtcbiAgICAgIHRoaXMuI3VwZGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXQgYWxwaGFDb2xvcihjaGFuZ2U6IFNreUNvbG9ycGlja2VyQ2hhbmdlQ29sb3IpIHtcbiAgICBpZiAodGhpcy4jaHN2YSkge1xuICAgICAgLy8gVE9ETzogVGhpcyBjb2RlIGFzc3VtZWQgbm9uLW51bGwgcHJlLXN0cmljdCBtb2RlLiBSZWV2YWx1YXRlIGluIHRoZSBmdXR1cmU/XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgdGhpcy4jaHN2YS5hbHBoYSA9IGNoYW5nZS5jb2xvclZhbHVlISAvIGNoYW5nZS5tYXhSYW5nZSE7XG4gICAgICB0aGlzLiN1cGRhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0IGhleChjaGFuZ2U6IFNreUNvbG9ycGlja2VyQ2hhbmdlQ29sb3IpIHtcbiAgICB0aGlzLnVwZGF0ZVBpY2tlclZhbHVlcyhjaGFuZ2UuY29sb3IpO1xuICB9XG5cbiAgcHVibGljIHNldCBzYXR1cmF0aW9uQW5kTGlnaHRuZXNzKHZhbHVlOiBTa3lDb2xvcnBpY2tlckNoYW5nZUF4aXMpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLiNoc3ZhICYmXG4gICAgICB2YWx1ZS54Q29vcmRpbmF0ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB2YWx1ZS54QXhpcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB2YWx1ZS55Q29vcmRpbmF0ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB2YWx1ZS55QXhpcyAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICB0aGlzLiNoc3ZhLnNhdHVyYXRpb24gPSB2YWx1ZS54Q29vcmRpbmF0ZSAvIHZhbHVlLnhBeGlzO1xuICAgICAgdGhpcy4jaHN2YS52YWx1ZSA9IHZhbHVlLnlDb29yZGluYXRlIC8gdmFsdWUueUF4aXM7XG4gICAgICB0aGlzLiN1cGRhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2t5Q29sb3JwaWNrZXJBbHBoYUlkOiBzdHJpbmc7XG4gIHB1YmxpYyByZXR1cm5Gb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGluaXRpYWxDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgbGFzdEFwcGxpZWRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgaXNWaXNpYmxlID0gdHJ1ZTtcblxuICBAVmlld0NoaWxkKCdjb2xvcnBpY2tlclRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICB9KVxuICBwcm90ZWN0ZWQgY29sb3JwaWNrZXJUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlckJ1dHRvblJlZicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICB9KVxuICBwcm90ZWN0ZWQgdHJpZ2dlckJ1dHRvblJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdjb2xvcnBpY2tlclJlZicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICB9KVxuICBwcm90ZWN0ZWQgc2V0IGNvbG9ycGlja2VyUmVmKHZhbHVlOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNfY29sb3JwaWNrZXJSZWYgPSB2YWx1ZTtcbiAgICAgIHRoaXMuI2Rlc3Ryb3lBZmZpeGVyKCk7XG5cbiAgICAgIHRoaXMuI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgICB0aGlzLiNwaWNrZXJVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAgIC8vIEVuc3VyZSB0aGUgY29sb3JwaWNrZXIgaGFzIGZ1bGx5IHJlbmRlcmVkIGJlZm9yZSBhZGRpbmcgdGhlIGFmZml4ZXIuIEFkZGVkIHRvIGFkZHJlc3MgYVxuICAgICAgLy8gcmFjZSBjb25kaXRpb24gd2hlbiBydW5uaW5nIHVuZGVyIHByb2R1Y3Rpb24gY29uZGl0aW9ucy5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLiNjcmVhdGVBZmZpeGVyKCk7XG4gICAgICAgIHRoaXMuaXNQaWNrZXJWaXNpYmxlID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLiNjb3JlQWRhcHRlci5nZXRGb2N1c2FibGVDaGlsZHJlbkFuZEFwcGx5Rm9jdXMoXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgJy5za3ktY29sb3JwaWNrZXInLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBjb2xvcnBpY2tlclJlZigpOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2NvbG9ycGlja2VyUmVmO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbG9ycGlja2VySWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIGlzT3BlbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgdHJpZ2dlckJ1dHRvbklkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBza3lDb2xvcnBpY2tlckhleElkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBza3lDb2xvcnBpY2tlclJlZElkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBza3lDb2xvcnBpY2tlckdyZWVuSWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIHNreUNvbG9ycGlja2VyQmx1ZUlkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBzbGlkZXI6IFNsaWRlclBvc2l0aW9uO1xuICBwcm90ZWN0ZWQgYWxsb3dUcmFuc3BhcmVuY3k6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBhbHBoYVNsaWRlckNvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBoZXhUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBodWVTbGlkZXJDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgcHJlc2V0Q29sb3JzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIHJnYmFUZXh0OiBTa3lDb2xvcnBpY2tlclJnYmEgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBzZWxlY3RlZENvbG9yOiBTa3lDb2xvcnBpY2tlck91dHB1dCB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIGljb25Db2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgaXNQaWNrZXJWaXNpYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICNpZEluZGV4OiBudW1iZXI7XG4gICNhbHBoYUNoYW5uZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI2Zvcm1hdDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAjb3V0cHV0Rm9ybWF0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNoc3ZhOiBTa3lDb2xvcnBpY2tlckhzdmEgfCB1bmRlZmluZWQ7XG4gICNzbGlkZXJEaW1NYXg6IFNsaWRlckRpbWVuc2lvbjtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjYWZmaXhlcjogU2t5QWZmaXhlciB8IHVuZGVmaW5lZDtcbiAgI292ZXJsYXk6IFNreU92ZXJsYXlJbnN0YW5jZSB8IHVuZGVmaW5lZDtcbiAgI3BpY2tlclVuc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+IHwgdW5kZWZpbmVkO1xuXG4gICNhZmZpeFN2YzogU2t5QWZmaXhTZXJ2aWNlO1xuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjY29yZUFkYXB0ZXI6IFNreUNvcmVBZGFwdGVyU2VydmljZTtcbiAgI292ZXJsYXlTdmM6IFNreU92ZXJsYXlTZXJ2aWNlO1xuICAjc3ZjOiBTa3lDb2xvcnBpY2tlclNlcnZpY2U7XG4gICN0aGVtZVN2YzogU2t5VGhlbWVTZXJ2aWNlIHwgdW5kZWZpbmVkO1xuXG4gICNfYmFja2dyb3VuZENvbG9yRm9yRGlzcGxheTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjX2NvbG9ycGlja2VyUmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuICAjX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYWZmaXhTdmM6IFNreUFmZml4U2VydmljZSxcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgY29yZUFkYXB0ZXI6IFNreUNvcmVBZGFwdGVyU2VydmljZSxcbiAgICBvdmVybGF5U3ZjOiBTa3lPdmVybGF5U2VydmljZSxcbiAgICBzdmM6IFNreUNvbG9ycGlja2VyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSB0aGVtZVN2Yz86IFNreVRoZW1lU2VydmljZVxuICApIHtcbiAgICB0aGlzLiNhZmZpeFN2YyA9IGFmZml4U3ZjO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jY29yZUFkYXB0ZXIgPSBjb3JlQWRhcHRlcjtcbiAgICB0aGlzLiNvdmVybGF5U3ZjID0gb3ZlcmxheVN2YztcbiAgICB0aGlzLiNzdmMgPSBzdmM7XG4gICAgdGhpcy4jdGhlbWVTdmMgPSB0aGVtZVN2YztcblxuICAgIGNvbXBvbmVudElkSW5kZXgrKztcblxuICAgIHRoaXMuI2lkSW5kZXggPSBjb21wb25lbnRJZEluZGV4O1xuICAgIHRoaXMuc2t5Q29sb3JwaWNrZXJSZWRJZCA9IGBza3ktY29sb3JwaWNrZXItcmVkLSR7dGhpcy4jaWRJbmRleH1gO1xuICAgIHRoaXMuc2t5Q29sb3JwaWNrZXJIZXhJZCA9IGBza3ktY29sb3JwaWNrZXItaGV4LS0ke3RoaXMuI2lkSW5kZXh9YDtcbiAgICB0aGlzLnNreUNvbG9ycGlja2VyUmVkSWQgPSBgc2t5LWNvbG9ycGlja2VyLXJlZC0tJHt0aGlzLiNpZEluZGV4fWA7XG4gICAgdGhpcy5za3lDb2xvcnBpY2tlckdyZWVuSWQgPSBgc2t5LWNvbG9ycGlja2VyLWdyZWVuLS0ke3RoaXMuI2lkSW5kZXh9YDtcbiAgICB0aGlzLnNreUNvbG9ycGlja2VyQmx1ZUlkID0gYHNreS1jb2xvcnBpY2tlci1ibHVlLS0ke3RoaXMuI2lkSW5kZXh9YDtcbiAgICB0aGlzLnNreUNvbG9ycGlja2VyQWxwaGFJZCA9IGBza3ktY29sb3JwaWNrZXItYWxwaGEtLSR7dGhpcy4jaWRJbmRleH1gO1xuICAgIHRoaXMuY29sb3JwaWNrZXJJZCA9IGBza3ktY29sb3JwaWNrZXItLSR7dGhpcy4jaWRJbmRleH1gO1xuICAgIHRoaXMudHJpZ2dlckJ1dHRvbklkID0gYHNreS1jb2xvcnBpY2tlci1idXR0b24tLSR7dGhpcy4jaWRJbmRleH1gO1xuXG4gICAgdGhpcy4jc2xpZGVyRGltTWF4ID0gbmV3IFNsaWRlckRpbWVuc2lvbigxODIsIDI3MCwgMTcwLCAxODIpO1xuICAgIHRoaXMuc2xpZGVyID0gbmV3IFNsaWRlclBvc2l0aW9uKDAsIDAsIDAsIDApO1xuICB9XG5cbiAgcHVibGljIHNldERpYWxvZyhcbiAgICBjb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIG91dHB1dEZvcm1hdDogc3RyaW5nLFxuICAgIHByZXNldENvbG9yczogQXJyYXk8c3RyaW5nPixcbiAgICBhbHBoYUNoYW5uZWw6IHN0cmluZyxcbiAgICBhbGxvd1RyYW5zcGFyZW5jeTogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxDb2xvciA9IGNvbG9yO1xuICAgIHRoaXMuI291dHB1dEZvcm1hdCA9IG91dHB1dEZvcm1hdDtcbiAgICB0aGlzLnByZXNldENvbG9ycyA9IHByZXNldENvbG9ycztcbiAgICB0aGlzLiNhbHBoYUNoYW5uZWwgPSBhbHBoYUNoYW5uZWw7XG4gICAgdGhpcy5hbGxvd1RyYW5zcGFyZW5jeSA9IGFsbG93VHJhbnNwYXJlbmN5O1xuXG4gICAgaWYgKHRoaXMuI291dHB1dEZvcm1hdCA9PT0gJ3JnYmEnKSB7XG4gICAgICB0aGlzLiNmb3JtYXQgPSAxO1xuICAgIH0gZWxzZSBpZiAodGhpcy4jb3V0cHV0Rm9ybWF0ID09PSAnaHNsYScpIHtcbiAgICAgIHRoaXMuI2Zvcm1hdCA9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI2Zvcm1hdCA9IDA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubWVzc2FnZVN0cmVhbVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogU2t5Q29sb3JwaWNrZXJNZXNzYWdlKSA9PiB7XG4gICAgICAgIHRoaXMuI2hhbmRsZUluY29taW5nTWVzc2FnZXMobWVzc2FnZSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2FkZFRyaWdnZXJCdXR0b25FdmVudExpc3RlbmVycygpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy4jdGhlbWVTdmMpIHtcbiAgICAgIHRoaXMuI3RoZW1lU3ZjLnNldHRpbmdzQ2hhbmdlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgodGhlbWVTZXR0aW5ncykgPT4ge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgY29uc3QgdGhlbWVOYW1lID0gdGhlbWVTZXR0aW5ncy5jdXJyZW50U2V0dGluZ3M/LnRoZW1lPy5uYW1lO1xuXG4gICAgICAgICAgLy8gSHVlL2FscGhhIHNsaWRlciBiYXJzIGhhdmUgZGlmZmVyZW50IHdpZHRocyBpbiBNb2Rlcm4gdGhlbWUuXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgICAgaWYgKHRoZW1lTmFtZSA9PT0gJ21vZGVybicpIHtcbiAgICAgICAgICAgIHRoaXMuI3NsaWRlckRpbU1heCA9IG5ldyBTbGlkZXJEaW1lbnNpb24oMTc0LCAyNzAsIDE3MCwgMTc0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy4jc2xpZGVyRGltTWF4ID0gbmV3IFNsaWRlckRpbWVuc2lvbigxODIsIDI3MCwgMTcwLCAxODIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLiN1cGRhdGVTbGlkZXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLiNyZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMuI2Rlc3Ryb3lBZmZpeGVyKCk7XG4gICAgdGhpcy5kZXN0cm95T3ZlcmxheSgpO1xuICB9XG5cbiAgcHVibGljIG9uVHJpZ2dlckJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuI3NlbmRNZXNzYWdlKFNreUNvbG9ycGlja2VyTWVzc2FnZVR5cGUuT3Blbik7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VQaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy4jZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy4jcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25SZWY/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG9uQXBwbHlDb2xvckNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQ29sb3IpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvckNoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkQ29sb3IpO1xuICAgICAgdGhpcy5zZWxlY3RlZENvbG9yQXBwbGllZC5lbWl0KHsgY29sb3I6IHRoaXMuc2VsZWN0ZWRDb2xvciB9KTtcbiAgICAgIHRoaXMubGFzdEFwcGxpZWRDb2xvciA9IHRoaXMuc2VsZWN0ZWRDb2xvci5yZ2JhVGV4dDtcbiAgICAgIHRoaXMudXBkYXRlUGlja2VyVmFsdWVzKHRoaXMubGFzdEFwcGxpZWRDb2xvcik7XG4gICAgICB0aGlzLmJhY2tncm91bmRDb2xvckZvckRpc3BsYXkgPSB0aGlzLnNlbGVjdGVkQ29sb3IucmdiYVRleHQ7XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZVBpY2tlcigpO1xuICB9XG5cbiAgcHVibGljIG9uQ2FuY2VsQ2xpY2soKTogdm9pZCB7XG4gICAgLy8gUmV2ZXJ0IHBpY2tlciB2YWx1ZXMgYmFjayB0byBwcmV2aW91cyBjb2xvci5cbiAgICB0aGlzLnVwZGF0ZVBpY2tlclZhbHVlcyh0aGlzLmJhY2tncm91bmRDb2xvckZvckRpc3BsYXkpO1xuICAgIHRoaXMuY2xvc2VQaWNrZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblByZXNldENsaWNrKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVBpY2tlclZhbHVlcyh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgb25SZXNldENsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuI3NlbmRNZXNzYWdlKFNreUNvbG9ycGlja2VyTWVzc2FnZVR5cGUuUmVzZXQpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVBpY2tlclZhbHVlcyh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgY29uc3QgaHN2YSA9IHRoaXMuI2dldEhzdmFWYWx1ZSh2YWx1ZSk7XG4gICAgaWYgKGhzdmEpIHtcbiAgICAgIHRoaXMuI2hzdmEgPSBoc3ZhO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jaHN2YSkge1xuICAgICAgY29uc3QgcmdiYTogU2t5Q29sb3JwaWNrZXJSZ2JhID0gdGhpcy4jc3ZjLmhzdmFUb1JnYmEodGhpcy4jaHN2YSk7XG4gICAgICBjb25zdCBkUmdiYTogU2t5Q29sb3JwaWNrZXJSZ2JhID0gdGhpcy4jc3ZjLmRlbm9ybWFsaXplUkdCQShyZ2JhKTtcblxuICAgICAgY29uc3QgaHN2YTogU2t5Q29sb3JwaWNrZXJIc3ZhID0ge1xuICAgICAgICBodWU6IHRoaXMuI2hzdmEuaHVlLFxuICAgICAgICBzYXR1cmF0aW9uOiAxLFxuICAgICAgICB2YWx1ZTogMSxcbiAgICAgICAgYWxwaGE6IDEsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBodWVSZ2JhID0gdGhpcy4jc3ZjLmRlbm9ybWFsaXplUkdCQSh0aGlzLiNzdmMuaHN2YVRvUmdiYShoc3ZhKSk7XG5cbiAgICAgIHRoaXMucmdiYVRleHQgPSBkUmdiYTtcbiAgICAgIHRoaXMuaGV4VGV4dCA9IHRoaXMuI3N2Yy5oZXhUZXh0KGRSZ2JhLCB0aGlzLiNhbHBoYUNoYW5uZWwgPT09ICdoZXg4Jyk7XG5cbiAgICAgIHRoaXMuYWxwaGFTbGlkZXJDb2xvciA9IGByZ2JhKCR7ZFJnYmEucmVkfSwke2RSZ2JhLmdyZWVufSwke2RSZ2JhLmJsdWV9LCR7ZFJnYmEuYWxwaGF9KWA7XG4gICAgICB0aGlzLmh1ZVNsaWRlckNvbG9yID0gYHJnYmEoJHtodWVSZ2JhLnJlZH0sJHtodWVSZ2JhLmdyZWVufSwke2h1ZVJnYmEuYmx1ZX0sJHtyZ2JhLmFscGhhfSlgO1xuXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuI2Zvcm1hdCA9PT0gMCAmJlxuICAgICAgICB0aGlzLiNoc3ZhLmFscGhhIDwgMSAmJlxuICAgICAgICB0aGlzLiNhbHBoYUNoYW5uZWwgPT09ICdoZXg2J1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMuI2Zvcm1hdCsrO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sb3IgPSB0aGlzLiNzdmMuc2t5Q29sb3JwaWNrZXJPdXQodGhpcy4jaHN2YSk7XG5cbiAgICAgIHRoaXMuI3VwZGF0ZVNsaWRlcigpO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVTbGlkZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2hzdmEgJiYgdGhpcy4jc2xpZGVyRGltTWF4KSB7XG4gICAgICB0aGlzLnNsaWRlciA9IG5ldyBTbGlkZXJQb3NpdGlvbihcbiAgICAgICAgdGhpcy4jaHN2YS5odWUgKiB0aGlzLiNzbGlkZXJEaW1NYXguaHVlIC0gOCxcbiAgICAgICAgdGhpcy4jaHN2YS5zYXR1cmF0aW9uICogdGhpcy4jc2xpZGVyRGltTWF4LnNhdHVyYXRpb24gLSA4LFxuICAgICAgICAoMSAtIHRoaXMuI2hzdmEudmFsdWUpICogdGhpcy4jc2xpZGVyRGltTWF4LnZhbHVlIC0gOCxcbiAgICAgICAgdGhpcy4jaHN2YS5hbHBoYSAqIHRoaXMuI3NsaWRlckRpbU1heC5hbHBoYSAtIDhcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgI29wZW5QaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc1BpY2tlclZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLiNyZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcbiAgICB0aGlzLmNyZWF0ZU92ZXJsYXkoKTtcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gIH1cblxuICAjc2VuZE1lc3NhZ2UodHlwZTogU2t5Q29sb3JwaWNrZXJNZXNzYWdlVHlwZSkge1xuICAgIHRoaXMubWVzc2FnZVN0cmVhbS5uZXh0KHsgdHlwZSB9KTtcbiAgfVxuXG4gICNoYW5kbGVJbmNvbWluZ01lc3NhZ2VzKG1lc3NhZ2U6IFNreUNvbG9ycGlja2VyTWVzc2FnZSkge1xuICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICBjYXNlIFNreUNvbG9ycGlja2VyTWVzc2FnZVR5cGUuT3BlbjpcbiAgICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgICAgIHRoaXMuI29wZW5QaWNrZXIoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTa3lDb2xvcnBpY2tlck1lc3NhZ2VUeXBlLkNsb3NlOlxuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICB0aGlzLmNsb3NlUGlja2VyKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5Q29sb3JwaWNrZXJNZXNzYWdlVHlwZS5SZXNldDpcbiAgICAgICAgdGhpcy51cGRhdGVQaWNrZXJWYWx1ZXModGhpcy5pbml0aWFsQ29sb3IpO1xuICAgICAgICB0aGlzLmJhY2tncm91bmRDb2xvckZvckRpc3BsYXkgPSB0aGlzLmluaXRpYWxDb2xvcjtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRDb2xvcik7XG4gICAgICAgIC8vIFRPRE86IFRoaXMgY29kZSBhc3N1bWVkIG5vbi1udWxsIHByZS1zdHJpY3QgbW9kZS4gUmVldmFsdWF0ZSBpbiB0aGUgZnV0dXJlP1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sb3JBcHBsaWVkLmVtaXQoeyBjb2xvcjogdGhpcy5zZWxlY3RlZENvbG9yISB9KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5Q29sb3JwaWNrZXJNZXNzYWdlVHlwZS5Ub2dnbGVSZXNldEJ1dHRvbjpcbiAgICAgICAgdGhpcy5zaG93UmVzZXRCdXR0b24gPSAhdGhpcy5zaG93UmVzZXRCdXR0b247XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gICNjcmVhdGVBZmZpeGVyKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuY29sb3JwaWNrZXJSZWYgJiZcbiAgICAgIHRoaXMudHJpZ2dlckJ1dHRvblJlZiAmJlxuICAgICAgdGhpcy4jcGlja2VyVW5zdWJzY3JpYmVcbiAgICApIHtcbiAgICAgIGNvbnN0IGFmZml4ZXIgPSB0aGlzLiNhZmZpeFN2Yy5jcmVhdGVBZmZpeGVyKHRoaXMuY29sb3JwaWNrZXJSZWYpO1xuXG4gICAgICBhZmZpeGVyLnBsYWNlbWVudENoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jcGlja2VyVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLmlzUGlja2VyVmlzaWJsZSA9IGNoYW5nZS5wbGFjZW1lbnQgIT09IG51bGw7XG4gICAgICAgIH0pO1xuXG4gICAgICBhZmZpeGVyLmFmZml4VG8odGhpcy50cmlnZ2VyQnV0dG9uUmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICAgIGVuYWJsZUF1dG9GaXQ6IHRydWUsXG4gICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6ICdsZWZ0JyxcbiAgICAgICAgaXNTdGlja3k6IHRydWUsXG4gICAgICAgIHBsYWNlbWVudDogJ2JlbG93JyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLiNhZmZpeGVyID0gYWZmaXhlcjtcbiAgICB9XG4gIH1cblxuICAjZGVzdHJveUFmZml4ZXIoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMuI2FmZml4ZXIpIHtcbiAgICAgIHRoaXMuI2FmZml4ZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy4jYWZmaXhlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29sb3JwaWNrZXJUZW1wbGF0ZVJlZikge1xuICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMuI292ZXJsYXlTdmMuY3JlYXRlKHtcbiAgICAgICAgZW5hYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgICBlbmFibGVQb2ludGVyRXZlbnRzOiBmYWxzZSxcbiAgICAgICAgZW5hYmxlU2Nyb2xsOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIG92ZXJsYXkuYXR0YWNoVGVtcGxhdGUodGhpcy5jb2xvcnBpY2tlclRlbXBsYXRlUmVmKTtcblxuICAgICAgdGhpcy4jb3ZlcmxheSA9IG92ZXJsYXk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95T3ZlcmxheSgpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy4jb3ZlcmxheSkge1xuICAgICAgdGhpcy4jb3ZlcmxheVN2Yy5jbG9zZSh0aGlzLiNvdmVybGF5KTtcbiAgICAgIHRoaXMuI292ZXJsYXkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgI2FkZFRyaWdnZXJCdXR0b25FdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBmcm9tRXZlbnQod2luZG93LmRvY3VtZW50LCAna2V5ZG93bicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBrZXlib2FyZEV2ZW50ID0gZXZlbnQgYXMgS2V5Ym9hcmRFdmVudDtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5Ym9hcmRFdmVudC5rZXk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChrZXkgPT09ICdlc2NhcGUnKSB7XG4gICAgICAgICAgdGhpcy4jc2VuZE1lc3NhZ2UoU2t5Q29sb3JwaWNrZXJNZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuI3BpY2tlclVuc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLiNwaWNrZXJVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgICB0aGlzLiNwaWNrZXJVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy4jcGlja2VyVW5zdWJzY3JpYmUgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgI2dldEhzdmFWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogU2t5Q29sb3JwaWNrZXJIc3ZhIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgaHN2YTogU2t5Q29sb3JwaWNrZXJIc3ZhIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBpZiAodGhpcy4jYWxwaGFDaGFubmVsID09PSAnaGV4OCcpIHtcbiAgICAgICAgaHN2YSA9IHRoaXMuI3N2Yy5zdHJpbmdUb0hzdmEodmFsdWUsIHRydWUpO1xuICAgICAgICBpZiAoIWhzdmEgJiYgIXRoaXMuI2hzdmEpIHtcbiAgICAgICAgICBoc3ZhID0gdGhpcy4jc3ZjLnN0cmluZ1RvSHN2YSh2YWx1ZSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoc3ZhID0gdGhpcy4jc3ZjLnN0cmluZ1RvSHN2YSh2YWx1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoc3ZhO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvQUVSVCNjb2xvci1jb250cmFzdFxuICAjZ2V0QWNjZXNzaWJsZUljb25Db2xvcihcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IFNreUNvbG9ycGlja2VyT3V0cHV0IHwgdW5kZWZpbmVkXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGJhY2tncm91bmRDb2xvcikge1xuICAgICAgY29uc3QgcmdiID0gYmFja2dyb3VuZENvbG9yLnJnYmE7XG4gICAgICBjb25zdCBicmlnaHRuZXNzID0gTWF0aC5yb3VuZChcbiAgICAgICAgKHJnYi5yZWQgKiAyOTkgKyByZ2IuZ3JlZW4gKiA1ODcgKyByZ2IuYmx1ZSAqIDExNCkgLyAxMDAwXG4gICAgICApO1xuICAgICAgcmV0dXJuIGJyaWdodG5lc3MgPiAxMjUgPyAncmdiKDAsIDAsIDApJyA6ICdyZ2IoMjU1LCAyNTUsIDI1NSknO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktaW5wdXQtZ3JvdXBcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3NreS1jb2xvcnBpY2tlci1oaWRkZW4nOiAhaXNWaXNpYmxlLFxuICAgICdza3ktY29sb3JwaWNrZXItZGlzYWJsZWQnOiBkaXNhYmxlZFxuICB9XCJcbj5cbiAgPGRpdiBbaGlkZGVuXT1cInRydWVcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuXG4gIDxidXR0b25cbiAgICBhcmlhLWhhc3BvcHVwPVwiZGlhbG9nXCJcbiAgICBjbGFzcz1cInNreS1jb2xvcnBpY2tlci1idXR0b25cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNPcGVuID8gY29sb3JwaWNrZXJJZCA6IG51bGxcIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgbGFiZWwgfHxcbiAgICAgIChsYWJlbGxlZEJ5XG4gICAgICAgID8gbnVsbFxuICAgICAgICA6ICgnc2t5dXhfY29sb3JwaWNrZXJfZHJvcGRvd25fYnV0dG9uJyB8IHNreUxpYlJlc291cmNlcykpXG4gICAgXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibGFiZWxsZWRCeVwiXG4gICAgW2F0dHIuaWRdPVwidHJpZ2dlckJ1dHRvbklkXCJcbiAgICBbYXR0ci50aXRsZV09XCJcbiAgICAgIGxhYmVsIHx8XG4gICAgICAobGFiZWxsZWRCeVxuICAgICAgICA/IG51bGxcbiAgICAgICAgOiAoJ3NreXV4X2NvbG9ycGlja2VyX2Ryb3Bkb3duX2J1dHRvbicgfCBza3lMaWJSZXNvdXJjZXMpKVxuICAgIFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LWNvbG9ycGlja2VyLWJ1dHRvbi1kaXNhYmxlZCc6IGRpc2FibGVkXG4gICAgfVwiXG4gICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgJ3NreS1tYXJnaW4taW5saW5lLXNtJzogJ21vZGVybidcbiAgICB9XCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJiYWNrZ3JvdW5kQ29sb3JGb3JEaXNwbGF5XCJcbiAgICAoY2xpY2spPVwib25UcmlnZ2VyQnV0dG9uQ2xpY2soKVwiXG4gICAgI3RyaWdnZXJCdXR0b25SZWZcbiAgPlxuICAgIDxza3ktaWNvblxuICAgICAgKm5nSWY9XCJwaWNrZXJCdXR0b25JY29uXCJcbiAgICAgIGNsYXNzPVwic2t5LWNvbG9ycGlja2VyLWJ1dHRvbi1pY29uXCJcbiAgICAgIFtpY29uXT1cInBpY2tlckJ1dHRvbkljb25cIlxuICAgICAgW2ljb25UeXBlXT1cInBpY2tlckJ1dHRvbkljb25UeXBlXCJcbiAgICAgIFtzaXplXT1cIicxeCdcIlxuICAgICAgW3N0eWxlLmNvbG9yXT1cImljb25Db2xvclwiXG4gICAgPlxuICAgIDwvc2t5LWljb24+XG4gICAgPG5nLWNvbnRhaW5lciAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCI+XG4gICAgICA8c2t5LWljb25cbiAgICAgICAgY2xhc3M9XCJza3ktY29sb3JwaWNrZXItYnV0dG9uLW1vZGVybi1jaGV2cm9uXCJcbiAgICAgICAgaWNvbj1cImNoZXZyb24tZG93blwiXG4gICAgICAgIGljb25UeXBlPVwic2t5dXhcIlxuICAgICAgICBzaXplPVwieHNcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1jb2xvcnBpY2tlci1idXR0b24tbW9kZXJuLWNoZXZyb24tZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgIDwvc2t5LWljb24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYnV0dG9uPlxuXG4gIDxuZy10ZW1wbGF0ZSAjY29sb3JwaWNrZXJUZW1wbGF0ZVJlZj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1jb2xvcnBpY2tlci1jb250YWluZXJcIlxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidHJpZ2dlckJ1dHRvbklkXCJcbiAgICAgIFthdHRyLmlkXT1cImNvbG9ycGlja2VySWRcIlxuICAgICAgW2hpZGRlbl09XCIhaXNQaWNrZXJWaXNpYmxlXCJcbiAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgJ3NreS1zaGFkb3cnOiAnZGVmYXVsdCcsXG4gICAgICAgICdza3ktZWxldmF0aW9uLTQnOiAnbW9kZXJuJ1xuICAgICAgfVwiXG4gICAgICAjY29sb3JwaWNrZXJSZWZcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LWNvbG9ycGlja2VyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNhdHVyYXRpb24tbGlnaHRuZXNzXCJcbiAgICAgICAgICBbY29sb3JdPVwic2xpZGVyLnNhdHVyYXRpb24gLSBzbGlkZXIudmFsdWUgKyAnJ1wiXG4gICAgICAgICAgW3NreUNvbG9ycGlja2VyU2xpZGVyXVxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImh1ZVNsaWRlckNvbG9yXCJcbiAgICAgICAgICBbeEF4aXNdPVwiMVwiXG4gICAgICAgICAgW3lBeGlzXT1cIjFcIlxuICAgICAgICAgIChuZXdDb2xvckNvbnRyYXN0KT1cInNhdHVyYXRpb25BbmRMaWdodG5lc3MgPSAkZXZlbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3Igc2t5LXJvdW5kZWQtY2lyY2xlXCJcbiAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cInNsaWRlci5zYXR1cmF0aW9uXCJcbiAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwic2xpZGVyLnZhbHVlXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3hcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWNvbG9yLWJhY2tncm91bmQgc2t5LXJvdW5kZWQtY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWQtY29sb3Igc2t5LXJvdW5kZWQtY2lyY2xlXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2VsZWN0ZWRDb2xvcj8ucmdiYVRleHRcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImh1ZVwiXG4gICAgICAgICAgICAgIFtza3lDb2xvcnBpY2tlclNsaWRlcl1cbiAgICAgICAgICAgICAgW3hBeGlzXT1cIjFcIlxuICAgICAgICAgICAgICAobmV3Q29sb3JDb250cmFzdCk9XCJodWUgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICAjaHVlU2xpZGVyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvciBza3ktcm91bmRlZC1jaXJjbGVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cInNsaWRlci5odWVcIlxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLmFsbG93VHJhbnNwYXJlbmN5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhbHBoYVwiXG4gICAgICAgICAgICAgIFtza3lDb2xvcnBpY2tlclNsaWRlcl1cbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYWxwaGFTbGlkZXJDb2xvclwiXG4gICAgICAgICAgICAgIFt4QXhpc109XCIxXCJcbiAgICAgICAgICAgICAgKG5ld0NvbG9yQ29udHJhc3QpPVwiYWxwaGFBeGlzID0gJGV2ZW50XCJcbiAgICAgICAgICAgICAgI2FscGhhU2xpZGVyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvciBza3ktcm91bmRlZC1jaXJjbGVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cInNsaWRlci5hbHBoYVwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicmdiYS10ZXh0XCI+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3g+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NreXV4X2NvbG9ycGlja2VyX2FyaWFfaGV4JyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAgICAgICAgIFthdHRyLmZvcl09XCJza3lDb2xvcnBpY2tlckhleElkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ3NreXV4X2NvbG9ycGlja2VyX2hleCcgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgcGF0dGVybj1cIl4jPyhbQS1GYS1mMC05XXs2fXxbQS1GYS1mMC05XXszfSkkXCJcbiAgICAgICAgICAgICAgW2F0dHIuaWRdPVwic2t5Q29sb3JwaWNrZXJIZXhJZFwiXG4gICAgICAgICAgICAgIFtza3lDb2xvcnBpY2tlclRleHRdXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJoZXhUZXh0XCJcbiAgICAgICAgICAgICAgKG5ld0NvbG9yQ29udHJhc3QpPVwiaGV4ID0gJGV2ZW50XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9za3ktaW5wdXQtYm94PlxuICAgICAgICAgIDxza3ktaW5wdXQtYm94PlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWNvbnRyb2wtbGFiZWxcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9jb2xvcnBpY2tlcl9hcmlhX3JlZCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgICAgICAgICBbYXR0ci5mb3JdPVwic2t5Q29sb3JwaWNrZXJSZWRJZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdza3l1eF9jb2xvcnBpY2tlcl9yZWQnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG1heD1cIjI1NVwiXG4gICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cInNreUNvbG9ycGlja2VyUmVkSWRcIlxuICAgICAgICAgICAgICBbbWF4UmFuZ2VdPVwiMjU1XCJcbiAgICAgICAgICAgICAgW3NreUNvbG9ycGlja2VyVGV4dF1cbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInJnYmFUZXh0Py5yZWRcIlxuICAgICAgICAgICAgICAobmV3Q29sb3JDb250cmFzdCk9XCJyZWQgPSAkZXZlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3g+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ3NreXV4X2NvbG9ycGlja2VyX2FyaWFfZ3JlZW4nIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmZvcl09XCJza3lDb2xvcnBpY2tlckdyZWVuSWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnc2t5dXhfY29sb3JwaWNrZXJfZ3JlZW4nIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG1heD1cIjI1NVwiXG4gICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cInNreUNvbG9ycGlja2VyR3JlZW5JZFwiXG4gICAgICAgICAgICAgIFttYXhSYW5nZV09XCIyNTVcIlxuICAgICAgICAgICAgICBbc2t5Q29sb3JwaWNrZXJUZXh0XVxuICAgICAgICAgICAgICBbdmFsdWVdPVwicmdiYVRleHQ/LmdyZWVuXCJcbiAgICAgICAgICAgICAgKG5ld0NvbG9yQ29udHJhc3QpPVwiZ3JlZW4gPSAkZXZlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3g+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ3NreXV4X2NvbG9ycGlja2VyX2FyaWFfYmx1ZScgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2F0dHIuZm9yXT1cInNreUNvbG9ycGlja2VyQmx1ZUlkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ3NreXV4X2NvbG9ycGlja2VyX2JsdWUnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG1heD1cIjI1NVwiXG4gICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cInNreUNvbG9ycGlja2VyQmx1ZUlkXCJcbiAgICAgICAgICAgICAgW21heFJhbmdlXT1cIjI1NVwiXG4gICAgICAgICAgICAgIFtza3lDb2xvcnBpY2tlclRleHRdXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJyZ2JhVGV4dD8uYmx1ZVwiXG4gICAgICAgICAgICAgIChuZXdDb2xvckNvbnRyYXN0KT1cImJsdWUgPSAkZXZlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3ggKm5nSWY9XCJ0aGlzLmFsbG93VHJhbnNwYXJlbmN5XCI+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ3NreXV4X2NvbG9ycGlja2VyX2FyaWFfYWxwaGEnIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmZvcl09XCJza3lDb2xvcnBpY2tlckFscGhhSWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnc2t5dXhfY29sb3JwaWNrZXJfYWxwaGEnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG1heD1cIjFcIlxuICAgICAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICAgICAgcGF0dGVybj1cIlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT9cIlxuICAgICAgICAgICAgICBzdGVwPVwiMC4xXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cInNreUNvbG9ycGlja2VyQWxwaGFJZFwiXG4gICAgICAgICAgICAgIFttYXhSYW5nZV09XCIxXCJcbiAgICAgICAgICAgICAgW3NreUNvbG9ycGlja2VyVGV4dF1cbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInJnYmFUZXh0Py5hbHBoYVwiXG4gICAgICAgICAgICAgIChuZXdDb2xvckNvbnRyYXN0KT1cImFscGhhQ29sb3IgPSAkZXZlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJwcmVzZXRDb2xvcnMgJiYgcHJlc2V0Q29sb3JzLmxlbmd0aFwiXG4gICAgICAgICAgY2xhc3M9XCJza3ktY29sb3JwaWNrZXItcHJlc2V0LWNvbG9yLWFyZWFcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbG9yIG9mIHByZXNldENvbG9ycyB8IHNsaWNlOiAwOjEyOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgKCdza3l1eF9jb2xvcnBpY2tlcl9wcmVzZXRfY29sb3InIHwgc2t5TGliUmVzb3VyY2VzKSArICcgJyArIGNvbG9yXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc2t5LXByZXNldC1jb2xvcic6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgJ3NreS1idG4gc2t5LWJ0bi1saW5rJzogJ21vZGVybidcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjb2xvclwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25QcmVzZXRDbGljayhjb2xvcilcIlxuICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNreS1jb2xvcnBpY2tlci1mb290ZXJcIlxuICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1wYWRkaW5nLWV2ZW4tbGFyZ2UnOiAnZGVmYXVsdCdcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2t5LWNvbG9ycGlja2VyLWNvbHVtblwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnkgc2t5LWJ0bi1jb2xvcnBpY2tlci1hcHBseVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NreXV4X2NvbG9ycGlja2VyX2FwcGx5JyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7ICdza3ktbWFyZ2luLWlubGluZS1zbSc6ICdtb2Rlcm4nIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQXBwbHlDb2xvckNsaWNrKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdza3l1eF9jb2xvcnBpY2tlcl9hcHBseScgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1saW5rIHNreS1idG4tY29sb3JwaWNrZXItY2xvc2VcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9jb2xvcnBpY2tlcl9jbG9zZScgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsQ2xpY2soKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ3NreXV4X2NvbG9ycGlja2VyX2Nsb3NlJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPHNwYW5cbiAgICAqbmdJZj1cImFsbG93VHJhbnNwYXJlbmN5XCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGNsYXNzPVwic2t5LWNvbG9ycGlja2VyLWNoZWNrZXJlZC1iYWNrZ3JvdW5kXCJcbiAgPlxuICA8L3NwYW4+XG5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwic2hvd1Jlc2V0QnV0dG9uXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9jb2xvcnBpY2tlcl9yZXNldCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1jb2xvcnBpY2tlci1yZXNldC1idXR0b24tZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgIH1cIlxuICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICdza3ktY29sb3JwaWNrZXItcmVzZXQtYnV0dG9uJzogJ2RlZmF1bHQnLFxuICAgICAgJ3NreS1idG4gc2t5LWJ0bi1pY29uLWJvcmRlcmxlc3Mgc2t5LWNvbG9ycGlja2VyLXJlc2V0LWJ1dHRvbi1tb2Rlcm4nOlxuICAgICAgICAnbW9kZXJuJ1xuICAgIH1cIlxuICAgIChjbGljayk9XCJvblJlc2V0Q2xpY2soKVwiXG4gID5cbiAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uPVwidGltZXNcIiBzaXplPVwic21cIj4gPC9za3ktaWNvbj5cbiAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiIGljb249XCJ0cmFzaFwiIGljb25UeXBlPVwic2t5dXhcIiBzaXplPVwibGdcIj5cbiAgICA8L3NreS1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
464
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvbG9ycGlja2VyL3NyYy9saWIvbW9kdWxlcy9jb2xvcnBpY2tlci9jb2xvcnBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29sb3JwaWNrZXIvc3JjL2xpYi9tb2R1bGVzL2NvbG9ycGlja2VyL2NvbG9ycGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxzQkFBc0IsR0FNdkIsTUFBTSxhQUFhLENBQUM7QUFJckIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLOUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7O0FBSzdFLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBRXpCOzs7O0dBSUc7QUFRSCxNQUFNLE9BQU8sdUJBQXVCO0lBMlBsQyxZQUNFLFFBQXlCLEVBQ3pCLGNBQWlDLEVBQ2pDLFdBQWtDLEVBQ2xDLFVBQTZCLEVBQzdCLEdBQTBCLEVBQ2QsUUFBMEI7O1FBelB4Qzs7O1dBR0c7UUFFSSx5QkFB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QUM7UUFDRixPQUFPLFVBQVUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUM7S0FDakU7SUFDRCwwQkFBMEI7SUFDMUIsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztxSEFya0JVLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLGlXQUh2QixDQUFDLHFCQUFxQixDQUFDLHVJQThLMUIsV0FBVywrR0FLWCxVQUFVLDJHQUtWLFVBQVUsNkJDMU9wQixrcVVBOFRBOzRGRHpRYSx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0UsaUJBQWlCLGFBR2hCLENBQUMscUJBQXFCLENBQUMsaUJBQ25CLGlCQUFpQixDQUFDLElBQUk7OzBCQW1RbEMsUUFBUTs0Q0EzUEosZ0JBQWdCO3NCQUR0QixLQUFLO2dCQVFDLG9CQUFvQjtzQkFEMUIsS0FBSztnQkFVQyxLQUFLO3NCQURYLEtBQUs7Z0JBVUMsVUFBVTtzQkFEaEIsS0FBSztnQkFPQyxvQkFBb0I7c0JBRDFCLE1BQU07Z0JBT0Esb0JBQW9CO3NCQUQxQixNQUFNO2dCQVFBLGFBQWE7c0JBRG5CLEtBQUs7Z0JBT0MsZUFBZTtzQkFEckIsS0FBSztnQkFzSEksc0JBQXNCO3NCQUgvQixTQUFTO3VCQUFDLHdCQUF3QixFQUFFO3dCQUNuQyxJQUFJLEVBQUUsV0FBVztxQkFDbEI7Z0JBTVMsZ0JBQWdCO3NCQUh6QixTQUFTO3VCQUFDLGtCQUFrQixFQUFFO3dCQUM3QixJQUFJLEVBQUUsVUFBVTtxQkFDakI7Z0JBTWEsY0FBYztzQkFIM0IsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRTt3QkFDM0IsSUFBSSxFQUFFLFVBQVU7cUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNreUFmZml4QXV0b0ZpdENvbnRleHQsXG4gIFNreUFmZml4U2VydmljZSxcbiAgU2t5QWZmaXhlcixcbiAgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICBTa3lPdmVybGF5SW5zdGFuY2UsXG4gIFNreU92ZXJsYXlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lJY29uVHlwZSB9IGZyb20gJ0Bza3l1eC9pbmRpY2F0b3JzJztcbmltcG9ydCB7IFNreVRoZW1lU2VydmljZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTbGlkZXJEaW1lbnNpb24sIFNsaWRlclBvc2l0aW9uIH0gZnJvbSAnLi9jb2xvcnBpY2tlci1jbGFzc2VzJztcbmltcG9ydCB7IFNreUNvbG9ycGlja2VyU2VydmljZSB9IGZyb20gJy4vY29sb3JwaWNrZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lDb2xvcnBpY2tlckNoYW5nZUF4aXMgfSBmcm9tICcuL3R5cGVzL2NvbG9ycGlja2VyLWF4aXMnO1xuaW1wb3J0IHsgU2t5Q29sb3JwaWNrZXJDaGFuZ2VDb2xvciB9IGZyb20gJy4vdHlwZXMvY29sb3JwaWNrZXItY29sb3InO1xuaW1wb3J0IHsgU2t5Q29sb3JwaWNrZXJIc3ZhIH0gZnJvbSAnLi90eXBlcy9jb2xvcnBpY2tlci1oc3ZhJztcbmltcG9ydCB7IFNreUNvbG9ycGlja2VyTWVzc2FnZSB9IGZyb20gJy4vdHlwZXMvY29sb3JwaWNrZXItbWVzc2FnZSc7XG5pbXBvcnQgeyBTa3lDb2xvcnBpY2tlck1lc3NhZ2VUeXBlIH0gZnJvbSAnLi90eXBlcy9jb2xvcnBpY2tlci1tZXNzYWdlLXR5cGUnO1xuaW1wb3J0IHsgU2t5Q29sb3JwaWNrZXJPdXRwdXQgfSBmcm9tICcuL3R5cGVzL2NvbG9ycGlja2VyLW91dHB1dCc7XG5pbXBvcnQgeyBTa3lDb2xvcnBpY2tlclJlc3VsdCB9IGZyb20gJy4vdHlwZXMvY29sb3JwaWNrZXItcmVzdWx0JztcbmltcG9ydCB7IFNreUNvbG9ycGlja2VyUmdiYSB9IGZyb20gJy4vdHlwZXMvY29sb3JwaWNrZXItcmdiYSc7XG5cbmxldCBjb21wb25lbnRJZEluZGV4ID0gMDtcblxuLyoqXG4gKiBQcm92aWRlcyBhIFNLWSBVWC10aGVtZWQgcmVwbGFjZW1lbnQgZm9yIHRoZSBIVE1MIGBpbnB1dGAgZWxlbWVudCB3aXRoIGB0eXBlPVwiY29sb3JcImAuXG4gKiBUaGUgdmFsdWUgdGhhdCB1c2VycyBzZWxlY3QgaXMgZHJpdmVuIHRocm91Z2ggdGhlIGBuZ01vZGVsYCBhdHRyaWJ1dGUgc3BlY2lmaWVkIG9uXG4gKiB0aGUgYGlucHV0YCBlbGVtZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktY29sb3JwaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sb3JwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2xvcnBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtTa3lDb2xvcnBpY2tlclNlcnZpY2VdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lDb2xvcnBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgW0ZvbnQgQXdlc29tZSA0LjddKGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL3Y0LjcvaWNvbnMvKSBpY29uIHRvIG92ZXJsYXkgb24gdG9wIG9mIHRoZSBwaWNrZXIuIERvIG5vdCBzcGVjaWZ5IHRoZSBgZmEgZmEtYCBjbGFzc2VzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwaWNrZXJCdXR0b25JY29uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdHlwZSBvZiBpY29uIHRvIGRpc3BsYXkuIFNwZWNpZnlpbmcgYGZhYCB3aWxsIGRpc3BsYXkgYSBGb250IEF3ZXNvbWUgaWNvbiwgd2hpbGUgc3BlY2lmeWluZyBgc2t5dXhgIHdpbGwgZGlzcGxheSBhbiBpY29uIGZyb20gdGhlIGN1c3RvbSBTS1kgVVggaWNvbiBmb250LiBOb3RlIHRoYXQgdGhlIGN1c3RvbSBTS1kgVVggaWNvbiBmb250IGlzIGN1cnJlbnRseSBpbiBiZXRhLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwaWNrZXJCdXR0b25JY29uVHlwZTogU2t5SWNvblR5cGUgPSAnZmEnO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYW4gQVJJQSBsYWJlbCBmb3IgdGhlIGNvbG9ycGlja2VyLiBUaGlzIHNldHMgdGhlIGNvbG9ycGlja2VyJ3MgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZVxuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvY2hlY2tib3gjYWNjZXNzaWJpbGl0eSlcbiAgICogd2hlbiB0aGUgY29sb3JwaWNrZXIgZG9lcyBub3QgaW5jbHVkZSBhIHZpc2libGUgbGFiZWwuIElmIHRoZSBjb2xvcnBpY2tlciBpbmNsdWRlcyBhIHZpc2libGUgbGFiZWwsIHVzZSBgbGFiZWxsZWRCeWAgaW5zdGVhZC5cbiAgICogQGRlZmF1bHQgXCJTZWxlY3QgY29sb3IgdmFsdWVcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgSFRNTCBlbGVtZW50IElEICh3aXRob3V0IHRoZSBsZWFkaW5nIGAjYCkgb2YgdGhlIGVsZW1lbnQgdGhhdCBsYWJlbHMgdGhlXG4gICAqIGNvbG9ycGlja2VyLiBUaGlzIHNldHMgdGhlIGNvbG9ycGlja2VyJ3MgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9jaGVja2JveCNhY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIGNvbG9ycGlja2VyIGRvZXMgbm90IGluY2x1ZGUgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGxhYmVsYCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBzZWxlY3QgYSBjb2xvciBpbiB0aGUgY29sb3JwaWNrZXIuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkQ29sb3JDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lDb2xvcnBpY2tlck91dHB1dD4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBzZWxlY3QgKipBcHBseSoqIGluIHRoZSBjb2xvcnBpY2tlciB0byBhcHBseSBhIGNvbG9yLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZENvbG9yQXBwbGllZCA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5Q29sb3JwaWNrZXJSZXN1bHQ+KCk7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIGFuIG9ic2VydmFibGUgdG8gc2VuZCBjb21tYW5kcyB0byB0aGUgY29sb3JwaWNrZXIuIFRoZSBjb21tYW5kcyBzaG91bGRcbiAgICogcmVzcGVjdCB0aGUgYFNreUNvbG9yUGlja2VyTWVzc2FnZWAgdHlwZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZXNzYWdlU3RyZWFtID0gbmV3IFN1YmplY3Q8U2t5Q29sb3JwaWNrZXJNZXNzYWdlPigpO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBkaXNwbGF5IGEgcmVzZXQgYnV0dG9uIHRvIGxldCB1c2VycyByZXR1cm4gdG8gdGhlIGRlZmF1bHQgY29sb3IuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd1Jlc2V0QnV0dG9uID0gdHJ1ZTtcblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4jX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGJhY2tncm91bmRDb2xvckZvckRpc3BsYXkodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19iYWNrZ3JvdW5kQ29sb3JGb3JEaXNwbGF5ID0gdmFsdWU7XG4gICAgaWYgKHRoaXMucGlja2VyQnV0dG9uSWNvbikge1xuICAgICAgdGhpcy5pY29uQ29sb3IgPSB0aGlzLiNnZXRBY2Nlc3NpYmxlSWNvbkNvbG9yKHRoaXMuc2VsZWN0ZWRDb2xvcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBiYWNrZ3JvdW5kQ29sb3JGb3JEaXNwbGF5KCk6IHN0cmluZyB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdGhpcy4jX2JhY2tncm91bmRDb2xvckZvckRpc3BsYXkgfHwgJyNmZmYnO1xuICB9XG5cbiAgcHVibGljIHNldCBodWUoY2hhbmdlOiBTa3lDb2xvcnBpY2tlckNoYW5nZUF4aXMpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLiNoc3ZhICYmXG4gICAgICBjaGFuZ2UueENvb3JkaW5hdGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgY2hhbmdlLm1heFJhbmdlICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHRoaXMuI2hzdmEuaHVlID0gY2hhbmdlLnhDb29yZGluYXRlIC8gY2hhbmdlLm1heFJhbmdlO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCByZWQoY2hhbmdlOiBTa3lDb2xvcnBpY2tlckNoYW5nZUNvbG9yKSB7XG4gICAgaWYgKHRoaXMuI2hzdmEpIHtcbiAgICAgIGNvbnN0IHJnYmEgPSB0aGlzLiNzdmMuaHN2YVRvUmdiYSh0aGlzLiNoc3ZhKTtcblxuICAgICAgLy8gVE9ETzogVGhpcyBjb2RlIGFzc3VtZWQgbm9uLW51bGwgcHJlLXN0cmljdCBtb2RlLiBSZWV2YWx1YXRlIGluIHRoZSBmdXR1cmU/XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgcmdiYS5yZWQgPSBjaGFuZ2UuY29sb3JWYWx1ZSEgLyBjaGFuZ2UubWF4UmFuZ2UhO1xuICAgICAgdGhpcy4jaHN2YSA9IHRoaXMuI3N2Yy5yZ2JhVG9Ic3ZhKHJnYmEpO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBncmVlbihjaGFuZ2U6IFNreUNvbG9ycGlja2VyQ2hhbmdlQ29sb3IpIHtcbiAgICBpZiAodGhpcy4jaHN2YSkge1xuICAgICAgY29uc3QgcmdiYSA9IHRoaXMuI3N2Yy5oc3ZhVG9SZ2JhKHRoaXMuI2hzdmEpO1xuXG4gICAgICAvLyBUT0RPOiBUaGlzIGNvZGUgYXNzdW1lZCBub24tbnVsbCBwcmUtc3RyaWN0IG1vZGUuIFJlZXZhbHVhdGUgaW4gdGhlIGZ1dHVyZT9cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICByZ2JhLmdyZWVuID0gY2hhbmdlLmNvbG9yVmFsdWUhIC8gY2hhbmdlLm1heFJhbmdlITtcbiAgICAgIHRoaXMuI2hzdmEgPSB0aGlzLiNzdmMucmdiYVRvSHN2YShyZ2JhKTtcbiAgICAgIHRoaXMuI3VwZGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXQgYmx1ZShjaGFuZ2U6IFNreUNvbG9ycGlja2VyQ2hhbmdlQ29sb3IpIHtcbiAgICBpZiAodGhpcy4jaHN2YSkge1xuICAgICAgY29uc3QgcmdiYSA9IHRoaXMuI3N2Yy5oc3ZhVG9SZ2JhKHRoaXMuI2hzdmEpO1xuXG4gICAgICAvLyBUT0RPOiBUaGlzIGNvZGUgYXNzdW1lZCBub24tbnVsbCBwcmUtc3RyaWN0IG1vZGUuIFJlZXZhbHVhdGUgaW4gdGhlIGZ1dHVyZT9cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICByZ2JhLmJsdWUgPSBjaGFuZ2UuY29sb3JWYWx1ZSEgLyBjaGFuZ2UubWF4UmFuZ2UhO1xuICAgICAgdGhpcy4jaHN2YSA9IHRoaXMuI3N2Yy5yZ2JhVG9Ic3ZhKHJnYmEpO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBhbHBoYUF4aXMoY2hhbmdlOiBTa3lDb2xvcnBpY2tlckNoYW5nZUF4aXMpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLiNoc3ZhICYmXG4gICAgICBjaGFuZ2UueENvb3JkaW5hdGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgY2hhbmdlLm1heFJhbmdlICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHRoaXMuI2hzdmEuYWxwaGEgPSBjaGFuZ2UueENvb3JkaW5hdGUgLyBjaGFuZ2UubWF4UmFuZ2U7XG4gICAgICB0aGlzLiN1cGRhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0IGFscGhhQ29sb3IoY2hhbmdlOiBTa3lDb2xvcnBpY2tlckNoYW5nZUNvbG9yKSB7XG4gICAgaWYgKHRoaXMuI2hzdmEpIHtcbiAgICAgIC8vIFRPRE86IFRoaXMgY29kZSBhc3N1bWVkIG5vbi1udWxsIHByZS1zdHJpY3QgbW9kZS4gUmVldmFsdWF0ZSBpbiB0aGUgZnV0dXJlP1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgIHRoaXMuI2hzdmEuYWxwaGEgPSBjaGFuZ2UuY29sb3JWYWx1ZSEgLyBjaGFuZ2UubWF4UmFuZ2UhO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBoZXgoY2hhbmdlOiBTa3lDb2xvcnBpY2tlckNoYW5nZUNvbG9yKSB7XG4gICAgdGhpcy51cGRhdGVQaWNrZXJWYWx1ZXMoY2hhbmdlLmNvbG9yKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc2F0dXJhdGlvbkFuZExpZ2h0bmVzcyh2YWx1ZTogU2t5Q29sb3JwaWNrZXJDaGFuZ2VBeGlzKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy4jaHN2YSAmJlxuICAgICAgdmFsdWUueENvb3JkaW5hdGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdmFsdWUueEF4aXMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdmFsdWUueUNvb3JkaW5hdGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdmFsdWUueUF4aXMgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdGhpcy4jaHN2YS5zYXR1cmF0aW9uID0gdmFsdWUueENvb3JkaW5hdGUgLyB2YWx1ZS54QXhpcztcbiAgICAgIHRoaXMuI2hzdmEudmFsdWUgPSB2YWx1ZS55Q29vcmRpbmF0ZSAvIHZhbHVlLnlBeGlzO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNreUNvbG9ycGlja2VyQWxwaGFJZDogc3RyaW5nO1xuICBwdWJsaWMgcmV0dXJuRm9ybWF0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBpbml0aWFsQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGxhc3RBcHBsaWVkQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGlzVmlzaWJsZSA9IHRydWU7XG5cbiAgQFZpZXdDaGlsZCgnY29sb3JwaWNrZXJUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgfSlcbiAgcHJvdGVjdGVkIGNvbG9ycGlja2VyVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXJCdXR0b25SZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHJvdGVjdGVkIHRyaWdnZXJCdXR0b25SZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnY29sb3JwaWNrZXJSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHJvdGVjdGVkIHNldCBjb2xvcnBpY2tlclJlZih2YWx1ZTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jX2NvbG9ycGlja2VyUmVmID0gdmFsdWU7XG4gICAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuXG4gICAgICB0aGlzLiNyZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgICAgdGhpcy4jcGlja2VyVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgICAvLyBFbnN1cmUgdGhlIGNvbG9ycGlja2VyIGhhcyBmdWxseSByZW5kZXJlZCBiZWZvcmUgYWRkaW5nIHRoZSBhZmZpeGVyLiBBZGRlZCB0byBhZGRyZXNzIGFcbiAgICAgIC8vIHJhY2UgY29uZGl0aW9uIHdoZW4gcnVubmluZyB1bmRlciBwcm9kdWN0aW9uIGNvbmRpdGlvbnMuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy4jY3JlYXRlQWZmaXhlcigpO1xuICAgICAgICB0aGlzLmlzUGlja2VyVmlzaWJsZSA9IHRydWU7XG5cbiAgICAgICAgdGhpcy4jY29yZUFkYXB0ZXIuZ2V0Rm9jdXNhYmxlQ2hpbGRyZW5BbmRBcHBseUZvY3VzKFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICcuc2t5LWNvbG9ycGlja2VyJyxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgY29sb3JwaWNrZXJSZWYoKTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19jb2xvcnBpY2tlclJlZjtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb2xvcnBpY2tlcklkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBpc09wZW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHRyaWdnZXJCdXR0b25JZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2t5Q29sb3JwaWNrZXJIZXhJZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2t5Q29sb3JwaWNrZXJSZWRJZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2t5Q29sb3JwaWNrZXJHcmVlbklkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBza3lDb2xvcnBpY2tlckJsdWVJZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2xpZGVyOiBTbGlkZXJQb3NpdGlvbjtcbiAgcHJvdGVjdGVkIGFsbG93VHJhbnNwYXJlbmN5OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgYWxwaGFTbGlkZXJDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgaGV4VGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgaHVlU2xpZGVyQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIHByZXNldENvbG9yczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCByZ2JhVGV4dDogU2t5Q29sb3JwaWNrZXJSZ2JhIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRDb2xvcjogU2t5Q29sb3JwaWNrZXJPdXRwdXQgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBpY29uQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIGlzUGlja2VyVmlzaWJsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAjaWRJbmRleDogbnVtYmVyO1xuICAjYWxwaGFDaGFubmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNmb3JtYXQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgI291dHB1dEZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjaHN2YTogU2t5Q29sb3JwaWNrZXJIc3ZhIHwgdW5kZWZpbmVkO1xuICAjc2xpZGVyRGltTWF4OiBTbGlkZXJEaW1lbnNpb247XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI2FmZml4ZXI6IFNreUFmZml4ZXIgfCB1bmRlZmluZWQ7XG4gICNvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2UgfCB1bmRlZmluZWQ7XG4gICNwaWNrZXJVbnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiB8IHVuZGVmaW5lZDtcblxuICAjYWZmaXhTdmM6IFNreUFmZml4U2VydmljZTtcbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI2NvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2U7XG4gICNvdmVybGF5U3ZjOiBTa3lPdmVybGF5U2VydmljZTtcbiAgI3N2YzogU2t5Q29sb3JwaWNrZXJTZXJ2aWNlO1xuICAjdGhlbWVTdmM6IFNreVRoZW1lU2VydmljZSB8IHVuZGVmaW5lZDtcblxuICAjX2JhY2tncm91bmRDb2xvckZvckRpc3BsYXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI19jb2xvcnBpY2tlclJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFmZml4U3ZjOiBTa3lBZmZpeFNlcnZpY2UsXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGNvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gICAgb3ZlcmxheVN2YzogU2t5T3ZlcmxheVNlcnZpY2UsXG4gICAgc3ZjOiBTa3lDb2xvcnBpY2tlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy4jYWZmaXhTdmMgPSBhZmZpeFN2YztcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2NvcmVBZGFwdGVyID0gY29yZUFkYXB0ZXI7XG4gICAgdGhpcy4jb3ZlcmxheVN2YyA9IG92ZXJsYXlTdmM7XG4gICAgdGhpcy4jc3ZjID0gc3ZjO1xuICAgIHRoaXMuI3RoZW1lU3ZjID0gdGhlbWVTdmM7XG5cbiAgICBjb21wb25lbnRJZEluZGV4Kys7XG5cbiAgICB0aGlzLiNpZEluZGV4ID0gY29tcG9uZW50SWRJbmRleDtcbiAgICB0aGlzLnNreUNvbG9ycGlja2VyUmVkSWQgPSBgc2t5LWNvbG9ycGlja2VyLXJlZC0ke3RoaXMuI2lkSW5kZXh9YDtcbiAgICB0aGlzLnNreUNvbG9ycGlja2VySGV4SWQgPSBgc2t5LWNvbG9ycGlja2VyLWhleC0tJHt0aGlzLiNpZEluZGV4fWA7XG4gICAgdGhpcy5za3lDb2xvcnBpY2tlclJlZElkID0gYHNreS1jb2xvcnBpY2tlci1yZWQtLSR7dGhpcy4jaWRJbmRleH1gO1xuICAgIHRoaXMuc2t5Q29sb3JwaWNrZXJHcmVlbklkID0gYHNreS1jb2xvcnBpY2tlci1ncmVlbi0tJHt0aGlzLiNpZEluZGV4fWA7XG4gICAgdGhpcy5za3lDb2xvcnBpY2tlckJsdWVJZCA9IGBza3ktY29sb3JwaWNrZXItYmx1ZS0tJHt0aGlzLiNpZEluZGV4fWA7XG4gICAgdGhpcy5za3lDb2xvcnBpY2tlckFscGhhSWQgPSBgc2t5LWNvbG9ycGlja2VyLWFscGhhLS0ke3RoaXMuI2lkSW5kZXh9YDtcbiAgICB0aGlzLmNvbG9ycGlja2VySWQgPSBgc2t5LWNvbG9ycGlja2VyLS0ke3RoaXMuI2lkSW5kZXh9YDtcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25JZCA9IGBza3ktY29sb3JwaWNrZXItYnV0dG9uLS0ke3RoaXMuI2lkSW5kZXh9YDtcblxuICAgIHRoaXMuI3NsaWRlckRpbU1heCA9IG5ldyBTbGlkZXJEaW1lbnNpb24oMTgyLCAyNzAsIDE3MCwgMTgyKTtcbiAgICB0aGlzLnNsaWRlciA9IG5ldyBTbGlkZXJQb3NpdGlvbigwLCAwLCAwLCAwKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaWFsb2coXG4gICAgY29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBvdXRwdXRGb3JtYXQ6IHN0cmluZyxcbiAgICBwcmVzZXRDb2xvcnM6IEFycmF5PHN0cmluZz4sXG4gICAgYWxwaGFDaGFubmVsOiBzdHJpbmcsXG4gICAgYWxsb3dUcmFuc3BhcmVuY3k6IGJvb2xlYW5cbiAgKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsQ29sb3IgPSBjb2xvcjtcbiAgICB0aGlzLiNvdXRwdXRGb3JtYXQgPSBvdXRwdXRGb3JtYXQ7XG4gICAgdGhpcy5wcmVzZXRDb2xvcnMgPSBwcmVzZXRDb2xvcnM7XG4gICAgdGhpcy4jYWxwaGFDaGFubmVsID0gYWxwaGFDaGFubmVsO1xuICAgIHRoaXMuYWxsb3dUcmFuc3BhcmVuY3kgPSBhbGxvd1RyYW5zcGFyZW5jeTtcblxuICAgIGlmICh0aGlzLiNvdXRwdXRGb3JtYXQgPT09ICdyZ2JhJykge1xuICAgICAgdGhpcy4jZm9ybWF0ID0gMTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuI291dHB1dEZvcm1hdCA9PT0gJ2hzbGEnKSB7XG4gICAgICB0aGlzLiNmb3JtYXQgPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNmb3JtYXQgPSAwO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1lc3NhZ2VTdHJlYW1cbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKG1lc3NhZ2U6IFNreUNvbG9ycGlja2VyTWVzc2FnZSkgPT4ge1xuICAgICAgICB0aGlzLiNoYW5kbGVJbmNvbWluZ01lc3NhZ2VzKG1lc3NhZ2UpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNhZGRUcmlnZ2VyQnV0dG9uRXZlbnRMaXN0ZW5lcnMoKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuI3RoZW1lU3ZjKSB7XG4gICAgICB0aGlzLiN0aGVtZVN2Yy5zZXR0aW5nc0NoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHRoZW1lU2V0dGluZ3MpID0+IHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGNvbnN0IHRoZW1lTmFtZSA9IHRoZW1lU2V0dGluZ3MuY3VycmVudFNldHRpbmdzPy50aGVtZT8ubmFtZTtcblxuICAgICAgICAgIC8vIEh1ZS9hbHBoYSBzbGlkZXIgYmFycyBoYXZlIGRpZmZlcmVudCB3aWR0aHMgaW4gTW9kZXJuIHRoZW1lLlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICAgIGlmICh0aGVtZU5hbWUgPT09ICdtb2Rlcm4nKSB7XG4gICAgICAgICAgICB0aGlzLiNzbGlkZXJEaW1NYXggPSBuZXcgU2xpZGVyRGltZW5zaW9uKDE3NCwgMjcwLCAxNzAsIDE3NCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuI3NsaWRlckRpbU1heCA9IG5ldyBTbGlkZXJEaW1lbnNpb24oMTgyLCAyNzAsIDE3MCwgMTgyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy4jdXBkYXRlU2xpZGVyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuICAgIHRoaXMuI2Rlc3Ryb3lPdmVybGF5KCk7XG4gIH1cblxuICBwdWJsaWMgb25UcmlnZ2VyQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy4jc2VuZE1lc3NhZ2UoU2t5Q29sb3JwaWNrZXJNZXNzYWdlVHlwZS5PcGVuKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZVBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuICAgIHRoaXMuI2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy4jcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25SZWY/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG9uQXBwbHlDb2xvckNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQ29sb3IpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvckNoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkQ29sb3IpO1xuICAgICAgdGhpcy5zZWxlY3RlZENvbG9yQXBwbGllZC5lbWl0KHsgY29sb3I6IHRoaXMuc2VsZWN0ZWRDb2xvciB9KTtcbiAgICAgIHRoaXMubGFzdEFwcGxpZWRDb2xvciA9IHRoaXMuc2VsZWN0ZWRDb2xvci5yZ2JhVGV4dDtcbiAgICAgIHRoaXMudXBkYXRlUGlja2VyVmFsdWVzKHRoaXMubGFzdEFwcGxpZWRDb2xvcik7XG4gICAgICB0aGlzLmJhY2tncm91bmRDb2xvckZvckRpc3BsYXkgPSB0aGlzLnNlbGVjdGVkQ29sb3IucmdiYVRleHQ7XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZVBpY2tlcigpO1xuICB9XG5cbiAgcHVibGljIG9uQ2FuY2VsQ2xpY2soKTogdm9pZCB7XG4gICAgLy8gUmV2ZXJ0IHBpY2tlciB2YWx1ZXMgYmFjayB0byBwcmV2aW91cyBjb2xvci5cbiAgICB0aGlzLnVwZGF0ZVBpY2tlclZhbHVlcyh0aGlzLmJhY2tncm91bmRDb2xvckZvckRpc3BsYXkpO1xuICAgIHRoaXMuY2xvc2VQaWNrZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblByZXNldENsaWNrKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVBpY2tlclZhbHVlcyh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgb25SZXNldENsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuI3NlbmRNZXNzYWdlKFNreUNvbG9ycGlja2VyTWVzc2FnZVR5cGUuUmVzZXQpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVBpY2tlclZhbHVlcyh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgY29uc3QgaHN2YSA9IHRoaXMuI2dldEhzdmFWYWx1ZSh2YWx1ZSk7XG4gICAgaWYgKGhzdmEpIHtcbiAgICAgIHRoaXMuI2hzdmEgPSBoc3ZhO1xuICAgICAgdGhpcy4jdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jaHN2YSkge1xuICAgICAgY29uc3QgcmdiYTogU2t5Q29sb3JwaWNrZXJSZ2JhID0gdGhpcy4jc3ZjLmhzdmFUb1JnYmEodGhpcy4jaHN2YSk7XG4gICAgICBjb25zdCBkUmdiYTogU2t5Q29sb3JwaWNrZXJSZ2JhID0gdGhpcy4jc3ZjLmRlbm9ybWFsaXplUkdCQShyZ2JhKTtcblxuICAgICAgY29uc3QgaHN2YTogU2t5Q29sb3JwaWNrZXJIc3ZhID0ge1xuICAgICAgICBodWU6IHRoaXMuI2hzdmEuaHVlLFxuICAgICAgICBzYXR1cmF0aW9uOiAxLFxuICAgICAgICB2YWx1ZTogMSxcbiAgICAgICAgYWxwaGE6IDEsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBodWVSZ2JhID0gdGhpcy4jc3ZjLmRlbm9ybWFsaXplUkdCQSh0aGlzLiNzdmMuaHN2YVRvUmdiYShoc3ZhKSk7XG5cbiAgICAgIHRoaXMucmdiYVRleHQgPSBkUmdiYTtcbiAgICAgIHRoaXMuaGV4VGV4dCA9IHRoaXMuI3N2Yy5oZXhUZXh0KGRSZ2JhLCB0aGlzLiNhbHBoYUNoYW5uZWwgPT09ICdoZXg4Jyk7XG5cbiAgICAgIHRoaXMuYWxwaGFTbGlkZXJDb2xvciA9IGByZ2JhKCR7ZFJnYmEucmVkfSwke2RSZ2JhLmdyZWVufSwke2RSZ2JhLmJsdWV9LCR7ZFJnYmEuYWxwaGF9KWA7XG4gICAgICB0aGlzLmh1ZVNsaWRlckNvbG9yID0gYHJnYmEoJHtodWVSZ2JhLnJlZH0sJHtodWVSZ2JhLmdyZWVufSwke2h1ZVJnYmEuYmx1ZX0sJHtyZ2JhLmFscGhhfSlgO1xuXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuI2Zvcm1hdCA9PT0gMCAmJlxuICAgICAgICB0aGlzLiNoc3ZhLmFscGhhIDwgMSAmJlxuICAgICAgICB0aGlzLiNhbHBoYUNoYW5uZWwgPT09ICdoZXg2J1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMuI2Zvcm1hdCsrO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNlbGVjdGVkQ29sb3IgPSB0aGlzLiNzdmMuc2t5Q29sb3JwaWNrZXJPdXQodGhpcy4jaHN2YSk7XG5cbiAgICAgIHRoaXMuI3VwZGF0ZVNsaWRlcigpO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVTbGlkZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2hzdmEgJiYgdGhpcy4jc2xpZGVyRGltTWF4KSB7XG4gICAgICB0aGlzLnNsaWRlciA9IG5ldyBTbGlkZXJQb3NpdGlvbihcbiAgICAgICAgdGhpcy4jaHN2YS5odWUgKiB0aGlzLiNzbGlkZXJEaW1NYXguaHVlIC0gOCxcbiAgICAgICAgdGhpcy4jaHN2YS5zYXR1cmF0aW9uICogdGhpcy4jc2xpZGVyRGltTWF4LnNhdHVyYXRpb24gLSA4LFxuICAgICAgICAoMSAtIHRoaXMuI2hzdmEudmFsdWUpICogdGhpcy4jc2xpZGVyRGltTWF4LnZhbHVlIC0gOCxcbiAgICAgICAgdGhpcy4jaHN2YS5hbHBoYSAqIHRoaXMuI3NsaWRlckRpbU1heC5hbHBoYSAtIDhcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgI29wZW5QaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc1BpY2tlclZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLiNyZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMuI2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy4jY3JlYXRlT3ZlcmxheSgpO1xuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgfVxuXG4gICNzZW5kTWVzc2FnZSh0eXBlOiBTa3lDb2xvcnBpY2tlck1lc3NhZ2VUeXBlKSB7XG4gICAgdGhpcy5tZXNzYWdlU3RyZWFtLm5leHQoeyB0eXBlIH0pO1xuICB9XG5cbiAgI2hhbmRsZUluY29taW5nTWVzc2FnZXMobWVzc2FnZTogU2t5Q29sb3JwaWNrZXJNZXNzYWdlKSB7XG4gICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgIGNhc2UgU2t5Q29sb3JwaWNrZXJNZXNzYWdlVHlwZS5PcGVuOlxuICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgdGhpcy4jb3BlblBpY2tlcigpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreUNvbG9ycGlja2VyTWVzc2FnZVR5cGUuQ2xvc2U6XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgIHRoaXMuY2xvc2VQaWNrZXIoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTa3lDb2xvcnBpY2tlck1lc3NhZ2VUeXBlLlJlc2V0OlxuICAgICAgICB0aGlzLnVwZGF0ZVBpY2tlclZhbHVlcyh0aGlzLmluaXRpYWxDb2xvcik7XG4gICAgICAgIHRoaXMuYmFja2dyb3VuZENvbG9yRm9yRGlzcGxheSA9IHRoaXMuaW5pdGlhbENvbG9yO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sb3JDaGFuZ2VkLmVtaXQodGhpcy5zZWxlY3RlZENvbG9yKTtcbiAgICAgICAgLy8gVE9ETzogVGhpcyBjb2RlIGFzc3VtZWQgbm9uLW51bGwgcHJlLXN0cmljdCBtb2RlLiBSZWV2YWx1YXRlIGluIHRoZSBmdXR1cmU/XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvckFwcGxpZWQuZW1pdCh7IGNvbG9yOiB0aGlzLnNlbGVjdGVkQ29sb3IhIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTa3lDb2xvcnBpY2tlck1lc3NhZ2VUeXBlLlRvZ2dsZVJlc2V0QnV0dG9uOlxuICAgICAgICB0aGlzLnNob3dSZXNldEJ1dHRvbiA9ICF0aGlzLnNob3dSZXNldEJ1dHRvbjtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgI2NyZWF0ZUFmZml4ZXIoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5jb2xvcnBpY2tlclJlZiAmJlxuICAgICAgdGhpcy50cmlnZ2VyQnV0dG9uUmVmICYmXG4gICAgICB0aGlzLiNwaWNrZXJVbnN1YnNjcmliZVxuICAgICkge1xuICAgICAgY29uc3QgYWZmaXhlciA9IHRoaXMuI2FmZml4U3ZjLmNyZWF0ZUFmZml4ZXIodGhpcy5jb2xvcnBpY2tlclJlZik7XG5cbiAgICAgIGFmZml4ZXIucGxhY2VtZW50Q2hhbmdlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNwaWNrZXJVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNQaWNrZXJWaXNpYmxlID0gY2hhbmdlLnBsYWNlbWVudCAhPT0gbnVsbDtcbiAgICAgICAgfSk7XG5cbiAgICAgIGFmZml4ZXIuYWZmaXhUbyh0aGlzLnRyaWdnZXJCdXR0b25SZWYubmF0aXZlRWxlbWVudCwge1xuICAgICAgICBhdXRvRml0Q29udGV4dDogU2t5QWZmaXhBdXRvRml0Q29udGV4dC5WaWV3cG9ydCxcbiAgICAgICAgZW5hYmxlQXV0b0ZpdDogdHJ1ZSxcbiAgICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogJ2xlZnQnLFxuICAgICAgICBpc1N0aWNreTogdHJ1ZSxcbiAgICAgICAgcGxhY2VtZW50OiAnYmVsb3cnLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI2FmZml4ZXIgPSBhZmZpeGVyO1xuICAgIH1cbiAgfVxuXG4gICNkZXN0cm95QWZmaXhlcigpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy4jYWZmaXhlcikge1xuICAgICAgdGhpcy4jYWZmaXhlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLiNhZmZpeGVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNjcmVhdGVPdmVybGF5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbG9ycGlja2VyVGVtcGxhdGVSZWYpIHtcbiAgICAgIGNvbnN0IG92ZXJsYXkgPSB0aGlzLiNvdmVybGF5U3ZjLmNyZWF0ZSh7XG4gICAgICAgIGVuYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogZmFsc2UsXG4gICAgICAgIGVuYWJsZVNjcm9sbDogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBvdmVybGF5LmF0dGFjaFRlbXBsYXRlKHRoaXMuY29sb3JwaWNrZXJUZW1wbGF0ZVJlZik7XG5cbiAgICAgIHRoaXMuI292ZXJsYXkgPSBvdmVybGF5O1xuICAgIH1cbiAgfVxuXG4gICNkZXN0cm95T3ZlcmxheSgpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy4jb3ZlcmxheSkge1xuICAgICAgdGhpcy4jb3ZlcmxheVN2Yy5jbG9zZSh0aGlzLiNvdmVybGF5KTtcbiAgICAgIHRoaXMuI292ZXJsYXkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgI2FkZFRyaWdnZXJCdXR0b25FdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBmcm9tRXZlbnQod2luZG93LmRvY3VtZW50LCAna2V5ZG93bicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBrZXlib2FyZEV2ZW50ID0gZXZlbnQgYXMgS2V5Ym9hcmRFdmVudDtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5Ym9hcmRFdmVudC5rZXk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChrZXkgPT09ICdlc2NhcGUnKSB7XG4gICAgICAgICAgdGhpcy4jc2VuZE1lc3NhZ2UoU2t5Q29sb3JwaWNrZXJNZXNzYWdlVHlwZS5DbG9zZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuI3BpY2tlclVuc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLiNwaWNrZXJVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgICB0aGlzLiNwaWNrZXJVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy4jcGlja2VyVW5zdWJzY3JpYmUgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgI2dldEhzdmFWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogU2t5Q29sb3JwaWNrZXJIc3ZhIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgaHN2YTogU2t5Q29sb3JwaWNrZXJIc3ZhIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBpZiAodGhpcy4jYWxwaGFDaGFubmVsID09PSAnaGV4OCcpIHtcbiAgICAgICAgaHN2YSA9IHRoaXMuI3N2Yy5zdHJpbmdUb0hzdmEodmFsdWUsIHRydWUpO1xuICAgICAgICBpZiAoIWhzdmEgJiYgIXRoaXMuI2hzdmEpIHtcbiAgICAgICAgICBoc3ZhID0gdGhpcy4jc3ZjLnN0cmluZ1RvSHN2YSh2YWx1ZSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoc3ZhID0gdGhpcy4jc3ZjLnN0cmluZ1RvSHN2YSh2YWx1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoc3ZhO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvQUVSVCNjb2xvci1jb250cmFzdFxuICAjZ2V0QWNjZXNzaWJsZUljb25Db2xvcihcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IFNreUNvbG9ycGlja2VyT3V0cHV0IHwgdW5kZWZpbmVkXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGJhY2tncm91bmRDb2xvcikge1xuICAgICAgY29uc3QgcmdiID0gYmFja2dyb3VuZENvbG9yLnJnYmE7XG4gICAgICBjb25zdCBicmlnaHRuZXNzID0gTWF0aC5yb3VuZChcbiAgICAgICAgKHJnYi5yZWQgKiAyOTkgKyByZ2IuZ3JlZW4gKiA1ODcgKyByZ2IuYmx1ZSAqIDExNCkgLyAxMDAwXG4gICAgICApO1xuICAgICAgcmV0dXJuIGJyaWdodG5lc3MgPiAxMjUgPyAncmdiKDAsIDAsIDApJyA6ICdyZ2IoMjU1LCAyNTUsIDI1NSknO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktaW5wdXQtZ3JvdXBcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3NreS1jb2xvcnBpY2tlci1oaWRkZW4nOiAhaXNWaXNpYmxlLFxuICAgICdza3ktY29sb3JwaWNrZXItZGlzYWJsZWQnOiBkaXNhYmxlZFxuICB9XCJcbj5cbiAgPGRpdiBbaGlkZGVuXT1cInRydWVcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuXG4gIDxidXR0b25cbiAgICBhcmlhLWhhc3BvcHVwPVwiZGlhbG9nXCJcbiAgICBjbGFzcz1cInNreS1jb2xvcnBpY2tlci1idXR0b25cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNPcGVuID8gY29sb3JwaWNrZXJJZCA6IG51bGxcIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgbGFiZWwgfHxcbiAgICAgIChsYWJlbGxlZEJ5XG4gICAgICAgID8gbnVsbFxuICAgICAgICA6ICgnc2t5dXhfY29sb3JwaWNrZXJfZHJvcGRvd25fYnV0dG9uJyB8IHNreUxpYlJlc291cmNlcykpXG4gICAgXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibGFiZWxsZWRCeVwiXG4gICAgW2F0dHIuaWRdPVwidHJpZ2dlckJ1dHRvbklkXCJcbiAgICBbYXR0ci50aXRsZV09XCJcbiAgICAgIGxhYmVsIHx8XG4gICAgICAobGFiZWxsZWRCeVxuICAgICAgICA/IG51bGxcbiAgICAgICAgOiAoJ3NreXV4X2NvbG9ycGlja2VyX2Ryb3Bkb3duX2J1dHRvbicgfCBza3lMaWJSZXNvdXJjZXMpKVxuICAgIFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LWNvbG9ycGlja2VyLWJ1dHRvbi1kaXNhYmxlZCc6IGRpc2FibGVkXG4gICAgfVwiXG4gICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgJ3NreS1tYXJnaW4taW5saW5lLXNtJzogJ21vZGVybidcbiAgICB9XCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJiYWNrZ3JvdW5kQ29sb3JGb3JEaXNwbGF5XCJcbiAgICAoY2xpY2spPVwib25UcmlnZ2VyQnV0dG9uQ2xpY2soKVwiXG4gICAgI3RyaWdnZXJCdXR0b25SZWZcbiAgPlxuICAgIDxza3ktaWNvblxuICAgICAgKm5nSWY9XCJwaWNrZXJCdXR0b25JY29uXCJcbiAgICAgIGNsYXNzPVwic2t5LWNvbG9ycGlja2VyLWJ1dHRvbi1pY29uXCJcbiAgICAgIFtpY29uXT1cInBpY2tlckJ1dHRvbkljb25cIlxuICAgICAgW2ljb25UeXBlXT1cInBpY2tlckJ1dHRvbkljb25UeXBlXCJcbiAgICAgIFtzaXplXT1cIicxeCdcIlxuICAgICAgW3N0eWxlLmNvbG9yXT1cImljb25Db2xvclwiXG4gICAgPlxuICAgIDwvc2t5LWljb24+XG4gICAgPG5nLWNvbnRhaW5lciAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCI+XG4gICAgICA8c2t5LWljb25cbiAgICAgICAgY2xhc3M9XCJza3ktY29sb3JwaWNrZXItYnV0dG9uLW1vZGVybi1jaGV2cm9uXCJcbiAgICAgICAgaWNvbj1cImNoZXZyb24tZG93blwiXG4gICAgICAgIGljb25UeXBlPVwic2t5dXhcIlxuICAgICAgICBzaXplPVwieHNcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1jb2xvcnBpY2tlci1idXR0b24tbW9kZXJuLWNoZXZyb24tZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgIDwvc2t5LWljb24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvYnV0dG9uPlxuXG4gIDxuZy10ZW1wbGF0ZSAjY29sb3JwaWNrZXJUZW1wbGF0ZVJlZj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1jb2xvcnBpY2tlci1jb250YWluZXJcIlxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidHJpZ2dlckJ1dHRvbklkXCJcbiAgICAgIFthdHRyLmlkXT1cImNvbG9ycGlja2VySWRcIlxuICAgICAgW2hpZGRlbl09XCIhaXNQaWNrZXJWaXNpYmxlXCJcbiAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgJ3NreS1zaGFkb3cnOiAnZGVmYXVsdCcsXG4gICAgICAgICdza3ktZWxldmF0aW9uLTQnOiAnbW9kZXJuJ1xuICAgICAgfVwiXG4gICAgICAjY29sb3JwaWNrZXJSZWZcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LWNvbG9ycGlja2VyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNhdHVyYXRpb24tbGlnaHRuZXNzXCJcbiAgICAgICAgICBbY29sb3JdPVwic2xpZGVyLnNhdHVyYXRpb24gLSBzbGlkZXIudmFsdWUgKyAnJ1wiXG4gICAgICAgICAgW3NreUNvbG9ycGlja2VyU2xpZGVyXVxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImh1ZVNsaWRlckNvbG9yXCJcbiAgICAgICAgICBbeEF4aXNdPVwiMVwiXG4gICAgICAgICAgW3lBeGlzXT1cIjFcIlxuICAgICAgICAgIChuZXdDb2xvckNvbnRyYXN0KT1cInNhdHVyYXRpb25BbmRMaWdodG5lc3MgPSAkZXZlbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3Igc2t5LXJvdW5kZWQtY2lyY2xlXCJcbiAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cInNsaWRlci5zYXR1cmF0aW9uXCJcbiAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwic2xpZGVyLnZhbHVlXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3hcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWNvbG9yLWJhY2tncm91bmQgc2t5LXJvdW5kZWQtY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWQtY29sb3Igc2t5LXJvdW5kZWQtY2lyY2xlXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2VsZWN0ZWRDb2xvcj8ucmdiYVRleHRcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImh1ZVwiXG4gICAgICAgICAgICAgIFtza3lDb2xvcnBpY2tlclNsaWRlcl1cbiAgICAgICAgICAgICAgW3hBeGlzXT1cIjFcIlxuICAgICAgICAgICAgICAobmV3Q29sb3JDb250cmFzdCk9XCJodWUgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICAjaHVlU2xpZGVyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvciBza3ktcm91bmRlZC1jaXJjbGVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cInNsaWRlci5odWVcIlxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLmFsbG93VHJhbnNwYXJlbmN5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhbHBoYVwiXG4gICAgICAgICAgICAgIFtza3lDb2xvcnBpY2tlclNsaWRlcl1cbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYWxwaGFTbGlkZXJDb2xvclwiXG4gICAgICAgICAgICAgIFt4QXhpc109XCIxXCJcbiAgICAgICAgICAgICAgKG5ld0NvbG9yQ29udHJhc3QpPVwiYWxwaGFBeGlzID0gJGV2ZW50XCJcbiAgICAgICAgICAgICAgI2FscGhhU2xpZGVyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvciBza3ktcm91bmRlZC1jaXJjbGVcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cInNsaWRlci5hbHBoYVwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicmdiYS10ZXh0XCI+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3g+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NreXV4X2NvbG9ycGlja2VyX2FyaWFfaGV4JyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAgICAgICAgIFthdHRyLmZvcl09XCJza3lDb2xvcnBpY2tlckhleElkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ3NreXV4X2NvbG9ycGlja2VyX2hleCcgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgcGF0dGVybj1cIl4jPyhbQS1GYS1mMC05XXs2fXxbQS1GYS1mMC05XXszfSkkXCJcbiAgICAgICAgICAgICAgW2F0dHIuaWRdPVwic2t5Q29sb3JwaWNrZXJIZXhJZFwiXG4gICAgICAgICAgICAgIFtza3lDb2xvcnBpY2tlclRleHRdXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJoZXhUZXh0XCJcbiAgICAgICAgICAgICAgKG5ld0NvbG9yQ29udHJhc3QpPVwiaGV4ID0gJGV2ZW50XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9za3ktaW5wdXQtYm94PlxuICAgICAgICAgIDxza3ktaW5wdXQtYm94PlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWNvbnRyb2wtbGFiZWxcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9jb2xvcnBpY2tlcl9hcmlhX3JlZCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgICAgICAgICBbYXR0ci5mb3JdPVwic2t5Q29sb3JwaWNrZXJSZWRJZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdza3l1eF9jb2xvcnBpY2tlcl9yZWQnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG1heD1cIjI1NVwiXG4gICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cInNreUNvbG9ycGlja2VyUmVkSWRcIlxuICAgICAgICAgICAgICBbbWF4UmFuZ2VdPVwiMjU1XCJcbiAgICAgICAgICAgICAgW3NreUNvbG9ycGlja2VyVGV4dF1cbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInJnYmFUZXh0Py5yZWRcIlxuICAgICAgICAgICAgICAobmV3Q29sb3JDb250cmFzdCk9XCJyZWQgPSAkZXZlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3g+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ3NreXV4X2NvbG9ycGlja2VyX2FyaWFfZ3JlZW4nIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmZvcl09XCJza3lDb2xvcnBpY2tlckdyZWVuSWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnc2t5dXhfY29sb3JwaWNrZXJfZ3JlZW4nIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG1heD1cIjI1NVwiXG4gICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cInNreUNvbG9ycGlja2VyR3JlZW5JZFwiXG4gICAgICAgICAgICAgIFttYXhSYW5nZV09XCIyNTVcIlxuICAgICAgICAgICAgICBbc2t5Q29sb3JwaWNrZXJUZXh0XVxuICAgICAgICAgICAgICBbdmFsdWVdPVwicmdiYVRleHQ/LmdyZWVuXCJcbiAgICAgICAgICAgICAgKG5ld0NvbG9yQ29udHJhc3QpPVwiZ3JlZW4gPSAkZXZlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3g+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ3NreXV4X2NvbG9ycGlja2VyX2FyaWFfYmx1ZScgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2F0dHIuZm9yXT1cInNreUNvbG9ycGlja2VyQmx1ZUlkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ3NreXV4X2NvbG9ycGlja2VyX2JsdWUnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG1heD1cIjI1NVwiXG4gICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cInNreUNvbG9ycGlja2VyQmx1ZUlkXCJcbiAgICAgICAgICAgICAgW21heFJhbmdlXT1cIjI1NVwiXG4gICAgICAgICAgICAgIFtza3lDb2xvcnBpY2tlclRleHRdXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJyZ2JhVGV4dD8uYmx1ZVwiXG4gICAgICAgICAgICAgIChuZXdDb2xvckNvbnRyYXN0KT1cImJsdWUgPSAkZXZlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3ggKm5nSWY9XCJ0aGlzLmFsbG93VHJhbnNwYXJlbmN5XCI+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ3NreXV4X2NvbG9ycGlja2VyX2FyaWFfYWxwaGEnIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmZvcl09XCJza3lDb2xvcnBpY2tlckFscGhhSWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnc2t5dXhfY29sb3JwaWNrZXJfYWxwaGEnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG1heD1cIjFcIlxuICAgICAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICAgICAgcGF0dGVybj1cIlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT9cIlxuICAgICAgICAgICAgICBzdGVwPVwiMC4xXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cInNreUNvbG9ycGlja2VyQWxwaGFJZFwiXG4gICAgICAgICAgICAgIFttYXhSYW5nZV09XCIxXCJcbiAgICAgICAgICAgICAgW3NreUNvbG9ycGlja2VyVGV4dF1cbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInJnYmFUZXh0Py5hbHBoYVwiXG4gICAgICAgICAgICAgIChuZXdDb2xvckNvbnRyYXN0KT1cImFscGhhQ29sb3IgPSAkZXZlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJwcmVzZXRDb2xvcnMgJiYgcHJlc2V0Q29sb3JzLmxlbmd0aFwiXG4gICAgICAgICAgY2xhc3M9XCJza3ktY29sb3JwaWNrZXItcHJlc2V0LWNvbG9yLWFyZWFcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbG9yIG9mIHByZXNldENvbG9ycyB8IHNsaWNlOiAwOjEyOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgKCdza3l1eF9jb2xvcnBpY2tlcl9wcmVzZXRfY29sb3InIHwgc2t5TGliUmVzb3VyY2VzKSArICcgJyArIGNvbG9yXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc2t5LXByZXNldC1jb2xvcic6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgJ3NreS1idG4gc2t5LWJ0bi1saW5rJzogJ21vZGVybidcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjb2xvclwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25QcmVzZXRDbGljayhjb2xvcilcIlxuICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNreS1jb2xvcnBpY2tlci1mb290ZXJcIlxuICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1wYWRkaW5nLWV2ZW4tbGFyZ2UnOiAnZGVmYXVsdCdcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2t5LWNvbG9ycGlja2VyLWNvbHVtblwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnkgc2t5LWJ0bi1jb2xvcnBpY2tlci1hcHBseVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NreXV4X2NvbG9ycGlja2VyX2FwcGx5JyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7ICdza3ktbWFyZ2luLWlubGluZS1zbSc6ICdtb2Rlcm4nIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQXBwbHlDb2xvckNsaWNrKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdza3l1eF9jb2xvcnBpY2tlcl9hcHBseScgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1saW5rIHNreS1idG4tY29sb3JwaWNrZXItY2xvc2VcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9jb2xvcnBpY2tlcl9jbG9zZScgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsQ2xpY2soKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ3NreXV4X2NvbG9ycGlja2VyX2Nsb3NlJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPHNwYW5cbiAgICAqbmdJZj1cImFsbG93VHJhbnNwYXJlbmN5XCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGNsYXNzPVwic2t5LWNvbG9ycGlja2VyLWNoZWNrZXJlZC1iYWNrZ3JvdW5kXCJcbiAgPlxuICA8L3NwYW4+XG5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwic2hvd1Jlc2V0QnV0dG9uXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF9jb2xvcnBpY2tlcl9yZXNldCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1jb2xvcnBpY2tlci1yZXNldC1idXR0b24tZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgIH1cIlxuICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICdza3ktY29sb3JwaWNrZXItcmVzZXQtYnV0dG9uJzogJ2RlZmF1bHQnLFxuICAgICAgJ3NreS1idG4gc2t5LWJ0bi1pY29uLWJvcmRlcmxlc3Mgc2t5LWNvbG9ycGlja2VyLXJlc2V0LWJ1dHRvbi1tb2Rlcm4nOlxuICAgICAgICAnbW9kZXJuJ1xuICAgIH1cIlxuICAgIChjbGljayk9XCJvblJlc2V0Q2xpY2soKVwiXG4gID5cbiAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uPVwidGltZXNcIiBzaXplPVwic21cIj4gPC9za3ktaWNvbj5cbiAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiIGljb249XCJ0cmFzaFwiIGljb25UeXBlPVwic2t5dXhcIiBzaXplPVwibGdcIj5cbiAgICA8L3NreS1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
@@ -1,3 +1,5 @@
1
+ var _SkyColorpickerFixture_instances, _SkyColorpickerFixture_debugEl, _SkyColorpickerFixture_fixture, _SkyColorpickerFixture_clickColorpickerButtonEl, _SkyColorpickerFixture_clickColorpickerApplyButtonEl, _SkyColorpickerFixture_getColorpickerInputEl;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
3
  import { By } from '@angular/platform-browser';
2
4
  import { SkyAppTestUtility } from '@skyux-sdk/testing';
3
5
  /**
@@ -6,27 +8,29 @@ import { SkyAppTestUtility } from '@skyux-sdk/testing';
6
8
  */
7
9
  export class SkyColorpickerFixture {
8
10
  constructor(fixture, skyTestId) {
9
- this.fixture = fixture;
10
- this.skyTestId = skyTestId;
11
- this.debugEl = SkyAppTestUtility.getDebugElementByTestId(this.fixture, this.skyTestId, 'sky-colorpicker');
11
+ _SkyColorpickerFixture_instances.add(this);
12
+ _SkyColorpickerFixture_debugEl.set(this, void 0);
13
+ _SkyColorpickerFixture_fixture.set(this, void 0);
14
+ __classPrivateFieldSet(this, _SkyColorpickerFixture_fixture, fixture, "f");
15
+ __classPrivateFieldSet(this, _SkyColorpickerFixture_debugEl, SkyAppTestUtility.getDebugElementByTestId(fixture, skyTestId, 'sky-colorpicker'), "f");
12
16
  }
13
17
  /**
14
18
  * The colorpicker's currently selected color formatted to the `outputFormat`.
15
19
  */
16
20
  get value() {
17
- return this.getColorpickerInputEl().nativeElement.value;
21
+ return __classPrivateFieldGet(this, _SkyColorpickerFixture_instances, "m", _SkyColorpickerFixture_getColorpickerInputEl).call(this).nativeElement.value;
18
22
  }
19
23
  /**
20
24
  * Set the colorpicker's color hex code.
21
25
  * @param hexValue The new color hex code. Must inculde '#'.
22
26
  */
23
27
  async setValueFromHex(hexValue) {
24
- await this.clickColorpickerButtonEl();
28
+ await __classPrivateFieldGet(this, _SkyColorpickerFixture_instances, "m", _SkyColorpickerFixture_clickColorpickerButtonEl).call(this);
25
29
  const hexInput = document.querySelector('input[id^=sky-colorpicker-hex-]');
26
30
  hexInput.value = hexValue;
27
31
  SkyAppTestUtility.fireDomEvent(hexInput, 'input');
28
- await this.clickColorpickerApplyButtonEl();
29
- return this.fixture.whenStable();
32
+ await __classPrivateFieldGet(this, _SkyColorpickerFixture_instances, "m", _SkyColorpickerFixture_clickColorpickerApplyButtonEl).call(this);
33
+ return __classPrivateFieldGet(this, _SkyColorpickerFixture_fixture, "f").whenStable();
30
34
  }
31
35
  /**
32
36
  * Set the colorpicker's color RGB values.
@@ -36,7 +40,7 @@ export class SkyColorpickerFixture {
36
40
  * @param alpha The alpha channel value.
37
41
  */
38
42
  async setValueFromRGBA(red, green, blue, alpha) {
39
- await this.clickColorpickerButtonEl();
43
+ await __classPrivateFieldGet(this, _SkyColorpickerFixture_instances, "m", _SkyColorpickerFixture_clickColorpickerButtonEl).call(this);
40
44
  const rInput = document.querySelector('input[id^=sky-colorpicker-red-]');
41
45
  const gInput = document.querySelector('input[id^=sky-colorpicker-green-]');
42
46
  const bInput = document.querySelector('input[id^=sky-colorpicker-blue-]');
@@ -49,38 +53,36 @@ export class SkyColorpickerFixture {
49
53
  SkyAppTestUtility.fireDomEvent(gInput, 'input');
50
54
  SkyAppTestUtility.fireDomEvent(bInput, 'input');
51
55
  SkyAppTestUtility.fireDomEvent(aInput, 'input');
52
- await this.clickColorpickerApplyButtonEl();
53
- return this.fixture.whenStable();
56
+ await __classPrivateFieldGet(this, _SkyColorpickerFixture_instances, "m", _SkyColorpickerFixture_clickColorpickerApplyButtonEl).call(this);
57
+ return __classPrivateFieldGet(this, _SkyColorpickerFixture_fixture, "f").whenStable();
54
58
  }
55
59
  /**
56
60
  * Set the colorpicker's color to the provided preset color at the given index.
57
61
  * @param presetIndex The index of the color in the `presetColors` list to select.
58
62
  */
59
63
  async setValueFromPresets(presetIndex) {
60
- await this.clickColorpickerButtonEl();
64
+ await __classPrivateFieldGet(this, _SkyColorpickerFixture_instances, "m", _SkyColorpickerFixture_clickColorpickerButtonEl).call(this);
61
65
  const presetColors = document.querySelectorAll('.sky-colorpicker-preset-color-area button');
62
66
  const presetColor = presetColors && presetColors[presetIndex];
63
67
  if (presetColor) {
64
68
  presetColor.click();
65
- this.fixture.detectChanges();
69
+ __classPrivateFieldGet(this, _SkyColorpickerFixture_fixture, "f").detectChanges();
66
70
  }
67
- await this.clickColorpickerApplyButtonEl();
68
- return this.fixture.whenStable();
69
- }
70
- async clickColorpickerButtonEl() {
71
- const colorpickerButton = this.debugEl.query(By.css('sky-colorpicker button')).nativeElement;
72
- colorpickerButton.click();
73
- this.fixture.detectChanges();
74
- return this.fixture.whenStable();
75
- }
76
- async clickColorpickerApplyButtonEl() {
77
- const applyButton = document.querySelector('.sky-btn-colorpicker-apply');
78
- applyButton.click();
79
- this.fixture.detectChanges();
80
- return this.fixture.whenStable();
81
- }
82
- getColorpickerInputEl() {
83
- return this.debugEl.query(By.css('sky-colorpicker input'));
71
+ await __classPrivateFieldGet(this, _SkyColorpickerFixture_instances, "m", _SkyColorpickerFixture_clickColorpickerApplyButtonEl).call(this);
72
+ return __classPrivateFieldGet(this, _SkyColorpickerFixture_fixture, "f").whenStable();
84
73
  }
85
74
  }
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXItZml4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb2xvcnBpY2tlci90ZXN0aW5nL3NyYy9jb2xvcnBpY2tlci1maXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8scUJBQXFCO0lBR2hDLFlBQ1UsT0FBa0MsRUFDbEMsU0FBaUI7UUFEakIsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDbEMsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUV6QixJQUFJLENBQUMsT0FBTyxHQUFHLGlCQUFpQixDQUFDLHVCQUF1QixDQUN0RCxJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxTQUFTLEVBQ2QsaUJBQWlCLENBQ2xCLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBZ0I7UUFDM0MsTUFBTSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUV0QyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUNyQyxpQ0FBaUMsQ0FDZCxDQUFDO1FBRXRCLFFBQVEsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQzFCLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFbEQsTUFBTSxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUUzQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxF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RUFBRSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVidWdFbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IEJ5IH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBTa3lBcHBUZXN0VXRpbGl0eSB9IGZyb20gJ0Bza3l1eC1zZGsvdGVzdGluZyc7XG5cbi8qKlxuICogQWxsb3dzIGludGVyYWN0aW9uIHdpdGggYSBTS1kgVVggY29sb3JwaWNrZXIgY29tcG9uZW50LlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lDb2xvcnBpY2tlckZpeHR1cmUge1xuICBwcml2YXRlIGRlYnVnRWw6IERlYnVnRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8dW5rbm93bj4sXG4gICAgcHJpdmF0ZSBza3lUZXN0SWQ6IHN0cmluZ1xuICApIHtcbiAgICB0aGlzLmRlYnVnRWwgPSBTa3lBcHBUZXN0VXRpbGl0eS5nZXREZWJ1Z0VsZW1lbnRCeVRlc3RJZChcbiAgICAgIHRoaXMuZml4dHVyZSxcbiAgICAgIHRoaXMuc2t5VGVzdElkLFxuICAgICAgJ3NreS1jb2xvcnBpY2tlcidcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb2xvcnBpY2tlcidzIGN1cnJlbnRseSBzZWxlY3RlZCBjb2xvciBmb3JtYXR0ZWQgdG8gdGhlIGBvdXRwdXRGb3JtYXRgLlxuICAgKi9cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldENvbG9ycGlja2VySW5wdXRFbCgpLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjb2xvcnBpY2tlcidzIGNvbG9yIGhleCBjb2RlLlxuICAgKiBAcGFyYW0gaGV4VmFsdWUgVGhlIG5ldyBjb2xvciBoZXggY29kZS4gTXVzdCBpbmN1bGRlICcjJy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZXRWYWx1ZUZyb21IZXgoaGV4VmFsdWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuY2xpY2tDb2xvcnBpY2tlckJ1dHRvbkVsKCk7XG5cbiAgICBjb25zdCBoZXhJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnaW5wdXRbaWRePXNreS1jb2xvcnBpY2tlci1oZXgtXSdcbiAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICBoZXhJbnB1dC52YWx1ZSA9IGhleFZhbHVlO1xuICAgIFNreUFwcFRlc3RVdGlsaXR5LmZpcmVEb21FdmVudChoZXhJbnB1dCwgJ2lucHV0Jyk7XG5cbiAgICBhd2FpdCB0aGlzLmNsaWNrQ29sb3JwaWNrZXJBcHBseUJ1dHRvbkVsKCk7XG5cbiAgICByZXR1cm4gdGhpcy5maXh0dXJlLndoZW5TdGFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNvbG9ycGlja2VyJ3MgY29sb3IgUkdCIHZhbHVlcy5cbiAgICogQHBhcmFtIHJlZCBUaGUgcmVkIGNvbG9yIHZhbHVlLlxuICAgKiBAcGFyYW0gZ3JlZW4gVGhlIGdyZWVuIGNvbG9yIHZhbHVlLlxuICAgKiBAcGFyYW0gYmx1ZSBUaGUgYmx1ZSBjb2xvciB2YWx1ZS5cbiAgICogQHBhcmFtIGFscGhhIFRoZSBhbHBoYSBjaGFubmVsIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNldFZhbHVlRnJvbVJHQkEoXG4gICAgcmVkOiBudW1iZXIsXG4gICAgZ3JlZW46IG51bWJlcixcbiAgICBibHVlOiBudW1iZXIsXG4gICAgYWxwaGE6IG51bWJlclxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmNsaWNrQ29sb3JwaWNrZXJCdXR0b25FbCgpO1xuXG4gICAgY29uc3QgcklucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdpbnB1dFtpZF49c2t5LWNvbG9ycGlja2VyLXJlZC1dJ1xuICAgICkgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCBnSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ2lucHV0W2lkXj1za3ktY29sb3JwaWNrZXItZ3JlZW4tXSdcbiAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgYklucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdpbnB1dFtpZF49c2t5LWNvbG9ycGlja2VyLWJsdWUtXSdcbiAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgYUlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdpbnB1dFtpZF49c2t5LWNvbG9ycGlja2VyLWFscGhhLV0nXG4gICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgcklucHV0LnZhbHVlID0gcmVkLnRvU3RyaW5nKCk7XG4gICAgZ0lucHV0LnZhbHVlID0gZ3JlZW4udG9TdHJpbmcoKTtcbiAgICBiSW5wdXQudmFsdWUgPSBibHVlLnRvU3RyaW5nKCk7XG4gICAgYUlucHV0LnZhbHVlID0gYWxwaGEudG9TdHJpbmcoKTtcblxuICAgIFNreUFwcFRlc3RVdGlsaXR5LmZpcmVEb21FdmVudChySW5wdXQsICdpbnB1dCcpO1xuICAgIFNreUFwcFRlc3RVdGlsaXR5LmZpcmVEb21FdmVudChnSW5wdXQsICdpbnB1dCcpO1xuICAgIFNreUFwcFRlc3RVdGlsaXR5LmZpcmVEb21FdmVudChiSW5wdXQsICdpbnB1dCcpO1xuICAgIFNreUFwcFRlc3RVdGlsaXR5LmZpcmVEb21FdmVudChhSW5wdXQsICdpbnB1dCcpO1xuXG4gICAgYXdhaXQgdGhpcy5jbGlja0NvbG9ycGlja2VyQXBwbHlCdXR0b25FbCgpO1xuXG4gICAgcmV0dXJuIHRoaXMuZml4dHVyZS53aGVuU3RhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjb2xvcnBpY2tlcidzIGNvbG9yIHRvIHRoZSBwcm92aWRlZCBwcmVzZXQgY29sb3IgYXQgdGhlIGdpdmVuIGluZGV4LlxuICAgKiBAcGFyYW0gcHJlc2V0SW5kZXggVGhlIGluZGV4IG9mIHRoZSBjb2xvciBpbiB0aGUgYHByZXNldENvbG9yc2AgbGlzdCB0byBzZWxlY3QuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2V0VmFsdWVGcm9tUHJlc2V0cyhwcmVzZXRJbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5jbGlja0NvbG9ycGlja2VyQnV0dG9uRWwoKTtcblxuICAgIGNvbnN0IHByZXNldENvbG9ycyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAnLnNreS1jb2xvcnBpY2tlci1wcmVzZXQtY29sb3ItYXJlYSBidXR0b24nXG4gICAgKTtcbiAgICBjb25zdCBwcmVzZXRDb2xvciA9XG4gICAgICBwcmVzZXRDb2xvcnMgJiYgKHByZXNldENvbG9yc1twcmVzZXRJbmRleF0gYXMgSFRNTEJ1dHRvbkVsZW1lbnQpO1xuXG4gICAgaWYgKHByZXNldENvbG9yKSB7XG4gICAgICBwcmVzZXRDb2xvci5jbGljaygpO1xuICAgICAgdGhpcy5maXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmNsaWNrQ29sb3JwaWNrZXJBcHBseUJ1dHRvbkVsKCk7XG5cbiAgICByZXR1cm4gdGhpcy5maXh0dXJlLndoZW5TdGFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2xpY2tDb2xvcnBpY2tlckJ1dHRvbkVsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbG9ycGlja2VyQnV0dG9uID0gdGhpcy5kZWJ1Z0VsLnF1ZXJ5KFxuICAgICAgQnkuY3NzKCdza3ktY29sb3JwaWNrZXIgYnV0dG9uJylcbiAgICApLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjb2xvcnBpY2tlckJ1dHRvbi5jbGljaygpO1xuXG4gICAgdGhpcy5maXh0dXJlLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHJldHVybiB0aGlzLmZpeHR1cmUud2hlblN0YWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjbGlja0NvbG9ycGlja2VyQXBwbHlCdXR0b25FbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBhcHBseUJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnLnNreS1idG4tY29sb3JwaWNrZXItYXBwbHknXG4gICAgKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcblxuICAgIGFwcGx5QnV0dG9uLmNsaWNrKCk7XG5cbiAgICB0aGlzLmZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgcmV0dXJuIHRoaXMuZml4dHVyZS53aGVuU3RhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbG9ycGlja2VySW5wdXRFbCgpOiBEZWJ1Z0VsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmRlYnVnRWwucXVlcnkoQnkuY3NzKCdza3ktY29sb3JwaWNrZXIgaW5wdXQnKSk7XG4gIH1cbn1cbiJdfQ==
75
+ _SkyColorpickerFixture_debugEl = new WeakMap(), _SkyColorpickerFixture_fixture = new WeakMap(), _SkyColorpickerFixture_instances = new WeakSet(), _SkyColorpickerFixture_clickColorpickerButtonEl = async function _SkyColorpickerFixture_clickColorpickerButtonEl() {
76
+ const colorpickerButton = __classPrivateFieldGet(this, _SkyColorpickerFixture_debugEl, "f").query(By.css('sky-colorpicker button')).nativeElement;
77
+ colorpickerButton.click();
78
+ __classPrivateFieldGet(this, _SkyColorpickerFixture_fixture, "f").detectChanges();
79
+ return __classPrivateFieldGet(this, _SkyColorpickerFixture_fixture, "f").whenStable();
80
+ }, _SkyColorpickerFixture_clickColorpickerApplyButtonEl = async function _SkyColorpickerFixture_clickColorpickerApplyButtonEl() {
81
+ const applyButton = document.querySelector('.sky-btn-colorpicker-apply');
82
+ applyButton.click();
83
+ __classPrivateFieldGet(this, _SkyColorpickerFixture_fixture, "f").detectChanges();
84
+ return __classPrivateFieldGet(this, _SkyColorpickerFixture_fixture, "f").whenStable();
85
+ }, _SkyColorpickerFixture_getColorpickerInputEl = function _SkyColorpickerFixture_getColorpickerInputEl() {
86
+ return __classPrivateFieldGet(this, _SkyColorpickerFixture_debugEl, "f").query(By.css('sky-colorpicker input'));
87
+ };
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXItZml4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb2xvcnBpY2tlci90ZXN0aW5nL3NyYy9jb2xvcnBpY2tlci1maXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXZEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFJaEMsWUFBWSxPQUFrQyxFQUFFLFNBQWlCOztRQUhqRSxpREFBdUI7UUFDdkIsaURBQW9DO1FBR2xDLHVCQUFBLElBQUksa0NBQVksT0FBTyxNQUFBLENBQUM7UUFDeEIsdUJBQUEsSUFBSSxrQ0FBWSxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FDdkQsT0FBTyxFQUNQLFNBQVMsRUFDVCxpQkFBaUIsQ0FDbEIsTUFBQSxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxLQUFLO1FBQ2QsT0FBTyx1QkFBQSxJQUFJLHNGQUF1QixNQUEzQixJQUFJLENBQXlCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUMzRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLGVBQWUsQ0FBQyxRQUFnQjtRQUMzQyxNQUFNLHVCQUFBLElBQUkseUZBQTBCLE1BQTlCLElBQUksQ0FBNEIsQ0FBQztRQUV2QyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUNyQyxpQ0FBaUMsQ0FDZCxDQUFDO1FBRXRCLFFBQVEsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1FBQzFCLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFbEQsTUFBTSx1QkFBQSxJQUFJLDhGQUErQixNQUFuQyxJQUFJLENBQWlDLENBQUM7UUFFNUMsT0FBTyx1QkFBQSxJQUFJLHNDQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDM0IsR0FBVyxFQUNYLEtBQWEsRUFDYixJQUFZLEVBQ1osS0FBYTtRQUViLE1BQU0sdUJBQUEsSUFBSSx5RkFBMEIsTUFBOUIsSUFBSSxDQUE0QixDQUFDO1FBRXZDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQ25DLGlDQUFpQyxDQUNkLENBQUM7UUFDdEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FDbkMsbUNBQW1DLENBQ2hCLENBQUM7UUFDdEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FDbkMsa0NBQWtDLENBQ2YsQ0FBQztRQUN0QixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUNuQyxtQ0FBbUMsQ0FDaEIsQ0FBQztRQUV0QixNQUFNLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQixNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVoQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELGlCQUFpQixDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEQsaUJBQWlCLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRCxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWhELE1BQU0sdUJBQUEsSUFBSSw4RkFBK0IsTUFBbkMsSUFBSSxDQUFpQyxDQUFDO1FBRTVDLE9BQU8sdUJBQUEsSUFBSSxzQ0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsV0FBbUI7UUFDbEQsTUFBTSx1QkFBQSxJQUFJLHlGQUEwQixNQUE5QixJQUFJLENBQTRCLENBQUM7UUFFdkMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUM1QywyQ0FBMkMsQ0FDNUMsQ0FBQztRQUNGLE1BQU0sV0FBVyxHQUNmLFlBQVksSUFBSyxZQUFZLENBQUMsV0FBVyxDQUF1QixDQUFDO1FBRW5FLElBQUksV0FBVyxFQUFFO1lBQ2YsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BCLHVCQUFBLElBQUksc0NBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMvQjtRQUVELE1BQU0sdUJBQUEsSUFBSSw4RkFBK0IsTUFBbkMsSUFBSSxDQUFpQyxDQUFDO1FBRTVDLE9BQU8sdUJBQUEsSUFBSSxzQ0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BDLENBQUM7Q0E2QkY7b01BM0JDLEtBQUs7SUFDSCxNQUFNLGlCQUFpQixHQUFHLHVCQUFBLElBQUksc0NBQVMsQ0FBQyxLQUFLLENBQzNDLEVBQUUsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FDakMsQ0FBQyxhQUFhLENBQUM7SUFFaEIsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFMUIsdUJBQUEsSUFBSSxzQ0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBRTlCLE9BQU8sdUJBQUEsSUFBSSxzQ0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3BDLENBQUMseURBRUQsS0FBSztJQUNILE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQ3hDLDRCQUE0QixDQUNSLENBQUM7SUFFdkIsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRXBCLHVCQUFBLElBQUksc0NBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUU5QixPQUFPLHVCQUFBLElBQUksc0NBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNwQyxDQUFDO0lBR0MsT0FBTyx1QkFBQSxJQUFJLHNDQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO0FBQzlELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWJ1Z0VsZW1lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudEZpeHR1cmUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHsgQnkgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFNreUFwcFRlc3RVdGlsaXR5IH0gZnJvbSAnQHNreXV4LXNkay90ZXN0aW5nJztcblxuLyoqXG4gKiBBbGxvd3MgaW50ZXJhY3Rpb24gd2l0aCBhIFNLWSBVWCBjb2xvcnBpY2tlciBjb21wb25lbnQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreUNvbG9ycGlja2VyRml4dHVyZSB7XG4gICNkZWJ1Z0VsOiBEZWJ1Z0VsZW1lbnQ7XG4gICNmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPHVua25vd24+O1xuXG4gIGNvbnN0cnVjdG9yKGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8dW5rbm93bj4sIHNreVRlc3RJZDogc3RyaW5nKSB7XG4gICAgdGhpcy4jZml4dHVyZSA9IGZpeHR1cmU7XG4gICAgdGhpcy4jZGVidWdFbCA9IFNreUFwcFRlc3RVdGlsaXR5LmdldERlYnVnRWxlbWVudEJ5VGVzdElkKFxuICAgICAgZml4dHVyZSxcbiAgICAgIHNreVRlc3RJZCxcbiAgICAgICdza3ktY29sb3JwaWNrZXInXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29sb3JwaWNrZXIncyBjdXJyZW50bHkgc2VsZWN0ZWQgY29sb3IgZm9ybWF0dGVkIHRvIHRoZSBgb3V0cHV0Rm9ybWF0YC5cbiAgICovXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jZ2V0Q29sb3JwaWNrZXJJbnB1dEVsKCkubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNvbG9ycGlja2VyJ3MgY29sb3IgaGV4IGNvZGUuXG4gICAqIEBwYXJhbSBoZXhWYWx1ZSBUaGUgbmV3IGNvbG9yIGhleCBjb2RlLiBNdXN0IGluY3VsZGUgJyMnLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNldFZhbHVlRnJvbUhleChoZXhWYWx1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy4jY2xpY2tDb2xvcnBpY2tlckJ1dHRvbkVsKCk7XG5cbiAgICBjb25zdCBoZXhJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnaW5wdXRbaWRePXNreS1jb2xvcnBpY2tlci1oZXgtXSdcbiAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICBoZXhJbnB1dC52YWx1ZSA9IGhleFZhbHVlO1xuICAgIFNreUFwcFRlc3RVdGlsaXR5LmZpcmVEb21FdmVudChoZXhJbnB1dCwgJ2lucHV0Jyk7XG5cbiAgICBhd2FpdCB0aGlzLiNjbGlja0NvbG9ycGlja2VyQXBwbHlCdXR0b25FbCgpO1xuXG4gICAgcmV0dXJuIHRoaXMuI2ZpeHR1cmUud2hlblN0YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgY29sb3JwaWNrZXIncyBjb2xvciBSR0IgdmFsdWVzLlxuICAgKiBAcGFyYW0gcmVkIFRoZSByZWQgY29sb3IgdmFsdWUuXG4gICAqIEBwYXJhbSBncmVlbiBUaGUgZ3JlZW4gY29sb3IgdmFsdWUuXG4gICAqIEBwYXJhbSBibHVlIFRoZSBibHVlIGNvbG9yIHZhbHVlLlxuICAgKiBAcGFyYW0gYWxwaGEgVGhlIGFscGhhIGNoYW5uZWwgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2V0VmFsdWVGcm9tUkdCQShcbiAgICByZWQ6IG51bWJlcixcbiAgICBncmVlbjogbnVtYmVyLFxuICAgIGJsdWU6IG51bWJlcixcbiAgICBhbHBoYTogbnVtYmVyXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuI2NsaWNrQ29sb3JwaWNrZXJCdXR0b25FbCgpO1xuXG4gICAgY29uc3QgcklucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdpbnB1dFtpZF49c2t5LWNvbG9ycGlja2VyLXJlZC1dJ1xuICAgICkgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCBnSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ2lucHV0W2lkXj1za3ktY29sb3JwaWNrZXItZ3JlZW4tXSdcbiAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgYklucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdpbnB1dFtpZF49c2t5LWNvbG9ycGlja2VyLWJsdWUtXSdcbiAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgYUlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdpbnB1dFtpZF49c2t5LWNvbG9ycGlja2VyLWFscGhhLV0nXG4gICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgcklucHV0LnZhbHVlID0gcmVkLnRvU3RyaW5nKCk7XG4gICAgZ0lucHV0LnZhbHVlID0gZ3JlZW4udG9TdHJpbmcoKTtcbiAgICBiSW5wdXQudmFsdWUgPSBibHVlLnRvU3RyaW5nKCk7XG4gICAgYUlucHV0LnZhbHVlID0gYWxwaGEudG9TdHJpbmcoKTtcblxuICAgIFNreUFwcFRlc3RVdGlsaXR5LmZpcmVEb21FdmVudChySW5wdXQsICdpbnB1dCcpO1xuICAgIFNreUFwcFRlc3RVdGlsaXR5LmZpcmVEb21FdmVudChnSW5wdXQsICdpbnB1dCcpO1xuICAgIFNreUFwcFRlc3RVdGlsaXR5LmZpcmVEb21FdmVudChiSW5wdXQsICdpbnB1dCcpO1xuICAgIFNreUFwcFRlc3RVdGlsaXR5LmZpcmVEb21FdmVudChhSW5wdXQsICdpbnB1dCcpO1xuXG4gICAgYXdhaXQgdGhpcy4jY2xpY2tDb2xvcnBpY2tlckFwcGx5QnV0dG9uRWwoKTtcblxuICAgIHJldHVybiB0aGlzLiNmaXh0dXJlLndoZW5TdGFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNvbG9ycGlja2VyJ3MgY29sb3IgdG8gdGhlIHByb3ZpZGVkIHByZXNldCBjb2xvciBhdCB0aGUgZ2l2ZW4gaW5kZXguXG4gICAqIEBwYXJhbSBwcmVzZXRJbmRleCBUaGUgaW5kZXggb2YgdGhlIGNvbG9yIGluIHRoZSBgcHJlc2V0Q29sb3JzYCBsaXN0IHRvIHNlbGVjdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZXRWYWx1ZUZyb21QcmVzZXRzKHByZXNldEluZGV4OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLiNjbGlja0NvbG9ycGlja2VyQnV0dG9uRWwoKTtcblxuICAgIGNvbnN0IHByZXNldENvbG9ycyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAnLnNreS1jb2xvcnBpY2tlci1wcmVzZXQtY29sb3ItYXJlYSBidXR0b24nXG4gICAgKTtcbiAgICBjb25zdCBwcmVzZXRDb2xvciA9XG4gICAgICBwcmVzZXRDb2xvcnMgJiYgKHByZXNldENvbG9yc1twcmVzZXRJbmRleF0gYXMgSFRNTEJ1dHRvbkVsZW1lbnQpO1xuXG4gICAgaWYgKHByZXNldENvbG9yKSB7XG4gICAgICBwcmVzZXRDb2xvci5jbGljaygpO1xuICAgICAgdGhpcy4jZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy4jY2xpY2tDb2xvcnBpY2tlckFwcGx5QnV0dG9uRWwoKTtcblxuICAgIHJldHVybiB0aGlzLiNmaXh0dXJlLndoZW5TdGFibGUoKTtcbiAgfVxuXG4gIGFzeW5jICNjbGlja0NvbG9ycGlja2VyQnV0dG9uRWwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY29sb3JwaWNrZXJCdXR0b24gPSB0aGlzLiNkZWJ1Z0VsLnF1ZXJ5KFxuICAgICAgQnkuY3NzKCdza3ktY29sb3JwaWNrZXIgYnV0dG9uJylcbiAgICApLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjb2xvcnBpY2tlckJ1dHRvbi5jbGljaygpO1xuXG4gICAgdGhpcy4jZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICByZXR1cm4gdGhpcy4jZml4dHVyZS53aGVuU3RhYmxlKCk7XG4gIH1cblxuICBhc3luYyAjY2xpY2tDb2xvcnBpY2tlckFwcGx5QnV0dG9uRWwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYXBwbHlCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJy5za3ktYnRuLWNvbG9ycGlja2VyLWFwcGx5J1xuICAgICkgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG5cbiAgICBhcHBseUJ1dHRvbi5jbGljaygpO1xuXG4gICAgdGhpcy4jZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICByZXR1cm4gdGhpcy4jZml4dHVyZS53aGVuU3RhYmxlKCk7XG4gIH1cblxuICAjZ2V0Q29sb3JwaWNrZXJJbnB1dEVsKCk6IERlYnVnRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuI2RlYnVnRWwucXVlcnkoQnkuY3NzKCdza3ktY29sb3JwaWNrZXIgaW5wdXQnKSk7XG4gIH1cbn1cbiJdfQ==