@colijnit/product 256.1.4 → 256.1.5

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.
@@ -21,6 +21,7 @@ export class ProductExternalSourceComponent {
21
21
  this.externalSettings = {};
22
22
  this.token = ""; //= "eyJhbGciOiJSUzI1NiIsImtpZCI6IkYxOThERkVEOEUwQTQ1MzY3M0M1MUE2Rjk1QUVDQzU3RTM0NjM4RkRSUzI1NiIsInR5cCI6ImF0K2p3dCIsIng1dCI6IjhaamY3WTRLUlRaenhScHZsYTdNVi1OR09QMCJ9.eyJuYmYiOjE3MzIxOTkyOTUsImV4cCI6MTczMjIwMjg5NSwiaXNzIjoiaHR0cHM6Ly9ibXNpZGVudGl0eS1hY2NlcHRhbmNlLmF6dXJld2Vic2l0ZXMubmV0IiwiYXVkIjpbImNhdGFsb2dxdWVyeWFwaSIsImNvbmZpZ3VyYXRvcmFwaSIsInByb2R1Y3R2YXJpYW50Y29tbWFuZGFwaSIsInByb2R1Y3R2YXJpYW50cXVlcnlhcGkiXSwiY2xpZW50X2lkIjoiaW1wZXJzb25hdGlvbi5jbGllbnQiLCJzdWIiOiIwOTMwZDI4Mi05NGU4LTQ5MGEtOGI2NC1mYTk1YmIyYzE1ODIiLCJhdXRoX3RpbWUiOjE3MzIxOTkyOTUsImlkcCI6ImxvY2FsIiwiZW52aXJvbm1lbnQiOiJNU0wiLCJzZWxsZXIiOiJTRTAwMDA5NiIsInNlbGxlcmd1aWQiOiIxMDk1MWJjNS1hZmMzLTQ1MGEtNmVkMS0wOGQ4NDNlNmE5OTQiLCJwZXJtaXNzaW9uIjpbInNhbGVzLmV4cG9ydHRlbXBsYXRlcy5yZWFkIiwiZG9jdW1lbnRsaWJyYXJ5LnRhZy5yZWFkIiwiZG9jdW1lbnRsaWJyYXJ5LmRvY3VtZW50LnJlYWQiLCJkb2N1bWVudGxpYnJhcnkudGFnZ3JvdXAucmVhZCIsInNhbGVzLm9yZGVyLndyaXRlIiwic2FsZXMuY3VzdG9tZXIucmVhZCIsInNhbGVzLm9yZGVyLmRlbGl2ZXJ5YWRkcmVzcy53cml0ZSIsInNlcnZpY2UucmVxdWVzdC5yZWFkIiwiY2F0YWxvZy50YWcucmVhZCIsInNhbGVzLm9yZGVyLnJlYWQiLCJzYWxlcy5jdXN0b21lci53cml0ZSIsInJlcXVlc3Rmb3JxdW90ZS53cml0ZSIsInNhbGVzLm9yZGVyLmJvb2siLCJyZXF1ZXN0Zm9ycXVvdGUucmVhZCIsInNhbGVzLmxlYWQucmVhZCIsInB1cmNoYXNlLm9yZGVyLnJlYWQiLCJzYWxlcy5xdW90ZS5yZWFkIiwic2FsZXMucXVvdGUud3JpdGUiLCJjYXRhbG9nLml0ZW0ucmVhZCIsInNhbGVzLmxlYWQud3JpdGUiLCJzZXJ2aWNlLnJlcXVlc3Quc3VibWl0Iiwic2FsZXMub3JkZXIuZGVsaXZlcnlhZGRyZXNzLnJlYWQiLCJwdXJjaGFzZS5vcmRlci53cml0ZSIsInB1cmNoYXNlLm9yZGVyLnByaWNlcy53cml0ZSIsInB1cmNoYXNlLm9yZGVyLnByaWNlcy5yZWFkIiwic2VydmljZS5yZXF1ZXN0LndyaXRlIiwiY2F0YWxvZy5jYXRhbG9nLnJlYWQiLCJjYXRhbG9nLmNhdGFsb2cud3JpdGUiLCJjYXRhbG9nLmN1cnJlbmN5LnJlYWQiLCJjYXRhbG9nLmN1cnJlbmN5LndyaXRlIiwiY2F0YWxvZy5pdGVtLndyaXRlIiwiY2F0YWxvZy5sb2NhbGl6YXRpb24ucmVhZCIsImNhdGFsb2cubG9jYWxpemF0aW9uLndyaXRlIiwiY2F0YWxvZy5wcm9kdWN0LnJlYWQiLCJjYXRhbG9nLnByb2R1Y3Qud3JpdGUiLCJjYXRhbG9nLnByb2R1Y3RzZXR0aW5nLnJlYWQiLCJjYXRhbG9nLnByb2R1Y3RzZXR0aW5nLndyaXRlIiwiY2F0YWxvZy5zZWxsZXIucmVhZCIsImNhdGFsb2cuc2VsbGVyLndyaXRlIiwiY2F0YWxvZy50YWcud3JpdGUiLCJjYXRhbG9nLnVvbS5yZWFkIiwiY2F0YWxvZy51b20ud3JpdGUiLCJjYXRhbG9nLnZhdGNhdGVnb3J5LnJlYWQiLCJjYXRhbG9nLnZhdGNhdGVnb3J5LndyaXRlIiwiY2F0YWxvZy52ZW5kb3IucmVhZCIsImNhdGFsb2cudmVuZG9yLndyaXRlIiwicHVyY2hhc2Uuc2VsbGVyLnJlYWQiLCJwdXJjaGFzZS5zZWxsZXIud3JpdGUiLCJjYXRhbG9nLmFydGljbGUucmVhZCIsImNhdGFsb2cuYXJ0aWNsZS53cml0ZSIsInNhbGVzLnF1b3RlLmxpbmVzLnJlYWQiLCJzYWxlcy5xdW90ZS5saW5lcy53cml0ZSIsInNhbGVzLnNlbGxlci5yZWFkIiwic2FsZXMuc2VsbGVyLndyaXRlIiwiYWNjb3VudGluZy52ZW5kb3JpbnZvaWNlLnJlYWQiLCJpZGVudGl0eS51c2VyLnJlYWQiLCJpZGVudGl0eS51c2VyLndyaXRlIiwiaWRlbnRpdHkucm9sZS5yZWFkIiwic2VsbGVyLnByb2R1Y3RwcmljZS5zZXR0aW5ncy5yZWFkIiwic2VsbGVyLnByb2R1Y3RwcmljZS5zZXR0aW5ncy53cml0ZSIsImNvbmZpZ3VyYXRvci5wdXJjaGFzZXByaWNlLnJlYWQiLCJzdG9jay5mYWJyaWMucmVhZCJdLCJuYW1lIjoiUm9iaW4iLCJmYW1pbHlfbmFtZSI6ImRlIFdpbnRlciAoQ29saWpuLUlUKSIsInJvbGUiOlsic2VsbGVyIiwiZGVhbGVyX21hbmFnZXIiXSwiaWF0IjoxNzMyMTk5Mjk1LCJzY29wZSI6WyJjYXRhbG9ncXVlcnlhcGkiLCJjb25maWd1cmF0b3JhcGkiLCJwcm9kdWN0dmFyaWFudGNvbW1hbmRhcGkiLCJwcm9kdWN0dmFyaWFudHF1ZXJ5YXBpIl0sImFtciI6WyJpbXBlcnNvbmF0aW9uIl19.rbguVPnkXXDzsM6QKgXulhrF41jIjCuGDV13ig1GC8MewLCJ7wA038OSwT26sx2mCexjvuGYt45YScfPwfTkDy3ErPmHRods64X1dJWZnf-23NTP2iI32K_1vMZH5GOGbMzuFtbKAFQv4hgFAxoyWqFVWyJvuOtQcWyZStROyPHwjAnpnj-x1cVQpOhbO-kQUFvy_VUrPpF3aYVCcO2cFirQTXR6kxSGcYGGcsPY-_eiAd93UdG2EM6xLAocDLaFV72CQI6XEs0WQG1f4SqvH52v3OTkgWBLgYV35gpyIe0-2nazGL0R8pTNuDqrOb7OGmuTRMoTIiRi67-wTxx8cQ";
23
23
  this.variant = "";
24
+ this.urlParams = [];
24
25
  this._subs = [];
25
26
  }
26
27
  set externalSource(value) {
@@ -32,10 +33,12 @@ export class ProductExternalSourceComponent {
32
33
  return this._externalSource;
33
34
  }
34
35
  set externalCatalogStartupInfo(value) {
35
- this._externalCatalogStartupInfo = value;
36
- this.externalSource = value.externalSource;
37
- this.loaded = false;
38
- this._prepareExternalSource();
36
+ if (value) {
37
+ this._externalCatalogStartupInfo = value;
38
+ this.externalSource = value.externalSource;
39
+ this.loaded = false;
40
+ this._prepareExternalSource();
41
+ }
39
42
  }
40
43
  get externalCatalogStartupInfo() {
41
44
  return this._externalCatalogStartupInfo;
@@ -109,6 +112,7 @@ export class ProductExternalSourceComponent {
109
112
  this.token = this.externalCatalogStartupInfo.token;
110
113
  this.sku = this.externalCatalogStartupInfo.externalGoodId;
111
114
  this.variant = this.externalCatalogStartupInfo.flattenedGoodId;
115
+ this.urlParams = this.externalCatalogStartupInfo.externalSource.parameters;
112
116
  this.switchToConfigurator();
113
117
  this.loaded = true;
114
118
  }
@@ -155,6 +159,7 @@ ProductExternalSourceComponent.decorators = [
155
159
  [sku]="sku"
156
160
  [variant]="variant"
157
161
  [token]="token"
162
+ [urlParams]="urlParams"
158
163
  (configuratorFinished)="handleConfigurationFinished($event)"></co-product-hd>
159
164
  </ng-container>
160
165
  </ng-container>
@@ -184,4 +189,4 @@ ProductExternalSourceComponent.propDecorators = {
184
189
  configuratorFinished: [{ type: Output }],
185
190
  showClass: [{ type: HostBinding, args: ['class.co-product-external-source',] }]
186
191
  };
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1leHRlcm5hbC1zb3VyY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3Byb2R1Y3QtZXh0ZXJuYWwtc291cmNlL3Byb2R1Y3QtZXh0ZXJuYWwtc291cmNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBQyxZQUFZLEVBQWtCLE1BQU0sMkJBQTJCLENBQUM7QUFFeEUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFFaEYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFFeEUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0saURBQWlELENBQUM7QUFvQy9GLE1BQU0sT0FBTyw4QkFBOEI7SUFvRXZDLFlBQ1ksVUFBd0IsRUFDeEIsd0JBQWlELEVBQ2pELGdCQUFxQztRQUZyQyxlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBeUI7UUFDakQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFxQjtRQXBDMUMsY0FBUyxHQUFvRCxJQUFJLFlBQVksRUFBcUMsQ0FBQztRQUduSCxlQUFVLEdBQW9ELElBQUksWUFBWSxFQUFxQyxDQUFDO1FBR3BILHFCQUFnQixHQUFvQyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUcxRix5QkFBb0IsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU94RSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMs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UCxRQUFRLEVBQUUsNEJBQTRCO2dCQUN0QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBb0JUO2dCQUNELFNBQVMsRUFBRTtvQkFDUCxzQkFBc0I7b0JBQ3RCLDhCQUE4QjtvQkFDOUIsdUJBQXVCO2lCQUMxQjtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN4Qzs7O1lBMUNPLFlBQVk7WUFFWix1QkFBdUI7WUFFdkIsbUJBQW1COzs7a0JBeUN0QixLQUFLO2dDQUdMLEtBQUs7NkJBR0wsS0FBSzt5Q0FXTCxLQUFLO3NCQVlMLEtBQUs7d0JBR0wsTUFBTTt5QkFHTixNQUFNOytCQUdOLE1BQU07bUNBR04sTUFBTTt3QkFHTixXQUFXLFNBQUMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmx9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQge0V4dGVybmFsU291cmNlfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1zb3VyY2UuYm8nO1xyXG5pbXBvcnQge1Byb2R1Y3RDb25uZWN0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3QtY29ubmVjdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge0FydGljbGVMaXN0T2JqZWN0fSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWxpc3Qtb2JqZWN0JztcclxuaW1wb3J0IHtQcm9kdWN0RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3QtZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtQcm9kdWN0U2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3Qtc2V0dGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7UHJvZHVjdENvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3QtY29ubmVjdG9yLWFkYXB0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7Q2F0YWxvZ0RlZmluaXRpb259IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2NhdGFsb2ctZGVmaW5pdGlvbi5ibyc7XHJcbmltcG9ydCB7RXh0ZXJuYWxTb3VyY2VBcnRpY2xlQWRkSW50ZXJmYWNlfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9pbnRlcmZhY2UvZXh0ZXJuYWwtc291cmNlLWFydGljbGUtYWRkLmludGVyZmFjZSc7XHJcbmltcG9ydCB7QXJ0aWNsZUxpc3RPYmplY3RFeHRlbmRlZH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1saXN0LW9iamVjdC1leHRlbmRlZC5ibyc7XHJcbmltcG9ydCB7RXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm99IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2V4dGVybmFsLWNhdGFsb2ctc3RhcnR1cC1pbmZvJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjby1wcm9kdWN0LWV4dGVybmFsLXNvdXJjZScsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkZWRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dQcm9kdWN0XCI+XHJcbiAgICAgICAgICAgICAgICA8YXBwLXByb2R1Y3QtcGFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2t1XT1cInNrdVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZXR0aW5nc109XCJleHRlcm5hbFNldHRpbmdzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2V4dGVybmFsU291cmNlXT1cImV4dGVybmFsU291cmNlXCJcclxuICAgICAgICAgICAgICAgID48L2FwcC1wcm9kdWN0LXBhZ2U+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1NvdXJjZVwiPlxyXG4gICAgICAgICAgICAgICAgPGlmcmFtZSB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgW3NyY109XCJzYWZlVXJsXCIgZnJhbWVib3JkZXI9XCIwXCIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dDb25maWd1cmF0b3JcIj5cclxuICAgICAgICAgICAgICA8Y28tcHJvZHVjdC1oZCB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2t1XT1cInNrdVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhcmlhbnRdPVwidmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rva2VuXT1cInRva2VuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZmlndXJhdG9yRmluaXNoZWQpPVwiaGFuZGxlQ29uZmlndXJhdGlvbkZpbmlzaGVkKCRldmVudClcIj48L2NvLXByb2R1Y3QtaGQ+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgYCxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIFByb2R1Y3RTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICAgICAgUHJvZHVjdENvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIFByb2R1Y3RDb25uZWN0b3JTZXJ2aWNlXHJcbiAgICBdLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdEV4dGVybmFsU291cmNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2t1OiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjYXRhbG9nRGVmaW5pdGlvbjogQ2F0YWxvZ0RlZmluaXRpb247XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgZXh0ZXJuYWxTb3VyY2UodmFsdWU6IEV4dGVybmFsU291cmNlKSB7XHJcbiAgICAgICAgdGhpcy5fZXh0ZXJuYWxTb3VyY2UgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVFeHRlcm5hbFNvdXJjZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZXh0ZXJuYWxTb3VyY2UoKTogRXh0ZXJuYWxTb3VyY2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9leHRlcm5hbFNvdXJjZTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBleHRlcm5hbENhdGFsb2dTdGFydHVwSW5mbyh2YWx1ZTogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8pIHtcclxuICAgICAgdGhpcy5fZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8gPSB2YWx1ZTtcclxuICAgICAgdGhpcy5leHRlcm5hbFNvdXJjZSA9IHZhbHVlLmV4dGVybmFsU291cmNlO1xyXG4gICAgICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLl9wcmVwYXJlRXh0ZXJuYWxTb3VyY2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvKCk6IEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2V4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgb3B0aW9uczoge307XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgYWRkVG9DYXJ0OiBFdmVudEVtaXR0ZXI8RXh0ZXJuYWxTb3VyY2VBcnRpY2xlQWRkSW50ZXJmYWNlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RXh0ZXJuYWxTb3VyY2VBcnRpY2xlQWRkSW50ZXJmYWNlPigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGFkZFRvUXVvdGU6IEV2ZW50RW1pdHRlcjxFeHRlcm5hbFNvdXJjZUFydGljbGVBZGRJbnRlcmZhY2U+ID0gbmV3IEV2ZW50RW1pdHRlcjxFeHRlcm5hbFNvdXJjZUFydGljbGVBZGRJbnRlcmZhY2U+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgYWx0ZXJuYXRpdmVDbGljazogRXZlbnRFbWl0dGVyPEFydGljbGVMaXN0T2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXJ0aWNsZUxpc3RPYmplY3Q+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgY29uZmlndXJhdG9yRmluaXNoZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1wcm9kdWN0LWV4dGVybmFsLXNvdXJjZScpXHJcbiAgICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzaG93UHJvZHVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHNob3dDb25maWd1cmF0b3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBzaG93U291cmNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgc2FmZVVybDogU2FmZVJlc291cmNlVXJsO1xyXG4gICAgcHVibGljIGxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGV4dGVybmFsVXJsOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgZXh0ZXJuYWxTZXR0aW5nczogYW55ID0ge307XHJcblxyXG4gICAgcHVibGljIHRva2VuOiBzdHJpbmcgPSBcIlwiOy8vPSBcImV5SmhiR2NpT2lKU1V6STFOaUlzSW10cFpDSTZJa1l4T1RoRVJrVkVPRVV3UVRRMU16WTNNME0xTVVFMlJqazFRVVZEUXpVM1JUTTBOak00UmtSU1V6STFOaUlzSW5SNWNDSTZJbUYwSzJwM2RDSXNJbmcxZENJNklqaGFhbVkzV1RSTFVsUmFlbmhTY0hac1lUZE5WaTFPUjA5UU1DSjkuZXlKdVltWWlPakUzTXpJeE9Ua3lPVFVzSW1WNGNDSTZNVGN6TWpJd01qZzVOU3dpYVhOeklqb2lhSFIwY0hNNkx5OWliWE5wWkdWdWRHbDBlUzFoWTJObGNIUmhibU5sTG1GNmRYSmxkMlZpYzJsMFpYTXVibVYwSWl3aVlYVmtJanBiSW1OaGRHRnNiMmR4ZFdWeWVXRndhU0lzSW1OdmJtWnBaM1Z5WVhSdmNtRndhU0lzSW5CeWIyUjFZM1IyWVhKcFlXNTBZMjl0YldGdVpHRndhU0lzSW5CeWIyUjFZM1IyWVhKcFlXNTBjWFZsY25saGNHa2lYU3dpWTJ4cFpXNTBYMmxrSWpvaWFXMXdaWEp6YjI1aGRHbHZiaTVqYkdsbGJuUWlMQ0p6ZFdJaU9pSXdPVE13WkRJNE1pMDVOR1U0TFRRNU1HRXRPR0kyTkMxbVlUazFZbUl5WXpFMU9ESWlMQ0poZFhSb1gzUnBiV1VpT2pFM016SXhPVGt5T1RVc0ltbGtjQ0k2SW14dlkyRnNJaXdpWlc1MmFYSnZibTFsYm5RaU9pSk5VMHdpTENKelpXeHNaWElpT2lKVFJUQXdNREE1TmlJc0luTmxiR3hsY21kMWFXUWlPaUl4TURrMU1XSmpOUzFoWm1NekxUUTFNR0V0Tm1Wa01TMHdPR1E0TkRObE5tRTVPVFFpTENKd1pYSnRhWE56YVc5dUlqcGJJbk5oYkdWekxtVjRjRzl5ZEhSbGJYQnNZWFJsY3k1eVpXRmtJaXdpWkc5amRXMWxiblJzYVdKeVlYSjVMblJoWnk1eVpXRmtJaXdpWkc5amRXMWxiblJzYVdKeVlYSjVMbVJ2WTNWdFpXNTBMbkpsWVdRaUxDSmtiMk4xYldWdWRHeHBZbkpoY25rdWRHRm5aM0p2ZFhBdWNtVmhaQ0lzSW5OaGJHVnpMbTl5WkdWeUxuZHlhWFJsSWl3aWMyRnNaWE11WTNWemRHOXRaWEl1Y21WaFpDSXNJbk5oYkdWekxtOXlaR1Z5TG1SbGJHbDJaWEo1WVdSa2NtVnpjeTUzY21sMFpTSXNJbk5sY25acFkyVXVjbVZ4ZFdWemRDNXlaV0ZrSWl3aVkyRjBZV3h2Wnk1MFlXY3VjbVZoWkNJc0luTmhiR1Z6TG05eVpHVnlMbkpsWVdRaUxDSnpZV3hsY3k1amRYTjBiMjFsY2k1M2NtbDBaU0lzSW5KbGNYVmxjM1JtYjNKeGRXOTBaUzUzY21sMFpTSXNJbk5oYkdWekxtOXlaR1Z5TG1KdmIyc2lMQ0p5WlhGMVpYTjBabTl5Y1hWdmRHVXVjbVZoWkNJc0luTmhiR1Z6TG14bFlXUXVjbVZoWkNJc0luQjFjbU5vWVhObExtOXlaR1Z5TG5KbFlXUWlMQ0p6WVd4bGN5NXhkVzkwWlM1eVpXRmtJaXdpYzJGc1pYTXVjWFZ2ZEdVdWQzSnBkR1VpTENKallYUmhiRzluTG1sMFpXMHVjbVZoWkNJc0luTmhiR1Z6TG14bFlXUXVkM0pwZEdVaUxDSnpaWEoyYVdObExuSmxjWFZsYzNRdWMzVmliV2wwSWl3aWMyRnNaWE11YjNKa1pYSXVaR1ZzYVhabGNubGhaR1J5WlhOekxuSmxZV1FpTENKd2RYSmphR0Z6WlM1dmNtUmxjaTUzY21sMFpTSXNJbkIxY21Ob1lYTmxMbTl5WkdWeUxuQnlhV05sY3k1M2NtbDBaU0lzSW5CMWNtTm9ZWE5sTG05eVpHVnlMbkJ5YVdObGN5NXlaV0ZrSWl3aWMyVnlkbWxqWlM1eVpYRjFaWE4wTG5keWFYUmxJaXdpWTJGMFlXeHZaeTVqWVhSaGJHOW5MbkpsWVdRaUxDSmpZWFJoYkc5bkxtTmhkR0ZzYjJjdWQzSnBkR1VpTENKallYUmhiRzluTG1OMWNuSmxibU41TG5KbFlXUWlMQ0pqWVhSaGJHOW5MbU4xY25KbGJtTjVMbmR5YVhSbElpd2lZMkYwWVd4dlp5NXBkR1Z0TG5keWFYUmxJaXdpWTJGMFlXeHZaeTVzYjJOaGJHbDZZWFJwYjI0dWNtVmhaQ0lzSW1OaGRHRnNiMmN1Ykc5allXeHBlbUYwYVc5dUxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1d2NtOWtkV04wTG5KbFlXUWlMQ0pqWVhSaGJHOW5MbkJ5YjJSMVkzUXVkM0pwZEdVaUxDSmpZWFJoYkc5bkxuQnliMlIxWTNSelpYUjBhVzVuTG5KbFlXUWlMQ0pqWVhSaGJHOW5MbkJ5YjJSMVkzUnpaWFIwYVc1bkxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1elpXeHNaWEl1Y21WaFpDSXNJbU5oZEdGc2IyY3VjMlZzYkdWeUxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1MFlXY3VkM0pwZEdVaUxDSmpZWFJoYkc5bkxuVnZiUzV5WldGa0lpd2lZMkYwWVd4dlp5NTFiMjB1ZDNKcGRHVWlMQ0pqWVhSaGJHOW5MblpoZEdOaGRHVm5iM0o1TG5KbFlXUWlMQ0pqWVhSaGJHOW5MblpoZEdOaGRHVm5iM0o1TG5keWFYUmxJaXdpWTJGMFlXeHZaeTUyWlc1a2IzSXVjbVZoWkNJc0ltTmhkR0ZzYjJjdWRtVnVaRzl5TG5keWFYUmxJaXdpY0hWeVkyaGhjMlV1YzJWc2JHVnlMbkpsWVdRaUxDSndkWEpqYUdGelpTNXpaV3hzWlhJdWQzSnBkR1VpTENKallYUmhiRzluTG1GeWRHbGpiR1V1Y21WaFpDSXNJbU5oZEdGc2IyY3VZWEowYVdOc1pTNTNjbWwwWlNJc0luTmhiR1Z6TG5GMWIzUmxMbXhwYm1WekxuSmxZV1FpTENKellXeGxjeTV4ZFc5MFpTNXNhVzVsY3k1M2NtbDBaU0lzSW5OaGJHVnpMbk5sYkd4bGNpNXlaV0ZrSWl3aWMyRnNaWE11YzJWc2JHVnlMbmR5YVhSbElpd2lZV05qYjNWdWRHbHVaeTUyWlc1a2IzSnBiblp2YVdObExuSmxZV1FpTENKcFpHVnVkR2wwZVM1MWMyVnlMbkpsWVdRaUxDSnBaR1Z1ZEdsMGVTNTFjMlZ5TG5keWFYUmxJaXdpYVdSbGJuUnBkSGt1Y205c1pTNXlaV0ZrSWl3aWMyVnNiR1Z5TG5CeWIyUjFZM1J3Y21salpTNXpaWFIwYVc1bmN5NXlaV0ZrSWl3aWMyVnNiR1Z5TG5CeWIyUjFZM1J3Y21salpTNXpaWFIwYVc1bmN5NTNjbWwwWlNJc0ltTnZibVpwWjNWeVlYUnZjaTV3ZFhKamFHRnpaWEJ5YVdObExuSmxZV1FpTENKemRHOWpheTVtWVdKeWFXTXVjbVZoWkNKZExDSnVZVzFsSWpvaVVtOWlhVzRpTENKbVlXMXBiSGxmYm1GdFpTSTZJbVJsSUZkcGJuUmxjaUFvUTI5c2FXcHVMVWxVS1NJc0luSnZiR1VpT2xzaWMyVnNiR1Z5SWl3aVpHVmhiR1Z5WDIxaGJtRm5aWElpWFN3aWFXRjBJam94TnpNeU1UazVNamsxTENKelkyOXdaU0k2V3lKallYUmhiRzluY1hWbGNubGhjR2tpTENKamIyNW1hV2QxY21GMGIzSmhjR2tpTENKd2NtOWtkV04wZG1GeWFXRnVkR052YlcxaGJtUmhjR2tpTENKd2NtOWtkV04wZG1GeWFXRnVkSEYxWlhKNVlYQnBJbDBzSW1GdGNpSTZXeUpwYlhCbGNuTnZibUYwYVc5dUlsMTkucmJndVZQbmtYWER6c002UUtnWHVsaHJGNDFqSWpDdUdEVjEzaWcxR0M4TWV3TENKN3dBMDM4T1N3VDI2c3gybUNleGp2dUdZdDQ1WVNjZlB3ZlRrRHkzRXJQbUhSb2RzNjRYMWRKV1puZi0yM05UUDJpSTMyS18xdk1aSDVHT0diTXp1RnRiS0FGUXY0aGdGQXhveVdxRlZXeUp2dU90UWNXeVpTdFJPeVBId2pBbnBuai14MWNWUXBPaGJPLWtRVUZ2eV9WVXJQcEYzYVlWQ2NPMmNGaXJRVFhSNmt4U0djWUdHY3NQWS1fZWlBZDkzVWRHMkVNNnhMQW9jRExhRlY3MkNRSTZYRXMwV1FHMWY0U3F2SDUydjNPVGtnV0JMZ1lWMzVncHlJZTAtMm5hekdMMFI4cFROdURxck9iN09HbXVUUk1vVElpUmk2Ny13VHh4OGNRXCI7XHJcbiAgICBwdWJsaWMgdmFyaWFudDogc3RyaW5nID0gXCJcIjtcclxuXHJcblxyXG5cclxuICAgIHByaXZhdGUgX2V4dGVybmFsU291cmNlOiBFeHRlcm5hbFNvdXJjZTtcclxuICAgIHByaXZhdGUgX2V4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvOiBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mbztcclxuICAgIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBfcHJvZHVjdENvbm5lY3RvclNlcnZpY2U6IFByb2R1Y3RDb25uZWN0b3JTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2FwcEV2ZW50U2VydmljZTogUHJvZHVjdEV2ZW50U2VydmljZVxyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2Uub25BZGRUb0NhcnQuc3Vic2NyaWJlKChkYXRhOiB7IGFydGljbGU6IHN0cmluZyB8IEFydGljbGVMaXN0T2JqZWN0RXh0ZW5kZWQsIHF1YW50aXR5OiBudW1iZXIgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRUb0NhcnQubmV4dCh7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJ0aWNsZTogZGF0YS5hcnRpY2xlLFxyXG4gICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiBkYXRhLnF1YW50aXR5LFxyXG4gICAgICAgICAgICAgICAgICAgIGNhdGFsb2dEZWZpbml0aW9uOiB0aGlzLmNhdGFsb2dEZWZpbml0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGV4dGVybmFsU291cmNlOiB0aGlzLl9leHRlcm5hbFNvdXJjZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2Uub25BZGRUb1F1b3RlLnN1YnNjcmliZShqc29uID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkVG9RdW90ZS5uZXh0KHtcclxuICAgICAgICAgICAgICAgICAgICBhcnRpY2xlOiBqc29uLFxyXG4gICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiAxLFxyXG4gICAgICAgICAgICAgICAgICAgIGNhdGFsb2dEZWZpbml0aW9uOiB0aGlzLmNhdGFsb2dEZWZpbml0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGV4dGVybmFsU291cmNlOiB0aGlzLl9leHRlcm5hbFNvdXJjZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2Uub25BbHRlcm5hdGl2ZUNsaWNrLnN1YnNjcmliZShhcnRpY2xlID0+IHRoaXMuYWx0ZXJuYXRpdmVDbGljay5uZXh0KGFydGljbGUpKVxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVDb25maWd1cmF0aW9uRmluaXNoZWQodmFyaWFudFN0cmluZzogc3RyaW5nKSB7XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdG9yRmluaXNoZWQuZW1pdCh2YXJpYW50U3RyaW5nKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIF9wcmVwYXJlRXh0ZXJuYWxTb3VyY2UoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9leHRlcm5hbFNvdXJjZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXh0ZXJuYWxVcmwgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5leHRlcm5hbFNldHRpbmdzID0ge307XHJcbiAgICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxTb3VyY2UudHlwZSA9PT0gJ0NBVEYnKSB7XHJcbiAgICAgICAgICAgYXdhaXQgdGhpcy5fcHJlcGFyZUNhdEZhcm0oKTtcclxuICAgICAgICB9IGVsc2UgIGlmICh0aGlzLmV4dGVybmFsU291cmNlLnR5cGUgPT09ICdIVERMJyl7XHJcbiAgICAgICAgICB0aGlzLl9wcmVwYXJlQ29uZmlndXJhdG9yKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuX3ByZXBhcmVTb3VyY2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3ByZXBhcmVDYXRGYXJtKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gZ2V0IGJ1bmRsZSBzZXR0aW5ncyBmcm9tIGV4dGVybmFsIHNvdXJjZVxyXG4gICAgY29uc3QgYnVuZGxlU2V0dGluZ3M6IHN0cmluZyA9IGF3YWl0IHRoaXMuX3Byb2R1Y3RDb25uZWN0b3JTZXJ2aWNlLmdldFByb2R1Y3RCdW5kbGVTZXR0aW5ncyh0aGlzLmV4dGVybmFsU291cmNlLnVybCwgcGFyc2VJbnQodGhpcy5leHRlcm5hbFNvdXJjZS5zY2hlbWEsIDApKTtcclxuICAgIHRoaXMuZXh0ZXJuYWxTZXR0aW5ncyA9IEpTT04ucGFyc2UoYnVuZGxlU2V0dGluZ3MpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xyXG4gICAgICB0aGlzLmV4dGVybmFsU2V0dGluZ3Mub3B0aW9ucyA9IHRoaXMub3B0aW9ucztcclxuICAgIH1cclxuICAgIC8vIHRoaXMuZXh0ZXJuYWxTZXR0aW5ncy5hc3NldFBhdGggPSBcImh0dHBzOi8vY2RuMS5jb2xpam4taXQubmwvY29udGVudDQzXCI7XHJcbiAgICAvLyB0aGlzLmV4dGVybmFsU2V0dGluZ3MudGhyZWVEQXNzZXRQYXRoID0gXCJodHRwczovL2NkbjEuY29saWpuLWl0Lm5sL2NvbnRlbnQ0M1wiO1xyXG4gICAgaWYgKHRoaXMuZXh0ZXJuYWxTb3VyY2UudXNlcm5hbWUgJiYgdGhpcy5leHRlcm5hbFNvdXJjZS5wYXNzd29yZCkge1xyXG4gICAgICB0aGlzLmV4dGVybmFsU2V0dGluZ3MudXNlTG9naW5FbmNyeXB0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5leHRlcm5hbFNldHRpbmdzLnVzZXJuYW1lID0gdGhpcy5leHRlcm5hbFNvdXJjZS51c2VybmFtZTtcclxuICAgICAgdGhpcy5leHRlcm5hbFNldHRpbmdzLnBhc3N3b3JkID0gdGhpcy5leHRlcm5hbFNvdXJjZS5wYXNzd29yZDtcclxuICAgIH1cclxuICAgIC8vIGZpbmFsbHkgc2hvdyB0aGUgY2F0YWxvZ1xyXG4gICAgdGhpcy5zd2l0Y2hUb1Byb2R1Y3QoKTtcclxuICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVDb25maWd1cmF0b3IoKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLmV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvKSB7XHJcbiAgICAgIHRoaXMudG9rZW4gPSB0aGlzLmV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvLnRva2VuO1xyXG4gICAgICB0aGlzLnNrdSA9IHRoaXMuZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8uZXh0ZXJuYWxHb29kSWQ7XHJcbiAgICAgIHRoaXMudmFyaWFudCA9IHRoaXMuZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8uZmxhdHRlbmVkR29vZElkO1xyXG4gICAgICB0aGlzLnN3aXRjaFRvQ29uZmlndXJhdG9yKCk7XHJcbiAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVTb3VyY2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4dGVybmFsVXJsID0gdGhpcy5leHRlcm5hbFNvdXJjZS51cmw7XHJcbiAgICB0aGlzLnNhZmVVcmwgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuZXh0ZXJuYWxVcmwpO1xyXG4gICAgdGhpcy5zd2l0Y2hUb1NvdXJjZSgpO1xyXG4gICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzd2l0Y2hUb1Byb2R1Y3QoKTp2b2lkIHtcclxuICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSB0cnVlO1xyXG4gICAgdGhpcy5zaG93Q29uZmlndXJhdG9yID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTb3VyY2UgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3dpdGNoVG9Db25maWd1cmF0b3IoKTp2b2lkIHtcclxuICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NvbmZpZ3VyYXRvciA9IHRydWU7XHJcbiAgICB0aGlzLnNob3dTb3VyY2UgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3dpdGNoVG9Tb3VyY2UoKTp2b2lkIHtcclxuICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NvbmZpZ3VyYXRvciA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U291cmNlID0gdHJ1ZTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1leHRlcm5hbC1zb3VyY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3Byb2R1Y3QtZXh0ZXJuYWwtc291cmNlL3Byb2R1Y3QtZXh0ZXJuYWwtc291cmNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBQyxZQUFZLEVBQWtCLE1BQU0sMkJBQTJCLENBQUM7QUFFeEUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFFaEYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFFeEUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0saURBQWlELENBQUM7QUFzQy9GLE1BQU0sT0FBTyw4QkFBOEI7SUF1RXZDLFlBQ1ksVUFBd0IsRUFDeEIsd0JBQWlELEVBQ2pELGdCQUFxQztRQUZyQyxlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBeUI7UUFDakQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFxQjtRQXJDMUMsY0FBUyxHQUFvRCxJQUFJLFlBQVksRUFBcUMsQ0FBQztRQUduSCxlQUFVLEdBQW9ELElBQUksWUFBWSxFQUFxQyxDQUFDO1FBR3BILHFCQUFnQixHQUFvQyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUcxRix5QkFBb0IsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU94RSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMs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QUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQzs7O1lBL01GLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsNEJBQTRCO2dCQUN0QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXFCVDtnQkFDRCxTQUFTLEVBQUU7b0JBQ1Asc0JBQXNCO29CQUN0Qiw4QkFBOEI7b0JBQzlCLHVCQUF1QjtpQkFDMUI7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDeEM7OztZQTVDTyxZQUFZO1lBRVosdUJBQXVCO1lBRXZCLG1CQUFtQjs7O2tCQTJDdEIsS0FBSztnQ0FHTCxLQUFLOzZCQUdMLEtBQUs7eUNBV0wsS0FBSztzQkFjTCxLQUFLO3dCQUdMLE1BQU07eUJBR04sTUFBTTsrQkFHTixNQUFNO21DQUdOLE1BQU07d0JBR04sV0FBVyxTQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0RvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHtFeHRlcm5hbFNvdXJjZX0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvZXh0ZXJuYWwtc291cmNlLmJvJztcclxuaW1wb3J0IHtQcm9kdWN0Q29ubmVjdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LWNvbm5lY3Rvci5zZXJ2aWNlJztcclxuaW1wb3J0IHtBcnRpY2xlTGlzdE9iamVjdH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1saXN0LW9iamVjdCc7XHJcbmltcG9ydCB7UHJvZHVjdEV2ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LWV2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7UHJvZHVjdFNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LXNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1Byb2R1Y3RDb25uZWN0b3JBZGFwdGVyU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LWNvbm5lY3Rvci1hZGFwdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge0NhdGFsb2dEZWZpbml0aW9ufSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9jYXRhbG9nLWRlZmluaXRpb24uYm8nO1xyXG5pbXBvcnQge0V4dGVybmFsU291cmNlQXJ0aWNsZUFkZEludGVyZmFjZX0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvaW50ZXJmYWNlL2V4dGVybmFsLXNvdXJjZS1hcnRpY2xlLWFkZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0FydGljbGVMaXN0T2JqZWN0RXh0ZW5kZWR9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtbGlzdC1vYmplY3QtZXh0ZW5kZWQuYm8nO1xyXG5pbXBvcnQge0V4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1jYXRhbG9nLXN0YXJ0dXAtaW5mbyc7XHJcbmltcG9ydCB7RXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXJ9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2V4dGVybmFsLXNvdXJjZS1wYXJhbWV0ZXIuYm8nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NvLXByb2R1Y3QtZXh0ZXJuYWwtc291cmNlJyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRlZFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1Byb2R1Y3RcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtcHJvZHVjdC1wYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtza3VdPVwic2t1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3NldHRpbmdzXT1cImV4dGVybmFsU2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXh0ZXJuYWxTb3VyY2VdPVwiZXh0ZXJuYWxTb3VyY2VcIlxyXG4gICAgICAgICAgICAgICAgPjwvYXBwLXByb2R1Y3QtcGFnZT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93U291cmNlXCI+XHJcbiAgICAgICAgICAgICAgICA8aWZyYW1lIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiBbc3JjXT1cInNhZmVVcmxcIiBmcmFtZWJvcmRlcj1cIjBcIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0NvbmZpZ3VyYXRvclwiPlxyXG4gICAgICAgICAgICAgIDxjby1wcm9kdWN0LWhkIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtza3VdPVwic2t1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFyaWFudF09XCJ2YXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9rZW5dPVwidG9rZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxQYXJhbXNdPVwidXJsUGFyYW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZmlndXJhdG9yRmluaXNoZWQpPVwiaGFuZGxlQ29uZmlndXJhdGlvbkZpbmlzaGVkKCRldmVudClcIj48L2NvLXByb2R1Y3QtaGQ+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgYCxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIFByb2R1Y3RTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICAgICAgUHJvZHVjdENvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIFByb2R1Y3RDb25uZWN0b3JTZXJ2aWNlXHJcbiAgICBdLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdEV4dGVybmFsU291cmNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2t1OiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjYXRhbG9nRGVmaW5pdGlvbjogQ2F0YWxvZ0RlZmluaXRpb247XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgZXh0ZXJuYWxTb3VyY2UodmFsdWU6IEV4dGVybmFsU291cmNlKSB7XHJcbiAgICAgICAgdGhpcy5fZXh0ZXJuYWxTb3VyY2UgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVFeHRlcm5hbFNvdXJjZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZXh0ZXJuYWxTb3VyY2UoKTogRXh0ZXJuYWxTb3VyY2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9leHRlcm5hbFNvdXJjZTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBleHRlcm5hbENhdGFsb2dTdGFydHVwSW5mbyh2YWx1ZTogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8pIHtcclxuICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8gPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmV4dGVybmFsU291cmNlID0gdmFsdWUuZXh0ZXJuYWxTb3VyY2U7XHJcbiAgICAgICAgdGhpcy5sb2FkZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9wcmVwYXJlRXh0ZXJuYWxTb3VyY2UoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8oKTogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8ge1xyXG4gICAgICByZXR1cm4gdGhpcy5fZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm87XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBvcHRpb25zOiB7fTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBhZGRUb0NhcnQ6IEV2ZW50RW1pdHRlcjxFeHRlcm5hbFNvdXJjZUFydGljbGVBZGRJbnRlcmZhY2U+ID0gbmV3IEV2ZW50RW1pdHRlcjxFeHRlcm5hbFNvdXJjZUFydGljbGVBZGRJbnRlcmZhY2U+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgYWRkVG9RdW90ZTogRXZlbnRFbWl0dGVyPEV4dGVybmFsU291cmNlQXJ0aWNsZUFkZEludGVyZmFjZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEV4dGVybmFsU291cmNlQXJ0aWNsZUFkZEludGVyZmFjZT4oKTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBhbHRlcm5hdGl2ZUNsaWNrOiBFdmVudEVtaXR0ZXI8QXJ0aWNsZUxpc3RPYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxBcnRpY2xlTGlzdE9iamVjdD4oKTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBjb25maWd1cmF0b3JGaW5pc2hlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLXByb2R1Y3QtZXh0ZXJuYWwtc291cmNlJylcclxuICAgIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNob3dQcm9kdWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgc2hvd0NvbmZpZ3VyYXRvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHNob3dTb3VyY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBzYWZlVXJsOiBTYWZlUmVzb3VyY2VVcmw7XHJcbiAgICBwdWJsaWMgbG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgZXh0ZXJuYWxVcmw6IHN0cmluZztcclxuICAgIHB1YmxpYyBleHRlcm5hbFNldHRpbmdzOiBhbnkgPSB7fTtcclxuXHJcbiAgICBwdWJsaWMgdG9rZW46IHN0cmluZyA9IFwiXCI7Ly89IFwiZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklrWXhPVGhFUmtWRU9FVXdRVFExTXpZM00wTTFNVUUyUmprMVFVVkRRelUzUlRNME5qTTRSa1JTVXpJMU5pSXNJblI1Y0NJNkltRjBLMnAzZENJc0luZzFkQ0k2SWpoYWFtWTNXVFJMVWxSYWVuaFNjSFpzWVRkTlZpMU9SMDlRTUNKOS5leUp1WW1ZaU9qRTNNekl4T1RreU9UVXNJbVY0Y0NJNk1UY3pNakl3TWpnNU5Td2lhWE56SWpvaWFIUjBjSE02THk5aWJYTnBaR1Z1ZEdsMGVTMWhZMk5sY0hSaGJtTmxMbUY2ZFhKbGQyVmljMmwwWlhNdWJtVjBJaXdpWVhWa0lqcGJJbU5oZEdGc2IyZHhkV1Z5ZVdGd2FTSXNJbU52Ym1acFozVnlZWFJ2Y21Gd2FTSXNJbkJ5YjJSMVkzUjJZWEpwWVc1MFkyOXRiV0Z1WkdGd2FTSXNJbkJ5YjJSMVkzUjJZWEpwWVc1MGNYVmxjbmxoY0draVhTd2lZMnhwWlc1MFgybGtJam9pYVcxd1pYSnpiMjVoZEdsdmJpNWpiR2xsYm5RaUxDSnpkV0lpT2lJd09UTXdaREk0TWkwNU5HVTRMVFE1TUdFdE9HSTJOQzFtWVRrMVltSXlZekUxT0RJaUxDSmhkWFJvWDNScGJXVWlPakUzTXpJeE9Ua3lPVFVzSW1sa2NDSTZJbXh2WTJGc0lpd2laVzUyYVhKdmJtMWxiblFpT2lKTlUwd2lMQ0p6Wld4c1pYSWlPaUpUUlRBd01EQTVOaUlzSW5ObGJHeGxjbWQxYVdRaU9pSXhNRGsxTVdKak5TMWhabU16TFRRMU1HRXRObVZrTVMwd09HUTRORE5sTm1FNU9UUWlMQ0p3WlhKdGFYTnphVzl1SWpwYkluTmhiR1Z6TG1WNGNHOXlkSFJsYlhCc1lYUmxjeTV5WldGa0lpd2laRzlqZFcxbGJuUnNhV0p5WVhKNUxuUmhaeTV5WldGa0lpd2laRzlqZFcxbGJuUnNhV0p5WVhKNUxtUnZZM1Z0Wlc1MExuSmxZV1FpTENKa2IyTjFiV1Z1ZEd4cFluSmhjbmt1ZEdGblozSnZkWEF1Y21WaFpDSXNJbk5oYkdWekxtOXlaR1Z5TG5keWFYUmxJaXdpYzJGc1pYTXVZM1Z6ZEc5dFpYSXVjbVZoWkNJc0luTmhiR1Z6TG05eVpHVnlMbVJsYkdsMlpYSjVZV1JrY21WemN5NTNjbWwwWlNJc0luTmxjblpwWTJVdWNtVnhkV1Z6ZEM1eVpXRmtJaXdpWTJGMFlXeHZaeTUwWVdjdWNtVmhaQ0lzSW5OaGJHVnpMbTl5WkdWeUxuSmxZV1FpTENKellXeGxjeTVqZFhOMGIyMWxjaTUzY21sMFpTSXNJbkpsY1hWbGMzUm1iM0p4ZFc5MFpTNTNjbWwwWlNJc0luTmhiR1Z6TG05eVpHVnlMbUp2YjJzaUxDSnlaWEYxWlhOMFptOXljWFZ2ZEdVdWNtVmhaQ0lzSW5OaGJHVnpMbXhsWVdRdWNtVmhaQ0lzSW5CMWNtTm9ZWE5sTG05eVpHVnlMbkpsWVdRaUxDSnpZV3hsY3k1eGRXOTBaUzV5WldGa0lpd2ljMkZzWlhNdWNYVnZkR1V1ZDNKcGRHVWlMQ0pqWVhSaGJHOW5MbWwwWlcwdWNtVmhaQ0lzSW5OaGJHVnpMbXhsWVdRdWQzSnBkR1VpTENKelpYSjJhV05sTG5KbGNYVmxjM1F1YzNWaWJXbDBJaXdpYzJGc1pYTXViM0prWlhJdVpHVnNhWFpsY25saFpHUnlaWE56TG5KbFlXUWlMQ0p3ZFhKamFHRnpaUzV2Y21SbGNpNTNjbWwwWlNJc0luQjFjbU5vWVhObExtOXlaR1Z5TG5CeWFXTmxjeTUzY21sMFpTSXNJbkIxY21Ob1lYTmxMbTl5WkdWeUxuQnlhV05sY3k1eVpXRmtJaXdpYzJWeWRtbGpaUzV5WlhGMVpYTjBMbmR5YVhSbElpd2lZMkYwWVd4dlp5NWpZWFJoYkc5bkxuSmxZV1FpTENKallYUmhiRzluTG1OaGRHRnNiMmN1ZDNKcGRHVWlMQ0pqWVhSaGJHOW5MbU4xY25KbGJtTjVMbkpsWVdRaUxDSmpZWFJoYkc5bkxtTjFjbkpsYm1ONUxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1cGRHVnRMbmR5YVhSbElpd2lZMkYwWVd4dlp5NXNiMk5oYkdsNllYUnBiMjR1Y21WaFpDSXNJbU5oZEdGc2IyY3ViRzlqWVd4cGVtRjBhVzl1TG5keWFYUmxJaXdpWTJGMFlXeHZaeTV3Y205a2RXTjBMbkpsWVdRaUxDSmpZWFJoYkc5bkxuQnliMlIxWTNRdWQzSnBkR1VpTENKallYUmhiRzluTG5CeWIyUjFZM1J6WlhSMGFXNW5MbkpsWVdRaUxDSmpZWFJoYkc5bkxuQnliMlIxWTNSelpYUjBhVzVuTG5keWFYUmxJaXdpWTJGMFlXeHZaeTV6Wld4c1pYSXVjbVZoWkNJc0ltTmhkR0ZzYjJjdWMyVnNiR1Z5TG5keWFYUmxJaXdpWTJGMFlXeHZaeTUwWVdjdWQzSnBkR1VpTENKallYUmhiRzluTG5WdmJTNXlaV0ZrSWl3aVkyRjBZV3h2Wnk1MWIyMHVkM0pwZEdVaUxDSmpZWFJoYkc5bkxuWmhkR05oZEdWbmIzSjVMbkpsWVdRaUxDSmpZWFJoYkc5bkxuWmhkR05oZEdWbmIzSjVMbmR5YVhSbElpd2lZMkYwWVd4dlp5NTJaVzVrYjNJdWNtVmhaQ0lzSW1OaGRHRnNiMmN1ZG1WdVpHOXlMbmR5YVhSbElpd2ljSFZ5WTJoaGMyVXVjMlZzYkdWeUxuSmxZV1FpTENKd2RYSmphR0Z6WlM1elpXeHNaWEl1ZDNKcGRHVWlMQ0pqWVhSaGJHOW5MbUZ5ZEdsamJHVXVjbVZoWkNJc0ltTmhkR0ZzYjJjdVlYSjBhV05zWlM1M2NtbDBaU0lzSW5OaGJHVnpMbkYxYjNSbExteHBibVZ6TG5KbFlXUWlMQ0p6WVd4bGN5NXhkVzkwWlM1c2FXNWxjeTUzY21sMFpTSXNJbk5oYkdWekxuTmxiR3hsY2k1eVpXRmtJaXdpYzJGc1pYTXVjMlZzYkdWeUxuZHlhWFJsSWl3aVlXTmpiM1Z1ZEdsdVp5NTJaVzVrYjNKcGJuWnZhV05sTG5KbFlXUWlMQ0pwWkdWdWRHbDBlUzUxYzJWeUxuSmxZV1FpTENKcFpHVnVkR2wwZVM1MWMyVnlMbmR5YVhSbElpd2lhV1JsYm5ScGRIa3VjbTlzWlM1eVpXRmtJaXdpYzJWc2JHVnlMbkJ5YjJSMVkzUndjbWxqWlM1elpYUjBhVzVuY3k1eVpXRmtJaXdpYzJWc2JHVnlMbkJ5YjJSMVkzUndjbWxqWlM1elpYUjBhVzVuY3k1M2NtbDBaU0lzSW1OdmJtWnBaM1Z5WVhSdmNpNXdkWEpqYUdGelpYQnlhV05sTG5KbFlXUWlMQ0p6ZEc5amF5NW1ZV0p5YVdNdWNtVmhaQ0pkTENKdVlXMWxJam9pVW05aWFXNGlMQ0ptWVcxcGJIbGZibUZ0WlNJNkltUmxJRmRwYm5SbGNpQW9RMjlzYVdwdUxVbFVLU0lzSW5KdmJHVWlPbHNpYzJWc2JHVnlJaXdpWkdWaGJHVnlYMjFoYm1GblpYSWlYU3dpYVdGMElqb3hOek15TVRrNU1qazFMQ0p6WTI5d1pTSTZXeUpqWVhSaGJHOW5jWFZsY25saGNHa2lMQ0pqYjI1bWFXZDFjbUYwYjNKaGNHa2lMQ0p3Y205a2RXTjBkbUZ5YVdGdWRHTnZiVzFoYm1SaGNHa2lMQ0p3Y205a2RXTjBkbUZ5YVdGdWRIRjFaWEo1WVhCcElsMHNJbUZ0Y2lJNld5SnBiWEJsY25OdmJtRjBhVzl1SWwxOS5yYmd1VlBua1hYRHpzTTZRS2dYdWxockY0MWpJakN1R0RWMTNpZzFHQzhNZXdMQ0o3d0EwMzhPU3dUMjZzeDJtQ2V4anZ1R1l0NDVZU2NmUHdmVGtEeTNFclBtSFJvZHM2NFgxZEpXWm5mLTIzTlRQMmlJMzJLXzF2TVpINUdPR2JNenVGdGJLQUZRdjRoZ0ZBeG95V3FGVld5SnZ1T3RRY1d5WlN0Uk95UEh3akFucG5qLXgxY1ZRcE9oYk8ta1FVRnZ5X1ZVclBwRjNhWVZDY08yY0ZpclFUWFI2a3hTR2NZR0djc1BZLV9laUFkOTNVZEcyRU02eExBb2NETGFGVjcyQ1FJNlhFczBXUUcxZjRTcXZINTJ2M09Ua2dXQkxnWVYzNWdweUllMC0ybmF6R0wwUjhwVE51RHFyT2I3T0dtdVRSTW9USWlSaTY3LXdUeHg4Y1FcIjtcclxuICAgIHB1YmxpYyB2YXJpYW50OiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgcHVibGljIHVybFBhcmFtczogRXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXJbXSA9IFtdO1xyXG5cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfZXh0ZXJuYWxTb3VyY2U6IEV4dGVybmFsU291cmNlO1xyXG4gICAgcHJpdmF0ZSBfZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm86IEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvO1xyXG4gICAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgICAgICBwcml2YXRlIF9wcm9kdWN0Q29ubmVjdG9yU2VydmljZTogUHJvZHVjdENvbm5lY3RvclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfYXBwRXZlbnRTZXJ2aWNlOiBQcm9kdWN0RXZlbnRTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLl9zdWJzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5vbkFkZFRvQ2FydC5zdWJzY3JpYmUoKGRhdGE6IHsgYXJ0aWNsZTogc3RyaW5nIHwgQXJ0aWNsZUxpc3RPYmplY3RFeHRlbmRlZCwgcXVhbnRpdHk6IG51bWJlciB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFRvQ2FydC5uZXh0KHtcclxuICAgICAgICAgICAgICAgICAgICBhcnRpY2xlOiBkYXRhLmFydGljbGUsXHJcbiAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IGRhdGEucXVhbnRpdHksXHJcbiAgICAgICAgICAgICAgICAgICAgY2F0YWxvZ0RlZmluaXRpb246IHRoaXMuY2F0YWxvZ0RlZmluaXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxTb3VyY2U6IHRoaXMuX2V4dGVybmFsU291cmNlXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5vbkFkZFRvUXVvdGUuc3Vic2NyaWJlKGpzb24gPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRUb1F1b3RlLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgICAgIGFydGljbGU6IGpzb24sXHJcbiAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgY2F0YWxvZ0RlZmluaXRpb246IHRoaXMuY2F0YWxvZ0RlZmluaXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxTb3VyY2U6IHRoaXMuX2V4dGVybmFsU291cmNlXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5vbkFsdGVybmF0aXZlQ2xpY2suc3Vic2NyaWJlKGFydGljbGUgPT4gdGhpcy5hbHRlcm5hdGl2ZUNsaWNrLm5leHQoYXJ0aWNsZSkpXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhbmRsZUNvbmZpZ3VyYXRpb25GaW5pc2hlZCh2YXJpYW50U3RyaW5nOiBzdHJpbmcpIHtcclxuICAgICAgdGhpcy5jb25maWd1cmF0b3JGaW5pc2hlZC5lbWl0KHZhcmlhbnRTdHJpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgX3ByZXBhcmVFeHRlcm5hbFNvdXJjZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBpZiAoIXRoaXMuX2V4dGVybmFsU291cmNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5leHRlcm5hbFVybCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLmV4dGVybmFsU2V0dGluZ3MgPSB7fTtcclxuICAgICAgICBpZiAodGhpcy5leHRlcm5hbFNvdXJjZS50eXBlID09PSAnQ0FURicpIHtcclxuICAgICAgICAgICBhd2FpdCB0aGlzLl9wcmVwYXJlQ2F0RmFybSgpO1xyXG4gICAgICAgIH0gZWxzZSAgaWYgKHRoaXMuZXh0ZXJuYWxTb3VyY2UudHlwZSA9PT0gJ0hUREwnKXtcclxuICAgICAgICAgIHRoaXMuX3ByZXBhcmVDb25maWd1cmF0b3IoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5fcHJlcGFyZVNvdXJjZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfcHJlcGFyZUNhdEZhcm0oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBnZXQgYnVuZGxlIHNldHRpbmdzIGZyb20gZXh0ZXJuYWwgc291cmNlXHJcbiAgICBjb25zdCBidW5kbGVTZXR0aW5nczogc3RyaW5nID0gYXdhaXQgdGhpcy5fcHJvZHVjdENvbm5lY3RvclNlcnZpY2UuZ2V0UHJvZHVjdEJ1bmRsZVNldHRpbmdzKHRoaXMuZXh0ZXJuYWxTb3VyY2UudXJsLCBwYXJzZUludCh0aGlzLmV4dGVybmFsU291cmNlLnNjaGVtYSwgMCkpO1xyXG4gICAgdGhpcy5leHRlcm5hbFNldHRpbmdzID0gSlNPTi5wYXJzZShidW5kbGVTZXR0aW5ncyk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zKSB7XHJcbiAgICAgIHRoaXMuZXh0ZXJuYWxTZXR0aW5ncy5vcHRpb25zID0gdGhpcy5vcHRpb25zO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5leHRlcm5hbFNldHRpbmdzLmFzc2V0UGF0aCA9IFwiaHR0cHM6Ly9jZG4xLmNvbGlqbi1pdC5ubC9jb250ZW50NDNcIjtcclxuICAgIC8vIHRoaXMuZXh0ZXJuYWxTZXR0aW5ncy50aHJlZURBc3NldFBhdGggPSBcImh0dHBzOi8vY2RuMS5jb2xpam4taXQubmwvY29udGVudDQzXCI7XHJcbiAgICBpZiAodGhpcy5leHRlcm5hbFNvdXJjZS51c2VybmFtZSAmJiB0aGlzLmV4dGVybmFsU291cmNlLnBhc3N3b3JkKSB7XHJcbiAgICAgIHRoaXMuZXh0ZXJuYWxTZXR0aW5ncy51c2VMb2dpbkVuY3J5cHRpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmV4dGVybmFsU2V0dGluZ3MudXNlcm5hbWUgPSB0aGlzLmV4dGVybmFsU291cmNlLnVzZXJuYW1lO1xyXG4gICAgICB0aGlzLmV4dGVybmFsU2V0dGluZ3MucGFzc3dvcmQgPSB0aGlzLmV4dGVybmFsU291cmNlLnBhc3N3b3JkO1xyXG4gICAgfVxyXG4gICAgLy8gZmluYWxseSBzaG93IHRoZSBjYXRhbG9nXHJcbiAgICB0aGlzLnN3aXRjaFRvUHJvZHVjdCgpO1xyXG4gICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcHJlcGFyZUNvbmZpZ3VyYXRvcigpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMuZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8pIHtcclxuICAgICAgdGhpcy50b2tlbiA9IHRoaXMuZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8udG9rZW47XHJcbiAgICAgIHRoaXMuc2t1ID0gdGhpcy5leHRlcm5hbENhdGFsb2dTdGFydHVwSW5mby5leHRlcm5hbEdvb2RJZDtcclxuICAgICAgdGhpcy52YXJpYW50ID0gdGhpcy5leHRlcm5hbENhdGFsb2dTdGFydHVwSW5mby5mbGF0dGVuZWRHb29kSWQ7XHJcbiAgICAgIHRoaXMudXJsUGFyYW1zID0gdGhpcy5leHRlcm5hbENhdGFsb2dTdGFydHVwSW5mby5leHRlcm5hbFNvdXJjZS5wYXJhbWV0ZXJzO1xyXG4gICAgICB0aGlzLnN3aXRjaFRvQ29uZmlndXJhdG9yKCk7XHJcbiAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVTb3VyY2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4dGVybmFsVXJsID0gdGhpcy5leHRlcm5hbFNvdXJjZS51cmw7XHJcbiAgICB0aGlzLnNhZmVVcmwgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuZXh0ZXJuYWxVcmwpO1xyXG4gICAgdGhpcy5zd2l0Y2hUb1NvdXJjZSgpO1xyXG4gICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzd2l0Y2hUb1Byb2R1Y3QoKTp2b2lkIHtcclxuICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSB0cnVlO1xyXG4gICAgdGhpcy5zaG93Q29uZmlndXJhdG9yID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTb3VyY2UgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3dpdGNoVG9Db25maWd1cmF0b3IoKTp2b2lkIHtcclxuICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NvbmZpZ3VyYXRvciA9IHRydWU7XHJcbiAgICB0aGlzLnNob3dTb3VyY2UgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3dpdGNoVG9Tb3VyY2UoKTp2b2lkIHtcclxuICAgIHRoaXMuc2hvd1Byb2R1Y3QgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NvbmZpZ3VyYXRvciA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U291cmNlID0gdHJ1ZTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -6,6 +6,7 @@ export class ProductHdComponent {
6
6
  this._scriptLoader = _scriptLoader;
7
7
  this._renderer = _renderer;
8
8
  this.variant = '';
9
+ this.urlParams = [];
9
10
  this.configuratorFinished = new EventEmitter();
10
11
  this.configurationError = new EventEmitter();
11
12
  this.showClass = true;
@@ -36,7 +37,10 @@ export class ProductHdComponent {
36
37
  this.configurationError.emit(event.detail.status);
37
38
  }
38
39
  _prepareAttributes() {
39
- if (this.hdeConfigurator && this.hdeConfigurator.nativeElement && this.token && (this.sku || this.variant)) {
40
+ if (this.hdeConfigurator && this.hdeConfigurator.nativeElement && this.urlParams && this.token && (this.sku || this.variant)) {
41
+ //for local testing please turn off for packing and publishing!
42
+ //this.prepareTestingUrlparams();
43
+ this._prepareConfiguratorUrls();
40
44
  this.hdeConfigurator.nativeElement.setAttribute('bearerToken', this.token);
41
45
  if (this._sku) {
42
46
  this.hdeConfigurator.nativeElement.setAttribute('data-productId', this._sku);
@@ -47,19 +51,43 @@ export class ProductHdComponent {
47
51
  this._loadTheScripts();
48
52
  }
49
53
  }
50
- // load external scripts
54
+ //set necessary references to configurator.
55
+ _prepareConfiguratorUrls() {
56
+ //fetch the setting from the external source
57
+ let apiurl = this.urlParams.find((item) => item.key === 'apiurl').value;
58
+ let productVariantCommandApiUrl = this.urlParams.find((item) => item.key === 'productVariantCommandApiUrl').value;
59
+ let productVariantQueryApiUrl = this.urlParams.find((item) => item.key === 'productVariantQueryApiUrl').value;
60
+ let localizationApiUrl = this.urlParams.find((item) => item.key === 'localizationApiUrl').value;
61
+ //apply to configurator
62
+ this.hdeConfigurator.nativeElement.setAttribute('apiurl', apiurl);
63
+ this.hdeConfigurator.nativeElement.setAttribute('productVariantCommandApiUrl', productVariantCommandApiUrl);
64
+ this.hdeConfigurator.nativeElement.setAttribute('productVariantQueryApiUrl', productVariantQueryApiUrl);
65
+ this.hdeConfigurator.nativeElement.setAttribute('localizationApiUrl', localizationApiUrl);
66
+ }
67
+ // load external scripts into client
51
68
  _loadTheScripts() {
52
69
  return __awaiter(this, void 0, void 0, function* () {
53
- const scripts = [
54
- // hard-coded for now, should come from the external source
55
- 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/polyfills.js',
56
- 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/runtime.js',
57
- 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/main.js'
58
- ];
70
+ let headerUrls = this.urlParams.find((item) => item.key === 'header').value;
71
+ let headerArray = headerUrls.replace(/\s+/g, '').split(',');
72
+ for (let i = 0; i < headerArray.length; i++) {
73
+ yield this._scriptLoader.loadScript(headerArray[i], this._renderer).catch((error) => console.error(error));
74
+ }
75
+ let styles = this.urlParams.find((item) => item.key === 'stylesheet').value;
76
+ let stylesArray = styles.replace(/\s+/g, '').split(',');
77
+ for (let j = 0; j < stylesArray.length; j++) {
78
+ yield this._scriptLoader.addStyleSheet(stylesArray[j], this._renderer);
79
+ }
80
+ //for local testing please turn off for packing and publishing!
81
+ /*const scripts: string[] = [
82
+ // hard-coded for now, should come from the external source
83
+ 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/polyfills.js',
84
+ 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/runtime.js',
85
+ 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/main.js'
86
+ ]
59
87
  for (let i = 0; i < scripts.length; i++) {
60
- yield this._scriptLoader.loadScript(scripts[i], this._renderer).catch((error) => console.error(error));
88
+ await this._scriptLoader.loadScript(scripts[i], this._renderer).catch((error) => console.error(error));
61
89
  }
62
- yield this._scriptLoader.addStyleSheet('https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/styles.css', this._renderer);
90
+ await this._scriptLoader.addStyleSheet('https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/styles.css', this._renderer);*/
63
91
  });
64
92
  }
65
93
  }
@@ -68,11 +96,7 @@ ProductHdComponent.decorators = [
68
96
  selector: 'co-product-hd',
69
97
  template: `
70
98
  <hde-configurator #hdeConfigurator
71
- apiurl="https://bmsproductconfigurator-acceptance.azurewebsites.net/api/configurator/"
72
- productVariantCommandApiUrl="https://bmsproductvariantcommand-acceptance.azurewebsites.net/"
73
- productVariantQueryApiUrl="https://bmsproductvariantquery-acceptance.azurewebsites.net/"
74
99
  language="nl"
75
- localizationApiUrl="https://hde-cdn.azureedge.net/libs/BMS.DST.Localization/"
76
100
  localizationFileExtension=".json"
77
101
  (configurationFinished)="handleConfigurationFinished($event)"
78
102
  (configurationFailed)="handleError($event)"
@@ -92,8 +116,9 @@ ProductHdComponent.propDecorators = {
92
116
  sku: [{ type: Input }],
93
117
  token: [{ type: Input }],
94
118
  variant: [{ type: Input }],
119
+ urlParams: [{ type: Input }],
95
120
  configuratorFinished: [{ type: Output }],
96
121
  configurationError: [{ type: Output }],
97
122
  showClass: [{ type: HostBinding, args: ['class.co-product-hd',] }]
98
123
  };
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1oZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcHJvZHVjdC1oZC9wcm9kdWN0LWhkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBb0J2RixNQUFNLE9BQU8sa0JBQWtCO0lBb0M3QixZQUNVLGFBQXlDLEVBQ3pDLFNBQW9CO1FBRHBCLGtCQUFhLEdBQWIsYUFBYSxDQUE0QjtRQUN6QyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBbEJ2QixZQUFPLEdBQVcsRUFBRSxDQUFDO1FBR3JCLHlCQUFvQixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBR3hFLHVCQUFrQixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBSWhFLGNBQVMsR0FBWSxJQUFJLENBQUM7SUFVakMsQ0FBQztJQXZDRCxJQUFzRCxPQUFPLENBQUMsS0FBSztRQUNqRSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFDVyxHQUFHLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUE0QkQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sMkJBQTJCLENBQUMsS0FBa0I7UUFDbkQsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUNwRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEQ7YUFBTTtZQUNMLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFrQjtRQUNuQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBRTFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDYixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzlFO1lBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3hGO1lBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELHdCQUF3QjtJQUNWLGVBQWU7O1lBQzNCLE1BQU0sT0FBTyxHQUFhO2dCQUN4QiwyREFBMkQ7Z0JBQzNELGdGQUFnRjtnQkFDaEYsOEVBQThFO2dCQUM5RSwyRUFBMkU7YUFDNUUsQ0FBQTtZQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN2QyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDeEc7WUFDRCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLDhFQUE4RSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6SSxDQUFDO0tBQUE7OztZQXRHRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7OztHQWFUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFuQk8sMEJBQTBCO1lBSmhDLFNBQVM7OztzQkF5QlIsU0FBUyxTQUFDLGlCQUFpQixFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQztrQkFLL0MsS0FBSztvQkFVTCxLQUFLO3NCQUdMLEtBQUs7bUNBR0wsTUFBTTtpQ0FHTixNQUFNO3dCQUlOLFdBQVcsU0FBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtQcm9kdWN0U2NyaXB0TG9hZGVyU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LXNjcmlwdC1sb2FkZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLXByb2R1Y3QtaGQnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8aGRlLWNvbmZpZ3VyYXRvciAjaGRlQ29uZmlndXJhdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcGl1cmw9XCJodHRwczovL2Jtc3Byb2R1Y3Rjb25maWd1cmF0b3ItYWNjZXB0YW5jZS5henVyZXdlYnNpdGVzLm5ldC9hcGkvY29uZmlndXJhdG9yL1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0VmFyaWFudENvbW1hbmRBcGlVcmw9XCJodHRwczovL2Jtc3Byb2R1Y3R2YXJpYW50Y29tbWFuZC1hY2NlcHRhbmNlLmF6dXJld2Vic2l0ZXMubmV0L1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0VmFyaWFudFF1ZXJ5QXBpVXJsPVwiaHR0cHM6Ly9ibXNwcm9kdWN0dmFyaWFudHF1ZXJ5LWFjY2VwdGFuY2UuYXp1cmV3ZWJzaXRlcy5uZXQvXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlPVwibmxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbG9jYWxpemF0aW9uQXBpVXJsPVwiaHR0cHM6Ly9oZGUtY2RuLmF6dXJlZWRnZS5uZXQvbGlicy9CTVMuRFNULkxvY2FsaXphdGlvbi9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbG9jYWxpemF0aW9uRmlsZUV4dGVuc2lvbj1cIi5qc29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjb25maWd1cmF0aW9uRmluaXNoZWQpPVwiaGFuZGxlQ29uZmlndXJhdGlvbkZpbmlzaGVkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNvbmZpZ3VyYXRpb25GYWlsZWQpPVwiaGFuZGxlRXJyb3IoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICAgIDxoZGUtcHJvZ3Jlc3MtYmFyPjwvaGRlLXByb2dyZXNzLWJhcj5cclxuICAgIDwvaGRlLWNvbmZpZ3VyYXRvcj5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2R1Y3RIZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgnaGRlQ29uZmlndXJhdG9yJywge3JlYWQ6IEVsZW1lbnRSZWZ9KSBzZXQgY29udGVudChjaGlsZCkge1xyXG4gICAgdGhpcy5oZGVDb25maWd1cmF0b3IgPSBjaGlsZDtcclxuICAgIHRoaXMuX3ByZXBhcmVBdHRyaWJ1dGVzKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgc2t1KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3NrdSA9IHZhbHVlO1xyXG4gICAgdGhpcy5fcHJlcGFyZUF0dHJpYnV0ZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2t1KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2t1O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdG9rZW46IHN0cmluZzsgLy8gPSBcImV5SmhiR2NpT2lKU1V6STFOaUlzSW10cFpDSTZJa1l4T1RoRVJrVkVPRVV3UVRRMU16WTNNME0xTVVFMlJqazFRVVZEUXpVM1JUTTBOak00UmtSU1V6STFOaUlzSW5SNWNDSTZJbUYwSzJwM2RDSXNJbmcxZENJNklqaGFhbVkzV1RSTFVsUmFlbmhTY0hac1lUZE5WaTFPUjA5UU1DSjkuZXlKdVltWWlPakUzTXpjeE1qUTJORFFzSW1WNGNDSTZNVGN6TnpFeU9ESTBOQ3dpYVhOeklqb2lhSFIwY0hNNkx5OWliWE5wWkdWdWRHbDBlUzFoWTJObGNIUmhibU5sTG1GNmRYSmxkMlZpYzJsMFpYTXVibVYwSWl3aVlYVmtJanBiSW1OaGRHRnNiMmR4ZFdWeWVXRndhU0lzSW1OdmJtWnBaM1Z5WVhSdmNtRndhU0lzSW5CeWIyUjFZM1IyWVhKcFlXNTBZMjl0YldGdVpHRndhU0lzSW5CeWIyUjFZM1IyWVhKcFlXNTBjWFZsY25saGNHa2lYU3dpWTJ4cFpXNTBYMmxrSWpvaWFXMXdaWEp6YjI1aGRHbHZiaTVqYkdsbGJuUWlMQ0p6ZFdJaU9pSXdPVE13WkRJNE1pMDVOR1U0TFRRNU1HRXRPR0kyTkMxbVlUazFZbUl5WXpFMU9ESWlMQ0poZFhSb1gzUnBiV1VpT2pFM016Y3hNalEyTkRRc0ltbGtjQ0k2SW14dlkyRnNJaXdpWlc1MmFYSnZibTFsYm5RaU9pSk5VMHdpTENKelpXeHNaWElpT2lKVFJUQXdNREE1TmlJc0luTmxiR3hsY21kMWFXUWlPaUl4TURrMU1XSmpOUzFoWm1NekxUUTFNR0V0Tm1Wa01TMHdPR1E0TkRObE5tRTVPVFFpTENKd1pYSnRhWE56YVc5dUlqcGJJbk5oYkdWekxtVjRjRzl5ZEhSbGJYQnNZWFJsY3k1eVpXRmtJaXdpWkc5amRXMWxiblJzYVdKeVlYSjVMblJoWnk1eVpXRmtJaXdpWkc5amRXMWxiblJzYVdKeVlYSjVMbVJ2WTNWdFpXNTBMbkpsWVdRaUxDSmtiMk4xYldWdWRHeHBZbkpoY25rdWRHRm5aM0p2ZFhBdWNtVmhaQ0lzSW5OaGJHVnpMbTl5WkdWeUxuZHlhWFJsSWl3aWMyRnNaWE11WTNWemRHOXRaWEl1Y21WaFpDSXNJbk5oYkdWekxtOXlaR1Z5TG1SbGJHbDJaWEo1WVdSa2NtVnpjeTUzY21sMFpTSXNJbk5sY25acFkyVXVjbVZ4ZFdWemRDNXlaV0ZrSWl3aVkyRjBZV3h2Wnk1MFlXY3VjbVZoWkNJc0luTmhiR1Z6TG05eVpHVnlMbkpsWVdRaUxDSnpZV3hsY3k1amRYTjBiMjFsY2k1M2NtbDBaU0lzSW5KbGNYVmxjM1JtYjNKeGRXOTBaUzUzY21sMFpTSXNJbk5oYkdWekxtOXlaR1Z5TG1KdmIyc2lMQ0p5WlhGMVpYTjBabTl5Y1hWdmRHVXVjbVZoWkNJc0luTmhiR1Z6TG14bFlXUXVjbVZoWkNJc0luQjFjbU5vWVhObExtOXlaR1Z5TG5KbFlXUWlMQ0p6WVd4bGN5NXhkVzkwWlM1eVpXRmtJaXdpYzJGc1pYTXVjWFZ2ZEdVdWQzSnBkR1VpTENKallYUmhiRzluTG1sMFpXMHVjbVZoWkNJc0luTmhiR1Z6TG14bFlXUXVkM0pwZEdVaUxDSnpaWEoyYVdObExuSmxjWFZsYzNRdWMzVmliV2wwSWl3aWMyRnNaWE11YjNKa1pYSXVaR1ZzYVhabGNubGhaR1J5WlhOekxuSmxZV1FpTENKd2RYSmphR0Z6WlM1dmNtUmxjaTUzY21sMFpTSXNJbkIxY21Ob1lYTmxMbTl5WkdWeUxuQnlhV05sY3k1M2NtbDBaU0lzSW5CMWNtTm9ZWE5sTG05eVpHVnlMbkJ5YVdObGN5NXlaV0ZrSWl3aWMyVnlkbWxqWlM1eVpYRjFaWE4wTG5keWFYUmxJaXdpWTJGMFlXeHZaeTVqWVhSaGJHOW5MbkpsWVdRaUxDSmpZWFJoYkc5bkxtTmhkR0ZzYjJjdWQzSnBkR1VpTENKallYUmhiRzluTG1OMWNuSmxibU41TG5KbFlXUWlMQ0pqWVhSaGJHOW5MbU4xY25KbGJtTjVMbmR5YVhSbElpd2lZMkYwWVd4dlp5NXBkR1Z0TG5keWFYUmxJaXdpWTJGMFlXeHZaeTVzYjJOaGJHbDZZWFJwYjI0dWNtVmhaQ0lzSW1OaGRHRnNiMmN1Ykc5allXeHBlbUYwYVc5dUxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1d2NtOWtkV04wTG5KbFlXUWlMQ0pqWVhSaGJHOW5MbkJ5YjJSMVkzUXVkM0pwZEdVaUxDSmpZWFJoYkc5bkxuQnliMlIxWTNSelpYUjBhVzVuTG5KbFlXUWlMQ0pqWVhSaGJHOW5MbkJ5YjJSMVkzUnpaWFIwYVc1bkxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1elpXeHNaWEl1Y21WaFpDSXNJbU5oZEdGc2IyY3VjMlZzYkdWeUxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1MFlXY3VkM0pwZEdVaUxDSmpZWFJoYkc5bkxuVnZiUzV5WldGa0lpd2lZMkYwWVd4dlp5NTFiMjB1ZDNKcGRHVWlMQ0pqWVhSaGJHOW5MblpoZEdOaGRHVm5iM0o1TG5KbFlXUWlMQ0pqWVhSaGJHOW5MblpoZEdOaGRHVm5iM0o1TG5keWFYUmxJaXdpWTJGMFlXeHZaeTUyWlc1a2IzSXVjbVZoWkNJc0ltTmhkR0ZzYjJjdWRtVnVaRzl5TG5keWFYUmxJaXdpY0hWeVkyaGhjMlV1YzJWc2JHVnlMbkpsWVdRaUxDSndkWEpqYUdGelpTNXpaV3hzWlhJdWQzSnBkR1VpTENKallYUmhiRzluTG1GeWRHbGpiR1V1Y21WaFpDSXNJbU5oZEdGc2IyY3VZWEowYVdOc1pTNTNjbWwwWlNJc0luTmhiR1Z6TG5GMWIzUmxMbXhwYm1WekxuSmxZV1FpTENKellXeGxjeTV4ZFc5MFpTNXNhVzVsY3k1M2NtbDBaU0lzSW5OaGJHVnpMbk5sYkd4bGNpNXlaV0ZrSWl3aWMyRnNaWE11YzJWc2JHVnlMbmR5YVhSbElpd2lZV05qYjNWdWRHbHVaeTUyWlc1a2IzSnBiblp2YVdObExuSmxZV1FpTENKcFpHVnVkR2wwZVM1MWMyVnlMbkpsWVdRaUxDSnBaR1Z1ZEdsMGVTNTFjMlZ5TG5keWFYUmxJaXdpYVdSbGJuUnBkSGt1Y205c1pTNXlaV0ZrSWl3aWMyVnNiR1Z5TG5CeWIyUjFZM1J3Y21salpTNXpaWFIwYVc1bmN5NXlaV0ZrSWl3aWMyVnNiR1Z5TG5CeWIyUjFZM1J3Y21salpTNXpaWFIwYVc1bmN5NTNjbWwwWlNJc0ltTnZibVpwWjNWeVlYUnZjaTV3ZFhKamFHRnpaWEJ5YVdObExuSmxZV1FpTENKemRHOWpheTVtWVdKeWFXTXVjbVZoWkNJc0luTmhiR1Z6TG05eVpHVnlMbkJzWVdObElsMHNJbTVoYldVaU9pSlNiMkpwYmlJc0ltWmhiV2xzZVY5dVlXMWxJam9pWkdVZ1YybHVkR1Z5SUNoRGIyeHBhbTR0U1ZRcElpd2ljbTlzWlNJNld5SnpaV3hzWlhJaUxDSmtaV0ZzWlhKZmJXRnVZV2RsY2lKZExDSnBZWFFpT2pFM016Y3hNalEyTkRRc0luTmpiM0JsSWpwYkltTmhkR0ZzYjJkeGRXVnllV0Z3YVNJc0ltTnZibVpwWjNWeVlYUnZjbUZ3YVNJc0luQnliMlIxWTNSMllYSnBZVzUwWTI5dGJXRnVaR0Z3YVNJc0luQnliMlIxWTNSMllYSnBZVzUwY1hWbGNubGhjR2tpWFN3aVlXMXlJanBiSW1sdGNHVnljMjl1WVhScGIyNGlYWDAuSXJtZ0pieVByV3dOWU8xeGd5RmNWM09zbVE3cUY1bmJodXg4b3BMejhWVzR6YTNjbzRhWFVFNEU5SFlCekpGcHVyY3Y5VDdvTDBBaGJRcTR6YmpOU1c5NzNHWUFGSV9ldUlNWm9idHpYSEtfY29CdVR4V1huZkRDOE1tRkFKaGR1SXQxSFhnWVZYNmR0WV9SV3dhSGZFSXk0SjVZQmp4eldnSGdEclJHX0VkbjVfUUtmQzZQdVR6TFVvSGtJYXVsZWhHazhwdGxSS3dOb0hpR0F4a0h0LWdyZWZCalBseWVXOThPOVBxUHpsNF93UjZQX2M4d0pRaUZDakFQcEFEdmtLdXdkTjA2QkoyUTltWFFhc1lPb201TTZmLUI1MVBCUnlhalgtZjIwckEzamoxNmJSTG5JcXZXUlotcC1VMnp4ZldVS3dCQVhhLWFFY0xINkxIVEFRXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHZhcmlhbnQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY29uZmlndXJhdG9yRmluaXNoZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjb25maWd1cmF0aW9uRXJyb3I6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLXByb2R1Y3QtaGQnKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3M6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwdWJsaWMgaGRlQ29uZmlndXJhdG9yOiBFbGVtZW50UmVmO1xyXG5cclxuICBwcml2YXRlIF9za3U6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9zY3JpcHRMb2FkZXI6IFByb2R1Y3RTY3JpcHRMb2FkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMlxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl9zY3JpcHRMb2FkZXIudW5sb2FkU2NyaXB0cyh0aGlzLl9yZW5kZXJlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ29uZmlndXJhdGlvbkZpbmlzaGVkKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmRldGFpbC52YXJpYW50ICYmIHR5cGVvZiBldmVudC5kZXRhaWwudmFyaWFudCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgdGhpcy5jb25maWd1cmF0b3JGaW5pc2hlZC5lbWl0KGV2ZW50LmRldGFpbC52YXJpYW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdG9yRmluaXNoZWQuZW1pdCh0aGlzLnZhcmlhbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUVycm9yKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25maWd1cmF0aW9uRXJyb3IuZW1pdChldmVudC5kZXRhaWwuc3RhdHVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVBdHRyaWJ1dGVzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGRlQ29uZmlndXJhdG9yICYmIHRoaXMuaGRlQ29uZmlndXJhdG9yLm5hdGl2ZUVsZW1lbnQgJiYgdGhpcy50b2tlbiAmJiAodGhpcy5za3UgfHwgdGhpcy52YXJpYW50KSkge1xyXG5cclxuICAgICAgdGhpcy5oZGVDb25maWd1cmF0b3IubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2JlYXJlclRva2VuJywgdGhpcy50b2tlbik7XHJcbiAgICAgIGlmICh0aGlzLl9za3UpIHtcclxuICAgICAgICB0aGlzLmhkZUNvbmZpZ3VyYXRvci5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1wcm9kdWN0SWQnLCB0aGlzLl9za3UpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnZhcmlhbnQpIHtcclxuICAgICAgICB0aGlzLmhkZUNvbmZpZ3VyYXRvci5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1wcm9kdWN0VmFyaWFudElkJywgdGhpcy52YXJpYW50KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9sb2FkVGhlU2NyaXB0cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gbG9hZCBleHRlcm5hbCBzY3JpcHRzXHJcbiAgcHJpdmF0ZSBhc3luYyBfbG9hZFRoZVNjcmlwdHMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBzY3JpcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgLy8gaGFyZC1jb2RlZCBmb3Igbm93LCBzaG91bGQgY29tZSBmcm9tIHRoZSBleHRlcm5hbCBzb3VyY2VcclxuICAgICAgJ2h0dHBzOi8vaGRlLWNkbi5henVyZWVkZ2UubmV0L2xpYnMvY29tcG9uZW50cy9Db25maWd1cmF0b3IvMS4wLjMzL3BvbHlmaWxscy5qcycsXHJcbiAgICAgICdodHRwczovL2hkZS1jZG4uYXp1cmVlZGdlLm5ldC9saWJzL2NvbXBvbmVudHMvQ29uZmlndXJhdG9yLzEuMC4zMy9ydW50aW1lLmpzJyxcclxuICAgICAgJ2h0dHBzOi8vaGRlLWNkbi5henVyZWVkZ2UubmV0L2xpYnMvY29tcG9uZW50cy9Db25maWd1cmF0b3IvMS4wLjMzL21haW4uanMnXHJcbiAgICBdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgYXdhaXQgdGhpcy5fc2NyaXB0TG9hZGVyLmxvYWRTY3JpcHQoc2NyaXB0c1tpXSwgdGhpcy5fcmVuZGVyZXIpLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5lcnJvcihlcnJvcikpO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5fc2NyaXB0TG9hZGVyLmFkZFN0eWxlU2hlZXQoJ2h0dHBzOi8vaGRlLWNkbi5henVyZWVkZ2UubmV0L2xpYnMvY29tcG9uZW50cy9Db25maWd1cmF0b3IvMS4wLjMzL3N0eWxlcy5jc3MnLCB0aGlzLl9yZW5kZXJlcik7XHJcbiAgfVxyXG59XHJcbiJdfQ==
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1oZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcHJvZHVjdC1oZC9wcm9kdWN0LWhkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBaUJ2RixNQUFNLE9BQU8sa0JBQWtCO0lBdUM3QixZQUNVLGFBQXlDLEVBQ3pDLFNBQW9CO1FBRHBCLGtCQUFhLEdBQWIsYUFBYSxDQUE0QjtRQUN6QyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBckJ2QixZQUFPLEdBQVcsRUFBRSxDQUFDO1FBR3JCLGNBQVMsR0FBOEIsRUFBRSxDQUFDO1FBRzFDLHlCQUFvQixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBR3hFLHVCQUFrQixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBSWhFLGNBQVMsR0FBWSxJQUFJLENBQUM7SUFVakMsQ0FBQztJQTFDRCxJQUFzRCxPQUFPLENBQUMsS0FBSztRQUNqRSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFDVyxHQUFHLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUErQkQsV0FBVztRQUNULElB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QUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDeEU7WUFFRCwrREFBK0Q7WUFDL0Q7Ozs7Ozs7OztxSkFTeUk7UUFDM0ksQ0FBQztLQUFBOzs7WUFwSUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QixRQUFRLEVBQUU7Ozs7Ozs7OztHQVNUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFoQk8sMEJBQTBCO1lBSmhDLFNBQVM7OztzQkFzQlIsU0FBUyxTQUFDLGlCQUFpQixFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQztrQkFLL0MsS0FBSztvQkFVTCxLQUFLO3NCQUdMLEtBQUs7d0JBR0wsS0FBSzttQ0FHTCxNQUFNO2lDQUdOLE1BQU07d0JBSU4sV0FBVyxTQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1Byb2R1Y3RTY3JpcHRMb2FkZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3Qtc2NyaXB0LWxvYWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtFeHRlcm5hbFNvdXJjZVBhcmFtZXRlcn0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvZXh0ZXJuYWwtc291cmNlLXBhcmFtZXRlci5ibyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLXByb2R1Y3QtaGQnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8aGRlLWNvbmZpZ3VyYXRvciAjaGRlQ29uZmlndXJhdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZT1cIm5sXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGxvY2FsaXphdGlvbkZpbGVFeHRlbnNpb249XCIuanNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY29uZmlndXJhdGlvbkZpbmlzaGVkKT1cImhhbmRsZUNvbmZpZ3VyYXRpb25GaW5pc2hlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjb25maWd1cmF0aW9uRmFpbGVkKT1cImhhbmRsZUVycm9yKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgICA8aGRlLXByb2dyZXNzLWJhcj48L2hkZS1wcm9ncmVzcy1iYXI+XHJcbiAgICA8L2hkZS1jb25maWd1cmF0b3I+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9kdWN0SGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2hkZUNvbmZpZ3VyYXRvcicsIHtyZWFkOiBFbGVtZW50UmVmfSkgc2V0IGNvbnRlbnQoY2hpbGQpIHtcclxuICAgIHRoaXMuaGRlQ29uZmlndXJhdG9yID0gY2hpbGQ7XHJcbiAgICB0aGlzLl9wcmVwYXJlQXR0cmlidXRlcygpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNrdSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9za3UgPSB2YWx1ZTtcclxuICAgIHRoaXMuX3ByZXBhcmVBdHRyaWJ1dGVzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNrdSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NrdTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHRva2VuOiBzdHJpbmc7IC8vPSBcImV5SmhiR2NpT2lKU1V6STFOaUlzSW10cFpDSTZJa1l4T1RoRVJrVkVPRVV3UVRRMU16WTNNME0xTVVFMlJqazFRVVZEUXpVM1JUTTBOak00UmtSU1V6STFOaUlzSW5SNWNDSTZJbUYwSzJwM2RDSXNJbmcxZENJNklqaGFhbVkzV1RSTFVsUmFlbmhTY0hac1lUZE5WaTFPUjA5UU1DSjkuZXlKdVltWWlPakUzTXpjeE1qUTJORFFzSW1WNGNDSTZNVGN6TnpFeU9ESTBOQ3dpYVhOeklqb2lhSFIwY0hNNkx5OWliWE5wWkdWdWRHbDBlUzFoWTJObGNIUmhibU5sTG1GNmRYSmxkMlZpYzJsMFpYTXVibVYwSWl3aVlYVmtJanBiSW1OaGRHRnNiMmR4ZFdWeWVXRndhU0lzSW1OdmJtWnBaM1Z5WVhSdmNtRndhU0lzSW5CeWIyUjFZM1IyWVhKcFlXNTBZMjl0YldGdVpHRndhU0lzSW5CeWIyUjFZM1IyWVhKcFlXNTBjWFZsY25saGNHa2lYU3dpWTJ4cFpXNTBYMmxrSWpvaWFXMXdaWEp6YjI1aGRHbHZiaTVqYkdsbGJuUWlMQ0p6ZFdJaU9pSXdPVE13WkRJNE1pMDVOR1U0TFRRNU1HRXRPR0kyTkMxbVlUazFZbUl5WXpFMU9ESWlMQ0poZFhSb1gzUnBiV1VpT2pFM016Y3hNalEyTkRRc0ltbGtjQ0k2SW14dlkyRnNJaXdpWlc1MmFYSnZibTFsYm5RaU9pSk5VMHdpTENKelpXeHNaWElpT2lKVFJUQXdNREE1TmlJc0luTmxiR3hsY21kMWFXUWlPaUl4TURrMU1XSmpOUzFoWm1NekxUUTFNR0V0Tm1Wa01TMHdPR1E0TkRObE5tRTVPVFFpTENKd1pYSnRhWE56YVc5dUlqcGJJbk5oYkdWekxtVjRjRzl5ZEhSbGJYQnNZWFJsY3k1eVpXRmtJaXdpWkc5amRXMWxiblJzYVdKeVlYSjVMblJoWnk1eVpXRmtJaXdpWkc5amRXMWxiblJzYVdKeVlYSjVMbVJ2WTNWdFpXNTBMbkpsWVdRaUxDSmtiMk4xYldWdWRHeHBZbkpoY25rdWRHRm5aM0p2ZFhBdWNtVmhaQ0lzSW5OaGJHVnpMbTl5WkdWeUxuZHlhWFJsSWl3aWMyRnNaWE11WTNWemRHOXRaWEl1Y21WaFpDSXNJbk5oYkdWekxtOXlaR1Z5TG1SbGJHbDJaWEo1WVdSa2NtVnpjeTUzY21sMFpTSXNJbk5sY25acFkyVXVjbVZ4ZFdWemRDNXlaV0ZrSWl3aVkyRjBZV3h2Wnk1MFlXY3VjbVZoWkNJc0luTmhiR1Z6TG05eVpHVnlMbkpsWVdRaUxDSnpZV3hsY3k1amRYTjBiMjFsY2k1M2NtbDBaU0lzSW5KbGNYVmxjM1JtYjNKeGRXOTBaUzUzY21sMFpTSXNJbk5oYkdWekxtOXlaR1Z5TG1KdmIyc2lMQ0p5WlhGMVpYTjBabTl5Y1hWdmRHVXVjbVZoWkNJc0luTmhiR1Z6TG14bFlXUXVjbVZoWkNJc0luQjFjbU5vWVhObExtOXlaR1Z5TG5KbFlXUWlMQ0p6WVd4bGN5NXhkVzkwWlM1eVpXRmtJaXdpYzJGc1pYTXVjWFZ2ZEdVdWQzSnBkR1VpTENKallYUmhiRzluTG1sMFpXMHVjbVZoWkNJc0luTmhiR1Z6TG14bFlXUXVkM0pwZEdVaUxDSnpaWEoyYVdObExuSmxjWFZsYzNRdWMzVmliV2wwSWl3aWMyRnNaWE11YjNKa1pYSXVaR1ZzYVhabGNubGhaR1J5WlhOekxuSmxZV1FpTENKd2RYSmphR0Z6WlM1dmNtUmxjaTUzY21sMFpTSXNJbkIxY21Ob1lYTmxMbTl5WkdWeUxuQnlhV05sY3k1M2NtbDBaU0lzSW5CMWNtTm9ZWE5sTG05eVpHVnlMbkJ5YVdObGN5NXlaV0ZrSWl3aWMyVnlkbWxqWlM1eVpYRjFaWE4wTG5keWFYUmxJaXdpWTJGMFlXeHZaeTVqWVhSaGJHOW5MbkpsWVdRaUxDSmpZWFJoYkc5bkxtTmhkR0ZzYjJjdWQzSnBkR1VpTENKallYUmhiRzluTG1OMWNuSmxibU41TG5KbFlXUWlMQ0pqWVhSaGJHOW5MbU4xY25KbGJtTjVMbmR5YVhSbElpd2lZMkYwWVd4dlp5NXBkR1Z0TG5keWFYUmxJaXdpWTJGMFlXeHZaeTVzYjJOaGJHbDZZWFJwYjI0dWNtVmhaQ0lzSW1OaGRHRnNiMmN1Ykc5allXeHBlbUYwYVc5dUxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1d2NtOWtkV04wTG5KbFlXUWlMQ0pqWVhSaGJHOW5MbkJ5YjJSMVkzUXVkM0pwZEdVaUxDSmpZWFJoYkc5bkxuQnliMlIxWTNSelpYUjBhVzVuTG5KbFlXUWlMQ0pqWVhSaGJHOW5MbkJ5YjJSMVkzUnpaWFIwYVc1bkxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1elpXeHNaWEl1Y21WaFpDSXNJbU5oZEdGc2IyY3VjMlZzYkdWeUxuZHlhWFJsSWl3aVkyRjBZV3h2Wnk1MFlXY3VkM0pwZEdVaUxDSmpZWFJoYkc5bkxuVnZiUzV5WldGa0lpd2lZMkYwWVd4dlp5NTFiMjB1ZDNKcGRHVWlMQ0pqWVhSaGJHOW5MblpoZEdOaGRHVm5iM0o1TG5KbFlXUWlMQ0pqWVhSaGJHOW5MblpoZEdOaGRHVm5iM0o1TG5keWFYUmxJaXdpWTJGMFlXeHZaeTUyWlc1a2IzSXVjbVZoWkNJc0ltTmhkR0ZzYjJjdWRtVnVaRzl5TG5keWFYUmxJaXdpY0hWeVkyaGhjMlV1YzJWc2JHVnlMbkpsWVdRaUxDSndkWEpqYUdGelpTNXpaV3hzWlhJdWQzSnBkR1VpTENKallYUmhiRzluTG1GeWRHbGpiR1V1Y21WaFpDSXNJbU5oZEdGc2IyY3VZWEowYVdOc1pTNTNjbWwwWlNJc0luTmhiR1Z6TG5GMWIzUmxMbXhwYm1WekxuSmxZV1FpTENKellXeGxjeTV4ZFc5MFpTNXNhVzVsY3k1M2NtbDBaU0lzSW5OaGJHVnpMbk5sYkd4bGNpNXlaV0ZrSWl3aWMyRnNaWE11YzJWc2JHVnlMbmR5YVhSbElpd2lZV05qYjNWdWRHbHVaeTUyWlc1a2IzSnBiblp2YVdObExuSmxZV1FpTENKcFpHVnVkR2wwZVM1MWMyVnlMbkpsWVdRaUxDSnBaR1Z1ZEdsMGVTNTFjMlZ5TG5keWFYUmxJaXdpYVdSbGJuUnBkSGt1Y205c1pTNXlaV0ZrSWl3aWMyVnNiR1Z5TG5CeWIyUjFZM1J3Y21salpTNXpaWFIwYVc1bmN5NXlaV0ZrSWl3aWMyVnNiR1Z5TG5CeWIyUjFZM1J3Y21salpTNXpaWFIwYVc1bmN5NTNjbWwwWlNJc0ltTnZibVpwWjNWeVlYUnZjaTV3ZFhKamFHRnpaWEJ5YVdObExuSmxZV1FpTENKemRHOWpheTVtWVdKeWFXTXVjbVZoWkNJc0luTmhiR1Z6TG05eVpHVnlMbkJzWVdObElsMHNJbTVoYldVaU9pSlNiMkpwYmlJc0ltWmhiV2xzZVY5dVlXMWxJam9pWkdVZ1YybHVkR1Z5SUNoRGIyeHBhbTR0U1ZRcElpd2ljbTlzWlNJNld5SnpaV3hzWlhJaUxDSmtaV0ZzWlhKZmJXRnVZV2RsY2lKZExDSnBZWFFpT2pFM016Y3hNalEyTkRRc0luTmpiM0JsSWpwYkltTmhkR0ZzYjJkeGRXVnllV0Z3YVNJc0ltTnZibVpwWjNWeVlYUnZjbUZ3YVNJc0luQnliMlIxWTNSMllYSnBZVzUwWTI5dGJXRnVaR0Z3YVNJc0luQnliMlIxWTNSMllYSnBZVzUwY1hWbGNubGhjR2tpWFN3aVlXMXlJanBiSW1sdGNHVnljMjl1WVhScGIyNGlYWDAuSXJtZ0pieVByV3dOWU8xeGd5RmNWM09zbVE3cUY1bmJodXg4b3BMejhWVzR6YTNjbzRhWFVFNEU5SFlCekpGcHVyY3Y5VDdvTDBBaGJRcTR6YmpOU1c5NzNHWUFGSV9ldUlNWm9idHpYSEtfY29CdVR4V1huZkRDOE1tRkFKaGR1SXQxSFhnWVZYNmR0WV9SV3dhSGZFSXk0SjVZQmp4eldnSGdEclJHX0VkbjVfUUtmQzZQdVR6TFVvSGtJYXVsZWhHazhwdGxSS3dOb0hpR0F4a0h0LWdyZWZCalBseWVXOThPOVBxUHpsNF93UjZQX2M4d0pRaUZDakFQcEFEdmtLdXdkTjA2QkoyUTltWFFhc1lPb201TTZmLUI1MVBCUnlhalgtZjIwckEzamoxNmJSTG5JcXZXUlotcC1VMnp4ZldVS3dCQVhhLWFFY0xINkxIVEFRXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHZhcmlhbnQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB1cmxQYXJhbXM6IEV4dGVybmFsU291cmNlUGFyYW1ldGVyW10gPSBbXTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNvbmZpZ3VyYXRvckZpbmlzaGVkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY29uZmlndXJhdGlvbkVycm9yOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1wcm9kdWN0LWhkJylcclxuICBwdWJsaWMgc2hvd0NsYXNzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHVibGljIGhkZUNvbmZpZ3VyYXRvcjogRWxlbWVudFJlZjtcclxuXHJcbiAgcHJpdmF0ZSBfc2t1OiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfc2NyaXB0TG9hZGVyOiBQcm9kdWN0U2NyaXB0TG9hZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjJcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fc2NyaXB0TG9hZGVyLnVubG9hZFNjcmlwdHModGhpcy5fcmVuZGVyZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUNvbmZpZ3VyYXRpb25GaW5pc2hlZChldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC5kZXRhaWwudmFyaWFudCAmJiB0eXBlb2YgZXZlbnQuZGV0YWlsLnZhcmlhbnQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdG9yRmluaXNoZWQuZW1pdChldmVudC5kZXRhaWwudmFyaWFudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRvckZpbmlzaGVkLmVtaXQodGhpcy52YXJpYW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVFcnJvcihldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvbkVycm9yLmVtaXQoZXZlbnQuZGV0YWlsLnN0YXR1cyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlQXR0cmlidXRlcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhkZUNvbmZpZ3VyYXRvciAmJiB0aGlzLmhkZUNvbmZpZ3VyYXRvci5uYXRpdmVFbGVtZW50ICYmIHRoaXMudXJsUGFyYW1zICYmIHRoaXMudG9rZW4gJiYgKHRoaXMuc2t1IHx8IHRoaXMudmFyaWFudCkpIHtcclxuICAgICAgLy9mb3IgbG9jYWwgdGVzdGluZyBwbGVhc2UgdHVybiBvZmYgZm9yIHBhY2tpbmcgYW5kIHB1Ymxpc2hpbmchXHJcbiAgICAgIC8vdGhpcy5wcmVwYXJlVGVzdGluZ1VybHBhcmFtcygpO1xyXG5cclxuICAgICAgdGhpcy5fcHJlcGFyZUNvbmZpZ3VyYXRvclVybHMoKTtcclxuICAgICAgdGhpcy5oZGVDb25maWd1cmF0b3IubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2JlYXJlclRva2VuJywgdGhpcy50b2tlbik7XHJcbiAgICAgIGlmICh0aGlzLl9za3UpIHtcclxuICAgICAgICB0aGlzLmhkZUNvbmZpZ3VyYXRvci5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1wcm9kdWN0SWQnLCB0aGlzLl9za3UpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnZhcmlhbnQpIHtcclxuICAgICAgICB0aGlzLmhkZUNvbmZpZ3VyYXRvci5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1wcm9kdWN0VmFyaWFudElkJywgdGhpcy52YXJpYW50KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9sb2FkVGhlU2NyaXB0cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zZXQgbmVjZXNzYXJ5IHJlZmVyZW5jZXMgdG8gY29uZmlndXJhdG9yLlxyXG4gIHByaXZhdGUgX3ByZXBhcmVDb25maWd1cmF0b3JVcmxzKCk6IHZvaWQge1xyXG4gICAgLy9mZXRjaCB0aGUgc2V0dGluZyBmcm9tIHRoZSBleHRlcm5hbCBzb3VyY2VcclxuICAgIGxldCBhcGl1cmw6IHN0cmluZyA9IHRoaXMudXJsUGFyYW1zLmZpbmQoKGl0ZW06IEV4dGVybmFsU291cmNlUGFyYW1ldGVyKSA9PiBpdGVtLmtleSA9PT0gJ2FwaXVybCcpLnZhbHVlO1xyXG4gICAgbGV0IHByb2R1Y3RWYXJpYW50Q29tbWFuZEFwaVVybDogc3RyaW5nID0gIHRoaXMudXJsUGFyYW1zLmZpbmQoKGl0ZW06IEV4dGVybmFsU291cmNlUGFyYW1ldGVyKSA9PiBpdGVtLmtleSA9PT0gJ3Byb2R1Y3RWYXJpYW50Q29tbWFuZEFwaVVybCcpLnZhbHVlO1xyXG4gICAgbGV0IHByb2R1Y3RWYXJpYW50UXVlcnlBcGlVcmw6IHN0cmluZyA9ICB0aGlzLnVybFBhcmFtcy5maW5kKChpdGVtOiBFeHRlcm5hbFNvdXJjZVBhcmFtZXRlcikgPT4gaXRlbS5rZXkgPT09ICdwcm9kdWN0VmFyaWFudFF1ZXJ5QXBpVXJsJykudmFsdWU7XHJcbiAgICBsZXQgbG9jYWxpemF0aW9uQXBpVXJsOiBzdHJpbmcgPSAgdGhpcy51cmxQYXJhbXMuZmluZCgoaXRlbTogRXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXIpID0+IGl0ZW0ua2V5ID09PSAnbG9jYWxpemF0aW9uQXBpVXJsJykudmFsdWU7XHJcblxyXG4gICAgLy9hcHBseSB0byBjb25maWd1cmF0b3JcclxuICAgIHRoaXMuaGRlQ29uZmlndXJhdG9yLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcGl1cmwnLCBhcGl1cmwpO1xyXG4gICAgdGhpcy5oZGVDb25maWd1cmF0b3IubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3Byb2R1Y3RWYXJpYW50Q29tbWFuZEFwaVVybCcsIHByb2R1Y3RWYXJpYW50Q29tbWFuZEFwaVVybCk7XHJcbiAgICB0aGlzLmhkZUNvbmZpZ3VyYXRvci5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgncHJvZHVjdFZhcmlhbnRRdWVyeUFwaVVybCcsIHByb2R1Y3RWYXJpYW50UXVlcnlBcGlVcmwpO1xyXG4gICAgdGhpcy5oZGVDb25maWd1cmF0b3IubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2xvY2FsaXphdGlvbkFwaVVybCcsIGxvY2FsaXphdGlvbkFwaVVybClcclxuICB9XHJcblxyXG4gIC8vIGxvYWQgZXh0ZXJuYWwgc2NyaXB0cyBpbnRvIGNsaWVudFxyXG4gIHByaXZhdGUgYXN5bmMgX2xvYWRUaGVTY3JpcHRzKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IGhlYWRlclVybHM6IHN0cmluZyA9IHRoaXMudXJsUGFyYW1zLmZpbmQoKGl0ZW06IEV4dGVybmFsU291cmNlUGFyYW1ldGVyKSA9PiBpdGVtLmtleSA9PT0gJ2hlYWRlcicpLnZhbHVlO1xyXG4gICAgbGV0IGhlYWRlckFycmF5OiBzdHJpbmdbXSA9IGhlYWRlclVybHMucmVwbGFjZSgvXFxzKy9nLCAnJykuc3BsaXQoJywnKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZGVyQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgYXdhaXQgdGhpcy5fc2NyaXB0TG9hZGVyLmxvYWRTY3JpcHQoaGVhZGVyQXJyYXlbaV0sIHRoaXMuX3JlbmRlcmVyKS5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoZXJyb3IpKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc3R5bGVzOiBzdHJpbmcgPSB0aGlzLnVybFBhcmFtcy5maW5kKChpdGVtOiBFeHRlcm5hbFNvdXJjZVBhcmFtZXRlcikgPT4gaXRlbS5rZXkgPT09ICdzdHlsZXNoZWV0JykudmFsdWU7XHJcbiAgICBsZXQgc3R5bGVzQXJyYXk6IHN0cmluZ1tdID0gc3R5bGVzLnJlcGxhY2UoL1xccysvZywgJycpLnNwbGl0KCcsJyk7XHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHN0eWxlc0FycmF5Lmxlbmd0aDsgaisrKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX3NjcmlwdExvYWRlci5hZGRTdHlsZVNoZWV0KHN0eWxlc0FycmF5W2pdLCB0aGlzLl9yZW5kZXJlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLy9mb3IgbG9jYWwgdGVzdGluZyBwbGVhc2UgdHVybiBvZmYgZm9yIHBhY2tpbmcgYW5kIHB1Ymxpc2hpbmchXHJcbiAgICAvKmNvbnN0IHNjcmlwdHM6IHN0cmluZ1tdID0gW1xyXG4gICAgICAvLyBoYXJkLWNvZGVkIGZvciBub3csIHNob3VsZCBjb21lIGZyb20gdGhlIGV4dGVybmFsIHNvdXJjZVxyXG4gICAgICAnaHR0cHM6Ly9oZGUtY2RuLmF6dXJlZWRnZS5uZXQvbGlicy9jb21wb25lbnRzL0NvbmZpZ3VyYXRvci8xLjAuMzMvcG9seWZpbGxzLmpzJyxcclxuICAgICAgJ2h0dHBzOi8vaGRlLWNkbi5henVyZWVkZ2UubmV0L2xpYnMvY29tcG9uZW50cy9Db25maWd1cmF0b3IvMS4wLjMzL3J1bnRpbWUuanMnLFxyXG4gICAgICAnaHR0cHM6Ly9oZGUtY2RuLmF6dXJlZWRnZS5uZXQvbGlicy9jb21wb25lbnRzL0NvbmZpZ3VyYXRvci8xLjAuMzMvbWFpbi5qcydcclxuICAgIF1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBhd2FpdCB0aGlzLl9zY3JpcHRMb2FkZXIubG9hZFNjcmlwdChzY3JpcHRzW2ldLCB0aGlzLl9yZW5kZXJlcikuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKGVycm9yKSk7XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLl9zY3JpcHRMb2FkZXIuYWRkU3R5bGVTaGVldCgnaHR0cHM6Ly9oZGUtY2RuLmF6dXJlZWRnZS5uZXQvbGlicy9jb21wb25lbnRzL0NvbmZpZ3VyYXRvci8xLjAuMzMvc3R5bGVzLmNzcycsIHRoaXMuX3JlbmRlcmVyKTsqL1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvL2ZvciBsb2NhbCB0ZXN0aW5nIHBsZWFzZSB0dXJuIG9mZiBmb3IgcGFja2luZyBhbmQgcHVibGlzaGluZyFcclxuICAvKnByaXZhdGUgcHJlcGFyZVRlc3RpbmdVcmxwYXJhbXMoKTogdm9pZCB7XHJcbiAgICBsZXQgaGVhZGVyczogRXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXIgPSBuZXcgRXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXIoKTtcclxuICAgIGhlYWRlcnMuaWQgPSAxO1xyXG4gICAgaGVhZGVycy5rZXkgPSAnaGVhZGVyJztcclxuICAgIGhlYWRlcnMudmFsdWUgPSAnaHR0cHM6Ly9oZGUtY2RuLmF6dXJlZWRnZS5uZXQvbGlicy9jb21wb25lbnRzL0NvbmZpZ3VyYXRvci8xLjAuMzMvcG9seWZpbGxzLmpzLGh0dHBzOi8vaGRlLWNkbi5henVyZWVkZ2UubmV0L2xpYnMvY29tcG9uZW50cy9Db25maWd1cmF0b3IvMS4wLjMzL3J1bnRpbWUuanMsaHR0cHM6Ly9oZGUtY2RuLmF6dXJlZWRnZS5uZXQvbGlicy9jb21wb25lbnRzL0NvbmZpZ3VyYXRvci8xLjAuMzMvbWFpbi5qcyc7XHJcbiAgICBsZXQgc3R5bGVzOiBFeHRlcm5hbFNvdXJjZVBhcmFtZXRlciA9IG5ldyBFeHRlcm5hbFNvdXJjZVBhcmFtZXRlcigpO1xyXG4gICAgc3R5bGVzLmlkID0gMjtcclxuICAgIHN0eWxlcy5rZXkgPSAnc3R5bGVzaGVldCc7XHJcbiAgICBzdHlsZXMudmFsdWUgPSAnaHR0cHM6Ly9oZGUtY2RuLmF6dXJlZWRnZS5uZXQvbGlicy9jb21wb25lbnRzL0NvbmZpZ3VyYXRvci8xLjAuMzMvc3R5bGVzLmNzcyc7XHJcbiAgICB0aGlzLnVybFBhcmFtcy5wdXNoKGhlYWRlcnMpO1xyXG4gICAgdGhpcy51cmxQYXJhbXMucHVzaChzdHlsZXMpO1xyXG4gICAgbGV0IGF1cmw6IEV4dGVybmFsU291cmNlUGFyYW1ldGVyID0gbmV3IEV4dGVybmFsU291cmNlUGFyYW1ldGVyKCk7XHJcbiAgICBhdXJsLmlkID0gMztcclxuICAgIGF1cmwua2V5ID0gJ2FwaXVybCc7XHJcbiAgICBhdXJsLnZhbHVlID0gJ2h0dHBzOi8vYm1zcHJvZHVjdGNvbmZpZ3VyYXRvci1hY2NlcHRhbmNlLmF6dXJld2Vic2l0ZXMubmV0L2FwaS9jb25maWd1cmF0b3IvJztcclxuICAgIGxldCBwdXJsOiBFeHRlcm5hbFNvdXJjZVBhcmFtZXRlciA9IG5ldyBFeHRlcm5hbFNvdXJjZVBhcmFtZXRlcigpO1xyXG4gICAgcHVybC5pZCA9IDQ7XHJcbiAgICBwdXJsLmtleSA9ICdwcm9kdWN0VmFyaWFudENvbW1hbmRBcGlVcmwnO1xyXG4gICAgcHVybC52YWx1ZSA9ICdodHRwczovL2Jtc3Byb2R1Y3R2YXJpYW50Y29tbWFuZC1hY2NlcHRhbmNlLmF6dXJld2Vic2l0ZXMubmV0Lyc7XHJcbiAgICBsZXQgcXVybDogRXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXIgPSBuZXcgRXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXIoKTtcclxuICAgIHF1cmwuaWQgPSA1O1xyXG4gICAgcXVybC5rZXkgPSAncHJvZHVjdFZhcmlhbnRRdWVyeUFwaVVybCc7XHJcbiAgICBxdXJsLnZhbHVlID0gJ2h0dHBzOi8vYm1zcHJvZHVjdHZhcmlhbnRxdWVyeS1hY2NlcHRhbmNlLmF6dXJld2Vic2l0ZXMubmV0Lyc7XHJcbiAgICBsZXQgbHVybDogRXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXIgPSBuZXcgRXh0ZXJuYWxTb3VyY2VQYXJhbWV0ZXIoKTtcclxuICAgIGx1cmwuaWQgPSA2O1xyXG4gICAgbHVybC5rZXkgPSAnbG9jYWxpemF0aW9uQXBpVXJsJztcclxuICAgIGx1cmwudmFsdWUgPSAnaHR0cHM6Ly9oZGUtY2RuLmF6dXJlZWRnZS5uZXQvbGlicy9CTVMuRFNULkxvY2FsaXphdGlvbi8nO1xyXG4gICAgdGhpcy51cmxQYXJhbXMucHVzaChoZWFkZXJzKTtcclxuICAgIHRoaXMudXJsUGFyYW1zLnB1c2goc3R5bGVzKTtcclxuICAgIHRoaXMudXJsUGFyYW1zLnB1c2goYXVybCk7XHJcbiAgICB0aGlzLnVybFBhcmFtcy5wdXNoKHB1cmwpO1xyXG4gICAgdGhpcy51cmxQYXJhbXMucHVzaChxdXJsKTtcclxuICAgIHRoaXMudXJsUGFyYW1zLnB1c2gobHVybCk7XHJcbiAgfSovXHJcbn1cclxuIl19
@@ -3,8 +3,8 @@ export class Version {
3
3
  constructor() {
4
4
  this.name = "@colijnit/product";
5
5
  this.description = "Product detail page project for iOne";
6
- this.symVer = "256.1.4";
7
- this.publishDate = "22-1-2025 20:45:30";
6
+ this.symVer = "256.1.5";
7
+ this.publishDate = "8-2-2025 23:16:14";
8
8
  }
9
9
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC12ZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9wcm9kdWN0LXZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE1BQU0sT0FBTyxPQUFPO0lBQXBCO1FBQ1MsU0FBSSxHQUFHLG1CQUFtQixDQUFDO1FBQzNCLGdCQUFXLEdBQUcsc0NBQXNDLENBQUM7UUFDckQsV0FBTSxHQUFHLFNBQVMsQ0FBQztRQUNuQixnQkFBVyxHQUFHLG9CQUFvQixDQUFDO0lBQzVDLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRoaXMgZmlsZSBpcyBkeW5hbWljYWxseSBjcmVhdGVkLCBkbyBub3QgY2hhbmdlIHRoaXNcbmV4cG9ydCBjbGFzcyBWZXJzaW9uIHtcbiAgcHVibGljIG5hbWUgPSBcIkBjb2xpam5pdC9wcm9kdWN0XCI7XG4gIHB1YmxpYyBkZXNjcmlwdGlvbiA9IFwiUHJvZHVjdCBkZXRhaWwgcGFnZSBwcm9qZWN0IGZvciBpT25lXCI7XG4gIHB1YmxpYyBzeW1WZXIgPSBcIjI1Ni4xLjRcIjtcbiAgcHVibGljIHB1Ymxpc2hEYXRlID0gXCIyMi0xLTIwMjUgMjA6NDU6MzBcIjtcbn0iXX0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC12ZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9wcm9kdWN0LXZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE1BQU0sT0FBTyxPQUFPO0lBQXBCO1FBQ1MsU0FBSSxHQUFHLG1CQUFtQixDQUFDO1FBQzNCLGdCQUFXLEdBQUcsc0NBQXNDLENBQUM7UUFDckQsV0FBTSxHQUFHLFNBQVMsQ0FBQztRQUNuQixnQkFBVyxHQUFHLG1CQUFtQixDQUFDO0lBQzNDLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRoaXMgZmlsZSBpcyBkeW5hbWljYWxseSBjcmVhdGVkLCBkbyBub3QgY2hhbmdlIHRoaXNcbmV4cG9ydCBjbGFzcyBWZXJzaW9uIHtcbiAgcHVibGljIG5hbWUgPSBcIkBjb2xpam5pdC9wcm9kdWN0XCI7XG4gIHB1YmxpYyBkZXNjcmlwdGlvbiA9IFwiUHJvZHVjdCBkZXRhaWwgcGFnZSBwcm9qZWN0IGZvciBpT25lXCI7XG4gIHB1YmxpYyBzeW1WZXIgPSBcIjI1Ni4xLjVcIjtcbiAgcHVibGljIHB1Ymxpc2hEYXRlID0gXCI4LTItMjAyNSAyMzoxNjoxNFwiO1xufSJdfQ==
@@ -30,8 +30,8 @@ class Version {
30
30
  constructor() {
31
31
  this.name = "@colijnit/product";
32
32
  this.description = "Product detail page project for iOne";
33
- this.symVer = "256.1.4";
34
- this.publishDate = "22-1-2025 20:45:30";
33
+ this.symVer = "256.1.5";
34
+ this.publishDate = "8-2-2025 23:16:14";
35
35
  }
36
36
  }
37
37
 
@@ -2685,6 +2685,7 @@ class ProductHdComponent {
2685
2685
  this._scriptLoader = _scriptLoader;
2686
2686
  this._renderer = _renderer;
2687
2687
  this.variant = '';
2688
+ this.urlParams = [];
2688
2689
  this.configuratorFinished = new EventEmitter();
2689
2690
  this.configurationError = new EventEmitter();
2690
2691
  this.showClass = true;
@@ -2715,7 +2716,10 @@ class ProductHdComponent {
2715
2716
  this.configurationError.emit(event.detail.status);
2716
2717
  }
2717
2718
  _prepareAttributes() {
2718
- if (this.hdeConfigurator && this.hdeConfigurator.nativeElement && this.token && (this.sku || this.variant)) {
2719
+ if (this.hdeConfigurator && this.hdeConfigurator.nativeElement && this.urlParams && this.token && (this.sku || this.variant)) {
2720
+ //for local testing please turn off for packing and publishing!
2721
+ //this.prepareTestingUrlparams();
2722
+ this._prepareConfiguratorUrls();
2719
2723
  this.hdeConfigurator.nativeElement.setAttribute('bearerToken', this.token);
2720
2724
  if (this._sku) {
2721
2725
  this.hdeConfigurator.nativeElement.setAttribute('data-productId', this._sku);
@@ -2726,19 +2730,43 @@ class ProductHdComponent {
2726
2730
  this._loadTheScripts();
2727
2731
  }
2728
2732
  }
2729
- // load external scripts
2733
+ //set necessary references to configurator.
2734
+ _prepareConfiguratorUrls() {
2735
+ //fetch the setting from the external source
2736
+ let apiurl = this.urlParams.find((item) => item.key === 'apiurl').value;
2737
+ let productVariantCommandApiUrl = this.urlParams.find((item) => item.key === 'productVariantCommandApiUrl').value;
2738
+ let productVariantQueryApiUrl = this.urlParams.find((item) => item.key === 'productVariantQueryApiUrl').value;
2739
+ let localizationApiUrl = this.urlParams.find((item) => item.key === 'localizationApiUrl').value;
2740
+ //apply to configurator
2741
+ this.hdeConfigurator.nativeElement.setAttribute('apiurl', apiurl);
2742
+ this.hdeConfigurator.nativeElement.setAttribute('productVariantCommandApiUrl', productVariantCommandApiUrl);
2743
+ this.hdeConfigurator.nativeElement.setAttribute('productVariantQueryApiUrl', productVariantQueryApiUrl);
2744
+ this.hdeConfigurator.nativeElement.setAttribute('localizationApiUrl', localizationApiUrl);
2745
+ }
2746
+ // load external scripts into client
2730
2747
  _loadTheScripts() {
2731
2748
  return __awaiter(this, void 0, void 0, function* () {
2732
- const scripts = [
2733
- // hard-coded for now, should come from the external source
2734
- 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/polyfills.js',
2735
- 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/runtime.js',
2736
- 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/main.js'
2737
- ];
2749
+ let headerUrls = this.urlParams.find((item) => item.key === 'header').value;
2750
+ let headerArray = headerUrls.replace(/\s+/g, '').split(',');
2751
+ for (let i = 0; i < headerArray.length; i++) {
2752
+ yield this._scriptLoader.loadScript(headerArray[i], this._renderer).catch((error) => console.error(error));
2753
+ }
2754
+ let styles = this.urlParams.find((item) => item.key === 'stylesheet').value;
2755
+ let stylesArray = styles.replace(/\s+/g, '').split(',');
2756
+ for (let j = 0; j < stylesArray.length; j++) {
2757
+ yield this._scriptLoader.addStyleSheet(stylesArray[j], this._renderer);
2758
+ }
2759
+ //for local testing please turn off for packing and publishing!
2760
+ /*const scripts: string[] = [
2761
+ // hard-coded for now, should come from the external source
2762
+ 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/polyfills.js',
2763
+ 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/runtime.js',
2764
+ 'https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/main.js'
2765
+ ]
2738
2766
  for (let i = 0; i < scripts.length; i++) {
2739
- yield this._scriptLoader.loadScript(scripts[i], this._renderer).catch((error) => console.error(error));
2767
+ await this._scriptLoader.loadScript(scripts[i], this._renderer).catch((error) => console.error(error));
2740
2768
  }
2741
- yield this._scriptLoader.addStyleSheet('https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/styles.css', this._renderer);
2769
+ await this._scriptLoader.addStyleSheet('https://hde-cdn.azureedge.net/libs/components/Configurator/1.0.33/styles.css', this._renderer);*/
2742
2770
  });
2743
2771
  }
2744
2772
  }
@@ -2747,11 +2775,7 @@ ProductHdComponent.decorators = [
2747
2775
  selector: 'co-product-hd',
2748
2776
  template: `
2749
2777
  <hde-configurator #hdeConfigurator
2750
- apiurl="https://bmsproductconfigurator-acceptance.azurewebsites.net/api/configurator/"
2751
- productVariantCommandApiUrl="https://bmsproductvariantcommand-acceptance.azurewebsites.net/"
2752
- productVariantQueryApiUrl="https://bmsproductvariantquery-acceptance.azurewebsites.net/"
2753
2778
  language="nl"
2754
- localizationApiUrl="https://hde-cdn.azureedge.net/libs/BMS.DST.Localization/"
2755
2779
  localizationFileExtension=".json"
2756
2780
  (configurationFinished)="handleConfigurationFinished($event)"
2757
2781
  (configurationFailed)="handleError($event)"
@@ -2771,6 +2795,7 @@ ProductHdComponent.propDecorators = {
2771
2795
  sku: [{ type: Input }],
2772
2796
  token: [{ type: Input }],
2773
2797
  variant: [{ type: Input }],
2798
+ urlParams: [{ type: Input }],
2774
2799
  configuratorFinished: [{ type: Output }],
2775
2800
  configurationError: [{ type: Output }],
2776
2801
  showClass: [{ type: HostBinding, args: ['class.co-product-hd',] }]
@@ -2812,6 +2837,7 @@ class ProductExternalSourceComponent {
2812
2837
  this.externalSettings = {};
2813
2838
  this.token = ""; //= "eyJhbGciOiJSUzI1NiIsImtpZCI6IkYxOThERkVEOEUwQTQ1MzY3M0M1MUE2Rjk1QUVDQzU3RTM0NjM4RkRSUzI1NiIsInR5cCI6ImF0K2p3dCIsIng1dCI6IjhaamY3WTRLUlRaenhScHZsYTdNVi1OR09QMCJ9.eyJuYmYiOjE3MzIxOTkyOTUsImV4cCI6MTczMjIwMjg5NSwiaXNzIjoiaHR0cHM6Ly9ibXNpZGVudGl0eS1hY2NlcHRhbmNlLmF6dXJld2Vic2l0ZXMubmV0IiwiYXVkIjpbImNhdGFsb2dxdWVyeWFwaSIsImNvbmZpZ3VyYXRvcmFwaSIsInByb2R1Y3R2YXJpYW50Y29tbWFuZGFwaSIsInByb2R1Y3R2YXJpYW50cXVlcnlhcGkiXSwiY2xpZW50X2lkIjoiaW1wZXJzb25hdGlvbi5jbGllbnQiLCJzdWIiOiIwOTMwZDI4Mi05NGU4LTQ5MGEtOGI2NC1mYTk1YmIyYzE1ODIiLCJhdXRoX3RpbWUiOjE3MzIxOTkyOTUsImlkcCI6ImxvY2FsIiwiZW52aXJvbm1lbnQiOiJNU0wiLCJzZWxsZXIiOiJTRTAwMDA5NiIsInNlbGxlcmd1aWQiOiIxMDk1MWJjNS1hZmMzLTQ1MGEtNmVkMS0wOGQ4NDNlNmE5OTQiLCJwZXJtaXNzaW9uIjpbInNhbGVzLmV4cG9ydHRlbXBsYXRlcy5yZWFkIiwiZG9jdW1lbnRsaWJyYXJ5LnRhZy5yZWFkIiwiZG9jdW1lbnRsaWJyYXJ5LmRvY3VtZW50LnJlYWQiLCJkb2N1bWVudGxpYnJhcnkudGFnZ3JvdXAucmVhZCIsInNhbGVzLm9yZGVyLndyaXRlIiwic2FsZXMuY3VzdG9tZXIucmVhZCIsInNhbGVzLm9yZGVyLmRlbGl2ZXJ5YWRkcmVzcy53cml0ZSIsInNlcnZpY2UucmVxdWVzdC5yZWFkIiwiY2F0YWxvZy50YWcucmVhZCIsInNhbGVzLm9yZGVyLnJlYWQiLCJzYWxlcy5jdXN0b21lci53cml0ZSIsInJlcXVlc3Rmb3JxdW90ZS53cml0ZSIsInNhbGVzLm9yZGVyLmJvb2siLCJyZXF1ZXN0Zm9ycXVvdGUucmVhZCIsInNhbGVzLmxlYWQucmVhZCIsInB1cmNoYXNlLm9yZGVyLnJlYWQiLCJzYWxlcy5xdW90ZS5yZWFkIiwic2FsZXMucXVvdGUud3JpdGUiLCJjYXRhbG9nLml0ZW0ucmVhZCIsInNhbGVzLmxlYWQud3JpdGUiLCJzZXJ2aWNlLnJlcXVlc3Quc3VibWl0Iiwic2FsZXMub3JkZXIuZGVsaXZlcnlhZGRyZXNzLnJlYWQiLCJwdXJjaGFzZS5vcmRlci53cml0ZSIsInB1cmNoYXNlLm9yZGVyLnByaWNlcy53cml0ZSIsInB1cmNoYXNlLm9yZGVyLnByaWNlcy5yZWFkIiwic2VydmljZS5yZXF1ZXN0LndyaXRlIiwiY2F0YWxvZy5jYXRhbG9nLnJlYWQiLCJjYXRhbG9nLmNhdGFsb2cud3JpdGUiLCJjYXRhbG9nLmN1cnJlbmN5LnJlYWQiLCJjYXRhbG9nLmN1cnJlbmN5LndyaXRlIiwiY2F0YWxvZy5pdGVtLndyaXRlIiwiY2F0YWxvZy5sb2NhbGl6YXRpb24ucmVhZCIsImNhdGFsb2cubG9jYWxpemF0aW9uLndyaXRlIiwiY2F0YWxvZy5wcm9kdWN0LnJlYWQiLCJjYXRhbG9nLnByb2R1Y3Qud3JpdGUiLCJjYXRhbG9nLnByb2R1Y3RzZXR0aW5nLnJlYWQiLCJjYXRhbG9nLnByb2R1Y3RzZXR0aW5nLndyaXRlIiwiY2F0YWxvZy5zZWxsZXIucmVhZCIsImNhdGFsb2cuc2VsbGVyLndyaXRlIiwiY2F0YWxvZy50YWcud3JpdGUiLCJjYXRhbG9nLnVvbS5yZWFkIiwiY2F0YWxvZy51b20ud3JpdGUiLCJjYXRhbG9nLnZhdGNhdGVnb3J5LnJlYWQiLCJjYXRhbG9nLnZhdGNhdGVnb3J5LndyaXRlIiwiY2F0YWxvZy52ZW5kb3IucmVhZCIsImNhdGFsb2cudmVuZG9yLndyaXRlIiwicHVyY2hhc2Uuc2VsbGVyLnJlYWQiLCJwdXJjaGFzZS5zZWxsZXIud3JpdGUiLCJjYXRhbG9nLmFydGljbGUucmVhZCIsImNhdGFsb2cuYXJ0aWNsZS53cml0ZSIsInNhbGVzLnF1b3RlLmxpbmVzLnJlYWQiLCJzYWxlcy5xdW90ZS5saW5lcy53cml0ZSIsInNhbGVzLnNlbGxlci5yZWFkIiwic2FsZXMuc2VsbGVyLndyaXRlIiwiYWNjb3VudGluZy52ZW5kb3JpbnZvaWNlLnJlYWQiLCJpZGVudGl0eS51c2VyLnJlYWQiLCJpZGVudGl0eS51c2VyLndyaXRlIiwiaWRlbnRpdHkucm9sZS5yZWFkIiwic2VsbGVyLnByb2R1Y3RwcmljZS5zZXR0aW5ncy5yZWFkIiwic2VsbGVyLnByb2R1Y3RwcmljZS5zZXR0aW5ncy53cml0ZSIsImNvbmZpZ3VyYXRvci5wdXJjaGFzZXByaWNlLnJlYWQiLCJzdG9jay5mYWJyaWMucmVhZCJdLCJuYW1lIjoiUm9iaW4iLCJmYW1pbHlfbmFtZSI6ImRlIFdpbnRlciAoQ29saWpuLUlUKSIsInJvbGUiOlsic2VsbGVyIiwiZGVhbGVyX21hbmFnZXIiXSwiaWF0IjoxNzMyMTk5Mjk1LCJzY29wZSI6WyJjYXRhbG9ncXVlcnlhcGkiLCJjb25maWd1cmF0b3JhcGkiLCJwcm9kdWN0dmFyaWFudGNvbW1hbmRhcGkiLCJwcm9kdWN0dmFyaWFudHF1ZXJ5YXBpIl0sImFtciI6WyJpbXBlcnNvbmF0aW9uIl19.rbguVPnkXXDzsM6QKgXulhrF41jIjCuGDV13ig1GC8MewLCJ7wA038OSwT26sx2mCexjvuGYt45YScfPwfTkDy3ErPmHRods64X1dJWZnf-23NTP2iI32K_1vMZH5GOGbMzuFtbKAFQv4hgFAxoyWqFVWyJvuOtQcWyZStROyPHwjAnpnj-x1cVQpOhbO-kQUFvy_VUrPpF3aYVCcO2cFirQTXR6kxSGcYGGcsPY-_eiAd93UdG2EM6xLAocDLaFV72CQI6XEs0WQG1f4SqvH52v3OTkgWBLgYV35gpyIe0-2nazGL0R8pTNuDqrOb7OGmuTRMoTIiRi67-wTxx8cQ";
2814
2839
  this.variant = "";
2840
+ this.urlParams = [];
2815
2841
  this._subs = [];
2816
2842
  }
2817
2843
  set externalSource(value) {
@@ -2823,10 +2849,12 @@ class ProductExternalSourceComponent {
2823
2849
  return this._externalSource;
2824
2850
  }
2825
2851
  set externalCatalogStartupInfo(value) {
2826
- this._externalCatalogStartupInfo = value;
2827
- this.externalSource = value.externalSource;
2828
- this.loaded = false;
2829
- this._prepareExternalSource();
2852
+ if (value) {
2853
+ this._externalCatalogStartupInfo = value;
2854
+ this.externalSource = value.externalSource;
2855
+ this.loaded = false;
2856
+ this._prepareExternalSource();
2857
+ }
2830
2858
  }
2831
2859
  get externalCatalogStartupInfo() {
2832
2860
  return this._externalCatalogStartupInfo;
@@ -2900,6 +2928,7 @@ class ProductExternalSourceComponent {
2900
2928
  this.token = this.externalCatalogStartupInfo.token;
2901
2929
  this.sku = this.externalCatalogStartupInfo.externalGoodId;
2902
2930
  this.variant = this.externalCatalogStartupInfo.flattenedGoodId;
2931
+ this.urlParams = this.externalCatalogStartupInfo.externalSource.parameters;
2903
2932
  this.switchToConfigurator();
2904
2933
  this.loaded = true;
2905
2934
  }
@@ -2946,6 +2975,7 @@ ProductExternalSourceComponent.decorators = [
2946
2975
  [sku]="sku"
2947
2976
  [variant]="variant"
2948
2977
  [token]="token"
2978
+ [urlParams]="urlParams"
2949
2979
  (configuratorFinished)="handleConfigurationFinished($event)"></co-product-hd>
2950
2980
  </ng-container>
2951
2981
  </ng-container>