@magic-xpa/engine 4.1100.0-dev4110.23 → 4.1100.0-dev4110.236
Sign up to get free protection for your applications and to get access to all the features.
- package/{esm2020 → esm2022}/index.mjs +188 -188
- package/{esm2020 → esm2022}/magic-xpa-engine.mjs +1 -1
- package/esm2022/src/AccessHelper.mjs +15 -0
- package/esm2022/src/ClientManager.mjs +416 -0
- package/esm2022/src/CommandsProcessorBase.mjs +56 -0
- package/esm2022/src/CommandsProcessorManager.mjs +26 -0
- package/esm2022/src/CommandsTable.mjs +162 -0
- package/esm2022/src/ConstInterface.mjs +517 -0
- package/{esm2020 → esm2022}/src/CurrentClientVersion.mjs +2 -2
- package/esm2022/src/FlowMonitorInterface.mjs +16 -0
- package/esm2022/src/GUIManager.mjs +62 -0
- package/esm2022/src/GlobalCommandsManager.mjs +34 -0
- package/esm2022/src/GuiEventsProcessor.mjs +156 -0
- package/{esm2020 → esm2022}/src/ICommandsTable.mjs +1 -1
- package/esm2022/src/ServerConfig.mjs +122 -0
- package/{esm2020 → esm2022}/src/bridge/IGuiEvent.mjs +19 -19
- package/esm2022/src/bridge/MagicBridge.mjs +41 -0
- package/esm2022/src/commands/ClientOriginatedCommandTaskTag.mjs +12 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserLocateDataViewCommand.mjs +8 -8
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserRangeDataviewCommand.mjs +9 -9
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserSortDataViewCommand.mjs +9 -9
- package/{esm2020 → esm2022}/src/commands/ClientToServer/BrowserEscEventCommand.mjs +23 -23
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ClientOriginatedCommand.mjs +14 -14
- package/esm2022/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +60 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ColumnSortEventCommand.mjs +26 -26
- package/esm2022/src/commands/ClientToServer/CommandFactory.mjs +260 -0
- package/esm2022/src/commands/ClientToServer/CommandSerializationHelper.mjs +67 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ComputeEventCommand.mjs +23 -23
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ContextTerminationEventCommand.mjs +20 -20
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ContextTimeoutResetCommand.mjs +19 -19
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ControlItemsRefreshCommand.mjs +8 -8
- package/esm2022/src/commands/ClientToServer/DataViewOutputCommand.mjs +13 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/DataviewCommand.mjs +44 -44
- package/esm2022/src/commands/ClientToServer/EvaluateCommand.mjs +37 -0
- package/esm2022/src/commands/ClientToServer/EventCommand.mjs +40 -0
- package/esm2022/src/commands/ClientToServer/ExecOperCommand.mjs +67 -0
- package/esm2022/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +22 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/GlobalParamsQueryCommand.mjs +10 -10
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ICommandTaskTag.mjs +1 -1
- package/{esm2020 → esm2022}/src/commands/ClientToServer/IndexChangeEventCommand.mjs +21 -21
- package/esm2022/src/commands/ClientToServer/IniputForceWriteCommand.mjs +23 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/NonReversibleExitEventCommand.mjs +23 -23
- package/{esm2020 → esm2022}/src/commands/ClientToServer/QueryCommand.mjs +20 -20
- package/esm2022/src/commands/ClientToServer/RecomputeCommand.mjs +27 -0
- package/esm2022/src/commands/ClientToServer/RefreshEventCommand.mjs +27 -0
- package/esm2022/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +24 -0
- package/esm2022/src/commands/ClientToServer/RollbackEventCommand.mjs +40 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/SelectProgramCommand.mjs +14 -14
- package/{esm2020 → esm2022}/src/commands/ClientToServer/SetTransactionStateDataviewCommand.mjs +9 -9
- package/{esm2020 → esm2022}/src/commands/ClientToServer/SubformOpenEventCommand.mjs +21 -21
- package/esm2022/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +24 -0
- package/esm2022/src/commands/ClientToServer/TransactionCommand.mjs +30 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/UnloadCommand.mjs +14 -14
- package/esm2022/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +18 -0
- package/esm2022/src/commands/DataViewCommandBase.mjs +8 -0
- package/{esm2020 → esm2022}/src/commands/IClientCommand.mjs +1 -1
- package/esm2022/src/commands/IClientTargetedCommand.mjs +13 -0
- package/{esm2020 → esm2022}/src/commands/IClientToServerCommandInfo.mjs +1 -1
- package/esm2022/src/commands/ServerToClient/AbortCommand.mjs +65 -0
- package/{esm2020 → esm2022}/src/commands/ServerToClient/AddLocateCommand.mjs +21 -21
- package/esm2022/src/commands/ServerToClient/AddRangeCommand.mjs +62 -0
- package/esm2022/src/commands/ServerToClient/AddSortCommand.mjs +33 -0
- package/esm2022/src/commands/ServerToClient/ClientRefreshCommand.mjs +25 -0
- package/esm2022/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +24 -0
- package/esm2022/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +45 -0
- package/esm2022/src/commands/ServerToClient/OpenURLCommand.mjs +221 -0
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetLocateCommand.mjs +14 -14
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetRangeCommand.mjs +14 -14
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetSortCommand.mjs +14 -14
- package/esm2022/src/commands/ServerToClient/ResultCommand.mjs +37 -0
- package/esm2022/src/commands/ServerToClient/VerifyCommand.mjs +83 -0
- package/esm2022/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +132 -0
- package/{esm2020 → esm2022}/src/communications/IConnectionStateManager.mjs +1 -1
- package/esm2022/src/communications/InteractiveCommunicationsFailureHandler.mjs +15 -0
- package/{esm2020 → esm2022}/src/data/DataSourceIdKey.mjs +2 -2
- package/esm2022/src/data/DataView.mjs +1613 -0
- package/{esm2020 → esm2022}/src/data/DataViewBase.mjs +3 -3
- package/esm2022/src/data/DataviewManager.mjs +28 -0
- package/esm2022/src/data/DataviewManagerBase.mjs +15 -0
- package/esm2022/src/data/DvCache.mjs +67 -0
- package/esm2022/src/data/Field.mjs +646 -0
- package/esm2022/src/data/FieldBase.mjs +15 -0
- package/esm2022/src/data/FieldsTable.mjs +103 -0
- package/{esm2020 → esm2022}/src/data/IRecordsTable.mjs +1 -1
- package/esm2022/src/data/Key.mjs +88 -0
- package/esm2022/src/data/Record.mjs +866 -0
- package/{esm2020 → esm2022}/src/data/RecordOutOfDataViewException.mjs +15 -15
- package/esm2022/src/data/RecordsTable.mjs +267 -0
- package/esm2022/src/data/TaskTransactionManager.mjs +103 -0
- package/esm2022/src/data/XMLBasedDcValuesBuilder.mjs +74 -0
- package/{esm2020 → esm2022}/src/enums.mjs +23 -23
- package/esm2022/src/env/EnvVariablesTable.mjs +340 -0
- package/esm2022/src/env/Environment.mjs +487 -0
- package/{esm2020 → esm2022}/src/env/ILanguageData.mjs +1 -1
- package/esm2022/src/env/LanguageData.mjs +227 -0
- package/esm2022/src/env/MirrorString.mjs +65 -0
- package/esm2022/src/event/ActionManager.mjs +91 -0
- package/esm2022/src/event/Event.mjs +1333 -0
- package/esm2022/src/event/EventHandler.mjs +766 -0
- package/esm2022/src/event/EventHandlerPosition.mjs +204 -0
- package/esm2022/src/event/EventsManager.mjs +2988 -0
- package/{esm2020 → esm2022}/src/event/IEventsManager.mjs +6 -6
- package/esm2022/src/event/RunTimeEvent.mjs +399 -0
- package/{esm2020 → esm2022}/src/event/RunTimeEventBase.mjs +3 -3
- package/esm2022/src/event/UserEventsTable.mjs +47 -0
- package/esm2022/src/exp/ExpTable.mjs +57 -0
- package/esm2022/src/exp/Expression.mjs +200 -0
- package/esm2022/src/exp/ExpressionDict.mjs +727 -0
- package/esm2022/src/exp/ExpressionEvaluator.mjs +4206 -0
- package/esm2022/src/exp/ExpressionLocalJpn.mjs +314 -0
- package/esm2022/src/exp/GlobalParamsTable.mjs +85 -0
- package/esm2022/src/exp/YesNoExp.mjs +36 -0
- package/esm2022/src/gui/CreatedFormVector.mjs +23 -0
- package/esm2022/src/gui/FormsTable.mjs +66 -0
- package/esm2022/src/gui/MgControl.mjs +363 -0
- package/esm2022/src/gui/MgForm.mjs +1224 -0
- package/esm2022/src/http/HttpManager.mjs +97 -0
- package/esm2022/src/http/client/HttpClientAsync.mjs +68 -0
- package/esm2022/src/http/client/HttpClientBase.mjs +132 -0
- package/esm2022/src/http/client/HttpClientEvents.mjs +39 -0
- package/esm2022/src/http/client/HttpClientSync.mjs +42 -0
- package/esm2022/src/http/client/HttpUtility.mjs +84 -0
- package/{esm2020 → esm2022}/src/http/client/ICommunicationsFailureHandler.mjs +1 -1
- package/esm2022/src/remote/AddUserLocateRemoteDataViewCommand.mjs +18 -0
- package/esm2022/src/remote/AddUserRangeRemoteDataViewCommand.mjs +18 -0
- package/esm2022/src/remote/AddUserSortRemoteDataViewCommand.mjs +18 -0
- package/esm2022/src/remote/RemoteCommandsProcessor.mjs +880 -0
- package/esm2022/src/remote/RemoteControlItemsRefreshCommand.mjs +25 -0
- package/esm2022/src/remote/RemoteDataViewCommandBase.mjs +24 -0
- package/esm2022/src/remote/RemoteDataViewCommandFactory.mjs +61 -0
- package/{esm2020 → esm2022}/src/remote/RemoteDataViewCommandUpdateNonModifiable.mjs +15 -15
- package/{esm2020 → esm2022}/src/remote/RemoteDataviewManager.mjs +17 -17
- package/{esm2020 → esm2022}/src/remote/RemoteInitDataViewCommand.mjs +10 -10
- package/esm2022/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +17 -0
- package/{esm2020 → esm2022}/src/remote/ResetUserRangeRemoteDataviewCommand.mjs +12 -12
- package/esm2022/src/remote/ResetUserSortRemoteDataviewCommand.mjs +16 -0
- package/esm2022/src/remote/ServerError.mjs +40 -0
- package/esm2022/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +20 -0
- package/esm2022/src/rt/Argument.mjs +265 -0
- package/esm2022/src/rt/ArgumentsList.mjs +103 -0
- package/esm2022/src/rt/Boundary.mjs +152 -0
- package/esm2022/src/rt/CompMainPrgTable.mjs +63 -0
- package/{esm2020 → esm2022}/src/rt/DataviewHeaderBase.mjs +98 -96
- package/{esm2020 → esm2022}/src/rt/DataviewHeaderFactory.mjs +6 -6
- package/esm2022/src/rt/DataviewHeaders.mjs +53 -0
- package/esm2022/src/rt/DataviewHeadersSaxHandler.mjs +38 -0
- package/esm2022/src/rt/ExecutionStack.mjs +94 -0
- package/{esm2020 → esm2022}/src/rt/ExecutionStackEntry.mjs +17 -17
- package/esm2022/src/rt/HandlersTable.mjs +96 -0
- package/{esm2020 → esm2022}/src/rt/IDataSourceViewDefinition.mjs +1 -1
- package/{esm2020 → esm2022}/src/rt/IDataviewHeader.mjs +1 -1
- package/{esm2020 → esm2022}/src/rt/IResultValue.mjs +1 -1
- package/esm2022/src/rt/LastFocusedManager.mjs +65 -0
- package/esm2022/src/rt/Operation.mjs +735 -0
- package/esm2022/src/rt/OperationTable.mjs +67 -0
- package/esm2022/src/rt/Recompute.mjs +355 -0
- package/esm2022/src/rt/RecomputeTable.mjs +63 -0
- package/esm2022/src/rt/RemoteDataviewHeader.mjs +108 -0
- package/esm2022/src/rt/ResultValue.mjs +10 -0
- package/esm2022/src/rt/TableCache.mjs +177 -0
- package/esm2022/src/rt/TableCacheManager.mjs +67 -0
- package/esm2022/src/rt/Transaction.mjs +53 -0
- package/esm2022/src/security/UserDetails.mjs +71 -0
- package/{esm2020 → esm2022}/src/tasks/IMGDataCollection.mjs +1 -1
- package/esm2022/src/tasks/MGData.mjs +552 -0
- package/esm2022/src/tasks/MGDataCollection.mjs +252 -0
- package/esm2022/src/tasks/RCTimer.mjs +63 -0
- package/esm2022/src/tasks/RemoteTaskService.mjs +45 -0
- package/esm2022/src/tasks/Task.mjs +2499 -0
- package/esm2022/src/tasks/TaskBase.mjs +83 -0
- package/esm2022/src/tasks/TaskServiceBase.mjs +25 -0
- package/esm2022/src/tasks/TasksTable.mjs +80 -0
- package/esm2022/src/tasks/sort/Sort.mjs +5 -0
- package/esm2022/src/tasks/sort/SortCollection.mjs +67 -0
- package/esm2022/src/util/ConstUtils.mjs +14 -0
- package/esm2022/src/util/FlowMonitorQueue.mjs +451 -0
- package/esm2022/src/util/HeapSort.mjs +70 -0
- package/{esm2020 → esm2022}/src/util/IMirrorXML.mjs +1 -1
- package/{esm2020 → esm2022}/src/util/IServerConfig.mjs +1 -1
- package/{esm2020 → esm2022}/src/util/MgBlockingQueue.mjs +1 -1
- package/esm2022/src/util/MgPriorityBlockingQueue.mjs +74 -0
- package/esm2022/src/util/MgPriorityQueue.mjs +66 -0
- package/{esm2020 → esm2022}/src/util/ParamParseResult.mjs +7 -7
- package/esm2022/src/util/PrmMap.mjs +152 -0
- package/esm2022/src/util/ReturnResult.mjs +46 -0
- package/esm2022/src/util/ReturnResultBase.mjs +18 -0
- package/esm2022/src/util/Scrambler.mjs +89 -0
- package/esm2022/src/util/UniqueIDUtils.mjs +13 -0
- package/esm2022/src/util/cookie.service.mjs +92 -0
- package/{fesm2020 → fesm2022}/magic-xpa-engine.mjs +29797 -29693
- package/fesm2022/magic-xpa-engine.mjs.map +1 -0
- package/index.d.ts +187 -187
- package/package.json +8 -14
- package/src/AccessHelper.d.ts +20 -20
- package/src/ClientManager.d.ts +35 -32
- package/src/CommandsProcessorBase.d.ts +23 -23
- package/src/CommandsProcessorManager.d.ts +6 -6
- package/src/CommandsTable.d.ts +22 -22
- package/src/ConstInterface.d.ts +516 -515
- package/src/CurrentClientVersion.d.ts +1 -1
- package/src/FlowMonitorInterface.d.ts +15 -15
- package/src/GUIManager.d.ts +17 -17
- package/src/GlobalCommandsManager.d.ts +17 -17
- package/src/GuiEventsProcessor.d.ts +24 -24
- package/src/ICommandsTable.d.ts +9 -9
- package/src/ServerConfig.d.ts +35 -34
- package/src/bridge/IGuiEvent.d.ts +19 -19
- package/src/bridge/MagicBridge.d.ts +16 -16
- package/src/commands/ClientOriginatedCommandTaskTag.d.ts +8 -8
- package/src/commands/ClientToServer/AddUserLocateDataViewCommand.d.ts +4 -4
- package/src/commands/ClientToServer/AddUserRangeDataviewCommand.d.ts +6 -6
- package/src/commands/ClientToServer/AddUserSortDataViewCommand.d.ts +6 -6
- package/src/commands/ClientToServer/BrowserEscEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/ClientOriginatedCommand.d.ts +8 -8
- package/src/commands/ClientToServer/ClientOriginatedCommandSerializer.d.ts +6 -6
- package/src/commands/ClientToServer/ColumnSortEventCommand.d.ts +10 -10
- package/src/commands/ClientToServer/CommandFactory.d.ts +64 -64
- package/src/commands/ClientToServer/CommandSerializationHelper.d.ts +20 -20
- package/src/commands/ClientToServer/ComputeEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/ContextTerminationEventCommand.d.ts +7 -7
- package/src/commands/ClientToServer/ContextTimeoutResetCommand.d.ts +7 -7
- package/src/commands/ClientToServer/ControlItemsRefreshCommand.d.ts +6 -6
- package/src/commands/ClientToServer/DataViewOutputCommand.d.ts +9 -9
- package/src/commands/ClientToServer/DataviewCommand.d.ts +32 -32
- package/src/commands/ClientToServer/EvaluateCommand.d.ts +15 -15
- package/src/commands/ClientToServer/EventCommand.d.ts +15 -15
- package/src/commands/ClientToServer/ExecOperCommand.d.ts +23 -23
- package/src/commands/ClientToServer/FetchDataControlValuesEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/GlobalParamsQueryCommand.d.ts +5 -5
- package/src/commands/ClientToServer/ICommandTaskTag.d.ts +3 -3
- package/src/commands/ClientToServer/IndexChangeEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/IniputForceWriteCommand.d.ts +10 -10
- package/src/commands/ClientToServer/NonReversibleExitEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/QueryCommand.d.ts +8 -8
- package/src/commands/ClientToServer/RecomputeCommand.d.ts +11 -11
- package/src/commands/ClientToServer/RefreshEventCommand.d.ts +12 -12
- package/src/commands/ClientToServer/RefreshScreenEventCommand.d.ts +10 -10
- package/src/commands/ClientToServer/RollbackEventCommand.d.ts +14 -14
- package/src/commands/ClientToServer/SelectProgramCommand.d.ts +6 -6
- package/src/commands/ClientToServer/SetTransactionStateDataviewCommand.d.ts +5 -5
- package/src/commands/ClientToServer/SubformOpenEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/SubformRefreshEventCommand.d.ts +9 -9
- package/src/commands/ClientToServer/TransactionCommand.d.ts +12 -12
- package/src/commands/ClientToServer/UnloadCommand.d.ts +7 -7
- package/src/commands/ClientToServer/WriteMessageToServerLogCommand.d.ts +6 -6
- package/src/commands/DataViewCommandBase.d.ts +6 -6
- package/src/commands/IClientCommand.d.ts +2 -2
- package/src/commands/IClientTargetedCommand.d.ts +12 -12
- package/src/commands/IClientToServerCommandInfo.d.ts +3 -3
- package/src/commands/ServerToClient/AbortCommand.d.ts +11 -11
- package/src/commands/ServerToClient/AddLocateCommand.d.ts +6 -6
- package/src/commands/ServerToClient/AddRangeCommand.d.ts +10 -10
- package/src/commands/ServerToClient/AddSortCommand.d.ts +9 -9
- package/src/commands/ServerToClient/ClientRefreshCommand.d.ts +7 -7
- package/src/commands/ServerToClient/ClientTargetedCommandBase.d.ts +12 -12
- package/src/commands/ServerToClient/EnhancedVerifyCommand.d.ts +13 -13
- package/src/commands/ServerToClient/OpenURLCommand.d.ts +21 -21
- package/src/commands/ServerToClient/ResetLocateCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResetRangeCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResetSortCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResultCommand.d.ts +10 -10
- package/src/commands/ServerToClient/VerifyCommand.d.ts +17 -17
- package/src/commands/ServerToClient/XMLBasedCommandBuilder.d.ts +11 -11
- package/src/communications/IConnectionStateManager.d.ts +4 -4
- package/src/communications/InteractiveCommunicationsFailureHandler.d.ts +6 -6
- package/src/data/DataSourceIdKey.d.ts +2 -2
- package/src/data/DataView.d.ts +162 -162
- package/src/data/DataViewBase.d.ts +12 -12
- package/src/data/DataviewManager.d.ts +14 -14
- package/src/data/DataviewManagerBase.d.ts +11 -11
- package/src/data/DvCache.d.ts +15 -15
- package/src/data/Field.d.ts +103 -103
- package/src/data/FieldBase.d.ts +23 -23
- package/src/data/FieldsTable.d.ts +27 -27
- package/src/data/IRecordsTable.d.ts +7 -7
- package/src/data/Key.d.ts +15 -15
- package/src/data/Record.d.ts +156 -156
- package/src/data/RecordOutOfDataViewException.d.ts +10 -10
- package/src/data/RecordsTable.d.ts +38 -38
- package/src/data/TaskTransactionManager.d.ts +17 -17
- package/src/data/XMLBasedDcValuesBuilder.d.ts +11 -11
- package/src/enums.d.ts +21 -21
- package/src/env/EnvVariablesTable.d.ts +17 -17
- package/src/env/Environment.d.ts +118 -118
- package/src/env/ILanguageData.d.ts +3 -3
- package/src/env/LanguageData.d.ts +20 -20
- package/src/env/MirrorString.d.ts +15 -15
- package/src/event/ActionManager.d.ts +14 -14
- package/src/event/Event.d.ts +79 -79
- package/src/event/EventHandler.d.ts +66 -66
- package/src/event/EventHandlerPosition.d.ts +25 -25
- package/src/event/EventsManager.d.ts +205 -204
- package/src/event/IEventsManager.d.ts +77 -77
- package/src/event/RunTimeEvent.d.ts +126 -123
- package/src/event/RunTimeEventBase.d.ts +5 -5
- package/src/event/UserEventsTable.d.ts +11 -11
- package/src/exp/ExpTable.d.ts +11 -11
- package/src/exp/Expression.d.ts +37 -37
- package/src/exp/ExpressionDict.d.ts +12 -12
- package/src/exp/ExpressionEvaluator.d.ts +198 -198
- package/src/exp/ExpressionLocalJpn.d.ts +18 -18
- package/src/exp/GlobalParamsTable.d.ts +19 -19
- package/src/exp/YesNoExp.d.ts +9 -9
- package/src/gui/CreatedFormVector.d.ts +10 -10
- package/src/gui/FormsTable.d.ts +15 -15
- package/src/gui/MgControl.d.ts +60 -60
- package/src/gui/MgForm.d.ts +96 -93
- package/src/http/HttpManager.d.ts +25 -25
- package/src/http/client/HttpClientAsync.d.ts +16 -16
- package/src/http/client/HttpClientBase.d.ts +30 -30
- package/src/http/client/HttpClientEvents.d.ts +18 -18
- package/src/http/client/HttpClientSync.d.ts +17 -17
- package/src/http/client/HttpUtility.d.ts +10 -10
- package/src/http/client/ICommunicationsFailureHandler.d.ts +5 -5
- package/src/remote/AddUserLocateRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/AddUserRangeRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/AddUserSortRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/RemoteCommandsProcessor.d.ts +51 -51
- package/src/remote/RemoteControlItemsRefreshCommand.d.ts +8 -8
- package/src/remote/RemoteDataViewCommandBase.d.ts +10 -10
- package/src/remote/RemoteDataViewCommandFactory.d.ts +6 -6
- package/src/remote/RemoteDataViewCommandUpdateNonModifiable.d.ts +8 -8
- package/src/remote/RemoteDataviewManager.d.ts +9 -9
- package/src/remote/RemoteInitDataViewCommand.d.ts +7 -7
- package/src/remote/ResetUserLocateRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ResetUserRangeRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ResetUserSortRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ServerError.d.ts +16 -16
- package/src/remote/SetTransactionStateRemoteDataViewCommand.d.ts +8 -8
- package/src/rt/Argument.d.ts +36 -36
- package/src/rt/ArgumentsList.d.ts +24 -24
- package/src/rt/Boundary.d.ts +27 -27
- package/src/rt/CompMainPrgTable.d.ts +10 -10
- package/src/rt/DataviewHeaderBase.d.ts +34 -34
- package/src/rt/DataviewHeaderFactory.d.ts +5 -5
- package/src/rt/DataviewHeaders.d.ts +12 -12
- package/src/rt/DataviewHeadersSaxHandler.d.ts +10 -10
- package/src/rt/ExecutionStack.d.ts +22 -22
- package/src/rt/ExecutionStackEntry.d.ts +7 -7
- package/src/rt/HandlersTable.d.ts +19 -19
- package/src/rt/IDataSourceViewDefinition.d.ts +6 -6
- package/src/rt/IDataviewHeader.d.ts +10 -10
- package/src/rt/IResultValue.d.ts +4 -4
- package/src/rt/LastFocusedManager.d.ts +23 -23
- package/src/rt/Operation.d.ts +97 -97
- package/src/rt/OperationTable.d.ts +15 -15
- package/src/rt/Recompute.d.ts +41 -41
- package/src/rt/RecomputeTable.d.ts +9 -9
- package/src/rt/RemoteDataviewHeader.d.ts +14 -14
- package/src/rt/ResultValue.d.ts +7 -7
- package/src/rt/TableCache.d.ts +29 -29
- package/src/rt/TableCacheManager.d.ts +10 -10
- package/src/rt/Transaction.d.ts +23 -23
- package/src/security/UserDetails.d.ts +16 -16
- package/src/tasks/IMGDataCollection.d.ts +26 -26
- package/src/tasks/MGData.d.ts +63 -63
- package/src/tasks/MGDataCollection.d.ts +42 -42
- package/src/tasks/RCTimer.d.ts +13 -13
- package/src/tasks/RemoteTaskService.d.ts +16 -16
- package/src/tasks/Task.d.ts +312 -312
- package/src/tasks/TaskBase.d.ts +123 -123
- package/src/tasks/TaskServiceBase.d.ts +16 -16
- package/src/tasks/TasksTable.d.ts +21 -21
- package/src/tasks/sort/Sort.d.ts +4 -4
- package/src/tasks/sort/SortCollection.d.ts +11 -11
- package/src/util/ConstUtils.d.ts +3 -3
- package/src/util/FlowMonitorQueue.d.ts +70 -70
- package/src/util/HeapSort.d.ts +6 -6
- package/src/util/IMirrorXML.d.ts +6 -6
- package/src/util/IServerConfig.d.ts +11 -11
- package/src/util/MgBlockingQueue.d.ts +5 -5
- package/src/util/MgPriorityBlockingQueue.d.ts +17 -17
- package/src/util/MgPriorityQueue.d.ts +13 -13
- package/src/util/ParamParseResult.d.ts +6 -6
- package/src/util/PrmMap.d.ts +28 -28
- package/src/util/ReturnResult.d.ts +18 -18
- package/src/util/ReturnResultBase.d.ts +11 -11
- package/src/util/Scrambler.d.ts +10 -10
- package/src/util/UniqueIDUtils.d.ts +4 -4
- package/src/util/cookie.service.d.ts +8 -8
- package/esm2020/src/AccessHelper.mjs +0 -9
- package/esm2020/src/ClientManager.mjs +0 -399
- package/esm2020/src/CommandsProcessorBase.mjs +0 -58
- package/esm2020/src/CommandsProcessorManager.mjs +0 -26
- package/esm2020/src/CommandsTable.mjs +0 -162
- package/esm2020/src/ConstInterface.mjs +0 -516
- package/esm2020/src/FlowMonitorInterface.mjs +0 -16
- package/esm2020/src/GUIManager.mjs +0 -62
- package/esm2020/src/GlobalCommandsManager.mjs +0 -34
- package/esm2020/src/GuiEventsProcessor.mjs +0 -154
- package/esm2020/src/ServerConfig.mjs +0 -117
- package/esm2020/src/bridge/MagicBridge.mjs +0 -41
- package/esm2020/src/commands/ClientOriginatedCommandTaskTag.mjs +0 -11
- package/esm2020/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +0 -60
- package/esm2020/src/commands/ClientToServer/CommandFactory.mjs +0 -260
- package/esm2020/src/commands/ClientToServer/CommandSerializationHelper.mjs +0 -69
- package/esm2020/src/commands/ClientToServer/DataViewOutputCommand.mjs +0 -13
- package/esm2020/src/commands/ClientToServer/EvaluateCommand.mjs +0 -36
- package/esm2020/src/commands/ClientToServer/EventCommand.mjs +0 -40
- package/esm2020/src/commands/ClientToServer/ExecOperCommand.mjs +0 -67
- package/esm2020/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +0 -22
- package/esm2020/src/commands/ClientToServer/IniputForceWriteCommand.mjs +0 -23
- package/esm2020/src/commands/ClientToServer/RecomputeCommand.mjs +0 -27
- package/esm2020/src/commands/ClientToServer/RefreshEventCommand.mjs +0 -27
- package/esm2020/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +0 -24
- package/esm2020/src/commands/ClientToServer/RollbackEventCommand.mjs +0 -39
- package/esm2020/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +0 -24
- package/esm2020/src/commands/ClientToServer/TransactionCommand.mjs +0 -28
- package/esm2020/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +0 -18
- package/esm2020/src/commands/DataViewCommandBase.mjs +0 -10
- package/esm2020/src/commands/IClientTargetedCommand.mjs +0 -9
- package/esm2020/src/commands/ServerToClient/AbortCommand.mjs +0 -65
- package/esm2020/src/commands/ServerToClient/AddRangeCommand.mjs +0 -62
- package/esm2020/src/commands/ServerToClient/AddSortCommand.mjs +0 -33
- package/esm2020/src/commands/ServerToClient/ClientRefreshCommand.mjs +0 -25
- package/esm2020/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +0 -27
- package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +0 -45
- package/esm2020/src/commands/ServerToClient/OpenURLCommand.mjs +0 -221
- package/esm2020/src/commands/ServerToClient/ResultCommand.mjs +0 -37
- package/esm2020/src/commands/ServerToClient/VerifyCommand.mjs +0 -83
- package/esm2020/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +0 -132
- package/esm2020/src/communications/InteractiveCommunicationsFailureHandler.mjs +0 -17
- package/esm2020/src/data/DataView.mjs +0 -1610
- package/esm2020/src/data/DataviewManager.mjs +0 -28
- package/esm2020/src/data/DataviewManagerBase.mjs +0 -15
- package/esm2020/src/data/DvCache.mjs +0 -67
- package/esm2020/src/data/Field.mjs +0 -646
- package/esm2020/src/data/FieldBase.mjs +0 -18
- package/esm2020/src/data/FieldsTable.mjs +0 -103
- package/esm2020/src/data/Key.mjs +0 -88
- package/esm2020/src/data/Record.mjs +0 -846
- package/esm2020/src/data/RecordsTable.mjs +0 -267
- package/esm2020/src/data/TaskTransactionManager.mjs +0 -103
- package/esm2020/src/data/XMLBasedDcValuesBuilder.mjs +0 -74
- package/esm2020/src/env/EnvVariablesTable.mjs +0 -340
- package/esm2020/src/env/Environment.mjs +0 -489
- package/esm2020/src/env/LanguageData.mjs +0 -226
- package/esm2020/src/env/MirrorString.mjs +0 -65
- package/esm2020/src/event/ActionManager.mjs +0 -91
- package/esm2020/src/event/Event.mjs +0 -1333
- package/esm2020/src/event/EventHandler.mjs +0 -766
- package/esm2020/src/event/EventHandlerPosition.mjs +0 -204
- package/esm2020/src/event/EventsManager.mjs +0 -2975
- package/esm2020/src/event/RunTimeEvent.mjs +0 -392
- package/esm2020/src/event/UserEventsTable.mjs +0 -47
- package/esm2020/src/exp/ExpTable.mjs +0 -59
- package/esm2020/src/exp/Expression.mjs +0 -200
- package/esm2020/src/exp/ExpressionDict.mjs +0 -727
- package/esm2020/src/exp/ExpressionEvaluator.mjs +0 -4212
- package/esm2020/src/exp/ExpressionLocalJpn.mjs +0 -314
- package/esm2020/src/exp/GlobalParamsTable.mjs +0 -85
- package/esm2020/src/exp/YesNoExp.mjs +0 -36
- package/esm2020/src/gui/CreatedFormVector.mjs +0 -23
- package/esm2020/src/gui/FormsTable.mjs +0 -66
- package/esm2020/src/gui/MgControl.mjs +0 -353
- package/esm2020/src/gui/MgForm.mjs +0 -1181
- package/esm2020/src/http/HttpManager.mjs +0 -97
- package/esm2020/src/http/client/HttpClientAsync.mjs +0 -67
- package/esm2020/src/http/client/HttpClientBase.mjs +0 -132
- package/esm2020/src/http/client/HttpClientEvents.mjs +0 -39
- package/esm2020/src/http/client/HttpClientSync.mjs +0 -42
- package/esm2020/src/http/client/HttpUtility.mjs +0 -84
- package/esm2020/src/remote/AddUserLocateRemoteDataViewCommand.mjs +0 -18
- package/esm2020/src/remote/AddUserRangeRemoteDataViewCommand.mjs +0 -18
- package/esm2020/src/remote/AddUserSortRemoteDataViewCommand.mjs +0 -18
- package/esm2020/src/remote/RemoteCommandsProcessor.mjs +0 -880
- package/esm2020/src/remote/RemoteControlItemsRefreshCommand.mjs +0 -25
- package/esm2020/src/remote/RemoteDataViewCommandBase.mjs +0 -24
- package/esm2020/src/remote/RemoteDataViewCommandFactory.mjs +0 -61
- package/esm2020/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +0 -17
- package/esm2020/src/remote/ResetUserSortRemoteDataviewCommand.mjs +0 -16
- package/esm2020/src/remote/ServerError.mjs +0 -40
- package/esm2020/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +0 -20
- package/esm2020/src/rt/Argument.mjs +0 -265
- package/esm2020/src/rt/ArgumentsList.mjs +0 -103
- package/esm2020/src/rt/Boundary.mjs +0 -152
- package/esm2020/src/rt/CompMainPrgTable.mjs +0 -65
- package/esm2020/src/rt/DataviewHeaders.mjs +0 -53
- package/esm2020/src/rt/DataviewHeadersSaxHandler.mjs +0 -38
- package/esm2020/src/rt/ExecutionStack.mjs +0 -94
- package/esm2020/src/rt/HandlersTable.mjs +0 -96
- package/esm2020/src/rt/LastFocusedManager.mjs +0 -67
- package/esm2020/src/rt/Operation.mjs +0 -735
- package/esm2020/src/rt/OperationTable.mjs +0 -67
- package/esm2020/src/rt/Recompute.mjs +0 -355
- package/esm2020/src/rt/RecomputeTable.mjs +0 -63
- package/esm2020/src/rt/RemoteDataviewHeader.mjs +0 -108
- package/esm2020/src/rt/ResultValue.mjs +0 -12
- package/esm2020/src/rt/TableCache.mjs +0 -177
- package/esm2020/src/rt/TableCacheManager.mjs +0 -67
- package/esm2020/src/rt/Transaction.mjs +0 -53
- package/esm2020/src/security/UserDetails.mjs +0 -71
- package/esm2020/src/tasks/MGData.mjs +0 -552
- package/esm2020/src/tasks/MGDataCollection.mjs +0 -252
- package/esm2020/src/tasks/RCTimer.mjs +0 -63
- package/esm2020/src/tasks/RemoteTaskService.mjs +0 -45
- package/esm2020/src/tasks/Task.mjs +0 -2495
- package/esm2020/src/tasks/TaskBase.mjs +0 -87
- package/esm2020/src/tasks/TaskServiceBase.mjs +0 -25
- package/esm2020/src/tasks/TasksTable.mjs +0 -80
- package/esm2020/src/tasks/sort/Sort.mjs +0 -7
- package/esm2020/src/tasks/sort/SortCollection.mjs +0 -67
- package/esm2020/src/util/ConstUtils.mjs +0 -14
- package/esm2020/src/util/FlowMonitorQueue.mjs +0 -453
- package/esm2020/src/util/HeapSort.mjs +0 -70
- package/esm2020/src/util/MgPriorityBlockingQueue.mjs +0 -74
- package/esm2020/src/util/MgPriorityQueue.mjs +0 -66
- package/esm2020/src/util/PrmMap.mjs +0 -151
- package/esm2020/src/util/ReturnResult.mjs +0 -46
- package/esm2020/src/util/ReturnResultBase.mjs +0 -18
- package/esm2020/src/util/Scrambler.mjs +0 -89
- package/esm2020/src/util/UniqueIDUtils.mjs +0 -12
- package/esm2020/src/util/cookie.service.mjs +0 -92
- package/fesm2015/magic-xpa-engine.mjs +0 -30835
- package/fesm2015/magic-xpa-engine.mjs.map +0 -1
- package/fesm2020/magic-xpa-engine.mjs.map +0 -1
@@ -0,0 +1,487 @@
|
|
1
|
+
import { DisplayConvertor } from '@magic-xpa/gui';
|
2
|
+
import { Debug, Encoding, Hashtable, NString } from '@magic-xpa/mscorelib';
|
3
|
+
import { Constants, Logger, OSEnvironment, UtilDateJpn, UtilStrByteMode, XMLConstants, XmlParser } from '@magic-xpa/utils';
|
4
|
+
import { CommandsProcessorManager } from '../CommandsProcessorManager';
|
5
|
+
import { ConstInterface } from '../ConstInterface';
|
6
|
+
import { ServerConfig } from '../ServerConfig';
|
7
|
+
import { AccessHelper } from '../AccessHelper';
|
8
|
+
export class Environment {
|
9
|
+
_environments = new Hashtable();
|
10
|
+
_contextInactivityTimeout = 0;
|
11
|
+
_clientContextInactivityTimeout = 0;
|
12
|
+
_contextInactivityWarningTime = 0;
|
13
|
+
_toolitipTimeout = 0;
|
14
|
+
_contextUnloadTimeout = 0;
|
15
|
+
_canReplaceDecimalSeparator = false;
|
16
|
+
_codePage = 0;
|
17
|
+
_dateSeparator = '\0';
|
18
|
+
_decimalSeparator = '\0';
|
19
|
+
_thousandsSeparator = '\0';
|
20
|
+
_timeSeparator = '\0';
|
21
|
+
_guid = null;
|
22
|
+
_imeAutoOff = false;
|
23
|
+
_language = '\0';
|
24
|
+
_localAs400Set = false;
|
25
|
+
_localExtraGengo = null;
|
26
|
+
_localFlags = null;
|
27
|
+
_lowHigh = true;
|
28
|
+
_owner = null;
|
29
|
+
_debugMode = 0;
|
30
|
+
_significantNumSize = 0;
|
31
|
+
_specialAnsiExpression = false;
|
32
|
+
_specialImmediatehandlerEnd = false;
|
33
|
+
_specialShowStatusBarPanes = false;
|
34
|
+
_specialRouteToRootProgOnContextRecreation = false;
|
35
|
+
_specialCancelOnCreate = false;
|
36
|
+
_system = null;
|
37
|
+
_terminal = 0;
|
38
|
+
_forwardSlash = Constants.ForwardSlashWebUsage;
|
39
|
+
_dropUserFormats = null;
|
40
|
+
_webclientReinitSession = "N";
|
41
|
+
_specialValNewPolicy = false;
|
42
|
+
static Instance = new Environment();
|
43
|
+
get Language() {
|
44
|
+
return this._language;
|
45
|
+
}
|
46
|
+
IgnoreReplaceDecimalSeparator = false;
|
47
|
+
get SpecialRestoreMaximizedForm() {
|
48
|
+
return false;
|
49
|
+
}
|
50
|
+
set ForwardSlashUsage(value) {
|
51
|
+
this._forwardSlash = value;
|
52
|
+
}
|
53
|
+
get ForwardSlashUsage() {
|
54
|
+
return this._forwardSlash;
|
55
|
+
}
|
56
|
+
fillData(tokensVectorOrParser) {
|
57
|
+
if (arguments[0] instanceof XmlParser) {
|
58
|
+
this.fillData_0(tokensVectorOrParser);
|
59
|
+
return;
|
60
|
+
}
|
61
|
+
this.fillData_1(tokensVectorOrParser);
|
62
|
+
}
|
63
|
+
fillData_0(parser) {
|
64
|
+
let endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, parser.getCurrIndex());
|
65
|
+
if (endContext !== -1 && endContext < parser.getXMLdata().length) {
|
66
|
+
let tag = parser.getXMLsubstring(endContext);
|
67
|
+
parser.add2CurrIndex(tag.indexOf(ConstInterface.MG_TAG_ENV) + ConstInterface.MG_TAG_ENV.length);
|
68
|
+
let tokensVector = XmlParser.getTokens(parser.getXMLsubstring(endContext), XMLConstants.XML_ATTR_DELIM);
|
69
|
+
this.fillData(tokensVector);
|
70
|
+
parser.setCurrIndex(endContext + XMLConstants.TAG_TERM.length);
|
71
|
+
}
|
72
|
+
else
|
73
|
+
Logger.Instance.WriteExceptionToLogWithMsg("in Environment.FillData() out of string bounds");
|
74
|
+
}
|
75
|
+
fillData_1(tokensVector) {
|
76
|
+
let attribute;
|
77
|
+
let valueStr;
|
78
|
+
let hashKey;
|
79
|
+
let env;
|
80
|
+
env = new EnvironmentDetails();
|
81
|
+
for (let j = 0; j < tokensVector.length; j += 2) {
|
82
|
+
attribute = (tokensVector.get_Item(j));
|
83
|
+
valueStr = (tokensVector.get_Item(j + 1));
|
84
|
+
valueStr = XmlParser.unescape(valueStr);
|
85
|
+
switch (attribute) {
|
86
|
+
case ConstInterface.MG_ATTR_THOUSANDS:
|
87
|
+
this._thousandsSeparator = valueStr[0];
|
88
|
+
break;
|
89
|
+
case ConstInterface.MG_ATTR_DECIMAL_SEPARATOR:
|
90
|
+
this._decimalSeparator = valueStr[0];
|
91
|
+
break;
|
92
|
+
case ConstInterface.MG_ATTR_WEBCLIENT_REINIT_SESSION:
|
93
|
+
this._webclientReinitSession = valueStr[0];
|
94
|
+
break;
|
95
|
+
case ConstInterface.MG_ATTR_DATE:
|
96
|
+
this._dateSeparator = valueStr[0];
|
97
|
+
DisplayConvertor.Instance.setDateChar(this._dateSeparator.charCodeAt(0));
|
98
|
+
break;
|
99
|
+
case ConstInterface.MG_ATTR_TIME:
|
100
|
+
this._timeSeparator = valueStr[0];
|
101
|
+
break;
|
102
|
+
case ConstInterface.MG_ATTR_OWNER:
|
103
|
+
this._owner = valueStr;
|
104
|
+
break;
|
105
|
+
case ConstInterface.MG_ATTR_SIGNIFICANT_NUM_SIZE:
|
106
|
+
this._significantNumSize = XmlParser.getInt(valueStr);
|
107
|
+
break;
|
108
|
+
case ConstInterface.MG_ATTR_DEBUG_MODE:
|
109
|
+
this._debugMode = XmlParser.getInt(valueStr);
|
110
|
+
break;
|
111
|
+
case ConstInterface.MG_ATTR_POINT_TRANSLATION:
|
112
|
+
this._canReplaceDecimalSeparator = XmlParser.getBoolean(valueStr);
|
113
|
+
break;
|
114
|
+
case ConstInterface.MG_ATTR_SPECIAL_EXITCTRL:
|
115
|
+
break;
|
116
|
+
case ConstInterface.MG_ATTR_LOWHIGH:
|
117
|
+
this._lowHigh = XmlParser.getBoolean(valueStr);
|
118
|
+
break;
|
119
|
+
case ConstInterface.MG_ATTR_ACCESS_TEST:
|
120
|
+
break;
|
121
|
+
case ConstInterface.MG_ATTR_SPECIAL_TEXT_SIZE_FACTORING:
|
122
|
+
break;
|
123
|
+
case ConstInterface.MG_ATTR_SPECIAL_FLAT_EDIT_ON_CLASSIC_THEME:
|
124
|
+
break;
|
125
|
+
case ConstInterface.MG_ATTR_ENCODING:
|
126
|
+
if (valueStr !== " ") {
|
127
|
+
this._codePage = XmlParser.getInt(valueStr);
|
128
|
+
UtilStrByteMode.Encoding = this.GetEncoding();
|
129
|
+
}
|
130
|
+
break;
|
131
|
+
case ConstInterface.MG_ATTR_SYSTEM:
|
132
|
+
this._system = XmlParser.unescape(valueStr);
|
133
|
+
break;
|
134
|
+
case ConstInterface.MG_ATTR_COMPONENT:
|
135
|
+
env.CompIdx = XmlParser.getInt(valueStr);
|
136
|
+
break;
|
137
|
+
case ConstInterface.MG_ATTR_DATEMODE:
|
138
|
+
env.DateMode = valueStr[0];
|
139
|
+
break;
|
140
|
+
case ConstInterface.MG_ATTR_CENTURY:
|
141
|
+
env.Century = XmlParser.getInt(valueStr);
|
142
|
+
break;
|
143
|
+
case ConstInterface.MG_ATTR_IDLETIME:
|
144
|
+
env.IdleTime = XmlParser.getInt(valueStr);
|
145
|
+
if (env.IdleTime === 0)
|
146
|
+
env.IdleTime = 1;
|
147
|
+
break;
|
148
|
+
case ConstInterface.MG_ATTR_UPD_IN_QUERY:
|
149
|
+
env.UpdateInQueryMode = XmlParser.getBoolean(valueStr);
|
150
|
+
break;
|
151
|
+
case ConstInterface.MG_ATTR_CRE_IN_MODIFY:
|
152
|
+
env.CreateInModifyMode = XmlParser.getBoolean(valueStr);
|
153
|
+
break;
|
154
|
+
case ConstInterface.MG_ATTR_DEFAULT_COLOR:
|
155
|
+
break;
|
156
|
+
case ConstInterface.MG_ATTR_DEFAULT_FOCUS_COLOR:
|
157
|
+
break;
|
158
|
+
case ConstInterface.MG_ATTR_CONTEXT_INACTIVITY_TIMEOUT:
|
159
|
+
this._contextInactivityTimeout = XmlParser.getInt(valueStr);
|
160
|
+
break;
|
161
|
+
case ConstInterface.MG_ATTR_CLIENT_CONTEXT_INACTIVITY_TIMEOUT:
|
162
|
+
this._clientContextInactivityTimeout = XmlParser.getInt(valueStr);
|
163
|
+
break;
|
164
|
+
case ConstInterface.MG_ATTR_CONTEXT_INACTIVITY_WARNING_TIME:
|
165
|
+
this._contextInactivityWarningTime = XmlParser.getInt(valueStr);
|
166
|
+
break;
|
167
|
+
case ConstInterface.MG_ATTR_TOOLTIP_TIMEOUT:
|
168
|
+
this._toolitipTimeout = XmlParser.getInt(valueStr);
|
169
|
+
break;
|
170
|
+
case ConstInterface.MG_ATTR_CONTEXT_UNLOAD_TIMEOUT:
|
171
|
+
this._contextUnloadTimeout = XmlParser.getInt(valueStr);
|
172
|
+
break;
|
173
|
+
case ConstInterface.MG_ATTR_IME_AUTO_OFF:
|
174
|
+
this._imeAutoOff = XmlParser.getBoolean(valueStr);
|
175
|
+
break;
|
176
|
+
case ConstInterface.MG_ATTR_LOCAL_AS400SET:
|
177
|
+
this._localAs400Set = XmlParser.getBoolean(valueStr);
|
178
|
+
break;
|
179
|
+
case ConstInterface.MG_ATTR_LOCAL_EXTRA_GENGO:
|
180
|
+
this._localExtraGengo = valueStr;
|
181
|
+
UtilDateJpn.getInstance().addExtraGengo(this._localExtraGengo);
|
182
|
+
break;
|
183
|
+
case ConstInterface.MG_ATTR_LOCAL_FLAGS:
|
184
|
+
this._localFlags = valueStr;
|
185
|
+
break;
|
186
|
+
case ConstInterface.MG_ATTR_SPECIAL_IMMEDIATE_HANDLER_END:
|
187
|
+
this._specialImmediatehandlerEnd = XmlParser.getBoolean(valueStr);
|
188
|
+
break;
|
189
|
+
case ConstInterface.MG_ATTR_SPEACIAL_ANSI_EXP:
|
190
|
+
this._specialAnsiExpression = XmlParser.getBoolean(valueStr);
|
191
|
+
break;
|
192
|
+
case ConstInterface.MG_ATTR_SPECIAL_SHOW_STATUSBAR_PANES:
|
193
|
+
this._specialShowStatusBarPanes = XmlParser.getBoolean(valueStr);
|
194
|
+
break;
|
195
|
+
case ConstInterface.MG_ATTR_SPECIAL_ROUTE_TO_ROOT_PROG_ON_CONTEXT_RECREATION:
|
196
|
+
this._specialRouteToRootProgOnContextRecreation = XmlParser.getBoolean(valueStr);
|
197
|
+
break;
|
198
|
+
case ConstInterface.MG_ATTR_SPECIAL_SPECIAL_EDIT_LEFT_ALIGN:
|
199
|
+
break;
|
200
|
+
case ConstInterface.MG_ATTR_SPEACIAL_SWF_CONTROL_NAME:
|
201
|
+
break;
|
202
|
+
case ConstInterface.MG_ATTR_LANGUAGE:
|
203
|
+
this._language = valueStr[0];
|
204
|
+
break;
|
205
|
+
case ConstInterface.MG_ATTR_USERID:
|
206
|
+
break;
|
207
|
+
case ConstInterface.MG_TAG_USERNAME:
|
208
|
+
ServerConfig.Instance.setUsername(valueStr);
|
209
|
+
break;
|
210
|
+
case ConstInterface.MG_ATTR_TERMINAL:
|
211
|
+
this._terminal = XmlParser.getInt(valueStr);
|
212
|
+
break;
|
213
|
+
case ConstInterface.MG_ATTR_USERINFO:
|
214
|
+
break;
|
215
|
+
case ConstInterface.MG_ATTR_GUID:
|
216
|
+
this._guid = valueStr;
|
217
|
+
break;
|
218
|
+
case ConstInterface.MG_ATTR_CONTROLS_PERSISTENCY_PATH:
|
219
|
+
break;
|
220
|
+
case ConstInterface.MG_ATTR_PROJDIR:
|
221
|
+
env.ProjDir = valueStr;
|
222
|
+
break;
|
223
|
+
case ConstInterface.MG_ATTR_DROP_USERFORMATS:
|
224
|
+
this._dropUserFormats = valueStr;
|
225
|
+
break;
|
226
|
+
case ConstInterface.MG_ATTR_SPECIAL_VAL_NEW_POLICY:
|
227
|
+
this._specialValNewPolicy = XmlParser.getBoolean(valueStr);
|
228
|
+
break;
|
229
|
+
case ConstInterface.MG_ATTR_SPECIAL_CANCEL_ON_CREATE:
|
230
|
+
this._specialCancelOnCreate = XmlParser.getBoolean(valueStr);
|
231
|
+
break;
|
232
|
+
case ConstInterface.MG_ATTR_SPECIAL_LEGACY_TRIM_RANGE:
|
233
|
+
case ConstInterface.MG_ATTR_SPECIAL_LEGACY_EMPTY_RANGE:
|
234
|
+
case ConstInterface.MG_ATTR_DEFAULT_DISABLED_COLOR:
|
235
|
+
case ConstInterface.MG_ATTR_SPECIAL_ANSI_BLOB_CHECK_NULL:
|
236
|
+
case ConstInterface.MG_ATTR_SPECIAL_TABLE_REDUCE_TITLE_HEIGHT:
|
237
|
+
case ConstInterface.MG_ATTR_SPECIAL_DOTNET_ALLOW_ZERO_DATE:
|
238
|
+
case ConstInterface.MG_ATTR_SPECIAL_REUSE_TABLE_EDITOR:
|
239
|
+
break;
|
240
|
+
default:
|
241
|
+
Logger.Instance.WriteExceptionToLogWithMsg("in Environment.fillData(): unknown attribute: " + attribute);
|
242
|
+
break;
|
243
|
+
}
|
244
|
+
}
|
245
|
+
hashKey = env.CompIdx;
|
246
|
+
this._environments.set_Item(hashKey, env);
|
247
|
+
}
|
248
|
+
async fillFromUrl(tagName, parser) {
|
249
|
+
let XMLdata = parser.getXMLdata();
|
250
|
+
let endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, parser.getCurrIndex());
|
251
|
+
if (endContext !== -1 && endContext < XMLdata.length) {
|
252
|
+
let tagAndAttributes = parser.getXMLsubstring(endContext);
|
253
|
+
parser.add2CurrIndex(tagAndAttributes.indexOf(tagName) + tagName.length);
|
254
|
+
let tokensVector = XmlParser.getTokens(parser.getXMLsubstring(endContext), XMLConstants.XML_ATTR_DELIM);
|
255
|
+
Debug.Assert(tokensVector.get_Item(0) === XMLConstants.MG_ATTR_VALUE);
|
256
|
+
let cachedFileUrl = (tokensVector.get_Item(1));
|
257
|
+
if (cachedFileUrl.trim() === "")
|
258
|
+
Logger.Instance.WriteErrorToLog(NString.Format("Empty cached file URL: '{0}'", tagAndAttributes.trim()));
|
259
|
+
else {
|
260
|
+
let Content = await CommandsProcessorManager.GetContent(cachedFileUrl, true);
|
261
|
+
try {
|
262
|
+
switch (tagName) {
|
263
|
+
case ConstInterface.MG_TAG_KBDMAP_URL:
|
264
|
+
break;
|
265
|
+
case ConstInterface.MG_TAG_ENV_PARAM_URL:
|
266
|
+
let innerXmlParser = new XmlParser(Content);
|
267
|
+
while (AccessHelper.envParamsTable.mirrorFromXML(innerXmlParser.getNextTag(), innerXmlParser)) {
|
268
|
+
}
|
269
|
+
break;
|
270
|
+
}
|
271
|
+
}
|
272
|
+
catch (ex) {
|
273
|
+
switch (tagName) {
|
274
|
+
case ConstInterface.MG_TAG_KBDMAP_URL:
|
275
|
+
Logger.Instance.WriteExceptionToLogWithMsg(NString.Format("Keyboard Mapping: '{0}'{1}{2}", cachedFileUrl, OSEnvironment.EolSeq, ex.Message));
|
276
|
+
break;
|
277
|
+
case ConstInterface.MG_TAG_ENV_PARAM_URL:
|
278
|
+
Logger.Instance.WriteExceptionToLogWithMsg(NString.Format("Env Params Table: '{0}'{1}{2}", cachedFileUrl, OSEnvironment.EolSeq, ex.Message));
|
279
|
+
}
|
280
|
+
}
|
281
|
+
}
|
282
|
+
endContext = XMLdata.indexOf(XMLConstants.TAG_OPEN, endContext);
|
283
|
+
if (endContext !== -1)
|
284
|
+
parser.setCurrIndex(endContext);
|
285
|
+
}
|
286
|
+
}
|
287
|
+
getEnvDet(compIdx) {
|
288
|
+
let environmentDetails = this._environments.get_Item(compIdx);
|
289
|
+
if (environmentDetails === null)
|
290
|
+
Logger.Instance.WriteExceptionToLogWithMsg("in Environment.getEnvDet() there is no env");
|
291
|
+
return environmentDetails;
|
292
|
+
}
|
293
|
+
GetDateMode(compIdx) {
|
294
|
+
return this.getEnvDet(compIdx).DateMode;
|
295
|
+
}
|
296
|
+
GetThousands() {
|
297
|
+
return this._thousandsSeparator;
|
298
|
+
}
|
299
|
+
GetDecimal() {
|
300
|
+
return this._decimalSeparator;
|
301
|
+
}
|
302
|
+
setDecimalSeparator(value) {
|
303
|
+
this._decimalSeparator = value;
|
304
|
+
}
|
305
|
+
setThousandsSeparator(value) {
|
306
|
+
this._thousandsSeparator = value;
|
307
|
+
}
|
308
|
+
setDateSeparator(value) {
|
309
|
+
this._dateSeparator = value;
|
310
|
+
}
|
311
|
+
setTimeSeparator(value) {
|
312
|
+
this._timeSeparator = value;
|
313
|
+
}
|
314
|
+
GetDate() {
|
315
|
+
return this._dateSeparator;
|
316
|
+
}
|
317
|
+
getIdleTime(compIdx) {
|
318
|
+
return this.getEnvDet(compIdx).IdleTime;
|
319
|
+
}
|
320
|
+
getOwner() {
|
321
|
+
return this._owner;
|
322
|
+
}
|
323
|
+
GetTime() {
|
324
|
+
return this._timeSeparator;
|
325
|
+
}
|
326
|
+
GetCentury(compIdx) {
|
327
|
+
return this.getEnvDet(compIdx).Century;
|
328
|
+
}
|
329
|
+
allowUpdateInQueryMode(compIdx) {
|
330
|
+
return this.getEnvDet(compIdx).allowUpdateInQueryMode();
|
331
|
+
}
|
332
|
+
allowCreateInModifyMode(compIdx) {
|
333
|
+
return this.getEnvDet(compIdx).allowCreateInModifyMode();
|
334
|
+
}
|
335
|
+
GetSignificantNumSize() {
|
336
|
+
return this._significantNumSize;
|
337
|
+
}
|
338
|
+
setSignificantNumSize(newSize) {
|
339
|
+
this._significantNumSize = newSize;
|
340
|
+
}
|
341
|
+
getCodePage() {
|
342
|
+
return this._codePage;
|
343
|
+
}
|
344
|
+
GetEncoding() {
|
345
|
+
let encoding;
|
346
|
+
try {
|
347
|
+
encoding = Encoding.GetEncoding(this._codePage);
|
348
|
+
}
|
349
|
+
catch (exception) {
|
350
|
+
encoding = null;
|
351
|
+
}
|
352
|
+
return encoding;
|
353
|
+
}
|
354
|
+
getSystem() {
|
355
|
+
return this._system;
|
356
|
+
}
|
357
|
+
GetDebugLevel() {
|
358
|
+
return this._debugMode;
|
359
|
+
}
|
360
|
+
CanReplaceDecimalSeparator() {
|
361
|
+
return !this.IgnoreReplaceDecimalSeparator && this._canReplaceDecimalSeparator;
|
362
|
+
}
|
363
|
+
getClientContextInactivityTimeout() {
|
364
|
+
return this._clientContextInactivityTimeout;
|
365
|
+
}
|
366
|
+
getContextInactivityTimeout() {
|
367
|
+
return this._contextInactivityTimeout;
|
368
|
+
}
|
369
|
+
getContextInactivityWarningTime() {
|
370
|
+
return this._contextInactivityWarningTime;
|
371
|
+
}
|
372
|
+
getContextUnloadTimeout() {
|
373
|
+
return this._contextUnloadTimeout;
|
374
|
+
}
|
375
|
+
GetTooltipTimeout() {
|
376
|
+
return this._toolitipTimeout;
|
377
|
+
}
|
378
|
+
getLowHigh() {
|
379
|
+
return this._lowHigh;
|
380
|
+
}
|
381
|
+
GetImeAutoOff() {
|
382
|
+
return this._imeAutoOff;
|
383
|
+
}
|
384
|
+
GetLocalAs400Set() {
|
385
|
+
return this._localAs400Set;
|
386
|
+
}
|
387
|
+
getLocalExtraGengo() {
|
388
|
+
return this._localExtraGengo;
|
389
|
+
}
|
390
|
+
GetLocalFlag(f) {
|
391
|
+
return this._localFlags !== null && this._localFlags.indexOf(f) >= 0;
|
392
|
+
}
|
393
|
+
getSpecialImmediateHandlerEnd() {
|
394
|
+
return this._specialImmediatehandlerEnd;
|
395
|
+
}
|
396
|
+
getSpecialAnsiExpression() {
|
397
|
+
return this._specialAnsiExpression;
|
398
|
+
}
|
399
|
+
getSpecialShowStatusBarPanes() {
|
400
|
+
return this._specialShowStatusBarPanes;
|
401
|
+
}
|
402
|
+
getTerminal() {
|
403
|
+
return this._terminal;
|
404
|
+
}
|
405
|
+
getWebClientReinitSession() {
|
406
|
+
return this._webclientReinitSession;
|
407
|
+
}
|
408
|
+
setWebClientReinitSession(session) {
|
409
|
+
this._webclientReinitSession = session;
|
410
|
+
}
|
411
|
+
getSpecialRouteToRootProgOnContextRecreation() {
|
412
|
+
return this._specialRouteToRootProgOnContextRecreation;
|
413
|
+
}
|
414
|
+
GetGUID() {
|
415
|
+
return this._guid;
|
416
|
+
}
|
417
|
+
getProjDir(compIdx) {
|
418
|
+
return this.getEnvDet(compIdx).ProjDir;
|
419
|
+
}
|
420
|
+
GetSpecialLogInternalExceptions() {
|
421
|
+
return true;
|
422
|
+
}
|
423
|
+
setOwner(val) {
|
424
|
+
this._owner = val;
|
425
|
+
}
|
426
|
+
setDateMode(compIdx, val) {
|
427
|
+
this.getEnvDet(compIdx).DateMode = val;
|
428
|
+
}
|
429
|
+
setCentury(compIdx, val) {
|
430
|
+
this.getEnvDet(compIdx).Century = val;
|
431
|
+
}
|
432
|
+
setIdleTime(compIdx, val) {
|
433
|
+
this.getEnvDet(compIdx).IdleTime = val;
|
434
|
+
}
|
435
|
+
setAllowUpdateInQueryMode(compIdx, val) {
|
436
|
+
this.getEnvDet(compIdx).UpdateInQueryMode = val;
|
437
|
+
}
|
438
|
+
setAllowCreateInModifyMode(compIdx, val) {
|
439
|
+
this.getEnvDet(compIdx).CreateInModifyMode = val;
|
440
|
+
}
|
441
|
+
setContextInactivityTimeout(val) {
|
442
|
+
this._contextInactivityTimeout = val;
|
443
|
+
}
|
444
|
+
setContextInactivityWarningTime(val) {
|
445
|
+
this._contextInactivityWarningTime = val;
|
446
|
+
}
|
447
|
+
setContextUnloadTimeout(val) {
|
448
|
+
this._contextUnloadTimeout = val;
|
449
|
+
}
|
450
|
+
setTerminal(val) {
|
451
|
+
this._terminal = val;
|
452
|
+
}
|
453
|
+
GetDropUserFormats() {
|
454
|
+
return this._dropUserFormats;
|
455
|
+
}
|
456
|
+
GetSpecialValNewPolicy() {
|
457
|
+
return this._specialValNewPolicy;
|
458
|
+
}
|
459
|
+
GetSpecialCancelOnCreate() {
|
460
|
+
return this._specialCancelOnCreate;
|
461
|
+
}
|
462
|
+
}
|
463
|
+
export class EnvironmentDetails {
|
464
|
+
_createInModifyMode = false;
|
465
|
+
_updateInQueryMode = false;
|
466
|
+
CompIdx = 0;
|
467
|
+
DateMode = '\0';
|
468
|
+
Century = 0;
|
469
|
+
IdleTime = 0;
|
470
|
+
set UpdateInQueryMode(value) {
|
471
|
+
this._updateInQueryMode = value;
|
472
|
+
}
|
473
|
+
set CreateInModifyMode(value) {
|
474
|
+
this._createInModifyMode = value;
|
475
|
+
}
|
476
|
+
ProjDir = null;
|
477
|
+
constructor() {
|
478
|
+
this.CompIdx = 0;
|
479
|
+
}
|
480
|
+
allowUpdateInQueryMode() {
|
481
|
+
return this._updateInQueryMode;
|
482
|
+
}
|
483
|
+
allowCreateInModifyMode() {
|
484
|
+
return this._createInModifyMode;
|
485
|
+
}
|
486
|
+
}
|
487
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2Vudi9FbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQVEsT0FBTyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDL0UsT0FBTyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sYUFBYSxFQUNiLFdBQVcsRUFDWCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFNBQVMsRUFDVixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBSzdDLE1BQU0sT0FBTyxXQUFXO0lBQ2QsYUFBYSxHQUEwQyxJQUFJLFNBQVMsRUFBOEIsQ0FBQztJQUNuRyx5QkFBeUIsR0FBVyxDQUFDLENBQUM7SUFDdEMsK0JBQStCLEdBQVcsQ0FBQyxDQUFDO0lBQzVDLDZCQUE2QixHQUFXLENBQUMsQ0FBQztJQUMxQyxnQkFBZ0IsR0FBVyxDQUFDLENBQUM7SUFDN0IscUJBQXFCLEdBQVcsQ0FBQyxDQUFDO0lBQ2xDLDJCQUEyQixHQUFZLEtBQUssQ0FBQztJQUM3QyxTQUFTLEdBQVcsQ0FBQyxDQUFDO0lBQ3RCLGNBQWMsR0FBVyxJQUFJLENBQUM7SUFDOUIsaUJBQWlCLEdBQVcsSUFBSSxDQUFDO0lBQ2pDLG1CQUFtQixHQUFXLElBQUksQ0FBQztJQUNuQyxjQUFjLEdBQVcsSUFBSSxDQUFD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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Rpc3BsYXlDb252ZXJ0b3IsIElFbnZpcm9ubWVudH0gZnJvbSAnQG1hZ2ljLXhwYS9ndWknO1xyXG5pbXBvcnQge0RlYnVnLCBFbmNvZGluZywgSGFzaHRhYmxlLCBMaXN0LCBOU3RyaW5nfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7XHJcbiAgQ29uc3RhbnRzLFxyXG4gIExvZ2dlcixcclxuICBPU0Vudmlyb25tZW50LFxyXG4gIFV0aWxEYXRlSnBuLFxyXG4gIFV0aWxTdHJCeXRlTW9kZSxcclxuICBYTUxDb25zdGFudHMsXHJcbiAgWG1sUGFyc2VyXHJcbn0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7Q29tbWFuZHNQcm9jZXNzb3JNYW5hZ2VyfSBmcm9tICcuLi9Db21tYW5kc1Byb2Nlc3Nvck1hbmFnZXInO1xyXG5pbXBvcnQge0NvbnN0SW50ZXJmYWNlfSBmcm9tICcuLi9Db25zdEludGVyZmFjZSc7XHJcbmltcG9ydCB7U2VydmVyQ29uZmlnfSBmcm9tICcuLi9TZXJ2ZXJDb25maWcnO1xyXG5pbXBvcnQge0FjY2Vzc0hlbHBlcn0gZnJvbSAnLi4vQWNjZXNzSGVscGVyJztcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICAgVGhpcyBjbGFzcyBob2xkcyBzb21lIG9mIHRoZSBNYWdpYyBlbnZpcm9ubWVudCBwYXJhbWV0ZXJzIHdoaWNoIHRoZSBjbGllbnQgbmVlZHNcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50IGltcGxlbWVudHMgSUVudmlyb25tZW50IHtcclxuICBwcml2YXRlIF9lbnZpcm9ubWVudHM6IEhhc2h0YWJsZTxudW1iZXIsIEVudmlyb25tZW50RGV0YWlscz4gPSBuZXcgSGFzaHRhYmxlPG51bWJlciwgRW52aXJvbm1lbnREZXRhaWxzPigpO1xyXG4gIHByaXZhdGUgX2NvbnRleHRJbmFjdGl2aXR5VGltZW91dDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9jbGllbnRDb250ZXh0SW5hY3Rpdml0eVRpbWVvdXQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfY29udGV4dEluYWN0aXZpdHlXYXJuaW5nVGltZTogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF90b29saXRpcFRpbWVvdXQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfY29udGV4dFVubG9hZFRpbWVvdXQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfY2FuUmVwbGFjZURlY2ltYWxTZXBhcmF0b3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9jb2RlUGFnZTogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9kYXRlU2VwYXJhdG9yOiBzdHJpbmcgPSAnXFwwJzsgLy8gZGF0ZSBzZXBhcmF0b3JcclxuICBwcml2YXRlIF9kZWNpbWFsU2VwYXJhdG9yOiBzdHJpbmcgPSAnXFwwJzsgLy8gZGVjaW1hbCBzZXBhcmF0b3JcclxuICBwcml2YXRlIF90aG91c2FuZHNTZXBhcmF0b3I6IHN0cmluZyA9ICdcXDAnOyAvLyB0aG91c2FuZHMgc2VwYXJhdG9yXHJcbiAgcHJpdmF0ZSBfdGltZVNlcGFyYXRvcjogc3RyaW5nID0gJ1xcMCc7IC8vIHRpbWUgc2VwYXJhdG9yXHJcblxyXG4gIHByaXZhdGUgX2d1aWQ6IHN0cmluZyA9IG51bGw7IC8vIGd1aWQgb2YgdGhlIGFwcGxpY2F0aW9uXHJcbiAgcHJpdmF0ZSBfaW1lQXV0b09mZjogYm9vbGVhbiA9IGZhbHNlOyAvLyBKUE46IElNRSBzdXBwb3J0XHJcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2U6IHN0cmluZyA9ICdcXDAnO1xyXG4gIHByaXZhdGUgX2xvY2FsQXM0MDBTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9sb2NhbEV4dHJhR2VuZ286IHN0cmluZyA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfbG9jYWxGbGFnczogc3RyaW5nID0gbnVsbDtcclxuICBwcml2YXRlIF9sb3dIaWdoOiBib29sZWFuID0gdHJ1ZTsgLy8gd2hhdCBpcyB0aGUgb3JkZXIgb2YgYnl0ZXMgaW4gZXhwcmVzc2lvbnMgKExPV19ISUdIIG9yIEhJR0hfTE9XKVxyXG4gIHByaXZhdGUgX293bmVyOiBzdHJpbmcgPSBudWxsOyAvLyBvd25lclxyXG4gIHByaXZhdGUgX2RlYnVnTW9kZTogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9zaWduaWZpY2FudE51bVNpemU6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfc3BlY2lhbEFuc2lFeHByZXNzaW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfc3BlY2lhbEltbWVkaWF0ZWhhbmRsZXJFbmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9zcGVjaWFsU2hvd1N0YXR1c0JhclBhbmVzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfc3BlY2lhbFJvdXRlVG9Sb290UHJvZ09uQ29udGV4dFJlY3JlYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gIHByaXZhdGUgX3NwZWNpYWxDYW5jZWxPbkNyZWF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3N5c3RlbTogc3RyaW5nID0gbnVsbDtcclxuICBwcml2YXRlIF90ZXJtaW5hbDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9mb3J3YXJkU2xhc2g6IHN0cmluZyA9IENvbnN0YW50cy5Gb3J3YXJkU2xhc2hXZWJVc2FnZTsgLy8gcmVmZXIgdG8gYSBmb3J3YXJkIHNsYXNoIGFzIGEgcmVsYXRpdmUgd2ViIHVybC5cclxuICBwcml2YXRlIF9kcm9wVXNlckZvcm1hdHM6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgX3dlYmNsaWVudFJlaW5pdFNlc3Npb246IHN0cmluZyA9IFwiTlwiO1xyXG4gIHByaXZhdGUgX3NwZWNpYWxWYWxOZXdQb2xpY3k6IGJvb2xlYW4gPSBmYWxzZTsgLy8/P1xyXG5cclxuICBzdGF0aWMgSW5zdGFuY2U6IEVudmlyb25tZW50ID0gbmV3IEVudmlyb25tZW50KCk7XHJcblxyXG4gIGdldCBMYW5ndWFnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xhbmd1YWdlO1xyXG4gIH1cclxuXHJcblxyXG4gIElnbm9yZVJlcGxhY2VEZWNpbWFsU2VwYXJhdG9yOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuICBnZXQgU3BlY2lhbFJlc3RvcmVNYXhpbWl6ZWRGb3JtKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+aW5zdHJ1Y3RzIGhvdyB0byByZWZlciBhIGZvcndhcmQgc2xhc2ggLSBlaXRoZXIgYXMgYSByZWxhdGl2ZSB3ZWIgdXJsLCBvciBhcyBhIGZpbGUgaW4gdGhlIGZpbGUgc3lzdGVtLi48L3N1bW1hcnk+XHJcbiAgc2V0IEZvcndhcmRTbGFzaFVzYWdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2ZvcndhcmRTbGFzaCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IEZvcndhcmRTbGFzaFVzYWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9yd2FyZFNsYXNoO1xyXG4gIH1cclxuXHJcbiAgZmlsbERhdGEocGFyc2VyOiBYbWxQYXJzZXIpOiB2b2lkO1xyXG4gIGZpbGxEYXRhKHRva2Vuc1ZlY3RvcjogTGlzdDxzdHJpbmc+KTogdm9pZDtcclxuICBmaWxsRGF0YSh0b2tlbnNWZWN0b3JPclBhcnNlcj86IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGFyZ3VtZW50c1swXSBpbnN0YW5jZW9mIFhtbFBhcnNlcikge1xyXG4gICAgICB0aGlzLmZpbGxEYXRhXzAodG9rZW5zVmVjdG9yT3JQYXJzZXIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpbGxEYXRhXzEodG9rZW5zVmVjdG9yT3JQYXJzZXIpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIE5lZWQgcGFydCBpbnB1dCBTdHJpbmcgdG8gcmVsZXZhbnQgZm9yIHRoZSBjbGFzcyBkYXRhLiBlbmQgPGVudiAuLi4+IHRhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHVibGljIGZpbGxEYXRhXzAocGFyc2VyOiBYbWxQYXJzZXIpOiB2b2lkIHtcclxuICAgIGxldCBlbmRDb250ZXh0OiBudW1iZXIgPSBwYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoWE1MQ29uc3RhbnRzLlRBR19URVJNLCBwYXJzZXIuZ2V0Q3VyckluZGV4KCkpO1xyXG4gICAgaWYgKGVuZENvbnRleHQgIT09IC0xICYmIGVuZENvbnRleHQgPCBwYXJzZXIuZ2V0WE1MZGF0YSgpLmxlbmd0aCkge1xyXG4gICAgICAvLyBsYXN0IHBvc2l0aW9uIG9mIGl0cyB0YWdcclxuICAgICAgbGV0IHRhZzogU3RyaW5nID0gcGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KTtcclxuICAgICAgcGFyc2VyLmFkZDJDdXJySW5kZXgodGFnLmluZGV4T2YoQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0VOVikgKyBDb25zdEludGVyZmFjZS5NR19UQUdfRU5WLmxlbmd0aCk7XHJcbiAgICAgIGxldCB0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPiA9IFhtbFBhcnNlci5nZXRUb2tlbnMocGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KSwgWE1MQ29uc3RhbnRzLlhNTF9BVFRSX0RFTElNKTtcclxuICAgICAgdGhpcy5maWxsRGF0YSh0b2tlbnNWZWN0b3IpO1xyXG4gICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KGVuZENvbnRleHQgKyBYTUxDb25zdGFudHMuVEFHX1RFUk0ubGVuZ3RoKTtcclxuICAgIH0gZWxzZSBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBFbnZpcm9ubWVudC5GaWxsRGF0YSgpIG91dCBvZiBzdHJpbmcgYm91bmRzXCIpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIE1ha2UgaW5pdGlhbGl6YXRpb24gb2YgcHJpdmF0ZSBlbGVtZW50cyBieSBmb3VuZCB0b2tlbnNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidG9rZW5zVmVjdG9yXCI+Zm91bmQgdG9rZW5zLCB3aGljaCBjb25zaXN0IGF0dHJpYnV0ZS92YWx1ZSBvZiBldmVyeSBmb3VuZCBlbGVtZW50PC9wYXJhbT5cclxuICBwcml2YXRlIGZpbGxEYXRhXzEodG9rZW5zVmVjdG9yOiBMaXN0PHN0cmluZz4pOiB2b2lkIHtcclxuICAgIGxldCBhdHRyaWJ1dGU6IHN0cmluZztcclxuICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nO1xyXG4gICAgbGV0IGhhc2hLZXk6IG51bWJlcjtcclxuICAgIGxldCBlbnY6IEVudmlyb25tZW50RGV0YWlscztcclxuICAgIGVudiA9IG5ldyBFbnZpcm9ubWVudERldGFpbHMoKTtcclxuXHJcbiAgICBmb3IgKGxldCBqOiBudW1iZXIgPSAwOyBqIDwgdG9rZW5zVmVjdG9yLmxlbmd0aDsgaiArPSAyKSB7XHJcbiAgICAgIGF0dHJpYnV0ZSA9ICh0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaikpO1xyXG4gICAgICB2YWx1ZVN0ciA9ICh0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaiArIDEpKTtcclxuICAgICAgdmFsdWVTdHIgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpO1xyXG4gICAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkge1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9USE9VU0FORFM6XHJcbiAgICAgICAgICB0aGlzLl90aG91c2FuZHNTZXBhcmF0b3IgPSB2YWx1ZVN0clswXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9ERUNJTUFMX1NFUEFSQVRPUjpcclxuICAgICAgICAgIHRoaXMuX2RlY2ltYWxTZXBhcmF0b3IgPSB2YWx1ZVN0clswXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9XRUJDTElFTlRfUkVJTklUX1NFU1NJT046XHJcbiAgICAgICAgICB0aGlzLl93ZWJjbGllbnRSZWluaXRTZXNzaW9uID0gdmFsdWVTdHJbMF07XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfREFURTpcclxuICAgICAgICAgIHRoaXMuX2RhdGVTZXBhcmF0b3IgPSB2YWx1ZVN0clswXTtcclxuICAgICAgICAgIERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2Uuc2V0RGF0ZUNoYXIodGhpcy5fZGF0ZVNlcGFyYXRvci5jaGFyQ29kZUF0KDApKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9USU1FOlxyXG4gICAgICAgICAgdGhpcy5fdGltZVNlcGFyYXRvciA9IHZhbHVlU3RyWzBdO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX09XTkVSOlxyXG4gICAgICAgICAgdGhpcy5fb3duZXIgPSB2YWx1ZVN0cjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9TSUdOSUZJQ0FOVF9OVU1fU0laRTpcclxuICAgICAgICAgIHRoaXMuX3NpZ25pZmljYW50TnVtU2l6ZSA9IFhtbFBhcnNlci5nZXRJbnQodmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0RFQlVHX01PREU6XHJcbiAgICAgICAgICB0aGlzLl9kZWJ1Z01vZGUgPSBYbWxQYXJzZXIuZ2V0SW50KHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9QT0lOVF9UUkFOU0xBVElPTjpcclxuICAgICAgICAgIHRoaXMuX2NhblJlcGxhY2VEZWNpbWFsU2VwYXJhdG9yID0gWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1NQRUNJQUxfRVhJVENUUkw6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfTE9XSElHSDpcclxuICAgICAgICAgIHRoaXMuX2xvd0hpZ2ggPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfQUNDRVNTX1RFU1Q6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfU1BFQ0lBTF9URVhUX1NJWkVfRkFDVE9SSU5HOlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1NQRUNJQUxfRkxBVF9FRElUX09OX0NMQVNTSUNfVEhFTUU6XHJcblxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0VOQ09ESU5HOlxyXG4gICAgICAgICAgaWYgKHZhbHVlU3RyICE9PSBcIiBcIikge1xyXG4gICAgICAgICAgICB0aGlzLl9jb2RlUGFnZSA9IFhtbFBhcnNlci5nZXRJbnQodmFsdWVTdHIpO1xyXG4gICAgICAgICAgICBVdGlsU3RyQnl0ZU1vZGUuRW5jb2RpbmcgPSB0aGlzLkdldEVuY29kaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfU1lTVEVNOlxyXG4gICAgICAgICAgdGhpcy5fc3lzdGVtID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9DT01QT05FTlQ6XHJcbiAgICAgICAgICBlbnYuQ29tcElkeCA9IFhtbFBhcnNlci5nZXRJbnQodmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0RBVEVNT0RFOlxyXG4gICAgICAgICAgZW52LkRhdGVNb2RlID0gdmFsdWVTdHJbMF07XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfQ0VOVFVSWTpcclxuICAgICAgICAgIGVudi5DZW50dXJ5ID0gWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfSURMRVRJTUU6XHJcbiAgICAgICAgICBlbnYuSWRsZVRpbWUgPSBYbWxQYXJzZXIuZ2V0SW50KHZhbHVlU3RyKTtcclxuICAgICAgICAgIC8vIGhhbmRsZSB0aGUgZGVmYXVsdCBpZGxlIHRpbWUgdmFsdWVcclxuICAgICAgICAgIGlmIChlbnYuSWRsZVRpbWUgPT09IDApXHJcbiAgICAgICAgICAgIGVudi5JZGxlVGltZSA9IDE7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfVVBEX0lOX1FVRVJZOlxyXG4gICAgICAgICAgZW52LlVwZGF0ZUluUXVlcnlNb2RlID0gWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0NSRV9JTl9NT0RJRlk6XHJcbiAgICAgICAgICBlbnYuQ3JlYXRlSW5Nb2RpZnlNb2RlID0gWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0RFRkFVTFRfQ09MT1I6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfREVGQVVMVF9GT0NVU19DT0xPUjpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9DT05URVhUX0lOQUNUSVZJVFlfVElNRU9VVDpcclxuICAgICAgICAgIHRoaXMuX2NvbnRleHRJbmFjdGl2aXR5VGltZW91dCA9IFhtbFBhcnNlci5nZXRJbnQodmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0NMSUVOVF9DT05URVhUX0lOQUNUSVZJVFlfVElNRU9VVDpcclxuICAgICAgICAgIHRoaXMuX2NsaWVudENvbnRleHRJbmFjdGl2aXR5VGltZW91dCA9IFhtbFBhcnNlci5nZXRJbnQodmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0NPTlRFWFRfSU5BQ1RJVklUWV9XQVJOSU5HX1RJTUU6XHJcbiAgICAgICAgICB0aGlzLl9jb250ZXh0SW5hY3Rpdml0eVdhcm5pbmdUaW1lID0gWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfVE9PTFRJUF9USU1FT1VUOlxyXG4gICAgICAgICAgdGhpcy5fdG9vbGl0aXBUaW1lb3V0ID0gWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfQ09OVEVYVF9VTkxPQURfVElNRU9VVDpcclxuICAgICAgICAgIHRoaXMuX2NvbnRleHRVbmxvYWRUaW1lb3V0ID0gWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfSU1FX0FVVE9fT0ZGOlxyXG4gICAgICAgICAgdGhpcy5faW1lQXV0b09mZiA9IFhtbFBhcnNlci5nZXRCb29sZWFuKHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9MT0NBTF9BUzQwMFNFVDpcclxuICAgICAgICAgIHRoaXMuX2xvY2FsQXM0MDBTZXQgPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfTE9DQUxfRVhUUkFfR0VOR086XHJcbiAgICAgICAgICB0aGlzLl9sb2NhbEV4dHJhR2VuZ28gPSB2YWx1ZVN0cjtcclxuICAgICAgICAgIFV0aWxEYXRlSnBuLmdldEluc3RhbmNlKCkuYWRkRXh0cmFHZW5nbyh0aGlzLl9sb2NhbEV4dHJhR2VuZ28pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0xPQ0FMX0ZMQUdTOlxyXG4gICAgICAgICAgdGhpcy5fbG9jYWxGbGFncyA9IHZhbHVlU3RyO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1NQRUNJQUxfSU1NRURJQVRFX0hBTkRMRVJfRU5EOlxyXG4gICAgICAgICAgdGhpcy5fc3BlY2lhbEltbWVkaWF0ZWhhbmRsZXJFbmQgPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfU1BFQUNJQUxfQU5TSV9FWFA6XHJcbiAgICAgICAgICB0aGlzLl9zcGVjaWFsQW5zaUV4cHJlc3Npb24gPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfU1BFQ0lBTF9TSE9XX1NUQVRVU0JBUl9QQU5FUzpcclxuICAgICAgICAgIHRoaXMuX3NwZWNpYWxTaG93U3RhdHVzQmFyUGFuZXMgPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfU1BFQ0lBTF9ST1VURV9UT19ST09UX1BST0dfT05fQ09OVEVYVF9SRUNSRUFUSU9OOlxyXG4gICAgICAgICAgdGhpcy5fc3BlY2lhbFJvdXRlVG9Sb290UHJvZ09uQ29udGV4dFJlY3JlYXRpb24gPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfU1BFQ0lBTF9TUEVDSUFMX0VESVRfTEVGVF9BTElHTjpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9TUEVBQ0lBTF9TV0ZfQ09OVFJPTF9OQU1FOlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0xBTkdVQUdFOlxyXG4gICAgICAgICAgdGhpcy5fbGFuZ3VhZ2UgPSB2YWx1ZVN0clswXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9VU0VSSUQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX1RBR19VU0VSTkFNRTpcclxuICAgICAgICAgIFNlcnZlckNvbmZpZy5JbnN0YW5jZS5zZXRVc2VybmFtZSh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfVEVSTUlOQUw6XHJcbiAgICAgICAgICB0aGlzLl90ZXJtaW5hbCA9IFhtbFBhcnNlci5nZXRJbnQodmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1VTRVJJTkZPOlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0dVSUQ6XHJcbiAgICAgICAgICB0aGlzLl9ndWlkID0gdmFsdWVTdHI7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfQ09OVFJPTFNfUEVSU0lTVEVOQ1lfUEFUSDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9QUk9KRElSOlxyXG4gICAgICAgICAgZW52LlByb2pEaXIgPSB2YWx1ZVN0cjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9EUk9QX1VTRVJGT1JNQVRTOlxyXG4gICAgICAgICAgdGhpcy5fZHJvcFVzZXJGb3JtYXRzID0gdmFsdWVTdHI7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfU1BFQ0lBTF9WQUxfTkVXX1BPTElDWTpcclxuICAgICAgICAgIHRoaXMuX3NwZWNpYWxWYWxOZXdQb2xpY3kgPSAgWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1NQRUNJQUxfQ0FOQ0VMX09OX0NSRUFURTpcclxuICAgICAgICAgIHRoaXMuX3NwZWNpYWxDYW5jZWxPbkNyZWF0ZSA9IFhtbFBhcnNlci5nZXRCb29sZWFuKHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9TUEVDSUFMX0xFR0FDWV9UUklNX1JBTkdFOlxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9TUEVDSUFMX0xFR0FDWV9FTVBUWV9SQU5HRTpcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfREVGQVVMVF9ESVNBQkxFRF9DT0xPUjpcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfU1BFQ0lBTF9BTlNJX0JMT0JfQ0hFQ0tfTlVMTDpcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfU1BFQ0lBTF9UQUJMRV9SRURVQ0VfVElUTEVfSEVJR0hUOlxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9TUEVDSUFMX0RPVE5FVF9BTExPV19aRVJPX0RBVEU6XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1NQRUNJQUxfUkVVU0VfVEFCTEVfRURJVE9SOlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhcImluIEVudmlyb25tZW50LmZpbGxEYXRhKCk6IHVua25vd24gYXR0cmlidXRlOiBcIiArIGF0dHJpYnV0ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaGFzaEtleSA9IGVudi5Db21wSWR4O1xyXG4gICAgdGhpcy5fZW52aXJvbm1lbnRzLnNldF9JdGVtKGhhc2hLZXksIGVudik7XHJcblxyXG5cclxuICAgIC8vIFRPRE86IHNvbWVob3cgYWRkQXN5bmMgdGhyb3dzIHNvbWUgZXhjZXB0aW9uIGZvciBTRVRfRU5WX1RPT0xUSVBfVElNRU9VVC4gRXZhbHVhdGUgYW5kIGZpeCBpdCwgaWYgcG9zc2libGVcclxuICAgIC8vIGlmICh0aGlzLl90b29saXRpcFRpbWVvdXQgPiAwKVxyXG4gICAgLy8gICBDb21tYW5kcy5hZGRBc3luYyhDb21tYW5kVHlwZS5TRVRfRU5WX1RPT0xUSVBfVElNRU9VVCwgPE9iamVjdD5udWxsLCA8T2JqZWN0PnRoaXMuX3Rvb2xpdGlwVGltZW91dCk7XHJcblxyXG5cclxuXHJcbiAgICAvLyBpZiAodGhpcy5fbGFuZ3VhZ2UgIT09ICcgJylcclxuICAgIC8vICAgQ29tbWFuZHMuYWRkQXN5bmMoQ29tbWFuZFR5cGUuU0VUX0VOVl9MQU1HVUFHRSwgbnVsbCwgMCwgdGhpcy5fbGFuZ3VhZ2UuY2hhckNvZGVBdCgwKSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZmlsbCB0aGUgZmlsZSBtYXBwaW5nIHdoZW4gcGFzc2VkIHRocm91Z2ggdGhlIGNhY2hlOiBwbGFjZWQgaW50byB0aGUgY2FjaGUgYnkgdGhlIHJ1bnRpbWUtZW5naW5lLCBwYXNzZWRcclxuICAvLy8gICBhcyAnPGZpbGV1cmwgdmFsID0gXCIvLi4uXCInXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIlRBR19VUkxcIj48L3BhcmFtPlxyXG4gIGFzeW5jIGZpbGxGcm9tVXJsKHRhZ05hbWU6IHN0cmluZywgcGFyc2VyOiBYbWxQYXJzZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCBYTUxkYXRhOiBzdHJpbmcgPSBwYXJzZXIuZ2V0WE1MZGF0YSgpO1xyXG5cclxuICAgIGxldCBlbmRDb250ZXh0OiBudW1iZXIgPSBwYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoWE1MQ29uc3RhbnRzLlRBR19URVJNLCBwYXJzZXIuZ2V0Q3VyckluZGV4KCkpO1xyXG4gICAgaWYgKGVuZENvbnRleHQgIT09IC0xICYmIGVuZENvbnRleHQgPCBYTUxkYXRhLmxlbmd0aCkge1xyXG5cclxuICAgICAgLy8gZmluZCBsYXN0IHBvc2l0aW9uIG9mIGl0cyB0YWdcclxuICAgICAgbGV0IHRhZ0FuZEF0dHJpYnV0ZXM6IHN0cmluZyA9IHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCk7XHJcbiAgICAgIHBhcnNlci5hZGQyQ3VyckluZGV4KHRhZ0FuZEF0dHJpYnV0ZXMuaW5kZXhPZih0YWdOYW1lKSArIHRhZ05hbWUubGVuZ3RoKTtcclxuXHJcbiAgICAgIGxldCB0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPiA9IFhtbFBhcnNlci5nZXRUb2tlbnMocGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KSwgWE1MQ29uc3RhbnRzLlhNTF9BVFRSX0RFTElNKTtcclxuICAgICAgRGVidWcuQXNzZXJ0KHRva2Vuc1ZlY3Rvci5nZXRfSXRlbSgwKSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfVkFMVUUpO1xyXG5cclxuICAgICAgbGV0IGNhY2hlZEZpbGVVcmw6IHN0cmluZyA9ICh0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oMSkpO1xyXG4gICAgICBpZiAoY2FjaGVkRmlsZVVybC50cmltKCkgPT09IFwiXCIpXHJcbiAgICAgIC8vIG1pZ2h0IGhhcHBlbiBpbiBjYXNlIHRoZSB4cGEgc2VydmVyIGZhaWxlZCB0byB3cml0ZSB0byBpdHMgY2FjaGUgZm9sZGVyXHJcbiAgICAgIC8vIChlLmcuIHRoZSBjYWNoZSBmb2xkZXIgaXMgaW52YWxpZCwgZHVlIHRvIGEgY29uZmlndXJhdGlvbiBtaXN0YWtlLFxyXG4gICAgICAvLyBpbiB3aGljaCBjYXNlIHRoZSBjdXJyZW50IGVycm9yIG1lc3NhZ2Ugd2lsbCBiZSBtYXRjaGVkIHdpdGggYW4gZXJyb3IgaW4gdGhlIHhwYSBzZXJ2ZXIncyBsb2cgZmlsZSAoR2VuZXJhbEVycm9yTG9nPSkpLlxyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUVycm9yVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJFbXB0eSBjYWNoZWQgZmlsZSBVUkw6ICd7MH0nXCIsIHRhZ0FuZEF0dHJpYnV0ZXMudHJpbSgpKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBDb250ZW50OiBzdHJpbmcgPSBhd2FpdCBDb21tYW5kc1Byb2Nlc3Nvck1hbmFnZXIuR2V0Q29udGVudChjYWNoZWRGaWxlVXJsLCB0cnVlKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgc3dpdGNoICh0YWdOYW1lKSB7XHJcbiAgICAgICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0tCRE1BUF9VUkw6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0VOVl9QQVJBTV9VUkw6XHJcbiAgICAgICAgICAgICAgbGV0IGlubmVyWG1sUGFyc2VyOiBYbWxQYXJzZXIgPSBuZXcgWG1sUGFyc2VyKENvbnRlbnQpO1xyXG4gICAgICAgICAgICAgIHdoaWxlIChBY2Nlc3NIZWxwZXIuZW52UGFyYW1zVGFibGUubWlycm9yRnJvbVhNTChpbm5lclhtbFBhcnNlci5nZXROZXh0VGFnKCksIGlubmVyWG1sUGFyc2VyKSkge1xyXG5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleCkge1xyXG4gICAgICAgICAgc3dpdGNoICh0YWdOYW1lKSB7XHJcbiAgICAgICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0tCRE1BUF9VUkw6XHJcbiAgICAgICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKE5TdHJpbmcuRm9ybWF0KFwiS2V5Ym9hcmQgTWFwcGluZzogJ3swfSd7MX17Mn1cIiwgY2FjaGVkRmlsZVVybCwgT1NFbnZpcm9ubWVudC5Fb2xTZXEsIGV4Lk1lc3NhZ2UpKTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19UQUdfRU5WX1BBUkFNX1VSTDpcclxuICAgICAgICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coTlN0cmluZy5Gb3JtYXQoXCJFbnYgUGFyYW1zIFRhYmxlOiAnezB9J3sxfXsyfVwiLCBjYWNoZWRGaWxlVXJsLCBPU0Vudmlyb25tZW50LkVvbFNlcSwgZXguTWVzc2FnZSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICAgZW5kQ29udGV4dCA9IFhNTGRhdGEuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX09QRU4sIGVuZENvbnRleHQpO1xyXG4gICAgICBpZiAoZW5kQ29udGV4dCAhPT0gLTEpXHJcbiAgICAgICAgcGFyc2VyLnNldEN1cnJJbmRleChlbmRDb250ZXh0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgRW52aXJvbm1lbnREZXRhaWxzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgY29tcElkeFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb21wSWR4XCI+b2YgdGhlIHRhc2s8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IEVudmlyb25tZW50RGV0YWlsczwvcmV0dXJucz5cclxuICBwcml2YXRlIGdldEVudkRldChjb21wSWR4OiBudW1iZXIpOiBFbnZpcm9ubWVudERldGFpbHMge1xyXG4gICAgbGV0IGVudmlyb25tZW50RGV0YWlsczogRW52aXJvbm1lbnREZXRhaWxzID0gPEVudmlyb25tZW50RGV0YWlscz50aGlzLl9lbnZpcm9ubWVudHMuZ2V0X0l0ZW0oY29tcElkeCk7XHJcblxyXG4gICAgaWYgKGVudmlyb25tZW50RGV0YWlscyA9PT0gbnVsbClcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKFwiaW4gRW52aXJvbm1lbnQuZ2V0RW52RGV0KCkgdGhlcmUgaXMgbm8gZW52XCIpO1xyXG4gICAgcmV0dXJuIGVudmlyb25tZW50RGV0YWlscztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdGhlIGRhdGUgbW9kZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb21wSWR4XCI+b2YgdGhlIHRhc2s8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gRGF0ZU1vZGU8L3JldHVybnM+XHJcbiAgR2V0RGF0ZU1vZGUoY29tcElkeDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmdldEVudkRldChjb21wSWR4KS5EYXRlTW9kZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdGhlIFRob3VzYW5kc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBUaG91c2FuZHM8L3JldHVybnM+XHJcbiAgR2V0VGhvdXNhbmRzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGhvdXNhbmRzU2VwYXJhdG9yO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgRGVjaW1hbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBEZWNpbWFsPC9yZXR1cm5zPlxyXG4gIEdldERlY2ltYWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWNpbWFsU2VwYXJhdG9yO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgdGhlIERlY2ltYWxcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldERlY2ltYWxTZXBhcmF0b3IodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVjaW1hbFNlcGFyYXRvciA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgdGhlIERlY2ltYWxcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldFRob3VzYW5kc1NlcGFyYXRvcih2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl90aG91c2FuZHNTZXBhcmF0b3IgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHNldERhdGVTZXBhcmF0b3IodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGF0ZVNlcGFyYXRvciA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgc2V0VGltZVNlcGFyYXRvcih2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl90aW1lU2VwYXJhdG9yID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSBEYXRlIFNlcGFyYXRvclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBEYXRlIFNlcGFyYXRvcjwvcmV0dXJucz5cclxuICBHZXREYXRlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0ZVNlcGFyYXRvcjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdGhlIElkbGVUaW1lXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImNvbXBJZHhcIj5vZiB0aGUgdGFzazwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBJZGxlVGltZTwvcmV0dXJucz5cclxuICBnZXRJZGxlVGltZShjb21wSWR4OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RW52RGV0KGNvbXBJZHgpLklkbGVUaW1lO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgb3duZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gb3duZXI8L3JldHVybnM+XHJcbiAgZ2V0T3duZXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9vd25lcjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdGhlIHRpbWUgc2VwYXJhdG9yXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHRpbWUgc2VwZXJhdG9yPC9yZXR1cm5zPlxyXG4gIEdldFRpbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90aW1lU2VwYXJhdG9yO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgY2VudHVyeVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb21wSWR4XCI+b2YgdGhlIHRhc2s8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5jZW50dXJ5PC9yZXR1cm5zPlxyXG4gIEdldENlbnR1cnkoY29tcElkeDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmdldEVudkRldChjb21wSWR4KS5DZW50dXJ5O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiBUUlVFIGlmIHVwZGF0ZSBpcyBhbGxvd2VkIGluIHF1ZXJ5IG1vZGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY29tcElkeFwiPm9mIHRoZSB0YXNrPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IFVwZGF0ZUluUXVlcnlNb2RlPC9yZXR1cm5zPlxyXG4gIGFsbG93VXBkYXRlSW5RdWVyeU1vZGUoY29tcElkeDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRFbnZEZXQoY29tcElkeCkuYWxsb3dVcGRhdGVJblF1ZXJ5TW9kZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiBUUlVFIGlmIGNyZWF0ZSBpcyBhbGxvd2VkIGluIG1vZGlmeSBtb2RlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImNvbXBJZHhcIj5vZiB0aGUgdGFzazwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBhbGxvd0NyZWF0ZUluTW9kaWZ5TW9kZTwvcmV0dXJucz5cclxuICBhbGxvd0NyZWF0ZUluTW9kaWZ5TW9kZShjb21wSWR4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdldEVudkRldChjb21wSWR4KS5hbGxvd0NyZWF0ZUluTW9kaWZ5TW9kZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgc2lnbmlmaWNhbnQgbnVtIHNpemVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIHNpZ25pZmljYW50IG51bSBzaXplPC9yZXR1cm5zPlxyXG4gIEdldFNpZ25pZmljYW50TnVtU2l6ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NpZ25pZmljYW50TnVtU2l6ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIHNpZ25pZmljYW50IG51bSBzaXplXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHNldFNpZ25pZmljYW50TnVtU2l6ZShuZXdTaXplOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NpZ25pZmljYW50TnVtU2l6ZSA9IG5ld1NpemU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSBjb2RlIHBhZ2VcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGNvZGUgcGFnZVxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgZ2V0Q29kZVBhZ2UoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jb2RlUGFnZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgY2hhcnNldCBvZiB0aGUgY3VycmVudCBkb2N1bWVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgR2V0RW5jb2RpbmcoKTogRW5jb2Rpbmcge1xyXG4gICAgbGV0IGVuY29kaW5nOiBFbmNvZGluZztcclxuICAgIHRyeSB7XHJcbiAgICAgIGVuY29kaW5nID0gRW5jb2RpbmcuR2V0RW5jb2RpbmcodGhpcy5fY29kZVBhZ2UpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4Y2VwdGlvbikge1xyXG4gICAgICBlbmNvZGluZyA9IG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZW5jb2Rpbmc7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgc3lzdGVtIG5hbWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIHN5c3RlbSBuYW1lXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBnZXRTeXN0ZW0oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zeXN0ZW07XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgZGVidWcgbGV2ZWxcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gMCBubyBkZWJ1ZyAxIGRlYnVnIDIgZGVidWcgYW5kIGRhdGEgdHJhbnNmZXJzIGluIGhleCAoIG5vdCBpbiBiYXNlNjQpXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBHZXREZWJ1Z0xldmVsKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVidWdNb2RlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgaWYgJy4nIHNob3VsZCBiZSBjaGFuZ2VkIHRvIHRoZSBkZWNpbWFsIHNlcGFyYXRvclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgQ2FuUmVwbGFjZURlY2ltYWxTZXBhcmF0b3IoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuSWdub3JlUmVwbGFjZURlY2ltYWxTZXBhcmF0b3IgJiYgdGhpcy5fY2FuUmVwbGFjZURlY2ltYWxTZXBhcmF0b3I7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSBDbGllbnRDb250ZXh0SW5hY3Rpdml0eVRpbWVvdXRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIENsaWVudENvbnRleHRJbmFjdGl2aXR5VGltZW91dDwvcmV0dXJucz5cclxuICBnZXRDbGllbnRDb250ZXh0SW5hY3Rpdml0eVRpbWVvdXQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jbGllbnRDb250ZXh0SW5hY3Rpdml0eVRpbWVvdXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSBDb250ZXh0SW5hY3Rpdml0eVRpbWVvdXRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIENvbnRleHRJbmFjdGl2aXR5VGltZW91dDwvcmV0dXJucz5cclxuICBnZXRDb250ZXh0SW5hY3Rpdml0eVRpbWVvdXQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250ZXh0SW5hY3Rpdml0eVRpbWVvdXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSBDb250ZXh0SW5hY3Rpdml0eVdhcm5pbmdUaW1lb3V0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBDb250ZXh0SW5hY3Rpdml0eVdhcm5pbmdUaW1lb3V0PC9yZXR1cm5zPlxyXG4gIGdldENvbnRleHRJbmFjdGl2aXR5V2FybmluZ1RpbWUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250ZXh0SW5hY3Rpdml0eVdhcm5pbmdUaW1lO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgQ29udGV4dFVubG9hZFRpbWVvdXRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldENvbnRleHRVbmxvYWRUaW1lb3V0KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udGV4dFVubG9hZFRpbWVvdXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSB0b29sdGlwIHRpbWVvdXRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIHRvb2x0aXBUaW1lb3V0PC9yZXR1cm5zPlxyXG4gIEdldFRvb2x0aXBUaW1lb3V0KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fdG9vbGl0aXBUaW1lb3V0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgVFJVRSBpZiB0aGUgYnl0ZXMgc2VxdWVuY2UgZm9yIG51bWJlcnMgaW4gZXhwcmVzc2lvbnMgaXMgZnJvbSBsb3cgdG8gaGlnaFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TG93SGlnaCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9sb3dIaWdoO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdHJ1ZSBpZiBJTUVBdXRvT2ZmID0gWVxyXG4gIC8vLyAgIChKUE46IElNRSBzdXBwb3J0KVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgR2V0SW1lQXV0b09mZigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pbWVBdXRvT2ZmO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0cnVlIGlmIEFzNDAwU2V0IGZsYWcgPSBZXHJcbiAgLy8vICAgKERCQ1MgU3VwcG9ydClcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEdldExvY2FsQXM0MDBTZXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9jYWxBczQwMFNldDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5GdW5jdGlvbiByZXR1cm5pbmcgYWRkaXRpb25hbCBHZW5nbyB2YWx1ZS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldExvY2FsRXh0cmFHZW5nbygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xvY2FsRXh0cmFHZW5nbztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5GdW5jdGlvbiB0byBjaGVjayB3aGV0aGVyIGZsYWcgZiBpcyBpbiB0aGUgbG9jYWwgZmxhZ3MuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBHZXRMb2NhbEZsYWcoZjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9jYWxGbGFncyAhPT0gbnVsbCAmJiB0aGlzLl9sb2NhbEZsYWdzLmluZGV4T2YoZikgPj0gMDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdHJ1ZSBpZiBTcGVjaWFsSW1tZWRpYXRlSGFuZGxlckVuZCBmbGFnID0gWTwvcmV0dXJucz5cclxuICBnZXRTcGVjaWFsSW1tZWRpYXRlSGFuZGxlckVuZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9zcGVjaWFsSW1tZWRpYXRlaGFuZGxlckVuZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdHJ1ZSBpZiBTcGVjaWFsQW5zaUV4cHJlc3Npb24gZmxhZyA9IFk8L3JldHVybnM+XHJcbiAgZ2V0U3BlY2lhbEFuc2lFeHByZXNzaW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NwZWNpYWxBbnNpRXhwcmVzc2lvbjtcclxuICB9XHJcblxyXG4gIGdldFNwZWNpYWxTaG93U3RhdHVzQmFyUGFuZXMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3BlY2lhbFNob3dTdGF0dXNCYXJQYW5lcztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGdW5jdGlvbiByZXR1cm5zIHRoZSB0ZXJtaW5hbCBudW1iZXIuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+dGVybWluYWwgbnVtYmVyLjwvcmV0dXJucz5cclxuICBnZXRUZXJtaW5hbCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Rlcm1pbmFsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEZ1bmN0aW9uIHJldHVybnMgd2ViIGNsaWVudCByZS1pbml0IHNlc3Npb24uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+dGVybWluYWwgbnVtYmVyLjwvcmV0dXJucz5cclxuICBnZXRXZWJDbGllbnRSZWluaXRTZXNzaW9uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2ViY2xpZW50UmVpbml0U2Vzc2lvbjtcclxuICB9XHJcblxyXG4gIHNldFdlYkNsaWVudFJlaW5pdFNlc3Npb24oIHNlc3Npb24gOiBzdHJpbmcpIHtcclxuICAgICB0aGlzLl93ZWJjbGllbnRSZWluaXRTZXNzaW9uID0gc2Vzc2lvbjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGdW5jdGlvbiByZXR1cm5zIHdlYiBjbGllbnQgcmUtaW5pdCBzZXNzaW9uLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPnRlcm1pbmFsIG51bWJlci48L3JldHVybnM+XHJcbiAgZ2V0U3BlY2lhbFJvdXRlVG9Sb290UHJvZ09uQ29udGV4dFJlY3JlYXRpb24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3BlY2lhbFJvdXRlVG9Sb290UHJvZ09uQ29udGV4dFJlY3JlYXRpb247XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+Z2V0cyBndWkgSWQgb2YgdGhlIGFwcGxpY2F0aW9uPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgR2V0R1VJRCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2d1aWQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgcHJvamVjdCdzIGRpclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29tcElkeFwiPmNvbXBvbmVudCBpbmRleC48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgZ2V0UHJvakRpcihjb21wSWR4OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RW52RGV0KGNvbXBJZHgpLlByb2pEaXI7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZXR1cm5zIHZhbHVlIG9mIFNwZWNpYWxMb2dJbnRlcm5hbEV4Y2VwdGlvbnMuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIEdldFNwZWNpYWxMb2dJbnRlcm5hbEV4Y2VwdGlvbnMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBTZXQgdGhlIG93bmVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInZhbFwiPjwvcGFyYW0+XHJcbiAgc2V0T3duZXIodmFsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX293bmVyID0gdmFsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFNldCB0aGUgZGF0ZSBtb2RlIGluIHRoZSBjb21wb25lbnQncyBlbnZpcm9ubWVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb21wSWR4XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInZhbFwiPjwvcGFyYW0+XHJcbiAgc2V0RGF0ZU1vZGUoY29tcElkeDogbnVtYmVyLCB2YWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRFbnZEZXQoY29tcElkeCkuRGF0ZU1vZGUgPSB2YWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgU2V0IHRoZSBjZW50dXJ5IGluIHRoZSBjb21wb25lbnQncyBlbnZpcm9ubWVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb21wSWR4XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInZhbFwiPjwvcGFyYW0+XHJcbiAgc2V0Q2VudHVyeShjb21wSWR4OiBudW1iZXIsIHZhbDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldEVudkRldChjb21wSWR4KS5DZW50dXJ5ID0gdmFsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFNldCB0aGUgaWRsZSB0aW1lIGluIHRoZSBjb21wb25lbnQncyBlbnZpcm9ubWVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb21wSWR4XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInZhbFwiPjwvcGFyYW0+XHJcbiAgc2V0SWRsZVRpbWUoY29tcElkeDogbnVtYmVyLCB2YWw6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRFbnZEZXQoY29tcElkeCkuSWRsZVRpbWUgPSB2YWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgU2V0IHRoZSBhbGxvdy11cGRhdGUtaW4tcXVyeS1tb2RlIGZsYWcgaW4gdGhlIGNvbXBvbmVudCdzIGVudmlyb25tZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImNvbXBJZHhcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidmFsXCI+PC9wYXJhbT5cclxuICBzZXRBbGxvd1VwZGF0ZUluUXVlcnlNb2RlKGNvbXBJZHg6IG51bWJlciwgdmFsOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldEVudkRldChjb21wSWR4KS5VcGRhdGVJblF1ZXJ5TW9kZSA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBTZXQgdGhlIGFsbG93LWNyZWF0ZS1pbi1tb2RpZnktbW9kZSBmbGFnIGluIHRoZSBjb21wb25lbnQncyBlbnZpcm9ubWVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb21wSWR4XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInZhbFwiPjwvcGFyYW0+XHJcbiAgc2V0QWxsb3dDcmVhdGVJbk1vZGlmeU1vZGUoY29tcElkeDogbnVtYmVyLCB2YWw6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0RW52RGV0KGNvbXBJZHgpLkNyZWF0ZUluTW9kaWZ5TW9kZSA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGNvbnRleHQgdGltZW91dFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWxcIj48L3BhcmFtPlxyXG4gIHNldENvbnRleHRJbmFjdGl2aXR5VGltZW91dCh2YWw6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fY29udGV4dEluYWN0aXZpdHlUaW1lb3V0ID0gdmFsO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGNvbnRleHQgaW5hY3Rpdml0eSB3YXJuaW5nIHRpbWVvdXRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidmFsXCI+PC9wYXJhbT5cclxuICBzZXRDb250ZXh0SW5hY3Rpdml0eVdhcm5pbmdUaW1lKHZhbDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb250ZXh0SW5hY3Rpdml0eVdhcm5pbmdUaW1lID0gdmFsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aGUgY29udGV4dCB1bmxvYWQgdGltZW91dFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWxcIj48L3BhcmFtPlxyXG4gIHNldENvbnRleHRVbmxvYWRUaW1lb3V0KHZhbDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb250ZXh0VW5sb2FkVGltZW91dCA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIHRlcm1pbmFsIG51bWJlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWxcIj48L3BhcmFtPlxyXG4gIHNldFRlcm1pbmFsKHZhbDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl90ZXJtaW5hbCA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gIEdldCB0aGUgVXNlckZvcm1hdHMgZm9yIERyYWcgJiBEcm9wIE9wZXJhdGlvbi5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgR2V0RHJvcFVzZXJGb3JtYXRzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZHJvcFVzZXJGb3JtYXRzO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdHJ1ZSBpZiBfc3BlY2lhbFZhbE5ld1BvbGljeSBmbGFnID0gWTwvcmV0dXJucz5cclxuICBHZXRTcGVjaWFsVmFsTmV3UG9saWN5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NwZWNpYWxWYWxOZXdQb2xpY3k7XHJcbiAgfVxyXG5cclxuICBHZXRTcGVjaWFsQ2FuY2VsT25DcmVhdGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3BlY2lhbENhbmNlbE9uQ3JlYXRlO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICBUaGlzIGNsYXNzIGhvbGRzIGRldGFpbHMgZm9yIHNpbmdsZSBFbnZpcm9ubWVudCAocGVyIENvbXBvbmVudClcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50RGV0YWlscyB7XHJcbiAgcHJpdmF0ZSBfY3JlYXRlSW5Nb2RpZnlNb2RlOiBib29sZWFuID0gZmFsc2U7IC8vIGFsbG93IGNyZWF0ZSBpbiBtb2RpZnkgbW9kZSA/XHJcbiAgcHJpdmF0ZSBfdXBkYXRlSW5RdWVyeU1vZGU6IGJvb2xlYW4gPSBmYWxzZTsgLy8gYWxsb3cgdXBkYXRlIGluIHF1ZXJ5IG1vZGUgP1xyXG5cclxuICBDb21wSWR4OiBudW1iZXIgPSAwO1xyXG4gIERhdGVNb2RlOiBzdHJpbmcgPSAnXFwwJztcclxuICBDZW50dXJ5OiBudW1iZXIgPSAwO1xyXG4gIElkbGVUaW1lOiBudW1iZXIgPSAwO1xyXG5cclxuICBzZXQgVXBkYXRlSW5RdWVyeU1vZGUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3VwZGF0ZUluUXVlcnlNb2RlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgQ3JlYXRlSW5Nb2RpZnlNb2RlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9jcmVhdGVJbk1vZGlmeU1vZGUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIFByb2pEaXI6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjb25zdHJ1Y3RvclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLkNvbXBJZHggPSAwO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiBUUlVFIGlmIHVwZGF0ZSBpcyBhbGxvd2VkIGluIHF1ZXJ5IG1vZGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGFsbG93VXBkYXRlSW5RdWVyeU1vZGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdXBkYXRlSW5RdWVyeU1vZGU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIFRSVUUgaWYgdXBkYXRlIGlzIGFsbG93ZWQgaW4gcXVlcnkgbW9kZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYWxsb3dDcmVhdGVJbk1vZGlmeU1vZGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlSW5Nb2RpZnlNb2RlO1xyXG4gIH1cclxufVxyXG4iXX0=
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export {};
|
1
|
+
export {};
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUxhbmd1YWdlRGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvZW52L0lMYW5ndWFnZURhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSUxhbmd1YWdlRGF0YSB7XHJcbiAgZ2V0Q29uc3RNZXNzYWdlKG1zZ0lkOiBzdHJpbmcpOiBzdHJpbmc7XHJcbn1cclxuIl19
|