@colijnit/transaction 12.1.0 → 12.1.4

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 (43) hide show
  1. package/app/component/core/base/transaction-base.component.d.ts +10 -0
  2. package/app/component/{shopping-cart → core}/characteristic-answer/characteristic-answer.component.d.ts +0 -0
  3. package/app/component/core/warehouse/warehouse.component.d.ts +35 -0
  4. package/app/component/service-order/ione-service-order.component.d.ts +3 -3
  5. package/app/component/service-order/service-order.component.d.ts +9 -4
  6. package/app/component/service-order/transaction-manager/transaction-manager.component.d.ts +63 -0
  7. package/app/component/service-order/transaction-order-totals/transaction-order-totals.component.d.ts +2 -3
  8. package/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.d.ts +1 -1
  9. package/app/service/dictionary.service.d.ts +1 -0
  10. package/app/service/transaction.service.d.ts +14 -8
  11. package/bundles/colijnit-transaction.umd.js +915 -162
  12. package/bundles/colijnit-transaction.umd.js.map +1 -1
  13. package/colijnit-transaction.d.ts +20 -18
  14. package/colijnit-transaction.metadata.json +1 -1
  15. package/esm2015/app/component/checkout/checkout-overview/checkout-overview.component.js +2 -2
  16. package/esm2015/app/component/checkout/ione-checkout.module.js +3 -3
  17. package/esm2015/app/component/core/base/transaction-base.component.js +35 -10
  18. package/esm2015/app/component/core/characteristic-answer/characteristic-answer.component.js +100 -0
  19. package/esm2015/app/component/core/warehouse/warehouse.component.js +134 -0
  20. package/esm2015/app/component/service-order/ione-service-order-module.js +10 -5
  21. package/esm2015/app/component/service-order/ione-service-order.component.js +12 -14
  22. package/esm2015/app/component/service-order/service-order.component.js +35 -7
  23. package/esm2015/app/component/service-order/summary/transaction-delivery-summary.component.js +5 -5
  24. package/esm2015/app/component/service-order/summary/transaction-order-summary.component.js +3 -3
  25. package/esm2015/app/component/service-order/summary/transaction-payment-info.component.js +3 -3
  26. package/esm2015/app/component/service-order/summary/transaction-service-summary.component.js +3 -3
  27. package/esm2015/app/component/service-order/transaction-article-text/transaction-article-text.component.js +16 -5
  28. package/esm2015/app/component/service-order/transaction-manager/transaction-manager.component.js +305 -0
  29. package/esm2015/app/component/service-order/transaction-order-line-view/transaction-order-line-view.component.js +1 -1
  30. package/esm2015/app/component/service-order/transaction-order-lines/transaction-order-lines.component.js +1 -1
  31. package/esm2015/app/component/service-order/transaction-order-totals/transaction-order-totals.component.js +9 -10
  32. package/esm2015/app/component/shopping-cart/ione-shopping-cart.module.js +3 -5
  33. package/esm2015/app/component/shopping-cart/shopping-cart-line/shopping-cart-line.component.js +1 -1
  34. package/esm2015/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.js +1 -1
  35. package/esm2015/app/service/dictionary.service.js +20 -9
  36. package/esm2015/app/service/ione-connector-adapter.service.js +10 -5
  37. package/esm2015/app/service/transaction.service.js +72 -23
  38. package/esm2015/assets/dictionary/text.properties.js +5 -1
  39. package/esm2015/colijnit-transaction.js +21 -19
  40. package/fesm2015/colijnit-transaction.js +647 -97
  41. package/fesm2015/colijnit-transaction.js.map +1 -1
  42. package/package.json +2 -2
  43. package/esm2015/app/component/shopping-cart/characteristic-answer/characteristic-answer.component.js +0 -99
@@ -1,5 +1,4 @@
1
1
  import { NgModule } from "@angular/core";
2
- import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
3
2
  import { ButtonModule, CoDialogModule, CoDialogPromptModule, CoGridModule, CoSidebarModule, DropDownModule, FormModule, IconModule, InputCheckboxModule, InputComboBoxModule, InputDatePickerModule, InputNumberPickerModule, InputRadioButtonModule, InputTextModule, MultiSelectListModule, PopupModule, } from "@colijnit/corecomponents_v12";
4
3
  import { FlexModule } from "@angular/flex-layout";
5
4
  import { DictionaryService } from "../../service/dictionary.service";
@@ -12,7 +11,7 @@ import { TransactionService } from "../../service/transaction.service";
12
11
  import { OptionsService } from "../../service/options.service";
13
12
  import { IoneShoppingCartComponent } from "./ione-shopping-cart.component";
14
13
  import { CoreModule } from "../core/core.module";
15
- import { CharacteristicAnswerComponent } from "./characteristic-answer/characteristic-answer.component";
14
+ import { CharacteristicAnswerComponent } from "../core/characteristic-answer/characteristic-answer.component";
16
15
  import { CommonModule } from "@angular/common";
17
16
  export class IoneShoppingCartModule {
18
17
  }
@@ -27,7 +26,6 @@ IoneShoppingCartModule.decorators = [
27
26
  CharacteristicAnswerComponent,
28
27
  ],
29
28
  imports: [
30
- BrowserAnimationsModule,
31
29
  CommonModule,
32
30
  IconModule,
33
31
  InputTextModule,
@@ -57,8 +55,8 @@ IoneShoppingCartModule.decorators = [
57
55
  entryComponents: [
58
56
  IoneShoppingCartComponent
59
57
  ],
60
- exports: [IoneShoppingCartComponent, StockStatusIndicatorComponent],
58
+ exports: [IoneShoppingCartComponent, StockStatusIndicatorComponent, CharacteristicAnswerComponent],
61
59
  bootstrap: [IoneShoppingCartComponent]
62
60
  },] }
63
61
  ];
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uZS1zaG9wcGluZy1jYXJ0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50L3Nob3BwaW5nLWNhcnQvaW9uZS1zaG9wcGluZy1jYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzdFLE9BQU8sRUFDTCxZQUFZLEVBQ1osY0FBYyxFQUNkLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osZUFBZSxFQUNmLGNBQWMsRUFDZCxVQUFVLEVBQ1YsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixXQUFXLEdBQ1osTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDckcsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0saUVBQWlFLENBQUM7QUFDOUcsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBRTdELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUN0RyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUE2QzdDLE1BQU0sT0FBTyxzQkFBc0I7OztZQTNDbEMsUUFBUSxTQUFDO2dCQUNSLFlBQVksRUFBRTtvQkFDWiw0QkFBNEI7b0JBQzVCLHFCQUFxQjtvQkFDckIseUJBQXlCO29CQUN6Qiw2QkFBNkI7b0JBQzdCLHlCQUF5QjtvQkFDekIsNkJBQTZCO2lCQUM5QjtnQkFDQyxPQUFPLEVBQUU7b0JBQ0wsdUJBQXVCO29CQUN2QixZQUFZO29CQUNaLFVBQVU7b0JBQ1YsZUFBZTtvQkFDZixtQkFBbUI7b0JBQ25CLHNCQUFzQjtvQkFDdEIsVUFBVTtvQkFDVixtQkFBbUI7b0JBQ25CLHFCQUFxQjtvQkFDckIsdUJBQXVCO29CQUN2QixjQUFjO29CQUNkLG9CQUFvQjtvQkFDcEIsWUFBWTtvQkFDWixVQUFVO29CQUNWLHFCQUFxQjtvQkFDckIsZ0JBQWdCO29CQUNoQixjQUFjO29CQUNkLFdBQVcsQ0FBQyxPQUFPLEVBQUU7b0JBQ3JCLGVBQWU7b0JBQ2YsWUFBWTtvQkFDWixVQUFVO2lCQUNiO2dCQUNILFNBQVMsRUFBRTtvQkFDVCxpQkFBaUI7b0JBQ2pCLGtCQUFrQjtvQkFDbEIsY0FBYztpQkFDZjtnQkFDRCxlQUFlLEVBQUU7b0JBQ2YseUJBQXlCO2lCQUMxQjtnQkFDRCxPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSw2QkFBNkIsQ0FBQztnQkFDbkUsU0FBUyxFQUFFLENBQUMseUJBQXlCLENBQUM7YUFDdkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtCcm93c2VyQW5pbWF0aW9uc01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9uc1wiO1xuaW1wb3J0IHtcbiAgQnV0dG9uTW9kdWxlLFxuICBDb0RpYWxvZ01vZHVsZSxcbiAgQ29EaWFsb2dQcm9tcHRNb2R1bGUsXG4gIENvR3JpZE1vZHVsZSxcbiAgQ29TaWRlYmFyTW9kdWxlLFxuICBEcm9wRG93bk1vZHVsZSxcbiAgRm9ybU1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSW5wdXRDaGVja2JveE1vZHVsZSxcbiAgSW5wdXRDb21ib0JveE1vZHVsZSxcbiAgSW5wdXREYXRlUGlja2VyTW9kdWxlLFxuICBJbnB1dE51bWJlclBpY2tlck1vZHVsZSxcbiAgSW5wdXRSYWRpb0J1dHRvbk1vZHVsZSxcbiAgSW5wdXRUZXh0TW9kdWxlLFxuICBNdWx0aVNlbGVjdExpc3RNb2R1bGUsXG4gIFBvcHVwTW9kdWxlLFxufSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xuaW1wb3J0IHtGbGV4TW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvZmxleC1sYXlvdXRcIjtcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZVwiO1xuaW1wb3J0IHtTaG9wcGluZ0NhcnRNYW5hZ2VyQ29tcG9uZW50fSBmcm9tIFwiLi9zaG9wcGluZy1jYXJ0LW1hbmFnZXIvc2hvcHBpbmctY2FydC1tYW5hZ2VyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtTaG9wcGluZ0NhcnRDb21wb25lbnR9IGZyb20gXCIuL3Nob3BwaW5nLWNhcnQvc2hvcHBpbmctY2FydC5jb21wb25lbnRcIjtcbmltcG9ydCB7U2hvcHBpbmdDYXJ0TGluZUNvbXBvbmVudH0gZnJvbSBcIi4vc2hvcHBpbmctY2FydC1saW5lL3Nob3BwaW5nLWNhcnQtbGluZS5jb21wb25lbnRcIjtcbmltcG9ydCB7U3RvY2tTdGF0dXNJbmRpY2F0b3JDb21wb25lbnR9IGZyb20gXCIuLi9jb3JlL3N0b2NrLXN0YXR1cy1pbmRpY2F0b3Ivc3RvY2stc3RhdHVzLWluZGljYXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7TWF0U3RlcHBlck1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3N0ZXBwZXJcIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQge09wdGlvbnNTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9vcHRpb25zLnNlcnZpY2VcIjtcbmltcG9ydCB7SU9uZUNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9pb25lLWNvbm5lY3Rvci1hZGFwdGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7SW9uZVNob3BwaW5nQ2FydENvbXBvbmVudH0gZnJvbSBcIi4vaW9uZS1zaG9wcGluZy1jYXJ0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtDb3JlTW9kdWxlfSBmcm9tIFwiLi4vY29yZS9jb3JlLm1vZHVsZVwiO1xuaW1wb3J0IHtDaGFyYWN0ZXJpc3RpY0Fuc3dlckNvbXBvbmVudH0gZnJvbSBcIi4vY2hhcmFjdGVyaXN0aWMtYW5zd2VyL2NoYXJhY3RlcmlzdGljLWFuc3dlci5jb21wb25lbnRcIjtcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFNob3BwaW5nQ2FydE1hbmFnZXJDb21wb25lbnQsXG4gICAgU2hvcHBpbmdDYXJ0Q29tcG9uZW50LFxuICAgIFNob3BwaW5nQ2FydExpbmVDb21wb25lbnQsXG4gICAgU3RvY2tTdGF0dXNJbmRpY2F0b3JDb21wb25lbnQsXG4gICAgSW9uZVNob3BwaW5nQ2FydENvbXBvbmVudCxcbiAgICBDaGFyYWN0ZXJpc3RpY0Fuc3dlckNvbXBvbmVudCxcbiAgXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEJyb3dzZXJBbmltYXRpb25zTW9kdWxlLFxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEljb25Nb2R1bGUsXG4gICAgICAgIElucHV0VGV4dE1vZHVsZSxcbiAgICAgICAgSW5wdXRDaGVja2JveE1vZHVsZSxcbiAgICAgICAgSW5wdXRSYWRpb0J1dHRvbk1vZHVsZSxcbiAgICAgICAgRm9ybU1vZHVsZSxcbiAgICAgICAgSW5wdXRDb21ib0JveE1vZHVsZSxcbiAgICAgICAgSW5wdXREYXRlUGlja2VyTW9kdWxlLFxuICAgICAgICBJbnB1dE51bWJlclBpY2tlck1vZHVsZSxcbiAgICAgICAgQ29EaWFsb2dNb2R1bGUsXG4gICAgICAgIENvRGlhbG9nUHJvbXB0TW9kdWxlLFxuICAgICAgICBCdXR0b25Nb2R1bGUsXG4gICAgICAgIEZsZXhNb2R1bGUsXG4gICAgICAgIE11bHRpU2VsZWN0TGlzdE1vZHVsZSxcbiAgICAgICAgTWF0U3RlcHBlck1vZHVsZSxcbiAgICAgICAgRHJvcERvd25Nb2R1bGUsXG4gICAgICAgIFBvcHVwTW9kdWxlLmZvclJvb3QoKSxcbiAgICAgICAgQ29TaWRlYmFyTW9kdWxlLFxuICAgICAgICBDb0dyaWRNb2R1bGUsXG4gICAgICAgIENvcmVNb2R1bGVcbiAgICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBEaWN0aW9uYXJ5U2VydmljZSxcbiAgICBUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgT3B0aW9uc1NlcnZpY2VcbiAgXSxcbiAgZW50cnlDb21wb25lbnRzOiBbXG4gICAgSW9uZVNob3BwaW5nQ2FydENvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbSW9uZVNob3BwaW5nQ2FydENvbXBvbmVudCwgU3RvY2tTdGF0dXNJbmRpY2F0b3JDb21wb25lbnRdLFxuICBib290c3RyYXA6IFtJb25lU2hvcHBpbmdDYXJ0Q29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBJb25lU2hvcHBpbmdDYXJ0TW9kdWxlIHt9XG4iXX0=
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uZS1zaG9wcGluZy1jYXJ0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50L3Nob3BwaW5nLWNhcnQvaW9uZS1zaG9wcGluZy1jYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxZQUFZLEVBQ1osY0FBYyxFQUNkLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osZUFBZSxFQUNmLGNBQWMsRUFDZCxVQUFVLEVBQ1YsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixXQUFXLEdBQ1osTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDckcsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0saUVBQWlFLENBQUM7QUFDOUcsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUM1RyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUE0QzdDLE1BQU0sT0FBTyxzQkFBc0I7OztZQTFDbEMsUUFBUSxTQUFDO2dCQUNSLFlBQVksRUFBRTtvQkFDWiw0QkFBNEI7b0JBQzVCLHFCQUFxQjtvQkFDckIseUJBQXlCO29CQUN6Qiw2QkFBNkI7b0JBQzdCLHlCQUF5QjtvQkFDekIsNkJBQTZCO2lCQUM5QjtnQkFDQyxPQUFPLEVBQUU7b0JBQ0wsWUFBWTtvQkFDWixVQUFVO29CQUNWLGVBQWU7b0JBQ2YsbUJBQW1CO29CQUNuQixzQkFBc0I7b0JBQ3RCLFVBQVU7b0JBQ1YsbUJBQW1CO29CQUNuQixxQkFBcUI7b0JBQ3JCLHVCQUF1QjtvQkFDdkIsY0FBYztvQkFDZCxvQkFBb0I7b0JBQ3BCLFlBQVk7b0JBQ1osVUFBVTtvQkFDVixxQkFBcUI7b0JBQ3JCLGdCQUFnQjtvQkFDaEIsY0FBYztvQkFDZCxXQUFXLENBQUMsT0FBTyxFQUFFO29CQUNyQixlQUFlO29CQUNmLFlBQVk7b0JBQ1osVUFBVTtpQkFDYjtnQkFDSCxTQUFTLEVBQUU7b0JBQ1QsaUJBQWlCO29CQUNqQixrQkFBa0I7b0JBQ2xCLGNBQWM7aUJBQ2Y7Z0JBQ0QsZUFBZSxFQUFFO29CQUNmLHlCQUF5QjtpQkFDMUI7Z0JBQ0QsT0FBTyxFQUFFLENBQUMseUJBQXlCLEVBQUUsNkJBQTZCLEVBQUUsNkJBQTZCLENBQUM7Z0JBQ2xHLFNBQVMsRUFBRSxDQUFDLHlCQUF5QixDQUFDO2FBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIEJ1dHRvbk1vZHVsZSxcbiAgQ29EaWFsb2dNb2R1bGUsXG4gIENvRGlhbG9nUHJvbXB0TW9kdWxlLFxuICBDb0dyaWRNb2R1bGUsXG4gIENvU2lkZWJhck1vZHVsZSxcbiAgRHJvcERvd25Nb2R1bGUsXG4gIEZvcm1Nb2R1bGUsXG4gIEljb25Nb2R1bGUsXG4gIElucHV0Q2hlY2tib3hNb2R1bGUsXG4gIElucHV0Q29tYm9Cb3hNb2R1bGUsXG4gIElucHV0RGF0ZVBpY2tlck1vZHVsZSxcbiAgSW5wdXROdW1iZXJQaWNrZXJNb2R1bGUsXG4gIElucHV0UmFkaW9CdXR0b25Nb2R1bGUsXG4gIElucHV0VGV4dE1vZHVsZSxcbiAgTXVsdGlTZWxlY3RMaXN0TW9kdWxlLFxuICBQb3B1cE1vZHVsZSxcbn0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcbmltcG9ydCB7RmxleE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2ZsZXgtbGF5b3V0XCI7XG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9kaWN0aW9uYXJ5LnNlcnZpY2VcIjtcbmltcG9ydCB7U2hvcHBpbmdDYXJ0TWFuYWdlckNvbXBvbmVudH0gZnJvbSBcIi4vc2hvcHBpbmctY2FydC1tYW5hZ2VyL3Nob3BwaW5nLWNhcnQtbWFuYWdlci5jb21wb25lbnRcIjtcbmltcG9ydCB7U2hvcHBpbmdDYXJ0Q29tcG9uZW50fSBmcm9tIFwiLi9zaG9wcGluZy1jYXJ0L3Nob3BwaW5nLWNhcnQuY29tcG9uZW50XCI7XG5pbXBvcnQge1Nob3BwaW5nQ2FydExpbmVDb21wb25lbnR9IGZyb20gXCIuL3Nob3BwaW5nLWNhcnQtbGluZS9zaG9wcGluZy1jYXJ0LWxpbmUuY29tcG9uZW50XCI7XG5pbXBvcnQge1N0b2NrU3RhdHVzSW5kaWNhdG9yQ29tcG9uZW50fSBmcm9tIFwiLi4vY29yZS9zdG9jay1zdGF0dXMtaW5kaWNhdG9yL3N0b2NrLXN0YXR1cy1pbmRpY2F0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQge01hdFN0ZXBwZXJNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zdGVwcGVyXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xuaW1wb3J0IHtPcHRpb25zU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2Uvb3B0aW9ucy5zZXJ2aWNlXCI7XG5pbXBvcnQge0lvbmVTaG9wcGluZ0NhcnRDb21wb25lbnR9IGZyb20gXCIuL2lvbmUtc2hvcHBpbmctY2FydC5jb21wb25lbnRcIjtcbmltcG9ydCB7Q29yZU1vZHVsZX0gZnJvbSBcIi4uL2NvcmUvY29yZS5tb2R1bGVcIjtcbmltcG9ydCB7Q2hhcmFjdGVyaXN0aWNBbnN3ZXJDb21wb25lbnR9IGZyb20gXCIuLi9jb3JlL2NoYXJhY3RlcmlzdGljLWFuc3dlci9jaGFyYWN0ZXJpc3RpYy1hbnN3ZXIuY29tcG9uZW50XCI7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBTaG9wcGluZ0NhcnRNYW5hZ2VyQ29tcG9uZW50LFxuICAgIFNob3BwaW5nQ2FydENvbXBvbmVudCxcbiAgICBTaG9wcGluZ0NhcnRMaW5lQ29tcG9uZW50LFxuICAgIFN0b2NrU3RhdHVzSW5kaWNhdG9yQ29tcG9uZW50LFxuICAgIElvbmVTaG9wcGluZ0NhcnRDb21wb25lbnQsXG4gICAgQ2hhcmFjdGVyaXN0aWNBbnN3ZXJDb21wb25lbnQsXG4gIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEljb25Nb2R1bGUsXG4gICAgICAgIElucHV0VGV4dE1vZHVsZSxcbiAgICAgICAgSW5wdXRDaGVja2JveE1vZHVsZSxcbiAgICAgICAgSW5wdXRSYWRpb0J1dHRvbk1vZHVsZSxcbiAgICAgICAgRm9ybU1vZHVsZSxcbiAgICAgICAgSW5wdXRDb21ib0JveE1vZHVsZSxcbiAgICAgICAgSW5wdXREYXRlUGlja2VyTW9kdWxlLFxuICAgICAgICBJbnB1dE51bWJlclBpY2tlck1vZHVsZSxcbiAgICAgICAgQ29EaWFsb2dNb2R1bGUsXG4gICAgICAgIENvRGlhbG9nUHJvbXB0TW9kdWxlLFxuICAgICAgICBCdXR0b25Nb2R1bGUsXG4gICAgICAgIEZsZXhNb2R1bGUsXG4gICAgICAgIE11bHRpU2VsZWN0TGlzdE1vZHVsZSxcbiAgICAgICAgTWF0U3RlcHBlck1vZHVsZSxcbiAgICAgICAgRHJvcERvd25Nb2R1bGUsXG4gICAgICAgIFBvcHVwTW9kdWxlLmZvclJvb3QoKSxcbiAgICAgICAgQ29TaWRlYmFyTW9kdWxlLFxuICAgICAgICBDb0dyaWRNb2R1bGUsXG4gICAgICAgIENvcmVNb2R1bGVcbiAgICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBEaWN0aW9uYXJ5U2VydmljZSxcbiAgICBUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgT3B0aW9uc1NlcnZpY2VcbiAgXSxcbiAgZW50cnlDb21wb25lbnRzOiBbXG4gICAgSW9uZVNob3BwaW5nQ2FydENvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbSW9uZVNob3BwaW5nQ2FydENvbXBvbmVudCwgU3RvY2tTdGF0dXNJbmRpY2F0b3JDb21wb25lbnQsIENoYXJhY3RlcmlzdGljQW5zd2VyQ29tcG9uZW50XSxcbiAgYm9vdHN0cmFwOiBbSW9uZVNob3BwaW5nQ2FydENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgSW9uZVNob3BwaW5nQ2FydE1vZHVsZSB7fVxuIl19
@@ -152,7 +152,7 @@ ShoppingCartLineComponent.decorators = [
152
152
  [textContent]="line.text">
153
153
  </div>
154
154
  `,
155
- styles: ["html,body{height:100%}body{margin:0;font-family:Roboto,\"Helvetica Neue\",sans-serif}.cart-line-r .cart-line-description .cart-line-description-artnr{font-size:10px}.flex-center{display:flex}.flex-center{flex-direction:row}.flex-center{align-items:center!important;justify-content:center!important}:host{padding-bottom:20px}:host{padding-top:20px}.cart-line-r .cart-line-description,.cart-line-r .cart-line-right .cart-line-amount,.cart-line-r .cart-line-image,.cart-line-r .cart-line-right .cart-line-stock,.cart-line-r .cart-line-right .cart-line-totals{margin-top:20px}.cart-line-r .cart-line-description,.cart-line-r .cart-line-right .cart-line-amount,.cart-line-r .cart-line-image,.cart-line-r .cart-line-right .cart-line-stock,.cart-line-r .cart-line-right .cart-line-totals{margin-bottom:20px}.cart-line-r .cart-line-description,.cart-line-r .cart-line-right .cart-line-amount,.cart-line-t,.cart-line-r .cart-line-right .cart-line-totals{margin-left:20px}.cart-line-r .cart-line-description,.cart-line-r .cart-line-right .cart-line-amount,.cart-line-t{margin-right:20px}.triangle{border-radius:3px}.full-width{width:100%}.flex-center{margin:10px 0}:host{display:flex;flex-wrap:wrap;border-bottom:1px solid #DBE3E8;width:100%}:host.overlayed.is-text{display:none!important}:host.overlayed.is-selected{background-color:#add8e6}:host.overview.is-text{display:none!important}:host.overview.is-selected{background-color:#add8e6}.horizontal{display:flex;flex-direction:row-reverse}.cart-line-r{display:flex;justify-content:stretch;flex-direction:row}@media (max-width: 800px){.cart-line-r{flex-direction:column}}.cart-line-r co-button{border:0;padding:0}.cart-line-r .cart-line-image{display:flex;flex:1 0 auto!important;flex-direction:column;align-items:center;justify-content:center}.cart-line-r .cart-line-image image-display{width:6em;height:6em}.cart-line-r .cart-line-description{display:flex;flex-direction:column;width:100%}.cart-line-r .cart-line-description .cart-line-description-main{font-weight:bold}.cart-line-r .cart-line-right{justify-content:flex-end}.cart-line-r .cart-line-right .cart-line-stock{width:10em}.cart-line-r .cart-line-right .cart-line-amount{width:10em}.cart-line-r .cart-line-right .cart-line-totals{display:flex;justify-content:flex-end;min-width:100px;font-weight:bold}.cart-line-r .cart-line-right .cart-line-totals span{text-align:right}.cart-line-t.article-text{padding-left:10em}\n"]
155
+ styles: ["html,body{height:100%}body{margin:0;font-family:Roboto,\"Helvetica Neue\",sans-serif}.cart-line-r .cart-line-description .cart-line-description-artnr{font-size:10px}.flex-center{display:flex}.flex-center{flex-direction:row}.flex-center{align-items:center!important;justify-content:center!important}:host{padding-bottom:20px}:host{padding-top:20px}.cart-line-r .cart-line-description,.cart-line-r .cart-line-right .cart-line-amount,.cart-line-r .cart-line-image,.cart-line-r .cart-line-right .cart-line-stock,.cart-line-r .cart-line-right .cart-line-totals{margin-top:20px}.cart-line-r .cart-line-description,.cart-line-r .cart-line-right .cart-line-amount,.cart-line-r .cart-line-image,.cart-line-r .cart-line-right .cart-line-stock,.cart-line-r .cart-line-right .cart-line-totals{margin-bottom:20px}.cart-line-r .cart-line-description,.cart-line-r .cart-line-right .cart-line-amount,.cart-line-t,.cart-line-r .cart-line-right .cart-line-totals{margin-left:20px}.cart-line-r .cart-line-description,.cart-line-r .cart-line-right .cart-line-amount,.cart-line-t{margin-right:20px}.triangle{border-radius:3px}.full-width{width:100%}.flex-center{margin:10px 0}:host{display:flex;flex-wrap:wrap;border-bottom:1px solid #DBE3E8;width:100%}:host.overlayed.is-text{display:none!important}:host.overlayed.is-selected{background-color:#add8e6}:host.overview.is-text{display:none!important}:host.overview.is-selected{background-color:#add8e6}.horizontal{display:flex;flex-direction:row}.cart-line-r{display:flex;justify-content:stretch;flex-direction:row}@media (max-width: 800px){.cart-line-r{flex-direction:column}}.cart-line-r co-button{border:0;padding:0}.cart-line-r .cart-line-image{display:flex;flex:1 0 auto!important;flex-direction:column;align-items:center;justify-content:center}.cart-line-r .cart-line-image image-display{width:6em;height:6em}.cart-line-r .cart-line-description{display:flex;flex-direction:column;width:100%}.cart-line-r .cart-line-description .cart-line-description-main{font-weight:bold}.cart-line-r .cart-line-right{justify-content:flex-end}.cart-line-r .cart-line-right .cart-line-stock{width:10em}.cart-line-r .cart-line-right .cart-line-amount{width:10em}.cart-line-r .cart-line-right .cart-line-totals{display:flex;justify-content:flex-end;min-width:100px;font-weight:bold}.cart-line-r .cart-line-right .cart-line-totals span{text-align:right}.cart-line-t.article-text{padding-left:10em}\n"]
156
156
  },] }
157
157
  ];
158
158
  ShoppingCartLineComponent.ctorParameters = () => [
@@ -448,4 +448,4 @@ ShoppingCartManagerComponent.propDecorators = {
448
448
  openCart: [{ type: Output }],
449
449
  articleAdded: [{ type: Output }]
450
450
  };
451
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcHBpbmctY2FydC1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50L3Nob3BwaW5nLWNhcnQvc2hvcHBpbmctY2FydC1tYW5hZ2VyL3Nob3BwaW5nLWNhcnQtbWFuYWdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUE2QixNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUM5RSxPQUFPLEVBQWUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBR25GLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLHdFQUF3RSxDQUFDO0FBQ3ZILE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBSW5HLE9BQU8sRUFBcUMsYUFBYSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDL0YsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOERBQThELENBQUM7QUFFL0YsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFHdEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBcUR4RSxNQUFNLE9BQU8sNEJBQTRCO0lBK0R2QyxZQUNTLE9BQTJCLEVBQzNCLGlCQUEwQyxFQUMxQyxhQUE0QixFQUM1QixrQkFBcUM7UUFIckMsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF5QjtRQUMxQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1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QU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQztRQUM1SCxPQUFPLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUVPLDhCQUE4QixDQUFDLEtBQWE7UUFDbEQsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDMUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUN4QztJQUNILENBQUM7OztZQW5mRixTQUFTLFNBQUM7Z0JBQ1QsOERBQThEO2dCQUM5RCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDVDs7YUFFRjs7O1lBckVPLGtCQUFrQjtZQUdsQix1QkFBdUI7WUFRYSxhQUFhO1lBR2pELGlCQUFpQjs7OzhCQXlEdEIsU0FBUyxTQUFDLGlCQUFpQjs0QkFHM0IsU0FBUyxTQUFDLGVBQWU7bUNBR3pCLFNBQVMsU0FBQyxzQkFBc0I7MkJBR2hDLE1BQU07dUJBR04sTUFBTTsyQkFHTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xuaW1wb3J0IHtOdW1iZXJVdGlsc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC91dGlscy9udW1iZXItdXRpbHNcIjtcbmltcG9ydCB7U3Vic2NyaXB0aW9uLCB0aHJvd0Vycm9yfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkV2ZW50U2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZVwiO1xuaW1wb3J0IHtDb21taXNzaW9uQ29kZVR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9yZWZjb2RlL2NvbW1pc3Npb24tY29kZS10eXBlLmVudW1cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm9cIjtcbmltcG9ydCB7UmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXNvbHZlLXBlbmRpbmctcmVhc29uLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWxpbmUtdHlwZS5lbnVtXCI7XG5pbXBvcnQge0NvRG9tYWluVmFsdWV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY28tZG9tYWluLXZhbHVlLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1hcnRpY2xlLXdhcmVob3VzZS5ib1wiO1xuaW1wb3J0IHtMaW5lT3BlcmF0aW9uU3RhdHVzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2xpbmUtb3BlcmF0aW9uLXN0YXR1cy5ib1wiO1xuaW1wb3J0IHtDb0RpYWxvZ0NvbXBvbmVudCwgQ29HcmlkQ29tcG9uZW50LCBQcm9tcHRTZXJ2aWNlfSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xuaW1wb3J0IHtQZW5kaW5nUmVhc29uVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3BlbmRpbmctcmVhc29uLXR5cGUuZW51bVwiO1xuaW1wb3J0IHtBcnRpY2xlRnVsbE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWZ1bGwtb2JqZWN0XCI7XG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS9kaWN0aW9uYXJ5LnNlcnZpY2VcIjtcbmltcG9ydCB7TGluZU9wZXJhdGlvblJlc3BvbnNlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2xpbmUtb3BlcmF0aW9uLXJlc3BvbnNlLmJvXCI7XG5pbXBvcnQge0NoYXJhY3RlcmlzdGljQW5zd2VyQ29tcG9uZW50fSBmcm9tIFwiLi4vY2hhcmFjdGVyaXN0aWMtYW5zd2VyL2NoYXJhY3RlcmlzdGljLWFuc3dlci5jb21wb25lbnRcIjtcbmltcG9ydCB7UG9zaXRpb25HcmlkUm93fSBmcm9tIFwiLi4vLi4vLi4vLi4vZW51bS9wb3NpdGlvbi1ncmlkLXJvdy5lbnVtXCI7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogXCJzaG9wcGluZy1jYXJ0LW1hbmFnZXJcIixcbiAgdGVtcGxhdGU6IGBcbiAgICA8Y28tZGlhbG9nICN3YXJlaG91c2VEaWFsb2dcbiAgICAgICAgICAgICAgIChjbG9zZUNsaWNrKT1cImhpZGUoKVwiXG4gICAgICAgICAgICAgICAob3ZlcmxheUNsaWNrKT1cIm9uU3RvY2tNYW5hZ2VyQ2FuY2VsQ2xpY2soKVwiXG4gICAgICA+XG4gICAgICA8bmctY29udGFpbmVyIGhlYWRlcj57eyAnU1RPQ0tfTk9USUZJQ0FUSU9OJyB8IGxvY2FsaXplIH19PC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgY29udGVudD5cbiAgICAgICAgPGNvLWZvcm0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udGVudFwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtZXNzYWdlXCIgY2xhc3M9XCJtZXNzYWdlLWZpZWxkXCIgW3RleHRDb250ZW50XT1cIm1lc3NhZ2UgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1pc3Npb24tZmllbGRzXCIgZnhMYXlvdXQ9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8Y28taW5wdXQtbnVtYmVyLXBpY2tlciBjbGFzcz1cImhvcml6b250YWxcIiBbKG1vZGVsKV09XCJhbW91bnRcIiBbbWluXT1cIjBcIiBkZWNpbWFscz1cIjNcIj48L2NvLWlucHV0LW51bWJlci1waWNrZXI+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LWNvbWJvLWJveCBbKG1vZGVsKV09XCJjb21taXNzaW9uQ29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzb3VyY2VdPVwiY29tbWlzc2lvbkNvZGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkc109XCJjb21taXNzaW9uRmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidDT01NSVNTSU9OX0NPREUnIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPjwvY28taW5wdXQtY29tYm8tYm94PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8Y28tZ3JpZCAjd2FyZWhvdXNlR3JpZFxuICAgICAgICAgICAgICAgICAgW2RhdGFdPVwidHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlc1wiXG4gICAgICAgICAgICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAgIFtwYWdpbmdFbmFibGVkXT1cIid0cnVlJ1wiXG4gICAgICAgICAgICAgICAgICBbbWF4TnVtYmVyT2ZSb3dzXT1cIicyMCdcIlxuICAgICAgICAgICAgICAgICAgKHJvd3NTZWxlY3RlZCk9XCJoYW5kbGVSb3dzU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvY28tZ3JpZD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvY28tZm9ybT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIGZvb3Rlcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxjby1idXR0b24gW2xhYmVsXT1cIidPSycgfCBsb2NhbGl6ZVwiIChjbGljayk9XCJvblN0b2NrTWFuYWdlck9rQ2xpY2soKVwiPjwvY28tYnV0dG9uPlxuICAgICAgICAgICAgPGNvLWJ1dHRvbiBbbGFiZWxdPVwiJ0NBTkNFTCcgfCBsb2NhbGl6ZVwiIChjbGljayk9XCJvblN0b2NrTWFuYWdlckNhbmNlbENsaWNrKClcIj48L2NvLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvY28tZGlhbG9nPlxuXG4gICAgPGNoYXJhY3RlcmlzdGljLWFuc3dlclxuICAgICAgI2NoYXJhY3RlcmlzdGljQW5zd2VyXG4gICAgICAob2tDbGljayk9XCJoYW5kbGVDaGFyYWN0ZXJpc3RpY0Fuc3dlck9rQ2xpY2soJGV2ZW50KVwiXG4gICAgPjwvY2hhcmFjdGVyaXN0aWMtYW5zd2VyPlxuICBgLFxuICBzdHlsZVVybHM6IFtcIi4vc2hvcHBpbmctY2FydC1tYW5hZ2VyLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFNob3BwaW5nQ2FydE1hbmFnZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoXCJ3YXJlaG91c2VEaWFsb2dcIilcbiAgcHVibGljIHdhcmVob3VzZURpYWxvZzogQ29EaWFsb2dDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZChcIndhcmVob3VzZUdyaWRcIilcbiAgcHVibGljIHdhcmVob3VzZUdyaWQ6IENvR3JpZENvbXBvbmVudDxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoXCJjaGFyYWN0ZXJpc3RpY0Fuc3dlclwiKVxuICBwdWJsaWMgY2hhcmFjdGVyaXN0aWNBbnN3ZXI6IENoYXJhY3RlcmlzdGljQW5zd2VyQ29tcG9uZW50O1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgbGluZXNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBvcGVuQ2FydDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgYXJ0aWNsZUFkZGVkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHVibGljIGdldCBhbW91bnRPZkxpbmVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE51bWJlclV0aWxzLk5yT3JEZWZhdWx0KHRoaXMuc2VydmljZS5hcnRpY2xlQW1vdW50LCAwKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2hvd0NoYXJhY3RlcmlzdGljRGlhbG9nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zaG93Q2hhcmFjdGVyaXN0aWM7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNob3dDaGFyYWN0ZXJpc3RpY0RpYWxvZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dDaGFyYWN0ZXJpc3RpYyA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGJyYW5jaE5yOiBzdHJpbmc7XG4gIHB1YmxpYyBuZXdBcnRpY2xlTnI6IHN0cmluZztcbiAgcHVibGljIG5ld0FydGljbGU6IEFydGljbGVGdWxsT2JqZWN0O1xuICBwdWJsaWMgc2VsZWN0ZWRXYXJlaG91c2VOcjogbnVtYmVyO1xuICBwdWJsaWMgYW1vdW50OiBudW1iZXI7XG4gIHB1YmxpYyBpc1JldHVybjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyB3YWl0Rm9yTGluZXNDaGFuZ2VkVG9PcGVuQ2FydDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgbWVzc2FnZTogc3RyaW5nID0gXCJDSEVDS19XQVJFSE9VU0VfQU5EX0NPTU1JU1NJT05DT0RFXCI7XG5cbiAgcHVibGljIGNvbW1pc3Npb25Db2RlOiBDb21taXNzaW9uQ29kZVR5cGU7XG4gIHB1YmxpYyBjb21taXNzaW9uQ29kZXM6IENvRG9tYWluVmFsdWVbXSA9IFtdO1xuICBwdWJsaWMgY29tbWlzc2lvbkZpZWxkczogT2JqZWN0ID0geyB0ZXh0OiBcImRlc2NyaXB0aW9uXCIsIHZhbHVlOiBcImNvZGVcIiB9O1xuXG4gIHB1YmxpYyB0cmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VzOiBUcmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VbXSA9IFtdO1xuICBwdWJsaWMgdHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlRmllbGRzOiBPYmplY3QgPSB7IHRleHQ6IFwid2FyZWhvdXNlRGVzY1wiLCB2YWx1ZTogXCJ3YXJlaG91c2VOclwiIH07XG4gIHB1YmxpYyBjb2x1bW5zOiBhbnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBjdXJyZW50UGVuZGluZ0xpbmU6IFRyYW5zYWN0aW9uTGluZUluZm87XG4gIHB1YmxpYyBjdXJyZW50UmVhc29uOiBSZXNvbHZlUGVuZGluZ0xpbmVSZWFzb25SZXF1ZXN0O1xuICBwdWJsaWMgZWRpdGluZ0xpbmU6IFRyYW5zYWN0aW9uTGluZUluZm87XG5cbiAgcHVibGljIGRpYWxvZ1Byb21wdEhlYWRlcjogc3RyaW5nID0gXCJcIjtcblxuICBwdWJsaWMgcm9vdEVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gbnVsbDtcblxuICBwcml2YXRlIF9zdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIGN1cnJlbnRPcGVyYXRpb25TdGF0dXM6IExpbmVPcGVyYXRpb25TdGF0dXM7XG4gIHByaXZhdGUgX2luT3V0Q29sbGVjdGlvbjogQ29Eb21haW5WYWx1ZVtdID0gW107XG4gIHByaXZhdGUgX29rT3JDYW5jZWxDbGljazogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9zaG93Q2hhcmFjdGVyaXN0aWM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyB0cmFuc2FjdGlvbkV2ZW50czogVHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsXG4gICAgcHVibGljIHByb21wdFNlcnZpY2U6IFByb21wdFNlcnZpY2UsXG4gICAgcHVibGljIF9kaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuc2VydmljZS50cmFuc2FjdGlvblVwZGF0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5saW5lc0NoYW5nZWQuZW1pdCh0aGlzLndhaXRGb3JMaW5lc0NoYW5nZWRUb09wZW5DYXJ0KTtcbiAgICAgICAgdGhpcy53YWl0Rm9yTGluZXNDaGFuZ2VkVG9PcGVuQ2FydCA9IGZhbHNlO1xuICAgICAgfSksXG5cbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudHMuYWRkVG9DYXJ0QnlTa3Uuc3Vic2NyaWJlKChwYXJhbXM6IHtza3U6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIHBvcENhcnQ6IGJvb2xlYW59KSA9PiB7XG4gICAgICAgICAgdGhpcy53YWl0Rm9yTGluZXNDaGFuZ2VkVG9PcGVuQ2FydCA9IHBhcmFtcy5wb3BDYXJ0O1xuICAgICAgICAgIHRoaXMuYWRkVG9DYXJ0KHBhcmFtcy5za3UsIHBhcmFtcy5hbW91bnQpLnRoZW4oKTtcbiAgICAgICAgfSksXG5cbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudHMuYWRkQXJ0aWNsZUxpbmVBdC5zdWJzY3JpYmUoKHBhcmFtczoge3NrdTogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvd30pID0+IHtcbiAgICAgICAgICB0aGlzLmFkZEFydGljbGVMaW5lVG9DYXJ0QXQocGFyYW1zLnNrdSwgcGFyYW1zLmFtb3VudCwgcGFyYW1zLmxpbmVOciwgcGFyYW1zLmJlZm9yZU9yQWZ0ZXIpLnRoZW4oKTtcbiAgICAgIH0pLFxuXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRzLmFkZFRleHRMaW5lQXQuc3Vic2NyaWJlKChwYXJhbXM6IHt0ZXh0OiBzdHJpbmcsIGxpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3d9KSA9PiB7XG4gICAgICAgIHRoaXMuYWRkVGV4dExpbmVUb0NhcnRBdChwYXJhbXMudGV4dCwgcGFyYW1zLmxpbmVOciwgcGFyYW1zLmJlZm9yZU9yQWZ0ZXIpLnRoZW4oKTtcbiAgICAgIH0pLFxuXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRzLmNoYW5nZUxpbmVTZXF1ZW5jZS5zdWJzY3JpYmUoKHBhcmFtczoge2Zyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXJ9KSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbmdlTGluZVNlcXVlbmNlKHBhcmFtcy5mcm9tSW5kZXgsIHBhcmFtcy50b0luZGV4KS50aGVuKCk7XG4gICAgICB9KSxcblxuICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50cy5hZGRUb0NhcnRCeVNlbGVjdG9yUmVzdWx0LnN1YnNjcmliZShcbiAgICAgICAgKHBhcmFtczoge3NlbGVjdG9yUmVzdWx0OiB7Z29vZElkOiBudW1iZXIsIGJhc2VHb29kSWQ6IG51bWJlciwgc2VsZWN0b3JEYXRhOiBhbnksIHF1YW50aXR5OiBudW1iZXJ9LCBwb3BDYXJ0OiBib29sZWFufSkgPT4ge1xuICAgICAgICAgIHRoaXMud2FpdEZvckxpbmVzQ2hhbmdlZFRvT3BlbkNhcnQgPSBwYXJhbXMucG9wQ2FydDtcbiAgICAgICAgICB0aGlzLmFkZFRvQ2FydEJ5U2VsZWN0b3JSZXN1bHQocGFyYW1zLnNlbGVjdG9yUmVzdWx0KS50aGVuKCk7XG4gICAgICAgIH0pLFxuXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRzLm9wZW5TaG9wcGluZ0NhcnRNb2R1bGUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5vcGVuQ2FydC5lbWl0KGZhbHNlKTtcbiAgICAgIH0pLFxuXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRzLmFkZFVzZXJSZWxhdGlvblNob3BwaW5nQ2FydE1vZHVsZS5zdWJzY3JpYmUoKGxvZ2luOiB7dXNlcjogc3RyaW5nLCBwdzogc3RyaW5nfSkgPT4ge1xuICAgICAgICB0aGlzLmFkZFVzZXJSZWxhdGlvblRvVHJhbnNhY3Rpb25BbmRMb2dpbihsb2dpbi51c2VyLCBsb2dpbi5wdyk7XG4gICAgICB9KSxcblxuICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50cy5hZGROZXdVc2VyVG9TaG9wcGluZ0NhcnRNb2R1bGUuc3Vic2NyaWJlKChlbWFpbEFkZHJlc3MpID0+IHtcbiAgICAgICAgdGhpcy5hZGRFbWFpbEFkZHJlc3NUb1RyYW5zYWN0aW9uKGVtYWlsQWRkcmVzcyk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmNvbHVtbnMucHVzaChcbiAgICAgIHtmaWVsZDogXCJ3YXJlaG91c2VOclwiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQoXCJXQVJFSE9VU0VcIiksIGFsbG93RmlsdGVyaW5nOiBmYWxzZX0sXG4gICAgICB7ZmllbGQ6IFwid2FyZWhvdXNlRGVzY1wiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQoXCJERVNDUklQVElPTlwiKX0sXG4gICAgICB7ZmllbGQ6IFwic3RvY2tBbW91bnRcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KFwiU1RPQ0tcIil9XG4gICAgKTtcblxuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jb21taXNzaW9uQ29kZXMgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0Q29tbWlzc2lvbkNvZGVzKFwiTkxcIik7XG4gICAgdGhpcy5saW5lc0NoYW5nZWQuZW1pdCh0aGlzLndhaXRGb3JMaW5lc0NoYW5nZWRUb09wZW5DYXJ0KTtcbiAgICB0aGlzLndhaXRGb3JMaW5lc0NoYW5nZWRUb09wZW5DYXJ0ID0gZmFsc2U7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLndhcmVob3VzZURpYWxvZy5jbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFRvQ2FydChza3U6IHN0cmluZywgYW1vdW50OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBnb29kSWQ6IG51bWJlciAgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0R29vZElkRnJvbUFydGljbGVOcihza3UpO1xuICAgIGF3YWl0IHRoaXMuX2xvYWRBcnRpY2xlKGdvb2RJZCk7XG4gICAgYXdhaXQgdGhpcy5fY3JlYXRlVHJhbnNhY3Rpb24oKTtcbiAgICBhd2FpdCB0aGlzLl9oYW5kbGVBZGRBcnRpY2xlKGFtb3VudCk7XG4gICAgdGhpcy5hcnRpY2xlQWRkZWQuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZEFydGljbGVMaW5lVG9DYXJ0QXQoc2t1OiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBsaW5lTnI6IG51bWJlciwgYmVmb3JlT3JBZnRlcjogUG9zaXRpb25HcmlkUm93KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZ29vZElkOiBudW1iZXIgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0R29vZElkRnJvbUFydGljbGVOcihza3UpO1xuICAgIGF3YWl0IHRoaXMuX2xvYWRBcnRpY2xlKGdvb2RJZCk7XG4gICAgYXdhaXQgdGhpcy5fY3JlYXRlVHJhbnNhY3Rpb24oKTtcbiAgICBhd2FpdCB0aGlzLl9oYW5kbGVBZGRBcnRpY2xlTGluZUF0KGFtb3VudCwgbGluZU5yLCBiZWZvcmVPckFmdGVyKTtcbiAgICB0aGlzLmFydGljbGVBZGRlZC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkVGV4dExpbmVUb0NhcnRBdCh0ZXh0OiBzdHJpbmcsIGxpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3cpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UuYWRkVGV4dExpbmVUb1RyYW5zYWN0aW9uKDAsIHRleHQsIDAsIGZhbHNlLCAwLFxuICAgICAgYmVmb3JlT3JBZnRlciA9PT0gUG9zaXRpb25HcmlkUm93LkJlZm9yZSA/IGxpbmVOciA6IHVuZGVmaW5lZCxcbiAgICAgIGJlZm9yZU9yQWZ0ZXIgPT09IFBvc2l0aW9uR3JpZFJvdy5BZnRlciA/IGxpbmVOciA6IHVuZGVmaW5lZClcbiAgICAgIC50aGVuKCh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5faGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cygpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3IpID0+IHRoaXMucHJvbXB0U2VydmljZS5zaG93RXJyb3IoZXJyb3IpKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VMaW5lU2VxdWVuY2UoZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBmcm9tTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyA9IHRoaXMuX2dldFRyYW5zYWN0aW9uTGluZUluZm9CeUluZGV4KGZyb21JbmRleClcbiAgICBsZXQgdG9MaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvID0gdGhpcy5fZ2V0VHJhbnNhY3Rpb25MaW5lSW5mb0J5SW5kZXgodG9JbmRleCk7XG4gICAgbGV0IGFib3ZlTGluZU5yOiBudW1iZXI7XG4gICAgbGV0IGJlbG93TGluZU5yOiBudW1iZXI7XG5cbiAgICBpZiAoZnJvbUluZGV4ID4gdG9JbmRleCkge1xuICAgICAgYWJvdmVMaW5lTnIgPSB0b0xpbmUubGluZU5yO1xuICAgIH0gZWxzZSB7XG4gICAgICBiZWxvd0xpbmVOciA9IHRvTGluZS5saW5lTnI7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmNoYW5nZUxpbmVTZXF1ZW5jZShmcm9tTGluZS51dWlkLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpXG4gICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX2hhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB0aGlzLnByb21wdFNlcnZpY2Uuc2hvd0Vycm9yKGVycm9yKSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkVG9DYXJ0QnlTZWxlY3RvclJlc3VsdChyZXN1bHQ6IHtnb29kSWQ6IG51bWJlciwgYmFzZUdvb2RJZDogbnVtYmVyLCBzZWxlY3RvckRhdGE6IGFueSwgcXVhbnRpdHk6IG51bWJlcn0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLl9sb2FkQXJ0aWNsZShyZXN1bHQuZ29vZElkKTtcbiAgICBhd2FpdCB0aGlzLl9jcmVhdGVUcmFuc2FjdGlvbigpO1xuICAgIGF3YWl0IHRoaXMuX2hhbmRsZUFkZEFydGljbGUocmVzdWx0LnF1YW50aXR5KTtcbiAgICB0aGlzLmFydGljbGVBZGRlZC5lbWl0KCk7XG4gIH1cblxuICAvLyBUT0RPIHB1YmxpYyB1c2VyIGxvZ3MgaW4uLi4uIGhvdyByZWNvbm5lY3QgdGhlIENvbm5lY3Rvcj9cbiAgcHVibGljIGFzeW5jIGFkZFVzZXJSZWxhdGlvblRvVHJhbnNhY3Rpb25BbmRMb2dpbih1c2VyTmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuc2VydmljZS5zZXRSZWxhdGlvbkJ5VXNlcih1c2VyTmFtZSwgcGFzc3dvcmQpO1xuICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudHMubG9nZ2VkSW4ubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzaG93U3RvY2tNYW5hZ2VyKGxpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnNlbGVjdGVkV2FyZWhvdXNlTnIgPSBsaW5lLndhcmVob3VzZU51bWJlcjtcbiAgICB0aGlzLmFtb3VudCA9IGxpbmUuYW1vdW50O1xuICAgIHRoaXMuY29tbWlzc2lvbkNvZGUgPSBsaW5lLmNvbW1pc3Npb25Db2RlO1xuICAgIHRoaXMuc2hvdyhsaW5lLmFydGljbGVOdW1iZXIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhpZGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX29rT3JDYW5jZWxDbGljaykge1xuICAgICAgdGhpcy5fb2tPckNhbmNlbENsaWNrID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMub25TdG9ja01hbmFnZXJDYW5jZWxDbGljaygpO1xuICB9XG5cbiAgcHVibGljIHNob3coYXJ0aWNsZU5yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9yZWxvYWREYXRhQ29sbGVjdGlvbnMoYXJ0aWNsZU5yKS50aGVuKCk7XG5cbiAgICB0aGlzLm1lc3NhZ2UgPSB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbjtcbiAgICB0aGlzLndhcmVob3VzZUdyaWQuc2VsZWN0Um93KHRoaXMuc2VsZWN0ZWRXYXJlaG91c2VOcik7XG4gICAgdGhpcy53YXJlaG91c2VEaWFsb2cudGFyZ2V0RWxlbWVudCA9IG51bGw7XG4gICAgdGhpcy53YXJlaG91c2VEaWFsb2cub3BlbigpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG9uU3RvY2tNYW5hZ2VyQ2FuY2VsQ2xpY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fb2tPckNhbmNlbENsaWNrID0gdHJ1ZTtcbiAgICB0aGlzLndhcmVob3VzZURpYWxvZy5jbG9zZSgpO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudFJlYXNvbikge1xuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmNhbmNlbEFkZFRyYW5zYWN0aW9uTGluZSh0aGlzLmN1cnJlbnRSZWFzb24ubGluZVV1aWQpO1xuICAgIH1cblxuICAgIHRoaXMuZWRpdGluZ0xpbmUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgb25TdG9ja01hbmFnZXJPa0NsaWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX29rT3JDYW5jZWxDbGljayA9IHRydWU7XG4gICAgdGhpcy53YXJlaG91c2VEaWFsb2cuY2xvc2UoKTtcblxuICAgIGlmICh0aGlzLmNvbW1pc3Npb25Db2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudFJlYXNvbi5jb21taXNzaW9uQ29kZSA9IHRoaXMuY29tbWlzc2lvbkNvZGUudmFsdWVPZigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFtb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmN1cnJlbnRSZWFzb24ucXVhbnRpdHkgPSB0aGlzLmFtb3VudC52YWx1ZU9mKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRXYXJlaG91c2VOciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmN1cnJlbnRSZWFzb24ud2FyZWhvdXNlTnIgPSB0aGlzLnNlbGVjdGVkV2FyZWhvdXNlTnI7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudFJlYXNvbikge1xuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbih0aGlzLmN1cnJlbnRSZWFzb24pXG4gICAgICAgIC50aGVuKCh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5faGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cygpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZWRpdGluZ0xpbmUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuYWRkVHJhbnNhY3Rpb25MaW5lKFRyYW5zYWN0aW9uTGluZVR5cGUuQXJ0aWNsZUxpbmUsIHRoaXMubmV3QXJ0aWNsZU5yLCB0aGlzLmFtb3VudCwgdGhpcy5zZWxlY3RlZFdhcmVob3VzZU5yLCB0aGlzLmNvbW1pc3Npb25Db2RlLCB0aGlzLmlzUmV0dXJuLCAwLCAwKVxuICAgICAgICAgIC50aGVuKCh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHkodGhpcy5lZGl0aW5nTGluZS51dWlkLCB0aGlzLmFtb3VudClcbiAgICAgICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cygpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZWRpdGluZ0xpbmUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlUm93c1NlbGVjdGVkKHJvd3M6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRXYXJlaG91c2VOciA9IChyb3dzLmZpbmQoeCA9PiB4ICE9PSB1bmRlZmluZWQpKS53YXJlaG91c2VOcjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVDaGFyYWN0ZXJpc3RpY0Fuc3dlck9rQ2xpY2soYW5zd2VyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmN1cnJlbnRSZWFzb24gPSBuZXcgUmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdCh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMudXVpZCwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24sIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uVHlwZSk7XG4gICAgdGhpcy5jdXJyZW50UmVhc29uLnRleHR1YWxVc2VySW5wdXQgPSBhbnN3ZXI7XG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbih0aGlzLmN1cnJlbnRSZWFzb24pXG4gICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3JlbG9hZERhdGFDb2xsZWN0aW9ucyhhcnRpY2xlTnI6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGdvb2RJZDogbnVtYmVyICA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRHb29kSWRGcm9tQXJ0aWNsZU5yKGFydGljbGVOcik7XG4gICAgdGhpcy50cmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VzID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldFRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZXMoZ29vZElkKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2hhbmRsZUFkZEFydGljbGUoYW1vdW50OiBudW1iZXIgPSAxKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmFkZFRyYW5zYWN0aW9uTGluZShUcmFuc2FjdGlvbkxpbmVUeXBlLkFydGljbGVMaW5lLFxuICAgICAgdGhpcy5uZXdBcnRpY2xlTnIsXG4gICAgICBhbW91bnQsXG4gICAgICB0aGlzLm5ld0FydGljbGUuc3RhbmRhcmRXYXJlSG91c2UsXG4gICAgICB0aGlzLm5ld0FydGljbGUuY29tbWlzc2lvbkNvZGUsXG4gICAgICBmYWxzZSxcbiAgICAgIDAsXG4gICAgICAwKVxuICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5faGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cygpO1xuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4gdGhpcy5wcm9tcHRTZXJ2aWNlLnNob3dFcnJvcihlcnJvcikpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlQWRkQXJ0aWNsZUxpbmVBdChhbW91bnQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvdyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2VydmljZS5hZGRUcmFuc2FjdGlvbkxpbmUoVHJhbnNhY3Rpb25MaW5lVHlwZS5BcnRpY2xlTGluZSxcbiAgICAgIHRoaXMubmV3QXJ0aWNsZU5yLFxuICAgICAgYW1vdW50LFxuICAgICAgdGhpcy5uZXdBcnRpY2xlLnN0YW5kYXJkV2FyZUhvdXNlLFxuICAgICAgdGhpcy5uZXdBcnRpY2xlLmNvbW1pc3Npb25Db2RlLFxuICAgICAgZmFsc2UsXG4gICAgICBiZWZvcmVPckFmdGVyID09PSBQb3NpdGlvbkdyaWRSb3cuQmVmb3JlID8gbGluZU5yIDogdW5kZWZpbmVkLFxuICAgICAgYmVmb3JlT3JBZnRlciA9PT0gUG9zaXRpb25HcmlkUm93LkFmdGVyID8gbGluZU5yIDogdW5kZWZpbmVkKVxuICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4gdGhpcy5wcm9tcHRTZXJ2aWNlLnNob3dFcnJvcihlcnJvcikpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0V2FyZUhvdXNlTm9Gcm9tQXJ0aWNsZSgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLm5ld0FydGljbGUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLm5ld0FydGljbGUuc3RvY2tMb2NhdGlvbnMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLm5ld0FydGljbGUuc3RvY2tMb2NhdGlvbnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5uZXdBcnRpY2xlLnN0b2NrTG9jYXRpb25zWzBdLndhcmVob3VzZU5yO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHByaXZhdGUgX2lzTGluZU9wZXJhdGlvblN0YXR1cygpOiBib29sZWFuIHtcbiAgICB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMgPSB0aGlzLnNlcnZpY2UuY3VycmVudExpbmVPcGVyYXRpb25TdGF0dXM7XG4gICAgaWYgKHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tJZlNob3BwaW5nQ2FydE5lZWRzVG9EaXNwbGF5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlcnZpY2UuY3VycmVudFRyYW5zYWN0aW9uICYmIHRoaXMuc2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25Ocikge1xuICAgICAgdGhpcy5saW5lc0NoYW5nZWQuZW1pdCh0aGlzLndhaXRGb3JMaW5lc0NoYW5nZWRUb09wZW5DYXJ0KTtcbiAgICAgIHRoaXMud2FpdEZvckxpbmVzQ2hhbmdlZFRvT3BlbkNhcnQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9jb25maXJtQWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY3VycmVudFJlYXNvbiA9IG5ldyBSZXNvbHZlUGVuZGluZ0xpbmVSZWFzb25SZXF1ZXN0KHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy51dWlkLCB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbiwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb25UeXBlKTtcbiAgICBjb25zdCBwZW5kaW5nUmVhc29uVGV4dDogc3RyaW5nID0gYXdhaXQgdGhpcy5fZ2V0UGVuZGluZ1JlYXNvblRleHQodGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24pO1xuICAgIHRoaXMuY3VycmVudFJlYXNvbi5jb25maXJtYXRpb24gID0gYXdhaXQgdGhpcy5wcm9tcHRTZXJ2aWNlLnNob3dZZXNObyhwZW5kaW5nUmVhc29uVGV4dCwgXCIgXCIpO1xuICAgIGF3YWl0IHRoaXMuc2VydmljZS5yZXNvbHZlUGVuZGluZ0xpbmVSZWFzb24odGhpcy5jdXJyZW50UmVhc29uKVxuICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5faGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9zaG93SW5mb3JtYXRpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jdXJyZW50UmVhc29uID0gbmV3IFJlc29sdmVQZW5kaW5nTGluZVJlYXNvblJlcXVlc3QodGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnV1aWQsIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uLCB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvblR5cGUpO1xuICAgIGNvbnN0IHBlbmRpbmdSZWFzb25UZXh0OiBzdHJpbmcgPSBhd2FpdCB0aGlzLl9nZXRQZW5kaW5nUmVhc29uVGV4dCh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbik7XG4gICAgYXdhaXQgdGhpcy5wcm9tcHRTZXJ2aWNlLnNob3dPa01vZGFsKHBlbmRpbmdSZWFzb25UZXh0LCBcIiBcIik7XG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbih0aGlzLmN1cnJlbnRSZWFzb24pXG4gICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2dldFBlbmRpbmdSZWFzb25UZXh0KHBlbmRpbmdSZWFzb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKHBlbmRpbmdSZWFzb24gPT09IFwiQVJUSUNMRV9JU19ESVNDT05USU5VRURfRE9fWU9VX1dBTlRfVE9fQ09OVElOVUVfUExFQVNFX0NPTkZJUk1cIikge1xuICAgICAgcmV0dXJuIHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIkFSVElDTEVfSU5fT1VUX0NPTExFQ1RJT05cIikucmVwbGFjZShcInx+XCIsIGF3YWl0IHRoaXMuZ2V0SW5PdXRDb2xsZWN0aW9uT2ZBcnRpY2xlKCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KHBlbmRpbmdSZWFzb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRJbk91dENvbGxlY3Rpb25PZkFydGljbGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAoIXRoaXMuX2luT3V0Q29sbGVjdGlvbi5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2luT3V0Q29sbGVjdGlvbiA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRJbk91dENvbGxlY3Rpb24oXCJOTFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBkb21haW5WYWx1ZTogQ29Eb21haW5WYWx1ZSA9IHRoaXMuX2luT3V0Q29sbGVjdGlvbi5maW5kKGVsZW1lbnQgPT4gZWxlbWVudC5jb2RlID09PSB0aGlzLm5ld0FydGljbGUuaW5PdXRDb2xsZWN0aW9uKTtcbiAgICBpZiAoZG9tYWluVmFsdWUpIHtcbiAgICAgIHJldHVybiBkb21haW5WYWx1ZS5kZXNjcmlwdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9pc0xpbmVPcGVyYXRpb25TdGF0dXMoKSkge1xuICAgICAgYXdhaXQgdGhpcy5faGFuZGxlUGVuZGluZ0xpbmUodGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnV1aWQpLnRoZW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY2hlY2tJZlNob3BwaW5nQ2FydE5lZWRzVG9EaXNwbGF5KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSAgYXN5bmMgX2hhbmRsZVBlbmRpbmdMaW5lKGxpbmVVdWlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmN1cnJlbnRSZWFzb24gPSBuZXcgUmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdCh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMudXVpZCwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24sIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uVHlwZSk7XG4gICAgdGhpcy5jdXJyZW50UGVuZGluZ0xpbmUgPSB0aGlzLnNlcnZpY2UuY3VycmVudExpbmVzLmZpbmQobCA9PiBsLnV1aWQgPT09IGxpbmVVdWlkKTtcblxuICAgIHN3aXRjaCAodGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb25UeXBlKSB7XG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLkFCT1JURUQ6XG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLkNBTkNFTExFRDpcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNhbmNlbEFkZFRyYW5zYWN0aW9uTGluZSh0aGlzLmN1cnJlbnRQZW5kaW5nTGluZS51dWlkKS50aGVuKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5DT05GSVJNQVRJT05fTkVFREVEOlxuICAgICAgICBhd2FpdCB0aGlzLl9jb25maXJtQWN0aW9uKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5JTlZBTElEX0xPR0lTVElDUzpcbiAgICAgICAgYXdhaXQgdGhpcy5zaG93U3RvY2tNYW5hZ2VyKHRoaXMuY3VycmVudFBlbmRpbmdMaW5lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLk5PTl9DUklUSUNBTF9ESVNDT05USU5VQVRJT046XG4gICAgICAgIGF3YWl0IHRoaXMuX3Nob3dJbmZvcm1hdGlvbigpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQ0hBUkFDVEVSSVNUSUNTX0FOU1dFUl9ORUVERUQ6XG4gICAgICAgIHRoaXMuQ2hhcmFjdGVyaXN0aWNzQW5zd2VyTmVlZGVkKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5OT05FOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5jdXJyZW50UmVhc29uID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmN1cnJlbnRQZW5kaW5nTGluZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfY3JlYXRlVHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLnNlcnZpY2UuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTnIpIHtcbiAgICAgIGlmICghYXdhaXQgdGhpcy5zZXJ2aWNlLmNyZWF0ZVRyYW5zYWN0aW9uKCkpIHtcbiAgICAgICAgdGhyb3dFcnJvcihcIkZhaWxlZCB0byBjcmVhdGUgdHJhbnNhY3Rpb25cIik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfbG9hZEFydGljbGUoZ29vZElkOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLm5ld0FydGljbGUgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0QXJ0aWNsZUZ1bGxPYmplY3QoZ29vZElkKTtcbiAgICB0aGlzLm5ld0FydGljbGVOciA9IHRoaXMubmV3QXJ0aWNsZS5hcnRpY2xlTnI7XG4gIH1cblxuICBwcml2YXRlIGFkZEVtYWlsQWRkcmVzc1RvVHJhbnNhY3Rpb24oZW1haWxBZGRyZXNzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlcnZpY2UuZW1haWxBZGRyZXNzID0gZW1haWxBZGRyZXNzO1xuICB9XG5cbiAgcHJpdmF0ZSBDaGFyYWN0ZXJpc3RpY3NBbnN3ZXJOZWVkZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFyYWN0ZXJpc3RpY0Fuc3dlci5xdWVzdGlvbiA9IHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5jaGFyYWN0ZXJpc3RpYy5xdWVzdGlvbjtcbiAgICB0aGlzLmNoYXJhY3RlcmlzdGljQW5zd2VyLnRpdGxlID0gdGhpcy5uZXdBcnRpY2xlLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMuY2hhcmFjdGVyaXN0aWNBbnN3ZXIudmFsdWUgPSB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMuY2hhcmFjdGVyaXN0aWMudmFsdWU7XG4gICAgdGhpcy5jaGFyYWN0ZXJpc3RpY0Fuc3dlci5jaGFyYWN0ZXJpc3RpY3MgPSB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMuY2hhcmFjdGVyaXN0aWMudHJhbnNhY3Rpb25MaW5lQ2hhcmFjdGVyaXN0aWNDaG9pY2VzO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNoYXJhY3RlcmlzdGljQW5zd2VyLm9wZW4oKTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgfSwgMTAwMCk7XG5cbiAgfVxuXG4gIHByaXZhdGUgX2dldExpbmVVdWlkQnlMaW5lTnIobGluZU5yOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mb1tdID0gdGhpcy5zZXJ2aWNlLmN1cnJlbnRMaW5lcy5maWx0ZXIodHJhbnNMaW5lcyA9PiB0cmFuc0xpbmVzLmxpbmVOciA9PT0gbGluZU5yKTtcbiAgICByZXR1cm4gdHJhbnNhY3Rpb25MaW5lWzBdLnV1aWQ7XG4gIH1cblxuICBwcml2YXRlIF9nZXRUcmFuc2FjdGlvbkxpbmVJbmZvQnlJbmRleChpbmRleDogbnVtYmVyKTogVHJhbnNhY3Rpb25MaW5lSW5mbyB7XG4gICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLnNlcnZpY2UuY3VycmVudExpbmVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5jdXJyZW50TGluZXNbaW5kZXhdXG4gICAgfVxuICB9XG59XG4iXX0=
451
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcHBpbmctY2FydC1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50L3Nob3BwaW5nLWNhcnQvc2hvcHBpbmctY2FydC1tYW5hZ2VyL3Nob3BwaW5nLWNhcnQtbWFuYWdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUE2QixNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUM5RSxPQUFPLEVBQWUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBR25GLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLHdFQUF3RSxDQUFDO0FBQ3ZILE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBSW5HLE9BQU8sRUFBcUMsYUFBYSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDL0YsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOERBQThELENBQUM7QUFFL0YsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFHdEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBcUR4RSxNQUFNLE9BQU8sNEJBQTRCO0lBK0R2QyxZQUNTLE9BQTJCLEVBQzNCLGlCQUEwQyxFQUMxQyxhQUE0QixFQUM1QixrQkFBcUM7UUFIckMsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF5QjtRQUMxQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1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QU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQztRQUM1SCxPQUFPLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUVPLDhCQUE4QixDQUFDLEtBQWE7UUFDbEQsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDMUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUN4QztJQUNILENBQUM7OztZQW5mRixTQUFTLFNBQUM7Z0JBQ1QsOERBQThEO2dCQUM5RCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDVDs7YUFFRjs7O1lBckVPLGtCQUFrQjtZQUdsQix1QkFBdUI7WUFRYSxhQUFhO1lBR2pELGlCQUFpQjs7OzhCQXlEdEIsU0FBUyxTQUFDLGlCQUFpQjs0QkFHM0IsU0FBUyxTQUFDLGVBQWU7bUNBR3pCLFNBQVMsU0FBQyxzQkFBc0I7MkJBR2hDLE1BQU07dUJBR04sTUFBTTsyQkFHTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xuaW1wb3J0IHtOdW1iZXJVdGlsc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC91dGlscy9udW1iZXItdXRpbHNcIjtcbmltcG9ydCB7U3Vic2NyaXB0aW9uLCB0aHJvd0Vycm9yfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkV2ZW50U2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZVwiO1xuaW1wb3J0IHtDb21taXNzaW9uQ29kZVR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9yZWZjb2RlL2NvbW1pc3Npb24tY29kZS10eXBlLmVudW1cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm9cIjtcbmltcG9ydCB7UmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXNvbHZlLXBlbmRpbmctcmVhc29uLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWxpbmUtdHlwZS5lbnVtXCI7XG5pbXBvcnQge0NvRG9tYWluVmFsdWV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY28tZG9tYWluLXZhbHVlLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1hcnRpY2xlLXdhcmVob3VzZS5ib1wiO1xuaW1wb3J0IHtMaW5lT3BlcmF0aW9uU3RhdHVzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2xpbmUtb3BlcmF0aW9uLXN0YXR1cy5ib1wiO1xuaW1wb3J0IHtDb0RpYWxvZ0NvbXBvbmVudCwgQ29HcmlkQ29tcG9uZW50LCBQcm9tcHRTZXJ2aWNlfSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xuaW1wb3J0IHtQZW5kaW5nUmVhc29uVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3BlbmRpbmctcmVhc29uLXR5cGUuZW51bVwiO1xuaW1wb3J0IHtBcnRpY2xlRnVsbE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWZ1bGwtb2JqZWN0XCI7XG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS9kaWN0aW9uYXJ5LnNlcnZpY2VcIjtcbmltcG9ydCB7TGluZU9wZXJhdGlvblJlc3BvbnNlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2xpbmUtb3BlcmF0aW9uLXJlc3BvbnNlLmJvXCI7XG5pbXBvcnQge0NoYXJhY3RlcmlzdGljQW5zd2VyQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vY29yZS9jaGFyYWN0ZXJpc3RpYy1hbnN3ZXIvY2hhcmFjdGVyaXN0aWMtYW5zd2VyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtQb3NpdGlvbkdyaWRSb3d9IGZyb20gXCIuLi8uLi8uLi8uLi9lbnVtL3Bvc2l0aW9uLWdyaWQtcm93LmVudW1cIjtcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiBcInNob3BwaW5nLWNhcnQtbWFuYWdlclwiLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxjby1kaWFsb2cgI3dhcmVob3VzZURpYWxvZ1xuICAgICAgICAgICAgICAgKGNsb3NlQ2xpY2spPVwiaGlkZSgpXCJcbiAgICAgICAgICAgICAgIChvdmVybGF5Q2xpY2spPVwib25TdG9ja01hbmFnZXJDYW5jZWxDbGljaygpXCJcbiAgICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgaGVhZGVyPnt7ICdTVE9DS19OT1RJRklDQVRJT04nIHwgbG9jYWxpemUgfX08L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBjb250ZW50PlxuICAgICAgICA8Y28tZm9ybT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250ZW50XCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lc3NhZ2VcIiBjbGFzcz1cIm1lc3NhZ2UtZmllbGRcIiBbdGV4dENvbnRlbnRdPVwibWVzc2FnZSB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWlzc2lvbi1maWVsZHNcIiBmeExheW91dD1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC1udW1iZXItcGlja2VyIGNsYXNzPVwiaG9yaXpvbnRhbFwiIFsobW9kZWwpXT1cImFtb3VudFwiIFttaW5dPVwiMFwiIGRlY2ltYWxzPVwiM1wiPjwvY28taW5wdXQtbnVtYmVyLXBpY2tlcj5cbiAgICAgICAgICAgICAgICA8Y28taW5wdXQtY29tYm8tYm94IFsobW9kZWwpXT1cImNvbW1pc3Npb25Db2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NvdXJjZV09XCJjb21taXNzaW9uQ29kZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRzXT1cImNvbW1pc3Npb25GaWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0NPTU1JU1NJT05fQ09ERScgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC1jb21iby1ib3g+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxjby1ncmlkICN3YXJlaG91c2VHcmlkXG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJ0cmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VzXCJcbiAgICAgICAgICAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgICAgICAgICAgICAgICAgW3BhZ2luZ0VuYWJsZWRdPVwiJ3RydWUnXCJcbiAgICAgICAgICAgICAgICAgIFttYXhOdW1iZXJPZlJvd3NdPVwiJzIwJ1wiXG4gICAgICAgICAgICAgICAgICAocm93c1NlbGVjdGVkKT1cImhhbmRsZVJvd3NTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9jby1ncmlkPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9jby1mb3JtPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgZm9vdGVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNlbnRlclwiPlxuICAgICAgICAgICAgPGNvLWJ1dHRvbiBbbGFiZWxdPVwiJ09LJyB8IGxvY2FsaXplXCIgKGNsaWNrKT1cIm9uU3RvY2tNYW5hZ2VyT2tDbGljaygpXCI+PC9jby1idXR0b24+XG4gICAgICAgICAgICA8Y28tYnV0dG9uIFtsYWJlbF09XCInQ0FOQ0VMJyB8IGxvY2FsaXplXCIgKGNsaWNrKT1cIm9uU3RvY2tNYW5hZ2VyQ2FuY2VsQ2xpY2soKVwiPjwvY28tYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9jby1kaWFsb2c+XG5cbiAgICA8Y2hhcmFjdGVyaXN0aWMtYW5zd2VyXG4gICAgICAjY2hhcmFjdGVyaXN0aWNBbnN3ZXJcbiAgICAgIChva0NsaWNrKT1cImhhbmRsZUNoYXJhY3RlcmlzdGljQW5zd2VyT2tDbGljaygkZXZlbnQpXCJcbiAgICA+PC9jaGFyYWN0ZXJpc3RpYy1hbnN3ZXI+XG4gIGAsXG4gIHN0eWxlVXJsczogW1wiLi9zaG9wcGluZy1jYXJ0LW1hbmFnZXIuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgU2hvcHBpbmdDYXJ0TWFuYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChcIndhcmVob3VzZURpYWxvZ1wiKVxuICBwdWJsaWMgd2FyZWhvdXNlRGlhbG9nOiBDb0RpYWxvZ0NvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKFwid2FyZWhvdXNlR3JpZFwiKVxuICBwdWJsaWMgd2FyZWhvdXNlR3JpZDogQ29HcmlkQ29tcG9uZW50PGFueT47XG5cbiAgQFZpZXdDaGlsZChcImNoYXJhY3RlcmlzdGljQW5zd2VyXCIpXG4gIHB1YmxpYyBjaGFyYWN0ZXJpc3RpY0Fuc3dlcjogQ2hhcmFjdGVyaXN0aWNBbnN3ZXJDb21wb25lbnQ7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBsaW5lc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IG9wZW5DYXJ0OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBhcnRpY2xlQWRkZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgZ2V0IGFtb3VudE9mTGluZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTnVtYmVyVXRpbHMuTnJPckRlZmF1bHQodGhpcy5zZXJ2aWNlLmFydGljbGVBbW91bnQsIDApO1xuICB9XG5cbiAgcHVibGljIGdldCBzaG93Q2hhcmFjdGVyaXN0aWNEaWFsb2coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dDaGFyYWN0ZXJpc3RpYztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc2hvd0NoYXJhY3RlcmlzdGljRGlhbG9nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd0NoYXJhY3RlcmlzdGljID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgYnJhbmNoTnI6IHN0cmluZztcbiAgcHVibGljIG5ld0FydGljbGVOcjogc3RyaW5nO1xuICBwdWJsaWMgbmV3QXJ0aWNsZTogQXJ0aWNsZUZ1bGxPYmplY3Q7XG4gIHB1YmxpYyBzZWxlY3RlZFdhcmVob3VzZU5yOiBudW1iZXI7XG4gIHB1YmxpYyBhbW91bnQ6IG51bWJlcjtcbiAgcHVibGljIGlzUmV0dXJuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHdhaXRGb3JMaW5lc0NoYW5nZWRUb09wZW5DYXJ0OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmcgPSBcIkNIRUNLX1dBUkVIT1VTRV9BTkRfQ09NTUlTU0lPTkNPREVcIjtcblxuICBwdWJsaWMgY29tbWlzc2lvbkNvZGU6IENvbW1pc3Npb25Db2RlVHlwZTtcbiAgcHVibGljIGNvbW1pc3Npb25Db2RlczogQ29Eb21haW5WYWx1ZVtdID0gW107XG4gIHB1YmxpYyBjb21taXNzaW9uRmllbGRzOiBPYmplY3QgPSB7IHRleHQ6IFwiZGVzY3JpcHRpb25cIiwgdmFsdWU6IFwiY29kZVwiIH07XG5cbiAgcHVibGljIHRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZXM6IFRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZVtdID0gW107XG4gIHB1YmxpYyB0cmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VGaWVsZHM6IE9iamVjdCA9IHsgdGV4dDogXCJ3YXJlaG91c2VEZXNjXCIsIHZhbHVlOiBcIndhcmVob3VzZU5yXCIgfTtcbiAgcHVibGljIGNvbHVtbnM6IGFueVtdID0gW107XG5cbiAgcHVibGljIGN1cnJlbnRQZW5kaW5nTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbztcbiAgcHVibGljIGN1cnJlbnRSZWFzb246IFJlc29sdmVQZW5kaW5nTGluZVJlYXNvblJlcXVlc3Q7XG4gIHB1YmxpYyBlZGl0aW5nTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbztcblxuICBwdWJsaWMgZGlhbG9nUHJvbXB0SGVhZGVyOiBzdHJpbmcgPSBcIlwiO1xuXG4gIHB1YmxpYyByb290RWxlbWVudDogSFRNTEVsZW1lbnQgPSBudWxsO1xuXG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgY3VycmVudE9wZXJhdGlvblN0YXR1czogTGluZU9wZXJhdGlvblN0YXR1cztcbiAgcHJpdmF0ZSBfaW5PdXRDb2xsZWN0aW9uOiBDb0RvbWFpblZhbHVlW10gPSBbXTtcbiAgcHJpdmF0ZSBfb2tPckNhbmNlbENsaWNrOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3Nob3dDaGFyYWN0ZXJpc3RpYzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgcHVibGljIHRyYW5zYWN0aW9uRXZlbnRzOiBUcmFuc2FjdGlvbkV2ZW50U2VydmljZSxcbiAgICBwdWJsaWMgcHJvbXB0U2VydmljZTogUHJvbXB0U2VydmljZSxcbiAgICBwdWJsaWMgX2RpY3Rpb25hcnlTZXJ2aWNlOiBEaWN0aW9uYXJ5U2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5zZXJ2aWNlLnRyYW5zYWN0aW9uVXBkYXRlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmxpbmVzQ2hhbmdlZC5lbWl0KHRoaXMud2FpdEZvckxpbmVzQ2hhbmdlZFRvT3BlbkNhcnQpO1xuICAgICAgICB0aGlzLndhaXRGb3JMaW5lc0NoYW5nZWRUb09wZW5DYXJ0ID0gZmFsc2U7XG4gICAgICB9KSxcblxuICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50cy5hZGRUb0NhcnRCeVNrdS5zdWJzY3JpYmUoKHBhcmFtczoge3NrdTogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgcG9wQ2FydDogYm9vbGVhbn0pID0+IHtcbiAgICAgICAgICB0aGlzLndhaXRGb3JMaW5lc0NoYW5nZWRUb09wZW5DYXJ0ID0gcGFyYW1zLnBvcENhcnQ7XG4gICAgICAgICAgdGhpcy5hZGRUb0NhcnQocGFyYW1zLnNrdSwgcGFyYW1zLmFtb3VudCkudGhlbigpO1xuICAgICAgICB9KSxcblxuICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50cy5hZGRBcnRpY2xlTGluZUF0LnN1YnNjcmliZSgocGFyYW1zOiB7c2t1OiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBsaW5lTnI6IG51bWJlciwgYmVmb3JlT3JBZnRlcjogUG9zaXRpb25HcmlkUm93fSkgPT4ge1xuICAgICAgICAgIHRoaXMuYWRkQXJ0aWNsZUxpbmVUb0NhcnRBdChwYXJhbXMuc2t1LCBwYXJhbXMuYW1vdW50LCBwYXJhbXMubGluZU5yLCBwYXJhbXMuYmVmb3JlT3JBZnRlcikudGhlbigpO1xuICAgICAgfSksXG5cbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudHMuYWRkVGV4dExpbmVBdC5zdWJzY3JpYmUoKHBhcmFtczoge3RleHQ6IHN0cmluZywgbGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvd30pID0+IHtcbiAgICAgICAgdGhpcy5hZGRUZXh0TGluZVRvQ2FydEF0KHBhcmFtcy50ZXh0LCBwYXJhbXMubGluZU5yLCBwYXJhbXMuYmVmb3JlT3JBZnRlcikudGhlbigpO1xuICAgICAgfSksXG5cbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudHMuY2hhbmdlTGluZVNlcXVlbmNlLnN1YnNjcmliZSgocGFyYW1zOiB7ZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlcn0pID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2VMaW5lU2VxdWVuY2UocGFyYW1zLmZyb21JbmRleCwgcGFyYW1zLnRvSW5kZXgpLnRoZW4oKTtcbiAgICAgIH0pLFxuXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRzLmFkZFRvQ2FydEJ5U2VsZWN0b3JSZXN1bHQuc3Vic2NyaWJlKFxuICAgICAgICAocGFyYW1zOiB7c2VsZWN0b3JSZXN1bHQ6IHtnb29kSWQ6IG51bWJlciwgYmFzZUdvb2RJZDogbnVtYmVyLCBzZWxlY3RvckRhdGE6IGFueSwgcXVhbnRpdHk6IG51bWJlcn0sIHBvcENhcnQ6IGJvb2xlYW59KSA9PiB7XG4gICAgICAgICAgdGhpcy53YWl0Rm9yTGluZXNDaGFuZ2VkVG9PcGVuQ2FydCA9IHBhcmFtcy5wb3BDYXJ0O1xuICAgICAgICAgIHRoaXMuYWRkVG9DYXJ0QnlTZWxlY3RvclJlc3VsdChwYXJhbXMuc2VsZWN0b3JSZXN1bHQpLnRoZW4oKTtcbiAgICAgICAgfSksXG5cbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudHMub3BlblNob3BwaW5nQ2FydE1vZHVsZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm9wZW5DYXJ0LmVtaXQoZmFsc2UpO1xuICAgICAgfSksXG5cbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudHMuYWRkVXNlclJlbGF0aW9uU2hvcHBpbmdDYXJ0TW9kdWxlLnN1YnNjcmliZSgobG9naW46IHt1c2VyOiBzdHJpbmcsIHB3OiBzdHJpbmd9KSA9PiB7XG4gICAgICAgIHRoaXMuYWRkVXNlclJlbGF0aW9uVG9UcmFuc2FjdGlvbkFuZExvZ2luKGxvZ2luLnVzZXIsIGxvZ2luLnB3KTtcbiAgICAgIH0pLFxuXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRzLmFkZE5ld1VzZXJUb1Nob3BwaW5nQ2FydE1vZHVsZS5zdWJzY3JpYmUoKGVtYWlsQWRkcmVzcykgPT4ge1xuICAgICAgICB0aGlzLmFkZEVtYWlsQWRkcmVzc1RvVHJhbnNhY3Rpb24oZW1haWxBZGRyZXNzKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuY29sdW1ucy5wdXNoKFxuICAgICAge2ZpZWxkOiBcIndhcmVob3VzZU5yXCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIldBUkVIT1VTRVwiKSwgYWxsb3dGaWx0ZXJpbmc6IGZhbHNlfSxcbiAgICAgIHtmaWVsZDogXCJ3YXJlaG91c2VEZXNjXCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIkRFU0NSSVBUSU9OXCIpfSxcbiAgICAgIHtmaWVsZDogXCJzdG9ja0Ftb3VudFwiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQoXCJTVE9DS1wiKX1cbiAgICApO1xuXG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNvbW1pc3Npb25Db2RlcyA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRDb21taXNzaW9uQ29kZXMoXCJOTFwiKTtcbiAgICB0aGlzLmxpbmVzQ2hhbmdlZC5lbWl0KHRoaXMud2FpdEZvckxpbmVzQ2hhbmdlZFRvT3BlbkNhcnQpO1xuICAgIHRoaXMud2FpdEZvckxpbmVzQ2hhbmdlZFRvT3BlbkNhcnQgPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMud2FyZWhvdXNlRGlhbG9nLmNsb3NlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkVG9DYXJ0KHNrdTogc3RyaW5nLCBhbW91bnQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGdvb2RJZDogbnVtYmVyICA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRHb29kSWRGcm9tQXJ0aWNsZU5yKHNrdSk7XG4gICAgYXdhaXQgdGhpcy5fbG9hZEFydGljbGUoZ29vZElkKTtcbiAgICBhd2FpdCB0aGlzLl9jcmVhdGVUcmFuc2FjdGlvbigpO1xuICAgIGF3YWl0IHRoaXMuX2hhbmRsZUFkZEFydGljbGUoYW1vdW50KTtcbiAgICB0aGlzLmFydGljbGVBZGRlZC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkQXJ0aWNsZUxpbmVUb0NhcnRBdChza3U6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIGxpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3cpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBnb29kSWQ6IG51bWJlciA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRHb29kSWRGcm9tQXJ0aWNsZU5yKHNrdSk7XG4gICAgYXdhaXQgdGhpcy5fbG9hZEFydGljbGUoZ29vZElkKTtcbiAgICBhd2FpdCB0aGlzLl9jcmVhdGVUcmFuc2FjdGlvbigpO1xuICAgIGF3YWl0IHRoaXMuX2hhbmRsZUFkZEFydGljbGVMaW5lQXQoYW1vdW50LCBsaW5lTnIsIGJlZm9yZU9yQWZ0ZXIpO1xuICAgIHRoaXMuYXJ0aWNsZUFkZGVkLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRUZXh0TGluZVRvQ2FydEF0KHRleHQ6IHN0cmluZywgbGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvdyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2VydmljZS5hZGRUZXh0TGluZVRvVHJhbnNhY3Rpb24oMCwgdGV4dCwgMCwgZmFsc2UsIDAsXG4gICAgICBiZWZvcmVPckFmdGVyID09PSBQb3NpdGlvbkdyaWRSb3cuQmVmb3JlID8gbGluZU5yIDogdW5kZWZpbmVkLFxuICAgICAgYmVmb3JlT3JBZnRlciA9PT0gUG9zaXRpb25HcmlkUm93LkFmdGVyID8gbGluZU5yIDogdW5kZWZpbmVkKVxuICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4gdGhpcy5wcm9tcHRTZXJ2aWNlLnNob3dFcnJvcihlcnJvcikpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUxpbmVTZXF1ZW5jZShmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IGZyb21MaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvID0gdGhpcy5fZ2V0VHJhbnNhY3Rpb25MaW5lSW5mb0J5SW5kZXgoZnJvbUluZGV4KVxuICAgIGxldCB0b0xpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8gPSB0aGlzLl9nZXRUcmFuc2FjdGlvbkxpbmVJbmZvQnlJbmRleCh0b0luZGV4KTtcbiAgICBsZXQgYWJvdmVMaW5lTnI6IG51bWJlcjtcbiAgICBsZXQgYmVsb3dMaW5lTnI6IG51bWJlcjtcblxuICAgIGlmIChmcm9tSW5kZXggPiB0b0luZGV4KSB7XG4gICAgICBhYm92ZUxpbmVOciA9IHRvTGluZS5saW5lTnI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJlbG93TGluZU5yID0gdG9MaW5lLmxpbmVOcjtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UuY2hhbmdlTGluZVNlcXVlbmNlKGZyb21MaW5lLnV1aWQsIGFib3ZlTGluZU5yLCBiZWxvd0xpbmVOcilcbiAgICAgIC50aGVuKCh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5faGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cygpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3IpID0+IHRoaXMucHJvbXB0U2VydmljZS5zaG93RXJyb3IoZXJyb3IpKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRUb0NhcnRCeVNlbGVjdG9yUmVzdWx0KHJlc3VsdDoge2dvb2RJZDogbnVtYmVyLCBiYXNlR29vZElkOiBudW1iZXIsIHNlbGVjdG9yRGF0YTogYW55LCBxdWFudGl0eTogbnVtYmVyfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuX2xvYWRBcnRpY2xlKHJlc3VsdC5nb29kSWQpO1xuICAgIGF3YWl0IHRoaXMuX2NyZWF0ZVRyYW5zYWN0aW9uKCk7XG4gICAgYXdhaXQgdGhpcy5faGFuZGxlQWRkQXJ0aWNsZShyZXN1bHQucXVhbnRpdHkpO1xuICAgIHRoaXMuYXJ0aWNsZUFkZGVkLmVtaXQoKTtcbiAgfVxuXG4gIC8vIFRPRE8gcHVibGljIHVzZXIgbG9ncyBpbi4uLi4gaG93IHJlY29ubmVjdCB0aGUgQ29ubmVjdG9yP1xuICBwdWJsaWMgYXN5bmMgYWRkVXNlclJlbGF0aW9uVG9UcmFuc2FjdGlvbkFuZExvZ2luKHVzZXJOYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzdWNjZXNzOiBib29sZWFuID0gYXdhaXQgdGhpcy5zZXJ2aWNlLnNldFJlbGF0aW9uQnlVc2VyKHVzZXJOYW1lLCBwYXNzd29yZCk7XG4gICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50cy5sb2dnZWRJbi5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHNob3dTdG9ja01hbmFnZXIobGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2VsZWN0ZWRXYXJlaG91c2VOciA9IGxpbmUud2FyZWhvdXNlTnVtYmVyO1xuICAgIHRoaXMuYW1vdW50ID0gbGluZS5hbW91bnQ7XG4gICAgdGhpcy5jb21taXNzaW9uQ29kZSA9IGxpbmUuY29tbWlzc2lvbkNvZGU7XG4gICAgdGhpcy5zaG93KGxpbmUuYXJ0aWNsZU51bWJlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaGlkZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fb2tPckNhbmNlbENsaWNrKSB7XG4gICAgICB0aGlzLl9va09yQ2FuY2VsQ2xpY2sgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5vblN0b2NrTWFuYWdlckNhbmNlbENsaWNrKCk7XG4gIH1cblxuICBwdWJsaWMgc2hvdyhhcnRpY2xlTnI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX3JlbG9hZERhdGFDb2xsZWN0aW9ucyhhcnRpY2xlTnIpLnRoZW4oKTtcblxuICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uO1xuICAgIHRoaXMud2FyZWhvdXNlR3JpZC5zZWxlY3RSb3codGhpcy5zZWxlY3RlZFdhcmVob3VzZU5yKTtcbiAgICB0aGlzLndhcmVob3VzZURpYWxvZy50YXJnZXRFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLndhcmVob3VzZURpYWxvZy5vcGVuKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgb25TdG9ja01hbmFnZXJDYW5jZWxDbGljaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9va09yQ2FuY2VsQ2xpY2sgPSB0cnVlO1xuICAgIHRoaXMud2FyZWhvdXNlRGlhbG9nLmNsb3NlKCk7XG5cbiAgICBpZiAodGhpcy5jdXJyZW50UmVhc29uKSB7XG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuY2FuY2VsQWRkVHJhbnNhY3Rpb25MaW5lKHRoaXMuY3VycmVudFJlYXNvbi5saW5lVXVpZCk7XG4gICAgfVxuXG4gICAgdGhpcy5lZGl0aW5nTGluZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBvblN0b2NrTWFuYWdlck9rQ2xpY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fb2tPckNhbmNlbENsaWNrID0gdHJ1ZTtcbiAgICB0aGlzLndhcmVob3VzZURpYWxvZy5jbG9zZSgpO1xuXG4gICAgaWYgKHRoaXMuY29tbWlzc2lvbkNvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jdXJyZW50UmVhc29uLmNvbW1pc3Npb25Db2RlID0gdGhpcy5jb21taXNzaW9uQ29kZS52YWx1ZU9mKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYW1vdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudFJlYXNvbi5xdWFudGl0eSA9IHRoaXMuYW1vdW50LnZhbHVlT2YoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZFdhcmVob3VzZU5yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudFJlYXNvbi53YXJlaG91c2VOciA9IHRoaXMuc2VsZWN0ZWRXYXJlaG91c2VOcjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jdXJyZW50UmVhc29uKSB7XG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2UucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHRoaXMuY3VycmVudFJlYXNvbilcbiAgICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5lZGl0aW5nTGluZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5hZGRUcmFuc2FjdGlvbkxpbmUoVHJhbnNhY3Rpb25MaW5lVHlwZS5BcnRpY2xlTGluZSwgdGhpcy5uZXdBcnRpY2xlTnIsIHRoaXMuYW1vdW50LCB0aGlzLnNlbGVjdGVkV2FyZWhvdXNlTnIsIHRoaXMuY29tbWlzc2lvbkNvZGUsIHRoaXMuaXNSZXR1cm4sIDAsIDApXG4gICAgICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXMoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eSh0aGlzLmVkaXRpbmdMaW5lLnV1aWQsIHRoaXMuYW1vdW50KVxuICAgICAgICAgIC50aGVuKCh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5lZGl0aW5nTGluZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVSb3dzU2VsZWN0ZWQocm93czogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFdhcmVob3VzZU5yID0gKHJvd3MuZmluZCh4ID0+IHggIT09IHVuZGVmaW5lZCkpLndhcmVob3VzZU5yO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZUNoYXJhY3RlcmlzdGljQW5zd2VyT2tDbGljayhhbnN3ZXI6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY3VycmVudFJlYXNvbiA9IG5ldyBSZXNvbHZlUGVuZGluZ0xpbmVSZWFzb25SZXF1ZXN0KHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy51dWlkLCB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbiwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb25UeXBlKTtcbiAgICB0aGlzLmN1cnJlbnRSZWFzb24udGV4dHVhbFVzZXJJbnB1dCA9IGFuc3dlcjtcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHRoaXMuY3VycmVudFJlYXNvbilcbiAgICAgIC50aGVuKCh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuX2hhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfcmVsb2FkRGF0YUNvbGxlY3Rpb25zKGFydGljbGVOcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZ29vZElkOiBudW1iZXIgID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldEdvb2RJZEZyb21BcnRpY2xlTnIoYXJ0aWNsZU5yKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZXMgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlcyhnb29kSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlQWRkQXJ0aWNsZShhbW91bnQ6IG51bWJlciA9IDEpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UuYWRkVHJhbnNhY3Rpb25MaW5lKFRyYW5zYWN0aW9uTGluZVR5cGUuQXJ0aWNsZUxpbmUsXG4gICAgICB0aGlzLm5ld0FydGljbGVOcixcbiAgICAgIGFtb3VudCxcbiAgICAgIHRoaXMubmV3QXJ0aWNsZS5zdGFuZGFyZFdhcmVIb3VzZSxcbiAgICAgIHRoaXMubmV3QXJ0aWNsZS5jb21taXNzaW9uQ29kZSxcbiAgICAgIGZhbHNlLFxuICAgICAgMCxcbiAgICAgIDApXG4gICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICB9LFxuICAgICAgKGVycm9yKSA9PiB0aGlzLnByb21wdFNlcnZpY2Uuc2hvd0Vycm9yKGVycm9yKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVBZGRBcnRpY2xlTGluZUF0KGFtb3VudDogbnVtYmVyLCBsaW5lTnI6IG51bWJlciwgYmVmb3JlT3JBZnRlcjogUG9zaXRpb25HcmlkUm93KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmFkZFRyYW5zYWN0aW9uTGluZShUcmFuc2FjdGlvbkxpbmVUeXBlLkFydGljbGVMaW5lLFxuICAgICAgdGhpcy5uZXdBcnRpY2xlTnIsXG4gICAgICBhbW91bnQsXG4gICAgICB0aGlzLm5ld0FydGljbGUuc3RhbmRhcmRXYXJlSG91c2UsXG4gICAgICB0aGlzLm5ld0FydGljbGUuY29tbWlzc2lvbkNvZGUsXG4gICAgICBmYWxzZSxcbiAgICAgIGJlZm9yZU9yQWZ0ZXIgPT09IFBvc2l0aW9uR3JpZFJvdy5CZWZvcmUgPyBsaW5lTnIgOiB1bmRlZmluZWQsXG4gICAgICBiZWZvcmVPckFmdGVyID09PSBQb3NpdGlvbkdyaWRSb3cuQWZ0ZXIgPyBsaW5lTnIgOiB1bmRlZmluZWQpXG4gICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX2hhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB0aGlzLnByb21wdFNlcnZpY2Uuc2hvd0Vycm9yKGVycm9yKSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRXYXJlSG91c2VOb0Zyb21BcnRpY2xlKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMubmV3QXJ0aWNsZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMubmV3QXJ0aWNsZS5zdG9ja0xvY2F0aW9ucyAhPT0gdW5kZWZpbmVkICYmIHRoaXMubmV3QXJ0aWNsZS5zdG9ja0xvY2F0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLm5ld0FydGljbGUuc3RvY2tMb2NhdGlvbnNbMF0ud2FyZWhvdXNlTnI7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNMaW5lT3BlcmF0aW9uU3RhdHVzKCk6IGJvb2xlYW4ge1xuICAgIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cyA9IHRoaXMuc2VydmljZS5jdXJyZW50TGluZU9wZXJhdGlvblN0YXR1cztcbiAgICBpZiAodGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0lmU2hvcHBpbmdDYXJ0TmVlZHNUb0Rpc3BsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24gJiYgdGhpcy5zZXJ2aWNlLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbk5yKSB7XG4gICAgICB0aGlzLmxpbmVzQ2hhbmdlZC5lbWl0KHRoaXMud2FpdEZvckxpbmVzQ2hhbmdlZFRvT3BlbkNhcnQpO1xuICAgICAgdGhpcy53YWl0Rm9yTGluZXNDaGFuZ2VkVG9PcGVuQ2FydCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2NvbmZpcm1BY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jdXJyZW50UmVhc29uID0gbmV3IFJlc29sdmVQZW5kaW5nTGluZVJlYXNvblJlcXVlc3QodGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnV1aWQsIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uLCB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvblR5cGUpO1xuICAgIGNvbnN0IHBlbmRpbmdSZWFzb25UZXh0OiBzdHJpbmcgPSBhd2FpdCB0aGlzLl9nZXRQZW5kaW5nUmVhc29uVGV4dCh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbik7XG4gICAgdGhpcy5jdXJyZW50UmVhc29uLmNvbmZpcm1hdGlvbiAgPSBhd2FpdCB0aGlzLnByb21wdFNlcnZpY2Uuc2hvd1llc05vKHBlbmRpbmdSZWFzb25UZXh0LCBcIiBcIik7XG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbih0aGlzLmN1cnJlbnRSZWFzb24pXG4gICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3Nob3dJbmZvcm1hdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmN1cnJlbnRSZWFzb24gPSBuZXcgUmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdCh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMudXVpZCwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24sIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uVHlwZSk7XG4gICAgY29uc3QgcGVuZGluZ1JlYXNvblRleHQ6IHN0cmluZyA9IGF3YWl0IHRoaXMuX2dldFBlbmRpbmdSZWFzb25UZXh0KHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uKTtcbiAgICBhd2FpdCB0aGlzLnByb21wdFNlcnZpY2Uuc2hvd09rTW9kYWwocGVuZGluZ1JlYXNvblRleHQsIFwiIFwiKTtcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHRoaXMuY3VycmVudFJlYXNvbilcbiAgICAgIC50aGVuKCh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuX2hhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfZ2V0UGVuZGluZ1JlYXNvblRleHQocGVuZGluZ1JlYXNvbjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAocGVuZGluZ1JlYXNvbiA9PT0gXCJBUlRJQ0xFX0lTX0RJU0NPTlRJTlVFRF9ET19ZT1VfV0FOVF9UT19DT05USU5VRV9QTEVBU0VfQ09ORklSTVwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KFwiQVJUSUNMRV9JTl9PVVRfQ09MTEVDVElPTlwiKS5yZXBsYWNlKFwifH5cIiwgYXdhaXQgdGhpcy5nZXRJbk91dENvbGxlY3Rpb25PZkFydGljbGUoKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQocGVuZGluZ1JlYXNvbik7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEluT3V0Q29sbGVjdGlvbk9mQXJ0aWNsZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghdGhpcy5faW5PdXRDb2xsZWN0aW9uLmxlbmd0aCkge1xuICAgICAgdGhpcy5faW5PdXRDb2xsZWN0aW9uID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldEluT3V0Q29sbGVjdGlvbihcIk5MXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGRvbWFpblZhbHVlOiBDb0RvbWFpblZhbHVlID0gdGhpcy5faW5PdXRDb2xsZWN0aW9uLmZpbmQoZWxlbWVudCA9PiBlbGVtZW50LmNvZGUgPT09IHRoaXMubmV3QXJ0aWNsZS5pbk91dENvbGxlY3Rpb24pO1xuICAgIGlmIChkb21haW5WYWx1ZSkge1xuICAgICAgcmV0dXJuIGRvbWFpblZhbHVlLmRlc2NyaXB0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2hhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX2lzTGluZU9wZXJhdGlvblN0YXR1cygpKSB7XG4gICAgICBhd2FpdCB0aGlzLl9oYW5kbGVQZW5kaW5nTGluZSh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMudXVpZCkudGhlbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jaGVja0lmU2hvcHBpbmdDYXJ0TmVlZHNUb0Rpc3BsYXkoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlICBhc3luYyBfaGFuZGxlUGVuZGluZ0xpbmUobGluZVV1aWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY3VycmVudFJlYXNvbiA9IG5ldyBSZXNvbHZlUGVuZGluZ0xpbmVSZWFzb25SZXF1ZXN0KHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy51dWlkLCB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbiwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb25UeXBlKTtcbiAgICB0aGlzLmN1cnJlbnRQZW5kaW5nTGluZSA9IHRoaXMuc2VydmljZS5jdXJyZW50TGluZXMuZmluZChsID0+IGwudXVpZCA9PT0gbGluZVV1aWQpO1xuXG4gICAgc3dpdGNoICh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvblR5cGUpIHtcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQUJPUlRFRDpcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQ0FOQ0VMTEVEOlxuICAgICAgICB0aGlzLnNlcnZpY2UuY2FuY2VsQWRkVHJhbnNhY3Rpb25MaW5lKHRoaXMuY3VycmVudFBlbmRpbmdMaW5lLnV1aWQpLnRoZW4oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLkNPTkZJUk1BVElPTl9ORUVERUQ6XG4gICAgICAgIGF3YWl0IHRoaXMuX2NvbmZpcm1BY3Rpb24oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLklOVkFMSURfTE9HSVNUSUNTOlxuICAgICAgICBhd2FpdCB0aGlzLnNob3dTdG9ja01hbmFnZXIodGhpcy5jdXJyZW50UGVuZGluZ0xpbmUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuTk9OX0NSSVRJQ0FMX0RJU0NPTlRJTlVBVElPTjpcbiAgICAgICAgYXdhaXQgdGhpcy5fc2hvd0luZm9ybWF0aW9uKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5DSEFSQUNURVJJU1RJQ1NfQU5TV0VSX05FRURFRDpcbiAgICAgICAgdGhpcy5DaGFyYWN0ZXJpc3RpY3NBbnN3ZXJOZWVkZWQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLk5PTkU6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmN1cnJlbnRSZWFzb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY3VycmVudFBlbmRpbmdMaW5lID0gdW5kZWZpbmVkO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9jcmVhdGVUcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuc2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25Ocikge1xuICAgICAgaWYgKCFhd2FpdCB0aGlzLnNlcnZpY2UuY3JlYXRlVHJhbnNhY3Rpb24oKSkge1xuICAgICAgICB0aHJvd0Vycm9yKFwiRmFpbGVkIHRvIGNyZWF0ZSB0cmFuc2FjdGlvblwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9sb2FkQXJ0aWNsZShnb29kSWQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubmV3QXJ0aWNsZSA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRBcnRpY2xlRnVsbE9iamVjdChnb29kSWQpO1xuICAgIHRoaXMubmV3QXJ0aWNsZU5yID0gdGhpcy5uZXdBcnRpY2xlLmFydGljbGVOcjtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRW1haWxBZGRyZXNzVG9UcmFuc2FjdGlvbihlbWFpbEFkZHJlc3M6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VydmljZS5lbWFpbEFkZHJlc3MgPSBlbWFpbEFkZHJlc3M7XG4gIH1cblxuICBwcml2YXRlIENoYXJhY3RlcmlzdGljc0Fuc3dlck5lZWRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoYXJhY3RlcmlzdGljQW5zd2VyLnF1ZXN0aW9uID0gdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLmNoYXJhY3RlcmlzdGljLnF1ZXN0aW9uO1xuICAgIHRoaXMuY2hhcmFjdGVyaXN0aWNBbnN3ZXIudGl0bGUgPSB0aGlzLm5ld0FydGljbGUuZGVzY3JpcHRpb247XG4gICAgdGhpcy5jaGFyYWN0ZXJpc3RpY0Fuc3dlci52YWx1ZSA9IHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5jaGFyYWN0ZXJpc3RpYy52YWx1ZTtcbiAgICB0aGlzLmNoYXJhY3RlcmlzdGljQW5zd2VyLmNoYXJhY3RlcmlzdGljcyA9IHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5jaGFyYWN0ZXJpc3RpYy50cmFuc2FjdGlvbkxpbmVDaGFyYWN0ZXJpc3RpY0Nob2ljZXM7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY2hhcmFjdGVyaXN0aWNBbnN3ZXIub3BlbigpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICB9LCAxMDAwKTtcblxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0TGluZVV1aWRCeUxpbmVOcihsaW5lTnI6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25MaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvW10gPSB0aGlzLnNlcnZpY2UuY3VycmVudExpbmVzLmZpbHRlcih0cmFuc0xpbmVzID0+IHRyYW5zTGluZXMubGluZU5yID09PSBsaW5lTnIpO1xuICAgIHJldHVybiB0cmFuc2FjdGlvbkxpbmVbMF0udXVpZDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRyYW5zYWN0aW9uTGluZUluZm9CeUluZGV4KGluZGV4OiBudW1iZXIpOiBUcmFuc2FjdGlvbkxpbmVJbmZvIHtcbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuc2VydmljZS5jdXJyZW50TGluZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmN1cnJlbnRMaW5lc1tpbmRleF1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -3,6 +3,7 @@ import { Injectable } from "@angular/core";
3
3
  import { LanguageCode } from "../enum/language-code.enum";
4
4
  import { StringUtils } from "../utils/string-utils";
5
5
  import { Dictionary } from "../../assets/dictionary/text.properties";
6
+ import * as i0 from "@angular/core";
6
7
  // The localization service, providing peers with text translation functionality.
7
8
  export class DictionaryService {
8
9
  constructor() {
@@ -23,15 +24,18 @@ export class DictionaryService {
23
24
  setDictionary(language) {
24
25
  return __awaiter(this, void 0, void 0, function* () {
25
26
  this._language = language || LanguageCode.Dutch;
26
- if (!this._dictionaries.has(this._language)) {
27
- const dictionary = new Dictionary();
27
+ this._loadDictionary();
28
+ });
29
+ }
30
+ _loadDictionary() {
31
+ if (!this._dictionaries.has(this._language)) {
32
+ const dictionary = new Dictionary();
33
+ // eslint-disable-next-line no-magic-numbers
34
+ if (dictionary.strings[this._language.substr(0, 2).toLowerCase()] !== undefined) {
28
35
  // eslint-disable-next-line no-magic-numbers
29
- if (dictionary.strings[this._language.substr(0, 2).toLowerCase()] !== undefined) {
30
- // eslint-disable-next-line no-magic-numbers
31
- this._dictionaries.set(this._language, dictionary.strings[this._language.substr(0, 2).toLowerCase()]);
32
- }
36
+ this._dictionaries.set(this._language, dictionary.strings[this._language.substr(0, 2).toLowerCase()]);
33
37
  }
34
- });
38
+ }
35
39
  }
36
40
  /**
37
41
  * Returns the localized text for the given dictionary key.
@@ -44,6 +48,10 @@ export class DictionaryService {
44
48
  if (!StringUtils.IsStringWithLength(key)) {
45
49
  return key || "";
46
50
  }
51
+ if (this.language === undefined) {
52
+ this._language = LanguageCode.Dutch;
53
+ this._loadDictionary();
54
+ }
47
55
  let text = this._dictionaries.get(this.language)[key];
48
56
  text = StringUtils.IsStringWithLength(text) ? text : key;
49
57
  if (upperCaseFirst) {
@@ -58,8 +66,11 @@ export class DictionaryService {
58
66
  return text;
59
67
  }
60
68
  }
69
+ DictionaryService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DictionaryService_Factory() { return new DictionaryService(); }, token: DictionaryService, providedIn: "root" });
61
70
  DictionaryService.decorators = [
62
- { type: Injectable }
71
+ { type: Injectable, args: [{
72
+ providedIn: "root"
73
+ },] }
63
74
  ];
64
75
  DictionaryService.ctorParameters = () => [];
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGljdGlvbmFyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVyRSxpRkFBaUY7QUFFakYsTUFBTSxPQUFPLGlCQUFpQjtJQXVCNUI7UUF0QmlCLGtCQUFhLEdBQVcsNEJBQTRCLENBQUM7UUFldEUsbUpBQW1KO1FBQzNJLGtCQUFhLEdBQTJDLElBQUksR0FBRyxFQUFxQyxDQUFDO1FBRzdHLGlIQUFpSDtRQUNoRyxpQkFBWSxHQUFXLElBQUksQ0FBQztJQUk3QyxDQUFDO0lBdEJELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsT0FBTyxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ2hFLENBQUM7SUFpQkQscURBQXFEO0lBQ3hDLGFBQWEsQ0FBQyxRQUFnQjs7WUFDekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQztZQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUMzQyxNQUFNLFVBQVUsR0FBZSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNoRCw0Q0FBNEM7Z0JBQzVDLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxTQUFTLEVBQUU7b0JBQy9FLDRDQUE0QztvQkFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ3ZHO2FBQ0Y7UUFDSCxDQUFDO0tBQUE7SUFFRDs7Ozs7O09BTUc7SUFDSSxHQUFHLENBQUMsR0FBVyxFQUFFLGlCQUEwQixJQUFJLEVBQUUsR0FBRyxnQkFBMEI7UUFDbkYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN4QyxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUM7U0FDbEI7UUFFRCxJQUFJLElBQUksR0FBVyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUQsSUFBSSxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFFekQsSUFBSSxjQUFjLEVBQUU7WUFDbEIsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyRDthQUFNO1lBQ0wsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyRDtRQUVELElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMvQixJQUFJLEdBQUcsV0FBVyxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztTQUN2RjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7O1lBbkVGLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTGFuZ3VhZ2VDb2RlIH0gZnJvbSBcIi4uL2VudW0vbGFuZ3VhZ2UtY29kZS5lbnVtXCI7XHJcbmltcG9ydCB7IFN0cmluZ1V0aWxzIH0gZnJvbSBcIi4uL3V0aWxzL3N0cmluZy11dGlsc1wiO1xyXG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSBcIi4uLy4uL2Fzc2V0cy9kaWN0aW9uYXJ5L3RleHQucHJvcGVydGllc1wiO1xyXG5cclxuLy8gVGhlIGxvY2FsaXphdGlvbiBzZXJ2aWNlLCBwcm92aWRpbmcgcGVlcnMgd2l0aCB0ZXh0IHRyYW5zbGF0aW9uIGZ1bmN0aW9uYWxpdHkuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRpY3Rpb25hcnlVcmw6IHN0cmluZyA9IFwianMvYnJvd3Nlci9yZXMvZGljdGlvbmFyeS9cIjtcclxuXHJcbiAgcHVibGljIGdldCBsYW5ndWFnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xhbmd1YWdlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCByb290VXJsKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3Jvb3RVcmwgPSB2YWx1ZTtcclxuICAgIHRoaXMuX2RpY3RCYXNlUGF0aCA9IHRoaXMuX3Jvb3RVcmwgKyBcIi9cIiArIHRoaXMuZGljdGlvbmFyeVVybDtcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBkaWN0aW9uYXJ5TG9hZGVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHJpdmF0ZSBfZGljdEJhc2VQYXRoOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfcm9vdFVybDogc3RyaW5nO1xyXG4gIC8vIHByaXZhdGUgX2RpY3Rpb25hcnlQcm9taXNlOiBNYXA8TGFuZ3VhZ2VDb2RlLCBQcm9taXNlPHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0+PiA9IG5ldyBNYXA8TGFuZ3VhZ2VDb2RlLCBQcm9taXNlPHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0+PigpO1xyXG4gIHByaXZhdGUgX2RpY3Rpb25hcmllczogTWFwPHN0cmluZywgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfT4gPSBuZXcgTWFwPHN0cmluZywgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfT4oKTtcclxuICBwcml2YXRlIF9sYW5ndWFnZTogc3RyaW5nO1xyXG5cclxuICAvLyBTb21lIGRpY3Rpb25hcnkgdmFsdWVzIGhhdmUgb25lIG9yIG1vcmUgJ3x+JyB0ZXh0cyBpbiB0aGVtLCBtZWFudCB0byBiZSByZXBsYWNlZCB3aXRoIGNsaWVudC1zaWRlIGdpdmVuIHRleHRzLlxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BsYWNlaG9sZGVyOiBzdHJpbmcgPSBcInx+XCI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgLy8gTG9hZHMgdGhlIGRpY3Rpb25hcnkgZm9yIGdpdmVuIGxhbmd1YWdlIGluIG1lbW9yeS5cclxuICBwdWJsaWMgYXN5bmMgc2V0RGljdGlvbmFyeShsYW5ndWFnZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLl9sYW5ndWFnZSA9IGxhbmd1YWdlIHx8IExhbmd1YWdlQ29kZS5EdXRjaDtcclxuICAgIGlmICghdGhpcy5fZGljdGlvbmFyaWVzLmhhcyh0aGlzLl9sYW5ndWFnZSkpIHtcclxuICAgICAgY29uc3QgZGljdGlvbmFyeTogRGljdGlvbmFyeSA9IG5ldyBEaWN0aW9uYXJ5KCk7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXHJcbiAgICAgIGlmIChkaWN0aW9uYXJ5LnN0cmluZ3NbdGhpcy5fbGFuZ3VhZ2Uuc3Vic3RyKDAsIDIpLnRvTG93ZXJDYXNlKCldICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xyXG4gICAgICAgIHRoaXMuX2RpY3Rpb25hcmllcy5zZXQodGhpcy5fbGFuZ3VhZ2UsIGRpY3Rpb25hcnkuc3RyaW5nc1t0aGlzLl9sYW5ndWFnZS5zdWJzdHIoMCwgMikudG9Mb3dlckNhc2UoKV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBsb2NhbGl6ZWQgdGV4dCBmb3IgdGhlIGdpdmVuIGRpY3Rpb25hcnkga2V5LlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFt1cHBlckNhc2VGaXJzdCA9IHRydWVdIEZhbHNlIGZvciBmaXJzdCBsZXR0ZXIgbG93ZXJjYXNlLCB0cnVlIGZvciBmaXJzdCBsZXR0ZXIgdXBwZXJjYXNlIGZvciByZXR1cm5lZCBkaWN0IHZhbFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHJlcGxhY2VtZW50VGV4dHMgUmVzdCBwYXJhbXMgZm9yIHJlcGxhY2VtZW50IG9mICd8ficgaW4gcmV0dXJuZWQgZGljdCB2YWx1ZVxyXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSB0cmFuc2xhdGVkIHRleHQgZm9yIGdpdmVuIGRpY3Rpb25hcnkga2V5XHJcbiAgICovXHJcbiAgcHVibGljIGdldChrZXk6IHN0cmluZywgdXBwZXJDYXNlRmlyc3Q6IGJvb2xlYW4gPSB0cnVlLCAuLi5yZXBsYWNlbWVudFRleHRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XHJcbiAgICBpZiAoIVN0cmluZ1V0aWxzLklzU3RyaW5nV2l0aExlbmd0aChrZXkpKSB7XHJcbiAgICAgIHJldHVybiBrZXkgfHwgXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgdGV4dDogc3RyaW5nID0gdGhpcy5fZGljdGlvbmFyaWVzLmdldCh0aGlzLmxhbmd1YWdlKVtrZXldO1xyXG4gICAgdGV4dCA9IFN0cmluZ1V0aWxzLklzU3RyaW5nV2l0aExlbmd0aCh0ZXh0KSA/IHRleHQgOiBrZXk7XHJcblxyXG4gICAgaWYgKHVwcGVyQ2FzZUZpcnN0KSB7XHJcbiAgICAgIHRleHQgPSB0ZXh0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGV4dC5zbGljZSgxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRleHQgPSB0ZXh0LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgdGV4dC5zbGljZSgxKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmVwbGFjZW1lbnRUZXh0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRleHQgPSBTdHJpbmdVdGlscy5SZXBsYWNlT2NjdXJyZW5jZXNJbih0ZXh0LCB0aGlzLl9wbGFjZWhvbGRlciwgLi4ucmVwbGFjZW1lbnRUZXh0cyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRleHQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGljdGlvbmFyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7QUFFckUsaUZBQWlGO0FBSWpGLE1BQU0sT0FBTyxpQkFBaUI7SUF1QjVCO1FBdEJpQixrQkFBYSxHQUFXLDRCQUE0QixDQUFDO1FBZXRFLG1KQUFtSjtRQUMzSSxrQkFBYSxHQUEyQyxJQUFJLEdBQUcsRUFBcUMsQ0FBQztRQUc3RyxpSEFBaUg7UUFDaEcsaUJBQVksR0FBVyxJQUFJLENBQUM7SUFJN0MsQ0FBQztJQXRCRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLE9BQU8sQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUNoRSxDQUFDO0lBaUJELHFEQUFxRDtJQUN4QyxhQUFhLENBQUMsUUFBZ0I7O1lBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDaEQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7S0FBQTtJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMzQyxNQUFNLFVBQVUsR0FBZSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2hELDRDQUE0QztZQUM1QyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssU0FBUyxFQUFFO2dCQUMvRSw0Q0FBNEM7Z0JBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3ZHO1NBQ0Y7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksR0FBRyxDQUFDLEdBQVcsRUFBRSxpQkFBMEIsSUFBSSxFQUFFLEdBQUcsZ0JBQTBCO1FBQ25GLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDeEMsT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDO1NBQ2xCO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDcEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxJQUFJLEdBQVcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlELElBQUksR0FBRyxXQUFXLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBRXpELElBQUksY0FBYyxFQUFFO1lBQ2xCLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckQ7YUFBTTtZQUNMLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckQ7UUFFRCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxHQUFHLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLGdCQUFnQixDQUFDLENBQUM7U0FDdkY7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Ozs7WUE5RUYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IExhbmd1YWdlQ29kZSB9IGZyb20gXCIuLi9lbnVtL2xhbmd1YWdlLWNvZGUuZW51bVwiO1xyXG5pbXBvcnQgeyBTdHJpbmdVdGlscyB9IGZyb20gXCIuLi91dGlscy9zdHJpbmctdXRpbHNcIjtcclxuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gXCIuLi8uLi9hc3NldHMvZGljdGlvbmFyeS90ZXh0LnByb3BlcnRpZXNcIjtcclxuXHJcbi8vIFRoZSBsb2NhbGl6YXRpb24gc2VydmljZSwgcHJvdmlkaW5nIHBlZXJzIHdpdGggdGV4dCB0cmFuc2xhdGlvbiBmdW5jdGlvbmFsaXR5LlxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcclxufSlcclxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRpY3Rpb25hcnlVcmw6IHN0cmluZyA9IFwianMvYnJvd3Nlci9yZXMvZGljdGlvbmFyeS9cIjtcclxuXHJcbiAgcHVibGljIGdldCBsYW5ndWFnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xhbmd1YWdlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCByb290VXJsKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3Jvb3RVcmwgPSB2YWx1ZTtcclxuICAgIHRoaXMuX2RpY3RCYXNlUGF0aCA9IHRoaXMuX3Jvb3RVcmwgKyBcIi9cIiArIHRoaXMuZGljdGlvbmFyeVVybDtcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBkaWN0aW9uYXJ5TG9hZGVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHJpdmF0ZSBfZGljdEJhc2VQYXRoOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfcm9vdFVybDogc3RyaW5nO1xyXG4gIC8vIHByaXZhdGUgX2RpY3Rpb25hcnlQcm9taXNlOiBNYXA8TGFuZ3VhZ2VDb2RlLCBQcm9taXNlPHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0+PiA9IG5ldyBNYXA8TGFuZ3VhZ2VDb2RlLCBQcm9taXNlPHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0+PigpO1xyXG4gIHByaXZhdGUgX2RpY3Rpb25hcmllczogTWFwPHN0cmluZywgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfT4gPSBuZXcgTWFwPHN0cmluZywgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfT4oKTtcclxuICBwcml2YXRlIF9sYW5ndWFnZTogc3RyaW5nO1xyXG5cclxuICAvLyBTb21lIGRpY3Rpb25hcnkgdmFsdWVzIGhhdmUgb25lIG9yIG1vcmUgJ3x+JyB0ZXh0cyBpbiB0aGVtLCBtZWFudCB0byBiZSByZXBsYWNlZCB3aXRoIGNsaWVudC1zaWRlIGdpdmVuIHRleHRzLlxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BsYWNlaG9sZGVyOiBzdHJpbmcgPSBcInx+XCI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgLy8gTG9hZHMgdGhlIGRpY3Rpb25hcnkgZm9yIGdpdmVuIGxhbmd1YWdlIGluIG1lbW9yeS5cclxuICBwdWJsaWMgYXN5bmMgc2V0RGljdGlvbmFyeShsYW5ndWFnZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLl9sYW5ndWFnZSA9IGxhbmd1YWdlIHx8IExhbmd1YWdlQ29kZS5EdXRjaDtcclxuICAgIHRoaXMuX2xvYWREaWN0aW9uYXJ5KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2FkRGljdGlvbmFyeSgpIHtcclxuICAgIGlmICghdGhpcy5fZGljdGlvbmFyaWVzLmhhcyh0aGlzLl9sYW5ndWFnZSkpIHtcclxuICAgICAgY29uc3QgZGljdGlvbmFyeTogRGljdGlvbmFyeSA9IG5ldyBEaWN0aW9uYXJ5KCk7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXHJcbiAgICAgIGlmIChkaWN0aW9uYXJ5LnN0cmluZ3NbdGhpcy5fbGFuZ3VhZ2Uuc3Vic3RyKDAsIDIpLnRvTG93ZXJDYXNlKCldICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xyXG4gICAgICAgIHRoaXMuX2RpY3Rpb25hcmllcy5zZXQodGhpcy5fbGFuZ3VhZ2UsIGRpY3Rpb25hcnkuc3RyaW5nc1t0aGlzLl9sYW5ndWFnZS5zdWJzdHIoMCwgMikudG9Mb3dlckNhc2UoKV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBsb2NhbGl6ZWQgdGV4dCBmb3IgdGhlIGdpdmVuIGRpY3Rpb25hcnkga2V5LlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFt1cHBlckNhc2VGaXJzdCA9IHRydWVdIEZhbHNlIGZvciBmaXJzdCBsZXR0ZXIgbG93ZXJjYXNlLCB0cnVlIGZvciBmaXJzdCBsZXR0ZXIgdXBwZXJjYXNlIGZvciByZXR1cm5lZCBkaWN0IHZhbFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHJlcGxhY2VtZW50VGV4dHMgUmVzdCBwYXJhbXMgZm9yIHJlcGxhY2VtZW50IG9mICd8ficgaW4gcmV0dXJuZWQgZGljdCB2YWx1ZVxyXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSB0cmFuc2xhdGVkIHRleHQgZm9yIGdpdmVuIGRpY3Rpb25hcnkga2V5XHJcbiAgICovXHJcbiAgcHVibGljIGdldChrZXk6IHN0cmluZywgdXBwZXJDYXNlRmlyc3Q6IGJvb2xlYW4gPSB0cnVlLCAuLi5yZXBsYWNlbWVudFRleHRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XHJcbiAgICBpZiAoIVN0cmluZ1V0aWxzLklzU3RyaW5nV2l0aExlbmd0aChrZXkpKSB7XHJcbiAgICAgIHJldHVybiBrZXkgfHwgXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5sYW5ndWFnZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuX2xhbmd1YWdlID0gTGFuZ3VhZ2VDb2RlLkR1dGNoO1xyXG4gICAgICB0aGlzLl9sb2FkRGljdGlvbmFyeSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB0ZXh0OiBzdHJpbmcgPSB0aGlzLl9kaWN0aW9uYXJpZXMuZ2V0KHRoaXMubGFuZ3VhZ2UpW2tleV07XHJcbiAgICB0ZXh0ID0gU3RyaW5nVXRpbHMuSXNTdHJpbmdXaXRoTGVuZ3RoKHRleHQpID8gdGV4dCA6IGtleTtcclxuXHJcbiAgICBpZiAodXBwZXJDYXNlRmlyc3QpIHtcclxuICAgICAgdGV4dCA9IHRleHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0ZXh0LnNsaWNlKDEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGV4dCA9IHRleHQuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyB0ZXh0LnNsaWNlKDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZXBsYWNlbWVudFRleHRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGV4dCA9IFN0cmluZ1V0aWxzLlJlcGxhY2VPY2N1cnJlbmNlc0luKHRleHQsIHRoaXMuX3BsYWNlaG9sZGVyLCAuLi5yZXBsYWNlbWVudFRleHRzKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGV4dDtcclxuICB9XHJcbn1cclxuIl19