@coolon/angular-ui-powerups 0.0.91 → 0.0.93

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.
Files changed (62) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +2104 -1817
  2. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  3. package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
  4. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  5. package/coolon-angular-ui-powerups.d.ts +23 -19
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +23 -19
  8. package/esm2015/index.js +2 -2
  9. package/esm2015/lib/interaction/services/dialog-interaction.service.js +3 -3
  10. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +52 -10
  11. package/esm2015/lib/place/guards/abstract-enter-place.guard.js +296 -0
  12. package/esm2015/lib/place/guards/leave-place.guard.js +47 -0
  13. package/esm2015/lib/place/guards/noop-auth-guard.service.js +30 -0
  14. package/esm2015/lib/place/index.js +5 -3
  15. package/esm2015/lib/place/navigation-session.js +7 -18
  16. package/esm2015/lib/place/place-router.js +60 -9
  17. package/esm2015/lib/place/place.decorator.js +1 -1
  18. package/esm2015/lib/place/place.module.js +4 -2
  19. package/esm2015/lib/place/places/noop-gateway-place.component.js +58 -0
  20. package/esm2015/public_api.js +2 -2
  21. package/esm5/coolon-angular-ui-powerups.js +23 -19
  22. package/esm5/index.js +2 -2
  23. package/esm5/lib/interaction/services/dialog-interaction.service.js +3 -3
  24. package/esm5/lib/place/components/place-outlet/place-outlet.component.js +52 -10
  25. package/esm5/lib/place/guards/abstract-enter-place.guard.js +372 -0
  26. package/esm5/lib/place/guards/leave-place.guard.js +55 -0
  27. package/esm5/lib/place/guards/noop-auth-guard.service.js +39 -0
  28. package/esm5/lib/place/index.js +5 -3
  29. package/esm5/lib/place/navigation-session.js +6 -17
  30. package/esm5/lib/place/place-router.js +74 -8
  31. package/esm5/lib/place/place.decorator.js +1 -1
  32. package/esm5/lib/place/place.module.js +4 -2
  33. package/esm5/lib/place/places/noop-gateway-place.component.js +61 -0
  34. package/esm5/public_api.js +2 -2
  35. package/fesm2015/coolon-angular-ui-powerups.js +568 -355
  36. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  37. package/fesm5/coolon-angular-ui-powerups.js +2048 -1766
  38. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  39. package/lib/place/components/place-outlet/place-outlet.component.d.ts +6 -2
  40. package/lib/place/{route/guards/enter-place-guard.service.d.ts → guards/abstract-enter-place.guard.d.ts} +9 -4
  41. package/lib/place/{route/guards → guards}/leave-place.guard.d.ts +2 -2
  42. package/lib/place/guards/noop-auth-guard.service.d.ts +5 -0
  43. package/lib/place/index.d.ts +4 -2
  44. package/lib/place/navigation-session.d.ts +2 -2
  45. package/lib/place/place-router.d.ts +8 -2
  46. package/lib/place/places/noop-gateway-place.component.d.ts +10 -0
  47. package/package.json +1 -1
  48. package/schematics/place-routes/place-builder.d.ts +2 -1
  49. package/schematics/place-routes/place-builder.js +11 -3
  50. package/schematics/place-routes/place-builder.js.map +1 -1
  51. package/schematics/place-routes/place-class-scanner.js +1 -0
  52. package/schematics/place-routes/place-class-scanner.js.map +1 -1
  53. package/schematics/place-routes/place-def.d.ts +0 -1
  54. package/schematics/place-routes/place-def.js +1 -14
  55. package/schematics/place-routes/place-def.js.map +1 -1
  56. package/schematics/place-routes/templates/place-destinations.ts.template +3 -2
  57. package/schematics/place-routes/templates/place-routes.ts.template +20 -4
  58. package/schematics/place-routes/templates/place-visits.ts.template +2 -1
  59. package/esm2015/lib/place/route/guards/enter-place-guard.service.js +0 -248
  60. package/esm2015/lib/place/route/guards/leave-place.guard.js +0 -47
  61. package/esm5/lib/place/route/guards/enter-place-guard.service.js +0 -278
  62. package/esm5/lib/place/route/guards/leave-place.guard.js +0 -55
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import * as tslib_1 from "tslib";
6
+ import { Injectable } from '@angular/core';
7
+ import { PlaceRouter } from '../place-router';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../place-router";
10
+ var LeavePlaceGuard = /** @class */ (function () {
11
+ function LeavePlaceGuard(placeRouter) {
12
+ this.placeRouter = placeRouter;
13
+ }
14
+ /**
15
+ * @param {?} component
16
+ * @param {?} currentRoute
17
+ * @param {?} currentState
18
+ * @param {?=} nextState
19
+ * @return {?}
20
+ */
21
+ LeavePlaceGuard.prototype.canDeactivate = /**
22
+ * @param {?} component
23
+ * @param {?} currentRoute
24
+ * @param {?} currentState
25
+ * @param {?=} nextState
26
+ * @return {?}
27
+ */
28
+ function (component, currentRoute, currentState, nextState) {
29
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
30
+ return tslib_1.__generator(this, function (_a) {
31
+ return [2 /*return*/, this.placeRouter.navigationSession.canDeactivate(component, this.placeRouter.parseUrl(nextState))];
32
+ });
33
+ });
34
+ };
35
+ LeavePlaceGuard.decorators = [
36
+ { type: Injectable, args: [{
37
+ providedIn: 'root'
38
+ },] }
39
+ ];
40
+ /** @nocollapse */
41
+ LeavePlaceGuard.ctorParameters = function () { return [
42
+ { type: PlaceRouter }
43
+ ]; };
44
+ /** @nocollapse */ LeavePlaceGuard.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function LeavePlaceGuard_Factory() { return new LeavePlaceGuard(i0.ɵɵinject(i1.PlaceRouter)); }, token: LeavePlaceGuard, providedIn: "root" });
45
+ return LeavePlaceGuard;
46
+ }());
47
+ export { LeavePlaceGuard };
48
+ if (false) {
49
+ /**
50
+ * @type {?}
51
+ * @private
52
+ */
53
+ LeavePlaceGuard.prototype.placeRouter;
54
+ }
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhdmUtcGxhY2UuZ3VhcmQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvZ3VhcmRzL2xlYXZlLXBsYWNlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUU5QztJQUtFLHlCQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUM1QyxDQUFDOzs7Ozs7OztJQUVLLHVDQUFhOzs7Ozs7O0lBQW5CLFVBQW9CLFNBQXlCLEVBQUUsWUFBb0MsRUFBRSxZQUFpQyxFQUFFLFNBQStCOzs7Z0JBQ3JKLHNCQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFDOzs7S0FDMUc7O2dCQVZGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBSlEsV0FBVzs7OzBCQUhwQjtDQWdCQyxBQVhELElBV0M7U0FSWSxlQUFlOzs7Ozs7SUFFZCxzQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5EZWFjdGl2YXRlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWNlUm91dGVyIH0gZnJvbSAnLi4vcGxhY2Utcm91dGVyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTGVhdmVQbGFjZUd1YXJkIGltcGxlbWVudHMgQ2FuRGVhY3RpdmF0ZTxQbGFjZUNvbXBvbmVudD4ge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGxhY2VSb3V0ZXI6IFBsYWNlUm91dGVyKSB7XG4gIH1cblxuICBhc3luYyBjYW5EZWFjdGl2YXRlKGNvbXBvbmVudDogUGxhY2VDb21wb25lbnQsIGN1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgY3VycmVudFN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBuZXh0U3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb24uY2FuRGVhY3RpdmF0ZShjb21wb25lbnQsIHRoaXMucGxhY2VSb3V0ZXIucGFyc2VVcmwobmV4dFN0YXRlKSk7XG4gIH1cbn1cbi8vIGFzeW5jIGNhbkRlYWN0aXZhdGUoY29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCwgY3VycmVudFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBjdXJyZW50U3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsIG5leHRTdGF0ZT86IFJvdXRlclN0YXRlU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbi8vICAgY29uc3QgcGxhY2VEZWZpbml0aW9uUGF0aCA9IGAvJHtjb21wb25lbnQucGxhY2VEZWZpbml0aW9uLnBhdGh9YDtcbi8vXG4vLyAvLyBUT0RPOiBBZGQgdGVzdHNcbi8vIGlmICh0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TZXNzaW9uLmFscmVhZHlBY2NlcHRlZChjb21wb25lbnQpKSB7XG4vLyAgIC8vIFdlJ2xsIGdldCBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaWYgdGhlcmUncyBhbnkgcGFyYW1ldGVyIHNhbml0aXNhdGlvbiBzb1xuLy8gICAvLyB3ZSBhbHdheXMgcmV0dXJuIHRydWUgaWYgd2UgYWNjZXB0ZWQgb24gYSBwcmV2aW91cyBjeWNsZSBvZiB0aGUgY3VycmVudFxuLy8gICAvLyBuYXZpZ2F0aW9uIHNlc3Npb24uXG4vLyAgIHJldHVybiB0cnVlO1xuLy8gfSBlbHNlIHtcbi8vICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4vLyAgIGxldCBjYW5MZWF2ZSA9IHRydWU7XG4vL1xuLy8gICBpZiAodGhpcy5pc0xlYXZpbmdUaGVDdXJyZW50UGxhY2UobmV4dFN0YXRlLCBjb21wb25lbnQucGxhY2VEZWZpbml0aW9uKSkge1xuLy8gICAgIC8vIHdlIGNoZWNrIHRoZSBpbnRlcmFjdGlvbiBmaXJzdCwgc28gdGhhdCBjb21wb25lbnRzIHRoYXQgZG9uJ3QgbmVlZCB0byBjaGVjayBpZiB0aGV5J3JlIGluIGFuXG4vLyAgICAgLy8gaW50ZXJhY3Rpb24gZHVyaW5nIHRoZSBjYW5EZWFjdGl2YXRlIGN5Y2xlLlxuLy8gICAgIC8vIFRPRE86IEFkZCB0ZXN0czogc2hvdyBkaWFsb2cgLT4gaGl0IGJhY2sgLT4gc2FtZSByb3V0ZVxuLy8gICAgIGlmICh0aGlzLmludGVyYWN0aW9uQ29udGV4dC5pc0FjdGl2ZSgpKSB7XG4vLyAgICAgICBjYW5MZWF2ZSA9IGZhbHNlO1xuLy8gICAgICAgY29uc29sZS5sb2coJ2NhbmNlbGxpbmcnLCB7IGFjdGl2aXR5OiB0aGlzLmludGVyYWN0aW9uQ29udGV4dC5jdXJyZW50QWN0aXZpdHkgfSk7XG4vLyAgICAgICB0aGlzLmludGVyYWN0aW9uQ29udGV4dC5jdXJyZW50QWN0aXZpdHkuY2FuY2VsKG51bGwpO1xuLy8gICAgIH1cbi8vICAgICAvLyBObyBpbnRlcmFjdGlvbiBpbiBwcm9ncmVzcywgc28gYXNrIHRoZSBjb21wb25lbnQgLlxuLy8gICAgIC8vIFRoaXMgbWF5IHN0YXJ0IGFuIGludGVyYWN0aW9uLCBoZW5jZSBjaGVja2luZyB0aGUgaW50ZXJhY3Rpb24gY29udGV4dCBhYm92ZS4gSS5lLiBpZiB0aGUgcGxhY2UgcG9wcyB1cCB0aGUgZGlhbG9nLCBhbmRcbi8vICAgICAvLyB0aGUgdXNlciBjbGlja3MgYmFjayBhZ2Fpbiwgd2UnbGwgcmUtZW50ZXIgaGVyZSBhbmQgZ28gYmFuZyB3aGVuIHRoZSBjb21wb25lbnQgdHJpZXMgdG8gb3BlbiBhbm90aGVyXG4vLyAgICAgLy8gZGlhbG9nLlxuLy8gICAgIGlmIChjYW5MZWF2ZSkge1xuLy8gICAgICAgLy8gVE9ETzogQWRkIHRlc3RzOiBoaXQgYmFjayAtPiBjb25maXJtIGxlYXZlIGRpYWxvZyAtPiBoaXQgYmFjayAtPiBjbG9zZSBkaWFsb2cgLT4gIGhpdCBiYWNrIC0+IGNvbmZpcm0gbGVhdmUgZGlhbG9nLlxuLy8gICAgICAgY2FuTGVhdmUgPSBhd2FpdCBjb21wb25lbnQuY2FuRGVhY3RpdmF0ZSgpO1xuLy8gICAgIH1cbi8vXG4vL1xuLy8gICAgIC8vIFdlIGFsc28gYmxvY2sgYmFjayBidXR0b24gcGFyYW1ldGVyIGNoYW5nZXMgd2hpbGUgdGhlIGRpYWxvZyBpcyBvcGVuLlxuLy8gICAgIC8vIE5PVEU6IE5vdyB0aGF0IEknbSBjYXRjaGluZyBwYXJhbWV0ZXIgY2hhbmdlcyBJIGNvdWxkIHBvc3NpYmx5IHJldHJ5IHVzaW5nIGEgZnJhZ21lbnQgb3Jcbi8vICAgICAvLyBxdWVyeSBwYXJhbWV0ZXIgdG8gdHJhY2sgdGhlIGRpYWxvZyBiZWluZyBvcGVuLiAgUHJldmlvdXNseSBJIHdhcyBqdXN0IGNoZWNraW5nIHRoaXMgb25cbi8vICAgICAvLyBwYXRoIGNoYW5nZXMuLi4gaWYgdGhhdCB3b3JrZWQgaXQnZCBmaXggdGhlIGNhc2Ugd2hlcmUgdGhlIGJhY2sgYnV0dG9uIGJyZWFrcyB3aXRoIGFuIGFjdGl2aXR5XG4vLyAgICAgLy8gb3BlbiBvbiB0aGUgZmlyc3QgcGFnZTogaHR0cHM6Ly9jb29sb24uYXRsYXNzaWFuLm5ldC9icm93c2UvQVVQLTMzXG4vLyAgIH0gZWxzZSB7XG4vLyAgICAgaWYgKHRoaXMuaW50ZXJhY3Rpb25Db250ZXh0LmlzQWN0aXZlKCkpIHtcbi8vICAgICAgIGNvbnNvbGUubG9nKCdjYW5jZWxsaW5nJywgeyBhY3Rpdml0eTogdGhpcy5pbnRlcmFjdGlvbkNvbnRleHQuY3VycmVudEFjdGl2aXR5IH0pO1xuLy8gICAgICAgdGhpcy5pbnRlcmFjdGlvbkNvbnRleHQuY3VycmVudEFjdGl2aXR5LmNhbmNlbChudWxsKTtcbi8vICAgICAgIGNhbkxlYXZlID0gZmFsc2U7XG4vLyAgICAgfSBlbHNlIHtcbi8vICAgICAgIGNhbkxlYXZlID0gdHJ1ZTtcbi8vICAgICB9XG4vLyAgIH1cbi8vXG4vLyAgIGlmIChjYW5MZWF2ZSkge1xuLy8gICAgIC8vIFdlJ2xsIGdldCBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaWYgdGhlcmUncyBhbnkgcGFyYW1ldGVyIHNhbml0aXNhdGlvbiBzb1xuLy8gICAgIC8vIHdlIHJlbWVtYmVyIHRoZSBhY2NlcHRhbmNlIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbiBzZXNzaW9uLlxuLy8gICAgIHNlbGYucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb24ucmVtZW1iZXJBY2NlcHRhbmNlT2YoY29tcG9uZW50KTtcbi8vICAgfSBlbHNlIHtcbi8vICAgICAvLyBBbmd1bGFyIGRvZXNuJ3QgcHJlc2VydmUgdGhlIHVybCB3aGVuIGEgZ3VhcmQgY2FuY2VscyB0aGUgYmFjayBidXR0b24uXG4vLyAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEzNTg2I2lzc3VlY29tbWVudC00MzI3OTU3MjBcbi8vICAgICBpZiAodGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbi5pc1BvcFN0YXRlKSB7XG4vLyAgICAgICBjb25zb2xlLmxvZygnY2FuY2VsbGVkIGR1cmluZyBwb3BzdGF0ZScpO1xuLy8gICAgICAgdGhpcy5hbmd1bGFyTG9jYXRpb24uZ28odGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbi5wb3BTdGF0ZVJldHVyblVybCk7XG4vLyAgICAgfVxuLy8gICB9XG4vL1xuLy8gICByZXR1cm4gY2FuTGVhdmU7XG4vLyB9XG4iXX0=
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import * as tslib_1 from "tslib";
6
+ import { Injectable } from '@angular/core';
7
+ import * as i0 from "@angular/core";
8
+ var NoopAuthGuard = /** @class */ (function () {
9
+ function NoopAuthGuard() {
10
+ }
11
+ /**
12
+ * @param {?} activatedRoute
13
+ * @param {?} state
14
+ * @return {?}
15
+ */
16
+ NoopAuthGuard.prototype.canActivate = /**
17
+ * @param {?} activatedRoute
18
+ * @param {?} state
19
+ * @return {?}
20
+ */
21
+ function (activatedRoute, state) {
22
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
23
+ return tslib_1.__generator(this, function (_a) {
24
+ return [2 /*return*/, true];
25
+ });
26
+ });
27
+ };
28
+ NoopAuthGuard.decorators = [
29
+ { type: Injectable, args: [{
30
+ providedIn: 'root'
31
+ },] }
32
+ ];
33
+ /** @nocollapse */
34
+ NoopAuthGuard.ctorParameters = function () { return []; };
35
+ /** @nocollapse */ NoopAuthGuard.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function NoopAuthGuard_Factory() { return new NoopAuthGuard(); }, token: NoopAuthGuard, providedIn: "root" });
36
+ return NoopAuthGuard;
37
+ }());
38
+ export { NoopAuthGuard };
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcC1hdXRoLWd1YXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvZ3VhcmRzL25vb3AtYXV0aC1ndWFyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0M7SUFLRTtJQUNBLENBQUM7Ozs7OztJQUVLLG1DQUFXOzs7OztJQUFqQixVQUFrQixjQUFzQyxFQUFFLEtBQTBCOzs7Z0JBQ2xGLHNCQUFPLElBQUksRUFBQzs7O0tBQ2I7O2dCQVZGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7O3dCQUxEO0NBY0MsQUFYRCxJQVdDO1NBUlksYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTm9vcEF1dGhHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxuXG4gIGFzeW5jIGNhbkFjdGl2YXRlKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
@@ -22,6 +22,10 @@ export { ListPlaceNavComponent } from "./components/list-place-nav/list-place-na
22
22
  export { PlaceOutletComponent } from "./components/place-outlet/place-outlet.component";
23
23
  export { leftRightPlaceAnimation, LEFT_RIGHT_PLACE_ANIMATION } from "./components/place-outlet/route-animations";
24
24
  export { TabbedPlaceNavigationComponent } from "./components/tabbed-place-navigation/tabbed-place-navigation.component";
25
+ export { AbstractEnterPlaceGuard } from "./guards/abstract-enter-place.guard";
26
+ export { LeavePlaceGuard } from "./guards/leave-place.guard";
27
+ export { NoopAuthGuard } from "./guards/noop-auth-guard.service";
28
+ export { NoopGatewayPlace } from "./places/noop-gateway-place.component";
25
29
  export { Formatter } from "./route/formatter";
26
30
  export {} from "./route/json-types";
27
31
  export { RouteId, VisitParameter, VisitParameterList } from "./route/parameter-decorators";
@@ -29,6 +33,4 @@ export { ParameterDefinition } from "./route/parameter-definition.class";
29
33
  export {} from "./route/parameter-sanitiser";
30
34
  export {} from "./route/parameter-snapshot";
31
35
  export { VisitSanitiser } from "./route/visit-sanitiser";
32
- export { EnterPlaceGuard } from "./route/guards/enter-place-guard.service";
33
- export { LeavePlaceGuard } from "./route/guards/leave-place.guard";
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBLGVBQWMsWUFBWSxDQUFDO0FBQzNCLGtDQUFjLHNCQUFzQixDQUFDO0FBQ3JDLG1GQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGlDQUFjLGdCQUFnQixDQUFDO0FBQy9CLGdDQUFjLG9CQUFvQixDQUFDO0FBQ25DLDZCQUFjLGlCQUFpQixDQUFDO0FBQ2hDLDRCQUFjLGdCQUFnQixDQUFDO0FBQy9CLHNCQUFjLG1CQUFtQixDQUFDO0FBQ2xDLDRCQUFjLGdCQUFnQixDQUFDO0FBQy9CLHNCQUFjLFNBQVMsQ0FBQztBQUN4QixpREFBYyxrREFBa0QsQ0FBQztBQUNqRSxxQ0FBYyxrREFBa0QsQ0FBQztBQUNqRSxvQ0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxzQ0FBYyxzREFBc0QsQ0FBQztBQUNyRSxxQ0FBYyxrREFBa0QsQ0FBQztBQUNqRSxvRUFBYyw0Q0FBNEMsQ0FBQztBQUMzRCwrQ0FBYyx3RUFBd0UsQ0FBQztBQUN2RiwwQkFBYyxtQkFBbUIsQ0FBQztBQUNsQyxlQUFjLG9CQUFvQixDQUFDO0FBQ25DLDREQUFjLDhCQUE4QixDQUFDO0FBQzdDLG9DQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGVBQWMsNkJBQTZCLENBQUM7QUFDNUMsZUFBYyw0QkFBNEIsQ0FBQztBQUMzQywrQkFBYyx5QkFBeUIsQ0FBQztBQUN4QyxnQ0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxnQ0FBYyxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGUgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgYmFycmVsc2J5LlxuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL25hdi1pdGVtXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9uYXZpZ2F0aW9uLXNlc3Npb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYWNlLWNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2UtY29uZmlnXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS1kZWZpbml0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS1oaXN0b3J5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS1yb3V0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYWNlLmRlY29yYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2UubW9kdWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92aXNpdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9hYnN0cmFjdC1wbGFjZS1uYXZpZ2F0aW9uLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9idXN5LW92ZXJsYXkvYnVzeS1vdmVybGF5LmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvbGlzdC1wbGFjZS1uYXYvbGlzdC1wbGFjZS1uYXYuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3BsYWNlLW91dGxldC9wbGFjZS1vdXRsZXQuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3BsYWNlLW91dGxldC9yb3V0ZS1hbmltYXRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3RhYmJlZC1wbGFjZS1uYXZpZ2F0aW9uL3RhYmJlZC1wbGFjZS1uYXZpZ2F0aW9uLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvZm9ybWF0dGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9qc29uLXR5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9wYXJhbWV0ZXItZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvcGFyYW1ldGVyLWRlZmluaXRpb24uY2xhc3NcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL3BhcmFtZXRlci1zYW5pdGlzZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL3BhcmFtZXRlci1zbmFwc2hvdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvdmlzaXQtc2FuaXRpc2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9ndWFyZHMvZW50ZXItcGxhY2UtZ3VhcmQuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvZ3VhcmRzL2xlYXZlLXBsYWNlLmd1YXJkXCI7XG4iXX0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBLGVBQWMsWUFBWSxDQUFDO0FBQzNCLGtDQUFjLHNCQUFzQixDQUFDO0FBQ3JDLG1GQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGlDQUFjLGdCQUFnQixDQUFDO0FBQy9CLGdDQUFjLG9CQUFvQixDQUFDO0FBQ25DLDZCQUFjLGlCQUFpQixDQUFDO0FBQ2hDLDRCQUFjLGdCQUFnQixDQUFDO0FBQy9CLHNCQUFjLG1CQUFtQixDQUFDO0FBQ2xDLDRCQUFjLGdCQUFnQixDQUFDO0FBQy9CLHNCQUFjLFNBQVMsQ0FBQztBQUN4QixpREFBYyxrREFBa0QsQ0FBQztBQUNqRSxxQ0FBYyxrREFBa0QsQ0FBQztBQUNqRSxvQ0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxzQ0FBYyxzREFBc0QsQ0FBQztBQUNyRSxxQ0FBYyxrREFBa0QsQ0FBQztBQUNqRSxvRUFBYyw0Q0FBNEMsQ0FBQztBQUMzRCwrQ0FBYyx3RUFBd0UsQ0FBQztBQUN2Rix3Q0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxnQ0FBYyw0QkFBNEIsQ0FBQztBQUMzQyw4QkFBYyxrQ0FBa0MsQ0FBQztBQUNqRCxpQ0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCwwQkFBYyxtQkFBbUIsQ0FBQztBQUNsQyxlQUFjLG9CQUFvQixDQUFDO0FBQ25DLDREQUFjLDhCQUE4QixDQUFDO0FBQzdDLG9DQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGVBQWMsNkJBQTZCLENBQUM7QUFDNUMsZUFBYyw0QkFBNEIsQ0FBQztBQUMzQywrQkFBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGUgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgYmFycmVsc2J5LlxuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL25hdi1pdGVtXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9uYXZpZ2F0aW9uLXNlc3Npb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYWNlLWNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2UtY29uZmlnXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS1kZWZpbml0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS1oaXN0b3J5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGFjZS1yb3V0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsYWNlLmRlY29yYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2UubW9kdWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92aXNpdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9hYnN0cmFjdC1wbGFjZS1uYXZpZ2F0aW9uLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9idXN5LW92ZXJsYXkvYnVzeS1vdmVybGF5LmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcG9uZW50cy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvbGlzdC1wbGFjZS1uYXYvbGlzdC1wbGFjZS1uYXYuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3BsYWNlLW91dGxldC9wbGFjZS1vdXRsZXQuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3BsYWNlLW91dGxldC9yb3V0ZS1hbmltYXRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wb25lbnRzL3RhYmJlZC1wbGFjZS1uYXZpZ2F0aW9uL3RhYmJlZC1wbGFjZS1uYXZpZ2F0aW9uLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZ3VhcmRzL2Fic3RyYWN0LWVudGVyLXBsYWNlLmd1YXJkXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ndWFyZHMvbGVhdmUtcGxhY2UuZ3VhcmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2d1YXJkcy9ub29wLWF1dGgtZ3VhcmQuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGxhY2VzL25vb3AtZ2F0ZXdheS1wbGFjZS5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL2Zvcm1hdHRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvanNvbi10eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm91dGUvcGFyYW1ldGVyLWRlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL3BhcmFtZXRlci1kZWZpbml0aW9uLmNsYXNzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9wYXJhbWV0ZXItc2FuaXRpc2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yb3V0ZS9wYXJhbWV0ZXItc25hcHNob3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvdXRlL3Zpc2l0LXNhbml0aXNlclwiO1xuIl19
@@ -3,8 +3,6 @@
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
5
  import * as tslib_1 from "tslib";
6
- import { Injectable } from '@angular/core';
7
- import { InteractionContext } from '../interaction/interaction-context';
8
6
  /**
9
7
  * @abstract
10
8
  */
@@ -175,8 +173,8 @@ if (false) {
175
173
  Internal.prototype.isExternal;
176
174
  }
177
175
  var Factory = /** @class */ (function () {
178
- function Factory(appModelInteractionContext) {
179
- this.appModelInteractionContext = appModelInteractionContext;
176
+ function Factory(interactionContext) {
177
+ this.interactionContext = interactionContext;
180
178
  }
181
179
  /**
182
180
  * @param {?} visit
@@ -187,7 +185,7 @@ if (false) {
187
185
  * @return {?}
188
186
  */
189
187
  function (visit) {
190
- return new Internal(visit, this.appModelInteractionContext);
188
+ return new Internal(visit, this.interactionContext);
191
189
  };
192
190
  /**
193
191
  * @param {?} firstTimeRoute
@@ -198,23 +196,14 @@ if (false) {
198
196
  * @return {?}
199
197
  */
200
198
  function (firstTimeRoute) {
201
- return new External(firstTimeRoute, this.appModelInteractionContext);
199
+ return new External(firstTimeRoute, this.interactionContext);
202
200
  };
203
- Factory.decorators = [
204
- { type: Injectable, args: [{
205
- providedIn: 'root'
206
- },] },
207
- ];
208
- /** @nocollapse */
209
- Factory.ctorParameters = function () { return [
210
- { type: InteractionContext }
211
- ]; };
212
201
  return Factory;
213
202
  }());
214
203
  NavigationSession.Factory = Factory;
215
204
  if (false) {
216
205
  /** @type {?} */
217
- Factory.prototype.appModelInteractionContext;
206
+ Factory.prototype.interactionContext;
218
207
  }
219
208
  var ComponentDeactivationHandler = /** @class */ (function () {
220
209
  function ComponentDeactivationHandler(component, appModelInteractionContext, primary) {
@@ -361,4 +350,4 @@ if (false) {
361
350
  ComponentDeactivationHandler.prototype.primary;
362
351
  }
363
352
  })(NavigationSession || (NavigationSession = {}));
364
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1zZXNzaW9uLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL25hdmlnYXRpb24tc2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7QUFNeEU7Ozs7SUFXRSwyQkFBK0IsZUFBd0IsRUFBbUIsMEJBQThDO1FBQXpGLG9CQUFlLEdBQWYsZUFBZSxDQUFTO1FBQW1CLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBb0I7UUFUaEgscUJBQWdCLEdBQXFCLEVBQUUsQ0FBQztRQUV4QyxZQUFPLEdBQUcsSUFBSSxHQUFHLEVBQTBCLENBQUM7UUFLNUMsa0NBQTZCLEdBQUcsSUFBSSxHQUFHLEVBQWtFLENBQUM7UUFHaEgsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0RSxDQUFDOzs7OztJQUVELHNDQUFVOzs7O0lBQVYsVUFBVyxLQUFZO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQzs7Ozs7SUFFRCx1Q0FBVzs7OztJQUFYLFVBQVksUUFBeUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxDQUFDOzs7Ozs7SUFFSyx5Q0FBYTs7Ozs7SUFBbkIsVUFBb0IsU0FBeUIsRUFBRSxTQUFnQzs7Ozs7Z0JBRXpFLE9BQU8sR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDTixnQkFB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cm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpc3Bvc2FibGUgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBJbnRlcmFjdGlvbkNvbnRleHQgfSBmcm9tICcuLi9pbnRlcmFjdGlvbi9pbnRlcmFjdGlvbi1jb250ZXh0JztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7IFBsYWNlUm91dGVyIH0gZnJvbSAnLi9wbGFjZS1yb3V0ZXInO1xuaW1wb3J0IHsgVmlzaXQgfSBmcm9tICcuL3Zpc2l0JztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5hdmlnYXRpb25TZXNzaW9uIHtcblxuICBwcml2YXRlIF9hbHJlYWR5QWNjZXB0ZWQ6IFBsYWNlQ29tcG9uZW50W10gPSBbXTtcblxuICBwcml2YXRlIF92aXNpdHMgPSBuZXcgTWFwPFBsYWNlRGVmaW5pdGlvbiwgVmlzaXQ+KCk7XG4gIHByaXZhdGUgX3BvcFN0YXRlUmV0dXJuVXJsOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaXNFeHRlcm5hbDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZGlhbG9nT3Blbk9uU3RhcnQ6IGJvb2xlYW47XG4gIHByaXZhdGUgY29tcG9uZW50RGVhY3RpdmF0aW9uSGFuZGxlcnMgPSBuZXcgTWFwPFBsYWNlQ29tcG9uZW50LCBOYXZpZ2F0aW9uU2Vzc2lvbi5Db21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVyPigpO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihyZWFkb25seSBmaXJzdE5hdmlnYXRpb246IGJvb2xlYW4sIHByaXZhdGUgcmVhZG9ubHkgYXBwTW9kYWxJbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCkge1xuICAgIHRoaXMuZGlhbG9nT3Blbk9uU3RhcnQgPSB0aGlzLmFwcE1vZGFsSW50ZXJhY3Rpb25Db250ZXh0LmlzQWN0aXZlKCk7XG4gIH1cblxuICBzdG9yZVZpc2l0KHZpc2l0OiBWaXNpdCkge1xuICAgIHRoaXMuX3Zpc2l0cy5zZXQodmlzaXQucGxhY2VEZWZpbml0aW9uLCB2aXNpdCk7XG4gIH1cblxuICBnZXRWaXNpdEZvcihwbGFjZURlZjogUGxhY2VEZWZpbml0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2l0cy5nZXQocGxhY2VEZWYpO1xuICB9XG5cbiAgYXN5bmMgY2FuRGVhY3RpdmF0ZShjb21wb25lbnQ6IFBsYWNlQ29tcG9uZW50LCBuZXh0U3RhdGU6IFBsYWNlUm91dGVyLlVybEhlbHBlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIGxvb2t1cCB0aGUgaGFuZGxlciBhbmQgY3JlYXRlIGl0IGlmIHdlJ3ZlIG5vdCBzZWVuIGl0IHlldFxuICAgIGxldCBoYW5kbGVyID0gdGhpcy5jb21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVycy5nZXQoY29tcG9uZW50KTtcbiAgICBpZiAoIWhhbmRsZXIpIHtcbiAgICAgIGNvbnN0IGlzUHJpbWFyeUhhbmRsZXIgPSB0aGlzLmNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXJzLnNpemUgPT09IDA7IC8vIG9ubHkgcHJpbWFyeSBoYW5kbGVyIGNhbmNlbGUgdGhlIGFwcCBtb2RlbCBpbnRlcmF0aW9uc1xuICAgICAgaGFuZGxlciA9IG5ldyBOYXZpZ2F0aW9uU2Vzc2lvbi5Db21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVyKGNvbXBvbmVudCwgdGhpcy5hcHBNb2RhbEludGVyYWN0aW9uQ29udGV4dCwgaXNQcmltYXJ5SGFuZGxlcik7XG4gICAgICB0aGlzLmNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXJzLnNldChjb21wb25lbnQsIGhhbmRsZXIpO1xuICAgIH1cbiAgICByZXR1cm4gaGFuZGxlci5jYW5EZWFjdGl2YXRlKG5leHRTdGF0ZSk7XG4gIH1cblxuICBzZXRQb3BzdGF0ZVJldHVyblVybCh1cmw6IHN0cmluZykge1xuICAgIHRoaXMuX3BvcFN0YXRlUmV0dXJuVXJsID0gdXJsO1xuICB9XG5cbiAgZ2V0IGlzUG9wU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fcG9wU3RhdGVSZXR1cm5Vcmw7XG4gIH1cblxuICBnZXQgcG9wU3RhdGVSZXR1cm5VcmwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BvcFN0YXRlUmV0dXJuVXJsO1xuICB9XG5cbiAgZ2V0VmlzaXRzKCk6IFZpc2l0W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX3Zpc2l0cy52YWx1ZXMoKSk7XG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBOYXZpZ2F0aW9uU2Vzc2lvbiB7XG5cbiAgY2xhc3MgRXh0ZXJuYWwgZXh0ZW5kcyBOYXZpZ2F0aW9uU2Vzc2lvbiB7XG4gICAgcmVhZG9ubHkgaXNFeHRlcm5hbCA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihpc0ZpcnN0VGltZTogYm9vbGVhbiwgYXBwTW9kZWxJbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCkge1xuICAgICAgc3VwZXIoaXNGaXJzdFRpbWUsIGFwcE1vZGVsSW50ZXJhY3Rpb25Db250ZXh0KTtcbiAgICB9XG4gIH1cblxuICBjbGFzcyBJbnRlcm5hbCBleHRlbmRzIE5hdmlnYXRpb25TZXNzaW9uIHtcbiAgICByZWFkb25seSBpc0V4dGVybmFsID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcih2aXNpdDogVmlzaXQsIGFwcE1vZGVsSW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpIHtcbiAgICAgIHN1cGVyKGZhbHNlLCBhcHBNb2RlbEludGVyYWN0aW9uQ29udGV4dCk7XG4gICAgICB0aGlzLnN0b3JlVmlzaXQodmlzaXQpO1xuICAgIH1cbiAgfVxuXG5cbiAgQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xuICB9KVxuICBleHBvcnQgY2xhc3MgRmFjdG9yeSB7XG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgYXBwTW9kZWxJbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCkge1xuICAgIH1cblxuICAgIGNyZWF0ZUludGVybmFsKHZpc2l0OiBWaXNpdCk6IE5hdmlnYXRpb25TZXNzaW9uIHtcbiAgICAgIHJldHVybiBuZXcgSW50ZXJuYWwodmlzaXQsIHRoaXMuYXBwTW9kZWxJbnRlcmFjdGlvbkNvbnRleHQpO1xuICAgIH1cblxuICAgIGNyZWF0ZUV4dGVybmFsKGZpcnN0VGltZVJvdXRlOiBib29sZWFuKTogTmF2aWdhdGlvblNlc3Npb24ge1xuICAgICAgcmV0dXJuIG5ldyBFeHRlcm5hbChmaXJzdFRpbWVSb3V0ZSwgdGhpcy5hcHBNb2RlbEludGVyYWN0aW9uQ29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIENvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXIge1xuXG4gICAgcHJpdmF0ZSBhbHJlYWR5QWNjZXB0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbXBvbmVudDogUGxhY2VDb21wb25lbnQsIHJlYWRvbmx5IGFwcE1vZGVsSW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQsIHJlYWRvbmx5IHByaW1hcnk6Ym9vbGVhbikge1xuICAgICAgLy8gc3VwZXIoKTtcbiAgICB9XG5cbiAgICBhc3luYyBjYW5EZWFjdGl2YXRlKG5leHRTdGF0ZTogUGxhY2VSb3V0ZXIuVXJsSGVscGVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICBjb25zb2xlLmxvZyhgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9LmNhbkRlYWN0aXZhdGVgLCB7Y29tcG9uZW50OnRoaXMuY29tcG9uZW50fSk7XG4gICAgICBpZiAodGhpcy5hbHJlYWR5QWNjZXB0ZWQpIHtcbiAgICAgICAgLy8gV2UnbGwgZ2V0IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpZiB0aGVyZSdzIGFueSBwYXJhbWV0ZXIgc2FuaXRpc2F0aW9uIHNvXG4gICAgICAgIC8vIHdlIGFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB3ZSBhY2NlcHRlZCBvbiBhIHByZXZpb3VzIGN5Y2xlIG9mIHRoZSBjdXJyZW50XG4gICAgICAgIC8vIG5hdmlnYXRpb24gc2Vzc2lvbi5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuXG4gICAgICAgIGlmICh0aGlzLnByaW1hcnkgJiYgdGhpcy5hcHBNb2RlbEludGVyYWN0aW9uQ29udGV4dC5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgLy8gV2UgY2hlY2sgdGhlIGdsb2JhbCBpbnRlcmFjdGlvbiBmaXJzdFxuICAgICAgICAgIGF3YWl0IHRoaXMuY2FuY2VsQ3VycmVudEFjdGl2aXR5T2YodGhpcy5hcHBNb2RlbEludGVyYWN0aW9uQ29udGV4dCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hbHJlYWR5QWNjZXB0ZWQgPSBhd2FpdCB0aGlzLmNhbkRlYWN0aXZhdGVDb21wb25lbnQobmV4dFN0YXRlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hbHJlYWR5QWNjZXB0ZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGNhbkRlYWN0aXZhdGVDb21wb25lbnQobmV4dFN0YXRlOiBQbGFjZVJvdXRlci5VcmxIZWxwZXIpIHtcblxuICAgICAgLy8gY2hlY2sgaWYgdGhlIGNvbXBvbmVudCBoYXMgYW4gYWN0aXZlIGludGVyYWN0aW9uLiAgVGhpcyB3aWxsIGhhbmRsZVxuICAgICAgLy8gYW4gaW5wbGFjZSBpbnRlcmFjdGlvbiBjb250ZXh0c1xuICAgICAgY29uc3QgaGFzQ3VzdG9tSW50ZXJhY3Rpb25Db250ZXh0ID0gdGhpcy5jb21wb25lbnQuaW50ZXJhY3Rpb25Db250ZXh0ICYmXG4gICAgICAgICF0aGlzLmlzQXBwTW9kYWxJbnRlcmFjdGlvbkNvbnRleHQodGhpcy5jb21wb25lbnQuaW50ZXJhY3Rpb25Db250ZXh0KSAmJlxuICAgICAgICB0aGlzLmNvbXBvbmVudC5pbnRlcmFjdGlvbkNvbnRleHQuaXNBY3RpdmUoKTtcblxuICAgICAgaWYgKGhhc0N1c3RvbUludGVyYWN0aW9uQ29udGV4dCkge1xuICAgICAgIHRoaXMuY2FuY2VsQ3VycmVudEFjdGl2aXR5T2YodGhpcy5jb21wb25lbnQuaW50ZXJhY3Rpb25Db250ZXh0KTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pc0xlYXZpbmdDdXJyZW50UGxhY2UobmV4dFN0YXRlKSAmJiB0aGlzLmNvbXBvbmVudC5jYW5EZWFjdGl2YXRlKSB7XG4gICAgICAgIC8vIE5vIGludGVyYWN0aW9uIGluIHByb2dyZXNzLCBzbyBhc2sgdGhlIGNvbXBvbmVudCAuXG4gICAgICAgIC8vIFRoaXMgbWF5IHN0YXJ0IGFuIGludGVyYWN0aW9uLCBoZW5jZSBjaGVja2luZyB0aGUgaW50ZXJhY3Rpb24gY29udGV4dCBiZWZvcmUgbm93LiBJLmUuIGlmIHRoZSBwbGFjZSBwb3BzIHVwIHRoZSBkaWFsb2csIGFuZFxuICAgICAgICAvLyB0aGUgdXNlciBjbGlja3MgYmFjayBhZ2Fpbiwgd2UnbGwgcmUtZW50ZXIgaGVyZSBhbmQgZ28gYmFuZyB3aGVuIHRoZSBjb21wb25lbnQgdHJpZXMgdG8gb3BlbiBhbm90aGVyIGRpYWxvZy5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50LmNhbkRlYWN0aXZhdGUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlzQXBwTW9kYWxJbnRlcmFjdGlvbkNvbnRleHQoaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpIHtcbiAgICAgIHJldHVybiB0aGlzLmFwcE1vZGVsSW50ZXJhY3Rpb25Db250ZXh0ID09PSBpbnRlcmFjdGlvbkNvbnRleHQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGNhbmNlbEN1cnJlbnRBY3Rpdml0eU9mKGludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0KSB7XG4gICAgICBjb25zdCBhY3Rpdml0eSA9IGF3YWl0IGludGVyYWN0aW9uQ29udGV4dC5nZXRDdXJyZW50QWN0aXZpdHkoKTtcbiAgICAgIGNvbnNvbGUubG9nKCdjYW5jZWxsaW5nJywgeyBhY3Rpdml0eSB9KTtcbiAgICAgIGFjdGl2aXR5LmNhbmNlbChudWxsKTtcbiAgICB9XG5cblxuICAgIHByb3RlY3RlZCBpc0xlYXZpbmdDdXJyZW50UGxhY2UobmV4dFN0YXRlOiBQbGFjZVJvdXRlci5VcmxIZWxwZXIpIHtcbiAgICAgIHJldHVybiAhbmV4dFN0YXRlLmluY2x1ZGVzUGF0aE9mKHRoaXMuY29tcG9uZW50LnBsYWNlRGVmaW5pdGlvbik7XG4gICAgfVxuICB9XG5cbn1cblxuIl19
353
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1zZXNzaW9uLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL25hdmlnYXRpb24tc2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQU9BOzs7O0lBV0UsMkJBQStCLGVBQXdCLEVBQW1CLDBCQUE4QztRQUF6RixvQkFBZSxHQUFmLGVBQWUsQ0FBUztRQUFtQiwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQW9CO1FBVGhILHFCQUFnQixHQUFxQixFQUFFLENBQUM7UUFFeEMsWUFBTyxHQUFHLElBQUksR0FBRyxFQUEwQixDQUFDO1FBSzVDLGtDQUE2QixHQUFHLElBQUksR0FBRyxFQUFrRSxDQUFDO1FBR2hILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEUsQ0FBQzs7Ozs7SUFFRCxzQ0FBVTs7OztJQUFWLFVBQVcsS0FBWTtRQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7Ozs7O0lBRUQsdUNBQVc7Ozs7SUFBWCxVQUFZLFFBQXlCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7Ozs7O0lBRUsseUNBQWE7Ozs7O0lBQW5CLFVBQW9CLFNBQXlCLEVBQUUsU0FBZ0M7Ozs7O2dCQUV6RSxPQUFPLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7Z0JBQy9ELElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ04sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksS0FBSyxDQUFDO29CQUN0RSxPQUFPLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyw0QkFBNEIs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SEFBOEg7d0JBQzlILCtHQUErRzt3QkFDL0csc0JBQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsRUFBQztxQkFDdkM7b0JBQ0Qsc0JBQU8sSUFBSSxFQUFDOzs7U0FDYjs7Ozs7UUFFRCxtRUFBNEI7Ozs7UUFBNUIsVUFBNkIsa0JBQXNDO1lBQ2pFLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixLQUFLLGtCQUFrQixDQUFDO1FBQ2hFLENBQUM7Ozs7OztRQUVlLDhEQUF1Qjs7Ozs7UUFBdkMsVUFBd0Msa0JBQXNDOzs7OztnQ0FDM0QscUJBQU0sa0JBQWtCLENBQUMsa0JBQWtCLEVBQUUsRUFBQTs7NEJBQXhELFFBQVEsR0FBRyxTQUE2Qzs0QkFDOUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxRQUFRLFVBQUEsRUFBRSxDQUFDLENBQUM7NEJBQ3hDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Ozs7O1NBQ3ZCOzs7Ozs7UUFHUyw0REFBcUI7Ozs7O1FBQS9CLFVBQWdDLFNBQWdDO1lBQzlELE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUNILG1DQUFDO0lBQUQsQ0FBQyxBQWpFRCxJQWlFQztJQWpFWSw4Q0FBNEIsK0JBaUV4QyxDQUFBOzs7Ozs7UUEvREMsdURBQWdDOztRQUVwQixpREFBa0M7O1FBQUUsa0VBQXVEOztRQUFFLCtDQUF5Qjs7QUErRHRJLENBQUMsRUFuR2dCLGlCQUFpQixLQUFqQixpQkFBaUIsUUFtR2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW50ZXJhY3Rpb25Db250ZXh0IH0gZnJvbSAnLi4vaW50ZXJhY3Rpb24vaW50ZXJhY3Rpb24tY29udGV4dCc7XG5pbXBvcnQgeyBQbGFjZUNvbXBvbmVudCB9IGZyb20gJy4vcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBQbGFjZVJvdXRlciB9IGZyb20gJy4vcGxhY2Utcm91dGVyJztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi92aXNpdCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOYXZpZ2F0aW9uU2Vzc2lvbiB7XG5cbiAgcHJpdmF0ZSBfYWxyZWFkeUFjY2VwdGVkOiBQbGFjZUNvbXBvbmVudFtdID0gW107XG5cbiAgcHJpdmF0ZSBfdmlzaXRzID0gbmV3IE1hcDxQbGFjZURlZmluaXRpb24sIFZpc2l0PigpO1xuICBwcml2YXRlIF9wb3BTdGF0ZVJldHVyblVybDogc3RyaW5nO1xuXG4gIGFic3RyYWN0IHJlYWRvbmx5IGlzRXh0ZXJuYWw6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGRpYWxvZ09wZW5PblN0YXJ0OiBib29sZWFuO1xuICBwcml2YXRlIGNvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXJzID0gbmV3IE1hcDxQbGFjZUNvbXBvbmVudCwgTmF2aWdhdGlvblNlc3Npb24uQ29tcG9uZW50RGVhY3RpdmF0aW9uSGFuZGxlcj4oKTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocmVhZG9ubHkgZmlyc3ROYXZpZ2F0aW9uOiBib29sZWFuLCBwcml2YXRlIHJlYWRvbmx5IGFwcE1vZGFsSW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpIHtcbiAgICB0aGlzLmRpYWxvZ09wZW5PblN0YXJ0ID0gdGhpcy5hcHBNb2RhbEludGVyYWN0aW9uQ29udGV4dC5pc0FjdGl2ZSgpO1xuICB9XG5cbiAgc3RvcmVWaXNpdCh2aXNpdDogVmlzaXQpIHtcbiAgICB0aGlzLl92aXNpdHMuc2V0KHZpc2l0LnBsYWNlRGVmaW5pdGlvbiwgdmlzaXQpO1xuICB9XG5cbiAgZ2V0VmlzaXRGb3IocGxhY2VEZWY6IFBsYWNlRGVmaW5pdGlvbikge1xuICAgIHJldHVybiB0aGlzLl92aXNpdHMuZ2V0KHBsYWNlRGVmKTtcbiAgfVxuXG4gIGFzeW5jIGNhbkRlYWN0aXZhdGUoY29tcG9uZW50OiBQbGFjZUNvbXBvbmVudCwgbmV4dFN0YXRlOiBQbGFjZVJvdXRlci5VcmxIZWxwZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBsb29rdXAgdGhlIGhhbmRsZXIgYW5kIGNyZWF0ZSBpdCBpZiB3ZSd2ZSBub3Qgc2VlbiBpdCB5ZXRcbiAgICBsZXQgaGFuZGxlciA9IHRoaXMuY29tcG9uZW50RGVhY3RpdmF0aW9uSGFuZGxlcnMuZ2V0KGNvbXBvbmVudCk7XG4gICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICBjb25zdCBpc1ByaW1hcnlIYW5kbGVyID0gdGhpcy5jb21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVycy5zaXplID09PSAwOyAvLyBvbmx5IHByaW1hcnkgaGFuZGxlciBjYW5jZWxlIHRoZSBhcHAgbW9kZWwgaW50ZXJhdGlvbnNcbiAgICAgIGhhbmRsZXIgPSBuZXcgTmF2aWdhdGlvblNlc3Npb24uQ29tcG9uZW50RGVhY3RpdmF0aW9uSGFuZGxlcihjb21wb25lbnQsIHRoaXMuYXBwTW9kYWxJbnRlcmFjdGlvbkNvbnRleHQsIGlzUHJpbWFyeUhhbmRsZXIpO1xuICAgICAgdGhpcy5jb21wb25lbnREZWFjdGl2YXRpb25IYW5kbGVycy5zZXQoY29tcG9uZW50LCBoYW5kbGVyKTtcbiAgICB9XG4gICAgcmV0dXJuIGhhbmRsZXIuY2FuRGVhY3RpdmF0ZShuZXh0U3RhdGUpO1xuICB9XG5cbiAgc2V0UG9wc3RhdGVSZXR1cm5VcmwodXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wb3BTdGF0ZVJldHVyblVybCA9IHVybDtcbiAgfVxuXG4gIGdldCBpc1BvcFN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX3BvcFN0YXRlUmV0dXJuVXJsO1xuICB9XG5cbiAgZ2V0IHBvcFN0YXRlUmV0dXJuVXJsKCkge1xuICAgIHJldHVybiB0aGlzLl9wb3BTdGF0ZVJldHVyblVybDtcbiAgfVxuXG4gIGdldFZpc2l0cygpOiBWaXNpdFtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl92aXNpdHMudmFsdWVzKCkpO1xuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgTmF2aWdhdGlvblNlc3Npb24ge1xuXG4gIGNsYXNzIEV4dGVybmFsIGV4dGVuZHMgTmF2aWdhdGlvblNlc3Npb24ge1xuICAgIHJlYWRvbmx5IGlzRXh0ZXJuYWwgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IoaXNGaXJzdFRpbWU6IGJvb2xlYW4sIGFwcE1vZGVsSW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpIHtcbiAgICAgIHN1cGVyKGlzRmlyc3RUaW1lLCBhcHBNb2RlbEludGVyYWN0aW9uQ29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgY2xhc3MgSW50ZXJuYWwgZXh0ZW5kcyBOYXZpZ2F0aW9uU2Vzc2lvbiB7XG4gICAgcmVhZG9ubHkgaXNFeHRlcm5hbCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IodmlzaXQ6IFZpc2l0LCBhcHBNb2RlbEludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0KSB7XG4gICAgICBzdXBlcihmYWxzZSwgYXBwTW9kZWxJbnRlcmFjdGlvbkNvbnRleHQpO1xuICAgICAgdGhpcy5zdG9yZVZpc2l0KHZpc2l0KTtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgY2xhc3MgRmFjdG9yeSB7XG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpIHtcbiAgICB9XG5cbiAgICBjcmVhdGVJbnRlcm5hbCh2aXNpdDogVmlzaXQpOiBOYXZpZ2F0aW9uU2Vzc2lvbiB7XG4gICAgICByZXR1cm4gbmV3IEludGVybmFsKHZpc2l0LCB0aGlzLmludGVyYWN0aW9uQ29udGV4dCk7XG4gICAgfVxuXG4gICAgY3JlYXRlRXh0ZXJuYWwoZmlyc3RUaW1lUm91dGU6IGJvb2xlYW4pOiBOYXZpZ2F0aW9uU2Vzc2lvbiB7XG4gICAgICByZXR1cm4gbmV3IEV4dGVybmFsKGZpcnN0VGltZVJvdXRlLCB0aGlzLmludGVyYWN0aW9uQ29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGNsYXNzIENvbXBvbmVudERlYWN0aXZhdGlvbkhhbmRsZXIge1xuXG4gICAgcHJpdmF0ZSBhbHJlYWR5QWNjZXB0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbXBvbmVudDogUGxhY2VDb21wb25lbnQsIHJlYWRvbmx5IGFwcE1vZGVsSW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQsIHJlYWRvbmx5IHByaW1hcnk6IGJvb2xlYW4pIHtcbiAgICAgIC8vIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2FuRGVhY3RpdmF0ZShuZXh0U3RhdGU6IFBsYWNlUm91dGVyLlVybEhlbHBlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgY29uc29sZS5sb2coYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfS5jYW5EZWFjdGl2YXRlYCwgeyBjb21wb25lbnQ6IHRoaXMuY29tcG9uZW50IH0pO1xuICAgICAgaWYgKHRoaXMuYWxyZWFkeUFjY2VwdGVkKSB7XG4gICAgICAgIC8vIFdlJ2xsIGdldCBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaWYgdGhlcmUncyBhbnkgcGFyYW1ldGVyIHNhbml0aXNhdGlvbiBzb1xuICAgICAgICAvLyB3ZSBhbHdheXMgcmV0dXJuIHRydWUgaWYgd2UgYWNjZXB0ZWQgb24gYSBwcmV2aW91cyBjeWNsZSBvZiB0aGUgY3VycmVudFxuICAgICAgICAvLyBuYXZpZ2F0aW9uIHNlc3Npb24uXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcblxuICAgICAgICBpZiAodGhpcy5wcmltYXJ5ICYmIHRoaXMuYXBwTW9kZWxJbnRlcmFjdGlvbkNvbnRleHQuaXNBY3RpdmUoKSkge1xuICAgICAgICAgIC8vIFdlIGNoZWNrIHRoZSBnbG9iYWwgaW50ZXJhY3Rpb24gZmlyc3RcbiAgICAgICAgICBhd2FpdCB0aGlzLmNhbmNlbEN1cnJlbnRBY3Rpdml0eU9mKHRoaXMuYXBwTW9kZWxJbnRlcmFjdGlvbkNvbnRleHQpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWxyZWFkeUFjY2VwdGVkID0gYXdhaXQgdGhpcy5jYW5EZWFjdGl2YXRlQ29tcG9uZW50KG5leHRTdGF0ZSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYWxyZWFkeUFjY2VwdGVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBjYW5EZWFjdGl2YXRlQ29tcG9uZW50KG5leHRTdGF0ZTogUGxhY2VSb3V0ZXIuVXJsSGVscGVyKSB7XG5cbiAgICAgIC8vIGNoZWNrIGlmIHRoZSBjb21wb25lbnQgaGFzIGFuIGFjdGl2ZSBpbnRlcmFjdGlvbi4gIFRoaXMgd2lsbCBoYW5kbGVcbiAgICAgIC8vIGFuIGlucGxhY2UgaW50ZXJhY3Rpb24gY29udGV4dHNcbiAgICAgIGNvbnN0IGhhc0N1c3RvbUludGVyYWN0aW9uQ29udGV4dCA9IHRoaXMuY29tcG9uZW50LmludGVyYWN0aW9uQ29udGV4dCAmJlxuICAgICAgICAhdGhpcy5pc0FwcE1vZGFsSW50ZXJhY3Rpb25Db250ZXh0KHRoaXMuY29tcG9uZW50LmludGVyYWN0aW9uQ29udGV4dCkgJiZcbiAgICAgICAgdGhpcy5jb21wb25lbnQuaW50ZXJhY3Rpb25Db250ZXh0LmlzQWN0aXZlKCk7XG5cbiAgICAgIGlmIChoYXNDdXN0b21JbnRlcmFjdGlvbkNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5jYW5jZWxDdXJyZW50QWN0aXZpdHlPZih0aGlzLmNvbXBvbmVudC5pbnRlcmFjdGlvbkNvbnRleHQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmlzTGVhdmluZ0N1cnJlbnRQbGFjZShuZXh0U3RhdGUpICYmIHRoaXMuY29tcG9uZW50LmNhbkRlYWN0aXZhdGUpIHtcbiAgICAgICAgLy8gTm8gaW50ZXJhY3Rpb24gaW4gcHJvZ3Jlc3MsIHNvIGFzayB0aGUgY29tcG9uZW50IC5cbiAgICAgICAgLy8gVGhpcyBtYXkgc3RhcnQgYW4gaW50ZXJhY3Rpb24sIGhlbmNlIGNoZWNraW5nIHRoZSBpbnRlcmFjdGlvbiBjb250ZXh0IGJlZm9yZSBub3cuIEkuZS4gaWYgdGhlIHBsYWNlIHBvcHMgdXAgdGhlIGRpYWxvZywgYW5kXG4gICAgICAgIC8vIHRoZSB1c2VyIGNsaWNrcyBiYWNrIGFnYWluLCB3ZSdsbCByZS1lbnRlciBoZXJlIGFuZCBnbyBiYW5nIHdoZW4gdGhlIGNvbXBvbmVudCB0cmllcyB0byBvcGVuIGFub3RoZXIgZGlhbG9nLlxuICAgICAgICByZXR1cm4gdGhpcy5jb21wb25lbnQuY2FuRGVhY3RpdmF0ZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaXNBcHBNb2RhbEludGVyYWN0aW9uQ29udGV4dChpbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCkge1xuICAgICAgcmV0dXJuIHRoaXMuYXBwTW9kZWxJbnRlcmFjdGlvbkNvbnRleHQgPT09IGludGVyYWN0aW9uQ29udGV4dDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgY2FuY2VsQ3VycmVudEFjdGl2aXR5T2YoaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpIHtcbiAgICAgIGNvbnN0IGFjdGl2aXR5ID0gYXdhaXQgaW50ZXJhY3Rpb25Db250ZXh0LmdldEN1cnJlbnRBY3Rpdml0eSgpO1xuICAgICAgY29uc29sZS5sb2coJ2NhbmNlbGxpbmcnLCB7IGFjdGl2aXR5IH0pO1xuICAgICAgYWN0aXZpdHkuY2FuY2VsKG51bGwpO1xuICAgIH1cblxuXG4gICAgcHJvdGVjdGVkIGlzTGVhdmluZ0N1cnJlbnRQbGFjZShuZXh0U3RhdGU6IFBsYWNlUm91dGVyLlVybEhlbHBlcikge1xuICAgICAgcmV0dXJuICFuZXh0U3RhdGUuaW5jbHVkZXNQYXRoT2YodGhpcy5jb21wb25lbnQucGxhY2VEZWZpbml0aW9uKTtcbiAgICB9XG4gIH1cblxufVxuXG4iXX0=
@@ -6,30 +6,38 @@ import * as tslib_1 from "tslib";
6
6
  import { Location } from '@angular/common';
7
7
  import { Injectable } from '@angular/core';
8
8
  import { NavigationEnd, NavigationError, NavigationStart, Router, UrlSegment, UrlSerializer } from '@angular/router';
9
- import { Dsl, GarbageCollector, MutableListModel, MutableValueModel, Trace } from '@coolon/pectin';
9
+ import { Dsl, GarbageCollector, MutableListModel, MutableValueModel, Trace, assert, Logger } from '@coolon/pectin';
10
10
  import _ from 'lodash';
11
+ import { InteractionContext } from '../interaction/interaction-context';
11
12
  import { NavigationSession } from './navigation-session';
13
+ import { PlaceComponent } from './place-component';
12
14
  import { PlaceHistory } from './place-history';
15
+ import { NoopGatewayPlace } from './places/noop-gateway-place.component';
13
16
  import { Visit } from './visit';
14
17
  import * as i0 from "@angular/core";
15
18
  import * as i1 from "@angular/router";
16
- import * as i2 from "./navigation-session";
19
+ import * as i2 from "../interaction/interaction-context";
17
20
  import * as i3 from "@angular/common";
18
21
  import * as i4 from "./place-history";
22
+ /** @type {?} */
23
+ var noopPlaceDef = PlaceComponent.getDefinition(NoopGatewayPlace);
19
24
  var PlaceRouter = /** @class */ (function (_super) {
20
25
  tslib_1.__extends(PlaceRouter, _super);
21
- function PlaceRouter(router, urlSerializer, navigationSessionFactory, angularLocation, placeHistory) {
26
+ function PlaceRouter(router, urlSerializer, interactionContext, angularLocation, placeHistory) {
22
27
  var _this = _super.call(this) || this;
23
28
  _this.router = router;
24
29
  _this.urlSerializer = urlSerializer;
25
- _this.navigationSessionFactory = navigationSessionFactory;
30
+ _this.interactionContext = interactionContext;
26
31
  _this.angularLocation = angularLocation;
27
32
  _this.placeHistory = placeHistory;
28
33
  _this.firstRoute = true;
29
34
  _this._navigationSessionModel = new MutableValueModel();
30
35
  _this._activeVisits = new MutableListModel();
36
+ _this.initialRedirectStarted = false;
37
+ _this.initialRedirectFinished = false;
31
38
  var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
32
39
  _this.activeVisitIndex = chain(_this._activeVisits).indexBy('placeDefinition');
40
+ _this.navigationSessionFactory = new NavigationSession.Factory(interactionContext);
33
41
  angularLocation.onUrlChange((/**
34
42
  * @param {?} url
35
43
  * @return {?}
@@ -339,6 +347,49 @@ var PlaceRouter = /** @class */ (function (_super) {
339
347
  function (snapshot) {
340
348
  return new PlaceRouter.UrlHelper(this.urlSerializer.parse(snapshot.url));
341
349
  };
350
+ // TODO: this all only sort of works. Opening dialogs and clicking back multiple times breaks things.
351
+ // TODO: next stage is to investigate tracking dialog state in a different placeoutlet and keeping those
352
+ // TODO: urls out of the history.
353
+ // TODO: this all only sort of works. Opening dialogs and clicking back multiple times breaks things.
354
+ // TODO: next stage is to investigate tracking dialog state in a different placeoutlet and keeping those
355
+ // TODO: urls out of the history.
356
+ /**
357
+ * @param {?} activatedRoute
358
+ * @param {?} state
359
+ * @return {?}
360
+ */
361
+ PlaceRouter.prototype.performInitialNavigationIntercept =
362
+ // TODO: this all only sort of works. Opening dialogs and clicking back multiple times breaks things.
363
+ // TODO: next stage is to investigate tracking dialog state in a different placeoutlet and keeping those
364
+ // TODO: urls out of the history.
365
+ /**
366
+ * @param {?} activatedRoute
367
+ * @param {?} state
368
+ * @return {?}
369
+ */
370
+ function (activatedRoute, state) {
371
+ assert.isTruthy(this.isInitialNavigation());
372
+ Logger.get(this).info("Redirecting to: " + noopPlaceDef.path, { returnUrl: state.url });
373
+ if (!this.initialRedirectFinished) {
374
+ this.initialRedirectFinished = true;
375
+ return this.router.createUrlTree([noopPlaceDef.path, {
376
+ returnUrl: state.url
377
+ }], {
378
+ replaceUrl: true,
379
+ // make sure we update our history
380
+ skipLocationChange: false
381
+ });
382
+ }
383
+ };
384
+ /**
385
+ * @return {?}
386
+ */
387
+ PlaceRouter.prototype.isInitialNavigation = /**
388
+ * @return {?}
389
+ */
390
+ function () {
391
+ return this.navigationSession.firstNavigation && !this.initialRedirectFinished;
392
+ };
342
393
  PlaceRouter.decorators = [
343
394
  { type: Injectable, args: [{
344
395
  providedIn: 'root'
@@ -348,11 +399,11 @@ var PlaceRouter = /** @class */ (function (_super) {
348
399
  PlaceRouter.ctorParameters = function () { return [
349
400
  { type: Router },
350
401
  { type: UrlSerializer },
351
- { type: NavigationSession.Factory },
402
+ { type: InteractionContext },
352
403
  { type: Location },
353
404
  { type: PlaceHistory }
354
405
  ]; };
355
- /** @nocollapse */ PlaceRouter.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i1.UrlSerializer), i0.ɵɵinject(i2.NavigationSession.Factory), i0.ɵɵinject(i3.Location), i0.ɵɵinject(i4.PlaceHistory)); }, token: PlaceRouter, providedIn: "root" });
406
+ /** @nocollapse */ PlaceRouter.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i1.UrlSerializer), i0.ɵɵinject(i2.InteractionContext), i0.ɵɵinject(i3.Location), i0.ɵɵinject(i4.PlaceHistory)); }, token: PlaceRouter, providedIn: "root" });
356
407
  tslib_1.__decorate([
357
408
  Trace(),
358
409
  tslib_1.__metadata("design:type", Function),
@@ -382,6 +433,21 @@ if (false) {
382
433
  PlaceRouter.prototype.navigationSessionActive;
383
434
  /** @type {?} */
384
435
  PlaceRouter.prototype.activeVisitIndex;
436
+ /**
437
+ * @type {?}
438
+ * @private
439
+ */
440
+ PlaceRouter.prototype.navigationSessionFactory;
441
+ /**
442
+ * @type {?}
443
+ * @private
444
+ */
445
+ PlaceRouter.prototype.initialRedirectStarted;
446
+ /**
447
+ * @type {?}
448
+ * @private
449
+ */
450
+ PlaceRouter.prototype.initialRedirectFinished;
385
451
  /**
386
452
  * @type {?}
387
453
  * @private
@@ -396,7 +462,7 @@ if (false) {
396
462
  * @type {?}
397
463
  * @private
398
464
  */
399
- PlaceRouter.prototype.navigationSessionFactory;
465
+ PlaceRouter.prototype.interactionContext;
400
466
  /** @type {?} */
401
467
  PlaceRouter.prototype.angularLocation;
402
468
  /** @type {?} */
@@ -526,4 +592,4 @@ if (false) {
526
592
  UrlHelper.prototype.urlTree;
527
593
  }
528
594
  })(PlaceRouter || (PlaceRouter = {}));
529
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLXJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFHTCxhQUFhLEVBQ2IsZUFBZSxFQUNmLGVBQWUsRUFDZixNQUFNLEVBRU4sVUFBVSxFQUNWLGFBQWEsRUFFZCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFFTCxHQUFHLEVBQ0gsZ0JBQWdCLEVBR2hCLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsS0FBSyxFQUVOLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7Ozs7QUFHaEM7SUFHaUMsdUNBQWdCO0lBVS9DLHFCQUE2QixNQUFjLEVBQ2QsYUFBNEIsRUFDNUIsd0JBQW1ELEVBQzNELGVBQXlCLEVBQ3pCLFlBQTBCO1FBSi9DLFlBS0UsaUJBQU8sU0FpQ1I7UUF0QzRCLFlBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qiw4QkFBd0IsR0FBeEIsd0JBQXdCLENBQTJCO1FBQzNELHFCQUFlLEdBQWYsZUFBZSxDQUFVO1FBQ3pCLGtCQUFZLEdBQVosWUFBWSxDQUFjO1FBWnZDLGdCQUFVLEdBQUcsSUFBSSxDQUFDO1FBRVQsNkJBQXVCLEdBQUcsSUFBSSxpQkFBaUIsRUFBcUIsQ0FB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QUksT0FBQSxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQXhCLENBQXdCLEVBQUMsQ0FBQztRQUN4RSxDQUFDO1FBZkQ7WUFEQyxLQUFLLEVBQUU7O3FEQUN5QixLQUFLOztrRUFXckM7UUFNSCxnQkFBQztLQUFBLEFBekRELElBeURDO0lBekRZLHFCQUFTLFlBeURyQixDQUFBOzs7Ozs7UUF2RGEsNEJBQXdCOztBQXdEeEMsQ0FBQyxFQTdEZ0IsV0FBVyxLQUFYLFdBQVcsUUE2RDNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVkUm91dGUsXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIE5hdmlnYXRpb25FbmQsXG4gIE5hdmlnYXRpb25FcnJvcixcbiAgTmF2aWdhdGlvblN0YXJ0LFxuICBSb3V0ZXIsXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXG4gIFVybFNlZ21lbnQsXG4gIFVybFNlcmlhbGl6ZXIsXG4gIFVybFRyZWVcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW4sXG4gIERzbCxcbiAgR2FyYmFnZUNvbGxlY3RvcixcbiAgSGFzT25lSW5kZXhDaGFpbixcbiAgTGlzdE1vZGVsLFxuICBNdXRhYmxlTGlzdE1vZGVsLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgVHJhY2UsXG4gIFZhbHVlTW9kZWxcbn0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXNzaW9uIH0gZnJvbSAnLi9uYXZpZ2F0aW9uLXNlc3Npb24nO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7IFBsYWNlSGlzdG9yeSB9IGZyb20gJy4vcGxhY2UtaGlzdG9yeSc7XG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4vdmlzaXQnO1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBsYWNlUm91dGVyIGV4dGVuZHMgR2FyYmFnZUNvbGxlY3RvciB7XG5cbiAgcHJpdmF0ZSBmaXJzdFJvdXRlID0gdHJ1ZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPE5hdmlnYXRpb25TZXNzaW9uPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVWaXNpdHMgPSBuZXcgTXV0YWJsZUxpc3RNb2RlbDxWaXNpdD4oKTtcblxuICByZWFkb25seSBuYXZpZ2F0aW9uU2Vzc2lvbkFjdGl2ZTogQm9vbGVhblZhbHVlTW9kZWxDaGFpbjtcbiAgcmVhZG9ubHkgYWN0aXZlVmlzaXRJbmRleDogSGFzT25lSW5kZXhDaGFpbjwncGxhY2VEZWZpbml0aW9uJywgVmlzaXQ+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXJsU2VyaWFsaXplcjogVXJsU2VyaWFsaXplcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBuYXZpZ2F0aW9uU2Vzc2lvbkZhY3Rvcnk6IE5hdmlnYXRpb25TZXNzaW9uLkZhY3RvcnksXG4gICAgICAgICAgICAgIHJlYWRvbmx5IGFuZ3VsYXJMb2NhdGlvbjogTG9jYXRpb24sXG4gICAgICAgICAgICAgIHJlYWRvbmx5IHBsYWNlSGlzdG9yeTogUGxhY2VIaXN0b3J5KSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCB7IGNoYWluLCB2YWx1ZU9mLCBiZWZvcmUsIHdoZW4sIGFmdGVyLCBvYnNlcnZlLCBzd2l0Y2hPbiB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHRoaXMuYWN0aXZlVmlzaXRJbmRleCA9IGNoYWluKHRoaXMuX2FjdGl2ZVZpc2l0cykuaW5kZXhCeSgncGxhY2VEZWZpbml0aW9uJyk7XG5cbiAgICBhbmd1bGFyTG9jYXRpb24ub25VcmxDaGFuZ2UodXJsID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGBsb2NhdGlvbi5vblVybENoYW5nZSAtPiAke3VybH1gKTtcbiAgICB9KTtcblxuICAgIC8vIFRPRE86IG1ha2Ugc2V0dXAgdGhlIGNhbGxiYWNrcyBpbiBkdXJpbmcgbW9kdWxlIGluaXRpYXRpb24gdG8gbWFrZSB0aGlzIHRlc3RhYmxlLlxuICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgLy8gUm91dGluZyBldmVudCBzZXF1ZW5jZVxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgLy8gTmF2aWdhdGlvblN0YXJ0IC0+IC4uLi4gLT4gTmF2aWdhdGlvbkNhbmNlbCAtLT4gcmVkaXJlY3QsIGdvIGFyb3VuZCBhZ2FpbiBpbiB0aGUgc2FtZSBzZXNzaW9uXG4gICAgICAvLyBOYXZpZ2F0aW9uU3RhcnQgLT4gLi4uLiAtPiBOYXZpZ2F0aW9uRW5kIC0tPiBuYXZpZ2F0aW9uIGNvbXBsZXRlLCBlbmQgc2Vzc2lvbi5cbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25FcnJvciAtLT4gbmF2aWdhdGlvbiBjYW5jZWxlZCwgZW5kIHNlc3Npb24uXG4gICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgIHRoaXMub25Bbmd1bGFyUm91dGVyU3RhcnRlZChldmVudCk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgIHRoaXMub25Bbmd1bGFyUm91dGVyRmluaXNoZWQoZmFsc2UpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVycm9yKSB7XG4gICAgICAgIHRoaXMub25Bbmd1bGFyUm91dGVyRmluaXNoZWQodHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm5hdmlnYXRpb25TZXNzaW9uQWN0aXZlID0gY2hhaW4odGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsKS5pc05vdE5pbCgpO1xuICAgIHRoaXMubmF2aWdhdGlvblNlc3Npb25BY3RpdmUuc3Vic2NyaWJlKGFjdGl2ZSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnbmF2aWdhdGlvblNlc3Npb25BY3RpdmUnLCBhY3RpdmUpO1xuICAgIH0pO1xuICAgIC8vIGNvbnN0IHR4byA9IG5ldyBUcmFuc2FjdGlvbk9ic2VydmVyKCkub25FdmVudChlID0+IGNvbnNvbGUubG9nKGUudG9TdHJpbmcoKSkpO1xuICAgIC8vIHR4by5vYnNlcnZlKCd0aGlzLm5hdmlnYXRpb25TZXNzaW9uTW9kZWwnLCB0aGlzLm5hdmlnYXRpb25TZXNzaW9uTW9kZWwpO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRpb25TZXNzaW9uKCk6IE5hdmlnYXRpb25TZXNzaW9uIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvblNlc3Npb25Nb2RlbC52YWx1ZTtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsKCk6IFZhbHVlTW9kZWw8TmF2aWdhdGlvblNlc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvblNlc3Npb25Nb2RlbC5yZWFkb25seTtcbiAgfVxuXG4gIGdldCBhY3RpdmVWaXNpdHMoKTogTGlzdE1vZGVsPFZpc2l0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVZpc2l0cy5yZWFkb25seTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgcGxhY2VSb3V0ZXIubmF2aWdhdGUocGxhY2VEZXN0aW5hdGlvbnMuc29tZVBsYWNlLmNyZWF0ZVZpc2l0KHJvdXRlSWQsIC4uLnZpc2l0UGFyYW1zKSk7XG4gICAqIEBwYXJhbSB2aXNpdFxuICAgKi9cbiAgQFRyYWNlKClcbiAgYXN5bmMgbmF2aWdhdGUodmlzaXQ6IFZpc2l0LCBvcHRpb25zPzogeyByZWxhdGl2ZVRvOiBBY3RpdmF0ZWRSb3V0ZSB9KSB7XG4gICAgdGhpcy5kb05hdmlnYXRpb24odmlzaXQsIGFzeW5jIHJvdXRlciA9PiB7XG4gICAgICBjb25zdCBjb21tYW5kcyA9IFtcbiAgICAgICAgdmlzaXQucGxhY2VEZWZpbml0aW9uLnBhdGgsXG4gICAgICAgIC4uLnRoaXMuY3JlYXRlUm91dGVQYXJhbWV0ZXJzKHZpc2l0KVxuICAgICAgXTtcbiAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKGNvbW1hbmRzLCB7XG4gICAgICAgIHJlbGF0aXZlVG86IG9wdGlvbnMgPyBvcHRpb25zLnJlbGF0aXZlVG8gOiBudWxsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIHB1c2hWaXNpdENoYW5nZXNUb1JvdXRlKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJldmlvdXM6IFZpc2l0LCBuZXh0OiBWaXNpdCkge1xuXG4gICAgLy8gd2UgaGF2ZSB0byBwdXNoIHRvIGhpc3Rvcnkgc28gb3VyIHJlbWVtYmVyIHNhbml0aXNlcnMgZG9uJ3QgcGljayB1cCB0aGUgcHJldmlvdXMgdmFsdWVcbiAgICAvLyB3aGVuIGl0J3MgYmVlbiBjbGVhcmVkIGJ5IHRoZSB1c2VyLlxuICAgIHRoaXMucGxhY2VIaXN0b3J5LmFkZChuZXh0KTtcblxuICAgIC8vIEZJWE1FOiBubyByb3V0ZSBpZCAtPiByb3V0ZSBpZCBkdXBsaWNhdGVzIHJvdXRlIHBhcmFtZXRlcnNcbiAgICBpZiAobmV4dC5oYXNSb3V0aW5nQ2hhbmdlZEZyb20ocHJldmlvdXMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5kb05hdmlnYXRpb24obmV4dCwgcm91dGVyID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZHMgPSB0aGlzLnBhcnNlVXJsKHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90KS5jcmVhdGVSZWRpcmVjdENvbW1hbmRzRm9yKG5leHQpO1xuICAgICAgICAvLyAvLyB3ZSBoYXZlIHRvIHRvIHVzZSB0aGUgZGVmaW5pdGlvbiBmb3Igcm91dGUgaWQgYXMgb3VyIHJlZGlyZWN0aW9uIGFsd2F5cyBpbmNsdWRlc1xuICAgICAgICAvLyAvLyB0aGUgaWQgaW4gdGhlIHVybCBzZWdlbWVudHMgKGJ1dCBsZWF2ZXMgaXQgYmxhbmsgd2hlbiB0aGVyZSdzIG5vIGlkKS4gSS5lLiBpbiB0aGVcbiAgICAgICAgLy8gLy8gbm8gaWQgY2FzZSB3ZSdyZSBkb2luZyB0aGUgZm9sbG93aW5nIHJlZGlyZWN0IFs8cGxhY2VQYXRoPiwgXCJcIl0gLT4gW1wiLi5cIiwgPGlkPl1cbiAgICAgICAgLy8gY29uc3QgcmVsYXRpdmVQYXRoID0gISFwcmV2aW91cy5wbGFjZURlZmluaXRpb24uaGFzUm91dGVJZCgpID8gJy4uJyA6ICcuJztcbiAgICAgICAgLy8gY29uc3QgY29tbWFuZHMgPSBbXG4gICAgICAgIC8vICAgcmVsYXRpdmVQYXRoLFxuICAgICAgICAvLyAgIC4uLnRoaXMuY3JlYXRlUm91dGVQYXJhbWV0ZXJzKG5leHQpLFxuICAgICAgICAvLyAgIC4uLnRoaXMuZXh0cmFjdENoaWxkUGF0aChhY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdClcbiAgICAgICAgLy8gXTtcbiAgICAgICAgY29uc29sZS5sb2coJyMjIyBQdXNoIENoYW5nZXMgdG8gcm91dGUgUmVkaXJlY3QnLCB7IGNvbW1hbmRzIH0pO1xuICAgICAgICByZXR1cm4gcm91dGVyLm5hdmlnYXRlKGNvbW1hbmRzKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRvTmF2aWdhdGlvbih2aXNpdDogVmlzaXQsIGN1c3RvbU5hdmlnYXRpb246IChyb3V0ZXI6IFJvdXRlcikgPT4gYW55KSB7XG4gICAgdGhpcy5fbmF2aWdhdGlvblNlc3Npb25Nb2RlbC52YWx1ZSA9IHRoaXMubmF2aWdhdGlvblNlc3Npb25GYWN0b3J5LmNyZWF0ZUludGVybmFsKHZpc2l0KTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY3VzdG9tTmF2aWdhdGlvbih0aGlzLnJvdXRlcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIFJvdXRlciBoYXMgZmluaXNoZWQgKHNpbmNlIHRoZXJlIHdhcyBubyByb3V0ZXIgY2hhbmdlIHJlcXVpcmVkKSBzbyB3ZVxuICAgICAgLy8gbmVlZCB0byBlbmQgdGhlIG5hdmlnYXRpb24gc2Vzc2lvbi5cbiAgICAgIGlmICh0aGlzLm5hdmlnYXRpb25TZXNzaW9uICYmICF0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpKSB7XG4gICAgICAgIHRoaXMub25Bbmd1bGFyUm91dGVyRmluaXNoZWQoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUm91dGVQYXJhbWV0ZXJzKHZpc2l0OiBWaXNpdCkge1xuICAgIGNvbnN0IGRlZiA9IHZpc2l0LnBsYWNlRGVmaW5pdGlvbjtcbiAgICByZXR1cm4gdmlzaXQuaGFzUm91dGVJZCgpID9cbiAgICAgIFtkZWYuZ2V0Rm9ybWF0dGVkUm91dGVJZCh2aXNpdCksIGRlZi5nZXRGb3JtYXR0ZWRSb3V0ZVBhcmFtZXRlcnModmlzaXQpXSA6XG4gICAgICBbZGVmLmdldEZvcm1hdHRlZFJvdXRlUGFyYW1ldGVycyh2aXNpdCldO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgcHJpdmF0ZSBvbkFuZ3VsYXJSb3V0ZXJTdGFydGVkKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICBpZiAoIXRoaXMubmF2aWdhdGlvblNlc3Npb24pIHsgLy8gV2UgYmVlbiBhY3RpdmF0ZWQgYnkgYW4gZXh0ZXJuYWwgcm91dGUgcmF0aGVyIHRoYW4gcGxhY2VSb3V0ZXIuZ28odmlzaXQpXG4gICAgICBjb25zb2xlLmxvZygnbmF2aWdhdGlvbiBzdGFydGVkJywgeyBmaXJzdFRpbWU6IHRoaXMuZmlyc3RSb3V0ZSB9KTtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLm5hdmlnYXRpb25TZXNzaW9uRmFjdG9yeS5jcmVhdGVFeHRlcm5hbCh0aGlzLmZpcnN0Um91dGUpO1xuICAgICAgaWYgKGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSAncG9wc3RhdGUnKSB7XG4gICAgICAgIHNlc3Npb24uc2V0UG9wc3RhdGVSZXR1cm5VcmwodGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QudXJsKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX25hdmlnYXRpb25TZXNzaW9uTW9kZWwudmFsdWUgPSBzZXNzaW9uO1xuICAgIH1cbiAgICB0aGlzLmZpcnN0Um91dGUgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIHByaXZhdGUgb25Bbmd1bGFyUm91dGVyRmluaXNoZWQoY2FuY2VsbGVkOiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuX25hdmlnYXRpb25TZXNzaW9uTW9kZWwudmFsdWU7XG4gICAgaWYgKCFjYW5jZWxsZWQpIHtcbiAgICAgIC8vIFVwZGF0ZSB2aXNpdHMgYmVmb3JlIHdlIGVuZCB0aGUgbmF2aWdhdGlvbiBzZXNzaW9uLiAgVGhpcyBhbGxvd3MgdGhlIHBsYWNlT3V0ZXRzIHRvXG4gICAgICAvLyBpZ25vcmUgdmlzaXQgY2hhbmdlcyB0aGF0IG9jY3VyIHdoaWxlIHRoZSBuYXZpZ2F0aW9uIGlzIGluIHByb2dyZXNzXG4gICAgICBjb25zdCB2aXNpdHMgPSBzZXNzaW9uLmdldFZpc2l0cygpO1xuICAgICAgdmlzaXRzLmZvckVhY2godiA9PiB0aGlzLnBsYWNlSGlzdG9yeS5hZGQodikpO1xuICAgICAgdGhpcy5fYWN0aXZlVmlzaXRzLnZhbHVlID0gdmlzaXRzO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBbmd1bGFyIGRvZXNuJ3QgcHJlc2VydmUgdGhlIHVybCB3aGVuIGEgZ3VhcmQgY2FuY2VscyB0aGUgYmFjayBidXR0b24uXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTM1ODYjaXNzdWVjb21tZW50LTQzMjc5NTcyMFxuICAgICAgaWYgKHNlc3Npb24uaXNQb3BTdGF0ZSkge1xuICAgICAgICBjb25zb2xlLmxvZygnY2FuY2VsbGVkIGR1cmluZyBwb3BzdGF0ZScpO1xuICAgICAgICB0aGlzLmFuZ3VsYXJMb2NhdGlvbi5nbyhzZXNzaW9uLnBvcFN0YXRlUmV0dXJuVXJsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fbmF2aWdhdGlvblNlc3Npb25Nb2RlbC52YWx1ZSA9IG51bGw7XG4gIH1cblxuICBleHRyYWN0Q2hpbGRQYXRoKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogYW55W10ge1xuICAgIHJldHVybiBfLmZsYXR0ZW4oYWN0aXZhdGVkUm91dGUuY2hpbGRyZW4ubWFwKGNoaWxkID0+IGNoaWxkLnVybCkpO1xuICB9XG5cbiAgcGFyc2VVcmwoc25hcHNob3Q6IFJvdXRlclN0YXRlU25hcHNob3QpOiBQbGFjZVJvdXRlci5VcmxIZWxwZXIge1xuICAgIHJldHVybiBuZXcgUGxhY2VSb3V0ZXIuVXJsSGVscGVyKHRoaXMudXJsU2VyaWFsaXplci5wYXJzZShzbmFwc2hvdC51cmwpKTtcbiAgfVxuXG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUGxhY2VSb3V0ZXIge1xuXG5cbiAgZXhwb3J0IGNsYXNzIFVybEhlbHBlciB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHVybFRyZWU6IFVybFRyZWUpIHtcbiAgICAgIGNvbnNvbGUubG9nKHsgc2VnbWVudHM6IHRoaXMudXJsVHJlZS5yb290LmNoaWxkcmVuLnByaW1hcnkuc2VnbWVudHMgfSk7XG4gICAgfVxuXG4gICAgY2xvbmVVcmxTZWdtZW50TGlzdCgpOiBVcmxTZWdtZW50W10ge1xuICAgICAgcmV0dXJuIFsuLi50aGlzLnVybFRyZWUucm9vdC5jaGlsZHJlbi5wcmltYXJ5LnNlZ21lbnRzXTtcbiAgICB9XG5cbiAgICB1cGRhdGVWaXNpdFNlZ21lbnRzKHZpc2l0OiBWaXNpdCk6IFVybFNlZ21lbnRbXSB7XG4gICAgICAvLyBVZ2x5LCBidXQgaXQgd29ya3MgZm9yIG5vdy5cbiAgICAgIGNvbnN0IHNlZ21lbnRzID0gdGhpcy5jbG9uZVVybFNlZ21lbnRMaXN0KCk7XG4gICAgICBjb25zdCB2aXNpdFNlZ21lbnRzID0gdGhpcy5jb252ZXJ0VG9VcmxTZWdtZW50cyh2aXNpdCk7XG4gICAgICBjb25zdCByZXBsYWNlQXQgPSBzZWdtZW50cy5maW5kSW5kZXgoc2VnbWVudCA9PiBzZWdtZW50LnBhdGggPT09IHZpc2l0U2VnbWVudHNbMF0ucGF0aCk7XG4gICAgICAvLyBkbyBub3QgdXNlIHRoZSByZXR1cm4gdmFsdWUsIGl0J3MgdGhlIGl0ZW1zIHRoYXQgd2VyZSByZW1vdmVkIVxuICAgICAgc2VnbWVudHMuc3BsaWNlKHJlcGxhY2VBdCwgdmlzaXRTZWdtZW50cy5sZW5ndGgsIC4uLnZpc2l0U2VnbWVudHMpO1xuICAgICAgcmV0dXJuIHNlZ21lbnRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSB2aXNpdCBpbnRvIHNlZ21lbnRzLiAgUGxlYXNlIG5vdCB0aGF0IHRoZXNlIHNlZ21lbnRzIGFyZSBub3QgZVxuICAgICAqIEBwYXJhbSB2aXNpdFxuICAgICAqL1xuICAgIGNvbnZlcnRUb1VybFNlZ21lbnRzKHZpc2l0OiBWaXNpdCk6IFVybFNlZ21lbnRbXSB7XG4gICAgICByZXR1cm4gdmlzaXQucGxhY2VEZWZpbml0aW9uLmhhc1JvdXRlSWQoKSA/XG4gICAgICAgIFtcbiAgICAgICAgICAvLyBOT1RFOlxuICAgICAgICAgIC8vIEl0J3MgaW1wb3J0YW50IHRvIGF0dGFjaCB0aGUgcGFyYW1zIHRvIHRoZSByb290IHBhdGggYW5kIG5vdCB0aGUgaWQuICBJZiB3ZSBhdHRhY2ggdGhlbVxuICAgICAgICAgIC8vIHRvIGFuIGVtcHR5IGlkIHRoZW4gdGhlIGFuZ3VsYXIgcm91dGVyIHdvbid0IG1hdGNoIHRoZSBwYXR0ZXJuLlxuICAgICAgICAgIG5ldyBVcmxTZWdtZW50KHZpc2l0LnBsYWNlRGVmaW5pdGlvbi5wYXRoLCB2aXNpdC5wbGFjZURlZmluaXRpb24uZ2V0Rm9ybWF0dGVkUm91dGVQYXJhbWV0ZXJzKHZpc2l0KSksXG4gICAgICAgICAgbmV3IFVybFNlZ21lbnQodmlzaXQucGxhY2VEZWZpbml0aW9uLmdldEZvcm1hdHRlZFJvdXRlSWQodmlzaXQpLCB7fSldXG4gICAgICAgIDpcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBVcmxTZWdtZW50KHZpc2l0LnBsYWNlRGVmaW5pdGlvbi5wYXRoLCB2aXNpdC5wbGFjZURlZmluaXRpb24uZ2V0Rm9ybWF0dGVkUm91dGVQYXJhbWV0ZXJzKHZpc2l0KSlcbiAgICAgICAgXTtcbiAgICB9XG5cblxuICAgIEBUcmFjZSgpXG4gICAgY3JlYXRlUmVkaXJlY3RDb21tYW5kc0Zvcih2aXNpdDogVmlzaXQpOiBhbnlbXSB7XG5cbiAgICAgIGNvbnN0IHNlZ21lbnRzID0gdGhpcy51cGRhdGVWaXNpdFNlZ21lbnRzKHZpc2l0KTtcbiAgICAgIGNvbnN0IGNvbW1hbmRzID0gW107XG4gICAgICBzZWdtZW50cy5mb3JFYWNoKHMgPT4ge1xuICAgICAgICBjb21tYW5kcy5wdXNoKHMucGF0aCk7XG4gICAgICAgIGlmIChzLnBhcmFtZXRlck1hcC5rZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb21tYW5kcy5wdXNoKHMucGFyYW1ldGVycyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGNvbW1hbmRzO1xuICAgIH1cblxuICAgIGluY2x1ZGVzUGF0aE9mKHBsYWNlRGVmOiBQbGFjZURlZmluaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmNsb25lVXJsU2VnbWVudExpc3QoKS5maW5kKHMgPT4gcy5wYXRoID09PSBwbGFjZURlZi5wYXRoKTtcbiAgICB9XG5cbiAgfVxufVxuIl19
595
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLXJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFHTCxhQUFhLEVBQ2IsZUFBZSxFQUNmLGVBQWUsRUFDZixNQUFNLEVBRU4sVUFBVSxFQUNWLGFBQWEsRUFFZCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFFTCxHQUFHLEVBQ0gsZ0JBQWdCLEVBR2hCLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsS0FBSyxFQUVMLE1BQU0sRUFBRSxNQUFNLEVBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7Ozs7O0lBRzFCLFlBQVksR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDO0FBRW5FO0lBR2lDLHVDQUFnQjtJQWEvQyxxQkFBNkIsTUFBYyxFQUNkLGFBQTRCLEVBQ3JDLGtCQUFxQyxFQUNwQyxlQUF5QixFQUN6QixZQUEwQjtRQUovQyxZQUtFLGlCQUFPLFNBaUNSO1FB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UUFBUSxDQUFDO1FBQ2xCLENBQUM7Ozs7O1FBRUQsa0NBQWM7Ozs7UUFBZCxVQUFlLFFBQXlCO1lBQ3RDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsSUFBSTs7OztZQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsSUFBSSxFQUF4QixDQUF3QixFQUFDLENBQUM7UUFDeEUsQ0FBQztRQWZEO1lBREMsS0FBSyxFQUFFOztxREFDeUIsS0FBSzs7a0VBV3JDO1FBTUgsZ0JBQUM7S0FBQSxBQXpERCxJQXlEQztJQXpEWSxxQkFBUyxZQXlEckIsQ0FBQTs7Ozs7O1FBdkRhLDRCQUF3Qjs7QUF3RHhDLENBQUMsRUE3RGdCLFdBQVcsS0FBWCxXQUFXLFFBNkQzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlLFxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBOYXZpZ2F0aW9uRW5kLFxuICBOYXZpZ2F0aW9uRXJyb3IsXG4gIE5hdmlnYXRpb25TdGFydCxcbiAgUm91dGVyLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxuICBVcmxTZWdtZW50LFxuICBVcmxTZXJpYWxpemVyLFxuICBVcmxUcmVlXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBCb29sZWFuVmFsdWVNb2RlbENoYWluLFxuICBEc2wsXG4gIEdhcmJhZ2VDb2xsZWN0b3IsXG4gIEhhc09uZUluZGV4Q2hhaW4sXG4gIExpc3RNb2RlbCxcbiAgTXV0YWJsZUxpc3RNb2RlbCxcbiAgTXV0YWJsZVZhbHVlTW9kZWwsXG4gIFRyYWNlLFxuICBWYWx1ZU1vZGVsLFxuICBhc3NlcnQsIExvZ2dlclxufSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgSW50ZXJhY3Rpb25Db250ZXh0IH0gZnJvbSAnLi4vaW50ZXJhY3Rpb24vaW50ZXJhY3Rpb24tY29udGV4dCc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2Vzc2lvbiB9IGZyb20gJy4vbmF2aWdhdGlvbi1zZXNzaW9uJztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi9wbGFjZS1kZWZpbml0aW9uJztcbmltcG9ydCB7IFBsYWNlSGlzdG9yeSB9IGZyb20gJy4vcGxhY2UtaGlzdG9yeSc7XG5pbXBvcnQgeyBOb29wR2F0ZXdheVBsYWNlIH0gZnJvbSAnLi9wbGFjZXMvbm9vcC1nYXRld2F5LXBsYWNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4vdmlzaXQnO1xuXG5cbmNvbnN0IG5vb3BQbGFjZURlZiA9IFBsYWNlQ29tcG9uZW50LmdldERlZmluaXRpb24oTm9vcEdhdGV3YXlQbGFjZSk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBsYWNlUm91dGVyIGV4dGVuZHMgR2FyYmFnZUNvbGxlY3RvciB7XG5cbiAgcHJpdmF0ZSBmaXJzdFJvdXRlID0gdHJ1ZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPE5hdmlnYXRpb25TZXNzaW9uPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVWaXNpdHMgPSBuZXcgTXV0YWJsZUxpc3RNb2RlbDxWaXNpdD4oKTtcblxuICByZWFkb25seSBuYXZpZ2F0aW9uU2Vzc2lvbkFjdGl2ZTogQm9vbGVhblZhbHVlTW9kZWxDaGFpbjtcbiAgcmVhZG9ubHkgYWN0aXZlVmlzaXRJbmRleDogSGFzT25lSW5kZXhDaGFpbjwncGxhY2VEZWZpbml0aW9uJywgVmlzaXQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRpb25TZXNzaW9uRmFjdG9yeTogTmF2aWdhdGlvblNlc3Npb24uRmFjdG9yeTtcbiAgcHJpdmF0ZSBpbml0aWFsUmVkaXJlY3RTdGFydGVkID0gZmFsc2U7XG4gIHByaXZhdGUgaW5pdGlhbFJlZGlyZWN0RmluaXNoZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHVybFNlcmlhbGl6ZXI6IFVybFNlcmlhbGl6ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgaW50ZXJhY3Rpb25Db250ZXh0OkludGVyYWN0aW9uQ29udGV4dCxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgYW5ndWxhckxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICAgICAgICAgICAgcmVhZG9ubHkgcGxhY2VIaXN0b3J5OiBQbGFjZUhpc3RvcnkpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHsgY2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9uIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgdGhpcy5hY3RpdmVWaXNpdEluZGV4ID0gY2hhaW4odGhpcy5fYWN0aXZlVmlzaXRzKS5pbmRleEJ5KCdwbGFjZURlZmluaXRpb24nKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXNzaW9uRmFjdG9yeSA9IG5ldyBOYXZpZ2F0aW9uU2Vzc2lvbi5GYWN0b3J5KGludGVyYWN0aW9uQ29udGV4dCk7XG4gICAgYW5ndWxhckxvY2F0aW9uLm9uVXJsQ2hhbmdlKHVybCA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhgbG9jYXRpb24ub25VcmxDaGFuZ2UgLT4gJHt1cmx9YCk7XG4gICAgfSk7XG5cbiAgICAvLyBUT0RPOiBtYWtlIHNldHVwIHRoZSBjYWxsYmFja3MgaW4gZHVyaW5nIG1vZHVsZSBpbml0aWF0aW9uIHRvIG1ha2UgdGhpcyB0ZXN0YWJsZS5cbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIC8vIFJvdXRpbmcgZXZlbnQgc2VxdWVuY2VcbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25DYW5jZWwgLS0+IHJlZGlyZWN0LCBnbyBhcm91bmQgYWdhaW4gaW4gdGhlIHNhbWUgc2Vzc2lvblxuICAgICAgLy8gTmF2aWdhdGlvblN0YXJ0IC0+IC4uLi4gLT4gTmF2aWdhdGlvbkVuZCAtLT4gbmF2aWdhdGlvbiBjb21wbGV0ZSwgZW5kIHNlc3Npb24uXG4gICAgICAvLyBOYXZpZ2F0aW9uU3RhcnQgLT4gLi4uLiAtPiBOYXZpZ2F0aW9uRXJyb3IgLS0+IG5hdmlnYXRpb24gY2FuY2VsZWQsIGVuZCBzZXNzaW9uLlxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICB0aGlzLm9uQW5ndWxhclJvdXRlclN0YXJ0ZWQoZXZlbnQpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICB0aGlzLm9uQW5ndWxhclJvdXRlckZpbmlzaGVkKGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcikge1xuICAgICAgICB0aGlzLm9uQW5ndWxhclJvdXRlckZpbmlzaGVkKHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbkFjdGl2ZSA9IGNoYWluKHRoaXMubmF2aWdhdGlvblNlc3Npb25Nb2RlbCkuaXNOb3ROaWwoKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXNzaW9uQWN0aXZlLnN1YnNjcmliZShhY3RpdmUgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ25hdmlnYXRpb25TZXNzaW9uQWN0aXZlJywgYWN0aXZlKTtcbiAgICB9KTtcbiAgICAvLyBjb25zdCB0eG8gPSBuZXcgVHJhbnNhY3Rpb25PYnNlcnZlcigpLm9uRXZlbnQoZSA9PiBjb25zb2xlLmxvZyhlLnRvU3RyaW5nKCkpKTtcbiAgICAvLyB0eG8ub2JzZXJ2ZSgndGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsJywgdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsKTtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0aW9uU2Vzc2lvbigpOiBOYXZpZ2F0aW9uU2Vzc2lvbiB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25TZXNzaW9uTW9kZWwudmFsdWU7XG4gIH1cblxuICBnZXQgbmF2aWdhdGlvblNlc3Npb25Nb2RlbCgpOiBWYWx1ZU1vZGVsPE5hdmlnYXRpb25TZXNzaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25TZXNzaW9uTW9kZWwucmVhZG9ubHk7XG4gIH1cblxuICBnZXQgYWN0aXZlVmlzaXRzKCk6IExpc3RNb2RlbDxWaXNpdD4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVWaXNpdHMucmVhZG9ubHk7XG4gIH1cblxuICAvKipcbiAgICogIHBsYWNlUm91dGVyLm5hdmlnYXRlKHBsYWNlRGVzdGluYXRpb25zLnNvbWVQbGFjZS5jcmVhdGVWaXNpdChyb3V0ZUlkLCAuLi52aXNpdFBhcmFtcykpO1xuICAgKiBAcGFyYW0gdmlzaXRcbiAgICovXG4gIEBUcmFjZSgpXG4gIGFzeW5jIG5hdmlnYXRlKHZpc2l0OiBWaXNpdCwgb3B0aW9ucz86IHsgcmVsYXRpdmVUbzogQWN0aXZhdGVkUm91dGUgfSkge1xuICAgIHRoaXMuZG9OYXZpZ2F0aW9uKHZpc2l0LCBhc3luYyByb3V0ZXIgPT4ge1xuICAgICAgY29uc3QgY29tbWFuZHMgPSBbXG4gICAgICAgIHZpc2l0LnBsYWNlRGVmaW5pdGlvbi5wYXRoLFxuICAgICAgICAuLi50aGlzLmNyZWF0ZVJvdXRlUGFyYW1ldGVycyh2aXNpdClcbiAgICAgIF07XG4gICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShjb21tYW5kcywge1xuICAgICAgICByZWxhdGl2ZVRvOiBvcHRpb25zID8gb3B0aW9ucy5yZWxhdGl2ZVRvIDogbnVsbFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhc3luYyBwdXNoVmlzaXRDaGFuZ2VzVG9Sb3V0ZShhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByZXZpb3VzOiBWaXNpdCwgbmV4dDogVmlzaXQpIHtcblxuICAgIC8vIHdlIGhhdmUgdG8gcHVzaCB0byBoaXN0b3J5IHNvIG91ciByZW1lbWJlciBzYW5pdGlzZXJzIGRvbid0IHBpY2sgdXAgdGhlIHByZXZpb3VzIHZhbHVlXG4gICAgLy8gd2hlbiBpdCdzIGJlZW4gY2xlYXJlZCBieSB0aGUgdXNlci5cbiAgICB0aGlzLnBsYWNlSGlzdG9yeS5hZGQobmV4dCk7XG5cbiAgICAvLyBGSVhNRTogbm8gcm91dGUgaWQgLT4gcm91dGUgaWQgZHVwbGljYXRlcyByb3V0ZSBwYXJhbWV0ZXJzXG4gICAgaWYgKG5leHQuaGFzUm91dGluZ0NoYW5nZWRGcm9tKHByZXZpb3VzKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZG9OYXZpZ2F0aW9uKG5leHQsIHJvdXRlciA9PiB7XG4gICAgICAgIGNvbnN0IGNvbW1hbmRzID0gdGhpcy5wYXJzZVVybCh0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdCkuY3JlYXRlUmVkaXJlY3RDb21tYW5kc0ZvcihuZXh0KTtcbiAgICAgICAgLy8gLy8gd2UgaGF2ZSB0byB0byB1c2UgdGhlIGRlZmluaXRpb24gZm9yIHJvdXRlIGlkIGFzIG91ciByZWRpcmVjdGlvbiBhbHdheXMgaW5jbHVkZXNcbiAgICAgICAgLy8gLy8gdGhlIGlkIGluIHRoZSB1cmwgc2VnZW1lbnRzIChidXQgbGVhdmVzIGl0IGJsYW5rIHdoZW4gdGhlcmUncyBubyBpZCkuIEkuZS4gaW4gdGhlXG4gICAgICAgIC8vIC8vIG5vIGlkIGNhc2Ugd2UncmUgZG9pbmcgdGhlIGZvbGxvd2luZyByZWRpcmVjdCBbPHBsYWNlUGF0aD4sIFwiXCJdIC0+IFtcIi4uXCIsIDxpZD5dXG4gICAgICAgIC8vIGNvbnN0IHJlbGF0aXZlUGF0aCA9ICEhcHJldmlvdXMucGxhY2VEZWZpbml0aW9uLmhhc1JvdXRlSWQoKSA/ICcuLicgOiAnLic7XG4gICAgICAgIC8vIGNvbnN0IGNvbW1hbmRzID0gW1xuICAgICAgICAvLyAgIHJlbGF0aXZlUGF0aCxcbiAgICAgICAgLy8gICAuLi50aGlzLmNyZWF0ZVJvdXRlUGFyYW1ldGVycyhuZXh0KSxcbiAgICAgICAgLy8gICAuLi50aGlzLmV4dHJhY3RDaGlsZFBhdGgoYWN0aXZhdGVkUm91dGUuc25hcHNob3QpXG4gICAgICAgIC8vIF07XG4gICAgICAgIGNvbnNvbGUubG9nKCcjIyMgUHVzaCBDaGFuZ2VzIHRvIHJvdXRlIFJlZGlyZWN0JywgeyBjb21tYW5kcyB9KTtcbiAgICAgICAgcmV0dXJuIHJvdXRlci5uYXZpZ2F0ZShjb21tYW5kcyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkb05hdmlnYXRpb24odmlzaXQ6IFZpc2l0LCBjdXN0b21OYXZpZ2F0aW9uOiAocm91dGVyOiBSb3V0ZXIpID0+IGFueSkge1xuICAgIHRoaXMuX25hdmlnYXRpb25TZXNzaW9uTW9kZWwudmFsdWUgPSB0aGlzLm5hdmlnYXRpb25TZXNzaW9uRmFjdG9yeS5jcmVhdGVJbnRlcm5hbCh2aXNpdCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGN1c3RvbU5hdmlnYXRpb24odGhpcy5yb3V0ZXIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBSb3V0ZXIgaGFzIGZpbmlzaGVkIChzaW5jZSB0aGVyZSB3YXMgbm8gcm91dGVyIGNoYW5nZSByZXF1aXJlZCkgc28gd2VcbiAgICAgIC8vIG5lZWQgdG8gZW5kIHRoZSBuYXZpZ2F0aW9uIHNlc3Npb24uXG4gICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbiAmJiAhdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKSkge1xuICAgICAgICB0aGlzLm9uQW5ndWxhclJvdXRlckZpbmlzaGVkKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVJvdXRlUGFyYW1ldGVycyh2aXNpdDogVmlzaXQpIHtcbiAgICBjb25zdCBkZWYgPSB2aXNpdC5wbGFjZURlZmluaXRpb247XG4gICAgcmV0dXJuIHZpc2l0Lmhhc1JvdXRlSWQoKSA/XG4gICAgICBbZGVmLmdldEZvcm1hdHRlZFJvdXRlSWQodmlzaXQpLCBkZWYuZ2V0Rm9ybWF0dGVkUm91dGVQYXJhbWV0ZXJzKHZpc2l0KV0gOlxuICAgICAgW2RlZi5nZXRGb3JtYXR0ZWRSb3V0ZVBhcmFtZXRlcnModmlzaXQpXTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIHByaXZhdGUgb25Bbmd1bGFyUm91dGVyU3RhcnRlZChldmVudDogTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgaWYgKCF0aGlzLm5hdmlnYXRpb25TZXNzaW9uKSB7IC8vIFdlIGJlZW4gYWN0aXZhdGVkIGJ5IGFuIGV4dGVybmFsIHJvdXRlIHJhdGhlciB0aGFuIHBsYWNlUm91dGVyLmdvKHZpc2l0KVxuICAgICAgY29uc29sZS5sb2coJ25hdmlnYXRpb24gc3RhcnRlZCcsIHsgZmlyc3RUaW1lOiB0aGlzLmZpcnN0Um91dGUgfSk7XG4gICAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbkZhY3RvcnkuY3JlYXRlRXh0ZXJuYWwodGhpcy5maXJzdFJvdXRlKTtcbiAgICAgIGlmIChldmVudC5uYXZpZ2F0aW9uVHJpZ2dlciA9PT0gJ3BvcHN0YXRlJykge1xuICAgICAgICBzZXNzaW9uLnNldFBvcHN0YXRlUmV0dXJuVXJsKHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsLnZhbHVlID0gc2Vzc2lvbjtcbiAgICB9XG4gICAgdGhpcy5maXJzdFJvdXRlID0gZmFsc2U7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBwcml2YXRlIG9uQW5ndWxhclJvdXRlckZpbmlzaGVkKGNhbmNlbGxlZDogYm9vbGVhbikge1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsLnZhbHVlO1xuICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAvLyBVcGRhdGUgdmlzaXRzIGJlZm9yZSB3ZSBlbmQgdGhlIG5hdmlnYXRpb24gc2Vzc2lvbi4gIFRoaXMgYWxsb3dzIHRoZSBwbGFjZU91dGV0cyB0b1xuICAgICAgLy8gaWdub3JlIHZpc2l0IGNoYW5nZXMgdGhhdCBvY2N1ciB3aGlsZSB0aGUgbmF2aWdhdGlvbiBpcyBpbiBwcm9ncmVzc1xuICAgICAgY29uc3QgdmlzaXRzID0gc2Vzc2lvbi5nZXRWaXNpdHMoKTtcbiAgICAgIHZpc2l0cy5mb3JFYWNoKHYgPT4gdGhpcy5wbGFjZUhpc3RvcnkuYWRkKHYpKTtcbiAgICAgIHRoaXMuX2FjdGl2ZVZpc2l0cy52YWx1ZSA9IHZpc2l0cztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQW5ndWxhciBkb2Vzbid0IHByZXNlcnZlIHRoZSB1cmwgd2hlbiBhIGd1YXJkIGNhbmNlbHMgdGhlIGJhY2sgYnV0dG9uLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEzNTg2I2lzc3VlY29tbWVudC00MzI3OTU3MjBcbiAgICAgIGlmIChzZXNzaW9uLmlzUG9wU3RhdGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ2NhbmNlbGxlZCBkdXJpbmcgcG9wc3RhdGUnKTtcbiAgICAgICAgdGhpcy5hbmd1bGFyTG9jYXRpb24uZ28oc2Vzc2lvbi5wb3BTdGF0ZVJldHVyblVybCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX25hdmlnYXRpb25TZXNzaW9uTW9kZWwudmFsdWUgPSBudWxsO1xuICB9XG5cbiAgZXh0cmFjdENoaWxkUGF0aChhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IGFueVtdIHtcbiAgICByZXR1cm4gXy5mbGF0dGVuKGFjdGl2YXRlZFJvdXRlLmNoaWxkcmVuLm1hcChjaGlsZCA9PiBjaGlsZC51cmwpKTtcbiAgfVxuXG4gIHBhcnNlVXJsKHNuYXBzaG90OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogUGxhY2VSb3V0ZXIuVXJsSGVscGVyIHtcbiAgICByZXR1cm4gbmV3IFBsYWNlUm91dGVyLlVybEhlbHBlcih0aGlzLnVybFNlcmlhbGl6ZXIucGFyc2Uoc25hcHNob3QudXJsKSk7XG4gIH1cblxuICAvLyBUT0RPOiB0aGlzIGFsbCBvbmx5IHNvcnQgb2Ygd29ya3MuICBPcGVuaW5nIGRpYWxvZ3MgYW5kIGNsaWNraW5nIGJhY2sgbXVsdGlwbGUgdGltZXMgYnJlYWtzIHRoaW5ncy5cbiAgLy8gVE9ETzogbmV4dCBzdGFnZSBpcyB0byBpbnZlc3RpZ2F0ZSB0cmFja2luZyBkaWFsb2cgc3RhdGUgaW4gYSBkaWZmZXJlbnQgcGxhY2VvdXRsZXQgYW5kIGtlZXBpbmcgdGhvc2VcbiAgLy8gVE9ETzogdXJscyBvdXQgb2YgdGhlIGhpc3RvcnkuXG4gIHBlcmZvcm1Jbml0aWFsTmF2aWdhdGlvbkludGVyY2VwdChhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpIHtcbiAgICBhc3NlcnQuaXNUcnV0aHkodGhpcy5pc0luaXRpYWxOYXZpZ2F0aW9uKCkpO1xuICAgIExvZ2dlci5nZXQodGhpcykuaW5mbyhgUmVkaXJlY3RpbmcgdG86ICR7bm9vcFBsYWNlRGVmLnBhdGh9YCwge3JldHVyblVybDogc3RhdGUudXJsfSk7XG4gICAgaWYgKCF0aGlzLmluaXRpYWxSZWRpcmVjdEZpbmlzaGVkKSB7XG4gICAgICB0aGlzLmluaXRpYWxSZWRpcmVjdEZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtub29wUGxhY2VEZWYucGF0aCwge1xuICAgICAgICByZXR1cm5Vcmw6IHN0YXRlLnVybFxuICAgICAgfV0sIHtcbiAgICAgICAgcmVwbGFjZVVybDogdHJ1ZSwgLy8gbWFrZSBzdXJlIHdlIHVwZGF0ZSBvdXIgaGlzdG9yeVxuICAgICAgICBza2lwTG9jYXRpb25DaGFuZ2U6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpc0luaXRpYWxOYXZpZ2F0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb25TZXNzaW9uLmZpcnN0TmF2aWdhdGlvbiAmJiAhdGhpcy5pbml0aWFsUmVkaXJlY3RGaW5pc2hlZDtcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBsYWNlUm91dGVyIHtcblxuXG4gIGV4cG9ydCBjbGFzcyBVcmxIZWxwZXIge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB1cmxUcmVlOiBVcmxUcmVlKSB7XG4gICAgICBjb25zb2xlLmxvZyh7IHNlZ21lbnRzOiB0aGlzLnVybFRyZWUucm9vdC5jaGlsZHJlbi5wcmltYXJ5LnNlZ21lbnRzIH0pO1xuICAgIH1cblxuICAgIGNsb25lVXJsU2VnbWVudExpc3QoKTogVXJsU2VnbWVudFtdIHtcbiAgICAgIHJldHVybiBbLi4udGhpcy51cmxUcmVlLnJvb3QuY2hpbGRyZW4ucHJpbWFyeS5zZWdtZW50c107XG4gICAgfVxuXG4gICAgdXBkYXRlVmlzaXRTZWdtZW50cyh2aXNpdDogVmlzaXQpOiBVcmxTZWdtZW50W10ge1xuICAgICAgLy8gVWdseSwgYnV0IGl0IHdvcmtzIGZvciBub3cuXG4gICAgICBjb25zdCBzZWdtZW50cyA9IHRoaXMuY2xvbmVVcmxTZWdtZW50TGlzdCgpO1xuICAgICAgY29uc3QgdmlzaXRTZWdtZW50cyA9IHRoaXMuY29udmVydFRvVXJsU2VnbWVudHModmlzaXQpO1xuICAgICAgY29uc3QgcmVwbGFjZUF0ID0gc2VnbWVudHMuZmluZEluZGV4KHNlZ21lbnQgPT4gc2VnbWVudC5wYXRoID09PSB2aXNpdFNlZ21lbnRzWzBdLnBhdGgpO1xuICAgICAgLy8gZG8gbm90IHVzZSB0aGUgcmV0dXJuIHZhbHVlLCBpdCdzIHRoZSBpdGVtcyB0aGF0IHdlcmUgcmVtb3ZlZCFcbiAgICAgIHNlZ21lbnRzLnNwbGljZShyZXBsYWNlQXQsIHZpc2l0U2VnbWVudHMubGVuZ3RoLCAuLi52aXNpdFNlZ21lbnRzKTtcbiAgICAgIHJldHVybiBzZWdtZW50cztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgdmlzaXQgaW50byBzZWdtZW50cy4gIFBsZWFzZSBub3QgdGhhdCB0aGVzZSBzZWdtZW50cyBhcmUgbm90IGVcbiAgICAgKiBAcGFyYW0gdmlzaXRcbiAgICAgKi9cbiAgICBjb252ZXJ0VG9VcmxTZWdtZW50cyh2aXNpdDogVmlzaXQpOiBVcmxTZWdtZW50W10ge1xuICAgICAgcmV0dXJuIHZpc2l0LnBsYWNlRGVmaW5pdGlvbi5oYXNSb3V0ZUlkKCkgP1xuICAgICAgICBbXG4gICAgICAgICAgLy8gTk9URTpcbiAgICAgICAgICAvLyBJdCdzIGltcG9ydGFudCB0byBhdHRhY2ggdGhlIHBhcmFtcyB0byB0aGUgcm9vdCBwYXRoIGFuZCBub3QgdGhlIGlkLiAgSWYgd2UgYXR0YWNoIHRoZW1cbiAgICAgICAgICAvLyB0byBhbiBlbXB0eSBpZCB0aGVuIHRoZSBhbmd1bGFyIHJvdXRlciB3b24ndCBtYXRjaCB0aGUgcGF0dGVybi5cbiAgICAgICAgICBuZXcgVXJsU2VnbWVudCh2aXNpdC5wbGFjZURlZmluaXRpb24ucGF0aCwgdmlzaXQucGxhY2VEZWZpbml0aW9uLmdldEZvcm1hdHRlZFJvdXRlUGFyYW1ldGVycyh2aXNpdCkpLFxuICAgICAgICAgIG5ldyBVcmxTZWdtZW50KHZpc2l0LnBsYWNlRGVmaW5pdGlvbi5nZXRGb3JtYXR0ZWRSb3V0ZUlkKHZpc2l0KSwge30pXVxuICAgICAgICA6XG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgVXJsU2VnbWVudCh2aXNpdC5wbGFjZURlZmluaXRpb24ucGF0aCwgdmlzaXQucGxhY2VEZWZpbml0aW9uLmdldEZvcm1hdHRlZFJvdXRlUGFyYW1ldGVycyh2aXNpdCkpXG4gICAgICAgIF07XG4gICAgfVxuXG5cbiAgICBAVHJhY2UoKVxuICAgIGNyZWF0ZVJlZGlyZWN0Q29tbWFuZHNGb3IodmlzaXQ6IFZpc2l0KTogYW55W10ge1xuXG4gICAgICBjb25zdCBzZWdtZW50cyA9IHRoaXMudXBkYXRlVmlzaXRTZWdtZW50cyh2aXNpdCk7XG4gICAgICBjb25zdCBjb21tYW5kcyA9IFtdO1xuICAgICAgc2VnbWVudHMuZm9yRWFjaChzID0+IHtcbiAgICAgICAgY29tbWFuZHMucHVzaChzLnBhdGgpO1xuICAgICAgICBpZiAocy5wYXJhbWV0ZXJNYXAua2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29tbWFuZHMucHVzaChzLnBhcmFtZXRlcnMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjb21tYW5kcztcbiAgICB9XG5cbiAgICBpbmNsdWRlc1BhdGhPZihwbGFjZURlZjogUGxhY2VEZWZpbml0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5jbG9uZVVybFNlZ21lbnRMaXN0KCkuZmluZChzID0+IHMucGF0aCA9PT0gcGxhY2VEZWYucGF0aCk7XG4gICAgfVxuXG4gIH1cbn1cbiJdfQ==
@@ -47,4 +47,4 @@ export function Place(options) {
47
47
  Options.prototype.defaultChild;
48
48
  }
49
49
  })(Place || (Place = {}));
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFpQixJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQUVyRCxNQUFNLFVBQVUsS0FBSyxDQUFDLE9BQXNCO0lBQzFDOzs7O0lBQU8sVUFBQyxNQUFnQjtRQUN0QixJQUFJLGNBQWMsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0RCxjQUFjLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksZUFBZSxDQUN6RCxNQUFNLEVBQ04sT0FBTyxDQUFDLElBQUksRUFDWixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUM1RCxPQUFPLENBQUMsSUFBSSxFQUNaLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFDekMsQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUc7Ozs7WUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQS9CLENBQStCLEVBQUMsQ0FDbkUsQ0FBQyxDQUFDO1NBRUo7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLENBQUksTUFBTSw0REFBeUQsQ0FBQyxDQUFDO1NBQ3ZGO0lBQ0gsQ0FBQyxFQUFDO0FBQ0osQ0FBQztBQUVELFdBQWlCLEtBQUs7Ozs7SUFFcEIsc0JBTUM7Ozs7UUFMQyx1QkFBYTs7UUFDYix1QkFBOEI7O1FBQzlCLCtCQUF1Qjs7UUFDdkIsMkJBQTBDOztRQUMxQywrQkFBNEM7O0FBR2hELENBQUMsRUFWZ0IsS0FBSyxLQUFMLEtBQUssUUFVckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3RhYmxlLCBsYW5nIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuL3BsYWNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuL3BsYWNlLWRlZmluaXRpb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gUGxhY2Uob3B0aW9uczogUGxhY2UuT3B0aW9ucykge1xuICByZXR1cm4gKHRhcmdldDogRnVuY3Rpb24pID0+IHtcbiAgICBpZiAoUGxhY2VDb21wb25lbnQuaXNQbGFjZUNvbXBvbmVudENvbnN0cnVjdG9yKHRhcmdldCkpIHtcbiAgICAgIFBsYWNlQ29tcG9uZW50LmluamVjdERlZmluaXRpb24odGFyZ2V0LCBuZXcgUGxhY2VEZWZpbml0aW9uKFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIG9wdGlvbnMucGF0aCxcbiAgICAgICAgXy5pc05pbChvcHRpb25zLmF1dGhlbnRpY2F0ZSkgPyBmYWxzZSA6IG9wdGlvbnMuYXV0aGVudGljYXRlLFxuICAgICAgICBvcHRpb25zLmRhdGEsXG4gICAgICAgIFBsYWNlQ29tcG9uZW50LmdldFJvdXRlUGFyYW1ldGVycyh0YXJnZXQpLFxuICAgICAgICAob3B0aW9ucy5jaGlsZHJlbiB8fCBbXSkubWFwKGMgPT4gUGxhY2VDb21wb25lbnQuZ2V0RGVmaW5pdGlvbihjKSlcbiAgICAgICkpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIGxhbmcuaWxsZWdhbFN0YXRlKGAke3RhcmdldH0gbXVzdCBleHRlbmQgUGxhY2VDb21wb25lbnQgdG8gdXNlIHRoZSBAUGxhY2UgZGVjb3JhdG9yYCk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBsYWNlIHtcblxuICBleHBvcnQgaW50ZXJmYWNlIE9wdGlvbnMge1xuICAgIHBhdGg6IHN0cmluZyxcbiAgICBkYXRhPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgLy8gZGVmYXVsdHMgdG8gdHJ1ZVxuICAgIGF1dGhlbnRpY2F0ZT86IGJvb2xlYW4sIC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICBjaGlsZHJlbj86IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+W11cbiAgICBkZWZhdWx0Q2hpbGQ/OiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PlxuICB9XG5cbn1cbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFpQixJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQUVyRCxNQUFNLFVBQVUsS0FBSyxDQUFDLE9BQXNCO0lBQzFDOzs7O0lBQU8sVUFBQyxNQUFnQjtRQUN0QixJQUFJLGNBQWMsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0RCxjQUFjLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksZUFBZSxDQUN6RCxNQUFNLEVBQ04sT0FBTyxDQUFDLElBQUksRUFDWixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUM1RCxPQUFPLENBQUMsSUFBSSxFQUNaLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFDekMsQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUc7Ozs7WUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQS9CLENBQStCLEVBQUMsQ0FDbkUsQ0FBQyxDQUFDO1NBRUo7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLENBQUksTUFBTSw0REFBeUQsQ0FBQyxDQUFDO1NBQ3ZGO0lBQ0gsQ0FBQyxFQUFDO0FBQ0osQ0FBQztBQUVELFdBQWlCLEtBQUs7Ozs7SUFFcEIsc0JBTUM7Ozs7UUFMQyx1QkFBYTs7UUFDYix1QkFBOEI7O1FBQzlCLCtCQUF1Qjs7UUFDdkIsMkJBQTBDOztRQUMxQywrQkFBNEM7O0FBR2hELENBQUMsRUFWZ0IsS0FBSyxLQUFMLEtBQUssUUFVckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3RhYmxlLCBsYW5nIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuL3BsYWNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuL3BsYWNlLWRlZmluaXRpb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gUGxhY2Uob3B0aW9uczogUGxhY2UuT3B0aW9ucykge1xuICByZXR1cm4gKHRhcmdldDogRnVuY3Rpb24pID0+IHtcbiAgICBpZiAoUGxhY2VDb21wb25lbnQuaXNQbGFjZUNvbXBvbmVudENvbnN0cnVjdG9yKHRhcmdldCkpIHtcbiAgICAgIFBsYWNlQ29tcG9uZW50LmluamVjdERlZmluaXRpb24odGFyZ2V0LCBuZXcgUGxhY2VEZWZpbml0aW9uKFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIG9wdGlvbnMucGF0aCxcbiAgICAgICAgXy5pc05pbChvcHRpb25zLmF1dGhlbnRpY2F0ZSkgPyBmYWxzZSA6IG9wdGlvbnMuYXV0aGVudGljYXRlLFxuICAgICAgICBvcHRpb25zLmRhdGEsXG4gICAgICAgIFBsYWNlQ29tcG9uZW50LmdldFJvdXRlUGFyYW1ldGVycyh0YXJnZXQpLFxuICAgICAgICAob3B0aW9ucy5jaGlsZHJlbiB8fCBbXSkubWFwKGMgPT4gUGxhY2VDb21wb25lbnQuZ2V0RGVmaW5pdGlvbihjKSlcbiAgICAgICkpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIGxhbmcuaWxsZWdhbFN0YXRlKGAke3RhcmdldH0gbXVzdCBleHRlbmQgUGxhY2VDb21wb25lbnQgdG8gdXNlIHRoZSBAUGxhY2UgZGVjb3JhdG9yYCk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBsYWNlIHtcblxuICBleHBvcnQgaW50ZXJmYWNlIE9wdGlvbnMge1xuICAgIHBhdGg6IHN0cmluZyxcbiAgICBkYXRhPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgLy8gZGVmYXVsdHMgdG8gdHJ1ZVxuICAgIGF1dGhlbnRpY2F0ZT86IGJvb2xlYW4sIC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICBjaGlsZHJlbj86IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+W11cbiAgICBkZWZhdWx0Q2hpbGQ/OiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PlxuICB9XG5cbn1cblxuIl19
@@ -18,6 +18,7 @@ import { EmptyStateComponent } from './components/empty-state/empty-state.compon
18
18
  import { ListPlaceNavComponent } from './components/list-place-nav/list-place-nav.component';
19
19
  import { PlaceOutletComponent } from './components/place-outlet/place-outlet.component';
20
20
  import { TabbedPlaceNavigationComponent } from './components/tabbed-place-navigation/tabbed-place-navigation.component';
21
+ import { NoopGatewayPlace } from './places/noop-gateway-place.component';
21
22
  var PlaceModule = /** @class */ (function () {
22
23
  function PlaceModule() {
23
24
  }
@@ -40,7 +41,8 @@ var PlaceModule = /** @class */ (function () {
40
41
  PlaceOutletComponent,
41
42
  TabbedPlaceNavigationComponent,
42
43
  ListPlaceNavComponent,
43
- AbstractPlaceNavigationComponent
44
+ AbstractPlaceNavigationComponent,
45
+ NoopGatewayPlace
44
46
  ],
45
47
  entryComponents: [BusyOverlayComponent],
46
48
  exports: [
@@ -59,4 +61,4 @@ var PlaceModule = /** @class */ (function () {
59
61
  return PlaceModule;
60
62
  }());
61
63
  export { PlaceModule };
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBR3hIO0lBQUE7SUFtQ0EsQ0FBQzs7Z0JBbkNBLFFBQVEsU0FBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWix1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLDhCQUE4Qjt3QkFDOUIscUJBQXFCO3dCQUNyQixnQ0FBZ0M7cUJBQ2pDO29CQUNELGVBQWUsRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUN2QyxPQUFPLEVBQUU7d0JBQ1Asb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsOEJBQThCO3dCQUM5QixxQkFBcUI7d0JBQ3JCLGdDQUFnQztxQkFDakM7b0JBQ0QsU0FBUyxFQUFFO29CQUNULHVFQUF1RTtxQkFDeEU7aUJBQ0Y7O0lBR0Qsa0JBQUM7Q0FBQSxBQW5DRCxJQW1DQztTQUZZLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IEJyb3dzZXJBbmltYXRpb25zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBbmd1bGFyVWlQb3dlcnVwc01vZHVsZSB9IGZyb20gJy4uL2FuZ3VsYXItdWktcG93ZXJ1cHMubW9kdWxlJztcbmltcG9ydCB7IERpcmVjdGl2ZXNNb2R1bGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2RpcmVjdGl2ZXMubW9kdWxlJztcbmltcG9ydCB7IEFic3RyYWN0UGxhY2VOYXZpZ2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Fic3RyYWN0LXBsYWNlLW5hdmlnYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEJ1c3lPdmVybGF5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2J1c3ktb3ZlcmxheS9idXN5LW92ZXJsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IEVtcHR5U3RhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IExpc3RQbGFjZU5hdkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9saXN0LXBsYWNlLW5hdi9saXN0LXBsYWNlLW5hdi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhY2VPdXRsZXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGxhY2Utb3V0bGV0L3BsYWNlLW91dGxldC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFiYmVkUGxhY2VOYXZpZ2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmJlZC1wbGFjZS1uYXZpZ2F0aW9uL3RhYmJlZC1wbGFjZS1uYXZpZ2F0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBVVBfUExBQ0VfQ09ORklHIH0gZnJvbSAnLi9wbGFjZS1jb25maWcnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJyb3dzZXJBbmltYXRpb25zTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgTWF0VGFic01vZHVsZSxcbiAgICBNYXRMaXN0TW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBEaXJlY3RpdmVzTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gICAgQnVzeU92ZXJsYXlDb21wb25lbnQsXG4gICAgUGxhY2VPdXRsZXRDb21wb25lbnQsXG4gICAgVGFiYmVkUGxhY2VOYXZpZ2F0aW9uQ29tcG9uZW50LFxuICAgIExpc3RQbGFjZU5hdkNvbXBvbmVudCxcbiAgICBBYnN0cmFjdFBsYWNlTmF2aWdhdGlvbkNvbXBvbmVudFxuICBdLFxuICBlbnRyeUNvbXBvbmVudHM6IFtCdXN5T3ZlcmxheUNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtcbiAgICBCdXN5T3ZlcmxheUNvbXBvbmVudCxcbiAgICBQbGFjZU91dGxldENvbXBvbmVudCxcbiAgICBFbXB0eVN0YXRlQ29tcG9uZW50LFxuICAgIFRhYmJlZFBsYWNlTmF2aWdhdGlvbkNvbXBvbmVudCxcbiAgICBMaXN0UGxhY2VOYXZDb21wb25lbnQsXG4gICAgQWJzdHJhY3RQbGFjZU5hdmlnYXRpb25Db21wb25lbnRcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgLy8ge3Byb3ZpZGU6IEFVUF9QTEFDRV9DT05GSUcsIHVzZVZhbHVlOiB7YW5pbWF0aW9uRHVyYXRpb246IFwiMjAwMG1zXCJ9fVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFBsYWNlTW9kdWxlIHtcblxufVxuIl19
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBRXhILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXpFO0lBQUE7SUFvQ0EsQ0FBQzs7Z0JBcENBLFFBQVEsU0FBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWix1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLDhCQUE4Qjt3QkFDOUIscUJBQXFCO3dCQUNyQixnQ0FBZ0M7d0JBQ2hDLGdCQUFnQjtxQkFDakI7b0JBQ0QsZUFBZSxFQUFFLENBQUMsb0JBQW9CLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3dCQUNuQiw4QkFBOEI7d0JBQzlCLHFCQUFxQjt3QkFDckIsZ0NBQWdDO3FCQUNqQztvQkFDRCxTQUFTLEVBQUU7b0JBQ1QsdUVBQXVFO3FCQUN4RTtpQkFDRjs7SUFHRCxrQkFBQztDQUFBLEFBcENELElBb0NDO1NBRlksV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFuZ3VsYXJVaVBvd2VydXBzTW9kdWxlIH0gZnJvbSAnLi4vYW5ndWxhci11aS1wb3dlcnVwcy5tb2R1bGUnO1xuaW1wb3J0IHsgRGlyZWN0aXZlc01vZHVsZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZGlyZWN0aXZlcy5tb2R1bGUnO1xuaW1wb3J0IHsgQWJzdHJhY3RQbGFjZU5hdmlnYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWJzdHJhY3QtcGxhY2UtbmF2aWdhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnVzeU92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYnVzeS1vdmVybGF5L2J1c3ktb3ZlcmxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGlzdFBsYWNlTmF2Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xpc3QtcGxhY2UtbmF2L2xpc3QtcGxhY2UtbmF2LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFjZU91dGxldENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wbGFjZS1vdXRsZXQvcGxhY2Utb3V0bGV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJiZWRQbGFjZU5hdmlnYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFiYmVkLXBsYWNlLW5hdmlnYXRpb24vdGFiYmVkLXBsYWNlLW5hdmlnYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEFVUF9QTEFDRV9DT05GSUcgfSBmcm9tICcuL3BsYWNlLWNvbmZpZyc7XG5pbXBvcnQgeyBOb29wR2F0ZXdheVBsYWNlIH0gZnJvbSAnLi9wbGFjZXMvbm9vcC1nYXRld2F5LXBsYWNlLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBNYXRUYWJzTW9kdWxlLFxuICAgIE1hdExpc3RNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIERpcmVjdGl2ZXNNb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgICBCdXN5T3ZlcmxheUNvbXBvbmVudCxcbiAgICBQbGFjZU91dGxldENvbXBvbmVudCxcbiAgICBUYWJiZWRQbGFjZU5hdmlnYXRpb25Db21wb25lbnQsXG4gICAgTGlzdFBsYWNlTmF2Q29tcG9uZW50LFxuICAgIEFic3RyYWN0UGxhY2VOYXZpZ2F0aW9uQ29tcG9uZW50LFxuICAgIE5vb3BHYXRld2F5UGxhY2VcbiAgXSxcbiAgZW50cnlDb21wb25lbnRzOiBbQnVzeU92ZXJsYXlDb21wb25lbnRdLFxuICBleHBvcnRzOiBbXG4gICAgQnVzeU92ZXJsYXlDb21wb25lbnQsXG4gICAgUGxhY2VPdXRsZXRDb21wb25lbnQsXG4gICAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgICBUYWJiZWRQbGFjZU5hdmlnYXRpb25Db21wb25lbnQsXG4gICAgTGlzdFBsYWNlTmF2Q29tcG9uZW50LFxuICAgIEFic3RyYWN0UGxhY2VOYXZpZ2F0aW9uQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIC8vIHtwcm92aWRlOiBBVVBfUExBQ0VfQ09ORklHLCB1c2VWYWx1ZToge2FuaW1hdGlvbkR1cmF0aW9uOiBcIjIwMDBtc1wifX1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBQbGFjZU1vZHVsZSB7XG5cbn1cbiJdfQ==