@magic-xpa/gui 4.800.0-dev480.94 → 4.801.0-dev000.0
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/{esm2015/index.js → esm2020/index.mjs} +0 -0
- package/{esm2015/magic-xpa-gui.js → esm2020/magic-xpa-gui.mjs} +0 -0
- package/esm2020/src/Commands.mjs +186 -0
- package/esm2020/src/Events.mjs +420 -0
- package/esm2020/src/EventsProcessor.mjs +67 -0
- package/esm2020/src/FocusManager.mjs +34 -0
- package/{esm2015/src/GuiConstants.js → esm2020/src/GuiConstants.mjs} +0 -0
- package/{esm2015/src/GuiEnums.js → esm2020/src/GuiEnums.mjs} +126 -127
- package/{esm2015/src/GuiEnvironment.js → esm2020/src/GuiEnvironment.mjs} +0 -0
- package/{esm2015/src/IFlowMonitorQueue.js → esm2020/src/IFlowMonitorQueue.mjs} +2 -1
- package/esm2020/src/Manager.mjs +192 -0
- package/{esm2015/src/UIBridge.js → esm2020/src/UIBridge.mjs} +0 -0
- package/{esm2015/src/env/IEnvironment.js → esm2020/src/env/IEnvironment.mjs} +2 -1
- package/{esm2015/src/gui/ControlBase.js → esm2020/src/gui/ControlBase.mjs} +0 -0
- package/{esm2015/src/gui/GuiMgControl.js → esm2020/src/gui/GuiMgControl.mjs} +0 -0
- package/{esm2015/src/gui/GuiMgForm.js → esm2020/src/gui/GuiMgForm.mjs} +0 -0
- package/{esm2015/src/gui/KeyboardItem.js → esm2020/src/gui/KeyboardItem.mjs} +0 -0
- package/{esm2015/src/gui/LastFocusedVal.js → esm2020/src/gui/LastFocusedVal.mjs} +0 -0
- package/{esm2015/src/gui/MgValue.js → esm2020/src/gui/MgValue.mjs} +0 -0
- package/{esm2015/src/gui/PropParentInterface.js → esm2020/src/gui/PropParentInterface.mjs} +1 -0
- package/{esm2015/src/gui/low/DialogHandler.js → esm2020/src/gui/low/DialogHandler.mjs} +0 -0
- package/{esm2015/src/gui/low/GuiCommand.js → esm2020/src/gui/low/GuiCommand.mjs} +0 -0
- package/{esm2015/src/gui/low/GuiCommandQueue.js → esm2020/src/gui/low/GuiCommandQueue.mjs} +0 -0
- package/esm2020/src/gui/low/GuiInteractive.mjs +545 -0
- package/esm2020/src/gui/low/Style.mjs +47 -0
- package/esm2020/src/management/RuntimeContextBase.mjs +52 -0
- package/{esm2015/src/management/data/BlobType.js → esm2020/src/management/data/BlobType.mjs} +0 -0
- package/esm2020/src/management/data/DcValues.mjs +214 -0
- package/esm2020/src/management/data/DcValuesBuilderBase.mjs +97 -0
- package/{esm2015/src/management/data/FieldDef.js → esm2020/src/management/data/FieldDef.mjs} +0 -0
- package/{esm2015/src/management/data/FieldsTable.js → esm2020/src/management/data/FieldsTable.mjs} +0 -0
- package/esm2020/src/management/data/GuiDataViewBase.mjs +90 -0
- package/esm2020/src/management/data/GuiFieldBase.mjs +82 -0
- package/{esm2015/src/management/data/IRecord.js → esm2020/src/management/data/IRecord.mjs} +1 -0
- package/{esm2015/src/management/data/IReferencedObject.js → esm2020/src/management/data/IReferencedObject.mjs} +1 -0
- package/{esm2015/src/management/data/NUM_TYPE.js → esm2020/src/management/data/NUM_TYPE.mjs} +0 -0
- package/esm2020/src/management/data/ObjectReferenceBase.mjs +48 -0
- package/{esm2015/src/management/data/ObjectReferencesCollection.js → esm2020/src/management/data/ObjectReferencesCollection.mjs} +0 -0
- package/esm2020/src/management/data/RecordUtils.mjs +361 -0
- package/{esm2015/src/management/data/VectorType.js → esm2020/src/management/data/VectorType.mjs} +0 -0
- package/{esm2015/src/management/data/VectorTypeBase.js → esm2020/src/management/data/VectorTypeBase.mjs} +0 -0
- package/{esm2015/src/management/events/IActionManager.js → esm2020/src/management/events/IActionManager.mjs} +1 -0
- package/esm2020/src/management/events/IGuiEventsManager.mjs +2 -0
- package/{esm2015/src/management/exp/ExpressionInterface.js → esm2020/src/management/exp/ExpressionInterface.mjs} +2 -1
- package/esm2020/src/management/exp/GuiExpressionEvaluator.mjs +333 -0
- package/{esm2015/src/management/gui/ControlTable.js → esm2020/src/management/gui/ControlTable.mjs} +0 -0
- package/esm2020/src/management/gui/DisplayConvertor.mjs +1706 -0
- package/esm2020/src/management/gui/FieldValidator.mjs +1507 -0
- package/esm2020/src/management/gui/GuiControlPropertyAdapter.mjs +22 -0
- package/{esm2015/src/management/gui/GuiFormPropertyAdapter.js → esm2020/src/management/gui/GuiFormPropertyAdapter.mjs} +0 -0
- package/{esm2015/src/management/gui/HebrewDate.js → esm2020/src/management/gui/HebrewDate.mjs} +0 -0
- package/{esm2015/src/management/gui/Helps.js → esm2020/src/management/gui/Helps.mjs} +0 -0
- package/esm2020/src/management/gui/MgControlBase.mjs +1873 -0
- package/esm2020/src/management/gui/MgFormBase.mjs +748 -0
- package/esm2020/src/management/gui/PIC.mjs +1178 -0
- package/esm2020/src/management/gui/PropDefaults.mjs +230 -0
- package/{esm2015/src/management/gui/PropInterface.js → esm2020/src/management/gui/PropInterface.mjs} +2 -4
- package/esm2020/src/management/gui/PropTable.mjs +221 -0
- package/esm2020/src/management/gui/Property.mjs +1382 -0
- package/{esm2015/src/management/gui/ValidationDetails.js → esm2020/src/management/gui/ValidationDetails.mjs} +0 -0
- package/{esm2015/src/management/gui/ValidationDetailsBase.js → esm2020/src/management/gui/ValidationDetailsBase.mjs} +0 -0
- package/{esm2015/src/management/gui/WrongFormatException.js → esm2020/src/management/gui/WrongFormatException.mjs} +0 -0
- package/{esm2015/src/management/tasks/GuiDataCollection.js → esm2020/src/management/tasks/GuiDataCollection.mjs} +0 -0
- package/esm2020/src/management/tasks/GuiTaskBase.mjs +502 -0
- package/{esm2015/src/management/tasks/IMGDataTable.js → esm2020/src/management/tasks/IMGDataTable.mjs} +1 -0
- package/{esm2015/src/management/tasks/ITask.js → esm2020/src/management/tasks/ITask.mjs} +1 -0
- package/esm2020/src/management/tasks/MgTimer.mjs +21 -0
- package/esm2020/src/management/tasks/TaskDefinitionId.mjs +54 -0
- package/esm2020/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +41 -0
- package/{esm2015/src/util/AuthenticationDialogHandler.js → esm2020/src/util/AuthenticationDialogHandler.mjs} +0 -0
- package/{esm2015/src/util/MemoryUtil.js → esm2020/src/util/MemoryUtil.mjs} +0 -0
- package/{esm2015/src/util/ObjectReference.js → esm2020/src/util/ObjectReference.mjs} +0 -0
- package/esm2020/src/util/ProcessLauncher.mjs +32 -0
- package/esm2020/src/util/UsernamePasswordCredentials.mjs +52 -0
- package/fesm2015/{magic-xpa-gui.js → magic-xpa-gui.mjs} +305 -365
- package/fesm2015/magic-xpa-gui.mjs.map +1 -0
- package/fesm2020/magic-xpa-gui.mjs +17805 -0
- package/fesm2020/magic-xpa-gui.mjs.map +1 -0
- package/package.json +27 -14
- package/src/Commands.d.ts +1 -0
- package/src/Events.d.ts +2 -2
- package/src/EventsProcessor.d.ts +1 -1
- package/src/GuiEnums.d.ts +125 -126
- package/src/IFlowMonitorQueue.d.ts +1 -1
- package/src/Manager.d.ts +2 -3
- package/src/env/IEnvironment.d.ts +1 -0
- package/src/gui/low/GuiInteractive.d.ts +3 -1
- package/src/gui/low/Style.d.ts +0 -3
- package/src/management/RuntimeContextBase.d.ts +2 -0
- package/src/management/data/DcValues.d.ts +1 -1
- package/src/management/data/DcValuesBuilderBase.d.ts +1 -1
- package/src/management/data/RecordUtils.d.ts +0 -3
- package/src/management/events/IGuiEventsManager.d.ts +5 -5
- package/src/management/exp/ExpressionInterface.d.ts +1 -0
- package/src/management/exp/GuiExpressionEvaluator.d.ts +2 -2
- package/src/management/gui/DisplayConvertor.d.ts +6 -6
- package/src/management/gui/GuiControlPropertyAdapter.d.ts +6 -6
- package/src/management/gui/MgControlBase.d.ts +4 -5
- package/src/management/gui/MgFormBase.d.ts +1 -1
- package/src/management/gui/PropInterface.d.ts +2 -4
- package/src/management/gui/PropTable.d.ts +1 -1
- package/src/management/gui/Property.d.ts +3 -3
- package/src/management/tasks/GuiTaskBase.d.ts +3 -8
- package/src/management/tasks/TaskDefinitionId.d.ts +1 -0
- package/src/util/ProcessLauncher.d.ts +1 -3
- package/bundles/magic-xpa-gui.umd.js +0 -19459
- package/bundles/magic-xpa-gui.umd.js.map +0 -1
- package/bundles/magic-xpa-gui.umd.min.js +0 -16
- package/bundles/magic-xpa-gui.umd.min.js.map +0 -1
- package/esm2015/src/Commands.js +0 -185
- package/esm2015/src/Events.js +0 -420
- package/esm2015/src/EventsProcessor.js +0 -68
- package/esm2015/src/FocusManager.js +0 -41
- package/esm2015/src/Manager.js +0 -197
- package/esm2015/src/gui/low/GuiInteractive.js +0 -539
- package/esm2015/src/gui/low/Style.js +0 -50
- package/esm2015/src/management/RuntimeContextBase.js +0 -50
- package/esm2015/src/management/data/DcValues.js +0 -214
- package/esm2015/src/management/data/DcValuesBuilderBase.js +0 -97
- package/esm2015/src/management/data/GuiDataViewBase.js +0 -90
- package/esm2015/src/management/data/GuiFieldBase.js +0 -85
- package/esm2015/src/management/data/ObjectReferenceBase.js +0 -48
- package/esm2015/src/management/data/RecordUtils.js +0 -447
- package/esm2015/src/management/events/IGuiEventsManager.js +0 -1
- package/esm2015/src/management/exp/GuiExpressionEvaluator.js +0 -333
- package/esm2015/src/management/gui/DisplayConvertor.js +0 -1706
- package/esm2015/src/management/gui/FieldValidator.js +0 -1507
- package/esm2015/src/management/gui/GuiControlPropertyAdapter.js +0 -4
- package/esm2015/src/management/gui/MgControlBase.js +0 -1979
- package/esm2015/src/management/gui/MgFormBase.js +0 -763
- package/esm2015/src/management/gui/PIC.js +0 -1176
- package/esm2015/src/management/gui/PropDefaults.js +0 -232
- package/esm2015/src/management/gui/PropTable.js +0 -224
- package/esm2015/src/management/gui/Property.js +0 -1409
- package/esm2015/src/management/tasks/GuiTaskBase.js +0 -533
- package/esm2015/src/management/tasks/MgTimer.js +0 -21
- package/esm2015/src/management/tasks/TaskDefinitionId.js +0 -47
- package/esm2015/src/management/tasks/TaskDefinitionIdTableSaxHandler.js +0 -41
- package/esm2015/src/util/ProcessLauncher.js +0 -32
- package/esm2015/src/util/UsernamePasswordCredentials.js +0 -52
- package/fesm2015/magic-xpa-gui.js.map +0 -1
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
import { ApplicationException, NString } from '@magic-xpa/mscorelib';
|
|
2
|
+
import { Rtf, StorageAttribute, StorageAttributeCheck, StrUtil } from '@magic-xpa/utils';
|
|
3
|
+
import { Manager } from '../../Manager';
|
|
4
|
+
import { Commands } from '../../Commands';
|
|
5
|
+
import { NUM_TYPE } from '../data/NUM_TYPE';
|
|
6
|
+
import { BlobType } from '../data/BlobType';
|
|
7
|
+
import { DisplayConvertor } from '../gui/DisplayConvertor';
|
|
8
|
+
export class GuiExpressionEvaluator {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.ExpTask = null;
|
|
11
|
+
this.Events = null;
|
|
12
|
+
}
|
|
13
|
+
eval_op_statusbar_set_text(resVal, statusBarText) {
|
|
14
|
+
resVal.Attr = StorageAttribute.UNICODE;
|
|
15
|
+
resVal.StrVal = Manager.GetCurrentRuntimeContext().DefaultStatusMsg;
|
|
16
|
+
if (Manager.GetCurrentRuntimeContext().DefaultStatusMsg === null) {
|
|
17
|
+
resVal.StrVal = '';
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
resVal.StrVal = Manager.GetCurrentRuntimeContext().DefaultStatusMsg;
|
|
21
|
+
}
|
|
22
|
+
resVal.IsNull = false;
|
|
23
|
+
if (!(statusBarText.Attr !== StorageAttribute.ALPHA && statusBarText.Attr !== StorageAttribute.UNICODE)) {
|
|
24
|
+
if (!statusBarText.IsNull) {
|
|
25
|
+
let text = statusBarText.StrVal;
|
|
26
|
+
let task = this.ExpTask.GetContextTask();
|
|
27
|
+
if (task.getForm() === null && Manager.GetCurrentRuntimeContext().FrameForm !== null) {
|
|
28
|
+
task = Manager.GetCurrentRuntimeContext().FrameForm.getTask();
|
|
29
|
+
}
|
|
30
|
+
task.WriteToMessagePane(text);
|
|
31
|
+
Manager.GetCurrentRuntimeContext().DefaultStatusMsg = text;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
IsParallel() {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
eval_op_browserExecute_DO(resVal, controlName, text, sync, language) {
|
|
39
|
+
resVal.Attr = StorageAttribute.BOOLEAN;
|
|
40
|
+
resVal.BoolVal = false;
|
|
41
|
+
let form = this.ExpTask.getForm();
|
|
42
|
+
let sCtrlName = StrUtil.rtrim(controlName.StrVal);
|
|
43
|
+
let control = this.ExpTask.getForm().GetCtrl(sCtrlName);
|
|
44
|
+
if (control !== null && control.isBrowserControl()) {
|
|
45
|
+
resVal.BoolVal = Commands.browserExecute(control, text.StrVal, sync.BoolVal, language);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
eval_op_ctrl_name(resVal) {
|
|
49
|
+
let lastClickedCtrlName = Manager.GetCurrentRuntimeContext().LastClickedCtrlName;
|
|
50
|
+
resVal.StrVal = (NString.IsNullOrEmpty(lastClickedCtrlName) ? '' : lastClickedCtrlName);
|
|
51
|
+
resVal.Attr = StorageAttribute.ALPHA;
|
|
52
|
+
}
|
|
53
|
+
eval_op_formStateClear(formName, resVal) {
|
|
54
|
+
}
|
|
55
|
+
eval_op_gotoCtrl(ctrlName, rowNum, generation, retVal) {
|
|
56
|
+
retVal.Attr = StorageAttribute.BOOLEAN;
|
|
57
|
+
retVal.BoolVal = false;
|
|
58
|
+
let task = this.GetContextTask(generation.MgNumVal.NUM_2_LONG());
|
|
59
|
+
if (task === null || task.getForm() === null)
|
|
60
|
+
return;
|
|
61
|
+
let iRowNum = rowNum.MgNumVal.NUM_2_LONG();
|
|
62
|
+
let sCtrlName = StrUtil.rtrim(ctrlName.StrVal);
|
|
63
|
+
let ctrl = task.getForm().GetCtrl(sCtrlName);
|
|
64
|
+
retVal.BoolVal = this.HandleControlGoto(task, ctrl, iRowNum);
|
|
65
|
+
}
|
|
66
|
+
static GetContextTask(currTask, generation) {
|
|
67
|
+
let task = null;
|
|
68
|
+
let taskBase = currTask.GetContextTask();
|
|
69
|
+
if (generation === GuiExpressionEvaluator.TRIGGER_TASK) {
|
|
70
|
+
task = taskBase;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
if (generation < taskBase.GetTaskDepth()) {
|
|
74
|
+
task = taskBase.GetTaskAncestor(generation);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return task;
|
|
78
|
+
}
|
|
79
|
+
GetContextTask(generation) {
|
|
80
|
+
return GuiExpressionEvaluator.GetContextTask(this.ExpTask, generation);
|
|
81
|
+
}
|
|
82
|
+
ConstructMagicNum(resVal, i, attr) {
|
|
83
|
+
resVal.MgNumVal = new NUM_TYPE();
|
|
84
|
+
resVal.MgNumVal.NUM_4_LONG(i);
|
|
85
|
+
resVal.Attr = attr;
|
|
86
|
+
}
|
|
87
|
+
SetNULL(resVal, attr) {
|
|
88
|
+
resVal.IsNull = true;
|
|
89
|
+
resVal.Attr = attr;
|
|
90
|
+
switch (attr) {
|
|
91
|
+
case StorageAttribute.ALPHA:
|
|
92
|
+
case StorageAttribute.UNICODE:
|
|
93
|
+
resVal.StrVal = null;
|
|
94
|
+
break;
|
|
95
|
+
case StorageAttribute.TIME:
|
|
96
|
+
case StorageAttribute.DATE:
|
|
97
|
+
case StorageAttribute.NUMERIC:
|
|
98
|
+
resVal.MgNumVal = null;
|
|
99
|
+
break;
|
|
100
|
+
case StorageAttribute.BOOLEAN:
|
|
101
|
+
resVal.BoolVal = false;
|
|
102
|
+
break;
|
|
103
|
+
default:
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
GetValidatedValue(currCtrl, oldValue, newValue) {
|
|
108
|
+
let vd = currCtrl.buildCopyPicture(oldValue, newValue);
|
|
109
|
+
vd.evaluate();
|
|
110
|
+
let validationFailed = vd.ValidationFailed;
|
|
111
|
+
let ctrlValue;
|
|
112
|
+
if (validationFailed) {
|
|
113
|
+
let field = currCtrl.getField();
|
|
114
|
+
ctrlValue = ((field.getType() === StorageAttribute.BLOB_VECTOR) ? field.getCellDefualtValue() : field.getDefaultValue());
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
ctrlValue = vd.getDispValue();
|
|
118
|
+
}
|
|
119
|
+
return ctrlValue;
|
|
120
|
+
}
|
|
121
|
+
SetVal(resVal, type, val, pic) {
|
|
122
|
+
switch (type) {
|
|
123
|
+
case StorageAttribute.ALPHA:
|
|
124
|
+
case StorageAttribute.BLOB:
|
|
125
|
+
case StorageAttribute.BLOB_VECTOR:
|
|
126
|
+
case StorageAttribute.UNICODE:
|
|
127
|
+
resVal.Attr = type;
|
|
128
|
+
resVal.StrVal = val;
|
|
129
|
+
if (type === StorageAttribute.BLOB || type === StorageAttribute.BLOB_VECTOR)
|
|
130
|
+
resVal.IncludeBlobPrefix = true;
|
|
131
|
+
break;
|
|
132
|
+
case StorageAttribute.NUMERIC:
|
|
133
|
+
case StorageAttribute.DATE:
|
|
134
|
+
case StorageAttribute.TIME:
|
|
135
|
+
resVal.Attr = type;
|
|
136
|
+
if (val == null)
|
|
137
|
+
resVal.MgNumVal = null;
|
|
138
|
+
else if (pic == null)
|
|
139
|
+
resVal.MgNumVal = new NUM_TYPE(val);
|
|
140
|
+
else
|
|
141
|
+
resVal.MgNumVal = new NUM_TYPE(val, pic, (this.ExpTask).getCompIdx());
|
|
142
|
+
break;
|
|
143
|
+
case StorageAttribute.BOOLEAN:
|
|
144
|
+
resVal.Attr = type;
|
|
145
|
+
resVal.BoolVal = DisplayConvertor.toBoolean(val);
|
|
146
|
+
break;
|
|
147
|
+
default:
|
|
148
|
+
this.SetNULL(resVal, type);
|
|
149
|
+
this.Events.WriteExceptionToLog('ExpressionEvaluator.SetVal() there is no such type : ' + type);
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
static exp_build_string(val) {
|
|
154
|
+
let name = '';
|
|
155
|
+
if (val.StrVal !== null) {
|
|
156
|
+
let len = val.StrVal.length;
|
|
157
|
+
if (len > 0) {
|
|
158
|
+
name = StrUtil.ZstringMake(val.StrVal, len);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return name;
|
|
162
|
+
}
|
|
163
|
+
static isExpVal(obj) {
|
|
164
|
+
return obj instanceof ExpVal;
|
|
165
|
+
}
|
|
166
|
+
BlobStringConversion(val, expectedType) {
|
|
167
|
+
if (StorageAttributeCheck.IsTypeAlphaOrUnicode(expectedType)) {
|
|
168
|
+
if (val.Attr === StorageAttribute.BLOB) {
|
|
169
|
+
let includeBlobPrefix = val.IncludeBlobPrefix;
|
|
170
|
+
if (includeBlobPrefix) {
|
|
171
|
+
let contentType = BlobType.getContentType(val.StrVal);
|
|
172
|
+
val.StrVal = BlobType.getString(val.StrVal);
|
|
173
|
+
val.IncludeBlobPrefix = false;
|
|
174
|
+
if (contentType !== BlobType.CONTENT_TYPE_BINARY && Rtf.isRtf(val.StrVal)) {
|
|
175
|
+
val.StrVal = StrUtil.GetPlainTextfromRtf(val.StrVal);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
val.Attr = expectedType;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
if (val.Attr === StorageAttribute.BLOB_VECTOR) {
|
|
182
|
+
let includeBlobPrefix2 = val.IncludeBlobPrefix;
|
|
183
|
+
if (includeBlobPrefix2) {
|
|
184
|
+
val.StrVal = BlobType.removeBlobPrefix(val.StrVal);
|
|
185
|
+
val.IncludeBlobPrefix = false;
|
|
186
|
+
}
|
|
187
|
+
val.Attr = expectedType;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
if (expectedType === StorageAttribute.BLOB) {
|
|
193
|
+
if (StorageAttributeCheck.IsTypeAlphaOrUnicode(val.Attr)) {
|
|
194
|
+
let contentType = (val.Attr === StorageAttribute.ALPHA) ? BlobType.CONTENT_TYPE_ANSI : BlobType.CONTENT_TYPE_UNICODE;
|
|
195
|
+
val.StrVal = BlobType.createFromString(val.StrVal, contentType);
|
|
196
|
+
val.IncludeBlobPrefix = true;
|
|
197
|
+
val.Attr = expectedType;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
eval_op_zimeread(resVal) {
|
|
203
|
+
resVal.Attr = StorageAttribute.ALPHA;
|
|
204
|
+
resVal.StrVal = '';
|
|
205
|
+
let utilImeJpn = Manager.UtilImeJpn;
|
|
206
|
+
if (utilImeJpn !== null) {
|
|
207
|
+
let strImeRead = utilImeJpn.StrImeRead;
|
|
208
|
+
if (!NString.IsNullOrEmpty(utilImeJpn.StrImeRead)) {
|
|
209
|
+
resVal.StrVal = strImeRead;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
eval_op_win_help(expFilePath, expHelpCmd, expHelpKey, resVal) {
|
|
214
|
+
let filePath = expFilePath.StrVal;
|
|
215
|
+
let helpCmd = expHelpCmd.MgNumVal.NUM_2_LONG();
|
|
216
|
+
let helpKey = expHelpKey.StrVal;
|
|
217
|
+
resVal.Attr = StorageAttribute.BOOLEAN;
|
|
218
|
+
try {
|
|
219
|
+
Manager.ShowWindowHelp(filePath, helpCmd, helpKey);
|
|
220
|
+
resVal.BoolVal = true;
|
|
221
|
+
}
|
|
222
|
+
catch (ex) {
|
|
223
|
+
resVal.BoolVal = false;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
ConvertExpVal(val, expectedType) {
|
|
227
|
+
if (StorageAttributeCheck.StorageFldAlphaUnicodeOrBlob(val.Attr, expectedType)) {
|
|
228
|
+
this.BlobStringConversion(val, expectedType);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
GuiExpressionEvaluator.TRIGGER_TASK = 500000;
|
|
233
|
+
export class ExpVal {
|
|
234
|
+
constructor(attr, isNull, mgVal) {
|
|
235
|
+
this.Attr = StorageAttribute.NONE;
|
|
236
|
+
this.IsNull = false;
|
|
237
|
+
this.MgNumVal = null;
|
|
238
|
+
this.StrVal = null;
|
|
239
|
+
this.BoolVal = false;
|
|
240
|
+
this.IncludeBlobPrefix = false;
|
|
241
|
+
this.OriginalNull = false;
|
|
242
|
+
this.VectorField = null;
|
|
243
|
+
if (arguments.length === 0) {
|
|
244
|
+
this.constructor_0();
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
this.constructor_1(attr, isNull, mgVal);
|
|
248
|
+
}
|
|
249
|
+
constructor_0() {
|
|
250
|
+
this.Attr = StorageAttribute.NONE;
|
|
251
|
+
}
|
|
252
|
+
constructor_1(attr, isNull, mgVal) {
|
|
253
|
+
this.Init(attr, isNull, mgVal);
|
|
254
|
+
}
|
|
255
|
+
Copy(src) {
|
|
256
|
+
this.Attr = src.Attr;
|
|
257
|
+
this.BoolVal = src.BoolVal;
|
|
258
|
+
this.IncludeBlobPrefix = src.IncludeBlobPrefix;
|
|
259
|
+
this.IsNull = src.IsNull;
|
|
260
|
+
this.MgNumVal = src.MgNumVal;
|
|
261
|
+
this.StrVal = src.StrVal;
|
|
262
|
+
this.VectorField = src.VectorField;
|
|
263
|
+
this.OriginalNull = src.OriginalNull;
|
|
264
|
+
}
|
|
265
|
+
Nullify() {
|
|
266
|
+
this.Init(StorageAttribute.NONE, true, null);
|
|
267
|
+
}
|
|
268
|
+
Init(attr, isNull, mgVal) {
|
|
269
|
+
this.Attr = attr;
|
|
270
|
+
this.IsNull = isNull;
|
|
271
|
+
switch (this.Attr) {
|
|
272
|
+
case StorageAttribute.ALPHA:
|
|
273
|
+
case StorageAttribute.UNICODE:
|
|
274
|
+
this.StrVal = mgVal;
|
|
275
|
+
break;
|
|
276
|
+
case StorageAttribute.BLOB:
|
|
277
|
+
case StorageAttribute.BLOB_VECTOR:
|
|
278
|
+
this.StrVal = mgVal;
|
|
279
|
+
this.IncludeBlobPrefix = true;
|
|
280
|
+
break;
|
|
281
|
+
case StorageAttribute.NUMERIC:
|
|
282
|
+
case StorageAttribute.DATE:
|
|
283
|
+
case StorageAttribute.TIME:
|
|
284
|
+
this.MgNumVal = ((mgVal !== null) ? new NUM_TYPE(mgVal) : null);
|
|
285
|
+
break;
|
|
286
|
+
case StorageAttribute.BOOLEAN:
|
|
287
|
+
this.BoolVal = (mgVal !== null && mgVal === '1');
|
|
288
|
+
break;
|
|
289
|
+
case StorageAttribute.NONE:
|
|
290
|
+
this.BoolVal = false;
|
|
291
|
+
this.StrVal = null;
|
|
292
|
+
this.MgNumVal = null;
|
|
293
|
+
this.OriginalNull = true;
|
|
294
|
+
this.VectorField = null;
|
|
295
|
+
this.IncludeBlobPrefix = false;
|
|
296
|
+
break;
|
|
297
|
+
case StorageAttribute.DOTNET:
|
|
298
|
+
this.StrVal = mgVal;
|
|
299
|
+
break;
|
|
300
|
+
default:
|
|
301
|
+
throw new ApplicationException('in ExpVal.ExpVal() illegal attribute: \'' + this.Attr + '\'');
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
ToMgVal() {
|
|
305
|
+
let str;
|
|
306
|
+
switch (this.Attr) {
|
|
307
|
+
case StorageAttribute.ALPHA:
|
|
308
|
+
case StorageAttribute.BLOB:
|
|
309
|
+
case StorageAttribute.BLOB_VECTOR:
|
|
310
|
+
case StorageAttribute.UNICODE:
|
|
311
|
+
str = this.StrVal;
|
|
312
|
+
break;
|
|
313
|
+
case StorageAttribute.NUMERIC:
|
|
314
|
+
case StorageAttribute.DATE:
|
|
315
|
+
case StorageAttribute.TIME:
|
|
316
|
+
str = this.MgNumVal.toXMLrecord();
|
|
317
|
+
break;
|
|
318
|
+
case StorageAttribute.BOOLEAN:
|
|
319
|
+
str = this.BoolVal
|
|
320
|
+
? '1'
|
|
321
|
+
: '0';
|
|
322
|
+
break;
|
|
323
|
+
default:
|
|
324
|
+
str = '[illegal attribute: ' + this.Attr + ']';
|
|
325
|
+
break;
|
|
326
|
+
}
|
|
327
|
+
return str;
|
|
328
|
+
}
|
|
329
|
+
isEmptyString() {
|
|
330
|
+
return (this.Attr === StorageAttribute.ALPHA || this.Attr === StorageAttribute.UNICODE) && this.StrVal === '';
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpRXhwcmVzc2lvbkV2YWx1YXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvbWFuYWdlbWVudC9leHAvR3VpRXhwcmVzc2lvbkV2YWx1YXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsb0JBQW9CLEVBQVEsT0FBTyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUFjLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQWEsTUFBTSxrQkFBa0IsQ0FBQztBQUdoSCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3RDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHMUMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRzFDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBR3pELE1BQU0sT0FBZ0Isc0JBQXNCO0lBMlUxQztRQXpVQSxZQUFPLEdBQWdCLElBQUksQ0FBQztRQUNwQixXQUFNLEdBQVEsSUFBSSxDQUFDO0lBMFUzQixDQUFDO0lBN1RELDBCQUEwQixDQUFDLE1BQWMsRUFBRSxhQUFxQjtRQUM5RCxNQUFNLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztRQUN2QyxNQUFNLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBRXBFLElBQUksT0FBTyxDQUFDLHdCQUF3QixFQUFFLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxFQUFFO1lBQ2hFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1NBQ3BCO2FBQU07WUFDTCxNQUFNLENBQUMsTUFBTSxHQUFH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M0IsS0FBSyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7WUFDbEMsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPO2dCQUMzQixHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDbEIsTUFBTTtZQUVSLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1lBQzlCLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQzNCLEtBQUssZ0JBQWdCLENBQUMsSUFBSTtnQkFDeEIsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU07WUFFUixLQUFLLGdCQUFnQixDQUFDLE9BQU87Z0JBQzNCLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTztvQkFDaEIsQ0FBQyxDQUFDLEdBQUc7b0JBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDUixNQUFNO1lBRVI7Z0JBQ0UsR0FBRyxHQUFHLHNCQUFzQixHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO2dCQUMvQyxNQUFNO1NBQ1Q7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFNRCxhQUFhO1FBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUM7SUFDaEgsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcHBsaWNhdGlvbkV4Y2VwdGlvbiwgTGlzdCwgTlN0cmluZ30gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQge0hlbHBDb21tYW5kLCBSdGYsIFN0b3JhZ2VBdHRyaWJ1dGUsIFN0b3JhZ2VBdHRyaWJ1dGVDaGVjaywgU3RyVXRpbCwgVXRpbEltZUpwbn0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7R3VpVGFza0Jhc2V9IGZyb20gJy4uL3Rhc2tzL0d1aVRhc2tCYXNlJztcclxuaW1wb3J0IHtJVGFza30gZnJvbSAnLi4vdGFza3MvSVRhc2snO1xyXG5pbXBvcnQge01hbmFnZXJ9IGZyb20gJy4uLy4uL01hbmFnZXInO1xyXG5pbXBvcnQge01nRm9ybUJhc2V9IGZyb20gJy4uL2d1aS9NZ0Zvcm1CYXNlJztcclxuaW1wb3J0IHtNZ0NvbnRyb2xCYXNlfSBmcm9tICcuLi9ndWkvTWdDb250cm9sQmFzZSc7XHJcbmltcG9ydCB7Q29tbWFuZHN9IGZyb20gJy4uLy4uL0NvbW1hbmRzJztcclxuaW1wb3J0IHtOVU1fVFlQRX0gZnJvbSAnLi4vZGF0YS9OVU1fVFlQRSc7XHJcbmltcG9ydCB7R3VpRmllbGRCYXNlfSBmcm9tICcuLi9kYXRhL0d1aUZpZWxkQmFzZSc7XHJcblxyXG5pbXBvcnQge0Jsb2JUeXBlfSBmcm9tICcuLi9kYXRhL0Jsb2JUeXBlJztcclxuaW1wb3J0IHtWYWxpZGF0aW9uRGV0YWlsc30gZnJvbSAnLi4vZ3VpL1ZhbGlkYXRpb25EZXRhaWxzJztcclxuaW1wb3J0IHtQSUN9IGZyb20gJy4uL2d1aS9QSUMnO1xyXG5pbXBvcnQge0Rpc3BsYXlDb252ZXJ0b3J9IGZyb20gJy4uL2d1aS9EaXNwbGF5Q29udmVydG9yJztcclxuXHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR3VpRXhwcmVzc2lvbkV2YWx1YXRvciB7XHJcbiAgc3RhdGljIFRSSUdHRVJfVEFTSzogbnVtYmVyID0gNTAwMDAwO1xyXG4gIEV4cFRhc2s6IEd1aVRhc2tCYXNlID0gbnVsbDtcclxuICBwcml2YXRlIEV2ZW50czogYW55ID0gbnVsbDtcclxuXHJcbiAgYWJzdHJhY3QgR2V0VG9wTW9zdEZvcm1zKCk6IExpc3Q8TWdGb3JtQmFzZT47XHJcblxyXG4gIGFic3RyYWN0IEhhbmRsZUNvbnRyb2xHb3RvKHRhc2s6IElUYXNrLCBjdHJsOiBNZ0NvbnRyb2xCYXNlLCByb3dObzogbnVtYmVyKTogYm9vbGVhbjtcclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT4ocHJvdGVjdGVkKVxyXG4gIC8vLyBzZXRzIHRoZSBzdGF0dXMgYmFyIHRleHQgd2l0aCB0aGUgZ2l2ZW4gdGV4dCBhbmRcclxuICAvLy8gc2V0cyB0aGUgcmVzdWx0IHdpdGggdGhlIGxhc3QgdGV4dCB0aGF0IHdhcyBzZXQgdG8gdGhlIHN0YXR1cyBiYXIgYnkgdGhlIHVzZSBvZiB0aGlzIGZ1bmN0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInJlc1ZhbFwiPmxhc3QgdGV4dCBvZiBzdGF0dXMgYmFyPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0YXR1c0JhclRleHRcIj50aGUgdGV4dCB0byBiZSBzZXQgYXQgc3RhdHVzIGJhcjwvcGFyYW0+XHJcbiAgZXZhbF9vcF9zdGF0dXNiYXJfc2V0X3RleHQocmVzVmFsOiBFeHBWYWwsIHN0YXR1c0JhclRleHQ6IEV4cFZhbCk6IHZvaWQge1xyXG4gICAgcmVzVmFsLkF0dHIgPSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREU7XHJcbiAgICByZXNWYWwuU3RyVmFsID0gTWFuYWdlci5HZXRDdXJyZW50UnVudGltZUNvbnRleHQoKS5EZWZhdWx0U3RhdHVzTXNnO1xyXG5cclxuICAgIGlmIChNYW5hZ2VyLkdldEN1cnJlbnRSdW50aW1lQ29udGV4dCgpLkRlZmF1bHRTdGF0dXNNc2cgPT09IG51bGwpIHtcclxuICAgICAgcmVzVmFsLlN0clZhbCA9ICcnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzVmFsLlN0clZhbCA9IE1hbmFnZXIuR2V0Q3VycmVudFJ1bnRpbWVDb250ZXh0KCkuRGVmYXVsdFN0YXR1c01zZztcclxuICAgIH1cclxuICAgIHJlc1ZhbC5Jc051bGwgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoIShzdGF0dXNCYXJUZXh0LkF0dHIgIT09IFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEEgJiYgc3RhdHVzQmFyVGV4dC5BdHRyICE9PSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREUpKSB7XHJcbiAgICAgIGlmICghc3RhdHVzQmFyVGV4dC5Jc051bGwpIHtcclxuICAgICAgICBsZXQgdGV4dDogc3RyaW5nID0gc3RhdHVzQmFyVGV4dC5TdHJWYWw7XHJcbiAgICAgICAgbGV0IHRhc2s6IEd1aVRhc2tCYXNlID0gPEd1aVRhc2tCYXNlPnRoaXMuRXhwVGFzay5HZXRDb250ZXh0VGFzaygpO1xyXG5cclxuICAgICAgICAvLyBJbiBjYXNlIG9mIG5vbiBpbnRlcmFjdGl2ZSB0YXNrcywgaXQgaXMgcG9zc2libGUgdGhhdCB0YXNrIGhhcyBvcGVuIHdpbmRvdyA9IE5vLCBTbyBkaXNwbGF5IHRoZSBzdGF0dXMgYmFyIG1zZyBvbiBmcmFtZSB3aW5kb3cuXHJcbiAgICAgICAgaWYgKHRhc2suZ2V0Rm9ybSgpID09PSBudWxsICYmIE1hbmFnZXIuR2V0Q3VycmVudFJ1bnRpbWVDb250ZXh0KCkuRnJhbWVGb3JtICE9PSBudWxsKSB7XHJcbiAgICAgICAgICB0YXNrID0gTWFuYWdlci5HZXRDdXJyZW50UnVudGltZUNvbnRleHQoKS5GcmFtZUZvcm0uZ2V0VGFzaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0YXNrLldyaXRlVG9NZXNzYWdlUGFuZSh0ZXh0KTtcclxuICAgICAgICBNYW5hZ2VyLkdldEN1cnJlbnRSdW50aW1lQ29udGV4dCgpLkRlZmF1bHRTdGF0dXNNc2cgPSB0ZXh0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgSXNQYXJhbGxlbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuICBldmFsX29wX2Jyb3dzZXJFeGVjdXRlX0RPKHJlc1ZhbDogRXhwVmFsLCBjb250cm9sTmFtZTogRXhwVmFsLCB0ZXh0OiBFeHBWYWwsIHN5bmM6IEV4cFZhbCwgbGFuZ3VhZ2U6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgcmVzVmFsLkF0dHIgPSBTdG9yYWdlQXR0cmlidXRlLkJPT0xFQU47XHJcbiAgICByZXNWYWwuQm9vbFZhbCA9IGZhbHNlO1xyXG5cclxuICAgIC8vIEZpbmQgdGhlIGJyb3dzZXIgY29udHJvbCBieSB0aGUgY29udHJvbCBuYW1lXHJcbiAgICBsZXQgZm9ybTogTWdGb3JtQmFzZSA9IHRoaXMuRXhwVGFzay5nZXRGb3JtKCk7XHJcbiAgICBsZXQgc0N0cmxOYW1lOiBzdHJpbmcgPSBTdHJVdGlsLnJ0cmltKGNvbnRyb2xOYW1lLlN0clZhbCk7XHJcbiAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IHRoaXMuRXhwVGFzay5nZXRGb3JtKCkuR2V0Q3RybChzQ3RybE5hbWUpO1xyXG4gICAgaWYgKGNvbnRyb2wgIT09IG51bGwgJiYgY29udHJvbC5pc0Jyb3dzZXJDb250cm9sKCkpIHtcclxuICAgICAgcmVzVmFsLkJvb2xWYWwgPSBDb21tYW5kcy5icm93c2VyRXhlY3V0ZShjb250cm9sLCB0ZXh0LlN0clZhbCwgc3luYy5Cb29sVmFsLCBsYW5ndWFnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+KHByb3RlY3RlZClcclxuICAvLy8gcmV0dXJuIHRoZSBjb250cm9sIG5hbWUgb2YgbGFzdCBjbGlja2VkIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGV2YWxfb3BfY3RybF9uYW1lKHJlc1ZhbDogRXhwVmFsKTogdm9pZCB7XHJcbiAgICBsZXQgbGFzdENsaWNrZWRDdHJsTmFtZTogc3RyaW5nID0gTWFuYWdlci5HZXRDdXJyZW50UnVudGltZUNvbnRleHQoKS5MYXN0Q2xpY2tlZEN0cmxOYW1lO1xyXG4gICAgcmVzVmFsLlN0clZhbCA9IChOU3RyaW5nLklzTnVsbE9yRW1wdHkobGFzdENsaWNrZWRDdHJsTmFtZSkgPyAnJyA6IGxhc3RDbGlja2VkQ3RybE5hbWUpO1xyXG4gICAgcmVzVmFsLkF0dHIgPSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pihwcm90ZWN0ZWQpXHJcbiAgLy8vICAgQ2xlYXJzIHRoZSBmb3JtIHVzZXIgc3RhdGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZvcm1OYW1lXCI+Zm9ybSBuYW1lIChjdXJyZW50IGZvcm0oJycpIC9hbGwgZm9ybXMoKikpIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmVzVmFsXCI+c3VjY2VlZCBvciBmYWlsZWQ8L3BhcmFtPlxyXG4gIGV2YWxfb3BfZm9ybVN0YXRlQ2xlYXIoZm9ybU5hbWU6IEV4cFZhbCwgcmVzVmFsOiBFeHBWYWwpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4ocHJvdGVjdGVkKVxyXG4gIC8vLyBNb3ZlcyB0aGUgY2FyZXQgdG8gc3BlY2lmaWVkIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybE5hbWVcIj50aGUgbmFtZSBvZiB0aGUgZGVzdGluYXRpb24gY29udHJvbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJyb3dOdW1cIj50aGUgcm93IGluIHRoZSB0YWJsZSAgMCByZXByZXNlbnRzIGN1cnJlbnQgcm93PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImdlbmVyYXRpb25cIj50aGUgdGFzayBnZW5lcmF0aW9uPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInJldFZhbFwiPnRoZSByZXN1bHQ8L3BhcmFtPlxyXG4gIGV2YWxfb3BfZ290b0N0cmwoY3RybE5hbWU6IEV4cFZhbCwgcm93TnVtOiBFeHBWYWwsIGdlbmVyYXRpb246IEV4cFZhbCwgcmV0VmFsOiBFeHBWYWwpOiB2b2lkIHtcclxuICAgIHJldFZhbC5BdHRyID0gU3RvcmFnZUF0dHJpYnV0ZS5CT09MRUFOO1xyXG4gICAgcmV0VmFsLkJvb2xWYWwgPSBmYWxzZTtcclxuICAgIGxldCB0YXNrOiBHdWlUYXNrQmFzZSA9IHRoaXMuR2V0Q29udGV4dFRhc2soZ2VuZXJhdGlvbi5NZ051bVZhbC5OVU1fMl9MT05HKCkpO1xyXG4gICAgaWYgKHRhc2sgPT09IG51bGwgfHwgdGFzay5nZXRGb3JtKCkgPT09IG51bGwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBsZXQgaVJvd051bTogbnVtYmVyID0gcm93TnVtLk1nTnVtVmFsLk5VTV8yX0xPTkcoKTtcclxuICAgIGxldCBzQ3RybE5hbWU6IHN0cmluZyA9IFN0clV0aWwucnRyaW0oY3RybE5hbWUuU3RyVmFsKTtcclxuICAgIGxldCBjdHJsOiBNZ0NvbnRyb2xCYXNlID0gdGFzay5nZXRGb3JtKCkuR2V0Q3RybChzQ3RybE5hbWUpO1xyXG4gICAgcmV0VmFsLkJvb2xWYWwgPSB0aGlzLkhhbmRsZUNvbnRyb2xHb3RvKHRhc2ssIGN0cmwsIGlSb3dOdW0pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pihwcm90ZWN0ZWQpXHJcbiAgLy8vIGdldCBjb250ZXh0IHRhc2sgYnkgYSBzcGVjaWZpZWQgZ2VuZXJhdGlvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdXJyVGFza1wiPmN1cnJlbnQgdGFzazwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJnZW5lcmF0aW9uXCI+dGFzayBnZW5lcmF0aW9uPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRhc2sgYXQgc3BlY2lmaWVkIGdlbmVyYXRpb248L3JldHVybnM+XHJcbiAgc3RhdGljIEdldENvbnRleHRUYXNrKGN1cnJUYXNrOiBHdWlUYXNrQmFzZSwgZ2VuZXJhdGlvbjogbnVtYmVyKTogR3VpVGFza0Jhc2Uge1xyXG4gICAgbGV0IHRhc2s6IEd1aVRhc2tCYXNlID0gbnVsbDtcclxuICAgIGxldCB0YXNrQmFzZTogR3VpVGFza0Jhc2UgPSA8R3VpVGFza0Jhc2U+IGN1cnJUYXNrLkdldENvbnRleHRUYXNrKCk7XHJcbiAgICBpZiAoZ2VuZXJhdGlvbiA9PT0gR3VpRXhwcmVzc2lvbkV2YWx1YXRvci5UUklHR0VSX1RBU0spIHtcclxuICAgICAgdGFzayA9IHRhc2tCYXNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGdlbmVyYXRpb24gPCB0YXNrQmFzZS5HZXRUYXNrRGVwdGgoKSkge1xyXG4gICAgICAgIHRhc2sgPSA8R3VpVGFza0Jhc2U+dGFza0Jhc2UuR2V0VGFza0FuY2VzdG9yKGdlbmVyYXRpb24pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGFzaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4ocHJvdGVjdGVkKVxyXG4gIC8vLyBnZXQgY29udGV4dCB0YXNrIGJ5IGEgc3BlY2lmaWVkIGdlbmVyYXRpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZ2VuZXJhdGlvblwiPnRhc2sgZ2VuZXJhdGlvbjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0YXNrIGF0IHNwZWNpZmllZCBnZW5lcmF0aW9uPC9yZXR1cm5zPlxyXG4gIEdldENvbnRleHRUYXNrKGdlbmVyYXRpb246IG51bWJlcik6IEd1aVRhc2tCYXNlIHtcclxuICAgIHJldHVybiBHdWlFeHByZXNzaW9uRXZhbHVhdG9yLkdldENvbnRleHRUYXNrKHRoaXMuRXhwVGFzaywgZ2VuZXJhdGlvbik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+KHByb3RlY3RlZClcclxuICAvLy8gQ3JlYXRlIGEgTlVNX1RZUEUgd2l0aCB0aGUgdmFsdWUgb2YgaSBhbmQgc2V0IHRoZSBFeHBWYWwgd2l0aCBpdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgQ29uc3RydWN0TWFnaWNOdW0ocmVzVmFsOiBFeHBWYWwsIGk6IG51bWJlciwgYXR0cjogU3RvcmFnZUF0dHJpYnV0ZSk6IHZvaWQge1xyXG4gICAgcmVzVmFsLk1nTnVtVmFsID0gbmV3IE5VTV9UWVBFKCk7XHJcbiAgICByZXNWYWwuTWdOdW1WYWwuTlVNXzRfTE9ORyhpKTtcclxuICAgIHJlc1ZhbC5BdHRyID0gYXR0cjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4ocHVibGljKVxyXG4gIC8vLyBzZXQgbnVsbCB2YWx1ZSB0byBFeHByZXNzaW9uIEV2YWx1YXRvclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJyZXNWYWxcIj50byBzZXQgaXQgTlVMTDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJhdHRyXCI+YXR0cmlidXRlIG9mIEV4cFZhbHVlPC9wYXJhbT5cclxuICBTZXROVUxMKHJlc1ZhbDogRXhwVmFsLCBhdHRyOiBTdG9yYWdlQXR0cmlidXRlKTogdm9pZCB7XHJcbiAgICByZXNWYWwuSXNOdWxsID0gdHJ1ZTtcclxuICAgIHJlc1ZhbC5BdHRyID0gYXR0cjtcclxuXHJcbiAgICBzd2l0Y2ggKGF0dHIpIHtcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuVU5JQ09ERTpcclxuICAgICAgICByZXNWYWwuU3RyVmFsID0gbnVsbDtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5USU1FOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuREFURTpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM6XHJcbiAgICAgICAgcmVzVmFsLk1nTnVtVmFsID0gbnVsbDtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CT09MRUFOOlxyXG4gICAgICAgIHJlc1ZhbC5Cb29sVmFsID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHZhbGlkYXRlIHZhbHVlIG9mIHRoZSBjb250cm9sXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN1cnJDdHJsXCI+Y29udHJvbCB3aG9zZSB2YWx1ZSBuZWVkIHRvIGJlIGV2YWx1YXRlZDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJvbGRWYWx1ZVwiPm9sZCB2YWx1ZSBvZiB0aGUgY29udHJvbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJuZXdWYWx1ZVwiPm5ldyB2YWx1ZSBvZiB0aGUgY29udHJvbDwvcGFyYW0+XHJcbiAgR2V0VmFsaWRhdGVkVmFsdWUoY3VyckN0cmw6IE1nQ29udHJvbEJhc2UsIG9sZFZhbHVlOiBzdHJpbmcsIG5ld1ZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHZkOiBWYWxpZGF0aW9uRGV0YWlscyA9IGN1cnJDdHJsLmJ1aWxkQ29weVBpY3R1cmUob2xkVmFsdWUsIG5ld1ZhbHVlKTtcclxuICAgIHZkLmV2YWx1YXRlKCk7XHJcbiAgICBsZXQgdmFsaWRhdGlvbkZhaWxlZDogYm9vbGVhbiA9IHZkLlZhbGlkYXRpb25GYWlsZWQ7XHJcbiAgICBsZXQgY3RybFZhbHVlOiBzdHJpbmc7XHJcbiAgICBpZiAodmFsaWRhdGlvbkZhaWxlZCkge1xyXG4gICAgICBsZXQgZmllbGQ6IEd1aUZpZWxkQmFzZSA9IGN1cnJDdHJsLmdldEZpZWxkKCk7XHJcbiAgICAgIGN0cmxWYWx1ZSA9ICgoZmllbGQuZ2V0VHlwZSgpID09PSBTdG9yYWdlQXR0cmlidXRlLkJMT0JfVkVDVE9SKSA/IGZpZWxkLmdldENlbGxEZWZ1YWx0VmFsdWUoKSA6IGZpZWxkLmdldERlZmF1bHRWYWx1ZSgpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGN0cmxWYWx1ZSA9IHZkLmdldERpc3BWYWx1ZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGN0cmxWYWx1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgZXhwVmFsdWUgb2YgbmVlZGVkIHR5cGUgLiB0aGUgdmFsdWUgaXMgaW5pdGVkIGJ5IHZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInJlc1ZhbFwiPm5lZWQgYmUgZXZhbHVhdGVkL2luaXRpYWxpemVkPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInR5cGVcIj5vZiByZXNWYWwgKEFscGhhfE51bWVyaWN8TG9naWNhbHxEYXRlfFRpbWV8QmxvYnxWZWN0b3IpPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInZhbFwiPnN0cmluZy9oZXhhIHN0cmluZzwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwaWNcIj5mb3Igc3RyaW5nIGV2YWx1YXRpb248L3BhcmFtPlxyXG4gIFNldFZhbChyZXNWYWw6IEV4cFZhbCwgdHlwZTogU3RvcmFnZUF0dHJpYnV0ZSwgdmFsOiBzdHJpbmcsIHBpYzogUElDKTogdm9pZCB7XHJcblxyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcblxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEE6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CTE9COlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQl9WRUNUT1I6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFOlxyXG4gICAgICAgIHJlc1ZhbC5BdHRyID0gdHlwZTtcclxuICAgICAgICByZXNWYWwuU3RyVmFsID0gdmFsO1xyXG5cclxuICAgICAgICBpZiAodHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5CTE9CIHx8IHR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQl9WRUNUT1IpXHJcbiAgICAgICAgICByZXNWYWwuSW5jbHVkZUJsb2JQcmVmaXggPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5EQVRFOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuVElNRTpcclxuICAgICAgICByZXNWYWwuQXR0ciA9IHR5cGU7XHJcbiAgICAgICAgaWYgKHZhbCA9PSBudWxsKVxyXG4gICAgICAgICAgcmVzVmFsLk1nTnVtVmFsID0gbnVsbDtcclxuICAgICAgICBlbHNlIGlmIChwaWMgPT0gbnVsbClcclxuICAgICAgICAgIHJlc1ZhbC5NZ051bVZhbCA9IG5ldyBOVU1fVFlQRSh2YWwpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHJlc1ZhbC5NZ051bVZhbCA9IG5ldyBOVU1fVFlQRSh2YWwsIHBpYywgKHRoaXMuRXhwVGFzaykuZ2V0Q29tcElkeCgpKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CT09MRUFOOlxyXG4gICAgICAgIHJlc1ZhbC5BdHRyID0gdHlwZTtcclxuICAgICAgICByZXNWYWwuQm9vbFZhbCA9IERpc3BsYXlDb252ZXJ0b3IudG9Cb29sZWFuKHZhbCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuU2V0TlVMTChyZXNWYWwsIHR5cGUpO1xyXG5cclxuICAgICAgICB0aGlzLkV2ZW50cy5Xcml0ZUV4Y2VwdGlvblRvTG9nKCdFeHByZXNzaW9uRXZhbHVhdG9yLlNldFZhbCgpIHRoZXJlIGlzIG5vIHN1Y2ggdHlwZSA6ICcgKyB0eXBlKTtcclxuXHJcbiAgICAgICAgLy8gQ2xpZW50TWFuYWdlci5JbnN0YW5jZS5Xcml0ZUVycm9yVG9Mb2coXCJFeHByZXNzaW9uRXZhbHVhdG9yLlNldFZhbCgpIHRoZXJlIGlzIG5vIHN1Y2ggdHlwZSA6IFwiICsgdHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+KHByb3RlY3RlZClcclxuICAvLy8gdHJpbXMgYW5kIHJldHVybnMgdGhlIHN0cmluZy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidmFsXCI+Y29udGFpbmluZyBzdHJpbmcgdG8gYmUgdHJpbW1lZCAoc3RyVmFsXyBtZW1iZXIgb2YgRXhwVmFsKTwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPnRyaW1tZWQgc3RyaW5nPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBleHBfYnVpbGRfc3RyaW5nKHZhbDogRXhwVmFsKTogc3RyaW5nIHtcclxuICAgIGxldCBuYW1lOiBzdHJpbmcgPSAnJztcclxuICAgIGlmICh2YWwuU3RyVmFsICE9PSBudWxsKSB7XHJcbiAgICAgIGxldCBsZW46IG51bWJlciA9IDxudW1iZXI+dmFsLlN0clZhbC5sZW5ndGg7XHJcbiAgICAgIGlmIChsZW4gPiAwKSB7XHJcbiAgICAgICAgbmFtZSA9IFN0clV0aWwuWnN0cmluZ01ha2UodmFsLlN0clZhbCwgPG51bWJlcj5sZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmFtZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gY2hlY2tzIGlmIHRoZSBvYmplY3QgaXMgaW5zdGFuY2Ugb2YgRXhwVmFsXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJvYmpcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIGlzRXhwVmFsKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRXhwVmFsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pihwcml2YXRlKVxyXG4gIC8vLyBoYW5kbGUgY29udmVyc2lvbnMgYmV0d2VlbiBibG9iIGFuZCB1bmljb2RlL2FscGhhXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImV4cGVjdGVkVHlwZVwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBCbG9iU3RyaW5nQ29udmVyc2lvbih2YWw6IEV4cFZhbCwgZXhwZWN0ZWRUeXBlOiBTdG9yYWdlQXR0cmlidXRlKTogdm9pZCB7XHJcbiAgICBpZiAoU3RvcmFnZUF0dHJpYnV0ZUNoZWNrLklzVHlwZUFscGhhT3JVbmljb2RlKGV4cGVjdGVkVHlwZSkpIHtcclxuICAgICAgaWYgKHZhbC5BdHRyID09PSBTdG9yYWdlQXR0cmlidXRlLkJMT0IpIHtcclxuICAgICAgICBsZXQgaW5jbHVkZUJsb2JQcmVmaXg6IGJvb2xlYW4gPSB2YWwuSW5jbHVkZUJsb2JQcmVmaXg7XHJcbiAgICAgICAgaWYgKGluY2x1ZGVCbG9iUHJlZml4KSB7XHJcbiAgICAgICAgICBsZXQgY29udGVudFR5cGU6IHN0cmluZyA9IEJsb2JUeXBlLmdldENvbnRlbnRUeXBlKHZhbC5TdHJWYWwpO1xyXG4gICAgICAgICAgdmFsLlN0clZhbCA9IEJsb2JUeXBlLmdldFN0cmluZyh2YWwuU3RyVmFsKTtcclxuICAgICAgICAgIHZhbC5JbmNsdWRlQmxvYlByZWZpeCA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKGNvbnRlbnRUeXBlICE9PSBCbG9iVHlwZS5DT05URU5UX1RZUEVfQklOQVJZICYmIFJ0Zi5pc1J0Zih2YWwuU3RyVmFsKSkge1xyXG4gICAgICAgICAgICB2YWwuU3RyVmFsID0gU3RyVXRpbC5HZXRQbGFpblRleHRmcm9tUnRmKHZhbC5TdHJWYWwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB2YWwuQXR0ciA9IGV4cGVjdGVkVHlwZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodmFsLkF0dHIgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQl9WRUNUT1IpIHtcclxuICAgICAgICAgIGxldCBpbmNsdWRlQmxvYlByZWZpeDI6IGJvb2xlYW4gPSB2YWwuSW5jbHVkZUJsb2JQcmVmaXg7XHJcbiAgICAgICAgICBpZiAoaW5jbHVkZUJsb2JQcmVmaXgyKSB7XHJcbiAgICAgICAgICAgIHZhbC5TdHJWYWwgPSBCbG9iVHlwZS5yZW1vdmVCbG9iUHJlZml4KHZhbC5TdHJWYWwpO1xyXG4gICAgICAgICAgICB2YWwuSW5jbHVkZUJsb2JQcmVmaXggPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHZhbC5BdHRyID0gZXhwZWN0ZWRUeXBlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGV4cGVjdGVkVHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5CTE9CKSB7XHJcbiAgICAgICAgaWYgKFN0b3JhZ2VBdHRyaWJ1dGVDaGVjay5Jc1R5cGVBbHBoYU9yVW5pY29kZSh2YWwuQXR0cikpIHtcclxuICAgICAgICAgIGxldCBjb250ZW50VHlwZTogc3RyaW5nID0gKHZhbC5BdHRyID09PSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBKSA/IEJsb2JUeXBlLkNPTlRFTlRfVFlQRV9BTlNJIDogQmxvYlR5cGUuQ09OVEVOVF9UWVBFX1VOSUNPREU7XHJcbiAgICAgICAgICB2YWwuU3RyVmFsID0gQmxvYlR5cGUuY3JlYXRlRnJvbVN0cmluZyh2YWwuU3RyVmFsLCBjb250ZW50VHlwZSk7XHJcbiAgICAgICAgICB2YWwuSW5jbHVkZUJsb2JQcmVmaXggPSB0cnVlO1xyXG4gICAgICAgICAgdmFsLkF0dHIgPSBleHBlY3RlZFR5cGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBldmFsX29wX3ppbWVyZWFkKHJlc1ZhbDogRXhwVmFsKTogdm9pZCB7XHJcbiAgICByZXNWYWwuQXR0ciA9IFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEE7XHJcbiAgICByZXNWYWwuU3RyVmFsID0gJyc7XHJcbiAgICBsZXQgdXRpbEltZUpwbjogVXRpbEltZUpwbiA9IE1hbmFnZXIuVXRpbEltZUpwbjtcclxuICAgIGlmICh1dGlsSW1lSnBuICE9PSBudWxsKSB7XHJcbiAgICAgIGxldCBzdHJJbWVSZWFkOiBzdHJpbmcgPSB1dGlsSW1lSnBuLlN0ckltZVJlYWQ7XHJcbiAgICAgIGlmICghTlN0cmluZy5Jc051bGxPckVtcHR5KHV0aWxJbWVKcG4uU3RySW1lUmVhZCkpIHtcclxuICAgICAgICByZXNWYWwuU3RyVmFsID0gc3RySW1lUmVhZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXZhbF9vcF93aW5faGVscChleHBGaWxlUGF0aDogRXhwVmFsLCBleHBIZWxwQ21kOiBFeHBWYWwsIGV4cEhlbHBLZXk6IEV4cFZhbCwgcmVzVmFsOiBFeHBWYWwpOiB2b2lkIHtcclxuICAgIGxldCBmaWxlUGF0aDogc3RyaW5nID0gZXhwRmlsZVBhdGguU3RyVmFsO1xyXG4gICAgbGV0IGhlbHBDbWQ6IEhlbHBDb21tYW5kID0gPEhlbHBDb21tYW5kPmV4cEhlbHBDbWQuTWdOdW1WYWwuTlVNXzJfTE9ORygpO1xyXG4gICAgbGV0IGhlbHBLZXk6IHN0cmluZyA9IGV4cEhlbHBLZXkuU3RyVmFsO1xyXG4gICAgcmVzVmFsLkF0dHIgPSBTdG9yYWdlQXR0cmlidXRlLkJPT0xFQU47XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgTWFuYWdlci5TaG93V2luZG93SGVscChmaWxlUGF0aCwgaGVscENtZCwgaGVscEtleSk7XHJcbiAgICAgIHJlc1ZhbC5Cb29sVmFsID0gdHJ1ZTtcclxuICAgIH0gY2F0Y2ggKGV4KSB7XHJcbiAgICAgIHJlc1ZhbC5Cb29sVmFsID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBDb252ZXJ0RXhwVmFsKHZhbDogRXhwVmFsLCBleHBlY3RlZFR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUpOiB2b2lkIHtcclxuICAgIGlmIChTdG9yYWdlQXR0cmlidXRlQ2hlY2suU3RvcmFnZUZsZEFscGhhVW5pY29kZU9yQmxvYih2YWwuQXR0ciwgZXhwZWN0ZWRUeXBlKSkge1xyXG4gICAgICB0aGlzLkJsb2JTdHJpbmdDb252ZXJzaW9uKHZhbCwgZXhwZWN0ZWRUeXBlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG5cclxuICB9XHJcbn1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICAgVGhlIGNsYXNzIGhvbGRzIGRhdGEgb2YgYSBiYXNpYyBlbGVtZW50IChjb25zdGFudCBvciB2YXJpYWJsZSkgdGhhdFxyXG4vLy8gICBhcHBlYXJzIG9yIGFyZSByZXN1bHQgb2YgZXhlY3V0aW9uIG9mIG9wZXJhdG9yXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBFeHBWYWwge1xyXG4gIEF0dHI6IFN0b3JhZ2VBdHRyaWJ1dGUgPSBTdG9yYWdlQXR0cmlidXRlLk5PTkU7XHJcbiAgSXNOdWxsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgTWdOdW1WYWw6IE5VTV9UWVBFID0gbnVsbDtcclxuICBTdHJWYWw6IHN0cmluZyA9IG51bGw7XHJcbiAgQm9vbFZhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEluY2x1ZGVCbG9iUHJlZml4OiBib29sZWFuID0gZmFsc2U7XHJcbiAgT3JpZ2luYWxOdWxsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgVmVjdG9yRmllbGQ6IEd1aUZpZWxkQmFzZSA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCk7XHJcbiAgY29uc3RydWN0b3IoYXR0cjogU3RvcmFnZUF0dHJpYnV0ZSwgaXNOdWxsOiBib29sZWFuLCBtZ1ZhbDogc3RyaW5nKTtcclxuICBjb25zdHJ1Y3RvcihhdHRyPzogU3RvcmFnZUF0dHJpYnV0ZSwgaXNOdWxsPzogYm9vbGVhbiwgbWdWYWw/OiBzdHJpbmcpIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzEoYXR0ciwgaXNOdWxsLCBtZ1ZhbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzAoKTogdm9pZCB7XHJcbiAgICB0aGlzLkF0dHIgPSBTdG9yYWdlQXR0cmlidXRlLk5PTkU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzEoYXR0cjogU3RvcmFnZUF0dHJpYnV0ZSwgaXNOdWxsOiBib29sZWFuLCBtZ1ZhbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLkluaXQoYXR0ciwgaXNOdWxsLCBtZ1ZhbCk7XHJcbiAgfVxyXG5cclxuICBDb3B5KHNyYzogRXhwVmFsKTogdm9pZCB7XHJcbiAgICB0aGlzLkF0dHIgPSBzcmMuQXR0cjtcclxuICAgIHRoaXMuQm9vbFZhbCA9IHNyYy5Cb29sVmFsO1xyXG4gICAgdGhpcy5JbmNsdWRlQmxvYlByZWZpeCA9IHNyYy5JbmNsdWRlQmxvYlByZWZpeDtcclxuICAgIHRoaXMuSXNOdWxsID0gc3JjLklzTnVsbDtcclxuICAgIHRoaXMuTWdOdW1WYWwgPSBzcmMuTWdOdW1WYWw7XHJcbiAgICB0aGlzLlN0clZhbCA9IHNyYy5TdHJWYWw7XHJcbiAgICB0aGlzLlZlY3RvckZpZWxkID0gc3JjLlZlY3RvckZpZWxkO1xyXG4gICAgdGhpcy5PcmlnaW5hbE51bGwgPSBzcmMuT3JpZ2luYWxOdWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBudWxsaWZ5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBOdWxsaWZ5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5Jbml0KFN0b3JhZ2VBdHRyaWJ1dGUuTk9ORSwgdHJ1ZSwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgaW5pdGlhbGl6ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgSW5pdChhdHRyOiBTdG9yYWdlQXR0cmlidXRlLCBpc051bGw6IGJvb2xlYW4sIG1nVmFsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuQXR0ciA9IGF0dHI7XHJcbiAgICB0aGlzLklzTnVsbCA9IGlzTnVsbDtcclxuXHJcblxyXG4gICAgc3dpdGNoICh0aGlzLkF0dHIpIHtcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuVU5JQ09ERTpcclxuICAgICAgICB0aGlzLlN0clZhbCA9IG1nVmFsO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkJMT0I6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CTE9CX1ZFQ1RPUjpcclxuICAgICAgICB0aGlzLlN0clZhbCA9IG1nVmFsO1xyXG4gICAgICAgIHRoaXMuSW5jbHVkZUJsb2JQcmVmaXggPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5EQVRFOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuVElNRTpcclxuICAgICAgICB0aGlzLk1nTnVtVmFsID0gKChtZ1ZhbCAhPT0gbnVsbCkgPyBuZXcgTlVNX1RZUEUobWdWYWwpIDogbnVsbCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTjpcclxuICAgICAgICB0aGlzLkJvb2xWYWwgPSAobWdWYWwgIT09IG51bGwgJiYgbWdWYWwgPT09ICcxJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuTk9ORTpcclxuICAgICAgICB0aGlzLkJvb2xWYWwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlN0clZhbCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5NZ051bVZhbCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5PcmlnaW5hbE51bGwgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuVmVjdG9yRmllbGQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuSW5jbHVkZUJsb2JQcmVmaXggPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5ET1RORVQ6XHJcbiAgICAgICAgLy8gRm9yIGRvdG5ldCBvYmplY3RzLCBFeHBWYWwgc2hvdWxkIGJlIGNvbnN0cnVjdGVkIHVzaW5nIG92ZXJsb2FkZWQgQ29uc3RydWN0b3IuXHJcbiAgICAgICAgLy8gSWYgaXQgaXMgYSBibG9iUHJlZml4LCBpdCBzaG91bGQgYmUgZG9uZSBoZXJlLlxyXG4gICAgICAgIHRoaXMuU3RyVmFsID0gbWdWYWw7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbignaW4gRXhwVmFsLkV4cFZhbCgpIGlsbGVnYWwgYXR0cmlidXRlOiBcXCcnICsgdGhpcy5BdHRyICsgJ1xcJycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEdldHMgdGhlIHN0cmluZyBmb3JtIG9mIHRoZSB2YWx1ZSBpbiB0aGUgRXhwVmFsIGNsYXNzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBUb01nVmFsKCk6IHN0cmluZyB7XHJcblxyXG4gICAgbGV0IHN0cjogc3RyaW5nO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5BdHRyKSB7XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQTpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkJMT0I6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CTE9CX1ZFQ1RPUjpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREU6XHJcbiAgICAgICAgc3RyID0gdGhpcy5TdHJWYWw7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQzpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkRBVEU6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5USU1FOlxyXG4gICAgICAgIHN0ciA9IHRoaXMuTWdOdW1WYWwudG9YTUxyZWNvcmQoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CT09MRUFOOlxyXG4gICAgICAgIHN0ciA9IHRoaXMuQm9vbFZhbFxyXG4gICAgICAgICAgPyAnMSdcclxuICAgICAgICAgIDogJzAnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBzdHIgPSAnW2lsbGVnYWwgYXR0cmlidXRlOiAnICsgdGhpcy5BdHRyICsgJ10nO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0cjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIGlzIGFuIGVtcHR5IHN0cmluZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBpc0VtcHR5U3RyaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICh0aGlzLkF0dHIgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEEgfHwgdGhpcy5BdHRyID09PSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREUpICYmIHRoaXMuU3RyVmFsID09PSAnJztcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
package/{esm2015/src/management/gui/ControlTable.js → esm2020/src/management/gui/ControlTable.mjs}
RENAMED
|
File without changes
|