@kontur.candy/tools 2.154.0 → 2.155.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -0
- package/distr/Common/AsyncUtils.js +1 -3
- package/distr/Common/CandyApiClient/CandyApiClient.js +25 -138
- package/distr/Common/CandyApiClient/CandyApiClientContext.js +1 -8
- package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js +1 -1
- package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js +1 -1
- package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js +1 -2
- package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +1 -16
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +1 -12
- package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js +1 -12
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js +1 -13
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js +1 -3
- package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js +1 -8
- package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js +1 -7
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js +9 -12
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestResponse.js +1 -1
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js +4 -72
- package/distr/Common/CandyApiClient/ICandyApiClient.js +1 -1
- package/distr/Common/CandyApiClient/IsBuffer.js +1 -2
- package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js +1 -1
- package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js +1 -1
- package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js +12 -7
- package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js +1 -1
- package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js +1 -1
- package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js +1 -3
- package/distr/Common/CandyApiClient/Types/DraftFullId.js +1 -1
- package/distr/Common/CandyApiClient/Types/ErrorLog/CandyPopdProtocol.js +5 -6
- package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js +9 -12
- package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js +5 -6
- package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js +5 -6
- package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js +1 -3
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/Guid.js +1 -1
- package/distr/Common/CandyApiClient/Types/InstancesDeleting/InstancesDeletingRule.js +1 -1
- package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js +1 -1
- package/distr/Common/CandyApiClient/Types/MassActions/ValueForInstancesSettingRule.js +6 -0
- package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js +5 -6
- package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js +1 -1
- package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/Print/PrintType.js +5 -6
- package/distr/Common/CandyApiClient/Types/Staff/EmployeeInfo.js +1 -1
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js +1 -1
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesRequest.js +1 -1
- package/distr/Common/CandyApiClient/Types/Staff/StaffInfo.js +1 -1
- package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js +5 -6
- package/distr/Common/CandyApiClient/Types/TestClassification.js +1 -1
- package/distr/Common/CollectionUtils.js +1 -3
- package/distr/Common/CommonConstants/SectionNames.js +1 -3
- package/distr/Common/Comparers.js +2 -16
- package/distr/Common/EmotionStorybookWorkaroundViaAliases.js +1 -5
- package/distr/Common/EndPoints.js +1 -2
- package/distr/Common/Enums/ButtonSettingsTypeEnum.js +5 -6
- package/distr/Common/Errors.js +1 -19
- package/distr/Common/FormActionHandlers/ContextualActionNames.js +1 -3
- package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js +1 -1
- package/distr/Common/Funcs.js +1 -5
- package/distr/Common/GFV.js +1 -1
- package/distr/Common/Hooks/UseLocalStorage.js +3 -10
- package/distr/Common/HttpClient/AuthenticationMode.js +3 -7
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js +1 -3
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js +1 -3
- package/distr/Common/HttpClient/FetchImplementation/Fetch.js +1 -1
- package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js +1 -1
- package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js +6 -11
- package/distr/Common/HttpClient/HttpClient.js +9 -80
- package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js +1 -1
- package/distr/Common/HttpClient/IHttpClient.js +1 -1
- package/distr/Common/IndentString.js +1 -3
- package/distr/Common/IntRangeUtils.js +3 -10
- package/distr/Common/IterableUtils.js +3 -76
- package/distr/Common/KCLangRuntimeUtils.js +1 -87
- package/distr/Common/ModelPath/BuildIterationSequence.js +1 -5
- package/distr/Common/ModelPath/EachCurrentCollision.js +5 -6
- package/distr/Common/ModelPath/IEquatable.js +1 -1
- package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js +1 -8
- package/distr/Common/ModelPath/Map/Map2.js +2 -24
- package/distr/Common/ModelPath/Map/ModelPathMap.js +1 -8
- package/distr/Common/ModelPath/ModelPath.js +16 -140
- package/distr/Common/ModelPath/ModelPathBuilder.js +1 -14
- package/distr/Common/ModelPath/ModelPathHelper.js +1 -2
- package/distr/Common/ModelPath/PathMatcher.js +5 -24
- package/distr/Common/ModelPath/PathSplitHelper.js +1 -6
- package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js +1 -10
- package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js +1 -10
- package/distr/Common/ModelPath/Set/ModelPathSet.js +1 -10
- package/distr/Common/ModelPath/Set/Set2.js +1 -16
- package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js +1 -9
- package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js +1 -1
- package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js +1 -3
- package/distr/Common/NidusClient/Fakes/FakeNidusClient.js +1 -17
- package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js +1 -30
- package/distr/Common/NidusClient/INidusClient.js +1 -3
- package/distr/Common/NidusClient/NidusClientContext.js +1 -14
- package/distr/Common/NidusClient/NidusClientImpl.js +1 -18
- package/distr/Common/PathConstants.js +1 -3
- package/distr/Common/StringArrayKey.js +1 -8
- package/distr/Common/TypingUtils.js +7 -26
- package/distr/Common/UUID.js +1 -4
- package/distr/Common/UseAsyncEffect.js +3 -7
- package/distr/Common/UseShowOnce.js +1 -17
- package/distr/Common/UseTypedSelector.js +1 -3
- package/distr/Common/getRngSchemaFilename.js +18 -0
- package/distr/Common/hashUtils.js +1 -4
- package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js +1 -23
- package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js +3 -10
- package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js +1 -10
- package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +5 -23
- package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js +1 -27
- package/distr/Tools/src/BuildTasks/Engine/EngineSource.js +1 -2
- package/distr/Tools/src/BuildTasks/EngineStructureUtils.js +3 -10
- package/distr/Tools/src/BuildTasks/EngineVersionUtils.js +1 -9
- package/distr/Tools/src/BuildTasks/FSTask.js +1 -19
- package/distr/Tools/src/BuildTasks/Form/CompileForm.js +1 -19
- package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +1 -16
- package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js +1 -11
- package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +1 -10
- package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +1 -10
- package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js +1 -10
- package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js +5 -26
- package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js +1 -38
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js +2 -42
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +4 -39
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js +4 -7
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +4 -10
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js +9 -17
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js +3 -5
- package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js +1 -13
- package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js +1 -20
- package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +3 -48
- package/distr/Tools/src/BuildTasks/ReadFormSource.js +7 -32
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +5 -32
- package/distr/Tools/src/BuildTasks/Version.js +1 -10
- package/distr/Tools/src/BuildTasks/WriteFormMeta.js +1 -10
- package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js +5 -9
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +1 -5
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +22 -71
- package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js +1 -12
- package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js +1 -5
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +1 -67
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +3 -28
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +3 -41
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js +3 -23
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +3 -20
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +1 -23
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js +1 -37
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js +1 -13
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js +1 -40
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +8 -49
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js +1 -13
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js +1 -17
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js +1 -4
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +10 -19
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js +12 -26
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorkerFactory.js +1 -5
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IInputFileSystem.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IWatchFileSystem.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js +10 -44
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +1 -17
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js +1 -5
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js +1 -27
- package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js +11 -16
- package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js +1 -1
- package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js +1 -1
- package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js +1 -1
- package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js +1 -4
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +13 -34
- package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js +1 -4
- package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +1 -15
- package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js +3 -19
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/autocalc/{gfv}.calc.js +1 -2
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/helpers/setKppValue.js +1 -2
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js +1 -6
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js +1 -11
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/validations/kppValue.js +3 -4
- package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js +1 -4
- package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +1 -23
- package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js +1 -4
- package/distr/Tools/src/CLICommands/Localization/RunLocalization.js +7 -23
- package/distr/Tools/src/CLICommands/RenameFiles/RenameFilesOptions.js +26 -0
- package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js +48 -0
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +1 -37
- package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js +1 -4
- package/distr/Tools/src/CandyCLI.js +7 -56
- package/distr/Tools/src/CheckNodeJsVersion.js +3 -10
- package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js +1 -10
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js +4 -29
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js +1 -6
- package/distr/Tools/src/Commons/ErrorUntyped.js +1 -1
- package/distr/Tools/src/Commons/EventObject.js +10 -20
- package/distr/Tools/src/Commons/ExecUtils.js +3 -9
- package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js +1 -7
- package/distr/Tools/src/Commons/FormGlobsUtils.js +1 -33
- package/distr/Tools/src/Commons/FsUtils.js +1 -12
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js +1 -8
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js +4 -15
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js +1 -4
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js +1 -5
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js +1 -4
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js +1 -5
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js +2 -5
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js +1 -5
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js +1 -14
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js +1 -4
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js +1 -5
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js +1 -4
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js +1 -4
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js +1 -4
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js +1 -4
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js +1 -36
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js +1 -9
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js +5 -35
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js +9 -11
- package/distr/Tools/src/Commons/Locks/Lock.js +1 -8
- package/distr/Tools/src/Commons/Locks/LockHandle.js +1 -5
- package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js +1 -9
- package/distr/Tools/src/Commons/Logging/ELKLogger.js +17 -22
- package/distr/Tools/src/Commons/Logging/ILogger.js +1 -5
- package/distr/Tools/src/Commons/Logging/InMemoryLogger.js +3 -21
- package/distr/Tools/src/Commons/Logging/Logger.js +9 -29
- package/distr/Tools/src/Commons/Logging/StaticLogger.js +11 -15
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js +1 -1
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js +3 -37
- package/distr/Tools/src/Commons/PathPattern.js +1 -13
- package/distr/Tools/src/Commons/TasksCore/AggregatedError.js +1 -4
- package/distr/Tools/src/Commons/TasksCore/BuildTask.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js +13 -200
- package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +1 -20
- package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js +7 -10
- package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js +1 -15
- package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js +1 -15
- package/distr/Tools/src/Commons/TasksCore/Observe.js +1 -13
- package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js +5 -11
- package/distr/Tools/src/Commons/TimingUtils.js +1 -2
- package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +13 -51
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +4 -14
- package/distr/Tools/src/GenerateReadMe.js +1 -13
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js.LICENSE.txt +10 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.LICENSE.txt +10 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
- package/distr/Tools/src/Options/CandyToolOptions.js +3 -11
- package/distr/Tools/src/ReadFarmConfig.js +1 -5
- package/distr/Tools/src/SelfUpdate.js +4 -28
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +1506 -1257
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.LICENSE.txt +1 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +843 -623
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.LICENSE.txt +1 -0
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js +777 -1117
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js +1665 -2015
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js +9 -55
- package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js +777 -1117
- package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js +1665 -2015
- package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js +9 -55
- package/package.json +10 -10
- /package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/schemas/{{gfv}.rng.xml → {gfv}.0.rng.xml} +0 -0
|
@@ -4,16 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.WebpackHybridFileSystem = void 0;
|
|
7
|
-
|
|
8
7
|
var path = _interopRequireWildcard(require("path"));
|
|
9
|
-
|
|
10
8
|
var _memfs = require("memfs");
|
|
11
|
-
|
|
12
9
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
-
|
|
14
10
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
|
-
|
|
16
11
|
/* tslint:disable:no-any */
|
|
12
|
+
|
|
17
13
|
class WebpackHybridFileSystem {
|
|
18
14
|
constructor(pathToVirtualDirectory) {
|
|
19
15
|
this.pathToVirtualDirectory = void 0;
|
|
@@ -21,20 +17,15 @@ class WebpackHybridFileSystem {
|
|
|
21
17
|
this.virtualFs = void 0;
|
|
22
18
|
this.watchers = [];
|
|
23
19
|
this.pathToVirtualDirectory = pathToVirtualDirectory;
|
|
24
|
-
|
|
25
20
|
const virtualVolume = _memfs.Volume.fromJSON({});
|
|
26
|
-
|
|
27
21
|
this.virtualFs = (0, _memfs.createFsFromVolume)(virtualVolume);
|
|
28
22
|
}
|
|
29
|
-
|
|
30
23
|
setInnerInputFileSystem(innerInputFileSystem) {
|
|
31
24
|
if (this.innerInputFileSystem != undefined) {
|
|
32
25
|
throw new Error("Cannot set inner file system twice");
|
|
33
26
|
}
|
|
34
|
-
|
|
35
27
|
this.innerInputFileSystem = innerInputFileSystem;
|
|
36
28
|
}
|
|
37
|
-
|
|
38
29
|
readFile(filename, options, callback) {
|
|
39
30
|
if (filename.startsWith(this.pathToVirtualDirectory)) {
|
|
40
31
|
// @ts-ignore
|
|
@@ -44,7 +35,6 @@ class WebpackHybridFileSystem {
|
|
|
44
35
|
this.innerInputFileSystem.readFile(filename, options, callback);
|
|
45
36
|
}
|
|
46
37
|
}
|
|
47
|
-
|
|
48
38
|
readFileSync(filename, options) {
|
|
49
39
|
if (filename.startsWith(this.pathToVirtualDirectory)) {
|
|
50
40
|
// @ts-ignore
|
|
@@ -54,7 +44,6 @@ class WebpackHybridFileSystem {
|
|
|
54
44
|
return this.innerInputFileSystem.readFileSync(filename, options);
|
|
55
45
|
}
|
|
56
46
|
}
|
|
57
|
-
|
|
58
47
|
readdir(dirPath, callback) {
|
|
59
48
|
if (dirPath.startsWith(this.pathToVirtualDirectory)) {
|
|
60
49
|
// @ts-ignore
|
|
@@ -64,7 +53,6 @@ class WebpackHybridFileSystem {
|
|
|
64
53
|
this.innerInputFileSystem.readdir(dirPath, callback);
|
|
65
54
|
}
|
|
66
55
|
}
|
|
67
|
-
|
|
68
56
|
readdirSync(dirPath) {
|
|
69
57
|
if (dirPath.startsWith(this.pathToVirtualDirectory)) {
|
|
70
58
|
// @ts-ignore
|
|
@@ -73,9 +61,9 @@ class WebpackHybridFileSystem {
|
|
|
73
61
|
// @ts-ignore
|
|
74
62
|
return this.innerInputFileSystem.readdirSync(dirPath);
|
|
75
63
|
}
|
|
76
|
-
}
|
|
77
|
-
|
|
64
|
+
}
|
|
78
65
|
|
|
66
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
79
67
|
readlink(dirPath, callback) {
|
|
80
68
|
if (dirPath.startsWith(this.pathToVirtualDirectory)) {
|
|
81
69
|
// @ts-ignore
|
|
@@ -85,7 +73,6 @@ class WebpackHybridFileSystem {
|
|
|
85
73
|
this.innerInputFileSystem.readlink(dirPath, callback);
|
|
86
74
|
}
|
|
87
75
|
}
|
|
88
|
-
|
|
89
76
|
readlinkSync(linkPath) {
|
|
90
77
|
if (linkPath.startsWith(this.pathToVirtualDirectory)) {
|
|
91
78
|
// @ts-ignore
|
|
@@ -94,9 +81,9 @@ class WebpackHybridFileSystem {
|
|
|
94
81
|
// @ts-ignore
|
|
95
82
|
return this.innerInputFileSystem.readlinkSync(linkPath);
|
|
96
83
|
}
|
|
97
|
-
}
|
|
98
|
-
|
|
84
|
+
}
|
|
99
85
|
|
|
86
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
100
87
|
stat(fsPath, callback) {
|
|
101
88
|
if (fsPath.startsWith(this.pathToVirtualDirectory)) {
|
|
102
89
|
// @ts-ignore
|
|
@@ -106,7 +93,6 @@ class WebpackHybridFileSystem {
|
|
|
106
93
|
this.innerInputFileSystem.stat(fsPath, callback);
|
|
107
94
|
}
|
|
108
95
|
}
|
|
109
|
-
|
|
110
96
|
statSync(fsPath) {
|
|
111
97
|
if (fsPath.startsWith(this.pathToVirtualDirectory)) {
|
|
112
98
|
// @ts-ignore
|
|
@@ -116,33 +102,26 @@ class WebpackHybridFileSystem {
|
|
|
116
102
|
return this.innerInputFileSystem.statSync(fsPath);
|
|
117
103
|
}
|
|
118
104
|
}
|
|
119
|
-
|
|
120
105
|
async writeBatch(fileBatch) {
|
|
121
106
|
for (const filePath of Object.keys(fileBatch)) {
|
|
122
|
-
this.virtualFs.mkdirpSync(path.parse(filePath).dir);
|
|
123
|
-
|
|
107
|
+
this.virtualFs.mkdirpSync(path.parse(filePath).dir);
|
|
108
|
+
// @ts-ignore Там баг в тайпингах
|
|
124
109
|
this.virtualFs.writeFileSync(filePath, fileBatch[filePath], "utf8");
|
|
125
110
|
}
|
|
126
|
-
|
|
127
111
|
this.emitChanges(fileBatch);
|
|
128
112
|
}
|
|
129
|
-
|
|
130
113
|
watch(files, dirs, missing, startTime, options, callback, callbackUndelayed) {
|
|
131
114
|
const result = new WebpackVirtualWatchFileSystemWatcher(this.virtualFs, [...files.values()].filter(x => x.startsWith(this.pathToVirtualDirectory)), [...dirs.values()].filter(x => x.startsWith(this.pathToVirtualDirectory)), [...missing.values()].filter(x => x.startsWith(this.pathToVirtualDirectory)), callback, callbackUndelayed);
|
|
132
115
|
this.watchers.push(result);
|
|
133
116
|
return result;
|
|
134
117
|
}
|
|
135
|
-
|
|
136
118
|
emitChanges(fileBatch) {
|
|
137
119
|
for (const watcher of this.watchers) {
|
|
138
120
|
watcher.emitChanges(Object.keys(fileBatch));
|
|
139
121
|
}
|
|
140
122
|
}
|
|
141
|
-
|
|
142
123
|
}
|
|
143
|
-
|
|
144
124
|
exports.WebpackHybridFileSystem = WebpackHybridFileSystem;
|
|
145
|
-
|
|
146
125
|
class WebpackVirtualWatchFileSystemWatcher {
|
|
147
126
|
constructor(virtualFs, files, dirs, missing, callback, callbackUndelayed) {
|
|
148
127
|
this.virtualFs = void 0;
|
|
@@ -160,59 +139,46 @@ class WebpackVirtualWatchFileSystemWatcher {
|
|
|
160
139
|
this.callback = callback;
|
|
161
140
|
this.callbackUndelayed = callbackUndelayed;
|
|
162
141
|
}
|
|
163
|
-
|
|
164
142
|
emitChanges(filePaths) {
|
|
165
143
|
if (this.paused || this.closed) {
|
|
166
144
|
return;
|
|
167
145
|
}
|
|
168
|
-
|
|
169
146
|
const changes = new Set();
|
|
170
|
-
|
|
171
147
|
if (filePaths[0] != undefined) {
|
|
172
148
|
this.callbackUndelayed(filePaths[0], Date.now());
|
|
173
149
|
}
|
|
174
|
-
|
|
175
150
|
for (const filePath of filePaths) {
|
|
176
151
|
changes.add(filePath);
|
|
177
152
|
}
|
|
178
|
-
|
|
179
153
|
this.emitAggregatedChanges(changes);
|
|
180
154
|
}
|
|
181
|
-
|
|
182
155
|
close() {
|
|
183
156
|
this.closed = true;
|
|
184
157
|
}
|
|
185
|
-
|
|
186
158
|
pause() {
|
|
187
159
|
this.paused = true;
|
|
188
160
|
}
|
|
189
|
-
|
|
190
161
|
getContextTimeInfoEntries() {
|
|
191
162
|
return this.getFileTimeInfoEntries();
|
|
192
163
|
}
|
|
193
|
-
|
|
194
164
|
getFileTimeInfoEntries() {
|
|
195
165
|
const times = new Map();
|
|
196
|
-
|
|
197
166
|
for (const file of this.files) {
|
|
198
167
|
times.set(file, {
|
|
199
168
|
timestamp: this.virtualFs.statSync(file).mtimeMs,
|
|
200
169
|
safeTime: this.virtualFs.statSync(file).mtimeMs
|
|
201
170
|
});
|
|
202
171
|
}
|
|
203
|
-
|
|
204
172
|
return times;
|
|
205
173
|
}
|
|
206
|
-
|
|
207
174
|
emitAggregatedChanges(changes) {
|
|
208
175
|
const filePaths = Array.from(changes);
|
|
209
176
|
const files = filePaths.filter(filePath => this.files.includes(filePath)).sort();
|
|
210
177
|
const dirs = filePaths.filter(filePath => this.dirs.includes(filePath)).sort();
|
|
211
178
|
const missing = filePaths.filter(filePath => this.missing.includes(filePath)).sort();
|
|
212
|
-
const times = this.getFileTimeInfoEntries();
|
|
213
|
-
|
|
179
|
+
const times = this.getFileTimeInfoEntries();
|
|
180
|
+
// @ts-ignore
|
|
214
181
|
this.callback(undefined, files, dirs, missing, times, times, new Set());
|
|
215
182
|
}
|
|
216
|
-
|
|
217
183
|
}
|
|
218
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9EZXZTZXJ2ZXJzL1dlYnBhY2tJbk1lbW9yeVV0aWxzL1dlYnBhY2tIeWJyaWRGaWxlU3lzdGVtLnRzIl0sIm5hbWVzIjpbIldlYnBhY2tIeWJyaWRGaWxlU3lzdGVtIiwiY29uc3RydWN0b3IiLCJwYXRoVG9WaXJ0dWFsRGlyZWN0b3J5IiwiaW5uZXJJbnB1dEZpbGVTeXN0ZW0iLCJ2aXJ0dWFsRnMiLCJ3YXRjaGVycyIsInZpcnR1YWxWb2x1bWUiLCJWb2x1bWUiLCJmcm9tSlNPTiIsInNldElubmVySW5wdXRGaWxlU3lzdGVtIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJyZWFkRmlsZSIsImZpbGVuYW1lIiwib3B0aW9ucyIsImNhbGxiYWNrIiwic3RhcnRzV2l0aCIsInJlYWRGaWxlU3luYyIsInJlYWRkaXIiLCJkaXJQYXRoIiwicmVhZGRpclN5bmMiLCJyZWFkbGluayIsInJlYWRsaW5rU3luYyIsImxpbmtQYXRoIiwic3RhdCIsImZzUGF0aCIsInN0YXRTeW5jIiwid3JpdGVCYXRjaCIsImZpbGVCYXRjaCIsImZpbGVQYXRoIiwiT2JqZWN0Iiwia2V5cyIsIm1rZGlycFN5bmMiLCJwYXRoIiwicGFyc2UiLCJkaXIiLCJ3cml0ZUZpbGVTeW5jIiwiZW1pdENoYW5nZXMiLCJ3YXRjaCIsImZpbGVzIiwiZGlycyIsIm1pc3NpbmciLCJzdGFydFRpbWUiLCJjYWxsYmFja1VuZGVsYXllZCIsInJlc3VsdCIsIldlYnBhY2tWaXJ0dWFsV2F0Y2hGaWxlU3lzdGVtV2F0Y2hlciIsInZhbHVlcyIsImZpbHRlciIsIngiLCJwdXNoIiwid2F0Y2hlciIsImNsb3NlZCIsInBhdXNlZCIsImZpbGVQYXRocyIsImNoYW5nZXMiLCJTZXQiLCJEYXRlIiwibm93IiwiYWRkIiwiZW1pdEFnZ3JlZ2F0ZWRDaGFuZ2VzIiwiY2xvc2UiLCJwYXVzZSIsImdldENvbnRleHRUaW1lSW5mb0VudHJpZXMiLCJnZXRGaWxlVGltZUluZm9FbnRyaWVzIiwidGltZXMiLCJNYXAiLCJmaWxlIiwic2V0IiwidGltZXN0YW1wIiwibXRpbWVNcyIsInNhZmVUaW1lIiwiQXJyYXkiLCJmcm9tIiwiaW5jbHVkZXMiLCJzb3J0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7O0FBRUE7Ozs7OztBQUpBO0FBbUJPLE1BQU1BLHVCQUFOLENBQXlGO0FBTXJGQyxFQUFBQSxXQUFXLENBQUNDLHNCQUFELEVBQWlDO0FBQUEsU0FMbENBLHNCQUtrQztBQUFBLFNBSjNDQyxvQkFJMkM7QUFBQSxTQUhsQ0MsU0FHa0M7QUFBQSxTQUZsQ0MsUUFFa0MsR0FGaUIsRUFFakI7QUFDL0MsU0FBS0gsc0JBQUwsR0FBOEJBLHNCQUE5Qjs7QUFDQSxVQUFNSSxhQUFhLEdBQUdDLGNBQU9DLFFBQVAsQ0FBZ0IsRUFBaEIsQ0FBdEI7O0FBQ0EsU0FBS0osU0FBTCxHQUFpQiwrQkFBbUJFLGFBQW5CLENBQWpCO0FBQ0g7O0FBRU1HLEVBQUFBLHVCQUF1QixDQUFDTixvQkFBRCxFQUErQztBQUN6RSxRQUFJLEtBQUtBLG9CQUFMLElBQTZCTyxTQUFqQyxFQUE0QztBQUN4QyxZQUFNLElBQUlDLEtBQUosQ0FBVSxvQ0FBVixDQUFOO0FBQ0g7O0FBQ0QsU0FBS1Isb0JBQUwsR0FBNEJBLG9CQUE1QjtBQUNIOztBQWFNUyxFQUFBQSxRQUFRLENBQ1hDLFFBRFcsRUFFWEMsT0FGVyxFQU9YQyxRQVBXLEVBVVA7QUFDSixRQUFJRixRQUFRLENBQUNHLFVBQVQsQ0FBb0IsS0FBS2Qsc0JBQXpCLENBQUosRUFBc0Q7QUFDbEQ7QUFDQSxXQUFLRSxTQUFMLENBQWVRLFFBQWYsQ0FBd0JDLFFBQXhCLEVBQWtDQyxPQUFsQyxFQUEyQ0MsUUFBM0M7QUFDSCxLQUhELE1BR087QUFDSDtBQUNBLFdBQUtaLG9CQUFMLENBQTBCUyxRQUExQixDQUFtQ0MsUUFBbkMsRUFBNkNDLE9BQTdDLEVBQXNEQyxRQUF0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LENBQW1CNUMsUUFBbkIsQ0FBN0IsRUFBMkQ2QyxJQUEzRCxFQUFiO0FBQ0EsVUFBTWpDLE9BQU8sR0FBR1ksU0FBUyxDQUFDTixNQUFWLENBQWlCbEIsUUFBUSxJQUFJLEtBQUtZLE9BQUwsQ0FBYWdDLFFBQWIsQ0FBc0I1QyxRQUF0QixDQUE3QixFQUE4RDZDLElBQTlELEVBQWhCO0FBQ0EsVUFBTVYsS0FBSyxHQUFHLEtBQUtELHNCQUFMLEVBQWQsQ0FMc0QsQ0FNdEQ7O0FBQ0EsU0FBS2hELFFBQUwsQ0FBY0wsU0FBZCxFQUF5QjZCLEtBQXpCLEVBQWdDQyxJQUFoQyxFQUFzQ0MsT0FBdEMsRUFBK0N1QixLQUEvQyxFQUFzREEsS0FBdEQsRUFBNkQsSUFBSVQsR0FBSixFQUE3RDtBQUNIOztBQXpFeUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZTpuby1hbnkgKi9cbmltcG9ydCB7IFN0YXRzIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IGNyZWF0ZUZzRnJvbVZvbHVtZSwgSUZzLCBWb2x1bWUgfSBmcm9tIFwibWVtZnNcIjtcbmltcG9ydCB7IFRFbmNvZGluZ0V4dGVuZGVkIH0gZnJvbSBcIm1lbWZzL2xpYi9lbmNvZGluZ1wiO1xuXG5pbXBvcnQgeyBJRmlsZVdyaXRlciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9CdWlsZFRhc2tzL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5cbmltcG9ydCB7IElJbnB1dEZpbGVTeXN0ZW0gfSBmcm9tIFwiLi9JSW5wdXRGaWxlU3lzdGVtXCI7XG5pbXBvcnQge1xuICAgIEZpbGVTeXN0ZW1UaW1lSW5mb0VudHJ5LFxuICAgIElXYXRjaEZpbGVTeXN0ZW0sXG4gICAgSVdhdGNoRmlsZVN5c3RlbVdhdGNoZXIsXG4gICAgV2F0Y2hGaWxlU3lzdGVtQ2FsbGJhY2ssXG4gICAgV2F0Y2hGaWxlU3lzdGVtQ2FsbGJhY2tVbmRlbGF5ZWQsXG4gICAgV2F0Y2hGaWxlU3lzdGVtV2F0Y2hPcHRpb25zLFxufSBmcm9tIFwiLi9JV2F0Y2hGaWxlU3lzdGVtXCI7XG5cbmV4cG9ydCBjbGFzcyBXZWJwYWNrSHlicmlkRmlsZVN5c3RlbSBpbXBsZW1lbnRzIElGaWxlV3JpdGVyLCBJSW5wdXRGaWxlU3lzdGVtLCBJV2F0Y2hGaWxlU3lzdGVtIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhdGhUb1ZpcnR1YWxEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIGlubmVySW5wdXRGaWxlU3lzdGVtITogSUlucHV0RmlsZVN5c3RlbTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpcnR1YWxGczogSUZzO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgd2F0Y2hlcnM6IFdlYnBhY2tWaXJ0dWFsV2F0Y2hGaWxlU3lzdGVtV2F0Y2hlcltdID0gW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocGF0aFRvVmlydHVhbERpcmVjdG9yeTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucGF0aFRvVmlydHVhbERpcmVjdG9yeSA9IHBhdGhUb1ZpcnR1YWxEaXJlY3Rvcnk7XG4gICAgICAgIGNvbnN0IHZpcnR1YWxWb2x1bWUgPSBWb2x1bWUuZnJvbUpTT04oe30pO1xuICAgICAgICB0aGlzLnZpcnR1YWxGcyA9IGNyZWF0ZUZzRnJvbVZvbHVtZSh2aXJ0dWFsVm9sdW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0SW5uZXJJbnB1dEZpbGVTeXN0ZW0oaW5uZXJJbnB1dEZpbGVTeXN0ZW06IElJbnB1dEZpbGVTeXN0ZW0pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5uZXJJbnB1dEZpbGVTeXN0ZW0gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgc2V0IGlubmVyIGZpbGUgc3lzdGVtIHR3aWNlXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5uZXJJbnB1dEZpbGVTeXN0ZW0gPSBpbm5lcklucHV0RmlsZVN5c3RlbTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVhZEZpbGUoXG4gICAgICAgIGZpbGVuYW1lOiBzdHJpbmcsXG4gICAgICAgIG9wdGlvbnM6IHN0cmluZyB8IHsgZW5jb2Rpbmc6IHN0cmluZzsgZmxhZz86IHN0cmluZyB9LFxuICAgICAgICBjYWxsYmFjazogKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uLCBkYXRhOiBzdHJpbmcpID0+IHZvaWRcbiAgICApOiB2b2lkO1xuICAgIHB1YmxpYyByZWFkRmlsZShcbiAgICAgICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICAgICAgb3B0aW9uczogeyBmbGFnPzogc3RyaW5nIH0sXG4gICAgICAgIGNhbGxiYWNrOiAoZXJyOiBOb2RlSlMuRXJybm9FeGNlcHRpb24sIGRhdGE6IEJ1ZmZlcikgPT4gdm9pZFxuICAgICk6IHZvaWQ7XG4gICAgcHVibGljIHJlYWRGaWxlKGZpbGVuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoZXJyOiBOb2RlSlMuRXJybm9FeGNlcHRpb24sIGRhdGE6IEJ1ZmZlcikgPT4gdm9pZCk6IHZvaWQ7XG4gICAgcHVibGljIHJlYWRGaWxlKFxuICAgICAgICBmaWxlbmFtZTogc3RyaW5nLFxuICAgICAgICBvcHRpb25zOlxuICAgICAgICAgICAgfCBzdHJpbmdcbiAgICAgICAgICAgIHwgeyBlbmNvZGluZzogVEVuY29kaW5nRXh0ZW5kZWQ7IGZsYWc/OiBzdHJpbmcgfVxuICAgICAgICAgICAgfCB7IGZsYWc/OiBzdHJpbmcgfVxuICAgICAgICAgICAgfCAoKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uLCBkYXRhOiBCdWZmZXIpID0+IHZvaWQpLFxuICAgICAgICBjYWxsYmFjaz86XG4gICAgICAgICAgICB8ICgoZXJyOiBOb2RlSlMuRXJybm9FeGNlcHRpb24sIGRhdGE6IHN0cmluZykgPT4gdm9pZClcbiAgICAgICAgICAgIHwgKChlcnI6IE5vZGVKUy5FcnJub0V4Y2VwdGlvbiwgZGF0YTogQnVmZmVyKSA9PiB2b2lkKVxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAoZmlsZW5hbWUuc3RhcnRzV2l0aCh0aGlzLnBhdGhUb1ZpcnR1YWxEaXJlY3RvcnkpKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxGcy5yZWFkRmlsZShmaWxlbmFtZSwgb3B0aW9ucywgY2FsbGJhY2spO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGhpcy5pbm5lcklucHV0RmlsZVN5c3RlbS5yZWFkRmlsZShmaWxlbmFtZSwgb3B0aW9ucywgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlYWRGaWxlU3luYyhmaWxlbmFtZTogc3RyaW5nLCBvcHRpb25zOiBzdHJpbmcgfCB7IGVuY29kaW5nOiBzdHJpbmc7IGZsYWc/OiBzdHJpbmcgfSk6IHN0cmluZztcbiAgICBwdWJsaWMgcmVhZEZpbGVTeW5jKGZpbGVuYW1lOiBzdHJpbmcsIG9wdGlvbnM/OiB7IGZsYWc/OiBzdHJpbmcgfSk6IEJ1ZmZlcjtcbiAgICBwdWJsaWMgcmVhZEZpbGVTeW5jKFxuICAgICAgICBmaWxlbmFtZTogc3RyaW5nLFxuICAgICAgICBvcHRpb25zPzogc3RyaW5nIHwgeyBlbmNvZGluZzogc3RyaW5nOyBmbGFnPzogc3RyaW5nIH0gfCB7IGZsYWc/OiBzdHJpbmcgfVxuICAgICk6IHN0cmluZyB8IEJ1ZmZlciB7XG4gICAgICAgIGlmIChmaWxlbmFtZS5zdGFydHNXaXRoKHRoaXMucGF0aFRvVmlydHVhbERpcmVjdG9yeSkpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZpcnR1YWxGcy5yZWFkRmlsZVN5bmMoZmlsZW5hbWUsIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5uZXJJbnB1dEZpbGVTeXN0ZW0ucmVhZEZpbGVTeW5jKGZpbGVuYW1lLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWFkZGlyKGRpclBhdGg6IHN0cmluZywgY2FsbGJhY2s6IChlcnI6IEVycm9yLCBmaWxlczogc3RyaW5nW10pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGRpclBhdGguc3RhcnRzV2l0aCh0aGlzLnBhdGhUb1ZpcnR1YWxEaXJlY3RvcnkpKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxGcy5yZWFkZGlyKGRpclBhdGgsIGNhbGxiYWNrKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHRoaXMuaW5uZXJJbnB1dEZpbGVTeXN0ZW0ucmVhZGRpcihkaXJQYXRoLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVhZGRpclN5bmMoZGlyUGF0aDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICBpZiAoZGlyUGF0aC5zdGFydHNXaXRoKHRoaXMucGF0aFRvVmlydHVhbERpcmVjdG9yeSkpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZpcnR1YWxGcy5yZWFkZGlyU3luYyhkaXJQYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlubmVySW5wdXRGaWxlU3lzdGVtLnJlYWRkaXJTeW5jKGRpclBhdGgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgcmVhZGxpbmsoZGlyUGF0aDogc3RyaW5nLCBjYWxsYmFjaz86IChlcnI6IE5vZGVKUy5FcnJub0V4Y2VwdGlvbiwgbGlua1N0cmluZzogc3RyaW5nKSA9PiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKGRpclBhdGguc3RhcnRzV2l0aCh0aGlzLnBhdGhUb1ZpcnR1YWxEaXJlY3RvcnkpKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxGcy5yZWFkbGluayhkaXJQYXRoLCBjYWxsYmFjayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICB0aGlzLmlubmVySW5wdXRGaWxlU3lzdGVtLnJlYWRsaW5rKGRpclBhdGgsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWFkbGlua1N5bmMobGlua1BhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmIChsaW5rUGF0aC5zdGFydHNXaXRoKHRoaXMucGF0aFRvVmlydHVhbERpcmVjdG9yeSkpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZpcnR1YWxGcy5yZWFkbGlua1N5bmMobGlua1BhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5uZXJJbnB1dEZpbGVTeXN0ZW0ucmVhZGxpbmtTeW5jKGxpbmtQYXRoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIHN0YXQoZnNQYXRoOiBzdHJpbmcsIGNhbGxiYWNrPzogKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uLCBzdGF0czogU3RhdHMpID0+IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoZnNQYXRoLnN0YXJ0c1dpdGgodGhpcy5wYXRoVG9WaXJ0dWFsRGlyZWN0b3J5KSkge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGhpcy52aXJ0dWFsRnMuc3RhdChmc1BhdGgsIGNhbGxiYWNrKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHRoaXMuaW5uZXJJbnB1dEZpbGVTeXN0ZW0uc3RhdChmc1BhdGgsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0U3luYyhmc1BhdGg6IHN0cmluZyk6IFN0YXRzIHtcbiAgICAgICAgaWYgKGZzUGF0aC5zdGFydHNXaXRoKHRoaXMucGF0aFRvVmlydHVhbERpcmVjdG9yeSkpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZpcnR1YWxGcy5zdGF0U3luYyhmc1BhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5uZXJJbnB1dEZpbGVTeXN0ZW0uc3RhdFN5bmMoZnNQYXRoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB3cml0ZUJhdGNoKGZpbGVCYXRjaDogeyBbcDogc3RyaW5nXTogc3RyaW5nIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBPYmplY3Qua2V5cyhmaWxlQmF0Y2gpKSB7XG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxGcy5ta2RpcnBTeW5jKHBhdGgucGFyc2UoZmlsZVBhdGgpLmRpcik7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlINCi0LDQvCDQsdCw0LMg0LIg0YLQsNC50L/QuNC90LPQsNGFXG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxGcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBmaWxlQmF0Y2hbZmlsZVBhdGhdLCBcInV0ZjhcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlcyhmaWxlQmF0Y2gpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3YXRjaChcbiAgICAgICAgZmlsZXM6IElMYXp5U2V0PHN0cmluZz4sXG4gICAgICAgIGRpcnM6IElMYXp5U2V0PHN0cmluZz4sXG4gICAgICAgIG1pc3Npbmc6IElMYXp5U2V0PHN0cmluZz4sXG4gICAgICAgIHN0YXJ0VGltZTogbnVtYmVyLFxuICAgICAgICBvcHRpb25zOiBXYXRjaEZpbGVTeXN0ZW1XYXRjaE9wdGlvbnMsXG4gICAgICAgIGNhbGxiYWNrOiBXYXRjaEZpbGVTeXN0ZW1DYWxsYmFjayxcbiAgICAgICAgY2FsbGJhY2tVbmRlbGF5ZWQ6IFdhdGNoRmlsZVN5c3RlbUNhbGxiYWNrVW5kZWxheWVkXG4gICAgKTogSVdhdGNoRmlsZVN5c3RlbVdhdGNoZXIge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgV2VicGFja1ZpcnR1YWxXYXRjaEZpbGVTeXN0ZW1XYXRjaGVyKFxuICAgICAgICAgICAgdGhpcy52aXJ0dWFsRnMsXG4gICAgICAgICAgICBbLi4uZmlsZXMudmFsdWVzKCldLmZpbHRlcih4ID0+IHguc3RhcnRzV2l0aCh0aGlzLnBhdGhUb1ZpcnR1YWxEaXJlY3RvcnkpKSxcbiAgICAgICAgICAgIFsuLi5kaXJzLnZhbHVlcygpXS5maWx0ZXIoeCA9PiB4LnN0YXJ0c1dpdGgodGhpcy5wYXRoVG9WaXJ0dWFsRGlyZWN0b3J5KSksXG4gICAgICAgICAgICBbLi4ubWlzc2luZy52YWx1ZXMoKV0uZmlsdGVyKHggPT4geC5zdGFydHNXaXRoKHRoaXMucGF0aFRvVmlydHVhbERpcmVjdG9yeSkpLFxuICAgICAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgICAgICBjYWxsYmFja1VuZGVsYXllZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLndhdGNoZXJzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRDaGFuZ2VzKGZpbGVCYXRjaDogeyBbcDogc3RyaW5nXTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICAgICAgZm9yIChjb25zdCB3YXRjaGVyIG9mIHRoaXMud2F0Y2hlcnMpIHtcbiAgICAgICAgICAgIHdhdGNoZXIuZW1pdENoYW5nZXMoT2JqZWN0LmtleXMoZmlsZUJhdGNoKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNsYXNzIFdlYnBhY2tWaXJ0dWFsV2F0Y2hGaWxlU3lzdGVtV2F0Y2hlciBpbXBsZW1lbnRzIElXYXRjaEZpbGVTeXN0ZW1XYXRjaGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpcnR1YWxGczogSUZzO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsZXM6IHN0cmluZ1tdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlyczogc3RyaW5nW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBtaXNzaW5nOiBzdHJpbmdbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhbGxiYWNrOiBXYXRjaEZpbGVTeXN0ZW1DYWxsYmFjaztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhbGxiYWNrVW5kZWxheWVkOiBXYXRjaEZpbGVTeXN0ZW1DYWxsYmFja1VuZGVsYXllZDtcblxuICAgIHByaXZhdGUgY2xvc2VkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBwYXVzZWQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgdmlydHVhbEZzOiBJRnMsXG4gICAgICAgIGZpbGVzOiBzdHJpbmdbXSxcbiAgICAgICAgZGlyczogc3RyaW5nW10sXG4gICAgICAgIG1pc3Npbmc6IHN0cmluZ1tdLFxuICAgICAgICBjYWxsYmFjazogV2F0Y2hGaWxlU3lzdGVtQ2FsbGJhY2ssXG4gICAgICAgIGNhbGxiYWNrVW5kZWxheWVkOiBXYXRjaEZpbGVTeXN0ZW1DYWxsYmFja1VuZGVsYXllZFxuICAgICkge1xuICAgICAgICB0aGlzLnZpcnR1YWxGcyA9IHZpcnR1YWxGcztcbiAgICAgICAgdGhpcy5maWxlcyA9IGZpbGVzO1xuICAgICAgICB0aGlzLmRpcnMgPSBkaXJzO1xuICAgICAgICB0aGlzLm1pc3NpbmcgPSBtaXNzaW5nO1xuICAgICAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgICAgIHRoaXMuY2FsbGJhY2tVbmRlbGF5ZWQgPSBjYWxsYmFja1VuZGVsYXllZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW1pdENoYW5nZXMoZmlsZVBhdGhzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wYXVzZWQgfHwgdGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGFuZ2VzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcbiAgICAgICAgaWYgKGZpbGVQYXRoc1swXSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tVbmRlbGF5ZWQoZmlsZVBhdGhzWzBdLCBEYXRlLm5vdygpKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIGZpbGVQYXRocykge1xuICAgICAgICAgICAgY2hhbmdlcy5hZGQoZmlsZVBhdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lbWl0QWdncmVnYXRlZENoYW5nZXMoY2hhbmdlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIHBhdXNlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhdXNlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbnRleHRUaW1lSW5mb0VudHJpZXMoKTogTWFwPHN0cmluZywgRmlsZVN5c3RlbVRpbWVJbmZvRW50cnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RmlsZVRpbWVJbmZvRW50cmllcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaWxlVGltZUluZm9FbnRyaWVzKCk6IE1hcDxzdHJpbmcsIEZpbGVTeXN0ZW1UaW1lSW5mb0VudHJ5PiB7XG4gICAgICAgIGNvbnN0IHRpbWVzOiBNYXA8c3RyaW5nLCBGaWxlU3lzdGVtVGltZUluZm9FbnRyeT4gPSBuZXcgTWFwKCk7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiB0aGlzLmZpbGVzKSB7XG4gICAgICAgICAgICB0aW1lcy5zZXQoZmlsZSwge1xuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogdGhpcy52aXJ0dWFsRnMuc3RhdFN5bmMoZmlsZSkubXRpbWVNcyxcbiAgICAgICAgICAgICAgICBzYWZlVGltZTogdGhpcy52aXJ0dWFsRnMuc3RhdFN5bmMoZmlsZSkubXRpbWVNcyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aW1lcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRBZ2dyZWdhdGVkQ2hhbmdlcyhjaGFuZ2VzOiBTZXQ8c3RyaW5nPik6IHZvaWQge1xuICAgICAgICBjb25zdCBmaWxlUGF0aHMgPSBBcnJheS5mcm9tKGNoYW5nZXMpO1xuICAgICAgICBjb25zdCBmaWxlcyA9IGZpbGVQYXRocy5maWx0ZXIoZmlsZVBhdGggPT4gdGhpcy5maWxlcy5pbmNsdWRlcyhmaWxlUGF0aCkpLnNvcnQoKTtcbiAgICAgICAgY29uc3QgZGlycyA9IGZpbGVQYXRocy5maWx0ZXIoZmlsZVBhdGggPT4gdGhpcy5kaXJzLmluY2x1ZGVzKGZpbGVQYXRoKSkuc29ydCgpO1xuICAgICAgICBjb25zdCBtaXNzaW5nID0gZmlsZVBhdGhzLmZpbHRlcihmaWxlUGF0aCA9PiB0aGlzLm1pc3NpbmcuaW5jbHVkZXMoZmlsZVBhdGgpKS5zb3J0KCk7XG4gICAgICAgIGNvbnN0IHRpbWVzID0gdGhpcy5nZXRGaWxlVGltZUluZm9FbnRyaWVzKCk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpcy5jYWxsYmFjayh1bmRlZmluZWQsIGZpbGVzLCBkaXJzLCBtaXNzaW5nLCB0aW1lcywgdGltZXMsIG5ldyBTZXQoKSk7XG4gICAgfVxufVxuXG5pbnRlcmZhY2UgSUxhenlTZXQ8VD4ge1xuICAgIHZhbHVlcygpOiBJdGVyYWJsZTxUPjtcbn1cbiJdfQ==
|
|
184
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX21lbWZzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIldlYnBhY2tIeWJyaWRGaWxlU3lzdGVtIiwiY29uc3RydWN0b3IiLCJwYXRoVG9WaXJ0dWFsRGlyZWN0b3J5IiwiaW5uZXJJbnB1dEZpbGVTeXN0ZW0iLCJ2aXJ0dWFsRnMiLCJ3YXRjaGVycyIsInZpcnR1YWxWb2x1bWUiLCJWb2x1bWUiLCJmcm9tSlNPTiIsImNyZWF0ZUZzRnJvbVZvbHVtZSIsInNldElubmVySW5wdXRGaWxlU3lzdGVtIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJyZWFkRmlsZSIsImZpbGVuYW1lIiwib3B0aW9ucyIsImNhbGxiYWNrIiwic3RhcnRzV2l0aCIsInJlYWRGaWxlU3luYyIsInJlYWRkaXIiLCJkaXJQYXRoIiwicmVhZGRpclN5bmMiLCJyZWFkbGluayIsInJlYWRsaW5rU3luYyIsImxpbmtQYXRoIiwic3RhdCIsImZzUGF0aCIsInN0YXRTeW5jIiwid3JpdGVCYXRjaCIsImZpbGVCYXRjaCIsImZpbGVQYXRoIiwia2V5cyIsIm1rZGlycFN5bmMiLCJwYXJzZSIsImRpciIsIndyaXRlRmlsZVN5bmMiLCJlbWl0Q2hhbmdlcyIsIndhdGNoIiwiZmlsZXMiLCJkaXJzIiwibWlzc2luZyIsInN0YXJ0VGltZSIsImNhbGxiYWNrVW5kZWxheWVkIiwicmVzdWx0IiwiV2VicGFja1ZpcnR1YWxXYXRjaEZpbGVTeXN0ZW1XYXRjaGVyIiwidmFsdWVzIiwiZmlsdGVyIiwieCIsInB1c2giLCJ3YXRjaGVyIiwiZXhwb3J0cyIsImNsb3NlZCIsInBhdXNlZCIsImZpbGVQYXRocyIsImNoYW5nZXMiLCJTZXQiLCJEYXRlIiwibm93IiwiYWRkIiwiZW1pdEFnZ3JlZ2F0ZWRDaGFuZ2VzIiwiY2xvc2UiLCJwYXVzZSIsImdldENvbnRleHRUaW1lSW5mb0VudHJpZXMiLCJnZXRGaWxlVGltZUluZm9FbnRyaWVzIiwidGltZXMiLCJNYXAiLCJmaWxlIiwidGltZXN0YW1wIiwibXRpbWVNcyIsInNhZmVUaW1lIiwiQXJyYXkiLCJmcm9tIiwiaW5jbHVkZXMiLCJzb3J0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL1Jlc291cmNlc0NvbnRyb2xsZXJzL0RldlNlcnZlcnMvV2VicGFja0luTWVtb3J5VXRpbHMvV2VicGFja0h5YnJpZEZpbGVTeXN0ZW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXG5pbXBvcnQgeyBTdGF0cyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBjcmVhdGVGc0Zyb21Wb2x1bWUsIElGcywgVm9sdW1lIH0gZnJvbSBcIm1lbWZzXCI7XG5pbXBvcnQgeyBURW5jb2RpbmdFeHRlbmRlZCB9IGZyb20gXCJtZW1mcy9saWIvZW5jb2RpbmdcIjtcblxuaW1wb3J0IHsgSUZpbGVXcml0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuXG5pbXBvcnQgeyBJSW5wdXRGaWxlU3lzdGVtIH0gZnJvbSBcIi4vSUlucHV0RmlsZVN5c3RlbVwiO1xuaW1wb3J0IHtcbiAgICBGaWxlU3lzdGVtVGltZUluZm9FbnRyeSxcbiAgICBJV2F0Y2hGaWxlU3lzdGVtLFxuICAgIElXYXRjaEZpbGVTeXN0ZW1XYXRjaGVyLFxuICAgIFdhdGNoRmlsZVN5c3RlbUNhbGxiYWNrLFxuICAgIFdhdGNoRmlsZVN5c3RlbUNhbGxiYWNrVW5kZWxheWVkLFxuICAgIFdhdGNoRmlsZVN5c3RlbVdhdGNoT3B0aW9ucyxcbn0gZnJvbSBcIi4vSVdhdGNoRmlsZVN5c3RlbVwiO1xuXG5leHBvcnQgY2xhc3MgV2VicGFja0h5YnJpZEZpbGVTeXN0ZW0gaW1wbGVtZW50cyBJRmlsZVdyaXRlciwgSUlucHV0RmlsZVN5c3RlbSwgSVdhdGNoRmlsZVN5c3RlbSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXRoVG9WaXJ0dWFsRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBpbm5lcklucHV0RmlsZVN5c3RlbSE6IElJbnB1dEZpbGVTeXN0ZW07XG4gICAgcHJpdmF0ZSByZWFkb25seSB2aXJ0dWFsRnM6IElGcztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdhdGNoZXJzOiBXZWJwYWNrVmlydHVhbFdhdGNoRmlsZVN5c3RlbVdhdGNoZXJbXSA9IFtdO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBhdGhUb1ZpcnR1YWxEaXJlY3Rvcnk6IHN0cmluZykge1xuICAgICAgICB0aGlzLnBhdGhUb1ZpcnR1YWxEaXJlY3RvcnkgPSBwYXRoVG9WaXJ0dWFsRGlyZWN0b3J5O1xuICAgICAgICBjb25zdCB2aXJ0dWFsVm9sdW1lID0gVm9sdW1lLmZyb21KU09OKHt9KTtcbiAgICAgICAgdGhpcy52aXJ0dWFsRnMgPSBjcmVhdGVGc0Zyb21Wb2x1bWUodmlydHVhbFZvbHVtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldElubmVySW5wdXRGaWxlU3lzdGVtKGlubmVySW5wdXRGaWxlU3lzdGVtOiBJSW5wdXRGaWxlU3lzdGVtKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlubmVySW5wdXRGaWxlU3lzdGVtICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHNldCBpbm5lciBmaWxlIHN5c3RlbSB0d2ljZVwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlubmVySW5wdXRGaWxlU3lzdGVtID0gaW5uZXJJbnB1dEZpbGVTeXN0ZW07XG4gICAgfVxuXG4gICAgcHVibGljIHJlYWRGaWxlKFxuICAgICAgICBmaWxlbmFtZTogc3RyaW5nLFxuICAgICAgICBvcHRpb25zOiBzdHJpbmcgfCB7IGVuY29kaW5nOiBzdHJpbmc7IGZsYWc/OiBzdHJpbmcgfSxcbiAgICAgICAgY2FsbGJhY2s6IChlcnI6IE5vZGVKUy5FcnJub0V4Y2VwdGlvbiwgZGF0YTogc3RyaW5nKSA9PiB2b2lkXG4gICAgKTogdm9pZDtcbiAgICBwdWJsaWMgcmVhZEZpbGUoXG4gICAgICAgIGZpbGVuYW1lOiBzdHJpbmcsXG4gICAgICAgIG9wdGlvbnM6IHsgZmxhZz86IHN0cmluZyB9LFxuICAgICAgICBjYWxsYmFjazogKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uLCBkYXRhOiBCdWZmZXIpID0+IHZvaWRcbiAgICApOiB2b2lkO1xuICAgIHB1YmxpYyByZWFkRmlsZShmaWxlbmFtZTogc3RyaW5nLCBjYWxsYmFjazogKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uLCBkYXRhOiBCdWZmZXIpID0+IHZvaWQpOiB2b2lkO1xuICAgIHB1YmxpYyByZWFkRmlsZShcbiAgICAgICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICAgICAgb3B0aW9uczpcbiAgICAgICAgICAgIHwgc3RyaW5nXG4gICAgICAgICAgICB8IHsgZW5jb2Rpbmc6IFRFbmNvZGluZ0V4dGVuZGVkOyBmbGFnPzogc3RyaW5nIH1cbiAgICAgICAgICAgIHwgeyBmbGFnPzogc3RyaW5nIH1cbiAgICAgICAgICAgIHwgKChlcnI6IE5vZGVKUy5FcnJub0V4Y2VwdGlvbiwgZGF0YTogQnVmZmVyKSA9PiB2b2lkKSxcbiAgICAgICAgY2FsbGJhY2s/OlxuICAgICAgICAgICAgfCAoKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uLCBkYXRhOiBzdHJpbmcpID0+IHZvaWQpXG4gICAgICAgICAgICB8ICgoZXJyOiBOb2RlSlMuRXJybm9FeGNlcHRpb24sIGRhdGE6IEJ1ZmZlcikgPT4gdm9pZClcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lLnN0YXJ0c1dpdGgodGhpcy5wYXRoVG9WaXJ0dWFsRGlyZWN0b3J5KSkge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGhpcy52aXJ0dWFsRnMucmVhZEZpbGUoZmlsZW5hbWUsIG9wdGlvbnMsIGNhbGxiYWNrKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHRoaXMuaW5uZXJJbnB1dEZpbGVTeXN0ZW0ucmVhZEZpbGUoZmlsZW5hbWUsIG9wdGlvbnMsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWFkRmlsZVN5bmMoZmlsZW5hbWU6IHN0cmluZywgb3B0aW9uczogc3RyaW5nIHwgeyBlbmNvZGluZzogc3RyaW5nOyBmbGFnPzogc3RyaW5nIH0pOiBzdHJpbmc7XG4gICAgcHVibGljIHJlYWRGaWxlU3luYyhmaWxlbmFtZTogc3RyaW5nLCBvcHRpb25zPzogeyBmbGFnPzogc3RyaW5nIH0pOiBCdWZmZXI7XG4gICAgcHVibGljIHJlYWRGaWxlU3luYyhcbiAgICAgICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICAgICAgb3B0aW9ucz86IHN0cmluZyB8IHsgZW5jb2Rpbmc6IHN0cmluZzsgZmxhZz86IHN0cmluZyB9IHwgeyBmbGFnPzogc3RyaW5nIH1cbiAgICApOiBzdHJpbmcgfCBCdWZmZXIge1xuICAgICAgICBpZiAoZmlsZW5hbWUuc3RhcnRzV2l0aCh0aGlzLnBhdGhUb1ZpcnR1YWxEaXJlY3RvcnkpKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gdGhpcy52aXJ0dWFsRnMucmVhZEZpbGVTeW5jKGZpbGVuYW1lLCBvcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlubmVySW5wdXRGaWxlU3lzdGVtLnJlYWRGaWxlU3luYyhmaWxlbmFtZSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVhZGRpcihkaXJQYXRoOiBzdHJpbmcsIGNhbGxiYWNrOiAoZXJyOiBFcnJvciwgZmlsZXM6IHN0cmluZ1tdKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGlmIChkaXJQYXRoLnN0YXJ0c1dpdGgodGhpcy5wYXRoVG9WaXJ0dWFsRGlyZWN0b3J5KSkge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGhpcy52aXJ0dWFsRnMucmVhZGRpcihkaXJQYXRoLCBjYWxsYmFjayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICB0aGlzLmlubmVySW5wdXRGaWxlU3lzdGVtLnJlYWRkaXIoZGlyUGF0aCwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlYWRkaXJTeW5jKGRpclBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgaWYgKGRpclBhdGguc3RhcnRzV2l0aCh0aGlzLnBhdGhUb1ZpcnR1YWxEaXJlY3RvcnkpKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gdGhpcy52aXJ0dWFsRnMucmVhZGRpclN5bmMoZGlyUGF0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbm5lcklucHV0RmlsZVN5c3RlbS5yZWFkZGlyU3luYyhkaXJQYXRoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIHJlYWRsaW5rKGRpclBhdGg6IHN0cmluZywgY2FsbGJhY2s/OiAoZXJyOiBOb2RlSlMuRXJybm9FeGNlcHRpb24sIGxpbmtTdHJpbmc6IHN0cmluZykgPT4gYW55KTogdm9pZCB7XG4gICAgICAgIGlmIChkaXJQYXRoLnN0YXJ0c1dpdGgodGhpcy5wYXRoVG9WaXJ0dWFsRGlyZWN0b3J5KSkge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGhpcy52aXJ0dWFsRnMucmVhZGxpbmsoZGlyUGF0aCwgY2FsbGJhY2spO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGhpcy5pbm5lcklucHV0RmlsZVN5c3RlbS5yZWFkbGluayhkaXJQYXRoLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVhZGxpbmtTeW5jKGxpbmtQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAobGlua1BhdGguc3RhcnRzV2l0aCh0aGlzLnBhdGhUb1ZpcnR1YWxEaXJlY3RvcnkpKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gdGhpcy52aXJ0dWFsRnMucmVhZGxpbmtTeW5jKGxpbmtQYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlubmVySW5wdXRGaWxlU3lzdGVtLnJlYWRsaW5rU3luYyhsaW5rUGF0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBzdGF0KGZzUGF0aDogc3RyaW5nLCBjYWxsYmFjaz86IChlcnI6IE5vZGVKUy5FcnJub0V4Y2VwdGlvbiwgc3RhdHM6IFN0YXRzKSA9PiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKGZzUGF0aC5zdGFydHNXaXRoKHRoaXMucGF0aFRvVmlydHVhbERpcmVjdG9yeSkpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHRoaXMudmlydHVhbEZzLnN0YXQoZnNQYXRoLCBjYWxsYmFjayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICB0aGlzLmlubmVySW5wdXRGaWxlU3lzdGVtLnN0YXQoZnNQYXRoLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdFN5bmMoZnNQYXRoOiBzdHJpbmcpOiBTdGF0cyB7XG4gICAgICAgIGlmIChmc1BhdGguc3RhcnRzV2l0aCh0aGlzLnBhdGhUb1ZpcnR1YWxEaXJlY3RvcnkpKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gdGhpcy52aXJ0dWFsRnMuc3RhdFN5bmMoZnNQYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlubmVySW5wdXRGaWxlU3lzdGVtLnN0YXRTeW5jKGZzUGF0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgd3JpdGVCYXRjaChmaWxlQmF0Y2g6IHsgW3A6IHN0cmluZ106IHN0cmluZyB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZVBhdGggb2YgT2JqZWN0LmtleXMoZmlsZUJhdGNoKSkge1xuICAgICAgICAgICAgdGhpcy52aXJ0dWFsRnMubWtkaXJwU3luYyhwYXRoLnBhcnNlKGZpbGVQYXRoKS5kaXIpO1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSDQotCw0Lwg0LHQsNCzINCyINGC0LDQudC/0LjQvdCz0LDRhVxuICAgICAgICAgICAgdGhpcy52aXJ0dWFsRnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgZmlsZUJhdGNoW2ZpbGVQYXRoXSwgXCJ1dGY4XCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW1pdENoYW5nZXMoZmlsZUJhdGNoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2F0Y2goXG4gICAgICAgIGZpbGVzOiBJTGF6eVNldDxzdHJpbmc+LFxuICAgICAgICBkaXJzOiBJTGF6eVNldDxzdHJpbmc+LFxuICAgICAgICBtaXNzaW5nOiBJTGF6eVNldDxzdHJpbmc+LFxuICAgICAgICBzdGFydFRpbWU6IG51bWJlcixcbiAgICAgICAgb3B0aW9uczogV2F0Y2hGaWxlU3lzdGVtV2F0Y2hPcHRpb25zLFxuICAgICAgICBjYWxsYmFjazogV2F0Y2hGaWxlU3lzdGVtQ2FsbGJhY2ssXG4gICAgICAgIGNhbGxiYWNrVW5kZWxheWVkOiBXYXRjaEZpbGVTeXN0ZW1DYWxsYmFja1VuZGVsYXllZFxuICAgICk6IElXYXRjaEZpbGVTeXN0ZW1XYXRjaGVyIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFdlYnBhY2tWaXJ0dWFsV2F0Y2hGaWxlU3lzdGVtV2F0Y2hlcihcbiAgICAgICAgICAgIHRoaXMudmlydHVhbEZzLFxuICAgICAgICAgICAgWy4uLmZpbGVzLnZhbHVlcygpXS5maWx0ZXIoeCA9PiB4LnN0YXJ0c1dpdGgodGhpcy5wYXRoVG9WaXJ0dWFsRGlyZWN0b3J5KSksXG4gICAgICAgICAgICBbLi4uZGlycy52YWx1ZXMoKV0uZmlsdGVyKHggPT4geC5zdGFydHNXaXRoKHRoaXMucGF0aFRvVmlydHVhbERpcmVjdG9yeSkpLFxuICAgICAgICAgICAgWy4uLm1pc3NpbmcudmFsdWVzKCldLmZpbHRlcih4ID0+IHguc3RhcnRzV2l0aCh0aGlzLnBhdGhUb1ZpcnR1YWxEaXJlY3RvcnkpKSxcbiAgICAgICAgICAgIGNhbGxiYWNrLFxuICAgICAgICAgICAgY2FsbGJhY2tVbmRlbGF5ZWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy53YXRjaGVycy5wdXNoKHJlc3VsdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0Q2hhbmdlcyhmaWxlQmF0Y2g6IHsgW3A6IHN0cmluZ106IHN0cmluZyB9KTogdm9pZCB7XG4gICAgICAgIGZvciAoY29uc3Qgd2F0Y2hlciBvZiB0aGlzLndhdGNoZXJzKSB7XG4gICAgICAgICAgICB3YXRjaGVyLmVtaXRDaGFuZ2VzKE9iamVjdC5rZXlzKGZpbGVCYXRjaCkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5jbGFzcyBXZWJwYWNrVmlydHVhbFdhdGNoRmlsZVN5c3RlbVdhdGNoZXIgaW1wbGVtZW50cyBJV2F0Y2hGaWxlU3lzdGVtV2F0Y2hlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSB2aXJ0dWFsRnM6IElGcztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbGVzOiBzdHJpbmdbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpcnM6IHN0cmluZ1tdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWlzc2luZzogc3RyaW5nW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYWxsYmFjazogV2F0Y2hGaWxlU3lzdGVtQ2FsbGJhY2s7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYWxsYmFja1VuZGVsYXllZDogV2F0Y2hGaWxlU3lzdGVtQ2FsbGJhY2tVbmRlbGF5ZWQ7XG5cbiAgICBwcml2YXRlIGNsb3NlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcGF1c2VkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHZpcnR1YWxGczogSUZzLFxuICAgICAgICBmaWxlczogc3RyaW5nW10sXG4gICAgICAgIGRpcnM6IHN0cmluZ1tdLFxuICAgICAgICBtaXNzaW5nOiBzdHJpbmdbXSxcbiAgICAgICAgY2FsbGJhY2s6IFdhdGNoRmlsZVN5c3RlbUNhbGxiYWNrLFxuICAgICAgICBjYWxsYmFja1VuZGVsYXllZDogV2F0Y2hGaWxlU3lzdGVtQ2FsbGJhY2tVbmRlbGF5ZWRcbiAgICApIHtcbiAgICAgICAgdGhpcy52aXJ0dWFsRnMgPSB2aXJ0dWFsRnM7XG4gICAgICAgIHRoaXMuZmlsZXMgPSBmaWxlcztcbiAgICAgICAgdGhpcy5kaXJzID0gZGlycztcbiAgICAgICAgdGhpcy5taXNzaW5nID0gbWlzc2luZztcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgICAgICB0aGlzLmNhbGxiYWNrVW5kZWxheWVkID0gY2FsbGJhY2tVbmRlbGF5ZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGVtaXRDaGFuZ2VzKGZpbGVQYXRoczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGF1c2VkIHx8IHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2hhbmdlczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG4gICAgICAgIGlmIChmaWxlUGF0aHNbMF0gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGxiYWNrVW5kZWxheWVkKGZpbGVQYXRoc1swXSwgRGF0ZS5ub3coKSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBmaWxlUGF0aHMpIHtcbiAgICAgICAgICAgIGNoYW5nZXMuYWRkKGZpbGVQYXRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZW1pdEFnZ3JlZ2F0ZWRDaGFuZ2VzKGNoYW5nZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBwYXVzZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYXVzZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb250ZXh0VGltZUluZm9FbnRyaWVzKCk6IE1hcDxzdHJpbmcsIEZpbGVTeXN0ZW1UaW1lSW5mb0VudHJ5PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZpbGVUaW1lSW5mb0VudHJpZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsZVRpbWVJbmZvRW50cmllcygpOiBNYXA8c3RyaW5nLCBGaWxlU3lzdGVtVGltZUluZm9FbnRyeT4ge1xuICAgICAgICBjb25zdCB0aW1lczogTWFwPHN0cmluZywgRmlsZVN5c3RlbVRpbWVJbmZvRW50cnk+ID0gbmV3IE1hcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgdGhpcy5maWxlcykge1xuICAgICAgICAgICAgdGltZXMuc2V0KGZpbGUsIHtcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IHRoaXMudmlydHVhbEZzLnN0YXRTeW5jKGZpbGUpLm10aW1lTXMsXG4gICAgICAgICAgICAgICAgc2FmZVRpbWU6IHRoaXMudmlydHVhbEZzLnN0YXRTeW5jKGZpbGUpLm10aW1lTXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGltZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0QWdncmVnYXRlZENoYW5nZXMoY2hhbmdlczogU2V0PHN0cmluZz4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGhzID0gQXJyYXkuZnJvbShjaGFuZ2VzKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBmaWxlUGF0aHMuZmlsdGVyKGZpbGVQYXRoID0+IHRoaXMuZmlsZXMuaW5jbHVkZXMoZmlsZVBhdGgpKS5zb3J0KCk7XG4gICAgICAgIGNvbnN0IGRpcnMgPSBmaWxlUGF0aHMuZmlsdGVyKGZpbGVQYXRoID0+IHRoaXMuZGlycy5pbmNsdWRlcyhmaWxlUGF0aCkpLnNvcnQoKTtcbiAgICAgICAgY29uc3QgbWlzc2luZyA9IGZpbGVQYXRocy5maWx0ZXIoZmlsZVBhdGggPT4gdGhpcy5taXNzaW5nLmluY2x1ZGVzKGZpbGVQYXRoKSkuc29ydCgpO1xuICAgICAgICBjb25zdCB0aW1lcyA9IHRoaXMuZ2V0RmlsZVRpbWVJbmZvRW50cmllcygpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMuY2FsbGJhY2sodW5kZWZpbmVkLCBmaWxlcywgZGlycywgbWlzc2luZywgdGltZXMsIHRpbWVzLCBuZXcgU2V0KCkpO1xuICAgIH1cbn1cblxuaW50ZXJmYWNlIElMYXp5U2V0PFQ+IHtcbiAgICB2YWx1ZXMoKTogSXRlcmFibGU8VD47XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLElBQUFBLElBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUF3RCxTQUFBRSx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBSix3QkFBQVEsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLG9CQUFBQSxHQUFBLHdCQUFBQSxHQUFBLDRCQUFBRSxPQUFBLEVBQUFGLEdBQUEsVUFBQUcsS0FBQSxHQUFBUix3QkFBQSxDQUFBQyxXQUFBLE9BQUFPLEtBQUEsSUFBQUEsS0FBQSxDQUFBQyxHQUFBLENBQUFKLEdBQUEsWUFBQUcsS0FBQSxDQUFBRSxHQUFBLENBQUFMLEdBQUEsU0FBQU0sTUFBQSxXQUFBQyxxQkFBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxHQUFBLElBQUFYLEdBQUEsUUFBQVcsR0FBQSxrQkFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFB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
|
package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js
CHANGED
|
@@ -1,30 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.FarmDirectory = void 0;
|
|
9
|
-
|
|
10
8
|
var _path = _interopRequireDefault(require("path"));
|
|
11
|
-
|
|
12
9
|
var _fs = require("fs");
|
|
13
|
-
|
|
14
10
|
var _FormGlobsUtils = require("../../../../Commons/FormGlobsUtils");
|
|
15
|
-
|
|
16
11
|
var _FsUtils = require("../../../../Commons/FsUtils");
|
|
17
|
-
|
|
18
12
|
var _PathPattern = require("../../../../Commons/PathPattern");
|
|
19
|
-
|
|
20
13
|
var _TypingUtils = require("../../../../../../Common/TypingUtils");
|
|
21
|
-
|
|
22
14
|
class FarmDirectory {
|
|
23
15
|
constructor(farmDirectory) {
|
|
24
16
|
this.farmDirectory = void 0;
|
|
25
17
|
this.farmDirectory = farmDirectory;
|
|
26
18
|
}
|
|
27
|
-
|
|
28
19
|
async getAllFormJsonFiles() {
|
|
29
20
|
const pattern = new _PathPattern.PathPattern("forms/{gfv}/form.json");
|
|
30
21
|
const files = await (0, _FsUtils.globAsync)("forms/*/form.json", {
|
|
@@ -32,29 +23,22 @@ class FarmDirectory {
|
|
|
32
23
|
});
|
|
33
24
|
return files.map(x => {
|
|
34
25
|
var _pattern$execStrict$g;
|
|
35
|
-
|
|
36
26
|
return {
|
|
37
27
|
relativePath: x,
|
|
38
28
|
gfv: (_pattern$execStrict$g = pattern.execStrict(x)["gfv"]) !== null && _pattern$execStrict$g !== void 0 ? _pattern$execStrict$g : (0, _TypingUtils.reject)()
|
|
39
29
|
};
|
|
40
30
|
});
|
|
41
31
|
}
|
|
42
|
-
|
|
43
32
|
async resolveFormGlobs(formGlobs) {
|
|
44
33
|
return _FormGlobsUtils.FormGlobs.resolveGlobsToGfvs(await _FormGlobsUtils.FormGlobs.resolveSpecifiers(formGlobs, this.farmDirectory), this.farmDirectory);
|
|
45
34
|
}
|
|
46
|
-
|
|
47
35
|
getFormJsonPath(gfv) {
|
|
48
36
|
const formDirPath = _path.default.join(this.farmDirectory, "forms", gfv);
|
|
49
|
-
|
|
50
37
|
if ((0, _fs.existsSync)(_path.default.join(formDirPath, "form.json"))) {
|
|
51
38
|
return _path.default.join(formDirPath, "form.json");
|
|
52
39
|
}
|
|
53
|
-
|
|
54
40
|
return undefined;
|
|
55
41
|
}
|
|
56
|
-
|
|
57
42
|
}
|
|
58
|
-
|
|
59
43
|
exports.FarmDirectory = FarmDirectory;
|
|
60
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2ZzIiwiX0Zvcm1HbG9ic1V0aWxzIiwiX0ZzVXRpbHMiLCJfUGF0aFBhdHRlcm4iLCJfVHlwaW5nVXRpbHMiLCJGYXJtRGlyZWN0b3J5IiwiY29uc3RydWN0b3IiLCJmYXJtRGlyZWN0b3J5IiwiZ2V0QWxsRm9ybUpzb25GaWxlcyIsInBhdHRlcm4iLCJQYXRoUGF0dGVybiIsImZpbGVzIiwiZ2xvYkFzeW5jIiwiY3dkIiwibWFwIiwieCIsIl9wYXR0ZXJuJGV4ZWNTdHJpY3QkZyIsInJlbGF0aXZlUGF0aCIsImdmdiIsImV4ZWNTdHJpY3QiLCJyZWplY3QiLCJyZXNvbHZlRm9ybUdsb2JzIiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwicmVzb2x2ZUdsb2JzVG9HZnZzIiwicmVzb2x2ZVNwZWNpZmllcnMiLCJnZXRGb3JtSnNvblBhdGgiLCJmb3JtRGlyUGF0aCIsInBhdGgiLCJqb2luIiwiZXhpc3RzU3luYyIsInVuZGVmaW5lZCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvQnVpbGRTZXJ2ZXIvUmVzb3VyY2VzQ29udHJvbGxlcnMvRGlyZWN0b3JpZXMvRmFybURpcmVjdG9yeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJmc1wiO1xuXG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgZ2xvYkFzeW5jIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbnMvRnNVdGlsc1wiO1xuaW1wb3J0IHsgUGF0aFBhdHRlcm4gfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9ucy9QYXRoUGF0dGVyblwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuXG5pbnRlcmZhY2UgRmFybUZpbGVJbmZvIHtcbiAgICByZWxhdGl2ZVBhdGg6IHN0cmluZztcbiAgICBnZnY6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEZhcm1EaXJlY3Rvcnkge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFybURpcmVjdG9yeTogc3RyaW5nO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGZhcm1EaXJlY3Rvcnk6IHN0cmluZykge1xuICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBmYXJtRGlyZWN0b3J5O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxGb3JtSnNvbkZpbGVzKCk6IFByb21pc2U8RmFybUZpbGVJbmZvW10+IHtcbiAgICAgICAgY29uc3QgcGF0dGVybiA9IG5ldyBQYXRoUGF0dGVybihcImZvcm1zL3tnZnZ9L2Zvcm0uanNvblwiKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBnbG9iQXN5bmMoXCJmb3Jtcy8qL2Zvcm0uanNvblwiLCB7IGN3ZDogdGhpcy5mYXJtRGlyZWN0b3J5IH0pO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4gKHtcbiAgICAgICAgICAgIHJlbGF0aXZlUGF0aDogeCxcbiAgICAgICAgICAgIGdmdjogcGF0dGVybi5leGVjU3RyaWN0KHgpW1wiZ2Z2XCJdID8/IHJlamVjdCgpLFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlc29sdmVGb3JtR2xvYnMoZm9ybUdsb2JzOiBzdHJpbmdbXSk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIEZvcm1HbG9icy5yZXNvbHZlR2xvYnNUb0dmdnMoXG4gICAgICAgICAgICBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMoZm9ybUdsb2JzLCB0aGlzLmZhcm1EaXJlY3RvcnkpLFxuICAgICAgICAgICAgdGhpcy5mYXJtRGlyZWN0b3J5XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZvcm1Kc29uUGF0aChnZnY6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYpO1xuICAgICAgICBpZiAoZXhpc3RzU3luYyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybS5qc29uXCIpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtLmpzb25cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxHQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxlQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxZQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFPTyxNQUFNTSxhQUFhLENBQUM7RUFHaEJDLFdBQVdBLENBQUNDLGFBQXFCLEVBQUU7SUFBQSxLQUZ6QkEsYUFBYTtJQUcxQixJQUFJLENBQUNBLGFBQWEsR0FBR0EsYUFBYTtFQUN0QztFQUVBLE1BQWFDLG1CQUFtQkEsQ0FBQSxFQUE0QjtJQUN4RCxNQUFNQyxPQUFPLEdBQUcsSUFBSUMsd0JBQVcsQ0FBQyx1QkFBdUIsQ0FBQztJQUN4RCxNQUFNQyxLQUFLLEdBQUcsTUFBTSxJQUFBQyxrQkFBUyxFQUFDLG1CQUFtQixFQUFFO01BQUVDLEdBQUcsRUFBRSxJQUFJLENBQUNOO0lBQWMsQ0FBQyxDQUFDO0lBQy9FLE9BQU9JLEtBQUssQ0FBQ0csR0FBRyxDQUFDQyxDQUFDO01BQUEsSUFBQUMscUJBQUE7TUFBQSxPQUFLO1FBQ25CQyxZQUFZLEVBQUVGLENBQUM7UUFDZkcsR0FBRyxHQUFBRixxQkFBQSxHQUFFUCxPQUFPLENBQUNVLFVBQVUsQ0FBQ0osQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQUFDLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksSUFBQUksbUJBQU0sRUFBQztNQUNoRCxDQUFDO0lBQUEsQ0FBQyxDQUFDO0VBQ1A7RUFFQSxNQUFhQyxnQkFBZ0JBLENBQUNDLFNBQW1CLEVBQXFCO0lBQ2xFLE9BQU9DLHlCQUFTLENBQUNDLGtCQUFrQixDQUMvQixNQUFNRCx5QkFBUyxDQUFDRSxpQkFBaUIsQ0FBQ0gsU0FBUyxFQUFFLElBQUksQ0FBQ2YsYUFBYSxDQUFDLEVBQ2hFLElBQUksQ0FBQ0EsYUFDVCxDQUFDO0VBQ0w7RUFFT21CLGVBQWVBLENBQUNSLEdBQVcsRUFBc0I7SUFDcEQsTUFBTVMsV0FBVyxHQUFHQyxhQUFJLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUN0QixhQUFhLEVBQUUsT0FBTyxFQUFFVyxHQUFHLENBQUM7SUFDL0QsSUFBSSxJQUFBWSxjQUFVLEVBQUNGLGFBQUksQ0FBQ0MsSUFBSSxDQUFDRixXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUMsRUFBRTtNQUNqRCxPQUFPQyxhQUFJLENBQUNDLElBQUksQ0FBQ0YsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUM5QztJQUNBLE9BQU9JLFNBQVM7RUFDcEI7QUFDSjtBQUFDQyxPQUFBLENBQUEzQixhQUFBLEdBQUFBLGFBQUEifQ==
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.globToRegexp = globToRegexp;
|
|
7
|
-
|
|
8
7
|
function globToRegexp(inputGlob) {
|
|
9
8
|
const pathTokens = inputGlob.split("/");
|
|
10
9
|
return new RegExp("^" + pathTokens.map((x, index) => {
|
|
@@ -12,15 +11,12 @@ function globToRegexp(inputGlob) {
|
|
|
12
11
|
if (index === pathTokens.length - 1) {
|
|
13
12
|
return ".*$";
|
|
14
13
|
}
|
|
15
|
-
|
|
16
14
|
return "[^\\/]*?";
|
|
17
15
|
}
|
|
18
|
-
|
|
19
16
|
if (x.includes("*")) {
|
|
20
17
|
return x.replace("*", "[^\\/]*?");
|
|
21
18
|
}
|
|
22
|
-
|
|
23
19
|
return x;
|
|
24
20
|
}).join("[\\/\\\\]"));
|
|
25
21
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnbG9iVG9SZWdleHAiLCJpbnB1dEdsb2IiLCJwYXRoVG9rZW5zIiwic3BsaXQiLCJSZWdFeHAiLCJtYXAiLCJ4IiwiaW5kZXgiLCJsZW5ndGgiLCJpbmNsdWRlcyIsInJlcGxhY2UiLCJqb2luIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL1Jlc291cmNlc0NvbnRyb2xsZXJzL0dsb2JUb1JlZ2V4cC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2xvYlRvUmVnZXhwKGlucHV0R2xvYjogc3RyaW5nKTogUmVnRXhwIHtcbiAgICBjb25zdCBwYXRoVG9rZW5zID0gaW5wdXRHbG9iLnNwbGl0KFwiL1wiKTtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChcbiAgICAgICAgXCJeXCIgK1xuICAgICAgICAgICAgcGF0aFRva2Vuc1xuICAgICAgICAgICAgICAgIC5tYXAoKHgsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh4ID09PSBcIipcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSBwYXRoVG9rZW5zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCIuKiRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcIlteXFxcXC9dKj9cIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoeC5pbmNsdWRlcyhcIipcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4LnJlcGxhY2UoXCIqXCIsIFwiW15cXFxcL10qP1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5qb2luKFwiW1xcXFwvXFxcXFxcXFxdXCIpXG4gICAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQU8sU0FBU0EsWUFBWUEsQ0FBQ0MsU0FBaUIsRUFBVTtFQUNwRCxNQUFNQyxVQUFVLEdBQUdELFNBQVMsQ0FBQ0UsS0FBSyxDQUFDLEdBQUcsQ0FBQztFQUN2QyxPQUFPLElBQUlDLE1BQU0sQ0FDYixHQUFHLEdBQ0NGLFVBQVUsQ0FDTEcsR0FBRyxDQUFDLENBQUNDLENBQUMsRUFBRUMsS0FBSyxLQUFLO0lBQ2YsSUFBSUQsQ0FBQyxLQUFLLEdBQUcsRUFBRTtNQUNYLElBQUlDLEtBQUssS0FBS0wsVUFBVSxDQUFDTSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2pDLE9BQU8sS0FBSztNQUNoQjtNQUNBLE9BQU8sVUFBVTtJQUNyQjtJQUNBLElBQUlGLENBQUMsQ0FBQ0csUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO01BQ2pCLE9BQU9ILENBQUMsQ0FBQ0ksT0FBTyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUM7SUFDckM7SUFDQSxPQUFPSixDQUFDO0VBQ1osQ0FBQyxDQUFDLENBQ0RLLElBQUksQ0FBQyxXQUFXLENBQzdCLENBQUM7QUFDTCJ9
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL1Jlc291cmNlc0NvbnRyb2xsZXJzL0lHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIge1xuICAgIGdldEFsbE5vcm1hbGl6YXRpb25GaWxlTmFtZXMoKTogUHJvbWlzZTxzdHJpbmdbXT47XG4gICAgZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50KGdmdjogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+O1xuICAgIGdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzKCk6IFByb21pc2U8c3RyaW5nW10+O1xuICAgIGdldEF0dGFjaG1lbnRQYXRoc0ZpbGVDb250ZW50KGdmdjogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+O1xufVxuIl0sIm1hcHBpbmdzIjoiIn0=
|
|
@@ -5,59 +5,40 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.runBuildServer = runBuildServer;
|
|
7
7
|
exports.runDevBuildServer = runDevBuildServer;
|
|
8
|
-
|
|
9
8
|
var _TypingUtils = require("../../../../Common/TypingUtils");
|
|
10
|
-
|
|
11
9
|
var _ExpressServerWrapper = require("../../Commons/HttpServer/ExpressWrapper/ExpressServerWrapper");
|
|
12
|
-
|
|
13
10
|
var _FormsHelperController = require("../FormsHelper/FormsHelperController");
|
|
14
|
-
|
|
15
11
|
var _BuildLogsWebsocketController = require("./BuildLogsWebsocketController");
|
|
16
|
-
|
|
17
12
|
var _BuildServerBackendResourcesController = require("./ResourcesControllers/BuildServerBackendResourcesController");
|
|
18
|
-
|
|
19
13
|
var _BuildServerBackendResourcesUpdatesController = require("./ResourcesControllers/BuildServerBackendResourcesUpdatesController");
|
|
20
|
-
|
|
21
14
|
var _BuildServerBuildFormsController = require("./ResourcesControllers/BuildServerBuildFormsController");
|
|
22
|
-
|
|
23
15
|
var _BuildServerClientJsController = require("./ResourcesControllers/BuildServerClientJsController");
|
|
24
|
-
|
|
25
16
|
var _BuildServerClientJsFromResourcesController = require("./ResourcesControllers/BuildServerClientJsFromResourcesController");
|
|
26
|
-
|
|
27
17
|
var _BuildServerFormInfoController = require("./ResourcesControllers/BuildServerFormInfoController");
|
|
28
|
-
|
|
29
18
|
var _BuildServerLocalSourcesEngineController = require("./ResourcesControllers/BuildServerLocalSourcesEngineController");
|
|
30
|
-
|
|
31
19
|
var _BuildServerPrebuiltResourcesController = require("./ResourcesControllers/BuildServerPrebuiltResourcesController");
|
|
32
|
-
|
|
33
20
|
var _BuildServerPublishedEngineController = require("./ResourcesControllers/BuildServerPublishedEngineController");
|
|
34
|
-
|
|
35
21
|
async function runBuildServer(context, options, allFarmConfig) {
|
|
36
22
|
(0, _TypingUtils.ensureArrayIsNotEmpty)(allFarmConfig);
|
|
37
23
|
let engineDirectory = "";
|
|
38
|
-
|
|
39
24
|
for (const conf of allFarmConfig) {
|
|
40
25
|
if (conf.engineDirectory != undefined) {
|
|
41
26
|
engineDirectory = conf.engineDirectory;
|
|
42
27
|
break;
|
|
43
28
|
}
|
|
44
29
|
}
|
|
45
|
-
|
|
46
30
|
if (engineDirectory === "") {
|
|
47
31
|
throw Error("All Engine directory is empty");
|
|
48
32
|
}
|
|
49
|
-
|
|
50
33
|
const candyModulesDirectory = allFarmConfig[0].candyModulesDirectory;
|
|
51
34
|
const formTestingHelpersWebServer = new _ExpressServerWrapper.ExpressServerWrapper(9010, undefined, context.logger, "Forms helpers");
|
|
52
35
|
formTestingHelpersWebServer.registerSigletonController(new _FormsHelperController.FormsHelperController({
|
|
53
36
|
frontEndDevMode: options.developmentMode
|
|
54
37
|
}));
|
|
55
38
|
const webServer = new _ExpressServerWrapper.ExpressServerWrapper(9000, 9043, context.logger);
|
|
56
|
-
|
|
57
39
|
if (!options.disableClientOverride) {
|
|
58
40
|
webServer.registerSigletonController(new _BuildLogsWebsocketController.BuildLogsWebsocketController());
|
|
59
41
|
}
|
|
60
|
-
|
|
61
42
|
const buildFormsController = new _BuildServerBuildFormsController.BuildServerBuildFormsController(allFarmConfig, candyModulesDirectory, false, engineDirectory, options.buildDebugOnly, options.nightly);
|
|
62
43
|
webServer.registerSigletonController(buildFormsController);
|
|
63
44
|
webServer.registerSigletonController(new _BuildServerBackendResourcesController.BuildServerBackendResourcesController(allFarmConfig, buildFormsController));
|
|
@@ -74,36 +55,29 @@ async function runBuildServer(context, options, allFarmConfig) {
|
|
|
74
55
|
await webServer.stop();
|
|
75
56
|
await formTestingHelpersWebServer.stop();
|
|
76
57
|
}
|
|
77
|
-
|
|
78
58
|
async function runDevBuildServer(context, options, allFarmConfig) {
|
|
79
59
|
if (allFarmConfig[0] == undefined) {
|
|
80
60
|
throw Error("Config can't be length 0");
|
|
81
61
|
}
|
|
82
|
-
|
|
83
62
|
let engineDirectory = "";
|
|
84
|
-
|
|
85
63
|
for (const conf of allFarmConfig) {
|
|
86
64
|
if (conf.engineDirectory != undefined) {
|
|
87
65
|
engineDirectory = conf.engineDirectory;
|
|
88
66
|
break;
|
|
89
67
|
}
|
|
90
68
|
}
|
|
91
|
-
|
|
92
69
|
if (engineDirectory === "") {
|
|
93
70
|
throw Error("All Engine directory is empty");
|
|
94
71
|
}
|
|
95
|
-
|
|
96
72
|
const candyModulesDirectory = allFarmConfig[0].candyModulesDirectory;
|
|
97
73
|
const formTestingHelpersWebServer = new _ExpressServerWrapper.ExpressServerWrapper(9010, undefined, context.logger, "Forms helpers");
|
|
98
74
|
formTestingHelpersWebServer.registerSigletonController(new _FormsHelperController.FormsHelperController({
|
|
99
75
|
frontEndDevMode: options.developmentMode
|
|
100
76
|
}));
|
|
101
77
|
const webServer = new _ExpressServerWrapper.ExpressServerWrapper(9000, 9043, context.logger);
|
|
102
|
-
|
|
103
78
|
if (!options.disableClientOverride) {
|
|
104
79
|
webServer.registerSigletonController(new _BuildLogsWebsocketController.BuildLogsWebsocketController());
|
|
105
80
|
}
|
|
106
|
-
|
|
107
81
|
const buildServerBuildFormsController = new _BuildServerBuildFormsController.BuildServerBuildFormsController(allFarmConfig, candyModulesDirectory, true, engineDirectory, options.buildDebugOnly);
|
|
108
82
|
webServer.registerSigletonController(buildServerBuildFormsController);
|
|
109
83
|
webServer.registerSigletonController(new _BuildServerBackendResourcesController.BuildServerBackendResourcesController(allFarmConfig, buildServerBuildFormsController));
|
|
@@ -121,4 +95,4 @@ async function runDevBuildServer(context, options, allFarmConfig) {
|
|
|
121
95
|
await webServer.stop();
|
|
122
96
|
await formTestingHelpersWebServer.stop();
|
|
123
97
|
}
|
|
124
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SdW5CdWlsZFNlcnZlci50cyJdLCJuYW1lcyI6WyJydW5CdWlsZFNlcnZlciIsImNvbnRleHQiLCJvcHRpb25zIiwiYWxsRmFybUNvbmZpZyIsImVuZ2luZURpcmVjdG9yeSIsImNvbmYiLCJ1bmRlZmluZWQiLCJFcnJvciIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsImZvcm1UZXN0aW5nSGVscGVyc1dlYlNlcnZlciIsIkV4cHJlc3NTZXJ2ZXJXcmFwcGVyIiwibG9nZ2VyIiwicmVnaXN0ZXJTaWdsZXRvbkNvbnRyb2xsZXIiLCJGb3Jtc0hlbHBlckNvbnRyb2xsZXIiLCJmcm9udEVuZERldk1vZGUiLCJkZXZlbG9wbWVudE1vZGUiLCJ3ZWJTZXJ2ZXIiLCJkaXNhYmxlQ2xpZW50T3ZlcnJpZGUiLCJCdWlsZExvZ3NXZWJzb2NrZXRDb250cm9sbGVyIiwiYnVpbGRGb3Jtc0NvbnRyb2xsZXIiLCJCdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyIiwiYnVpbGREZWJ1Z09ubHkiLCJuaWdodGx5IiwiQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzQ29udHJvbGxlciIsIkJ1aWxkU2VydmVyRm9ybUluZm9Db250cm9sbGVyIiwiQnVpbGRTZXJ2ZXJQcmVidWlsdFJlc291cmNlc0NvbnRyb2xsZXIiLCJCdWlsZFNlcnZlclB1Ymxpc2hlZEVuZ2luZUNvbnRyb2xsZXIiLCJCdWlsZFNlcnZlckNsaWVudEpzRnJvbVJlc291cmNlc0NvbnRyb2xsZXIiLCJCdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNVcGRhdGVzQ29udHJvbGxlciIsInN0YXJ0Iiwid2FpdEZvckV4aXQiLCJzdG9wIiwicnVuRGV2QnVpbGRTZXJ2ZXIiLCJidWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyIiwiQnVpbGRTZXJ2ZXJMb2NhbFNvdXJjZXNFbmdpbmVDb250cm9sbGVyIiwiQnVpbGRTZXJ2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aWcgfSBmcm9tIFwiVG9vbHMvc3JjL0NhbmR5Q0xJXCI7XG5cbmltcG9ydCB7IGVuc3VyZUFycmF5SXNOb3RFbXB0eSB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB7IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Db25zb2xlQXBwbGljYXRpb24vQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHsgRXhwcmVzc1NlcnZlcldyYXBwZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0V4cHJlc3NXcmFwcGVyL0V4cHJlc3NTZXJ2ZXJXcmFwcGVyXCI7XG5pbXBvcnQgeyBGb3Jtc0hlbHBlckNvbnRyb2xsZXIgfSBmcm9tIFwiLi4vRm9ybXNIZWxwZXIvRm9ybXNIZWxwZXJDb250cm9sbGVyXCI7XG5cbmltcG9ydCB7IEJ1aWxkTG9nc1dlYnNvY2tldENvbnRyb2xsZXIgfSBmcm9tIFwiLi9CdWlsZExvZ3NXZWJzb2NrZXRDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBCdWlsZFNlcnZlck9wdGlvbnMsIERldkJ1aWxkU2VydmVyT3B0aW9ucyB9IGZyb20gXCIuL0J1aWxkU2VydmVyU2VydmVyT3B0aW9uc1wiO1xuaW1wb3J0IHsgQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzQ29udHJvbGxlciB9IGZyb20gXCIuL1Jlc291cmNlc0NvbnRyb2xsZXJzL0J1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXJcIjtcbmltcG9ydCB7IEJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc1VwZGF0ZXNDb250cm9sbGVyIH0gZnJvbSBcIi4vUmVzb3VyY2VzQ29udHJvbGxlcnMvQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzVXBkYXRlc0NvbnRyb2xsZXJcIjtcbmltcG9ydCB7IEJ1aWxkU2VydmVyQnVpbGRGb3Jtc0NvbnRyb2xsZXIgfSBmcm9tIFwiLi9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBCdWlsZFNlcnZlckNsaWVudEpzQ29udHJvbGxlciB9IGZyb20gXCIuL1Jlc291cmNlc0NvbnRyb2xsZXJzL0J1aWxkU2VydmVyQ2xpZW50SnNDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBCdWlsZFNlcnZlckNsaWVudEpzRnJvbVJlc291cmNlc0NvbnRyb2xsZXIgfSBmcm9tIFwiLi9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckNsaWVudEpzRnJvbVJlc291cmNlc0NvbnRyb2xsZXJcIjtcbmltcG9ydCB7IEJ1aWxkU2VydmVyRm9ybUluZm9Db250cm9sbGVyIH0gZnJvbSBcIi4vUmVzb3VyY2VzQ29udHJvbGxlcnMvQnVpbGRTZXJ2ZXJGb3JtSW5mb0NvbnRyb2xsZXJcIjtcbmltcG9ydCB7IEJ1aWxkU2VydmVyTG9jYWxTb3VyY2VzRW5naW5lQ29udHJvbGxlciB9IGZyb20gXCIuL1Jlc291cmNlc0NvbnRyb2xsZXJzL0J1aWxkU2VydmVyTG9jYWxTb3VyY2VzRW5naW5lQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgQnVpbGRTZXJ2ZXJQcmVidWlsdFJlc291cmNlc0NvbnRyb2xsZXIgfSBmcm9tIFwiLi9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlclByZWJ1aWx0UmVzb3VyY2VzQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgQnVpbGRTZXJ2ZXJQdWJsaXNoZWRFbmdpbmVDb250cm9sbGVyIH0gZnJvbSBcIi4vUmVzb3VyY2VzQ29udHJvbGxlcnMvQnVpbGRTZXJ2ZXJQdWJsaXNoZWRFbmdpbmVDb250cm9sbGVyXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5CdWlsZFNlcnZlcihcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IEJ1aWxkU2VydmVyT3B0aW9ucyxcbiAgICBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW11cbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGVuc3VyZUFycmF5SXNOb3RFbXB0eShhbGxGYXJtQ29uZmlnKTtcblxuICAgIGxldCBlbmdpbmVEaXJlY3RvcnkgPSBcIlwiO1xuICAgIGZvciAoY29uc3QgY29uZiBvZiBhbGxGYXJtQ29uZmlnKSB7XG4gICAgICAgIGlmIChjb25mLmVuZ2luZURpcmVjdG9yeSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGVuZ2luZURpcmVjdG9yeSA9IGNvbmYuZW5naW5lRGlyZWN0b3J5O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVuZ2luZURpcmVjdG9yeSA9PT0gXCJcIikge1xuICAgICAgICB0aHJvdyBFcnJvcihcIkFsbCBFbmdpbmUgZGlyZWN0b3J5IGlzIGVtcHR5XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGNhbmR5TW9kdWxlc0RpcmVjdG9yeSA9IGFsbEZhcm1Db25maWdbMF0uY2FuZHlNb2R1bGVzRGlyZWN0b3J5O1xuXG4gICAgY29uc3QgZm9ybVRlc3RpbmdIZWxwZXJzV2ViU2VydmVyID0gbmV3IEV4cHJlc3NTZXJ2ZXJXcmFwcGVyKDkwMTAsIHVuZGVmaW5lZCwgY29udGV4dC5sb2dnZXIsIFwiRm9ybXMgaGVscGVyc1wiKTtcbiAgICBmb3JtVGVzdGluZ0hlbHBlcnNXZWJTZXJ2ZXIucmVnaXN0ZXJTaWdsZXRvbkNvbnRyb2xsZXIoXG4gICAgICAgIG5ldyBGb3Jtc0hlbHBlckNvbnRyb2xsZXIoeyBmcm9udEVuZERldk1vZGU6IG9wdGlvbnMuZGV2ZWxvcG1lbnRNb2RlIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IHdlYlNlcnZlciA9IG5ldyBFeHByZXNzU2VydmVyV3JhcHBlcig5MDAwLCA5MDQzLCBjb250ZXh0LmxvZ2dlcik7XG4gICAgaWYgKCFvcHRpb25zLmRpc2FibGVDbGllbnRPdmVycmlkZSkge1xuICAgICAgICB3ZWJTZXJ2ZXIucmVnaXN0ZXJTaWdsZXRvbkNvbnRyb2xsZXIobmV3IEJ1aWxkTG9nc1dlYnNvY2tldENvbnRyb2xsZXIoKSk7XG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkRm9ybXNDb250cm9sbGVyID0gbmV3IEJ1aWxkU2VydmVyQnVpbGRGb3Jtc0NvbnRyb2xsZXIoXG4gICAgICAgIGFsbEZhcm1Db25maWcsXG4gICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeSxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGVuZ2luZURpcmVjdG9yeSxcbiAgICAgICAgb3B0aW9ucy5idWlsZERlYnVnT25seSxcbiAgICAgICAgb3B0aW9ucy5uaWdodGx5XG4gICAgKTtcblxuICAgIHdlYlNlcnZlci5yZWdpc3RlclNpZ2xldG9uQ29udHJvbGxlcihidWlsZEZvcm1zQ29udHJvbGxlcik7XG4gICAgd2ViU2VydmVyLnJlZ2lzdGVyU2lnbGV0b25Db250cm9sbGVyKFxuICAgICAgICBuZXcgQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzQ29udHJvbGxlcihhbGxGYXJtQ29uZmlnLCBidWlsZEZvcm1zQ29udHJvbGxlcilcbiAgICApO1xuXG4gICAgd2ViU2VydmVyLnJlZ2lzdGVyU2lnbGV0b25Db250cm9sbGVyKG5ldyBCdWlsZFNlcnZlckZvcm1JbmZvQ29udHJvbGxlcihhbGxGYXJtQ29uZmlnLCBmYWxzZSwgb3B0aW9ucy5uaWdodGx5KSk7XG5cbiAgICB3ZWJTZXJ2ZXIucmVnaXN0ZXJTaWdsZXRvbkNvbnRyb2xsZXIobmV3IEJ1aWxkU2VydmVyUHJlYnVpbHRSZXNvdXJjZXNDb250cm9sbGVyKCkpO1xuICAgIHdlYlNlcnZlci5yZWdpc3RlclNpZ2xldG9uQ29udHJvbGxlcihuZXcgQnVpbGRTZXJ2ZXJQdWJsaXNoZWRFbmdpbmVDb250cm9sbGVyKGNhbmR5TW9kdWxlc0RpcmVjdG9yeSkpO1xuICAgIHdlYlNlcnZlci5yZWdpc3RlclNpZ2xldG9uQ29udHJvbGxlcihcbiAgICAgICAgbmV3IEJ1aWxkU2VydmVyQ2xpZW50SnNGcm9tUmVzb3VyY2VzQ29udHJvbGxlcihvcHRpb25zLmRpc2FibGVDbGllbnRPdmVycmlkZSwge1xuICAgICAgICAgICAgZnJvbnRFbmREZXZNb2RlOiBvcHRpb25zLmRldmVsb3BtZW50TW9kZSxcbiAgICAgICAgfSlcbiAgICApO1xuICAgIHdlYlNlcnZlci5yZWdpc3RlclNpZ2xldG9uQ29udHJvbGxlcihuZXcgQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzVXBkYXRlc0NvbnRyb2xsZXIoYWxsRmFybUNvbmZpZykpO1xuICAgIGF3YWl0IGZvcm1UZXN0aW5nSGVscGVyc1dlYlNlcnZlci5zdGFydCgpO1xuICAgIGF3YWl0IHdlYlNlcnZlci5zdGFydCgpO1xuICAgIGF3YWl0IGNvbnRleHQud2FpdEZvckV4aXQoKTtcbiAgICBhd2FpdCB3ZWJTZXJ2ZXIuc3RvcCgpO1xuICAgIGF3YWl0IGZvcm1UZXN0aW5nSGVscGVyc1dlYlNlcnZlci5zdG9wKCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5EZXZCdWlsZFNlcnZlcihcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IERldkJ1aWxkU2VydmVyT3B0aW9ucyxcbiAgICBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW11cbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChhbGxGYXJtQ29uZmlnWzBdID09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBFcnJvcihcIkNvbmZpZyBjYW4ndCBiZSBsZW5ndGggMFwiKTtcbiAgICB9XG5cbiAgICBsZXQgZW5naW5lRGlyZWN0b3J5ID0gXCJcIjtcbiAgICBmb3IgKGNvbnN0IGNvbmYgb2YgYWxsRmFybUNvbmZpZykge1xuICAgICAgICBpZiAoY29uZi5lbmdpbmVEaXJlY3RvcnkgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBlbmdpbmVEaXJlY3RvcnkgPSBjb25mLmVuZ2luZURpcmVjdG9yeTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChlbmdpbmVEaXJlY3RvcnkgPT09IFwiXCIpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJBbGwgRW5naW5lIGRpcmVjdG9yeSBpcyBlbXB0eVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBjYW5keU1vZHVsZXNEaXJlY3RvcnkgPSBhbGxGYXJtQ29uZmlnWzBdLmNhbmR5TW9kdWxlc0RpcmVjdG9yeTtcblxuICAgIGNvbnN0IGZvcm1UZXN0aW5nSGVscGVyc1dlYlNlcnZlciA9IG5ldyBFeHByZXNzU2VydmVyV3JhcHBlcig5MDEwLCB1bmRlZmluZWQsIGNvbnRleHQubG9nZ2VyLCBcIkZvcm1zIGhlbHBlcnNcIik7XG4gICAgZm9ybVRlc3RpbmdIZWxwZXJzV2ViU2VydmVyLnJlZ2lzdGVyU2lnbGV0b25Db250cm9sbGVyKFxuICAgICAgICBuZXcgRm9ybXNIZWxwZXJDb250cm9sbGVyKHsgZnJvbnRFbmREZXZNb2RlOiBvcHRpb25zLmRldmVsb3BtZW50TW9kZSB9KVxuICAgICk7XG5cbiAgICBjb25zdCB3ZWJTZXJ2ZXIgPSBuZXcgRXhwcmVzc1NlcnZlcldyYXBwZXIoOTAwMCwgOTA0MywgY29udGV4dC5sb2dnZXIpO1xuICAgIGlmICghb3B0aW9ucy5kaXNhYmxlQ2xpZW50T3ZlcnJpZGUpIHtcbiAgICAgICAgd2ViU2VydmVyLnJlZ2lzdGVyU2lnbGV0b25Db250cm9sbGVyKG5ldyBCdWlsZExvZ3NXZWJzb2NrZXRDb250cm9sbGVyKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1aWxkU2VydmVyQnVpbGRGb3Jtc0NvbnRyb2xsZXIgPSBuZXcgQnVpbGRTZXJ2ZXJCdWlsZEZvcm1zQ29udHJvbGxlcihcbiAgICAgICAgYWxsRmFybUNvbmZpZyxcbiAgICAgICAgY2FuZHlNb2R1bGVzRGlyZWN0b3J5LFxuICAgICAgICB0cnVlLFxuICAgICAgICBlbmdpbmVEaXJlY3RvcnksXG4gICAgICAgIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHlcbiAgICApO1xuICAgIHdlYlNlcnZlci5yZWdpc3RlclNpZ2xldG9uQ29udHJvbGxlcihidWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyKTtcbiAgICB3ZWJTZXJ2ZXIucmVnaXN0ZXJTaWdsZXRvbkNvbnRyb2xsZXIoXG4gICAgICAgIG5ldyBCdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyKGFsbEZhcm1Db25maWcsIGJ1aWxkU2VydmVyQnVpbGRGb3Jtc0NvbnRyb2xsZXIpXG4gICAgKTtcbiAgICB3ZWJTZXJ2ZXIucmVnaXN0ZXJTaWdsZXRvbkNvbnRyb2xsZXIobmV3IEJ1aWxkU2VydmVyRm9ybUluZm9Db250cm9sbGVyKGFsbEZhcm1Db25maWcsIHRydWUsIGZhbHNlKSk7XG5cbiAgICB3ZWJTZXJ2ZXIucmVnaXN0ZXJTaWdsZXRvbkNvbnRyb2xsZXIobmV3IEJ1aWxkU2VydmVyUHJlYnVpbHRSZXNvdXJjZXNDb250cm9sbGVyKCkpO1xuICAgIHdlYlNlcnZlci5yZWdpc3RlclNpZ2xldG9uQ29udHJvbGxlcihuZXcgQnVpbGRTZXJ2ZXJQdWJsaXNoZWRFbmdpbmVDb250cm9sbGVyKGNhbmR5TW9kdWxlc0RpcmVjdG9yeSkpO1xuICAgIHdlYlNlcnZlci5yZWdpc3RlclNpZ2xldG9uQ29udHJvbGxlcihcbiAgICAgICAgbmV3IEJ1aWxkU2VydmVyTG9jYWxTb3VyY2VzRW5naW5lQ29udHJvbGxlcihlbmdpbmVEaXJlY3RvcnksIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHkpXG4gICAgKTtcbiAgICB3ZWJTZXJ2ZXIucmVnaXN0ZXJTaWdsZXRvbkNvbnRyb2xsZXIoXG4gICAgICAgIG5ldyBCdWlsZFNlcnZlckNsaWVudEpzQ29udHJvbGxlcihlbmdpbmVEaXJlY3RvcnksIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHksIG9wdGlvbnMuZGlzYWJsZUNsaWVudE92ZXJyaWRlLCB7XG4gICAgICAgICAgICBmcm9udEVuZERldk1vZGU6IG9wdGlvbnMuZGV2ZWxvcG1lbnRNb2RlLFxuICAgICAgICB9KVxuICAgICk7XG4gICAgd2ViU2VydmVyLnJlZ2lzdGVyU2lnbGV0b25Db250cm9sbGVyKG5ldyBCdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNVcGRhdGVzQ29udHJvbGxlcihhbGxGYXJtQ29uZmlnKSk7XG4gICAgYXdhaXQgZm9ybVRlc3RpbmdIZWxwZXJzV2ViU2VydmVyLnN0YXJ0KCk7XG4gICAgYXdhaXQgd2ViU2VydmVyLnN0YXJ0KCk7XG4gICAgYXdhaXQgY29udGV4dC53YWl0Rm9yRXhpdCgpO1xuICAgIGF3YWl0IHdlYlNlcnZlci5zdG9wKCk7XG4gICAgYXdhaXQgZm9ybVRlc3RpbmdIZWxwZXJzV2ViU2VydmVyLnN0b3AoKTtcbn1cbiJdfQ==
|
|
98
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfVHlwaW5nVXRpbHMiLCJyZXF1aXJlIiwiX0V4cHJlc3NTZXJ2ZXJXcmFwcGVyIiwiX0Zvcm1zSGVscGVyQ29udHJvbGxlciIsIl9CdWlsZExvZ3NXZWJzb2NrZXRDb250cm9sbGVyIiwiX0J1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIiLCJfQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzVXBkYXRlc0NvbnRyb2xsZXIiLCJfQnVpbGRTZXJ2ZXJCdWlsZEZvcm1zQ29udHJvbGxlciIsIl9CdWlsZFNlcnZlckNsaWVudEpzQ29udHJvbGxlciIsIl9CdWlsZFNlcnZlckNsaWVudEpzRnJvbVJlc291cmNlc0NvbnRyb2xsZXIiLCJfQnVpbGRTZXJ2ZXJGb3JtSW5mb0NvbnRyb2xsZXIiLCJfQnVpbGRTZXJ2ZXJMb2NhbFNvdXJjZXNFbmdpbmVDb250cm9sbGVyIiwiX0J1aWxkU2VydmVyUHJlYnVpbHRSZXNvdXJjZXNDb250cm9sbGVyIiwiX0J1aWxkU2VydmVyUHVibGlzaGVkRW5naW5lQ29udHJvbGxlciIsInJ1bkJ1aWxkU2VydmVyIiwiY29udGV4dCIsIm9wdGlvbnMiLCJhbGxGYXJtQ29uZmlnIiwiZW5zdXJlQXJyYXlJc05vdEVtcHR5IiwiZW5naW5lRGlyZWN0b3J5IiwiY29uZiIsInVuZGVmaW5lZCIsIkVycm9yIiwiY2FuZHlNb2R1bGVzRGlyZWN0b3J5IiwiZm9ybVRlc3RpbmdIZWxwZXJzV2ViU2VydmVyIiwiRXhwcmVzc1NlcnZlcldyYXBwZXIiLCJsb2dnZXIiLCJyZWdpc3RlclNpZ2xldG9uQ29udHJvbGxlciIsIkZvcm1zSGVscGVyQ29udHJvbGxlciIsImZyb250RW5kRGV2TW9kZSIsImRldmVsb3BtZW50TW9kZSIsIndlYlNlcnZlciIsImRpc2FibGVDbGllbnRPdmVycmlkZSIsIkJ1aWxkTG9nc1dlYnNvY2tldENvbnRyb2xsZXIiLCJidWlsZEZvcm1zQ29udHJvbGxlciIsIkJ1aWxkU2VydmVyQnVpbGRGb3Jtc0NvbnRyb2xsZXIiLCJidWlsZERlYnVnT25seSIsIm5pZ2h0bHkiLCJCdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyIiwiQnVpbGRTZXJ2ZXJGb3JtSW5mb0NvbnRyb2xsZXIiLCJCdWlsZFNlcnZlclByZWJ1aWx0UmVzb3VyY2VzQ29udHJvbGxlciIsIkJ1aWxkU2VydmVyUHVibGlzaGVkRW5naW5lQ29udHJvbGxlciIsIkJ1aWxkU2VydmVyQ2xpZW50SnNGcm9tUmVzb3VyY2VzQ29udHJvbGxlciIsIkJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc1VwZGF0ZXNDb250cm9sbGVyIiwic3RhcnQiLCJ3YWl0Rm9yRXhpdCIsInN0b3AiLCJydW5EZXZCdWlsZFNlcnZlciIsImJ1aWxkU2VydmVyQnVpbGRGb3Jtc0NvbnRyb2xsZXIiLCJCdWlsZFNlcnZlckxvY2FsU291cmNlc0VuZ2luZUNvbnRyb2xsZXIiLCJCdWlsZFNlcnZlckNsaWVudEpzQ29udHJvbGxlciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SdW5CdWlsZFNlcnZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYXJtQ29uZmlnIH0gZnJvbSBcIlRvb2xzL3NyYy9DYW5keUNMSVwiO1xuXG5pbXBvcnQgeyBlbnN1cmVBcnJheUlzTm90RW1wdHkgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEV4cHJlc3NTZXJ2ZXJXcmFwcGVyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9FeHByZXNzV3JhcHBlci9FeHByZXNzU2VydmVyV3JhcHBlclwiO1xuaW1wb3J0IHsgRm9ybXNIZWxwZXJDb250cm9sbGVyIH0gZnJvbSBcIi4uL0Zvcm1zSGVscGVyL0Zvcm1zSGVscGVyQ29udHJvbGxlclwiO1xuXG5pbXBvcnQgeyBCdWlsZExvZ3NXZWJzb2NrZXRDb250cm9sbGVyIH0gZnJvbSBcIi4vQnVpbGRMb2dzV2Vic29ja2V0Q29udHJvbGxlclwiO1xuaW1wb3J0IHsgQnVpbGRTZXJ2ZXJPcHRpb25zLCBEZXZCdWlsZFNlcnZlck9wdGlvbnMgfSBmcm9tIFwiLi9CdWlsZFNlcnZlclNlcnZlck9wdGlvbnNcIjtcbmltcG9ydCB7IEJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIgfSBmcm9tIFwiLi9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBCdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNVcGRhdGVzQ29udHJvbGxlciB9IGZyb20gXCIuL1Jlc291cmNlc0NvbnRyb2xsZXJzL0J1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc1VwZGF0ZXNDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBCdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyIH0gZnJvbSBcIi4vUmVzb3VyY2VzQ29udHJvbGxlcnMvQnVpbGRTZXJ2ZXJCdWlsZEZvcm1zQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgQnVpbGRTZXJ2ZXJDbGllbnRKc0NvbnRyb2xsZXIgfSBmcm9tIFwiLi9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckNsaWVudEpzQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgQnVpbGRTZXJ2ZXJDbGllbnRKc0Zyb21SZXNvdXJjZXNDb250cm9sbGVyIH0gZnJvbSBcIi4vUmVzb3VyY2VzQ29udHJvbGxlcnMvQnVpbGRTZXJ2ZXJDbGllbnRKc0Zyb21SZXNvdXJjZXNDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBCdWlsZFNlcnZlckZvcm1JbmZvQ29udHJvbGxlciB9IGZyb20gXCIuL1Jlc291cmNlc0NvbnRyb2xsZXJzL0J1aWxkU2VydmVyRm9ybUluZm9Db250cm9sbGVyXCI7XG5pbXBvcnQgeyBCdWlsZFNlcnZlckxvY2FsU291cmNlc0VuZ2luZUNvbnRyb2xsZXIgfSBmcm9tIFwiLi9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckxvY2FsU291cmNlc0VuZ2luZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IEJ1aWxkU2VydmVyUHJlYnVpbHRSZXNvdXJjZXNDb250cm9sbGVyIH0gZnJvbSBcIi4vUmVzb3VyY2VzQ29udHJvbGxlcnMvQnVpbGRTZXJ2ZXJQcmVidWlsdFJlc291cmNlc0NvbnRyb2xsZXJcIjtcbmltcG9ydCB7IEJ1aWxkU2VydmVyUHVibGlzaGVkRW5naW5lQ29udHJvbGxlciB9IGZyb20gXCIuL1Jlc291cmNlc0NvbnRyb2xsZXJzL0J1aWxkU2VydmVyUHVibGlzaGVkRW5naW5lQ29udHJvbGxlclwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQnVpbGRTZXJ2ZXIoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBCdWlsZFNlcnZlck9wdGlvbnMsXG4gICAgYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBlbnN1cmVBcnJheUlzTm90RW1wdHkoYWxsRmFybUNvbmZpZyk7XG5cbiAgICBsZXQgZW5naW5lRGlyZWN0b3J5ID0gXCJcIjtcbiAgICBmb3IgKGNvbnN0IGNvbmYgb2YgYWxsRmFybUNvbmZpZykge1xuICAgICAgICBpZiAoY29uZi5lbmdpbmVEaXJlY3RvcnkgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBlbmdpbmVEaXJlY3RvcnkgPSBjb25mLmVuZ2luZURpcmVjdG9yeTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChlbmdpbmVEaXJlY3RvcnkgPT09IFwiXCIpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJBbGwgRW5naW5lIGRpcmVjdG9yeSBpcyBlbXB0eVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBjYW5keU1vZHVsZXNEaXJlY3RvcnkgPSBhbGxGYXJtQ29uZmlnWzBdLmNhbmR5TW9kdWxlc0RpcmVjdG9yeTtcblxuICAgIGNvbnN0IGZvcm1UZXN0aW5nSGVscGVyc1dlYlNlcnZlciA9IG5ldyBFeHByZXNzU2VydmVyV3JhcHBlcig5MDEwLCB1bmRlZmluZWQsIGNvbnRleHQubG9nZ2VyLCBcIkZvcm1zIGhlbHBlcnNcIik7XG4gICAgZm9ybVRlc3RpbmdIZWxwZXJzV2ViU2VydmVyLnJlZ2lzdGVyU2lnbGV0b25Db250cm9sbGVyKFxuICAgICAgICBuZXcgRm9ybXNIZWxwZXJDb250cm9sbGVyKHsgZnJvbnRFbmREZXZNb2RlOiBvcHRpb25zLmRldmVsb3BtZW50TW9kZSB9KVxuICAgICk7XG5cbiAgICBjb25zdCB3ZWJTZXJ2ZXIgPSBuZXcgRXhwcmVzc1NlcnZlcldyYXBwZXIoOTAwMCwgOTA0MywgY29udGV4dC5sb2dnZXIpO1xuICAgIGlmICghb3B0aW9ucy5kaXNhYmxlQ2xpZW50T3ZlcnJpZGUpIHtcbiAgICAgICAgd2ViU2VydmVyLnJlZ2lzdGVyU2lnbGV0b25Db250cm9sbGVyKG5ldyBCdWlsZExvZ3NXZWJzb2NrZXRDb250cm9sbGVyKCkpO1xuICAgIH1cbiAgICBjb25zdCBidWlsZEZvcm1zQ29udHJvbGxlciA9IG5ldyBCdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyKFxuICAgICAgICBhbGxGYXJtQ29uZmlnLFxuICAgICAgICBjYW5keU1vZHVsZXNEaXJlY3RvcnksXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBlbmdpbmVEaXJlY3RvcnksXG4gICAgICAgIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHksXG4gICAgICAgIG9wdGlvbnMubmlnaHRseVxuICAgICk7XG5cbiAgICB3ZWJTZXJ2ZXIucmVnaXN0ZXJTaWdsZXRvbkNvbnRyb2xsZXIoYnVpbGRGb3Jtc0NvbnRyb2xsZXIpO1xuICAgIHdlYlNlcnZlci5yZWdpc3RlclNpZ2xldG9uQ29udHJvbGxlcihcbiAgICAgICAgbmV3IEJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIoYWxsRmFybUNvbmZpZywgYnVpbGRGb3Jtc0NvbnRyb2xsZXIpXG4gICAgKTtcblxuICAgIHdlYlNlcnZlci5yZWdpc3RlclNpZ2xldG9uQ29udHJvbGxlcihuZXcgQnVpbGRTZXJ2ZXJGb3JtSW5mb0NvbnRyb2xsZXIoYWxsRmFybUNvbmZpZywgZmFsc2UsIG9wdGlvbnMubmlnaHRseSkpO1xuXG4gICAgd2ViU2VydmVyLnJlZ2lzdGVyU2lnbGV0b25Db250cm9sbGVyKG5ldyBCdWlsZFNlcnZlclByZWJ1aWx0UmVzb3VyY2VzQ29udHJvbGxlcigpKTtcbiAgICB3ZWJTZXJ2ZXIucmVnaXN0ZXJTaWdsZXRvbkNvbnRyb2xsZXIobmV3IEJ1aWxkU2VydmVyUHVibGlzaGVkRW5naW5lQ29udHJvbGxlcihjYW5keU1vZHVsZXNEaXJlY3RvcnkpKTtcbiAgICB3ZWJTZXJ2ZXIucmVnaXN0ZXJTaWdsZXRvbkNvbnRyb2xsZXIoXG4gICAgICAgIG5ldyBCdWlsZFNlcnZlckNsaWVudEpzRnJvbVJlc291cmNlc0NvbnRyb2xsZXIob3B0aW9ucy5kaXNhYmxlQ2xpZW50T3ZlcnJpZGUsIHtcbiAgICAgICAgICAgIGZyb250RW5kRGV2TW9kZTogb3B0aW9ucy5kZXZlbG9wbWVudE1vZGUsXG4gICAgICAgIH0pXG4gICAgKTtcbiAgICB3ZWJTZXJ2ZXIucmVnaXN0ZXJTaWdsZXRvbkNvbnRyb2xsZXIobmV3IEJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc1VwZGF0ZXNDb250cm9sbGVyKGFsbEZhcm1Db25maWcpKTtcbiAgICBhd2FpdCBmb3JtVGVzdGluZ0hlbHBlcnNXZWJTZXJ2ZXIuc3RhcnQoKTtcbiAgICBhd2FpdCB3ZWJTZXJ2ZXIuc3RhcnQoKTtcbiAgICBhd2FpdCBjb250ZXh0LndhaXRGb3JFeGl0KCk7XG4gICAgYXdhaXQgd2ViU2VydmVyLnN0b3AoKTtcbiAgICBhd2FpdCBmb3JtVGVzdGluZ0hlbHBlcnNXZWJTZXJ2ZXIuc3RvcCgpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuRGV2QnVpbGRTZXJ2ZXIoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBEZXZCdWlsZFNlcnZlck9wdGlvbnMsXG4gICAgYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoYWxsRmFybUNvbmZpZ1swXSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJDb25maWcgY2FuJ3QgYmUgbGVuZ3RoIDBcIik7XG4gICAgfVxuXG4gICAgbGV0IGVuZ2luZURpcmVjdG9yeSA9IFwiXCI7XG4gICAgZm9yIChjb25zdCBjb25mIG9mIGFsbEZhcm1Db25maWcpIHtcbiAgICAgICAgaWYgKGNvbmYuZW5naW5lRGlyZWN0b3J5ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZW5naW5lRGlyZWN0b3J5ID0gY29uZi5lbmdpbmVEaXJlY3Rvcnk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW5naW5lRGlyZWN0b3J5ID09PSBcIlwiKSB7XG4gICAgICAgIHRocm93IEVycm9yKFwiQWxsIEVuZ2luZSBkaXJlY3RvcnkgaXMgZW1wdHlcIik7XG4gICAgfVxuXG4gICAgY29uc3QgY2FuZHlNb2R1bGVzRGlyZWN0b3J5ID0gYWxsRmFybUNvbmZpZ1swXS5jYW5keU1vZHVsZXNEaXJlY3Rvcnk7XG5cbiAgICBjb25zdCBmb3JtVGVzdGluZ0hlbHBlcnNXZWJTZXJ2ZXIgPSBuZXcgRXhwcmVzc1NlcnZlcldyYXBwZXIoOTAxMCwgdW5kZWZpbmVkLCBjb250ZXh0LmxvZ2dlciwgXCJGb3JtcyBoZWxwZXJzXCIpO1xuICAgIGZvcm1UZXN0aW5nSGVscGVyc1dlYlNlcnZlci5yZWdpc3RlclNpZ2xldG9uQ29udHJvbGxlcihcbiAgICAgICAgbmV3IEZvcm1zSGVscGVyQ29udHJvbGxlcih7IGZyb250RW5kRGV2TW9kZTogb3B0aW9ucy5kZXZlbG9wbWVudE1vZGUgfSlcbiAgICApO1xuXG4gICAgY29uc3Qgd2ViU2VydmVyID0gbmV3IEV4cHJlc3NTZXJ2ZXJXcmFwcGVyKDkwMDAsIDkwNDMsIGNvbnRleHQubG9nZ2VyKTtcbiAgICBpZiAoIW9wdGlvbnMuZGlzYWJsZUNsaWVudE92ZXJyaWRlKSB7XG4gICAgICAgIHdlYlNlcnZlci5yZWdpc3RlclNpZ2xldG9uQ29udHJvbGxlcihuZXcgQnVpbGRMb2dzV2Vic29ja2V0Q29udHJvbGxlcigpKTtcbiAgICB9XG5cbiAgICBjb25zdCBidWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyID0gbmV3IEJ1aWxkU2VydmVyQnVpbGRGb3Jtc0NvbnRyb2xsZXIoXG4gICAgICAgIGFsbEZhcm1Db25maWcsXG4gICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgZW5naW5lRGlyZWN0b3J5LFxuICAgICAgICBvcHRpb25zLmJ1aWxkRGVidWdPbmx5XG4gICAgKTtcbiAgICB3ZWJTZXJ2ZXIucmVnaXN0ZXJTaWdsZXRvbkNvbnRyb2xsZXIoYnVpbGRTZXJ2ZXJCdWlsZEZvcm1zQ29udHJvbGxlcik7XG4gICAgd2ViU2VydmVyLnJlZ2lzdGVyU2lnbGV0b25Db250cm9sbGVyKFxuICAgICAgICBuZXcgQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzQ29udHJvbGxlcihhbGxGYXJtQ29uZmlnLCBidWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyKVxuICAgICk7XG4gICAgd2ViU2VydmVyLnJlZ2lzdGVyU2lnbGV0b25Db250cm9sbGVyKG5ldyBCdWlsZFNlcnZlckZvcm1JbmZvQ29udHJvbGxlcihhbGxGYXJtQ29uZmlnLCB0cnVlLCBmYWxzZSkpO1xuXG4gICAgd2ViU2VydmVyLnJlZ2lzdGVyU2lnbGV0b25Db250cm9sbGVyKG5ldyBCdWlsZFNlcnZlclByZWJ1aWx0UmVzb3VyY2VzQ29udHJvbGxlcigpKTtcbiAgICB3ZWJTZXJ2ZXIucmVnaXN0ZXJTaWdsZXRvbkNvbnRyb2xsZXIobmV3IEJ1aWxkU2VydmVyUHVibGlzaGVkRW5naW5lQ29udHJvbGxlcihjYW5keU1vZHVsZXNEaXJlY3RvcnkpKTtcbiAgICB3ZWJTZXJ2ZXIucmVnaXN0ZXJTaWdsZXRvbkNvbnRyb2xsZXIoXG4gICAgICAgIG5ldyBCdWlsZFNlcnZlckxvY2FsU291cmNlc0VuZ2luZUNvbnRyb2xsZXIoZW5naW5lRGlyZWN0b3J5LCBvcHRpb25zLmJ1aWxkRGVidWdPbmx5KVxuICAgICk7XG4gICAgd2ViU2VydmVyLnJlZ2lzdGVyU2lnbGV0b25Db250cm9sbGVyKFxuICAgICAgICBuZXcgQnVpbGRTZXJ2ZXJDbGllbnRKc0NvbnRyb2xsZXIoZW5naW5lRGlyZWN0b3J5LCBvcHRpb25zLmJ1aWxkRGVidWdPbmx5LCBvcHRpb25zLmRpc2FibGVDbGllbnRPdmVycmlkZSwge1xuICAgICAgICAgICAgZnJvbnRFbmREZXZNb2RlOiBvcHRpb25zLmRldmVsb3BtZW50TW9kZSxcbiAgICAgICAgfSlcbiAgICApO1xuICAgIHdlYlNlcnZlci5yZWdpc3RlclNpZ2xldG9uQ29udHJvbGxlcihuZXcgQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzVXBkYXRlc0NvbnRyb2xsZXIoYWxsRmFybUNvbmZpZykpO1xuICAgIGF3YWl0IGZvcm1UZXN0aW5nSGVscGVyc1dlYlNlcnZlci5zdGFydCgpO1xuICAgIGF3YWl0IHdlYlNlcnZlci5zdGFydCgpO1xuICAgIGF3YWl0IGNvbnRleHQud2FpdEZvckV4aXQoKTtcbiAgICBhd2FpdCB3ZWJTZXJ2ZXIuc3RvcCgpO1xuICAgIGF3YWl0IGZvcm1UZXN0aW5nSGVscGVyc1dlYlNlcnZlci5zdG9wKCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQSxJQUFBQSxZQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFB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
|