ngx-toastr 8.7.2 → 8.7.3

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.
@@ -2,6 +2,7 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes} checked by tsc
4
4
  */
5
+ export { ToastContainerDirective, ToastContainerModule } from './toastr/toast.directive';
5
6
  export { Toast } from './toastr/toast.component';
6
7
  export { ToastrService } from './toastr/toastr.service';
7
8
  export { ToastPackage } from './toastr/toastr-config';
@@ -9,9 +10,10 @@ export { DefaultGlobalConfig } from './toastr/default-config';
9
10
  export { ToastrModule } from './toastr/toastr.module';
10
11
  export { ToastRef, ToastInjector } from './toastr/toast-injector';
11
12
  export { TOAST_CONFIG } from './toastr/toast-token';
13
+ export { ToastNoAnimation, ToastNoAnimationModule } from './toastr/toast-noanimation.component';
12
14
  export { ComponentPortal, BasePortalHost } from './portal/portal';
13
15
  export { Overlay, OVERLAY_PROVIDERS } from './overlay/overlay';
14
16
  export { OverlayContainer } from './overlay/overlay-container';
15
17
  export { OverlayRef } from './overlay/overlay-ref';
16
18
 
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10b2FzdHIvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxzQkFBYywwQkFBMEIsQ0FBQztBQUN6Qyw4QkFBYyx5QkFBeUIsQ0FBQztBQUN4Qyw2QkFBYyx3QkFBd0IsQ0FBQztBQUN2QyxvQ0FBYyx5QkFBeUIsQ0FBQztBQUN4Qyw2QkFBYyx3QkFBd0IsQ0FBQztBQUN2Qyx3Q0FBYyx5QkFBeUIsQ0FBQztBQUN4Qyw2QkFBYyxzQkFBc0IsQ0FBQztBQUVyQyxnREFBYyxpQkFBaUIsQ0FBQztBQUNoQywyQ0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxpQ0FBYyw2QkFBNkIsQ0FBQztBQUM1QywyQkFBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdG9hc3RyL3RvYXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RvYXN0ci90b2FzdHIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3RvYXN0ci90b2FzdHItY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vdG9hc3RyL2RlZmF1bHQtY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vdG9hc3RyL3RvYXN0ci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi90b2FzdHIvdG9hc3QtaW5qZWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi90b2FzdHIvdG9hc3QtdG9rZW4nO1xuXG5leHBvcnQgKiBmcm9tICcuL3BvcnRhbC9wb3J0YWwnO1xuZXhwb3J0ICogZnJvbSAnLi9vdmVybGF5L292ZXJsYXknO1xuZXhwb3J0ICogZnJvbSAnLi9vdmVybGF5L292ZXJsYXktY29udGFpbmVyJztcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcmxheS9vdmVybGF5LXJlZic7XG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10b2FzdHIvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw4REFBYywwQkFBMEIsQ0FBQztBQUN6QyxzQkFBYywwQkFBMEIsQ0FBQztBQUN6Qyw4QkFBYyx5QkFBeUIsQ0FBQztBQUN4Qyw2QkFBYyx3QkFBd0IsQ0FBQztBQUN2QyxvQ0FBYyx5QkFBeUIsQ0FBQztBQUN4Qyw2QkFBYyx3QkFBd0IsQ0FBQztBQUN2Qyx3Q0FBYyx5QkFBeUIsQ0FBQztBQUN4Qyw2QkFBYyxzQkFBc0IsQ0FBQztBQUNyQyx5REFBYyxzQ0FBc0MsQ0FBQztBQUVyRCxnREFBYyxpQkFBaUIsQ0FBQztBQUNoQywyQ0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxpQ0FBYyw2QkFBNkIsQ0FBQztBQUM1QywyQkFBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdG9hc3RyL3RvYXN0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3RvYXN0ci90b2FzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90b2FzdHIvdG9hc3RyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90b2FzdHIvdG9hc3RyLWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL3RvYXN0ci9kZWZhdWx0LWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL3RvYXN0ci90b2FzdHIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vdG9hc3RyL3RvYXN0LWluamVjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdG9hc3RyL3RvYXN0LXRva2VuJztcbmV4cG9ydCAqIGZyb20gJy4vdG9hc3RyL3RvYXN0LW5vYW5pbWF0aW9uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vcG9ydGFsL3BvcnRhbCc7XG5leHBvcnQgKiBmcm9tICcuL292ZXJsYXkvb3ZlcmxheSc7XG5leHBvcnQgKiBmcm9tICcuL292ZXJsYXkvb3ZlcmxheS1jb250YWluZXInO1xuZXhwb3J0ICogZnJvbSAnLi9vdmVybGF5L292ZXJsYXktcmVmJztcbiJdfQ==
@@ -0,0 +1,285 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes} checked by tsc
4
+ */
5
+ import { CommonModule } from '@angular/common';
6
+ import { ApplicationRef, Component, HostBinding, HostListener, NgModule, } from '@angular/core';
7
+ import { ToastPackage } from './toastr-config';
8
+ import { ToastrService } from './toastr.service';
9
+ var ToastNoAnimation = /** @class */ (function () {
10
+ function ToastNoAnimation(toastrService, toastPackage, appRef) {
11
+ var _this = this;
12
+ this.toastrService = toastrService;
13
+ this.toastPackage = toastPackage;
14
+ this.appRef = appRef;
15
+ /**
16
+ * width of progress bar
17
+ */
18
+ this.width = -1;
19
+ /**
20
+ * a combination of toast type and options.toastClass
21
+ */
22
+ this.toastClasses = '';
23
+ /**
24
+ * controls animation
25
+ */
26
+ this.state = 'inactive';
27
+ this.message = toastPackage.message;
28
+ this.title = toastPackage.title;
29
+ this.options = toastPackage.config;
30
+ this.toastClasses = toastPackage.toastType + " " + toastPackage.config.toastClass;
31
+ this.sub = toastPackage.toastRef.afterActivate().subscribe(function () {
32
+ _this.activateToast();
33
+ });
34
+ this.sub1 = toastPackage.toastRef.manualClosed().subscribe(function () {
35
+ _this.remove();
36
+ });
37
+ }
38
+ Object.defineProperty(ToastNoAnimation.prototype, "displayStyle", {
39
+ get: /**
40
+ * @return {?}
41
+ */
42
+ function () {
43
+ if (this.state === 'inactive') {
44
+ return 'none';
45
+ }
46
+ return 'inherit';
47
+ },
48
+ enumerable: true,
49
+ configurable: true
50
+ });
51
+ /**
52
+ * @return {?}
53
+ */
54
+ ToastNoAnimation.prototype.ngOnDestroy = /**
55
+ * @return {?}
56
+ */
57
+ function () {
58
+ this.sub.unsubscribe();
59
+ this.sub1.unsubscribe();
60
+ clearInterval(this.intervalId);
61
+ clearTimeout(this.timeout);
62
+ };
63
+ /**
64
+ * activates toast and sets timeout
65
+ */
66
+ /**
67
+ * activates toast and sets timeout
68
+ * @return {?}
69
+ */
70
+ ToastNoAnimation.prototype.activateToast = /**
71
+ * activates toast and sets timeout
72
+ * @return {?}
73
+ */
74
+ function () {
75
+ var _this = this;
76
+ this.state = 'active';
77
+ if (!this.options.disableTimeOut && this.options.timeOut) {
78
+ this.timeout = setTimeout(function () {
79
+ _this.remove();
80
+ }, this.options.timeOut);
81
+ this.hideTime = new Date().getTime() + this.options.timeOut;
82
+ if (this.options.progressBar) {
83
+ this.intervalId = setInterval(function () { return _this.updateProgress(); }, 10);
84
+ }
85
+ }
86
+ if (this.options.onActivateTick) {
87
+ this.appRef.tick();
88
+ }
89
+ };
90
+ /**
91
+ * updates progress bar width
92
+ */
93
+ /**
94
+ * updates progress bar width
95
+ * @return {?}
96
+ */
97
+ ToastNoAnimation.prototype.updateProgress = /**
98
+ * updates progress bar width
99
+ * @return {?}
100
+ */
101
+ function () {
102
+ if (this.width === 0 || this.width === 100 || !this.options.timeOut) {
103
+ return;
104
+ }
105
+ var /** @type {?} */ now = new Date().getTime();
106
+ var /** @type {?} */ remaining = this.hideTime - now;
107
+ this.width = remaining / this.options.timeOut * 100;
108
+ if (this.options.progressAnimation === 'increasing') {
109
+ this.width = 100 - this.width;
110
+ }
111
+ if (this.width <= 0) {
112
+ this.width = 0;
113
+ }
114
+ if (this.width >= 100) {
115
+ this.width = 100;
116
+ }
117
+ };
118
+ /**
119
+ * tells toastrService to remove this toast after animation time
120
+ */
121
+ /**
122
+ * tells toastrService to remove this toast after animation time
123
+ * @return {?}
124
+ */
125
+ ToastNoAnimation.prototype.remove = /**
126
+ * tells toastrService to remove this toast after animation time
127
+ * @return {?}
128
+ */
129
+ function () {
130
+ var _this = this;
131
+ if (this.state === 'removed') {
132
+ return;
133
+ }
134
+ clearTimeout(this.timeout);
135
+ this.state = 'removed';
136
+ this.timeout = setTimeout(function () { return _this.toastrService.remove(_this.toastPackage.toastId); });
137
+ };
138
+ /**
139
+ * @return {?}
140
+ */
141
+ ToastNoAnimation.prototype.tapToast = /**
142
+ * @return {?}
143
+ */
144
+ function () {
145
+ if (this.state === 'removed') {
146
+ return;
147
+ }
148
+ this.toastPackage.triggerTap();
149
+ if (this.options.tapToDismiss) {
150
+ this.remove();
151
+ }
152
+ };
153
+ /**
154
+ * @return {?}
155
+ */
156
+ ToastNoAnimation.prototype.stickAround = /**
157
+ * @return {?}
158
+ */
159
+ function () {
160
+ if (this.state === 'removed') {
161
+ return;
162
+ }
163
+ clearTimeout(this.timeout);
164
+ this.options.timeOut = 0;
165
+ this.hideTime = 0;
166
+ // disable progressBar
167
+ clearInterval(this.intervalId);
168
+ this.width = 0;
169
+ };
170
+ /**
171
+ * @return {?}
172
+ */
173
+ ToastNoAnimation.prototype.delayedHideToast = /**
174
+ * @return {?}
175
+ */
176
+ function () {
177
+ var _this = this;
178
+ if (this.options.disableTimeOut
179
+ || this.options.extendedTimeOut === 0
180
+ || this.state === 'removed') {
181
+ return;
182
+ }
183
+ this.timeout = setTimeout(function () { return _this.remove(); }, this.options.extendedTimeOut);
184
+ this.options.timeOut = this.options.extendedTimeOut;
185
+ this.hideTime = new Date().getTime() + (this.options.timeOut || 0);
186
+ this.width = -1;
187
+ if (this.options.progressBar) {
188
+ this.intervalId = setInterval(function () { return _this.updateProgress(); }, 10);
189
+ }
190
+ };
191
+ ToastNoAnimation.decorators = [
192
+ { type: Component, args: [{
193
+ selector: '[toast-component]',
194
+ template: "\n <button *ngIf=\"options.closeButton\" (click)=\"remove()\" class=\"toast-close-button\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div *ngIf=\"title\" [class]=\"options.titleClass\" [attr.aria-label]=\"title\">\n {{ title }}\n </div>\n <div *ngIf=\"message && options.enableHtml\" role=\"alert\" aria-live=\"polite\"\n [class]=\"options.messageClass\" [innerHTML]=\"message\">\n </div>\n <div *ngIf=\"message && !options.enableHtml\" role=\"alert\" aria-live=\"polite\"\n [class]=\"options.messageClass\" [attr.aria-label]=\"message\">\n {{ message }}\n </div>\n <div *ngIf=\"options.progressBar\">\n <div class=\"toast-progress\" [style.width]=\"width + '%'\"></div>\n </div>\n ",
195
+ },] },
196
+ ];
197
+ /** @nocollapse */
198
+ ToastNoAnimation.ctorParameters = function () { return [
199
+ { type: ToastrService, },
200
+ { type: ToastPackage, },
201
+ { type: ApplicationRef, },
202
+ ]; };
203
+ ToastNoAnimation.propDecorators = {
204
+ "toastClasses": [{ type: HostBinding, args: ['class',] },],
205
+ "displayStyle": [{ type: HostBinding, args: ['style.display',] },],
206
+ "tapToast": [{ type: HostListener, args: ['click',] },],
207
+ "stickAround": [{ type: HostListener, args: ['mouseenter',] },],
208
+ "delayedHideToast": [{ type: HostListener, args: ['mouseleave',] },],
209
+ };
210
+ return ToastNoAnimation;
211
+ }());
212
+ export { ToastNoAnimation };
213
+ function ToastNoAnimation_tsickle_Closure_declarations() {
214
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
215
+ ToastNoAnimation.decorators;
216
+ /**
217
+ * @nocollapse
218
+ * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
219
+ */
220
+ ToastNoAnimation.ctorParameters;
221
+ /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
222
+ ToastNoAnimation.propDecorators;
223
+ /** @type {?} */
224
+ ToastNoAnimation.prototype.message;
225
+ /** @type {?} */
226
+ ToastNoAnimation.prototype.title;
227
+ /** @type {?} */
228
+ ToastNoAnimation.prototype.options;
229
+ /**
230
+ * width of progress bar
231
+ * @type {?}
232
+ */
233
+ ToastNoAnimation.prototype.width;
234
+ /**
235
+ * a combination of toast type and options.toastClass
236
+ * @type {?}
237
+ */
238
+ ToastNoAnimation.prototype.toastClasses;
239
+ /**
240
+ * controls animation
241
+ * @type {?}
242
+ */
243
+ ToastNoAnimation.prototype.state;
244
+ /** @type {?} */
245
+ ToastNoAnimation.prototype.timeout;
246
+ /** @type {?} */
247
+ ToastNoAnimation.prototype.intervalId;
248
+ /** @type {?} */
249
+ ToastNoAnimation.prototype.hideTime;
250
+ /** @type {?} */
251
+ ToastNoAnimation.prototype.sub;
252
+ /** @type {?} */
253
+ ToastNoAnimation.prototype.sub1;
254
+ /** @type {?} */
255
+ ToastNoAnimation.prototype.toastrService;
256
+ /** @type {?} */
257
+ ToastNoAnimation.prototype.toastPackage;
258
+ /** @type {?} */
259
+ ToastNoAnimation.prototype.appRef;
260
+ }
261
+ var ToastNoAnimationModule = /** @class */ (function () {
262
+ function ToastNoAnimationModule() {
263
+ }
264
+ ToastNoAnimationModule.decorators = [
265
+ { type: NgModule, args: [{
266
+ imports: [CommonModule],
267
+ declarations: [ToastNoAnimation],
268
+ exports: [ToastNoAnimation],
269
+ entryComponents: [ToastNoAnimation],
270
+ },] },
271
+ ];
272
+ return ToastNoAnimationModule;
273
+ }());
274
+ export { ToastNoAnimationModule };
275
+ function ToastNoAnimationModule_tsickle_Closure_declarations() {
276
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
277
+ ToastNoAnimationModule.decorators;
278
+ /**
279
+ * @nocollapse
280
+ * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
281
+ */
282
+ ToastNoAnimationModule.ctorParameters;
283
+ }
284
+
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Qtbm9hbmltYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXRvYXN0ci8iLCJzb3VyY2VzIjpbInRvYXN0ci90b2FzdC1ub2FuaW1hdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFFBQVEsR0FFVCxNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQW9CLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7SUFnRC9DLDBCQUNZLGFBQTRCLEVBQy9CLGNBQ0csTUFBc0I7UUFIbEMsaUJBaUJDO1FBaEJXLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQy9CLGlCQUFZLEdBQVosWUFBWTtRQUNULFdBQU0sR0FBTixNQUFNLENBQWdCOzs7O3FCQXZCMUIsQ0FBQyxDQUFDOzs7OzRCQUUyQixFQUFFOzs7O3FCQVcvQixVQUFVO1FBWWhCLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQU0sWUFBWSxDQUFDLFNBQVMsU0FDM0MsWUFBWSxDQUFDLE1BQU0sQ0FBQyxVQUNwQixDQUFDO1FBQ0gsSUFBSSxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN6RCxLQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQWdKNUIsUUFBUSxTQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQ2hDLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUMzQixlQUFlLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDcEM7O2lDQTFMRDs7U0EyTGEsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBBcHBsaWNhdGlvblJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIE5nTW9kdWxlLFxyXG4gIE9uRGVzdHJveSxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgSW5kaXZpZHVhbENvbmZpZywgVG9hc3RQYWNrYWdlIH0gZnJvbSAnLi90b2FzdHItY29uZmlnJztcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJy4vdG9hc3RyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdbdG9hc3QtY29tcG9uZW50XScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICA8YnV0dG9uICpuZ0lmPVwib3B0aW9ucy5jbG9zZUJ1dHRvblwiIChjbGljayk9XCJyZW1vdmUoKVwiIGNsYXNzPVwidG9hc3QtY2xvc2UtYnV0dG9uXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCI+XHJcbiAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gIDwvYnV0dG9uPlxyXG4gIDxkaXYgKm5nSWY9XCJ0aXRsZVwiIFtjbGFzc109XCJvcHRpb25zLnRpdGxlQ2xhc3NcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInRpdGxlXCI+XHJcbiAgICB7eyB0aXRsZSB9fVxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJtZXNzYWdlICYmIG9wdGlvbnMuZW5hYmxlSHRtbFwiIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXHJcbiAgICBbY2xhc3NdPVwib3B0aW9ucy5tZXNzYWdlQ2xhc3NcIiBbaW5uZXJIVE1MXT1cIm1lc3NhZ2VcIj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwibWVzc2FnZSAmJiAhb3B0aW9ucy5lbmFibGVIdG1sXCIgcm9sZT1cImFsZXJ0XCIgYXJpYS1saXZlPVwicG9saXRlXCJcclxuICAgIFtjbGFzc109XCJvcHRpb25zLm1lc3NhZ2VDbGFzc1wiIFthdHRyLmFyaWEtbGFiZWxdPVwibWVzc2FnZVwiPlxyXG4gICAge3sgbWVzc2FnZSB9fVxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJvcHRpb25zLnByb2dyZXNzQmFyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidG9hc3QtcHJvZ3Jlc3NcIiBbc3R5bGUud2lkdGhdPVwid2lkdGggKyAnJSdcIj48L2Rpdj5cclxuICA8L2Rpdj5cclxuICBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9hc3ROb0FuaW1hdGlvbiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgbWVzc2FnZT86IHN0cmluZyB8IFNhZmVIdG1sIHwgbnVsbDtcclxuICB0aXRsZT86IHN0cmluZztcclxuICBvcHRpb25zOiBJbmRpdmlkdWFsQ29uZmlnO1xyXG4gIC8qKiB3aWR0aCBvZiBwcm9ncmVzcyBiYXIgKi9cclxuICB3aWR0aCA9IC0xO1xyXG4gIC8qKiBhIGNvbWJpbmF0aW9uIG9mIHRvYXN0IHR5cGUgYW5kIG9wdGlvbnMudG9hc3RDbGFzcyAqL1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSB0b2FzdENsYXNzZXMgPSAnJztcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5kaXNwbGF5JylcclxuICBnZXQgZGlzcGxheVN0eWxlKCkge1xyXG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdpbmFjdGl2ZScpIHtcclxuICAgICAgcmV0dXJuICdub25lJztcclxuICAgIH1cclxuICAgIHJldHVybiAnaW5oZXJpdCc7XHJcbiAgfVxyXG5cclxuICAvKiogY29udHJvbHMgYW5pbWF0aW9uICovXHJcbiAgc3RhdGUgPSAnaW5hY3RpdmUnO1xyXG4gIHByaXZhdGUgdGltZW91dDogYW55O1xyXG4gIHByaXZhdGUgaW50ZXJ2YWxJZDogYW55O1xyXG4gIHByaXZhdGUgaGlkZVRpbWU6IG51bWJlcjtcclxuICBwcml2YXRlIHN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgc3ViMTogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCB0b2FzdHJTZXJ2aWNlOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgcHVibGljIHRvYXN0UGFja2FnZTogVG9hc3RQYWNrYWdlLFxyXG4gICAgcHJvdGVjdGVkIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXHJcbiAgKSB7XHJcbiAgICB0aGlzLm1lc3NhZ2UgPSB0b2FzdFBhY2thZ2UubWVzc2FnZTtcclxuICAgIHRoaXMudGl0bGUgPSB0b2FzdFBhY2thZ2UudGl0bGU7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0b2FzdFBhY2thZ2UuY29uZmlnO1xyXG4gICAgdGhpcy50b2FzdENsYXNzZXMgPSBgJHt0b2FzdFBhY2thZ2UudG9hc3RUeXBlfSAke1xyXG4gICAgICB0b2FzdFBhY2thZ2UuY29uZmlnLnRvYXN0Q2xhc3NcclxuICAgIH1gO1xyXG4gICAgdGhpcy5zdWIgPSB0b2FzdFBhY2thZ2UudG9hc3RSZWYuYWZ0ZXJBY3RpdmF0ZSgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYWN0aXZhdGVUb2FzdCgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN1YjEgPSB0b2FzdFBhY2thZ2UudG9hc3RSZWYubWFudWFsQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5yZW1vdmUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnN1YjEudW5zdWJzY3JpYmUoKTtcclxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKTtcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBhY3RpdmF0ZXMgdG9hc3QgYW5kIHNldHMgdGltZW91dFxyXG4gICAqL1xyXG4gIGFjdGl2YXRlVG9hc3QoKSB7XHJcbiAgICB0aGlzLnN0YXRlID0gJ2FjdGl2ZSc7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5kaXNhYmxlVGltZU91dCAmJiB0aGlzLm9wdGlvbnMudGltZU91dCkge1xyXG4gICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnJlbW92ZSgpO1xyXG4gICAgICB9LCB0aGlzLm9wdGlvbnMudGltZU91dCk7XHJcbiAgICAgIHRoaXMuaGlkZVRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIHRoaXMub3B0aW9ucy50aW1lT3V0O1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnByb2dyZXNzQmFyKSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy51cGRhdGVQcm9ncmVzcygpLCAxMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMub25BY3RpdmF0ZVRpY2spIHtcclxuICAgICAgdGhpcy5hcHBSZWYudGljaygpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiB1cGRhdGVzIHByb2dyZXNzIGJhciB3aWR0aFxyXG4gICAqL1xyXG4gIHVwZGF0ZVByb2dyZXNzKCkge1xyXG4gICAgaWYgKHRoaXMud2lkdGggPT09IDAgfHwgdGhpcy53aWR0aCA9PT0gMTAwIHx8ICF0aGlzLm9wdGlvbnMudGltZU91dCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIGNvbnN0IHJlbWFpbmluZyA9IHRoaXMuaGlkZVRpbWUgLSBub3c7XHJcbiAgICB0aGlzLndpZHRoID0gcmVtYWluaW5nIC8gdGhpcy5vcHRpb25zLnRpbWVPdXQgKiAxMDA7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnByb2dyZXNzQW5pbWF0aW9uID09PSAnaW5jcmVhc2luZycpIHtcclxuICAgICAgdGhpcy53aWR0aCA9IDEwMCAtIHRoaXMud2lkdGg7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy53aWR0aCA8PSAwKSB7XHJcbiAgICAgIHRoaXMud2lkdGggPSAwO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMud2lkdGggPj0gMTAwKSB7XHJcbiAgICAgIHRoaXMud2lkdGggPSAxMDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiB0ZWxscyB0b2FzdHJTZXJ2aWNlIHRvIHJlbW92ZSB0aGlzIHRvYXN0IGFmdGVyIGFuaW1hdGlvbiB0aW1lXHJcbiAgICovXHJcbiAgcmVtb3ZlKCkge1xyXG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdyZW1vdmVkJykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcclxuICAgIHRoaXMuc3RhdGUgPSAncmVtb3ZlZCc7XHJcbiAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KFxyXG4gICAgICAoKSA9PiB0aGlzLnRvYXN0clNlcnZpY2UucmVtb3ZlKHRoaXMudG9hc3RQYWNrYWdlLnRvYXN0SWQpLFxyXG4gICAgKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxyXG4gIHRhcFRvYXN0KCkge1xyXG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdyZW1vdmVkJykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRvYXN0UGFja2FnZS50cmlnZ2VyVGFwKCk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnRhcFRvRGlzbWlzcykge1xyXG4gICAgICB0aGlzLnJlbW92ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcclxuICBzdGlja0Fyb3VuZCgpIHtcclxuICAgIGlmICh0aGlzLnN0YXRlID09PSAncmVtb3ZlZCcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XHJcbiAgICB0aGlzLm9wdGlvbnMudGltZU91dCA9IDA7XHJcbiAgICB0aGlzLmhpZGVUaW1lID0gMDtcclxuXHJcbiAgICAvLyBkaXNhYmxlIHByb2dyZXNzQmFyXHJcbiAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxJZCk7XHJcbiAgICB0aGlzLndpZHRoID0gMDtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXHJcbiAgZGVsYXllZEhpZGVUb2FzdCgpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZGlzYWJsZVRpbWVPdXRcclxuICAgICAgfHwgdGhpcy5vcHRpb25zLmV4dGVuZGVkVGltZU91dCA9PT0gMFxyXG4gICAgICB8fCB0aGlzLnN0YXRlID09PSAncmVtb3ZlZCcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dChcclxuICAgICAgKCkgPT4gdGhpcy5yZW1vdmUoKSxcclxuICAgICAgdGhpcy5vcHRpb25zLmV4dGVuZGVkVGltZU91dCxcclxuICAgICk7XHJcbiAgICB0aGlzLm9wdGlvbnMudGltZU91dCA9IHRoaXMub3B0aW9ucy5leHRlbmRlZFRpbWVPdXQ7XHJcbiAgICB0aGlzLmhpZGVUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgKyAodGhpcy5vcHRpb25zLnRpbWVPdXQgfHwgMCk7XHJcbiAgICB0aGlzLndpZHRoID0gLTE7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnByb2dyZXNzQmFyKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHRoaXMudXBkYXRlUHJvZ3Jlc3MoKSwgMTApO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICBkZWNsYXJhdGlvbnM6IFtUb2FzdE5vQW5pbWF0aW9uXSxcclxuICBleHBvcnRzOiBbVG9hc3ROb0FuaW1hdGlvbl0sXHJcbiAgZW50cnlDb21wb25lbnRzOiBbVG9hc3ROb0FuaW1hdGlvbl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2FzdE5vQW5pbWF0aW9uTW9kdWxlIHt9XHJcbiJdfQ==