@wavemaker/app-ng-runtime 11.15.5-rc.259 → 11.15.5-rc.262
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/components/base/fesm2022/index.mjs +1 -1
- package/components/containers/accordion/fesm2022/index.mjs +1 -1
- package/components/data/table/bundles/index.umd.js +5 -1
- package/components/data/table/esm2022/table.component.mjs +6 -2
- package/components/data/table/fesm2022/index.mjs +5 -1
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/input/calendar/fesm2022/index.mjs +1 -1
- package/components/input/chips/fesm2022/index.mjs +1 -1
- package/components/input/dataset-aware-form/fesm2022/index.mjs +1 -1
- package/components/navigation/menu/fesm2022/index.mjs +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/dynamic/fesm2022/index.mjs +2 -2
- package/scripts/datatable/datatable.js +6 -0
- package/variables/bundles/index.umd.js +88 -7
- package/variables/esm2022/service/variables.service.mjs +15 -3
- package/variables/esm2022/util/variable/service-variable.utils.mjs +25 -7
- package/variables/esm2022/util/variable/variables.utils.mjs +52 -2
- package/variables/fesm2022/index.mjs +89 -8
- package/variables/fesm2022/index.mjs.map +1 -1
- package/variables/service/variables.service.d.ts +2 -1
- package/variables/util/variable/variables.utils.d.ts +7 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { ViewChild, Inject, Optional, ViewEncapsulation, Component } from '@angular/core';
|
|
3
3
|
import * as i1 from '@wm/core';
|
|
4
|
-
import { getClonedObject,
|
|
4
|
+
import { getClonedObject, isMobile, getSessionStorageItem } from '@wm/core';
|
|
5
5
|
import { PROP_STRING, PROP_NUMBER, PROP_ANY, PROP_BOOLEAN, register, StylableComponent, styler, APPLY_STYLES_TYPE, createArrayFrom, getEvaluatedData, provideAsWidgetRef } from '@wm/components/base';
|
|
6
6
|
import { isObject, isDate, extend, includes, capitalize, clone, isEmpty, mapKeys, get, each } from 'lodash-es';
|
|
7
7
|
import * as momentLib from 'moment';
|
|
@@ -7,7 +7,7 @@ import { FormWidgetType, isDefined, debounce, $unwatch, $watch, $appDigest, toBo
|
|
|
7
7
|
import { PROP_BOOLEAN, PROP_STRING, PROP_ANY, PROP_NUMBER, register, registerFormWidget, styler, getConditionalClasses, getUniqObjsByDataField, ALLFIELDS, configureDnD, TextContentDirective, provideAs, provideAsWidgetRef } from '@wm/components/base';
|
|
8
8
|
import { DatasetAwareFormComponent } from '@wm/components/input/dataset-aware-form';
|
|
9
9
|
import { SearchComponent } from '@wm/components/basic/search';
|
|
10
|
-
import { forEach, clone, slice, find,
|
|
10
|
+
import { forEach, clone, slice, find, isObject, isEqual, toString, trim, findIndex, filter, isArray, max, reduce, pullAt } from 'lodash-es';
|
|
11
11
|
|
|
12
12
|
const chipsProps = new Map([
|
|
13
13
|
['allowonlyselect', PROP_BOOLEAN],
|
|
@@ -4,7 +4,7 @@ import { Subject } from 'rxjs';
|
|
|
4
4
|
import { isDefined, AppDefaults, debounce as debounce$1, $appDigest, noop, isEqualWithFields, toBoolean } from '@wm/core';
|
|
5
5
|
import { extractDataAsArray, ToDatePipe, ALLFIELDS, getOrderedDataset, convertDataToObject, transformDataWithKeys, transformFormData, getUniqObjsByDataField, groupData, handleHeaderClick, toggleAllHeaders, WidgetConfig } from '@wm/components/base';
|
|
6
6
|
import { BaseFormCustomComponent } from '@wm/components/input/base-form-custom';
|
|
7
|
-
import { debounce, isArray, find, toString, isNull,
|
|
7
|
+
import { debounce, isArray, find, toString, isNull, isObject, isEqual, isEmpty } from 'lodash-es';
|
|
8
8
|
|
|
9
9
|
class DatasetAwareFormComponent extends BaseFormCustomComponent {
|
|
10
10
|
get modelByKey() {
|
|
@@ -2,7 +2,7 @@ import * as i3 from '@angular/common';
|
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { ButtonComponent } from '@wm/components/input/button';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { Input, Directive, HostListener, ContentChild, Inject, Optional, Attribute,
|
|
5
|
+
import { Input, Directive, HostListener, ContentChild, Inject, Optional, Attribute, Component, forwardRef, inject, Self, ViewChildren } from '@angular/core';
|
|
6
6
|
import * as i2 from '@wm/core';
|
|
7
7
|
import { setAttr, addClass, removeClass, triggerItemAction, toggleClass, $appDigest } from '@wm/core';
|
|
8
8
|
import { register, PROP_STRING, PROP_BOOLEAN, StylableComponent, styler, APPLY_STYLES_TYPE, provideAsWidgetRef, PROP_ANY, DatasetAwareNavComponent, hasLinkToCurrentPage, TextContentDirective, PROP_NUMBER, AUTOCLOSE_TYPE, BaseContainerComponent } from '@wm/components/base';
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wavemaker/app-ng-runtime",
|
|
3
|
-
"version": "11.15.5-rc.
|
|
3
|
+
"version": "11.15.5-rc.262",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@wavemaker/app-ng-runtime",
|
|
9
|
-
"version": "11.15.5-rc.
|
|
9
|
+
"version": "11.15.5-rc.262",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"engines": {
|
|
12
12
|
"node": ">=18.16.1",
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wavemaker/app-ng-runtime",
|
|
3
|
-
"version": "11.15.5-rc.
|
|
3
|
+
"version": "11.15.5-rc.262",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@wavemaker/app-ng-runtime",
|
|
9
|
-
"version": "11.15.5-rc.
|
|
9
|
+
"version": "11.15.5-rc.262",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"engines": {
|
|
12
12
|
"node": ">=18.16.1",
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, Injectable, NgModule, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, ViewEncapsulation, Inject, Injector, importProvidersFrom,
|
|
2
|
+
import { Component, Injectable, NgModule, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, ViewEncapsulation, Inject, Injector, importProvidersFrom, APP_INITIALIZER, LOCALE_ID, provideZoneChangeDetection, enableProdMode } from '@angular/core';
|
|
3
3
|
import { isUndefined, isString, isEmpty } from 'lodash-es';
|
|
4
4
|
import { bootstrapApplication, BrowserModule } from '@angular/platform-browser';
|
|
5
5
|
import * as i5 from '@wm/core';
|
|
@@ -7,7 +7,7 @@ import { appendScriptToHead, UserDefinedExecutionContext, getValidJSON, getWmPro
|
|
|
7
7
|
import * as i4 from '@wm/runtime/base';
|
|
8
8
|
import { ComponentType, BasePageComponent, EmptyPageComponent, PrefabPreviewComponent, CanDeactivatePageGuard, CustomwidgetConfigProvider, AppJSProvider, AppVariablesProvider, AppExtensionProvider, getPrefabPartialJsonUrl, getPrefabMinJsonUrl, AccessrolesDirective, AppSpinnerComponent, CustomToasterComponent, AppComponent, PrefabDirective, PipeService, AppManagerService, PrefabManagerService, AuthGuard, RoleGuard, PageNotFoundGuard, AppJSResolve, AppExtensionJSResolve, I18nResolve, REQUIRED_MODULES_FOR_DYNAMIC_COMPONENTS, BaseCustomWidgetComponent, BasePrefabComponent, BasePartialComponent, ComponentRefProvider, PrefabConfigProvider, getPrefabConfigUrl, HttpCallInterceptor, AppBeforeLoadResolve, AppVariablesResolve, AppRef, ToasterServiceImpl, I18nServiceImpl, SpinnerServiceImpl, NavigationServiceImpl, AppDefaultsService, DynamicComponentRefProviderService, WmRouteReuseStrategy, WM_MODULES_FOR_ROOT } from '@wm/runtime/base';
|
|
9
9
|
import * as i1 from '@angular/router';
|
|
10
|
-
import {
|
|
10
|
+
import { RouteReuseStrategy, provideRouter, withHashLocation, withComponentInputBinding, RouterModule } from '@angular/router';
|
|
11
11
|
import * as i1$1 from '@angular/common/http';
|
|
12
12
|
import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi, withXsrfConfiguration, HttpClientXsrfModule, HttpClientModule } from '@angular/common/http';
|
|
13
13
|
import { provideAnimations, BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
@@ -1492,6 +1492,12 @@ $.widget('wm.datatable', {
|
|
|
1492
1492
|
}
|
|
1493
1493
|
}
|
|
1494
1494
|
},
|
|
1495
|
+
refreshColumnWidths: function () {
|
|
1496
|
+
if (this.gridContainer.width() > 0) {
|
|
1497
|
+
this.tableContainer.children('colgroup').children('col').css('width', '');
|
|
1498
|
+
}
|
|
1499
|
+
this.setColGroupWidths();
|
|
1500
|
+
},
|
|
1495
1501
|
/*Set the default widths for the colgroup*/
|
|
1496
1502
|
setColGroupWidths: function () {
|
|
1497
1503
|
var self = this,
|
|
@@ -785,7 +785,28 @@
|
|
|
785
785
|
value = !lodashEs.isUndefined(value) ? value : obj.value;
|
|
786
786
|
/* sanity check, user can bind parent nodes to non-object values, so child node bindings may fail */
|
|
787
787
|
if (targetObj) {
|
|
788
|
-
|
|
788
|
+
// Multi query params: one slot per binding; rebinds replace that slot (not append).
|
|
789
|
+
// Exception: if the bind expression itself resolved to the complete array
|
|
790
|
+
// (e.g. `bind:['fire', 'water']`), assign it directly instead of treating it
|
|
791
|
+
// as a single slot's value — same as the non-multi assignment below.
|
|
792
|
+
if (obj.collectionFormat === 'multi' && !lodashEs.isArray(value)) {
|
|
793
|
+
let values = targetObj[targetNodeKey];
|
|
794
|
+
if (!lodashEs.isArray(values)) {
|
|
795
|
+
values = targetObj[targetNodeKey] = lodashEs.isUndefined(values) ? [] : [values];
|
|
796
|
+
}
|
|
797
|
+
let slot = obj.multiIndex !== undefined ? obj.multiIndex : obj.__multiSlotIndex;
|
|
798
|
+
if (slot === undefined) {
|
|
799
|
+
slot = obj.__multiSlotIndex = values.length;
|
|
800
|
+
values.push(value);
|
|
801
|
+
}
|
|
802
|
+
else {
|
|
803
|
+
obj.__multiSlotIndex = slot;
|
|
804
|
+
values[slot] = value;
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
else {
|
|
808
|
+
targetObj[targetNodeKey] = value;
|
|
809
|
+
}
|
|
789
810
|
}
|
|
790
811
|
processVariablePostBindUpdate(targetNodeKey, value, obj.type, variable, noUpdate);
|
|
791
812
|
};
|
|
@@ -894,6 +915,32 @@
|
|
|
894
915
|
* for some it can be 'dataSet' and hence will be passed as param
|
|
895
916
|
* @param {string} bindTarget, the object field in variable where the computed bindings will be set
|
|
896
917
|
*/
|
|
918
|
+
/**
|
|
919
|
+
* In older saved REST/Swagger service variables, duplicate query parameters may not have a
|
|
920
|
+
* collectionFormat, so they are treated as multi-value parameters for backward compatibility:
|
|
921
|
+
* each duplicate target is tagged collectionFormat 'multi' and given a stable multiIndex.
|
|
922
|
+
* Shared by both processBinding implementations (this file and VariablesService).
|
|
923
|
+
*/
|
|
924
|
+
const applyMultiIndexForDuplicateBindings = (bindMap) => {
|
|
925
|
+
const targetOccurrences = {};
|
|
926
|
+
bindMap.forEach(function (node) {
|
|
927
|
+
if (node && node.target) {
|
|
928
|
+
targetOccurrences[node.target] = (targetOccurrences[node.target] || 0) + 1;
|
|
929
|
+
}
|
|
930
|
+
});
|
|
931
|
+
const nextMultiIndex = {};
|
|
932
|
+
bindMap.forEach(function (node) {
|
|
933
|
+
if (node && node.target && targetOccurrences[node.target] > 1) {
|
|
934
|
+
if (!node.collectionFormat) {
|
|
935
|
+
node.collectionFormat = 'multi';
|
|
936
|
+
}
|
|
937
|
+
if (node.multiIndex === undefined) {
|
|
938
|
+
nextMultiIndex[node.target] = nextMultiIndex[node.target] || 0;
|
|
939
|
+
node.multiIndex = nextMultiIndex[node.target]++;
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
});
|
|
943
|
+
};
|
|
897
944
|
const processBinding = (variable, context, bindSource, bindTarget) => {
|
|
898
945
|
bindSource = bindSource || 'dataBinding';
|
|
899
946
|
bindTarget = bindTarget || 'dataBinding';
|
|
@@ -903,6 +950,9 @@
|
|
|
903
950
|
if (!bindMap || !lodashEs.isArray(bindMap)) {
|
|
904
951
|
return;
|
|
905
952
|
}
|
|
953
|
+
if (variable.category === VARIABLE_CONSTANTS.CATEGORY.SERVICE) {
|
|
954
|
+
applyMultiIndexForDuplicateBindings(bindMap);
|
|
955
|
+
}
|
|
906
956
|
bindMap.forEach(function (node) {
|
|
907
957
|
/* for static variable change the binding with target 'dataBinding' to 'dataSet', as the results have to reflect directly in the dataSet */
|
|
908
958
|
if (variable.category === 'wm.Variable' && node.target === 'dataBinding') {
|
|
@@ -2032,6 +2082,24 @@
|
|
|
2032
2082
|
const isBodyTypeQueryOrProcedure = (variable) => {
|
|
2033
2083
|
return (lodashEs.includes(['QueryExecution', 'ProcedureExecution'], variable.controller)) && (lodashEs.includes(['put', 'post'], variable.operationType));
|
|
2034
2084
|
};
|
|
2085
|
+
const appendQueryParam = (queryParams, paramName, paramValue, preEncoded = false) => {
|
|
2086
|
+
const encodedValue = preEncoded ? paramValue : encodeURIComponent(paramValue);
|
|
2087
|
+
const pair = `${paramName}=${encodedValue}`;
|
|
2088
|
+
return queryParams ? `${queryParams}&${pair}` : `?${pair}`;
|
|
2089
|
+
};
|
|
2090
|
+
const getQueryParamValues = (param, paramValue) => {
|
|
2091
|
+
if (lodashEs.isArray(paramValue)) {
|
|
2092
|
+
// 'multi' (duplicate query-param bindings) repeats the param, e.g. tag=a&tag=b.
|
|
2093
|
+
if (param.collectionFormat === 'multi') {
|
|
2094
|
+
return lodashEs.map(paramValue, (value) => ({ value, preEncoded: false }));
|
|
2095
|
+
}
|
|
2096
|
+
// Otherwise, join into a single comma-separated value, e.g. tag=a,b. Encode each
|
|
2097
|
+
// element individually so the joining commas stay literal (unambiguously the
|
|
2098
|
+
// separator) while a comma inside an element's own value stays escaped as %2C.
|
|
2099
|
+
return [{ value: lodashEs.map(paramValue, (value) => encodeURIComponent(value)).join(','), preEncoded: true }];
|
|
2100
|
+
}
|
|
2101
|
+
return [{ value: paramValue, preEncoded: false }];
|
|
2102
|
+
};
|
|
2035
2103
|
/**
|
|
2036
2104
|
* returns true if the variable is a Query service variable
|
|
2037
2105
|
* @param {string} controller
|
|
@@ -2249,12 +2317,12 @@
|
|
|
2249
2317
|
if (lodashEs.isNull(paramValue) && isQueryServiceVar(variable.controller, variable.serviceType)) {
|
|
2250
2318
|
break;
|
|
2251
2319
|
}
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
queryParams
|
|
2257
|
-
}
|
|
2320
|
+
getQueryParamValues(param, paramValue).forEach(({ value: queryValue, preEncoded }) => {
|
|
2321
|
+
if (lodashEs.isNull(queryValue) && isQueryServiceVar(variable.controller, variable.serviceType)) {
|
|
2322
|
+
return;
|
|
2323
|
+
}
|
|
2324
|
+
queryParams = appendQueryParam(queryParams, param.name, queryValue, preEncoded);
|
|
2325
|
+
});
|
|
2258
2326
|
break;
|
|
2259
2327
|
case 'PATH':
|
|
2260
2328
|
/* replacing the path param based on the regular expression in the relative path */
|
|
@@ -3043,6 +3111,15 @@
|
|
|
3043
3111
|
value: v
|
|
3044
3112
|
};
|
|
3045
3113
|
}
|
|
3114
|
+
processSpinnerMessageBinding(variable, scope) {
|
|
3115
|
+
if (!variable.spinnerMessage?.startsWith?.('bind:')) {
|
|
3116
|
+
return;
|
|
3117
|
+
}
|
|
3118
|
+
const expr = variable.spinnerMessage.replace('bind:', '');
|
|
3119
|
+
variable.spinnerMessage = '';
|
|
3120
|
+
const watchExpression = i1.$watch(expr, scope, {}, nv => variable.spinnerMessage = nv ?? '');
|
|
3121
|
+
scope.registerDestroyListener?.(watchExpression);
|
|
3122
|
+
}
|
|
3046
3123
|
processBinding(variable, context, bindSource, bindTarget) {
|
|
3047
3124
|
bindSource = bindSource || 'dataBinding';
|
|
3048
3125
|
const bindMap = variable[bindSource];
|
|
@@ -3051,6 +3128,9 @@
|
|
|
3051
3128
|
if (!bindMap || !lodashEs.isArray(bindMap)) {
|
|
3052
3129
|
return;
|
|
3053
3130
|
}
|
|
3131
|
+
if (variable.category === VARIABLE_CONSTANTS.CATEGORY.SERVICE) {
|
|
3132
|
+
applyMultiIndexForDuplicateBindings(bindMap);
|
|
3133
|
+
}
|
|
3054
3134
|
bindMap.forEach((node) => {
|
|
3055
3135
|
/* for static variable change the binding with target 'dataBinding' to 'dataSet', as the results have to reflect directly in the dataSet */
|
|
3056
3136
|
if (variable.category === 'wm.Variable' && node.target === 'dataBinding') {
|
|
@@ -3093,6 +3173,7 @@
|
|
|
3093
3173
|
for (const variableName in variablesJson) {
|
|
3094
3174
|
varInstance = VariableFactory.create(variablesJson[variableName], scope);
|
|
3095
3175
|
varInstance.init();
|
|
3176
|
+
this.processSpinnerMessageBinding(varInstance, scope);
|
|
3096
3177
|
if (this.isVariableSeperated(variablesJson, variableName)) {
|
|
3097
3178
|
this.processBinding(varInstance, scope, 'dataBinding', this.getBindSourceTarget(varInstance));
|
|
3098
3179
|
varInstance.httpService = this.httpService;
|
|
@@ -5,10 +5,9 @@ import { OAuthService } from '@wm/oAuth';
|
|
|
5
5
|
import { SecurityService } from '@wm/security';
|
|
6
6
|
import { VariableFactory } from '../factory/variable.factory';
|
|
7
7
|
import { wmSetDependency, BaseAction, getTarget, setValueToNode, getTargetNodeKey, internalBoundNodeMap } from '@wavemaker/variables';
|
|
8
|
-
import { setDependency, simulateFileDownload } from '../util/variable/variables.utils';
|
|
8
|
+
import { appManager, applyMultiIndexForDuplicateBindings, setDependency, simulateFileDownload } from '../util/variable/variables.utils';
|
|
9
9
|
import { MetadataService } from './metadata-service/metadata.service';
|
|
10
10
|
import { VARIABLE_CONSTANTS } from '../constants/variables.constants';
|
|
11
|
-
import { appManager } from '../util/variable/variables.utils';
|
|
12
11
|
import { isArray, isFunction, isUndefined, set } from "lodash-es";
|
|
13
12
|
import * as i0 from "@angular/core";
|
|
14
13
|
import * as i1 from "@wm/core";
|
|
@@ -91,6 +90,15 @@ export class VariablesService {
|
|
|
91
90
|
value: v
|
|
92
91
|
};
|
|
93
92
|
}
|
|
93
|
+
processSpinnerMessageBinding(variable, scope) {
|
|
94
|
+
if (!variable.spinnerMessage?.startsWith?.('bind:')) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const expr = variable.spinnerMessage.replace('bind:', '');
|
|
98
|
+
variable.spinnerMessage = '';
|
|
99
|
+
const watchExpression = $watch(expr, scope, {}, nv => variable.spinnerMessage = nv ?? '');
|
|
100
|
+
scope.registerDestroyListener?.(watchExpression);
|
|
101
|
+
}
|
|
94
102
|
processBinding(variable, context, bindSource, bindTarget) {
|
|
95
103
|
bindSource = bindSource || 'dataBinding';
|
|
96
104
|
bindTarget = bindTarget || 'dataBinding';
|
|
@@ -100,6 +108,9 @@ export class VariablesService {
|
|
|
100
108
|
if (!bindMap || !isArray(bindMap)) {
|
|
101
109
|
return;
|
|
102
110
|
}
|
|
111
|
+
if (variable.category === VARIABLE_CONSTANTS.CATEGORY.SERVICE) {
|
|
112
|
+
applyMultiIndexForDuplicateBindings(bindMap);
|
|
113
|
+
}
|
|
103
114
|
bindMap.forEach((node) => {
|
|
104
115
|
/* for static variable change the binding with target 'dataBinding' to 'dataSet', as the results have to reflect directly in the dataSet */
|
|
105
116
|
if (variable.category === 'wm.Variable' && node.target === 'dataBinding') {
|
|
@@ -143,6 +154,7 @@ export class VariablesService {
|
|
|
143
154
|
const params = {};
|
|
144
155
|
varInstance = VariableFactory.create(variablesJson[variableName], scope);
|
|
145
156
|
varInstance.init();
|
|
157
|
+
this.processSpinnerMessageBinding(varInstance, scope);
|
|
146
158
|
if (this.isVariableSeperated(variablesJson, variableName)) {
|
|
147
159
|
this.processBinding(varInstance, scope, 'dataBinding', this.getBindSourceTarget(varInstance));
|
|
148
160
|
varInstance.httpService = this.httpService;
|
|
@@ -197,4 +209,4 @@ export class VariablesService {
|
|
|
197
209
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: VariablesService, decorators: [{
|
|
198
210
|
type: Injectable
|
|
199
211
|
}], ctorParameters: () => [{ type: i1.AbstractHttpService }, { type: i2.MetadataService }, { type: i1.AbstractNavigationService }, { type: i3.Router }, { type: i1.AbstractToasterService }, { type: i4.OAuthService }, { type: i5.SecurityService }, { type: i1.AbstractDialogService }] });
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy92YXJpYWJsZXMvc3JjL3NlcnZpY2UvdmFyaWFibGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUNILE1BQU0sRUFDTixXQUFXLEVBQ1gscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQUUsd0JBQXdCLEVBQUUsZUFBZSxFQUNwRSxNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0SSxPQUFPLEVBQUMsYUFBYSxFQUFFLG9CQUFvQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUU1RCxPQUFPLEVBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7Ozs7O0FBRWhFLE1BQU0sT0FBTyxTQUFTO0lBQ2xCLE1BQU0sQ0FBQyxLQUFLLEVBQUUs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QUUsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQzsrR0E1TFEsZ0JBQWdCO21IQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1xuICAgICR3YXRjaCxcbiAgICAkcGFyc2VFdmVudCxcbiAgICBBYnN0cmFjdERpYWxvZ1NlcnZpY2UsXG4gICAgQWJzdHJhY3RIdHRwU2VydmljZSxcbiAgICBBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIEFic3RyYWN0VG9hc3RlclNlcnZpY2UsIHByb2Nlc3NGaWx0ZXJFeHBCaW5kTm9kZSwgJGludm9rZVdhdGNoZXJzLCBnZXRDbG9uZWRPYmplY3Rcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnQHdtL29BdXRoJztcbmltcG9ydCB7IFNlY3VyaXR5U2VydmljZSB9IGZyb20gJ0B3bS9zZWN1cml0eSc7XG5cbmltcG9ydCB7IFZhcmlhYmxlRmFjdG9yeSB9IGZyb20gJy4uL2ZhY3RvcnkvdmFyaWFibGUuZmFjdG9yeSc7XG5pbXBvcnQgeyB3bVNldERlcGVuZGVuY3ksIEJhc2VBY3Rpb24sIGdldFRhcmdldCwgc2V0VmFsdWVUb05vZGUsIGdldFRhcmdldE5vZGVLZXksIGludGVybmFsQm91bmROb2RlTWFwIH0gZnJvbSAnQHdhdmVtYWtlci92YXJpYWJsZXMnO1xuaW1wb3J0IHtzZXREZXBlbmRlbmN5LCBzaW11bGF0ZUZpbGVEb3dubG9hZH0gZnJvbSAnLi4vdXRpbC92YXJpYWJsZS92YXJpYWJsZXMudXRpbHMnO1xuaW1wb3J0IHsgTWV0YWRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9tZXRhZGF0YS1zZXJ2aWNlL21ldGFkYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgVkFSSUFCTEVfQ09OU1RBTlRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL3ZhcmlhYmxlcy5jb25zdGFudHMnO1xuaW1wb3J0IHthcHBNYW5hZ2VyfSBmcm9tICcuLi91dGlsL3ZhcmlhYmxlL3ZhcmlhYmxlcy51dGlscyc7XG5pbXBvcnQgeyBEYXRlRm9ybWF0dGVyIH0gZnJvbSAnQHdhdmVtYWtlci92YXJpYWJsZXMnO1xuaW1wb3J0IHtpc0FycmF5LCBpc0Z1bmN0aW9uLCBpc1VuZGVmaW5lZCwgc2V0fSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmV4cG9ydCBjbGFzcyBGb3JtYXR0ZXIgaW1wbGVtZW50cyBEYXRlRm9ybWF0dGVyIHtcbiAgICBmb3JtYXQodmFsdWUsIGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gIGFwcE1hbmFnZXIuZ2V0UGlwZSgnZGF0ZScpLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0KTtcbiAgICB9XG59XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFZhcmlhYmxlc1NlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaHR0cFNlcnZpY2U6IEFic3RyYWN0SHR0cFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbWV0YWRhdGFTZXJ2aWNlOiBNZXRhZGF0YVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGVyU2VydmljZTogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHRvYXN0ZXJTZXJ2aWNlOiBBYnN0cmFjdFRvYXN0ZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG9BdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNlY3VyaXR5U2VydmljZTogU2VjdXJpdHlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IEFic3RyYWN0RGlhbG9nU2VydmljZVxuICAgICkge1xuICAgICAgICAvLyBzZXQgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLCB0byBiZSB1c2VkIGFjcm9zcyB2YXJpYWJsZSBjbGFzc2VzLCBtYW5hZ2VycyBhbmQgdXRpbHNcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgnaHR0cCcsIHRoaXMuaHR0cFNlcnZpY2UpO1xuICAgICAgICBzZXREZXBlbmRlbmN5KCdtZXRhZGF0YScsIHRoaXMubWV0YWRhdGFTZXJ2aWNlKTtcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgnbmF2aWdhdGlvblNlcnZpY2UnLCB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgncm91dGVyJywgdGhpcy5yb3V0ZXJTZXJ2aWNlKTtcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgndG9hc3RlcicsIHRoaXMudG9hc3RlclNlcnZpY2UpO1xuICAgICAgICBzZXREZXBlbmRlbmN5KCdvQXV0aCcsIHRoaXMub0F1dGhTZXJ2aWNlKTtcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgnc2VjdXJpdHknLCB0aGlzLnNlY3VyaXR5U2VydmljZSk7XG4gICAgICAgIHNldERlcGVuZGVuY3koJ2RpYWxvZycsIHRoaXMuZGlhbG9nU2VydmljZSk7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeSgnb0F1dGgnLCB0aGlzLm9BdXRoU2VydmljZSk7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeSgnc2VjdXJpdHknLCB0aGlzLnNlY3VyaXR5U2VydmljZSk7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeSgnbWV0YWRhdGEnLCB0aGlzLm1ldGFkYXRhU2VydmljZSk7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeSgnaHR0cCcsIHRoaXMuaHR0cFNlcnZpY2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxvb3AgdGhyb3VnaCBhIGNvbGxlY3Rpb24gb2YgdmFyaWFibGVzL2FjdGlvbnNcbiAgICAgKiB0cmlnZ2VyIGNhbmNlbCBvbiBlYWNoIChvZiBleGlzdHMpXG4gICAgICogQHBhcmFtIGNvbGxlY3Rpb25cbiAgICAgKi9cbiAgICBidWxrQ2FuY2VsKGNvbGxlY3Rpb24pIHtcbiAgICAgICAgT2JqZWN0LmtleXMoY29sbGVjdGlvbikuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlID0gY29sbGVjdGlvbltuYW1lXTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHZhcmlhYmxlLmNhbmNlbCkpIHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZS5jYW5jZWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbG9vcHMgb3ZlciB0aGUgdmFyaWFibGUvYWN0aW9ucyBjb2xsZWN0aW9uIGFuZCB0cmlnZ2VyIGludm9rZSBvbiBpdCBpZiBzdGFydFVwZGF0ZSBvbiBpdCBpcyB0cnVlXG4gICAgICogQHBhcmFtIGNvbGxlY3Rpb25cbiAgICAgKi9cbiAgICB0cmlnZ2VyU3RhcnRVcGRhdGUoY29sbGVjdGlvbikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhjb2xsZWN0aW9uKVxuICAgICAgICAgICAgICAgIC5tYXAobmFtZSA9PiBjb2xsZWN0aW9uW25hbWVdKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoIHZhcmlhYmxlID0+IHZhcmlhYmxlPy5zdGFydFVwZGF0ZSAmJiB2YXJpYWJsZS5pbnZva2UpXG4gICAgICAgICAgICAgICAgLm1hcCh2YXJpYWJsZSA9PiB2YXJpYWJsZS5pbnZva2UoKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvY2Vzc0JpbmRFeHAoZDogYW55LCBzY29wZTogYW55LCB2YXJpYWJsZSkge1xuICAgICAgICBjb25zdCByb290ID0gZ2V0VGFyZ2V0KHZhcmlhYmxlKSxcbiAgICAgICAgICAgIHRhcmdldE5vZGVLZXkgPSBnZXRUYXJnZXROb2RlS2V5KGQudGFyZ2V0KSxcbiAgICAgICAgICAgIHJ1bk1vZGUgPSB0cnVlO1xuICAgICAgICBsZXQgdiA9IGlzQXJyYXkoZC52YWx1ZSkgPyBkLnZhbHVlWzBdIDogZC52YWx1ZTtcbiAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgIGlmICh2LnN0YXJ0c1dpdGggJiYgdi5zdGFydHNXaXRoKCdiaW5kOicpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2F0Y2hFeHByZXNzaW9uID0gJHdhdGNoKHYucmVwbGFjZSgnYmluZDonLCAnJyksIHNjb3BlLCB7fSwgdmFyaWFibGUuaW52b2tlT25QYXJhbUNoYW5nZS5iaW5kKHZhcmlhYmxlLCBkKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGQsICgpID0+IHZhcmlhYmxlLmlzTXV0ZWQpO1xuICAgICAgICAgICAgICAgIHYgPSBzY29wZS5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lciA/IHNjb3BlLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKHdhdGNoRXhwcmVzc2lvbikgOiB3YXRjaEV4cHJlc3Npb247XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChkLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlVG9Ob2RlKGQudGFyZ2V0LCBkLCByb290LCB2YXJpYWJsZSwgZC52YWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHJ1bk1vZGUgJiYgcm9vdCAhPT0gdGFyZ2V0Tm9kZUtleSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWludGVybmFsQm91bmROb2RlTWFwLmhhcyh2YXJpYWJsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsQm91bmROb2RlTWFwLnNldCh2YXJpYWJsZSwge30pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNldChpbnRlcm5hbEJvdW5kTm9kZU1hcC5nZXQodmFyaWFibGUpLCBbdmFyaWFibGUubmFtZSwgcm9vdCwgZC50YXJnZXRdLCBkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IGQudGFyZ2V0LFxuICAgICAgICAgICAgdmFsdWU6IHZcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm9jZXNzQmluZGluZyh2YXJpYWJsZTogYW55LCBjb250ZXh0OiBhbnksIGJpbmRTb3VyY2U/OiBzdHJpbmcsIGJpbmRUYXJnZXQ/OiBzdHJpbmcpIHtcbiAgICAgICAgYmluZFNvdXJjZSA9IGJpbmRTb3VyY2UgfHwgJ2RhdGFCaW5kaW5nJztcbiAgICAgICAgYmluZFRhcmdldCA9IGJpbmRUYXJnZXQgfHwgJ2RhdGFCaW5kaW5nJztcblxuICAgICAgICBjb25zdCBiaW5kTWFwID0gdmFyaWFibGVbYmluZFNvdXJjZV07XG4gICAgICAgIHZhcmlhYmxlW2JpbmRTb3VyY2VdID0ge307XG4gICAgICAgIHZhcmlhYmxlWydfYmluZCcgKyBiaW5kU291cmNlXSA9IGJpbmRNYXA7XG4gICAgICAgIGlmICghYmluZE1hcCB8fCAhaXNBcnJheShiaW5kTWFwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGJpbmRNYXAuZm9yRWFjaCggKG5vZGUpID0+IHtcbiAgICAgICAgICAgIC8qIGZvciBzdGF0aWMgdmFyaWFibGUgY2hhbmdlIHRoZSBiaW5kaW5nIHdpdGggdGFyZ2V0ICdkYXRhQmluZGluZycgdG8gJ2RhdGFTZXQnLCBhcyB0aGUgcmVzdWx0cyBoYXZlIHRvIHJlZmxlY3QgZGlyZWN0bHkgaW4gdGhlIGRhdGFTZXQgKi9cbiAgICAgICAgICAgIGlmICh2YXJpYWJsZS5jYXRlZ29yeSA9PT0gJ3dtLlZhcmlhYmxlJyAmJiBub2RlLnRhcmdldCA9PT0gJ2RhdGFCaW5kaW5nJykge1xuICAgICAgICAgICAgICAgIG5vZGUudGFyZ2V0ID0gJ2RhdGFTZXQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzQmluZEV4cChub2RlLCBjb250ZXh0LCB2YXJpYWJsZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlzVmFyaWFibGVTZXBlcmF0ZWQodmFyaWFibGVzSnNvbiwgdmFyaWFibGVOYW1lKSB7XG4gICAgICAgIHJldHVybiB2YXJpYWJsZXNKc29uW3ZhcmlhYmxlTmFtZV0uY2F0ZWdvcnkgPT09ICd3bS5WYXJpYWJsZScgfHwgdmFyaWFibGVzSnNvblt2YXJpYWJsZU5hbWVdLmNhdGVnb3J5ID09PSAnd20uU2VydmljZVZhcmlhYmxlJyB8fFxuICAgICAgICAgICAgdmFyaWFibGVzSnNvblt2YXJpYWJsZU5hbWVdLmNhdGVnb3J5ID09PSAnd20uTGl2ZVZhcmlhYmxlJyB8fCB2YXJpYWJsZXNKc29uW3ZhcmlhYmxlTmFtZV0uY2F0ZWdvcnkgPT09ICd3bS5DcnVkVmFyaWFibGUnXG4gICAgfVxuXG4gICAgZ2V0QmluZFNvdXJjZVRhcmdldCh2YXJpYWJsZSkge1xuICAgICAgICBpZiAodmFyaWFibGUuY2F0ZWdvcnkgPT09ICd3bS5MaXZlVmFyaWFibGUnKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFyaWFibGUub3BlcmF0aW9uID09PSAncmVhZCcgPyAnZmlsdGVyRmllbGRzJyA6ICdpbnB1dEZpZWxkcyc7XG4gICAgICAgIH0gZWxzZSBpZiAodmFyaWFibGUuY2F0ZWdvcnkgPT09ICd3bS5Nb2RlbFZhcmlhYmxlJykge1xuICAgICAgICAgICAgcmV0dXJuICdkYXRhU2V0JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnZGF0YUJpbmRpbmcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFrZXMgdGhlIHJhdyB2YXJpYWJsZXMgYW5kIGFjdGlvbnMganNvbiBhcyBpbnB1dFxuICAgICAqIEluaXRpYWxpemUgdGhlIHZhcmlhYmxlIGFuZCBhY3Rpb24gaW5zdGFuY2VzIHRocm91Z2ggdGhlIGZhY3RvcnlcbiAgICAgKiBjb2xsZWN0IHRoZSB2YXJpYWJsZXMgYW5kIGFjdGlvbnMgaW4gc2VwYXJhdGUgbWFwcyBhbmQgcmV0dXJuIHRoZSBjb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhZ2VcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVzSnNvblxuICAgICAqIEBwYXJhbSBzY29wZVxuICAgICAqIEByZXR1cm5zIHtWYXJpYWJsZXMgLCBBY3Rpb25zfVxuICAgICAqL1xuICAgIHJlZ2lzdGVyKHBhZ2U6IHN0cmluZywgdmFyaWFibGVzSnNvbjogYW55LCBzY29wZTogYW55KSB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlSW5zdGFuY2VzID0ge1xuICAgICAgICAgICAgVmFyaWFibGVzOiB7fSxcbiAgICAgICAgICAgIEFjdGlvbnM6IHt9LFxuICAgICAgICAgICAgY2FsbGJhY2s6IHRoaXMudHJpZ2dlclN0YXJ0VXBkYXRlXG4gICAgICAgIH07XG4gICAgICAgIGxldCB2YXJJbnN0YW5jZTtcblxuICAgICAgICBmb3IgKGNvbnN0IHZhcmlhYmxlTmFtZSBpbiB2YXJpYWJsZXNKc29uKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXM6IGFueSA9IHt9O1xuICAgICAgICAgICAgdmFySW5zdGFuY2UgPSBWYXJpYWJsZUZhY3RvcnkuY3JlYXRlKHZhcmlhYmxlc0pzb25bdmFyaWFibGVOYW1lXSwgc2NvcGUpO1xuICAgICAgICAgICAgdmFySW5zdGFuY2UuaW5pdCgpO1xuICAgICAgICAgICBpZiAodGhpcy5pc1ZhcmlhYmxlU2VwZXJhdGVkKHZhcmlhYmxlc0pzb24sIHZhcmlhYmxlTmFtZSkpIHtcbiAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0JpbmRpbmcodmFySW5zdGFuY2UsIHNjb3BlLCAnZGF0YUJpbmRpbmcnLCB0aGlzLmdldEJpbmRTb3VyY2VUYXJnZXQodmFySW5zdGFuY2UpKTtcbiAgICAgICAgICAgICAgIHZhckluc3RhbmNlLmh0dHBTZXJ2aWNlID0gdGhpcy5odHRwU2VydmljZTtcbiAgICAgICAgICAgICAgIHZhckluc3RhbmNlLmRhdGVGb3JtYXR0ZXIgPSBuZXcgRm9ybWF0dGVyKCk7XG4gICAgICAgICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IFN0b3JlIHN1YnNjcmlwdGlvbiB1bnN1YnNjcmliZSBmdW5jdGlvbiAoY2xlYW51cCBoYW5kbGVkIGJ5IHJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKVxuICAgICAgICAgICAgICAgY29uc3QgYWZ0ZXJJbnZva2VVbnN1YnNjcmliZSA9IHZhckluc3RhbmNlLnN1YnNjcmliZSgnYWZ0ZXJJbnZva2UnLCAoKSA9PiAkaW52b2tlV2F0Y2hlcnModHJ1ZSkpO1xuICAgICAgICAgICAgICAgLy8gU3RvcmUgb24gdmFyaWFibGUgZm9yIHBvdGVudGlhbCBtYW51YWwgY2xlYW51cCBpZiBuZWVkZWRcbiAgICAgICAgICAgICAgIGlmICghdmFySW5zdGFuY2UuX2V2ZW50U3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgICAgICAgIHZhckluc3RhbmNlLl9ldmVudFN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIHZhckluc3RhbmNlLl9ldmVudFN1YnNjcmlwdGlvbnMucHVzaChhZnRlckludm9rZVVuc3Vic2NyaWJlKTtcbiAgICAgICAgICAgICAgIGlmICh2YXJJbnN0YW5jZS5jYXRlZ29yeSA9PT0gJ3dtLkxpdmVWYXJpYWJsZScgJiYgdmFySW5zdGFuY2Uub3BlcmF0aW9uID09PSAncmVhZCcpIHtcbiAgICAgICAgICAgICAgICAgICBwcm9jZXNzRmlsdGVyRXhwQmluZE5vZGUodmFySW5zdGFuY2UuX2NvbnRleHQsIHZhckluc3RhbmNlLmZpbHRlckV4cHJlc3Npb25zLCB2YXJJbnN0YW5jZSk7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBpZiAodmFySW5zdGFuY2UuY2F0ZWdvcnkgPT09ICd3bS5DcnVkVmFyaWFibGUnIHx8IHZhckluc3RhbmNlLmNhdGVnb3J5ID09PSAnd20uU2VydmljZVZhcmlhYmxlJykge1xuICAgICAgICAgICAgICAgICAgIHZhckluc3RhbmNlLnNpbXVsYXRlRmlsZURvd25sb2FkID0gc2ltdWxhdGVGaWxlRG93bmxvYWQ7XG4gICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgfVxuXG4gICAgICAgICAgIGlmICh0aGlzLmlzVmFyaWFibGVTZXBlcmF0ZWQodmFyaWFibGVzSnNvbiwgdmFyaWFibGVOYW1lKSB8fCB2YXJpYWJsZXNKc29uW3ZhcmlhYmxlTmFtZV0uY2F0ZWdvcnkgPT09ICd3bS5UaW1lckFjdGlvbicpIHtcbiAgICAgICAgICAgICAgIGZvciAoY29uc3QgZSBpbiBWQVJJQUJMRV9DT05TVEFOVFMuRVZFTlQpIHtcbiAgICAgICAgICAgICAgICAgICBpZiAodmFySW5zdGFuY2VbVkFSSUFCTEVfQ09OU1RBTlRTLkVWRU5UW2VdXSkge1xuICAgICAgICAgICAgICAgICAgICAgICB2YXJJbnN0YW5jZVtWQVJJQUJMRV9DT05TVEFOVFMuRVZFTlRbZV1dID0gJHBhcnNlRXZlbnQodmFySW5zdGFuY2VbVkFSSUFCTEVfQ09OU1RBTlRTLkVWRU5UW2VdXSk7XG4gICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgLy8gaWYgYWN0aW9uIHR5cGUsIHB1dCBpdCBpbiBBY3Rpb25zIG5hbWVzcGFjZVxuICAgICAgICAgICAgaWYgKHZhckluc3RhbmNlIGluc3RhbmNlb2YgQmFzZUFjdGlvbikge1xuICAgICAgICAgICAgICAgIHZhcmlhYmxlSW5zdGFuY2VzLkFjdGlvbnNbdmFyaWFibGVOYW1lXSA9IHZhckluc3RhbmNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZUluc3RhbmNlcy5WYXJpYWJsZXNbdmFyaWFibGVOYW1lXSA9IHZhckluc3RhbmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWYgdGhlIGNvbnRleHQgaGFzIG9uRGVzdHJveSBsaXN0ZW5lciwgc3Vic2NyaWJlIHRoZSBldmVudCBhbmQgdHJpZ2dlciBjYW5jZWwgb24gYWxsIHZhcmliYWxlc1xuICAgICAgICBpZiAoc2NvcGUucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHNjb3BlLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1bGtDYW5jZWwodmFyaWFibGVJbnN0YW5jZXMuVmFyaWFibGVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1bGtDYW5jZWwodmFyaWFibGVJbnN0YW5jZXMuQWN0aW9ucyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YXJpYWJsZUluc3RhbmNlcztcbiAgICB9XG5cbiAgICBkZXN0cm95KCkge1xuICAgIH1cblxuICAgIHJlZ2lzdGVyRGVwZW5kZW5jeShuYW1lLCByZWYpIHtcbiAgICAgICAgc2V0RGVwZW5kZW5jeShuYW1lLCByZWYpO1xuICAgICAgICB3bVNldERlcGVuZGVuY3kobmFtZSwgcmVmKTtcbiAgICB9XG59XG4iXX0=
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy92YXJpYWJsZXMvc3JjL3NlcnZpY2UvdmFyaWFibGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUNILE1BQU0sRUFDTixXQUFXLEVBQ1gscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQUUsd0JBQXdCLEVBQUUsZUFBZSxFQUNwRSxNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQWlCLE1BQU0sc0JBQXNCLENBQUM7QUFDckosT0FBTyxFQUFFLFVBQVUsRUFBRSxtQ0FBbUMsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBQyxNQUFNLFdBQVcsQ0FBQzs7Ozs7OztBQUVoRSxNQUFNLE9BQU8sU0FBUztJQUNsQixNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU07UUFDaEIsT0FBUSxVQUFV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QztZQUM5QyxJQUFJLFdBQVcsWUFBWSxVQUFVLEVBQUUsQ0FBQztnQkFDcEMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUMxRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osaUJBQWlCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUM1RCxDQUFDO1FBQ0wsQ0FBQztRQUVELGlHQUFpRztRQUNqRyxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ2hDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBRUQsT0FBTyxpQkFBaUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsT0FBTztJQUNQLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsR0FBRztRQUN4QixhQUFhLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQzsrR0F6TVEsZ0JBQWdCO21IQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1xuICAgICR3YXRjaCxcbiAgICAkcGFyc2VFdmVudCxcbiAgICBBYnN0cmFjdERpYWxvZ1NlcnZpY2UsXG4gICAgQWJzdHJhY3RIdHRwU2VydmljZSxcbiAgICBBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIEFic3RyYWN0VG9hc3RlclNlcnZpY2UsIHByb2Nlc3NGaWx0ZXJFeHBCaW5kTm9kZSwgJGludm9rZVdhdGNoZXJzLCBnZXRDbG9uZWRPYmplY3Rcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnQHdtL29BdXRoJztcbmltcG9ydCB7IFNlY3VyaXR5U2VydmljZSB9IGZyb20gJ0B3bS9zZWN1cml0eSc7XG5cbmltcG9ydCB7IFZhcmlhYmxlRmFjdG9yeSB9IGZyb20gJy4uL2ZhY3RvcnkvdmFyaWFibGUuZmFjdG9yeSc7XG5pbXBvcnQgeyB3bVNldERlcGVuZGVuY3ksIEJhc2VBY3Rpb24sIGdldFRhcmdldCwgc2V0VmFsdWVUb05vZGUsIGdldFRhcmdldE5vZGVLZXksIGludGVybmFsQm91bmROb2RlTWFwLCBEYXRlRm9ybWF0dGVyIH0gZnJvbSAnQHdhdmVtYWtlci92YXJpYWJsZXMnO1xuaW1wb3J0IHsgYXBwTWFuYWdlciwgYXBwbHlNdWx0aUluZGV4Rm9yRHVwbGljYXRlQmluZGluZ3MsIHNldERlcGVuZGVuY3ksIHNpbXVsYXRlRmlsZURvd25sb2FkIH0gZnJvbSAnLi4vdXRpbC92YXJpYWJsZS92YXJpYWJsZXMudXRpbHMnO1xuaW1wb3J0IHsgTWV0YWRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9tZXRhZGF0YS1zZXJ2aWNlL21ldGFkYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgVkFSSUFCTEVfQ09OU1RBTlRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL3ZhcmlhYmxlcy5jb25zdGFudHMnO1xuaW1wb3J0IHtpc0FycmF5LCBpc0Z1bmN0aW9uLCBpc1VuZGVmaW5lZCwgc2V0fSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmV4cG9ydCBjbGFzcyBGb3JtYXR0ZXIgaW1wbGVtZW50cyBEYXRlRm9ybWF0dGVyIHtcbiAgICBmb3JtYXQodmFsdWUsIGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gIGFwcE1hbmFnZXIuZ2V0UGlwZSgnZGF0ZScpLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0KTtcbiAgICB9XG59XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFZhcmlhYmxlc1NlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaHR0cFNlcnZpY2U6IEFic3RyYWN0SHR0cFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbWV0YWRhdGFTZXJ2aWNlOiBNZXRhZGF0YVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGVyU2VydmljZTogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHRvYXN0ZXJTZXJ2aWNlOiBBYnN0cmFjdFRvYXN0ZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG9BdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNlY3VyaXR5U2VydmljZTogU2VjdXJpdHlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IEFic3RyYWN0RGlhbG9nU2VydmljZVxuICAgICkge1xuICAgICAgICAvLyBzZXQgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLCB0byBiZSB1c2VkIGFjcm9zcyB2YXJpYWJsZSBjbGFzc2VzLCBtYW5hZ2VycyBhbmQgdXRpbHNcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgnaHR0cCcsIHRoaXMuaHR0cFNlcnZpY2UpO1xuICAgICAgICBzZXREZXBlbmRlbmN5KCdtZXRhZGF0YScsIHRoaXMubWV0YWRhdGFTZXJ2aWNlKTtcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgnbmF2aWdhdGlvblNlcnZpY2UnLCB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgncm91dGVyJywgdGhpcy5yb3V0ZXJTZXJ2aWNlKTtcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgndG9hc3RlcicsIHRoaXMudG9hc3RlclNlcnZpY2UpO1xuICAgICAgICBzZXREZXBlbmRlbmN5KCdvQXV0aCcsIHRoaXMub0F1dGhTZXJ2aWNlKTtcbiAgICAgICAgc2V0RGVwZW5kZW5jeSgnc2VjdXJpdHknLCB0aGlzLnNlY3VyaXR5U2VydmljZSk7XG4gICAgICAgIHNldERlcGVuZGVuY3koJ2RpYWxvZycsIHRoaXMuZGlhbG9nU2VydmljZSk7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeSgnb0F1dGgnLCB0aGlzLm9BdXRoU2VydmljZSk7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeSgnc2VjdXJpdHknLCB0aGlzLnNlY3VyaXR5U2VydmljZSk7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeSgnbWV0YWRhdGEnLCB0aGlzLm1ldGFkYXRhU2VydmljZSk7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeSgnaHR0cCcsIHRoaXMuaHR0cFNlcnZpY2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxvb3AgdGhyb3VnaCBhIGNvbGxlY3Rpb24gb2YgdmFyaWFibGVzL2FjdGlvbnNcbiAgICAgKiB0cmlnZ2VyIGNhbmNlbCBvbiBlYWNoIChvZiBleGlzdHMpXG4gICAgICogQHBhcmFtIGNvbGxlY3Rpb25cbiAgICAgKi9cbiAgICBidWxrQ2FuY2VsKGNvbGxlY3Rpb24pIHtcbiAgICAgICAgT2JqZWN0LmtleXMoY29sbGVjdGlvbikuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlID0gY29sbGVjdGlvbltuYW1lXTtcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHZhcmlhYmxlLmNhbmNlbCkpIHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZS5jYW5jZWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbG9vcHMgb3ZlciB0aGUgdmFyaWFibGUvYWN0aW9ucyBjb2xsZWN0aW9uIGFuZCB0cmlnZ2VyIGludm9rZSBvbiBpdCBpZiBzdGFydFVwZGF0ZSBvbiBpdCBpcyB0cnVlXG4gICAgICogQHBhcmFtIGNvbGxlY3Rpb25cbiAgICAgKi9cbiAgICB0cmlnZ2VyU3RhcnRVcGRhdGUoY29sbGVjdGlvbikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhjb2xsZWN0aW9uKVxuICAgICAgICAgICAgICAgIC5tYXAobmFtZSA9PiBjb2xsZWN0aW9uW25hbWVdKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoIHZhcmlhYmxlID0+IHZhcmlhYmxlPy5zdGFydFVwZGF0ZSAmJiB2YXJpYWJsZS5pbnZva2UpXG4gICAgICAgICAgICAgICAgLm1hcCh2YXJpYWJsZSA9PiB2YXJpYWJsZS5pbnZva2UoKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvY2Vzc0JpbmRFeHAoZDogYW55LCBzY29wZTogYW55LCB2YXJpYWJsZSkge1xuICAgICAgICBjb25zdCByb290ID0gZ2V0VGFyZ2V0KHZhcmlhYmxlKSxcbiAgICAgICAgICAgIHRhcmdldE5vZGVLZXkgPSBnZXRUYXJnZXROb2RlS2V5KGQudGFyZ2V0KSxcbiAgICAgICAgICAgIHJ1bk1vZGUgPSB0cnVlO1xuICAgICAgICBsZXQgdiA9IGlzQXJyYXkoZC52YWx1ZSkgPyBkLnZhbHVlWzBdIDogZC52YWx1ZTtcbiAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgIGlmICh2LnN0YXJ0c1dpdGggJiYgdi5zdGFydHNXaXRoKCdiaW5kOicpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2F0Y2hFeHByZXNzaW9uID0gJHdhdGNoKHYucmVwbGFjZSgnYmluZDonLCAnJyksIHNjb3BlLCB7fSwgdmFyaWFibGUuaW52b2tlT25QYXJhbUNoYW5nZS5iaW5kKHZhcmlhYmxlLCBkKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGQsICgpID0+IHZhcmlhYmxlLmlzTXV0ZWQpO1xuICAgICAgICAgICAgICAgIHYgPSBzY29wZS5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lciA/IHNjb3BlLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKHdhdGNoRXhwcmVzc2lvbikgOiB3YXRjaEV4cHJlc3Npb247XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChkLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlVG9Ob2RlKGQudGFyZ2V0LCBkLCByb290LCB2YXJpYWJsZSwgZC52YWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHJ1bk1vZGUgJiYgcm9vdCAhPT0gdGFyZ2V0Tm9kZUtleSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWludGVybmFsQm91bmROb2RlTWFwLmhhcyh2YXJpYWJsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsQm91bmROb2RlTWFwLnNldCh2YXJpYWJsZSwge30pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNldChpbnRlcm5hbEJvdW5kTm9kZU1hcC5nZXQodmFyaWFibGUpLCBbdmFyaWFibGUubmFtZSwgcm9vdCwgZC50YXJnZXRdLCBkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IGQudGFyZ2V0LFxuICAgICAgICAgICAgdmFsdWU6IHZcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcHJvY2Vzc1NwaW5uZXJNZXNzYWdlQmluZGluZyh2YXJpYWJsZTogYW55LCBzY29wZTogYW55KSB7XG4gICAgICAgIGlmICghdmFyaWFibGUuc3Bpbm5lck1lc3NhZ2U/LnN0YXJ0c1dpdGg/LignYmluZDonKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4cHIgPSB2YXJpYWJsZS5zcGlubmVyTWVzc2FnZS5yZXBsYWNlKCdiaW5kOicsICcnKTtcbiAgICAgICAgdmFyaWFibGUuc3Bpbm5lck1lc3NhZ2UgPSAnJztcbiAgICAgICAgY29uc3Qgd2F0Y2hFeHByZXNzaW9uID0gJHdhdGNoKGV4cHIsIHNjb3BlLCB7fSwgbnYgPT4gdmFyaWFibGUuc3Bpbm5lck1lc3NhZ2UgPSBudiA/PyAnJyk7XG4gICAgICAgIHNjb3BlLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyPy4od2F0Y2hFeHByZXNzaW9uKTtcbiAgICB9XG5cbiAgICBwcm9jZXNzQmluZGluZyh2YXJpYWJsZTogYW55LCBjb250ZXh0OiBhbnksIGJpbmRTb3VyY2U/OiBzdHJpbmcsIGJpbmRUYXJnZXQ/OiBzdHJpbmcpIHtcbiAgICAgICAgYmluZFNvdXJjZSA9IGJpbmRTb3VyY2UgfHwgJ2RhdGFCaW5kaW5nJztcbiAgICAgICAgYmluZFRhcmdldCA9IGJpbmRUYXJnZXQgfHwgJ2RhdGFCaW5kaW5nJztcblxuICAgICAgICBjb25zdCBiaW5kTWFwID0gdmFyaWFibGVbYmluZFNvdXJjZV07XG4gICAgICAgIHZhcmlhYmxlW2JpbmRTb3VyY2VdID0ge307XG4gICAgICAgIHZhcmlhYmxlWydfYmluZCcgKyBiaW5kU291cmNlXSA9IGJpbmRNYXA7XG4gICAgICAgIGlmICghYmluZE1hcCB8fCAhaXNBcnJheShiaW5kTWFwKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YXJpYWJsZS5jYXRlZ29yeSA9PT0gVkFSSUFCTEVfQ09OU1RBTlRTLkNBVEVHT1JZLlNFUlZJQ0UpIHtcbiAgICAgICAgICAgIGFwcGx5TXVsdGlJbmRleEZvckR1cGxpY2F0ZUJpbmRpbmdzKGJpbmRNYXApO1xuICAgICAgICB9XG4gICAgICAgIGJpbmRNYXAuZm9yRWFjaCggKG5vZGUpID0+IHtcbiAgICAgICAgICAgIC8qIGZvciBzdGF0aWMgdmFyaWFibGUgY2hhbmdlIHRoZSBiaW5kaW5nIHdpdGggdGFyZ2V0ICdkYXRhQmluZGluZycgdG8gJ2RhdGFTZXQnLCBhcyB0aGUgcmVzdWx0cyBoYXZlIHRvIHJlZmxlY3QgZGlyZWN0bHkgaW4gdGhlIGRhdGFTZXQgKi9cbiAgICAgICAgICAgIGlmICh2YXJpYWJsZS5jYXRlZ29yeSA9PT0gJ3dtLlZhcmlhYmxlJyAmJiBub2RlLnRhcmdldCA9PT0gJ2RhdGFCaW5kaW5nJykge1xuICAgICAgICAgICAgICAgIG5vZGUudGFyZ2V0ID0gJ2RhdGFTZXQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzQmluZEV4cChub2RlLCBjb250ZXh0LCB2YXJpYWJsZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlzVmFyaWFibGVTZXBlcmF0ZWQodmFyaWFibGVzSnNvbiwgdmFyaWFibGVOYW1lKSB7XG4gICAgICAgIHJldHVybiB2YXJpYWJsZXNKc29uW3ZhcmlhYmxlTmFtZV0uY2F0ZWdvcnkgPT09ICd3bS5WYXJpYWJsZScgfHwgdmFyaWFibGVzSnNvblt2YXJpYWJsZU5hbWVdLmNhdGVnb3J5ID09PSAnd20uU2VydmljZVZhcmlhYmxlJyB8fFxuICAgICAgICAgICAgdmFyaWFibGVzSnNvblt2YXJpYWJsZU5hbWVdLmNhdGVnb3J5ID09PSAnd20uTGl2ZVZhcmlhYmxlJyB8fCB2YXJpYWJsZXNKc29uW3ZhcmlhYmxlTmFtZV0uY2F0ZWdvcnkgPT09ICd3bS5DcnVkVmFyaWFibGUnXG4gICAgfVxuXG4gICAgZ2V0QmluZFNvdXJjZVRhcmdldCh2YXJpYWJsZSkge1xuICAgICAgICBpZiAodmFyaWFibGUuY2F0ZWdvcnkgPT09ICd3bS5MaXZlVmFyaWFibGUnKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFyaWFibGUub3BlcmF0aW9uID09PSAncmVhZCcgPyAnZmlsdGVyRmllbGRzJyA6ICdpbnB1dEZpZWxkcyc7XG4gICAgICAgIH0gZWxzZSBpZiAodmFyaWFibGUuY2F0ZWdvcnkgPT09ICd3bS5Nb2RlbFZhcmlhYmxlJykge1xuICAgICAgICAgICAgcmV0dXJuICdkYXRhU2V0JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnZGF0YUJpbmRpbmcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFrZXMgdGhlIHJhdyB2YXJpYWJsZXMgYW5kIGFjdGlvbnMganNvbiBhcyBpbnB1dFxuICAgICAqIEluaXRpYWxpemUgdGhlIHZhcmlhYmxlIGFuZCBhY3Rpb24gaW5zdGFuY2VzIHRocm91Z2ggdGhlIGZhY3RvcnlcbiAgICAgKiBjb2xsZWN0IHRoZSB2YXJpYWJsZXMgYW5kIGFjdGlvbnMgaW4gc2VwYXJhdGUgbWFwcyBhbmQgcmV0dXJuIHRoZSBjb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhZ2VcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVzSnNvblxuICAgICAqIEBwYXJhbSBzY29wZVxuICAgICAqIEByZXR1cm5zIHtWYXJpYWJsZXMgLCBBY3Rpb25zfVxuICAgICAqL1xuICAgIHJlZ2lzdGVyKHBhZ2U6IHN0cmluZywgdmFyaWFibGVzSnNvbjogYW55LCBzY29wZTogYW55KSB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlSW5zdGFuY2VzID0ge1xuICAgICAgICAgICAgVmFyaWFibGVzOiB7fSxcbiAgICAgICAgICAgIEFjdGlvbnM6IHt9LFxuICAgICAgICAgICAgY2FsbGJhY2s6IHRoaXMudHJpZ2dlclN0YXJ0VXBkYXRlXG4gICAgICAgIH07XG4gICAgICAgIGxldCB2YXJJbnN0YW5jZTtcblxuICAgICAgICBmb3IgKGNvbnN0IHZhcmlhYmxlTmFtZSBpbiB2YXJpYWJsZXNKc29uKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXM6IGFueSA9IHt9O1xuICAgICAgICAgICAgdmFySW5zdGFuY2UgPSBWYXJpYWJsZUZhY3RvcnkuY3JlYXRlKHZhcmlhYmxlc0pzb25bdmFyaWFibGVOYW1lXSwgc2NvcGUpO1xuICAgICAgICAgICAgdmFySW5zdGFuY2UuaW5pdCgpO1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzU3Bpbm5lck1lc3NhZ2VCaW5kaW5nKHZhckluc3RhbmNlLCBzY29wZSk7XG4gICAgICAgICAgIGlmICh0aGlzLmlzVmFyaWFibGVTZXBlcmF0ZWQodmFyaWFibGVzSnNvbiwgdmFyaWFibGVOYW1lKSkge1xuICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzQmluZGluZyh2YXJJbnN0YW5jZSwgc2NvcGUsICdkYXRhQmluZGluZycsIHRoaXMuZ2V0QmluZFNvdXJjZVRhcmdldCh2YXJJbnN0YW5jZSkpO1xuICAgICAgICAgICAgICAgdmFySW5zdGFuY2UuaHR0cFNlcnZpY2UgPSB0aGlzLmh0dHBTZXJ2aWNlO1xuICAgICAgICAgICAgICAgdmFySW5zdGFuY2UuZGF0ZUZvcm1hdHRlciA9IG5ldyBGb3JtYXR0ZXIoKTtcbiAgICAgICAgICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogU3RvcmUgc3Vic2NyaXB0aW9uIHVuc3Vic2NyaWJlIGZ1bmN0aW9uIChjbGVhbnVwIGhhbmRsZWQgYnkgcmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIpXG4gICAgICAgICAgICAgICBjb25zdCBhZnRlckludm9rZVVuc3Vic2NyaWJlID0gdmFySW5zdGFuY2Uuc3Vic2NyaWJlKCdhZnRlckludm9rZScsICgpID0+ICRpbnZva2VXYXRjaGVycyh0cnVlKSk7XG4gICAgICAgICAgICAgICAvLyBTdG9yZSBvbiB2YXJpYWJsZSBmb3IgcG90ZW50aWFsIG1hbnVhbCBjbGVhbnVwIGlmIG5lZWRlZFxuICAgICAgICAgICAgICAgaWYgKCF2YXJJbnN0YW5jZS5fZXZlbnRTdWJzY3JpcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgdmFySW5zdGFuY2UuX2V2ZW50U3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgdmFySW5zdGFuY2UuX2V2ZW50U3Vic2NyaXB0aW9ucy5wdXNoKGFmdGVySW52b2tlVW5zdWJzY3JpYmUpO1xuICAgICAgICAgICAgICAgaWYgKHZhckluc3RhbmNlLmNhdGVnb3J5ID09PSAnd20uTGl2ZVZhcmlhYmxlJyAmJiB2YXJJbnN0YW5jZS5vcGVyYXRpb24gPT09ICdyZWFkJykge1xuICAgICAgICAgICAgICAgICAgIHByb2Nlc3NGaWx0ZXJFeHBCaW5kTm9kZSh2YXJJbnN0YW5jZS5fY29udGV4dCwgdmFySW5zdGFuY2UuZmlsdGVyRXhwcmVzc2lvbnMsIHZhckluc3RhbmNlKTtcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIGlmICh2YXJJbnN0YW5jZS5jYXRlZ29yeSA9PT0gJ3dtLkNydWRWYXJpYWJsZScgfHwgdmFySW5zdGFuY2UuY2F0ZWdvcnkgPT09ICd3bS5TZXJ2aWNlVmFyaWFibGUnKSB7XG4gICAgICAgICAgICAgICAgICAgdmFySW5zdGFuY2Uuc2ltdWxhdGVGaWxlRG93bmxvYWQgPSBzaW11bGF0ZUZpbGVEb3dubG9hZDtcbiAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICB9XG5cbiAgICAgICAgICAgaWYgKHRoaXMuaXNWYXJpYWJsZVNlcGVyYXRlZCh2YXJpYWJsZXNKc29uLCB2YXJpYWJsZU5hbWUpIHx8IHZhcmlhYmxlc0pzb25bdmFyaWFibGVOYW1lXS5jYXRlZ29yeSA9PT0gJ3dtLlRpbWVyQWN0aW9uJykge1xuICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIGluIFZBUklBQkxFX0NPTlNUQU5UUy5FVkVOVCkge1xuICAgICAgICAgICAgICAgICAgIGlmICh2YXJJbnN0YW5jZVtWQVJJQUJMRV9DT05TVEFOVFMuRVZFTlRbZV1dKSB7XG4gICAgICAgICAgICAgICAgICAgICAgIHZhckluc3RhbmNlW1ZBUklBQkxFX0NPTlNUQU5UUy5FVkVOVFtlXV0gPSAkcGFyc2VFdmVudCh2YXJJbnN0YW5jZVtWQVJJQUJMRV9DT05TVEFOVFMuRVZFTlRbZV1dKTtcbiAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAvLyBpZiBhY3Rpb24gdHlwZSwgcHV0IGl0IGluIEFjdGlvbnMgbmFtZXNwYWNlXG4gICAgICAgICAgICBpZiAodmFySW5zdGFuY2UgaW5zdGFuY2VvZiBCYXNlQWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgdmFyaWFibGVJbnN0YW5jZXMuQWN0aW9uc1t2YXJpYWJsZU5hbWVdID0gdmFySW5zdGFuY2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhcmlhYmxlSW5zdGFuY2VzLlZhcmlhYmxlc1t2YXJpYWJsZU5hbWVdID0gdmFySW5zdGFuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB0aGUgY29udGV4dCBoYXMgb25EZXN0cm95IGxpc3RlbmVyLCBzdWJzY3JpYmUgdGhlIGV2ZW50IGFuZCB0cmlnZ2VyIGNhbmNlbCBvbiBhbGwgdmFyaWJhbGVzXG4gICAgICAgIGlmIChzY29wZS5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcikge1xuICAgICAgICAgICAgc2NvcGUucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYnVsa0NhbmNlbCh2YXJpYWJsZUluc3RhbmNlcy5WYXJpYWJsZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVsa0NhbmNlbCh2YXJpYWJsZUluc3RhbmNlcy5BY3Rpb25zKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlSW5zdGFuY2VzO1xuICAgIH1cblxuICAgIGRlc3Ryb3koKSB7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJEZXBlbmRlbmN5KG5hbWUsIHJlZikge1xuICAgICAgICBzZXREZXBlbmRlbmN5KG5hbWUsIHJlZik7XG4gICAgICAgIHdtU2V0RGVwZW5kZW5jeShuYW1lLCByZWYpO1xuICAgIH1cbn1cbiJdfQ==
|