@magic-xpa/gui 4.1100.0-dev4110.25 → 4.1100.0-dev4110.252
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/{esm2020 → esm2022}/index.mjs +71 -71
- package/{esm2020 → esm2022}/magic-xpa-gui.mjs +1 -1
- package/esm2022/src/Commands.mjs +184 -0
- package/esm2022/src/Events.mjs +425 -0
- package/esm2022/src/EventsProcessor.mjs +67 -0
- package/esm2022/src/FocusManager.mjs +34 -0
- package/esm2022/src/GuiConstants.mjs +68 -0
- package/{esm2020 → esm2022}/src/GuiEnums.mjs +299 -299
- package/esm2022/src/GuiEnvironment.mjs +4 -0
- package/{esm2020 → esm2022}/src/IFlowMonitorQueue.mjs +1 -1
- package/{esm2020 → esm2022}/src/Manager.mjs +91 -91
- package/esm2022/src/UIBridge.mjs +33 -0
- package/{esm2020 → esm2022}/src/env/IEnvironment.mjs +1 -1
- package/{esm2020 → esm2022}/src/gui/ControlBase.mjs +2 -2
- package/esm2022/src/gui/GuiMgControl.mjs +123 -0
- package/{esm2020 → esm2022}/src/gui/GuiMgForm.mjs +3 -3
- package/esm2022/src/gui/KeyboardItem.mjs +135 -0
- package/esm2022/src/gui/LastFocusedVal.mjs +11 -0
- package/esm2022/src/gui/MgValue.mjs +16 -0
- package/{esm2020 → esm2022}/src/gui/PropParentInterface.mjs +1 -1
- package/{esm2020 → esm2022}/src/gui/low/DialogHandler.mjs +6 -6
- package/esm2022/src/gui/low/GuiCommand.mjs +68 -0
- package/esm2022/src/gui/low/GuiCommandQueue.mjs +35 -0
- package/esm2022/src/gui/low/GuiInteractive.mjs +177 -0
- package/esm2022/src/gui/low/Style.mjs +20 -0
- package/esm2022/src/management/RuntimeContextBase.mjs +42 -0
- package/esm2022/src/management/data/BlobType.mjs +281 -0
- package/{esm2020 → esm2022}/src/management/data/DcValues.mjs +214 -214
- package/esm2022/src/management/data/DcValuesBuilderBase.mjs +96 -0
- package/esm2022/src/management/data/FieldDef.mjs +331 -0
- package/esm2022/src/management/data/FieldsTable.mjs +54 -0
- package/esm2022/src/management/data/GuiDataViewBase.mjs +88 -0
- package/esm2022/src/management/data/GuiFieldBase.mjs +82 -0
- package/{esm2020 → esm2022}/src/management/data/IRecord.mjs +1 -1
- package/{esm2020 → esm2022}/src/management/data/IReferencedObject.mjs +1 -1
- package/esm2022/src/management/data/NUM_TYPE.mjs +1739 -0
- package/esm2022/src/management/data/ObjectReferenceBase.mjs +48 -0
- package/esm2022/src/management/data/ObjectReferencesCollection.mjs +27 -0
- package/esm2022/src/management/data/RecordUtils.mjs +361 -0
- package/esm2022/src/management/data/VectorType.mjs +612 -0
- package/esm2022/src/management/data/VectorTypeBase.mjs +88 -0
- package/{esm2020 → esm2022}/src/management/events/IActionManager.mjs +1 -1
- package/{esm2020 → esm2022}/src/management/events/IGuiEventsManager.mjs +1 -1
- package/esm2022/src/management/exp/ExpressionInterface.mjs +244 -0
- package/{esm2020 → esm2022}/src/management/exp/GuiExpressionEvaluator.mjs +305 -307
- package/esm2022/src/management/gui/ControlTable.mjs +118 -0
- package/esm2022/src/management/gui/DisplayConvertor.mjs +1649 -0
- package/esm2022/src/management/gui/FieldValidator.mjs +711 -0
- package/esm2022/src/management/gui/GuiControlPropertyAdapter.mjs +24 -0
- package/{esm2020 → esm2022}/src/management/gui/GuiFormPropertyAdapter.mjs +10 -10
- package/esm2022/src/management/gui/HebrewDate.mjs +278 -0
- package/esm2022/src/management/gui/Helps.mjs +237 -0
- package/esm2022/src/management/gui/MgControlBase.mjs +1859 -0
- package/esm2022/src/management/gui/MgFormBase.mjs +741 -0
- package/esm2022/src/management/gui/PIC.mjs +1185 -0
- package/esm2022/src/management/gui/PropDefaults.mjs +230 -0
- package/{esm2020 → esm2022}/src/management/gui/PropInterface.mjs +246 -245
- package/esm2022/src/management/gui/PropTable.mjs +221 -0
- package/esm2022/src/management/gui/Property.mjs +1362 -0
- package/esm2022/src/management/gui/ValidationDetails.mjs +248 -0
- package/esm2022/src/management/gui/ValidationDetailsBase.mjs +93 -0
- package/esm2022/src/management/gui/WrongFormatException.mjs +29 -0
- package/esm2022/src/management/tasks/GuiDataCollection.mjs +4 -0
- package/esm2022/src/management/tasks/GuiTaskBase.mjs +511 -0
- package/{esm2020 → esm2022}/src/management/tasks/IMGDataTable.mjs +1 -1
- package/{esm2020 → esm2022}/src/management/tasks/ITask.mjs +1 -1
- package/esm2022/src/management/tasks/MgTimer.mjs +21 -0
- package/esm2022/src/management/tasks/TaskDefinitionId.mjs +54 -0
- package/esm2022/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +41 -0
- package/esm2022/src/util/MemoryUtil.mjs +35 -0
- package/{esm2020 → esm2022}/src/util/ObjectReference.mjs +36 -36
- package/esm2022/src/util/UsernamePasswordCredentials.mjs +52 -0
- package/{fesm2020 → fesm2022}/magic-xpa-gui.mjs +16074 -16074
- package/fesm2022/magic-xpa-gui.mjs.map +1 -0
- package/index.d.ts +70 -70
- package/package.json +6 -12
- package/src/Commands.d.ts +40 -39
- package/src/Events.d.ts +157 -155
- package/src/EventsProcessor.d.ts +13 -13
- package/src/FocusManager.d.ts +8 -8
- package/src/GuiConstants.d.ts +65 -65
- package/src/GuiEnums.d.ts +282 -282
- package/src/GuiEnvironment.d.ts +4 -4
- package/src/IFlowMonitorQueue.d.ts +3 -3
- package/src/Manager.d.ts +26 -26
- package/src/UIBridge.d.ts +16 -16
- package/src/env/IEnvironment.d.ts +31 -31
- package/src/gui/ControlBase.d.ts +4 -4
- package/src/gui/GuiMgControl.d.ts +38 -38
- package/src/gui/GuiMgForm.d.ts +3 -3
- package/src/gui/KeyboardItem.d.ts +18 -18
- package/src/gui/LastFocusedVal.d.ts +7 -7
- package/src/gui/MgValue.d.ts +15 -15
- package/src/gui/PropParentInterface.d.ts +13 -13
- package/src/gui/low/DialogHandler.d.ts +4 -4
- package/src/gui/low/GuiCommand.d.ts +37 -37
- package/src/gui/low/GuiCommandQueue.d.ts +13 -13
- package/src/gui/low/GuiInteractive.d.ts +55 -53
- package/src/gui/low/Style.d.ts +19 -19
- package/src/management/RuntimeContextBase.d.ts +23 -23
- package/src/management/data/BlobType.d.ts +29 -29
- package/src/management/data/DcValues.d.ts +33 -33
- package/src/management/data/DcValuesBuilderBase.d.ts +17 -17
- package/src/management/data/FieldDef.d.ts +53 -53
- package/src/management/data/FieldsTable.d.ts +16 -16
- package/src/management/data/GuiDataViewBase.d.ts +27 -27
- package/src/management/data/GuiFieldBase.d.ts +17 -17
- package/src/management/data/IRecord.d.ts +12 -12
- package/src/management/data/IReferencedObject.d.ts +5 -5
- package/src/management/data/NUM_TYPE.d.ts +103 -103
- package/src/management/data/ObjectReferenceBase.d.ts +16 -16
- package/src/management/data/ObjectReferencesCollection.d.ts +10 -10
- package/src/management/data/RecordUtils.d.ts +21 -21
- package/src/management/data/VectorType.d.ts +52 -52
- package/src/management/data/VectorTypeBase.d.ts +8 -8
- package/src/management/events/IActionManager.d.ts +7 -7
- package/src/management/events/IGuiEventsManager.d.ts +20 -20
- package/src/management/exp/ExpressionInterface.d.ts +242 -242
- package/src/management/exp/GuiExpressionEvaluator.d.ts +47 -47
- package/src/management/gui/ControlTable.d.ts +28 -28
- package/src/management/gui/DisplayConvertor.d.ts +103 -103
- package/src/management/gui/FieldValidator.d.ts +35 -35
- package/src/management/gui/GuiControlPropertyAdapter.d.ts +40 -40
- package/src/management/gui/GuiFormPropertyAdapter.d.ts +17 -17
- package/src/management/gui/HebrewDate.d.ts +46 -46
- package/src/management/gui/Helps.d.ts +51 -51
- package/src/management/gui/MgControlBase.d.ts +223 -223
- package/src/management/gui/MgFormBase.d.ts +160 -160
- package/src/management/gui/PIC.d.ts +108 -108
- package/src/management/gui/PropDefaults.d.ts +7 -7
- package/src/management/gui/PropInterface.d.ts +244 -243
- package/src/management/gui/PropTable.d.ts +33 -33
- package/src/management/gui/Property.d.ts +121 -121
- package/src/management/gui/ValidationDetails.d.ts +52 -52
- package/src/management/gui/ValidationDetailsBase.d.ts +14 -14
- package/src/management/gui/WrongFormatException.d.ts +9 -9
- package/src/management/tasks/GuiDataCollection.d.ts +4 -4
- package/src/management/tasks/GuiTaskBase.d.ts +150 -150
- package/src/management/tasks/IMGDataTable.d.ts +10 -10
- package/src/management/tasks/ITask.d.ts +6 -6
- package/src/management/tasks/MgTimer.d.ts +8 -8
- package/src/management/tasks/TaskDefinitionId.d.ts +16 -16
- package/src/management/tasks/TaskDefinitionIdTableSaxHandler.d.ts +7 -7
- package/src/util/MemoryUtil.d.ts +6 -6
- package/src/util/ObjectReference.d.ts +9 -9
- package/src/util/UsernamePasswordCredentials.d.ts +18 -18
- package/esm2020/src/Commands.mjs +0 -177
- package/esm2020/src/Events.mjs +0 -420
- package/esm2020/src/EventsProcessor.mjs +0 -67
- package/esm2020/src/FocusManager.mjs +0 -34
- package/esm2020/src/GuiConstants.mjs +0 -68
- package/esm2020/src/GuiEnvironment.mjs +0 -4
- package/esm2020/src/UIBridge.mjs +0 -32
- package/esm2020/src/gui/GuiMgControl.mjs +0 -125
- package/esm2020/src/gui/KeyboardItem.mjs +0 -135
- package/esm2020/src/gui/LastFocusedVal.mjs +0 -11
- package/esm2020/src/gui/MgValue.mjs +0 -16
- package/esm2020/src/gui/low/GuiCommand.mjs +0 -66
- package/esm2020/src/gui/low/GuiCommandQueue.mjs +0 -35
- package/esm2020/src/gui/low/GuiInteractive.mjs +0 -165
- package/esm2020/src/gui/low/Style.mjs +0 -20
- package/esm2020/src/management/RuntimeContextBase.mjs +0 -43
- package/esm2020/src/management/data/BlobType.mjs +0 -281
- package/esm2020/src/management/data/DcValuesBuilderBase.mjs +0 -96
- package/esm2020/src/management/data/FieldDef.mjs +0 -331
- package/esm2020/src/management/data/FieldsTable.mjs +0 -54
- package/esm2020/src/management/data/GuiDataViewBase.mjs +0 -90
- package/esm2020/src/management/data/GuiFieldBase.mjs +0 -82
- package/esm2020/src/management/data/NUM_TYPE.mjs +0 -1741
- package/esm2020/src/management/data/ObjectReferenceBase.mjs +0 -48
- package/esm2020/src/management/data/ObjectReferencesCollection.mjs +0 -29
- package/esm2020/src/management/data/RecordUtils.mjs +0 -361
- package/esm2020/src/management/data/VectorType.mjs +0 -612
- package/esm2020/src/management/data/VectorTypeBase.mjs +0 -88
- package/esm2020/src/management/exp/ExpressionInterface.mjs +0 -244
- package/esm2020/src/management/gui/ControlTable.mjs +0 -118
- package/esm2020/src/management/gui/DisplayConvertor.mjs +0 -1679
- package/esm2020/src/management/gui/FieldValidator.mjs +0 -711
- package/esm2020/src/management/gui/GuiControlPropertyAdapter.mjs +0 -22
- package/esm2020/src/management/gui/HebrewDate.mjs +0 -278
- package/esm2020/src/management/gui/Helps.mjs +0 -237
- package/esm2020/src/management/gui/MgControlBase.mjs +0 -1858
- package/esm2020/src/management/gui/MgFormBase.mjs +0 -738
- package/esm2020/src/management/gui/PIC.mjs +0 -1185
- package/esm2020/src/management/gui/PropDefaults.mjs +0 -230
- package/esm2020/src/management/gui/PropTable.mjs +0 -221
- package/esm2020/src/management/gui/Property.mjs +0 -1356
- package/esm2020/src/management/gui/ValidationDetails.mjs +0 -248
- package/esm2020/src/management/gui/ValidationDetailsBase.mjs +0 -93
- package/esm2020/src/management/gui/WrongFormatException.mjs +0 -29
- package/esm2020/src/management/tasks/GuiDataCollection.mjs +0 -4
- package/esm2020/src/management/tasks/GuiTaskBase.mjs +0 -510
- package/esm2020/src/management/tasks/MgTimer.mjs +0 -21
- package/esm2020/src/management/tasks/TaskDefinitionId.mjs +0 -54
- package/esm2020/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +0 -41
- package/esm2020/src/util/MemoryUtil.mjs +0 -35
- package/esm2020/src/util/UsernamePasswordCredentials.mjs +0 -52
- package/fesm2015/magic-xpa-gui.mjs +0 -16364
- package/fesm2015/magic-xpa-gui.mjs.map +0 -1
- package/fesm2020/magic-xpa-gui.mjs.map +0 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { GuiMgControl } from "../../gui/GuiMgControl";
|
|
2
|
+
export class GuiControlPropertyAdapter extends GuiMgControl {
|
|
3
|
+
DataType;
|
|
4
|
+
InControl;
|
|
5
|
+
async updatePropertyLogicNesting(propId, commandType, val, updateThis) {
|
|
6
|
+
return Promise.resolve();
|
|
7
|
+
}
|
|
8
|
+
async refreshAndSetItemsList(line, execComputeChoice) {
|
|
9
|
+
return Promise.resolve();
|
|
10
|
+
}
|
|
11
|
+
async refreshTabForLayerList(line) {
|
|
12
|
+
return Promise.resolve();
|
|
13
|
+
}
|
|
14
|
+
async ComputeAndRefreshDisplayValue(forceRefresh) {
|
|
15
|
+
return Promise.resolve();
|
|
16
|
+
}
|
|
17
|
+
async refreshDispRange(execComputeChoice) {
|
|
18
|
+
return Promise.resolve([]);
|
|
19
|
+
}
|
|
20
|
+
async isParkable(checkEnabledAndVisible) {
|
|
21
|
+
return Promise.resolve(true);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvbWFuYWdlbWVudC9ndWkvR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFHcEQsTUFBTSxPQUFnQix5QkFBMEIsU0FBUSxZQUFZO0lBQ2xFLFFBQVEsQ0FBbUI7SUFDM0IsU0FBUyxDQUFVO0lBMEJuQixLQUFLLENBQUMsMEJBQTBCLENBQUMsTUFBYyxFQUFFLFdBQXdCLEVBQUUsR0FBWSxFQUFFLFVBQW1CO1FBQzFHLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFXRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsSUFBWSxFQUFFLGlCQUEwQjtRQUNuRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLHNCQUFzQixDQUFDLElBQVk7UUFDdkMsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQVlBLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxZQUFxQjtRQUN2RCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLGlCQUEwQjtRQUMvQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQVFGLEtBQUssQ0FBQyxVQUFVLENBQUMsc0JBQStCO1FBQzlDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1N0b3JhZ2VBdHRyaWJ1dGV9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7UElDfSBmcm9tIFwiLi9QSUNcIjtcclxuaW1wb3J0IHtHdWlGaWVsZEJhc2V9IGZyb20gXCIuLi9kYXRhL0d1aUZpZWxkQmFzZVwiO1xyXG5pbXBvcnQge0NvbW1hbmRUeXBlfSBmcm9tIFwiLi4vLi4vR3VpRW51bXNcIjtcclxuaW1wb3J0IHtHdWlNZ0NvbnRyb2x9IGZyb20gXCIuLi8uLi9ndWkvR3VpTWdDb250cm9sXCI7XHJcbmltcG9ydCB7R3VpRm9ybVByb3BlcnR5QWRhcHRlcn0gZnJvbSBcIi4vR3VpRm9ybVByb3BlcnR5QWRhcHRlclwiO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEd1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXIgZXh0ZW5kcyBHdWlNZ0NvbnRyb2wge1xyXG4gIERhdGFUeXBlOiBTdG9yYWdlQXR0cmlidXRlO1xyXG4gIEluQ29udHJvbDogYm9vbGVhbjtcclxuXHJcblxyXG4gIGFic3RyYWN0IHNldFBpY1N0cihmb3JtYXQ6IHN0cmluZywgZXhwSWQ6IG51bWJlcik6IHZvaWQ7XHJcblxyXG4gIGFic3RyYWN0IHNldFJhbmdlKG5ld1JhbmdlOiBzdHJpbmcpOiB2b2lkO1xyXG5cclxuICBhYnN0cmFjdCBzZXRWYWxFeHAoZXhwSWQ6IG51bWJlcik6IHZvaWQ7XHJcblxyXG4gIGFic3RyYWN0IHNldEZpZWxkKGZpZWxkT3JGaWVsZFN0cklEOiBhbnkpOiB2b2lkO1xyXG4gIGFic3RyYWN0IGdldEZvcm0oKTogR3VpRm9ybVByb3BlcnR5QWRhcHRlcjtcclxuXHJcbiAgYWJzdHJhY3QgZ2V0TGF5ZXIoKTogbnVtYmVyO1xyXG5cclxuICBhYnN0cmFjdCBjb21wdXRlUElDKHBpY0V4cFJlc3VsdDogc3RyaW5nKTogUElDO1xyXG5cclxuICBhYnN0cmFjdCBzZXRJbWFnZUxpc3QodXJsOiBzdHJpbmcpOiB2b2lkO1xyXG5cclxuICBhYnN0cmFjdCBzZXRJbWFnZVdpdGhGaWxlTmFtZShmaWxlTmFtZTogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgYWJzdHJhY3QgaXNEZXNjZW5kZW50T2ZDb250cm9sKGNvbnRyb2w6IEd1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXIpOiBib29sZWFuO1xyXG5cclxuICBhYnN0cmFjdCBnZXRMaW5rZWRQYXJlbnQoY2hlY2tTdWJmb3JtRmF0aGVyOiBib29sZWFuKTogR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlcjtcclxuXHJcbiAgYWJzdHJhY3QgU2V0RW5hYmxlZCh2YWw6IGJvb2xlYW4pOiB2b2lkO1xyXG5cclxuICBhc3luYyB1cGRhdGVQcm9wZXJ0eUxvZ2ljTmVzdGluZyhwcm9wSWQ6IG51bWJlciwgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLCB2YWw6IGJvb2xlYW4sIHVwZGF0ZVRoaXM6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+e1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gIH1cclxuXHJcbiAgYWJzdHJhY3QgSXNEYXRlVGltZVBpY3R1cmUoKTogYm9vbGVhbjtcclxuXHJcbiAgYWJzdHJhY3QgR2V0Q3VyclJlYWRPbmx5KCk6IGJvb2xlYW47XHJcblxyXG4gIGFic3RyYWN0IFNldEN1cnJSZWFkT25seShuZXdWYWw6IGJvb2xlYW4pOiB2b2lkO1xyXG5cclxuXHJcbiAgYWJzdHJhY3QgZ2V0RGlzcGxheUxpbmUodXNlTGluZUZvckl0ZW1zOiBib29sZWFuKTogbnVtYmVyO1xyXG5cclxuICBhc3luYyByZWZyZXNoQW5kU2V0SXRlbXNMaXN0KGxpbmU6IG51bWJlciwgZXhlY0NvbXB1dGVDaG9pY2U6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+e1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVmcmVzaFRhYkZvckxheWVyTGlzdChsaW5lOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+e1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gIH1cclxuXHJcbiAgYWJzdHJhY3QgZ2V0UElDKCk6IFBJQztcclxuXHJcbiAgYWJzdHJhY3QgcmVzZXRQcmV2VmFsKCk6IHZvaWQ7XHJcblxyXG4gIGFic3RyYWN0IGdldEZpZWxkKCk6IEd1aUZpZWxkQmFzZTtcclxuXHJcbiAgYWJzdHJhY3QgZXhwcmVzc2lvblNldEFzRGF0YSgpOiBib29sZWFuO1xyXG5cclxuICBhYnN0cmFjdCBjbGVhclJhbmdlKGxpbmU6IG51bWJlcik6IHZvaWQ7XHJcblxyXG4gICBhc3luYyBDb21wdXRlQW5kUmVmcmVzaERpc3BsYXlWYWx1ZShmb3JjZVJlZnJlc2g6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+e1xyXG4gICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgfVxyXG5cclxuICAgYXN5bmMgcmVmcmVzaERpc3BSYW5nZShleGVjQ29tcHV0ZUNob2ljZTogYm9vbGVhbik6IFByb21pc2U8c3RyaW5nW10+e1xyXG4gICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xyXG4gICB9XHJcblxyXG4gIGFic3RyYWN0IGlzUHJvcGVydHlSZXBlYXRhYmxlKHByb3BJZDogbnVtYmVyKTogYm9vbGVhbjtcclxuXHJcbiAgYWJzdHJhY3QgaXNWaXNpYmxlKCk6IGJvb2xlYW47XHJcblxyXG4gIGFic3RyYWN0IGdldFByb3AocHJvcElkOiBudW1iZXIpOiBhbnkgO1xyXG5cclxuICBhc3luYyBpc1BhcmthYmxlKGNoZWNrRW5hYmxlZEFuZFZpc2libGU6IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+e1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { GuiMgForm } from "../../gui/GuiMgForm";
|
|
2
|
-
import { XMLConstants } from "@magic-xpa/utils";
|
|
3
|
-
export class GuiFormPropertyAdapter extends GuiMgForm {
|
|
4
|
-
static IsFormTag(tagName) {
|
|
5
|
-
return tagName === XMLConstants.MG_TAG_FORM || tagName === XMLConstants.MG_TAG_FORM_PROPERTIES;
|
|
6
|
-
}
|
|
7
|
-
static IsEndFormTag(tagName) {
|
|
8
|
-
return tagName === ("/" + XMLConstants.MG_TAG_FORM) || tagName === ("/" + XMLConstants.MG_TAG_FORM_PROPERTIES);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
1
|
+
import { GuiMgForm } from "../../gui/GuiMgForm";
|
|
2
|
+
import { XMLConstants } from "@magic-xpa/utils";
|
|
3
|
+
export class GuiFormPropertyAdapter extends GuiMgForm {
|
|
4
|
+
static IsFormTag(tagName) {
|
|
5
|
+
return tagName === XMLConstants.MG_TAG_FORM || tagName === XMLConstants.MG_TAG_FORM_PROPERTIES;
|
|
6
|
+
}
|
|
7
|
+
static IsEndFormTag(tagName) {
|
|
8
|
+
return tagName === ("/" + XMLConstants.MG_TAG_FORM) || tagName === ("/" + XMLConstants.MG_TAG_FORM_PROPERTIES);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
11
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpRm9ybVByb3BlcnR5QWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvbWFuYWdlbWVudC9ndWkvR3VpRm9ybVByb3BlcnR5QWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHaEQsT0FBTyxFQUFpQixZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvRCxNQUFNLE9BQWdCLHNCQUF1QixTQUFRLFNBQVM7SUFNNUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFlO1FBQzlCLE9BQU8sT0FBTyxLQUFLLFlBQVksQ0FBQyxXQUFXLElBQUksT0FBTyxLQUFLLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQztJQUNqRyxDQUFDO0lBS0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFlO1FBQ2pDLE9BQU8sT0FBTyxLQUFLLENBQUMsR0FBRyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxPQUFPLEtBQUssQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDakgsQ0FBQztDQXNCRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEd1aU1nRm9ybSB9IGZyb20gXCIuLi8uLi9ndWkvR3VpTWdGb3JtXCI7XHJcbmltcG9ydCB7IEd1aVRhc2tCYXNlIH0gZnJvbSBcIi4uL3Rhc2tzL0d1aVRhc2tCYXNlXCI7XHJcbmltcG9ydCB7IEd1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXIgfSBmcm9tIFwiLi9HdWlDb250cm9sUHJvcGVydHlBZGFwdGVyXCI7XHJcbmltcG9ydCB7IE1nQ29udHJvbFR5cGUsIFhNTENvbnN0YW50cyB9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR3VpRm9ybVByb3BlcnR5QWRhcHRlciBleHRlbmRzIEd1aU1nRm9ybSB7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInByb3BJZFwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIElzRm9ybVRhZyh0YWdOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0YWdOYW1lID09PSBYTUxDb25zdGFudHMuTUdfVEFHX0ZPUk0gfHwgdGFnTmFtZSA9PT0gWE1MQ29uc3RhbnRzLk1HX1RBR19GT1JNX1BST1BFUlRJRVM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJldHVybiBhIHByb3BlcnR5IG9mIHRoZSBmb3JtIGJ5IGl0cyBJZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIElzRW5kRm9ybVRhZyh0YWdOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0YWdOYW1lID09PSAoXCIvXCIgKyBYTUxDb25zdGFudHMuTUdfVEFHX0ZPUk0pIHx8IHRhZ05hbWUgPT09IChcIi9cIiArIFhNTENvbnN0YW50cy5NR19UQUdfRk9STV9QUk9QRVJUSUVTKTtcclxuICB9XHJcblxyXG5cclxuICBhYnN0cmFjdCBnZXRUYXNrKCk6IEd1aVRhc2tCYXNlO1xyXG5cclxuICBhYnN0cmFjdCBpc1JlZnJlc2hSZXBlYXRhYmxlQWxsb3dlZCgpOiBib29sZWFuO1xyXG5cclxuICBhYnN0cmFjdCBpc1N1YkZvcm0oKTogYm9vbGVhbjtcclxuXHJcbiAgYWJzdHJhY3QgZ2V0U3ViRm9ybUN0cmwoKTogR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlcjtcclxuXHJcbiAgYWJzdHJhY3QgZ2V0Q3RybEJ5TmFtZShjdHJsTmFtZTogc3RyaW5nLCBjdHJsVHlwZTogTWdDb250cm9sVHlwZSk6IEd1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXI7XHJcblxyXG4gIGFic3RyYWN0IGdldFRhYmxlSXRlbXNDb3VudCgpOiBudW1iZXI7XHJcblxyXG5cclxuICBhYnN0cmFjdCBmaWxsTmFtZShmb3JtVGFnOiBzdHJpbmcpOiB2b2lkO1xyXG5cclxuICBhYnN0cmFjdCBjaGVja0FuZENyZWF0ZVJvdyhpZHg6IG51bWJlcik6IHZvaWQ7XHJcblxyXG4gIGFic3RyYWN0IHNldCBEaXNwbGF5TGluZSh2YWx1ZTogbnVtYmVyKTtcclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import { Events } from '../../Events';
|
|
2
|
+
import { MsgInterface } from '@magic-xpa/utils';
|
|
3
|
+
import { MemoryUtil } from '../../util/MemoryUtil';
|
|
4
|
+
export class HebrewDate {
|
|
5
|
+
static PARTS_PER_HOUR = 1080;
|
|
6
|
+
static HOURS_PER_DAY = 24;
|
|
7
|
+
static PARTS_PER_DAY = (HebrewDate.HOURS_PER_DAY * HebrewDate.PARTS_PER_HOUR);
|
|
8
|
+
static MONTH_DAYS = 29;
|
|
9
|
+
static MONTH_EXTRA_PARTS = (12 * HebrewDate.PARTS_PER_HOUR + 793);
|
|
10
|
+
static PARTS_PER_MONTH = (HebrewDate.MONTH_DAYS * HebrewDate.PARTS_PER_DAY + HebrewDate.MONTH_EXTRA_PARTS);
|
|
11
|
+
static MONTHS_PER_NORM_YEAR = 12;
|
|
12
|
+
static MONTHS_PER_LEAP_YEAR = 13;
|
|
13
|
+
static NORM_YEARS_PER_CYCLE = 12;
|
|
14
|
+
static LEAP_YEARS_PER_CYCLE = 7;
|
|
15
|
+
static YEARS_PER_CYCLE = (HebrewDate.NORM_YEARS_PER_CYCLE + HebrewDate.LEAP_YEARS_PER_CYCLE);
|
|
16
|
+
static MONTHS_PER_CYCLE = (HebrewDate.NORM_YEARS_PER_CYCLE * HebrewDate.MONTHS_PER_NORM_YEAR + HebrewDate.LEAP_YEARS_PER_CYCLE * HebrewDate.MONTHS_PER_LEAP_YEAR);
|
|
17
|
+
static PARTS_PER_LEAP_YEAR = (HebrewDate.MONTHS_PER_LEAP_YEAR * HebrewDate.PARTS_PER_MONTH);
|
|
18
|
+
static DAYS_PER_LEAP_YEAR = Math.floor(HebrewDate.PARTS_PER_LEAP_YEAR / HebrewDate.PARTS_PER_DAY);
|
|
19
|
+
static PARTS_PER_CYCLE = (HebrewDate.MONTHS_PER_CYCLE * HebrewDate.PARTS_PER_MONTH);
|
|
20
|
+
static DAYS_PER_CYCLE = Math.floor(HebrewDate.PARTS_PER_CYCLE / HebrewDate.PARTS_PER_DAY);
|
|
21
|
+
static CREATION_DOW = 2;
|
|
22
|
+
static CREATION_PARTS = (5 * HebrewDate.PARTS_PER_HOUR + 204);
|
|
23
|
+
static DAYS_TIL_JESUS = 1373428;
|
|
24
|
+
static HESHVAN = 2;
|
|
25
|
+
static KISLEV = 3;
|
|
26
|
+
static ADAR = 6;
|
|
27
|
+
static ADAR_B = 13;
|
|
28
|
+
static DATEHEB_letters = [
|
|
29
|
+
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 20, 30, 40, 40, 50, 50, 60, 70,
|
|
30
|
+
80, 80, 90, 90, 100, 200, 300, 400
|
|
31
|
+
];
|
|
32
|
+
static ALEF = 'א';
|
|
33
|
+
static TAV = 'ת';
|
|
34
|
+
static DATEHEB_months_n = [
|
|
35
|
+
0, 12, 24, 37, 49, 61, 74, 86, 99, 111, 123, 136, 148, 160, 173, 185, 197, 210, 222,
|
|
36
|
+
235
|
|
37
|
+
];
|
|
38
|
+
static DATEHEB_norm_days_in_month = [
|
|
39
|
+
30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 0
|
|
40
|
+
];
|
|
41
|
+
static DATEHEB_leap_days_in_month = [
|
|
42
|
+
30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29
|
|
43
|
+
];
|
|
44
|
+
static MONTH_LEN = 5;
|
|
45
|
+
static _localMonths = new Array(15);
|
|
46
|
+
static DOW_LEN = 5;
|
|
47
|
+
static _localDows = new Array(8);
|
|
48
|
+
static dateheb_year_is_leap(year) {
|
|
49
|
+
year = year % HebrewDate.YEARS_PER_CYCLE;
|
|
50
|
+
return (HebrewDate.DATEHEB_months_n[(year + 1)] - HebrewDate.DATEHEB_months_n[year] === 13);
|
|
51
|
+
}
|
|
52
|
+
static dateheb_days_in_month(month, leap, days_in_year) {
|
|
53
|
+
let days_in_month = leap ? HebrewDate.DATEHEB_leap_days_in_month[month - 1] : HebrewDate.DATEHEB_norm_days_in_month[month - 1];
|
|
54
|
+
if (leap)
|
|
55
|
+
days_in_year = days_in_year - 30;
|
|
56
|
+
switch (days_in_year) {
|
|
57
|
+
case 353:
|
|
58
|
+
if (month === HebrewDate.KISLEV)
|
|
59
|
+
days_in_month = 29;
|
|
60
|
+
break;
|
|
61
|
+
case 355:
|
|
62
|
+
if (month === HebrewDate.HESHVAN)
|
|
63
|
+
days_in_month = 30;
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
return days_in_month;
|
|
67
|
+
}
|
|
68
|
+
static dateheb_year_start(year) {
|
|
69
|
+
year = year - 1;
|
|
70
|
+
let cycle = Math.floor(year / HebrewDate.YEARS_PER_CYCLE);
|
|
71
|
+
year = year % HebrewDate.YEARS_PER_CYCLE;
|
|
72
|
+
let months = cycle * HebrewDate.MONTHS_PER_CYCLE + HebrewDate.DATEHEB_months_n[year];
|
|
73
|
+
let days = months * HebrewDate.MONTH_DAYS;
|
|
74
|
+
let parts = months * HebrewDate.MONTH_EXTRA_PARTS + HebrewDate.CREATION_PARTS;
|
|
75
|
+
days = days + Math.floor(parts / HebrewDate.PARTS_PER_DAY);
|
|
76
|
+
parts = parts % HebrewDate.PARTS_PER_DAY;
|
|
77
|
+
if (parts >= Math.floor(HebrewDate.PARTS_PER_DAY * 3 / 4)) {
|
|
78
|
+
parts = 0;
|
|
79
|
+
days = days + 1;
|
|
80
|
+
}
|
|
81
|
+
let dow = (days - 1 + HebrewDate.CREATION_DOW) % 7 + 1;
|
|
82
|
+
if ((dow === 1) || (dow === 4) || (dow === 6)) {
|
|
83
|
+
parts = 0;
|
|
84
|
+
days = days + 1;
|
|
85
|
+
}
|
|
86
|
+
if (!HebrewDate.dateheb_year_is_leap(year)) {
|
|
87
|
+
if (dow === 3 && parts >= (9 * HebrewDate.PARTS_PER_HOUR + 204))
|
|
88
|
+
days = days + 2;
|
|
89
|
+
}
|
|
90
|
+
if (HebrewDate.dateheb_year_is_leap(year + HebrewDate.YEARS_PER_CYCLE - 1)) {
|
|
91
|
+
if (dow === 2 && parts >= (15 * HebrewDate.PARTS_PER_HOUR + 589))
|
|
92
|
+
days = days + 1;
|
|
93
|
+
}
|
|
94
|
+
return days;
|
|
95
|
+
}
|
|
96
|
+
static dateheb_4_d(date, day, month, year) {
|
|
97
|
+
date = date + HebrewDate.DAYS_TIL_JESUS;
|
|
98
|
+
let cycle = Math.floor(date / (HebrewDate.DAYS_PER_CYCLE + 1));
|
|
99
|
+
let days = date % (HebrewDate.DAYS_PER_CYCLE + 1);
|
|
100
|
+
year.value = cycle * HebrewDate.YEARS_PER_CYCLE;
|
|
101
|
+
year.value = year.value + Math.floor(days / (HebrewDate.DAYS_PER_LEAP_YEAR + 1));
|
|
102
|
+
let next_year_start;
|
|
103
|
+
while (true) {
|
|
104
|
+
next_year_start = HebrewDate.dateheb_year_start(year.value + 1);
|
|
105
|
+
if (next_year_start >= date)
|
|
106
|
+
break;
|
|
107
|
+
year.value = year.value + 1;
|
|
108
|
+
}
|
|
109
|
+
let curr_year_start = HebrewDate.dateheb_year_start(year.value);
|
|
110
|
+
day.value = date - curr_year_start;
|
|
111
|
+
let days_in_year = next_year_start - curr_year_start;
|
|
112
|
+
let leap = days_in_year > 355;
|
|
113
|
+
let i;
|
|
114
|
+
for (i = 1; i < 13; i = i + 1) {
|
|
115
|
+
let days_in_month = HebrewDate.dateheb_days_in_month(i, leap, days_in_year);
|
|
116
|
+
if (day.value <= days_in_month)
|
|
117
|
+
break;
|
|
118
|
+
day.value = day.value - days_in_month;
|
|
119
|
+
}
|
|
120
|
+
if (!leap || i <= HebrewDate.ADAR)
|
|
121
|
+
month.value = i;
|
|
122
|
+
else if (i === HebrewDate.ADAR + 1)
|
|
123
|
+
month.value = HebrewDate.ADAR_B;
|
|
124
|
+
else
|
|
125
|
+
month.value = i - 1;
|
|
126
|
+
return leap;
|
|
127
|
+
}
|
|
128
|
+
static dateheb_i_2_h(val, str, strPos, use_ending, quote) {
|
|
129
|
+
let let_idx = 0;
|
|
130
|
+
let len = 0;
|
|
131
|
+
while (val > 0) {
|
|
132
|
+
for (let_idx = HebrewDate.DATEHEB_letters.length; let_idx > 0; let_idx = let_idx - 1) {
|
|
133
|
+
let letter = HebrewDate.DATEHEB_letters[let_idx - 1];
|
|
134
|
+
if (val >= letter) {
|
|
135
|
+
val = val - letter;
|
|
136
|
+
str[strPos++] = String.fromCharCode(HebrewDate.ALEF.charCodeAt(0) + let_idx - 1);
|
|
137
|
+
len = len + 1;
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (len > 0) {
|
|
143
|
+
if (len >= 2) {
|
|
144
|
+
if (str[strPos - 2] === 'י')
|
|
145
|
+
if (str[strPos - 1] === 'ה' || str[strPos - 1] === 'ו') {
|
|
146
|
+
str[strPos - 2] = String.fromCharCode(str[strPos - 2].charCodeAt(0) - 1);
|
|
147
|
+
str[strPos - 1] = str[strPos - 1] + '\u0001';
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
if (let_idx > 10 && use_ending) {
|
|
151
|
+
if (HebrewDate.DATEHEB_letters[let_idx - 1] === HebrewDate.DATEHEB_letters[let_idx - 2]) {
|
|
152
|
+
str[strPos - 1] = String.fromCharCode(str[strPos - 1].charCodeAt(0) - 1);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (quote) {
|
|
156
|
+
if (len === 1)
|
|
157
|
+
str[strPos] = '\'';
|
|
158
|
+
else {
|
|
159
|
+
str[strPos] = str[strPos - 1];
|
|
160
|
+
str[strPos - 1] = '"';
|
|
161
|
+
}
|
|
162
|
+
len = len + 1;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return len;
|
|
166
|
+
}
|
|
167
|
+
static dateheb_2_str(outStr, strPos, len, out_len, full_len, hyear, trim, use_ending) {
|
|
168
|
+
let quote = len > full_len && outStr[strPos + full_len] === outStr[strPos];
|
|
169
|
+
if (quote)
|
|
170
|
+
full_len = full_len + 1;
|
|
171
|
+
let heb_len = HebrewDate.dateheb_i_2_h(hyear % 1000, outStr, strPos, use_ending, quote);
|
|
172
|
+
let rem_len = full_len - heb_len;
|
|
173
|
+
if (rem_len > 0) {
|
|
174
|
+
if (trim) {
|
|
175
|
+
out_len.value = out_len.value - rem_len;
|
|
176
|
+
let tmp_out_len = len - full_len;
|
|
177
|
+
if (tmp_out_len > 0)
|
|
178
|
+
MemoryUtil.char_memcpy(outStr, strPos + heb_len, outStr, strPos + full_len, tmp_out_len);
|
|
179
|
+
else
|
|
180
|
+
heb_len = full_len;
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
if (rem_len > outStr.length - strPos - heb_len)
|
|
184
|
+
rem_len = outStr.length - strPos - heb_len;
|
|
185
|
+
MemoryUtil.char_memset(outStr, strPos + heb_len, ' ', rem_len);
|
|
186
|
+
heb_len = full_len;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return heb_len;
|
|
190
|
+
}
|
|
191
|
+
static GetLocalMonths() {
|
|
192
|
+
let monthLen = HebrewDate.MONTH_LEN;
|
|
193
|
+
if (HebrewDate._localMonths[0] === null) {
|
|
194
|
+
let monthStr = Events.GetMessageString(MsgInterface.DATEHEB_MONTH_STR);
|
|
195
|
+
if (monthStr !== null) {
|
|
196
|
+
HebrewDate._localMonths[0] = " ";
|
|
197
|
+
for (let i = 1; i < HebrewDate._localMonths.length; i = i + 1)
|
|
198
|
+
HebrewDate._localMonths[i] = monthStr.substr((i - 1) * monthLen, i * monthLen - (i - 1) * monthLen);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return HebrewDate._localMonths;
|
|
202
|
+
}
|
|
203
|
+
static GetLocalDows() {
|
|
204
|
+
let dowLen = HebrewDate.DOW_LEN;
|
|
205
|
+
if (HebrewDate._localDows[0] === null) {
|
|
206
|
+
let dowsStr = Events.GetMessageString(MsgInterface.DATEHEB_DOW_STR);
|
|
207
|
+
if (dowsStr !== null) {
|
|
208
|
+
HebrewDate._localDows[0] = " ";
|
|
209
|
+
for (let i = 1; i < HebrewDate._localDows.length; i = i + 1)
|
|
210
|
+
HebrewDate._localDows[i] = dowsStr.substr((i - 1) * dowLen, i * dowLen - (i - 1) * dowLen);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return HebrewDate._localDows;
|
|
214
|
+
}
|
|
215
|
+
static dateheb_h_2_i(str, len, pos) {
|
|
216
|
+
let val;
|
|
217
|
+
let has_1_to_9 = false;
|
|
218
|
+
let has_10_to_90 = false;
|
|
219
|
+
let has_100_to_300 = false;
|
|
220
|
+
let cnt_400 = 0;
|
|
221
|
+
let last_val = 1000;
|
|
222
|
+
let let_val;
|
|
223
|
+
for (val = 0; len > 0 && pos < str.length; pos++, len--)
|
|
224
|
+
if (str[pos] >= HebrewDate.ALEF && str[pos] <= HebrewDate.TAV) {
|
|
225
|
+
let_val = HebrewDate.DATEHEB_letters[(str[pos].charCodeAt(0) - HebrewDate.ALEF.charCodeAt(0))];
|
|
226
|
+
if (let_val > last_val)
|
|
227
|
+
return 0;
|
|
228
|
+
if (let_val === 400) {
|
|
229
|
+
if (cnt_400 === 2)
|
|
230
|
+
return 0;
|
|
231
|
+
cnt_400 = cnt_400 + 1;
|
|
232
|
+
}
|
|
233
|
+
else if (let_val >= 100) {
|
|
234
|
+
if (has_100_to_300)
|
|
235
|
+
return 0;
|
|
236
|
+
has_100_to_300 = true;
|
|
237
|
+
}
|
|
238
|
+
else if (let_val >= 10) {
|
|
239
|
+
if (has_10_to_90)
|
|
240
|
+
return 0;
|
|
241
|
+
has_10_to_90 = true;
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
if (has_1_to_9) {
|
|
245
|
+
if (has_10_to_90 || last_val !== 9)
|
|
246
|
+
return 0;
|
|
247
|
+
if (let_val !== 6 && let_val !== 7)
|
|
248
|
+
return 0;
|
|
249
|
+
}
|
|
250
|
+
has_1_to_9 = true;
|
|
251
|
+
}
|
|
252
|
+
val = val + let_val;
|
|
253
|
+
last_val = let_val;
|
|
254
|
+
}
|
|
255
|
+
return val;
|
|
256
|
+
}
|
|
257
|
+
static dateheb_2_d(year, month, day) {
|
|
258
|
+
if (day === 0 && month === 0 && year === 0)
|
|
259
|
+
return 0;
|
|
260
|
+
if (day === 0 || month === 0 || year === 0)
|
|
261
|
+
return 1000000000;
|
|
262
|
+
let days_from_creation = HebrewDate.dateheb_year_start(year);
|
|
263
|
+
let days_in_year = HebrewDate.dateheb_year_start(year + 1) - days_from_creation;
|
|
264
|
+
let leap = days_in_year > 355;
|
|
265
|
+
if (leap && month > HebrewDate.ADAR)
|
|
266
|
+
if (month === HebrewDate.ADAR_B)
|
|
267
|
+
month = HebrewDate.ADAR + 1;
|
|
268
|
+
else
|
|
269
|
+
month = month + 1;
|
|
270
|
+
if (day > HebrewDate.dateheb_days_in_month(month, leap, days_in_year))
|
|
271
|
+
return 1000000000;
|
|
272
|
+
for (let i = 1; i < month; i = i + 1)
|
|
273
|
+
days_from_creation = days_from_creation + HebrewDate.dateheb_days_in_month(i, leap, days_in_year);
|
|
274
|
+
days_from_creation = days_from_creation + day;
|
|
275
|
+
return Math.max(days_from_creation - HebrewDate.DAYS_TIL_JESUS, 0);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVicmV3RGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvbWFuYWdlbWVudC9ndWkvSGVicmV3RGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbkQsTUFBTSxPQUFPLFVBQVU7SUFDYixNQUFNLENBQUMsY0FBYyxHQUFXLElBQUksQ0FBQztJQUNyQyxNQUFNLENBQUMsYUFBYSxHQUFXLEVBQUUsQ0FBQztJQUNsQyxNQUFNLENBQUMsYUFBYSxHQUFXLENBQUMsVUFBVSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEYsTUFBTSxDQUFDLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDL0IsTUFBTSxDQUFDLGlCQUFpQixHQUFXLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDMUUsTUFBTSxDQUFDLGVBQWUsR0FBVyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNuSCxNQUFNLENBQUMsb0JBQW9CLEdBQVcsRUFBRSxDQUFDO0lBQ3pDLE1BQU0sQ0FBQyxvQkFBb0IsR0FBVyxFQUFFLENBQUM7SUFDekMsTUFBTSxDQUFDLG9CQUFvQixHQUFXLEVBQUUsQ0FBQztJQUN6QyxNQUFNLENBQUMsb0JBQW9CLEdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sQ0FBQyxlQUFlLEdBQVcsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDckcs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dGVudCI6WyJpbXBvcnQgeyBFdmVudHMgfSBmcm9tICcuLi8uLi9FdmVudHMnO1xyXG5pbXBvcnQgeyBNc2dJbnRlcmZhY2UgfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHsgUmVmUGFyYW19IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHsgTWVtb3J5VXRpbCB9IGZyb20gJy4uLy4uL3V0aWwvTWVtb3J5VXRpbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgSGVicmV3RGF0ZSB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgUEFSVFNfUEVSX0hPVVI6IG51bWJlciA9IDEwODA7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgSE9VUlNfUEVSX0RBWTogbnVtYmVyID0gMjQ7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgUEFSVFNfUEVSX0RBWTogbnVtYmVyID0gKEhlYnJld0RhdGUuSE9VUlNfUEVSX0RBWSAqIEhlYnJld0RhdGUuUEFSVFNfUEVSX0hPVVIpO1xyXG4gIHByaXZhdGUgc3RhdGljIE1PTlRIX0RBWVM6IG51bWJlciA9IDI5O1xyXG4gIHByaXZhdGUgc3RhdGljIE1PTlRIX0VYVFJBX1BBUlRTOiBudW1iZXIgPSAoMTIgKiBIZWJyZXdEYXRlLlBBUlRTX1BFUl9IT1VSICsgNzkzKTtcclxuICBwcml2YXRlIHN0YXRpYyBQQVJUU19QRVJfTU9OVEg6IG51bWJlciA9IChIZWJyZXdEYXRlLk1PTlRIX0RBWVMgKiBIZWJyZXdEYXRlLlBBUlRTX1BFUl9EQVkgKyBIZWJyZXdEYXRlLk1PTlRIX0VYVFJBX1BBUlRTKTtcclxuICBwcml2YXRlIHN0YXRpYyBNT05USFNfUEVSX05PUk1fWUVBUjogbnVtYmVyID0gMTI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgTU9OVEhTX1BFUl9MRUFQX1lFQVI6IG51bWJlciA9IDEzO1xyXG4gIHByaXZhdGUgc3RhdGljIE5PUk1fWUVBUlNfUEVSX0NZQ0xFOiBudW1iZXIgPSAxMjtcclxuICBwcml2YXRlIHN0YXRpYyBMRUFQX1lFQVJTX1BFUl9DWUNMRTogbnVtYmVyID0gNztcclxuICBwcml2YXRlIHN0YXRpYyBZRUFSU19QRVJfQ1lDTEU6IG51bWJlciA9IChIZWJyZXdEYXRlLk5PUk1fWUVBUlNfUEVSX0NZQ0xFICsgSGVicmV3RGF0ZS5MRUFQX1lFQVJTX1BFUl9DWUNMRSk7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgTU9OVEhTX1BFUl9DWUNMRTogbnVtYmVyID0gKEhlYnJld0RhdGUuTk9STV9ZRUFSU19QRVJfQ1lDTEUgKiBIZWJyZXdEYXRlLk1PTlRIU19QRVJfTk9STV9ZRUFSICsgSGVicmV3RGF0ZS5MRUFQX1lFQVJTX1BFUl9DWUNMRSAqIEhlYnJld0RhdGUuTU9OVEhTX1BFUl9MRUFQX1lFQVIpO1xyXG4gIHByaXZhdGUgc3RhdGljIFBBUlRTX1BFUl9MRUFQX1lFQVI6IG51bWJlciA9IChIZWJyZXdEYXRlLk1PTlRIU19QRVJfTEVBUF9ZRUFSICogSGVicmV3RGF0ZS5QQVJUU19QRVJfTU9OVEgpO1xyXG4gIHByaXZhdGUgc3RhdGljIERBWVNfUEVSX0xFQVBfWUVBUjogbnVtYmVyID0gTWF0aC5mbG9vcihIZWJyZXdEYXRlLlBBUlRTX1BFUl9MRUFQX1lFQVIgLyBIZWJyZXdEYXRlLlBBUlRTX1BFUl9EQVkpO1xyXG4gIHByaXZhdGUgc3RhdGljIFBBUlRTX1BFUl9DWUNMRTogbnVtYmVyID0gKEhlYnJld0RhdGUuTU9OVEhTX1BFUl9DWUNMRSAqIEhlYnJld0RhdGUuUEFSVFNfUEVSX01PTlRIKTtcclxuICBwcml2YXRlIHN0YXRpYyBEQVlTX1BFUl9DWUNMRTogbnVtYmVyID0gTWF0aC5mbG9vcihIZWJyZXdEYXRlLlBBUlRTX1BFUl9DWUNMRSAvIEhlYnJld0RhdGUuUEFSVFNfUEVSX0RBWSk7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgQ1JFQVRJT05fRE9XOiBudW1iZXIgPSAyO1xyXG4gIHByaXZhdGUgc3RhdGljIENSRUFUSU9OX1BBUlRTOiBudW1iZXIgPSAoNSAqIEhlYnJld0RhdGUuUEFSVFNfUEVSX0hPVVIgKyAyMDQpO1xyXG4gIHByaXZhdGUgc3RhdGljIERBWVNfVElMX0pFU1VTOiBudW1iZXIgPSAxMzczNDI4O1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBIRVNIVkFOOiBudW1iZXIgPSAyO1xyXG4gIHByaXZhdGUgc3RhdGljIEtJU0xFVjogbnVtYmVyID0gMztcclxuICBwcml2YXRlIHN0YXRpYyBBREFSOiBudW1iZXIgPSA2O1xyXG4gIHByaXZhdGUgc3RhdGljIEFEQVJfQjogbnVtYmVyID0gMTM7XHJcblxyXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIC8qIEhlYnJldyBudW1lcmljIHJlcHJlc2VudGF0aW9uIG9mIGVhY2ggSGVicmV3IGxldHRlciAqL1xyXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gIHByaXZhdGUgc3RhdGljIERBVEVIRUJfbGV0dGVyczogbnVtYmVyW10gPSBbXHJcbiAgICAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMjAsIDIwLCAzMCwgNDAsIDQwLCA1MCwgNTAsIDYwLCA3MCxcclxuICAgIDgwLCA4MCwgOTAsIDkwLCAxMDAsIDIwMCwgMzAwLCA0MDBcclxuICBdO1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBBTEVGOiBzdHJpbmcgPSAn15AnO1xyXG4gIHByaXZhdGUgc3RhdGljIFRBVjogc3RyaW5nID0gJ9eqJztcclxuXHJcbiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgLyogTiBvZiBNb250aHMgZnJvbSBiZWdpbm5pbmcgb2YgMTkgeWVhcnMgY3ljbGUsIHRvICovXHJcbiAgLyogdGhlIGJlZ2lubmluZyBvZiBhIHllYXIgKGluIHRoZSByYW5nZSAwIC0gMTgpICAgICovXHJcbiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgREFURUhFQl9tb250aHNfbjogbnVtYmVyW10gPSBbXHJcbiAgICAwLCAxMiwgMjQsIDM3LCA0OSwgNjEsIDc0LCA4NiwgOTksIDExMSwgMTIzLCAxMzYsIDE0OCwgMTYwLCAxNzMsIDE4NSwgMTk3LCAyMTAsIDIyMixcclxuICAgIDIzNVxyXG4gIF07XHJcblxyXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gIC8qIE4gb2YgZGF5cyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYSB5ZWFyIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSBtb250aCAqL1xyXG4gIC8qIFRpc2hyZWksIEhlc2h2YW4sIEtpc2xldiwgVGV2ZXQsIFNodmF0LCBBZGFyLCAgICAgICAgICAgICAgICAgICAgICAqL1xyXG4gIC8qIE5pc2FuLCAgIEl5YXIsICAgIFNpdmFuLCAgVGFtdXosIEF2LCAgICBFbHVsICAgICAgICAgICAgICAgICAgICAgICAqL1xyXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gIHByaXZhdGUgc3RhdGljIERBVEVIRUJfbm9ybV9kYXlzX2luX21vbnRoOiBudW1iZXJbXSA9IFtcclxuICAgIDMwLCAyOSwgMzAsIDI5LCAzMCwgMjksIDMwLCAyOSwgMzAsIDI5LCAzMCwgMjksIDBcclxuICBdO1xyXG4gIHByaXZhdGUgc3RhdGljIERBVEVIRUJfbGVhcF9kYXlzX2luX21vbnRoOiBudW1iZXJbXSA9IFtcclxuICAgIDMwLCAyOSwgMzAsIDI5LCAzMCwgMzAsIDI5LCAzMCwgMjksIDMwLCAyOSwgMzAsIDI5XHJcbiAgXTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgTU9OVEhfTEVOOiBudW1iZXIgPSA1O1xyXG4gIHByaXZhdGUgc3RhdGljIF9sb2NhbE1vbnRoczogc3RyaW5nW10gPSBuZXcgQXJyYXk8c3RyaW5nPigxNSk7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgRE9XX0xFTjogbnVtYmVyID0gNTtcclxuICBwcml2YXRlIHN0YXRpYyBfbG9jYWxEb3dzOiBzdHJpbmdbXSA9IG5ldyBBcnJheTxzdHJpbmc+KDgpO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGNhbGN1bGF0ZSBpZiB5ZWFyIGlzIGxlYXBcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInllYXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgZGF0ZWhlYl95ZWFyX2lzX2xlYXAoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICB5ZWFyID0geWVhciAlIEhlYnJld0RhdGUuWUVBUlNfUEVSX0NZQ0xFO1xyXG4gICAgcmV0dXJuIChIZWJyZXdEYXRlLkRBVEVIRUJfbW9udGhzX25bKHllYXIgKyAxKV0gLSBIZWJyZXdEYXRlLkRBVEVIRUJfbW9udGhzX25beWVhcl0gPT09IDEzKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gY2FsY3VsYXRlIGRheXMgaW4gbW9udGhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1vbnRoXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsZWFwXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkYXlzX2luX3llYXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgZGF0ZWhlYl9kYXlzX2luX21vbnRoKG1vbnRoOiBudW1iZXIsIGxlYXA6IGJvb2xlYW4sIGRheXNfaW5feWVhcjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCBkYXlzX2luX21vbnRoOiBudW1iZXIgPSBsZWFwID8gSGVicmV3RGF0ZS5EQVRFSEVCX2xlYXBfZGF5c19pbl9tb250aFttb250aCAtIDFdIDogSGVicmV3RGF0ZS5EQVRFSEVCX25vcm1fZGF5c19pbl9tb250aFttb250aCAtIDFdO1xyXG5cclxuICAgIGlmIChsZWFwKVxyXG4gICAgICBkYXlzX2luX3llYXIgPSBkYXlzX2luX3llYXIgLSAzMDtcclxuXHJcbiAgICBzd2l0Y2ggKGRheXNfaW5feWVhcikge1xyXG4gICAgICBjYXNlIDM1MzpcclxuICAgICAgICBpZiAobW9udGggPT09IEhlYnJld0RhdGUuS0lTTEVWKVxyXG4gICAgICAgICAgZGF5c19pbl9tb250aCA9IDI5O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDM1NTpcclxuICAgICAgICBpZiAobW9udGggPT09IEhlYnJld0RhdGUuSEVTSFZBTilcclxuICAgICAgICAgIGRheXNfaW5fbW9udGggPSAzMDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBkYXlzX2luX21vbnRoO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBjYWxjdWxhdGUgZGF5cyBmcm9tIGNyZWF0aW9uIHRpbGwgc3RhcnQgb2YgdGhlIHllYXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInllYXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgZGF0ZWhlYl95ZWFyX3N0YXJ0KHllYXI6IG51bWJlcik6IG51bWJlciB7XHJcblxyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogY2FsY3VsYXRlIFwibW9sYWRcIiBvZiB5ZWFyICovXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICB5ZWFyID0geWVhciAtIDE7XHJcbiAgICBsZXQgY3ljbGU6IG51bWJlciA9IE1hdGguZmxvb3IoeWVhciAvIEhlYnJld0RhdGUuWUVBUlNfUEVSX0NZQ0xFKTtcclxuICAgIHllYXIgPSB5ZWFyICUgSGVicmV3RGF0ZS5ZRUFSU19QRVJfQ1lDTEU7XHJcblxyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogSG93IG1hbnkgbW9udGhzIHBhc3NlZCBzaW5jZSBjcmVhdGlvbiAqL1xyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgbGV0IG1vbnRoczogbnVtYmVyID0gY3ljbGUgKiBIZWJyZXdEYXRlLk1PTlRIU19QRVJfQ1lDTEUgKyBIZWJyZXdEYXRlLkRBVEVIRUJfbW9udGhzX25beWVhcl07XHJcblxyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIC8qIEhvdyBtYW55IGRheXMgcGFzc2VkIHNpbmNlIGNyZWF0aW9uICovXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgbGV0IGRheXM6IG51bWJlciA9IG1vbnRocyAqIEhlYnJld0RhdGUuTU9OVEhfREFZUztcclxuXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIC8qIEhvdyBtYW55IGV4dHJhIHBhcnRzIHBhc3NlZCBzaW5jZSBjcmVhdGlvbiAqL1xyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICBsZXQgcGFydHM6IG51bWJlciA9IG1vbnRocyAqIEhlYnJld0RhdGUuTU9OVEhfRVhUUkFfUEFSVFMgKyBIZWJyZXdEYXRlLkNSRUFUSU9OX1BBUlRTO1xyXG5cclxuICAgIGRheXMgPSBkYXlzICsgTWF0aC5mbG9vcihwYXJ0cyAvIEhlYnJld0RhdGUuUEFSVFNfUEVSX0RBWSk7XHJcbiAgICBwYXJ0cyA9IHBhcnRzICUgSGVicmV3RGF0ZS5QQVJUU19QRVJfREFZO1xyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIC8qIFJlbWluZGVyID4gMy80IG9mIGEgZGF5ID8gKi9cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIGlmICg8bnVtYmVyPnBhcnRzID49IE1hdGguZmxvb3IoSGVicmV3RGF0ZS5QQVJUU19QRVJfREFZICogMyAvIDQpKSB7XHJcbiAgICAgIHBhcnRzID0gMDtcclxuICAgICAgZGF5cyA9IGRheXMgKyAxO1xyXG4gICAgfVxyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogdmVyaWZ5IGRheS1vZi13ZWVrIG5vdCBTdW5kYXksIFdlZG5lc2RheSwgRnJpZGF5ICovXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIGxldCBkb3c6IG51bWJlciA9IChkYXlzIC0gMSArIEhlYnJld0RhdGUuQ1JFQVRJT05fRE9XKSAlIDcgKyAxO1xyXG4gICAgaWYgKChkb3cgPT09IDEpIHx8IChkb3cgPT09IDQpIHx8IChkb3cgPT09IDYpKSB7XHJcbiAgICAgIHBhcnRzID0gMDtcclxuICAgICAgZGF5cyA9IGRheXMgKyAxO1xyXG4gICAgfVxyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICAvKiB2ZXJpZnkgaWYgeWVhciB0b28gbG9uZy9sb25nICovXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgaWYgKCFIZWJyZXdEYXRlLmRhdGVoZWJfeWVhcl9pc19sZWFwKDxudW1iZXI+eWVhcikpIHtcclxuICAgICAgaWYgKGRvdyA9PT0gMyAmJiA8bnVtYmVyPnBhcnRzID49ICg5ICogSGVicmV3RGF0ZS5QQVJUU19QRVJfSE9VUiArIDIwNCkpXHJcbiAgICAgICAgZGF5cyA9IGRheXMgKyAyO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChIZWJyZXdEYXRlLmRhdGVoZWJfeWVhcl9pc19sZWFwKDxudW1iZXI+eWVhciArIEhlYnJld0RhdGUuWUVBUlNfUEVSX0NZQ0xFIC0gMSkpIHtcclxuICAgICAgaWYgKGRvdyA9PT0gMiAmJiA8bnVtYmVyPnBhcnRzID49ICgxNSAqIEhlYnJld0RhdGUuUEFSVFNfUEVSX0hPVVIgKyA1ODkpKVxyXG4gICAgICAgIGRheXMgPSBkYXlzICsgMTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGF5cztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ29udmVydCBhIE1hZ2ljIGludGVybmFsIERhdGUgdG8gYSBIZWJyZXcgZGF0ZSAoeWVhciwgbW9udGgsIGRheSlcclxuICAvLy8gTm90ZSB0aGF0IEFEQVJfQiBpcyByZXByZXNlbnRlZCBieSBtb250aCA9IDEzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkYXRlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoZGF5XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJobW9udGhcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImh5ZWFyXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+VFJVRSBpZiBsZWFwIHllYXI8L3JldHVybnM+XHJcbiAgc3RhdGljIGRhdGVoZWJfNF9kKGRhdGU6IG51bWJlciwgZGF5OiBSZWZQYXJhbTxudW1iZXI+LCBtb250aDogUmVmUGFyYW08bnVtYmVyPiwgeWVhcjogUmVmUGFyYW08bnVtYmVyPik6IGJvb2xlYW4ge1xyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICAvKiBEYXlzIGZyb20gY3JlYXRpb24gKi9cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgZGF0ZSA9IGRhdGUgKyBIZWJyZXdEYXRlLkRBWVNfVElMX0pFU1VTO1xyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogR3Vlc3MgYSB5ZWFyICg8PSBjb3JyZWN0IHllYXIpICovXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIGxldCBjeWNsZTogbnVtYmVyID0gTWF0aC5mbG9vcihkYXRlIC8gKEhlYnJld0RhdGUuREFZU19QRVJfQ1lDTEUgKyAxKSk7XHJcbiAgICBsZXQgZGF5czogbnVtYmVyID0gZGF0ZSAlIChIZWJyZXdEYXRlLkRBWVNfUEVSX0NZQ0xFICsgMSk7XHJcbiAgICB5ZWFyLnZhbHVlID0gY3ljbGUgKiBIZWJyZXdEYXRlLllFQVJTX1BFUl9DWUNMRTtcclxuICAgIHllYXIudmFsdWUgPSB5ZWFyLnZhbHVlICsgTWF0aC5mbG9vcihkYXlzIC8gKEhlYnJld0RhdGUuREFZU19QRVJfTEVBUF9ZRUFSICsgMSkpO1xyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICAvKiBBZHZhbmNlIHllYXIgdW50aWwgY29ycmVjdCAqL1xyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICAgIGxldCBuZXh0X3llYXJfc3RhcnQ6IG51bWJlcjtcclxuICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgIG5leHRfeWVhcl9zdGFydCA9IEhlYnJld0RhdGUuZGF0ZWhlYl95ZWFyX3N0YXJ0KHllYXIudmFsdWUgKyAxKTtcclxuICAgICAgaWYgKG5leHRfeWVhcl9zdGFydCA+PSBkYXRlKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB5ZWFyLnZhbHVlID0geWVhci52YWx1ZSArIDE7XHJcbiAgICB9XHJcbiAgICBsZXQgY3Vycl95ZWFyX3N0YXJ0OiBudW1iZXIgPSBIZWJyZXdEYXRlLmRhdGVoZWJfeWVhcl9zdGFydCh5ZWFyLnZhbHVlKTtcclxuICAgIGRheS52YWx1ZSA9IGRhdGUgLSBjdXJyX3llYXJfc3RhcnQ7XHJcbiAgICBsZXQgZGF5c19pbl95ZWFyOiBudW1iZXIgPSBuZXh0X3llYXJfc3RhcnQgLSBjdXJyX3llYXJfc3RhcnQ7XHJcbiAgICBsZXQgbGVhcDogYm9vbGVhbiA9IGRheXNfaW5feWVhciA+IDM1NTtcclxuXHJcbiAgICAvKi0tLS0tLS0tLS0tLSovXHJcbiAgICAvKiBGaW5kIE1vbnRoICovXHJcbiAgICAvKi0tLS0tLS0tLS0tLSovXHJcbiAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgZm9yIChpID0gMTsgaSA8IDEzOyBpID0gaSArIDEpIHtcclxuICAgICAgbGV0IGRheXNfaW5fbW9udGg6IG51bWJlciA9IEhlYnJld0RhdGUuZGF0ZWhlYl9kYXlzX2luX21vbnRoKGksIGxlYXAsIGRheXNfaW5feWVhcik7XHJcbiAgICAgIGlmIChkYXkudmFsdWUgPD0gZGF5c19pbl9tb250aClcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGF5LnZhbHVlID0gZGF5LnZhbHVlIC0gZGF5c19pbl9tb250aDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWxlYXAgfHwgaSA8PSBIZWJyZXdEYXRlLkFEQVIpXHJcbiAgICAgIG1vbnRoLnZhbHVlID0gaTtcclxuICAgIGVsc2UgaWYgKGkgPT09IEhlYnJld0RhdGUuQURBUiArIDEpXHJcbiAgICAgIG1vbnRoLnZhbHVlID0gSGVicmV3RGF0ZS5BREFSX0I7XHJcbiAgICBlbHNlXHJcbiAgICAgIG1vbnRoLnZhbHVlID0gaSAtIDE7XHJcblxyXG4gICAgcmV0dXJuIGxlYXA7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENvbXB1dGUgYSBIZWJyZXcgbGV0dGVyIHRvIGFkZCB0byBzdHJpbmcsIHJlcHJlc2VudGluZyBhIG51bWVyaWMgdmFsdWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJQb3NcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInVzZV9lbmRpbmdcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInF1b3RlXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBkYXRlaGViX2lfMl9oKHZhbDogbnVtYmVyLCBzdHI6IHN0cmluZ1tdLCBzdHJQb3M6IG51bWJlciwgdXNlX2VuZGluZzogYm9vbGVhbiwgcXVvdGU6IGJvb2xlYW4pOiBudW1iZXIge1xyXG4gICAgbGV0IGxldF9pZHg6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgbGVuOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIHdoaWxlICh2YWwgPiAwKSB7XHJcbiAgICAgIGZvciAobGV0X2lkeCA9IEhlYnJld0RhdGUuREFURUhFQl9sZXR0ZXJzLmxlbmd0aDsgbGV0X2lkeCA+IDA7IGxldF9pZHggPSBsZXRfaWR4IC0gMSkge1xyXG4gICAgICAgIGxldCBsZXR0ZXI6IG51bWJlciA9IEhlYnJld0RhdGUuREFURUhFQl9sZXR0ZXJzW2xldF9pZHggLSAxXTtcclxuICAgICAgICBpZiAodmFsID49IGxldHRlcikge1xyXG4gICAgICAgICAgdmFsID0gdmFsIC0gbGV0dGVyO1xyXG4gICAgICAgICAgc3RyW3N0clBvcysrXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoSGVicmV3RGF0ZS5BTEVGLmNoYXJDb2RlQXQoMCkgKyBsZXRfaWR4IC0gMSk7XHJcbiAgICAgICAgICBsZW4gPSBsZW4gKyAxO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGxlbiA+IDApIHtcclxuICAgICAgaWYgKGxlbiA+PSAyKSB7XHJcbiAgICAgICAgaWYgKHN0cltzdHJQb3MgLSAyXSA9PT0gJ9eZJylcclxuICAgICAgICAgIGlmIChzdHJbc3RyUG9zIC0gMV0gPT09ICfXlCcgfHwgc3RyW3N0clBvcyAtIDFdID09PSAn15UnKSB7XHJcbiAgICAgICAgICAgIHN0cltzdHJQb3MgLSAyXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoc3RyW3N0clBvcyAtIDJdLmNoYXJDb2RlQXQoMCkgLSAxKTtcclxuICAgICAgICAgICAgc3RyW3N0clBvcyAtIDFdID0gc3RyW3N0clBvcyAtIDFdICsgJ1xcdTAwMDEnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBGaW5hbCBsZXR0ZXJzOiBvbmx5IGZyb20gJ9eeJy5cclxuICAgICAgaWYgKGxldF9pZHggPiAxMCAmJiB1c2VfZW5kaW5nKSB7XHJcbiAgICAgICAgaWYgKEhlYnJld0RhdGUuREFURUhFQl9sZXR0ZXJzW2xldF9pZHggLSAxXSA9PT0gSGVicmV3RGF0ZS5EQVRFSEVCX2xldHRlcnNbbGV0X2lkeCAtIDJdKSB7XHJcbiAgICAgICAgICBzdHJbc3RyUG9zIC0gMV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHN0cltzdHJQb3MgLSAxXS5jaGFyQ29kZUF0KDApIC0gMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocXVvdGUpIHtcclxuICAgICAgICBpZiAobGVuID09PSAxKVxyXG4gICAgICAgICAgc3RyW3N0clBvc10gPSAnXFwnJztcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHN0cltzdHJQb3NdID0gc3RyW3N0clBvcyAtIDFdO1xyXG4gICAgICAgICAgc3RyW3N0clBvcyAtIDFdID0gJ1wiJztcclxuICAgICAgICB9XHJcbiAgICAgICAgbGVuID0gbGVuICsgMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxlbjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ29udmVydCBIZWJyZXcgeWVhci9kYXkgdG8gYSBzdHJpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm91dFN0clwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVuXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmdWxsX2xlblwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaHllYXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRyaW1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInVzZV9lbmRpbmdcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5sZW5ndGg8L3JldHVybnM+XHJcbiAgc3RhdGljIGRhdGVoZWJfMl9zdHIob3V0U3RyOiBzdHJpbmdbXSwgc3RyUG9zOiBudW1iZXIsIGxlbjogbnVtYmVyLCBvdXRfbGVuOiBSZWZQYXJhbTxudW1iZXI+LCBmdWxsX2xlbjogbnVtYmVyLCBoeWVhcjogbnVtYmVyLCB0cmltOiBib29sZWFuLCB1c2VfZW5kaW5nOiBib29sZWFuKTogbnVtYmVyIHtcclxuICAgIGxldCBxdW90ZTogYm9vbGVhbiA9IGxlbiA+IGZ1bGxfbGVuICYmIG91dFN0cltzdHJQb3MgKyBmdWxsX2xlbl0gPT09IG91dFN0cltzdHJQb3NdO1xyXG4gICAgaWYgKHF1b3RlKVxyXG4gICAgICBmdWxsX2xlbiA9IGZ1bGxfbGVuICsgMTtcclxuICAgIGxldCBoZWJfbGVuOiBudW1iZXIgPSBIZWJyZXdEYXRlLmRhdGVoZWJfaV8yX2goaHllYXIgJSAxMDAwLCBvdXRTdHIsIHN0clBvcywgdXNlX2VuZGluZywgcXVvdGUpO1xyXG5cclxuICAgIGxldCByZW1fbGVuOiBudW1iZXIgPSBmdWxsX2xlbiAtIGhlYl9sZW47XHJcbiAgICBpZiAocmVtX2xlbiA+IDApIHtcclxuICAgICAgaWYgKHRyaW0pIHtcclxuICAgICAgICBvdXRfbGVuLnZhbHVlID0gb3V0X2xlbi52YWx1ZSAtIHJlbV9sZW47XHJcbiAgICAgICAgbGV0IHRtcF9vdXRfbGVuOiBudW1iZXIgPSBsZW4gLSBmdWxsX2xlbjtcclxuICAgICAgICBpZiAodG1wX291dF9sZW4gPiAwKVxyXG4gICAgICAgICAgTWVtb3J5VXRpbC5jaGFyX21lbWNweShvdXRTdHIsIHN0clBvcyArIGhlYl9sZW4sIG91dFN0ciwgc3RyUG9zICsgZnVsbF9sZW4sIHRtcF9vdXRfbGVuKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBoZWJfbGVuID0gZnVsbF9sZW47XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgLy8gRG8gbm90IG92ZXIgdGhlIHN0cmluZyBsZW5ndGguIEl0IG1heSBiZSB3aGVuIFlZWVkgaW4gdGhlIGVuZC4gKERERCBNTU1NTSBZWVlZKVxyXG4gICAgICAgIGlmIChyZW1fbGVuID4gb3V0U3RyLmxlbmd0aCAtIHN0clBvcyAtIGhlYl9sZW4pXHJcbiAgICAgICAgICByZW1fbGVuID0gb3V0U3RyLmxlbmd0aCAtIHN0clBvcyAtIGhlYl9sZW47XHJcbiAgICAgICAgTWVtb3J5VXRpbC5jaGFyX21lbXNldChvdXRTdHIsIHN0clBvcyArIGhlYl9sZW4sICcgJywgLyonICcqL3JlbV9sZW4pO1xyXG4gICAgICAgIGhlYl9sZW4gPSBmdWxsX2xlbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhlYl9sZW47XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEN1dCB0aGUgbW9udGggc3RyaW5nIGZyb20gJ2NvbnN0JyBpbnRvIHNlcGFyYXRlIHZhbHVlc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0TG9jYWxNb250aHMoKTogc3RyaW5nW10ge1xyXG4gICAgbGV0IG1vbnRoTGVuOiBudW1iZXIgPSBIZWJyZXdEYXRlLk1PTlRIX0xFTjtcclxuXHJcbiAgICBpZiAoSGVicmV3RGF0ZS5fbG9jYWxNb250aHNbMF0gPT09IG51bGwpIHtcclxuICAgICAgbGV0IG1vbnRoU3RyOiBzdHJpbmcgPSBFdmVudHMuR2V0TWVzc2FnZVN0cmluZyhNc2dJbnRlcmZhY2UuREFURUhFQl9NT05USF9TVFIpO1xyXG4gICAgICBpZiAobW9udGhTdHIgIT09IG51bGwpIHtcclxuICAgICAgICBIZWJyZXdEYXRlLl9sb2NhbE1vbnRoc1swXSA9IFwiICAgICAgIFwiO1xyXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDE7IGkgPCBIZWJyZXdEYXRlLl9sb2NhbE1vbnRocy5sZW5ndGg7IGkgPSBpICsgMSlcclxuICAgICAgICAgIEhlYnJld0RhdGUuX2xvY2FsTW9udGhzW2ldID0gbW9udGhTdHIuc3Vic3RyKChpIC0gMSkgKiBtb250aExlbiwgaSAqIG1vbnRoTGVuIC0gKGkgLSAxKSAqIG1vbnRoTGVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIEhlYnJld0RhdGUuX2xvY2FsTW9udGhzO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDdXQgdGhlIGRheSBvZiB3ZWVrIHN0cmluZyBmcm9tICdjb25zdCcgaW50byBzZXBhcmF0ZSB2YWx1ZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldExvY2FsRG93cygpOiBzdHJpbmdbXSB7XHJcbiAgICBsZXQgZG93TGVuOiBudW1iZXIgPSBIZWJyZXdEYXRlLkRPV19MRU47XHJcblxyXG4gICAgaWYgKEhlYnJld0RhdGUuX2xvY2FsRG93c1swXSA9PT0gbnVsbCkge1xyXG4gICAgICBsZXQgZG93c1N0cjogc3RyaW5nID0gRXZlbnRzLkdldE1lc3NhZ2VTdHJpbmcoTXNnSW50ZXJmYWNlLkRBVEVIRUJfRE9XX1NUUik7XHJcbiAgICAgIGlmIChkb3dzU3RyICE9PSBudWxsKSB7XHJcbiAgICAgICAgSGVicmV3RGF0ZS5fbG9jYWxEb3dzWzBdID0gXCIgICAgIFwiO1xyXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDE7IGkgPCBIZWJyZXdEYXRlLl9sb2NhbERvd3MubGVuZ3RoOyBpID0gaSArIDEpXHJcbiAgICAgICAgICBIZWJyZXdEYXRlLl9sb2NhbERvd3NbaV0gPSBkb3dzU3RyLnN1YnN0cigoaSAtIDEpICogZG93TGVuLCBpICogZG93TGVuIC0gKGkgLSAxKSAqIGRvd0xlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBIZWJyZXdEYXRlLl9sb2NhbERvd3M7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENvbnZlcnQgYSBoZWJyZXcgc3RyaW5nIC0+IGludGVnZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVuXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJwb3NcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5jb252ZXJ0ZWQgdG8gaW50ZWdlcjwvcmV0dXJucz5cclxuICBzdGF0aWMgZGF0ZWhlYl9oXzJfaShzdHI6IHN0cmluZ1tdLCBsZW46IG51bWJlciwgcG9zOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgbGV0IHZhbDogbnVtYmVyO1xyXG4gICAgbGV0IGhhc18xX3RvXzk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCBoYXNfMTBfdG9fOTA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCBoYXNfMTAwX3RvXzMwMDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbGV0IGNudF80MDA6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgbGFzdF92YWw6IG51bWJlciA9IDEwMDA7XHJcbiAgICBsZXQgbGV0X3ZhbDogbnVtYmVyO1xyXG5cclxuICAgIGZvciAodmFsID0gMDsgbGVuID4gMCAmJiBwb3MgPCBzdHIubGVuZ3RoOyBwb3MrKywgbGVuLS0pXHJcbiAgICAgIGlmIChzdHJbcG9zXSA+PSBIZWJyZXdEYXRlLkFMRUYgJiYgc3RyW3Bvc10gPD0gSGVicmV3RGF0ZS5UQVYpIHtcclxuICAgICAgICBsZXRfdmFsID0gSGVicmV3RGF0ZS5EQVRFSEVCX2xldHRlcnNbPG51bWJlcj4oc3RyW3Bvc10uY2hhckNvZGVBdCgwKSAtIEhlYnJld0RhdGUuQUxFRi5jaGFyQ29kZUF0KDApKV07XHJcbiAgICAgICAgaWYgKGxldF92YWwgPiBsYXN0X3ZhbClcclxuICAgICAgICAgIHJldHVybiAwO1xyXG5cclxuICAgICAgICBpZiAobGV0X3ZhbCA9PT0gNDAwKSB7XHJcbiAgICAgICAgICBpZiAoY250XzQwMCA9PT0gMilcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICBjbnRfNDAwID0gY250XzQwMCArIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGxldF92YWwgPj0gMTAwKSB7XHJcbiAgICAgICAgICBpZiAoaGFzXzEwMF90b18zMDApXHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgaGFzXzEwMF90b18zMDAgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobGV0X3ZhbCA+PSAxMCkge1xyXG4gICAgICAgICAgaWYgKGhhc18xMF90b185MClcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICBoYXNfMTBfdG9fOTAgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChoYXNfMV90b185KSB7XHJcbiAgICAgICAgICAgIGlmIChoYXNfMTBfdG9fOTAgfHwgbGFzdF92YWwgIT09IDkpXHJcbiAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgIGlmIChsZXRfdmFsICE9PSA2ICYmIGxldF92YWwgIT09IDcpXHJcbiAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBoYXNfMV90b185ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFsID0gdmFsICsgbGV0X3ZhbDtcclxuICAgICAgICBsYXN0X3ZhbCA9IGxldF92YWw7XHJcbiAgICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ29udmVydCBhIEhlYnJldyBkYXRlICh5ZWFyLCBtb250aCwgZGF5KSB0byBNYWdpYyBpbnRlcm5hbCBkYXRlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ5ZWFyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtb250aFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZGF5XCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBkYXRlaGViXzJfZCh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKTogbnVtYmVyIHtcclxuXHJcbiAgICBpZiAoZGF5ID09PSAwICYmIG1vbnRoID09PSAwICYmIHllYXIgPT09IDApXHJcbiAgICAgIHJldHVybiAwO1xyXG5cclxuICAgIGlmIChkYXkgPT09IDAgfHwgbW9udGggPT09IDAgfHwgeWVhciA9PT0gMClcclxuICAgICAgcmV0dXJuIDEwMDAwMDAwMDA7XHJcblxyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICAvKiBIb3cgbWFueSBkYXlzIGZyb20gY3JlYXRpb24sIHRvIGJlZ2luaW5nIG9mIHRoZSB5ZWFyID8gKi9cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgbGV0IGRheXNfZnJvbV9jcmVhdGlvbjogbnVtYmVyID0gSGVicmV3RGF0ZS5kYXRlaGViX3llYXJfc3RhcnQoeWVhcik7XHJcblxyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogSG93IGRheXMgaW4gdGhlIHllYXIgPyAqL1xyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgbGV0IGRheXNfaW5feWVhcjogbnVtYmVyID0gSGVicmV3RGF0ZS5kYXRlaGViX3llYXJfc3RhcnQoeWVhciArIDEpIC0gZGF5c19mcm9tX2NyZWF0aW9uO1xyXG4gICAgbGV0IGxlYXA6IGJvb2xlYW4gPSBkYXlzX2luX3llYXIgPiAzNTU7XHJcblxyXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICAvKiBBZGQgbW9udGggKyBkYXkgKi9cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgaWYgKGxlYXAgJiYgbW9udGggPiBIZWJyZXdEYXRlLkFEQVIpXHJcbiAgICAgIGlmIChtb250aCA9PT0gSGVicmV3RGF0ZS5BREFSX0IpXHJcbiAgICAgICAgbW9udGggPSBIZWJyZXdEYXRlLkFEQVIgKyAxO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgbW9udGggPSBtb250aCArIDE7XHJcblxyXG4gICAgaWYgKGRheSA+IEhlYnJld0RhdGUuZGF0ZWhlYl9kYXlzX2luX21vbnRoKG1vbnRoLCBsZWFwLCBkYXlzX2luX3llYXIpKVxyXG4gICAgICByZXR1cm4gMTAwMDAwMDAwMDtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAxOyBpIDwgbW9udGg7IGkgPSBpICsgMSlcclxuICAgICAgZGF5c19mcm9tX2NyZWF0aW9uID0gZGF5c19mcm9tX2NyZWF0aW9uICsgSGVicmV3RGF0ZS5kYXRlaGViX2RheXNfaW5fbW9udGgoaSwgbGVhcCwgZGF5c19pbl95ZWFyKTtcclxuICAgIGRheXNfZnJvbV9jcmVhdGlvbiA9IGRheXNfZnJvbV9jcmVhdGlvbiArIGRheTtcclxuXHJcbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gICAgLyogQ29udmVydCB0byBDaHJpc3RpYW4gY2FsZW5kZXIgKi9cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgICByZXR1cm4gTWF0aC5tYXgoZGF5c19mcm9tX2NyZWF0aW9uIC0gSGVicmV3RGF0ZS5EQVlTX1RJTF9KRVNVUywgMCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|