@kontur.candy/tools 2.210.1 → 2.212.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/distr/Common/AsyncUtils.js +1 -1
- package/distr/Common/AutoValidationUtils.js +1 -1
- package/distr/Common/CandyApiClient/CandyApiClient.js +1 -1
- package/distr/Common/CandyApiClient/CandyApiClientContext.js +1 -1
- 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 -1
- package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js +1 -1
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js +1 -1
- package/distr/Common/CandyApiClient/ICandyApiClient.js +1 -1
- package/distr/Common/CandyApiClient/IsBuffer.js +1 -1
- 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 +1 -1
- 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 -1
- package/distr/Common/CandyApiClient/Types/DraftFullId.js +1 -1
- package/distr/Common/CandyApiClient/Types/ErrorLog/CandyPopdProtocol.js +1 -1
- package/distr/Common/CandyApiClient/Types/ErrorLog/ResolveInnerPathRequest.js +1 -1
- package/distr/Common/CandyApiClient/Types/ErrorLog/ResolvePathResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js +1 -1
- package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js +1 -1
- 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 +1 -1
- package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js +1 -1
- 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 +1 -1
- package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js +1 -1
- 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 +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/AndExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CompareExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CountCallExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/DecimalConstantExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/InstanceIdCallExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/NotExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/OrExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringConstantExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringMatchExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/SumCallExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/TernaryExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/ValueReferenceExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryRequest.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SelectClause.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SortingRule.js +1 -1
- 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 +1 -1
- package/distr/Common/CollectionUtils.js +1 -1
- package/distr/Common/CommonConstants/SectionNames.js +1 -1
- package/distr/Common/Comparers.js +1 -1
- package/distr/Common/EmotionStorybookWorkaroundViaAliases.js +1 -1
- package/distr/Common/EndPoints.js +1 -1
- package/distr/Common/Enums/ButtonSettingsTypeEnum.js +1 -1
- package/distr/Common/Errors.js +1 -1
- package/distr/Common/ExtractGFVPath/ExtractGFVPath.js +10 -1
- package/distr/Common/ExtractGFVPath/ExtractGFVPath.js.map +1 -1
- package/distr/Common/FSPrinterClient/FSPrinterClient.js +1 -1
- package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js +1 -1
- package/distr/Common/FSPrinterClient/IFSPrinterClient.js +1 -1
- package/distr/Common/FormActionHandlers/ContextualActionNames.js +1 -1
- package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js +1 -1
- package/distr/Common/FormPathUtils.js +1 -1
- package/distr/Common/Funcs.js +1 -1
- package/distr/Common/GFV.js +1 -1
- package/distr/Common/GetRngSchemaFileExtension.js +1 -1
- package/distr/Common/Hooks/UseLocalStorage.js +1 -1
- package/distr/Common/HttpClient/AuthenticationMode.js +1 -1
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js +1 -1
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js +1 -1
- 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 +1 -1
- package/distr/Common/HttpClient/HttpClient.js +1 -1
- package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js +1 -1
- package/distr/Common/HttpClient/IHttpClient.js +1 -1
- package/distr/Common/IndentString.js +1 -1
- package/distr/Common/IntRangeUtils.js +1 -1
- package/distr/Common/IterableUtils.js +1 -1
- package/distr/Common/KCLangRuntimeUtils.js +1 -1
- package/distr/Common/ModelPath/AbsoluteModelFieldPath.js +1 -1
- package/distr/Common/ModelPath/BuildIterationSequence.js +1 -1
- package/distr/Common/ModelPath/EachCurrentCollision.js +1 -1
- package/distr/Common/ModelPath/IEquatable.js +1 -1
- package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js +1 -1
- package/distr/Common/ModelPath/Map/Map2.js +1 -1
- package/distr/Common/ModelPath/Map/ModelPathMap.js +1 -1
- package/distr/Common/ModelPath/ModelPath.js +1 -1
- package/distr/Common/ModelPath/ModelPathBuilder.js +1 -1
- package/distr/Common/ModelPath/ModelPathHelper.js +1 -1
- package/distr/Common/ModelPath/PathMatcher.js +1 -1
- package/distr/Common/ModelPath/PathSplitHelper.js +1 -1
- package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js +1 -1
- package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js +1 -1
- package/distr/Common/ModelPath/Set/ModelPathSet.js +1 -1
- package/distr/Common/ModelPath/Set/Set2.js +1 -1
- package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js +1 -1
- package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js +1 -1
- package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js +1 -1
- package/distr/Common/NidusClient/Fakes/FakeNidusClient.js +1 -1
- package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js +1 -1
- package/distr/Common/NidusClient/INidusClient.js +1 -1
- package/distr/Common/NidusClient/NidusClientContext.js +1 -1
- package/distr/Common/NidusClient/NidusClientImpl.js +1 -1
- package/distr/Common/PathConstants.js +1 -1
- package/distr/Common/PicklistApiClient/IPicklistApiClient.js +1 -1
- package/distr/Common/PicklistApiClient/PicklistApiClient.js +1 -1
- package/distr/Common/PicklistApiClient/PicklistRequestV2Builder.js +1 -1
- package/distr/Common/PicklistApiClient/Serializers/DigestFilterColumnSerializer.js +1 -1
- package/distr/Common/PicklistApiClient/Serializers/DigestLogicalFilterSerializer.js +1 -1
- package/distr/Common/PicklistApiClient/Types/PicklistRequestV2.js +1 -1
- package/distr/Common/PicklistApiClient/Types/PicklistResultV2.js +1 -1
- package/distr/Common/RngSchemeTypes/types.js +1 -1
- package/distr/Common/StringArrayKey.js +1 -1
- package/distr/Common/TextExtractor/TextExtractorTypes.js +1 -1
- package/distr/Common/TypingUtils.js +1 -1
- package/distr/Common/UUID.js +1 -1
- package/distr/Common/UseAsyncEffect.js +1 -1
- package/distr/Common/UseShowOnce.js +1 -1
- package/distr/Common/UseTypedSelector.js +1 -1
- package/distr/Common/WellKnownDirectories.js +1 -1
- package/distr/Common/hashUtils.js +1 -1
- package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js +1 -1
- package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js +1 -1
- package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js +1 -1
- package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +1 -1
- package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js +1 -1
- package/distr/Tools/src/BuildTasks/Engine/EngineSource.js +1 -1
- package/distr/Tools/src/BuildTasks/EngineStructureUtils.js +1 -1
- package/distr/Tools/src/BuildTasks/EngineVersionUtils.js +1 -1
- package/distr/Tools/src/BuildTasks/FSTask.js +1 -1
- package/distr/Tools/src/BuildTasks/Form/CompileForm.js +1 -1
- package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +1 -1
- package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js +1 -1
- package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +1 -1
- package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js +1 -1
- package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js +1 -1
- package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js +1 -1
- package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +1 -1
- package/distr/Tools/src/BuildTasks/ReadFormSource.js +1 -1
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +1 -1
- package/distr/Tools/src/BuildTasks/Version.js +1 -1
- package/distr/Tools/src/BuildTasks/WriteFormMeta.js +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/ClearSourceMapForProduction.js +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerCandyWidgetController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/CandyWidgetDevServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorkerFactory.js +1 -1
- 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 +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js +1 -1
- 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 -1
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +1 -1
- package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js +1 -1
- package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +1 -1
- package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js +1 -1
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/fetchfunctions/{gfv}.fetchfunctions.js +1 -2
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js +1 -1
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js +1 -1
- package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js +1 -1
- package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +1 -1
- package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js +1 -1
- package/distr/Tools/src/CLICommands/Localization/RunLocalization.js +1 -1
- package/distr/Tools/src/CLICommands/RenameFiles/RenameFilesOptions.js +1 -1
- package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js +1 -1
- package/distr/Tools/src/CLICommands/SugarExtractor/ExtractTextsFromSugarController.js +1 -1
- package/distr/Tools/src/CLICommands/SugarExtractor/Utils.js +1 -1
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +1 -1
- package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js +1 -1
- package/distr/Tools/src/CandyCLI.js +1 -1
- package/distr/Tools/src/CheckNodeJsVersion.js +1 -1
- package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js +1 -1
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js +1 -1
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js +1 -1
- package/distr/Tools/src/Commons/ErrorUntyped.js +1 -1
- package/distr/Tools/src/Commons/EventObject.js +1 -1
- package/distr/Tools/src/Commons/ExecUtils.js +1 -1
- package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js +1 -1
- package/distr/Tools/src/Commons/FormGlobsUtils.js +1 -1
- package/distr/Tools/src/Commons/FormLocationInfo.js +1 -1
- package/distr/Tools/src/Commons/FsUtils.js +1 -1
- package/distr/Tools/src/Commons/GetCpuLimits.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js +1 -1
- package/distr/Tools/src/Commons/Locks/Lock.js +1 -1
- package/distr/Tools/src/Commons/Locks/LockHandle.js +1 -1
- package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js +1 -1
- package/distr/Tools/src/Commons/Logging/ELKLogger.js +1 -1
- package/distr/Tools/src/Commons/Logging/ILogger.js +1 -1
- package/distr/Tools/src/Commons/Logging/InMemoryLogger.js +1 -1
- package/distr/Tools/src/Commons/Logging/Logger.js +1 -1
- package/distr/Tools/src/Commons/Logging/StaticLogger.js +1 -1
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js +1 -2
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js +1 -1
- package/distr/Tools/src/Commons/PathPattern.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/AggregatedError.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/BuildTask.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/FixedDirectoryEntriesProducer.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/Observe.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js +1 -1
- package/distr/Tools/src/Commons/TimingUtils.js +1 -1
- package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +1 -1
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +2 -2
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js.map +1 -1
- package/distr/Tools/src/GenerateReadMe.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
- package/distr/Tools/src/Options/CandyToolOptions.js +1 -1
- package/distr/Tools/src/ReadFarmConfig.js +1 -1
- package/distr/Tools/src/SelfUpdate.js +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +100 -96
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +23 -19
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js +1 -1
- package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js +1 -1
- package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js +1 -1
- package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js +1 -1
- package/package.json +3 -2
|
@@ -665,4 +665,4 @@ function delay(timeout) {
|
|
|
665
665
|
function isNotNullOrUndefined(input) {
|
|
666
666
|
return input != undefined;
|
|
667
667
|
}
|
|
668
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcExpbWl0IiwiX0l0ZXJhYmxlVXRpbHMiLCJfVHlwaW5nVXRpbHMiLCJfR2V0Q3B1TGltaXRzIiwiX0FnZ3JlZ2F0ZWRFcnJvciIsIm5vb3AiLCJDaGFpbmFibGVWYWx1ZVByb2R1Y2VyIiwiY29uc3RydWN0b3IiLCJlcnJvckxpc3RlbmVycyIsIm9uTmV4dCIsIl9saXN0ZW5lciIsIkVycm9yIiwib25FcnJvciIsImxpc3RlbmVyIiwicHVzaCIsImluZGV4IiwiaW5kZXhPZiIsInNwbGljZSIsImN1cnJlbnRWYWx1ZSIsInRyYW5zZm9ybSIsInRyYW5zZm9ybUZ1bmN0aW9uIiwiVHJhbnNmb3JtVmFsdWVQcm9kdWNlciIsImRvIiwiYWN0aW9uIiwiRXhlY3V0ZU9uVmFsdWVQcm9kdWNlciIsImNoYWluV2l0aCIsIm5leHRJdGVtRmFjdG9yeSIsImF0dGFjaCIsImF0dGFjaEZhY3RvcnkiLCJqb2luVmFsdWVzIiwiZXZhbHVhdGVBdHRhY2hLZXkiLCJBdHRhY2hWYWx1ZVByb2R1Y2VyIiwic2tpcFVwZGF0ZXNVbnRpbE5leHRDb21wbGV0ZWQiLCJTa2lwVXBkYXRlc1VudGlsTmV4dENvbXBsZXRlZFByb2R1Y2VyIiwic3BsaXRUb0NoYWlucyIsInNwbGl0RnVuY3Rpb24iLCJnZXRLZXkiLCJmYWN0b3J5IiwiU3BsaXRUb0NoYWluc1ZhbHVlUHJvZHVjZXIiLCJzcGxpdFRvUGFyYWxsZWxDaGFpbnMiLCJQYXJhbGxlbFNwbGl0VG9DaGFpbnNWYWx1ZVByb2R1Y2VyIiwib2JzZXJ2ZSIsImJlZ2luT2JzZXJ2ZSIsImRldGFjaExpc3RlbmVyIiwiZW5kT2JzZXJ2ZSIsImVtaXRFcnJvciIsImVycm9yIiwiZXJyb3JPYmplY3QiLCJlcnJvckxpc3RlbmVyIiwiZXhwb3J0cyIsIk9ic2VydmFibGVWYWx1ZVByb2R1Y2VyQmFzZSIsImFyZ3MiLCJsaXN0ZW5lcnMiLCJnZXRDdXJyZW50VmFsdWUiLCJiZWdpbkxpc3RlbmluZyIsInN0b3BMaXN0ZW5pbmciLCJlbWl0VXBkYXRlIiwidmFsdWUiLCJub3RpZnlBbGxMaXN0ZW5lcnNBbmRXYWl0Rm9yQ29tcGxldGUiLCJuZXh0VmFsdWUiLCJwYXJlbnQiLCJsYXN0QXR0YWNoS2V5IiwiYXR0YWNoZWRQcm9kdWNlciIsImRldGFjaFBhcmVudExpc3RlbmVyIiwiZGV0YWNoQXR0YWNoZWRMaXN0ZW5lciIsImxhc3RBdHRhY2hlZFZhbHVlIiwibGFzdFBhcmVudFZhbHVlIiwiYXdhaXRpbmdMYXN0QXR0YWNoZWRWYWx1ZSIsImlzSW5PYnNlcnZlU3RhdGUiLCJoYW5kbGVDaGFuZ2VBdHRhY2hlZFZhbHVlIiwiYXR0YWNoZWRWYWx1ZSIsInVuZGVmaW5lZCIsImVtaXROZXh0VmFsdWUiLCJoYW5kbGVDaGFuZ2VQYXJlbnRWYWx1ZSIsInBhcmVudFZhbHVlIiwiYXR0YWNoS2V5IiwiZGVsYXkiLCJ4IiwibGVuZ3RoIiwiZSIsImNvbnNvbGUiLCJsb2ciLCJjaGFpbnMiLCJoYW5kbGVDaGFuZ2VQYXJlbnRDaGFpbiIsImtleSIsImNoYWluVmFsdWUiLCJsYXN0VmFsdWUiLCJlbWl0VmFsdWUiLCJPYmplY3QiLCJ2YWx1ZXMiLCJtYXAiLCJmaWx0ZXIiLCJpc05vdE51bGxPclVuZGVmaW5lZCIsImhhbmRsZUNoYW5nZVBhcmVudCIsImlucHV0IiwibmV4dFZhbHVlc01hcCIsInRvTWFwIiwibmV3S2V5cyIsIl8iLCJkaWZmZXJlbmNlIiwia2V5cyIsInJlbW92ZWRLZXlzIiwibmV3S2V5IiwiX25leHRWYWx1ZXNNYXAkbmV3S2V5IiwibmV3Q2hhaW4iLCJyZWplY3QiLCJuZXdDaGFpblZhbHVlIiwidmFsdWVQcm9kdWNlciIsInJlbW92ZWRLZXkiLCJyZW1vdmVkQ2hhaW4iLCJyZXN1bHQiLCJlcnJvcnMiLCJjaGlsZFZhbHVlUHJvZHVjZXIiLCJjaGlsZFZhbHVlIiwiQWdncmVnYXRlZEVycm9yIiwiaXRlcmF0ZVZhbHVlcyIsIl9uZXh0VmFsdWVzTWFwJG5ld0tleTIiLCJjcHVMaW1pdCIsImdldENwdUxpbWl0cyIsImNvbmN1cnJlbmN5TGltaXQiLCJwTGltaXQiLCJQcm9taXNlIiwiYWxsIiwiX3RoaXMkY2hhaW5zJGtleSIsImRldGFjaEZyb21QYXJlbnQiLCJuZXh0RW1pdFRvUHJvY2VzcyIsImN1cnJlbnRseVByb2Nlc3NpbmdFbWl0Iiwib25jZSIsInRpbWVvdXQiLCJyZXNvbHZlIiwic2V0VGltZW91dCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9Db21tb25zL1Rhc2tzQ29yZS9DaGFpbmFibGVWYWx1ZVByb2R1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcblxuaW1wb3J0IHsgUmVhc29uT3JFcnJvciB9IGZyb20gXCIuLi9FcnJvclVudHlwZWRcIjtcbmltcG9ydCB7IGl0ZXJhdGVWYWx1ZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL0l0ZXJhYmxlVXRpbHNcIjtcbmltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB7IGdldENwdUxpbWl0cyB9IGZyb20gXCIuLi9HZXRDcHVMaW1pdHNcIjtcblxuaW1wb3J0IHsgQWdncmVnYXRlZEVycm9yIH0gZnJvbSBcIi4vQWdncmVnYXRlZEVycm9yXCI7XG5pbXBvcnQgeyBEZXRhY2hMaXN0ZW5lciwgSVZhbHVlUHJvZHVjZXIsIFZhbHVlTGlzdGVuZXIgfSBmcm9tIFwiLi9CdWlsZFRhc2tcIjtcblxuYXN5bmMgZnVuY3Rpb24gbm9vcCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBlbXB0eSBmdW5jdGlvblxufVxuXG5leHBvcnQgY2xhc3MgQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxUPiBpbXBsZW1lbnRzIElWYWx1ZVByb2R1Y2VyPFQ+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVycm9yTGlzdGVuZXJzOiBBcnJheTxWYWx1ZUxpc3RlbmVyPEVycm9yPj4gPSBbXTtcblxuICAgIHB1YmxpYyBvbk5leHQoX2xpc3RlbmVyOiAobmV4dFZhbHVlOiBUKSA9PiBQcm9taXNlPHZvaWQ+KTogRGV0YWNoTGlzdGVuZXIge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBYnN0cmFjdEVycm9yXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkVycm9yKGxpc3RlbmVyOiAoZXJyb3I6IEVycm9yKSA9PiBQcm9taXNlPHZvaWQ+KTogRGV0YWNoTGlzdGVuZXIge1xuICAgICAgICB0aGlzLmVycm9yTGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmVycm9yTGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yTGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW50VmFsdWUoKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkFic3RyYWN0RXJyb3JcIik7XG4gICAgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybTxUTz4odHJhbnNmb3JtRnVuY3Rpb246IChpbnB1dDogVCkgPT4gUHJvbWlzZTxUTz4pOiBUcmFuc2Zvcm1WYWx1ZVByb2R1Y2VyPFQsIFRPPiB7XG4gICAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtVmFsdWVQcm9kdWNlcih0aGlzLCB0cmFuc2Zvcm1GdW5jdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGRvKGFjdGlvbjogKGlucHV0OiBUKSA9PiBQcm9taXNlPHZvaWQ+KTogRXhlY3V0ZU9uVmFsdWVQcm9kdWNlcjxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgRXhlY3V0ZU9uVmFsdWVQcm9kdWNlcih0aGlzLCBhY3Rpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaGFpbldpdGg8VE8sIFRWUCBleHRlbmRzIElWYWx1ZVByb2R1Y2VyPFRPPj4obmV4dEl0ZW1GYWN0b3J5OiAocHJldkl0ZW06IElWYWx1ZVByb2R1Y2VyPFQ+KSA9PiBUVlApOiBUVlAge1xuICAgICAgICByZXR1cm4gbmV4dEl0ZW1GYWN0b3J5KHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhdHRhY2g8VEEsIFRPID0gVD4oXG4gICAgICAgIGF0dGFjaEZhY3Rvcnk6ICh2YWx1ZTogVCkgPT4gUHJvbWlzZTxJVmFsdWVQcm9kdWNlcjxUQT4+LFxuICAgICAgICBqb2luVmFsdWVzPzogKG9yaWdpbmFsOiBULCBhdHRhY2hlZDogVEEpID0+IFByb21pc2U8VE8+LFxuICAgICAgICBldmFsdWF0ZUF0dGFjaEtleT86ICh2YWx1ZTogVCkgPT4gUHJvbWlzZTxzdHJpbmc+XG4gICAgKTogQXR0YWNoVmFsdWVQcm9kdWNlcjxULCBUQSwgVE8+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBBdHRhY2hWYWx1ZVByb2R1Y2VyKHRoaXMsIGF0dGFjaEZhY3RvcnksIGpvaW5WYWx1ZXMsIGV2YWx1YXRlQXR0YWNoS2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2tpcFVwZGF0ZXNVbnRpbE5leHRDb21wbGV0ZWQoKTogU2tpcFVwZGF0ZXNVbnRpbE5leHRDb21wbGV0ZWRQcm9kdWNlcjxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgU2tpcFVwZGF0ZXNVbnRpbE5leHRDb21wbGV0ZWRQcm9kdWNlcih0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3BsaXRUb0NoYWluczxUSSwgVE8+KFxuICAgICAgICBzcGxpdEZ1bmN0aW9uOiAoaW5wdXQ6IFQpID0+IFRJW10sXG4gICAgICAgIGdldEtleTogKGlucHV0OiBUSSkgPT4gc3RyaW5nLFxuICAgICAgICBmYWN0b3J5OiAoaW5wdXQ6IFRJKSA9PiBJVmFsdWVQcm9kdWNlcjxUTz5cbiAgICApOiBTcGxpdFRvQ2hhaW5zVmFsdWVQcm9kdWNlcjxULCBUSSwgVE8+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTcGxpdFRvQ2hhaW5zVmFsdWVQcm9kdWNlcih0aGlzLCBzcGxpdEZ1bmN0aW9uLCBnZXRLZXksIGZhY3RvcnkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzcGxpdFRvUGFyYWxsZWxDaGFpbnM8VEksIFRPPihcbiAgICAgICAgc3BsaXRGdW5jdGlvbjogKGlucHV0OiBUKSA9PiBUSVtdLFxuICAgICAgICBnZXRLZXk6IChpbnB1dDogVEkpID0+IHN0cmluZyxcbiAgICAgICAgZmFjdG9yeTogKGlucHV0OiBUSSkgPT4gSVZhbHVlUHJvZHVjZXI8VE8+IHwgUHJvbWlzZTxJVmFsdWVQcm9kdWNlcjxUTz4+XG4gICAgKTogUGFyYWxsZWxTcGxpdFRvQ2hhaW5zVmFsdWVQcm9kdWNlcjxULCBUSSwgVE8+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQYXJhbGxlbFNwbGl0VG9DaGFpbnNWYWx1ZVByb2R1Y2VyKHRoaXMsIHNwbGl0RnVuY3Rpb24sIGdldEtleSwgZmFjdG9yeSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIG9ic2VydmUobGlzdGVuZXI6IFZhbHVlTGlzdGVuZXI8VD4gPSBub29wKTogUHJvbWlzZTwoKSA9PiBQcm9taXNlPHZvaWQ+PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuYmVnaW5PYnNlcnZlKCk7XG4gICAgICAgIGF3YWl0IGxpc3RlbmVyKGF3YWl0IHRoaXMuY3VycmVudFZhbHVlKTtcbiAgICAgICAgY29uc3QgZGV0YWNoTGlzdGVuZXIgPSB0aGlzLm9uTmV4dChsaXN0ZW5lcik7XG4gICAgICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBkZXRhY2hMaXN0ZW5lcigpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbmRPYnNlcnZlKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGJlZ2luT2JzZXJ2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQWJzdHJhY3RFcnJvclwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZW5kT2JzZXJ2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQWJzdHJhY3RFcnJvclwiKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByb3RlY3RlZCBhc3luYyBlbWl0RXJyb3IoZXJyb3I6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBlcnJvck9iamVjdCA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihgJHtlcnJvcn1gKTtcbiAgICAgICAgZm9yIChjb25zdCBlcnJvckxpc3RlbmVyIG9mIHRoaXMuZXJyb3JMaXN0ZW5lcnMpIHtcbiAgICAgICAgICAgIGF3YWl0IGVycm9yTGlzdGVuZXIoZXJyb3JPYmplY3QpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgT2JzZXJ2YWJsZVZhbHVlUHJvZHVjZXJCYXNlPFQ+IGV4dGVuZHMgQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxUPiB7XG4gICAgcHVibGljIGdldCBjdXJyZW50VmFsdWUoKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEN1cnJlbnRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlzdGVuZXJzOiBBcnJheTxWYWx1ZUxpc3RlbmVyPFQ+PiA9IFtdO1xuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGdldEN1cnJlbnRWYWx1ZSgpOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQWJzdHJhY3RFcnJvclwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYmVnaW5PYnNlcnZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmJlZ2luTGlzdGVuaW5nKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGVuZE9ic2VydmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcExpc3RlbmluZygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBiZWdpbkxpc3RlbmluZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQWJzdHJhY3RFcnJvclwiKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgc3RvcExpc3RlbmluZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQWJzdHJhY3RFcnJvclwiKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgZW1pdFVwZGF0ZSh2YWx1ZTogVCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLm5vdGlmeUFsbExpc3RlbmVyc0FuZFdhaXRGb3JDb21wbGV0ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTmV4dChsaXN0ZW5lcjogKG5leHRWYWx1ZTogVCkgPT4gUHJvbWlzZTx2b2lkPik6IERldGFjaExpc3RlbmVyIHtcbiAgICAgICAgdGhpcy5saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgbm90aWZ5QWxsTGlzdGVuZXJzQW5kV2FpdEZvckNvbXBsZXRlKG5leHRWYWx1ZTogVCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIHRoaXMubGlzdGVuZXJzKSB7XG4gICAgICAgICAgICBhd2FpdCBsaXN0ZW5lcihuZXh0VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXR0YWNoVmFsdWVQcm9kdWNlcjxUSSwgVEEsIFRPPiBleHRlbmRzIENoYWluYWJsZVZhbHVlUHJvZHVjZXI8VE8+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhcmVudDogSVZhbHVlUHJvZHVjZXI8VEk+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXR0YWNoRmFjdG9yeTogKHZhbHVlOiBUSSkgPT4gUHJvbWlzZTxJVmFsdWVQcm9kdWNlcjxUQT4+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgam9pblZhbHVlczogKG9yaWdpbmFsOiBUSSwgYXR0YWNoZWQ6IFRBKSA9PiBQcm9taXNlPFRPPjtcbiAgICBwcml2YXRlIGxhc3RBdHRhY2hLZXk/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBhdHRhY2hlZFByb2R1Y2VyPzogSVZhbHVlUHJvZHVjZXI8VEE+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZXZhbHVhdGVBdHRhY2hLZXk6ICh2YWx1ZTogVEkpID0+IFByb21pc2U8c3RyaW5nPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpc3RlbmVyczogQXJyYXk8VmFsdWVMaXN0ZW5lcjxUTz4+ID0gW107XG4gICAgcHJpdmF0ZSBkZXRhY2hQYXJlbnRMaXN0ZW5lcj86IERldGFjaExpc3RlbmVyO1xuICAgIHByaXZhdGUgZGV0YWNoQXR0YWNoZWRMaXN0ZW5lcj86IERldGFjaExpc3RlbmVyO1xuICAgIHByaXZhdGUgbGFzdEF0dGFjaGVkVmFsdWU/OiBUQTtcbiAgICBwcml2YXRlIGxhc3RQYXJlbnRWYWx1ZT86IFRJO1xuICAgIHByaXZhdGUgYXdhaXRpbmdMYXN0QXR0YWNoZWRWYWx1ZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgaXNJbk9ic2VydmVTdGF0ZSA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwYXJlbnQ6IElWYWx1ZVByb2R1Y2VyPFRJPixcbiAgICAgICAgYXR0YWNoRmFjdG9yeTogKHZhbHVlOiBUSSkgPT4gUHJvbWlzZTxJVmFsdWVQcm9kdWNlcjxUQT4+LFxuICAgICAgICBqb2luVmFsdWVzPzogKG9yaWdpbmFsOiBUSSwgYXR0YWNoZWQ6IFRBKSA9PiBQcm9taXNlPFRPPixcbiAgICAgICAgZXZhbHVhdGVBdHRhY2hLZXk/OiAodmFsdWU6IFRJKSA9PiBQcm9taXNlPHN0cmluZz5cbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMuYXR0YWNoRmFjdG9yeSA9IGF0dGFjaEZhY3Rvcnk7XG4gICAgICAgIC8vINCvINC90LUg0LzQvtCz0YMg0L/QvtCx0LXQtNC40YLRjCDRgtC40L/QuNC30LDRhtC40Y4g0LIg0Y3RgtC+0Lwg0LzQtdGB0YLQtSwg0YHQu9C40YjQutC+0Lwg0LzQvdC+0LPQviDRgyDQvNC10L3RjyDQutC+0LTQsCDQv9C+0LvRg9GH0LDQtdGC0YHRj1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMuam9pblZhbHVlcyA9IGpvaW5WYWx1ZXMgfHwgKGFzeW5jIHggPT4geCk7XG4gICAgICAgIHRoaXMuZXZhbHVhdGVBdHRhY2hLZXkgPSBldmFsdWF0ZUF0dGFjaEtleSB8fCAoYXN5bmMgKCkgPT4gXCJTVEFUSUMtQVRUQUNILUtFWVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYmVnaW5PYnNlcnZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmlzSW5PYnNlcnZlU3RhdGUgPSB0cnVlO1xuICAgICAgICBhd2FpdCB0aGlzLnBhcmVudC5iZWdpbk9ic2VydmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZW5kT2JzZXJ2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wYXJlbnQuZW5kT2JzZXJ2ZSgpO1xuICAgICAgICBpZiAodGhpcy5hdHRhY2hlZFByb2R1Y2VyICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5hdHRhY2hlZFByb2R1Y2VyLmVuZE9ic2VydmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzSW5PYnNlcnZlU3RhdGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbnRWYWx1ZSgpOiBQcm9taXNlPFRPPiB7XG4gICAgICAgIGNvbnN0IGdldEN1cnJlbnRWYWx1ZSA9IGFzeW5jICgpOiBQcm9taXNlPFRPPiA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRWYWx1ZSA9IGF3YWl0IHRoaXMucGFyZW50LmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMubGFzdFBhcmVudFZhbHVlID0gcGFyZW50VmFsdWU7XG4gICAgICAgICAgICBjb25zdCBhdHRhY2hLZXkgPSBhd2FpdCB0aGlzLmV2YWx1YXRlQXR0YWNoS2V5KHBhcmVudFZhbHVlKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmF0dGFjaGVkUHJvZHVjZXIgIT0gdW5kZWZpbmVkICYmIHRoaXMuZGV0YWNoQXR0YWNoZWRMaXN0ZW5lciA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRldGFjaEF0dGFjaGVkTGlzdGVuZXIgPSB0aGlzLmF0dGFjaGVkUHJvZHVjZXIub25OZXh0KHRoaXMuaGFuZGxlQ2hhbmdlQXR0YWNoZWRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0QXR0YWNoS2V5ID09IHVuZGVmaW5lZCB8fCB0aGlzLmxhc3RBdHRhY2hLZXkgIT09IGF0dGFjaEtleSkge1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdEF0dGFjaEtleSA9IGF0dGFjaEtleTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZXRhY2hBdHRhY2hlZExpc3RlbmVyICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGFjaEF0dGFjaGVkTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXR0YWNoZWRQcm9kdWNlciAhPSB1bmRlZmluZWQgJiYgdGhpcy5pc0luT2JzZXJ2ZVN0YXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuYXR0YWNoZWRQcm9kdWNlci5lbmRPYnNlcnZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuYXR0YWNoZWRQcm9kdWNlciA9IGF3YWl0IHRoaXMuYXR0YWNoRmFjdG9yeShwYXJlbnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNJbk9ic2VydmVTdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmF0dGFjaGVkUHJvZHVjZXIuYmVnaW5PYnNlcnZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZGV0YWNoQXR0YWNoZWRMaXN0ZW5lciA9IHRoaXMuYXR0YWNoZWRQcm9kdWNlci5vbk5leHQodGhpcy5oYW5kbGVDaGFuZ2VBdHRhY2hlZFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmF0dGFjaGVkUHJvZHVjZXIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZFByb2dyYW1TdGF0ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGF0dGFjaGVkVmFsdWUgPSBhd2FpdCB0aGlzLmF0dGFjaGVkUHJvZHVjZXIuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgdGhpcy5sYXN0QXR0YWNoZWRWYWx1ZSA9IGF0dGFjaGVkVmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5qb2luVmFsdWVzKHBhcmVudFZhbHVlLCBhdHRhY2hlZFZhbHVlKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGdldEN1cnJlbnRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBlbWl0TmV4dFZhbHVlKHZhbHVlOiBUTyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIHRoaXMubGlzdGVuZXJzKSB7XG4gICAgICAgICAgICBhd2FpdCBsaXN0ZW5lcih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25OZXh0KGxpc3RlbmVyOiAobmV4dFZhbHVlOiBUTykgPT4gUHJvbWlzZTx2b2lkPik6IERldGFjaExpc3RlbmVyIHtcbiAgICAgICAgdGhpcy5saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgICAgIGlmICh0aGlzLmxpc3RlbmVycy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRldGFjaFBhcmVudExpc3RlbmVyID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGV0YWNoUGFyZW50TGlzdGVuZXIgPSB0aGlzLnBhcmVudC5vbk5leHQodGhpcy5oYW5kbGVDaGFuZ2VQYXJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5hdHRhY2hlZFByb2R1Y2VyICE9IHVuZGVmaW5lZCAmJiB0aGlzLmRldGFjaFBhcmVudExpc3RlbmVyID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGV0YWNoUGFyZW50TGlzdGVuZXIgPSB0aGlzLmF0dGFjaGVkUHJvZHVjZXIub25OZXh0KHRoaXMuaGFuZGxlQ2hhbmdlQXR0YWNoZWRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5saXN0ZW5lcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGV0YWNoUGFyZW50TGlzdGVuZXIgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWNoUGFyZW50TGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGV0YWNoQXR0YWNoZWRMaXN0ZW5lciAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhY2hBdHRhY2hlZExpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlQ2hhbmdlQXR0YWNoZWRWYWx1ZSA9IGFzeW5jIChhdHRhY2hlZFZhbHVlOiBUQSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICB0aGlzLmxhc3RBdHRhY2hlZFZhbHVlID0gYXR0YWNoZWRWYWx1ZTtcbiAgICAgICAgaWYgKCF0aGlzLmF3YWl0aW5nTGFzdEF0dGFjaGVkVmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxhc3RQYXJlbnRWYWx1ZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkUHJvZ3JhbVN0YXRlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbWl0TmV4dFZhbHVlKGF3YWl0IHRoaXMuam9pblZhbHVlcyh0aGlzLmxhc3RQYXJlbnRWYWx1ZSwgYXR0YWNoZWRWYWx1ZSkpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlQ2hhbmdlUGFyZW50VmFsdWUgPSBhc3luYyAocGFyZW50VmFsdWU6IFRJKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIHRoaXMubGFzdFBhcmVudFZhbHVlID0gcGFyZW50VmFsdWU7XG4gICAgICAgIGNvbnN0IGF0dGFjaEtleSA9IGF3YWl0IHRoaXMuZXZhbHVhdGVBdHRhY2hLZXkocGFyZW50VmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5hdHRhY2hlZFByb2R1Y2VyICE9IHVuZGVmaW5lZCAmJiB0aGlzLmRldGFjaEF0dGFjaGVkTGlzdGVuZXIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmRldGFjaEF0dGFjaGVkTGlzdGVuZXIgPSB0aGlzLmF0dGFjaGVkUHJvZHVjZXIub25OZXh0KHRoaXMuaGFuZGxlQ2hhbmdlQXR0YWNoZWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubGFzdEF0dGFjaEtleSA9PSB1bmRlZmluZWQgfHwgdGhpcy5sYXN0QXR0YWNoS2V5ICE9PSBhdHRhY2hLZXkpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdEF0dGFjaEtleSA9IGF0dGFjaEtleTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRldGFjaEF0dGFjaGVkTGlzdGVuZXIgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXRhY2hBdHRhY2hlZExpc3RlbmVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5hdHRhY2hlZFByb2R1Y2VyICE9IHVuZGVmaW5lZCAmJiB0aGlzLmlzSW5PYnNlcnZlU3RhdGUpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmF0dGFjaGVkUHJvZHVjZXIuZW5kT2JzZXJ2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hdHRhY2hlZFByb2R1Y2VyID0gYXdhaXQgdGhpcy5hdHRhY2hGYWN0b3J5KHBhcmVudFZhbHVlKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzSW5PYnNlcnZlU3RhdGUpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmF0dGFjaGVkUHJvZHVjZXIuYmVnaW5PYnNlcnZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRldGFjaEF0dGFjaGVkTGlzdGVuZXIgPSB0aGlzLmF0dGFjaGVkUHJvZHVjZXIub25OZXh0KHRoaXMuaGFuZGxlQ2hhbmdlQXR0YWNoZWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYXR0YWNoZWRQcm9kdWNlciA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWRQcm9ncmFtU3RhdGVcIik7XG4gICAgICAgIH1cbiAgICAgICAgLy8g0J/RgNC+0YHRgtC+INC90LXQvNC90L7Qs9C+INC+0LHQvtC20LTQtdC8LCDQstC00YDRg9CzINC/0YDQuNC00ZHRgiDQtNGA0YPQs9C+0LUgYXR0YWNoZWRWYWx1ZVxuICAgICAgICB0aGlzLmF3YWl0aW5nTGFzdEF0dGFjaGVkVmFsdWUgPSB0cnVlO1xuICAgICAgICBhd2FpdCBkZWxheSg3MDApO1xuICAgICAgICB0aGlzLmF3YWl0aW5nTGFzdEF0dGFjaGVkVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgbGV0IGF0dGFjaGVkVmFsdWUgPSB0aGlzLmxhc3RBdHRhY2hlZFZhbHVlO1xuICAgICAgICBpZiAoYXR0YWNoZWRWYWx1ZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF0dGFjaGVkVmFsdWUgPSBhd2FpdCB0aGlzLmF0dGFjaGVkUHJvZHVjZXIuY3VycmVudFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdE5leHRWYWx1ZShhd2FpdCB0aGlzLmpvaW5WYWx1ZXMocGFyZW50VmFsdWUsIGF0dGFjaGVkVmFsdWUpKTtcbiAgICB9O1xufVxuXG5leHBvcnQgY2xhc3MgRXhlY3V0ZU9uVmFsdWVQcm9kdWNlcjxUPiBleHRlbmRzIENoYWluYWJsZVZhbHVlUHJvZHVjZXI8VD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50OiBJVmFsdWVQcm9kdWNlcjxUPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbjogKHZhbHVlOiBUKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmVudDogSVZhbHVlUHJvZHVjZXI8VD4sIGFjdGlvbjogKHZhbHVlOiBUKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgICAgICB0aGlzLmFjdGlvbiA9IGFjdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYmVnaW5PYnNlcnZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnBhcmVudC5iZWdpbk9ic2VydmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZW5kT2JzZXJ2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wYXJlbnQuZW5kT2JzZXJ2ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVudFZhbHVlKCk6IFByb21pc2U8VD4ge1xuICAgICAgICBjb25zdCBnZXRDdXJyZW50VmFsdWUgPSBhc3luYyAoKTogUHJvbWlzZTxUPiA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMucGFyZW50LmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYWN0aW9uKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGdldEN1cnJlbnRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk5leHQobGlzdGVuZXI6IChuZXh0VmFsdWU6IFQpID0+IFByb21pc2U8dm9pZD4pOiBEZXRhY2hMaXN0ZW5lciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5vbk5leHQoYXN5bmMgcGFyZW50VmFsdWUgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmVudFZhbHVlO1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuYWN0aW9uKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBsaXN0ZW5lcih2YWx1ZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmVtaXRFcnJvcihlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHJhbnNmb3JtVmFsdWVQcm9kdWNlcjxUSSwgVE8+IGV4dGVuZHMgQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxUTz4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50OiBJVmFsdWVQcm9kdWNlcjxUST47XG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2Zvcm1GdW5jdGlvbjogKHZhbHVlOiBUSSkgPT4gUHJvbWlzZTxUTz47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocGFyZW50OiBJVmFsdWVQcm9kdWNlcjxUST4sIHRyYW5zZm9ybUZ1bmN0aW9uOiAodmFsdWU6IFRJKSA9PiBQcm9taXNlPFRPPikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm1GdW5jdGlvbiA9IHRyYW5zZm9ybUZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBiZWdpbk9ic2VydmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMucGFyZW50LmJlZ2luT2JzZXJ2ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBlbmRPYnNlcnZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnBhcmVudC5lbmRPYnNlcnZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW50VmFsdWUoKTogUHJvbWlzZTxUTz4ge1xuICAgICAgICBjb25zdCBnZXRDdXJyZW50VmFsdWUgPSBhc3luYyAoKTogUHJvbWlzZTxUTz4gPT4gdGhpcy50cmFuc2Zvcm1GdW5jdGlvbihhd2FpdCB0aGlzLnBhcmVudC5jdXJyZW50VmFsdWUpO1xuICAgICAgICByZXR1cm4gZ2V0Q3VycmVudFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTmV4dChsaXN0ZW5lcjogKG5leHRWYWx1ZTogVE8pID0+IFByb21pc2U8dm9pZD4pOiBEZXRhY2hMaXN0ZW5lciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5vbk5leHQoYXN5bmMgcGFyZW50VmFsdWUgPT4ge1xuICAgICAgICAgICAgYXdhaXQgbGlzdGVuZXIoYXdhaXQgdGhpcy50cmFuc2Zvcm1GdW5jdGlvbihwYXJlbnRWYWx1ZSkpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTcGxpdFRvQ2hhaW5zVmFsdWVQcm9kdWNlcjxULCBUSSwgVE8+IGV4dGVuZHMgQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxUT1tdPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXJlbnQ6IElWYWx1ZVByb2R1Y2VyPFQ+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3BsaXRGdW5jdGlvbjogKGlucHV0OiBUKSA9PiBUSVtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZ2V0S2V5OiAoaW5wdXQ6IFRJKSA9PiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYWN0b3J5OiAoaW5wdXQ6IFRJKSA9PiBJVmFsdWVQcm9kdWNlcjxUTz47XG4gICAgcHJpdmF0ZSByZWFkb25seSBsaXN0ZW5lcnM6IEFycmF5PFZhbHVlTGlzdGVuZXI8VE9bXT4+ID0gW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGFpbnM6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXToge1xuICAgICAgICAgICAgdmFsdWVQcm9kdWNlcjogSVZhbHVlUHJvZHVjZXI8VE8+O1xuICAgICAgICAgICAgbGFzdFZhbHVlOiB1bmRlZmluZWQgfCBUTztcbiAgICAgICAgICAgIGRldGFjaExpc3RlbmVyOiBEZXRhY2hMaXN0ZW5lcjtcbiAgICAgICAgfTtcbiAgICB9ID0ge307XG4gICAgcHJpdmF0ZSBpc0luT2JzZXJ2ZVN0YXRlID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHBhcmVudDogSVZhbHVlUHJvZHVjZXI8VD4sXG4gICAgICAgIHNwbGl0RnVuY3Rpb246IChpbnB1dDogVCkgPT4gVElbXSxcbiAgICAgICAgZ2V0S2V5OiAoaW5wdXQ6IFRJKSA9PiBzdHJpbmcsXG4gICAgICAgIGZhY3Rvcnk6IChpbnB1dDogVEkpID0+IElWYWx1ZVByb2R1Y2VyPFRPPlxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5zcGxpdEZ1bmN0aW9uID0gc3BsaXRGdW5jdGlvbjtcbiAgICAgICAgdGhpcy5nZXRLZXkgPSBnZXRLZXk7XG4gICAgICAgIHRoaXMuZmFjdG9yeSA9IGZhY3Rvcnk7XG4gICAgICAgIHRoaXMucGFyZW50Lm9uTmV4dCh0aGlzLmhhbmRsZUNoYW5nZVBhcmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW50VmFsdWUoKTogUHJvbWlzZTxUT1tdPiB7XG4gICAgICAgIGNvbnN0IGdldEN1cnJlbnRWYWx1ZSA9IGFzeW5jICgpOiBQcm9taXNlPFRPW10+ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuc3BsaXRGdW5jdGlvbihhd2FpdCB0aGlzLnBhcmVudC5jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBUT1tdID0gW107XG4gICAgICAgICAgICBjb25zdCBlcnJvcnM6IFJlYXNvbk9yRXJyb3JbXSA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFZhbHVlUHJvZHVjZXIgPSB0aGlzLmZhY3RvcnkodmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzSW5PYnNlcnZlU3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2hpbGRWYWx1ZVByb2R1Y2VyLmJlZ2luT2JzZXJ2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFZhbHVlID0gYXdhaXQgY2hpbGRWYWx1ZVByb2R1Y2VyLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goY2hpbGRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0S2V5KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFpbnNba2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RWYWx1ZTogY2hpbGRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlUHJvZHVjZXI6IGNoaWxkVmFsdWVQcm9kdWNlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFjaExpc3RlbmVyOiBjaGlsZFZhbHVlUHJvZHVjZXIub25OZXh0KHggPT4gdGhpcy5oYW5kbGVDaGFuZ2VQYXJlbnRDaGFpbih4LCBrZXkpKSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzSW5PYnNlcnZlU3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0S2V5KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFpbnNba2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVQcm9kdWNlcjogY2hpbGRWYWx1ZVByb2R1Y2VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWNoTGlzdGVuZXI6IGNoaWxkVmFsdWVQcm9kdWNlci5vbk5leHQoeCA9PiB0aGlzLmhhbmRsZUNoYW5nZVBhcmVudENoYWluKHgsIGtleSkpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3JzWzBdO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlcnJvcnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFnZ3JlZ2F0ZWRFcnJvcihcIlRoZXJlIGFyZSBlcnJvcnNcIiwgLi4uZXJyb3JzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBnZXRDdXJyZW50VmFsdWUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYmVnaW5PYnNlcnZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmlzSW5PYnNlcnZlU3RhdGUgPSB0cnVlO1xuICAgICAgICBhd2FpdCB0aGlzLnBhcmVudC5iZWdpbk9ic2VydmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZW5kT2JzZXJ2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wYXJlbnQuZW5kT2JzZXJ2ZSgpO1xuICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGl0ZXJhdGVWYWx1ZXModGhpcy5jaGFpbnMpKSB7XG4gICAgICAgICAgICBhd2FpdCB2YWx1ZS52YWx1ZVByb2R1Y2VyLmVuZE9ic2VydmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzSW5PYnNlcnZlU3RhdGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25OZXh0KGxpc3RlbmVyOiAobmV4dFZhbHVlOiBUT1tdKSA9PiBQcm9taXNlPHZvaWQ+KTogRGV0YWNoTGlzdGVuZXIge1xuICAgICAgICB0aGlzLmxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBlbWl0VmFsdWUodmFsdWU6IFRPW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiB0aGlzLmxpc3RlbmVycykge1xuICAgICAgICAgICAgYXdhaXQgbGlzdGVuZXIodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b01hcCh2YWx1ZXM6IFRJW10pOiB7IFtrZXk6IHN0cmluZ106IFRJIH0ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IHsgW2tleTogc3RyaW5nXTogVEkgfSA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgICAgICAgcmVzdWx0W3RoaXMuZ2V0S2V5KHZhbHVlKV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlQ2hhbmdlUGFyZW50Q2hhaW4gPSBhc3luYyAobmV4dFZhbHVlOiBUTywga2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgY29uc3QgY2hhaW5WYWx1ZSA9IHRoaXMuY2hhaW5zW2tleV07XG4gICAgICAgIGlmIChjaGFpblZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY2hhaW5WYWx1ZS5sYXN0VmFsdWUgPSBuZXh0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0VmFsdWUoXG4gICAgICAgICAgICBPYmplY3QudmFsdWVzKHRoaXMuY2hhaW5zKVxuICAgICAgICAgICAgICAgIC5tYXAoeCA9PiB4Lmxhc3RWYWx1ZSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGlzTm90TnVsbE9yVW5kZWZpbmVkKVxuICAgICAgICApO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZUNoYW5nZVBhcmVudCA9IGFzeW5jIChpbnB1dDogVCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnNwbGl0RnVuY3Rpb24oaW5wdXQpO1xuICAgICAgICBjb25zdCBuZXh0VmFsdWVzTWFwID0gdGhpcy50b01hcCh2YWx1ZXMpO1xuXG4gICAgICAgIGNvbnN0IG5ld0tleXMgPSBfLmRpZmZlcmVuY2UoT2JqZWN0LmtleXMobmV4dFZhbHVlc01hcCksIE9iamVjdC5rZXlzKHRoaXMuY2hhaW5zKSk7XG4gICAgICAgIGNvbnN0IHJlbW92ZWRLZXlzID0gXy5kaWZmZXJlbmNlKE9iamVjdC5rZXlzKHRoaXMuY2hhaW5zKSwgT2JqZWN0LmtleXMobmV4dFZhbHVlc01hcCkpO1xuICAgICAgICBmb3IgKGNvbnN0IG5ld0tleSBvZiBuZXdLZXlzKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdDaGFpbiA9IHRoaXMuZmFjdG9yeShuZXh0VmFsdWVzTWFwW25ld0tleV0gPz8gcmVqZWN0KCkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNJbk9ic2VydmVTdGF0ZSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IG5ld0NoYWluLmJlZ2luT2JzZXJ2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdDaGFpblZhbHVlID0gYXdhaXQgbmV3Q2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhaW5zW25ld0tleV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIGxhc3RWYWx1ZTogbmV3Q2hhaW5WYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVQcm9kdWNlcjogbmV3Q2hhaW4sXG4gICAgICAgICAgICAgICAgICAgIGRldGFjaExpc3RlbmVyOiBuZXdDaGFpbi5vbk5leHQobmV4dFZhbHVlID0+IHRoaXMuaGFuZGxlQ2hhbmdlUGFyZW50Q2hhaW4obmV4dFZhbHVlLCBuZXdLZXkpKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFpbnNbbmV3S2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlUHJvZHVjZXI6IG5ld0NoYWluLFxuICAgICAgICAgICAgICAgICAgICBkZXRhY2hMaXN0ZW5lcjogbmV3Q2hhaW4ub25OZXh0KG5leHRWYWx1ZSA9PiB0aGlzLmhhbmRsZUNoYW5nZVBhcmVudENoYWluKG5leHRWYWx1ZSwgbmV3S2V5KSksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IHJlbW92ZWRLZXkgb2YgcmVtb3ZlZEtleXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbW92ZWRDaGFpbiA9IHRoaXMuY2hhaW5zW3JlbW92ZWRLZXldO1xuICAgICAgICAgICAgcmVtb3ZlZENoYWluPy5kZXRhY2hMaXN0ZW5lcigpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNJbk9ic2VydmVTdGF0ZSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHJlbW92ZWRDaGFpbj8udmFsdWVQcm9kdWNlci5lbmRPYnNlcnZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyDQryDQvdC1INC30L3QsNGOLCDQutCw0Log0YLRg9GCINC/0YDQsNCy0LjQu9GM0L3QvlxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWR5bmFtaWMtZGVsZXRlXG4gICAgICAgICAgICBkZWxldGUgdGhpcy5jaGFpbnNbcmVtb3ZlZEtleV07XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0VmFsdWUoXG4gICAgICAgICAgICBPYmplY3QudmFsdWVzKHRoaXMuY2hhaW5zKVxuICAgICAgICAgICAgICAgIC5tYXAoeCA9PiB4Lmxhc3RWYWx1ZSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGlzTm90TnVsbE9yVW5kZWZpbmVkKVxuICAgICAgICApO1xuICAgIH07XG59XG5cbmV4cG9ydCBjbGFzcyBQYXJhbGxlbFNwbGl0VG9DaGFpbnNWYWx1ZVByb2R1Y2VyPFQsIFRJLCBUTz4gZXh0ZW5kcyBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyPFRPW10+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhcmVudDogSVZhbHVlUHJvZHVjZXI8VD47XG4gICAgcHJpdmF0ZSByZWFkb25seSBzcGxpdEZ1bmN0aW9uOiAoaW5wdXQ6IFQpID0+IFRJW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBnZXRLZXk6IChpbnB1dDogVEkpID0+IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZhY3Rvcnk6IChpbnB1dDogVEkpID0+IElWYWx1ZVByb2R1Y2VyPFRPPiB8IFByb21pc2U8SVZhbHVlUHJvZHVjZXI8VE8+PjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpc3RlbmVyczogQXJyYXk8VmFsdWVMaXN0ZW5lcjxUT1tdPj4gPSBbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYWluczoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICAgICAgICB2YWx1ZVByb2R1Y2VyOiBJVmFsdWVQcm9kdWNlcjxUTz47XG4gICAgICAgICAgICBsYXN0VmFsdWU6IHVuZGVmaW5lZCB8IFRPO1xuICAgICAgICAgICAgZGV0YWNoTGlzdGVuZXI6IERldGFjaExpc3RlbmVyO1xuICAgICAgICB9O1xuICAgIH0gPSB7fTtcbiAgICBwcml2YXRlIGlzSW5PYnNlcnZlU3RhdGUgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcGFyZW50OiBJVmFsdWVQcm9kdWNlcjxUPixcbiAgICAgICAgc3BsaXRGdW5jdGlvbjogKGlucHV0OiBUKSA9PiBUSVtdLFxuICAgICAgICBnZXRLZXk6IChpbnB1dDogVEkpID0+IHN0cmluZyxcbiAgICAgICAgZmFjdG9yeTogKGlucHV0OiBUSSkgPT4gSVZhbHVlUHJvZHVjZXI8VE8+IHwgUHJvbWlzZTxJVmFsdWVQcm9kdWNlcjxUTz4+XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgICAgICB0aGlzLnNwbGl0RnVuY3Rpb24gPSBzcGxpdEZ1bmN0aW9uO1xuICAgICAgICB0aGlzLmdldEtleSA9IGdldEtleTtcbiAgICAgICAgdGhpcy5mYWN0b3J5ID0gZmFjdG9yeTtcbiAgICAgICAgdGhpcy5wYXJlbnQub25OZXh0KHRoaXMuaGFuZGxlQ2hhbmdlUGFyZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbnRWYWx1ZSgpOiBQcm9taXNlPFRPW10+IHtcbiAgICAgICAgY29uc3QgZ2V0Q3VycmVudFZhbHVlID0gYXN5bmMgKCk6IFByb21pc2U8VE9bXT4gPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5zcGxpdEZ1bmN0aW9uKGF3YWl0IHRoaXMucGFyZW50LmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IFRPW10gPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yczogUmVhc29uT3JFcnJvcltdID0gW107XG4gICAgICAgICAgICBjb25zdCBjcHVMaW1pdCA9IGdldENwdUxpbWl0cygpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBVc2UgbGltaXQ6ICR7Y3B1TGltaXR9YCk7XG4gICAgICAgICAgICBjb25zdCBjb25jdXJyZW5jeUxpbWl0ID0gcExpbWl0KGNwdUxpbWl0KTtcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgIHZhbHVlcy5tYXAoKHZhbHVlLCBpbmRleCkgPT5cbiAgICAgICAgICAgICAgICAgICAgY29uY3VycmVuY3lMaW1pdChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFZhbHVlUHJvZHVjZXIgPSBhd2FpdCB0aGlzLmZhY3RvcnkodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNJbk9ic2VydmVTdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGNoaWxkVmFsdWVQcm9kdWNlci5iZWdpbk9ic2VydmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRWYWx1ZSA9IGF3YWl0IGNoaWxkVmFsdWVQcm9kdWNlci5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2luZGV4XSA9IGNoaWxkVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5nZXRLZXkodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhaW5zW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RWYWx1ZTogY2hpbGRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVQcm9kdWNlcjogY2hpbGRWYWx1ZVByb2R1Y2VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhY2hMaXN0ZW5lcjogY2hpbGRWYWx1ZVByb2R1Y2VyLm9uTmV4dCh4ID0+IHRoaXMuaGFuZGxlQ2hhbmdlUGFyZW50Q2hhaW4oeCwga2V5KSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0luT2JzZXJ2ZVN0YXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmdldEtleSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFpbnNba2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlUHJvZHVjZXI6IGNoaWxkVmFsdWVQcm9kdWNlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWNoTGlzdGVuZXI6IGNoaWxkVmFsdWVQcm9kdWNlci5vbk5leHQoeCA9PiB0aGlzLmhhbmRsZUNoYW5nZVBhcmVudENoYWluKHgsIGtleSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3JzWzBdO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlcnJvcnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFnZ3JlZ2F0ZWRFcnJvcihcIlRoZXJlIGFyZSBlcnJvcnNcIiwgLi4uZXJyb3JzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBnZXRDdXJyZW50VmFsdWUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYmVnaW5PYnNlcnZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmlzSW5PYnNlcnZlU3RhdGUgPSB0cnVlO1xuICAgICAgICBhd2FpdCB0aGlzLnBhcmVudC5iZWdpbk9ic2VydmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZW5kT2JzZXJ2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wYXJlbnQuZW5kT2JzZXJ2ZSgpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmNoYWlucykpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY2hhaW5zW2tleV0/LnZhbHVlUHJvZHVjZXIuZW5kT2JzZXJ2ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNJbk9ic2VydmVTdGF0ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk5leHQobGlzdGVuZXI6IChuZXh0VmFsdWU6IFRPW10pID0+IFByb21pc2U8dm9pZD4pOiBEZXRhY2hMaXN0ZW5lciB7XG4gICAgICAgIHRoaXMubGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmxpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGVtaXRWYWx1ZSh2YWx1ZTogVE9bXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIHRoaXMubGlzdGVuZXJzKSB7XG4gICAgICAgICAgICBhd2FpdCBsaXN0ZW5lcih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHRvTWFwKHZhbHVlczogVElbXSk6IHsgW2tleTogc3RyaW5nXTogVEkgfSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogeyBba2V5OiBzdHJpbmddOiBUSSB9ID0ge307XG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICByZXN1bHRbdGhpcy5nZXRLZXkodmFsdWUpXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWFkb25seSBoYW5kbGVDaGFuZ2VQYXJlbnRDaGFpbiA9IGFzeW5jIChuZXh0VmFsdWU6IFRPLCBrZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBjb25zdCBjaGFpblZhbHVlID0gdGhpcy5jaGFpbnNba2V5XTtcbiAgICAgICAgaWYgKGNoYWluVmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjaGFpblZhbHVlLmxhc3RWYWx1ZSA9IG5leHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLmVtaXRWYWx1ZShcbiAgICAgICAgICAgIE9iamVjdC52YWx1ZXModGhpcy5jaGFpbnMpXG4gICAgICAgICAgICAgICAgLm1hcCh4ID0+IHgubGFzdFZhbHVlKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoaXNOb3ROdWxsT3JVbmRlZmluZWQpXG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlQ2hhbmdlUGFyZW50ID0gYXN5bmMgKGlucHV0OiBUKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuc3BsaXRGdW5jdGlvbihpbnB1dCk7XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZXNNYXAgPSB0aGlzLnRvTWFwKHZhbHVlcyk7XG5cbiAgICAgICAgY29uc3QgbmV3S2V5cyA9IF8uZGlmZmVyZW5jZShPYmplY3Qua2V5cyhuZXh0VmFsdWVzTWFwKSwgT2JqZWN0LmtleXModGhpcy5jaGFpbnMpKTtcbiAgICAgICAgY29uc3QgcmVtb3ZlZEtleXMgPSBfLmRpZmZlcmVuY2UoT2JqZWN0LmtleXModGhpcy5jaGFpbnMpLCBPYmplY3Qua2V5cyhuZXh0VmFsdWVzTWFwKSk7XG4gICAgICAgIGZvciAoY29uc3QgbmV3S2V5IG9mIG5ld0tleXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0NoYWluID0gYXdhaXQgdGhpcy5mYWN0b3J5KG5leHRWYWx1ZXNNYXBbbmV3S2V5XSA/PyByZWplY3QoKSk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0luT2JzZXJ2ZVN0YXRlKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgbmV3Q2hhaW4uYmVnaW5PYnNlcnZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NoYWluVmFsdWUgPSBhd2FpdCBuZXdDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFpbnNbbmV3S2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlOiBuZXdDaGFpblZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVByb2R1Y2VyOiBuZXdDaGFpbixcbiAgICAgICAgICAgICAgICAgICAgZGV0YWNoTGlzdGVuZXI6IG5ld0NoYWluLm9uTmV4dChuZXh0VmFsdWUgPT4gdGhpcy5oYW5kbGVDaGFuZ2VQYXJlbnRDaGFpbihuZXh0VmFsdWUsIG5ld0tleSkpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYWluc1tuZXdLZXldID0ge1xuICAgICAgICAgICAgICAgICAgICBsYXN0VmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVQcm9kdWNlcjogbmV3Q2hhaW4sXG4gICAgICAgICAgICAgICAgICAgIGRldGFjaExpc3RlbmVyOiBuZXdDaGFpbi5vbk5leHQobmV4dFZhbHVlID0+IHRoaXMuaGFuZGxlQ2hhbmdlUGFyZW50Q2hhaW4obmV4dFZhbHVlLCBuZXdLZXkpKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgcmVtb3ZlZEtleSBvZiByZW1vdmVkS2V5cykge1xuICAgICAgICAgICAgY29uc3QgcmVtb3ZlZENoYWluID0gdGhpcy5jaGFpbnNbcmVtb3ZlZEtleV07XG4gICAgICAgICAgICByZW1vdmVkQ2hhaW4/LmRldGFjaExpc3RlbmVyKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0luT2JzZXJ2ZVN0YXRlKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgcmVtb3ZlZENoYWluPy52YWx1ZVByb2R1Y2VyLmVuZE9ic2VydmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vINCvINC90LUg0LfQvdCw0Y4sINC60LDQuiDRgtGD0YIg0L/RgNCw0LLQuNC70YzQvdC+XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZHluYW1pYy1kZWxldGVcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmNoYWluc1tyZW1vdmVkS2V5XTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLmVtaXRWYWx1ZShcbiAgICAgICAgICAgIE9iamVjdC52YWx1ZXModGhpcy5jaGFpbnMpXG4gICAgICAgICAgICAgICAgLm1hcCh4ID0+IHgubGFzdFZhbHVlKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoaXNOb3ROdWxsT3JVbmRlZmluZWQpXG4gICAgICAgICk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIFNraXBVcGRhdGVzVW50aWxOZXh0Q29tcGxldGVkUHJvZHVjZXI8VD4gZXh0ZW5kcyBPYnNlcnZhYmxlVmFsdWVQcm9kdWNlckJhc2U8VD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50OiBJVmFsdWVQcm9kdWNlcjxUPjtcbiAgICBwcml2YXRlIGRldGFjaEZyb21QYXJlbnQ/OiBEZXRhY2hMaXN0ZW5lcjtcbiAgICBwcml2YXRlIGxhc3RQYXJlbnRWYWx1ZT86IFQ7XG5cbiAgICBwcml2YXRlIG5leHRFbWl0VG9Qcm9jZXNzPzogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgICBwcml2YXRlIGN1cnJlbnRseVByb2Nlc3NpbmdFbWl0PzogUHJvbWlzZTx2b2lkPjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJlbnQ6IElWYWx1ZVByb2R1Y2VyPFQ+KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBnZXRDdXJyZW50VmFsdWUoKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGlmICh0aGlzLmxhc3RQYXJlbnRWYWx1ZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudGx5UHJvY2Vzc2luZ0VtaXQgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdFBhcmVudFZhbHVlID0gYXdhaXQgdGhpcy5wYXJlbnQuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgfSkoKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY3VycmVudGx5UHJvY2Vzc2luZ0VtaXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubGFzdFBhcmVudFZhbHVlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZFByb2dyYW1TdGF0ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sYXN0UGFyZW50VmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGJlZ2luTGlzdGVuaW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnBhcmVudC5iZWdpbk9ic2VydmUoKTtcbiAgICAgICAgaWYgKHRoaXMuZGV0YWNoRnJvbVBhcmVudCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZGV0YWNoRnJvbVBhcmVudCA9IHRoaXMucGFyZW50Lm9uTmV4dChuZXh0VmFsdWUgPT4gdGhpcy5oYW5kbGVDaGFuZ2VQYXJlbnRWYWx1ZShuZXh0VmFsdWUpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBzdG9wTGlzdGVuaW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5kZXRhY2hGcm9tUGFyZW50ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5kZXRhY2hGcm9tUGFyZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5wYXJlbnQuZW5kT2JzZXJ2ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaGFuZGxlQ2hhbmdlUGFyZW50VmFsdWUobmV4dFZhbHVlOiBUKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMubGFzdFBhcmVudFZhbHVlID0gbmV4dFZhbHVlO1xuICAgICAgICB0aGlzLm5leHRFbWl0VG9Qcm9jZXNzID0gXy5vbmNlKCgpID0+IHRoaXMuZW1pdFVwZGF0ZShuZXh0VmFsdWUpKTtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudGx5UHJvY2Vzc2luZ0VtaXQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmN1cnJlbnRseVByb2Nlc3NpbmdFbWl0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudGx5UHJvY2Vzc2luZ0VtaXQgPSB0aGlzLm5leHRFbWl0VG9Qcm9jZXNzKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuY3VycmVudGx5UHJvY2Vzc2luZ0VtaXQ7XG4gICAgICAgIHRoaXMuY3VycmVudGx5UHJvY2Vzc2luZ0VtaXQgPSB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkZWxheSh0aW1lb3V0OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9LCB0aW1lb3V0KTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gaXNOb3ROdWxsT3JVbmRlZmluZWQ8VD4oaW5wdXQ6IFQgfCB1bmRlZmluZWQgfCBudWxsKTogaW5wdXQgaXMgVCB7XG4gICAgcmV0dXJuIGlucHV0ICE9IHVuZGVmaW5lZDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUdBLElBQUFFLGNBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGFBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLGdCQUFBLEdBQUFMLE9BQUE7QUFHQSxlQUFlTSxJQUFJQSxDQUFBLEVBQWtCO0VBQ2pDO0FBQUE7QUFHRyxNQUFNQyxzQkFBc0IsQ0FBaUM7RUFBQUMsWUFBQTtJQUFBLEtBQy9DQyxjQUFjLEdBQWdDLEVBQUU7RUFBQTtFQUUxREMsTUFBTUEsQ0FBQ0MsU0FBMEMsRUFBa0I7SUFDdEUsTUFBTSxJQUFJQyxLQUFLLENBQUMsZUFBZSxDQUFDO0VBQ3BDO0VBRU9DLE9BQU9BLENBQUND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
|
|
668
|
+
//# sourceMappingURL=ChainableValueProducer.js.map
|
|
@@ -74,4 +74,4 @@ class DirectoryEntriesProducer extends _ChainableValueProducer.ObservableValuePr
|
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
exports.DirectoryEntriesProducer = DirectoryEntriesProducer;
|
|
77
|
-
//# sourceMappingURL=
|
|
77
|
+
//# sourceMappingURL=DirectoryEntriesProducer.js.map
|
|
@@ -17,4 +17,4 @@ class EmptyProducer extends _ChainableValueProducer.ObservableValueProducerBase
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
exports.EmptyProducer = EmptyProducer;
|
|
20
|
-
//# sourceMappingURL=
|
|
20
|
+
//# sourceMappingURL=EmptyProducer.js.map
|
|
@@ -45,4 +45,4 @@ class FileSystemEntriesProducer extends _ChainableValueProducer.ObservableValueP
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
exports.FileSystemEntriesProducer = FileSystemEntriesProducer;
|
|
48
|
-
//# sourceMappingURL=
|
|
48
|
+
//# sourceMappingURL=FileSystemEntriesProducer.js.map
|
|
@@ -42,4 +42,4 @@ class FileValueProducer extends _ChainableValueProducer.ObservableValueProducerB
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
exports.FileValueProducer = FileValueProducer;
|
|
45
|
-
//# sourceMappingURL=
|
|
45
|
+
//# sourceMappingURL=FileValueProducer.js.map
|
|
@@ -22,4 +22,4 @@ class FixedDirectoryEntriesProducer extends _ChainableValueProducer.ObservableVa
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
exports.FixedDirectoryEntriesProducer = FixedDirectoryEntriesProducer;
|
|
25
|
-
//# sourceMappingURL=
|
|
25
|
+
//# sourceMappingURL=FixedDirectoryEntriesProducer.js.map
|
|
@@ -32,4 +32,4 @@ class Observe {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
exports.Observe = Observe;
|
|
35
|
-
//# sourceMappingURL=
|
|
35
|
+
//# sourceMappingURL=Observe.js.map
|
|
@@ -26,4 +26,4 @@ class SingleValueProducer extends _ChainableValueProducer.ObservableValueProduce
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
exports.SingleValueProducer = SingleValueProducer;
|
|
29
|
-
//# sourceMappingURL=
|
|
29
|
+
//# sourceMappingURL=SingleValueProducer.js.map
|
|
@@ -10,4 +10,4 @@ function printTime(timespan) {
|
|
|
10
10
|
const hours = Math.floor(timespan / 1000 / 60 / 60).toString().padStart(2, "0");
|
|
11
11
|
return `${hours}:${minutes}:${seconds}`;
|
|
12
12
|
}
|
|
13
|
-
//# sourceMappingURL=
|
|
13
|
+
//# sourceMappingURL=TimingUtils.js.map
|
|
@@ -177,4 +177,4 @@ class CacheFile {
|
|
|
177
177
|
}
|
|
178
178
|
CacheFile.contentFilename = "content.json";
|
|
179
179
|
CacheFile.logger = (0, _StaticLogger.getLogger)().withPrefix("BUILD_CACHE");
|
|
180
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfbWQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3BMaW1pdCIsIl9ub2RlRmV0Y2giLCJfYWRtWmlwIiwiX0J1aWxkQ2FjaGVNb2RlIiwiX1R5cGluZ1V0aWxzIiwiX1N0YXRpY0xvZ2dlciIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsInNpbmdsZUxpbWl0IiwicExpbWl0IiwiQ2FjaGVBc3NldHNQbHVnaW4iLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJhcHBseSIsImNvbXBpbGVyIiwiaG9va3MiLCJlbWl0IiwidGFwUHJvbWlzZSIsImNvbXBpbGF0aW9uIiwiY2FjaGVJdGVtcyIsImFzc2V0TmFtZSIsImtleXMiLCJhc3NldHMiLCJfY29tcGlsYXRpb24kYXNzZXRzJGEiLCJfY29tcGlsYXRpb24kYXNzZXRzJGEyIiwic291cmNlIiwicmVqZWN0IiwiQnVmZmVyIiwidHlwZSIsImJhc2U2NGNvbnRlbnQiLCJ0b1N0cmluZyIsInVwZGF0ZUZpbGUiLCJmaWxlUGF0aCIsInJlc29sdmUiLCJjYWNoZUZpbGUiLCJjb250ZW50IiwicGF0aEV4aXN0cyIsIkNhY2hlRmlsZSIsInJlYWQiLCJlbnN1cmVEaXIiLCJkaXJuYW1lIiwid3JpdGUiLCJleHBvcnRzIiwiQnVpbGRDYWNoZSIsImZhcm1EaXJlY3RvcnkiLCJtb2RlIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwid2l0aFByZWZpeCIsImV4dHJhY3QiLCJnZW5lcmF0b3JTb3VyY2UiLCJnZnYiLCJkZXBzSGFzaCIsInJlc291cmNlc0RpcmVjdG9yeSIsIkVycm9yIiwiZ2V0Q2FjaGVGaWxlUGF0aCIsInZlcnNpb24iLCJhc3NldFBhdGgiLCJfY29udGVudCRhc3NldFBhdGgiLCJjb250ZW50RWxlbWVudCIsIm5vcm1hbGl6ZWRBc3NldFBhdGgiLCJqb2luIiwic3BsaXQiLCJ3cml0ZUZpbGUiLCJmcm9tIiwiZXhpc3RzIiwiQnVpbGRDYWNoZU1vZGUiLCJEaXNhYmxlZCIsIkZvcmNlVXBkYXRlIiwiY2FjaGVkRmlsZVBhdGgiLCJleGlzdHNGaWxlQ2FjaGVPckRvd25sb2FkIiwidW5kZWZpbmVkIiwic2V0Q29udGVudCIsImZpbGVOYW1lIiwiZmlsZUNvbnRlbnQiLCJjYWNoZUZpbGVQYXRoIiwiY3JlYXRlV2VicGFja1BsdWdpbiIsIlJlYWRPbmx5IiwiZ2VuZXJhdG9yVmVyc2lvbiIsImxvZyIsImZpbGVuYW1lIiwiYmFzZW5hbWUiLCJyZXNwb25zZSIsImZldGNoIiwic3RhdHVzIiwiYnVmZmVyIiwiZXJyb3IiLCJtZDUiLCJ6aXAiLCJBZG1aaXAiLCJhZGRGaWxlIiwiY29udGVudEZpbGVuYW1lIiwiSlNPTiIsInN0cmluZ2lmeSIsIndyaXRlWmlwIiwicmVhZEFzVGV4dCIsInBhcnNlIiwid2FybmluZyIsInJlYWRGaWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL0Zvcm1XZWJwYWNrQ29uZmlndXJhdGlvbi9DYWNoZUFzc2V0c1BsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IGVuc3VyZURpciwgcGF0aEV4aXN0cywgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IG1kNSBmcm9tIFwibWQ1XCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgd2VicGFjayBmcm9tIFwid2VicGFja1wiO1xuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCI7XG5pbXBvcnQgQWRtWmlwIGZyb20gXCJhZG0temlwXCI7XG5cbmltcG9ydCB7IEdlbmVyYXRvclNvdXJjZSB9IGZyb20gXCIuLi9CdWlsZFRhc2tzL0dlbmVyYXRvci9BY3F1aXJlRm9ybUdlbmVyYXRvclwiO1xuaW1wb3J0IHsgQnVpbGRDYWNoZU1vZGUgfSBmcm9tIFwiLi4vQ0xJQ29tbWFuZHMvQnVpbGRGb3Jtcy9CdWlsZENhY2hlTW9kZVwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcblxuaW50ZXJmYWNlIENhY2hlQXNzZXRzUGx1Z2luT3B0aW9ucyB7XG4gICAgY2FjaGVGaWxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUJ1aWxkQ2FjaGVPcHRpb25zIHtcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgbW9kZTogQnVpbGRDYWNoZU1vZGU7XG4gICAgZ2VuZXJhdG9yVmVyc2lvbjogc3RyaW5nO1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGRlcHNIYXNoOiBzdHJpbmc7XG59XG5cbmNvbnN0IHNpbmdsZUxpbWl0ID0gcExpbWl0KDEpO1xuXG5pbnRlcmZhY2UgQnVpbGRSZXN1bHRzU2VyaWFsaXplZCB7XG4gICAgW3BhdGg6IHN0cmluZ106IHN0cmluZyB8IHsgdHlwZTogXCJCdWZmZXJcIjsgYmFzZTY0Y29udGVudDogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBjbGFzcyBDYWNoZUFzc2V0c1BsdWdpbiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBDYWNoZUFzc2V0c1BsdWdpbk9wdGlvbnM7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogQ2FjaGVBc3NldHNQbHVnaW5PcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGFwcGx5KGNvbXBpbGVyOiB3ZWJwYWNrLkNvbXBpbGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbXBpbGVyLmhvb2tzLmVtaXQudGFwUHJvbWlzZShcIkNhY2hlQXNzZXRzUGx1Z2luXCIsIGNvbXBpbGF0aW9uID0+XG4gICAgICAgICAgICBzaW5nbGVMaW1pdChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FjaGVJdGVtczogQnVpbGRSZXN1bHRzU2VyaWFsaXplZCA9IHt9O1xuICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtYW55XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhc3NldE5hbWUgb2YgT2JqZWN0LmtleXMoY29tcGlsYXRpb24uYXNzZXRzKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2U6IHN0cmluZyB8IEJ1ZmZlciA9IGNvbXBpbGF0aW9uLmFzc2V0c1thc3NldE5hbWVdPy5zb3VyY2UoKSA/PyByZWplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVJdGVtc1thc3NldE5hbWVdID0geyB0eXBlOiBcIkJ1ZmZlclwiLCBiYXNlNjRjb250ZW50OiBzb3VyY2UudG9TdHJpbmcoXCJiYXNlNjRcIikgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlSXRlbXNbYXNzZXROYW1lXSA9IHNvdXJjZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUZpbGUoY2FjaGVJdGVtcyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgdXBkYXRlRmlsZShjYWNoZUl0ZW1zOiBCdWlsZFJlc3VsdHNTZXJpYWxpemVkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMub3B0aW9ucy5jYWNoZUZpbGUpO1xuICAgICAgICBsZXQgY29udGVudDogQnVpbGRSZXN1bHRzU2VyaWFsaXplZCA9IChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSlcbiAgICAgICAgICAgID8gLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLXVuc2FmZS1hbnlcbiAgICAgICAgICAgICAgYXdhaXQgQ2FjaGVGaWxlLnJlYWQoZmlsZVBhdGgpXG4gICAgICAgICAgICA6IHt9O1xuICAgICAgICBjb250ZW50ID0ge1xuICAgICAgICAgICAgLi4uY29udGVudCxcbiAgICAgICAgICAgIC4uLmNhY2hlSXRlbXMsXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IGVuc3VyZURpcihwYXRoLmRpcm5hbWUoZmlsZVBhdGgpKTtcbiAgICAgICAgYXdhaXQgQ2FjaGVGaWxlLndyaXRlKGZpbGVQYXRoLCBjb250ZW50KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCdWlsZENhY2hlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZhcm1EaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGU6IEJ1aWxkQ2FjaGVNb2RlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBJTG9nZ2VyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGZhcm1EaXJlY3Rvcnk6IHN0cmluZywgbW9kZTogQnVpbGRDYWNoZU1vZGUpIHtcbiAgICAgICAgdGhpcy5mYXJtRGlyZWN0b3J5ID0gZmFybURpcmVjdG9yeTtcbiAgICAgICAgdGhpcy5tb2RlID0gbW9kZTtcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiQlVJTERfQ0FDSEVcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGV4dHJhY3QoXG4gICAgICAgIGdlbmVyYXRvclNvdXJjZTogR2VuZXJhdG9yU291cmNlLFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgZGVwc0hhc2g6IHN0cmluZyxcbiAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmdcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKGdlbmVyYXRvclNvdXJjZS50eXBlID09PSBcIkdlbmVyYXRvclNvdXJjZXNcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTG9jYWwgZ2VuZXJhdG9yIGRvZXMgbm90IHN1cHBvcnRzIGNhY2hpbmdcIik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLXVuc2FmZS1hbnlcbiAgICAgICAgY29uc3QgY29udGVudDogQnVpbGRSZXN1bHRzU2VyaWFsaXplZCA9IGF3YWl0IENhY2hlRmlsZS5yZWFkKFxuICAgICAgICAgICAgQ2FjaGVGaWxlLmdldENhY2hlRmlsZVBhdGgodGhpcy5mYXJtRGlyZWN0b3J5LCBnZnYsIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uLCBkZXBzSGFzaClcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBhc3NldFBhdGggb2YgT2JqZWN0LmtleXMoY29udGVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gY29udGVudFthc3NldFBhdGhdID8/IHJlamVjdCgpO1xuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEFzc2V0UGF0aCA9IHBhdGguam9pbiguLi5hc3NldFBhdGguc3BsaXQoL1tcXFxcXFwvXS8pKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgbm9ybWFsaXplZEFzc2V0UGF0aCk7XG4gICAgICAgICAgICBhd2FpdCBlbnN1cmVEaXIocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnRFbGVtZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBjb250ZW50RWxlbWVudCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZVBhdGgsIEJ1ZmZlci5mcm9tKGNvbnRlbnRFbGVtZW50LmJhc2U2NGNvbnRlbnQsIFwiYmFzZTY0XCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGlzdHMoZ2VuZXJhdG9yU291cmNlOiBHZW5lcmF0b3JTb3VyY2UsIGdmdjogc3RyaW5nLCBkZXBzSGFzaDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGlmIChnZW5lcmF0b3JTb3VyY2UudHlwZSA9PT0gXCJHZW5lcmF0b3JTb3VyY2VzXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvY2FsIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0cyBjYWNoaW5nXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09IEJ1aWxkQ2FjaGVNb2RlLkRpc2FibGVkIHx8IHRoaXMubW9kZSA9PT0gQnVpbGRDYWNoZU1vZGUuRm9yY2VVcGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjYWNoZWRGaWxlUGF0aCA9IGF3YWl0IHRoaXMuZXhpc3RzRmlsZUNhY2hlT3JEb3dubG9hZChnZnYsIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uLCBkZXBzSGFzaCk7XG4gICAgICAgIHJldHVybiBjYWNoZWRGaWxlUGF0aCAhPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldENvbnRlbnQoXG4gICAgICAgIGdlbmVyYXRvclNvdXJjZTogc3RyaW5nLFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgZGVwc0hhc2g6IHN0cmluZyxcbiAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGZpbGVDb250ZW50OiBzdHJpbmdcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY2FjaGVGaWxlUGF0aCA9IENhY2hlRmlsZS5nZXRDYWNoZUZpbGVQYXRoKHRoaXMuZmFybURpcmVjdG9yeSwgZ2Z2LCBnZW5lcmF0b3JTb3VyY2UsIGRlcHNIYXNoKTtcbiAgICAgICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhjYWNoZUZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWFueVxuICAgICAgICBsZXQgY29udGVudDogQnVpbGRSZXN1bHRzU2VyaWFsaXplZCA9IGF3YWl0IENhY2hlRmlsZS5yZWFkKGNhY2hlRmlsZVBhdGgpO1xuICAgICAgICBjb250ZW50ID0ge1xuICAgICAgICAgICAgLi4uY29udGVudCxcbiAgICAgICAgICAgIFtmaWxlTmFtZV06IGZpbGVDb250ZW50LFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCBlbnN1cmVEaXIocGF0aC5kaXJuYW1lKGNhY2hlRmlsZVBhdGgpKTtcbiAgICAgICAgYXdhaXQgQ2FjaGVGaWxlLndyaXRlKGNhY2hlRmlsZVBhdGgsIGNvbnRlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjcmVhdGVXZWJwYWNrUGx1Z2luKG9wdGlvbnM6IEZvcm1CdWlsZENhY2hlT3B0aW9ucyk6IFByb21pc2U8Q2FjaGVBc3NldHNQbHVnaW4gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKG9wdGlvbnMubW9kZSA9PT0gQnVpbGRDYWNoZU1vZGUuRGlzYWJsZWQgfHwgb3B0aW9ucy5tb2RlID09PSBCdWlsZENhY2hlTW9kZS5SZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjYWNoZWRGaWxlUGF0aCA9IENhY2hlRmlsZS5nZXRDYWNoZUZpbGVQYXRoKFxuICAgICAgICAgICAgdGhpcy5mYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgb3B0aW9ucy5nZnYsXG4gICAgICAgICAgICBvcHRpb25zLmdlbmVyYXRvclZlcnNpb24sXG4gICAgICAgICAgICBvcHRpb25zLmRlcHNIYXNoXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBuZXcgQ2FjaGVBc3NldHNQbHVnaW4oe1xuICAgICAgICAgICAgY2FjaGVGaWxlOiBjYWNoZWRGaWxlUGF0aCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBleGlzdHNGaWxlQ2FjaGVPckRvd25sb2FkKFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogc3RyaW5nLFxuICAgICAgICBkZXBzSGFzaDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBDYWNoZUZpbGUuZ2V0Q2FjaGVGaWxlUGF0aCh0aGlzLmZhcm1EaXJlY3RvcnksIGdmdiwgZ2VuZXJhdG9yVmVyc2lvbiwgZGVwc0hhc2gpO1xuICAgICAgICB0aGlzLmxvZ2dlci5sb2coYFN0YXJ0IHNlYXJjaCBmaWxlIGxvY2FsbHk6ICR7ZmlsZVBhdGh9YCk7XG4gICAgICAgIGNvbnN0IGZpbGVuYW1lID0gcGF0aC5iYXNlbmFtZShmaWxlUGF0aCk7XG4gICAgICAgIGF3YWl0IGVuc3VyZURpcihwYXRoLmRpcm5hbWUoZmlsZVBhdGgpKTtcbiAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coXCJGb3VuZCBmaWxlIGluIGxvY2FsIGRpcmVjdG9yeVwiKTtcbiAgICAgICAgICAgIHJldHVybiBmaWxlUGF0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKGBDYWNoZSBmaWxlIHdhcyBub3QgZm91bmQgbG9jYWxseTogJHtmaWxlUGF0aH1gKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coYExvb2tpbmcgZm9yIGNhY2hlIGluIGRyaXZlIHN0b3JhZ2U6ICR7ZmlsZW5hbWV9YCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgaHR0cHM6Ly9hcGkua29udHVyLnJ1L2RyaXZlL3YxL3B1YmxpYy8ke2ZpbGVuYW1lfWApO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhgRHJpdmUgcmVzcG9uc2Ugc3RhdHVzIGNvZGU6ICR7cmVzcG9uc2Uuc3RhdHVzLnRvU3RyaW5nKCl9YCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZShmaWxlUGF0aCwgYXdhaXQgcmVzcG9uc2UuYnVmZmVyKCksIFwidXRmLThcIik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWxlUGF0aDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBDYWNoZSBmaWxlIG5vdCBmb3VuZCBpbiBkcml2ZSBzdG9yYWdlOiAke2ZpbGVuYW1lfS4gR0ZWOiAke2dmdn0sIEdlbmVyYXRvclZlcnNpb246ICR7Z2VuZXJhdG9yVmVyc2lvbn0sIERlcGVuZGVuY2llc0hhc2g6ICR7ZGVwc0hhc2h9YFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBEcml2ZSBzdG9yYWdlIHNlbnQgJHtyZXNwb25zZS5zdGF0dXN9IHN0YXR1cyBjb2RlLCBJIGRvbid0IHByb2Nlc3MgaXQgaW4gYW55IHdheWBcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXCJEcml2ZSBzdG9yYWdlIHJlc3BvbmRlZCB3aXRoIGFuIGVycm9yXCIpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFwiVGhlIGJ1aWxkIHdpbGwgY29udGludWUgd2l0aG91dCBhIGNhY2hlXCIpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNsYXNzIENhY2hlRmlsZSB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgY29udGVudEZpbGVuYW1lID0gXCJjb250ZW50Lmpzb25cIjtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBsb2dnZXIgPSBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiQlVJTERfQ0FDSEVcIik7XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldENhY2hlRmlsZVBhdGgoXG4gICAgICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGdlbmVyYXRvclZlcnNpb246IHN0cmluZyxcbiAgICAgICAgZGVwc0hhc2g6IHN0cmluZ1xuICAgICk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gYCR7bWQ1KGdmdil9LSR7bWQ1KGdlbmVyYXRvclZlcnNpb24pfS0ke2RlcHNIYXNofS56aXBgO1xuICAgICAgICByZXR1cm4gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiLmJ1aWxkLWNhY2hlXCIsIFwiY29tcGlsZVwiLCBmaWxlTmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhc3luYyB3cml0ZShjYWNoZUZpbGVQYXRoOiBzdHJpbmcsIGNvbnRlbnQ6IEJ1aWxkUmVzdWx0c1NlcmlhbGl6ZWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgemlwID0gbmV3IEFkbVppcCgpO1xuICAgICAgICB6aXAuYWRkRmlsZShDYWNoZUZpbGUuY29udGVudEZpbGVuYW1lLCBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShjb250ZW50KSwgXCJ1dGY4XCIpKTtcbiAgICAgICAgemlwLndyaXRlWmlwKGNhY2hlRmlsZVBhdGgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgcmVhZChjYWNoZUZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPEJ1aWxkUmVzdWx0c1NlcmlhbGl6ZWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHppcCA9IG5ldyBBZG1aaXAoY2FjaGVGaWxlUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBmaWxlQ29udGVudCA9IHppcC5yZWFkQXNUZXh0KENhY2hlRmlsZS5jb250ZW50RmlsZW5hbWUsIFwidXRmLThcIik7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShmaWxlQ29udGVudCkgYXMgQnVpbGRSZXN1bHRzU2VyaWFsaXplZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgQ2FjaGVGaWxlLmxvZ2dlci53YXJuaW5nKGBGYWlsZWQgdG8gdW56aXA6ICR7Y2FjaGVGaWxlUGF0aH1gKTtcbiAgICAgICAgICAgIENhY2hlRmlsZS5sb2dnZXIud2FybmluZyhgJHtlfWApO1xuICAgICAgICAgICAgY29uc3QgZmlsZUNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShjYWNoZUZpbGVQYXRoLCBcInV0Zi04XCIpO1xuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZmlsZUNvbnRlbnQpIGFzIEJ1aWxkUmVzdWx0c1NlcmlhbGl6ZWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxJQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxHQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFELHNCQUFBLENBQUFILE9BQUE7QUFFQSxJQUFBSyxVQUFBLEdBQUFGLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTSxPQUFBLEdBQUFILHNCQUFBLENBQUFILE9BQUE7QUFHQSxJQUFBTyxlQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxZQUFBLEdBQUFSLE9BQUE7QUFFQSxJQUFBUyxhQUFBLEdBQUFULE9BQUE7QUFBNEQsU0FBQVUseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQVosd0JBQUFZLENBQUEsRUFBQUUs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
|
|
180
|
+
//# sourceMappingURL=CacheAssetsPlugin.js.map
|
|
@@ -37,7 +37,7 @@ async function createConfigVariant(options) {
|
|
|
37
37
|
extensions: [".js", ".jsx"]
|
|
38
38
|
},
|
|
39
39
|
entry: [_path.default.join(formPath, "form", "./web")],
|
|
40
|
-
devtool: options.mode === "production" ? "hidden-source-map" : "
|
|
40
|
+
devtool: options.mode === "production" ? "hidden-source-map" : "source-map",
|
|
41
41
|
cache: options.mode === "development" ? {
|
|
42
42
|
type: "memory",
|
|
43
43
|
maxGenerations: 5
|
|
@@ -142,4 +142,4 @@ function createConfig(options) {
|
|
|
142
142
|
}
|
|
143
143
|
return Promise.all(result);
|
|
144
144
|
}
|
|
145
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX21pbmlDc3NFeHRyYWN0UGx1Z2luIiwiX3dlYnBhY2siLCJfQ2FjaGVBc3NldHNQbHVnaW4iLCJjcmVhdGVDb25maWdWYXJpYW50Iiwib3B0aW9ucyIsImdmdiIsImZpbGVOYW1lU3VmZml4IiwibW9kZSIsImZvcm1QYXRoIiwiYnVpbGRDYWNoZSIsImJ1aWxkQ2FjaGVPcHRpb25zIiwidW5kZWZpbmVkIiwiQnVpbGRDYWNoZSIsImZhcm1EaXJlY3RvcnkiLCJidWlsZENhY2hlV2VicGFja1BsdWdpbiIsImNyZWF0ZVdlYnBhY2tQbHVnaW4iLCJ0YXJnZXQiLCJjb250ZXh0Iiwib3V0cHV0IiwiZmlsZW5hbWUiLCJwYXRoIiwicmVzb3VyY2VzRGlyZWN0b3J5UGF0aCIsInB1YmxpY1BhdGgiLCJyZXNvbHZlIiwiYWxpYXMiLCJqb2luIiwiX19kaXJuYW1lIiwidmFyaWFibGVzIiwiUmVzb3VyY2VzIiwiZXh0ZW5zaW9ucyIsImVudHJ5IiwiZGV2dG9vbCIsImNhY2hlIiwidHlwZSIsIm1heEdlbmVyYXRpb25zIiwibW9kdWxlIiwicnVsZXMiLCJ0ZXN0IiwidXNlIiwibG9hZGVyIiwiTWluaUNzc0V4dHJhY3RQbHVnaW4iLCJtb2R1bGVzIiwibG9jYWxJZGVudE5hbWUiLCJwb3N0Y3NzT3B0aW9ucyIsImlkZW50IiwicGx1Z2lucyIsIm92ZXJyaWRlQnJvd3NlcnNsaXN0IiwiYmFiZWxyYyIsImNvbmZpZ0ZpbGUiLCJwcmVzZXRzIiwidGFyZ2V0cyIsImJyb3dzZXJzIiwibG9vc2UiLCJsZWdhY3kiLCJmdWxseVNwZWNpZmllZCIsImV4Y2x1ZGUiLCJuYW1lIiwid2VicGFjayIsIkRlZmluZVBsdWdpbiIsIkdGViIsIkpTT04iLCJzdHJpbmdpZnkiLCJOT0RFX0VOViIsIlJFU09VUkNFU19IQVNIIiwicmVzb3VyY2VzSGFzaCIsImZpbHRlciIsImlzTm90TnVsbE9yVW5kZWZpbmVkIiwiaW5wdXQiLCJjcmVhdGVDb25maWciLCJyZXN1bHQiLCJtb2RlcyIsInB1c2giLCJQcm9taXNlIiwiYWxsIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL0Zvcm1XZWJwYWNrQ29uZmlndXJhdGlvbi9jcmVhdGVGb3JtV2VicGFja0NvbmZpZ3VyYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGUgbm8tYW55IG5vLXVuc2FmZS1hbnkgbm8taW52YWxpZC10aGlzXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgTWluaUNzc0V4dHJhY3RQbHVnaW4gZnJvbSBcIm1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXCI7XG5pbXBvcnQgd2VicGFjaywgeyBDb25maWd1cmF0aW9uIH0gZnJvbSBcIndlYnBhY2tcIjtcblxuaW1wb3J0IHsgQnVpbGRDYWNoZSwgRm9ybUJ1aWxkQ2FjaGVPcHRpb25zIH0gZnJvbSBcIi4vQ2FjaGVBc3NldHNQbHVnaW5cIjtcblxuaW50ZXJmYWNlIENyZWF0ZVdlYnBhY2tDb25maWd1cmF0aW9uVmFyaWFudE9wdGlvbnMge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIHJlc291cmNlc0hhc2g6IHN0cmluZztcbiAgICBmb3JtUGF0aDogc3RyaW5nO1xuICAgIG1vZGU/OiBcInByb2R1Y3Rpb25cIiB8IFwiZGV2ZWxvcG1lbnRcIjtcbiAgICByZXNvdXJjZXNEaXJlY3RvcnlQYXRoOiBzdHJpbmc7XG4gICAgYnVpbGRDYWNoZU9wdGlvbnM/OiBGb3JtQnVpbGRDYWNoZU9wdGlvbnM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ1ZhcmlhbnQob3B0aW9uczogQ3JlYXRlV2VicGFja0NvbmZpZ3VyYXRpb25WYXJpYW50T3B0aW9ucyk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIGNvbnN0IHsgZ2Z2IH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgZmlsZU5hbWVTdWZmaXggPSBvcHRpb25zLm1vZGUgPT09IFwicHJvZHVjdGlvblwiID8gXCIubWluXCIgOiBcIlwiO1xuXG4gICAgY29uc3QgZm9ybVBhdGggPSBvcHRpb25zLmZvcm1QYXRoO1xuICAgIGNvbnN0IGJ1aWxkQ2FjaGUgPVxuICAgICAgICBvcHRpb25zLmJ1aWxkQ2FjaGVPcHRpb25zICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBuZXcgQnVpbGRDYWNoZShvcHRpb25zLmJ1aWxkQ2FjaGVPcHRpb25zLmZhcm1EaXJlY3RvcnksIG9wdGlvbnMuYnVpbGRDYWNoZU9wdGlvbnMubW9kZSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgYnVpbGRDYWNoZVdlYnBhY2tQbHVnaW4gPVxuICAgICAgICBidWlsZENhY2hlICE9IHVuZGVmaW5lZCAmJiBvcHRpb25zLmJ1aWxkQ2FjaGVPcHRpb25zICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBhd2FpdCBidWlsZENhY2hlLmNyZWF0ZVdlYnBhY2tQbHVnaW4ob3B0aW9ucy5idWlsZENhY2hlT3B0aW9ucylcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgbW9kZTogb3B0aW9ucy5tb2RlLFxuICAgICAgICB0YXJnZXQ6IFtcIndlYlwiLCBcImVzNVwiXSxcbiAgICAgICAgY29udGV4dDogZm9ybVBhdGgsXG4gICAgICAgIG91dHB1dDoge1xuICAgICAgICAgICAgZmlsZW5hbWU6IGBwdWJsaWMvc2NyaXB0cy8ke2dmdn0ke2ZpbGVOYW1lU3VmZml4fS5qc2AsXG4gICAgICAgICAgICBwYXRoOiBvcHRpb25zLnJlc291cmNlc0RpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICBwdWJsaWNQYXRoOiBcIi9zdGF0aWMvXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmU6IHtcbiAgICAgICAgICAgIGFsaWFzOiB7XG4gICAgICAgICAgICAgICAgXCJ2YXJpYWJsZXMubGVzc1wiOiBwYXRoLnJlc29sdmUocGF0aC5qb2luKF9fZGlybmFtZSwgXCJ2YXJpYWJsZXMubGVzc1wiKSksXG4gICAgICAgICAgICAgICAgdmFyaWFibGVzOiBwYXRoLnJlc29sdmUocGF0aC5qb2luKF9fZGlybmFtZSwgXCJ2YXJpYWJsZXMubGVzc1wiKSksXG4gICAgICAgICAgICAgICAgUmVzb3VyY2VzOiBwYXRoLmpvaW4oZm9ybVBhdGgsIFwiZm9ybVwiLCBcInJlc291cmNlc1wiKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleHRlbnNpb25zOiBbXCIuanNcIiwgXCIuanN4XCJdLFxuICAgICAgICB9LFxuICAgICAgICBlbnRyeTogW3BhdGguam9pbihmb3JtUGF0aCwgXCJmb3JtXCIsIFwiLi93ZWJcIildLFxuICAgICAgICBkZXZ0b29sOiBvcHRpb25zLm1vZGUgPT09IFwicHJvZHVjdGlvblwiID8gXCJoaWRkZW4tc291cmNlLW1hcFwiIDogXCJpbmxpbmUtc291cmNlLW1hcFwiLFxuICAgICAgICBjYWNoZTpcbiAgICAgICAgICAgIG9wdGlvbnMubW9kZSA9PT0gXCJkZXZlbG9wbWVudFwiXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJtZW1vcnlcIixcbiAgICAgICAgICAgICAgICAgICAgICBtYXhHZW5lcmF0aW9uczogNSxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IGZhbHNlLFxuICAgICAgICBtb2R1bGU6IHtcbiAgICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0ZXN0OiAvXFwubGVzcyQvLFxuICAgICAgICAgICAgICAgICAgICB1c2U6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlcjogTWluaUNzc0V4dHJhY3RQbHVnaW4ubG9hZGVyIGFzIGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7IHB1YmxpY1BhdGg6IFwiLi4vLi4vXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyOiByZXF1aXJlLnJlc29sdmUoXCJjc3MtbG9hZGVyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxJZGVudE5hbWU6IFwiW2hhc2g6YmFzZTY0OjVdXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyOiByZXF1aXJlLnJlc29sdmUoXCJwb3N0Y3NzLWxvYWRlclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Rjc3NPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudDogXCJwb3N0Y3NzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZSBuby1yZXF1aXJlLWltcG9ydHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUoXCJhdXRvcHJlZml4ZXJcIikoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDQn9GA0L7RgdGC0L4g0LTQtdGE0L7Qu9GC0L3Ri9C1INC30L3QsNGH0LXQvdC40LUg0LjQtyDRgtC10LrRg9GJ0LXQs9C+ICgxLjcuNykgYnJvd3NlcnNsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlQnJvd3NlcnNsaXN0OiBcIj4gMSUsIGxhc3QgMiB2ZXJzaW9ucywgRmlyZWZveCBFU1JcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyOiByZXF1aXJlLnJlc29sdmUoXCJsZXNzLWxvYWRlclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRlc3Q6IC9cXC5qc3g/JC8sXG4gICAgICAgICAgICAgICAgICAgIHVzZTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlcjogcmVxdWlyZS5yZXNvbHZlKFwiYmFiZWwtbG9hZGVyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFiZWxyYzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0ZpbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlLnJlc29sdmUoXCJAYmFiZWwvcHJlc2V0LXJlYWN0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUucmVzb2x2ZShcIkBiYWJlbC9wcmVzZXQtZW52XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0czogeyBicm93c2VyczogXCI+IDAlXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vc2U6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlLnJlc29sdmUoXCJAYmFiZWwvcGx1Z2luLXByb3Bvc2FsLWRlY29yYXRvcnNcIiksIHsgbGVnYWN5OiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmUucmVzb2x2ZShcIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWNsYXNzLXByb3BlcnRpZXNcIiksIHsgbG9vc2U6IHRydWUgfV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlLnJlc29sdmUoXCJAYmFiZWwvcGx1Z2luLXByb3Bvc2FsLWV4cG9ydC1kZWZhdWx0LWZyb21cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGx5U3BlY2lmaWVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXhjbHVkZTogWy9ub2RlX21vZHVsZXMvXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGVzdDogL1xcLihwbmd8c3ZnKSQvLFxuICAgICAgICAgICAgICAgICAgICBsb2FkZXI6IHJlcXVpcmUucmVzb2x2ZShcImZpbGUtbG9hZGVyXCIpLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7IG5hbWU6IFwicHVibGljL2ltYWdlcy9baGFzaF0uW2V4dF1cIiB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0ZXN0OiAvXFwuKHR0Znxlb3R8d29mZjI/KSQvLFxuICAgICAgICAgICAgICAgICAgICBsb2FkZXI6IHJlcXVpcmUucmVzb2x2ZShcImZpbGUtbG9hZGVyXCIpLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7IG5hbWU6IFwicHVibGljL2ZvbnRzL1toYXNoXS5bZXh0XVwiIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Ig0J/QvtGH0LjQvdC40YLRgdGPLCDQutC+0LPQtNCwINCy0YHQtSDQu9C40LHRiyDQvtCx0L3QvtCy0Y/RgtGB0Y9cbiAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgICAgbmV3IE1pbmlDc3NFeHRyYWN0UGx1Z2luKHtcbiAgICAgICAgICAgICAgICBmaWxlbmFtZTogYHB1YmxpYy9zdHlsZXMvJHtnZnZ9JHtmaWxlTmFtZVN1ZmZpeH0uY3NzYCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IHdlYnBhY2suRGVmaW5lUGx1Z2luKHtcbiAgICAgICAgICAgICAgICBcInByb2Nlc3MuZW52XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgR0ZWOiBKU09OLnN0cmluZ2lmeShnZnYpLFxuICAgICAgICAgICAgICAgICAgICBOT0RFX0VOVjogSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5tb2RlKSxcbiAgICAgICAgICAgICAgICAgICAgUkVTT1VSQ0VTX0hBU0g6IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMucmVzb3VyY2VzSGFzaCksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgYnVpbGRDYWNoZVdlYnBhY2tQbHVnaW4sXG4gICAgICAgIF0uZmlsdGVyKGlzTm90TnVsbE9yVW5kZWZpbmVkKSxcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBpc05vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCB8IHVuZGVmaW5lZCB8IG51bGwpOiBpbnB1dCBpcyBUIHtcbiAgICByZXR1cm4gaW5wdXQgIT0gdW5kZWZpbmVkO1xufVxuXG50eXBlIEJ1aWxkTW9kZSA9IFwicHJvZHVjdGlvblwiIHwgXCJkZXZlbG9wbWVudFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVdlYnBhY2tDb25maWd1cmF0aW9uT3B0aW9ucyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgcmVzb3VyY2VzSGFzaDogc3RyaW5nO1xuICAgIGZvcm1QYXRoOiBzdHJpbmc7XG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5UGF0aDogc3RyaW5nO1xuICAgIG1vZGVzOiBCdWlsZE1vZGVbXTtcbiAgICBidWlsZENhY2hlT3B0aW9ucz86IEZvcm1CdWlsZENhY2hlT3B0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbmZpZyhvcHRpb25zOiBDcmVhdGVXZWJwYWNrQ29uZmlndXJhdGlvbk9wdGlvbnMpOiBQcm9taXNlPENvbmZpZ3VyYXRpb25bXT4ge1xuICAgIGNvbnN0IHJlc3VsdDogQXJyYXk8UHJvbWlzZTxDb25maWd1cmF0aW9uPj4gPSBbXTtcblxuICAgIGZvciAoY29uc3QgbW9kZSBvZiBvcHRpb25zLm1vZGVzKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICAgICAgY3JlYXRlQ29uZmlnVmFyaWFudCh7XG4gICAgICAgICAgICAgICAgZ2Z2OiBvcHRpb25zLmdmdixcbiAgICAgICAgICAgICAgICByZXNvdXJjZXNIYXNoOiBvcHRpb25zLnJlc291cmNlc0hhc2gsXG4gICAgICAgICAgICAgICAgZm9ybVBhdGg6IG9wdGlvbnMuZm9ybVBhdGgsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5UGF0aDogb3B0aW9ucy5yZXNvdXJjZXNEaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgICAgIG1vZGU6IG1vZGUsXG4gICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnM6IG9wdGlvbnMuYnVpbGRDYWNoZU9wdGlvbnMsXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocmVzdWx0KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLHFCQUFBLEdB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
|
|
145
|
+
//# sourceMappingURL=createFormWebpackConfiguration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createFormWebpackConfiguration.js","names":["_path","_interopRequireDefault","require","_miniCssExtractPlugin","_webpack","_CacheAssetsPlugin","createConfigVariant","options","gfv","fileNameSuffix","mode","formPath","buildCache","buildCacheOptions","undefined","BuildCache","farmDirectory","buildCacheWebpackPlugin","createWebpackPlugin","target","context","output","filename","path","resourcesDirectoryPath","publicPath","resolve","alias","join","__dirname","variables","Resources","extensions","entry","devtool","cache","type","maxGenerations","module","rules","test","use","loader","MiniCssExtractPlugin","modules","localIdentName","postcssOptions","ident","plugins","overrideBrowserslist","babelrc","configFile","presets","targets","browsers","loose","legacy","fullySpecified","exclude","name","webpack","DefinePlugin","GFV","JSON","stringify","NODE_ENV","RESOURCES_HASH","resourcesHash","filter","isNotNullOrUndefined","input","createConfig","result","modes","push","Promise","all"],"sources":["../../../../src/FormWebpackConfiguration/createFormWebpackConfiguration.ts"],"sourcesContent":["// tslint:disable no-any no-unsafe-any no-invalid-this\nimport path from \"path\";\n\nimport MiniCssExtractPlugin from \"mini-css-extract-plugin\";\nimport webpack, { Configuration } from \"webpack\";\n\nimport { BuildCache, FormBuildCacheOptions } from \"./CacheAssetsPlugin\";\n\ninterface CreateWebpackConfigurationVariantOptions {\n gfv: string;\n resourcesHash: string;\n formPath: string;\n mode?: \"production\" | \"development\";\n resourcesDirectoryPath: string;\n buildCacheOptions?: FormBuildCacheOptions;\n}\n\nasync function createConfigVariant(options: CreateWebpackConfigurationVariantOptions): Promise<Configuration> {\n const { gfv } = options;\n\n const fileNameSuffix = options.mode === \"production\" ? \".min\" : \"\";\n\n const formPath = options.formPath;\n const buildCache =\n options.buildCacheOptions != undefined\n ? new BuildCache(options.buildCacheOptions.farmDirectory, options.buildCacheOptions.mode)\n : undefined;\n\n const buildCacheWebpackPlugin =\n buildCache != undefined && options.buildCacheOptions != undefined\n ? await buildCache.createWebpackPlugin(options.buildCacheOptions)\n : undefined;\n\n return {\n mode: options.mode,\n target: [\"web\", \"es5\"],\n context: formPath,\n output: {\n filename: `public/scripts/${gfv}${fileNameSuffix}.js`,\n path: options.resourcesDirectoryPath,\n publicPath: \"/static/\",\n },\n resolve: {\n alias: {\n \"variables.less\": path.resolve(path.join(__dirname, \"variables.less\")),\n variables: path.resolve(path.join(__dirname, \"variables.less\")),\n Resources: path.join(formPath, \"form\", \"resources\"),\n },\n extensions: [\".js\", \".jsx\"],\n },\n entry: [path.join(formPath, \"form\", \"./web\")],\n devtool: options.mode === \"production\" ? \"hidden-source-map\" : \"inline-source-map\",\n cache:\n options.mode === \"development\"\n ? {\n type: \"memory\",\n maxGenerations: 5,\n }\n : false,\n module: {\n rules: [\n {\n test: /\\.less$/,\n use: [\n {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loader: MiniCssExtractPlugin.loader as any,\n options: { publicPath: \"../../\" },\n },\n {\n loader: require.resolve(\"css-loader\"),\n options: {\n modules: {\n localIdentName: \"[hash:base64:5]\",\n },\n },\n },\n {\n loader: require.resolve(\"postcss-loader\"),\n options: {\n postcssOptions: {\n ident: \"postcss\",\n // tslint:disable no-require-imports\n plugins: [\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n require(\"autoprefixer\")({\n // Просто дефолтные значение из текущего (1.7.7) browserslist\n overrideBrowserslist: \"> 1%, last 2 versions, Firefox ESR\",\n }),\n ],\n },\n },\n },\n {\n loader: require.resolve(\"less-loader\"),\n },\n ],\n },\n {\n test: /\\.jsx?$/,\n use: [\n {\n loader: require.resolve(\"babel-loader\"),\n options: {\n babelrc: false,\n configFile: false,\n presets: [\n require.resolve(\"@babel/preset-react\"),\n [\n require.resolve(\"@babel/preset-env\"),\n {\n targets: { browsers: \"> 0%\" },\n loose: true,\n },\n ],\n ],\n plugins: [\n [require.resolve(\"@babel/plugin-proposal-decorators\"), { legacy: true }],\n [require.resolve(\"@babel/plugin-transform-class-properties\"), { loose: true }],\n require.resolve(\"@babel/plugin-proposal-export-default-from\"),\n ],\n },\n },\n ],\n resolve: {\n fullySpecified: false,\n },\n exclude: [/node_modules/],\n },\n {\n test: /\\.(png|svg)$/,\n loader: require.resolve(\"file-loader\"),\n options: { name: \"public/images/[hash].[ext]\" },\n },\n {\n test: /\\.(ttf|eot|woff2?)$/,\n loader: require.resolve(\"file-loader\"),\n options: { name: \"public/fonts/[hash].[ext]\" },\n },\n ],\n },\n // @ts-expect-error Починится, когда все либы обновятся\n plugins: [\n new MiniCssExtractPlugin({\n filename: `public/styles/${gfv}${fileNameSuffix}.css`,\n }),\n new webpack.DefinePlugin({\n \"process.env\": {\n GFV: JSON.stringify(gfv),\n NODE_ENV: JSON.stringify(options.mode),\n RESOURCES_HASH: JSON.stringify(options.resourcesHash),\n },\n }),\n buildCacheWebpackPlugin,\n ].filter(isNotNullOrUndefined),\n };\n}\n\nfunction isNotNullOrUndefined<T>(input: T | undefined | null): input is T {\n return input != undefined;\n}\n\ntype BuildMode = \"production\" | \"development\";\n\nexport interface CreateWebpackConfigurationOptions {\n gfv: string;\n resourcesHash: string;\n formPath: string;\n resourcesDirectoryPath: string;\n modes: BuildMode[];\n buildCacheOptions?: FormBuildCacheOptions;\n}\n\nexport function createConfig(options: CreateWebpackConfigurationOptions): Promise<Configuration[]> {\n const result: Array<Promise<Configuration>> = [];\n\n for (const mode of options.modes) {\n result.push(\n createConfigVariant({\n gfv: options.gfv,\n resourcesHash: options.resourcesHash,\n formPath: options.formPath,\n resourcesDirectoryPath: options.resourcesDirectoryPath,\n mode: mode,\n buildCacheOptions: options.buildCacheOptions,\n })\n );\n }\n return Promise.all(result);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"createFormWebpackConfiguration.js","names":["_path","_interopRequireDefault","require","_miniCssExtractPlugin","_webpack","_CacheAssetsPlugin","createConfigVariant","options","gfv","fileNameSuffix","mode","formPath","buildCache","buildCacheOptions","undefined","BuildCache","farmDirectory","buildCacheWebpackPlugin","createWebpackPlugin","target","context","output","filename","path","resourcesDirectoryPath","publicPath","resolve","alias","join","__dirname","variables","Resources","extensions","entry","devtool","cache","type","maxGenerations","module","rules","test","use","loader","MiniCssExtractPlugin","modules","localIdentName","postcssOptions","ident","plugins","overrideBrowserslist","babelrc","configFile","presets","targets","browsers","loose","legacy","fullySpecified","exclude","name","webpack","DefinePlugin","GFV","JSON","stringify","NODE_ENV","RESOURCES_HASH","resourcesHash","filter","isNotNullOrUndefined","input","createConfig","result","modes","push","Promise","all"],"sources":["../../../../src/FormWebpackConfiguration/createFormWebpackConfiguration.ts"],"sourcesContent":["// tslint:disable no-any no-unsafe-any no-invalid-this\nimport path from \"path\";\n\nimport MiniCssExtractPlugin from \"mini-css-extract-plugin\";\nimport webpack, { Configuration } from \"webpack\";\n\nimport { BuildCache, FormBuildCacheOptions } from \"./CacheAssetsPlugin\";\n\ninterface CreateWebpackConfigurationVariantOptions {\n gfv: string;\n resourcesHash: string;\n formPath: string;\n mode?: \"production\" | \"development\";\n resourcesDirectoryPath: string;\n buildCacheOptions?: FormBuildCacheOptions;\n}\n\nasync function createConfigVariant(options: CreateWebpackConfigurationVariantOptions): Promise<Configuration> {\n const { gfv } = options;\n\n const fileNameSuffix = options.mode === \"production\" ? \".min\" : \"\";\n\n const formPath = options.formPath;\n const buildCache =\n options.buildCacheOptions != undefined\n ? new BuildCache(options.buildCacheOptions.farmDirectory, options.buildCacheOptions.mode)\n : undefined;\n\n const buildCacheWebpackPlugin =\n buildCache != undefined && options.buildCacheOptions != undefined\n ? await buildCache.createWebpackPlugin(options.buildCacheOptions)\n : undefined;\n\n return {\n mode: options.mode,\n target: [\"web\", \"es5\"],\n context: formPath,\n output: {\n filename: `public/scripts/${gfv}${fileNameSuffix}.js`,\n path: options.resourcesDirectoryPath,\n publicPath: \"/static/\",\n },\n resolve: {\n alias: {\n \"variables.less\": path.resolve(path.join(__dirname, \"variables.less\")),\n variables: path.resolve(path.join(__dirname, \"variables.less\")),\n Resources: path.join(formPath, \"form\", \"resources\"),\n },\n extensions: [\".js\", \".jsx\"],\n },\n entry: [path.join(formPath, \"form\", \"./web\")],\n devtool: options.mode === \"production\" ? \"hidden-source-map\" : \"source-map\",\n cache:\n options.mode === \"development\"\n ? {\n type: \"memory\",\n maxGenerations: 5,\n }\n : false,\n module: {\n rules: [\n {\n test: /\\.less$/,\n use: [\n {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loader: MiniCssExtractPlugin.loader as any,\n options: { publicPath: \"../../\" },\n },\n {\n loader: require.resolve(\"css-loader\"),\n options: {\n modules: {\n localIdentName: \"[hash:base64:5]\",\n },\n },\n },\n {\n loader: require.resolve(\"postcss-loader\"),\n options: {\n postcssOptions: {\n ident: \"postcss\",\n // tslint:disable no-require-imports\n plugins: [\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n require(\"autoprefixer\")({\n // Просто дефолтные значение из текущего (1.7.7) browserslist\n overrideBrowserslist: \"> 1%, last 2 versions, Firefox ESR\",\n }),\n ],\n },\n },\n },\n {\n loader: require.resolve(\"less-loader\"),\n },\n ],\n },\n {\n test: /\\.jsx?$/,\n use: [\n {\n loader: require.resolve(\"babel-loader\"),\n options: {\n babelrc: false,\n configFile: false,\n presets: [\n require.resolve(\"@babel/preset-react\"),\n [\n require.resolve(\"@babel/preset-env\"),\n {\n targets: { browsers: \"> 0%\" },\n loose: true,\n },\n ],\n ],\n plugins: [\n [require.resolve(\"@babel/plugin-proposal-decorators\"), { legacy: true }],\n [require.resolve(\"@babel/plugin-transform-class-properties\"), { loose: true }],\n require.resolve(\"@babel/plugin-proposal-export-default-from\"),\n ],\n },\n },\n ],\n resolve: {\n fullySpecified: false,\n },\n exclude: [/node_modules/],\n },\n {\n test: /\\.(png|svg)$/,\n loader: require.resolve(\"file-loader\"),\n options: { name: \"public/images/[hash].[ext]\" },\n },\n {\n test: /\\.(ttf|eot|woff2?)$/,\n loader: require.resolve(\"file-loader\"),\n options: { name: \"public/fonts/[hash].[ext]\" },\n },\n ],\n },\n // @ts-expect-error Починится, когда все либы обновятся\n plugins: [\n new MiniCssExtractPlugin({\n filename: `public/styles/${gfv}${fileNameSuffix}.css`,\n }),\n new webpack.DefinePlugin({\n \"process.env\": {\n GFV: JSON.stringify(gfv),\n NODE_ENV: JSON.stringify(options.mode),\n RESOURCES_HASH: JSON.stringify(options.resourcesHash),\n },\n }),\n buildCacheWebpackPlugin,\n ].filter(isNotNullOrUndefined),\n };\n}\n\nfunction isNotNullOrUndefined<T>(input: T | undefined | null): input is T {\n return input != undefined;\n}\n\ntype BuildMode = \"production\" | \"development\";\n\nexport interface CreateWebpackConfigurationOptions {\n gfv: string;\n resourcesHash: string;\n formPath: string;\n resourcesDirectoryPath: string;\n modes: BuildMode[];\n buildCacheOptions?: FormBuildCacheOptions;\n}\n\nexport function createConfig(options: CreateWebpackConfigurationOptions): Promise<Configuration[]> {\n const result: Array<Promise<Configuration>> = [];\n\n for (const mode of options.modes) {\n result.push(\n createConfigVariant({\n gfv: options.gfv,\n resourcesHash: options.resourcesHash,\n formPath: options.formPath,\n resourcesDirectoryPath: options.resourcesDirectoryPath,\n mode: mode,\n buildCacheOptions: options.buildCacheOptions,\n })\n );\n }\n return Promise.all(result);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -51,4 +51,4 @@ ${commandDefs.map(createCommandReadMe).join("\n")}
|
|
|
51
51
|
`.trim();
|
|
52
52
|
}
|
|
53
53
|
(0, _fs.writeFileSync)("README.md", createReadMe());
|
|
54
|
-
//# sourceMappingURL=
|
|
54
|
+
//# sourceMappingURL=GenerateReadMe.js.map
|