@colijnit/configurator 1.0.19 → 1.0.21

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 (158) hide show
  1. package/.idea/Configurator.iml +12 -0
  2. package/.idea/codeStyles/Project.xml +21 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  5. package/.idea/misc.xml +9 -0
  6. package/.idea/modules.xml +8 -0
  7. package/.idea/vcs.xml +6 -0
  8. package/angular.json +193 -0
  9. package/configurator.iml +11 -0
  10. package/dist/configurator/index.html +14 -0
  11. package/dist/configurator/main-es2015.js +3129 -0
  12. package/dist/configurator/main-es2015.js.map +1 -0
  13. package/dist/configurator/main-es5.js +5482 -0
  14. package/dist/configurator/main-es5.js.map +1 -0
  15. package/dist/configurator/polyfills-es2015.js +4520 -0
  16. package/dist/configurator/polyfills-es2015.js.map +1 -0
  17. package/dist/configurator/polyfills-es5.js +18375 -0
  18. package/dist/configurator/polyfills-es5.js.map +1 -0
  19. package/dist/configurator/runtime-es2015.js +155 -0
  20. package/dist/configurator/runtime-es2015.js.map +1 -0
  21. package/dist/configurator/runtime-es5.js +155 -0
  22. package/dist/configurator/runtime-es5.js.map +1 -0
  23. package/dist/configurator/styles-es2015.js +450 -0
  24. package/dist/configurator/styles-es2015.js.map +1 -0
  25. package/dist/configurator/styles-es5.js +432 -0
  26. package/dist/configurator/styles-es5.js.map +1 -0
  27. package/dist/configurator/vendor-es2015.js +155551 -0
  28. package/dist/configurator/vendor-es2015.js.map +1 -0
  29. package/dist/configurator/vendor-es5.js +183588 -0
  30. package/dist/configurator/vendor-es5.js.map +1 -0
  31. package/ng-package.json +9 -0
  32. package/package.json +47 -14
  33. package/src/app/app.component.ts +222 -0
  34. package/src/app/app.module.ts +34 -0
  35. package/src/app/builder.ts +480 -0
  36. package/src/app/components/answers/answer/answer.component.ts +61 -0
  37. package/src/app/components/answers/answers.component.ts +41 -0
  38. package/src/app/components/answers/answers.module.ts +26 -0
  39. package/src/app/components/selections/selections.component.ts +131 -0
  40. package/src/app/components/selections/selections.module.ts +20 -0
  41. package/src/app/components/shared/loader/loader.component.scss +33 -0
  42. package/src/app/components/shared/loader/loader.component.ts +20 -0
  43. package/src/app/components/shared/shared.module.ts +16 -0
  44. package/src/app/directives/visibility-observer-master.directive.ts +71 -0
  45. package/src/app/directives/visibility-observer.directive.ts +74 -0
  46. package/src/app/services/configurator.service.ts +86 -0
  47. package/src/app/services/image-cache.service.ts +56 -0
  48. package/src/app/services/locator.service.ts +6 -0
  49. package/src/environments/environment.prod.ts +3 -0
  50. package/src/environments/environment.ts +8 -0
  51. package/src/helper/variation-helper.ts +220 -0
  52. package/src/index.html +14 -0
  53. package/src/main.ts +11 -0
  54. package/src/model/material.ts +22 -0
  55. package/src/model/variation-settings.ts +14 -0
  56. package/src/model/variation.ts +11 -0
  57. package/src/polyfills.ts +73 -0
  58. package/{public_api.d.ts → src/public_api.ts} +6 -6
  59. package/src/style/shared.scss +173 -0
  60. package/src/style/styles.scss +45 -0
  61. package/src/tsconfig.app.json +16 -0
  62. package/src/tsconfig.spec.json +19 -0
  63. package/src/utils/asset.utils.ts +88 -0
  64. package/src/utils/file.utils.ts +156 -0
  65. package/src/utils/file.utils.unit.test.ts +8 -0
  66. package/src/utils/image.utils.ts +54 -0
  67. package/src/utils/object.utils.ts +52 -0
  68. package/src/utils/scene-utils.ts +119 -0
  69. package/src/utils/threed.utils.ts +219 -0
  70. package/src/utils/variation-utils.ts +216 -0
  71. package/tsconfig.json +23 -0
  72. package/tslint.json +132 -0
  73. package/app/builder.d.ts +0 -53
  74. package/app/components/answers/answer/answer.component.d.ts +0 -11
  75. package/app/components/answers/answers.component.d.ts +0 -8
  76. package/app/components/answers/answers.module.d.ts +0 -2
  77. package/app/components/selections/selections.component.d.ts +0 -22
  78. package/app/components/selections/selections.module.d.ts +0 -2
  79. package/app/components/shared/loader/loader.component.d.ts +0 -2
  80. package/app/components/shared/shared.module.d.ts +0 -2
  81. package/app/directives/visibility-observer-master.directive.d.ts +0 -9
  82. package/app/directives/visibility-observer.directive.d.ts +0 -13
  83. package/app/services/configurator.service.d.ts +0 -22
  84. package/app/services/image-cache.service.d.ts +0 -10
  85. package/app/services/locator.service.d.ts +0 -4
  86. package/bundles/colijnit-configurator.umd.js +0 -2745
  87. package/bundles/colijnit-configurator.umd.js.map +0 -1
  88. package/bundles/colijnit-configurator.umd.min.js +0 -17
  89. package/bundles/colijnit-configurator.umd.min.js.map +0 -1
  90. package/colijnit-configurator.d.ts +0 -10
  91. package/colijnit-configurator.metadata.json +0 -1
  92. package/esm2015/app/builder.js +0 -477
  93. package/esm2015/app/components/answers/answer/answer.component.js +0 -69
  94. package/esm2015/app/components/answers/answers.component.js +0 -43
  95. package/esm2015/app/components/answers/answers.module.js +0 -29
  96. package/esm2015/app/components/selections/selections.component.js +0 -134
  97. package/esm2015/app/components/selections/selections.module.js +0 -23
  98. package/esm2015/app/components/shared/loader/loader.component.js +0 -24
  99. package/esm2015/app/components/shared/shared.module.js +0 -21
  100. package/esm2015/app/directives/visibility-observer-master.directive.js +0 -51
  101. package/esm2015/app/directives/visibility-observer.directive.js +0 -57
  102. package/esm2015/app/services/configurator.service.js +0 -94
  103. package/esm2015/app/services/image-cache.service.js +0 -66
  104. package/esm2015/app/services/locator.service.js +0 -10
  105. package/esm2015/colijnit-configurator.js +0 -11
  106. package/esm2015/helper/variation-helper.js +0 -216
  107. package/esm2015/model/material.js +0 -11
  108. package/esm2015/model/variation-settings.js +0 -6
  109. package/esm2015/model/variation.js +0 -3
  110. package/esm2015/public_api.js +0 -7
  111. package/esm2015/utils/asset.utils.js +0 -74
  112. package/esm2015/utils/file.utils.js +0 -139
  113. package/esm2015/utils/image.utils.js +0 -52
  114. package/esm2015/utils/object.utils.js +0 -49
  115. package/esm2015/utils/scene-utils.js +0 -94
  116. package/esm2015/utils/threed.utils.js +0 -222
  117. package/esm2015/utils/variation-utils.js +0 -224
  118. package/esm5/app/builder.js +0 -591
  119. package/esm5/app/components/answers/answer/answer.component.js +0 -64
  120. package/esm5/app/components/answers/answers.component.js +0 -27
  121. package/esm5/app/components/answers/answers.module.js +0 -32
  122. package/esm5/app/components/selections/selections.component.js +0 -104
  123. package/esm5/app/components/selections/selections.module.js +0 -26
  124. package/esm5/app/components/shared/loader/loader.component.js +0 -16
  125. package/esm5/app/components/shared/shared.module.js +0 -24
  126. package/esm5/app/directives/visibility-observer-master.directive.js +0 -64
  127. package/esm5/app/directives/visibility-observer.directive.js +0 -59
  128. package/esm5/app/services/configurator.service.js +0 -160
  129. package/esm5/app/services/image-cache.service.js +0 -69
  130. package/esm5/app/services/locator.service.js +0 -13
  131. package/esm5/colijnit-configurator.js +0 -11
  132. package/esm5/helper/variation-helper.js +0 -268
  133. package/esm5/model/material.js +0 -13
  134. package/esm5/model/variation-settings.js +0 -8
  135. package/esm5/model/variation.js +0 -7
  136. package/esm5/public_api.js +0 -7
  137. package/esm5/utils/asset.utils.js +0 -106
  138. package/esm5/utils/file.utils.js +0 -151
  139. package/esm5/utils/image.utils.js +0 -56
  140. package/esm5/utils/object.utils.js +0 -56
  141. package/esm5/utils/scene-utils.js +0 -98
  142. package/esm5/utils/threed.utils.js +0 -279
  143. package/esm5/utils/variation-utils.js +0 -327
  144. package/fesm2015/colijnit-configurator.js +0 -2109
  145. package/fesm2015/colijnit-configurator.js.map +0 -1
  146. package/fesm5/colijnit-configurator.js +0 -2527
  147. package/fesm5/colijnit-configurator.js.map +0 -1
  148. package/helper/variation-helper.d.ts +0 -14
  149. package/model/material.d.ts +0 -17
  150. package/model/variation-settings.d.ts +0 -14
  151. package/model/variation.d.ts +0 -10
  152. package/utils/asset.utils.d.ts +0 -13
  153. package/utils/file.utils.d.ts +0 -27
  154. package/utils/image.utils.d.ts +0 -8
  155. package/utils/object.utils.d.ts +0 -7
  156. package/utils/scene-utils.d.ts +0 -7
  157. package/utils/threed.utils.d.ts +0 -16
  158. package/utils/variation-utils.d.ts +0 -12
@@ -1,94 +0,0 @@
1
- import { __awaiter, __decorate } from "tslib";
2
- import { Injectable, Injector, OnDestroy } from '@angular/core';
3
- import { Configurator } from '@colijnit/configuratorapi/build/configurator';
4
- import { ServiceLocator } from './locator.service';
5
- import { notNill } from '@colijnit/configuratorapi/build/utils/function/not-nill.function';
6
- import { NodeType } from '@colijnit/configuratorapi/build/enum/node-type.enum';
7
- import { isNill } from '@colijnit/configuratorapi/build/utils/function/is-nill.function';
8
- import * as i0 from "@angular/core";
9
- let ConfiguratorService = class ConfiguratorService {
10
- constructor(_injector) {
11
- this._injector = _injector;
12
- if (!ServiceLocator.injector) {
13
- ServiceLocator.injector = _injector;
14
- }
15
- }
16
- initApi(options) {
17
- this._configuratorApi = new Configurator(options);
18
- }
19
- initNodeInstance(goodId) {
20
- return __awaiter(this, void 0, void 0, function* () {
21
- return yield this._configuratorApi.initNodeInstance(goodId);
22
- });
23
- }
24
- setInstanceToConfigure(id, showLoader = false) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- return yield this._configuratorApi.setInstanceToConfigure(id, showLoader);
27
- });
28
- }
29
- getGoodIdFromSku(sku, showLoader = false) {
30
- return __awaiter(this, void 0, void 0, function* () {
31
- return yield this._configuratorApi.getGoodIdFromSku(sku, showLoader);
32
- });
33
- }
34
- getArticleQuickSel(goodId, showLoader = false) {
35
- return __awaiter(this, void 0, void 0, function* () {
36
- return yield this._configuratorApi.getArticleQuickSel(goodId, showLoader);
37
- });
38
- }
39
- getSelections(showLoader = false, publicationCode = 2) {
40
- return __awaiter(this, void 0, void 0, function* () {
41
- const selections = yield this._configuratorApi.getSelections(showLoader);
42
- selections.resultObjects.filter((s) => {
43
- (isNill(s.hierarchicalPublicationCode) || ((s.hierarchicalPublicationCode & publicationCode) > 0)) && ((s.nodeType === NodeType.Question && (((s.questionPublicationCode & publicationCode) > 0) || isNill(s.questionPublicationCode))) ||
44
- (s.nodeType === NodeType.Answer && (((s.answerPublicationCode & publicationCode) > 0) || isNill(s.answerPublicationCode))));
45
- });
46
- return selections;
47
- });
48
- }
49
- getDecos(showLoader = false) {
50
- return __awaiter(this, void 0, void 0, function* () {
51
- return yield this._configuratorApi.getDecos(showLoader);
52
- });
53
- }
54
- getQuestionAndAnswers(showLoader = false, publicationCode = 2) {
55
- return __awaiter(this, void 0, void 0, function* () {
56
- const questionAndAnswers = yield this._configuratorApi.getQuestionAndAnswers(showLoader);
57
- questionAndAnswers.answers.filter((answer) => {
58
- (notNill(answer.hierarchicalPublicationCode) && (answer.hierarchicalPublicationCode & publicationCode) === 0) ||
59
- (answer.type === NodeType.Question && (answer.questionPublicationCode & publicationCode) === 0 && notNill(answer.questionPublicationCode)) ||
60
- (answer.type === NodeType.Answer && (answer.publicationCode & publicationCode) === 0 && notNill(answer.publicationCode));
61
- });
62
- return questionAndAnswers;
63
- });
64
- }
65
- getSingleImage(nodeId, publication, includeMimetype, thumb, showLoader) {
66
- return __awaiter(this, void 0, void 0, function* () {
67
- if (!nodeId) {
68
- return null;
69
- }
70
- return yield this._configuratorApi.getSingleImage(nodeId, publication, includeMimetype, thumb, showLoader);
71
- });
72
- }
73
- selectSelection(selection, showLoader = false) {
74
- return __awaiter(this, void 0, void 0, function* () {
75
- return yield this._configuratorApi.selectSelection(selection, showLoader);
76
- });
77
- }
78
- selectAnswer(answer, showLoader = false) {
79
- return __awaiter(this, void 0, void 0, function* () {
80
- return yield this._configuratorApi.selectAnswer(answer, showLoader);
81
- });
82
- }
83
- };
84
- ConfiguratorService.ctorParameters = () => [
85
- { type: Injector }
86
- ];
87
- ConfiguratorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ConfiguratorService_Factory() { return new ConfiguratorService(i0.ɵɵinject(i0.INJECTOR)); }, token: ConfiguratorService, providedIn: "root" });
88
- ConfiguratorService = __decorate([
89
- Injectable({
90
- providedIn: 'root'
91
- })
92
- ], ConfiguratorService);
93
- export { ConfiguratorService };
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29saWpuaXQvY29uZmlndXJhdG9yLyIsInNvdXJjZXMiOlsiYXBwL3NlcnZpY2VzL2NvbmZpZ3VyYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBTzFFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDekYsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQzdFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQzs7QUFLdkYsSUFBYSxtQkFBbUIsR0FBaEMsTUFBYSxtQkFBbUI7SUFJOUIsWUFBb0IsU0FBbUI7UUFBbkIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRTtZQUM1QixjQUFjLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztTQUNyQztJQUNILENBQUM7SUFFTSxPQUFPLENBQUMsT0FBZ0I7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFWSxnQkFBZ0IsQ0FBQyxNQUFjOztZQUMxQyxPQUFPLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlELENBQUM7S0FBQTtJQUVZLHNCQUFzQixDQUFDLEVBQVUsRUFBRSxhQUFzQixLQUFLOztZQUN6RSxPQUFPLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLEVBQUUsRUFB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QUFPLElBQUksQ0FBQzthQUNiO1lBQ0QsT0FBTyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdHLENBQUM7S0FBQTtJQUVZLGVBQWUsQ0FBQyxTQUFvQixFQUFFLGFBQXNCLEtBQUs7O1lBQzVFLE9BQU8sTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM1RSxDQUFDO0tBQUE7SUFFWSxZQUFZLENBQUMsTUFBYyxFQUFFLGFBQXNCLEtBQUs7O1lBQ25FLE9BQU8sTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN0RSxDQUFDO0tBQUE7Q0FFRixDQUFBOztZQWpFZ0MsUUFBUTs7O0FBSjVCLG1CQUFtQjtJQUgvQixVQUFVLENBQUM7UUFDVixVQUFVLEVBQUUsTUFBTTtLQUNuQixDQUFDO0dBQ1csbUJBQW1CLENBcUUvQjtTQXJFWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIEluamVjdG9yLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb25maWd1cmF0b3J9IGZyb20gJ0Bjb2xpam5pdC9jb25maWd1cmF0b3JhcGkvYnVpbGQvY29uZmlndXJhdG9yJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7U2VsZWN0aW9ufSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL3NlbGVjdGlvbic7XG5pbXBvcnQge0Fuc3dlcn0gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9tb2RlbC9hbnN3ZXInO1xuaW1wb3J0IHtEYXRhU2VydmljZVJlc3BvbnNlRGF0YX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvZGF0YS1zZXJ2aWNlLXJlc3BvbnNlLWRhdGEnO1xuaW1wb3J0IHtPcHRpb25zfSBmcm9tIFwiQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvb3B0aW9uc1wiO1xuaW1wb3J0IHtRdWVzdGlvbkFuZEFuc3dlcnN9IGZyb20gXCJAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL3F1ZXN0aW9uLWFuZC1hbnN3ZXJzXCI7XG5pbXBvcnQge1NlcnZpY2VMb2NhdG9yfSBmcm9tICcuL2xvY2F0b3Iuc2VydmljZSc7XG5pbXBvcnQge25vdE5pbGx9IGZyb20gJ0Bjb2xpam5pdC9jb25maWd1cmF0b3JhcGkvYnVpbGQvdXRpbHMvZnVuY3Rpb24vbm90LW5pbGwuZnVuY3Rpb24nO1xuaW1wb3J0IHtOb2RlVHlwZX0gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9lbnVtL25vZGUtdHlwZS5lbnVtJztcbmltcG9ydCB7aXNOaWxsfSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL3V0aWxzL2Z1bmN0aW9uL2lzLW5pbGwuZnVuY3Rpb24nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0b3JTZXJ2aWNlIHtcblxuICBwcml2YXRlIF9jb25maWd1cmF0b3JBcGk6IENvbmZpZ3VyYXRvcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBpZiAoIVNlcnZpY2VMb2NhdG9yLmluamVjdG9yKSB7XG4gICAgICBTZXJ2aWNlTG9jYXRvci5pbmplY3RvciA9IF9pbmplY3RvcjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaW5pdEFwaShvcHRpb25zOiBPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5fY29uZmlndXJhdG9yQXBpID0gbmV3IENvbmZpZ3VyYXRvcihvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0Tm9kZUluc3RhbmNlKGdvb2RJZDogbnVtYmVyKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25maWd1cmF0b3JBcGkuaW5pdE5vZGVJbnN0YW5jZShnb29kSWQpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldEluc3RhbmNlVG9Db25maWd1cmUoaWQ6IHN0cmluZywgc2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25maWd1cmF0b3JBcGkuc2V0SW5zdGFuY2VUb0NvbmZpZ3VyZShpZCwgc2hvd0xvYWRlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R29vZElkRnJvbVNrdShza3U6IHN0cmluZywgc2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25maWd1cmF0b3JBcGkuZ2V0R29vZElkRnJvbVNrdShza3UsIHNob3dMb2FkZXIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFydGljbGVRdWlja1NlbChnb29kSWQ6IG51bWJlciwgc2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25maWd1cmF0b3JBcGkuZ2V0QXJ0aWNsZVF1aWNrU2VsKGdvb2RJZCwgc2hvd0xvYWRlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U2VsZWN0aW9ucyhzaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2UsIHB1YmxpY2F0aW9uQ29kZTogbnVtYmVyID0gMik6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBzZWxlY3Rpb25zOiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuX2NvbmZpZ3VyYXRvckFwaS5nZXRTZWxlY3Rpb25zKHNob3dMb2FkZXIpO1xuICAgIHNlbGVjdGlvbnMucmVzdWx0T2JqZWN0cy5maWx0ZXIoKHM6IFNlbGVjdGlvbikgPT4ge1xuICAgICAgKGlzTmlsbChzLmhpZXJhcmNoaWNhbFB1YmxpY2F0aW9uQ29kZSkgfHwgKChzLmhpZXJhcmNoaWNhbFB1YmxpY2F0aW9uQ29kZSAmIHB1YmxpY2F0aW9uQ29kZSkgPiAwKSkgJiYgKFxuICAgICAgICAgIChzLm5vZGVUeXBlID09PSBOb2RlVHlwZS5RdWVzdGlvbiAmJiAoKChzLnF1ZXN0aW9uUHVibGljYXRpb25Db2RlICYgcHVibGljYXRpb25Db2RlKSA+IDApIHx8IGlzTmlsbChzLnF1ZXN0aW9uUHVibGljYXRpb25Db2RlKSkpIHx8XG4gICAgICAgICAgKHMubm9kZVR5cGUgPT09IE5vZGVUeXBlLkFuc3dlciAmJiAoKChzLmFuc3dlclB1YmxpY2F0aW9uQ29kZSAmIHB1YmxpY2F0aW9uQ29kZSkgPiAwKSB8fCBpc05pbGwocy5hbnN3ZXJQdWJsaWNhdGlvbkNvZGUpKSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBzZWxlY3Rpb25zO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERlY29zKHNob3dMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fY29uZmlndXJhdG9yQXBpLmdldERlY29zKHNob3dMb2FkZXIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFF1ZXN0aW9uQW5kQW5zd2VycyhzaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2UsIHB1YmxpY2F0aW9uQ29kZTogbnVtYmVyID0gMik6IFByb21pc2U8UXVlc3Rpb25BbmRBbnN3ZXJzPiB7XG4gICAgY29uc3QgcXVlc3Rpb25BbmRBbnN3ZXJzOiBRdWVzdGlvbkFuZEFuc3dlcnMgPSBhd2FpdCB0aGlzLl9jb25maWd1cmF0b3JBcGkuZ2V0UXVlc3Rpb25BbmRBbnN3ZXJzKHNob3dMb2FkZXIpO1xuICAgIHF1ZXN0aW9uQW5kQW5zd2Vycy5hbnN3ZXJzLmZpbHRlcigoYW5zd2VyOiBBbnN3ZXIpID0+IHtcbiAgICAgIChub3ROaWxsKGFuc3dlci5oaWVyYXJjaGljYWxQdWJsaWNhdGlvbkNvZGUpICYmIChhbnN3ZXIuaGllcmFyY2hpY2FsUHVibGljYXRpb25Db2RlICYgcHVibGljYXRpb25Db2RlKSA9PT0gMCkgfHxcbiAgICAgIChhbnN3ZXIudHlwZSA9PT0gTm9kZVR5cGUuUXVlc3Rpb24gJiYgKGFuc3dlci5xdWVzdGlvblB1YmxpY2F0aW9uQ29kZSAmIHB1YmxpY2F0aW9uQ29kZSkgPT09IDAgJiYgbm90TmlsbChhbnN3ZXIucXVlc3Rpb25QdWJsaWNhdGlvbkNvZGUpKSB8fFxuICAgICAgKGFuc3dlci50eXBlID09PSBOb2RlVHlwZS5BbnN3ZXIgJiYgKGFuc3dlci5wdWJsaWNhdGlvbkNvZGUgJiBwdWJsaWNhdGlvbkNvZGUpID09PSAwICYmIG5vdE5pbGwoYW5zd2VyLnB1YmxpY2F0aW9uQ29kZSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBxdWVzdGlvbkFuZEFuc3dlcnM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U2luZ2xlSW1hZ2Uobm9kZUlkOiBudW1iZXIgfCBzdHJpbmcsIHB1YmxpY2F0aW9uOiBudW1iZXIsIGluY2x1ZGVNaW1ldHlwZTogYm9vbGVhbiwgdGh1bWI6IGJvb2xlYW4sIHNob3dMb2FkZXI6IGJvb2xlYW4pOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XG4gICAgaWYgKCFub2RlSWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fY29uZmlndXJhdG9yQXBpLmdldFNpbmdsZUltYWdlKG5vZGVJZCwgcHVibGljYXRpb24sIGluY2x1ZGVNaW1ldHlwZSwgdGh1bWIsIHNob3dMb2FkZXIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNlbGVjdFNlbGVjdGlvbihzZWxlY3Rpb246IFNlbGVjdGlvbiwgc2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25maWd1cmF0b3JBcGkuc2VsZWN0U2VsZWN0aW9uKHNlbGVjdGlvbiwgc2hvd0xvYWRlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VsZWN0QW5zd2VyKGFuc3dlcjogQW5zd2VyLCBzaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2NvbmZpZ3VyYXRvckFwaS5zZWxlY3RBbnN3ZXIoYW5zd2VyLCBzaG93TG9hZGVyKTtcbiAgfVxuXG59XG4iXX0=
@@ -1,66 +0,0 @@
1
- var ImageCacheService_1;
2
- import { __decorate } from "tslib";
3
- import { Injectable } from '@angular/core';
4
- import { ImageUtils } from '../../utils/image.utils';
5
- import { ConfiguratorService } from './configurator.service';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "./configurator.service";
8
- let ImageCacheService = ImageCacheService_1 = class ImageCacheService {
9
- constructor(_configuratorService) {
10
- this._configuratorService = _configuratorService;
11
- // Map containing the retrieved images, @number = nodeId, @string = base64 string
12
- this._imageCache = new Map();
13
- }
14
- static _handleResponseData(includeMimetype, thumb, responseData) {
15
- if (responseData && responseData.resultObject) {
16
- if (responseData.resultObject.filePath !== null && responseData.resultObject.filePath !== "") {
17
- return ImageUtils.getFixedImageFilepathUrl(responseData.resultObject.filePath);
18
- }
19
- else {
20
- if (includeMimetype) {
21
- return ImageUtils.getDocBodyWithMimeTypeDefinition(responseData.resultObject.fileName, thumb ? responseData.resultObject.thumbnailBody : responseData.resultObject.documentBody);
22
- }
23
- else {
24
- return thumb ? responseData.resultObject.thumbnailBody : responseData.resultObject.documentBody;
25
- }
26
- }
27
- }
28
- else {
29
- return '';
30
- }
31
- }
32
- getImageForSelectionOrAnswer(object) {
33
- const includeMimeType = true, thumb = true;
34
- return new Promise((resolve, reject) => {
35
- if (object && object.nodeId) {
36
- if (!this._imageCache.has(object.nodeId)) {
37
- return this._configuratorService.getSingleImage(object.nodeId, 4, includeMimeType, thumb, true)
38
- .then((responseData) => {
39
- const base64 = ImageCacheService_1._handleResponseData(includeMimeType, thumb, responseData);
40
- this._imageCache.set(object.nodeId, base64);
41
- resolve(base64);
42
- }).catch(() => {
43
- reject();
44
- });
45
- }
46
- else {
47
- resolve(this._imageCache.get(object.nodeId));
48
- }
49
- }
50
- else {
51
- reject();
52
- }
53
- });
54
- }
55
- };
56
- ImageCacheService.ctorParameters = () => [
57
- { type: ConfiguratorService }
58
- ];
59
- ImageCacheService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ImageCacheService_Factory() { return new ImageCacheService(i0.ɵɵinject(i1.ConfiguratorService)); }, token: ImageCacheService, providedIn: "root" });
60
- ImageCacheService = ImageCacheService_1 = __decorate([
61
- Injectable({
62
- providedIn: 'root'
63
- })
64
- ], ImageCacheService);
65
- export { ImageCacheService };
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb2xpam5pdC9jb25maWd1cmF0b3IvIiwic291cmNlcyI6WyJhcHAvc2VydmljZXMvaW1hZ2UtY2FjaGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBR25ELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7QUFLM0QsSUFBYSxpQkFBaUIseUJBQTlCLE1BQWEsaUJBQWlCO0lBSzVCLFlBQW9CLG9CQUF5QztRQUF6Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBSDdELGlGQUFpRjtRQUN6RSxnQkFBVyxHQUF3QixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRVksQ0FBQztJQUUxRCxNQUFNLENBQUMsbUJBQW1CLENBQUMsZUFBd0IsRUFBRSxLQUFjLEVBQUUsWUFBcUM7UUFDaEgsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLFlBQVksRUFBRTtZQUM3QyxJQUFJLFlBQVksQ0FBQyxZQUFZLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLFFBQVEsS0FBSyxFQUFFLEVBQUU7Z0JBQzVGLE9BQU8sVUFBVSxDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDaEY7aUJBQU07Z0JBQ0wsSUFBSSxlQUFlLEVBQUU7b0JBQ25CLE9BQU8sVUFBVSxDQUFDLGdDQUFnQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUNqRixLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUMvRjtxQkFBTTtvQkFDTCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO2lCQUNqRzthQUNGO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDO0lBRU0sNEJBQTRCLENBQUMsTUFBMEI7UUFDNUQsTUFBTSxlQUFlLEdBQVksSUFBSSxFQUFFLEtBQUssR0FBWSxJQUFJLENBQUM7UUFDN0QsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQWlCLEVBQUUsTUFBZ0IsRUFBRSxFQUFFO1lBQ3pELElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ3hDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQzt5QkFDMUYsSUFBSSxDQUFDLENBQUMsWUFBcUMsRUFBRSxFQUFFO3dCQUM5QyxNQUFNLE1BQU0sR0FBVyxtQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO3dCQUNuRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO3dCQUM1QyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2xCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7d0JBQ1YsTUFBTSxFQUFFLENBQUM7b0JBQ2IsQ0FBQyxDQUFDLENBQUM7aUJBQ1I7cUJBQU07b0JBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2lCQUM5QzthQUNGO2lCQUFNO2dCQUNMLE1BQU0sRUFBRSxDQUFDO2FBQ1Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFBOztZQXhDMkMsbUJBQW1COzs7QUFMbEQsaUJBQWlCO0lBSDdCLFVBQVUsQ0FBQztRQUNWLFVBQVUsRUFBRSxNQUFNO0tBQ25CLENBQUM7R0FDVyxpQkFBaUIsQ0E2QzdCO1NBN0NZLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0YVNlcnZpY2VSZXNwb25zZURhdGF9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL2RhdGEtc2VydmljZS1yZXNwb25zZS1kYXRhJztcbmltcG9ydCB7SW1hZ2VVdGlsc30gZnJvbSAnLi4vLi4vdXRpbHMvaW1hZ2UudXRpbHMnO1xuaW1wb3J0IHtBbnN3ZXJ9IGZyb20gJ0Bjb2xpam5pdC9jb25maWd1cmF0b3JhcGkvYnVpbGQvbW9kZWwvYW5zd2VyJztcbmltcG9ydCB7U2VsZWN0aW9ufSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL3NlbGVjdGlvbic7XG5pbXBvcnQge0NvbmZpZ3VyYXRvclNlcnZpY2V9IGZyb20gJy4vY29uZmlndXJhdG9yLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBJbWFnZUNhY2hlU2VydmljZSB7XG5cbiAgLy8gTWFwIGNvbnRhaW5pbmcgdGhlIHJldHJpZXZlZCBpbWFnZXMsIEBudW1iZXIgPSBub2RlSWQsIEBzdHJpbmcgPSBiYXNlNjQgc3RyaW5nXG4gIHByaXZhdGUgX2ltYWdlQ2FjaGU6IE1hcDxudW1iZXIsIHN0cmluZz4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY29uZmlndXJhdG9yU2VydmljZTogQ29uZmlndXJhdG9yU2VydmljZSkgeyB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2hhbmRsZVJlc3BvbnNlRGF0YShpbmNsdWRlTWltZXR5cGU6IGJvb2xlYW4sIHRodW1iOiBib29sZWFuLCByZXNwb25zZURhdGE6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhKTogc3RyaW5nIHtcbiAgICBpZiAocmVzcG9uc2VEYXRhICYmIHJlc3BvbnNlRGF0YS5yZXN1bHRPYmplY3QpIHtcbiAgICAgIGlmIChyZXNwb25zZURhdGEucmVzdWx0T2JqZWN0LmZpbGVQYXRoICE9PSBudWxsICYmIHJlc3BvbnNlRGF0YS5yZXN1bHRPYmplY3QuZmlsZVBhdGggIT09IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuIEltYWdlVXRpbHMuZ2V0Rml4ZWRJbWFnZUZpbGVwYXRoVXJsKHJlc3BvbnNlRGF0YS5yZXN1bHRPYmplY3QuZmlsZVBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGluY2x1ZGVNaW1ldHlwZSkge1xuICAgICAgICAgIHJldHVybiBJbWFnZVV0aWxzLmdldERvY0JvZHlXaXRoTWltZVR5cGVEZWZpbml0aW9uKHJlc3BvbnNlRGF0YS5yZXN1bHRPYmplY3QuZmlsZU5hbWUsXG4gICAgICAgICAgICAgIHRodW1iID8gcmVzcG9uc2VEYXRhLnJlc3VsdE9iamVjdC50aHVtYm5haWxCb2R5IDogcmVzcG9uc2VEYXRhLnJlc3VsdE9iamVjdC5kb2N1bWVudEJvZHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aHVtYiA/IHJlc3BvbnNlRGF0YS5yZXN1bHRPYmplY3QudGh1bWJuYWlsQm9keSA6IHJlc3BvbnNlRGF0YS5yZXN1bHRPYmplY3QuZG9jdW1lbnRCb2R5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0SW1hZ2VGb3JTZWxlY3Rpb25PckFuc3dlcihvYmplY3Q6IFNlbGVjdGlvbiB8IEFuc3dlcik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgaW5jbHVkZU1pbWVUeXBlOiBib29sZWFuID0gdHJ1ZSwgdGh1bWI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcbiAgICAgIGlmIChvYmplY3QgJiYgb2JqZWN0Lm5vZGVJZCkge1xuICAgICAgICBpZiAoIXRoaXMuX2ltYWdlQ2FjaGUuaGFzKG9iamVjdC5ub2RlSWQpKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZ3VyYXRvclNlcnZpY2UuZ2V0U2luZ2xlSW1hZ2Uob2JqZWN0Lm5vZGVJZCwgNCwgaW5jbHVkZU1pbWVUeXBlLCB0aHVtYiwgdHJ1ZSlcbiAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlRGF0YTogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBiYXNlNjQ6IHN0cmluZyA9IEltYWdlQ2FjaGVTZXJ2aWNlLl9oYW5kbGVSZXNwb25zZURhdGEoaW5jbHVkZU1pbWVUeXBlLCB0aHVtYiwgcmVzcG9uc2VEYXRhKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbWFnZUNhY2hlLnNldChvYmplY3Qubm9kZUlkLCBiYXNlNjQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoYmFzZTY0KTtcbiAgICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUodGhpcy5faW1hZ2VDYWNoZS5nZXQob2JqZWN0Lm5vZGVJZCkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3QoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,10 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { Injectable } from '@angular/core';
3
- let ServiceLocator = class ServiceLocator {
4
- };
5
- ServiceLocator.injector = undefined;
6
- ServiceLocator = __decorate([
7
- Injectable()
8
- ], ServiceLocator);
9
- export { ServiceLocator };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvbGlqbml0L2NvbmZpZ3VyYXRvci8iLCJzb3VyY2VzIjpbImFwcC9zZXJ2aWNlcy9sb2NhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQVcsTUFBTSxlQUFlLENBQUM7QUFHbkQsSUFBYSxjQUFjLEdBQTNCLE1BQWEsY0FBYztDQUUxQixDQUFBO0FBRFEsdUJBQVEsR0FBYSxTQUFTLENBQUM7QUFEM0IsY0FBYztJQUQxQixVQUFVLEVBQUU7R0FDQSxjQUFjLENBRTFCO1NBRlksY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2VydmljZUxvY2F0b3Ige1xuICBzdGF0aWMgaW5qZWN0b3I6IEluamVjdG9yID0gdW5kZWZpbmVkO1xufVxuIl19
@@ -1,11 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- export { AnswerComponent as ɵc } from './app/components/answers/answer/answer.component';
6
- export { LoaderComponent as ɵb } from './app/components/shared/loader/loader.component';
7
- export { SharedModule as ɵa } from './app/components/shared/shared.module';
8
- export { VisibilityObserverMasterDirective as ɵf } from './app/directives/visibility-observer-master.directive';
9
- export { VisibilityObserverDirective as ɵe } from './app/directives/visibility-observer.directive';
10
- export { ImageCacheService as ɵd } from './app/services/image-cache.service';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29saWpuaXQtY29uZmlndXJhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvbGlqbml0L2NvbmZpZ3VyYXRvci8iLCJzb3VyY2VzIjpbImNvbGlqbml0LWNvbmZpZ3VyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxlQUFlLElBQUksRUFBRSxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUN0RixPQUFPLEVBQUMsWUFBWSxJQUFJLEVBQUUsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxpQ0FBaUMsSUFBSSxFQUFFLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUM5RyxPQUFPLEVBQUMsMkJBQTJCLElBQUksRUFBRSxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDakcsT0FBTyxFQUFDLGlCQUFpQixJQUFJLEVBQUUsRUFBQyxNQUFNLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuXG5leHBvcnQge0Fuc3dlckNvbXBvbmVudCBhcyDJtWN9IGZyb20gJy4vYXBwL2NvbXBvbmVudHMvYW5zd2Vycy9hbnN3ZXIvYW5zd2VyLmNvbXBvbmVudCc7XG5leHBvcnQge0xvYWRlckNvbXBvbmVudCBhcyDJtWJ9IGZyb20gJy4vYXBwL2NvbXBvbmVudHMvc2hhcmVkL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcbmV4cG9ydCB7U2hhcmVkTW9kdWxlIGFzIMm1YX0gZnJvbSAnLi9hcHAvY29tcG9uZW50cy9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5leHBvcnQge1Zpc2liaWxpdHlPYnNlcnZlck1hc3RlckRpcmVjdGl2ZSBhcyDJtWZ9IGZyb20gJy4vYXBwL2RpcmVjdGl2ZXMvdmlzaWJpbGl0eS1vYnNlcnZlci1tYXN0ZXIuZGlyZWN0aXZlJztcbmV4cG9ydCB7VmlzaWJpbGl0eU9ic2VydmVyRGlyZWN0aXZlIGFzIMm1ZX0gZnJvbSAnLi9hcHAvZGlyZWN0aXZlcy92aXNpYmlsaXR5LW9ic2VydmVyLmRpcmVjdGl2ZSc7XG5leHBvcnQge0ltYWdlQ2FjaGVTZXJ2aWNlIGFzIMm1ZH0gZnJvbSAnLi9hcHAvc2VydmljZXMvaW1hZ2UtY2FjaGUuc2VydmljZSc7Il19
@@ -1,216 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { DecoNodeType } from "@colijnit/configuratorapi/build/enum/deco-node-type.enum";
3
- import { AssetUtils } from "../utils/asset.utils";
4
- import { Variation } from "../model/variation";
5
- import * as THREE from "three";
6
- import { VariationUtils } from "../utils/variation-utils";
7
- export class VariationHelper {
8
- constructor() {
9
- this._lastKnownVariations = new Map();
10
- }
11
- clearCache() {
12
- const valueMap = Array.from(this._lastKnownVariations.values());
13
- for (let i = 0; i < valueMap.length; i++) {
14
- const values = Array.from(valueMap[i].values());
15
- values.forEach((variations) => {
16
- variations.forEach((variation) => {
17
- variation.material.texture.dispose();
18
- variation.material.normal.dispose();
19
- variation.material.metalness.dispose();
20
- variation.material.roughness.dispose();
21
- variation.material.ao.dispose();
22
- });
23
- });
24
- }
25
- }
26
- loadPart(obj, parts, usePbr = false) {
27
- return __awaiter(this, void 0, void 0, function* () {
28
- try {
29
- const len = parts.length;
30
- for (let i = 0; i < len; i++) {
31
- if (parts[i].decoNode && parts[i].decoNode.gameObjectName && parts[i].decoNode.type === DecoNodeType.Part) {
32
- const partSettings = yield VariationUtils.LoadVariation(this.assetPath, parts[i].decoNode.gameObjectName || parts[i].decoId);
33
- if (partSettings) {
34
- const partVariation = new Variation();
35
- partVariation.decoId = parseFloat(parts[i].decoNode.id);
36
- partVariation.brandId = parts[i].decoNode.brandId;
37
- partVariation.gameObjectName = parts[i].decoNode.gameObjectName;
38
- partVariation.material = yield AssetUtils.CreateMaterialFromAsset(partSettings);
39
- // parts[i].variation = partVariation;
40
- this._applyMaterialPart(obj, partVariation, parts[i].node, usePbr);
41
- }
42
- }
43
- }
44
- }
45
- catch (e) {
46
- console.error(e);
47
- }
48
- });
49
- }
50
- loadVariation(instanceId, obj, parts, usePbr = false) {
51
- return __awaiter(this, void 0, void 0, function* () {
52
- try {
53
- const len = parts.length;
54
- for (let i = 0; i < len; i++) {
55
- const variations = parts[i].variations;
56
- if (!variations || variations.length === 0) {
57
- if (this._getLastKnownVariations(instanceId, parts[i].nodeId)) {
58
- parts[i].variations = this._getLastKnownVariations(instanceId, parts[i].nodeId);
59
- this._applyVariations(obj, parts[i], usePbr);
60
- continue;
61
- }
62
- else {
63
- continue;
64
- }
65
- }
66
- const lastKnownVariations = [];
67
- for (let j = 0; j < variations.length; j++) {
68
- const variationSettings = yield VariationUtils.LoadVariation(this.assetPath, variations[j].gameObjectName || parts[i].decoId);
69
- const newVariation = new Variation();
70
- newVariation.decoId = parseFloat(variations[j].id);
71
- newVariation.brandId = variations[j].brandId;
72
- newVariation.gameObjectName = variations[j].gameObjectName;
73
- newVariation.supplierArticleNr = variations[j].supplierArticleNr;
74
- newVariation.materialId = variations[j].materialId;
75
- newVariation.material = yield AssetUtils.CreateMaterialFromAsset(variationSettings);
76
- lastKnownVariations.push(newVariation);
77
- }
78
- this._setLastKnownVariations(instanceId, parts[i].nodeId, lastKnownVariations);
79
- parts[i].variations = lastKnownVariations;
80
- this._applyVariations(obj, parts[i], usePbr);
81
- }
82
- }
83
- catch (e) {
84
- console.error(e);
85
- }
86
- });
87
- }
88
- _getChildrenFilterByProp(obj, userDataObjectProp, prop, value) {
89
- return obj.children.filter((child) => {
90
- return child.userData &&
91
- child.userData.hasOwnProperty(userDataObjectProp) &&
92
- child.userData[userDataObjectProp].hasOwnProperty(prop) &&
93
- child.userData[userDataObjectProp][prop] === value;
94
- });
95
- }
96
- _applyMaterialPart(obj, partMaterial, nodeId, usePbr = false) {
97
- const children = this._getChildrenFilterByProp(obj, 'selection', 'node', nodeId);
98
- const len = children.length;
99
- for (let i = 0; i < len; i++) {
100
- const child = children[i];
101
- if (child !== null && child !== undefined) {
102
- child.traverse((mesh) => {
103
- if (mesh instanceof THREE.Mesh && partMaterial) {
104
- if (Array.isArray(mesh.material)) { // multimaterial support
105
- for (let j = 0, jlen = mesh.material.length; j < jlen; j++) {
106
- if (mesh.material[j].name.toLowerCase().indexOf('fixed_frame') !== -1) {
107
- mesh.material[j] = this._setMeshMaterialFromVariation(mesh.material[j].name, partMaterial, usePbr);
108
- }
109
- }
110
- }
111
- else {
112
- if (mesh.material.name.toLowerCase().indexOf('fixed_frame') !== -1) {
113
- mesh.material = this._setMeshMaterialFromVariation(mesh.material.name, partMaterial, usePbr);
114
- }
115
- }
116
- }
117
- });
118
- }
119
- }
120
- }
121
- _applyVariations(obj, part, usePbr = false) {
122
- const children = this._getChildrenFilterByProp(obj, 'selection', 'node', part.node);
123
- const len = children.length;
124
- for (let i = 0; i < len; i++) {
125
- const child = children[i];
126
- if (child !== null && child !== undefined) {
127
- child.traverse((mesh) => {
128
- if (mesh instanceof THREE.Mesh && part.variations && part.variations.length > 0 && mesh.name.toLowerCase().indexOf('c_')) {
129
- for (let j = 0; j < part.variations.length; j++) {
130
- const variation = part.variations[j];
131
- if (variation.material) {
132
- const materialToSearch = !!variation.materialId ? variation.materialId.toLowerCase() : 'default';
133
- if (Array.isArray(mesh.material)) { // multimaterial support
134
- for (let m = 0, mlen = mesh.material.length; m < mlen; m++) {
135
- if (mesh.material[m].name.toLowerCase().indexOf(materialToSearch) !== -1) {
136
- mesh.material[m] = this._setMeshMaterialFromVariation(mesh.material[m].name, variation, usePbr);
137
- }
138
- }
139
- }
140
- else {
141
- if (mesh.material.name.toLowerCase().indexOf(materialToSearch) !== -1) {
142
- mesh.material = this._setMeshMaterialFromVariation(mesh.material.name, variation, usePbr);
143
- }
144
- }
145
- }
146
- }
147
- }
148
- });
149
- }
150
- }
151
- }
152
- _setMeshMaterialFromVariation(name, variation, usePbr = false) {
153
- if (variation.material.texture) {
154
- variation.material.texture.needsUpdate = true;
155
- }
156
- if (!usePbr) {
157
- const material = new THREE.MeshPhongMaterial({
158
- name: name,
159
- shininess: variation.material.shininess,
160
- specular: variation.material.specular,
161
- map: variation.material.texture,
162
- normalMap: variation.material.normal
163
- });
164
- // material.color.setRGB(0.8, 0.8, 0.8);
165
- material.needsUpdate = true;
166
- return material;
167
- }
168
- else {
169
- const params = {
170
- // side: DoubleSide,
171
- name: name,
172
- roughness: variation.material.roughnessValue ? variation.material.roughnessValue : 1,
173
- metalness: variation.material.metalnessValue ? variation.material.metalnessValue : 0,
174
- };
175
- if (variation.material.texture) {
176
- params.map = variation.material.texture;
177
- }
178
- if (variation.material.ao) {
179
- params.aoMap = variation.material.ao;
180
- }
181
- if (variation.material.roughness) {
182
- params.roughnessMap = variation.material.roughness;
183
- }
184
- if (variation.material.metalness) {
185
- params.metalnessMap = variation.material.metalness;
186
- }
187
- if (variation.material.normal) {
188
- params.normalMap = variation.material.normal;
189
- }
190
- const material = new THREE.MeshStandardMaterial(params);
191
- material.color.setRGB(1, 1, 1);
192
- material.needsUpdate = true;
193
- return material;
194
- }
195
- }
196
- _setLastKnownVariations(instanceId, id, variation) {
197
- if (this._lastKnownVariations.has(instanceId)) {
198
- const variations = this._lastKnownVariations.get(instanceId);
199
- variations.set(id, variation);
200
- }
201
- else {
202
- const variations = new Map();
203
- this._lastKnownVariations.set(instanceId, variations.set(id, variation));
204
- }
205
- }
206
- _getLastKnownVariations(instanceId, id) {
207
- if (this._lastKnownVariations.has(instanceId)) {
208
- const variations = this._lastKnownVariations.get(instanceId);
209
- if (variations.has(id)) {
210
- return variations.get(id);
211
- }
212
- }
213
- return null;
214
- }
215
- }
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWF0aW9uLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb2xpam5pdC9jb25maWd1cmF0b3IvIiwic291cmNlcyI6WyJoZWxwZXIvdmFyaWF0aW9uLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBRXRGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDN0MsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRXhELE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBSVkseUJBQW9CLEdBQTBDLElBQUksR0FBRyxFQUFFLENBQUM7SUErTXBGLENBQUM7SUE3TVUsVUFBVTtRQUNiLE1BQU0sUUFBUSxHQUErQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzVGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3RDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDaEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUMxQixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7b0JBQzdCLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNyQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDcEMs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LEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM3RCxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ3BCLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUM3QjtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEZWNvTm9kZVR5cGV9IGZyb20gXCJAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL2VudW0vZGVjby1ub2RlLXR5cGUuZW51bVwiO1xyXG5pbXBvcnQge1ZhcmlhdGlvblNldHRpbmdzfSBmcm9tIFwiLi4vbW9kZWwvdmFyaWF0aW9uLXNldHRpbmdzXCI7XHJcbmltcG9ydCB7QXNzZXRVdGlsc30gZnJvbSBcIi4uL3V0aWxzL2Fzc2V0LnV0aWxzXCI7XHJcbmltcG9ydCB7RGVjb05vZGV9IGZyb20gXCJAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL2RlY28tbm9kZVwiO1xyXG5pbXBvcnQge1ZhcmlhdGlvbn0gZnJvbSBcIi4uL21vZGVsL3ZhcmlhdGlvblwiO1xyXG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tIFwidGhyZWVcIjtcclxuaW1wb3J0IHtWYXJpYXRpb25VdGlsc30gZnJvbSBcIi4uL3V0aWxzL3ZhcmlhdGlvbi11dGlsc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFZhcmlhdGlvbkhlbHBlciB7XHJcblxyXG4gICAgcHVibGljIGFzc2V0UGF0aDogc3RyaW5nO1xyXG5cclxuICAgIHByaXZhdGUgX2xhc3RLbm93blZhcmlhdGlvbnM6IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIFZhcmlhdGlvbltdPj4gPSBuZXcgTWFwKCk7XHJcblxyXG4gICAgcHVibGljIGNsZWFyQ2FjaGUoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVNYXA6IE1hcDxzdHJpbmcsIFZhcmlhdGlvbltdPltdID0gQXJyYXkuZnJvbSh0aGlzLl9sYXN0S25vd25WYXJpYXRpb25zLnZhbHVlcygpKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlTWFwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmZyb20odmFsdWVNYXBbaV0udmFsdWVzKCkpO1xyXG4gICAgICAgICAgICB2YWx1ZXMuZm9yRWFjaCgodmFyaWF0aW9ucykgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFyaWF0aW9ucy5mb3JFYWNoKCh2YXJpYXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB2YXJpYXRpb24ubWF0ZXJpYWwudGV4dHVyZS5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uLm1hdGVyaWFsLm5vcm1hbC5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uLm1hdGVyaWFsLm1ldGFsbmVzcy5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uLm1hdGVyaWFsLnJvdWdobmVzcy5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uLm1hdGVyaWFsLmFvLmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgbG9hZFBhcnQob2JqOiBUSFJFRS5PYmplY3QzRCwgcGFydHM6IGFueVtdLCB1c2VQYnI6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlbjogbnVtYmVyID0gcGFydHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocGFydHNbaV0uZGVjb05vZGUgJiYgcGFydHNbaV0uZGVjb05vZGUuZ2FtZU9iamVjdE5hbWUgJiYgcGFydHNbaV0uZGVjb05vZGUudHlwZSA9PT0gRGVjb05vZGVUeXBlLlBhcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJ0U2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZFZhcmlhdGlvbih0aGlzLmFzc2V0UGF0aCwgcGFydHNbaV0uZGVjb05vZGUuZ2FtZU9iamVjdE5hbWUgfHwgcGFydHNbaV0uZGVjb0lkKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocGFydFNldHRpbmdzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRWYXJpYXRpb246IFZhcmlhdGlvbiA9IG5ldyBWYXJpYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFydFZhcmlhdGlvbi5kZWNvSWQgPSBwYXJzZUZsb2F0KHBhcnRzW2ldLmRlY29Ob2RlLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFydFZhcmlhdGlvbi5icmFuZElkID0gcGFydHNbaV0uZGVjb05vZGUuYnJhbmRJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFydFZhcmlhdGlvbi5nYW1lT2JqZWN0TmFtZSA9IHBhcnRzW2ldLmRlY29Ob2RlLmdhbWVPYmplY3ROYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0VmFyaWF0aW9uLm1hdGVyaWFsID0gYXdhaXQgQXNzZXRVdGlscy5DcmVhdGVNYXRlcmlhbEZyb21Bc3NldChwYXJ0U2V0dGluZ3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXJ0c1tpXS52YXJpYXRpb24gPSBwYXJ0VmFyaWF0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcHBseU1hdGVyaWFsUGFydChvYmosIHBhcnRWYXJpYXRpb24sIHBhcnRzW2ldLm5vZGUsIHVzZVBicik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgbG9hZFZhcmlhdGlvbihpbnN0YW5jZUlkOiBzdHJpbmcsIG9iajogVEhSRUUuT2JqZWN0M0QsIHBhcnRzOiBhbnlbXSwgdXNlUGJyOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBsZW46IG51bWJlciA9IHBhcnRzLmxlbmd0aDtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFyaWF0aW9uczogRGVjb05vZGVbXSA9IHBhcnRzW2ldLnZhcmlhdGlvbnM7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXZhcmlhdGlvbnMgfHwgdmFyaWF0aW9ucy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZ2V0TGFzdEtub3duVmFyaWF0aW9ucyhpbnN0YW5jZUlkLCBwYXJ0c1tpXS5ub2RlSWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzW2ldLnZhcmlhdGlvbnMgPSB0aGlzLl9nZXRMYXN0S25vd25WYXJpYXRpb25zKGluc3RhbmNlSWQsIHBhcnRzW2ldLm5vZGVJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5VmFyaWF0aW9ucyhvYmosIHBhcnRzW2ldLCB1c2VQYnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0S25vd25WYXJpYXRpb25zOiBWYXJpYXRpb25bXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB2YXJpYXRpb25zLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFyaWF0aW9uU2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZFZhcmlhdGlvbih0aGlzLmFzc2V0UGF0aCwgdmFyaWF0aW9uc1tqXS5nYW1lT2JqZWN0TmFtZSB8fCBwYXJ0c1tpXS5kZWNvSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ZhcmlhdGlvbjogVmFyaWF0aW9uID0gbmV3IFZhcmlhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhcmlhdGlvbi5kZWNvSWQgPSBwYXJzZUZsb2F0KHZhcmlhdGlvbnNbal0uaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhcmlhdGlvbi5icmFuZElkID0gdmFyaWF0aW9uc1tqXS5icmFuZElkO1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhcmlhdGlvbi5nYW1lT2JqZWN0TmFtZSA9IHZhcmlhdGlvbnNbal0uZ2FtZU9iamVjdE5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFyaWF0aW9uLnN1cHBsaWVyQXJ0aWNsZU5yID0gKHZhcmlhdGlvbnNbal0gYXMgYW55KS5zdXBwbGllckFydGljbGVOcjtcclxuICAgICAgICAgICAgICAgICAgICBuZXdWYXJpYXRpb24ubWF0ZXJpYWxJZCA9ICh2YXJpYXRpb25zW2pdIGFzIGFueSkubWF0ZXJpYWxJZDtcclxuICAgICAgICAgICAgICAgICAgICBuZXdWYXJpYXRpb24ubWF0ZXJpYWwgPSBhd2FpdCBBc3NldFV0aWxzLkNyZWF0ZU1hdGVyaWFsRnJvbUFzc2V0KHZhcmlhdGlvblNldHRpbmdzKTtcclxuICAgICAgICAgICAgICAgICAgICBsYXN0S25vd25WYXJpYXRpb25zLnB1c2gobmV3VmFyaWF0aW9uKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuX3NldExhc3RLbm93blZhcmlhdGlvbnMoaW5zdGFuY2VJZCwgcGFydHNbaV0ubm9kZUlkLCBsYXN0S25vd25WYXJpYXRpb25zKTtcclxuICAgICAgICAgICAgICAgIHBhcnRzW2ldLnZhcmlhdGlvbnMgPSBsYXN0S25vd25WYXJpYXRpb25zO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlWYXJpYXRpb25zKG9iaiwgcGFydHNbaV0sIHVzZVBicik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2dldENoaWxkcmVuRmlsdGVyQnlQcm9wKG9iajogVEhSRUUuT2JqZWN0M0QsIHVzZXJEYXRhT2JqZWN0UHJvcDogc3RyaW5nLCBwcm9wOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBUSFJFRS5PYmplY3QzRFtdIHtcclxuICAgICAgICByZXR1cm4gb2JqLmNoaWxkcmVuLmZpbHRlcigoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGNoaWxkLnVzZXJEYXRhICYmXHJcbiAgICAgICAgICAgICAgICBjaGlsZC51c2VyRGF0YS5oYXNPd25Qcm9wZXJ0eSh1c2VyRGF0YU9iamVjdFByb3ApICYmXHJcbiAgICAgICAgICAgICAgICBjaGlsZC51c2VyRGF0YVt1c2VyRGF0YU9iamVjdFByb3BdLmhhc093blByb3BlcnR5KHByb3ApICYmXHJcbiAgICAgICAgICAgICAgICBjaGlsZC51c2VyRGF0YVt1c2VyRGF0YU9iamVjdFByb3BdW3Byb3BdID09PSB2YWx1ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9hcHBseU1hdGVyaWFsUGFydChvYmo6IFRIUkVFLk9iamVjdDNELCBwYXJ0TWF0ZXJpYWw6IGFueSwgbm9kZUlkOiBhbnksIHVzZVBicjogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLl9nZXRDaGlsZHJlbkZpbHRlckJ5UHJvcChvYmosICdzZWxlY3Rpb24nLCAnbm9kZScsIG5vZGVJZCk7XHJcbiAgICAgICAgY29uc3QgbGVuOiBudW1iZXIgPSBjaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIGlmIChjaGlsZCAhPT0gbnVsbCAmJiBjaGlsZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBjaGlsZC50cmF2ZXJzZSgobWVzaCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtZXNoIGluc3RhbmNlb2YgVEhSRUUuTWVzaCAmJiBwYXJ0TWF0ZXJpYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWVzaC5tYXRlcmlhbCkpIHsgLy8gbXVsdGltYXRlcmlhbCBzdXBwb3J0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMCwgamxlbjogbnVtYmVyID0gbWVzaC5tYXRlcmlhbC5sZW5ndGg7IGogPCBqbGVuOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVzaC5tYXRlcmlhbFtqXS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZml4ZWRfZnJhbWUnKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzaC5tYXRlcmlhbFtqXSA9IHRoaXMuX3NldE1lc2hNYXRlcmlhbEZyb21WYXJpYXRpb24obWVzaC5tYXRlcmlhbFtqXS5uYW1lLCBwYXJ0TWF0ZXJpYWwsIHVzZVBicik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lc2gubWF0ZXJpYWwubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2ZpeGVkX2ZyYW1lJykgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzaC5tYXRlcmlhbCA9IHRoaXMuX3NldE1lc2hNYXRlcmlhbEZyb21WYXJpYXRpb24obWVzaC5tYXRlcmlhbC5uYW1lLCBwYXJ0TWF0ZXJpYWwsIHVzZVBicik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9hcHBseVZhcmlhdGlvbnMob2JqOiBUSFJFRS5PYmplY3QzRCwgcGFydDogYW55LCB1c2VQYnI6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5fZ2V0Q2hpbGRyZW5GaWx0ZXJCeVByb3Aob2JqLCAnc2VsZWN0aW9uJywgJ25vZGUnLCBwYXJ0Lm5vZGUpO1xyXG4gICAgICAgIGNvbnN0IGxlbjogbnVtYmVyID0gY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQgIT09IG51bGwgJiYgY2hpbGQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgY2hpbGQudHJhdmVyc2UoKG1lc2gpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWVzaCBpbnN0YW5jZW9mIFRIUkVFLk1lc2ggJiYgcGFydC52YXJpYXRpb25zICYmIHBhcnQudmFyaWF0aW9ucy5sZW5ndGggPiAwICYmIG1lc2gubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2NfJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwYXJ0LnZhcmlhdGlvbnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhcmlhdGlvbjogVmFyaWF0aW9uID0gcGFydC52YXJpYXRpb25zW2pdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsVG9TZWFyY2g6IHN0cmluZyA9ICEhdmFyaWF0aW9uLm1hdGVyaWFsSWQgPyB2YXJpYXRpb24ubWF0ZXJpYWxJZC50b0xvd2VyQ2FzZSgpIDogJ2RlZmF1bHQnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1lc2gubWF0ZXJpYWwpKSB7IC8vIG11bHRpbWF0ZXJpYWwgc3VwcG9ydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBtID0gMCwgbWxlbjogbnVtYmVyID0gbWVzaC5tYXRlcmlhbC5sZW5ndGg7IG0gPCBtbGVuOyBtKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXNoLm1hdGVyaWFsW21dLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKG1hdGVyaWFsVG9TZWFyY2gpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc2gubWF0ZXJpYWxbbV0gPSB0aGlzLl9zZXRNZXNoTWF0ZXJpYWxGcm9tVmFyaWF0aW9uKG1lc2gubWF0ZXJpYWxbbV0ubmFtZSwgdmFyaWF0aW9uLCB1c2VQYnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lc2gubWF0ZXJpYWwubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YobWF0ZXJpYWxUb1NlYXJjaCkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNoLm1hdGVyaWFsID0gdGhpcy5fc2V0TWVzaE1hdGVyaWFsRnJvbVZhcmlhdGlvbihtZXNoLm1hdGVyaWFsLm5hbWUsIHZhcmlhdGlvbiwgdXNlUGJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3NldE1lc2hNYXRlcmlhbEZyb21WYXJpYXRpb24obmFtZTogc3RyaW5nLCB2YXJpYXRpb246IFZhcmlhdGlvbiwgdXNlUGJyOiBib29sZWFuID0gZmFsc2UpOiBUSFJFRS5NYXRlcmlhbCB7XHJcbiAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC50ZXh0dXJlKSB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvbi5tYXRlcmlhbC50ZXh0dXJlLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF1c2VQYnIpIHtcclxuICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWw6IFRIUkVFLk1lc2hQaG9uZ01hdGVyaWFsID0gbmV3IFRIUkVFLk1lc2hQaG9uZ01hdGVyaWFsKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXHJcbiAgICAgICAgICAgICAgICBzaGluaW5lc3M6IHZhcmlhdGlvbi5tYXRlcmlhbC5zaGluaW5lc3MsXHJcbiAgICAgICAgICAgICAgICBzcGVjdWxhcjogdmFyaWF0aW9uLm1hdGVyaWFsLnNwZWN1bGFyLFxyXG4gICAgICAgICAgICAgICAgbWFwOiB2YXJpYXRpb24ubWF0ZXJpYWwudGV4dHVyZSxcclxuICAgICAgICAgICAgICAgIG5vcm1hbE1hcDogdmFyaWF0aW9uLm1hdGVyaWFsLm5vcm1hbFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8gbWF0ZXJpYWwuY29sb3Iuc2V0UkdCKDAuOCwgMC44LCAwLjgpO1xyXG4gICAgICAgICAgICBtYXRlcmlhbC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXRlcmlhbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbXM6IFRIUkVFLk1lc2hTdGFuZGFyZE1hdGVyaWFsUGFyYW1ldGVycyA9IHtcclxuICAgICAgICAgICAgICAgIC8vIHNpZGU6IERvdWJsZVNpZGUsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgICAgICAgICAgcm91Z2huZXNzOiB2YXJpYXRpb24ubWF0ZXJpYWwucm91Z2huZXNzVmFsdWUgPyB2YXJpYXRpb24ubWF0ZXJpYWwucm91Z2huZXNzVmFsdWUgOiAxLFxyXG4gICAgICAgICAgICAgICAgbWV0YWxuZXNzOiB2YXJpYXRpb24ubWF0ZXJpYWwubWV0YWxuZXNzVmFsdWUgPyB2YXJpYXRpb24ubWF0ZXJpYWwubWV0YWxuZXNzVmFsdWUgOiAwLFxyXG4gICAgICAgICAgICAgICAgLy8gd2lyZWZyYW1lOiB0cnVlXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwudGV4dHVyZSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLm1hcCA9IHZhcmlhdGlvbi5tYXRlcmlhbC50ZXh0dXJlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwuYW8pIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5hb01hcCA9IHZhcmlhdGlvbi5tYXRlcmlhbC5hbztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodmFyaWF0aW9uLm1hdGVyaWFsLnJvdWdobmVzcykge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLnJvdWdobmVzc01hcCA9IHZhcmlhdGlvbi5tYXRlcmlhbC5yb3VnaG5lc3M7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi5tYXRlcmlhbC5tZXRhbG5lc3MpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5tZXRhbG5lc3NNYXAgPSB2YXJpYXRpb24ubWF0ZXJpYWwubWV0YWxuZXNzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2YXJpYXRpb24ubWF0ZXJpYWwubm9ybWFsKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMubm9ybWFsTWFwID0gdmFyaWF0aW9uLm1hdGVyaWFsLm5vcm1hbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBtYXRlcmlhbDogVEhSRUUuTWVzaFN0YW5kYXJkTWF0ZXJpYWwgPSBuZXcgVEhSRUUuTWVzaFN0YW5kYXJkTWF0ZXJpYWwocGFyYW1zKTtcclxuICAgICAgICAgICAgbWF0ZXJpYWwuY29sb3Iuc2V0UkdCKDEsIDEsIDEpO1xyXG4gICAgICAgICAgICBtYXRlcmlhbC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXRlcmlhbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2V0TGFzdEtub3duVmFyaWF0aW9ucyhpbnN0YW5jZUlkOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHZhcmlhdGlvbjogVmFyaWF0aW9uW10pOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fbGFzdEtub3duVmFyaWF0aW9ucy5oYXMoaW5zdGFuY2VJZCkpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFyaWF0aW9ucyA9IHRoaXMuX2xhc3RLbm93blZhcmlhdGlvbnMuZ2V0KGluc3RhbmNlSWQpO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25zLnNldChpZCwgdmFyaWF0aW9uKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCB2YXJpYXRpb25zOiBNYXA8c3RyaW5nLCBWYXJpYXRpb25bXT4gPSBuZXcgTWFwKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2xhc3RLbm93blZhcmlhdGlvbnMuc2V0KGluc3RhbmNlSWQsIHZhcmlhdGlvbnMuc2V0KGlkLCB2YXJpYXRpb24pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfZ2V0TGFzdEtub3duVmFyaWF0aW9ucyhpbnN0YW5jZUlkOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBWYXJpYXRpb25bXSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2xhc3RLbm93blZhcmlhdGlvbnMuaGFzKGluc3RhbmNlSWQpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhdGlvbnMgPSB0aGlzLl9sYXN0S25vd25WYXJpYXRpb25zLmdldChpbnN0YW5jZUlkKTtcclxuICAgICAgICAgICAgaWYgKHZhcmlhdGlvbnMuaGFzKGlkKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhcmlhdGlvbnMuZ2V0KGlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbn1cclxuIl19
@@ -1,11 +0,0 @@
1
- import * as THREE from 'three';
2
- export class Material {
3
- constructor() {
4
- this.specular = new THREE.Color(0.3, 0.3, 0.3);
5
- this.shininess = 0;
6
- this.repeatX = 4;
7
- this.repeatY = 4;
8
- this.loaded = false;
9
- }
10
- }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29saWpuaXQvY29uZmlndXJhdG9yLyIsInNvdXJjZXMiOlsibW9kZWwvbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsTUFBTSxPQUFPLFFBQVE7SUFBckI7UUFJUyxhQUFRLEdBQWdCLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELGNBQVMsR0FBRyxDQUFDLENBQUM7UUFRZCxZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ1osWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNaLFdBQU0sR0FBRyxLQUFLLENBQUM7SUFJeEIsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWwge1xuXG4gIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBzY2hlbWE6IHN0cmluZztcbiAgcHVibGljIHNwZWN1bGFyOiBUSFJFRS5Db2xvciA9IG5ldyBUSFJFRS5Db2xvcigwLjMsIDAuMywgMC4zKTtcbiAgcHVibGljIHNoaW5pbmVzcyA9IDA7XG4gIC8vIHB1YmxpYyByb3VnaG5lc3MgPSAxO1xuICAvLyBwdWJsaWMgbWV0YWxuZXNzID0gMC41O1xuICBwdWJsaWMgbm9ybWFsOiBUSFJFRS5UZXh0dXJlO1xuICBwdWJsaWMgdGV4dHVyZTogVEhSRUUuVGV4dHVyZTtcbiAgcHVibGljIGFvOiBUSFJFRS5UZXh0dXJlO1xuICBwdWJsaWMgbWV0YWxuZXNzOiBUSFJFRS5UZXh0dXJlO1xuICBwdWJsaWMgcm91Z2huZXNzOiBUSFJFRS5UZXh0dXJlO1xuICBwdWJsaWMgcmVwZWF0WCA9IDQ7XG4gIHB1YmxpYyByZXBlYXRZID0gNDtcbiAgcHVibGljIGxvYWRlZCA9IGZhbHNlO1xuICBwdWJsaWMgbWV0YWxuZXNzVmFsdWU6IG51bWJlcjtcbiAgcHVibGljIHJvdWdobmVzc1ZhbHVlOiBudW1iZXI7XG5cbn1cbiJdfQ==
@@ -1,6 +0,0 @@
1
- export class VariationSettings {
2
- constructor() {
3
- this.settings = {};
4
- }
5
- }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWF0aW9uLXNldHRpbmdzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvbGlqbml0L2NvbmZpZ3VyYXRvci8iLCJzb3VyY2VzIjpbIm1vZGVsL3ZhcmlhdGlvbi1zZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8saUJBQWlCO0lBQTlCO1FBRVMsYUFBUSxHQUFRLEVBQUUsQ0FBQztJQVc1QixDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVmFyaWF0aW9uU2V0dGluZ3Mge1xuICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgcHVibGljIHNldHRpbmdzOiBhbnkgPSB7fTtcbiAgcHVibGljIHRleHR1cmU6IHN0cmluZztcbiAgcHVibGljIHRleHR1cmVGaWxlbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgbm9ybWFsOiBzdHJpbmc7XG4gIHB1YmxpYyBub3JtYWxGaWxlbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgYW86IHN0cmluZztcbiAgcHVibGljIGFvRmlsZW5hbWU6IHN0cmluZztcbiAgcHVibGljIG1ldGFsbmVzczogc3RyaW5nO1xuICBwdWJsaWMgbWV0YWxuZXNzRmlsZW5hbWU6IHN0cmluZztcbiAgcHVibGljIHJvdWdobmVzczogc3RyaW5nO1xuICBwdWJsaWMgcm91Z2huZXNzRmlsZW5hbWU6IHN0cmluZztcbn1cbiJdfQ==
@@ -1,3 +0,0 @@
1
- export class Variation {
2
- }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWF0aW9uLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvbGlqbml0L2NvbmZpZ3VyYXRvci8iLCJzb3VyY2VzIjpbIm1vZGVsL3ZhcmlhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sU0FBUztDQVFyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWF0ZXJpYWx9IGZyb20gJy4vbWF0ZXJpYWwnO1xuXG5leHBvcnQgY2xhc3MgVmFyaWF0aW9uIHtcbiAgcHVibGljIGRlY29JZDogbnVtYmVyO1xuICBwdWJsaWMgYnJhbmRJZDogc3RyaW5nO1xuICBwdWJsaWMgZ2FtZU9iamVjdE5hbWU6IHN0cmluZztcbiAgcHVibGljIG5vZGU6IGFueTtcbiAgcHVibGljIHN1cHBsaWVyQXJ0aWNsZU5yOiBzdHJpbmc7XG4gIHB1YmxpYyBtYXRlcmlhbElkOiBzdHJpbmc7XG4gIHB1YmxpYyBtYXRlcmlhbDogTWF0ZXJpYWw7XG59XG4iXX0=
@@ -1,7 +0,0 @@
1
- export * from './app/builder';
2
- export * from './app/services/configurator.service';
3
- export * from './app/components/answers/answers.module';
4
- export * from './app/components/answers/answers.component';
5
- export * from './app/components/selections/selections.module';
6
- export * from './app/components/selections/selections.component';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb2xpam5pdC9jb25maWd1cmF0b3IvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxrREFBa0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBwL2J1aWxkZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2FwcC9zZXJ2aWNlcy9jb25maWd1cmF0b3Iuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXBwL2NvbXBvbmVudHMvYW5zd2Vycy9hbnN3ZXJzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXBwL2NvbXBvbmVudHMvYW5zd2Vycy9hbnN3ZXJzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXBwL2NvbXBvbmVudHMvc2VsZWN0aW9ucy9zZWxlY3Rpb25zLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXBwL2NvbXBvbmVudHMvc2VsZWN0aW9ucy9zZWxlY3Rpb25zLmNvbXBvbmVudCc7XHJcbiJdfQ==
@@ -1,74 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Material } from '../model/material';
3
- import { ImageUtils } from './image.utils';
4
- import * as THREE from 'three';
5
- import { sRGBEncoding } from 'three';
6
- export class FurnitureMaterial extends Material {
7
- }
8
- export class AssetUtils {
9
- static CreateMaterialFromAsset(asset) {
10
- return __awaiter(this, void 0, void 0, function* () {
11
- const material = new Material();
12
- if (!asset) {
13
- return material;
14
- }
15
- if (asset.settings) {
16
- AssetUtils.setSettingsOfMaterial(material, asset.settings);
17
- }
18
- if (asset.texture) {
19
- material.texture = yield ImageUtils.CreateTextureFromBase64(asset.id + '_texture', asset.texture, material);
20
- material.texture.encoding = sRGBEncoding;
21
- material.textureFilename = asset.textureFilename;
22
- }
23
- if (asset.normal) {
24
- material.normal = yield ImageUtils.CreateTextureFromBase64(asset.id + '_normal', asset.normal, material);
25
- material.normalFilename = asset.normalFilename;
26
- // material.normal.anisotropy = 1;
27
- // material.normal.repeat.set(1, 1);
28
- // material.normal.flipY = false;
29
- }
30
- if (asset.ao) {
31
- material.ao = yield ImageUtils.CreateTextureFromBase64(asset.id + '_ao', asset.ao, material);
32
- material.aoFilename = asset.aoFilename;
33
- }
34
- if (asset.metalness) {
35
- material.metalness = yield ImageUtils.CreateTextureFromBase64(asset.id + '_metalness', asset.metalness, material);
36
- material.metalnessFilename = asset.metalnessFilename;
37
- }
38
- if (asset.roughness) {
39
- material.roughness = yield ImageUtils.CreateTextureFromBase64(asset.id + '_roughness', asset.roughness, material);
40
- material.roughnessFilename = asset.roughnessFilename;
41
- }
42
- return material;
43
- });
44
- }
45
- static setSettingsOfMaterial(material, settings) {
46
- const shininess = parseFloat(settings['power']);
47
- if (!isNaN(shininess)) {
48
- material.shininess = shininess;
49
- // material.roughness = 1 - (shininess / 100);
50
- }
51
- const level = parseFloat(settings['level']);
52
- if (!isNaN(level)) {
53
- material.specular = new THREE.Color(level, level, level);
54
- }
55
- const repeatObjectUsed = settings.hasOwnProperty('repeat');
56
- const repeatx = repeatObjectUsed ? parseFloat(settings['repeat']['repeatx']) : parseFloat(settings['repeatx']);
57
- if (!isNaN(repeatx)) {
58
- material.repeatX = Math.max(1, repeatx);
59
- }
60
- const repeaty = repeatObjectUsed ? parseFloat(settings['repeat']['repeaty']) : parseFloat(settings['repeaty']);
61
- if (!isNaN(repeaty)) {
62
- material.repeatY = Math.max(1, repeaty);
63
- }
64
- const metalness = parseFloat(settings['metalness']);
65
- if (!isNaN(metalness)) {
66
- material.metalnessValue = Math.min(1, metalness);
67
- }
68
- const roughness = parseFloat(settings['roughness']);
69
- if (!isNaN(roughness)) {
70
- material.roughnessValue = Math.min(1, roughness);
71
- }
72
- }
73
- }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQudXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29saWpuaXQvY29uZmlndXJhdG9yLyIsInNvdXJjZXMiOlsidXRpbHMvYXNzZXQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFHbkMsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFFBQVE7Q0FROUM7QUFFRCxNQUFNLE9BQU8sVUFBVTtJQUVkLE1BQU0sQ0FBTyx1QkFBdUIsQ0FBQyxLQUF3Qjs7WUFDbEUsTUFBTSxRQUFRLEdBQXNCLElBQUksUUFBUSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDVixPQUFPLFFBQVEsQ0FBQzthQUNqQjtZQUNELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtnQkFDbEIsVUFBVSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDNUQ7WUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7Z0JBQ2pCLFFBQVEsQ0FBQyxPQUFPLEdBQUcsTUFBTSxVQUFVLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDNUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO2dCQUV6QyxRQUFRLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUM7YUFDbEQ7WUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQ2hCLFFBQVEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxV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Q0FBQztTQUN6QztRQUVELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3JCLFFBQVEsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDbEQ7UUFFRCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNyQixRQUFRLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNYXRlcmlhbH0gZnJvbSAnLi4vbW9kZWwvbWF0ZXJpYWwnO1xuaW1wb3J0IHtJbWFnZVV0aWxzfSBmcm9tICcuL2ltYWdlLnV0aWxzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7c1JHQkVuY29kaW5nfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQge1ZhcmlhdGlvblNldHRpbmdzfSBmcm9tICcuLi9tb2RlbC92YXJpYXRpb24tc2V0dGluZ3MnO1xuXG5leHBvcnQgY2xhc3MgRnVybml0dXJlTWF0ZXJpYWwgZXh0ZW5kcyBNYXRlcmlhbCB7XG5cbiAgcHVibGljIHRleHR1cmVGaWxlbmFtZT86IHN0cmluZztcbiAgcHVibGljIG5vcm1hbEZpbGVuYW1lPzogc3RyaW5nO1xuICBwdWJsaWMgYW9GaWxlbmFtZT86IHN0cmluZztcbiAgcHVibGljIG1ldGFsbmVzc0ZpbGVuYW1lPzogc3RyaW5nO1xuICBwdWJsaWMgcm91Z2huZXNzRmlsZW5hbWU/OiBzdHJpbmc7XG5cbn1cblxuZXhwb3J0IGNsYXNzIEFzc2V0VXRpbHMge1xuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgQ3JlYXRlTWF0ZXJpYWxGcm9tQXNzZXQoYXNzZXQ6IFZhcmlhdGlvblNldHRpbmdzKTogUHJvbWlzZTxNYXRlcmlhbD4ge1xuICAgIGNvbnN0IG1hdGVyaWFsOiBGdXJuaXR1cmVNYXRlcmlhbCA9IG5ldyBNYXRlcmlhbCgpO1xuICAgIGlmICghYXNzZXQpIHtcbiAgICAgIHJldHVybiBtYXRlcmlhbDtcbiAgICB9XG4gICAgaWYgKGFzc2V0LnNldHRpbmdzKSB7XG4gICAgICBBc3NldFV0aWxzLnNldFNldHRpbmdzT2ZNYXRlcmlhbChtYXRlcmlhbCwgYXNzZXQuc2V0dGluZ3MpO1xuICAgIH1cbiAgICBpZiAoYXNzZXQudGV4dHVyZSkge1xuICAgICAgbWF0ZXJpYWwudGV4dHVyZSA9IGF3YWl0IEltYWdlVXRpbHMuQ3JlYXRlVGV4dHVyZUZyb21CYXNlNjQoYXNzZXQuaWQgKyAnX3RleHR1cmUnLCBhc3NldC50ZXh0dXJlLCBtYXRlcmlhbCk7XG4gICAgICBtYXRlcmlhbC50ZXh0dXJlLmVuY29kaW5nID0gc1JHQkVuY29kaW5nO1xuXG4gICAgICBtYXRlcmlhbC50ZXh0dXJlRmlsZW5hbWUgPSBhc3NldC50ZXh0dXJlRmlsZW5hbWU7XG4gICAgfVxuICAgIGlmIChhc3NldC5ub3JtYWwpIHtcbiAgICAgIG1hdGVyaWFsLm5vcm1hbCA9IGF3YWl0IEltYWdlVXRpbHMuQ3JlYXRlVGV4dHVyZUZyb21CYXNlNjQoYXNzZXQuaWQgKyAnX25vcm1hbCcsIGFzc2V0Lm5vcm1hbCwgbWF0ZXJpYWwpO1xuICAgICAgbWF0ZXJpYWwubm9ybWFsRmlsZW5hbWUgPSBhc3NldC5ub3JtYWxGaWxlbmFtZTtcbiAgICAgIC8vIG1hdGVyaWFsLm5vcm1hbC5hbmlzb3Ryb3B5ID0gMTtcbiAgICAgIC8vIG1hdGVyaWFsLm5vcm1hbC5yZXBlYXQuc2V0KDEsIDEpO1xuICAgICAgLy8gbWF0ZXJpYWwubm9ybWFsLmZsaXBZID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChhc3NldC5hbykge1xuICAgICAgbWF0ZXJpYWwuYW8gPSBhd2FpdCBJbWFnZVV0aWxzLkNyZWF0ZVRleHR1cmVGcm9tQmFzZTY0KGFzc2V0LmlkICsgJ19hbycsIGFzc2V0LmFvLCBtYXRlcmlhbCk7XG4gICAgICBtYXRlcmlhbC5hb0ZpbGVuYW1lID0gYXNzZXQuYW9GaWxlbmFtZTtcbiAgICB9XG4gICAgaWYgKGFzc2V0Lm1ldGFsbmVzcykge1xuICAgICAgbWF0ZXJpYWwubWV0YWxuZXNzID0gYXdhaXQgSW1hZ2VVdGlscy5DcmVhdGVUZXh0dXJlRnJvbUJhc2U2NChhc3NldC5pZCArICdfbWV0YWxuZXNzJywgYXNzZXQubWV0YWxuZXNzLCBtYXRlcmlhbCk7XG4gICAgICBtYXRlcmlhbC5tZXRhbG5lc3NGaWxlbmFtZSA9IGFzc2V0Lm1ldGFsbmVzc0ZpbGVuYW1lO1xuICAgIH1cbiAgICBpZiAoYXNzZXQucm91Z2huZXNzKSB7XG4gICAgICBtYXRlcmlhbC5yb3VnaG5lc3MgPSBhd2FpdCBJbWFnZVV0aWxzLkNyZWF0ZVRleHR1cmVGcm9tQmFzZTY0KGFzc2V0LmlkICsgJ19yb3VnaG5lc3MnLCBhc3NldC5yb3VnaG5lc3MsIG1hdGVyaWFsKTtcbiAgICAgIG1hdGVyaWFsLnJvdWdobmVzc0ZpbGVuYW1lID0gYXNzZXQucm91Z2huZXNzRmlsZW5hbWU7XG4gICAgfVxuICAgIHJldHVybiBtYXRlcmlhbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0U2V0dGluZ3NPZk1hdGVyaWFsKG1hdGVyaWFsOiBNYXRlcmlhbCwgc2V0dGluZ3M6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHNoaW5pbmVzcyA9IHBhcnNlRmxvYXQoc2V0dGluZ3NbJ3Bvd2VyJ10pO1xuICAgIGlmICghaXNOYU4oc2hpbmluZXNzKSkge1xuICAgICAgbWF0ZXJpYWwuc2hpbmluZXNzID0gc2hpbmluZXNzO1xuICAgICAgLy8gbWF0ZXJpYWwucm91Z2huZXNzID0gMSAtIChzaGluaW5lc3MgLyAxMDApO1xuICAgIH1cblxuICAgIGNvbnN0IGxldmVsID0gcGFyc2VGbG9hdChzZXR0aW5nc1snbGV2ZWwnXSk7XG4gICAgaWYgKCFpc05hTihsZXZlbCkpIHtcbiAgICAgIG1hdGVyaWFsLnNwZWN1bGFyID0gbmV3IFRIUkVFLkNvbG9yKGxldmVsLCBsZXZlbCwgbGV2ZWwpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcGVhdE9iamVjdFVzZWQ6IGJvb2xlYW4gPSBzZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eSgncmVwZWF0Jyk7XG4gICAgY29uc3QgcmVwZWF0eCA9IHJlcGVhdE9iamVjdFVzZWQgPyBwYXJzZUZsb2F0KHNldHRpbmdzWydyZXBlYXQnXVsncmVwZWF0eCddKSA6IHBhcnNlRmxvYXQoc2V0dGluZ3NbJ3JlcGVhdHgnXSk7XG4gICAgaWYgKCFpc05hTihyZXBlYXR4KSkge1xuICAgICAgbWF0ZXJpYWwucmVwZWF0WCA9IE1hdGgubWF4KDEsIHJlcGVhdHgpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcGVhdHkgPSByZXBlYXRPYmplY3RVc2VkID8gcGFyc2VGbG9hdChzZXR0aW5nc1sncmVwZWF0J11bJ3JlcGVhdHknXSkgOiBwYXJzZUZsb2F0KHNldHRpbmdzWydyZXBlYXR5J10pO1xuICAgIGlmICghaXNOYU4ocmVwZWF0eSkpIHtcbiAgICAgIG1hdGVyaWFsLnJlcGVhdFkgPSBNYXRoLm1heCgxLCByZXBlYXR5KTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRhbG5lc3MgPSBwYXJzZUZsb2F0KHNldHRpbmdzWydtZXRhbG5lc3MnXSk7XG4gICAgaWYgKCFpc05hTihtZXRhbG5lc3MpKSB7XG4gICAgICBtYXRlcmlhbC5tZXRhbG5lc3NWYWx1ZSA9IE1hdGgubWluKDEsIG1ldGFsbmVzcyk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm91Z2huZXNzID0gcGFyc2VGbG9hdChzZXR0aW5nc1sncm91Z2huZXNzJ10pO1xuICAgIGlmICghaXNOYU4ocm91Z2huZXNzKSkge1xuICAgICAgbWF0ZXJpYWwucm91Z2huZXNzVmFsdWUgPSBNYXRoLm1pbigxLCByb3VnaG5lc3MpO1xuICAgIH1cbiAgfVxufVxuIl19