@wavemaker/app-ng-runtime 11.15.4-rc.250 → 11.15.5-1.256
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/bundles/index.umd.js +4 -13
- package/components/base/esm2022/utils/widget-utils.mjs +5 -4
- package/components/base/esm2022/widgets/common/base/base.component.mjs +1 -11
- package/components/base/fesm2022/index.mjs +4 -13
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/containers/tabs/bundles/index.umd.js +1 -1
- package/components/containers/tabs/esm2022/tabs.animator.mjs +2 -2
- package/components/containers/tabs/fesm2022/index.mjs +1 -1
- package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- package/components/data/form/bundles/index.umd.js +6 -3
- package/components/data/form/esm2022/form.component.mjs +5 -2
- package/components/data/form/esm2022/live-form/live-form.directive.mjs +3 -3
- package/components/data/form/fesm2022/index.mjs +6 -3
- package/components/data/form/fesm2022/index.mjs.map +1 -1
- package/components/data/form/live-form/live-form.directive.d.ts +1 -1
- package/components/data/list/bundles/index.umd.js +6 -0
- package/components/data/list/esm2022/list.component.mjs +7 -1
- package/components/data/list/fesm2022/index.mjs +6 -0
- package/components/data/list/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/bundles/index.umd.js +45 -7
- package/components/data/pagination/esm2022/pagination.component.mjs +46 -8
- package/components/data/pagination/fesm2022/index.mjs +45 -7
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/pagination.component.d.ts +1 -0
- package/components/data/table/bundles/index.umd.js +228 -20
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +6 -1
- package/components/data/table/esm2022/table-cud.directive.mjs +14 -3
- package/components/data/table/esm2022/table-filter.directive.mjs +6 -1
- package/components/data/table/esm2022/table.component.mjs +206 -19
- package/components/data/table/fesm2022/index.mjs +229 -21
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/table.component.d.ts +16 -1
- package/core/bundles/index.umd.js +7 -1
- package/core/esm2022/utils/dom.mjs +4 -2
- package/core/esm2022/utils/utils.mjs +5 -1
- package/core/fesm2022/index.mjs +7 -1
- package/core/fesm2022/index.mjs.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +45 -12
- package/runtime/base/components/app-component/app.component.d.ts +1 -1
- package/runtime/base/esm2022/components/app-component/app.component.mjs +23 -12
- package/runtime/base/esm2022/guards/role.guard.mjs +2 -2
- package/runtime/base/esm2022/services/app.manager.service.mjs +23 -1
- package/runtime/base/fesm2022/index.mjs +45 -12
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/base/services/app.manager.service.d.ts +5 -0
- package/scripts/datatable/datatable.js +282 -44
- package/transpiler/bundles/index.umd.js +3 -0
- package/transpiler/esm2022/build.mjs +4 -1
- package/transpiler/fesm2022/index.mjs +3 -0
- package/transpiler/fesm2022/index.mjs.map +1 -1
|
@@ -66,6 +66,9 @@ export declare class TableComponent extends StylableComponent implements AfterCo
|
|
|
66
66
|
viewlessmessage: any;
|
|
67
67
|
showviewlessbutton: boolean;
|
|
68
68
|
_triggeredByUser: any;
|
|
69
|
+
_isInlineEditSave: any;
|
|
70
|
+
/** Covers async navigator/dataset updates after inline/quickedit save (wm.Variable). */
|
|
71
|
+
private _modelVarEditSoftRefreshActiveUntil;
|
|
69
72
|
isGridEditMode: any;
|
|
70
73
|
loadingdatamsg: any;
|
|
71
74
|
multiselect: any;
|
|
@@ -236,6 +239,10 @@ export declare class TableComponent extends StylableComponent implements AfterCo
|
|
|
236
239
|
viewlessmessage: string;
|
|
237
240
|
loadingdatamsg: string;
|
|
238
241
|
isNextPageData: any;
|
|
242
|
+
enableSort: boolean;
|
|
243
|
+
multiselect: boolean;
|
|
244
|
+
showRadioColumn: boolean;
|
|
245
|
+
enableColumnSelection: boolean;
|
|
239
246
|
multiselecttitle: string;
|
|
240
247
|
multiselectarialabel: string;
|
|
241
248
|
radioselecttitle: string;
|
|
@@ -295,7 +302,10 @@ export declare class TableComponent extends StylableComponent implements AfterCo
|
|
|
295
302
|
registerColNgClassWatcher: (rowData: any, colDef: any, rowIndex: any, colIndex: any, summaryRow: any) => void;
|
|
296
303
|
registerCollapseOrExpandTitleWatch: (expr: any, rowData: any, index: any, titleName: any, element: any) => void;
|
|
297
304
|
clearCustomExpression: () => void;
|
|
305
|
+
updateCustomExpressionContexts: (preparedData: any) => void;
|
|
298
306
|
clearRowDetailExpression: () => void;
|
|
307
|
+
invalidateRowDetailCache: (preparedData: any) => void;
|
|
308
|
+
refreshSelectedItems: () => void;
|
|
299
309
|
generateCustomExpressions: (rowData: any, index: any, summaryRow?: any) => void;
|
|
300
310
|
generateRowExpansionCell: (rowData: any, index: any) => void;
|
|
301
311
|
getRowExpansionAction: (index: any) => any;
|
|
@@ -331,6 +341,10 @@ export declare class TableComponent extends StylableComponent implements AfterCo
|
|
|
331
341
|
applyValidations: (col: any, alwaysNewRow: any) => void;
|
|
332
342
|
removeValidations: (alwaysNewRow: any) => void;
|
|
333
343
|
};
|
|
344
|
+
/** wm.Variable + inline or quickedit (editmode is string from markup; normalize case). */
|
|
345
|
+
private isModelVariableInlineOrQuickEdit;
|
|
346
|
+
/** True while an inline/quickedit row save is updating the grid (incl. delayed navigator emit). */
|
|
347
|
+
private shouldSoftRefreshAfterModelVarRowSave;
|
|
334
348
|
private _gridData;
|
|
335
349
|
private _selectedItemsExist;
|
|
336
350
|
set gridData(newValue: any);
|
|
@@ -381,7 +395,8 @@ export declare class TableComponent extends StylableComponent implements AfterCo
|
|
|
381
395
|
setDefaultPageSize(nv: any): void;
|
|
382
396
|
isPageSizeOptionsChanged(): boolean;
|
|
383
397
|
selectPageSize(pagesize: number): void;
|
|
384
|
-
sanitizeCommaSeparatedIntegers(input:
|
|
398
|
+
sanitizeCommaSeparatedIntegers(input: any): string;
|
|
399
|
+
getNormalizedPageSizeOptionsArray(input: any): number[];
|
|
385
400
|
onDataSourceChange(): void;
|
|
386
401
|
private refreshRowFilterDataFromDataset;
|
|
387
402
|
private clearActionRowVars;
|
|
@@ -1503,7 +1503,9 @@
|
|
|
1503
1503
|
const switchClass = (node, toAdd = '', toRemove = '', sync) => {
|
|
1504
1504
|
// After NG15 upgrade ng-invalid class is added even the field is valid, so we are removing the ng-invalid manually
|
|
1505
1505
|
const isNgUntouchedValid = node.classList.contains('ng-untouched') && node.classList.contains('ng-valid');
|
|
1506
|
-
|
|
1506
|
+
// Detect Angular's initial form state where the field has 'ng-invalid', 'ng-pristine', and 'ng-untouched' before user interaction.
|
|
1507
|
+
const isInitialInvalidState = toAdd.includes('ng-untouched') && toAdd.includes('ng-pristine') && toAdd.includes('ng-invalid');
|
|
1508
|
+
if ((isNgUntouchedValid && toAdd.includes('ng-untouched') && toAdd.includes('ng-invalid')) || isInitialInvalidState) {
|
|
1507
1509
|
toAdd = toAdd.replace('ng-invalid', '');
|
|
1508
1510
|
}
|
|
1509
1511
|
removeClass(node, toRemove, sync);
|
|
@@ -3832,10 +3834,14 @@
|
|
|
3832
3834
|
const getDatasourceFromExpr = (expr, scope) => {
|
|
3833
3835
|
const isBoundToVariable = lodashEs.startsWith(expr, 'Variables.');
|
|
3834
3836
|
const isBoundToWidget = lodashEs.startsWith(expr, 'Widgets.');
|
|
3837
|
+
const isBoundToActivePageVar = lodashEs.startsWith(expr, 'App.activePage.Variables.');
|
|
3835
3838
|
const parts = expr.split('.');
|
|
3836
3839
|
if (isBoundToVariable) {
|
|
3837
3840
|
return lodashEs.get(scope.viewParent.Variables, parts[1]);
|
|
3838
3841
|
}
|
|
3842
|
+
if (isBoundToActivePageVar) {
|
|
3843
|
+
return lodashEs.get(scope.viewParent?.App?.activePage?.Variables, parts[3]);
|
|
3844
|
+
}
|
|
3839
3845
|
if (isBoundToWidget) {
|
|
3840
3846
|
const widgetScope = lodashEs.get(scope.viewParent.Widgets, parts[1]);
|
|
3841
3847
|
const widgetDatasetBoundExpr = widgetScope.$attrs.get('datasetboundexpr');
|
|
@@ -46,7 +46,9 @@ export const addClass = (node, nv, sync) => {
|
|
|
46
46
|
export const switchClass = (node, toAdd = '', toRemove = '', sync) => {
|
|
47
47
|
// After NG15 upgrade ng-invalid class is added even the field is valid, so we are removing the ng-invalid manually
|
|
48
48
|
const isNgUntouchedValid = node.classList.contains('ng-untouched') && node.classList.contains('ng-valid');
|
|
49
|
-
|
|
49
|
+
// Detect Angular's initial form state where the field has 'ng-invalid', 'ng-pristine', and 'ng-untouched' before user interaction.
|
|
50
|
+
const isInitialInvalidState = toAdd.includes('ng-untouched') && toAdd.includes('ng-pristine') && toAdd.includes('ng-invalid');
|
|
51
|
+
if ((isNgUntouchedValid && toAdd.includes('ng-untouched') && toAdd.includes('ng-invalid')) || isInitialInvalidState) {
|
|
50
52
|
toAdd = toAdd.replace('ng-invalid', '');
|
|
51
53
|
}
|
|
52
54
|
removeClass(node, toRemove, sync);
|
|
@@ -118,4 +120,4 @@ export const toDimension = (v) => {
|
|
|
118
120
|
}
|
|
119
121
|
return v;
|
|
120
122
|
};
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvdXRpbHMvZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztBQUMxQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFFckIsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLEVBQUU7SUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUIsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFpQixFQUFFLE1BQW1CLEVBQUUsSUFBYyxFQUFFLEVBQUU7SUFDakYsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBaUIsRUFBRSxHQUFnQixFQUFFLElBQWMsRUFBRSxFQUFFO0lBQ2hGLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxRCxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBaUIsRUFBRSxHQUFnQixFQUFFLElBQWMsRUFBRSxFQUFFO0lBQy9FLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQWlCLEVBQUUsSUFBYyxFQUFFLEVBQUU7SUFDNUQsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2pDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFpQixFQUFFLEVBQVUsRUFBRSxJQUFjLEVBQUUsRUFBRTtJQUN6RSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNkLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDdEIsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQWlCLEVBQUUsRUFBVSxFQUFFLElBQWMsRUFBRSxFQUFFO0lBQ3RFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ2QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUN0QixJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBaUIsRUFBRSxRQUFnQixFQUFFLEVBQUUsV0FBbUIsRUFBRSxFQUFFLElBQWMsRUFBRSxFQUFFO0lBQ3hHLG1IQUFtSDtJQUNuSCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFHLElBQUcsa0JBQWtCLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDdEYsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxXQUFXLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFpQixFQUFFLEdBQVcsRUFBRSxTQUFrQixFQUFFLElBQWMsRUFBRSxFQUFFO0lBQzlGLElBQUksU0FBUyxFQUFFLENBQUM7UUFDWixRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO1NBQU0sQ0FBQztRQUNKLFdBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFpQixFQUFFLE9BQWUsRUFBRSxHQUFxQixFQUFFLElBQWMsRUFBRSxFQUFFO0lBQ2hHLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQzdDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFpQixFQUFFLE1BQVcsRUFBRSxJQUFjLEVBQUUsRUFBRTtJQUM1RSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDOUQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBaUIsRUFBRSxRQUFnQixFQUFFLEdBQVEsRUFBRSxJQUFjLEVBQUUsRUFBRTtJQUN6RixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3hDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFpQixFQUFFLFFBQWdCLEVBQUUsR0FBUSxFQUFFLElBQWMsRUFBRSxFQUFFO0lBQ3JGLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtRQUNkLElBQUksSUFBSSxZQUFZLE9BQU8sRUFBRSxDQUFDO1lBQzFCLDJFQUEyRTtZQUMzRSxJQUFJLFFBQVEsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDMUIsMERBQTBEO2dCQUMxRCxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUMvRSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO3FCQUFNLENBQUM7b0JBQ0osSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDckMsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDLENBQUM7SUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBaUIsRUFBRSxJQUFZLEVBQUUsSUFBYyxFQUFFLEVBQUU7SUFDdkUsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDekMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQWlCLEVBQUUsUUFBZ0IsRUFBRSxJQUFjLEVBQUUsRUFBRTtJQUM5RSxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxRQUFnQixFQUFFLEtBQVUsRUFBRSxJQUFjLEVBQWUsRUFBRTtJQUN2RixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTlDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDUixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNsQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsb0VBQW9FO0FBQ3BFLDZCQUE2QjtBQUM3QixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFrQixFQUFFLEVBQUU7SUFDOUMsYUFBYTtJQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDVixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgJFJBRiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU7XG5jb25zdCAkUkFGUXVldWUgPSBbXTtcblxuY29uc3QgaW52b2tlTGF0ZXIgPSBmbiA9PiB7XG4gICAgaWYgKCEkUkFGUXVldWUubGVuZ3RoKSB7XG4gICAgICAgICRSQUYoKCkgPT4ge1xuICAgICAgICAgICAgJFJBRlF1ZXVlLmZvckVhY2goZiA9PiBmKCkpO1xuICAgICAgICAgICAgJFJBRlF1ZXVlLmxlbmd0aCA9IDA7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAkUkFGUXVldWUucHVzaChmbik7XG59O1xuXG5leHBvcnQgY29uc3QgYXBwZW5kTm9kZSA9IChub2RlOiBIVE1MRWxlbWVudCwgcGFyZW50OiBIVE1MRWxlbWVudCwgc3luYz86IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCB0YXNrID0gKCkgPT4gcGFyZW50LmFwcGVuZENoaWxkKG5vZGUpO1xuICAgIHN5bmMgPyB0YXNrKCkgOiBpbnZva2VMYXRlcih0YXNrKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRCZWZvcmUgPSAobm9kZTogSFRNTEVsZW1lbnQsIHJlZjogSFRNTEVsZW1lbnQsIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgdGFzayA9ICgpID0+IHJlZi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2RlLCByZWYpO1xuICAgIHN5bmMgPyB0YXNrKCkgOiBpbnZva2VMYXRlcih0YXNrKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRBZnRlciA9IChub2RlOiBIVE1MRWxlbWVudCwgcmVmOiBIVE1MRWxlbWVudCwgc3luYz86IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCB0YXNrID0gKCkgPT4gcmVmLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5vZGUsIHJlZi5uZXh0U2libGluZyk7XG4gICAgc3luYyA/IHRhc2soKSA6IGludm9rZUxhdGVyKHRhc2spO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZU5vZGUgPSAobm9kZTogSFRNTEVsZW1lbnQsIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgdGFzayA9ICgpID0+IG5vZGUucmVtb3ZlKCk7XG4gICAgc3luYyA/IHRhc2soKSA6IGludm9rZUxhdGVyKHRhc2spO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUNsYXNzID0gKG5vZGU6IEhUTUxFbGVtZW50LCBvdjogc3RyaW5nLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIG92ID0gb3YgfHwgJyc7XG4gICAgY29uc3QgdGFzayA9IGMgPT4gbm9kZS5jbGFzc0xpc3QucmVtb3ZlKGMpO1xuICAgIG92LnNwbGl0KCcgJykuZm9yRWFjaChjID0+IHtcbiAgICAgICAgaWYgKGMubGVuZ3RoKSB7XG4gICAgICAgICAgICBzeW5jID8gdGFzayhjKSA6IGludm9rZUxhdGVyKCgpID0+IHRhc2soYykpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkQ2xhc3MgPSAobm9kZTogSFRNTEVsZW1lbnQsIG52OiBzdHJpbmcsIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgbnYgPSBudiB8fCAnJztcbiAgICBjb25zdCB0YXNrID0gYyA9PiBub2RlLmNsYXNzTGlzdC5hZGQoYyk7XG4gICAgbnYuc3BsaXQoJyAnKS5mb3JFYWNoKGMgPT4ge1xuICAgICAgICBpZiAoYy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHN5bmMgPyB0YXNrKGMpIDogaW52b2tlTGF0ZXIoKCkgPT4gdGFzayhjKSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzd2l0Y2hDbGFzcyA9IChub2RlOiBIVE1MRWxlbWVudCwgdG9BZGQ6IHN0cmluZyA9ICcnLCB0b1JlbW92ZTogc3RyaW5nID0gJycsIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgLy8gQWZ0ZXIgTkcxNSB1cGdyYWRlIG5nLWludmFsaWQgY2xhc3MgaXMgYWRkZWQgZXZlbiB0aGUgZmllbGQgaXMgdmFsaWQsIHNvIHdlIGFyZSByZW1vdmluZyB0aGUgbmctaW52YWxpZCBtYW51YWxseVxuICAgIGNvbnN0IGlzTmdVbnRvdWNoZWRWYWxpZCA9IG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy11bnRvdWNoZWQnKSAmJiBub2RlLmNsYXNzTGlzdC5jb250YWlucygnbmctdmFsaWQnKTtcbiAgICBpZihpc05nVW50b3VjaGVkVmFsaWQgJiYgdG9BZGQuaW5jbHVkZXMoJ25nLXVudG91Y2hlZCcpICYmIHRvQWRkLmluY2x1ZGVzKCduZy1pbnZhbGlkJykpIHtcbiAgICAgICAgdG9BZGQgPSB0b0FkZC5yZXBsYWNlKCduZy1pbnZhbGlkJywgJycpO1xuICAgIH1cbiAgICByZW1vdmVDbGFzcyhub2RlLCB0b1JlbW92ZSwgc3luYyk7XG4gICAgYWRkQ2xhc3Mobm9kZSwgdG9BZGQsIHN5bmMpO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZ2dsZUNsYXNzID0gKG5vZGU6IEhUTUxFbGVtZW50LCBjbHM6IHN0cmluZywgY29uZGl0aW9uOiBib29sZWFuLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgYWRkQ2xhc3Mobm9kZSwgY2xzLCBzeW5jKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZW1vdmVDbGFzcyhub2RlLCBjbHMsIHN5bmMpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDU1MgPSAobm9kZTogSFRNTEVsZW1lbnQsIGNzc05hbWU6IHN0cmluZywgdmFsPzogc3RyaW5nIHwgbnVtYmVyLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiBub2RlLnN0eWxlW2Nzc05hbWVdID0gdmFsO1xuICAgIHN5bmMgPyB0YXNrKCkgOiBpbnZva2VMYXRlcih0YXNrKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDU1NGcm9tT2JqID0gKG5vZGU6IEhUTUxFbGVtZW50LCBjc3NPYmo6IGFueSwgc3luYz86IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY3NzT2JqIHx8IHt9KTtcbiAgICBrZXlzLmZvckVhY2goa2V5ID0+IHNldENTUyhub2RlLCBrZXksIGNzc09ialtrZXldLCBzeW5jKSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UHJvcGVydHkgPSAobm9kZTogSFRNTEVsZW1lbnQsIHByb3BOYW1lOiBzdHJpbmcsIHZhbDogYW55LCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiBub2RlW3Byb3BOYW1lXSA9IHZhbDtcbiAgICBzeW5jID8gdGFzaygpIDogaW52b2tlTGF0ZXIodGFzayk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0QXR0ciA9IChub2RlOiBIVE1MRWxlbWVudCwgYXR0ck5hbWU6IHN0cmluZywgdmFsOiBhbnksIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgdGFzayA9ICgpID0+IHtcbiAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgdGFiaW5kZXggc3BlY2lmaWNhbGx5IC0gZW5zdXJlIGl0J3MgYSB2YWxpZCBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdG8gc3RyaW5nLCBoYW5kbGluZyAwLCBudWxsLCB1bmRlZmluZWQsIGFuZCBOYU5cbiAgICAgICAgICAgICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkIHx8ICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiBpc05hTih2YWwpKSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIFN0cmluZyh2YWwpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJOYW1lLCB2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBzeW5jID8gdGFzaygpIDogaW52b2tlTGF0ZXIodGFzayk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0SHRtbCA9IChub2RlOiBIVE1MRWxlbWVudCwgaHRtbDogc3RyaW5nLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiBub2RlLmlubmVySFRNTCA9IGh0bWw7XG4gICAgc3luYyA/IHRhc2soKSA6IGludm9rZUxhdGVyKHRhc2spO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUF0dHIgPSAobm9kZTogSFRNTEVsZW1lbnQsIGF0dHJOYW1lOiBzdHJpbmcsIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgdGFzayA9ICgpID0+IG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKTtcbiAgICBzeW5jID8gdGFzaygpIDogaW52b2tlTGF0ZXIodGFzayk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRWxlbWVudCA9IChub2RlVHlwZTogc3RyaW5nLCBhdHRyczogYW55LCBzeW5jPzogYm9vbGVhbik6IEhUTUxFbGVtZW50ID0+IHtcbiAgICBjb25zdCBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChub2RlVHlwZSk7XG5cbiAgICBpZiAoYXR0cnMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoYXR0cnMpLmZvckVhY2goYXR0ck5hbWUgPT4ge1xuICAgICAgICAgICAgc2V0QXR0cihub2RlLCBhdHRyTmFtZSwgYXR0cnNbYXR0ck5hbWVdLCBzeW5jKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xufTtcblxuLy8gZm9yIHdpZHRoIGFuZCBoZWlnaHQgaWYgYSBudW1lcmljIHZhbHVlIGlzIHNwZWNpZmllZCByZXR1cm4gaW4gcHhcbi8vIGVsc2UgcmV0dXJuIHRoZSBzYW1lIHZhbHVlXG5leHBvcnQgY29uc3QgdG9EaW1lbnNpb24gPSAodjogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh2ID09ICt2KSB7XG4gICAgICAgIHJldHVybiBgJHt2fXB4YDtcbiAgICB9XG4gICAgcmV0dXJuIHY7XG59O1xuIl19
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvdXRpbHMvZG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztBQUMxQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFFckIsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLEVBQUU7SUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUIsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFpQixFQUFFLE1BQW1CLEVBQUUsSUFBYyxFQUFFLEVBQUU7SUFDakYsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBaUIsRUFBRSxHQUFnQixFQUFFLElBQWMsRUFBRSxFQUFFO0lBQ2hGLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxRCxJQUFJLENB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QUMsUUFBUSxDQUFDLEVBQUU7WUFDbEMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLG9FQUFvRTtBQUNwRSw2QkFBNkI7QUFDN0IsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBa0IsRUFBRSxFQUFFO0lBQzlDLGFBQWE7SUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1YsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNiLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0ICRSQUYgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lO1xuY29uc3QgJFJBRlF1ZXVlID0gW107XG5cbmNvbnN0IGludm9rZUxhdGVyID0gZm4gPT4ge1xuICAgIGlmICghJFJBRlF1ZXVlLmxlbmd0aCkge1xuICAgICAgICAkUkFGKCgpID0+IHtcbiAgICAgICAgICAgICRSQUZRdWV1ZS5mb3JFYWNoKGYgPT4gZigpKTtcbiAgICAgICAgICAgICRSQUZRdWV1ZS5sZW5ndGggPSAwO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgJFJBRlF1ZXVlLnB1c2goZm4pO1xufTtcblxuZXhwb3J0IGNvbnN0IGFwcGVuZE5vZGUgPSAobm9kZTogSFRNTEVsZW1lbnQsIHBhcmVudDogSFRNTEVsZW1lbnQsIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgdGFzayA9ICgpID0+IHBhcmVudC5hcHBlbmRDaGlsZChub2RlKTtcbiAgICBzeW5jID8gdGFzaygpIDogaW52b2tlTGF0ZXIodGFzayk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0QmVmb3JlID0gKG5vZGU6IEhUTUxFbGVtZW50LCByZWY6IEhUTUxFbGVtZW50LCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiByZWYucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgcmVmKTtcbiAgICBzeW5jID8gdGFzaygpIDogaW52b2tlTGF0ZXIodGFzayk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0QWZ0ZXIgPSAobm9kZTogSFRNTEVsZW1lbnQsIHJlZjogSFRNTEVsZW1lbnQsIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgdGFzayA9ICgpID0+IHJlZi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2RlLCByZWYubmV4dFNpYmxpbmcpO1xuICAgIHN5bmMgPyB0YXNrKCkgOiBpbnZva2VMYXRlcih0YXNrKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVOb2RlID0gKG5vZGU6IEhUTUxFbGVtZW50LCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiBub2RlLnJlbW92ZSgpO1xuICAgIHN5bmMgPyB0YXNrKCkgOiBpbnZva2VMYXRlcih0YXNrKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVDbGFzcyA9IChub2RlOiBIVE1MRWxlbWVudCwgb3Y6IHN0cmluZywgc3luYz86IGJvb2xlYW4pID0+IHtcbiAgICBvdiA9IG92IHx8ICcnO1xuICAgIGNvbnN0IHRhc2sgPSBjID0+IG5vZGUuY2xhc3NMaXN0LnJlbW92ZShjKTtcbiAgICBvdi5zcGxpdCgnICcpLmZvckVhY2goYyA9PiB7XG4gICAgICAgIGlmIChjLmxlbmd0aCkge1xuICAgICAgICAgICAgc3luYyA/IHRhc2soYykgOiBpbnZva2VMYXRlcigoKSA9PiB0YXNrKGMpKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZENsYXNzID0gKG5vZGU6IEhUTUxFbGVtZW50LCBudjogc3RyaW5nLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIG52ID0gbnYgfHwgJyc7XG4gICAgY29uc3QgdGFzayA9IGMgPT4gbm9kZS5jbGFzc0xpc3QuYWRkKGMpO1xuICAgIG52LnNwbGl0KCcgJykuZm9yRWFjaChjID0+IHtcbiAgICAgICAgaWYgKGMubGVuZ3RoKSB7XG4gICAgICAgICAgICBzeW5jID8gdGFzayhjKSA6IGludm9rZUxhdGVyKCgpID0+IHRhc2soYykpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc3dpdGNoQ2xhc3MgPSAobm9kZTogSFRNTEVsZW1lbnQsIHRvQWRkOiBzdHJpbmcgPSAnJywgdG9SZW1vdmU6IHN0cmluZyA9ICcnLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIC8vIEFmdGVyIE5HMTUgdXBncmFkZSBuZy1pbnZhbGlkIGNsYXNzIGlzIGFkZGVkIGV2ZW4gdGhlIGZpZWxkIGlzIHZhbGlkLCBzbyB3ZSBhcmUgcmVtb3ZpbmcgdGhlIG5nLWludmFsaWQgbWFudWFsbHlcbiAgICBjb25zdCBpc05nVW50b3VjaGVkVmFsaWQgPSBub2RlLmNsYXNzTGlzdC5jb250YWlucygnbmctdW50b3VjaGVkJykgJiYgbm9kZS5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXZhbGlkJyk7XG4gICAgLy8gRGV0ZWN0IEFuZ3VsYXIncyBpbml0aWFsIGZvcm0gc3RhdGUgd2hlcmUgdGhlIGZpZWxkIGhhcyAnbmctaW52YWxpZCcsICduZy1wcmlzdGluZScsIGFuZCAnbmctdW50b3VjaGVkJyBiZWZvcmUgdXNlciBpbnRlcmFjdGlvbi5cbiAgICBjb25zdCBpc0luaXRpYWxJbnZhbGlkU3RhdGUgPSB0b0FkZC5pbmNsdWRlcygnbmctdW50b3VjaGVkJykgJiYgdG9BZGQuaW5jbHVkZXMoJ25nLXByaXN0aW5lJykgJiYgdG9BZGQuaW5jbHVkZXMoJ25nLWludmFsaWQnKTtcbiAgICBpZigoaXNOZ1VudG91Y2hlZFZhbGlkICYmIHRvQWRkLmluY2x1ZGVzKCduZy11bnRvdWNoZWQnKSAmJiB0b0FkZC5pbmNsdWRlcygnbmctaW52YWxpZCcpKSB8fCBpc0luaXRpYWxJbnZhbGlkU3RhdGUpIHtcbiAgICAgICAgdG9BZGQgPSB0b0FkZC5yZXBsYWNlKCduZy1pbnZhbGlkJywgJycpO1xuICAgIH1cbiAgICByZW1vdmVDbGFzcyhub2RlLCB0b1JlbW92ZSwgc3luYyk7XG4gICAgYWRkQ2xhc3Mobm9kZSwgdG9BZGQsIHN5bmMpO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZ2dsZUNsYXNzID0gKG5vZGU6IEhUTUxFbGVtZW50LCBjbHM6IHN0cmluZywgY29uZGl0aW9uOiBib29sZWFuLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgYWRkQ2xhc3Mobm9kZSwgY2xzLCBzeW5jKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZW1vdmVDbGFzcyhub2RlLCBjbHMsIHN5bmMpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDU1MgPSAobm9kZTogSFRNTEVsZW1lbnQsIGNzc05hbWU6IHN0cmluZywgdmFsPzogc3RyaW5nIHwgbnVtYmVyLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiBub2RlLnN0eWxlW2Nzc05hbWVdID0gdmFsO1xuICAgIHN5bmMgPyB0YXNrKCkgOiBpbnZva2VMYXRlcih0YXNrKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDU1NGcm9tT2JqID0gKG5vZGU6IEhUTUxFbGVtZW50LCBjc3NPYmo6IGFueSwgc3luYz86IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY3NzT2JqIHx8IHt9KTtcbiAgICBrZXlzLmZvckVhY2goa2V5ID0+IHNldENTUyhub2RlLCBrZXksIGNzc09ialtrZXldLCBzeW5jKSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UHJvcGVydHkgPSAobm9kZTogSFRNTEVsZW1lbnQsIHByb3BOYW1lOiBzdHJpbmcsIHZhbDogYW55LCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiBub2RlW3Byb3BOYW1lXSA9IHZhbDtcbiAgICBzeW5jID8gdGFzaygpIDogaW52b2tlTGF0ZXIodGFzayk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0QXR0ciA9IChub2RlOiBIVE1MRWxlbWVudCwgYXR0ck5hbWU6IHN0cmluZywgdmFsOiBhbnksIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgdGFzayA9ICgpID0+IHtcbiAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgdGFiaW5kZXggc3BlY2lmaWNhbGx5IC0gZW5zdXJlIGl0J3MgYSB2YWxpZCBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdG8gc3RyaW5nLCBoYW5kbGluZyAwLCBudWxsLCB1bmRlZmluZWQsIGFuZCBOYU5cbiAgICAgICAgICAgICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkIHx8ICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiBpc05hTih2YWwpKSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIFN0cmluZyh2YWwpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJOYW1lLCB2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBzeW5jID8gdGFzaygpIDogaW52b2tlTGF0ZXIodGFzayk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0SHRtbCA9IChub2RlOiBIVE1MRWxlbWVudCwgaHRtbDogc3RyaW5nLCBzeW5jPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHRhc2sgPSAoKSA9PiBub2RlLmlubmVySFRNTCA9IGh0bWw7XG4gICAgc3luYyA/IHRhc2soKSA6IGludm9rZUxhdGVyKHRhc2spO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUF0dHIgPSAobm9kZTogSFRNTEVsZW1lbnQsIGF0dHJOYW1lOiBzdHJpbmcsIHN5bmM/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgdGFzayA9ICgpID0+IG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKTtcbiAgICBzeW5jID8gdGFzaygpIDogaW52b2tlTGF0ZXIodGFzayk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRWxlbWVudCA9IChub2RlVHlwZTogc3RyaW5nLCBhdHRyczogYW55LCBzeW5jPzogYm9vbGVhbik6IEhUTUxFbGVtZW50ID0+IHtcbiAgICBjb25zdCBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChub2RlVHlwZSk7XG5cbiAgICBpZiAoYXR0cnMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoYXR0cnMpLmZvckVhY2goYXR0ck5hbWUgPT4ge1xuICAgICAgICAgICAgc2V0QXR0cihub2RlLCBhdHRyTmFtZSwgYXR0cnNbYXR0ck5hbWVdLCBzeW5jKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xufTtcblxuLy8gZm9yIHdpZHRoIGFuZCBoZWlnaHQgaWYgYSBudW1lcmljIHZhbHVlIGlzIHNwZWNpZmllZCByZXR1cm4gaW4gcHhcbi8vIGVsc2UgcmV0dXJuIHRoZSBzYW1lIHZhbHVlXG5leHBvcnQgY29uc3QgdG9EaW1lbnNpb24gPSAodjogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh2ID09ICt2KSB7XG4gICAgICAgIHJldHVybiBgJHt2fXB4YDtcbiAgICB9XG4gICAgcmV0dXJuIHY7XG59O1xuIl19
|