@veloceapps/sdk 4.0.21-0 → 5.0.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.
Files changed (265) hide show
  1. package/bundles/{veloceapps-sdk-cms.umd.js → veloce-sdk-cms.umd.js} +74 -147
  2. package/bundles/veloce-sdk-cms.umd.js.map +1 -0
  3. package/bundles/{veloceapps-sdk-core.umd.js → veloce-sdk-core.umd.js} +44 -111
  4. package/bundles/veloce-sdk-core.umd.js.map +1 -0
  5. package/bundles/{veloceapps-sdk-runtime.umd.js → veloce-sdk-runtime.umd.js} +146 -213
  6. package/bundles/veloce-sdk-runtime.umd.js.map +1 -0
  7. package/bundles/{veloceapps-sdk.umd.js → veloce-sdk.umd.js} +130 -197
  8. package/bundles/veloce-sdk.umd.js.map +1 -0
  9. package/cms/cms.default.d.ts +2 -2
  10. package/cms/components/element-renderer/element-renderer.component.d.ts +1 -1
  11. package/cms/components/preview/preview.component.d.ts +1 -1
  12. package/cms/components/preview/preview.module.d.ts +1 -1
  13. package/cms/injection-tokens.d.ts +1 -1
  14. package/cms/launcher.module.d.ts +3 -3
  15. package/cms/modules/federated/federated.module.d.ts +1 -1
  16. package/cms/package.json +7 -7
  17. package/cms/services/launcher.service.d.ts +1 -1
  18. package/cms/types/configuration.types.d.ts +1 -1
  19. package/cms/utils/element.utils.d.ts +1 -1
  20. package/cms/utils/elements-resolver.d.ts +1 -1
  21. package/{veloceapps-sdk.d.ts → cms/veloce-sdk-cms.d.ts} +1 -1
  22. package/cms/vendor-map.d.ts +78 -81
  23. package/core/modules/configuration/configuration.module.d.ts +1 -1
  24. package/core/modules/configuration/helpers.d.ts +1 -1
  25. package/core/modules/configuration/services/configuration-runtime.service.d.ts +3 -3
  26. package/core/modules/configuration/services/configuration.service.d.ts +2 -2
  27. package/core/modules/configuration/services/runtime-context.service.d.ts +1 -1
  28. package/core/modules/configuration/types/configuration-runtime.types.d.ts +1 -1
  29. package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +2 -2
  30. package/core/modules/flow-configuration/services/flow-update.service.d.ts +1 -1
  31. package/core/package.json +7 -7
  32. package/core/services/context.service.d.ts +2 -2
  33. package/core/services/product-images.service.d.ts +1 -1
  34. package/core/services/quote-draft.service.d.ts +2 -2
  35. package/core/types/quote-states.types.d.ts +1 -1
  36. package/core/types/runtime.types.d.ts +1 -1
  37. package/core/utils/line-item.utils.d.ts +1 -1
  38. package/core/utils/line-item.worker.d.ts +1 -1
  39. package/{cms/veloceapps-sdk-cms.d.ts → core/veloce-sdk-core.d.ts} +1 -1
  40. package/esm2015/cms/cms.default.js +1 -1
  41. package/esm2015/cms/components/element-children/element-children.component.js +3 -3
  42. package/esm2015/cms/components/element-children/element-children.module.js +4 -4
  43. package/esm2015/cms/components/element-renderer/element-renderer.component.js +6 -6
  44. package/esm2015/cms/components/element-renderer/element-renderer.module.js +4 -4
  45. package/esm2015/cms/components/plugin.component.js +3 -3
  46. package/esm2015/cms/components/preview/preview.component.js +6 -6
  47. package/esm2015/cms/components/preview/preview.module.js +6 -6
  48. package/esm2015/cms/directives/custom-template.directive.js +3 -3
  49. package/esm2015/cms/injection-tokens.js +1 -1
  50. package/esm2015/cms/launcher.module.js +8 -8
  51. package/esm2015/cms/modules/federated/federated.component.js +4 -4
  52. package/esm2015/cms/modules/federated/federated.module.js +6 -6
  53. package/esm2015/cms/plugins/configuration.plugin.js +5 -5
  54. package/esm2015/cms/plugins/io.plugin.js +3 -3
  55. package/esm2015/cms/plugins/script.plugin.js +5 -5
  56. package/esm2015/cms/services/dynamic-module.service.js +3 -3
  57. package/esm2015/cms/services/element-context.service.js +3 -3
  58. package/esm2015/cms/services/integration.state.js +3 -3
  59. package/esm2015/cms/services/io-provider.service.js +3 -3
  60. package/esm2015/cms/services/launcher.service.js +4 -4
  61. package/esm2015/cms/services/templates.service.js +3 -3
  62. package/esm2015/cms/types/configuration.types.js +1 -1
  63. package/esm2015/cms/utils/element.utils.js +1 -1
  64. package/esm2015/cms/utils/elements-resolver.js +1 -1
  65. package/esm2015/cms/veloce-sdk-cms.js +5 -0
  66. package/esm2015/cms/vendor-map.js +7 -9
  67. package/esm2015/core/core.module.js +4 -4
  68. package/esm2015/core/modules/configuration/configuration.module.js +7 -7
  69. package/esm2015/core/modules/configuration/helpers.js +2 -2
  70. package/esm2015/core/modules/configuration/services/configuration-runtime.service.js +6 -6
  71. package/esm2015/core/modules/configuration/services/configuration.service.js +7 -7
  72. package/esm2015/core/modules/configuration/services/runtime-context.service.js +6 -6
  73. package/esm2015/core/modules/configuration/types/configuration-runtime.types.js +1 -1
  74. package/esm2015/core/modules/flow-configuration/flow-configuration.module.js +6 -6
  75. package/esm2015/core/modules/flow-configuration/services/flow-configuration.service.js +5 -5
  76. package/esm2015/core/modules/flow-configuration/services/flow-update.service.js +5 -5
  77. package/esm2015/core/services/context.service.js +6 -6
  78. package/esm2015/core/services/product-images.service.js +5 -5
  79. package/esm2015/core/services/quote-draft.service.js +6 -6
  80. package/esm2015/core/types/quote-states.types.js +1 -1
  81. package/esm2015/core/types/runtime.types.js +1 -1
  82. package/esm2015/core/utils/line-item.utils.js +2 -2
  83. package/esm2015/core/utils/line-item.worker.js +1 -1
  84. package/esm2015/core/veloce-sdk-core.js +5 -0
  85. package/esm2015/runtime/components/component-preview/component-preview.component.js +7 -7
  86. package/esm2015/runtime/components/section-renderer/section-renderer.component.js +4 -4
  87. package/esm2015/runtime/components/ui-runtime/runtime.component.js +8 -8
  88. package/esm2015/runtime/components/ui-runtime-preview/runtime-preview.component.js +8 -8
  89. package/esm2015/runtime/execution/components/children-placeholder/children-placeholder.component.js +8 -8
  90. package/esm2015/runtime/execution/components/context-provider/context-provider.component.js +5 -5
  91. package/esm2015/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.js +4 -4
  92. package/esm2015/runtime/execution/components/federated/federated.component.js +4 -4
  93. package/esm2015/runtime/execution/components/velo-attribute/velo-attribute.component.js +3 -3
  94. package/esm2015/runtime/execution/components/velo-multiselect/velo-multiselect.component.js +3 -3
  95. package/esm2015/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.js +4 -4
  96. package/esm2015/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.js +6 -6
  97. package/esm2015/runtime/execution/components/velo-port-radio/velo-port-radio.component.js +4 -4
  98. package/esm2015/runtime/execution/components/velo-type/velo-type.component.js +5 -5
  99. package/esm2015/runtime/execution/directives/section-script.directive.js +6 -6
  100. package/esm2015/runtime/execution/directives/sf-query.directive.js +5 -5
  101. package/esm2015/runtime/execution/directives/velo-attribute.directive.js +5 -5
  102. package/esm2015/runtime/execution/directives/velo-port.directive.js +21 -21
  103. package/esm2015/runtime/execution/directives/vl-approval.directive.js +5 -5
  104. package/esm2015/runtime/execution/directives/vl-document-attachments.directive.js +5 -5
  105. package/esm2015/runtime/execution/directives/vl-document-templates.directive.js +5 -5
  106. package/esm2015/runtime/execution/directives/vl-quote.directive.js +6 -6
  107. package/esm2015/runtime/execution/directives/vl-ramp.directive.js +6 -6
  108. package/esm2015/runtime/execution/runtime-execution.module.js +10 -10
  109. package/esm2015/runtime/runtime.module.js +10 -10
  110. package/esm2015/runtime/services/cart.service.js +6 -6
  111. package/esm2015/runtime/services/collapsible-state.service.js +3 -3
  112. package/esm2015/runtime/services/configuration.service.js +9 -9
  113. package/esm2015/runtime/services/current-state.service.js +4 -4
  114. package/esm2015/runtime/services/form-scope.service.js +3 -3
  115. package/esm2015/runtime/services/product-model-cache.service.js +5 -5
  116. package/esm2015/runtime/services/runtime-context.service.js +8 -8
  117. package/esm2015/runtime/services/runtime-form.service.js +5 -5
  118. package/esm2015/runtime/services/runtime.service.js +6 -6
  119. package/esm2015/runtime/services/section-helper.service.js +5 -5
  120. package/esm2015/runtime/services/section-scope.service.js +4 -4
  121. package/esm2015/runtime/services/section-store.service.js +4 -4
  122. package/esm2015/runtime/services/section.service.js +9 -9
  123. package/esm2015/runtime/types/bound-data.types.js +1 -1
  124. package/esm2015/runtime/types/runtime.types.js +1 -1
  125. package/esm2015/runtime/types/script-registry.types.js +2 -2
  126. package/esm2015/runtime/utils/line-item.util.js +2 -2
  127. package/esm2015/runtime/utils/section.utils.js +2 -2
  128. package/esm2015/runtime/utils/sections-binder.helper.js +2 -2
  129. package/esm2015/runtime/veloce-sdk-runtime.js +5 -0
  130. package/esm2015/src/components/dialog/dialog.component.js +3 -3
  131. package/esm2015/src/components/dialog/dialog.module.js +4 -4
  132. package/esm2015/src/components/doc-gen/doc-gen.component.js +11 -11
  133. package/esm2015/src/components/doc-gen/doc-gen.module.js +6 -6
  134. package/esm2015/src/components/header/cart-overlay/cart-preview.component.js +6 -6
  135. package/esm2015/src/components/header/cart-overlay/cart-preview.module.js +6 -6
  136. package/esm2015/src/components/header/header.component.js +10 -10
  137. package/esm2015/src/components/header/header.module.js +6 -6
  138. package/esm2015/src/flow-routing.module.js +4 -4
  139. package/esm2015/src/flow.component.js +7 -7
  140. package/esm2015/src/flow.module.js +9 -9
  141. package/esm2015/src/guards/context.guard.js +6 -6
  142. package/esm2015/src/guards/product-unload.guard.js +5 -5
  143. package/esm2015/src/guards/root.guard.js +3 -3
  144. package/esm2015/src/pages/catalog/catalog.component.js +10 -10
  145. package/esm2015/src/pages/catalog/catalog.module.js +7 -7
  146. package/esm2015/src/pages/debug/debug.component.js +6 -6
  147. package/esm2015/src/pages/debug/debug.module.js +4 -4
  148. package/esm2015/src/pages/empty-account/empty-account.component.js +4 -4
  149. package/esm2015/src/pages/empty-account/empty-account.module.js +7 -7
  150. package/esm2015/src/pages/legacy-product/legacy-product.component.js +9 -9
  151. package/esm2015/src/pages/legacy-product/legacy-product.module.js +6 -6
  152. package/esm2015/src/pages/product/product.component.js +7 -7
  153. package/esm2015/src/pages/product/product.module.js +7 -7
  154. package/esm2015/src/pages/record-not-found/record-not-found.component.js +3 -3
  155. package/esm2015/src/pages/record-not-found/record-not-found.module.js +4 -4
  156. package/esm2015/src/pages/remote/remote.component.js +10 -10
  157. package/esm2015/src/pages/remote/remote.module.js +7 -7
  158. package/esm2015/src/pages/remote/remote.types.js +1 -1
  159. package/esm2015/src/pages/shopping-cart/shopping-cart.component.js +10 -10
  160. package/esm2015/src/pages/shopping-cart/shopping-cart.module.js +7 -7
  161. package/esm2015/src/resolvers/flow.resolver.js +6 -6
  162. package/esm2015/src/resolvers/quote.resolver.js +6 -6
  163. package/esm2015/src/services/doc-gen.service.js +6 -6
  164. package/esm2015/src/services/flow-dialog.service.js +5 -5
  165. package/esm2015/src/services/flow-router.service.js +5 -5
  166. package/esm2015/src/services/flow.service.js +7 -7
  167. package/esm2015/src/types/context-route.types.js +1 -1
  168. package/esm2015/src/types/flow-customization.types.js +1 -1
  169. package/esm2015/src/utils/flow.utils.js +2 -2
  170. package/esm2015/veloce-sdk.js +5 -0
  171. package/fesm2015/{veloceapps-sdk-cms.js → veloce-sdk-cms.js} +73 -75
  172. package/fesm2015/veloce-sdk-cms.js.map +1 -0
  173. package/fesm2015/{veloceapps-sdk-core.js → veloce-sdk-core.js} +41 -41
  174. package/fesm2015/veloce-sdk-core.js.map +1 -0
  175. package/fesm2015/{veloceapps-sdk-runtime.js → veloce-sdk-runtime.js} +148 -148
  176. package/fesm2015/veloce-sdk-runtime.js.map +1 -0
  177. package/fesm2015/{veloceapps-sdk.js → veloce-sdk.js} +134 -134
  178. package/fesm2015/veloce-sdk.js.map +1 -0
  179. package/package.json +12 -13
  180. package/runtime/components/component-preview/component-preview.component.d.ts +1 -1
  181. package/runtime/components/section-renderer/section-renderer.component.d.ts +1 -1
  182. package/runtime/components/ui-runtime/runtime.component.d.ts +2 -2
  183. package/runtime/components/ui-runtime-preview/runtime-preview.component.d.ts +3 -3
  184. package/runtime/execution/components/children-placeholder/children-placeholder.component.d.ts +1 -1
  185. package/runtime/execution/components/context-provider/context-provider.component.d.ts +1 -1
  186. package/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.d.ts +1 -1
  187. package/runtime/execution/components/federated/federated.component.d.ts +1 -1
  188. package/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.d.ts +1 -1
  189. package/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.d.ts +1 -1
  190. package/runtime/execution/components/velo-port-radio/velo-port-radio.component.d.ts +1 -1
  191. package/runtime/execution/components/velo-type/velo-type.component.d.ts +1 -1
  192. package/runtime/execution/directives/section-script.directive.d.ts +1 -1
  193. package/runtime/execution/directives/sf-query.directive.d.ts +2 -2
  194. package/runtime/execution/directives/velo-attribute.directive.d.ts +1 -1
  195. package/runtime/execution/directives/velo-port.directive.d.ts +1 -1
  196. package/runtime/execution/directives/vl-approval.directive.d.ts +2 -2
  197. package/runtime/execution/directives/vl-document-attachments.directive.d.ts +2 -2
  198. package/runtime/execution/directives/vl-document-templates.directive.d.ts +2 -2
  199. package/runtime/execution/directives/vl-quote.directive.d.ts +2 -2
  200. package/runtime/execution/directives/vl-ramp.directive.d.ts +3 -3
  201. package/runtime/execution/runtime-execution.module.d.ts +5 -5
  202. package/runtime/package.json +7 -7
  203. package/runtime/runtime.module.d.ts +5 -5
  204. package/runtime/services/cart.service.d.ts +3 -3
  205. package/runtime/services/configuration.service.d.ts +3 -3
  206. package/runtime/services/current-state.service.d.ts +1 -1
  207. package/runtime/services/product-model-cache.service.d.ts +2 -2
  208. package/runtime/services/runtime-context.service.d.ts +2 -2
  209. package/runtime/services/runtime-form.service.d.ts +1 -1
  210. package/runtime/services/runtime.service.d.ts +2 -2
  211. package/runtime/services/section-helper.service.d.ts +1 -1
  212. package/runtime/services/section-scope.service.d.ts +1 -1
  213. package/runtime/services/section-store.service.d.ts +1 -1
  214. package/runtime/services/section.service.d.ts +1 -1
  215. package/runtime/types/bound-data.types.d.ts +1 -1
  216. package/runtime/types/runtime.types.d.ts +2 -2
  217. package/runtime/utils/line-item.util.d.ts +1 -1
  218. package/runtime/utils/section.utils.d.ts +1 -1
  219. package/runtime/utils/sections-binder.helper.d.ts +1 -1
  220. package/{core/veloceapps-sdk-core.d.ts → runtime/veloce-sdk-runtime.d.ts} +1 -1
  221. package/src/components/doc-gen/doc-gen.component.d.ts +3 -3
  222. package/src/components/doc-gen/doc-gen.module.d.ts +1 -1
  223. package/src/components/header/cart-overlay/cart-preview.component.d.ts +1 -1
  224. package/src/components/header/cart-overlay/cart-preview.module.d.ts +1 -1
  225. package/src/components/header/header.component.d.ts +4 -4
  226. package/src/components/header/header.module.d.ts +1 -1
  227. package/src/flow.component.d.ts +2 -2
  228. package/src/flow.module.d.ts +4 -4
  229. package/src/guards/context.guard.d.ts +1 -1
  230. package/src/guards/product-unload.guard.d.ts +1 -1
  231. package/src/pages/catalog/catalog.component.d.ts +3 -3
  232. package/src/pages/catalog/catalog.module.d.ts +2 -2
  233. package/src/pages/debug/debug.component.d.ts +3 -3
  234. package/src/pages/empty-account/empty-account.module.d.ts +2 -2
  235. package/src/pages/legacy-product/legacy-product.component.d.ts +4 -4
  236. package/src/pages/legacy-product/legacy-product.module.d.ts +1 -1
  237. package/src/pages/product/product.component.d.ts +1 -1
  238. package/src/pages/product/product.module.d.ts +2 -2
  239. package/src/pages/remote/remote.component.d.ts +3 -3
  240. package/src/pages/remote/remote.module.d.ts +2 -2
  241. package/src/pages/remote/remote.types.d.ts +1 -1
  242. package/src/pages/shopping-cart/shopping-cart.component.d.ts +3 -3
  243. package/src/pages/shopping-cart/shopping-cart.module.d.ts +2 -2
  244. package/src/resolvers/flow.resolver.d.ts +2 -2
  245. package/src/resolvers/quote.resolver.d.ts +1 -1
  246. package/src/services/doc-gen.service.d.ts +1 -1
  247. package/src/services/flow-dialog.service.d.ts +1 -1
  248. package/src/services/flow-router.service.d.ts +1 -1
  249. package/src/services/flow.service.d.ts +2 -2
  250. package/src/types/context-route.types.d.ts +1 -1
  251. package/src/types/flow-customization.types.d.ts +2 -2
  252. package/src/utils/flow.utils.d.ts +1 -1
  253. package/{runtime/veloceapps-sdk-runtime.d.ts → veloce-sdk.d.ts} +1 -1
  254. package/bundles/veloceapps-sdk-cms.umd.js.map +0 -1
  255. package/bundles/veloceapps-sdk-core.umd.js.map +0 -1
  256. package/bundles/veloceapps-sdk-runtime.umd.js.map +0 -1
  257. package/bundles/veloceapps-sdk.umd.js.map +0 -1
  258. package/esm2015/cms/veloceapps-sdk-cms.js +0 -5
  259. package/esm2015/core/veloceapps-sdk-core.js +0 -5
  260. package/esm2015/runtime/veloceapps-sdk-runtime.js +0 -5
  261. package/esm2015/veloceapps-sdk.js +0 -5
  262. package/fesm2015/veloceapps-sdk-cms.js.map +0 -1
  263. package/fesm2015/veloceapps-sdk-core.js.map +0 -1
  264. package/fesm2015/veloceapps-sdk-runtime.js.map +0 -1
  265. package/fesm2015/veloceapps-sdk.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { HttpErrorResponse } from '@angular/common/http';
2
2
  import { Component, EventEmitter, Inject, Output } from '@angular/core';
3
3
  import { FormGroup } from '@angular/forms';
4
- import { EntityUtil, OrderByPipe, SalesforceIdUtils, SearchFilterPipe, UUID, } from '@veloceapps/core';
4
+ import { EntityUtil, OrderByPipe, SalesforceIdUtils, SearchFilterPipe, UUID, } from '@veloce/core';
5
5
  import { MessageService } from 'primeng/api';
6
6
  import { Subject } from 'rxjs';
7
7
  import { takeUntil } from 'rxjs/operators';
@@ -18,9 +18,9 @@ import * as i2 from "../../services/form-scope.service";
18
18
  import * as i3 from "../../services/collapsible-state.service";
19
19
  import * as i4 from "../../services/runtime-form.service";
20
20
  import * as i5 from "../../services/runtime.service";
21
- import * as i6 from "@veloceapps/sdk/core";
22
- import * as i7 from "@veloceapps/core";
23
- import * as i8 from "@veloceapps/components";
21
+ import * as i6 from "@veloce/sdk/core";
22
+ import * as i7 from "@veloce/core";
23
+ import * as i8 from "@veloce/components";
24
24
  import * as i9 from "../section-renderer/section-renderer.component";
25
25
  import * as i10 from "@angular/common";
26
26
  import * as i11 from "@angular/forms";
@@ -407,9 +407,9 @@ export class RuntimeComponent {
407
407
  return EntityUtil.findByFieldHierarchically('id', id, [...this.sortedSections, ...this.staticSections], 'children');
408
408
  }
409
409
  }
410
- RuntimeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RuntimeComponent, deps: [{ token: i1.SectionsService }, { token: i2.FormScopeService }, { token: i3.CollapsibleStateService }, { token: i4.RuntimeFormService }, { token: i5.RuntimeService }, { token: MessageService }, { token: i6.ContextService }, { token: i7.OrderByPipe }, { token: i7.SearchFilterPipe }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
411
- RuntimeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: RuntimeComponent, selector: "vl-runtime", outputs: { solutionUpdated: "solutionUpdated" }, providers: [FormScopeService, CollapsibleStateService, OrderByPipe, SearchFilterPipe], ngImport: i0, template: "<vl-loader label=\"Loading UI\" *ngIf=\"!solutionIsReady; else content\"></vl-loader>\n\n<ng-template #content>\n <div\n class=\"sidebar-tabs\"\n [ngClass]=\"{ hidden: !runtimeContext?.uiDefinition?.defaultPanels }\"\n #uiTabs=\"sidebarTabs\"\n sidebarTabs=\"{{ activeUITab?.id }}\"\n id=\"vl-default-sidebar-tabs\"\n >\n <ul>\n <li\n *ngFor=\"let tab of runtimeContext?.uiDefinition?.tabs | orderBy: 'order':'asc'\"\n [ngClass]=\"{ active: uiTabs.activeTab === tab.id }\"\n (click)=\"uiTabs.switchTab(tab.id)\"\n >\n <a href=\"javascript:void(0);\">{{ tab.name }}</a>\n </li>\n </ul>\n </div>\n\n <div class=\"sections-wrapper\">\n <form role=\"form\" name=\"form\" class=\"form-horizontal\" [formGroup]=\"form\" novalidate autocomplete=\"off\">\n <ng-container *ngFor=\"let section of staticSections; let i = index\">\n <ng-container *ngIf=\"section.model && section.template && !section.hidden\">\n <vl-section-renderer [section]=\"section\" [form]=\"form\"></vl-section-renderer>\n </ng-container>\n </ng-container>\n\n <ng-container *ngFor=\"let section of sortedSections; let i = index\">\n <ng-container *ngIf=\"section.model && section.template && !section.hidden\">\n <vl-section-renderer [section]=\"section\" [form]=\"form\"></vl-section-renderer>\n </ng-container>\n </ng-container>\n </form>\n\n <div\n class=\"modal-footer\"\n *ngIf=\"runtimeContext?.runtimeMode === 1\"\n id=\"vl-runtime-default-footer\"\n [ngClass]=\"{ hidden: !runtimeContext?.uiDefinition?.defaultPanels }\"\n >\n <div class=\"col-md-12 input-form-input\">\n <a href=\"javascript:void(0);\" class=\"btn btn-default\" (click)=\"form.valid && addToCart()\" id=\"add-to-cart-btn\"\n >Add to cart</a\n >\n <a href=\"javascript:void(0);\" class=\"btn btn-link\" (click)=\"hideModal()\" id=\"cancel-btn\">Cancel</a>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: ["@charset \"UTF-8\";body.veloce-apex-index,body.veloce-index,body.sfdcBody{overflow:hidden;margin:0;padding:0}:host ::ng-deep .velo-app .modal.in .modal-dialog.runtime-modal{margin-left:5%;margin-right:5%;padding:0;position:relative;width:auto}:host ::ng-deep .modal-body.runtime-modal.main-container{height:100%;margin:0;padding:0}:host ::ng-deep .modal-body.runtime-modal.main-container .content-wrapper{display:flex;flex-direction:column;height:100%}:host ::ng-deep .modal-body.runtime-modal.main-container .sections-wrapper{display:flex;flex-direction:column;flex-grow:1;padding:0}:host ::ng-deep .modal-body.runtime-modal.main-container .sections-wrapper .modal-body.runtime-modal.container-fluid{height:100%;margin:0;padding:0;overflow:auto}:host ::ng-deep .modal-body.runtime-modal.main-container .sections-wrapper .modal-body.runtime-modal.container-fluid .input-form.form-horizontal,:host ::ng-deep .modal-body.runtime-modal.main-container .sections-wrapper .modal-body.runtime-modal.container-fluid .input-form.form-horizontal .form-horizontal,:host ::ng-deep .modal-body.runtime-modal.main-container .sections-wrapper .modal-body.runtime-modal.container-fluid section-script>:first-child{height:100%}:host ::ng-deep .runtime-modal .modal-content,:host ::ng-deep .gu-mirror .modal-content{background-color:--vl-input-background}:host ::ng-deep .runtime-modal .modal-content .modal-header-menu ul li a,:host ::ng-deep .gu-mirror .modal-content .modal-header-menu ul li a{color:#333333b3;font-weight:600;text-transform:uppercase;letter-spacing:.85px;font-size:10px}:host ::ng-deep .runtime-modal .modal-content .modal-header-menu ul li a.active,:host ::ng-deep .gu-mirror .modal-content .modal-header-menu ul li a.active{color:#333}:host ::ng-deep .runtime-modal .modal-content .modal-header-menu ul li a.disabled,:host ::ng-deep .gu-mirror .modal-content .modal-header-menu ul li a.disabled{color:#33333380}:host ::ng-deep .runtime-modal .modal-content .modal-header-menu ul li a.active:after,:host ::ng-deep .gu-mirror .modal-content .modal-header-menu ul li a.active:after{background-color:#f36;bottom:-1px;content:\"\";height:1px;left:0;position:absolute;width:100%}:host ::ng-deep .runtime-modal .modal-content .modal-header,:host ::ng-deep .gu-mirror .modal-content .modal-header{background:transparent;color:#fff}:host ::ng-deep .runtime-modal .runtime-group-divider,:host ::ng-deep .gu-mirror .runtime-group-divider{border-bottom:1px solid #e5e5e5}:host ::ng-deep .runtime-modal .input-form-input,:host ::ng-deep .gu-mirror .input-form-input{position:relative;padding-left:0;padding-top:0}:host ::ng-deep .runtime-modal .input-form-input--required>label,:host ::ng-deep .gu-mirror .input-form-input--required>label{color:#ff4233;font-weight:bold}:host ::ng-deep .form-control-wrapper{position:relative}:host ::ng-deep .add-config-control:hover{background-color:#e96099;color:#fff;border:1px solid transparent}:host ::ng-deep .remove-config-control:hover{background-color:#828c9e;color:#fff}:host ::ng-deep .add-config-control[disabled],:host ::ng-deep .remove-config-control[disabled]{background-color:transparent;color:#ccc;border:1px dashed #ccc}:host ::ng-deep .add-config-control[disabled]:hover,:host ::ng-deep .remove-config-control[disabled]:hover{cursor:default}:host ::ng-deep .add-config-control{height:36px;width:36px;line-height:36px;font-size:14px;text-align:center;border-radius:50%;float:left;position:absolute;top:0;right:-57px;z-index:500;background-color:#e3337c;color:#fff;border:1px solid #e3337c;transition:all .5s ease 0s}:host ::ng-deep .add-config-control .plus-icon{line-height:36px}:host ::ng-deep .remove-config-control{height:36px;width:36px;line-height:36px;font-size:14px;text-align:center;margin-right:25px;border-radius:50%;float:left;position:absolute;top:33px;right:51px;z-index:500;background-color:transparent;color:#687285;border:1px solid transparent;transition:all .5s ease 0s}:host ::ng-deep .remove-config-control .plus-icon{line-height:36px}:host ::ng-deep .sidebar .new-wrapper{min-height:96px;margin-bottom:25px}:host ::ng-deep .sidebar .new-wrapper .add-container .add-card{left:0;margin-left:15px}:host ::ng-deep .ui-settings{height:100%;display:flex;flex-direction:column}:host ::ng-deep .runtime-modal .form-horizontal form,:host ::ng-deep .gu-mirror form{margin:0}:host ::ng-deep .runtime-modal .form-horizontal .form-group,:host ::ng-deep .gu-mirror .form-group{margin:0;padding:0}:host ::ng-deep .runtime-modal .form-horizontal .control.form-group,:host ::ng-deep .gu-mirror .control.form-group{margin-bottom:25px}:host ::ng-deep .runtime-modal .form-horizontal .form-control-wrapper,:host ::ng-deep .gu-mirror .form-control-wrapper{min-width:172px;margin-bottom:25px}:host ::ng-deep .runtime-modal .form-horizontal .quantity-form-input .form-control-wrapper,:host ::ng-deep .gu-mirror .quantity-form-input .form-control-wrapper{min-width:50px}:host ::ng-deep .runtime-modal .form-horizontal .quantity-form-input .form-control-wrapper .form-control,:host ::ng-deep .gu-mirror .quantity-form-input .form-control-wrapper .form-control{width:50px}:host ::ng-deep .runtime-left-side{height:calc(100% - 97px);background:#fff;padding:48px 56px 0}:host ::ng-deep .ui-controls-group{margin-left:-8px;margin-right:-8px}:host ::ng-deep .ui-controls-group .ui-control-type:hover{border-color:#3384ff}:host ::ng-deep .ui-controls-group .ui-control-type{position:relative;min-width:140px;float:left;border-radius:3px;border:1px solid #c4c4c4;background-color:#fff;width:calc(50% - 16px);padding:12px 13px;margin-bottom:16px;margin-right:8px;margin-left:8px;cursor:pointer}:host ::ng-deep .ui-controls-group .ui-control-type span{padding-left:3px}:host ::ng-deep .sidebar-header{letter-spacing:-.5px;padding-bottom:24px;padding-top:0;line-height:32px;font-size:24px;font-weight:700;color:#333}:host ::ng-deep .sidebar-header small{display:block;color:#333;font-size:11px;font-weight:300;line-height:20px;margin:0}:host ::ng-deep .sidebar-menu-list{color:#333333b3;margin:0;width:100%;list-style:none;font-size:12px}:host ::ng-deep .sidebar-menu-list li.active a,:host ::ng-deep .sidebar-menu-list li.active i{color:#005ee3}:host ::ng-deep .sidebar-menu-list li:hover{cursor:pointer}:host ::ng-deep .sidebar-menu-list li{text-align:right;padding-left:16px}:host ::ng-deep .sidebar-menu-list li a{padding:0 8px;margin-left:-8px;cursor:pointer;white-space:nowrap;color:inherit;font-weight:700;display:inline-block;line-height:32px}:host ::ng-deep .sidebar-menu-list li i{display:none;padding-right:5px}:host ::ng-deep .runtime-builder-content{min-height:100%}:host ::ng-deep .runtime-builder-content .input-form{margin:0;padding:18px 11px 0}:host ::ng-deep .runtime-builder-content .input-form .form-group{border:3px dashed transparent}:host ::ng-deep .runtime-builder-content .input-form .form-group:hover{border:3px dashed #dedede}:host ::ng-deep .runtime-right-side{background:#fff}:host ::ng-deep .sidebar-section .section-title{color:#a1a1a1;background:#fff;position:relative;display:inline-block;padding-right:16px;text-transform:uppercase;font-size:10px;letter-spacing:.2px}:host ::ng-deep .sidebar-section:before{content:\" \";position:absolute;top:50%;left:0;right:0;border-top:1px solid #e6e6e6}:host ::ng-deep .sidebar-section{position:relative;margin-top:16px;margin-bottom:16px}:host ::ng-deep .sidebar-section .section-title{color:#a1a1a1;background-color:var(--vl-input-background);position:relative;display:inline-block;padding-right:16px;padding-left:8px;text-transform:uppercase;font-size:6px;letter-spacing:.2px}:host ::ng-deep .section-wrapper{top:-21px;position:absolute;right:0;left:12px}:host ::ng-deep .container-box.container-box-bordered{border:1px solid rgba(0,0,0,.2);margin-bottom:25px;padding-left:25px}:host ::ng-deep .container-box.container-box-radio{margin-left:0}:host ::ng-deep .container-box.container-box-radio:hover,:host ::ng-deep .container-box.container-box-checkbox:hover{cursor:pointer}:host ::ng-deep .container-box{position:relative;overflow:auto;border:1px solid transparent;background:var(--vl-input-background)}:host ::ng-deep .container-box .container-box{border:1px solid rgba(0,0,0,.2);margin-left:25px;margin-right:25px;margin-bottom:25px}:host ::ng-deep .container-box .container-box:hover{border-color:var(--vl-primary-color)}:host ::ng-deep .container-box .box-title .header .header-label{color:#333;margin:0;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.2px;line-height:75px}:host ::ng-deep .container-box .box-title .header .header-label small{padding-left:21px;color:#757575;font-weight:400;font-size:10px;line-height:75px}:host ::ng-deep .container-box .box-title .header .header-qty-container,:host ::ng-deep .container-box .box-title .header .radio-button,:host ::ng-deep .container-box .box-title .header .checkbox-select{display:table-cell;vertical-align:middle;height:75px;padding-left:21px}:host ::ng-deep .container-box .box-title .header .header-qty-container .form-control,:host ::ng-deep .container-box .box-title .header .radio-button .form-control,:host ::ng-deep .container-box .box-title .header .checkbox-select .form-control{height:auto;color:#333;width:50px;border:1px solid #dddddd}:host ::ng-deep .container-box .box-title .header .header-qty-container .form-control:focus,:host ::ng-deep .container-box .box-title .header .radio-button .form-control:focus,:host ::ng-deep .container-box .box-title .header .checkbox-select .form-control:focus{border:1px solid #c4c4c4}:host ::ng-deep .container-box .box-title .header .header-qty-container .validation-message,:host ::ng-deep .container-box .box-title .header .radio-button .validation-message,:host ::ng-deep .container-box .box-title .header .checkbox-select .validation-message{position:absolute;margin-top:3px}:host ::ng-deep .container-box .box-title .header .radio-button,:host ::ng-deep .container-box .box-title .header .checkbox-select{padding-left:0;vertical-align:middle}:host ::ng-deep .container-box .box-content{padding:25px 0 25px 33px}:host ::ng-deep .container-box .timeline-item{clear:both;display:block;width:100%;position:relative}:host ::ng-deep .container-box .timeline-item:before{display:block!important;content:\"\";position:absolute;left:25px;top:-25px;bottom:25px;width:1px;border-left:1px dashed rgba(0,0,0,.2)}:host ::ng-deep .container-box .timeline-item .icon{background:#90c7ec;width:35px;height:35px;border-radius:50%;position:absolute;left:24px;top:4px}:host ::ng-deep .container-box .timeline-item .icon .fa.fa-upload{left:11px;top:10px}:host ::ng-deep .container-box .timeline-item .icon .fa{color:#fff;position:absolute}:host ::ng-deep .container-box .timeline-item .message .content{float:left;width:80%}:host ::ng-deep .container-box .container-group-control{background:transparent;text-transform:uppercase}:host ::ng-deep .container-box-custom{margin-bottom:25px}:host ::ng-deep .unchecked .container-box{border-color:#0003}:host ::ng-deep .unchecked .container-box:hover{border-color:var(--vl-primary-color)}:host ::ng-deep .unchecked.timeline-item .icon-circle{background-color:#6e6e6e}:host ::ng-deep .collapsed .box-content-wrapper{opacity:0;display:none;transition:max-height .3s .1s}:host ::ng-deep .box-content-wrapper{transition:opacity .5s .1s;display:block;opacity:1}:host ::ng-deep .box-actions{position:absolute;right:25px;z-index:2;top:21px;opacity:1;transition:height .3s ease-out,opacity .5s .1s}:host ::ng-deep .box-action-button{height:32px;width:32px;line-height:32px;font-size:12px;text-align:center;float:left;margin-left:5px;border-radius:50%;transition:all .25s ease 0s}:host ::ng-deep .box-action-button a{color:#0000008a}:host ::ng-deep .box-action-button .check-icon{line-height:32px}:host ::ng-deep .box-actions-group{top:18px;right:45px}:host ::ng-deep .box-action-button:hover,:host ::ng-deep .box-action-button:focus{background-color:#0000001a;cursor:pointer;outline:none}:host ::ng-deep .box-action-button:active{background-color:#0003;cursor:pointer}:host ::ng-deep .box-action-button.active{background-color:#0000001a}:host ::ng-deep .div-block{clear:both;display:block}:host ::ng-deep .div-inline{float:left}:host ::ng-deep .checkbox-select{position:relative;display:block}:host ::ng-deep .checkbox-select label{color:#333;margin:0;line-height:16px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.2px;padding-left:25px;position:relative;min-height:16px;cursor:pointer}:host ::ng-deep .checkbox-select input[type=checkbox]{position:absolute;width:16px;height:16px;top:0;left:0;z-index:1;cursor:pointer;opacity:0;filter:alpha(opacity=0);margin:0;line-height:normal}:host ::ng-deep .checkbox-select .input-helper:before{position:absolute;content:\"\";top:-1px;width:12px;height:12px;border-radius:2px;left:0;border:2px solid rgba(0,0,0,.54);transition:all;transition-duration:.25s}:host ::ng-deep .checkbox-select .input-helper:after{font-weight:100;line-height:12px;font-size:10px;color:#fff;font-family:FontAwesome;position:absolute;content:\"\\f00c\";width:12px;height:12px;background:#0065ff;border-radius:0;top:1px;left:2px;transform:scale(0);transition:all;transition-duration:.15s}:host ::ng-deep .checkbox-select input[type=checkbox]:checked+.input-helper:before,:host ::ng-deep .checkbox-select input[type=checkbox].checkbox--checked+.input-helper:before{border-color:var(--vl-primary-color)}:host ::ng-deep .checkbox-select input[type=checkbox]:checked+.input-helper:after,:host ::ng-deep .checkbox-select input[type=checkbox].checkbox--checked+.input-helper:after{transform:scale(1)}:host ::ng-deep .radio-button{position:relative;display:block}:host ::ng-deep .radio-button label{color:#333;margin:0;line-height:16px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.2px;padding-left:25px;position:relative;min-height:16px;cursor:pointer}:host ::ng-deep .radio-button input[type=radio]{position:absolute;width:16px;height:16px;top:0;left:0;z-index:1;cursor:pointer;opacity:0;filter:alpha(opacity=0);margin:0;line-height:normal}:host ::ng-deep .radio-button .input-helper:before{position:absolute;content:\"\";top:-1px;width:12px;height:12px;border-radius:50%;left:0;border:2px solid rgba(0,0,0,.54);transition:all;transition-duration:.25s}:host ::ng-deep .radio-button .input-helper:after{position:absolute;content:\"\";width:6px;height:6px;background:var(--vl-primary-color);border-radius:50%;top:4px;left:5px;transform:scale(0);transition:all;transition-duration:.25s}:host ::ng-deep .radio-button input[type=radio]:checked+.input-helper:before{border-color:var(--vl-primary-color)}:host ::ng-deep .radio-button input[type=radio]:checked+.input-helper:after{transform:scale(1)}:host ::ng-deep .radio-button[disabled] input[type=radio]+.input-helper:before,:host ::ng-deep .checkbox-select[disabled] input[type=radio]+.input-helper:before{border-color:#0003}:host ::ng-deep .radio-button[disabled] input[type=checkbox]+.input-helper:before,:host ::ng-deep .checkbox-select[disabled] input[type=checkbox]+.input-helper:before{border-color:#0003}:host ::ng-deep .radio-button[disabled] input[type=radio]+.input-helper:after,:host ::ng-deep .checkbox-select[disabled] input[type=radio]+.input-helper:after{background:rgba(0,0,0,.2)}:host ::ng-deep .radio-button[disabled] input[type=checkbox]+.input-helper:after,:host ::ng-deep .checkbox-select[disabled] input[type=checkbox]+.input-helper:after{background:rgba(0,0,0,.2)}:host ::ng-deep .form-control-wrapper .checkbox-select,:host ::ng-deep .form-control-wrapper .radio-button{padding-top:10px}:host ::ng-deep .shopping-bag-sidebar.open{transform:translate(-100%)}:host ::ng-deep .shopping-bag-sidebar{position:fixed;top:0;bottom:0;z-index:1051;width:420px;right:-420px;background-color:#2a2b30;transition:.3s transform}:host ::ng-deep .shopping-bag-sidebar .close-shopping-cart{color:#abacae;position:absolute;top:20%;width:50px;height:50px;line-height:50px;text-align:center;right:100%;left:auto;background:#2a2b30;border-radius:3px 0 0 3px;display:block}:host ::ng-deep .shopping-bag-sidebar .close-shopping-cart:before{font-family:FontAwesome;content:\"\\f291\"}:host ::ng-deep .shopping-bag-sidebar .close-shopping-cart:hover{text-decoration:none;color:#abacae}:host ::ng-deep .shopping-bag-sidebar .close-shopping-cart:active,:host ::ng-deep .shopping-bag-sidebar .close-shopping-cart:focus,:host ::ng-deep .shopping-bag-sidebar .close-shopping-cart:visited{text-decoration:none;color:#abacae}:host ::ng-deep .shopping-bag-sidebar .cart-count{font-size:9px;font-weight:bold;line-height:15px;position:absolute;top:50%;right:8px;width:15px;height:15px;margin:-16px 0 0;text-align:center;color:#fff;border-radius:50%;background:var(--vl-primary-color)}:host ::ng-deep .shopping-bag-sidebar .shopping-bag-container{overflow:auto;display:block;height:100%;padding:0 25px}:host ::ng-deep .shopping-bag-sidebar .shopping-bag-item{color:#abacae;background-color:#000;position:relative;overflow:auto;margin-bottom:10px}:host ::ng-deep .shopping-bag-sidebar .shopping-bag-item .item-title{position:relative;padding-right:25px;padding-left:25px}:host ::ng-deep .shopping-bag-sidebar .shopping-bag-item .item-title .header{float:left;color:#abacae;margin:0;line-height:48px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.2px}:host ::ng-deep .shopping-bag-sidebar .shopping-bag-item .item-title .box-actions{height:48px;float:right;top:0}:host ::ng-deep .shopping-bag-sidebar .shopping-bag-item .item-title .box-action-button{height:32px;width:32px;line-height:32px;font-size:10px;font-weight:700;margin-top:8px;text-align:center;transition:all .25s ease 0s;color:#fff;background-color:var(--vl-primary-color)}:host ::ng-deep .shopping-bag-sidebar .shopping-bag-title{color:#cecece;font-size:11px;text-transform:uppercase;line-height:64px;font-weight:600;padding-top:0;margin-top:25px;margin-bottom:25px;text-align:right}:host ::ng-deep .container-box.hovered:before,:host ::ng-deep .box-title.hovered:before,:host ::ng-deep .container-box.selected:before,:host ::ng-deep .box-title.selected:before{top:0;right:0;left:0;bottom:0}:host ::ng-deep .selectable{position:relative;cursor:pointer}:host ::ng-deep .container-box.hovered:before{border-color:transparent}:host ::ng-deep .container-box.hovered{border-color:var(--vl-primary-color)}:host ::ng-deep .container-box.selected:before{border-color:transparent}:host ::ng-deep .container-box.selected{border-color:var(--vl-primary-color)}:host ::ng-deep .hovered:before{display:block!important;position:absolute;content:\" \";top:-15px;bottom:15px;left:-15px;right:15px;border:1px solid var(--vl-primary-color)}:host ::ng-deep .hovered .box-action-button{opacity:1!important}:host ::ng-deep .opacity-1{opacity:1!important}:host ::ng-deep .overflow-y--auto{overflow-y:auto}:host ::ng-deep .gu-mirror{position:fixed!important;margin:0!important;z-index:9999!important;opacity:.8;-ms-filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)\";filter:alpha(opacity=80)}:host ::ng-deep .gu-hide{display:none!important}:host ::ng-deep .gu-unselectable{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}:host ::ng-deep .gu-transit{opacity:.2;-ms-filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=20)\";filter:alpha(opacity=20)}:host ::ng-deep .top-nav-msg{margin-top:-30px}:host ::ng-deep .runtime-info-message ul{margin-bottom:0;list-style:none}:host ::ng-deep .runtime-info-message ul li{margin-bottom:10px}:host ::ng-deep .runtime-info-message ul li:last-child{margin-bottom:0}:host ::ng-deep .runtime-info-message .message-text{font-family:\"Open Sans\",Tahoma,sans-serif!important;overflow:hidden;padding:0;font-size:11px}:host ::ng-deep .runtime-attributes-popover .popover-arrow{display:none}:host ::ng-deep .runtime-attributes-popover .popover-content{padding:0}:host ::ng-deep .runtime-attributes-popover .runtime-content-wrapper{padding:0}:host ::ng-deep .runtime-attributes-popover .container-box-custom{margin-bottom:0}:host ::ng-deep .runtime-attributes-popover .input-form{margin:0;padding:0}:host ::ng-deep .runtime-attributes-popover .input-form form{margin-bottom:0}:host ::ng-deep .runtime-attributes-popover .input-form form .div-inline{display:block;float:none}:host ::ng-deep .runtime-attributes-popover .input-form form .form-group{padding:0;margin:0}:host ::ng-deep .runtime-attributes-popover .container-box .box-content{padding:0}:host ::ng-deep .v-custom-title,:host ::ng-deep .v-custom-description,:host ::ng-deep .v-custom-image{display:none}:host ::ng-deep .dropdown{position:relative}:host ::ng-deep .dropdown-toggle:focus{outline:0}:host ::ng-deep .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;box-shadow:0 6px 12px #0000002d}:host ::ng-deep .dropdown-menu.pull-right{right:0;left:auto}:host ::ng-deep .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}:host ::ng-deep .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}:host ::ng-deep .dropdown-menu>li>a:hover,:host ::ng-deep .dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}:host ::ng-deep .dropdown-menu>.active>a,:host ::ng-deep .dropdown-menu>.active>a:hover,:host ::ng-deep .dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}:host ::ng-deep .dropdown-menu>.disabled>a,:host ::ng-deep .dropdown-menu>.disabled>a:hover,:host ::ng-deep .dropdown-menu>.disabled>a:focus{color:#777}:host ::ng-deep .dropdown-menu>.disabled>a:hover,:host ::ng-deep .dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}:host ::ng-deep .open>.dropdown-menu{display:block}:host ::ng-deep .open>a{outline:0}:host ::ng-deep .dropdown-menu-right{right:0;left:auto}:host ::ng-deep .dropdown-menu-left{right:auto;left:0}:host ::ng-deep .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}:host ::ng-deep .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}\n", ":host{height:100%;display:flex;flex-direction:column}.sections-wrapper{flex-grow:1;display:flex;flex-direction:column}form{flex-grow:1;display:flex;flex-direction:column}.hidden{display:none}\n"], components: [{ type: i8.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { type: i9.SectionRendererComponent, selector: "vl-section-renderer", inputs: ["section", "form"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.SidebarTabsDirective, selector: "[sidebarTabs]", inputs: ["sidebarTabs"], exportAs: ["sidebarTabs"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i11.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i11.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], pipes: { "orderBy": i7.OrderByPipe } });
412
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RuntimeComponent, decorators: [{
410
+ RuntimeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: RuntimeComponent, deps: [{ token: i1.SectionsService }, { token: i2.FormScopeService }, { token: i3.CollapsibleStateService }, { token: i4.RuntimeFormService }, { token: i5.RuntimeService }, { token: MessageService }, { token: i6.ContextService }, { token: i7.OrderByPipe }, { token: i7.SearchFilterPipe }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
411
+ RuntimeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: RuntimeComponent, selector: "vl-runtime", outputs: { solutionUpdated: "solutionUpdated" }, providers: [FormScopeService, CollapsibleStateService, OrderByPipe, SearchFilterPipe], ngImport: i0, template: "<vl-loader label=\"Loading UI\" *ngIf=\"!solutionIsReady; else content\"></vl-loader>\n\n<ng-template #content>\n <div\n class=\"sidebar-tabs\"\n [ngClass]=\"{ hidden: !runtimeContext?.uiDefinition?.defaultPanels }\"\n #uiTabs=\"sidebarTabs\"\n sidebarTabs=\"{{ activeUITab?.id }}\"\n id=\"vl-default-sidebar-tabs\"\n >\n <ul>\n <li\n *ngFor=\"let tab of runtimeContext?.uiDefinition?.tabs | orderBy: 'order':'asc'\"\n [ngClass]=\"{ active: uiTabs.activeTab === tab.id }\"\n (click)=\"uiTabs.switchTab(tab.id)\"\n >\n <a href=\"javascript:void(0);\">{{ tab.name }}</a>\n </li>\n </ul>\n </div>\n\n <div class=\"sections-wrapper\">\n <form role=\"form\" name=\"form\" class=\"form-horizontal\" [formGroup]=\"form\" novalidate autocomplete=\"off\">\n <ng-container *ngFor=\"let section of staticSections; let i = index\">\n <ng-container *ngIf=\"section.model && section.template && !section.hidden\">\n <vl-section-renderer [section]=\"section\" [form]=\"form\"></vl-section-renderer>\n </ng-container>\n </ng-container>\n\n <ng-container *ngFor=\"let section of sortedSections; let i = index\">\n <ng-container *ngIf=\"section.model && section.template && !section.hidden\">\n <vl-section-renderer [section]=\"section\" [form]=\"form\"></vl-section-renderer>\n </ng-container>\n </ng-container>\n </form>\n\n <div\n class=\"modal-footer\"\n *ngIf=\"runtimeContext?.runtimeMode === 1\"\n id=\"vl-runtime-default-footer\"\n [ngClass]=\"{ hidden: !runtimeContext?.uiDefinition?.defaultPanels }\"\n >\n <div class=\"col-md-12 input-form-input\">\n <a href=\"javascript:void(0);\" class=\"btn btn-default\" (click)=\"form.valid && addToCart()\" id=\"add-to-cart-btn\"\n >Add to cart</a\n >\n <a href=\"javascript:void(0);\" class=\"btn btn-link\" (click)=\"hideModal()\" id=\"cancel-btn\">Cancel</a>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: ["@charset \"UTF-8\";body.veloce-apex-index,body.veloce-index,body.sfdcBody{overflow:hidden;margin:0;padding:0}:host ::ng-deep .velo-app .modal.in .modal-dialog.runtime-modal{margin-left:5%;margin-right:5%;padding:0;position:relative;width:auto}:host ::ng-deep .modal-body.runtime-modal.main-container{height:100%;margin:0;padding:0}:host ::ng-deep .modal-body.runtime-modal.main-container .content-wrapper{display:flex;flex-direction:column;height:100%}:host ::ng-deep .modal-body.runtime-modal.main-container .sections-wrapper{display:flex;flex-direction:column;flex-grow:1;padding:0}:host ::ng-deep .modal-body.runtime-modal.main-container .sections-wrapper .modal-body.runtime-modal.container-fluid{height:100%;margin:0;padding:0;overflow:auto}:host ::ng-deep .modal-body.runtime-modal.main-container .sections-wrapper .modal-body.runtime-modal.container-fluid .input-form.form-horizontal,:host ::ng-deep .modal-body.runtime-modal.main-container .sections-wrapper .modal-body.runtime-modal.container-fluid .input-form.form-horizontal .form-horizontal,:host ::ng-deep .modal-body.runtime-modal.main-container .sections-wrapper .modal-body.runtime-modal.container-fluid section-script>:first-child{height:100%}:host ::ng-deep .runtime-modal .modal-content,:host ::ng-deep .gu-mirror .modal-content{background-color:--vl-input-background}:host ::ng-deep .runtime-modal .modal-content .modal-header-menu ul li a,:host ::ng-deep .gu-mirror .modal-content .modal-header-menu ul li a{color:#333333b3;font-weight:600;text-transform:uppercase;letter-spacing:.85px;font-size:10px}:host ::ng-deep .runtime-modal .modal-content .modal-header-menu ul li a.active,:host ::ng-deep .gu-mirror .modal-content .modal-header-menu ul li a.active{color:#333}:host ::ng-deep .runtime-modal .modal-content .modal-header-menu ul li a.disabled,:host ::ng-deep .gu-mirror .modal-content .modal-header-menu ul li a.disabled{color:#33333380}:host ::ng-deep .runtime-modal .modal-content .modal-header-menu ul li a.active:after,:host ::ng-deep .gu-mirror .modal-content .modal-header-menu ul li a.active:after{background-color:#f36;bottom:-1px;content:\"\";height:1px;left:0;position:absolute;width:100%}:host ::ng-deep .runtime-modal .modal-content .modal-header,:host ::ng-deep .gu-mirror .modal-content .modal-header{background:transparent;color:#fff}:host ::ng-deep .runtime-modal .runtime-group-divider,:host ::ng-deep .gu-mirror .runtime-group-divider{border-bottom:1px solid #e5e5e5}:host ::ng-deep .runtime-modal .input-form-input,:host ::ng-deep .gu-mirror .input-form-input{position:relative;padding-left:0;padding-top:0}:host ::ng-deep .runtime-modal .input-form-input--required>label,:host ::ng-deep .gu-mirror .input-form-input--required>label{color:#ff4233;font-weight:bold}:host ::ng-deep .form-control-wrapper{position:relative}:host ::ng-deep .add-config-control:hover{background-color:#e96099;color:#fff;border:1px solid transparent}:host ::ng-deep .remove-config-control:hover{background-color:#828c9e;color:#fff}:host ::ng-deep .add-config-control[disabled],:host ::ng-deep .remove-config-control[disabled]{background-color:transparent;color:#ccc;border:1px dashed #ccc}:host ::ng-deep .add-config-control[disabled]:hover,:host ::ng-deep .remove-config-control[disabled]:hover{cursor:default}:host ::ng-deep .add-config-control{height:36px;width:36px;line-height:36px;font-size:14px;text-align:center;border-radius:50%;float:left;position:absolute;top:0;right:-57px;z-index:500;background-color:#e3337c;color:#fff;border:1px solid #e3337c;transition:all .5s ease 0s}:host ::ng-deep .add-config-control .plus-icon{line-height:36px}:host ::ng-deep .remove-config-control{height:36px;width:36px;line-height:36px;font-size:14px;text-align:center;margin-right:25px;border-radius:50%;float:left;position:absolute;top:33px;right:51px;z-index:500;background-color:transparent;color:#687285;border:1px solid transparent;transition:all .5s ease 0s}:host ::ng-deep .remove-config-control .plus-icon{line-height:36px}:host ::ng-deep .sidebar .new-wrapper{min-height:96px;margin-bottom:25px}:host ::ng-deep .sidebar .new-wrapper .add-container .add-card{left:0;margin-left:15px}:host ::ng-deep .ui-settings{height:100%;display:flex;flex-direction:column}:host ::ng-deep .runtime-modal .form-horizontal form,:host ::ng-deep .gu-mirror form{margin:0}:host ::ng-deep .runtime-modal .form-horizontal .form-group,:host ::ng-deep .gu-mirror .form-group{margin:0;padding:0}:host ::ng-deep .runtime-modal .form-horizontal .control.form-group,:host ::ng-deep .gu-mirror .control.form-group{margin-bottom:25px}:host ::ng-deep .runtime-modal .form-horizontal .form-control-wrapper,:host ::ng-deep .gu-mirror .form-control-wrapper{min-width:172px;margin-bottom:25px}:host ::ng-deep .runtime-modal .form-horizontal .quantity-form-input .form-control-wrapper,:host ::ng-deep .gu-mirror .quantity-form-input .form-control-wrapper{min-width:50px}:host ::ng-deep .runtime-modal .form-horizontal .quantity-form-input .form-control-wrapper .form-control,:host ::ng-deep .gu-mirror .quantity-form-input .form-control-wrapper .form-control{width:50px}:host ::ng-deep .runtime-left-side{height:calc(100% - 97px);background:#fff;padding:48px 56px 0}:host ::ng-deep .ui-controls-group{margin-left:-8px;margin-right:-8px}:host ::ng-deep .ui-controls-group .ui-control-type:hover{border-color:#3384ff}:host ::ng-deep .ui-controls-group .ui-control-type{position:relative;min-width:140px;float:left;border-radius:3px;border:1px solid #c4c4c4;background-color:#fff;width:calc(50% - 16px);padding:12px 13px;margin-bottom:16px;margin-right:8px;margin-left:8px;cursor:pointer}:host ::ng-deep .ui-controls-group .ui-control-type span{padding-left:3px}:host ::ng-deep .sidebar-header{letter-spacing:-.5px;padding-bottom:24px;padding-top:0;line-height:32px;font-size:24px;font-weight:700;color:#333}:host ::ng-deep .sidebar-header small{display:block;color:#333;font-size:11px;font-weight:300;line-height:20px;margin:0}:host ::ng-deep .sidebar-menu-list{color:#333333b3;margin:0;width:100%;list-style:none;font-size:12px}:host ::ng-deep .sidebar-menu-list li.active a,:host ::ng-deep .sidebar-menu-list li.active i{color:#005ee3}:host ::ng-deep .sidebar-menu-list li:hover{cursor:pointer}:host ::ng-deep .sidebar-menu-list li{text-align:right;padding-left:16px}:host ::ng-deep .sidebar-menu-list li a{padding:0 8px;margin-left:-8px;cursor:pointer;white-space:nowrap;color:inherit;font-weight:700;display:inline-block;line-height:32px}:host ::ng-deep .sidebar-menu-list li i{display:none;padding-right:5px}:host ::ng-deep .runtime-builder-content{min-height:100%}:host ::ng-deep .runtime-builder-content .input-form{margin:0;padding:18px 11px 0}:host ::ng-deep .runtime-builder-content .input-form .form-group{border:3px dashed transparent}:host ::ng-deep .runtime-builder-content .input-form .form-group:hover{border:3px dashed #dedede}:host ::ng-deep .runtime-right-side{background:#fff}:host ::ng-deep .sidebar-section .section-title{color:#a1a1a1;background:#fff;position:relative;display:inline-block;padding-right:16px;text-transform:uppercase;font-size:10px;letter-spacing:.2px}:host ::ng-deep .sidebar-section:before{content:\" \";position:absolute;top:50%;left:0;right:0;border-top:1px solid #e6e6e6}:host ::ng-deep .sidebar-section{position:relative;margin-top:16px;margin-bottom:16px}:host ::ng-deep .sidebar-section .section-title{color:#a1a1a1;background-color:var(--vl-input-background);position:relative;display:inline-block;padding-right:16px;padding-left:8px;text-transform:uppercase;font-size:6px;letter-spacing:.2px}:host ::ng-deep .section-wrapper{top:-21px;position:absolute;right:0;left:12px}:host ::ng-deep .container-box.container-box-bordered{border:1px solid rgba(0,0,0,.2);margin-bottom:25px;padding-left:25px}:host ::ng-deep .container-box.container-box-radio{margin-left:0}:host ::ng-deep .container-box.container-box-radio:hover,:host ::ng-deep .container-box.container-box-checkbox:hover{cursor:pointer}:host ::ng-deep .container-box{position:relative;overflow:auto;border:1px solid transparent;background:var(--vl-input-background)}:host ::ng-deep .container-box .container-box{border:1px solid rgba(0,0,0,.2);margin-left:25px;margin-right:25px;margin-bottom:25px}:host ::ng-deep .container-box .container-box:hover{border-color:var(--vl-primary-color)}:host ::ng-deep .container-box .box-title .header .header-label{color:#333;margin:0;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.2px;line-height:75px}:host ::ng-deep .container-box .box-title .header .header-label small{padding-left:21px;color:#757575;font-weight:400;font-size:10px;line-height:75px}:host ::ng-deep .container-box .box-title .header .header-qty-container,:host ::ng-deep .container-box .box-title .header .radio-button,:host ::ng-deep .container-box .box-title .header .checkbox-select{display:table-cell;vertical-align:middle;height:75px;padding-left:21px}:host ::ng-deep .container-box .box-title .header .header-qty-container .form-control,:host ::ng-deep .container-box .box-title .header .radio-button .form-control,:host ::ng-deep .container-box .box-title .header .checkbox-select .form-control{height:auto;color:#333;width:50px;border:1px solid #dddddd}:host ::ng-deep .container-box .box-title .header .header-qty-container .form-control:focus,:host ::ng-deep .container-box .box-title .header .radio-button .form-control:focus,:host ::ng-deep .container-box .box-title .header .checkbox-select .form-control:focus{border:1px solid #c4c4c4}:host ::ng-deep .container-box .box-title .header .header-qty-container .validation-message,:host ::ng-deep .container-box .box-title .header .radio-button .validation-message,:host ::ng-deep .container-box .box-title .header .checkbox-select .validation-message{position:absolute;margin-top:3px}:host ::ng-deep .container-box .box-title .header .radio-button,:host ::ng-deep .container-box .box-title .header .checkbox-select{padding-left:0;vertical-align:middle}:host ::ng-deep .container-box .box-content{padding:25px 0 25px 33px}:host ::ng-deep .container-box .timeline-item{clear:both;display:block;width:100%;position:relative}:host ::ng-deep .container-box .timeline-item:before{display:block!important;content:\"\";position:absolute;left:25px;top:-25px;bottom:25px;width:1px;border-left:1px dashed rgba(0,0,0,.2)}:host ::ng-deep .container-box .timeline-item .icon{background:#90c7ec;width:35px;height:35px;border-radius:50%;position:absolute;left:24px;top:4px}:host ::ng-deep .container-box .timeline-item .icon .fa.fa-upload{left:11px;top:10px}:host ::ng-deep .container-box .timeline-item .icon .fa{color:#fff;position:absolute}:host ::ng-deep .container-box .timeline-item .message .content{float:left;width:80%}:host ::ng-deep .container-box .container-group-control{background:transparent;text-transform:uppercase}:host ::ng-deep .container-box-custom{margin-bottom:25px}:host ::ng-deep .unchecked .container-box{border-color:#0003}:host ::ng-deep .unchecked .container-box:hover{border-color:var(--vl-primary-color)}:host ::ng-deep .unchecked.timeline-item .icon-circle{background-color:#6e6e6e}:host ::ng-deep .collapsed .box-content-wrapper{opacity:0;display:none;transition:max-height .3s .1s}:host ::ng-deep .box-content-wrapper{transition:opacity .5s .1s;display:block;opacity:1}:host ::ng-deep .box-actions{position:absolute;right:25px;z-index:2;top:21px;opacity:1;transition:height .3s ease-out,opacity .5s .1s}:host ::ng-deep .box-action-button{height:32px;width:32px;line-height:32px;font-size:12px;text-align:center;float:left;margin-left:5px;border-radius:50%;transition:all .25s ease 0s}:host ::ng-deep .box-action-button a{color:#0000008a}:host ::ng-deep .box-action-button .check-icon{line-height:32px}:host ::ng-deep .box-actions-group{top:18px;right:45px}:host ::ng-deep .box-action-button:hover,:host ::ng-deep .box-action-button:focus{background-color:#0000001a;cursor:pointer;outline:none}:host ::ng-deep .box-action-button:active{background-color:#0003;cursor:pointer}:host ::ng-deep .box-action-button.active{background-color:#0000001a}:host ::ng-deep .div-block{clear:both;display:block}:host ::ng-deep .div-inline{float:left}:host ::ng-deep .checkbox-select{position:relative;display:block}:host ::ng-deep .checkbox-select label{color:#333;margin:0;line-height:16px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.2px;padding-left:25px;position:relative;min-height:16px;cursor:pointer}:host ::ng-deep .checkbox-select input[type=checkbox]{position:absolute;width:16px;height:16px;top:0;left:0;z-index:1;cursor:pointer;opacity:0;filter:alpha(opacity=0);margin:0;line-height:normal}:host ::ng-deep .checkbox-select .input-helper:before{position:absolute;content:\"\";top:-1px;width:12px;height:12px;border-radius:2px;left:0;border:2px solid rgba(0,0,0,.54);transition:all;transition-duration:.25s}:host ::ng-deep .checkbox-select .input-helper:after{font-weight:100;line-height:12px;font-size:10px;color:#fff;font-family:FontAwesome;position:absolute;content:\"\\f00c\";width:12px;height:12px;background:#0065ff;border-radius:0;top:1px;left:2px;transform:scale(0);transition:all;transition-duration:.15s}:host ::ng-deep .checkbox-select input[type=checkbox]:checked+.input-helper:before,:host ::ng-deep .checkbox-select input[type=checkbox].checkbox--checked+.input-helper:before{border-color:var(--vl-primary-color)}:host ::ng-deep .checkbox-select input[type=checkbox]:checked+.input-helper:after,:host ::ng-deep .checkbox-select input[type=checkbox].checkbox--checked+.input-helper:after{transform:scale(1)}:host ::ng-deep .radio-button{position:relative;display:block}:host ::ng-deep .radio-button label{color:#333;margin:0;line-height:16px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.2px;padding-left:25px;position:relative;min-height:16px;cursor:pointer}:host ::ng-deep .radio-button input[type=radio]{position:absolute;width:16px;height:16px;top:0;left:0;z-index:1;cursor:pointer;opacity:0;filter:alpha(opacity=0);margin:0;line-height:normal}:host ::ng-deep .radio-button .input-helper:before{position:absolute;content:\"\";top:-1px;width:12px;height:12px;border-radius:50%;left:0;border:2px solid rgba(0,0,0,.54);transition:all;transition-duration:.25s}:host ::ng-deep .radio-button .input-helper:after{position:absolute;content:\"\";width:6px;height:6px;background:var(--vl-primary-color);border-radius:50%;top:4px;left:5px;transform:scale(0);transition:all;transition-duration:.25s}:host ::ng-deep .radio-button input[type=radio]:checked+.input-helper:before{border-color:var(--vl-primary-color)}:host ::ng-deep .radio-button input[type=radio]:checked+.input-helper:after{transform:scale(1)}:host ::ng-deep .radio-button[disabled] input[type=radio]+.input-helper:before,:host ::ng-deep .checkbox-select[disabled] input[type=radio]+.input-helper:before{border-color:#0003}:host ::ng-deep .radio-button[disabled] input[type=checkbox]+.input-helper:before,:host ::ng-deep .checkbox-select[disabled] input[type=checkbox]+.input-helper:before{border-color:#0003}:host ::ng-deep .radio-button[disabled] input[type=radio]+.input-helper:after,:host ::ng-deep .checkbox-select[disabled] input[type=radio]+.input-helper:after{background:rgba(0,0,0,.2)}:host ::ng-deep .radio-button[disabled] input[type=checkbox]+.input-helper:after,:host ::ng-deep .checkbox-select[disabled] input[type=checkbox]+.input-helper:after{background:rgba(0,0,0,.2)}:host ::ng-deep .form-control-wrapper .checkbox-select,:host ::ng-deep .form-control-wrapper .radio-button{padding-top:10px}:host ::ng-deep .shopping-bag-sidebar.open{transform:translate(-100%)}:host ::ng-deep .shopping-bag-sidebar{position:fixed;top:0;bottom:0;z-index:1051;width:420px;right:-420px;background-color:#2a2b30;transition:.3s transform}:host ::ng-deep .shopping-bag-sidebar .close-shopping-cart{color:#abacae;position:absolute;top:20%;width:50px;height:50px;line-height:50px;text-align:center;right:100%;left:auto;background:#2a2b30;border-radius:3px 0 0 3px;display:block}:host ::ng-deep .shopping-bag-sidebar .close-shopping-cart:before{font-family:FontAwesome;content:\"\\f291\"}:host ::ng-deep .shopping-bag-sidebar .close-shopping-cart:hover{text-decoration:none;color:#abacae}:host ::ng-deep .shopping-bag-sidebar .close-shopping-cart:active,:host ::ng-deep .shopping-bag-sidebar .close-shopping-cart:focus,:host ::ng-deep .shopping-bag-sidebar .close-shopping-cart:visited{text-decoration:none;color:#abacae}:host ::ng-deep .shopping-bag-sidebar .cart-count{font-size:9px;font-weight:bold;line-height:15px;position:absolute;top:50%;right:8px;width:15px;height:15px;margin:-16px 0 0;text-align:center;color:#fff;border-radius:50%;background:var(--vl-primary-color)}:host ::ng-deep .shopping-bag-sidebar .shopping-bag-container{overflow:auto;display:block;height:100%;padding:0 25px}:host ::ng-deep .shopping-bag-sidebar .shopping-bag-item{color:#abacae;background-color:#000;position:relative;overflow:auto;margin-bottom:10px}:host ::ng-deep .shopping-bag-sidebar .shopping-bag-item .item-title{position:relative;padding-right:25px;padding-left:25px}:host ::ng-deep .shopping-bag-sidebar .shopping-bag-item .item-title .header{float:left;color:#abacae;margin:0;line-height:48px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.2px}:host ::ng-deep .shopping-bag-sidebar .shopping-bag-item .item-title .box-actions{height:48px;float:right;top:0}:host ::ng-deep .shopping-bag-sidebar .shopping-bag-item .item-title .box-action-button{height:32px;width:32px;line-height:32px;font-size:10px;font-weight:700;margin-top:8px;text-align:center;transition:all .25s ease 0s;color:#fff;background-color:var(--vl-primary-color)}:host ::ng-deep .shopping-bag-sidebar .shopping-bag-title{color:#cecece;font-size:11px;text-transform:uppercase;line-height:64px;font-weight:600;padding-top:0;margin-top:25px;margin-bottom:25px;text-align:right}:host ::ng-deep .container-box.hovered:before,:host ::ng-deep .box-title.hovered:before,:host ::ng-deep .container-box.selected:before,:host ::ng-deep .box-title.selected:before{top:0;right:0;left:0;bottom:0}:host ::ng-deep .selectable{position:relative;cursor:pointer}:host ::ng-deep .container-box.hovered:before{border-color:transparent}:host ::ng-deep .container-box.hovered{border-color:var(--vl-primary-color)}:host ::ng-deep .container-box.selected:before{border-color:transparent}:host ::ng-deep .container-box.selected{border-color:var(--vl-primary-color)}:host ::ng-deep .hovered:before{display:block!important;position:absolute;content:\" \";top:-15px;bottom:15px;left:-15px;right:15px;border:1px solid var(--vl-primary-color)}:host ::ng-deep .hovered .box-action-button{opacity:1!important}:host ::ng-deep .opacity-1{opacity:1!important}:host ::ng-deep .overflow-y--auto{overflow-y:auto}:host ::ng-deep .gu-mirror{position:fixed!important;margin:0!important;z-index:9999!important;opacity:.8;-ms-filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)\";filter:alpha(opacity=80)}:host ::ng-deep .gu-hide{display:none!important}:host ::ng-deep .gu-unselectable{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}:host ::ng-deep .gu-transit{opacity:.2;-ms-filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=20)\";filter:alpha(opacity=20)}:host ::ng-deep .top-nav-msg{margin-top:-30px}:host ::ng-deep .runtime-info-message ul{margin-bottom:0;list-style:none}:host ::ng-deep .runtime-info-message ul li{margin-bottom:10px}:host ::ng-deep .runtime-info-message ul li:last-child{margin-bottom:0}:host ::ng-deep .runtime-info-message .message-text{font-family:\"Open Sans\",Tahoma,sans-serif!important;overflow:hidden;padding:0;font-size:11px}:host ::ng-deep .runtime-attributes-popover .popover-arrow{display:none}:host ::ng-deep .runtime-attributes-popover .popover-content{padding:0}:host ::ng-deep .runtime-attributes-popover .runtime-content-wrapper{padding:0}:host ::ng-deep .runtime-attributes-popover .container-box-custom{margin-bottom:0}:host ::ng-deep .runtime-attributes-popover .input-form{margin:0;padding:0}:host ::ng-deep .runtime-attributes-popover .input-form form{margin-bottom:0}:host ::ng-deep .runtime-attributes-popover .input-form form .div-inline{display:block;float:none}:host ::ng-deep .runtime-attributes-popover .input-form form .form-group{padding:0;margin:0}:host ::ng-deep .runtime-attributes-popover .container-box .box-content{padding:0}:host ::ng-deep .v-custom-title,:host ::ng-deep .v-custom-description,:host ::ng-deep .v-custom-image{display:none}:host ::ng-deep .dropdown{position:relative}:host ::ng-deep .dropdown-toggle:focus{outline:0}:host ::ng-deep .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;box-shadow:0 6px 12px #0000002d}:host ::ng-deep .dropdown-menu.pull-right{right:0;left:auto}:host ::ng-deep .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}:host ::ng-deep .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}:host ::ng-deep .dropdown-menu>li>a:hover,:host ::ng-deep .dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}:host ::ng-deep .dropdown-menu>.active>a,:host ::ng-deep .dropdown-menu>.active>a:hover,:host ::ng-deep .dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}:host ::ng-deep .dropdown-menu>.disabled>a,:host ::ng-deep .dropdown-menu>.disabled>a:hover,:host ::ng-deep .dropdown-menu>.disabled>a:focus{color:#777}:host ::ng-deep .dropdown-menu>.disabled>a:hover,:host ::ng-deep .dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}:host ::ng-deep .open>.dropdown-menu{display:block}:host ::ng-deep .open>a{outline:0}:host ::ng-deep .dropdown-menu-right{right:0;left:auto}:host ::ng-deep .dropdown-menu-left{right:auto;left:0}:host ::ng-deep .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}:host ::ng-deep .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}\n", ":host{height:100%;display:flex;flex-direction:column}.sections-wrapper{flex-grow:1;display:flex;flex-direction:column}form{flex-grow:1;display:flex;flex-direction:column}.hidden{display:none}\n"], components: [{ type: i8.LoaderComponent, selector: "vl-loader", inputs: ["label", "overlayVisible"] }, { type: i9.SectionRendererComponent, selector: "vl-section-renderer", inputs: ["section", "form"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.SidebarTabsDirective, selector: "[sidebarTabs]", inputs: ["sidebarTabs"], exportAs: ["sidebarTabs"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i11.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i11.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], pipes: { "orderBy": i7.OrderByPipe } });
412
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: RuntimeComponent, decorators: [{
413
413
  type: Component,
414
414
  args: [{
415
415
  selector: 'vl-runtime',
@@ -424,4 +424,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
424
424
  }] }, { type: i6.ContextService }, { type: i7.OrderByPipe }, { type: i7.SearchFilterPipe }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { solutionUpdated: [{
425
425
  type: Output
426
426
  }] } });
427
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2NvbXBvbmVudHMvdWktcnVudGltZS9ydW50aW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvY29tcG9uZW50cy91aS1ydW50aW1lL3J1bnRpbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBR0wsVUFBVSxFQUVWLFdBQVcsRUFFWCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBSWhCLElBQUksR0FDTCxNQUFNLGtCQUFrQixDQUFDO0FBRzFCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFHN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBUzFFLE1BQU0sT0FBTyxnQkFBZ0I7SUFrQjNCLFlBQ1UsZUFBZ0MsRUFDaEMsU0FBMkIsRUFDM0IsZ0JBQXlDLEVBQ3pDLFdBQStCLEVBQy9CLGNBQThCLEVBQ04sY0FBOEIsRUFDdEQsY0FBOEIsRUFDOUIsV0FBd0IsRUFDeEIsZ0JBQWtDLEVBQ2xDLEdBQXNCO1FBVHRCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBQ3pDLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDTixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDdEQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUEzQnZCLG9CQUFlLEdBQUcsWUFBWSxDQUFDO1FBRWpDLG1CQUFjLEdBQWMsRUFBRSxDQUFDO1FBQy9CLG1CQUFjLEdBQWMsRUFBRSxDQUFDO1FBSXRDLFNBQUksR0FBYyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUlwQyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUVQLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUV4QixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFhbEUsQ0FBQztJQUVJLFdBQVcsQ0FDakIsV0FBK0IsRUFDL0IsT0FBZ0IsRUFDaEIsZ0JBQTBCLEVBQzFCLEtBQWtDO1FBRWxDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUVwRyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ25CLE9BQU87U0FDUjtRQUVELGNBQWMsQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDakUsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsR0FBRyxRQUFRLENBQUM7WUFFNUMsSUFBSSxTQUFTLEtBQUssV0FBVyxFQUFFO2dCQUM3QixPQUFPLFFBQVEsQ0FBQzthQUNqQjtZQUVELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2QyxNQUFNLGlCQUFpQixHQUFHLGdDQUNyQixVQUFVLEdBQ1YsS0FBSyxDQUNLLENBQUM7WUFFaEIsdUNBQ0ssUUFBUSxLQUNYLFdBQVcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsV0FBVyxDQUFDLElBQ2hEO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWEsRUFBRSxFQUFFOztZQUMzRixJQUFJO2dCQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUVqRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFFdkMsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDWixNQUFNLG1CQUFtQixDQUFDO2lCQUMzQjtnQkFDRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztnQkFFaEQsSUFBSSxVQUFVLEtBQUssYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLEtBQUssYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDeEcsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLE9BQU8sSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRTt3QkFDL0QsTUFBTSxXQUFXLEdBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUUxQyxJQUFJLENBQUMsQ0FBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLFFBQVEsQ0FBQSxFQUFFOzRCQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQzt5QkFDakM7NkJBQU07NEJBQ0wsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQzs0QkFFekYsSUFBSSxjQUFjLEVBQUU7Z0NBQ2xCLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQUMsT0FBQSxJQUFJLENBQUMsRUFBRSxNQUFLLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsRUFBRSxDQUFBLENBQUEsRUFBQSxDQUFDLENBQUM7Z0NBRXZGLGNBQWMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0NBRXRELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dDQUM3QyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7NkJBQ3RDO3lCQUNGO3FCQUNGO2lCQUNGO2dCQUVELElBQUksVUFBVSxLQUFLLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3BELElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUU7d0JBQ3pCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQzt3QkFFcEcsSUFBSSxjQUFjLEVBQUU7NEJBQ2xCLGNBQWMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dDQUNuQyxJQUNFLENBQUMsQ0FBQyxvQkFBb0I7b0NBQ3RCLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFDbkY7b0NBQ0EsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUNBQ3REOzRCQUNILENBQUMsQ0FBQyxDQUFDOzRCQUNILE1BQU0sU0FBUyxHQUFHLGNBQWMsYUFBZCxjQUFjLHVCQUFkLGNBQWMsQ0FBRSxTQUFTLENBQUMsTUFBTSxDQUNoRCxDQUFDLENBQUMsRUFBRSxDQUNGLENBQUMsQ0FBQyxvQkFBb0I7Z0NBQ3RCLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUN2RixDQUFDOzRCQUNGLE1BQUEsQ0FBQyxDQUFDLG9CQUFvQiwwQ0FBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0NBQ2xDLElBQUksQ0FBQSxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLENBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBSyxDQUFDLENBQUMsRUFBRTtvQ0FDcEYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO29DQUNqRSxJQUFJLENBQUMseUJBQXlCLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDO29DQUN6RCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lDQUMxQjs0QkFDSCxDQUFDLENBQUMsQ0FBQzs0QkFFSCxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7eUJBQ3RDO3FCQUNGO29CQUVELElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUU7d0JBQ3pCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQzt3QkFFcEcsSUFBSSxjQUFjLEVBQUU7NEJBQ2xCLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7NEJBQ2xDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQzs0QkFDM0UsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7NEJBQ3hDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7NEJBRXpELElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzt5QkFDdEM7cUJBQ0Y7b0JBRUQsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sRUFBRTt3QkFDdkIsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO3dCQUVwRyxJQUFJLGNBQWMsRUFBRTs0QkFDbEIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQzs0QkFDbEMsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFdBQVcsQ0FBQyxDQUFDOzRCQUNsRixJQUFJLGNBQWMsRUFBRTtnQ0FDbEIsTUFBTSxRQUFRLG1DQUFrQixjQUFjLEtBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRSxDQUFDO2dDQUN6RCxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQ0FDeEMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQztnQ0FFekQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDOzZCQUN0Qzt5QkFDRjtxQkFDRjtvQkFFRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFO3dCQUN6QixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7d0JBRXBHLElBQUksY0FBYyxFQUFFOzRCQUNsQix3RUFBd0U7NEJBQ3hFLE1BQU0sUUFBUSxHQUFHLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFFekcsSUFBSSxRQUFRLEVBQUU7Z0NBQ1osSUFBSSxDQUFDLHlCQUF5QixDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7NkJBQzdEOzRCQUVELE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBSyxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsRUFBRSxDQUFBLENBQUMsQ0FBQzs0QkFFL0UsTUFBTSxRQUFRLEdBQWE7Z0NBQ3pCLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO2dDQUNmLEdBQUcsRUFBRSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsR0FBRztnQ0FDbEIsSUFBSSxFQUFFLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxJQUFJO2dDQUNwQixJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLO2dDQUMxRixTQUFTLEVBQUUsS0FBSztnQ0FDaEIsUUFBUSxFQUFFLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxRQUFROzZCQUNqQixDQUFDOzRCQUVkLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7NEJBQ3pELGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDOzRCQUUzQyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7eUJBQ3RDO3FCQUNGO29CQUVELElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUU7d0JBQ3pCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQzt3QkFFcEcsSUFDRSxjQUFjOzRCQUNkLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxHQUFHLENBQUMsRUFDaEc7NEJBQ0EsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQzlDLElBQUksQ0FBQyxFQUFFLFdBQUMsT0FBQSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFLLE1BQUEsQ0FBQyxDQUFDLFdBQVcsMENBQUUsV0FBVyxFQUFFLENBQUEsQ0FBQSxFQUFBLENBQ2pFLENBQUM7NEJBQ0YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0NBQ2QsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUM3RCxJQUFJLENBQUMseUJBQXlCLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FDM0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDOzZCQUN0Qzt5QkFDRjtxQkFDRjtvQkFFRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVyxFQUFFO3dCQUM1QixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsV0FBVzs0QkFDL0IsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDOzRCQUNsRSxDQUFDLENBQUMsU0FBUyxDQUFDO3dCQUVkLE1BQU0sWUFBWSxHQUFHLENBQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLEtBQUssS0FBSSxZQUFZLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO3dCQUMzRyxJQUFJLFdBQVcsSUFBSSxZQUFZLEVBQUU7NEJBQy9CLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQzs0QkFDckUsWUFBWSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7NEJBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzt5QkFDdEM7cUJBQ0Y7b0JBRUQsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLGdCQUFnQixFQUFFO3dCQUNqQyxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDbkMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sYUFBUCxPQUFPLGNBQVAsT0FBTyxHQUFJLEVBQUUsQ0FBQzt3QkFFakMsTUFBTSxlQUFlLEdBQW9COzRCQUN2QyxJQUFJLEVBQUUsaUJBQWlCOzRCQUN2QixXQUFXLEVBQUUsNkJBQTZCOzRCQUMxQyxNQUFNO3lCQUNQLENBQUM7d0JBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztxQkFDL0U7b0JBRUQsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLGlCQUFpQixFQUFFO3dCQUNsQyxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDbkMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sYUFBUCxPQUFPLGNBQVAsT0FBTyxHQUFJLEVBQUUsQ0FBQzt3QkFFakMsTUFBTSxtQkFBbUIsR0FBb0I7NEJBQzNDLElBQUksRUFBRSxpQkFBaUI7NEJBQ3ZCLFdBQVcsRUFBRSw4QkFBOEI7NEJBQzNDLE1BQU07eUJBQ1AsQ0FBQzt3QkFFRixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7cUJBQ25GO2lCQUNGO2dCQUVELElBQUksVUFBVSxLQUFLLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3BELElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUU7d0JBQ3pCLE1BQU0sY0FBYyxHQUNsQixDQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsUUFBUSxLQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7d0JBRS9GLElBQ0UsY0FBYzs0QkFDZCxPQUFPLENBQUMsS0FBSzs0QkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUk7NEJBQ2xCLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxHQUFHLENBQUMsRUFDNUY7NEJBQ0EsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBQyxPQUFBLElBQUksQ0FBQyxFQUFFLE1BQUssTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxFQUFFLENBQUEsQ0FBQSxFQUFBLENBQUMsQ0FBQzs0QkFDeEYsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0NBQ2QsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUM3RCxJQUFJLENBQUMseUJBQXlCLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FDM0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7Z0NBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzs2QkFDdEM7eUJBQ0Y7cUJBQ0Y7b0JBRUQsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRTt3QkFDNUIsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO3dCQUVsRyxJQUFJLFlBQVksRUFBRTs0QkFDaEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQzs0QkFDcEQsSUFBSSxZQUFZLENBQUMsUUFBUSxFQUFFO2dDQUN6QixNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7Z0NBRXhGLElBQUksY0FBYyxFQUFFO29DQUNsQixJQUFJLENBQUMseUJBQXlCLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztpQ0FDbkU7NkJBQ0Y7NEJBQ0QsWUFBWSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7NEJBQ3ZCLFlBQVksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDOzRCQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7eUJBQ3RDO3FCQUNGO2lCQUNGO2dCQUVELElBQUksVUFBVSxLQUFLLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQ3pELElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUU7d0JBQ3pCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQzt3QkFDcEcsTUFBTSxTQUFTLEdBQUcsY0FBYyxhQUFkLGNBQWMsdUJBQWQsY0FBYyxDQUFFLFVBQVUsQ0FBQyxJQUFJLENBQy9DLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FDekUsQ0FBQzt3QkFFRixJQUFJLFNBQVMsRUFBRTs0QkFDYixpQ0FBaUM7NEJBQ2pDLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7NEJBRWxHLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7Z0NBQ2hDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzZCQUN2Qjs0QkFFRCxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzs0QkFDeEIsU0FBUyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7NEJBRTdCLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzt5QkFDdEM7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLE1BQUMsQ0FBUywwQ0FBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDaEg7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CO2FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ2pDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQjthQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNqQyxTQUFTLENBQUMsQ0FBQyxJQUFrQyxFQUFFLEVBQUU7WUFDaEQsSUFBSSxDQUFDLENBQUMsSUFBSSxZQUFZLGlCQUFpQixDQUFDLEVBQUU7Z0JBQ3hDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3hDO1lBRUQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7O1lBQ3BGLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxNQUFBLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsbUNBQUksRUFBRSxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxHQUFHLFlBQW1CLENBQUM7WUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxRQUFrQjs7UUFDaEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsRUFBMEIsQ0FBQztRQUNoRixNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFM0QsTUFBTSxZQUFZLG1DQUNiLE9BQU8sS0FDVixVQUFVLGtDQUNMLE9BQU8sQ0FBQyxVQUFVLEdBQ2xCLG9CQUFvQixDQUFDLFVBQVUsSUFFckMsQ0FBQztRQUVGLE1BQU0sU0FBUyxHQUFHLE1BQUEsWUFBWSxDQUFDLFVBQVUsMENBQUUsU0FBUyxDQUFDO1FBQ3JELElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxjQUFjLEdBQUcsZ0NBQ2pCLFlBQVksS0FDZixVQUFVLGtDQUNMLFlBQVksQ0FBQyxVQUFVLEtBQzFCLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsTUFFeEQsQ0FBQztTQUNWO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxHQUFHLFlBQW1CLENBQUM7U0FDM0M7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU8sb0JBQW9CLENBQUMsZUFBeUI7UUFDcEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztRQUN4QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8sMEJBQTBCLENBQUMsS0FBd0I7O1FBQ3pELE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RyxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztRQUMvRSxNQUFNLEVBQUUsNkJBQTZCLEVBQUUsR0FBRyxNQUFBLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxtQ0FBSSxFQUFFLENBQUM7UUFFakYsSUFBSSw2QkFBNkIsRUFBRTtZQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQzFFO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixtQ0FDaEIsSUFBSSxDQUFDLGdCQUFnQixLQUN4QixRQUFRLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxPQUFPLEVBQUUsQ0FBQyxHQUM5RCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU3RCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxNQUFnQixFQUFFLE9BQWlCLEVBQUUsV0FBb0I7O1FBQ3pGLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDL0UsTUFBTSxVQUFVLEdBQUcsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RSxNQUFNLFdBQVcsR0FBRyxNQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxXQUFXLG1DQUFJLENBQUMsQ0FBQztRQUVqRCxJQUFJLEdBQUcsQ0FBQztRQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxXQUFXLENBQUMsRUFBRTtZQUM3QyxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1NBQ2hFO2FBQU07WUFDTCxHQUFHLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7Z0JBQ3JDLENBQUMsQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsR0FBSSxXQUFzQjtnQkFDckQsQ0FBQyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO1NBQy9CO1FBRUQsTUFBTSxlQUFlLEdBQUcsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFFbkUsSUFBSSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQ3hCLG1CQUFtQixHQUFHO2dCQUNwQixFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDZixJQUFJLEVBQUUsZUFBZTthQUNULENBQUM7WUFDZixNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsbUJBQW1CLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUNoQyxtQkFBbUIsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO0lBQ3pDLENBQUM7SUFFTyxjQUFjLENBQUMsT0FBZ0IsRUFBRSxXQUFvQixFQUFFLGNBQXlCO1FBQ3RGLE9BQU87WUFDTCxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLEtBQUs7WUFDbEQsSUFBSSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSTtZQUM1QixJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSztZQUM1RixTQUFTLEVBQUUsS0FBSztZQUNoQixRQUFRLEVBQUUsY0FBYyxhQUFkLGNBQWMsdUJBQWQsY0FBYyxDQUFFLEVBQUU7U0FDakIsQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU8sWUFBWTs7UUFDbEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUM7UUFFdEQsTUFBTSxVQUFVLEdBQUcsTUFBQSxZQUFZLGFBQVosWUFBWSx1QkFBWixZQUFZLENBQUUsSUFBSSwwQ0FBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQUEsWUFBWSxhQUFaLFlBQVksdUJBQVosWUFBWSxDQUFFLElBQUksMENBQUcsQ0FBQyxDQUFDLENBQUM7UUFFM0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsTUFBQSxZQUFZLGFBQVosWUFBWSx1QkFBWixZQUFZLENBQUUsUUFBUSxtQ0FBSSxFQUFFLEVBQUUsWUFBWSxhQUFaLFlBQVksdUJBQVosWUFBWSxDQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFbkcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBRTVCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLGFBQWEsQ0FBQyxRQUFrQjtRQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGVBQWUsQ0FBQyxRQUFrQixFQUFFLE9BQWlCOztRQUNuRCw4QkFBOEI7UUFDOUIsSUFBSSxRQUFRLEdBQUcsTUFBQSxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQUEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLDBDQUFFLFFBQVEsQ0FBQyxtQ0FBSSxFQUFFLENBQUM7UUFDbEYsTUFBTSxjQUFjLEdBQUcsTUFBQSxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQUEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLDBDQUFFLFFBQVEsQ0FBQyxtQ0FBSSxFQUFFLENBQUM7UUFDMUYsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZELG9CQUFvQixDQUFDLGdCQUFnQixDQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFDaEMsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixRQUFRLEVBQ1IsY0FBYyxFQUNkLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksR0FBRyxDQUFDLFNBQVMsRUFDNUMsTUFBQSxNQUFBLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSwwQ0FBRSxjQUFjLG1DQUFJLEtBQUssQ0FDMUQsQ0FBQztRQUVGLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdkQsY0FBYztRQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFaEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVGLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVGO1FBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNqRDtJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRU8sMEJBQTBCLENBQUMsUUFBa0IsRUFBRSxNQUFvQjtRQUN6RSxNQUFNLElBQUksR0FBZ0I7WUFDeEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ3RFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUNoRSxDQUFDO1FBRWpCLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRXJCLEtBQUssTUFBTSxLQUFLLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRTtZQUN0QyxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2RDtJQUNILENBQUM7SUFFTyxhQUFhLENBQUMsUUFBbUI7O1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQUEsSUFBSSxDQUFDLFdBQVcsMENBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFckUsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVPLFdBQVcsQ0FBQyxFQUFVO1FBQzVCLE9BQU8sVUFBVSxDQUFDLHlCQUF5QixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDdEgsQ0FBQzs7OEdBdmdCVSxnQkFBZ0Isd0xBd0JqQixjQUFjO2tHQXhCYixnQkFBZ0Isc0ZBRmhCLENBQUMsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDLDBCQ3ZDdkYsbWdFQW1EQTs0RkRWYSxnQkFBZ0I7a0JBUDVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRTtvQkFDbkIsV0FBVyxFQUFFLHdCQUF3QjtvQkFDckMsU0FBUyxFQUFFLENBQUMsOEJBQThCLEVBQUUsd0JBQXdCLENBQUM7b0JBQ3JFLFNBQVMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQztpQkFDdEY7OzBCQXlCSSxNQUFNOzJCQUFDLGNBQWM7a0tBUkcsZUFBZTtzQkFBekMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEF0dHJpYnV0ZSxcbiAgQ2hhcmdlSXRlbSxcbiAgRW50aXR5VXRpbCxcbiAgTGluZUl0ZW0sXG4gIE9yZGVyQnlQaXBlLFxuICBQcmljZUFkanVzdG1lbnQsXG4gIFNhbGVzZm9yY2VJZFV0aWxzLFxuICBTZWFyY2hGaWx0ZXJQaXBlLFxuICBTZWN0aW9uLFxuICBTZWN0aW9uUGF0aCxcbiAgVUlUYWIsXG4gIFVVSUQsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY29yZSc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29sbGFwc2libGVTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb2xsYXBzaWJsZS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1TY29wZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtLXNjb3BlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUnVudGltZUZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcnVudGltZS1mb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgUnVudGltZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ydW50aW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VjdGlvbkhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZWN0aW9uLWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNlY3Rpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBMZWdhY3lSdW50aW1lQ29udGV4dCwgU29sdXRpb25SZWFkeUF3YXJlLCBVcGRhdGVEYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQm91bmREYXRhVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzL2JvdW5kLWRhdGEudHlwZXMnO1xuaW1wb3J0IHsgTGluZUl0ZW1VdGlsIH0gZnJvbSAnLi4vLi4vdXRpbHMvbGluZS1pdGVtLnV0aWwnO1xuaW1wb3J0IHsgZ2V0U2VjdGlvblRyZWUgfSBmcm9tICcuLi8uLi91dGlscy9zZWN0aW9uLnV0aWxzJztcbmltcG9ydCB7IFNlY3Rpb25zQmluZGVySGVscGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvc2VjdGlvbnMtYmluZGVyLmhlbHBlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLXJ1bnRpbWUnLFxuICBtb2R1bGVJZDogbW9kdWxlLmlkLFxuICB0ZW1wbGF0ZVVybDogJ3J1bnRpbWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ydW50aW1lLWxlZ2FjeS1zdHlsZXMuc2NzcycsICdydW50aW1lLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0Zvcm1TY29wZVNlcnZpY2UsIENvbGxhcHNpYmxlU3RhdGVTZXJ2aWNlLCBPcmRlckJ5UGlwZSwgU2VhcmNoRmlsdGVyUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgU29sdXRpb25SZWFkeUF3YXJlIHtcbiAgcmVhZG9ubHkgbWVzc2FnZUJ1Y2tldElkID0gJ3VpLnJ1bnRpbWUnO1xuXG4gIHB1YmxpYyBzb3J0ZWRTZWN0aW9uczogU2VjdGlvbltdID0gW107XG4gIHB1YmxpYyBzdGF0aWNTZWN0aW9uczogU2VjdGlvbltdID0gW107XG5cbiAgcnVudGltZUNvbnRleHQhOiBMZWdhY3lSdW50aW1lQ29udGV4dDtcbiAgc29sdXRpb25MaW5lSXRlbSE6IExpbmVJdGVtO1xuICBmb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcblxuICBhY3RpdmVVSVRhYj86IFVJVGFiO1xuXG4gIHNvbHV0aW9uSXNSZWFkeSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKSBwcml2YXRlIHJlYWRvbmx5IHNvbHV0aW9uVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VjdGlvbnNTZXJ2aWNlOiBTZWN0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtU2NvcGU6IEZvcm1TY29wZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb2xsYXBzaWJsZVN0YXRlOiBDb2xsYXBzaWJsZVN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1TZXJ2aWNlOiBSdW50aW1lRm9ybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBydW50aW1lU2VydmljZTogUnVudGltZVNlcnZpY2UsXG4gICAgQEluamVjdChNZXNzYWdlU2VydmljZSkgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcmRlckJ5UGlwZTogT3JkZXJCeVBpcGUsXG4gICAgcHJpdmF0ZSBzZWFyY2hGaWx0ZXJQaXBlOiBTZWFyY2hGaWx0ZXJQaXBlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuXG4gIHByaXZhdGUgYWRqdXN0UHJpY2UoXG4gICAgdmFsdWVPcHRpb246IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBzZWN0aW9uOiBTZWN0aW9uLFxuICAgIHNvbHV0aW9uTGluZUl0ZW06IExpbmVJdGVtLFxuICAgIHBhdGNoOiBEaWN0aW9uYXJ5PFByaWNlQWRqdXN0bWVudD4sXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmVudExpbmVJdGVtID0gc2VjdGlvbi5tb2RlbCAmJiBMaW5lSXRlbVV0aWwuZmluZEJ5SWQoc2VjdGlvbi5tb2RlbC5pZCwgW3NvbHV0aW9uTGluZUl0ZW1dKTtcblxuICAgIGlmICghcGFyZW50TGluZUl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwYXJlbnRMaW5lSXRlbS5saW5lSXRlbXMgPSBwYXJlbnRMaW5lSXRlbS5saW5lSXRlbXMubWFwKGxpbmVJdGVtID0+IHtcbiAgICAgIGNvbnN0IHsgcHJvZHVjdElkLCBjaGFyZ2VJdGVtcyB9ID0gbGluZUl0ZW07XG5cbiAgICAgIGlmIChwcm9kdWN0SWQgIT09IHZhbHVlT3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBsaW5lSXRlbTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2hhcmdlSXRlbSA9IGNoYXJnZUl0ZW1zLnNoaWZ0KCk7XG4gICAgICBjb25zdCB1cGRhdGVkQ2hhcmdlSXRlbSA9IHtcbiAgICAgICAgLi4uY2hhcmdlSXRlbSxcbiAgICAgICAgLi4ucGF0Y2gsXG4gICAgICB9IGFzIENoYXJnZUl0ZW07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmxpbmVJdGVtLFxuICAgICAgICBjaGFyZ2VJdGVtczogW3VwZGF0ZWRDaGFyZ2VJdGVtLCAuLi5jaGFyZ2VJdGVtc10sXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGhpcy51cGRhdGVSdW50aW1lKHNvbHV0aW9uTGluZUl0ZW0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtU2NvcGUuZm9ybVN1Ym1pdEV2ZW50LnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKGU6IFVwZGF0ZURhdGEpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIGNvbnN0IHNvbHV0aW9uTGluZUl0ZW0gPSBFbnRpdHlVdGlsLmNsb25lKHRoaXMuc29sdXRpb25MaW5lSXRlbSk7XG5cbiAgICAgICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMuZmluZFNlY3Rpb24oZS5pZCk7XG5cbiAgICAgICAgaWYgKCFzZWN0aW9uKSB7XG4gICAgICAgICAgdGhyb3cgJ1NlY3Rpb24gbm90IGZvdW5kJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbnRpdHlUeXBlID0gc2VjdGlvbi5ib3VuZERhdGEuZW50aXR5VHlwZTtcblxuICAgICAgICBpZiAoZW50aXR5VHlwZSA9PT0gQm91bmREYXRhVHlwZVtCb3VuZERhdGFUeXBlLlBPUlRdIHx8IGVudGl0eVR5cGUgPT09IEJvdW5kRGF0YVR5cGVbQm91bmREYXRhVHlwZS5UWVBFXSkge1xuICAgICAgICAgIGlmIChlLmFjdGlvbiA9PT0gJ3BhdGNoJyAmJiBFbnRpdHlVdGlsLmlzUHJlc2VudChlLnZhbHVlT3B0aW9uKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVPcHRpb246IGFueSA9IGVbJ3ZhbHVlT3B0aW9uJ107XG5cbiAgICAgICAgICAgIGlmICghc2VjdGlvbi5tb2RlbD8ucGFyZW50SWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5jb2xsYXBzaWJsZVN0YXRlLmNsZWFyU3RhdGUoc2VjdGlvbi5pZCk7XG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlUnVudGltZSh2YWx1ZU9wdGlvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBwYXJlbnRMaW5lSXRlbSA9IExpbmVJdGVtVXRpbC5maW5kQnlJZChzZWN0aW9uLm1vZGVsLnBhcmVudElkLCBbc29sdXRpb25MaW5lSXRlbV0pO1xuXG4gICAgICAgICAgICAgIGlmIChwYXJlbnRMaW5lSXRlbSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZHggPSBwYXJlbnRMaW5lSXRlbS5saW5lSXRlbXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PT0gc2VjdGlvbi5tb2RlbD8uaWQpO1xuXG4gICAgICAgICAgICAgICAgcGFyZW50TGluZUl0ZW0ubGluZUl0ZW1zLnNwbGljZShpbmR4LCAxLCB2YWx1ZU9wdGlvbik7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbGxhcHNpYmxlU3RhdGUuY2xlYXJTdGF0ZShzZWN0aW9uLmlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJ1bnRpbWUoc29sdXRpb25MaW5lSXRlbSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50aXR5VHlwZSA9PT0gQm91bmREYXRhVHlwZVtCb3VuZERhdGFUeXBlLlBPUlRdKSB7XG4gICAgICAgICAgaWYgKGUuYWN0aW9uID09PSAndXBzZXJ0Jykge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50TGluZUl0ZW0gPSBzZWN0aW9uLm1vZGVsICYmIExpbmVJdGVtVXRpbC5maW5kQnlJZChzZWN0aW9uLm1vZGVsLmlkLCBbc29sdXRpb25MaW5lSXRlbV0pO1xuXG4gICAgICAgICAgICBpZiAocGFyZW50TGluZUl0ZW0pIHtcbiAgICAgICAgICAgICAgcGFyZW50TGluZUl0ZW0ubGluZUl0ZW1zLmZvckVhY2goaSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgZS5zZWxlY3RlZFZhbHVlT3B0aW9ucyAmJlxuICAgICAgICAgICAgICAgICAgZS5zZWxlY3RlZFZhbHVlT3B0aW9ucy5maW5kSW5kZXgodiA9PiB2LnRvTG93ZXJDYXNlKCkgPT09IGkudHlwZS50b0xvd2VyQ2FzZSgpKSA8IDBcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FyZGluYWxpdHlWYXJpYWJsZShwYXJlbnRMaW5lSXRlbSwgaSwgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgY29uc3QgbGluZUl0ZW1zID0gcGFyZW50TGluZUl0ZW0/LmxpbmVJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgaSA9PlxuICAgICAgICAgICAgICAgICAgZS5zZWxlY3RlZFZhbHVlT3B0aW9ucyAmJlxuICAgICAgICAgICAgICAgICAgZS5zZWxlY3RlZFZhbHVlT3B0aW9ucy5maW5kSW5kZXgodiA9PiB2LnRvTG93ZXJDYXNlKCkgPT09IGkudHlwZS50b0xvd2VyQ2FzZSgpKSA+IC0xLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBlLnNlbGVjdGVkVmFsdWVPcHRpb25zPy5mb3JFYWNoKHYgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChsaW5lSXRlbXM/LmZpbmRJbmRleChpdGVtID0+IGl0ZW0udHlwZS50b0xvd2VyQ2FzZSgpID09PSB2LnRvTG93ZXJDYXNlKCkpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgbGluZUl0ZW0gPSB0aGlzLmNyZWF0ZUxpbmVJdGVtKHNlY3Rpb24sIHYsIHBhcmVudExpbmVJdGVtKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FyZGluYWxpdHlWYXJpYWJsZShwYXJlbnRMaW5lSXRlbSwgbGluZUl0ZW0pO1xuICAgICAgICAgICAgICAgICAgbGluZUl0ZW1zLnB1c2gobGluZUl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVSdW50aW1lKHNvbHV0aW9uTGluZUl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChlLmFjdGlvbiA9PT0gJ2NyZWF0ZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudExpbmVJdGVtID0gc2VjdGlvbi5tb2RlbCAmJiBMaW5lSXRlbVV0aWwuZmluZEJ5SWQoc2VjdGlvbi5tb2RlbC5pZCwgW3NvbHV0aW9uTGluZUl0ZW1dKTtcblxuICAgICAgICAgICAgaWYgKHBhcmVudExpbmVJdGVtKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlT3B0aW9uID0gZS52YWx1ZU9wdGlvbjtcbiAgICAgICAgICAgICAgY29uc3QgbGluZUl0ZW0gPSB0aGlzLmNyZWF0ZUxpbmVJdGVtKHNlY3Rpb24sIHZhbHVlT3B0aW9uLCBwYXJlbnRMaW5lSXRlbSk7XG4gICAgICAgICAgICAgIHBhcmVudExpbmVJdGVtLmxpbmVJdGVtcy5wdXNoKGxpbmVJdGVtKTtcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYXJkaW5hbGl0eVZhcmlhYmxlKHBhcmVudExpbmVJdGVtLCBsaW5lSXRlbSk7XG5cbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVSdW50aW1lKHNvbHV0aW9uTGluZUl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChlLmFjdGlvbiA9PT0gJ2NvcHknKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRMaW5lSXRlbSA9IHNlY3Rpb24ubW9kZWwgJiYgTGluZUl0ZW1VdGlsLmZpbmRCeUlkKHNlY3Rpb24ubW9kZWwuaWQsIFtzb2x1dGlvbkxpbmVJdGVtXSk7XG5cbiAgICAgICAgICAgIGlmIChwYXJlbnRMaW5lSXRlbSkge1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZU9wdGlvbiA9IGUudmFsdWVPcHRpb247XG4gICAgICAgICAgICAgIGNvbnN0IGxpbmVJdGVtVG9Db3B5ID0gcGFyZW50TGluZUl0ZW0ubGluZUl0ZW1zLmZpbmQobGkgPT4gbGkuaWQgPT09IHZhbHVlT3B0aW9uKTtcbiAgICAgICAgICAgICAgaWYgKGxpbmVJdGVtVG9Db3B5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZUl0ZW06IExpbmVJdGVtID0geyAuLi5saW5lSXRlbVRvQ29weSwgaWQ6ICcnIH07XG4gICAgICAgICAgICAgICAgcGFyZW50TGluZUl0ZW0ubGluZUl0ZW1zLnB1c2gobGluZUl0ZW0pO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FyZGluYWxpdHlWYXJpYWJsZShwYXJlbnRMaW5lSXRlbSwgbGluZUl0ZW0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVSdW50aW1lKHNvbHV0aW9uTGluZUl0ZW0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGUuYWN0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50TGluZUl0ZW0gPSBzZWN0aW9uLm1vZGVsICYmIExpbmVJdGVtVXRpbC5maW5kQnlJZChzZWN0aW9uLm1vZGVsLmlkLCBbc29sdXRpb25MaW5lSXRlbV0pO1xuXG4gICAgICAgICAgICBpZiAocGFyZW50TGluZUl0ZW0pIHtcbiAgICAgICAgICAgICAgLy9Bc3N1bWluZyB0aGF0IHJhZGlvIGNvbnRyb2wgaXMgdGhlIG9ubHkgY29udHJvbCwgdGhhdCAndXBkYXRlcycgdmFsdWVzXG4gICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzID0gc2VjdGlvbi5tb2RlbD8ubGluZUl0ZW1zLmZpbHRlcihsaSA9PiBsaS5wb3J0ICYmIGxpLnBvcnQgPT09IHNlY3Rpb24uYm91bmREYXRhLm5hbWUpWzBdO1xuXG4gICAgICAgICAgICAgIGlmIChwcmV2aW91cykge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FyZGluYWxpdHlWYXJpYWJsZShwYXJlbnRMaW5lSXRlbSwgcHJldmlvdXMsIDApO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBwYXJlbnRMaW5lSXRlbS5saW5lSXRlbXMuZmluZEluZGV4KGxpID0+IGxpLmlkID09PSBwcmV2aW91cz8uaWQpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGxpbmVJdGVtOiBMaW5lSXRlbSA9IHtcbiAgICAgICAgICAgICAgICBpZDogVVVJRC5VVUlEKCksXG4gICAgICAgICAgICAgICAgcXR5OiBwcmV2aW91cz8ucXR5LFxuICAgICAgICAgICAgICAgIHBvcnQ6IHByZXZpb3VzPy5wb3J0LFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudGl0eVV0aWwuaXNQcmVzZW50KGUudmFsdWVPcHRpb24pID8gZS52YWx1ZU9wdGlvbiA6IHRoaXMuZm9ybS5jb250cm9sc1tlLmlkXS52YWx1ZSxcbiAgICAgICAgICAgICAgICBjZmdTdGF0dXM6ICdOZXcnLFxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBwcmV2aW91cz8ucGFyZW50SWQsXG4gICAgICAgICAgICAgIH0gYXMgTGluZUl0ZW07XG5cbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYXJkaW5hbGl0eVZhcmlhYmxlKHBhcmVudExpbmVJdGVtLCBsaW5lSXRlbSk7XG4gICAgICAgICAgICAgIHBhcmVudExpbmVJdGVtLmxpbmVJdGVtc1tpbmRleF0gPSBsaW5lSXRlbTtcblxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJ1bnRpbWUoc29sdXRpb25MaW5lSXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGUuYWN0aW9uID09PSAncmVtb3ZlJykge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50TGluZUl0ZW0gPSBzZWN0aW9uLm1vZGVsICYmIExpbmVJdGVtVXRpbC5maW5kQnlJZChzZWN0aW9uLm1vZGVsLmlkLCBbc29sdXRpb25MaW5lSXRlbV0pO1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHBhcmVudExpbmVJdGVtICYmXG4gICAgICAgICAgICAgIFNlY3Rpb25zQmluZGVySGVscGVyLmlzUmVtb3ZlQWxsb3dlZChwYXJlbnRMaW5lSXRlbSwgc2VjdGlvbi5ib3VuZERhdGEubmFtZSwgc2VjdGlvbi5tb2RlbD8ucXR5KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gcGFyZW50TGluZUl0ZW0ubGluZUl0ZW1zLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICBpdGVtID0+IGl0ZW0udHlwZS50b0xvd2VyQ2FzZSgpID09PSBlLnZhbHVlT3B0aW9uPy50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92ZWQgPSBwYXJlbnRMaW5lSXRlbS5saW5lSXRlbXMuc3BsaWNlKGluZGV4LCAxKVswXTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhcmRpbmFsaXR5VmFyaWFibGUocGFyZW50TGluZUl0ZW0sIHJlbW92ZWQsIDApO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUnVudGltZShzb2x1dGlvbkxpbmVJdGVtKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChlLmFjdGlvbiA9PT0gJ3F0eVVwZGF0ZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVTZWN0aW9uID0gZS52YWx1ZU9wdGlvblxuICAgICAgICAgICAgICA/IFNlY3Rpb25IZWxwZXJTZXJ2aWNlLmZpbmRTZWN0aW9uRm9yVmFsdWUoc2VjdGlvbiwgZS52YWx1ZU9wdGlvbilcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGNvbnN0IHR5cGVMaW5lSXRlbSA9IHR5cGVTZWN0aW9uPy5tb2RlbCAmJiBMaW5lSXRlbVV0aWwuZmluZEJ5SWQodHlwZVNlY3Rpb24ubW9kZWwuaWQsIFtzb2x1dGlvbkxpbmVJdGVtXSk7XG4gICAgICAgICAgICBpZiAodHlwZVNlY3Rpb24gJiYgdHlwZUxpbmVJdGVtKSB7XG4gICAgICAgICAgICAgIHR5cGVMaW5lSXRlbS5xdHkgPSArdGhpcy5mb3JtLmNvbnRyb2xzW3R5cGVTZWN0aW9uLmlkICsgJ3F0eSddLnZhbHVlO1xuICAgICAgICAgICAgICB0eXBlTGluZUl0ZW0uY2ZnU3RhdHVzID0gJ1VzZXInO1xuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJ1bnRpbWUoc29sdXRpb25MaW5lSXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGUuYWN0aW9uID09PSAnYWRqdXN0TmV0UHJpY2UnKSB7XG4gICAgICAgICAgICBjb25zdCB7IHZhbHVlT3B0aW9uLCBvcHRpb25zIH0gPSBlO1xuICAgICAgICAgICAgY29uc3QgeyBhbW91bnQgfSA9IG9wdGlvbnMgPz8ge307XG5cbiAgICAgICAgICAgIGNvbnN0IHByaWNlQWRqdXN0bWVudDogUHJpY2VBZGp1c3RtZW50ID0ge1xuICAgICAgICAgICAgICB0eXBlOiAnT1ZFUlJJREVfQU1PVU5UJyxcbiAgICAgICAgICAgICAgZXhwbGFuYXRpb246ICdNYW51YWwgbmV0IHByaWNlIGFkanVzdG1lbnQnLFxuICAgICAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLmFkanVzdFByaWNlKHZhbHVlT3B0aW9uLCBzZWN0aW9uLCBzb2x1dGlvbkxpbmVJdGVtLCB7IHByaWNlQWRqdXN0bWVudCB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZS5hY3Rpb24gPT09ICdhZGp1c3RMaXN0UHJpY2UnKSB7XG4gICAgICAgICAgICBjb25zdCB7IHZhbHVlT3B0aW9uLCBvcHRpb25zIH0gPSBlO1xuICAgICAgICAgICAgY29uc3QgeyBhbW91bnQgfSA9IG9wdGlvbnMgPz8ge307XG5cbiAgICAgICAgICAgIGNvbnN0IGxpc3RQcmljZUFkanVzdG1lbnQ6IFByaWNlQWRqdXN0bWVudCA9IHtcbiAgICAgICAgICAgICAgdHlwZTogJ09WRVJSSURFX0FNT1VOVCcsXG4gICAgICAgICAgICAgIGV4cGxhbmF0aW9uOiAnTWFudWFsIGxpc3QgcHJpY2UgYWRqdXN0bWVudCcsXG4gICAgICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuYWRqdXN0UHJpY2UodmFsdWVPcHRpb24sIHNlY3Rpb24sIHNvbHV0aW9uTGluZUl0ZW0sIHsgbGlzdFByaWNlQWRqdXN0bWVudCB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50aXR5VHlwZSA9PT0gQm91bmREYXRhVHlwZVtCb3VuZERhdGFUeXBlLlRZUEVdKSB7XG4gICAgICAgICAgaWYgKGUuYWN0aW9uID09PSAncmVtb3ZlJykge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50TGluZUl0ZW0gPVxuICAgICAgICAgICAgICBzZWN0aW9uLm1vZGVsPy5wYXJlbnRJZCAmJiBMaW5lSXRlbVV0aWwuZmluZEJ5SWQoc2VjdGlvbi5tb2RlbC5wYXJlbnRJZCwgW3NvbHV0aW9uTGluZUl0ZW1dKTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBwYXJlbnRMaW5lSXRlbSAmJlxuICAgICAgICAgICAgICBzZWN0aW9uLm1vZGVsICYmXG4gICAgICAgICAgICAgIHNlY3Rpb24ubW9kZWwucG9ydCAmJlxuICAgICAgICAgICAgICBTZWN0aW9uc0JpbmRlckhlbHBlci5pc1JlbW92ZUFsbG93ZWQocGFyZW50TGluZUl0ZW0sIHNlY3Rpb24ubW9kZWwucG9ydCwgc2VjdGlvbi5tb2RlbD8ucXR5KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gcGFyZW50TGluZUl0ZW0ubGluZUl0ZW1zLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaWQgPT09IHNlY3Rpb24ubW9kZWw/LmlkKTtcbiAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZW1vdmVkID0gcGFyZW50TGluZUl0ZW0ubGluZUl0ZW1zLnNwbGljZShpbmRleCwgMSlbMF07XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYXJkaW5hbGl0eVZhcmlhYmxlKHBhcmVudExpbmVJdGVtLCByZW1vdmVkLCAwKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbGxhcHNpYmxlU3RhdGUuY2xlYXJTdGF0ZShzZWN0aW9uLmlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJ1bnRpbWUoc29sdXRpb25MaW5lSXRlbSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZS5hY3Rpb24gPT09ICdxdHlVcGRhdGUnKSB7XG4gICAgICAgICAgICBjb25zdCB0eXBlTGluZUl0ZW0gPSBzZWN0aW9uLm1vZGVsICYmIExpbmVJdGVtVXRpbC5maW5kQnlJZChzZWN0aW9uLm1vZGVsLmlkLCBbc29sdXRpb25MaW5lSXRlbV0pO1xuXG4gICAgICAgICAgICBpZiAodHlwZUxpbmVJdGVtKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHF0eSA9ICt0aGlzLmZvcm0uY29udHJvbHNbZS5pZCArICdxdHknXS52YWx1ZTtcbiAgICAgICAgICAgICAgaWYgKHR5cGVMaW5lSXRlbS5wYXJlbnRJZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudExpbmVJdGVtID0gTGluZUl0ZW1VdGlsLmZpbmRCeUlkKHR5cGVMaW5lSXRlbS5wYXJlbnRJZCwgW3NvbHV0aW9uTGluZUl0ZW1dKTtcblxuICAgICAgICAgICAgICAgIGlmIChwYXJlbnRMaW5lSXRlbSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYXJkaW5hbGl0eVZhcmlhYmxlKHBhcmVudExpbmVJdGVtLCB0eXBlTGluZUl0ZW0sIHF0eSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHR5cGVMaW5lSXRlbS5xdHkgPSBxdHk7XG4gICAgICAgICAgICAgIHR5cGVMaW5lSXRlbS5jZmdTdGF0dXMgPSAnVXNlcic7XG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlUnVudGltZShzb2x1dGlvbkxpbmVJdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50aXR5VHlwZSA9PT0gQm91bmREYXRhVHlwZVtCb3VuZERhdGFUeXBlLkFUVFJJQlVURV0pIHtcbiAgICAgICAgICBpZiAoZS5hY3Rpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRMaW5lSXRlbSA9IHNlY3Rpb24ubW9kZWwgJiYgTGluZUl0ZW1VdGlsLmZpbmRCeUlkKHNlY3Rpb24ubW9kZWwuaWQsIFtzb2x1dGlvbkxpbmVJdGVtXSk7XG4gICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGUgPSBwYXJlbnRMaW5lSXRlbT8uYXR0cmlidXRlcy5maW5kKFxuICAgICAgICAgICAgICBhdHRyID0+IGF0dHIubmFtZS50b0xvd2VyQ2FzZSgpID09PSBzZWN0aW9uLmJvdW5kRGF0YS5uYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoYXR0cmlidXRlKSB7XG4gICAgICAgICAgICAgIC8vRXhwbGljaXRseSBzZXQgdmFsdWUgYWx3YXlzIHdpblxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSB0eXBlb2YgZS52YWx1ZU9wdGlvbiAhPT0gJ3VuZGVmaW5lZCcgPyBlLnZhbHVlT3B0aW9uIDogdGhpcy5mb3JtLmNvbnRyb2xzW2UuaWRdLnZhbHVlO1xuXG4gICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUudHlwZSA9PT0gJ0JPT0xFQU4nKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA/IDEgOiAwO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgYXR0cmlidXRlLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZS5jZmdTdGF0dXMgPSAnVXNlcic7XG5cbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVSdW50aW1lKHNvbHV0aW9uTGluZUl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBrZXk6IHRoaXMubWVzc2FnZUJ1Y2tldElkLCBzdW1tYXJ5OiBgQ29uZmlndXJhdGlvbiBmYWlsZWQgJHsoZSBhcyBhbnkpPy5tZXNzYWdlfWAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLm9uU29sdXRpb25SZWFkeUV2ZW50XG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKGxpbmVJdGVtID0+IHRoaXMub25Tb2x1dGlvblJlYWR5KGxpbmVJdGVtKSk7XG5cbiAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLm9uU29sdXRpb25VcGRhdGVkRXZlbnRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IExpbmVJdGVtIHwgSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCEoZGF0YSBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVNvbHV0aW9uVXBkYXRlKGRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oYW5kbGVTb2x1dGlvbkZhaWxlZFVwZGF0ZShkYXRhKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5ydW50aW1lU2VydmljZS5vblVJUmVmcmVzaEV2ZW50LnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgeyB1aURlZmluaXRpb24gfSA9IHRoaXMucnVudGltZVNlcnZpY2UuZ2V0UnVudGltZUNvbnRleHQoKSA/PyB7fTtcbiAgICAgIHRoaXMucnVudGltZUNvbnRleHQudWlEZWZpbml0aW9uID0gdWlEZWZpbml0aW9uIGFzIGFueTtcbiAgICAgIHRoaXMuZm9ybVNjb3BlLnNjcmlwdFNlc3Npb25TY29wZSA9IHt9O1xuICAgICAgdGhpcy5zdGFydFJ1bnRpbWUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uU29sdXRpb25SZWFkeShsaW5lSXRlbTogTGluZUl0ZW0pOiB2b2lkIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5ydW50aW1lU2VydmljZS5nZXRSdW50aW1lQ29udGV4dCgpIGFzIExlZ2FjeVJ1bnRpbWVDb250ZXh0O1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25Db250ZXh0ID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCk7XG5cbiAgICBjb25zdCBtZXJnZUNvbnRleHQ6IExlZ2FjeVJ1bnRpbWVDb250ZXh0ID0ge1xuICAgICAgLi4uY29udGV4dCxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgLi4uY29udGV4dC5wcm9wZXJ0aWVzLFxuICAgICAgICAuLi5jb25maWd1cmF0aW9uQ29udGV4dC5wcm9wZXJ0aWVzLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgYWNjb3VudElkID0gbWVyZ2VDb250ZXh0LnByb3BlcnRpZXM/LkFjY291bnRJZDtcbiAgICBpZiAoYWNjb3VudElkICYmIGFjY291bnRJZC5sZW5ndGggPT09IDE1KSB7XG4gICAgICB0aGlzLnJ1bnRpbWVDb250ZXh0ID0ge1xuICAgICAgICAuLi5tZXJnZUNvbnRleHQsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAuLi5tZXJnZUNvbnRleHQucHJvcGVydGllcyxcbiAgICAgICAgICBBY2NvdW50SWQ6IFNhbGVzZm9yY2VJZFV0aWxzLmdlbmVyYXRlSWQxOEZyb21JZDE1KGFjY291bnRJZCksXG4gICAgICAgIH0sXG4gICAgICB9IGFzIGFueTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ydW50aW1lQ29udGV4dCA9IG1lcmdlQ29udGV4dCBhcyBhbnk7XG4gICAgfVxuXG4gICAgdGhpcy5zb2x1dGlvbkxpbmVJdGVtID0gbGluZUl0ZW07XG4gICAgdGhpcy5ydW50aW1lU2VydmljZS5zZXRSdW50aW1lQ29udGV4dCh0aGlzLnJ1bnRpbWVDb250ZXh0KTtcblxuICAgIHRoaXMuc3RhcnRSdW50aW1lKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNvbHV0aW9uVXBkYXRlKHVwZGF0ZWRMaW5lSXRlbTogTGluZUl0ZW0pIHtcbiAgICB0aGlzLnNvbHV0aW9uTGluZUl0ZW0gPSB1cGRhdGVkTGluZUl0ZW07XG4gICAgdGhpcy5wcm9jZXNzU29sdXRpb24odHJ1ZSk7XG4gICAgdGhpcy5ydW50aW1lU2VydmljZS5zb2x1dGlvblByb2Nlc3NlZCh0aGlzLnNvbHV0aW9uTGluZUl0ZW0pO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU29sdXRpb25GYWlsZWRVcGRhdGUoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKTogdm9pZCB7XG4gICAgY29uc3QgaGFzRXJyb3JNZXNzYWdlID0gRW50aXR5VXRpbC5pc1ByZXNlbnQoZXJyb3IuZXJyb3IpICYmIEVudGl0eVV0aWwuaXNQcmVzZW50KGVycm9yLmVycm9yLm1lc3NhZ2UpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBoYXNFcnJvck1lc3NhZ2UgPyBlcnJvci5lcnJvci5tZXNzYWdlIDogJ0NvbmZpZ3VyYXRpb24gZmFpbGVkJztcbiAgICBjb25zdCB7IGlzSGFuZGxpbmdDb25maWd1cmF0aW9uRXJyb3JzIH0gPSB0aGlzLnJ1bnRpbWVDb250ZXh0LnVpRGVmaW5pdGlvbiA/PyB7fTtcblxuICAgIGlmIChpc0hhbmRsaW5nQ29uZmlndXJhdGlvbkVycm9ycykge1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBrZXk6IHRoaXMubWVzc2FnZUJ1Y2tldElkLCBzdW1tYXJ5OiBtZXNzYWdlIH0pO1xuICAgIH1cblxuICAgIHRoaXMuc29sdXRpb25MaW5lSXRlbSA9IHtcbiAgICAgIC4uLnRoaXMuc29sdXRpb25MaW5lSXRlbSxcbiAgICAgIG1lc3NhZ2VzOiBbLi4udGhpcy5zb2x1dGlvbkxpbmVJdGVtLm1lc3NhZ2VzLCBgRToke21lc3NhZ2V9YF0sXG4gICAgfTtcbiAgICB0aGlzLnByb2Nlc3NTb2x1dGlvbih0cnVlLCB0cnVlKTtcbiAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLnNvbHV0aW9uUHJvY2Vzc2VkKHRoaXMuc29sdXRpb25MaW5lSXRlbSk7XG5cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNhcmRpbmFsaXR5VmFyaWFibGUocGFyZW50OiBMaW5lSXRlbSwgdXBkYXRlZDogTGluZUl0ZW0sIG5ld1F1YW50aXR5PzogbnVtYmVyKSB7XG4gICAgY29uc3QgcG9ydERvbWFpbiA9IHVwZGF0ZWQucG9ydCA/IHBhcmVudC5wb3J0RG9tYWluc1t1cGRhdGVkLnBvcnRdIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGRvbWFpblR5cGUgPSBwb3J0RG9tYWluPy5kb21haW5UeXBlcy5maW5kKHQgPT4gdC5uYW1lID09PSB1cGRhdGVkLnR5cGUpO1xuICAgIGNvbnN0IGNhcmRpbmFsaXR5ID0gZG9tYWluVHlwZT8uY2FyZGluYWxpdHkgPz8gMDtcblxuICAgIGxldCBxdHk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoZG9tYWluVHlwZT8uY2FyZGluYWxpdHkpKSB7XG4gICAgICBxdHkgPSBOdW1iZXIuaXNGaW5pdGUobmV3UXVhbnRpdHkpID8gbmV3UXVhbnRpdHkgOiB1cGRhdGVkLnF0eTtcbiAgICB9IGVsc2Uge1xuICAgICAgcXR5ID0gRW50aXR5VXRpbC5pc1ByZXNlbnQobmV3UXVhbnRpdHkpXG4gICAgICAgID8gY2FyZGluYWxpdHkgLSB1cGRhdGVkLnF0eSArIChuZXdRdWFudGl0eSBhcyBudW1iZXIpXG4gICAgICAgIDogY2FyZGluYWxpdHkgKyB1cGRhdGVkLnF0eTtcbiAgICB9XG5cbiAgICBjb25zdCBjYXJkaW5hbGl0eU5hbWUgPSAnI0NWLScgKyB1cGRhdGVkLnR5cGUgKyAnQCcgKyB1cGRhdGVkLnBvcnQ7XG5cbiAgICBsZXQgY2FyZGluYWxpdHlWYXJpYWJsZSA9IHBhcmVudC5hdHRyaWJ1dGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IGNhcmRpbmFsaXR5TmFtZSk7XG4gICAgaWYgKCFjYXJkaW5hbGl0eVZhcmlhYmxlKSB7XG4gICAgICBjYXJkaW5hbGl0eVZhcmlhYmxlID0ge1xuICAgICAgICBpZDogVVVJRC5VVUlEKCksXG4gICAgICAgIG5hbWU6IGNhcmRpbmFsaXR5TmFtZSxcbiAgICAgIH0gYXMgQXR0cmlidXRlO1xuICAgICAgcGFyZW50LmF0dHJpYnV0ZXMucHVzaChjYXJkaW5hbGl0eVZhcmlhYmxlKTtcbiAgICB9XG4gICAgY2FyZGluYWxpdHlWYXJpYWJsZS52YWx1ZSA9IHF0eTtcbiAgICBjYXJkaW5hbGl0eVZhcmlhYmxlLmNmZ1N0YXR1cyA9ICdVc2VyJztcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTGluZUl0ZW0oc2VjdGlvbjogU2VjdGlvbiwgdmFsdWVPcHRpb24/OiBzdHJpbmcsIHBhcmVudExpbmVJdGVtPzogTGluZUl0ZW0pOiBMaW5lSXRlbSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHF0eTogK3RoaXMuZm9ybS5jb250cm9sc1tzZWN0aW9uLmlkICsgJ3F0eSddLnZhbHVlLFxuICAgICAgcG9ydDogc2VjdGlvbi5ib3VuZERhdGEubmFtZSxcbiAgICAgIHR5cGU6IEVudGl0eVV0aWwuaXNQcmVzZW50KHZhbHVlT3B0aW9uKSA/IHZhbHVlT3B0aW9uIDogdGhpcy5mb3JtLmNvbnRyb2xzW3NlY3Rpb24uaWRdLnZhbHVlLFxuICAgICAgY2ZnU3RhdHVzOiAnTmV3JyxcbiAgICAgIHBhcmVudElkOiBwYXJlbnRMaW5lSXRlbT8uaWQsXG4gICAgfSBhcyBMaW5lSXRlbTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmUubmV4dCgpO1xuXG4gICAgdGhpcy5zZWN0aW9uc1NlcnZpY2UuZGVzdHJveSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFJ1bnRpbWUoKSB7XG4gICAgY29uc3QgdWlEZWZpbml0aW9uID0gdGhpcy5ydW50aW1lQ29udGV4dC51aURlZmluaXRpb247XG5cbiAgICBjb25zdCBkZWZhdWx0VGFiID0gdWlEZWZpbml0aW9uPy50YWJzPy5maW5kKHRhYiA9PiB0YWIuaXNEZWZhdWx0KTtcbiAgICB0aGlzLmFjdGl2ZVVJVGFiID0gRW50aXR5VXRpbC5pc1ByZXNlbnQoZGVmYXVsdFRhYikgPyBkZWZhdWx0VGFiIDogdWlEZWZpbml0aW9uPy50YWJzPy5bMF07XG5cbiAgICB0aGlzLnNlY3Rpb25zU2VydmljZS5jb21waWxlTW9kdWxlKHVpRGVmaW5pdGlvbj8uc2VjdGlvbnMgPz8gW10sIHVpRGVmaW5pdGlvbj8uaXNWaWV3RW5jYXBzdWxhdGVkKTtcblxuICAgIHRoaXMucHJvY2Vzc1NvbHV0aW9uKCk7XG5cbiAgICB0aGlzLnNvbHV0aW9uSXNSZWFkeSA9IHRydWU7XG5cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVJ1bnRpbWUobGluZUl0ZW06IExpbmVJdGVtKSB7XG4gICAgdGhpcy5zb2x1dGlvblVwZGF0ZWQuZW1pdChsaW5lSXRlbSk7XG4gIH1cblxuICBhZGRUb0NhcnQoKSB7XG4gICAgY29uc3QgbGluZUl0ZW0gPSBFbnRpdHlVdGlsLmNsb25lKHRoaXMuc29sdXRpb25MaW5lSXRlbSk7XG5cbiAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLnN0b3BSdW50aW1lKGxpbmVJdGVtKTtcbiAgfVxuXG4gIHByb2Nlc3NTb2x1dGlvbihpc1VwZGF0ZT86IGJvb2xlYW4sIGlzRXJyb3I/OiBib29sZWFuKTogdm9pZCB7XG4gICAgLy8xLiBCaW5kIHNlY3Rpb25zIHRvIHNvbHV0aW9uXG4gICAgbGV0IHNlY3Rpb25zID0gRW50aXR5VXRpbC5jbG9uZSh0aGlzLnJ1bnRpbWVDb250ZXh0LnVpRGVmaW5pdGlvbj8uc2VjdGlvbnMpID8/IFtdO1xuICAgIGNvbnN0IHNvdXJjZVNlY3Rpb25zID0gRW50aXR5VXRpbC5jbG9uZSh0aGlzLnJ1bnRpbWVDb250ZXh0LnVpRGVmaW5pdGlvbj8uc2VjdGlvbnMpID8/IFtdO1xuICAgIHRoaXMudXBkYXRlTGluZUl0ZW1zU2VjdGlvblBhdGgodGhpcy5zb2x1dGlvbkxpbmVJdGVtKTtcbiAgICBTZWN0aW9uc0JpbmRlckhlbHBlci5zZXRMaW5lSXRlbXNQYXRoKFxuICAgICAgdGhpcy5ydW50aW1lQ29udGV4dC5ydW50aW1lTW9kZWwsXG4gICAgICB0aGlzLnNvbHV0aW9uTGluZUl0ZW0sXG4gICAgICBzZWN0aW9ucyxcbiAgICAgIHNvdXJjZVNlY3Rpb25zLFxuICAgICAgKHNlYzogYW55KSA9PiAhc2VjLnBhcmVudElkICYmIHNlYy5ib3VuZERhdGEsXG4gICAgICB0aGlzLnJ1bnRpbWVDb250ZXh0LnVpRGVmaW5pdGlvbj8ucHJpY2luZ0VuYWJsZWQgPz8gZmFsc2UsXG4gICAgKTtcblxuICAgIHNlY3Rpb25zID0gc2VjdGlvbnMuZmlsdGVyKHMgPT4gcy5tb2RlbCAmJiBzLnRlbXBsYXRlKTtcblxuICAgIC8vMi4gSW5pdCBmb3JtXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtU2VydmljZS5pbml0Rm9ybShzZWN0aW9ucywgdGhpcy5zb2x1dGlvbkxpbmVJdGVtKTtcbiAgICB0aGlzLmZvcm1TY29wZS5mb3JtID0gdGhpcy5mb3JtO1xuXG4gICAgdGhpcy5zb3J0ZWRTZWN0aW9ucyA9IHRoaXMuZmlsdGVyQW5kU29ydChnZXRTZWN0aW9uVHJlZShzZWN0aW9ucy5maWx0ZXIocyA9PiAhcy5pc1N0YXRpYykpKTtcblxuICAgIGlmICghaXNVcGRhdGUpIHtcbiAgICAgIHRoaXMuc3RhdGljU2VjdGlvbnMgPSB0aGlzLmZpbHRlckFuZFNvcnQoZ2V0U2VjdGlvblRyZWUoc2VjdGlvbnMuZmlsdGVyKHMgPT4gcy5pc1N0YXRpYykpKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzRXJyb3IpIHtcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY2xlYXIodGhpcy5tZXNzYWdlQnVja2V0SWQpO1xuICAgIH1cbiAgfVxuXG4gIGhpZGVNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLmNhbmNlbFJ1bnRpbWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTGluZUl0ZW1zU2VjdGlvblBhdGgobGluZUl0ZW06IExpbmVJdGVtLCBwYXJlbnQ/OiBTZWN0aW9uUGF0aCkge1xuICAgIGNvbnN0IHBhdGg6IFNlY3Rpb25QYXRoID0ge1xuICAgICAgdHlwZXM6IHBhcmVudCA/IHBhcmVudC50eXBlcy5jb25jYXQoW2xpbmVJdGVtLnR5cGVdKSA6IFtsaW5lSXRlbS50eXBlXSxcbiAgICAgIHBvcnRzOiBwYXJlbnQgPyBwYXJlbnQucG9ydHMuY29uY2F0KGxpbmVJdGVtLnBvcnQgPyBbbGluZUl0ZW0ucG9ydF0gOiBbXSkgOiBbXSxcbiAgICB9IGFzIFNlY3Rpb25QYXRoO1xuXG4gICAgbGluZUl0ZW0ucGF0aCA9IHBhdGg7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGxpbmVJdGVtLmxpbmVJdGVtcykge1xuICAgICAgdGhpcy51cGRhdGVMaW5lSXRlbXNTZWN0aW9uUGF0aChjaGlsZCwgbGluZUl0ZW0ucGF0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJBbmRTb3J0KHNlY3Rpb25zOiBTZWN0aW9uW10pOiBTZWN0aW9uW10ge1xuICAgIGNvbnN0IGZpbHRlcmVkID0gdGhpcy5zZWFyY2hGaWx0ZXJQaXBlLnRyYW5zZm9ybShzZWN0aW9ucywgdGhpcy5hY3RpdmVVSVRhYj8uaWQsICdwYWdlJyk7XG4gICAgY29uc3Qgb3JkZXJlZCA9IHRoaXMub3JkZXJCeVBpcGUudHJhbnNmb3JtKGZpbHRlcmVkLCAnb3JkZXInLCAnYXNjJyk7XG5cbiAgICByZXR1cm4gb3JkZXJlZDtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFNlY3Rpb24oaWQ6IHN0cmluZyk6IFNlY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBFbnRpdHlVdGlsLmZpbmRCeUZpZWxkSGllcmFyY2hpY2FsbHkoJ2lkJywgaWQsIFsuLi50aGlzLnNvcnRlZFNlY3Rpb25zLCAuLi50aGlzLnN0YXRpY1NlY3Rpb25zXSwgJ2NoaWxkcmVuJyk7XG4gIH1cbn1cbiIsIjx2bC1sb2FkZXIgbGFiZWw9XCJMb2FkaW5nIFVJXCIgKm5nSWY9XCIhc29sdXRpb25Jc1JlYWR5OyBlbHNlIGNvbnRlbnRcIj48L3ZsLWxvYWRlcj5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzaWRlYmFyLXRhYnNcIlxuICAgIFtuZ0NsYXNzXT1cInsgaGlkZGVuOiAhcnVudGltZUNvbnRleHQ/LnVpRGVmaW5pdGlvbj8uZGVmYXVsdFBhbmVscyB9XCJcbiAgICAjdWlUYWJzPVwic2lkZWJhclRhYnNcIlxuICAgIHNpZGViYXJUYWJzPVwie3sgYWN0aXZlVUlUYWI/LmlkIH19XCJcbiAgICBpZD1cInZsLWRlZmF1bHQtc2lkZWJhci10YWJzXCJcbiAgPlxuICAgIDx1bD5cbiAgICAgIDxsaVxuICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHJ1bnRpbWVDb250ZXh0Py51aURlZmluaXRpb24/LnRhYnMgfCBvcmRlckJ5OiAnb3JkZXInOidhc2MnXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHVpVGFicy5hY3RpdmVUYWIgPT09IHRhYi5pZCB9XCJcbiAgICAgICAgKGNsaWNrKT1cInVpVGFicy5zd2l0Y2hUYWIodGFiLmlkKVwiXG4gICAgICA+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCI+e3sgdGFiLm5hbWUgfX08L2E+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJzZWN0aW9ucy13cmFwcGVyXCI+XG4gICAgPGZvcm0gcm9sZT1cImZvcm1cIiBuYW1lPVwiZm9ybVwiIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgbm92YWxpZGF0ZSBhdXRvY29tcGxldGU9XCJvZmZcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2Ygc3RhdGljU2VjdGlvbnM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlY3Rpb24ubW9kZWwgJiYgc2VjdGlvbi50ZW1wbGF0ZSAmJiAhc2VjdGlvbi5oaWRkZW5cIj5cbiAgICAgICAgICA8dmwtc2VjdGlvbi1yZW5kZXJlciBbc2VjdGlvbl09XCJzZWN0aW9uXCIgW2Zvcm1dPVwiZm9ybVwiPjwvdmwtc2VjdGlvbi1yZW5kZXJlcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBzb3J0ZWRTZWN0aW9uczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VjdGlvbi5tb2RlbCAmJiBzZWN0aW9uLnRlbXBsYXRlICYmICFzZWN0aW9uLmhpZGRlblwiPlxuICAgICAgICAgIDx2bC1zZWN0aW9uLXJlbmRlcmVyIFtzZWN0aW9uXT1cInNlY3Rpb25cIiBbZm9ybV09XCJmb3JtXCI+PC92bC1zZWN0aW9uLXJlbmRlcmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZm9ybT5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibW9kYWwtZm9vdGVyXCJcbiAgICAgICpuZ0lmPVwicnVudGltZUNvbnRleHQ/LnJ1bnRpbWVNb2RlID09PSAxXCJcbiAgICAgIGlkPVwidmwtcnVudGltZS1kZWZhdWx0LWZvb3RlclwiXG4gICAgICBbbmdDbGFzc109XCJ7IGhpZGRlbjogIXJ1bnRpbWVDb250ZXh0Py51aURlZmluaXRpb24/LmRlZmF1bHRQYW5lbHMgfVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBpbnB1dC1mb3JtLWlucHV0XCI+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiAoY2xpY2spPVwiZm9ybS52YWxpZCAmJiBhZGRUb0NhcnQoKVwiIGlkPVwiYWRkLXRvLWNhcnQtYnRuXCJcbiAgICAgICAgICA+QWRkIHRvIGNhcnQ8L2FcbiAgICAgICAgPlxuICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCIgKGNsaWNrKT1cImhpZGVNb2RhbCgpXCIgaWQ9XCJjYW5jZWwtYnRuXCI+Q2FuY2VsPC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
427
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2NvbXBvbmVudHMvdWktcnVudGltZS9ydW50aW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvY29tcG9uZW50cy91aS1ydW50aW1lL3J1bnRpbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBR0wsVUFBVSxFQUVWLFdBQVcsRUFFWCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBSWhCLElBQUksR0FDTCxNQUFNLGNBQWMsQ0FBQztBQUd0QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FB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LGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQywwQkN2Q3ZGLG1nRUFtREE7NEZEVmEsZ0JBQWdCO2tCQVA1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QixRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ25CLFdBQVcsRUFBRSx3QkFBd0I7b0JBQ3JDLFNBQVMsRUFBRSxDQUFDLDhCQUE4QixFQUFFLHdCQUF3QixDQUFDO29CQUNyRSxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUM7aUJBQ3RGOzswQkF5QkksTUFBTTsyQkFBQyxjQUFjO2tLQVJHLGVBQWU7c0JBQXpDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBBdHRyaWJ1dGUsXG4gIENoYXJnZUl0ZW0sXG4gIEVudGl0eVV0aWwsXG4gIExpbmVJdGVtLFxuICBPcmRlckJ5UGlwZSxcbiAgUHJpY2VBZGp1c3RtZW50LFxuICBTYWxlc2ZvcmNlSWRVdGlscyxcbiAgU2VhcmNoRmlsdGVyUGlwZSxcbiAgU2VjdGlvbixcbiAgU2VjdGlvblBhdGgsXG4gIFVJVGFiLFxuICBVVUlELFxufSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICdAdmVsb2NlL3Nkay9jb3JlJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb2xsYXBzaWJsZVN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbGxhcHNpYmxlLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybVNjb3BlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0tc2NvcGUuc2VydmljZSc7XG5pbXBvcnQgeyBSdW50aW1lRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ydW50aW1lLWZvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBSdW50aW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3J1bnRpbWUuc2VydmljZSc7XG5pbXBvcnQgeyBTZWN0aW9uSGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlY3Rpb24taGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2VjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IExlZ2FjeVJ1bnRpbWVDb250ZXh0LCBTb2x1dGlvblJlYWR5QXdhcmUsIFVwZGF0ZURhdGEgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBCb3VuZERhdGFUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMvYm91bmQtZGF0YS50eXBlcyc7XG5pbXBvcnQgeyBMaW5lSXRlbVV0aWwgfSBmcm9tICcuLi8uLi91dGlscy9saW5lLWl0ZW0udXRpbCc7XG5pbXBvcnQgeyBnZXRTZWN0aW9uVHJlZSB9IGZyb20gJy4uLy4uL3V0aWxzL3NlY3Rpb24udXRpbHMnO1xuaW1wb3J0IHsgU2VjdGlvbnNCaW5kZXJIZWxwZXIgfSBmcm9tICcuLi8uLi91dGlscy9zZWN0aW9ucy1iaW5kZXIuaGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmwtcnVudGltZScsXG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXG4gIHRlbXBsYXRlVXJsOiAncnVudGltZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3J1bnRpbWUtbGVnYWN5LXN0eWxlcy5zY3NzJywgJ3J1bnRpbWUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbRm9ybVNjb3BlU2VydmljZSwgQ29sbGFwc2libGVTdGF0ZVNlcnZpY2UsIE9yZGVyQnlQaXBlLCBTZWFyY2hGaWx0ZXJQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgUnVudGltZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBTb2x1dGlvblJlYWR5QXdhcmUge1xuICByZWFkb25seSBtZXNzYWdlQnVja2V0SWQgPSAndWkucnVudGltZSc7XG5cbiAgcHVibGljIHNvcnRlZFNlY3Rpb25zOiBTZWN0aW9uW10gPSBbXTtcbiAgcHVibGljIHN0YXRpY1NlY3Rpb25zOiBTZWN0aW9uW10gPSBbXTtcblxuICBydW50aW1lQ29udGV4dCE6IExlZ2FjeVJ1bnRpbWVDb250ZXh0O1xuICBzb2x1dGlvbkxpbmVJdGVtITogTGluZUl0ZW07XG4gIGZvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuXG4gIGFjdGl2ZVVJVGFiPzogVUlUYWI7XG5cbiAgc29sdXRpb25Jc1JlYWR5ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB1bnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpIHByaXZhdGUgcmVhZG9ubHkgc29sdXRpb25VcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZWN0aW9uc1NlcnZpY2U6IFNlY3Rpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1TY29wZTogRm9ybVNjb3BlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbGxhcHNpYmxlU3RhdGU6IENvbGxhcHNpYmxlU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybVNlcnZpY2U6IFJ1bnRpbWVGb3JtU2VydmljZSxcbiAgICBwcml2YXRlIHJ1bnRpbWVTZXJ2aWNlOiBSdW50aW1lU2VydmljZSxcbiAgICBASW5qZWN0KE1lc3NhZ2VTZXJ2aWNlKSBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIG9yZGVyQnlQaXBlOiBPcmRlckJ5UGlwZSxcbiAgICBwcml2YXRlIHNlYXJjaEZpbHRlclBpcGU6IFNlYXJjaEZpbHRlclBpcGUsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHt9XG5cbiAgcHJpdmF0ZSBhZGp1c3RQcmljZShcbiAgICB2YWx1ZU9wdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHNlY3Rpb246IFNlY3Rpb24sXG4gICAgc29sdXRpb25MaW5lSXRlbTogTGluZUl0ZW0sXG4gICAgcGF0Y2g6IERpY3Rpb25hcnk8UHJpY2VBZGp1c3RtZW50PixcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgcGFyZW50TGluZUl0ZW0gPSBzZWN0aW9uLm1vZGVsICYmIExpbmVJdGVtVXRpbC5maW5kQnlJZChzZWN0aW9uLm1vZGVsLmlkLCBbc29sdXRpb25MaW5lSXRlbV0pO1xuXG4gICAgaWYgKCFwYXJlbnRMaW5lSXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHBhcmVudExpbmVJdGVtLmxpbmVJdGVtcyA9IHBhcmVudExpbmVJdGVtLmxpbmVJdGVtcy5tYXAobGluZUl0ZW0gPT4ge1xuICAgICAgY29uc3QgeyBwcm9kdWN0SWQsIGNoYXJnZUl0ZW1zIH0gPSBsaW5lSXRlbTtcblxuICAgICAgaWYgKHByb2R1Y3RJZCAhPT0gdmFsdWVPcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIGxpbmVJdGVtO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjaGFyZ2VJdGVtID0gY2hhcmdlSXRlbXMuc2hpZnQoKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRDaGFyZ2VJdGVtID0ge1xuICAgICAgICAuLi5jaGFyZ2VJdGVtLFxuICAgICAgICAuLi5wYXRjaCxcbiAgICAgIH0gYXMgQ2hhcmdlSXRlbTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubGluZUl0ZW0sXG4gICAgICAgIGNoYXJnZUl0ZW1zOiBbdXBkYXRlZENoYXJnZUl0ZW0sIC4uLmNoYXJnZUl0ZW1zXSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZVJ1bnRpbWUoc29sdXRpb25MaW5lSXRlbSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1TY29wZS5mb3JtU3VibWl0RXZlbnQucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpLnN1YnNjcmliZSgoZTogVXBkYXRlRGF0YSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgY29uc3Qgc29sdXRpb25MaW5lSXRlbSA9IEVudGl0eVV0aWwuY2xvbmUodGhpcy5zb2x1dGlvbkxpbmVJdGVtKTtcblxuICAgICAgICBjb25zdCBzZWN0aW9uID0gdGhpcy5maW5kU2VjdGlvbihlLmlkKTtcblxuICAgICAgICBpZiAoIXNlY3Rpb24pIHtcbiAgICAgICAgICB0aHJvdyAnU2VjdGlvbiBub3QgZm91bmQnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVudGl0eVR5cGUgPSBzZWN0aW9uLmJvdW5kRGF0YS5lbnRpdHlUeXBlO1xuXG4gICAgICAgIGlmIChlbnRpdHlUeXBlID09PSBCb3VuZERhdGFUeXBlW0JvdW5kRGF0YVR5cGUuUE9SVF0gfHwgZW50aXR5VHlwZSA9PT0gQm91bmREYXRhVHlwZVtCb3VuZERhdGFUeXBlLlRZUEVdKSB7XG4gICAgICAgICAgaWYgKGUuYWN0aW9uID09PSAncGF0Y2gnICYmIEVudGl0eVV0aWwuaXNQcmVzZW50KGUudmFsdWVPcHRpb24pKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZU9wdGlvbjogYW55ID0gZVsndmFsdWVPcHRpb24nXTtcblxuICAgICAgICAgICAgaWYgKCFzZWN0aW9uLm1vZGVsPy5wYXJlbnRJZCkge1xuICAgICAgICAgICAgICB0aGlzLmNvbGxhcHNpYmxlU3RhdGUuY2xlYXJTdGF0ZShzZWN0aW9uLmlkKTtcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVSdW50aW1lKHZhbHVlT3B0aW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhcmVudExpbmVJdGVtID0gTGluZUl0ZW1VdGlsLmZpbmRCeUlkKHNlY3Rpb24ubW9kZWwucGFyZW50SWQsIFtzb2x1dGlvbkxpbmVJdGVtXSk7XG5cbiAgICAgICAgICAgICAgaWYgKHBhcmVudExpbmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5keCA9IHBhcmVudExpbmVJdGVtLmxpbmVJdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09PSBzZWN0aW9uLm1vZGVsPy5pZCk7XG5cbiAgICAgICAgICAgICAgICBwYXJlbnRMaW5lSXRlbS5saW5lSXRlbXMuc3BsaWNlKGluZHgsIDEsIHZhbHVlT3B0aW9uKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY29sbGFwc2libGVTdGF0ZS5jbGVhclN0YXRlKHNlY3Rpb24uaWQpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUnVudGltZShzb2x1dGlvbkxpbmVJdGVtKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnRpdHlUeXBlID09PSBCb3VuZERhdGFUeXBlW0JvdW5kRGF0YVR5cGUuUE9SVF0pIHtcbiAgICAgICAgICBpZiAoZS5hY3Rpb24gPT09ICd1cHNlcnQnKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRMaW5lSXRlbSA9IHNlY3Rpb24ubW9kZWwgJiYgTGluZUl0ZW1VdGlsLmZpbmRCeUlkKHNlY3Rpb24ubW9kZWwuaWQsIFtzb2x1dGlvbkxpbmVJdGVtXSk7XG5cbiAgICAgICAgICAgIGlmIChwYXJlbnRMaW5lSXRlbSkge1xuICAgICAgICAgICAgICBwYXJlbnRMaW5lSXRlbS5saW5lSXRlbXMuZm9yRWFjaChpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBlLnNlbGVjdGVkVmFsdWVPcHRpb25zICYmXG4gICAgICAgICAgICAgICAgICBlLnNlbGVjdGVkVmFsdWVPcHRpb25zLmZpbmRJbmRleCh2ID0+IHYudG9Mb3dlckNhc2UoKSA9PT0gaS50eXBlLnRvTG93ZXJDYXNlKCkpIDwgMFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYXJkaW5hbGl0eVZhcmlhYmxlKHBhcmVudExpbmVJdGVtLCBpLCAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBjb25zdCBsaW5lSXRlbXMgPSBwYXJlbnRMaW5lSXRlbT8ubGluZUl0ZW1zLmZpbHRlcihcbiAgICAgICAgICAgICAgICBpID0+XG4gICAgICAgICAgICAgICAgICBlLnNlbGVjdGVkVmFsdWVPcHRpb25zICYmXG4gICAgICAgICAgICAgICAgICBlLnNlbGVjdGVkVmFsdWVPcHRpb25zLmZpbmRJbmRleCh2ID0+IHYudG9Mb3dlckNhc2UoKSA9PT0gaS50eXBlLnRvTG93ZXJDYXNlKCkpID4gLTEsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGUuc2VsZWN0ZWRWYWx1ZU9wdGlvbnM/LmZvckVhY2godiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGxpbmVJdGVtcz8uZmluZEluZGV4KGl0ZW0gPT4gaXRlbS50eXBlLnRvTG93ZXJDYXNlKCkgPT09IHYudG9Mb3dlckNhc2UoKSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBsaW5lSXRlbSA9IHRoaXMuY3JlYXRlTGluZUl0ZW0oc2VjdGlvbiwgdiwgcGFyZW50TGluZUl0ZW0pO1xuICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYXJkaW5hbGl0eVZhcmlhYmxlKHBhcmVudExpbmVJdGVtLCBsaW5lSXRlbSk7XG4gICAgICAgICAgICAgICAgICBsaW5lSXRlbXMucHVzaChsaW5lSXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJ1bnRpbWUoc29sdXRpb25MaW5lSXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGUuYWN0aW9uID09PSAnY3JlYXRlJykge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50TGluZUl0ZW0gPSBzZWN0aW9uLm1vZGVsICYmIExpbmVJdGVtVXRpbC5maW5kQnlJZChzZWN0aW9uLm1vZGVsLmlkLCBbc29sdXRpb25MaW5lSXRlbV0pO1xuXG4gICAgICAgICAgICBpZiAocGFyZW50TGluZUl0ZW0pIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWVPcHRpb24gPSBlLnZhbHVlT3B0aW9uO1xuICAgICAgICAgICAgICBjb25zdCBsaW5lSXRlbSA9IHRoaXMuY3JlYXRlTGluZUl0ZW0oc2VjdGlvbiwgdmFsdWVPcHRpb24sIHBhcmVudExpbmVJdGVtKTtcbiAgICAgICAgICAgICAgcGFyZW50TGluZUl0ZW0ubGluZUl0ZW1zLnB1c2gobGluZUl0ZW0pO1xuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhcmRpbmFsaXR5VmFyaWFibGUocGFyZW50TGluZUl0ZW0sIGxpbmVJdGVtKTtcblxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJ1bnRpbWUoc29sdXRpb25MaW5lSXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGUuYWN0aW9uID09PSAnY29weScpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudExpbmVJdGVtID0gc2VjdGlvbi5tb2RlbCAmJiBMaW5lSXRlbVV0aWwuZmluZEJ5SWQoc2VjdGlvbi5tb2RlbC5pZCwgW3NvbHV0aW9uTGluZUl0ZW1dKTtcblxuICAgICAgICAgICAgaWYgKHBhcmVudExpbmVJdGVtKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlT3B0aW9uID0gZS52YWx1ZU9wdGlvbjtcbiAgICAgICAgICAgICAgY29uc3QgbGluZUl0ZW1Ub0NvcHkgPSBwYXJlbnRMaW5lSXRlbS5saW5lSXRlbXMuZmluZChsaSA9PiBsaS5pZCA9PT0gdmFsdWVPcHRpb24pO1xuICAgICAgICAgICAgICBpZiAobGluZUl0ZW1Ub0NvcHkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lSXRlbTogTGluZUl0ZW0gPSB7IC4uLmxpbmVJdGVtVG9Db3B5LCBpZDogJycgfTtcbiAgICAgICAgICAgICAgICBwYXJlbnRMaW5lSXRlbS5saW5lSXRlbXMucHVzaChsaW5lSXRlbSk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYXJkaW5hbGl0eVZhcmlhYmxlKHBhcmVudExpbmVJdGVtLCBsaW5lSXRlbSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJ1bnRpbWUoc29sdXRpb25MaW5lSXRlbSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZS5hY3Rpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRMaW5lSXRlbSA9IHNlY3Rpb24ubW9kZWwgJiYgTGluZUl0ZW1VdGlsLmZpbmRCeUlkKHNlY3Rpb24ubW9kZWwuaWQsIFtzb2x1dGlvbkxpbmVJdGVtXSk7XG5cbiAgICAgICAgICAgIGlmIChwYXJlbnRMaW5lSXRlbSkge1xuICAgICAgICAgICAgICAvL0Fzc3VtaW5nIHRoYXQgcmFkaW8gY29udHJvbCBpcyB0aGUgb25seSBjb250cm9sLCB0aGF0ICd1cGRhdGVzJyB2YWx1ZXNcbiAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXMgPSBzZWN0aW9uLm1vZGVsPy5saW5lSXRlbXMuZmlsdGVyKGxpID0+IGxpLnBvcnQgJiYgbGkucG9ydCA9PT0gc2VjdGlvbi5ib3VuZERhdGEubmFtZSlbMF07XG5cbiAgICAgICAgICAgICAgaWYgKHByZXZpb3VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYXJkaW5hbGl0eVZhcmlhYmxlKHBhcmVudExpbmVJdGVtLCBwcmV2aW91cywgMCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHBhcmVudExpbmVJdGVtLmxpbmVJdGVtcy5maW5kSW5kZXgobGkgPT4gbGkuaWQgPT09IHByZXZpb3VzPy5pZCk7XG5cbiAgICAgICAgICAgICAgY29uc3QgbGluZUl0ZW06IExpbmVJdGVtID0ge1xuICAgICAgICAgICAgICAgIGlkOiBVVUlELlVVSUQoKSxcbiAgICAgICAgICAgICAgICBxdHk6IHByZXZpb3VzPy5xdHksXG4gICAgICAgICAgICAgICAgcG9ydDogcHJldmlvdXM/LnBvcnQsXG4gICAgICAgICAgICAgICAgdHlwZTogRW50aXR5VXRpbC5pc1ByZXNlbnQoZS52YWx1ZU9wdGlvbikgPyBlLnZhbHVlT3B0aW9uIDogdGhpcy5mb3JtLmNvbnRyb2xzW2UuaWRdLnZhbHVlLFxuICAgICAgICAgICAgICAgIGNmZ1N0YXR1czogJ05ldycsXG4gICAgICAgICAgICAgICAgcGFyZW50SWQ6IHByZXZpb3VzPy5wYXJlbnRJZCxcbiAgICAgICAgICAgICAgfSBhcyBMaW5lSXRlbTtcblxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhcmRpbmFsaXR5VmFyaWFibGUocGFyZW50TGluZUl0ZW0sIGxpbmVJdGVtKTtcbiAgICAgICAgICAgICAgcGFyZW50TGluZUl0ZW0ubGluZUl0ZW1zW2luZGV4XSA9IGxpbmVJdGVtO1xuXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlUnVudGltZShzb2x1dGlvbkxpbmVJdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZS5hY3Rpb24gPT09ICdyZW1vdmUnKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRMaW5lSXRlbSA9IHNlY3Rpb24ubW9kZWwgJiYgTGluZUl0ZW1VdGlsLmZpbmRCeUlkKHNlY3Rpb24ubW9kZWwuaWQsIFtzb2x1dGlvbkxpbmVJdGVtXSk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgcGFyZW50TGluZUl0ZW0gJiZcbiAgICAgICAgICAgICAgU2VjdGlvbnNCaW5kZXJIZWxwZXIuaXNSZW1vdmVBbGxvd2VkKHBhcmVudExpbmVJdGVtLCBzZWN0aW9uLmJvdW5kRGF0YS5uYW1lLCBzZWN0aW9uLm1vZGVsPy5xdHkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBwYXJlbnRMaW5lSXRlbS5saW5lSXRlbXMuZmluZEluZGV4KFxuICAgICAgICAgICAgICAgIGl0ZW0gPT4gaXRlbS50eXBlLnRvTG93ZXJDYXNlKCkgPT09IGUudmFsdWVPcHRpb24/LnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlZCA9IHBhcmVudExpbmVJdGVtLmxpbmVJdGVtcy5zcGxpY2UoaW5kZXgsIDEpWzBdO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FyZGluYWxpdHlWYXJpYWJsZShwYXJlbnRMaW5lSXRlbSwgcmVtb3ZlZCwgMCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVSdW50aW1lKHNvbHV0aW9uTGluZUl0ZW0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGUuYWN0aW9uID09PSAncXR5VXBkYXRlJykge1xuICAgICAgICAgICAgY29uc3QgdHlwZVNlY3Rpb24gPSBlLnZhbHVlT3B0aW9uXG4gICAgICAgICAgICAgID8gU2VjdGlvbkhlbHBlclNlcnZpY2UuZmluZFNlY3Rpb25Gb3JWYWx1ZShzZWN0aW9uLCBlLnZhbHVlT3B0aW9uKVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgY29uc3QgdHlwZUxpbmVJdGVtID0gdHlwZVNlY3Rpb24/Lm1vZGVsICYmIExpbmVJdGVtVXRpbC5maW5kQnlJZCh0eXBlU2VjdGlvbi5tb2RlbC5pZCwgW3NvbHV0aW9uTGluZUl0ZW1dKTtcbiAgICAgICAgICAgIGlmICh0eXBlU2VjdGlvbiAmJiB0eXBlTGluZUl0ZW0pIHtcbiAgICAgICAgICAgICAgdHlwZUxpbmVJdGVtLnF0eSA9ICt0aGlzLmZvcm0uY29udHJvbHNbdHlwZVNlY3Rpb24uaWQgKyAncXR5J10udmFsdWU7XG4gICAgICAgICAgICAgIHR5cGVMaW5lSXRlbS5jZmdTdGF0dXMgPSAnVXNlcic7XG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlUnVudGltZShzb2x1dGlvbkxpbmVJdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZS5hY3Rpb24gPT09ICdhZGp1c3ROZXRQcmljZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsdWVPcHRpb24sIG9wdGlvbnMgfSA9IGU7XG4gICAgICAgICAgICBjb25zdCB7IGFtb3VudCB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICAgICAgICAgICAgY29uc3QgcHJpY2VBZGp1c3RtZW50OiBQcmljZUFkanVzdG1lbnQgPSB7XG4gICAgICAgICAgICAgIHR5cGU6ICdPVkVSUklERV9BTU9VTlQnLFxuICAgICAgICAgICAgICBleHBsYW5hdGlvbjogJ01hbnVhbCBuZXQgcHJpY2UgYWRqdXN0bWVudCcsXG4gICAgICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuYWRqdXN0UHJpY2UodmFsdWVPcHRpb24sIHNlY3Rpb24sIHNvbHV0aW9uTGluZUl0ZW0sIHsgcHJpY2VBZGp1c3RtZW50IH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChlLmFjdGlvbiA9PT0gJ2FkanVzdExpc3RQcmljZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsdWVPcHRpb24sIG9wdGlvbnMgfSA9IGU7XG4gICAgICAgICAgICBjb25zdCB7IGFtb3VudCB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICAgICAgICAgICAgY29uc3QgbGlzdFByaWNlQWRqdXN0bWVudDogUHJpY2VBZGp1c3RtZW50ID0ge1xuICAgICAgICAgICAgICB0eXBlOiAnT1ZFUlJJREVfQU1PVU5UJyxcbiAgICAgICAgICAgICAgZXhwbGFuYXRpb246ICdNYW51YWwgbGlzdCBwcmljZSBhZGp1c3RtZW50JyxcbiAgICAgICAgICAgICAgYW1vdW50LFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5hZGp1c3RQcmljZSh2YWx1ZU9wdGlvbiwgc2VjdGlvbiwgc29sdXRpb25MaW5lSXRlbSwgeyBsaXN0UHJpY2VBZGp1c3RtZW50IH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnRpdHlUeXBlID09PSBCb3VuZERhdGFUeXBlW0JvdW5kRGF0YVR5cGUuVFlQRV0pIHtcbiAgICAgICAgICBpZiAoZS5hY3Rpb24gPT09ICdyZW1vdmUnKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRMaW5lSXRlbSA9XG4gICAgICAgICAgICAgIHNlY3Rpb24ubW9kZWw/LnBhcmVudElkICYmIExpbmVJdGVtVXRpbC5maW5kQnlJZChzZWN0aW9uLm1vZGVsLnBhcmVudElkLCBbc29sdXRpb25MaW5lSXRlbV0pO1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHBhcmVudExpbmVJdGVtICYmXG4gICAgICAgICAgICAgIHNlY3Rpb24ubW9kZWwgJiZcbiAgICAgICAgICAgICAgc2VjdGlvbi5tb2RlbC5wb3J0ICYmXG4gICAgICAgICAgICAgIFNlY3Rpb25zQmluZGVySGVscGVyLmlzUmVtb3ZlQWxsb3dlZChwYXJlbnRMaW5lSXRlbSwgc2VjdGlvbi5tb2RlbC5wb3J0LCBzZWN0aW9uLm1vZGVsPy5xdHkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBwYXJlbnRMaW5lSXRlbS5saW5lSXRlbXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PT0gc2VjdGlvbi5tb2RlbD8uaWQpO1xuICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92ZWQgPSBwYXJlbnRMaW5lSXRlbS5saW5lSXRlbXMuc3BsaWNlKGluZGV4LCAxKVswXTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhcmRpbmFsaXR5VmFyaWFibGUocGFyZW50TGluZUl0ZW0sIHJlbW92ZWQsIDApO1xuICAgICAgICAgICAgICAgIHRoaXMuY29sbGFwc2libGVTdGF0ZS5jbGVhclN0YXRlKHNlY3Rpb24uaWQpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUnVudGltZShzb2x1dGlvbkxpbmVJdGVtKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChlLmFjdGlvbiA9PT0gJ3F0eVVwZGF0ZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVMaW5lSXRlbSA9IHNlY3Rpb24ubW9kZWwgJiYgTGluZUl0ZW1VdGlsLmZpbmRCeUlkKHNlY3Rpb24ubW9kZWwuaWQsIFtzb2x1dGlvbkxpbmVJdGVtXSk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlTGluZUl0ZW0pIHtcbiAgICAgICAgICAgICAgY29uc3QgcXR5ID0gK3RoaXMuZm9ybS5jb250cm9sc1tlLmlkICsgJ3F0eSddLnZhbHVlO1xuICAgICAgICAgICAgICBpZiAodHlwZUxpbmVJdGVtLnBhcmVudElkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50TGluZUl0ZW0gPSBMaW5lSXRlbVV0aWwuZmluZEJ5SWQodHlwZUxpbmVJdGVtLnBhcmVudElkLCBbc29sdXRpb25MaW5lSXRlbV0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudExpbmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhcmRpbmFsaXR5VmFyaWFibGUocGFyZW50TGluZUl0ZW0sIHR5cGVMaW5lSXRlbSwgcXR5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdHlwZUxpbmVJdGVtLnF0eSA9IHF0eTtcbiAgICAgICAgICAgICAgdHlwZUxpbmVJdGVtLmNmZ1N0YXR1cyA9ICdVc2VyJztcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVSdW50aW1lKHNvbHV0aW9uTGluZUl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnRpdHlUeXBlID09PSBCb3VuZERhdGFUeXBlW0JvdW5kRGF0YVR5cGUuQVRUUklCVVRFXSkge1xuICAgICAgICAgIGlmIChlLmFjdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudExpbmVJdGVtID0gc2VjdGlvbi5tb2RlbCAmJiBMaW5lSXRlbVV0aWwuZmluZEJ5SWQoc2VjdGlvbi5tb2RlbC5pZCwgW3NvbHV0aW9uTGluZUl0ZW1dKTtcbiAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHBhcmVudExpbmVJdGVtPy5hdHRyaWJ1dGVzLmZpbmQoXG4gICAgICAgICAgICAgIGF0dHIgPT4gYXR0ci5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IHNlY3Rpb24uYm91bmREYXRhLm5hbWUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgLy9FeHBsaWNpdGx5IHNldCB2YWx1ZSBhbHdheXMgd2luXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHR5cGVvZiBlLnZhbHVlT3B0aW9uICE9PSAndW5kZWZpbmVkJyA/IGUudmFsdWVPcHRpb24gOiB0aGlzLmZvcm0uY29udHJvbHNbZS5pZF0udmFsdWU7XG5cbiAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZS50eXBlID09PSAnQk9PTEVBTicpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlID8gMSA6IDA7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBhdHRyaWJ1dGUudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgYXR0cmlidXRlLmNmZ1N0YXR1cyA9ICdVc2VyJztcblxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJ1bnRpbWUoc29sdXRpb25MaW5lSXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IGtleTogdGhpcy5tZXNzYWdlQnVja2V0SWQsIHN1bW1hcnk6IGBDb25maWd1cmF0aW9uIGZhaWxlZCAkeyhlIGFzIGFueSk/Lm1lc3NhZ2V9YCB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMucnVudGltZVNlcnZpY2Uub25Tb2x1dGlvblJlYWR5RXZlbnRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUobGluZUl0ZW0gPT4gdGhpcy5vblNvbHV0aW9uUmVhZHkobGluZUl0ZW0pKTtcblxuICAgIHRoaXMucnVudGltZVNlcnZpY2Uub25Tb2x1dGlvblVwZGF0ZWRFdmVudFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogTGluZUl0ZW0gfCBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoIShkYXRhIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlU29sdXRpb25VcGRhdGUoZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhhbmRsZVNvbHV0aW9uRmFpbGVkVXBkYXRlKGRhdGEpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLm9uVUlSZWZyZXNoRXZlbnQucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCB7IHVpRGVmaW5pdGlvbiB9ID0gdGhpcy5ydW50aW1lU2VydmljZS5nZXRSdW50aW1lQ29udGV4dCgpID8/IHt9O1xuICAgICAgdGhpcy5ydW50aW1lQ29udGV4dC51aURlZmluaXRpb24gPSB1aURlZmluaXRpb24gYXMgYW55O1xuICAgICAgdGhpcy5mb3JtU2NvcGUuc2NyaXB0U2Vzc2lvblNjb3BlID0ge307XG4gICAgICB0aGlzLnN0YXJ0UnVudGltZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgb25Tb2x1dGlvblJlYWR5KGxpbmVJdGVtOiBMaW5lSXRlbSk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnJ1bnRpbWVTZXJ2aWNlLmdldFJ1bnRpbWVDb250ZXh0KCkgYXMgTGVnYWN5UnVudGltZUNvbnRleHQ7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbkNvbnRleHQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKTtcblxuICAgIGNvbnN0IG1lcmdlQ29udGV4dDogTGVnYWN5UnVudGltZUNvbnRleHQgPSB7XG4gICAgICAuLi5jb250ZXh0LFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAuLi5jb250ZXh0LnByb3BlcnRpZXMsXG4gICAgICAgIC4uLmNvbmZpZ3VyYXRpb25Db250ZXh0LnByb3BlcnRpZXMsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBhY2NvdW50SWQgPSBtZXJnZUNvbnRleHQucHJvcGVydGllcz8uQWNjb3VudElkO1xuICAgIGlmIChhY2NvdW50SWQgJiYgYWNjb3VudElkLmxlbmd0aCA9PT0gMTUpIHtcbiAgICAgIHRoaXMucnVudGltZUNvbnRleHQgPSB7XG4gICAgICAgIC4uLm1lcmdlQ29udGV4dCxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIC4uLm1lcmdlQ29udGV4dC5wcm9wZXJ0aWVzLFxuICAgICAgICAgIEFjY291bnRJZDogU2FsZXNmb3JjZUlkVXRpbHMuZ2VuZXJhdGVJZDE4RnJvbUlkMTUoYWNjb3VudElkKSxcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgYW55O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJ1bnRpbWVDb250ZXh0ID0gbWVyZ2VDb250ZXh0IGFzIGFueTtcbiAgICB9XG5cbiAgICB0aGlzLnNvbHV0aW9uTGluZUl0ZW0gPSBsaW5lSXRlbTtcbiAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLnNldFJ1bnRpbWVDb250ZXh0KHRoaXMucnVudGltZUNvbnRleHQpO1xuXG4gICAgdGhpcy5zdGFydFJ1bnRpbWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU29sdXRpb25VcGRhdGUodXBkYXRlZExpbmVJdGVtOiBMaW5lSXRlbSkge1xuICAgIHRoaXMuc29sdXRpb25MaW5lSXRlbSA9IHVwZGF0ZWRMaW5lSXRlbTtcbiAgICB0aGlzLnByb2Nlc3NTb2x1dGlvbih0cnVlKTtcbiAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLnNvbHV0aW9uUHJvY2Vzc2VkKHRoaXMuc29sdXRpb25MaW5lSXRlbSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTb2x1dGlvbkZhaWxlZFVwZGF0ZShlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiB2b2lkIHtcbiAgICBjb25zdCBoYXNFcnJvck1lc3NhZ2UgPSBFbnRpdHlVdGlsLmlzUHJlc2VudChlcnJvci5lcnJvcikgJiYgRW50aXR5VXRpbC5pc1ByZXNlbnQoZXJyb3IuZXJyb3IubWVzc2FnZSk7XG4gICAgY29uc3QgbWVzc2FnZSA9IGhhc0Vycm9yTWVzc2FnZSA/IGVycm9yLmVycm9yLm1lc3NhZ2UgOiAnQ29uZmlndXJhdGlvbiBmYWlsZWQnO1xuICAgIGNvbnN0IHsgaXNIYW5kbGluZ0NvbmZpZ3VyYXRpb25FcnJvcnMgfSA9IHRoaXMucnVudGltZUNvbnRleHQudWlEZWZpbml0aW9uID8/IHt9O1xuXG4gICAgaWYgKGlzSGFuZGxpbmdDb25maWd1cmF0aW9uRXJyb3JzKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IGtleTogdGhpcy5tZXNzYWdlQnVja2V0SWQsIHN1bW1hcnk6IG1lc3NhZ2UgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5zb2x1dGlvbkxpbmVJdGVtID0ge1xuICAgICAgLi4udGhpcy5zb2x1dGlvbkxpbmVJdGVtLFxuICAgICAgbWVzc2FnZXM6IFsuLi50aGlzLnNvbHV0aW9uTGluZUl0ZW0ubWVzc2FnZXMsIGBFOiR7bWVzc2FnZX1gXSxcbiAgICB9O1xuICAgIHRoaXMucHJvY2Vzc1NvbHV0aW9uKHRydWUsIHRydWUpO1xuICAgIHRoaXMucnVudGltZVNlcnZpY2Uuc29sdXRpb25Qcm9jZXNzZWQodGhpcy5zb2x1dGlvbkxpbmVJdGVtKTtcblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ2FyZGluYWxpdHlWYXJpYWJsZShwYXJlbnQ6IExpbmVJdGVtLCB1cGRhdGVkOiBMaW5lSXRlbSwgbmV3UXVhbnRpdHk/OiBudW1iZXIpIHtcbiAgICBjb25zdCBwb3J0RG9tYWluID0gdXBkYXRlZC5wb3J0ID8gcGFyZW50LnBvcnREb21haW5zW3VwZGF0ZWQucG9ydF0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZG9tYWluVHlwZSA9IHBvcnREb21haW4/LmRvbWFpblR5cGVzLmZpbmQodCA9PiB0Lm5hbWUgPT09IHVwZGF0ZWQudHlwZSk7XG4gICAgY29uc3QgY2FyZGluYWxpdHkgPSBkb21haW5UeXBlPy5jYXJkaW5hbGl0eSA/PyAwO1xuXG4gICAgbGV0IHF0eTtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShkb21haW5UeXBlPy5jYXJkaW5hbGl0eSkpIHtcbiAgICAgIHF0eSA9IE51bWJlci5pc0Zpbml0ZShuZXdRdWFudGl0eSkgPyBuZXdRdWFudGl0eSA6IHVwZGF0ZWQucXR5O1xuICAgIH0gZWxzZSB7XG4gICAgICBxdHkgPSBFbnRpdHlVdGlsLmlzUHJlc2VudChuZXdRdWFudGl0eSlcbiAgICAgICAgPyBjYXJkaW5hbGl0eSAtIHVwZGF0ZWQucXR5ICsgKG5ld1F1YW50aXR5IGFzIG51bWJlcilcbiAgICAgICAgOiBjYXJkaW5hbGl0eSArIHVwZGF0ZWQucXR5O1xuICAgIH1cblxuICAgIGNvbnN0IGNhcmRpbmFsaXR5TmFtZSA9ICcjQ1YtJyArIHVwZGF0ZWQudHlwZSArICdAJyArIHVwZGF0ZWQucG9ydDtcblxuICAgIGxldCBjYXJkaW5hbGl0eVZhcmlhYmxlID0gcGFyZW50LmF0dHJpYnV0ZXMuZmluZChhID0+IGEubmFtZSA9PT0gY2FyZGluYWxpdHlOYW1lKTtcbiAgICBpZiAoIWNhcmRpbmFsaXR5VmFyaWFibGUpIHtcbiAgICAgIGNhcmRpbmFsaXR5VmFyaWFibGUgPSB7XG4gICAgICAgIGlkOiBVVUlELlVVSUQoKSxcbiAgICAgICAgbmFtZTogY2FyZGluYWxpdHlOYW1lLFxuICAgICAgfSBhcyBBdHRyaWJ1dGU7XG4gICAgICBwYXJlbnQuYXR0cmlidXRlcy5wdXNoKGNhcmRpbmFsaXR5VmFyaWFibGUpO1xuICAgIH1cbiAgICBjYXJkaW5hbGl0eVZhcmlhYmxlLnZhbHVlID0gcXR5O1xuICAgIGNhcmRpbmFsaXR5VmFyaWFibGUuY2ZnU3RhdHVzID0gJ1VzZXInO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVMaW5lSXRlbShzZWN0aW9uOiBTZWN0aW9uLCB2YWx1ZU9wdGlvbj86IHN0cmluZywgcGFyZW50TGluZUl0ZW0/OiBMaW5lSXRlbSk6IExpbmVJdGVtIHtcbiAgICByZXR1cm4ge1xuICAgICAgcXR5OiArdGhpcy5mb3JtLmNvbnRyb2xzW3NlY3Rpb24uaWQgKyAncXR5J10udmFsdWUsXG4gICAgICBwb3J0OiBzZWN0aW9uLmJvdW5kRGF0YS5uYW1lLFxuICAgICAgdHlwZTogRW50aXR5VXRpbC5pc1ByZXNlbnQodmFsdWVPcHRpb24pID8gdmFsdWVPcHRpb24gOiB0aGlzLmZvcm0uY29udHJvbHNbc2VjdGlvbi5pZF0udmFsdWUsXG4gICAgICBjZmdTdGF0dXM6ICdOZXcnLFxuICAgICAgcGFyZW50SWQ6IHBhcmVudExpbmVJdGVtPy5pZCxcbiAgICB9IGFzIExpbmVJdGVtO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZS5uZXh0KCk7XG5cbiAgICB0aGlzLnNlY3Rpb25zU2VydmljZS5kZXN0cm95KCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UnVudGltZSgpIHtcbiAgICBjb25zdCB1aURlZmluaXRpb24gPSB0aGlzLnJ1bnRpbWVDb250ZXh0LnVpRGVmaW5pdGlvbjtcblxuICAgIGNvbnN0IGRlZmF1bHRUYWIgPSB1aURlZmluaXRpb24/LnRhYnM/LmZpbmQodGFiID0+IHRhYi5pc0RlZmF1bHQpO1xuICAgIHRoaXMuYWN0aXZlVUlUYWIgPSBFbnRpdHlVdGlsLmlzUHJlc2VudChkZWZhdWx0VGFiKSA/IGRlZmF1bHRUYWIgOiB1aURlZmluaXRpb24/LnRhYnM/LlswXTtcblxuICAgIHRoaXMuc2VjdGlvbnNTZXJ2aWNlLmNvbXBpbGVNb2R1bGUodWlEZWZpbml0aW9uPy5zZWN0aW9ucyA/PyBbXSwgdWlEZWZpbml0aW9uPy5pc1ZpZXdFbmNhcHN1bGF0ZWQpO1xuXG4gICAgdGhpcy5wcm9jZXNzU29sdXRpb24oKTtcblxuICAgIHRoaXMuc29sdXRpb25Jc1JlYWR5ID0gdHJ1ZTtcblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUnVudGltZShsaW5lSXRlbTogTGluZUl0ZW0pIHtcbiAgICB0aGlzLnNvbHV0aW9uVXBkYXRlZC5lbWl0KGxpbmVJdGVtKTtcbiAgfVxuXG4gIGFkZFRvQ2FydCgpIHtcbiAgICBjb25zdCBsaW5lSXRlbSA9IEVudGl0eVV0aWwuY2xvbmUodGhpcy5zb2x1dGlvbkxpbmVJdGVtKTtcblxuICAgIHRoaXMucnVudGltZVNlcnZpY2Uuc3RvcFJ1bnRpbWUobGluZUl0ZW0pO1xuICB9XG5cbiAgcHJvY2Vzc1NvbHV0aW9uKGlzVXBkYXRlPzogYm9vbGVhbiwgaXNFcnJvcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAvLzEuIEJpbmQgc2VjdGlvbnMgdG8gc29sdXRpb25cbiAgICBsZXQgc2VjdGlvbnMgPSBFbnRpdHlVdGlsLmNsb25lKHRoaXMucnVudGltZUNvbnRleHQudWlEZWZpbml0aW9uPy5zZWN0aW9ucykgPz8gW107XG4gICAgY29uc3Qgc291cmNlU2VjdGlvbnMgPSBFbnRpdHlVdGlsLmNsb25lKHRoaXMucnVudGltZUNvbnRleHQudWlEZWZpbml0aW9uPy5zZWN0aW9ucykgPz8gW107XG4gICAgdGhpcy51cGRhdGVMaW5lSXRlbXNTZWN0aW9uUGF0aCh0aGlzLnNvbHV0aW9uTGluZUl0ZW0pO1xuICAgIFNlY3Rpb25zQmluZGVySGVscGVyLnNldExpbmVJdGVtc1BhdGgoXG4gICAgICB0aGlzLnJ1bnRpbWVDb250ZXh0LnJ1bnRpbWVNb2RlbCxcbiAgICAgIHRoaXMuc29sdXRpb25MaW5lSXRlbSxcbiAgICAgIHNlY3Rpb25zLFxuICAgICAgc291cmNlU2VjdGlvbnMsXG4gICAgICAoc2VjOiBhbnkpID0+ICFzZWMucGFyZW50SWQgJiYgc2VjLmJvdW5kRGF0YSxcbiAgICAgIHRoaXMucnVudGltZUNvbnRleHQudWlEZWZpbml0aW9uPy5wcmljaW5nRW5hYmxlZCA/PyBmYWxzZSxcbiAgICApO1xuXG4gICAgc2VjdGlvbnMgPSBzZWN0aW9ucy5maWx0ZXIocyA9PiBzLm1vZGVsICYmIHMudGVtcGxhdGUpO1xuXG4gICAgLy8yLiBJbml0IGZvcm1cbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1TZXJ2aWNlLmluaXRGb3JtKHNlY3Rpb25zLCB0aGlzLnNvbHV0aW9uTGluZUl0ZW0pO1xuICAgIHRoaXMuZm9ybVNjb3BlLmZvcm0gPSB0aGlzLmZvcm07XG5cbiAgICB0aGlzLnNvcnRlZFNlY3Rpb25zID0gdGhpcy5maWx0ZXJBbmRTb3J0KGdldFNlY3Rpb25UcmVlKHNlY3Rpb25zLmZpbHRlcihzID0+ICFzLmlzU3RhdGljKSkpO1xuXG4gICAgaWYgKCFpc1VwZGF0ZSkge1xuICAgICAgdGhpcy5zdGF0aWNTZWN0aW9ucyA9IHRoaXMuZmlsdGVyQW5kU29ydChnZXRTZWN0aW9uVHJlZShzZWN0aW9ucy5maWx0ZXIocyA9PiBzLmlzU3RhdGljKSkpO1xuICAgIH1cblxuICAgIGlmICghaXNFcnJvcikge1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5jbGVhcih0aGlzLm1lc3NhZ2VCdWNrZXRJZCk7XG4gICAgfVxuICB9XG5cbiAgaGlkZU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMucnVudGltZVNlcnZpY2UuY2FuY2VsUnVudGltZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVMaW5lSXRlbXNTZWN0aW9uUGF0aChsaW5lSXRlbTogTGluZUl0ZW0sIHBhcmVudD86IFNlY3Rpb25QYXRoKSB7XG4gICAgY29uc3QgcGF0aDogU2VjdGlvblBhdGggPSB7XG4gICAgICB0eXBlczogcGFyZW50ID8gcGFyZW50LnR5cGVzLmNvbmNhdChbbGluZUl0ZW0udHlwZV0pIDogW2xpbmVJdGVtLnR5cGVdLFxuICAgICAgcG9ydHM6IHBhcmVudCA/IHBhcmVudC5wb3J0cy5jb25jYXQobGluZUl0ZW0ucG9ydCA/IFtsaW5lSXRlbS5wb3J0XSA6IFtdKSA6IFtdLFxuICAgIH0gYXMgU2VjdGlvblBhdGg7XG5cbiAgICBsaW5lSXRlbS5wYXRoID0gcGF0aDtcblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgbGluZUl0ZW0ubGluZUl0ZW1zKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxpbmVJdGVtc1NlY3Rpb25QYXRoKGNoaWxkLCBsaW5lSXRlbS5wYXRoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckFuZFNvcnQoc2VjdGlvbnM6IFNlY3Rpb25bXSk6IFNlY3Rpb25bXSB7XG4gICAgY29uc3QgZmlsdGVyZWQgPSB0aGlzLnNlYXJjaEZpbHRlclBpcGUudHJhbnNmb3JtKHNlY3Rpb25zLCB0aGlzLmFjdGl2ZVVJVGFiPy5pZCwgJ3BhZ2UnKTtcbiAgICBjb25zdCBvcmRlcmVkID0gdGhpcy5vcmRlckJ5UGlwZS50cmFuc2Zvcm0oZmlsdGVyZWQsICdvcmRlcicsICdhc2MnKTtcblxuICAgIHJldHVybiBvcmRlcmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kU2VjdGlvbihpZDogc3RyaW5nKTogU2VjdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIEVudGl0eVV0aWwuZmluZEJ5RmllbGRIaWVyYXJjaGljYWxseSgnaWQnLCBpZCwgWy4uLnRoaXMuc29ydGVkU2VjdGlvbnMsIC4uLnRoaXMuc3RhdGljU2VjdGlvbnNdLCAnY2hpbGRyZW4nKTtcbiAgfVxufVxuIiwiPHZsLWxvYWRlciBsYWJlbD1cIkxvYWRpbmcgVUlcIiAqbmdJZj1cIiFzb2x1dGlvbklzUmVhZHk7IGVsc2UgY29udGVudFwiPjwvdmwtbG9hZGVyPlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNpZGViYXItdGFic1wiXG4gICAgW25nQ2xhc3NdPVwieyBoaWRkZW46ICFydW50aW1lQ29udGV4dD8udWlEZWZpbml0aW9uPy5kZWZhdWx0UGFuZWxzIH1cIlxuICAgICN1aVRhYnM9XCJzaWRlYmFyVGFic1wiXG4gICAgc2lkZWJhclRhYnM9XCJ7eyBhY3RpdmVVSVRhYj8uaWQgfX1cIlxuICAgIGlkPVwidmwtZGVmYXVsdC1zaWRlYmFyLXRhYnNcIlxuICA+XG4gICAgPHVsPlxuICAgICAgPGxpXG4gICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgcnVudGltZUNvbnRleHQ/LnVpRGVmaW5pdGlvbj8udGFicyB8IG9yZGVyQnk6ICdvcmRlcic6J2FzYydcIlxuICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogdWlUYWJzLmFjdGl2ZVRhYiA9PT0gdGFiLmlkIH1cIlxuICAgICAgICAoY2xpY2spPVwidWlUYWJzLnN3aXRjaFRhYih0YWIuaWQpXCJcbiAgICAgID5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIj57eyB0YWIubmFtZSB9fTwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNlY3Rpb25zLXdyYXBwZXJcIj5cbiAgICA8Zm9ybSByb2xlPVwiZm9ybVwiIG5hbWU9XCJmb3JtXCIgY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBub3ZhbGlkYXRlIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBzdGF0aWNTZWN0aW9uczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VjdGlvbi5tb2RlbCAmJiBzZWN0aW9uLnRlbXBsYXRlICYmICFzZWN0aW9uLmhpZGRlblwiPlxuICAgICAgICAgIDx2bC1zZWN0aW9uLXJlbmRlcmVyIFtzZWN0aW9uXT1cInNlY3Rpb25cIiBbZm9ybV09XCJmb3JtXCI+PC92bC1zZWN0aW9uLXJlbmRlcmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHNvcnRlZFNlY3Rpb25zOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWN0aW9uLm1vZGVsICYmIHNlY3Rpb24udGVtcGxhdGUgJiYgIXNlY3Rpb24uaGlkZGVuXCI+XG4gICAgICAgICAgPHZsLXNlY3Rpb24tcmVuZGVyZXIgW3NlY3Rpb25dPVwic2VjdGlvblwiIFtmb3JtXT1cImZvcm1cIj48L3ZsLXNlY3Rpb24tcmVuZGVyZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9mb3JtPlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtb2RhbC1mb290ZXJcIlxuICAgICAgKm5nSWY9XCJydW50aW1lQ29udGV4dD8ucnVudGltZU1vZGUgPT09IDFcIlxuICAgICAgaWQ9XCJ2bC1ydW50aW1lLWRlZmF1bHQtZm9vdGVyXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgaGlkZGVuOiAhcnVudGltZUNvbnRleHQ/LnVpRGVmaW5pdGlvbj8uZGVmYXVsdFBhbmVscyB9XCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGlucHV0LWZvcm0taW5wdXRcIj5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIChjbGljayk9XCJmb3JtLnZhbGlkICYmIGFkZFRvQ2FydCgpXCIgaWQ9XCJhZGQtdG8tY2FydC1idG5cIlxuICAgICAgICAgID5BZGQgdG8gY2FydDwvYVxuICAgICAgICA+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCIgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiAoY2xpY2spPVwiaGlkZU1vZGFsKClcIiBpZD1cImNhbmNlbC1idG5cIj5DYW5jZWw8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,13 +1,13 @@
1
1
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- import { ConfigurationContextMode, EntityUtil, RuntimeModel, SectionPathUtil, } from '@veloceapps/core';
3
- import { RuntimeMode } from '@veloceapps/sdk/core';
2
+ import { ConfigurationContextMode, EntityUtil, RuntimeModel, SectionPathUtil, } from '@veloce/core';
3
+ import { RuntimeMode } from '@veloce/sdk/core';
4
4
  import { combineLatest, Subject } from 'rxjs';
5
5
  import { takeUntil } from 'rxjs/operators';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "../../services/runtime.service";
8
8
  import * as i2 from "../../services/product-model-cache.service";
9
- import * as i3 from "@veloceapps/api";
10
- import * as i4 from "@veloceapps/sdk/core";
9
+ import * as i3 from "@veloce/api";
10
+ import * as i4 from "@veloce/sdk/core";
11
11
  import * as i5 from "../ui-runtime/runtime.component";
12
12
  export class RuntimePreviewComponent {
13
13
  constructor(runtimeService, modelCacheService, configurationApiService, contextService) {
@@ -91,9 +91,9 @@ export class RuntimePreviewComponent {
91
91
  });
92
92
  }
93
93
  }
94
- RuntimePreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RuntimePreviewComponent, deps: [{ token: i1.RuntimeService }, { token: i2.ProductModelCacheService }, { token: i3.ConfigurationApiService }, { token: i4.ContextService }], target: i0.ɵɵFactoryTarget.Component });
95
- RuntimePreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: RuntimePreviewComponent, selector: "vl-runtime-preview", inputs: { modelId: "modelId", uiDefinition: "uiDefinition" }, ngImport: i0, template: "<vl-runtime (solutionUpdated)=\"onSolutionUpdated($event)\"></vl-runtime>\n", styles: [":host{flex-grow:1}\n"], components: [{ type: i5.RuntimeComponent, selector: "vl-runtime", outputs: ["solutionUpdated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RuntimePreviewComponent, decorators: [{
94
+ RuntimePreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: RuntimePreviewComponent, deps: [{ token: i1.RuntimeService }, { token: i2.ProductModelCacheService }, { token: i3.ConfigurationApiService }, { token: i4.ContextService }], target: i0.ɵɵFactoryTarget.Component });
95
+ RuntimePreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: RuntimePreviewComponent, selector: "vl-runtime-preview", inputs: { modelId: "modelId", uiDefinition: "uiDefinition" }, ngImport: i0, template: "<vl-runtime (solutionUpdated)=\"onSolutionUpdated($event)\"></vl-runtime>\n", styles: [":host{flex-grow:1}\n"], components: [{ type: i5.RuntimeComponent, selector: "vl-runtime", outputs: ["solutionUpdated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: RuntimePreviewComponent, decorators: [{
97
97
  type: Component,
98
98
  args: [{
99
99
  selector: 'vl-runtime-preview',
@@ -106,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
106
106
  }], uiDefinition: [{
107
107
  type: Input
108
108
  }] } });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvY29tcG9uZW50cy91aS1ydW50aW1lLXByZXZpZXcvcnVudGltZS1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvY29tcG9uZW50cy91aS1ydW50aW1lLXByZXZpZXcvcnVudGltZS1wcmV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RixPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLFVBQVUsRUFJVixZQUFZLEVBQ1osZUFBZSxHQUVoQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBVzNDLE1BQU0sT0FBTyx1QkFBdUI7SUFhbEMsWUFDVSxjQUE4QixFQUM5QixpQkFBMkMsRUFDM0MsdUJBQWdELEVBQ2hELGNBQThCO1FBSDlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBQzNDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBTmhDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBT3BDLENBQUM7SUFoQkosSUFBYSxZQUFZLENBQUMsS0FBbUI7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0Is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IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGknO1xuaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLFxuICBFbnRpdHlVdGlsLFxuICBMaW5lSXRlbSxcbiAgUHJvZHVjdE1vZGVsQXR0cmlidXRlLFxuICBQcm9kdWN0TW9kZWxzQ29udGFpbmVyLFxuICBSdW50aW1lTW9kZWwsXG4gIFNlY3Rpb25QYXRoVXRpbCxcbiAgVUlEZWZpbml0aW9uLFxufSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlLCBSdW50aW1lTW9kZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUHJvZHVjdE1vZGVsQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvZHVjdC1tb2RlbC1jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJ1bnRpbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcnVudGltZS5zZXJ2aWNlJztcbmltcG9ydCB7IExlZ2FjeVJ1bnRpbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2bC1ydW50aW1lLXByZXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJ3J1bnRpbWUtcHJldmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydydW50aW1lLXByZXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVQcmV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBtb2RlbElkPzogc3RyaW5nO1xuICBASW5wdXQoKSBzZXQgdWlEZWZpbml0aW9uKHZhbHVlOiBVSURlZmluaXRpb24pIHtcbiAgICB0aGlzLl91aURlZmluaXRpb24gPSB2YWx1ZTtcbiAgICB0aGlzLmluaXREZWZpbml0aW9uKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VpRGVmaW5pdGlvbj86IFVJRGVmaW5pdGlvbjtcbiAgcHJpdmF0ZSBpbml0aWFsaXNlZFVpRGVmaW5pdGlvbj86IFVJRGVmaW5pdGlvbjtcbiAgcHJpdmF0ZSBwcm9kdWN0TW9kZWxDb250YWluZXI/OiBQcm9kdWN0TW9kZWxzQ29udGFpbmVyO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcnVudGltZVNlcnZpY2U6IFJ1bnRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kZWxDYWNoZVNlcnZpY2U6IFByb2R1Y3RNb2RlbENhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25BcGlTZXJ2aWNlOiBDb25maWd1cmF0aW9uQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubW9kZWxJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubW9kZWxDYWNoZVNlcnZpY2VcbiAgICAgIC5nZXRQcm9kdWN0TW9kZWwodGhpcy5tb2RlbElkKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZShjb250YWluZXIgPT4ge1xuICAgICAgICB0aGlzLnByb2R1Y3RNb2RlbENvbnRhaW5lciA9IGNvbnRhaW5lcjtcblxuICAgICAgICBpZiAodGhpcy5fdWlEZWZpbml0aW9uKSB7XG4gICAgICAgICAgdGhpcy5pbml0RGVmaW5pdGlvbih0aGlzLl91aURlZmluaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdERlZmluaXRpb24odWlEZWZpbml0aW9uOiBVSURlZmluaXRpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvZHVjdE1vZGVsQ29udGFpbmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW5pdGlhbGlzZWRVaURlZmluaXRpb24gPSBFbnRpdHlVdGlsLmNsb25lKHVpRGVmaW5pdGlvbik7XG5cbiAgICBjb25zdCBleHRlcm5hbHM6IFByb2R1Y3RNb2RlbEF0dHJpYnV0ZVtdID0gdGhpcy5wcm9kdWN0TW9kZWxDb250YWluZXIubWFpbi5leHRlcm5hbHM7XG4gICAgaWYgKGV4dGVybmFscykge1xuICAgICAgaW5pdGlhbGlzZWRVaURlZmluaXRpb24uZXh0ZXJuYWxzID0gZXh0ZXJuYWxzLnJlZHVjZTxEaWN0aW9uYXJ5PHN0cmluZz4+KCh0cnVuaywgdmFyaWFibGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi50cnVuayxcbiAgICAgICAgICBbdmFyaWFibGUubmFtZV06IGluaXRpYWxpc2VkVWlEZWZpbml0aW9uLmV4dGVybmFscz8uW3ZhcmlhYmxlLm5hbWVdID8/ICcnLFxuICAgICAgICB9O1xuICAgICAgfSwge30pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgaW5pdGlhbGlzZWRVaURlZmluaXRpb24uZXh0ZXJuYWxzO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbGlzZWRVaURlZmluaXRpb24gPSBpbml0aWFsaXNlZFVpRGVmaW5pdGlvbjtcblxuICAgIHRoaXMubGF1bmNoUnVudGltZSgpO1xuICB9XG5cbiAgcHVibGljIG9uU29sdXRpb25VcGRhdGVkKGxpbmVJdGVtOiBMaW5lSXRlbSk6IHZvaWQge1xuICAgIHRoaXMucnVudGltZVNlcnZpY2UudXBkYXRlUnVudGltZSh7IGNvbmZpZ3VyYWJsZVJhbXA6IGxpbmVJdGVtIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsYXVuY2hSdW50aW1lKCkge1xuICAgIGlmICghdGhpcy5tb2RlbElkIHx8ICF0aGlzLmluaXRpYWxpc2VkVWlEZWZpbml0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgU2VjdGlvblBhdGhVdGlsLnVwZGF0ZVNlY3Rpb25zUGF0aCh0aGlzLmluaXRpYWxpc2VkVWlEZWZpbml0aW9uLnNlY3Rpb25zKTtcblxuICAgIGNvbnN0IHVpRGVmaW5pdGlvbiA9IEVudGl0eVV0aWwuY2xvbmUodGhpcy5pbml0aWFsaXNlZFVpRGVmaW5pdGlvbik7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbkFwaVNlcnZpY2UuZ2V0UnVudGltZURhdGFCeU1vZGVsSWQodGhpcy5tb2RlbElkKSxcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UuY3JlYXRlKCdUZXN0SWQnLCBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuVEVTVCksXG4gICAgXSkuc3Vic2NyaWJlKChbcnVudGltZURhdGFdKSA9PiB7XG4gICAgICBjb25zdCBydW50aW1lTW9kZWwgPSBSdW50aW1lTW9kZWwuY3JlYXRlKHJ1bnRpbWVEYXRhLnR5cGVzLCBydW50aW1lRGF0YS5wcm9kdWN0cyk7XG4gICAgICBjb25zdCByb290VHlwZSA9IEFycmF5LmZyb20ocnVudGltZU1vZGVsLmNvbXBvbmVudHMudmFsdWVzKCkpLmZpbmQoXG4gICAgICAgIGMgPT5cbiAgICAgICAgICB1aURlZmluaXRpb24ucm9vdFR5cGUgJiZcbiAgICAgICAgICBydW50aW1lTW9kZWwuaXNFcXVhbHMoYy50eXBlTmFtZSwgdWlEZWZpbml0aW9uLnJvb3RUeXBlKSAmJlxuICAgICAgICAgIEVudGl0eVV0aWwuaXNQcmVzZW50KGMucHJvZHVjdElkKSxcbiAgICAgICk7XG5cbiAgICAgIGlmIChyb290VHlwZT8udHlwZU5hbWUpIHtcbiAgICAgICAgdWlEZWZpbml0aW9uLnJvb3RUeXBlID0gcm9vdFR5cGUudHlwZU5hbWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRleHRQcm9kdWN0SWQgPSByb290VHlwZSA/IHJvb3RUeXBlLnByb2R1Y3RJZCA6IHVuZGVmaW5lZDtcblxuICAgICAgY29uc3QgY29udGV4dDogTGVnYWN5UnVudGltZUNvbnRleHQgPSB7XG4gICAgICAgIG1vZGVsSWQ6IHRoaXMubW9kZWxJZCA/PyAnJyxcbiAgICAgICAgdWlEZWZpbml0aW9uOiB1aURlZmluaXRpb24sXG4gICAgICAgIHJ1bnRpbWVNb2RlbCxcbiAgICAgICAgcnVudGltZU1vZGU6IFJ1bnRpbWVNb2RlLlRFU1QsXG4gICAgICAgIHByb2R1Y3RJZDogY29udGV4dFByb2R1Y3RJZCxcbiAgICAgICAgcHJvcGVydGllczogdWlEZWZpbml0aW9uLmV4dGVybmFscyxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMucnVudGltZVNlcnZpY2Uuc3RhcnRSdW50aW1lKGNvbnRleHQsIHt9KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPHZsLXJ1bnRpbWUgKHNvbHV0aW9uVXBkYXRlZCk9XCJvblNvbHV0aW9uVXBkYXRlZCgkZXZlbnQpXCI+PC92bC1ydW50aW1lPlxuIl19
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvY29tcG9uZW50cy91aS1ydW50aW1lLXByZXZpZXcvcnVudGltZS1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvY29tcG9uZW50cy91aS1ydW50aW1lLXByZXZpZXcvcnVudGltZS1wcmV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RixPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLFVBQVUsRUFJVixZQUFZLEVBQ1osZUFBZSxHQUVoQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVczQyxNQUFNLE9BQU8sdUJBQXVCO0lBYWxDLFlBQ1UsY0FBOEIsRUFDOUIsaUJBQTJDLEVBQzNDLHVCQUFnRCxFQUNoRCxjQUE4QjtRQUg5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUMzQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQU5oQyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQU9wQyxDQUFDO0lBaEJKLElBQWEsWUFBWSxDQUFDLEtBQW1CO1FBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElB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aGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25BcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZS9hcGknO1xuaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLFxuICBFbnRpdHlVdGlsLFxuICBMaW5lSXRlbSxcbiAgUHJvZHVjdE1vZGVsQXR0cmlidXRlLFxuICBQcm9kdWN0TW9kZWxzQ29udGFpbmVyLFxuICBSdW50aW1lTW9kZWwsXG4gIFNlY3Rpb25QYXRoVXRpbCxcbiAgVUlEZWZpbml0aW9uLFxufSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UsIFJ1bnRpbWVNb2RlIH0gZnJvbSAnQHZlbG9jZS9zZGsvY29yZSc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFByb2R1Y3RNb2RlbENhY2hlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2R1Y3QtbW9kZWwtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQgeyBSdW50aW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3J1bnRpbWUuc2VydmljZSc7XG5pbXBvcnQgeyBMZWdhY3lSdW50aW1lQ29udGV4dCB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmwtcnVudGltZS1wcmV2aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICdydW50aW1lLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsncnVudGltZS1wcmV2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBSdW50aW1lUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgbW9kZWxJZD86IHN0cmluZztcbiAgQElucHV0KCkgc2V0IHVpRGVmaW5pdGlvbih2YWx1ZTogVUlEZWZpbml0aW9uKSB7XG4gICAgdGhpcy5fdWlEZWZpbml0aW9uID0gdmFsdWU7XG4gICAgdGhpcy5pbml0RGVmaW5pdGlvbih2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIF91aURlZmluaXRpb24/OiBVSURlZmluaXRpb247XG4gIHByaXZhdGUgaW5pdGlhbGlzZWRVaURlZmluaXRpb24/OiBVSURlZmluaXRpb247XG4gIHByaXZhdGUgcHJvZHVjdE1vZGVsQ29udGFpbmVyPzogUHJvZHVjdE1vZGVsc0NvbnRhaW5lcjtcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJ1bnRpbWVTZXJ2aWNlOiBSdW50aW1lU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGVsQ2FjaGVTZXJ2aWNlOiBQcm9kdWN0TW9kZWxDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uQXBpU2VydmljZTogQ29uZmlndXJhdGlvbkFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm1vZGVsSWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1vZGVsQ2FjaGVTZXJ2aWNlXG4gICAgICAuZ2V0UHJvZHVjdE1vZGVsKHRoaXMubW9kZWxJZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoY29udGFpbmVyID0+IHtcbiAgICAgICAgdGhpcy5wcm9kdWN0TW9kZWxDb250YWluZXIgPSBjb250YWluZXI7XG5cbiAgICAgICAgaWYgKHRoaXMuX3VpRGVmaW5pdGlvbikge1xuICAgICAgICAgIHRoaXMuaW5pdERlZmluaXRpb24odGhpcy5fdWlEZWZpbml0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGluaXREZWZpbml0aW9uKHVpRGVmaW5pdGlvbjogVUlEZWZpbml0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByb2R1Y3RNb2RlbENvbnRhaW5lcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGluaXRpYWxpc2VkVWlEZWZpbml0aW9uID0gRW50aXR5VXRpbC5jbG9uZSh1aURlZmluaXRpb24pO1xuXG4gICAgY29uc3QgZXh0ZXJuYWxzOiBQcm9kdWN0TW9kZWxBdHRyaWJ1dGVbXSA9IHRoaXMucHJvZHVjdE1vZGVsQ29udGFpbmVyLm1haW4uZXh0ZXJuYWxzO1xuICAgIGlmIChleHRlcm5hbHMpIHtcbiAgICAgIGluaXRpYWxpc2VkVWlEZWZpbml0aW9uLmV4dGVybmFscyA9IGV4dGVybmFscy5yZWR1Y2U8RGljdGlvbmFyeTxzdHJpbmc+PigodHJ1bmssIHZhcmlhYmxlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4udHJ1bmssXG4gICAgICAgICAgW3ZhcmlhYmxlLm5hbWVdOiBpbml0aWFsaXNlZFVpRGVmaW5pdGlvbi5leHRlcm5hbHM/Llt2YXJpYWJsZS5uYW1lXSA/PyAnJyxcbiAgICAgICAgfTtcbiAgICAgIH0sIHt9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIGluaXRpYWxpc2VkVWlEZWZpbml0aW9uLmV4dGVybmFscztcbiAgICB9XG5cbiAgICB0aGlzLmluaXRpYWxpc2VkVWlEZWZpbml0aW9uID0gaW5pdGlhbGlzZWRVaURlZmluaXRpb247XG5cbiAgICB0aGlzLmxhdW5jaFJ1bnRpbWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNvbHV0aW9uVXBkYXRlZChsaW5lSXRlbTogTGluZUl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLnVwZGF0ZVJ1bnRpbWUoeyBjb25maWd1cmFibGVSYW1wOiBsaW5lSXRlbSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGF1bmNoUnVudGltZSgpIHtcbiAgICBpZiAoIXRoaXMubW9kZWxJZCB8fCAhdGhpcy5pbml0aWFsaXNlZFVpRGVmaW5pdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIFNlY3Rpb25QYXRoVXRpbC51cGRhdGVTZWN0aW9uc1BhdGgodGhpcy5pbml0aWFsaXNlZFVpRGVmaW5pdGlvbi5zZWN0aW9ucyk7XG5cbiAgICBjb25zdCB1aURlZmluaXRpb24gPSBFbnRpdHlVdGlsLmNsb25lKHRoaXMuaW5pdGlhbGlzZWRVaURlZmluaXRpb24pO1xuXG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25BcGlTZXJ2aWNlLmdldFJ1bnRpbWVEYXRhQnlNb2RlbElkKHRoaXMubW9kZWxJZCksXG4gICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmNyZWF0ZSgnVGVzdElkJywgQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLlRFU1QpLFxuICAgIF0pLnN1YnNjcmliZSgoW3J1bnRpbWVEYXRhXSkgPT4ge1xuICAgICAgY29uc3QgcnVudGltZU1vZGVsID0gUnVudGltZU1vZGVsLmNyZWF0ZShydW50aW1lRGF0YS50eXBlcywgcnVudGltZURhdGEucHJvZHVjdHMpO1xuICAgICAgY29uc3Qgcm9vdFR5cGUgPSBBcnJheS5mcm9tKHJ1bnRpbWVNb2RlbC5jb21wb25lbnRzLnZhbHVlcygpKS5maW5kKFxuICAgICAgICBjID0+XG4gICAgICAgICAgdWlEZWZpbml0aW9uLnJvb3RUeXBlICYmXG4gICAgICAgICAgcnVudGltZU1vZGVsLmlzRXF1YWxzKGMudHlwZU5hbWUsIHVpRGVmaW5pdGlvbi5yb290VHlwZSkgJiZcbiAgICAgICAgICBFbnRpdHlVdGlsLmlzUHJlc2VudChjLnByb2R1Y3RJZCksXG4gICAgICApO1xuXG4gICAgICBpZiAocm9vdFR5cGU/LnR5cGVOYW1lKSB7XG4gICAgICAgIHVpRGVmaW5pdGlvbi5yb290VHlwZSA9IHJvb3RUeXBlLnR5cGVOYW1lO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250ZXh0UHJvZHVjdElkID0gcm9vdFR5cGUgPyByb290VHlwZS5wcm9kdWN0SWQgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGNvbnN0IGNvbnRleHQ6IExlZ2FjeVJ1bnRpbWVDb250ZXh0ID0ge1xuICAgICAgICBtb2RlbElkOiB0aGlzLm1vZGVsSWQgPz8gJycsXG4gICAgICAgIHVpRGVmaW5pdGlvbjogdWlEZWZpbml0aW9uLFxuICAgICAgICBydW50aW1lTW9kZWwsXG4gICAgICAgIHJ1bnRpbWVNb2RlOiBSdW50aW1lTW9kZS5URVNULFxuICAgICAgICBwcm9kdWN0SWQ6IGNvbnRleHRQcm9kdWN0SWQsXG4gICAgICAgIHByb3BlcnRpZXM6IHVpRGVmaW5pdGlvbi5leHRlcm5hbHMsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLnN0YXJ0UnVudGltZShjb250ZXh0LCB7fSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjx2bC1ydW50aW1lIChzb2x1dGlvblVwZGF0ZWQpPVwib25Tb2x1dGlvblVwZGF0ZWQoJGV2ZW50KVwiPjwvdmwtcnVudGltZT5cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { Component, Input } from '@angular/core';
2
- import { OrderByPipe } from '@veloceapps/core';
2
+ import { OrderByPipe } from '@veloce/core';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../../../services/section-scope.service";
5
5
  import * as i2 from "../../../services/form-scope.service";
@@ -40,9 +40,9 @@ export class ChildrenPlaceholderComponent {
40
40
  this.sub.unsubscribe();
41
41
  }
42
42
  }
43
- ChildrenPlaceholderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ChildrenPlaceholderComponent, deps: [{ token: i1.SectionScopeService }, { token: i2.FormScopeService }, { token: i3.CollapsibleStateService }], target: i0.ɵɵFactoryTarget.Component });
44
- ChildrenPlaceholderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ChildrenPlaceholderComponent, selector: "children-placeholder", inputs: { children: "children" }, providers: [OrderByPipe], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!collapsed\">\n <ng-container *ngFor=\"let child of _children\">\n <section-renderer [section]=\"child\" [form]=\"form\" *ngIf=\"!child.hidden\"></section-renderer>\n </ng-container>\n</ng-container>\n", components: [{ type: i4.ExecutionSectionRendererComponent, selector: "section-renderer", inputs: ["section", "form"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ChildrenPlaceholderComponent, decorators: [{
43
+ ChildrenPlaceholderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ChildrenPlaceholderComponent, deps: [{ token: i1.SectionScopeService }, { token: i2.FormScopeService }, { token: i3.CollapsibleStateService }], target: i0.ɵɵFactoryTarget.Component });
44
+ ChildrenPlaceholderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: ChildrenPlaceholderComponent, selector: "children-placeholder", inputs: { children: "children" }, providers: [OrderByPipe], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!collapsed\">\n <ng-container *ngFor=\"let child of _children\">\n <section-renderer [section]=\"child\" [form]=\"form\" *ngIf=\"!child.hidden\"></section-renderer>\n </ng-container>\n</ng-container>\n", components: [{ type: i4.ExecutionSectionRendererComponent, selector: "section-renderer", inputs: ["section", "form"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ChildrenPlaceholderComponent, decorators: [{
46
46
  type: Component,
47
47
  args: [{
48
48
  // eslint-disable-next-line @angular-eslint/component-selector
@@ -55,9 +55,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
55
55
  }] } });
56
56
  export class TemplateComponent extends ChildrenPlaceholderComponent {
57
57
  }
58
- TemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TemplateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
59
- TemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TemplateComponent, selector: "template-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!collapsed\">\n <ng-container *ngFor=\"let child of _children\">\n <section-renderer [section]=\"child\" [form]=\"form\" *ngIf=\"!child.hidden\"></section-renderer>\n </ng-container>\n</ng-container>\n", components: [{ type: i4.ExecutionSectionRendererComponent, selector: "section-renderer", inputs: ["section", "form"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TemplateComponent, decorators: [{
58
+ TemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TemplateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
59
+ TemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TemplateComponent, selector: "template-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!collapsed\">\n <ng-container *ngFor=\"let child of _children\">\n <section-renderer [section]=\"child\" [form]=\"form\" *ngIf=\"!child.hidden\"></section-renderer>\n </ng-container>\n</ng-container>\n", components: [{ type: i4.ExecutionSectionRendererComponent, selector: "section-renderer", inputs: ["section", "form"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TemplateComponent, decorators: [{
61
61
  type: Component,
62
62
  args: [{
63
63
  // eslint-disable-next-line @angular-eslint/component-selector
@@ -65,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
65
65
  templateUrl: 'children-placeholder.component.html',
66
66
  }]
67
67
  }] });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpbGRyZW4tcGxhY2Vob2xkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvcnVudGltZS9leGVjdXRpb24vY29tcG9uZW50cy9jaGlsZHJlbi1wbGFjZWhvbGRlci9jaGlsZHJlbi1wbGFjZWhvbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2V4ZWN1dGlvbi9jb21wb25lbnRzL2NoaWxkcmVuLXBsYWNlaG9sZGVyL2NoaWxkcmVuLXBsYWNlaG9sZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUU5RixPQUFPLEVBQUUsV0FBVyxFQUFXLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7QUFZeEQsTUFBTSxPQUFPLDRCQUE0QjtJQWN2QyxZQUNVLFlBQWlDLEVBQ2pDLFNBQTJCLEVBQzNCLGdCQUF5QztRQUZ6QyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF5QjtRQWI1QyxjQUFTLEdBQWMsRUFBRSxDQUFDO1FBUWpDLGNBQVMsR0FBRyxLQUFLLENBQUM7SUFNZixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztRQUVoQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUU3RyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7O1lBQ2xFLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV4QixJQUFJLENBQUEsTUFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssMENBQUUsRUFBRSxNQUFLLFVBQVUsRUFBRTtnQkFDekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdkI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCOztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFBLE1BQUEsT0FBTyxDQUFDLFFBQVEsMENBQUUsWUFBWSxPQUFLLE1BQUEsT0FBTyxDQUFDLFFBQVEsMENBQUUsYUFBYSxDQUFBLEVBQUU7WUFDeEYsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3pFLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6QixDQUFDOzswSEFqRFUsNEJBQTRCOzhHQUE1Qiw0QkFBNEIsaUZBRjVCLENBQUMsV0FBVyxDQUFDLCtDQ1oxQixzT0FLQTs0RkRTYSw0QkFBNEI7a0JBTnhDLFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxXQUFXLEVBQUUscUNBQXFDO29CQUNsRCxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUM7aUJBQ3pCOytLQUdDLFFBQVE7c0JBRFAsS0FBSzs7QUF3RFIsTUFBTSxPQUFPLGlCQUFrQixTQUFRLDRCQUE0Qjs7K0dBQXRELGlCQUFpQjttR0FBakIsaUJBQWlCLGlGQ3ZFOUIsc09BS0E7NEZEa0VhLGlCQUFpQjtrQkFMN0IsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFdBQVcsRUFBRSxxQ0FBcUM7aUJBQ25EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT3JkZXJCeVBpcGUsIFNlY3Rpb24gfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29sbGFwc2libGVTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb2xsYXBzaWJsZS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1TY29wZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb3JtLXNjb3BlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VjdGlvblNjb3BlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3NlY3Rpb24tc2NvcGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2NoaWxkcmVuLXBsYWNlaG9sZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICdjaGlsZHJlbi1wbGFjZWhvbGRlci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW09yZGVyQnlQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hpbGRyZW5QbGFjZWhvbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBjaGlsZHJlbj86IFNlY3Rpb25bXTtcblxuICBwdWJsaWMgX2NoaWxkcmVuOiBTZWN0aW9uW10gPSBbXTtcblxuICBzZWN0aW9uITogU2VjdGlvbjtcblxuICBmb3JtITogRm9ybUdyb3VwO1xuXG4gIHN1YiE6IFN1YnNjcmlwdGlvbjtcblxuICBjb2xsYXBzZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlY3Rpb25TY29wZTogU2VjdGlvblNjb3BlU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1TY29wZTogRm9ybVNjb3BlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbGxhcHNpYmxlU3RhdGU6IENvbGxhcHNpYmxlU3RhdGVTZXJ2aWNlLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWN0aW9uID0gdGhpcy5zZWN0aW9uU2NvcGUuc2VjdGlvbjtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1TY29wZS5mb3JtO1xuXG4gICAgdGhpcy5jb2xsYXBzZWQgPSB0aGlzLnNlY3Rpb24ubW9kZWwgPyB0aGlzLmNvbGxhcHNpYmxlU3RhdGUuaXNDb2xsYXBzZWRTZWN0aW9uKHRoaXMuc2VjdGlvbi5tb2RlbC5pZCkgOiB0cnVlO1xuXG4gICAgdGhpcy5zdWIgPSB0aGlzLmNvbGxhcHNpYmxlU3RhdGUuY29sbGFwc2VTZWN0aW9uRXZlbnQuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgY29uc3QgbGluZUl0ZW1JZCA9IGVbMF07XG5cbiAgICAgIGlmICh0aGlzLnNlY3Rpb24ubW9kZWw/LmlkID09PSBsaW5lSXRlbUlkKSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gZVsxXTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc2V0Q2hpbGRyZW4oKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2hpbGRyZW4gfHwgY2hhbmdlcy5jaGlsZHJlbj8uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmNoaWxkcmVuPy5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLnNldENoaWxkcmVuKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0Q2hpbGRyZW4oKTogdm9pZCB7XG4gICAgdGhpcy5fY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuID8gdGhpcy5jaGlsZHJlbiA6IHRoaXMuc2VjdGlvbi5jaGlsZHJlbjtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAndGVtcGxhdGUtY29tcG9uZW50JyxcbiAgdGVtcGxhdGVVcmw6ICdjaGlsZHJlbi1wbGFjZWhvbGRlci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQ29tcG9uZW50IGV4dGVuZHMgQ2hpbGRyZW5QbGFjZWhvbGRlckNvbXBvbmVudCB7fVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2xsYXBzZWRcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgX2NoaWxkcmVuXCI+XG4gICAgPHNlY3Rpb24tcmVuZGVyZXIgW3NlY3Rpb25dPVwiY2hpbGRcIiBbZm9ybV09XCJmb3JtXCIgKm5nSWY9XCIhY2hpbGQuaGlkZGVuXCI+PC9zZWN0aW9uLXJlbmRlcmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpbGRyZW4tcGxhY2Vob2xkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvcnVudGltZS9leGVjdXRpb24vY29tcG9uZW50cy9jaGlsZHJlbi1wbGFjZWhvbGRlci9jaGlsZHJlbi1wbGFjZWhvbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2V4ZWN1dGlvbi9jb21wb25lbnRzL2NoaWxkcmVuLXBsYWNlaG9sZGVyL2NoaWxkcmVuLXBsYWNlaG9sZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUU5RixPQUFPLEVBQUUsV0FBVyxFQUFXLE1BQU0sY0FBYyxDQUFDOzs7Ozs7O0FBWXBELE1BQU0sT0FBTyw0QkFBNEI7SUFjdkMsWUFDVSxZQUFpQyxFQUNqQyxTQUEyQixFQUMzQixnQkFBeUM7UUFGekMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7UUFiNUMsY0FBUyxHQUFjLEVBQUUsQ0FBQztRQVFqQyxjQUFTLEdBQUcsS0FBSyxDQUFDO0lBTWYsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFFaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFN0csSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFOztZQUNsRSxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFeEIsSUFBSSxDQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLEVBQUUsTUFBSyxVQUFVLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjs7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQSxNQUFBLE9BQU8sQ0FBQyxRQUFRLDBDQUFFLFlBQVksT0FBSyxNQUFBLE9BQU8sQ0FBQyxRQUFRLDBDQUFFLGFBQWEsQ0FBQSxFQUFFO1lBQ3hGLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUN6RSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekIsQ0FBQzs7MEhBakRVLDRCQUE0Qjs4R0FBNUIsNEJBQTRCLGlGQUY1QixDQUFDLFdBQVcsQ0FBQywrQ0NaMUIsc09BS0E7NEZEU2EsNEJBQTRCO2tCQU54QyxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsV0FBVyxFQUFFLHFDQUFxQztvQkFDbEQsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDO2lCQUN6QjsrS0FHQyxRQUFRO3NCQURQLEtBQUs7O0FBd0RSLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSw0QkFBNEI7OytHQUF0RCxpQkFBaUI7bUdBQWpCLGlCQUFpQixpRkN2RTlCLHNPQUtBOzRGRGtFYSxpQkFBaUI7a0JBTDdCLFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixXQUFXLEVBQUUscUNBQXFDO2lCQUNuRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9yZGVyQnlQaXBlLCBTZWN0aW9uIH0gZnJvbSAnQHZlbG9jZS9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29sbGFwc2libGVTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb2xsYXBzaWJsZS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1TY29wZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb3JtLXNjb3BlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VjdGlvblNjb3BlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3NlY3Rpb24tc2NvcGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2NoaWxkcmVuLXBsYWNlaG9sZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICdjaGlsZHJlbi1wbGFjZWhvbGRlci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW09yZGVyQnlQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hpbGRyZW5QbGFjZWhvbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBjaGlsZHJlbj86IFNlY3Rpb25bXTtcblxuICBwdWJsaWMgX2NoaWxkcmVuOiBTZWN0aW9uW10gPSBbXTtcblxuICBzZWN0aW9uITogU2VjdGlvbjtcblxuICBmb3JtITogRm9ybUdyb3VwO1xuXG4gIHN1YiE6IFN1YnNjcmlwdGlvbjtcblxuICBjb2xsYXBzZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlY3Rpb25TY29wZTogU2VjdGlvblNjb3BlU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1TY29wZTogRm9ybVNjb3BlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbGxhcHNpYmxlU3RhdGU6IENvbGxhcHNpYmxlU3RhdGVTZXJ2aWNlLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWN0aW9uID0gdGhpcy5zZWN0aW9uU2NvcGUuc2VjdGlvbjtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1TY29wZS5mb3JtO1xuXG4gICAgdGhpcy5jb2xsYXBzZWQgPSB0aGlzLnNlY3Rpb24ubW9kZWwgPyB0aGlzLmNvbGxhcHNpYmxlU3RhdGUuaXNDb2xsYXBzZWRTZWN0aW9uKHRoaXMuc2VjdGlvbi5tb2RlbC5pZCkgOiB0cnVlO1xuXG4gICAgdGhpcy5zdWIgPSB0aGlzLmNvbGxhcHNpYmxlU3RhdGUuY29sbGFwc2VTZWN0aW9uRXZlbnQuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgY29uc3QgbGluZUl0ZW1JZCA9IGVbMF07XG5cbiAgICAgIGlmICh0aGlzLnNlY3Rpb24ubW9kZWw/LmlkID09PSBsaW5lSXRlbUlkKSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gZVsxXTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc2V0Q2hpbGRyZW4oKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2hpbGRyZW4gfHwgY2hhbmdlcy5jaGlsZHJlbj8uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmNoaWxkcmVuPy5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLnNldENoaWxkcmVuKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0Q2hpbGRyZW4oKTogdm9pZCB7XG4gICAgdGhpcy5fY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuID8gdGhpcy5jaGlsZHJlbiA6IHRoaXMuc2VjdGlvbi5jaGlsZHJlbjtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAndGVtcGxhdGUtY29tcG9uZW50JyxcbiAgdGVtcGxhdGVVcmw6ICdjaGlsZHJlbi1wbGFjZWhvbGRlci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQ29tcG9uZW50IGV4dGVuZHMgQ2hpbGRyZW5QbGFjZWhvbGRlckNvbXBvbmVudCB7fVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2xsYXBzZWRcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgX2NoaWxkcmVuXCI+XG4gICAgPHNlY3Rpb24tcmVuZGVyZXIgW3NlY3Rpb25dPVwiY2hpbGRcIiBbZm9ybV09XCJmb3JtXCIgKm5nSWY9XCIhY2hpbGQuaGlkZGVuXCI+PC9zZWN0aW9uLXJlbmRlcmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19