ng-easycommerce 1.1.3 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/bundles/ng-easycommerce.umd.js +131 -23
- package/bundles/ng-easycommerce.umd.js.map +1 -1
- package/bundles/ng-easycommerce.umd.min.js +1 -1
- package/bundles/ng-easycommerce.umd.min.js.map +1 -1
- package/esm2015/lib/ec-directive/add-action-redirect.directive.js +133 -24
- package/esm5/lib/ec-directive/add-action-redirect.directive.js +133 -25
- package/fesm2015/ng-easycommerce.js +132 -23
- package/fesm2015/ng-easycommerce.js.map +1 -1
- package/fesm5/ng-easycommerce.js +132 -24
- package/fesm5/ng-easycommerce.js.map +1 -1
- package/lib/ec-directive/add-action-redirect.directive.d.ts +14 -2
- package/ng-easycommerce.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -8,24 +8,26 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
8
8
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
9
|
};
|
|
10
10
|
import { Directive, OnInit, OnDestroy, Input, ElementRef, Renderer2, Inject, OnChanges, SimpleChanges, } from "@angular/core";
|
|
11
|
-
import { DOCUMENT } from "@angular/common";
|
|
11
|
+
import { DOCUMENT, LocationStrategy } from "@angular/common";
|
|
12
12
|
import { BlocksService } from "../services/blocks/blocks.service";
|
|
13
13
|
import { Router } from "@angular/router";
|
|
14
14
|
export class ParamsContext {
|
|
15
15
|
}
|
|
16
16
|
let AddActionRedirectDirective = class AddActionRedirectDirective {
|
|
17
|
-
constructor(document, elementRef, renderer, blocksService, router) {
|
|
17
|
+
constructor(document, elementRef, renderer, blocksService, router, locationStrategy) {
|
|
18
18
|
this.document = document;
|
|
19
19
|
this.elementRef = elementRef;
|
|
20
20
|
this.renderer = renderer;
|
|
21
21
|
this.blocksService = blocksService;
|
|
22
22
|
this.router = router;
|
|
23
|
+
this.locationStrategy = locationStrategy;
|
|
23
24
|
this.redirectUrl = '';
|
|
24
25
|
this.linstenEvent = null;
|
|
25
26
|
this.transparent = true;
|
|
26
|
-
this.
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
this.targetManaged = false;
|
|
28
|
+
this.originalTarget = null;
|
|
29
|
+
this.relManaged = false;
|
|
30
|
+
this.originalRel = null;
|
|
29
31
|
}
|
|
30
32
|
set ecAddActionRedirect(value) {
|
|
31
33
|
this.banner = value;
|
|
@@ -39,10 +41,19 @@ let AddActionRedirectDirective = class AddActionRedirectDirective {
|
|
|
39
41
|
ngOnInit() { }
|
|
40
42
|
ngOnChanges(changes) {
|
|
41
43
|
var _a;
|
|
44
|
+
const element = this.elementRef.nativeElement;
|
|
45
|
+
const target = this.targetManaged ? this.originalTarget : element.getAttribute('target');
|
|
46
|
+
const rel = this.relManaged ? this.originalRel : element.getAttribute('rel');
|
|
42
47
|
if (this.linstenEvent) {
|
|
43
48
|
this.linstenEvent();
|
|
44
49
|
this.linstenEvent = null;
|
|
45
50
|
}
|
|
51
|
+
this.restoreManagedAttribute('target', this.targetManaged, this.originalTarget);
|
|
52
|
+
this.restoreManagedAttribute('rel', this.relManaged, this.originalRel);
|
|
53
|
+
this.targetManaged = false;
|
|
54
|
+
this.originalTarget = null;
|
|
55
|
+
this.relManaged = false;
|
|
56
|
+
this.originalRel = null;
|
|
46
57
|
this.transparent && this.renderer.setStyle(this.elementRef.nativeElement, 'color', 'transparent');
|
|
47
58
|
(_a = this.classStr) === null || _a === void 0 ? void 0 : _a.split(" ").forEach((cl) => {
|
|
48
59
|
try {
|
|
@@ -57,18 +68,101 @@ let AddActionRedirectDirective = class AddActionRedirectDirective {
|
|
|
57
68
|
if (accessibleLabel) {
|
|
58
69
|
this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-label', accessibleLabel);
|
|
59
70
|
}
|
|
60
|
-
this.renderer.setProperty(this.elementRef.nativeElement, "href", this.redirectUrl);
|
|
61
71
|
if (this.isExternalUrl(this.redirectUrl)) {
|
|
62
|
-
this.renderer.
|
|
63
|
-
|
|
72
|
+
this.renderer.setProperty(element, "href", this.redirectUrl);
|
|
73
|
+
const effectiveTarget = target === null ? '_blank' : target;
|
|
74
|
+
if (target === null) {
|
|
75
|
+
this.renderer.setAttribute(element, "target", "_blank");
|
|
76
|
+
this.targetManaged = true;
|
|
77
|
+
this.originalTarget = null;
|
|
78
|
+
}
|
|
79
|
+
if (effectiveTarget.trim().toLowerCase() === '_blank') {
|
|
80
|
+
const relTokens = (rel || '').split(/\s+/).filter(Boolean);
|
|
81
|
+
const existingRelTokens = relTokens.map(token => token.toLowerCase());
|
|
82
|
+
if (existingRelTokens.indexOf('noopener') === -1)
|
|
83
|
+
relTokens.push('noopener');
|
|
84
|
+
if (existingRelTokens.indexOf('noreferrer') === -1)
|
|
85
|
+
relTokens.push('noreferrer');
|
|
86
|
+
const secureRel = relTokens.join(' ');
|
|
87
|
+
if (secureRel !== rel) {
|
|
88
|
+
this.renderer.setAttribute(element, "rel", secureRel);
|
|
89
|
+
this.relManaged = true;
|
|
90
|
+
this.originalRel = rel;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const routerUrl = this.toRouterUrl(this.redirectUrl);
|
|
96
|
+
this.renderer.setProperty(element, "href", this.locationStrategy.prepareExternalUrl(routerUrl));
|
|
97
|
+
if (target === null) {
|
|
98
|
+
this.linstenEvent = this.renderer.listen(element, 'click', (evt) => {
|
|
99
|
+
if (!this.shouldHandleSpaClick(evt))
|
|
100
|
+
return;
|
|
101
|
+
evt.preventDefault();
|
|
102
|
+
this.router.navigateByUrl(routerUrl);
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
shouldHandleSpaClick(event) {
|
|
108
|
+
return !event.defaultPrevented && event.button === 0 &&
|
|
109
|
+
!event.ctrlKey && !event.metaKey && !event.shiftKey && !event.altKey;
|
|
110
|
+
}
|
|
111
|
+
toRouterUrl(url) {
|
|
112
|
+
let routerUrl;
|
|
113
|
+
if (this.isAbsoluteUrl(url) || url.startsWith('#') || url.startsWith('?')) {
|
|
114
|
+
const target = new URL(url, this.getDocumentHref());
|
|
115
|
+
routerUrl = target.pathname + target.search + target.hash;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
routerUrl = this.router.serializeUrl(this.router.parseUrl(url));
|
|
119
|
+
}
|
|
120
|
+
return this.stripBaseHref(routerUrl);
|
|
121
|
+
}
|
|
122
|
+
stripBaseHref(url) {
|
|
123
|
+
const pathEnd = url.search(/[?#]/);
|
|
124
|
+
const path = pathEnd === -1 ? url : url.substring(0, pathEnd);
|
|
125
|
+
const suffix = pathEnd === -1 ? '' : url.substring(pathEnd);
|
|
126
|
+
const baseHref = this.locationStrategy.getBaseHref();
|
|
127
|
+
if (!baseHref)
|
|
128
|
+
return url;
|
|
129
|
+
try {
|
|
130
|
+
const current = new URL(this.getDocumentHref());
|
|
131
|
+
const base = new URL(baseHref, current.href);
|
|
132
|
+
let basePath = base.origin === current.origin ? base.pathname : '';
|
|
133
|
+
basePath = basePath.replace(/\/index\.html$/i, '').replace(/\/+$/, '');
|
|
134
|
+
if (!basePath || basePath === '/')
|
|
135
|
+
return url;
|
|
136
|
+
if (path === basePath)
|
|
137
|
+
return '/' + suffix;
|
|
138
|
+
if (path.indexOf(basePath + '/') === 0) {
|
|
139
|
+
return path.substring(basePath.length) + suffix;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (e) {
|
|
143
|
+
// Keep the URL unchanged when the browser cannot resolve the base href.
|
|
144
|
+
}
|
|
145
|
+
return url;
|
|
146
|
+
}
|
|
147
|
+
getDocumentHref() {
|
|
148
|
+
const location = this.document && this.document.location;
|
|
149
|
+
if (location && location.href)
|
|
150
|
+
return location.href;
|
|
151
|
+
if (location && location.origin)
|
|
152
|
+
return location.origin + '/';
|
|
153
|
+
return 'http://localhost/';
|
|
154
|
+
}
|
|
155
|
+
isAbsoluteUrl(url) {
|
|
156
|
+
return /^[a-z][a-z\d+.-]*:/i.test(url) || url.indexOf('//') === 0;
|
|
157
|
+
}
|
|
158
|
+
restoreManagedAttribute(name, managed, originalValue) {
|
|
159
|
+
if (!managed)
|
|
160
|
+
return;
|
|
161
|
+
if (originalValue === null) {
|
|
162
|
+
this.renderer.removeAttribute(this.elementRef.nativeElement, name);
|
|
64
163
|
}
|
|
65
164
|
else {
|
|
66
|
-
this.renderer.
|
|
67
|
-
this.renderer.removeAttribute(this.elementRef.nativeElement, "rel");
|
|
68
|
-
this.linstenEvent = this.renderer.listen(this.elementRef.nativeElement, 'click', (evt) => {
|
|
69
|
-
evt.preventDefault();
|
|
70
|
-
this.redirectFromUrl(evt);
|
|
71
|
-
});
|
|
165
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, name, originalValue);
|
|
72
166
|
}
|
|
73
167
|
}
|
|
74
168
|
getAccessibleLabel() {
|
|
@@ -88,22 +182,36 @@ let AddActionRedirectDirective = class AddActionRedirectDirective {
|
|
|
88
182
|
return ((_k = (_j = this.banner) === null || _j === void 0 ? void 0 : _j.name) === null || _k === void 0 ? void 0 : _k.trim()) || 'Ver más';
|
|
89
183
|
}
|
|
90
184
|
isExternalUrl(url) {
|
|
91
|
-
|
|
92
|
-
if (!url)
|
|
93
|
-
return false;
|
|
94
|
-
if (url.startsWith('/') || url.startsWith('#'))
|
|
185
|
+
if (!url || !this.isAbsoluteUrl(url))
|
|
95
186
|
return false;
|
|
96
187
|
try {
|
|
97
|
-
const
|
|
98
|
-
const target = new URL(url,
|
|
99
|
-
if (
|
|
188
|
+
const current = new URL(this.getDocumentHref());
|
|
189
|
+
const target = new URL(url, current.href);
|
|
190
|
+
if (target.origin !== current.origin)
|
|
100
191
|
return true;
|
|
101
|
-
return target.
|
|
192
|
+
return this.isOutsideBaseHref(target.pathname, current);
|
|
102
193
|
}
|
|
103
194
|
catch (e) {
|
|
104
195
|
return true;
|
|
105
196
|
}
|
|
106
197
|
}
|
|
198
|
+
isOutsideBaseHref(pathname, current) {
|
|
199
|
+
const baseHref = this.locationStrategy.getBaseHref();
|
|
200
|
+
if (!baseHref)
|
|
201
|
+
return false;
|
|
202
|
+
try {
|
|
203
|
+
const base = new URL(baseHref, current.href);
|
|
204
|
+
if (base.origin !== current.origin)
|
|
205
|
+
return false;
|
|
206
|
+
const basePath = base.pathname.replace(/\/index\.html$/i, '').replace(/\/+$/, '');
|
|
207
|
+
if (!basePath || basePath === '/')
|
|
208
|
+
return false;
|
|
209
|
+
return pathname !== basePath && pathname.indexOf(basePath + '/') !== 0;
|
|
210
|
+
}
|
|
211
|
+
catch (e) {
|
|
212
|
+
return false;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
107
215
|
ngOnDestroy() {
|
|
108
216
|
this.linstenEvent && this.linstenEvent();
|
|
109
217
|
}
|
|
@@ -113,7 +221,8 @@ AddActionRedirectDirective.ctorParameters = () => [
|
|
|
113
221
|
{ type: ElementRef },
|
|
114
222
|
{ type: Renderer2 },
|
|
115
223
|
{ type: BlocksService },
|
|
116
|
-
{ type: Router }
|
|
224
|
+
{ type: Router },
|
|
225
|
+
{ type: LocationStrategy }
|
|
117
226
|
];
|
|
118
227
|
__decorate([
|
|
119
228
|
Input()
|
|
@@ -131,4 +240,4 @@ AddActionRedirectDirective = __decorate([
|
|
|
131
240
|
__param(0, Inject(DOCUMENT))
|
|
132
241
|
], AddActionRedirectDirective);
|
|
133
242
|
export { AddActionRedirectDirective };
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWFjdGlvbi1yZWRpcmVjdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtZGlyZWN0aXZlL2FkZC1hY3Rpb24tcmVkaXJlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULGFBQWEsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsTUFBTSxPQUFPLGFBQWE7Q0FFekI7QUFLRCxJQUFhLDBCQUEwQixHQUF2QyxNQUFhLDBCQUEwQjtJQW9CbkMsWUFDOEIsUUFBUSxFQUMxQixVQUFzQixFQUN0QixRQUFtQixFQUNuQixhQUE0QixFQUM1QixNQUFjO1FBSkksYUFBUSxHQUFSLFFBQVEsQ0FBQTtRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXRCbEIsZ0JBQVcsR0FBRyxFQUFFLENBQUE7UUFDaEIsaUJBQVksR0FBRyxJQUFJLENBQUE7UUFDbkIsZ0JBQVcsR0FBRyxJQUFJLENBQUE7UUF5RDFCLG9CQUFlLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDL0MsQ0FBQyxDQUFBO0lBdENHLENB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QUFJLENBQUM7U0FDZjtJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDNUMsQ0FBQztDQUNKLENBQUE7OzRDQWhGUSxNQUFNLFNBQUMsUUFBUTtZQUNJLFVBQVU7WUFDWixTQUFTO1lBQ0osYUFBYTtZQUNwQixNQUFNOztBQWpCMUI7SUFEQyxLQUFLLEVBQUU7cUVBR1A7QUFFRDtJQURDLEtBQUssRUFBRTtpRUFHUDtBQUVEO0lBREMsS0FBSyxFQUFFOytEQUdQO0FBbEJRLDBCQUEwQjtJQUh0QyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsdUJBQXVCO0tBQ3BDLENBQUM7SUFzQk8sV0FBQSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7R0FyQlosMEJBQTBCLENBcUd0QztTQXJHWSwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIElucHV0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgUmVuZGVyZXIyLFxuICAgIEluamVjdCxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQmxvY2tzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9ibG9ja3MvYmxvY2tzLnNlcnZpY2VcIjtcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcblxuZXhwb3J0IGNsYXNzIFBhcmFtc0NvbnRleHQge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IFwiW2VjQWRkQWN0aW9uUmVkaXJlY3RdXCIsXG59KVxuZXhwb3J0IGNsYXNzIEFkZEFjdGlvblJlZGlyZWN0RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSBiYW5uZXI6IGFueTtcbiAgICBwcml2YXRlIGNsYXNzU3RyOiBcIlwiO1xuICAgIHByaXZhdGUgcmVkaXJlY3RVcmwgPSAnJ1xuICAgIHByaXZhdGUgbGluc3RlbkV2ZW50ID0gbnVsbFxuICAgIHByaXZhdGUgdHJhbnNwYXJlbnQgPSB0cnVlXG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBlY0FkZEFjdGlvblJlZGlyZWN0KHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5iYW5uZXIgPSB2YWx1ZTtcbiAgICB9XG4gICAgQElucHV0KClcbiAgICBzZXQgY2xhc3NTdHJTcGFjaW5nKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5jbGFzc1N0ciA9IHZhbHVlO1xuICAgIH1cbiAgICBASW5wdXQoKVxuICAgIHNldCBpc1RyYW5zcGFyZW50KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMudHJhbnNwYXJlbnQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudCxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgYmxvY2tzU2VydmljZTogQmxvY2tzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICApIHsgfVxuXG4gICAgbmdPbkluaXQoKSB7IH1cblxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAodGhpcy5saW5zdGVuRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMubGluc3RlbkV2ZW50KCk7XG4gICAgICAgICAgICB0aGlzLmxpbnN0ZW5FdmVudCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRyYW5zcGFyZW50ICYmIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjb2xvcicsICd0cmFuc3BhcmVudCcpXG4gICAgICAgIHRoaXMuY2xhc3NTdHI/LnNwbGl0KFwiIFwiKS5mb3JFYWNoKChjbCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBjbCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgeyBjb25zb2xlLmxvZygnYWRkIGNsYXNzIGRpcmVjdGl2ZSAtPiAnLCBlcnJvcikgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWRpcmVjdFVybCA9IHRoaXMuYmFubmVyLnVybCA/IHRoaXMuYmFubmVyLnVybCA6IHRoaXMuYmxvY2tzU2VydmljZS5mb3JtVXJsKHRoaXMuYmFubmVyKVxuICAgICAgICBjb25zdCBhY2Nlc3NpYmxlTGFiZWwgPSB0aGlzLmdldEFjY2Vzc2libGVMYWJlbCgpO1xuICAgICAgICBpZiAoYWNjZXNzaWJsZUxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2FyaWEtbGFiZWwnLCBhY2Nlc3NpYmxlTGFiZWwpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIFwiaHJlZlwiLCB0aGlzLnJlZGlyZWN0VXJsKTtcbiAgICAgICAgaWYgKHRoaXMuaXNFeHRlcm5hbFVybCh0aGlzLnJlZGlyZWN0VXJsKSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIFwidGFyZ2V0XCIsIFwiX2JsYW5rXCIpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIFwicmVsXCIsIFwibm9vcGVuZXIgbm9yZWZlcnJlclwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBcInRhcmdldFwiKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBcInJlbFwiKTtcbiAgICAgICAgICAgIHRoaXMubGluc3RlbkV2ZW50ID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjbGljaycsIChldnQpID0+IHtcbiAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZGlyZWN0RnJvbVVybChldnQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZGlyZWN0RnJvbVVybCA9IChldnQpID0+IHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJlZGlyZWN0VXJsKVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWNjZXNzaWJsZUxhYmVsKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBjb25zdCB0aXRsZSA9IHRoaXMuYmFubmVyPy50aXRsZT8udHJpbSgpO1xuICAgICAgICBpZiAodGl0bGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aXRsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN1YnRpdGxlID0gdGhpcy5iYW5uZXI/LnN1YnRpdGxlPy50cmltKCk7XG4gICAgICAgIGlmIChzdWJ0aXRsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHN1YnRpdGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYnV0dG9uVGV4dCA9IHRoaXMuYmFubmVyPy5zdHlsZXM/LmJ1dHRvbj8udGV4dD8udHJpbSgpO1xuICAgICAgICBpZiAoYnV0dG9uVGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIGJ1dHRvblRleHQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5iYW5uZXI/Lm5hbWU/LnRyaW0oKSB8fCAnVmVyIG3DoXMnO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNFeHRlcm5hbFVybCh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXVybCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJy8nKSB8fCB1cmwuc3RhcnRzV2l0aCgnIycpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlID0gdGhpcy5kb2N1bWVudD8ubG9jYXRpb24/Lm9yaWdpbiB8fCAnJztcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IG5ldyBVUkwodXJsLCBiYXNlKTtcbiAgICAgICAgICAgIGlmICghYmFzZSkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0Lm9yaWdpbiAhPT0gYmFzZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5saW5zdGVuRXZlbnQgJiYgdGhpcy5saW5zdGVuRXZlbnQoKVxuICAgIH1cbn1cbiJdfQ==
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWFjdGlvbi1yZWRpcmVjdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtZGlyZWN0aXZlL2FkZC1hY3Rpb24tcmVkaXJlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULGFBQWEsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsTUFBTSxPQUFPLGFBQWE7Q0FFekI7QUFLRCxJQUFhLDBCQUEwQixHQUF2QyxNQUFhLDBCQUEwQjtJQXdCbkMsWUFDOEIsUUFBUSxFQUMxQixVQUFzQixFQUN0QixRQUFtQixFQUNuQixhQUE0QixFQUM1QixNQUFjLEVBQ2QsZ0JBQWtDO1FBTGhCLGFBQVEsR0FBUixRQUFRLENBQUE7UUFDMUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBM0J0QyxnQkFBVyxHQUFHLEVBQUUsQ0FBQTtRQUNoQixpQkFBWSxHQUFHLElBQUksQ0FBQTtRQUNuQixnQkFBVyxHQUFHLElBQUksQ0FBQTtRQUNsQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixtQkFBYyxHQUFrQixJQUFJLENBQUM7UUFDckMsZUFBVSxH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LEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxRTtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFBO0lBQzVDLENBQUM7Q0FDSixDQUFBOzs0Q0ExTFEsTUFBTSxTQUFDLFFBQVE7WUFDSSxVQUFVO1lBQ1osU0FBUztZQUNKLGFBQWE7WUFDcEIsTUFBTTtZQUNJLGdCQUFnQjs7QUFsQjlDO0lBREMsS0FBSyxFQUFFO3FFQUdQO0FBRUQ7SUFEQyxLQUFLLEVBQUU7aUVBR1A7QUFFRDtJQURDLEtBQUssRUFBRTsrREFHUDtBQXRCUSwwQkFBMEI7SUFIdEMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLHVCQUF1QjtLQUNwQyxDQUFDO0lBMEJPLFdBQUEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0dBekJaLDBCQUEwQixDQW1OdEM7U0FuTlksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBJbnB1dCxcbiAgICBFbGVtZW50UmVmLFxuICAgIFJlbmRlcmVyMixcbiAgICBJbmplY3QsXG4gICAgT25DaGFuZ2VzLFxuICAgIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBET0NVTUVOVCwgTG9jYXRpb25TdHJhdGVneSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IEJsb2Nrc1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvYmxvY2tzL2Jsb2Nrcy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBQYXJhbXNDb250ZXh0IHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiBcIltlY0FkZEFjdGlvblJlZGlyZWN0XVwiLFxufSlcbmV4cG9ydCBjbGFzcyBBZGRBY3Rpb25SZWRpcmVjdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgYmFubmVyOiBhbnk7XG4gICAgcHJpdmF0ZSBjbGFzc1N0cjogXCJcIjtcbiAgICBwcml2YXRlIHJlZGlyZWN0VXJsID0gJydcbiAgICBwcml2YXRlIGxpbnN0ZW5FdmVudCA9IG51bGxcbiAgICBwcml2YXRlIHRyYW5zcGFyZW50ID0gdHJ1ZVxuICAgIHByaXZhdGUgdGFyZ2V0TWFuYWdlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgb3JpZ2luYWxUYXJnZXQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcmVsTWFuYWdlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgb3JpZ2luYWxSZWw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgZWNBZGRBY3Rpb25SZWRpcmVjdCh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuYmFubmVyID0gdmFsdWU7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNsYXNzU3RyU3BhY2luZyh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuY2xhc3NTdHIgPSB2YWx1ZTtcbiAgICB9XG4gICAgQElucHV0KClcbiAgICBzZXQgaXNUcmFuc3BhcmVudCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnRyYW5zcGFyZW50ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIGJsb2Nrc1NlcnZpY2U6IEJsb2Nrc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgbG9jYXRpb25TdHJhdGVneTogTG9jYXRpb25TdHJhdGVneSxcbiAgICApIHsgfVxuXG4gICAgbmdPbkluaXQoKSB7IH1cblxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMudGFyZ2V0TWFuYWdlZCA/IHRoaXMub3JpZ2luYWxUYXJnZXQgOiBlbGVtZW50LmdldEF0dHJpYnV0ZSgndGFyZ2V0Jyk7XG4gICAgICAgIGNvbnN0IHJlbCA9IHRoaXMucmVsTWFuYWdlZCA/IHRoaXMub3JpZ2luYWxSZWwgOiBlbGVtZW50LmdldEF0dHJpYnV0ZSgncmVsJyk7XG5cbiAgICAgICAgaWYgKHRoaXMubGluc3RlbkV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxpbnN0ZW5FdmVudCgpO1xuICAgICAgICAgICAgdGhpcy5saW5zdGVuRXZlbnQgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXN0b3JlTWFuYWdlZEF0dHJpYnV0ZSgndGFyZ2V0JywgdGhpcy50YXJnZXRNYW5hZ2VkLCB0aGlzLm9yaWdpbmFsVGFyZ2V0KTtcbiAgICAgICAgdGhpcy5yZXN0b3JlTWFuYWdlZEF0dHJpYnV0ZSgncmVsJywgdGhpcy5yZWxNYW5hZ2VkLCB0aGlzLm9yaWdpbmFsUmVsKTtcbiAgICAgICAgdGhpcy50YXJnZXRNYW5hZ2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMub3JpZ2luYWxUYXJnZXQgPSBudWxsO1xuICAgICAgICB0aGlzLnJlbE1hbmFnZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbFJlbCA9IG51bGw7XG5cbiAgICAgICAgdGhpcy50cmFuc3BhcmVudCAmJiB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY29sb3InLCAndHJhbnNwYXJlbnQnKVxuICAgICAgICB0aGlzLmNsYXNzU3RyPy5zcGxpdChcIiBcIikuZm9yRWFjaCgoY2wpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgY2wpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsgY29uc29sZS5sb2coJ2FkZCBjbGFzcyBkaXJlY3RpdmUgLT4gJywgZXJyb3IpIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVkaXJlY3RVcmwgPSB0aGlzLmJhbm5lci51cmwgPyB0aGlzLmJhbm5lci51cmwgOiB0aGlzLmJsb2Nrc1NlcnZpY2UuZm9ybVVybCh0aGlzLmJhbm5lcilcbiAgICAgICAgY29uc3QgYWNjZXNzaWJsZUxhYmVsID0gdGhpcy5nZXRBY2Nlc3NpYmxlTGFiZWwoKTtcbiAgICAgICAgaWYgKGFjY2Vzc2libGVMYWJlbCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhcmlhLWxhYmVsJywgYWNjZXNzaWJsZUxhYmVsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0V4dGVybmFsVXJsKHRoaXMucmVkaXJlY3RVcmwpKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KGVsZW1lbnQsIFwiaHJlZlwiLCB0aGlzLnJlZGlyZWN0VXJsKTtcbiAgICAgICAgICAgIGNvbnN0IGVmZmVjdGl2ZVRhcmdldCA9IHRhcmdldCA9PT0gbnVsbCA/ICdfYmxhbmsnIDogdGFyZ2V0O1xuICAgICAgICAgICAgaWYgKHRhcmdldCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW1lbnQsIFwidGFyZ2V0XCIsIFwiX2JsYW5rXCIpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0TWFuYWdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW5hbFRhcmdldCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZWZmZWN0aXZlVGFyZ2V0LnRyaW0oKS50b0xvd2VyQ2FzZSgpID09PSAnX2JsYW5rJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbFRva2VucyA9IChyZWwgfHwgJycpLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nUmVsVG9rZW5zID0gcmVsVG9rZW5zLm1hcCh0b2tlbiA9PiB0b2tlbi50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdSZWxUb2tlbnMuaW5kZXhPZignbm9vcGVuZXInKSA9PT0gLTEpIHJlbFRva2Vucy5wdXNoKCdub29wZW5lcicpO1xuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1JlbFRva2Vucy5pbmRleE9mKCdub3JlZmVycmVyJykgPT09IC0xKSByZWxUb2tlbnMucHVzaCgnbm9yZWZlcnJlcicpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlY3VyZVJlbCA9IHJlbFRva2Vucy5qb2luKCcgJyk7XG4gICAgICAgICAgICAgICAgaWYgKHNlY3VyZVJlbCAhPT0gcmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW1lbnQsIFwicmVsXCIsIHNlY3VyZVJlbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVsTWFuYWdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luYWxSZWwgPSByZWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVyVXJsID0gdGhpcy50b1JvdXRlclVybCh0aGlzLnJlZGlyZWN0VXJsKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkoZWxlbWVudCwgXCJocmVmXCIsIHRoaXMubG9jYXRpb25TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxVcmwocm91dGVyVXJsKSk7XG4gICAgICAgICAgICBpZiAodGFyZ2V0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5zdGVuRXZlbnQgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihlbGVtZW50LCAnY2xpY2snLCAoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG91bGRIYW5kbGVTcGFDbGljayhldnQpKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJvdXRlclVybCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3VsZEhhbmRsZVNwYUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCAmJiBldmVudC5idXR0b24gPT09IDAgJiZcbiAgICAgICAgICAgICFldmVudC5jdHJsS2V5ICYmICFldmVudC5tZXRhS2V5ICYmICFldmVudC5zaGlmdEtleSAmJiAhZXZlbnQuYWx0S2V5O1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9Sb3V0ZXJVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcm91dGVyVXJsOiBzdHJpbmc7XG4gICAgICAgIGlmICh0aGlzLmlzQWJzb2x1dGVVcmwodXJsKSB8fCB1cmwuc3RhcnRzV2l0aCgnIycpIHx8IHVybC5zdGFydHNXaXRoKCc/JykpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IG5ldyBVUkwodXJsLCB0aGlzLmdldERvY3VtZW50SHJlZigpKTtcbiAgICAgICAgICAgIHJvdXRlclVybCA9IHRhcmdldC5wYXRobmFtZSArIHRhcmdldC5zZWFyY2ggKyB0YXJnZXQuaGFzaDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJvdXRlclVybCA9IHRoaXMucm91dGVyLnNlcmlhbGl6ZVVybCh0aGlzLnJvdXRlci5wYXJzZVVybCh1cmwpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnN0cmlwQmFzZUhyZWYocm91dGVyVXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0cmlwQmFzZUhyZWYodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwYXRoRW5kID0gdXJsLnNlYXJjaCgvWz8jXS8pO1xuICAgICAgICBjb25zdCBwYXRoID0gcGF0aEVuZCA9PT0gLTEgPyB1cmwgOiB1cmwuc3Vic3RyaW5nKDAsIHBhdGhFbmQpO1xuICAgICAgICBjb25zdCBzdWZmaXggPSBwYXRoRW5kID09PSAtMSA/ICcnIDogdXJsLnN1YnN0cmluZyhwYXRoRW5kKTtcbiAgICAgICAgY29uc3QgYmFzZUhyZWYgPSB0aGlzLmxvY2F0aW9uU3RyYXRlZ3kuZ2V0QmFzZUhyZWYoKTtcblxuICAgICAgICBpZiAoIWJhc2VIcmVmKSByZXR1cm4gdXJsO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gbmV3IFVSTCh0aGlzLmdldERvY3VtZW50SHJlZigpKTtcbiAgICAgICAgICAgIGNvbnN0IGJhc2UgPSBuZXcgVVJMKGJhc2VIcmVmLCBjdXJyZW50LmhyZWYpO1xuICAgICAgICAgICAgbGV0IGJhc2VQYXRoID0gYmFzZS5vcmlnaW4gPT09IGN1cnJlbnQub3JpZ2luID8gYmFzZS5wYXRobmFtZSA6ICcnO1xuICAgICAgICAgICAgYmFzZVBhdGggPSBiYXNlUGF0aC5yZXBsYWNlKC9cXC9pbmRleFxcLmh0bWwkL2ksICcnKS5yZXBsYWNlKC9cXC8rJC8sICcnKTtcblxuICAgICAgICAgICAgaWYgKCFiYXNlUGF0aCB8fCBiYXNlUGF0aCA9PT0gJy8nKSByZXR1cm4gdXJsO1xuICAgICAgICAgICAgaWYgKHBhdGggPT09IGJhc2VQYXRoKSByZXR1cm4gJy8nICsgc3VmZml4O1xuICAgICAgICAgICAgaWYgKHBhdGguaW5kZXhPZihiYXNlUGF0aCArICcvJykgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcoYmFzZVBhdGgubGVuZ3RoKSArIHN1ZmZpeDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gS2VlcCB0aGUgVVJMIHVuY2hhbmdlZCB3aGVuIHRoZSBicm93c2VyIGNhbm5vdCByZXNvbHZlIHRoZSBiYXNlIGhyZWYuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RG9jdW1lbnRIcmVmKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5kb2N1bWVudCAmJiB0aGlzLmRvY3VtZW50LmxvY2F0aW9uO1xuICAgICAgICBpZiAobG9jYXRpb24gJiYgbG9jYXRpb24uaHJlZikgcmV0dXJuIGxvY2F0aW9uLmhyZWY7XG4gICAgICAgIGlmIChsb2NhdGlvbiAmJiBsb2NhdGlvbi5vcmlnaW4pIHJldHVybiBsb2NhdGlvbi5vcmlnaW4gKyAnLyc7XG4gICAgICAgIHJldHVybiAnaHR0cDovL2xvY2FsaG9zdC8nO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBYnNvbHV0ZVVybCh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gL15bYS16XVthLXpcXGQrLi1dKjovaS50ZXN0KHVybCkgfHwgdXJsLmluZGV4T2YoJy8vJykgPT09IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXN0b3JlTWFuYWdlZEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIG1hbmFnZWQ6IGJvb2xlYW4sIG9yaWdpbmFsVmFsdWU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFtYW5hZ2VkKSByZXR1cm47XG4gICAgICAgIGlmIChvcmlnaW5hbFZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgbmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgbmFtZSwgb3JpZ2luYWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEFjY2Vzc2libGVMYWJlbCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLmJhbm5lcj8udGl0bGU/LnRyaW0oKTtcbiAgICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGl0bGU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdWJ0aXRsZSA9IHRoaXMuYmFubmVyPy5zdWJ0aXRsZT8udHJpbSgpO1xuICAgICAgICBpZiAoc3VidGl0bGUpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWJ0aXRsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJ1dHRvblRleHQgPSB0aGlzLmJhbm5lcj8uc3R5bGVzPy5idXR0b24/LnRleHQ/LnRyaW0oKTtcbiAgICAgICAgaWYgKGJ1dHRvblRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiBidXR0b25UZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYmFubmVyPy5uYW1lPy50cmltKCkgfHwgJ1ZlciBtw6FzJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRXh0ZXJuYWxVcmwodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF1cmwgfHwgIXRoaXMuaXNBYnNvbHV0ZVVybCh1cmwpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gbmV3IFVSTCh0aGlzLmdldERvY3VtZW50SHJlZigpKTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IG5ldyBVUkwodXJsLCBjdXJyZW50LmhyZWYpO1xuICAgICAgICAgICAgaWYgKHRhcmdldC5vcmlnaW4gIT09IGN1cnJlbnQub3JpZ2luKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzT3V0c2lkZUJhc2VIcmVmKHRhcmdldC5wYXRobmFtZSwgY3VycmVudCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc091dHNpZGVCYXNlSHJlZihwYXRobmFtZTogc3RyaW5nLCBjdXJyZW50OiBVUkwpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgYmFzZUhyZWYgPSB0aGlzLmxvY2F0aW9uU3RyYXRlZ3kuZ2V0QmFzZUhyZWYoKTtcbiAgICAgICAgaWYgKCFiYXNlSHJlZikgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlID0gbmV3IFVSTChiYXNlSHJlZiwgY3VycmVudC5ocmVmKTtcbiAgICAgICAgICAgIGlmIChiYXNlLm9yaWdpbiAhPT0gY3VycmVudC5vcmlnaW4pIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgYmFzZVBhdGggPSBiYXNlLnBhdGhuYW1lLnJlcGxhY2UoL1xcL2luZGV4XFwuaHRtbCQvaSwgJycpLnJlcGxhY2UoL1xcLyskLywgJycpO1xuICAgICAgICAgICAgaWYgKCFiYXNlUGF0aCB8fCBiYXNlUGF0aCA9PT0gJy8nKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiBwYXRobmFtZSAhPT0gYmFzZVBhdGggJiYgcGF0aG5hbWUuaW5kZXhPZihiYXNlUGF0aCArICcvJykgIT09IDA7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmxpbnN0ZW5FdmVudCAmJiB0aGlzLmxpbnN0ZW5FdmVudCgpXG4gICAgfVxufVxuIl19
|
|
@@ -8,7 +8,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
8
8
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
9
|
};
|
|
10
10
|
import { Directive, OnInit, OnDestroy, Input, ElementRef, Renderer2, Inject, OnChanges, SimpleChanges, } from "@angular/core";
|
|
11
|
-
import { DOCUMENT } from "@angular/common";
|
|
11
|
+
import { DOCUMENT, LocationStrategy } from "@angular/common";
|
|
12
12
|
import { BlocksService } from "../services/blocks/blocks.service";
|
|
13
13
|
import { Router } from "@angular/router";
|
|
14
14
|
var ParamsContext = /** @class */ (function () {
|
|
@@ -18,19 +18,20 @@ var ParamsContext = /** @class */ (function () {
|
|
|
18
18
|
}());
|
|
19
19
|
export { ParamsContext };
|
|
20
20
|
var AddActionRedirectDirective = /** @class */ (function () {
|
|
21
|
-
function AddActionRedirectDirective(document, elementRef, renderer, blocksService, router) {
|
|
22
|
-
var _this = this;
|
|
21
|
+
function AddActionRedirectDirective(document, elementRef, renderer, blocksService, router, locationStrategy) {
|
|
23
22
|
this.document = document;
|
|
24
23
|
this.elementRef = elementRef;
|
|
25
24
|
this.renderer = renderer;
|
|
26
25
|
this.blocksService = blocksService;
|
|
27
26
|
this.router = router;
|
|
27
|
+
this.locationStrategy = locationStrategy;
|
|
28
28
|
this.redirectUrl = '';
|
|
29
29
|
this.linstenEvent = null;
|
|
30
30
|
this.transparent = true;
|
|
31
|
-
this.
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
this.targetManaged = false;
|
|
32
|
+
this.originalTarget = null;
|
|
33
|
+
this.relManaged = false;
|
|
34
|
+
this.originalRel = null;
|
|
34
35
|
}
|
|
35
36
|
Object.defineProperty(AddActionRedirectDirective.prototype, "ecAddActionRedirect", {
|
|
36
37
|
set: function (value) {
|
|
@@ -57,10 +58,19 @@ var AddActionRedirectDirective = /** @class */ (function () {
|
|
|
57
58
|
AddActionRedirectDirective.prototype.ngOnChanges = function (changes) {
|
|
58
59
|
var _this = this;
|
|
59
60
|
var _a;
|
|
61
|
+
var element = this.elementRef.nativeElement;
|
|
62
|
+
var target = this.targetManaged ? this.originalTarget : element.getAttribute('target');
|
|
63
|
+
var rel = this.relManaged ? this.originalRel : element.getAttribute('rel');
|
|
60
64
|
if (this.linstenEvent) {
|
|
61
65
|
this.linstenEvent();
|
|
62
66
|
this.linstenEvent = null;
|
|
63
67
|
}
|
|
68
|
+
this.restoreManagedAttribute('target', this.targetManaged, this.originalTarget);
|
|
69
|
+
this.restoreManagedAttribute('rel', this.relManaged, this.originalRel);
|
|
70
|
+
this.targetManaged = false;
|
|
71
|
+
this.originalTarget = null;
|
|
72
|
+
this.relManaged = false;
|
|
73
|
+
this.originalRel = null;
|
|
64
74
|
this.transparent && this.renderer.setStyle(this.elementRef.nativeElement, 'color', 'transparent');
|
|
65
75
|
(_a = this.classStr) === null || _a === void 0 ? void 0 : _a.split(" ").forEach(function (cl) {
|
|
66
76
|
try {
|
|
@@ -75,18 +85,101 @@ var AddActionRedirectDirective = /** @class */ (function () {
|
|
|
75
85
|
if (accessibleLabel) {
|
|
76
86
|
this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-label', accessibleLabel);
|
|
77
87
|
}
|
|
78
|
-
this.renderer.setProperty(this.elementRef.nativeElement, "href", this.redirectUrl);
|
|
79
88
|
if (this.isExternalUrl(this.redirectUrl)) {
|
|
80
|
-
this.renderer.
|
|
81
|
-
|
|
89
|
+
this.renderer.setProperty(element, "href", this.redirectUrl);
|
|
90
|
+
var effectiveTarget = target === null ? '_blank' : target;
|
|
91
|
+
if (target === null) {
|
|
92
|
+
this.renderer.setAttribute(element, "target", "_blank");
|
|
93
|
+
this.targetManaged = true;
|
|
94
|
+
this.originalTarget = null;
|
|
95
|
+
}
|
|
96
|
+
if (effectiveTarget.trim().toLowerCase() === '_blank') {
|
|
97
|
+
var relTokens = (rel || '').split(/\s+/).filter(Boolean);
|
|
98
|
+
var existingRelTokens = relTokens.map(function (token) { return token.toLowerCase(); });
|
|
99
|
+
if (existingRelTokens.indexOf('noopener') === -1)
|
|
100
|
+
relTokens.push('noopener');
|
|
101
|
+
if (existingRelTokens.indexOf('noreferrer') === -1)
|
|
102
|
+
relTokens.push('noreferrer');
|
|
103
|
+
var secureRel = relTokens.join(' ');
|
|
104
|
+
if (secureRel !== rel) {
|
|
105
|
+
this.renderer.setAttribute(element, "rel", secureRel);
|
|
106
|
+
this.relManaged = true;
|
|
107
|
+
this.originalRel = rel;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
82
110
|
}
|
|
83
111
|
else {
|
|
84
|
-
this.
|
|
85
|
-
this.renderer.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
112
|
+
var routerUrl_1 = this.toRouterUrl(this.redirectUrl);
|
|
113
|
+
this.renderer.setProperty(element, "href", this.locationStrategy.prepareExternalUrl(routerUrl_1));
|
|
114
|
+
if (target === null) {
|
|
115
|
+
this.linstenEvent = this.renderer.listen(element, 'click', function (evt) {
|
|
116
|
+
if (!_this.shouldHandleSpaClick(evt))
|
|
117
|
+
return;
|
|
118
|
+
evt.preventDefault();
|
|
119
|
+
_this.router.navigateByUrl(routerUrl_1);
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
AddActionRedirectDirective.prototype.shouldHandleSpaClick = function (event) {
|
|
125
|
+
return !event.defaultPrevented && event.button === 0 &&
|
|
126
|
+
!event.ctrlKey && !event.metaKey && !event.shiftKey && !event.altKey;
|
|
127
|
+
};
|
|
128
|
+
AddActionRedirectDirective.prototype.toRouterUrl = function (url) {
|
|
129
|
+
var routerUrl;
|
|
130
|
+
if (this.isAbsoluteUrl(url) || url.startsWith('#') || url.startsWith('?')) {
|
|
131
|
+
var target = new URL(url, this.getDocumentHref());
|
|
132
|
+
routerUrl = target.pathname + target.search + target.hash;
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
routerUrl = this.router.serializeUrl(this.router.parseUrl(url));
|
|
136
|
+
}
|
|
137
|
+
return this.stripBaseHref(routerUrl);
|
|
138
|
+
};
|
|
139
|
+
AddActionRedirectDirective.prototype.stripBaseHref = function (url) {
|
|
140
|
+
var pathEnd = url.search(/[?#]/);
|
|
141
|
+
var path = pathEnd === -1 ? url : url.substring(0, pathEnd);
|
|
142
|
+
var suffix = pathEnd === -1 ? '' : url.substring(pathEnd);
|
|
143
|
+
var baseHref = this.locationStrategy.getBaseHref();
|
|
144
|
+
if (!baseHref)
|
|
145
|
+
return url;
|
|
146
|
+
try {
|
|
147
|
+
var current = new URL(this.getDocumentHref());
|
|
148
|
+
var base = new URL(baseHref, current.href);
|
|
149
|
+
var basePath = base.origin === current.origin ? base.pathname : '';
|
|
150
|
+
basePath = basePath.replace(/\/index\.html$/i, '').replace(/\/+$/, '');
|
|
151
|
+
if (!basePath || basePath === '/')
|
|
152
|
+
return url;
|
|
153
|
+
if (path === basePath)
|
|
154
|
+
return '/' + suffix;
|
|
155
|
+
if (path.indexOf(basePath + '/') === 0) {
|
|
156
|
+
return path.substring(basePath.length) + suffix;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch (e) {
|
|
160
|
+
// Keep the URL unchanged when the browser cannot resolve the base href.
|
|
161
|
+
}
|
|
162
|
+
return url;
|
|
163
|
+
};
|
|
164
|
+
AddActionRedirectDirective.prototype.getDocumentHref = function () {
|
|
165
|
+
var location = this.document && this.document.location;
|
|
166
|
+
if (location && location.href)
|
|
167
|
+
return location.href;
|
|
168
|
+
if (location && location.origin)
|
|
169
|
+
return location.origin + '/';
|
|
170
|
+
return 'http://localhost/';
|
|
171
|
+
};
|
|
172
|
+
AddActionRedirectDirective.prototype.isAbsoluteUrl = function (url) {
|
|
173
|
+
return /^[a-z][a-z\d+.-]*:/i.test(url) || url.indexOf('//') === 0;
|
|
174
|
+
};
|
|
175
|
+
AddActionRedirectDirective.prototype.restoreManagedAttribute = function (name, managed, originalValue) {
|
|
176
|
+
if (!managed)
|
|
177
|
+
return;
|
|
178
|
+
if (originalValue === null) {
|
|
179
|
+
this.renderer.removeAttribute(this.elementRef.nativeElement, name);
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, name, originalValue);
|
|
90
183
|
}
|
|
91
184
|
};
|
|
92
185
|
AddActionRedirectDirective.prototype.getAccessibleLabel = function () {
|
|
@@ -106,22 +199,36 @@ var AddActionRedirectDirective = /** @class */ (function () {
|
|
|
106
199
|
return ((_k = (_j = this.banner) === null || _j === void 0 ? void 0 : _j.name) === null || _k === void 0 ? void 0 : _k.trim()) || 'Ver más';
|
|
107
200
|
};
|
|
108
201
|
AddActionRedirectDirective.prototype.isExternalUrl = function (url) {
|
|
109
|
-
|
|
110
|
-
if (!url)
|
|
111
|
-
return false;
|
|
112
|
-
if (url.startsWith('/') || url.startsWith('#'))
|
|
202
|
+
if (!url || !this.isAbsoluteUrl(url))
|
|
113
203
|
return false;
|
|
114
204
|
try {
|
|
115
|
-
var
|
|
116
|
-
var target = new URL(url,
|
|
117
|
-
if (
|
|
205
|
+
var current = new URL(this.getDocumentHref());
|
|
206
|
+
var target = new URL(url, current.href);
|
|
207
|
+
if (target.origin !== current.origin)
|
|
118
208
|
return true;
|
|
119
|
-
return target.
|
|
209
|
+
return this.isOutsideBaseHref(target.pathname, current);
|
|
120
210
|
}
|
|
121
211
|
catch (e) {
|
|
122
212
|
return true;
|
|
123
213
|
}
|
|
124
214
|
};
|
|
215
|
+
AddActionRedirectDirective.prototype.isOutsideBaseHref = function (pathname, current) {
|
|
216
|
+
var baseHref = this.locationStrategy.getBaseHref();
|
|
217
|
+
if (!baseHref)
|
|
218
|
+
return false;
|
|
219
|
+
try {
|
|
220
|
+
var base = new URL(baseHref, current.href);
|
|
221
|
+
if (base.origin !== current.origin)
|
|
222
|
+
return false;
|
|
223
|
+
var basePath = base.pathname.replace(/\/index\.html$/i, '').replace(/\/+$/, '');
|
|
224
|
+
if (!basePath || basePath === '/')
|
|
225
|
+
return false;
|
|
226
|
+
return pathname !== basePath && pathname.indexOf(basePath + '/') !== 0;
|
|
227
|
+
}
|
|
228
|
+
catch (e) {
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
};
|
|
125
232
|
AddActionRedirectDirective.prototype.ngOnDestroy = function () {
|
|
126
233
|
this.linstenEvent && this.linstenEvent();
|
|
127
234
|
};
|
|
@@ -130,7 +237,8 @@ var AddActionRedirectDirective = /** @class */ (function () {
|
|
|
130
237
|
{ type: ElementRef },
|
|
131
238
|
{ type: Renderer2 },
|
|
132
239
|
{ type: BlocksService },
|
|
133
|
-
{ type: Router }
|
|
240
|
+
{ type: Router },
|
|
241
|
+
{ type: LocationStrategy }
|
|
134
242
|
]; };
|
|
135
243
|
__decorate([
|
|
136
244
|
Input()
|
|
@@ -150,4 +258,4 @@ var AddActionRedirectDirective = /** @class */ (function () {
|
|
|
150
258
|
return AddActionRedirectDirective;
|
|
151
259
|
}());
|
|
152
260
|
export { AddActionRedirectDirective };
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWFjdGlvbi1yZWRpcmVjdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtZGlyZWN0aXZlL2FkZC1hY3Rpb24tcmVkaXJlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULGFBQWEsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekM7SUFBQTtJQUVBLENBQUM7SUFBRCxvQkFBQztBQUFELENBQUMsQUFGRCxJQUVDOztBQUtEO0lBb0JJLG9DQUM4QixRQUFRLEVBQzFCLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLGFBQTRCLEVBQzVCLE1BQWM7UUFMMUIsaUJBTUs7UUFMeUIsYUFBUSxHQUFSLFFBQVEsQ0FBQTtRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXRCbEIsZ0JBQVcsR0FBRyxFQUFFLENBQUE7UUFDaEIsaUJBQVksR0FBRyxJQUFJLENBQUE7UUFDbkIsZ0JBQVcsR0FBRyxJQUFJLENBQUE7UUF5RDFCLG9CQUFlLEdBQUcsVUFBQyxHQUFHO1lBQ2xCLEtBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUMvQyxDQUFDLENBQUE7SUF0Q0csQ0FBQztJQWxCTCxzQkFBSSwyREFBbUI7YUFBdkIsVUFBd0IsS0FBVTtZQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN4QixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLHVEQUFlO2FBQW5CLFVBQW9CLEtBQVU7WUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDMUIsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxxREFBYTthQUFqQixVQUFrQixLQUFjO1lBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzdCLENBQUM7OztPQUFBO0lBVUQsNkNBQVEsR0FBUixjQUFhLENBQUM7SUFHZCxnREFBVyxHQUFYLFVBQVksT0FBc0I7UUFBbEMsaUJBNkJDOztRQTVCRyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUE7UUFDakcsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxVQUFDLEVBQUU7WUFDakMsSUFBSTtnQkFDQSxLQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUM3RDtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLENBQUE7YUFBRTtRQUNyRSxDQUFDLEVBQUU7UUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzlGLElBQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2xELElBQUksZUFBZSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxlQUFlLENBQUMsQ0FBQztTQUM1RjtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkYsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDOUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixDQUFDLENBQUM7U0FDM0Y7YUFBTTtZQUNILElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLFVBQUMsR0FBRztnQkFDakYsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNyQixLQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLENBQUMsQ0FBQyxDQUFBO1NBQ0w7SUFDTCxDQUFDO0lBTU8sdURBQWtCLEdBQTFCOztRQUNJLElBQU0sS0FBSyxlQUFHLElBQUksQ0FBQyxNQUFNLDBDQUFFLEtBQUssMENBQUUsSUFBSSxFQUFFLENBQUM7UUFDekMsSUFBSSxLQUFLLEVBQUU7WUFDUCxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELElBQU0sUUFBUSxlQUFHLElBQUksQ0FBQyxNQUFNLDBDQUFFLFFBQVEsMENBQUUsSUFBSSxFQUFFLENBQUM7UUFDL0MsSUFBSSxRQUFRLEVBQUU7WUFDVixPQUFPLFFBQVEsQ0FBQztTQUNuQjtRQUVELElBQU0sVUFBVSwyQkFBRyxJQUFJLENBQUMsTUFBTSwwQ0FBRSxNQUFNLDBDQUFFLE1BQU0sMENBQUUsSUFBSSwwQ0FBRSxJQUFJLEVBQUUsQ0FBQztRQUM3RCxJQUFJLFVBQVUsRUFBRTtZQUNaLE9BQU8sVUFBVSxDQUFDO1NBQ3JCO1FBRUQsT0FBTyxhQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLElBQUksMENBQUUsSUFBSSxPQUFNLFNBQVMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sa0RBQWEsR0FBckIsVUFBc0IsR0FBVzs7UUFDN0IsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN2QixJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUM3RCxJQUFJO1lBQ0EsSUFBTSxJQUFJLEdBQUcsYUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxRQUFRLDBDQUFFLE1BQU0sS0FBSSxFQUFFLENBQUM7WUFDbkQsSUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxJQUFJO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ3ZCLE9BQU8sTUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7U0FDakM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDTCxDQUFDO0lBRUQsZ0RBQVcsR0FBWDtRQUNJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFBO0lBQzVDLENBQUM7O2dEQS9FSSxNQUFNLFNBQUMsUUFBUTtnQkFDSSxVQUFVO2dCQUNaLFNBQVM7Z0JBQ0osYUFBYTtnQkFDcEIsTUFBTTs7SUFqQjFCO1FBREMsS0FBSyxFQUFFO3lFQUdQO0lBRUQ7UUFEQyxLQUFLLEVBQUU7cUVBR1A7SUFFRDtRQURDLEtBQUssRUFBRTttRUFHUDtJQWxCUSwwQkFBMEI7UUFIdEMsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLHVCQUF1QjtTQUNwQyxDQUFDO1FBc0JPLFdBQUEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO09BckJaLDBCQUEwQixDQXFHdEM7SUFBRCxpQ0FBQztDQUFBLEFBckdELElBcUdDO1NBckdZLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgSW5wdXQsXG4gICAgRWxlbWVudFJlZixcbiAgICBSZW5kZXJlcjIsXG4gICAgSW5qZWN0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBCbG9ja3NTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2Jsb2Nrcy9ibG9ja3Muc2VydmljZVwiO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuXG5leHBvcnQgY2xhc3MgUGFyYW1zQ29udGV4dCB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogXCJbZWNBZGRBY3Rpb25SZWRpcmVjdF1cIixcbn0pXG5leHBvcnQgY2xhc3MgQWRkQWN0aW9uUmVkaXJlY3REaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIGJhbm5lcjogYW55O1xuICAgIHByaXZhdGUgY2xhc3NTdHI6IFwiXCI7XG4gICAgcHJpdmF0ZSByZWRpcmVjdFVybCA9ICcnXG4gICAgcHJpdmF0ZSBsaW5zdGVuRXZlbnQgPSBudWxsXG4gICAgcHJpdmF0ZSB0cmFuc3BhcmVudCA9IHRydWVcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGVjQWRkQWN0aW9uUmVkaXJlY3QodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLmJhbm5lciA9IHZhbHVlO1xuICAgIH1cbiAgICBASW5wdXQoKVxuICAgIHNldCBjbGFzc1N0clNwYWNpbmcodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLmNsYXNzU3RyID0gdmFsdWU7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGlzVHJhbnNwYXJlbnQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy50cmFuc3BhcmVudCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50LFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBibG9ja3NTZXJ2aWNlOiBCbG9ja3NTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICkgeyB9XG5cbiAgICBuZ09uSW5pdCgpIHsgfVxuXG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmICh0aGlzLmxpbnN0ZW5FdmVudCkge1xuICAgICAgICAgICAgdGhpcy5saW5zdGVuRXZlbnQoKTtcbiAgICAgICAgICAgIHRoaXMubGluc3RlbkV2ZW50ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudHJhbnNwYXJlbnQgJiYgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NvbG9yJywgJ3RyYW5zcGFyZW50JylcbiAgICAgICAgdGhpcy5jbGFzc1N0cj8uc3BsaXQoXCIgXCIpLmZvckVhY2goKGNsKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGNsKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7IGNvbnNvbGUubG9nKCdhZGQgY2xhc3MgZGlyZWN0aXZlIC0+ICcsIGVycm9yKSB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZGlyZWN0VXJsID0gdGhpcy5iYW5uZXIudXJsID8gdGhpcy5iYW5uZXIudXJsIDogdGhpcy5ibG9ja3NTZXJ2aWNlLmZvcm1VcmwodGhpcy5iYW5uZXIpXG4gICAgICAgIGNvbnN0IGFjY2Vzc2libGVMYWJlbCA9IHRoaXMuZ2V0QWNjZXNzaWJsZUxhYmVsKCk7XG4gICAgICAgIGlmIChhY2Nlc3NpYmxlTGFiZWwpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnYXJpYS1sYWJlbCcsIGFjY2Vzc2libGVMYWJlbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgXCJocmVmXCIsIHRoaXMucmVkaXJlY3RVcmwpO1xuICAgICAgICBpZiAodGhpcy5pc0V4dGVybmFsVXJsKHRoaXMucmVkaXJlY3RVcmwpKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgXCJ0YXJnZXRcIiwgXCJfYmxhbmtcIik7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgXCJyZWxcIiwgXCJub29wZW5lciBub3JlZmVycmVyXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIFwidGFyZ2V0XCIpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIFwicmVsXCIpO1xuICAgICAgICAgICAgdGhpcy5saW5zdGVuRXZlbnQgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJywgKGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVkaXJlY3RGcm9tVXJsKGV2dCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVkaXJlY3RGcm9tVXJsID0gKGV2dCkgPT4ge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMucmVkaXJlY3RVcmwpXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBY2Nlc3NpYmxlTGFiZWwoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gdGhpcy5iYW5uZXI/LnRpdGxlPy50cmltKCk7XG4gICAgICAgIGlmICh0aXRsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRpdGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3VidGl0bGUgPSB0aGlzLmJhbm5lcj8uc3VidGl0bGU/LnRyaW0oKTtcbiAgICAgICAgaWYgKHN1YnRpdGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VidGl0bGU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBidXR0b25UZXh0ID0gdGhpcy5iYW5uZXI/LnN0eWxlcz8uYnV0dG9uPy50ZXh0Py50cmltKCk7XG4gICAgICAgIGlmIChidXR0b25UZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gYnV0dG9uVGV4dDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmJhbm5lcj8ubmFtZT8udHJpbSgpIHx8ICdWZXIgbcOhcyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0V4dGVybmFsVXJsKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdXJsKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh1cmwuc3RhcnRzV2l0aCgnLycpIHx8IHVybC5zdGFydHNXaXRoKCcjJykpIHJldHVybiBmYWxzZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2UgPSB0aGlzLmRvY3VtZW50Py5sb2NhdGlvbj8ub3JpZ2luIHx8ICcnO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gbmV3IFVSTCh1cmwsIGJhc2UpO1xuICAgICAgICAgICAgaWYgKCFiYXNlKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQub3JpZ2luICE9PSBiYXNlO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmxpbnN0ZW5FdmVudCAmJiB0aGlzLmxpbnN0ZW5FdmVudCgpXG4gICAgfVxufVxuIl19
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWFjdGlvbi1yZWRpcmVjdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtZGlyZWN0aXZlL2FkZC1hY3Rpb24tcmVkaXJlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULGFBQWEsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekM7SUFBQTtJQUVBLENBQUM7SUFBRCxvQkFBQztBQUFELENBQUMsQUFGRCxJQUVDOztBQUtEO0lBd0JJLG9DQUM4QixRQUFRLEVBQzFCLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLGFBQTRCLEVBQzVCLE1BQWMsRUFDZCxnQkFBa0M7UUFMaEIsYUFBUSxHQUFSLFFBQVEsQ0FBQTtRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUEzQnRDLGdCQUFXLEdBQUcsRUFBRSxDQUFBO1FBQ2hCLGlCQUFZLEdBQUcsSUFBSSxDQUFBO1FBQ25CLGdCQUFXLEdBQUcsSUFBSSxDQUFBO1FBQ2xCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLG1CQUFjLEdBQWtCLElBQUksQ0FBQztRQUNyQyxlQUFVLEdBQUcs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QztZQUNsRixJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsS0FBSyxHQUFHO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBRWhELE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUU7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBQ0wsQ0FBQztJQUVELGdEQUFXLEdBQVg7UUFDSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUM1QyxDQUFDOztnREF6TEksTUFBTSxTQUFDLFFBQVE7Z0JBQ0ksVUFBVTtnQkFDWixTQUFTO2dCQUNKLGFBQWE7Z0JBQ3BCLE1BQU07Z0JBQ0ksZ0JBQWdCOztJQWxCOUM7UUFEQyxLQUFLLEVBQUU7eUVBR1A7SUFFRDtRQURDLEtBQUssRUFBRTtxRUFHUDtJQUVEO1FBREMsS0FBSyxFQUFFO21FQUdQO0lBdEJRLDBCQUEwQjtRQUh0QyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsdUJBQXVCO1NBQ3BDLENBQUM7UUEwQk8sV0FBQSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7T0F6QlosMEJBQTBCLENBbU50QztJQUFELGlDQUFDO0NBQUEsQUFuTkQsSUFtTkM7U0FuTlksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBJbnB1dCxcbiAgICBFbGVtZW50UmVmLFxuICAgIFJlbmRlcmVyMixcbiAgICBJbmplY3QsXG4gICAgT25DaGFuZ2VzLFxuICAgIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBET0NVTUVOVCwgTG9jYXRpb25TdHJhdGVneSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IEJsb2Nrc1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvYmxvY2tzL2Jsb2Nrcy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBQYXJhbXNDb250ZXh0IHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiBcIltlY0FkZEFjdGlvblJlZGlyZWN0XVwiLFxufSlcbmV4cG9ydCBjbGFzcyBBZGRBY3Rpb25SZWRpcmVjdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgYmFubmVyOiBhbnk7XG4gICAgcHJpdmF0ZSBjbGFzc1N0cjogXCJcIjtcbiAgICBwcml2YXRlIHJlZGlyZWN0VXJsID0gJydcbiAgICBwcml2YXRlIGxpbnN0ZW5FdmVudCA9IG51bGxcbiAgICBwcml2YXRlIHRyYW5zcGFyZW50ID0gdHJ1ZVxuICAgIHByaXZhdGUgdGFyZ2V0TWFuYWdlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgb3JpZ2luYWxUYXJnZXQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcmVsTWFuYWdlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgb3JpZ2luYWxSZWw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgZWNBZGRBY3Rpb25SZWRpcmVjdCh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuYmFubmVyID0gdmFsdWU7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNsYXNzU3RyU3BhY2luZyh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuY2xhc3NTdHIgPSB2YWx1ZTtcbiAgICB9XG4gICAgQElucHV0KClcbiAgICBzZXQgaXNUcmFuc3BhcmVudCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnRyYW5zcGFyZW50ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIGJsb2Nrc1NlcnZpY2U6IEJsb2Nrc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgbG9jYXRpb25TdHJhdGVneTogTG9jYXRpb25TdHJhdGVneSxcbiAgICApIHsgfVxuXG4gICAgbmdPbkluaXQoKSB7IH1cblxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMudGFyZ2V0TWFuYWdlZCA/IHRoaXMub3JpZ2luYWxUYXJnZXQgOiBlbGVtZW50LmdldEF0dHJpYnV0ZSgndGFyZ2V0Jyk7XG4gICAgICAgIGNvbnN0IHJlbCA9IHRoaXMucmVsTWFuYWdlZCA/IHRoaXMub3JpZ2luYWxSZWwgOiBlbGVtZW50LmdldEF0dHJpYnV0ZSgncmVsJyk7XG5cbiAgICAgICAgaWYgKHRoaXMubGluc3RlbkV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxpbnN0ZW5FdmVudCgpO1xuICAgICAgICAgICAgdGhpcy5saW5zdGVuRXZlbnQgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXN0b3JlTWFuYWdlZEF0dHJpYnV0ZSgndGFyZ2V0JywgdGhpcy50YXJnZXRNYW5hZ2VkLCB0aGlzLm9yaWdpbmFsVGFyZ2V0KTtcbiAgICAgICAgdGhpcy5yZXN0b3JlTWFuYWdlZEF0dHJpYnV0ZSgncmVsJywgdGhpcy5yZWxNYW5hZ2VkLCB0aGlzLm9yaWdpbmFsUmVsKTtcbiAgICAgICAgdGhpcy50YXJnZXRNYW5hZ2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMub3JpZ2luYWxUYXJnZXQgPSBudWxsO1xuICAgICAgICB0aGlzLnJlbE1hbmFnZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbFJlbCA9IG51bGw7XG5cbiAgICAgICAgdGhpcy50cmFuc3BhcmVudCAmJiB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY29sb3InLCAndHJhbnNwYXJlbnQnKVxuICAgICAgICB0aGlzLmNsYXNzU3RyPy5zcGxpdChcIiBcIikuZm9yRWFjaCgoY2wpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgY2wpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsgY29uc29sZS5sb2coJ2FkZCBjbGFzcyBkaXJlY3RpdmUgLT4gJywgZXJyb3IpIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVkaXJlY3RVcmwgPSB0aGlzLmJhbm5lci51cmwgPyB0aGlzLmJhbm5lci51cmwgOiB0aGlzLmJsb2Nrc1NlcnZpY2UuZm9ybVVybCh0aGlzLmJhbm5lcilcbiAgICAgICAgY29uc3QgYWNjZXNzaWJsZUxhYmVsID0gdGhpcy5nZXRBY2Nlc3NpYmxlTGFiZWwoKTtcbiAgICAgICAgaWYgKGFjY2Vzc2libGVMYWJlbCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhcmlhLWxhYmVsJywgYWNjZXNzaWJsZUxhYmVsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0V4dGVybmFsVXJsKHRoaXMucmVkaXJlY3RVcmwpKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KGVsZW1lbnQsIFwiaHJlZlwiLCB0aGlzLnJlZGlyZWN0VXJsKTtcbiAgICAgICAgICAgIGNvbnN0IGVmZmVjdGl2ZVRhcmdldCA9IHRhcmdldCA9PT0gbnVsbCA/ICdfYmxhbmsnIDogdGFyZ2V0O1xuICAgICAgICAgICAgaWYgKHRhcmdldCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW1lbnQsIFwidGFyZ2V0XCIsIFwiX2JsYW5rXCIpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0TWFuYWdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW5hbFRhcmdldCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZWZmZWN0aXZlVGFyZ2V0LnRyaW0oKS50b0xvd2VyQ2FzZSgpID09PSAnX2JsYW5rJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbFRva2VucyA9IChyZWwgfHwgJycpLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nUmVsVG9rZW5zID0gcmVsVG9rZW5zLm1hcCh0b2tlbiA9PiB0b2tlbi50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdSZWxUb2tlbnMuaW5kZXhPZignbm9vcGVuZXInKSA9PT0gLTEpIHJlbFRva2Vucy5wdXNoKCdub29wZW5lcicpO1xuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1JlbFRva2Vucy5pbmRleE9mKCdub3JlZmVycmVyJykgPT09IC0xKSByZWxUb2tlbnMucHVzaCgnbm9yZWZlcnJlcicpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlY3VyZVJlbCA9IHJlbFRva2Vucy5qb2luKCcgJyk7XG4gICAgICAgICAgICAgICAgaWYgKHNlY3VyZVJlbCAhPT0gcmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW1lbnQsIFwicmVsXCIsIHNlY3VyZVJlbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVsTWFuYWdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luYWxSZWwgPSByZWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVyVXJsID0gdGhpcy50b1JvdXRlclVybCh0aGlzLnJlZGlyZWN0VXJsKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkoZWxlbWVudCwgXCJocmVmXCIsIHRoaXMubG9jYXRpb25TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxVcmwocm91dGVyVXJsKSk7XG4gICAgICAgICAgICBpZiAodGFyZ2V0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5zdGVuRXZlbnQgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihlbGVtZW50LCAnY2xpY2snLCAoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG91bGRIYW5kbGVTcGFDbGljayhldnQpKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJvdXRlclVybCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3VsZEhhbmRsZVNwYUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCAmJiBldmVudC5idXR0b24gPT09IDAgJiZcbiAgICAgICAgICAgICFldmVudC5jdHJsS2V5ICYmICFldmVudC5tZXRhS2V5ICYmICFldmVudC5zaGlmdEtleSAmJiAhZXZlbnQuYWx0S2V5O1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9Sb3V0ZXJVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcm91dGVyVXJsOiBzdHJpbmc7XG4gICAgICAgIGlmICh0aGlzLmlzQWJzb2x1dGVVcmwodXJsKSB8fCB1cmwuc3RhcnRzV2l0aCgnIycpIHx8IHVybC5zdGFydHNXaXRoKCc/JykpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IG5ldyBVUkwodXJsLCB0aGlzLmdldERvY3VtZW50SHJlZigpKTtcbiAgICAgICAgICAgIHJvdXRlclVybCA9IHRhcmdldC5wYXRobmFtZSArIHRhcmdldC5zZWFyY2ggKyB0YXJnZXQuaGFzaDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJvdXRlclVybCA9IHRoaXMucm91dGVyLnNlcmlhbGl6ZVVybCh0aGlzLnJvdXRlci5wYXJzZVVybCh1cmwpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnN0cmlwQmFzZUhyZWYocm91dGVyVXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0cmlwQmFzZUhyZWYodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwYXRoRW5kID0gdXJsLnNlYXJjaCgvWz8jXS8pO1xuICAgICAgICBjb25zdCBwYXRoID0gcGF0aEVuZCA9PT0gLTEgPyB1cmwgOiB1cmwuc3Vic3RyaW5nKDAsIHBhdGhFbmQpO1xuICAgICAgICBjb25zdCBzdWZmaXggPSBwYXRoRW5kID09PSAtMSA/ICcnIDogdXJsLnN1YnN0cmluZyhwYXRoRW5kKTtcbiAgICAgICAgY29uc3QgYmFzZUhyZWYgPSB0aGlzLmxvY2F0aW9uU3RyYXRlZ3kuZ2V0QmFzZUhyZWYoKTtcblxuICAgICAgICBpZiAoIWJhc2VIcmVmKSByZXR1cm4gdXJsO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gbmV3IFVSTCh0aGlzLmdldERvY3VtZW50SHJlZigpKTtcbiAgICAgICAgICAgIGNvbnN0IGJhc2UgPSBuZXcgVVJMKGJhc2VIcmVmLCBjdXJyZW50LmhyZWYpO1xuICAgICAgICAgICAgbGV0IGJhc2VQYXRoID0gYmFzZS5vcmlnaW4gPT09IGN1cnJlbnQub3JpZ2luID8gYmFzZS5wYXRobmFtZSA6ICcnO1xuICAgICAgICAgICAgYmFzZVBhdGggPSBiYXNlUGF0aC5yZXBsYWNlKC9cXC9pbmRleFxcLmh0bWwkL2ksICcnKS5yZXBsYWNlKC9cXC8rJC8sICcnKTtcblxuICAgICAgICAgICAgaWYgKCFiYXNlUGF0aCB8fCBiYXNlUGF0aCA9PT0gJy8nKSByZXR1cm4gdXJsO1xuICAgICAgICAgICAgaWYgKHBhdGggPT09IGJhc2VQYXRoKSByZXR1cm4gJy8nICsgc3VmZml4O1xuICAgICAgICAgICAgaWYgKHBhdGguaW5kZXhPZihiYXNlUGF0aCArICcvJykgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcoYmFzZVBhdGgubGVuZ3RoKSArIHN1ZmZpeDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gS2VlcCB0aGUgVVJMIHVuY2hhbmdlZCB3aGVuIHRoZSBicm93c2VyIGNhbm5vdCByZXNvbHZlIHRoZSBiYXNlIGhyZWYuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RG9jdW1lbnRIcmVmKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5kb2N1bWVudCAmJiB0aGlzLmRvY3VtZW50LmxvY2F0aW9uO1xuICAgICAgICBpZiAobG9jYXRpb24gJiYgbG9jYXRpb24uaHJlZikgcmV0dXJuIGxvY2F0aW9uLmhyZWY7XG4gICAgICAgIGlmIChsb2NhdGlvbiAmJiBsb2NhdGlvbi5vcmlnaW4pIHJldHVybiBsb2NhdGlvbi5vcmlnaW4gKyAnLyc7XG4gICAgICAgIHJldHVybiAnaHR0cDovL2xvY2FsaG9zdC8nO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBYnNvbHV0ZVVybCh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gL15bYS16XVthLXpcXGQrLi1dKjovaS50ZXN0KHVybCkgfHwgdXJsLmluZGV4T2YoJy8vJykgPT09IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXN0b3JlTWFuYWdlZEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIG1hbmFnZWQ6IGJvb2xlYW4sIG9yaWdpbmFsVmFsdWU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFtYW5hZ2VkKSByZXR1cm47XG4gICAgICAgIGlmIChvcmlnaW5hbFZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgbmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgbmFtZSwgb3JpZ2luYWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEFjY2Vzc2libGVMYWJlbCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLmJhbm5lcj8udGl0bGU/LnRyaW0oKTtcbiAgICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGl0bGU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdWJ0aXRsZSA9IHRoaXMuYmFubmVyPy5zdWJ0aXRsZT8udHJpbSgpO1xuICAgICAgICBpZiAoc3VidGl0bGUpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWJ0aXRsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJ1dHRvblRleHQgPSB0aGlzLmJhbm5lcj8uc3R5bGVzPy5idXR0b24/LnRleHQ/LnRyaW0oKTtcbiAgICAgICAgaWYgKGJ1dHRvblRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiBidXR0b25UZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYmFubmVyPy5uYW1lPy50cmltKCkgfHwgJ1ZlciBtw6FzJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRXh0ZXJuYWxVcmwodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF1cmwgfHwgIXRoaXMuaXNBYnNvbHV0ZVVybCh1cmwpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gbmV3IFVSTCh0aGlzLmdldERvY3VtZW50SHJlZigpKTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IG5ldyBVUkwodXJsLCBjdXJyZW50LmhyZWYpO1xuICAgICAgICAgICAgaWYgKHRhcmdldC5vcmlnaW4gIT09IGN1cnJlbnQub3JpZ2luKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzT3V0c2lkZUJhc2VIcmVmKHRhcmdldC5wYXRobmFtZSwgY3VycmVudCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc091dHNpZGVCYXNlSHJlZihwYXRobmFtZTogc3RyaW5nLCBjdXJyZW50OiBVUkwpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgYmFzZUhyZWYgPSB0aGlzLmxvY2F0aW9uU3RyYXRlZ3kuZ2V0QmFzZUhyZWYoKTtcbiAgICAgICAgaWYgKCFiYXNlSHJlZikgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlID0gbmV3IFVSTChiYXNlSHJlZiwgY3VycmVudC5ocmVmKTtcbiAgICAgICAgICAgIGlmIChiYXNlLm9yaWdpbiAhPT0gY3VycmVudC5vcmlnaW4pIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgYmFzZVBhdGggPSBiYXNlLnBhdGhuYW1lLnJlcGxhY2UoL1xcL2luZGV4XFwuaHRtbCQvaSwgJycpLnJlcGxhY2UoL1xcLyskLywgJycpO1xuICAgICAgICAgICAgaWYgKCFiYXNlUGF0aCB8fCBiYXNlUGF0aCA9PT0gJy8nKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiBwYXRobmFtZSAhPT0gYmFzZVBhdGggJiYgcGF0aG5hbWUuaW5kZXhPZihiYXNlUGF0aCArICcvJykgIT09IDA7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmxpbnN0ZW5FdmVudCAmJiB0aGlzLmxpbnN0ZW5FdmVudCgpXG4gICAgfVxufVxuIl19
|