ng-easycommerce 0.1.1 → 1.1.3

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 (115) hide show
  1. package/README.md +14 -0
  2. package/assets/ec-i18n/ct.json +4 -0
  3. package/assets/ec-i18n/en.json +4 -0
  4. package/assets/ec-i18n/es.json +4 -0
  5. package/assets/ec-i18n/fr.json +4 -0
  6. package/assets/ec-i18n/gl.json +4 -0
  7. package/assets/ec-i18n/pr.json +4 -0
  8. package/bundles/ng-easycommerce.umd.js +5191 -3521
  9. package/bundles/ng-easycommerce.umd.js.map +1 -1
  10. package/bundles/ng-easycommerce.umd.min.js +1 -1
  11. package/bundles/ng-easycommerce.umd.min.js.map +1 -1
  12. package/esm2015/lib/api/connection.service.js +2 -2
  13. package/esm2015/lib/core.consts.js +4 -5
  14. package/esm2015/lib/ec-component/account-ec/order-ec/order-ec.component.js +2 -2
  15. package/esm2015/lib/ec-component/cart-bootstrap-navigation.js +27 -0
  16. package/esm2015/lib/ec-component/cart-ec/cart-ec.component.js +11 -1
  17. package/esm2015/lib/ec-component/checkout-ec/checkout-ec.component.js +28 -3
  18. package/esm2015/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +185 -13
  19. package/esm2015/lib/ec-component/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.js +6 -2
  20. package/esm2015/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +26 -9
  21. package/esm2015/lib/ec-component/checkout-ec/payment-ec-single/payment-ec-single.component.js +11 -3
  22. package/esm2015/lib/ec-component/checkout-ec/shipment-ec/shipment-ec.component.js +4 -2
  23. package/esm2015/lib/ec-component/coupon-ec/coupon-ec.component.js +6 -1
  24. package/esm2015/lib/guards/able-buyer-guard.service.js +2 -2
  25. package/esm2015/lib/guards/auth-guard.service.js +2 -2
  26. package/esm2015/lib/guards/checkout-ready.service.js +3 -3
  27. package/esm2015/lib/guards/loggedin-guard.service.js +2 -2
  28. package/esm2015/lib/guards/user-role-guard.service.js +2 -2
  29. package/esm2015/lib/interfaces/checkout-data.js +1 -1
  30. package/esm2015/lib/services/account/orders.service.js +6 -4
  31. package/esm2015/lib/services/auth.service.js +4 -3
  32. package/esm2015/lib/services/captcha.service.js +6 -4
  33. package/esm2015/lib/services/cart.service.js +1194 -74
  34. package/esm2015/lib/services/channel-config.service.js +4 -6
  35. package/esm2015/lib/services/checkout/addressing.service.js +65 -9
  36. package/esm2015/lib/services/checkout/checkout.service.js +58 -9
  37. package/esm2015/lib/services/checkout/error-handler.service.js +4 -3
  38. package/esm2015/lib/services/checkout/payment.service.js +35 -15
  39. package/esm2015/lib/services/checkout/shipment.service.js +54 -3
  40. package/esm2015/lib/services/concatenated-associations.service.js +4 -3
  41. package/esm2015/lib/services/currency.service.js +5 -3
  42. package/esm2015/lib/services/filters.service.js +2 -2
  43. package/esm2015/lib/services/footer/footer.service.js +4 -3
  44. package/esm2015/lib/services/gift-card.service.js +56 -5
  45. package/esm2015/lib/services/parameters.service.js +5 -3
  46. package/esm2015/lib/services/reviews.service.js +5 -4
  47. package/esm2015/lib/services/seo.service.js +4 -5
  48. package/esm2015/lib/services/stores.service.js +4 -3
  49. package/esm2015/lib/services/wishlist.service.js +3 -4
  50. package/esm2015/lib/utils/analytics/google-analytics.service.js +1 -1
  51. package/esm2015/lib/utils/order-util.service.js +22 -2
  52. package/esm2015/lib/utils/price-presentation.service.js +2 -3
  53. package/esm2015/lib/utils/shipping-price-display.service.js +2 -3
  54. package/esm5/lib/api/connection.service.js +2 -2
  55. package/esm5/lib/core.consts.js +4 -5
  56. package/esm5/lib/ec-component/account-ec/order-ec/order-ec.component.js +2 -2
  57. package/esm5/lib/ec-component/cart-bootstrap-navigation.js +27 -0
  58. package/esm5/lib/ec-component/cart-ec/cart-ec.component.js +11 -1
  59. package/esm5/lib/ec-component/checkout-ec/checkout-ec.component.js +28 -3
  60. package/esm5/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +206 -12
  61. package/esm5/lib/ec-component/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.js +6 -2
  62. package/esm5/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +31 -14
  63. package/esm5/lib/ec-component/checkout-ec/payment-ec-single/payment-ec-single.component.js +11 -3
  64. package/esm5/lib/ec-component/checkout-ec/shipment-ec/shipment-ec.component.js +5 -3
  65. package/esm5/lib/ec-component/coupon-ec/coupon-ec.component.js +6 -1
  66. package/esm5/lib/guards/able-buyer-guard.service.js +2 -2
  67. package/esm5/lib/guards/auth-guard.service.js +2 -2
  68. package/esm5/lib/guards/checkout-ready.service.js +3 -3
  69. package/esm5/lib/guards/loggedin-guard.service.js +2 -2
  70. package/esm5/lib/guards/user-role-guard.service.js +2 -2
  71. package/esm5/lib/interfaces/checkout-data.js +1 -1
  72. package/esm5/lib/services/account/orders.service.js +6 -4
  73. package/esm5/lib/services/auth.service.js +4 -3
  74. package/esm5/lib/services/captcha.service.js +6 -4
  75. package/esm5/lib/services/cart.service.js +1243 -94
  76. package/esm5/lib/services/channel-config.service.js +4 -6
  77. package/esm5/lib/services/checkout/addressing.service.js +65 -9
  78. package/esm5/lib/services/checkout/checkout.service.js +65 -13
  79. package/esm5/lib/services/checkout/error-handler.service.js +4 -3
  80. package/esm5/lib/services/checkout/payment.service.js +29 -11
  81. package/esm5/lib/services/checkout/shipment.service.js +58 -7
  82. package/esm5/lib/services/concatenated-associations.service.js +4 -3
  83. package/esm5/lib/services/currency.service.js +5 -3
  84. package/esm5/lib/services/filters.service.js +2 -2
  85. package/esm5/lib/services/footer/footer.service.js +4 -3
  86. package/esm5/lib/services/gift-card.service.js +59 -5
  87. package/esm5/lib/services/parameters.service.js +5 -3
  88. package/esm5/lib/services/reviews.service.js +5 -4
  89. package/esm5/lib/services/seo.service.js +4 -5
  90. package/esm5/lib/services/stores.service.js +4 -3
  91. package/esm5/lib/services/wishlist.service.js +3 -4
  92. package/esm5/lib/utils/analytics/google-analytics.service.js +1 -1
  93. package/esm5/lib/utils/order-util.service.js +22 -2
  94. package/esm5/lib/utils/price-presentation.service.js +2 -3
  95. package/esm5/lib/utils/shipping-price-display.service.js +2 -3
  96. package/fesm2015/ng-easycommerce.js +4360 -2745
  97. package/fesm2015/ng-easycommerce.js.map +1 -1
  98. package/fesm5/ng-easycommerce.js +5193 -3523
  99. package/fesm5/ng-easycommerce.js.map +1 -1
  100. package/lib/ec-component/cart-bootstrap-navigation.d.ts +7 -0
  101. package/lib/ec-component/cart-ec/cart-ec.component.d.ts +5 -2
  102. package/lib/ec-component/checkout-ec/checkout-ec.component.d.ts +6 -1
  103. package/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.d.ts +27 -3
  104. package/lib/ec-component/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.d.ts +1 -1
  105. package/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.d.ts +3 -0
  106. package/lib/ec-component/checkout-ec/payment-ec-single/payment-ec-single.component.d.ts +3 -0
  107. package/lib/interfaces/checkout-data.d.ts +6 -1
  108. package/lib/services/cart.service.d.ts +123 -7
  109. package/lib/services/checkout/addressing.service.d.ts +1 -1
  110. package/lib/services/checkout/checkout.service.d.ts +3 -0
  111. package/lib/services/checkout/shipment.service.d.ts +2 -2
  112. package/lib/services/gift-card.service.d.ts +1 -0
  113. package/lib/utils/order-util.service.d.ts +1 -0
  114. package/ng-easycommerce.metadata.json +1 -1
  115. package/package.json +1 -1
@@ -23,8 +23,10 @@ import { ConnectionService } from '../../api/connection.service';
23
23
  import { CartService } from '../cart.service';
24
24
  import { Constants } from '../../core.consts';
25
25
  import * as i0 from "@angular/core";
26
- import * as i1 from "../../../public-api";
27
- import * as i2 from "@angular/router";
26
+ import * as i1 from "../../api/connection.service";
27
+ import * as i2 from "../cart.service";
28
+ import * as i3 from "@angular/router";
29
+ import * as i4 from "../../core.consts";
28
30
  var OrdersService = /** @class */ (function () {
29
31
  function OrdersService(connection, cartService, router, consts) {
30
32
  // this.updateOrders();
@@ -123,7 +125,7 @@ var OrdersService = /** @class */ (function () {
123
125
  { type: Router },
124
126
  { type: Constants }
125
127
  ]; };
126
- OrdersService.ɵprov = i0.ɵɵdefineInjectable({ factory: function OrdersService_Factory() { return new i1.OrdersService(i0.ɵɵinject(i1.ConnectionService), i0.ɵɵinject(i1.CartService), i0.ɵɵinject(i2.Router), i0.ɵɵinject(i1.Constants)); }, token: i1.OrdersService, providedIn: "root" });
128
+ OrdersService.ɵprov = i0.ɵɵdefineInjectable({ factory: function OrdersService_Factory() { return new OrdersService(i0.ɵɵinject(i1.ConnectionService), i0.ɵɵinject(i2.CartService), i0.ɵɵinject(i3.Router), i0.ɵɵinject(i4.Constants)); }, token: OrdersService, providedIn: "root" });
127
129
  OrdersService = __decorate([
128
130
  Injectable({
129
131
  providedIn: 'root'
@@ -132,4 +134,4 @@ var OrdersService = /** @class */ (function () {
132
134
  return OrdersService;
133
135
  }());
134
136
  export { OrdersService };
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvYWNjb3VudC9vcmRlcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFNOUM7SUFjSSx1QkFBb0IsVUFBNkIsRUFBVSxXQUF3QixFQUFVLE1BQWMsRUFBVSxNQUFpQjtRQUNsSSx1QkFBdUI7UUFEM0IsaUJBR0M7UUFIbUIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBYi9ILGtCQUFhLEdBQVEsRUFBRSxDQUFDO1FBQ3ZCLGtCQUFhLEdBQXlCLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLGlCQUFZLEdBQXFDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNFLHlCQUFvQixHQUF5QixJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4RSxZQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1QyxXQUFNLEdBQUcsSUFBSSxD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dCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZUVycm9yIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9vYnNlcnZhYmxlLWVycm9yLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb3JlLmNvbnN0cyc7XG5cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBPcmRlcnNTZXJ2aWNlIHtcbiAgICBwdWJsaWMgY2hhbm5lbENvbmZpZzogYW55ID0ge307XG4gICAgcHJpdmF0ZSBvcmRlcnNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gICAgcHJpdmF0ZSBlcnJvclN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxPYnNlcnZhYmxlRXJyb3I+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgICBwcml2YXRlIHNlbGVjdGVkT3JkZXJTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cbiAgICBwdWJsaWMgb3JkZXJzJCA9IHRoaXMub3JkZXJzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgZXJyb3IkID0gdGhpcy5lcnJvclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIHNlbGVjdGVkT3JkZXIkID0gdGhpcy5zZWxlY3RlZE9yZGVyU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHByaXZhdGUgbG9hZGluZyA9IGZhbHNlO1xuXG4gICAgb3JkZXJzTGlzdGFwaSA9ICgpID0+IGBzaG9wLWFwaS8ke3RoaXMuY29uc3RzLmdldENoYW5uZWwoKX0vb3JkZXJzYDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsIHByaXZhdGUgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzKSB7XG4gICAgICAgIC8vIHRoaXMudXBkYXRlT3JkZXJzKCk7XG5cbiAgICB9XG5cbiAgICB1cGRhdGVPcmRlcnMgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5vcmRlcnNMaXN0YXBpKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9yZGVycyA9IHRoaXMubWFwT3JkZXJzQW5kQWRkSW5mbyhyZXMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JkZXJzO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcmRlcnNTdWJqZWN0Lm5leHQocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoeyBtZXNzYWdlOiAndW5hYmxlLWdldC1vcmRlcnMnIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIClcblxuICAgIH1cblxuICAgIG1hcE9yZGVyc0FuZEFkZEluZm8gPSAob3JkZXJzKSA9PlxuICAgICAgICBvcmRlcnMubWFwKG9yZGVyID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRPcmRlciA9IHRoaXMubm9ybWFsaXplT3JkZXJQcmljaW5nKG9yZGVyKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRPcmRlci50b3RhbCA9IG5vcm1hbGl6ZWRPcmRlci5wYXltZW50cy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLnByaWNlLmN1cnJlbnQsIDApO1xuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRPcmRlcjtcbiAgICAgICAgfSlcblxuICAgIC8qKlxuICAgICAqIE5vcm1hbGl6YSDDum5pY2FtZW50ZSBsb3MgYWxpYXNlcyBkZSBsb3MgY29udHJhdG9zIGhpc3TDs3JpY29zIG51ZXZvcy5cbiAgICAgKiBMYSByZXNwdWVzdGEgb3JpZ2luYWwgc2UgY29uc2VydmEgcGFyYSBubyBhZmVjdGFyIG90cm9zIGNvbnN1bWlkb3Jlcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIG5vcm1hbGl6ZU9yZGVyUHJpY2luZyA9IChvcmRlcjogYW55KTogYW55ID0+IHtcbiAgICAgICAgY29uc3QgdG90YWxzID0gb3JkZXI/LnRvdGFscztcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgICAgICBpdGVtczogQXJyYXkuaXNBcnJheShvcmRlcj8uaXRlbXMpXG4gICAgICAgICAgICAgICAgPyBvcmRlci5pdGVtcy5tYXAoaXRlbSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICBsaW5lUHJpY2luZzogaXRlbT8ubGluZVByaWNpbmcgfHwgaXRlbT8ubGluZV9wcmljaW5nXG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgOiBvcmRlcj8uaXRlbXMsXG4gICAgICAgICAgICB0b3RhbHM6IHRvdGFscyA/IHtcbiAgICAgICAgICAgICAgICAuLi50b3RhbHMsXG4gICAgICAgICAgICAgICAgb3JkZXJEaXNjb3VudFByaWNpbmc6IHRvdGFscy5vcmRlckRpc2NvdW50UHJpY2luZyB8fCB0b3RhbHMub3JkZXJfZGlzY291bnRfcHJpY2luZyxcbiAgICAgICAgICAgICAgICBjb3Vwb25EaXNjb3VudFByaWNpbmc6IHRvdGFscy5jb3Vwb25EaXNjb3VudFByaWNpbmcgfHwgdG90YWxzLmNvdXBvbl9kaXNjb3VudF9wcmljaW5nLFxuICAgICAgICAgICAgICAgIHNoaXBwaW5nUHJpY2luZzogdG90YWxzLnNoaXBwaW5nUHJpY2luZyB8fCB0b3RhbHMuc2hpcHBpbmdfcHJpY2luZ1xuICAgICAgICAgICAgfSA6IHRvdGFsc1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHNldFNlbGVjdGVkT3JkZXIgKG9yZGVyOiBhbnkpIHsgdGhpcy5zZWxlY3RlZE9yZGVyU3ViamVjdC5uZXh0KG9yZGVyKTtcbiAgICAgdGhpcy5jaGFubmVsQ29uZmlnID0gKHRoaXMuY2FydFNlcnZpY2UuY2hhbm5lbENvbmZpZyk7XG4gICAgIH1cblxuICAgIGZpbmRPcmRlciA9IChvcmRlcl9udW1iZXIpID0+XG4gICAgICAgIHRoaXMub3JkZXJzU3ViamVjdC52YWx1ZSA/IHRoaXMuZ2V0T3JkZXJCeU51bWJlcihvcmRlcl9udW1iZXIpIDogdGhpcy53YWl0VW50aWxPcmRlcnMob3JkZXJfbnVtYmVyLCB0aGlzLmdldE9yZGVyQnlOdW1iZXIpO1xuXG4gICAgZ2V0T3JkZXJCeU51bWJlciA9IChvcmRlcl9udW1iZXIpID0+IHtcbiAgICAgICAgLy8gRWwgZGlhIGRlIG1hw7FhbmEsIGN1YW5kbyB2ZW5nYW4gcGFnaW5hZGFzIHkgaGF5YSBxdWUgcHJlZ3VudGFybGUgYWwgc2Vydmlkb3IsIHNlIGNhbWJpYSBlc3RlIG1ldG9kb1xuICAgICAgICBjb25zdCBvcmRlcnMgPSB0aGlzLm9yZGVyc1N1YmplY3QudmFsdWU7XG4gICAgICAgIGxldCBvcmRlciA9IG9yZGVycy5maW5kKG9yZGVyID0+IG9yZGVyLm51bWJlciA9PSBvcmRlcl9udW1iZXIpXG4gICAgICAgIHJldHVybiBvcmRlcjtcbiAgICB9XG5cbiAgICB3YWl0VW50aWxPcmRlcnMgPSAob3JkZXJfbnVtYmVyLCBuZXh0KSA9PiB7XG4gICAgICAgIHRoaXMub3JkZXJzJC50b1Byb21pc2UoKS50aGVuKG9yZGVycyA9PiB7XG4gICAgICAgICAgICBpZiAoIW9yZGVycykge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5sb2FkaW5nKSB0aGlzLnVwZGF0ZU9yZGVycygpO1xuICAgICAgICAgICAgICAgIHRoaXMud2FpdFVudGlsT3JkZXJzKG9yZGVyX251bWJlciwgbmV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmdldE9yZGVyQnlOdW1iZXIob3JkZXJfbnVtYmVyKTtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICByZUJ1eShvcmRlcikge1xuICAgICAgICAvLyB0aGlzLmNhcnRTZXJ2aWNlLmNsZWFyQ2FydCgpO1xuICAgICAgICBvcmRlci5pdGVtcy5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZFRvQ2FydCh0aGlzLmZvcm1hdFByb2R1Y3QoaXRlbS5wcm9kdWN0LCBpdGVtLnByb2R1Y3QuZGlzY291bnQpLCBpdGVtLnF1YW50aXR5LCBpdGVtLnZhcmlhbnRfaWQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2NhcnQnKTtcbiAgICB9XG5cbiAgICBmb3JtYXRQcm9kdWN0KHByb2R1Y3QsIGRpc2NvdW50KSB7XG4gICAgICAgIGxldCBwZXJjZW50YWplID0gcGFyc2VGbG9hdCgnMC4nICsgZGlzY291bnQudG9TdHJpbmcoKSkudG9GaXhlZCgyKTtcbiAgICAgICAgcHJvZHVjdC5wcmljZSA9IHByb2R1Y3QudmFyaWFudHNbMF0ucHJpY2U7XG4gICAgICAgIHByb2R1Y3Quc2FsZXByaWNlID0gKHByb2R1Y3QucHJpY2UgLSAocHJvZHVjdC5wcmljZSAqIHBhcnNlRmxvYXQocGVyY2VudGFqZSkpKTtcbiAgICAgICAgcHJvZHVjdC5vcHRpb25zID0ge307XG4gICAgICAgIHByb2R1Y3QudmFyaWFudHNbMF0ub3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiBwcm9kdWN0Lm9wdGlvbnMgPSB7IC4uLnByb2R1Y3Qub3B0aW9ucywgLi4ub3B0aW9uIH0pO1xuICAgICAgICByZXR1cm4gcHJvZHVjdDtcbiAgICB9XG59XG4iXX0=
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvYWNjb3VudC9vcmRlcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7OztBQU05QztJQWNJLHVCQUFvQixVQUE2QixFQUFVLFdBQXdCLEVBQVUsTUFBYyxFQUFVLE1BQWlCO1FBQ2xJLHVCQUF1QjtRQUQzQixpQkFHQztRQUhtQixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVc7UUFiL0gsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFDdkIsa0JBQWEsR0FBeUIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEUsaUJBQVksR0FBcUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0UseUJBQW9CLEdBQXlCLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhFLFlBQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVDLFdBQU0sR0FBRyxJQUFJ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ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlRXJyb3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL29ic2VydmFibGUtZXJyb3IuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvcmUuY29uc3RzJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE9yZGVyc1NlcnZpY2Uge1xuICAgIHB1YmxpYyBjaGFubmVsQ29uZmlnOiBhbnkgPSB7fTtcbiAgICBwcml2YXRlIG9yZGVyc1N1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgICBwcml2YXRlIGVycm9yU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PE9ic2VydmFibGVFcnJvcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuICAgIHByaXZhdGUgc2VsZWN0ZWRPcmRlclN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICAgIHB1YmxpYyBvcmRlcnMkID0gdGhpcy5vcmRlcnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBlcnJvciQgPSB0aGlzLmVycm9yU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgc2VsZWN0ZWRPcmRlciQgPSB0aGlzLnNlbGVjdGVkT3JkZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHJpdmF0ZSBsb2FkaW5nID0gZmFsc2U7XG5cbiAgICBvcmRlcnNMaXN0YXBpID0gKCkgPT4gYHNob3AtYXBpLyR7dGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpfS9vcmRlcnNgO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSwgcHJpdmF0ZSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgY29uc3RzOiBDb25zdGFudHMpIHtcbiAgICAgICAgLy8gdGhpcy51cGRhdGVPcmRlcnMoKTtcblxuICAgIH1cblxuICAgIHVwZGF0ZU9yZGVycyA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLm9yZGVyc0xpc3RhcGkoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgb3JkZXJzID0gdGhpcy5tYXBPcmRlcnNBbmRBZGRJbmZvKHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmRlcnM7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9yZGVyc1N1YmplY3QubmV4dChyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCh7IG1lc3NhZ2U6ICd1bmFibGUtZ2V0LW9yZGVycycgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuXG4gICAgfVxuXG4gICAgbWFwT3JkZXJzQW5kQWRkSW5mbyA9IChvcmRlcnMpID0+XG4gICAgICAgIG9yZGVycy5tYXAob3JkZXIgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZE9yZGVyID0gdGhpcy5ub3JtYWxpemVPcmRlclByaWNpbmcob3JkZXIpO1xuICAgICAgICAgICAgbm9ybWFsaXplZE9yZGVyLnRvdGFsID0gbm9ybWFsaXplZE9yZGVyLnBheW1lbnRzLnJlZHVjZSgoYSwgYikgPT4gYSArIGIucHJpY2UuY3VycmVudCwgMCk7XG4gICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplZE9yZGVyO1xuICAgICAgICB9KVxuXG4gICAgLyoqXG4gICAgICogTm9ybWFsaXphIMO6bmljYW1lbnRlIGxvcyBhbGlhc2VzIGRlIGxvcyBjb250cmF0b3MgaGlzdMOzcmljb3MgbnVldm9zLlxuICAgICAqIExhIHJlc3B1ZXN0YSBvcmlnaW5hbCBzZSBjb25zZXJ2YSBwYXJhIG5vIGFmZWN0YXIgb3Ryb3MgY29uc3VtaWRvcmVzLlxuICAgICAqL1xuICAgIHByaXZhdGUgbm9ybWFsaXplT3JkZXJQcmljaW5nID0gKG9yZGVyOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBjb25zdCB0b3RhbHMgPSBvcmRlcj8udG90YWxzO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5vcmRlcixcbiAgICAgICAgICAgIGl0ZW1zOiBBcnJheS5pc0FycmF5KG9yZGVyPy5pdGVtcylcbiAgICAgICAgICAgICAgICA/IG9yZGVyLml0ZW1zLm1hcChpdGVtID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGxpbmVQcmljaW5nOiBpdGVtPy5saW5lUHJpY2luZyB8fCBpdGVtPy5saW5lX3ByaWNpbmdcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICA6IG9yZGVyPy5pdGVtcyxcbiAgICAgICAgICAgIHRvdGFsczogdG90YWxzID8ge1xuICAgICAgICAgICAgICAgIC4uLnRvdGFscyxcbiAgICAgICAgICAgICAgICBvcmRlckRpc2NvdW50UHJpY2luZzogdG90YWxzLm9yZGVyRGlzY291bnRQcmljaW5nIHx8IHRvdGFscy5vcmRlcl9kaXNjb3VudF9wcmljaW5nLFxuICAgICAgICAgICAgICAgIGNvdXBvbkRpc2NvdW50UHJpY2luZzogdG90YWxzLmNvdXBvbkRpc2NvdW50UHJpY2luZyB8fCB0b3RhbHMuY291cG9uX2Rpc2NvdW50X3ByaWNpbmcsXG4gICAgICAgICAgICAgICAgc2hpcHBpbmdQcmljaW5nOiB0b3RhbHMuc2hpcHBpbmdQcmljaW5nIHx8IHRvdGFscy5zaGlwcGluZ19wcmljaW5nXG4gICAgICAgICAgICB9IDogdG90YWxzXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc2V0U2VsZWN0ZWRPcmRlciAob3JkZXI6IGFueSkgeyB0aGlzLnNlbGVjdGVkT3JkZXJTdWJqZWN0Lm5leHQob3JkZXIpO1xuICAgICB0aGlzLmNoYW5uZWxDb25maWcgPSAodGhpcy5jYXJ0U2VydmljZS5jaGFubmVsQ29uZmlnKTtcbiAgICAgfVxuXG4gICAgZmluZE9yZGVyID0gKG9yZGVyX251bWJlcikgPT5cbiAgICAgICAgdGhpcy5vcmRlcnNTdWJqZWN0LnZhbHVlID8gdGhpcy5nZXRPcmRlckJ5TnVtYmVyKG9yZGVyX251bWJlcikgOiB0aGlzLndhaXRVbnRpbE9yZGVycyhvcmRlcl9udW1iZXIsIHRoaXMuZ2V0T3JkZXJCeU51bWJlcik7XG5cbiAgICBnZXRPcmRlckJ5TnVtYmVyID0gKG9yZGVyX251bWJlcikgPT4ge1xuICAgICAgICAvLyBFbCBkaWEgZGUgbWHDsWFuYSwgY3VhbmRvIHZlbmdhbiBwYWdpbmFkYXMgeSBoYXlhIHF1ZSBwcmVndW50YXJsZSBhbCBzZXJ2aWRvciwgc2UgY2FtYmlhIGVzdGUgbWV0b2RvXG4gICAgICAgIGNvbnN0IG9yZGVycyA9IHRoaXMub3JkZXJzU3ViamVjdC52YWx1ZTtcbiAgICAgICAgbGV0IG9yZGVyID0gb3JkZXJzLmZpbmQob3JkZXIgPT4gb3JkZXIubnVtYmVyID09IG9yZGVyX251bWJlcilcbiAgICAgICAgcmV0dXJuIG9yZGVyO1xuICAgIH1cblxuICAgIHdhaXRVbnRpbE9yZGVycyA9IChvcmRlcl9udW1iZXIsIG5leHQpID0+IHtcbiAgICAgICAgdGhpcy5vcmRlcnMkLnRvUHJvbWlzZSgpLnRoZW4ob3JkZXJzID0+IHtcbiAgICAgICAgICAgIGlmICghb3JkZXJzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmxvYWRpbmcpIHRoaXMudXBkYXRlT3JkZXJzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy53YWl0VW50aWxPcmRlcnMob3JkZXJfbnVtYmVyLCBuZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZ2V0T3JkZXJCeU51bWJlcihvcmRlcl9udW1iZXIpO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHJlQnV5KG9yZGVyKSB7XG4gICAgICAgIC8vIHRoaXMuY2FydFNlcnZpY2UuY2xlYXJDYXJ0KCk7XG4gICAgICAgIG9yZGVyLml0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkVG9DYXJ0KHRoaXMuZm9ybWF0UHJvZHVjdChpdGVtLnByb2R1Y3QsIGl0ZW0ucHJvZHVjdC5kaXNjb3VudCksIGl0ZW0ucXVhbnRpdHksIGl0ZW0udmFyaWFudF9pZCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvY2FydCcpO1xuICAgIH1cblxuICAgIGZvcm1hdFByb2R1Y3QocHJvZHVjdCwgZGlzY291bnQpIHtcbiAgICAgICAgbGV0IHBlcmNlbnRhamUgPSBwYXJzZUZsb2F0KCcwLicgKyBkaXNjb3VudC50b1N0cmluZygpKS50b0ZpeGVkKDIpO1xuICAgICAgICBwcm9kdWN0LnByaWNlID0gcHJvZHVjdC52YXJpYW50c1swXS5wcmljZTtcbiAgICAgICAgcHJvZHVjdC5zYWxlcHJpY2UgPSAocHJvZHVjdC5wcmljZSAtIChwcm9kdWN0LnByaWNlICogcGFyc2VGbG9hdChwZXJjZW50YWplKSkpO1xuICAgICAgICBwcm9kdWN0Lm9wdGlvbnMgPSB7fTtcbiAgICAgICAgcHJvZHVjdC52YXJpYW50c1swXS5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHByb2R1Y3Qub3B0aW9ucyA9IHsgLi4ucHJvZHVjdC5vcHRpb25zLCAuLi5vcHRpb24gfSk7XG4gICAgICAgIHJldHVybiBwcm9kdWN0O1xuICAgIH1cbn1cbiJdfQ==
@@ -83,8 +83,9 @@ import * as moment from "moment";
83
83
  import { ChannelConfigService } from './channel-config.service';
84
84
  import { CartService } from './cart.service';
85
85
  import * as i0 from "@angular/core";
86
- import * as i1 from "../../public-api";
86
+ import * as i1 from "../api/connection.service";
87
87
  import * as i2 from "ngx-toastr";
88
+ import * as i3 from "../core.consts";
88
89
  var AuthService = /** @class */ (function () {
89
90
  function AuthService(connection, toastrService, constants, injector) {
90
91
  var _this = this;
@@ -414,7 +415,7 @@ var AuthService = /** @class */ (function () {
414
415
  { type: Constants },
415
416
  { type: Injector }
416
417
  ]; };
417
- AuthService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthService_Factory() { return new i1.AuthService(i0.ɵɵinject(i1.ConnectionService), i0.ɵɵinject(i2.ToastrService), i0.ɵɵinject(i1.Constants), i0.ɵɵinject(i0.INJECTOR)); }, token: i1.AuthService, providedIn: "root" });
418
+ AuthService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthService_Factory() { return new AuthService(i0.ɵɵinject(i1.ConnectionService), i0.ɵɵinject(i2.ToastrService), i0.ɵɵinject(i3.Constants), i0.ɵɵinject(i0.INJECTOR)); }, token: AuthService, providedIn: "root" });
418
419
  AuthService = __decorate([
419
420
  Injectable({
420
421
  providedIn: 'root'
@@ -423,4 +424,4 @@ var AuthService = /** @class */ (function () {
423
424
  return AuthService;
424
425
  }());
425
426
  export { AuthService };
426
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBTyxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQU83QztJQTBDSSxxQkFBb0IsVUFBNkIsRUFDckMsYUFBNEIsRUFDNUIsU0FBb0IsRUFDcEIsUUFBa0I7UUFIOUIsaUJBTUM7UUFObUIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDckMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBM0NiLGNBQVMs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QWlCO2dCQUN0QixhQUFhO2dCQUNqQixTQUFTO2dCQUNWLFFBQVE7OztJQTdDckIsV0FBVztRQUh2QixVQUFVLENBQUM7WUFDUixVQUFVLEVBQUUsTUFBTTtTQUNyQixDQUFDO09BQ1csV0FBVyxDQTRXdkI7c0JBOVhEO0NBOFhDLEFBNVdELElBNFdDO1NBNVdZLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIEJlaGF2aW9yU3ViamVjdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi9jbGFzc2VzL3VzZXInO1xuaW1wb3J0ICdyeGpzL2FkZC9vYnNlcnZhYmxlL29mJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IG1hcCwgbWFwVG8sIGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tIFwibW9tZW50XCI7XG5pbXBvcnQgeyBDaGFubmVsQ29uZmlnU2VydmljZSB9IGZyb20gJy4vY2hhbm5lbC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy1jb21wYXQvb3BlcmF0b3IvdGFrZSc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4vY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBVc2VyUm9sZVR5cGUgfSBmcm9tICcuLi9jbGFzc2VzL3VzZXItcm9sZS10eXBlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IEpXVF9UT0tFTiA9ICdKV1RfVE9LRU4nXG4gICAgcHJpdmF0ZSByZWFkb25seSBSRUZSRVNIX1RPS0VOID0gJ1JFRlJFU0hfVE9LRU4nXG4gICAgcHJpdmF0ZSByZWFkb25seSBFWFBJUkFURVNfSU4gPSAnRVhQSVJBVEVTX0lOJ1xuICAgIHByaXZhdGUgcmVhZG9ubHkgVVNFUiA9ICdVU0VSJ1xuICAgIHByaXZhdGUgcmVhZG9ubHkgTUFJTCA9ICdtYWlsJ1xuICAgIHByaXZhdGUgcmVhZG9ubHkgTE9DQUxFID0gJ0xPQ0FMRSdcbiAgICBwcml2YXRlIHJlYWRvbmx5IENIQU5ORUwgPSAnQ0hBTk5FTCdcbiAgICBwcml2YXRlIHJlYWRvbmx5IENVU1RPTUVSID0gJ0NVU1RPTUVSJ1xuICAgIHByaXZhdGUgcmVhZG9ubHkgQ0hBTk5FTFNFTExFUiA9ICdDSEFOTkVMU0VMTEVSJ1xuXG4gICAgLyogYWN0aXZlQ2hhbm5lbFN3aXRjaD8gKi9cbiAgICBwcml2YXRlIGFjdGl2ZUNoYW5uZWxDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZVxuICAgIHByaXZhdGUgbG9nZ2VkSW5TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KGZhbHNlKVxuICAgIHByaXZhdGUgbG9nZ2luZ0luU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihmYWxzZSlcbiAgICBwcml2YXRlIHVzZXJJblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVzZXI+KG51bGwpXG4gICAgcHJpdmF0ZSBjaGFubmVsc1VzZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pXG4gICAgLyogcHJpdmF0ZSBjdXN0b21lclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCkgKi9cbiAgICBwcml2YXRlIHVzZXI6IFVzZXIgPSBudWxsXG5cbiAgICAvLyBBUElTXG4gICAgcHVibGljIHRva2VuQXBpID0gKCkgPT4gJ3Nob3AtYXBpL2xvZ2luX2NoZWNrJztcbiAgICBwdWJsaWMgcmVnaXN0ZXJBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSArICcvcmVnaXN0ZXInO1xuICAgIHB1YmxpYyByZWdpc3Rlcldob2xlc2FsZXJBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSArICcvcmVnaXN0ZXItd2hvbGVzYWxlcic7XG4gICAgcHVibGljIGNvbmZpcm1BY2NvdW50QXBpID0gKHRva2VuKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSArICcvdmVyaWZ5LWFjY291bnQ/dG9rZW49JyArIHRva2VuO1xuICAgIHB1YmxpYyByZXNldFBhc3N3b3JkQXBpID0gKHRva2VuKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSArICcvcGFzc3dvcmQtcmVzZXQvJyArIHRva2VuO1xuICAgIHB1YmxpYyByZWNvdmVyUGFzc3dvcmRBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSArICcvcmVxdWVzdC1wYXNzd29yZC1yZXNldCc7XG4gICAgcHVibGljIGNvdW50cmllc0FwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpICsgJy9jb3VudHJpZXMnO1xuXG4gICAgLy8gQXRyaWJ1dG9zIHV0aWxlc1xuICAgIHB1YmxpYyB3YWl0aW5nID0gZmFsc2U7XG4gICAgcHVibGljIGxvZ2dlZEluID0gdGhpcy5sb2dnZWRJblN1YmplY3QuYXNPYnNlcnZhYmxlKClcbiAgICBwdWJsaWMgbG9nZ2luZ0luID0gdGhpcy5sb2dnaW5nSW5TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG4gICAgcHVibGljIHVzZXJBdXRoID0gdGhpcy51c2VySW5TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG4gICAgcHVibGljIGNoYW5uZWxzVXNlciA9IHRoaXMuY2hhbm5lbHNVc2VyU3ViamVjdC5hc09ic2VydmFibGUoKVxuICAgIC8qIHByaXZhdGUgY3VzdG9tZXIgPSB0aGlzLmNoYW5uZWxzVXNlclN1YmplY3QuYXNPYnNlcnZhYmxlKCkgKi9cbiAgICBwcml2YXRlIGN1c3RvbWVyID0gbnVsbFxuICAgIHB1YmxpYyBjaGFubmVsID0gbnVsbFxuICAgIHB1YmxpYyBjaGFubmVscyA9IFtdXG4gICAgcHJpdmF0ZSBob21lUmVzb2x2ZXIgPSBudWxsXG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRvYXN0clNlcnZpY2U6IFRvYXN0clNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29uc3RhbnRzOiBDb25zdGFudHMsXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKSB7XG4gICAgICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkKCkgJiYgdGhpcy5sb2dnZWRJblN1YmplY3QubmV4dCh0cnVlKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjIERldnVlbHZlIHVuIG9ic2VydmFibGVcbiAgICAgKiBAcGFyYW0gdXNlciBPYmpldG8gcXVlIGNvbnRpZW5lIHVzZXJuYW1lIHkgcGFzc3dvcmQgXG4gICAgICovXG4gICAgbG9naW4odXNlcjogeyB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nIH0sIHdpdGhSb2xlczogVXNlclJvbGVUeXBlW10gPSBbXSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KENoYW5uZWxDb25maWdTZXJ2aWNlKS5jaGFubmVsQ29uZmlnJC5zdWJzY3JpYmUoY2ggPT4gdGhpcy5jaGFubmVsID0gY2gpO1xuICAgICAgICB0aGlzLmluamVjdG9yLmdldChDaGFubmVsQ29uZmlnU2VydmljZSkuY2hhbm5lbHMuc3Vic2NyaWJlKGNoID0+IHRoaXMuY2hhbm5lbHMgPSBjaCk7XG4gICAgICAgIHRoaXMubG9nZ2luZ0luU3ViamVjdC5uZXh0KHRydWUpO1xuXG4gICAgICAgIC8vIENvbnZlcnRpciBlbCB1c2VybmFtZSBhIG1pbsO6c2N1bGFzXG4gICAgICAgIHVzZXIgPSB7IC4uLnVzZXIsIHVzZXJuYW1lOiB1c2VyLnVzZXJuYW1lLnRvTG93ZXJDYXNlKCksIC4uLnRoaXMuY29uc3RhbnRzLmxvZ2luRXh0cmFEYXRhKCkgfTtcblxuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5jb25uZWN0aW9uLnBvc3QodGhpcy50b2tlbkFwaSgpLCB1c2VyKS5waXBlKFxuICAgICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hhbm5lbEFjY2Vzc1Blcm1pc3Npb24oeyAuLi51c2VyLCAuLi5yZXMgfSkgJiYgdGhpcy5pc0FsbG93ZWRSb2xlKHdpdGhSb2xlcywgcmVzLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG9Mb2dpblVzZXIoeyAuLi51c2VyLCAuLi5yZXMgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnb2snO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Vycm9yJztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2luZ0luU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoZXJyLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBjaGFubmVsQWNjZXNzUGVybWlzc2lvbiA9IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5jaGFubmVsc1VzZXJTdWJqZWN0Lm5leHQoW10pXG5cbiAgICAgICAgLyogUGxlYXNlIHJlbW92ZSB0aGlzIEFTQVAgLSBOZWVkcyAqY2hhbm5lbHMqIGFycmF5IGluIHVzZXIgb2JqZWN0IEFMV0FZUyAqL1xuICAgICAgICAvKiBpZiAoVXNlclJvbGVUeXBlLlNFTExFUiA9PSByZXMudHlwZSBhcyBVc2VyUm9sZVR5cGUpIHJldHVybiB0cnVlICovXG5cbiAgICAgICAgLyogTm8gYXV0aG9yaXplZCBjaGFubmVscyAqL1xuICAgICAgICBpZiAocmVzLmNoYW5uZWxzPy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgLyogU29tZSBhdXRob3JpemVkIGNoYW5uZWwocykgaW5jbHVkaW5nIGN1cnJlbnQgY2hhbm5lbCAqL1xuICAgICAgICBpZiAocmVzLmNoYW5uZWxzLmZpbmQodXNlcmNoYW5uZWwgPT4gdXNlcmNoYW5uZWwuY29kZSA9PT0gdGhpcy5jaGFubmVsLmNvZGUpKSB7XG4gICAgICAgICAgICAvKiBNdWx0aXBsZSBhdXRob3JpemVkIGNoYW5uZWxzIGluY2x1ZGluZyBjdXJyZW50IGNoYW5uZWwgKi9cbiAgICAgICAgICAgIGlmIChyZXMuY2hhbm5lbHM/Lmxlbmd0aCA+IDEgJiYgdGhpcy5hY3RpdmVDaGFubmVsQ2hhbmdlKVxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbm5lbHNVc2VyU3ViamVjdC5uZXh0KHJlcy5jaGFubmVscylcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgLyogT25lIGF1dGhvcml6ZWQgY2hhbm5lbCBub3QgaW5jbHVkaW5nIGN1cnJlbnQgY2hhbm5lbCAqL1xuICAgICAgICBpZiAocmVzLmNoYW5uZWxzPy5sZW5ndGggPT0gMSAmJiB0aGlzLmFjdGl2ZUNoYW5uZWxDaGFuZ2UpIHtcbiAgICAgICAgICAgIGRlbGV0ZSByZXMucGFzc3dvcmRcbiAgICAgICAgICAgIHRoaXMuY2hhbm5lbEFjY2VzcyhyZXMuY2hhbm5lbHNbMF0sIHJlcylcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgLyogTXVsdGlwbGUgYXV0aG9yaXplZCBjaGFubmVscyBub3QgaW5jbHVkaW5nIGN1cnJlbnQgY2hhbm5lbCAqL1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVDaGFubmVsQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5uZWxzVXNlclN1YmplY3QubmV4dChyZXMuY2hhbm5lbHMpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGNoYW5uZWxBY2Nlc3MgPSAoY2hhbm5lbCwgdXNlciA9IG51bGwpID0+IHtcbiAgICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSAhPSBjaGFubmVsLmhvc3RuYW1lKSB7XG4gICAgICAgICAgICBsZXQgZW5jb2RlZCA9IGJ0b2EoSlNPTi5zdHJpbmdpZnkodXNlciAhPSBudWxsID8gdXNlciA6IHRoaXMudXNlcikpXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZShgJHt3aW5kb3cubG9jYXRpb24ucHJvdG9jb2x9Ly8ke2NoYW5uZWwuaG9zdG5hbWV9L2F1dGgvcmVkaXJlY3QvJHtlbmNvZGVkfWApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN0YW50cy5tb2RpZnlDaGFubmVsQ29uZmlnKGNoYW5uZWwpXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjIERldnVlbHZlIHVuYSBwcm9tZXNhXG4gICAgICogQHBhcmFtIHVzZXIgT2JqZXRvIHF1ZSBjb250aWVuZSB1c2VybmFtZSB5IHBhc3N3b3JkIFxuICAgICAqL1xuICAgIGRvTG9naW4gPSAodXNlcjogeyB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgdGhpcy5sb2dnaW5nSW5TdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgIHVzZXIgPSB7IC4uLnVzZXIsIC4uLnRoaXMuY29uc3RhbnRzLmxvZ2luRXh0cmFEYXRhKCkgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMudG9rZW5BcGkoKSwgdXNlcikucGlwZShcbiAgICAgICAgICAgIG1hcChyZXMgPT4gdGhpcy5kb0xvZ2luVXNlcihyZXMpKSxcbiAgICAgICAgICAgIG1hcFRvKCdvaycpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2luZ0luU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoZXJyLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKS50b1Byb21pc2UoKTtcbiAgICB9XG5cbiAgICBnZXRVc2VyUHJvZmlsZSgpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnVzZXIgJiYgT2JzZXJ2YWJsZS5vZih0aGlzLnVzZXIpKSB8fCB0aGlzLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgfVxuXG4gICAgZ2V0VXNlclByb2ZpbGVBc1VzZXIoKTogVXNlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZXIgfHwgdGhpcy5nZXRDdXJyZW50VXNlckFzVXNlcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q3VycmVudFVzZXJBc1VzZXIoKTogVXNlciB7XG4gICAgICAgIHRoaXMudXNlciA9IG5ldyBVc2VyKCk7XG4gICAgICAgIGlmICghdGhpcy51c2VyLmxvYWRGcm9tU3RvcmFnZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnVzZXIgPSBudWxsXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy51c2VyPy5jaGFubmVscy5maW5kKHVzZXJjaGFubmVsID0+IHVzZXJjaGFubmVsPy5jb2RlID09PSB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51c2VyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sb2dvdXQoKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnVzZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDdXJyZW50VXNlcigpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICAgICAgdGhpcy51c2VyID0gbmV3IFVzZXIoKTtcbiAgICAgICAgaWYgKCF0aGlzLnVzZXIubG9hZEZyb21TdG9yYWdlKCkpIHtcbiAgICAgICAgICAgIHRoaXMudXNlciA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5vZih0aGlzLnVzZXIpO1xuICAgIH1cblxuICAgIHNpZ25VcCA9IChkYXRhKSA9PiB7XG4gICAgICAgIC8vIENvbnZlcnRpciBlbCBlbWFpbCBhIG1pbsO6c2N1bGFzIHNpIGV4aXN0ZVxuICAgICAgICBpZiAoZGF0YS5lbWFpbCkge1xuICAgICAgICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgZW1haWw6IGRhdGEuZW1haWwudG9Mb3dlckNhc2UoKSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24ucG9zdCh0aGlzLnJlZ2lzdGVyQXBpKCksIGRhdGEpO1xuICAgIH07XG5cbiAgICBpc0F1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmlzVG9rZW5FeHBpcmVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZG9Mb2dvdXRVc2VyKClcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdldEN1cnJlbnRVc2VyQXNVc2VyKClcbiAgICAgICAgdGhpcy51c2VySW5TdWJqZWN0Lm5leHQodGhpcy51c2VyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW4oKSAmJiAhdGhpcy5pc1Rva2VuRXhwaXJlZCgpICYmIHRoaXMudXNlciAhPSBudWxsO1xuICAgIH1cblxuICAgIGNvbmZpcm1BY2NvdW50ID0gKHRva2VuOiBzdHJpbmcpID0+XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5jb25maXJtQWNjb3VudEFwaSh0b2tlbikpO1xuXG4gICAgcGFzc3dvcmRSZXNldCA9IChuZXdfcGFzc3dvcmQsIHRva2VuKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7IHBhc3N3b3JkOiB7IGZpcnN0OiBuZXdfcGFzc3dvcmQsIHNlY29uZDogbmV3X3Bhc3N3b3JkIH0gfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5wdXQodGhpcy5yZXNldFBhc3N3b3JkQXBpKHRva2VuKSwgZGF0YSk7XG4gICAgfVxuXG4gICAgcmVjb3ZlclBhc3N3b3JkID0gKGVtYWlsOiBzdHJpbmcpID0+XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5wdXQodGhpcy5yZWNvdmVyUGFzc3dvcmRBcGkoKSwgeyBlbWFpbCB9KTtcblxuICAgIC8qIFRPS0VOICovXG5cbiAgICBsb2dvdXQoKSB7XG4gICAgICAgIHRoaXMuZG9Mb2dvdXRVc2VyKCk7XG4gICAgfVxuXG4gICAgcmVmcmVzaFRva2VuKCkge1xuICAgICAgICBsZXQgZGF0YSA9IHsgLi4udGhpcy5jb25zdGFudHMubG9naW5FeHRyYURhdGEoKSwgcmVmcmVzaF90b2tlbjogdGhpcy5nZXRSZWZyZXNoVG9rZW4oKSB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24ucG9zdCh0aGlzLnRva2VuQXBpKCksIGRhdGEpLnBpcGUobWFwKFxuICAgICAgICAgICAgcmVzID0+IHRoaXMuZG9Mb2dpblVzZXIocmVzKVxuICAgICAgICApKVxuICAgIH1cblxuICAgIGdldFRva2VuKCkge1xuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5KV1RfVE9LRU4pO1xuICAgIH1cblxuICAgIGlzVG9rZW5FeHBpcmVkID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBmZWNoYV9leHBpcmFjaW9uID0gdGhpcy5nZXRFeHBpcmF0ZXNBdCgpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBtb21lbnQoKSA+PSBtb21lbnQoZmVjaGFfZXhwaXJhY2lvbik7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZ2V0RXhwaXJhdGVzQXQgPSAoKSA9PiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkVYUElSQVRFU19JTik7XG5cbiAgICBwdWJsaWMgZG9Mb2dpblVzZXIodG9rZW5zKSB7XG4gICAgICAgIHRoaXMudXNlciA9IG5ldyBVc2VyKClcbiAgICAgICAgdGhpcy51c2VyLmluaXRpbGl6ZWQodG9rZW5zKVxuICAgICAgICB0aGlzLmZvcmNlQ2hhbm5lbHNGb3JTZWxsZXIodG9rZW5zKVxuICAgICAgICB0aGlzLnVzZXIucGVyc2lzdEluU3RvcmFnZSgpXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuRVhQSVJBVEVTX0lOLCBtb21lbnQodG9rZW5zLmV4cGlyZXNfaW4pLmFkZCgxLCAnaCcpLmZvcm1hdCgpKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5SRUZSRVNIX1RPS0VOLCBtb21lbnQodG9rZW5zLmV4cGlyZXNfaW4pLmFkZCgxLCAnaCcpLmZvcm1hdCgpKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5KV1RfVE9LRU4sIHRva2Vucy50b2tlbik7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuTUFJTCwgdG9rZW5zLnVzZXJuYW1lKTtcbiAgICAgICAgdGhpcy51c2VySW5TdWJqZWN0Lm5leHQodGhpcy51c2VyKTtcbiAgICAgICAgdGhpcy5sb2dnZWRJblN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5sb2dnaW5nSW5TdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkb0xvZ291dFVzZXIoKSB7XG4gICAgICAgIHRoaXMudXNlciA9IG51bGxcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5VU0VSKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5FWFBJUkFURVNfSU4pO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkpXVF9UT0tFTik7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuUkVGUkVTSF9UT0tFTik7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdjYXJ0X3Rva2VuJyk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuTUFJTCk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuQ0hBTk5FTCk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuQ0hBTk5FTFNFTExFUik7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuTE9DQUxFKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5DVVNUT01FUik7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdNQVNURVJfQ0hBTk5FTCcpO1xuICAgICAgICB0aGlzLmxvZ2dlZEluU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy51c2VySW5TdWJqZWN0Lm5leHQodGhpcy51c2VyKTtcbiAgICAgICAgdGhpcy5jaGFubmVsc1VzZXJTdWJqZWN0Lm5leHQoW10pXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSZWZyZXNoVG9rZW4oKSB7XG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlJFRlJFU0hfVE9LRU4pO1xuICAgIH1cblxuICAgIGhhc1RvUmVmcmVzaCA9ICgpID0+IHRoaXMuZ2V0UmVmcmVzaFRva2VuKCk7XG5cbiAgICBzaWduVXBXaG9sZXNhbGVyID0gKGRhdGEpID0+IHtcbiAgICAgICAgLy8gQ29udmVydGlyIGVsIGVtYWlsIGEgbWluw7pzY3VsYXMgc2kgZXhpc3RlXG4gICAgICAgIGlmIChkYXRhLmVtYWlsKSB7XG4gICAgICAgICAgICBkYXRhID0geyAuLi5kYXRhLCBlbWFpbDogZGF0YS5lbWFpbC50b0xvd2VyQ2FzZSgpIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMucmVnaXN0ZXJXaG9sZXNhbGVyQXBpKCksIGRhdGEpO1xuICAgIH07XG5cbiAgICBnZXRDb3VudHJpZXNEYXRhID0gYXN5bmMgKCkgPT5cbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmNvdW50cmllc0FwaSgpKS5waXBlKG1hcChyZXMgPT4gcmVzLl9lbWJlZGRlZC5pdGVtcykpLnRvUHJvbWlzZSgpO1xuXG4gICAgcHVibGljIHNldEFjdGl2ZUNoYW5uZWxDaGFuZ2UgPSAoYWN0aXZlbHlDaGFuZ2VDaGFubmVsc09uTG9naW46IGJvb2xlYW4pID0+IHRoaXMuYWN0aXZlQ2hhbm5lbENoYW5nZSA9IGFjdGl2ZWx5Q2hhbmdlQ2hhbm5lbHNPbkxvZ2luXG5cbiAgICBwcml2YXRlIGlzQWxsb3dlZFJvbGUgPSAoYWxsb3dlZFJvbGVzOiBVc2VyUm9sZVR5cGVbXSwgcm9sZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiBhbGxvd2VkUm9sZXMubGVuZ3RoXG4gICAgICAgICAgICA/IGFsbG93ZWRSb2xlcy5pbmNsdWRlcyhyb2xlIGFzIFVzZXJSb2xlVHlwZSlcbiAgICAgICAgICAgIDogdHJ1ZVxuICAgIH1cblxuICAgIC8qIFBsZWFzZSByZW1vdmUgdGhpcyBBU0FQIC0gTmVlZHMgKmNoYW5uZWxzKiBhcnJheSBpbiB1c2VyIG9iamVjdCBBTFdBWVMgKi9cbiAgICBwcml2YXRlIGZvcmNlQ2hhbm5lbHNGb3JTZWxsZXIgPSB0b2tlbnMgPT4ge1xuICAgICAgICBpZiAoVXNlclJvbGVUeXBlLlNFTExFUiA9PSB0b2tlbnMudHlwZSBhcyBVc2VyUm9sZVR5cGUpXG4gICAgICAgICAgICB0aGlzLmNoYW5uZWxzPy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IHRoaXMudXNlci5zZXRDaGFubmVscyguLi50aGlzLmNoYW5uZWxzKVxuICAgICAgICAgICAgICAgIDogdGhpcy51c2VyLnNldENoYW5uZWxzKHRoaXMuY2hhbm5lbClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2FtYmlhIGRlIGNhbmFsXG4gICAgICogQHBhcmFtIGNoYW5uZWxDb25maWcgZGViZSBzZXIgdW4gb2JqZXRvIHF1ZSBjb250ZW5nYSBhbCBtZW5vcyBsYXMga2V5cyBjaGFubmVsIHkgbG9jYWxlLlxuICAgICAqL1xuICAgIHByaXZhdGUgY2hhbmdlQ2hhbm5lbCA9IChjaGFubmVsQ29uZmlnOmFueSkgPT4ge1xuICAgICAgICB0aGlzLmNvbnN0YW50cy5tb2RpZnlDaGFubmVsQ29uZmlnKHtcbiAgICAgICAgICAgIGNoYW5uZWw6IGNoYW5uZWxDb25maWcuY2hhbm5lbCxcbiAgICAgICAgICAgIGxvY2FsZTogY2hhbm5lbENvbmZpZy5sb2NhbGVcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2FyZ2EgZWwgY2xpZW50ZSBjb24gZWwgcXVlIHNlIHJlYWxpemFyYW4gcGVkaWRvcy4gU2kgcmVjaWJlIGVsIHZhbG9yIG51bGxcbiAgICAgKiBzZSB2dWVsdmUgYSBjYXJnYXIgZWwgdmVuZGVkb3IgcGFyYSBzdSB1c28uICBcbiAgICAgKiBAcGFyYW0gY3VzdG9tZXIgXG4gICAgICovXG4gICAgcHVibGljIHNldEN1c3RvbWVyID0gY3VzdG9tZXIgPT4ge1xuICAgICAgICBsZXQgcmVmcmVzaFBhZ2UgPSBmYWxzZVxuICAgICAgICB0aGlzLmN1c3RvbWVyID0gY3VzdG9tZXJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5DVVNUT01FUiwgSlNPTi5zdHJpbmdpZnkoY3VzdG9tZXIpKVxuICAgICAgICBcbiAgICAgICAgbGV0IHNhbWVDaGFubmVsID0gY3VzdG9tZXIgPyB0aGlzLnNhbWVDaGFubmVsKGN1c3RvbWVyLmNoYW5uZWxzWzBdLmNvZGUsIGN1c3RvbWVyLmNoYW5uZWxzWzBdLmxvY2FsZXMuY29kZSkgOiBudWxsXG4gICAgICAgIFxuICAgICAgICBpZiAoY3VzdG9tZXIpIHtcbiAgICAgICAgICAgIGlmKCFzYW1lQ2hhbm5lbCl7XG4gICAgICAgICAgICAgICAgIWxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ0hBTk5FTFNFTExFUikgP1xuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkNIQU5ORUxTRUxMRVIsIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWw6IHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZTogdGhpcy5jb25zdGFudHMuZ2V0TG9jYWxlKClcbiAgICAgICAgICAgICAgICAgICAgfSkpIDogbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUNoYW5uZWwoe1xuICAgICAgICAgICAgICAgICAgICBjaGFubmVsOiBjdXN0b21lci5jaGFubmVsc1swXS5jb2RlLFxuICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGN1c3RvbWVyLmNoYW5uZWxzWzBdLmxvY2FsZXMuY29kZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UgPSB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgcmVzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNIQU5ORUxTRUxMRVIpKVxuICAgICAgICAgICAgaWYocmVzKXtcbiAgICAgICAgICAgICAgICBpZighdGhpcy5zYW1lQ2hhbm5lbChyZXMuY2hhbm5lbCwgcmVzLmxvY2FsZSkpe1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUNoYW5uZWwocmVzKVxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSA9IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5DSEFOTkVMU0VMTEVSKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluamVjdG9yLmdldChDYXJ0U2VydmljZSkuY2xlYXJBbmRSZXNldEN1c3RvbWVyQ2FydCgpXG4gICAgICAgIHJlZnJlc2hQYWdlID8gbG9jYXRpb24uaHJlZiA9IGxvY2F0aW9uLmhyZWYgOiBudWxsXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBydWViYSBzaSBsb3MgdmFsb3JlcyBkZWwgY2FuYWwgYWN0dWFsIHNvbiBpZ3VhbGVzIGEgbG9zIGluZ3Jlc2FkbyBwb3IgcGFyYW1ldHJvcy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhbm5lbCBOb21icmUgZGVsIGNhbmFsXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2FsZSAgTG9jYWxlIGRlbCBjYW5hbFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIHNpIGVzIGVsIG1pc21vIGNhbmFsLCBGYWxzZSBjYXNvIGNvbnRyYXJpby5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNhbWVDaGFubmVsID0gKGNoYW5uZWw6c3RyaW5nLCBsb2NhbGU6c3RyaW5nKTpib29sZWFuID0+IChjaGFubmVsID09IHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSkgJiYgKGxvY2FsZSA9PSB0aGlzLmNvbnN0YW50cy5nZXRMb2NhbGUoKSlcblxuICAgIC8qIHB1YmxpYyBnZXRDdXN0b21lciA9ICgpID0+IE9ic2VydmFibGUub2YoSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNVU1RPTUVSKSkpICovXG5cbiAgICBwdWJsaWMgZ2V0Q3VzdG9tZXIgPSAoKSA9PiB7XG4gICAgICAgIC8qIHRoaXMuY3VzdG9tZXJTdWJqZWN0Lm5leHQoSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNVU1RPTUVSKSkpXG4gICAgICAgIHJldHVybiB0aGlzLmN1c3RvbWVyICovXG4gICAgICAgIHJldHVybiB0aGlzLmN1c3RvbWVyIHx8IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DVVNUT01FUikpXG4gICAgfVxuXG4gICAgcHVibGljIHNldEhvbWVSZXNvbHZlciA9IHJlc29sdmVyRnVuY3Rpb24gPT4gdGhpcy5ob21lUmVzb2x2ZXIgPSByZXNvbHZlckZ1bmN0aW9uXG5cbiAgICBwdWJsaWMgZ2V0SG9tZVJlc29sdmVyID0gKCkgPT4gdGhpcy5ob21lUmVzb2x2ZXJcblxuICAgIHB1YmxpYyBpc0FibGVUb0J1eSA9ICgpOiBib29sZWFuID0+ICF0aGlzLmdldFVzZXJQcm9maWxlQXNVc2VyKCk/LmlzU2VsbGVyKCkgfHwgISF0aGlzLmdldEN1c3RvbWVyKClcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFdmFsdWEgc2kgZWwgdmFsb3IgcXVlIGluZ3Jlc2EgcG9yIHBhcsOhbWV0cm8gZXMgbWF5b3IgbyBpZ3VhbCBhbCBtw61uaW1vIGRlIGNvbXByYVxuICAgICAqIHF1ZSBlbCB1c3VhcmlvIHRpZW5lIGFzaWduYWRvIGEgZXNlIGNhbmFsLCBkaWZlcmVuY2lhbmRvIHNpIGVzIG1heW9yaXN0YSBvIG1pbm9yaXN0YS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgc2kgZXhjZWRlIGVsIG1vbnRvLCBmYWxzZSBjYXNvIGNvbnRyYXJpb1xuICAgICAqL1xuICAgIHB1YmxpYyBleGNlZWRzTWluaW11bUFtb3VudCA9ICh2YWx1ZTpudW1iZXI9MCk6Ym9vbGVhbiA9PiAgXG4gICAgICAgIHRoaXMudXNlci5pc1dob2xlc2FsZXIoKSA/IHRoaXMudXNlci5jaGFubmVscy5maW5kKCBjaGFubmVsID0+IHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSA9PSBjaGFubmVsLmNvZGUpLndob2xlc2FsZXJNaW5pbXVtUHVyY2hhc2VBbW91bnQgPD0gdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy51c2VyLmNoYW5uZWxzLmZpbmQoIGNoYW5uZWwgPT4gdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpID09IGNoYW5uZWwuY29kZSkucmV0YWlsZXJNaW5pbXVtUHVyY2hhc2VBbW91bnQgPD0gdmFsdWVcbn0iXX0=
427
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBTyxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFPN0M7SUEwQ0kscUJBQW9CLFVBQTZCLEVBQ3JDLGFBQTRCLEVBQzVCLFNBQW9CLEVBQ3BCLFFBQWtCO1FBSDlCLGlCQU1DO1FBTm1CLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQ3JDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTNDYixjQUFT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QUFpQjtnQkFDdEIsYUFBYTtnQkFDakIsU0FBUztnQkFDVixRQUFROzs7SUE3Q3JCLFdBQVc7UUFIdkIsVUFBVSxDQUFDO1lBQ1IsVUFBVSxFQUFFLE1BQU07U0FDckIsQ0FBQztPQUNXLFdBQVcsQ0E0V3ZCO3NCQTlYRDtDQThYQyxBQTVXRCxJQTRXQztTQTVXWSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vY2xhc3Nlcy91c2VyJztcbmltcG9ydCAncnhqcy9hZGQvb2JzZXJ2YWJsZS9vZic7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBtYXAsIG1hcFRvLCBjYXRjaEVycm9yLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xuaW1wb3J0IHsgQ2hhbm5lbENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2NoYW5uZWwtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMtY29tcGF0L29wZXJhdG9yL3Rha2UnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVXNlclJvbGVUeXBlIH0gZnJvbSAnLi4vY2xhc3Nlcy91c2VyLXJvbGUtdHlwZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBKV1RfVE9LRU4gPSAnSldUX1RPS0VOJ1xuICAgIHByaXZhdGUgcmVhZG9ubHkgUkVGUkVTSF9UT0tFTiA9ICdSRUZSRVNIX1RPS0VOJ1xuICAgIHByaXZhdGUgcmVhZG9ubHkgRVhQSVJBVEVTX0lOID0gJ0VYUElSQVRFU19JTidcbiAgICBwcml2YXRlIHJlYWRvbmx5IFVTRVIgPSAnVVNFUidcbiAgICBwcml2YXRlIHJlYWRvbmx5IE1BSUwgPSAnbWFpbCdcbiAgICBwcml2YXRlIHJlYWRvbmx5IExPQ0FMRSA9ICdMT0NBTEUnXG4gICAgcHJpdmF0ZSByZWFkb25seSBDSEFOTkVMID0gJ0NIQU5ORUwnXG4gICAgcHJpdmF0ZSByZWFkb25seSBDVVNUT01FUiA9ICdDVVNUT01FUidcbiAgICBwcml2YXRlIHJlYWRvbmx5IENIQU5ORUxTRUxMRVIgPSAnQ0hBTk5FTFNFTExFUidcblxuICAgIC8qIGFjdGl2ZUNoYW5uZWxTd2l0Y2g/ICovXG4gICAgcHJpdmF0ZSBhY3RpdmVDaGFubmVsQ2hhbmdlOiBib29sZWFuID0gZmFsc2VcbiAgICBwcml2YXRlIGxvZ2dlZEluU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihmYWxzZSlcbiAgICBwcml2YXRlIGxvZ2dpbmdJblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oZmFsc2UpXG4gICAgcHJpdmF0ZSB1c2VySW5TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVc2VyPihudWxsKVxuICAgIHByaXZhdGUgY2hhbm5lbHNVc2VyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKVxuICAgIC8qIHByaXZhdGUgY3VzdG9tZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpICovXG4gICAgcHJpdmF0ZSB1c2VyOiBVc2VyID0gbnVsbFxuXG4gICAgLy8gQVBJU1xuICAgIHB1YmxpYyB0b2tlbkFwaSA9ICgpID0+ICdzaG9wLWFwaS9sb2dpbl9jaGVjayc7XG4gICAgcHVibGljIHJlZ2lzdGVyQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3JlZ2lzdGVyJztcbiAgICBwdWJsaWMgcmVnaXN0ZXJXaG9sZXNhbGVyQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3JlZ2lzdGVyLXdob2xlc2FsZXInO1xuICAgIHB1YmxpYyBjb25maXJtQWNjb3VudEFwaSA9ICh0b2tlbikgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3ZlcmlmeS1hY2NvdW50P3Rva2VuPScgKyB0b2tlbjtcbiAgICBwdWJsaWMgcmVzZXRQYXNzd29yZEFwaSA9ICh0b2tlbikgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3Bhc3N3b3JkLXJlc2V0LycgKyB0b2tlbjtcbiAgICBwdWJsaWMgcmVjb3ZlclBhc3N3b3JkQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3JlcXVlc3QtcGFzc3dvcmQtcmVzZXQnO1xuICAgIHB1YmxpYyBjb3VudHJpZXNBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSArICcvY291bnRyaWVzJztcblxuICAgIC8vIEF0cmlidXRvcyB1dGlsZXNcbiAgICBwdWJsaWMgd2FpdGluZyA9IGZhbHNlO1xuICAgIHB1YmxpYyBsb2dnZWRJbiA9IHRoaXMubG9nZ2VkSW5TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG4gICAgcHVibGljIGxvZ2dpbmdJbiA9IHRoaXMubG9nZ2luZ0luU3ViamVjdC5hc09ic2VydmFibGUoKVxuICAgIHB1YmxpYyB1c2VyQXV0aCA9IHRoaXMudXNlckluU3ViamVjdC5hc09ic2VydmFibGUoKVxuICAgIHB1YmxpYyBjaGFubmVsc1VzZXIgPSB0aGlzLmNoYW5uZWxzVXNlclN1YmplY3QuYXNPYnNlcnZhYmxlKClcbiAgICAvKiBwcml2YXRlIGN1c3RvbWVyID0gdGhpcy5jaGFubmVsc1VzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpICovXG4gICAgcHJpdmF0ZSBjdXN0b21lciA9IG51bGxcbiAgICBwdWJsaWMgY2hhbm5lbCA9IG51bGxcbiAgICBwdWJsaWMgY2hhbm5lbHMgPSBbXVxuICAgIHByaXZhdGUgaG9tZVJlc29sdmVyID0gbnVsbFxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0b2FzdHJTZXJ2aWNlOiBUb2FzdHJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnN0YW50czogQ29uc3RhbnRzLFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvclxuICAgICkge1xuICAgICAgICB0aGlzLmlzQXV0aGVudGljYXRlZCgpICYmIHRoaXMubG9nZ2VkSW5TdWJqZWN0Lm5leHQodHJ1ZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBEZXZ1ZWx2ZSB1biBvYnNlcnZhYmxlXG4gICAgICogQHBhcmFtIHVzZXIgT2JqZXRvIHF1ZSBjb250aWVuZSB1c2VybmFtZSB5IHBhc3N3b3JkIFxuICAgICAqL1xuICAgIGxvZ2luKHVzZXI6IHsgdXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyB9LCB3aXRoUm9sZXM6IFVzZXJSb2xlVHlwZVtdID0gW10pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICB0aGlzLmluamVjdG9yLmdldChDaGFubmVsQ29uZmlnU2VydmljZSkuY2hhbm5lbENvbmZpZyQuc3Vic2NyaWJlKGNoID0+IHRoaXMuY2hhbm5lbCA9IGNoKTtcbiAgICAgICAgdGhpcy5pbmplY3Rvci5nZXQoQ2hhbm5lbENvbmZpZ1NlcnZpY2UpLmNoYW5uZWxzLnN1YnNjcmliZShjaCA9PiB0aGlzLmNoYW5uZWxzID0gY2gpO1xuICAgICAgICB0aGlzLmxvZ2dpbmdJblN1YmplY3QubmV4dCh0cnVlKTtcblxuICAgICAgICAvLyBDb252ZXJ0aXIgZWwgdXNlcm5hbWUgYSBtaW7DunNjdWxhc1xuICAgICAgICB1c2VyID0geyAuLi51c2VyLCB1c2VybmFtZTogdXNlci51c2VybmFtZS50b0xvd2VyQ2FzZSgpLCAuLi50aGlzLmNvbnN0YW50cy5sb2dpbkV4dHJhRGF0YSgpIH07XG5cbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMudG9rZW5BcGkoKSwgdXNlcikucGlwZShcbiAgICAgICAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoYW5uZWxBY2Nlc3NQZXJtaXNzaW9uKHsgLi4udXNlciwgLi4ucmVzIH0pICYmIHRoaXMuaXNBbGxvd2VkUm9sZSh3aXRoUm9sZXMsIHJlcy50eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvTG9naW5Vc2VyKHsgLi4udXNlciwgLi4ucmVzIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dpbmdJblN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKGVyci50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgY2hhbm5lbEFjY2Vzc1Blcm1pc3Npb24gPSAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbm5lbHNVc2VyU3ViamVjdC5uZXh0KFtdKVxuXG4gICAgICAgIC8qIFBsZWFzZSByZW1vdmUgdGhpcyBBU0FQIC0gTmVlZHMgKmNoYW5uZWxzKiBhcnJheSBpbiB1c2VyIG9iamVjdCBBTFdBWVMgKi9cbiAgICAgICAgLyogaWYgKFVzZXJSb2xlVHlwZS5TRUxMRVIgPT0gcmVzLnR5cGUgYXMgVXNlclJvbGVUeXBlKSByZXR1cm4gdHJ1ZSAqL1xuXG4gICAgICAgIC8qIE5vIGF1dGhvcml6ZWQgY2hhbm5lbHMgKi9cbiAgICAgICAgaWYgKHJlcy5jaGFubmVscz8ubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIC8qIFNvbWUgYXV0aG9yaXplZCBjaGFubmVsKHMpIGluY2x1ZGluZyBjdXJyZW50IGNoYW5uZWwgKi9cbiAgICAgICAgaWYgKHJlcy5jaGFubmVscy5maW5kKHVzZXJjaGFubmVsID0+IHVzZXJjaGFubmVsLmNvZGUgPT09IHRoaXMuY2hhbm5lbC5jb2RlKSkge1xuICAgICAgICAgICAgLyogTXVsdGlwbGUgYXV0aG9yaXplZCBjaGFubmVscyBpbmNsdWRpbmcgY3VycmVudCBjaGFubmVsICovXG4gICAgICAgICAgICBpZiAocmVzLmNoYW5uZWxzPy5sZW5ndGggPiAxICYmIHRoaXMuYWN0aXZlQ2hhbm5lbENoYW5nZSlcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5uZWxzVXNlclN1YmplY3QubmV4dChyZXMuY2hhbm5lbHMpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIC8qIE9uZSBhdXRob3JpemVkIGNoYW5uZWwgbm90IGluY2x1ZGluZyBjdXJyZW50IGNoYW5uZWwgKi9cbiAgICAgICAgaWYgKHJlcy5jaGFubmVscz8ubGVuZ3RoID09IDEgJiYgdGhpcy5hY3RpdmVDaGFubmVsQ2hhbmdlKSB7XG4gICAgICAgICAgICBkZWxldGUgcmVzLnBhc3N3b3JkXG4gICAgICAgICAgICB0aGlzLmNoYW5uZWxBY2Nlc3MocmVzLmNoYW5uZWxzWzBdLCByZXMpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIC8qIE11bHRpcGxlIGF1dGhvcml6ZWQgY2hhbm5lbHMgbm90IGluY2x1ZGluZyBjdXJyZW50IGNoYW5uZWwgKi9cbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlQ2hhbm5lbENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5jaGFubmVsc1VzZXJTdWJqZWN0Lm5leHQocmVzLmNoYW5uZWxzKVxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBjaGFubmVsQWNjZXNzID0gKGNoYW5uZWwsIHVzZXIgPSBudWxsKSA9PiB7XG4gICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUgIT0gY2hhbm5lbC5ob3N0bmFtZSkge1xuICAgICAgICAgICAgbGV0IGVuY29kZWQgPSBidG9hKEpTT04uc3RyaW5naWZ5KHVzZXIgIT0gbnVsbCA/IHVzZXIgOiB0aGlzLnVzZXIpKVxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoYCR7d2luZG93LmxvY2F0aW9uLnByb3RvY29sfS8vJHtjaGFubmVsLmhvc3RuYW1lfS9hdXRoL3JlZGlyZWN0LyR7ZW5jb2RlZH1gKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb25zdGFudHMubW9kaWZ5Q2hhbm5lbENvbmZpZyhjaGFubmVsKVxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzYyBEZXZ1ZWx2ZSB1bmEgcHJvbWVzYVxuICAgICAqIEBwYXJhbSB1c2VyIE9iamV0byBxdWUgY29udGllbmUgdXNlcm5hbWUgeSBwYXNzd29yZCBcbiAgICAgKi9cbiAgICBkb0xvZ2luID0gKHVzZXI6IHsgdXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIHRoaXMubG9nZ2luZ0luU3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgICB1c2VyID0geyAuLi51c2VyLCAuLi50aGlzLmNvbnN0YW50cy5sb2dpbkV4dHJhRGF0YSgpIH07XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24ucG9zdCh0aGlzLnRva2VuQXBpKCksIHVzZXIpLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzID0+IHRoaXMuZG9Mb2dpblVzZXIocmVzKSksXG4gICAgICAgICAgICBtYXBUbygnb2snKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dpbmdJblN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKGVyci50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICkudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgZ2V0VXNlclByb2ZpbGUoKTogT2JzZXJ2YWJsZTxVc2VyPiB7XG4gICAgICAgIHJldHVybiAodGhpcy51c2VyICYmIE9ic2VydmFibGUub2YodGhpcy51c2VyKSkgfHwgdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgIH1cblxuICAgIGdldFVzZXJQcm9maWxlQXNVc2VyKCk6IFVzZXIge1xuICAgICAgICByZXR1cm4gdGhpcy51c2VyIHx8IHRoaXMuZ2V0Q3VycmVudFVzZXJBc1VzZXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEN1cnJlbnRVc2VyQXNVc2VyKCk6IFVzZXIge1xuICAgICAgICB0aGlzLnVzZXIgPSBuZXcgVXNlcigpO1xuICAgICAgICBpZiAoIXRoaXMudXNlci5sb2FkRnJvbVN0b3JhZ2UoKSkge1xuICAgICAgICAgICAgdGhpcy51c2VyID0gbnVsbFxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMudXNlcj8uY2hhbm5lbHMuZmluZCh1c2VyY2hhbm5lbCA9PiB1c2VyY2hhbm5lbD8uY29kZSA9PT0gdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXNlcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubG9nb3V0KClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy51c2VyO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q3VycmVudFVzZXIoKTogT2JzZXJ2YWJsZTxVc2VyPiB7XG4gICAgICAgIHRoaXMudXNlciA9IG5ldyBVc2VyKCk7XG4gICAgICAgIGlmICghdGhpcy51c2VyLmxvYWRGcm9tU3RvcmFnZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnVzZXIgPSBudWxsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YodGhpcy51c2VyKTtcbiAgICB9XG5cbiAgICBzaWduVXAgPSAoZGF0YSkgPT4ge1xuICAgICAgICAvLyBDb252ZXJ0aXIgZWwgZW1haWwgYSBtaW7DunNjdWxhcyBzaSBleGlzdGVcbiAgICAgICAgaWYgKGRhdGEuZW1haWwpIHtcbiAgICAgICAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIGVtYWlsOiBkYXRhLmVtYWlsLnRvTG93ZXJDYXNlKCkgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLnBvc3QodGhpcy5yZWdpc3RlckFwaSgpLCBkYXRhKTtcbiAgICB9O1xuXG4gICAgaXNBdXRoZW50aWNhdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5pc1Rva2VuRXhwaXJlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmRvTG9nb3V0VXNlcigpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZXRDdXJyZW50VXNlckFzVXNlcigpXG4gICAgICAgIHRoaXMudXNlckluU3ViamVjdC5uZXh0KHRoaXMudXNlcik7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRva2VuKCkgJiYgIXRoaXMuaXNUb2tlbkV4cGlyZWQoKSAmJiB0aGlzLnVzZXIgIT0gbnVsbDtcbiAgICB9XG5cbiAgICBjb25maXJtQWNjb3VudCA9ICh0b2tlbjogc3RyaW5nKSA9PlxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuY29uZmlybUFjY291bnRBcGkodG9rZW4pKTtcblxuICAgIHBhc3N3b3JkUmVzZXQgPSAobmV3X3Bhc3N3b3JkLCB0b2tlbikgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0geyBwYXNzd29yZDogeyBmaXJzdDogbmV3X3Bhc3N3b3JkLCBzZWNvbmQ6IG5ld19wYXNzd29yZCB9IH07XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMucmVzZXRQYXNzd29yZEFwaSh0b2tlbiksIGRhdGEpO1xuICAgIH1cblxuICAgIHJlY292ZXJQYXNzd29yZCA9IChlbWFpbDogc3RyaW5nKSA9PlxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMucmVjb3ZlclBhc3N3b3JkQXBpKCksIHsgZW1haWwgfSk7XG5cbiAgICAvKiBUT0tFTiAqL1xuXG4gICAgbG9nb3V0KCkge1xuICAgICAgICB0aGlzLmRvTG9nb3V0VXNlcigpO1xuICAgIH1cblxuICAgIHJlZnJlc2hUb2tlbigpIHtcbiAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuY29uc3RhbnRzLmxvZ2luRXh0cmFEYXRhKCksIHJlZnJlc2hfdG9rZW46IHRoaXMuZ2V0UmVmcmVzaFRva2VuKCkgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLnBvc3QodGhpcy50b2tlbkFwaSgpLCBkYXRhKS5waXBlKG1hcChcbiAgICAgICAgICAgIHJlcyA9PiB0aGlzLmRvTG9naW5Vc2VyKHJlcylcbiAgICAgICAgKSlcbiAgICB9XG5cbiAgICBnZXRUb2tlbigpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuSldUX1RPS0VOKTtcbiAgICB9XG5cbiAgICBpc1Rva2VuRXhwaXJlZCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgZmVjaGFfZXhwaXJhY2lvbiA9IHRoaXMuZ2V0RXhwaXJhdGVzQXQoKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbW9tZW50KCkgPj0gbW9tZW50KGZlY2hhX2V4cGlyYWNpb24pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGdldEV4cGlyYXRlc0F0ID0gKCkgPT4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5FWFBJUkFURVNfSU4pO1xuXG4gICAgcHVibGljIGRvTG9naW5Vc2VyKHRva2Vucykge1xuICAgICAgICB0aGlzLnVzZXIgPSBuZXcgVXNlcigpXG4gICAgICAgIHRoaXMudXNlci5pbml0aWxpemVkKHRva2VucylcbiAgICAgICAgdGhpcy5mb3JjZUNoYW5uZWxzRm9yU2VsbGVyKHRva2VucylcbiAgICAgICAgdGhpcy51c2VyLnBlcnNpc3RJblN0b3JhZ2UoKVxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkVYUElSQVRFU19JTiwgbW9tZW50KHRva2Vucy5leHBpcmVzX2luKS5hZGQoMSwgJ2gnKS5mb3JtYXQoKSk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuUkVGUkVTSF9UT0tFTiwgbW9tZW50KHRva2Vucy5leHBpcmVzX2luKS5hZGQoMSwgJ2gnKS5mb3JtYXQoKSk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuSldUX1RPS0VOLCB0b2tlbnMudG9rZW4pO1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLk1BSUwsIHRva2Vucy51c2VybmFtZSk7XG4gICAgICAgIHRoaXMudXNlckluU3ViamVjdC5uZXh0KHRoaXMudXNlcik7XG4gICAgICAgIHRoaXMubG9nZ2VkSW5TdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMubG9nZ2luZ0luU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZG9Mb2dvdXRVc2VyKCkge1xuICAgICAgICB0aGlzLnVzZXIgPSBudWxsXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuVVNFUik7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuRVhQSVJBVEVTX0lOKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5KV1RfVE9LRU4pO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlJFRlJFU0hfVE9LRU4pO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnY2FydF90b2tlbicpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLk1BSUwpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkNIQU5ORUwpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkNIQU5ORUxTRUxMRVIpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkxPQ0FMRSk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuQ1VTVE9NRVIpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnTUFTVEVSX0NIQU5ORUwnKTtcbiAgICAgICAgdGhpcy5sb2dnZWRJblN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMudXNlckluU3ViamVjdC5uZXh0KHRoaXMudXNlcik7XG4gICAgICAgIHRoaXMuY2hhbm5lbHNVc2VyU3ViamVjdC5uZXh0KFtdKVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UmVmcmVzaFRva2VuKCkge1xuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5SRUZSRVNIX1RPS0VOKTtcbiAgICB9XG5cbiAgICBoYXNUb1JlZnJlc2ggPSAoKSA9PiB0aGlzLmdldFJlZnJlc2hUb2tlbigpO1xuXG4gICAgc2lnblVwV2hvbGVzYWxlciA9IChkYXRhKSA9PiB7XG4gICAgICAgIC8vIENvbnZlcnRpciBlbCBlbWFpbCBhIG1pbsO6c2N1bGFzIHNpIGV4aXN0ZVxuICAgICAgICBpZiAoZGF0YS5lbWFpbCkge1xuICAgICAgICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgZW1haWw6IGRhdGEuZW1haWwudG9Mb3dlckNhc2UoKSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24ucG9zdCh0aGlzLnJlZ2lzdGVyV2hvbGVzYWxlckFwaSgpLCBkYXRhKTtcbiAgICB9O1xuXG4gICAgZ2V0Q291bnRyaWVzRGF0YSA9IGFzeW5jICgpID0+XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5jb3VudHJpZXNBcGkoKSkucGlwZShtYXAocmVzID0+IHJlcy5fZW1iZWRkZWQuaXRlbXMpKS50b1Byb21pc2UoKTtcblxuICAgIHB1YmxpYyBzZXRBY3RpdmVDaGFubmVsQ2hhbmdlID0gKGFjdGl2ZWx5Q2hhbmdlQ2hhbm5lbHNPbkxvZ2luOiBib29sZWFuKSA9PiB0aGlzLmFjdGl2ZUNoYW5uZWxDaGFuZ2UgPSBhY3RpdmVseUNoYW5nZUNoYW5uZWxzT25Mb2dpblxuXG4gICAgcHJpdmF0ZSBpc0FsbG93ZWRSb2xlID0gKGFsbG93ZWRSb2xlczogVXNlclJvbGVUeXBlW10sIHJvbGU6IHN0cmluZykgPT4ge1xuICAgICAgICByZXR1cm4gYWxsb3dlZFJvbGVzLmxlbmd0aFxuICAgICAgICAgICAgPyBhbGxvd2VkUm9sZXMuaW5jbHVkZXMocm9sZSBhcyBVc2VyUm9sZVR5cGUpXG4gICAgICAgICAgICA6IHRydWVcbiAgICB9XG5cbiAgICAvKiBQbGVhc2UgcmVtb3ZlIHRoaXMgQVNBUCAtIE5lZWRzICpjaGFubmVscyogYXJyYXkgaW4gdXNlciBvYmplY3QgQUxXQVlTICovXG4gICAgcHJpdmF0ZSBmb3JjZUNoYW5uZWxzRm9yU2VsbGVyID0gdG9rZW5zID0+IHtcbiAgICAgICAgaWYgKFVzZXJSb2xlVHlwZS5TRUxMRVIgPT0gdG9rZW5zLnR5cGUgYXMgVXNlclJvbGVUeXBlKVxuICAgICAgICAgICAgdGhpcy5jaGFubmVscz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyB0aGlzLnVzZXIuc2V0Q2hhbm5lbHMoLi4udGhpcy5jaGFubmVscylcbiAgICAgICAgICAgICAgICA6IHRoaXMudXNlci5zZXRDaGFubmVscyh0aGlzLmNoYW5uZWwpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENhbWJpYSBkZSBjYW5hbFxuICAgICAqIEBwYXJhbSBjaGFubmVsQ29uZmlnIGRlYmUgc2VyIHVuIG9iamV0byBxdWUgY29udGVuZ2EgYWwgbWVub3MgbGFzIGtleXMgY2hhbm5lbCB5IGxvY2FsZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNoYW5nZUNoYW5uZWwgPSAoY2hhbm5lbENvbmZpZzphbnkpID0+IHtcbiAgICAgICAgdGhpcy5jb25zdGFudHMubW9kaWZ5Q2hhbm5lbENvbmZpZyh7XG4gICAgICAgICAgICBjaGFubmVsOiBjaGFubmVsQ29uZmlnLmNoYW5uZWwsXG4gICAgICAgICAgICBsb2NhbGU6IGNoYW5uZWxDb25maWcubG9jYWxlXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENhcmdhIGVsIGNsaWVudGUgY29uIGVsIHF1ZSBzZSByZWFsaXphcmFuIHBlZGlkb3MuIFNpIHJlY2liZSBlbCB2YWxvciBudWxsXG4gICAgICogc2UgdnVlbHZlIGEgY2FyZ2FyIGVsIHZlbmRlZG9yIHBhcmEgc3UgdXNvLiAgXG4gICAgICogQHBhcmFtIGN1c3RvbWVyIFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRDdXN0b21lciA9IGN1c3RvbWVyID0+IHtcbiAgICAgICAgbGV0IHJlZnJlc2hQYWdlID0gZmFsc2VcbiAgICAgICAgdGhpcy5jdXN0b21lciA9IGN1c3RvbWVyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuQ1VTVE9NRVIsIEpTT04uc3RyaW5naWZ5KGN1c3RvbWVyKSlcbiAgICAgICAgXG4gICAgICAgIGxldCBzYW1lQ2hhbm5lbCA9IGN1c3RvbWVyID8gdGhpcy5zYW1lQ2hhbm5lbChjdXN0b21lci5jaGFubmVsc1swXS5jb2RlLCBjdXN0b21lci5jaGFubmVsc1swXS5sb2NhbGVzLmNvZGUpIDogbnVsbFxuICAgICAgICBcbiAgICAgICAgaWYgKGN1c3RvbWVyKSB7XG4gICAgICAgICAgICBpZighc2FtZUNoYW5uZWwpe1xuICAgICAgICAgICAgICAgICFsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNIQU5ORUxTRUxMRVIpID9cbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5DSEFOTkVMU0VMTEVSLCBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsOiB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IHRoaXMuY29uc3RhbnRzLmdldExvY2FsZSgpXG4gICAgICAgICAgICAgICAgICAgIH0pKSA6IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VDaGFubmVsKHtcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbDogY3VzdG9tZXIuY2hhbm5lbHNbMF0uY29kZSxcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBjdXN0b21lci5jaGFubmVsc1swXS5sb2NhbGVzLmNvZGVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHJlcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DSEFOTkVMU0VMTEVSKSlcbiAgICAgICAgICAgIGlmKHJlcyl7XG4gICAgICAgICAgICAgICAgaWYoIXRoaXMuc2FtZUNoYW5uZWwocmVzLmNoYW5uZWwsIHJlcy5sb2NhbGUpKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VDaGFubmVsKHJlcylcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UgPSB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuQ0hBTk5FTFNFTExFUik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbmplY3Rvci5nZXQoQ2FydFNlcnZpY2UpLmNsZWFyQW5kUmVzZXRDdXN0b21lckNhcnQoKVxuICAgICAgICByZWZyZXNoUGFnZSA/IGxvY2F0aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVmIDogbnVsbFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wcnVlYmEgc2kgbG9zIHZhbG9yZXMgZGVsIGNhbmFsIGFjdHVhbCBzb24gaWd1YWxlcyBhIGxvcyBpbmdyZXNhZG8gcG9yIHBhcmFtZXRyb3MuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNoYW5uZWwgTm9tYnJlIGRlbCBjYW5hbFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhbGUgIExvY2FsZSBkZWwgY2FuYWxcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBzaSBlcyBlbCBtaXNtbyBjYW5hbCwgRmFsc2UgY2FzbyBjb250cmFyaW8uXG4gICAgICovXG4gICAgcHJpdmF0ZSBzYW1lQ2hhbm5lbCA9IChjaGFubmVsOnN0cmluZywgbG9jYWxlOnN0cmluZyk6Ym9vbGVhbiA9PiAoY2hhbm5lbCA9PSB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkpICYmIChsb2NhbGUgPT0gdGhpcy5jb25zdGFudHMuZ2V0TG9jYWxlKCkpXG5cbiAgICAvKiBwdWJsaWMgZ2V0Q3VzdG9tZXIgPSAoKSA9PiBPYnNlcnZhYmxlLm9mKEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DVVNUT01FUikpKSAqL1xuXG4gICAgcHVibGljIGdldEN1c3RvbWVyID0gKCkgPT4ge1xuICAgICAgICAvKiB0aGlzLmN1c3RvbWVyU3ViamVjdC5uZXh0KEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DVVNUT01FUikpKVxuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21lciAqL1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21lciB8fCBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ1VTVE9NRVIpKVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRIb21lUmVzb2x2ZXIgPSByZXNvbHZlckZ1bmN0aW9uID0+IHRoaXMuaG9tZVJlc29sdmVyID0gcmVzb2x2ZXJGdW5jdGlvblxuXG4gICAgcHVibGljIGdldEhvbWVSZXNvbHZlciA9ICgpID0+IHRoaXMuaG9tZVJlc29sdmVyXG5cbiAgICBwdWJsaWMgaXNBYmxlVG9CdXkgPSAoKTogYm9vbGVhbiA9PiAhdGhpcy5nZXRVc2VyUHJvZmlsZUFzVXNlcigpPy5pc1NlbGxlcigpIHx8ICEhdGhpcy5nZXRDdXN0b21lcigpXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRXZhbHVhIHNpIGVsIHZhbG9yIHF1ZSBpbmdyZXNhIHBvciBwYXLDoW1ldHJvIGVzIG1heW9yIG8gaWd1YWwgYWwgbcOtbmltbyBkZSBjb21wcmFcbiAgICAgKiBxdWUgZWwgdXN1YXJpbyB0aWVuZSBhc2lnbmFkbyBhIGVzZSBjYW5hbCwgZGlmZXJlbmNpYW5kbyBzaSBlcyBtYXlvcmlzdGEgbyBtaW5vcmlzdGEuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIHNpIGV4Y2VkZSBlbCBtb250bywgZmFsc2UgY2FzbyBjb250cmFyaW9cbiAgICAgKi9cbiAgICBwdWJsaWMgZXhjZWVkc01pbmltdW1BbW91bnQgPSAodmFsdWU6bnVtYmVyPTApOmJvb2xlYW4gPT4gIFxuICAgICAgICB0aGlzLnVzZXIuaXNXaG9sZXNhbGVyKCkgPyB0aGlzLnVzZXIuY2hhbm5lbHMuZmluZCggY2hhbm5lbCA9PiB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgPT0gY2hhbm5lbC5jb2RlKS53aG9sZXNhbGVyTWluaW11bVB1cmNoYXNlQW1vdW50IDw9IHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMudXNlci5jaGFubmVscy5maW5kKCBjaGFubmVsID0+IHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSA9PSBjaGFubmVsLmNvZGUpLnJldGFpbGVyTWluaW11bVB1cmNoYXNlQW1vdW50IDw9IHZhbHVlXG59Il19
@@ -12,8 +12,10 @@ import { ConnectionService } from '../api/connection.service';
12
12
  import { Constants } from '../core.consts';
13
13
  import { ParametersService } from '../services/parameters.service';
14
14
  import * as i0 from "@angular/core";
15
- import * as i1 from "../../public-api";
16
- import * as i2 from "@angular/common/http";
15
+ import * as i1 from "../core.consts";
16
+ import * as i2 from "../api/connection.service";
17
+ import * as i3 from "@angular/common/http";
18
+ import * as i4 from "./parameters.service";
17
19
  //import * from '../assets/ec-i18n'
18
20
  var CaptchaService = /** @class */ (function () {
19
21
  /**
@@ -120,7 +122,7 @@ var CaptchaService = /** @class */ (function () {
120
122
  { type: HttpClient },
121
123
  { type: ParametersService }
122
124
  ]; };
123
- CaptchaService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CaptchaService_Factory() { return new i1.CaptchaService(i0.ɵɵinject(i1.Constants), i0.ɵɵinject(i1.ConnectionService), i0.ɵɵinject(i2.HttpClient), i0.ɵɵinject(i1.ParametersService)); }, token: i1.CaptchaService, providedIn: "root" });
125
+ CaptchaService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CaptchaService_Factory() { return new CaptchaService(i0.ɵɵinject(i1.Constants), i0.ɵɵinject(i2.ConnectionService), i0.ɵɵinject(i3.HttpClient), i0.ɵɵinject(i4.ParametersService)); }, token: CaptchaService, providedIn: "root" });
124
126
  CaptchaService = __decorate([
125
127
  Injectable({
126
128
  providedIn: 'root'
@@ -129,4 +131,4 @@ var CaptchaService = /** @class */ (function () {
129
131
  return CaptchaService;
130
132
  }());
131
133
  export { CaptchaService };
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdGNoYS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NhcHRjaGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQVUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7O0FBRW5FLG1DQUFtQztBQUluQztJQWlCSTs7Ozs7T0FLRztJQUNILHdCQUFvQixNQUFpQixFQUN6QixVQUE2QixFQUM3QixJQUFlLEVBQ2IsU0FBNEI7UUFIMUMsaUJBYUM7UUFibUIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixTQUFJLEdBQUosSUFBSSxDQUFXO1FBQ2IsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUF4QmxDLG1CQUFjLEdBQXVDLElBQUksZUFBZSxDQUFDLEVBQUMsT0FBTyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUE7UUFDdkYsWUFBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUE7UUFLM0MsWUFBTyxHQUFVLGtCQUFrQixDQUFBO1FBQ25DLDBCQUFxQixHQUFXLEtBQUssQ0FBQztRQUV0Qyx5QkFBb0IsR0FBRyw2Q0FBNkMsQ0FBQztRQUNyRSxzQkFBaUIsR0FBRyx5Q0FBeUMs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QyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBbkIsQ0FBbUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxNQUFNLEVBQVIsQ0FBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBNUcsQ0FBNEcsQ0FBQTtRQXpGeEksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsS0FBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQW5CLENBQW1CLENBQUMsQ0FBQTtRQUNqRTs7O1dBR0c7UUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2xELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDMUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQzFCLENBQUM7O2dCQWIyQixTQUFTO2dCQUNiLGlCQUFpQjtnQkFDeEIsVUFBVTtnQkFDRixpQkFBaUI7OztJQTFCakMsY0FBYztRQUgxQixVQUFVLENBQUM7WUFDUixVQUFVLEVBQUUsTUFBTTtTQUNyQixDQUFDO09BQ1csY0FBYyxDQXVIMUI7eUJBcElEO0NBb0lDLEFBdkhELElBdUhDO1NBdkhZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVjYXB0Y2hhU2V0dGluZ3MgfSBmcm9tICduZy1yZWNhcHRjaGEvcmVjYXB0Y2hhL3JlY2FwdGNoYS1zZXR0aW5ncyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBmaWx0ZXIsIGNvbmNhdE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcGFyYW1ldGVycy5zZXJ2aWNlJztcblxuLy9pbXBvcnQgKiBmcm9tICcuLi9hc3NldHMvZWMtaTE4bidcbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2FwdGNoYVNlcnZpY2Uge1xuICAgIFxuICAgIHByaXZhdGUgY2FwdGNoYVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxSZWNhcHRjaGFTZXR0aW5ncz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHtzaXRlS2V5OicnfSlcbiAgICBwdWJsaWMgY2FwdGNoYSA9IHRoaXMuY2FwdGNoYVN1YmplY3QuYXNPYnNlcnZhYmxlKClcbiAgICBcbiAgICBwdWJsaWMgcGFyYW1zOiBhbnk7XG5cbiAgICBwcml2YXRlIHVybEJhc2VGb3JtYXQ6c3RyaW5nXG4gICAgcHJpdmF0ZSB0ZXN0aW5nOnN0cmluZyA9IFwiZWFzeWNvbW1lcmNldGVjaFwiXG4gICAgcHJpdmF0ZSBwcm9kdWN0aW9uRW52aXJvbm1lbnQ6Qm9vbGVhbiA9IGZhbHNlO1xuICAgIFxuICAgIHByaXZhdGUgcmVjYXB0Y2hhU2l0ZUtleXNVcmwgPSAnLi9hc3NldHMvcmVjYXB0Y2hhL3JlY2FwdGNoYS1zaXRlLWtleXMuanNvbic7XG4gICAgcHJpdmF0ZSByZWNhcHRjaGFTaXRlc1VybCA9ICcuL2Fzc2V0cy9yZWNhcHRjaGEvcmVjYXB0Y2hhLXNpdGVzLmpzb24nO1xuICAgIHByaXZhdGUgcmVjYXB0Y2hhU2l0ZXNVcmxQcm9kID0gJy4vYXNzZXRzL3JlY2FwdGNoYS9yZWNhcHRjaGEtc2l0ZXMtcHJvZC5qc29uJ1xuXG4gICAgcHJpdmF0ZSBSRUNBUFRDSEFfU0lURV9LRVlTIFxuICAgIHByaXZhdGUgUkVDQVBUQ0hBX1NJVEVTIFxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDYXJnYSBsYXMgY29uZmlndXJhY2lvbmVzIGluaWNpYWxlc1xuICAgICAqIEBwYXJhbSBjb25zdHMgQ29uc3RhbnRlcyBkZWwgY29yZVxuICAgICAqIEBwYXJhbSBjb25uZWN0aW9uIFNlcnZpY2lvIHBhcmEgcmVhbGl6YXIgbGFzIHBldGljaW9uZXMgSFRUUCBhbCBiYWNrZW5kXG4gICAgICogQHBhcmFtIGh0dHAgU2VydmljaW8gdXRpbGl6YWRvIHBhcmEgb2J0ZW5lciBhcmNoaXZvcyBlc3RhdGljb3MgY29udGVuaWRvcyBkZW50cm8gZGUgbGEgYXBsaWNhY2nDs25cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzLFxuICAgICAgICBwcml2YXRlIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGh0dHA6SHR0cENsaWVudCxcbiAgICAgICAgcHJvdGVjdGVkIHBhcmFtc1NydjogUGFyYW1ldGVyc1NlcnZpY2UsXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5wYXJhbXNTcnYucGFyYW1ldGVycy5zdWJzY3JpYmUocGFyYW0gPT4gdGhpcy5wYXJhbXMgPSBwYXJhbSlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIENhcmdhIGxhIGRpcmVjY2lvbiBkZSBsYSBwYWdpbmEgYWN0dWFsIHF1ZSBzZXJhIHV0aWxpemFkYSBjb21vIGNsYXZlIHBhcmEgb2J0ZW5lclxuICAgICAgICAgICAgICogbGEgY2xhdmUgcG9yIGRlZmVjdG8gcXVlIHBlcnRlbmVjZSBhIGVzdGEgZGlyZWNjaW9uLCBpbmljaWFsaXphIGxhIGNvbmZpZ3VyYWNpb24gaW5pY2lhbC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhpcy51cmxCYXNlRm9ybWF0ID0gdGhpcy5mb3JtYXRVcmwobG9jYXRpb24uaHJlZilcbiAgICAgICAgICAgIHRoaXMucHJvZHVjdGlvbkVudmlyb25tZW50ID0gdGhpcy5pc1Byb2QoKVxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplcigpXG4gICAgfVxuICAgIC8qKlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IHBhdGggcXVlIGNvbnRpZW5lIGxhIGRpcmVjY2lvbiBkZWwgZW5kcG9pbnQgcmVmZXJpZG8gYWwgY2FwdGNoYVxuICAgICAqL1xuICAgIHByaXZhdGUgY2FwdGNoYUFwaSA9ICgpID0+ICdzaG9wLWFwaS9jaGFubmVscyc7XG4gICAgXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERldnVlbHZlIHRydWUgc2kgbGEgdXJsIGVzIGRlIHByb2R1Y2Npb24sIGZhbHNlIGVuIGNhc28gY29udHJhcmlvLiBcbiAgICAgKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAgICAgKi9cbiAgICBwcml2YXRlIGlzUHJvZCA9ICgpID0+ICF0aGlzLnVybEJhc2VGb3JtYXQuaW5jbHVkZXModGhpcy50ZXN0aW5nKVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFByaW9yaXphIHNpIGV4aXN0ZSB1biBwYXJhbWV0cm8gZGVzZGUgZWwgYmFja2VuZCBkZSBub21icmUgJ3JlY2FwdGNoYV9rZXlfY2FuYWwnLCBcbiAgICAgKiBkZSBubyBleGlzdGlyIGVzdGUgYnVzY2EgdW5vIGRlIHRpcG8gZ2VuZXJhbCBkZSBub21icmUgJ3JlY2FwdGNoYV9rZXknLFxuICAgICAqIHkgZW4gY2FzbyBkZSBxdWUgZXN0ZSBubyBleGlzdGEgc2UgcmVhbGl6YSBsbyBzaWd1aWVudGU6IFxuICAgICAqIGNhcmdhIGxhcyB2YXJpYWJsZXMgUkVDQVBUQ0hBX1NJVEVTIHkgUkVDQVBUQ0hBX1NJVEVfS0VZUywgY29uIGxvcyB2YWxvcmVzXG4gICAgICogZGUgbG9zIEpzb24gZXN0YXRpY29zLCBwYXJhIHBvc3Rlcmlvcm1lbnRlIG9idGVuZXIgbGEgXCJzaXRlS2V5XCIoY2xhdmUgZGVsIGNhcHRjaGEpIGVuIGNhc29cbiAgICAgKiBkZSBxdWUgbm8gdmVuZ2EgZGVzZGUgZWwgYmFja2VuZC4gXG4gICAgICovXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplciA9ICgpID0+IHtcbiAgICAgICAgbGV0IHBhcmFtVGhpc0NoYW5uZWwgPSB0aGlzLnBhcmFtcy5maW5kKHBhcmFtID0+IHBhcmFtLmNvZGUgPT0gJ3JlY2FwdGNoYV9rZXlfJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSlcbiAgICAgICAgaWYgKHBhcmFtVGhpc0NoYW5uZWwpIHtcbiAgICAgICAgICAgIHRoaXMuY2FwdGNoYVN1YmplY3QubmV4dCh7IHNpdGVLZXk6IHBhcmFtVGhpc0NoYW5uZWwudmFsdWUgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBwYXJhbUdlbmVyYWwgPSB0aGlzLnBhcmFtcy5maW5kKHBhcmFtID0+IHBhcmFtLmNvZGUgPT0gJ3JlY2FwdGNoYV9rZXknKVxuICAgICAgICAgICAgaWYgKHBhcmFtR2VuZXJhbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FwdGNoYVN1YmplY3QubmV4dCh7IHNpdGVLZXk6IHBhcmFtR2VuZXJhbC52YWx1ZSB9KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFJlY2FwdGNoYVNpdGVzKCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgLy9maWx0ZXIoIGUgPT4gZVt0aGlzLnVybEJhc2VGb3JtYXQrJ2VlJ10gKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB0aGlzLlJFQ0FQVENIQV9TSVRFUyA9IHJlcyksXG4gICAgICAgICAgICAgICAgICAgIGNvbmNhdE1hcChlID0+IHRoaXMuZ2V0UmVjYXB0Y2hhU2l0ZUtleXMoKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB0aGlzLlJFQ0FQVENIQV9TSVRFX0tFWVMgPSByZXMpKSkpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0+IHRoaXMuZ2V0U2l0ZUtleSgpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8qKlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPD59IERhdG9zIG9idGVuaWRvcyBkZWwgYXJjaGl2byBjb24gbGFzIGNsYXZlcyBjYXB0Y2hhXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRSZWNhcHRjaGFTaXRlS2V5cyA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KHRoaXMucmVjYXB0Y2hhU2l0ZUtleXNVcmwpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNlIG9idGllbmUgbG9zIGRhdG9zIHNlZ3VuIGVsIGVudG9ybm8gZW4gcXVlIHNlIGVqZWN1dGVcbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTw+fSBEYXRvcyBvYnRlbmlkb3MgZGVsIGFyY2hpdm8gY29uIGxhcyB1cmwgZGUgbG9zIHNpdGlvc1xuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0UmVjYXB0Y2hhU2l0ZXMgPSAoKSA9PiB0aGlzLnByb2R1Y3Rpb25FbnZpcm9ubWVudCA/IHRoaXMuaHR0cC5nZXQ8YW55W10+KHRoaXMucmVjYXB0Y2hhU2l0ZXNVcmxQcm9kKSA6IHRoaXMuaHR0cC5nZXQ8YW55W10+KHRoaXMucmVjYXB0Y2hhU2l0ZXNVcmwpXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gR2VuZXJhIHVuYSBwZXRpY2lvbiBwYXJhIHJlY2liaXIgbGEgY2xhdmUgZGVsIGNhcHRjaGEuIEVuIGNhc28gZGUgbm8gdGVuZXIgZXhpdG8sXG4gICAgICogdXRpbGl6YSBsb3MgYXJjaGl2b3MgZXN0YXRpY29zIHBhcmEgcmV0b3JuYXIgdW5hIGNsYXZlIHBvciBkZWZlY3RvLiBSZWxsZW5hIGVsIE9ic2VydmFibGUgY29uXG4gICAgICogbG9zIGRhdG9zIGdlbmVyYWRvcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFNpdGVLZXkgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5jYXB0Y2hhQXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICByZXMgPT4geyBjb25zb2xlLmxvZyhyZXMpOyB0aGlzLmNhcHRjaGFTdWJqZWN0Lm5leHQoeyBzaXRlS2V5OiByZXMuc2l0ZUtleSA/IHJlcy5zaXRlS2V5IDogdGhpcy5SRUNBUFRDSEFfU0lURV9LRVlTW3RoaXMuUkVDQVBUQ0hBX1NJVEVTW3RoaXMudXJsQmFzZUZvcm1hdF1dIH0pIH0sXG4gICAgICAgICAgICBlcnIgPT4geyBjb25zb2xlLmxvZygnRVJST1IgMScsIGVycik7IHRoaXMuY2FwdGNoYVN1YmplY3QubmV4dCh7IHNpdGVLZXk6IHRoaXMuUkVDQVBUQ0hBX1NJVEVTW3RoaXMuUkVDQVBUQ0hBX1NJVEVTW3RoaXMudXJsQmFzZUZvcm1hdF1dIH0pIH1cbiAgICAgICAgKS5jYXRjaChlcnIgPT4geyBjb25zb2xlLmxvZygnRVJST1IgMiAnLCBlcnIsICcgQmFzZSB1cmw6JywgdGhpcy5jb25zdHMuZ2V0VXJsQmFzZSgpKTsgdGhpcy5jYXB0Y2hhU3ViamVjdC5uZXh0KHsgc2l0ZUtleTogdGhpcy5SRUNBUFRDSEFfU0lURV9LRVlTW3RoaXMuUkVDQVBUQ0hBX1NJVEVTW3RoaXMudXJsQmFzZUZvcm1hdF1dIH0pIH0pXG4gICAgICAgIC8vY29uc29sZS5sb2codGhpcy5jYXB0Y2hhKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IENsYXZlIGRlbCBjYXB0Y2hhLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRLZXkgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcHRjaGEucGlwZShtYXAoKGVsZW0pID0+IGVsZW0/LnNpdGVLZXkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVjaWJlIHVuYSB1cmwgeSBzZSBlbmNhcmdhIGRlIHF1aXRhcmxlIFwiaHR0cFwiLCBcIi9cIiB5IGxhcyBkZW1hcyBydXRhcywgcGFyYSBkZXZvbHZlciBsYSB1cmxcbiAgICAgKiBkZWwgc2l0aW8gY29uIHVuYSBmb3JtYXRvIGxpbXBpby4gRWplbXBsbyBcImh0dHBzOi8vZWplbXBsby5jb20uYXIvcnV0YTEvcnV0YTIvXCIgYSBcImVqZW1wbG8uY29tLmFyXCIgXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHVybCB1cmwgcXVlIHNlcmEgZm9ybWF0ZWFkYSBcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSB1cmwgZm9ybWF0ZWFkYVxuICAgICAqL1xuICAgIHByaXZhdGUgZm9ybWF0VXJsID0gKHVybDpzdHJpbmcpID0+IHVybC5zcGxpdChcIi9cIikuZmlsdGVyKGUgPT4gZSAhPSBcIi9cIikuZmlsdGVyKGUgPT4gIWUuaW5jbHVkZXMoXCJodHRwXCIpKS5maWx0ZXIoZSA9PiBlLmxlbmd0aCkuc2xpY2UoMCwxKS5wb3AoKVxuXG59Il19
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdGNoYS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NhcHRjaGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQVUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7QUFFbkUsbUNBQW1DO0FBSW5DO0lBaUJJOzs7OztPQUtHO0lBQ0gsd0JBQW9CLE1BQWlCLEVBQ3pCLFVBQTZCLEVBQzdCLElBQWUsRUFDYixTQUE0QjtRQUgxQyxpQkFhQztRQWJtQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ3pCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLFNBQUksR0FBSixJQUFJLENBQVc7UUFDYixjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQXhCbEMsbUJBQWMsR0FBdUMsSUFBSSxlQUFlLENBQUMsRUFBQyxPQUFPLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQTtRQUN2RixZQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUszQyxZQUFPLEdBQVUsa0JBQWtCLENBQUE7UUFDbkMsMEJBQXFCLEdBQVcsS0FBSyxDQUFDO1FBRXRDLHlCQUFvQixHQUFHLDZDQUE2QyxDQUFDO1FBQ3JFLHNCQUFpQixHQUFHLHlDQUF5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QUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFuQixDQUFtQixDQUFDLENBQUMsTUFBTSxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLE1BQU0sRUFBUixDQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUE1RyxDQUE0RyxDQUFBO1FBekZ4SSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBbkIsQ0FBbUIsQ0FBQyxDQUFBO1FBQ2pFOzs7V0FHRztRQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbEQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUMxQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDMUIsQ0FBQzs7Z0JBYjJCLFNBQVM7Z0JBQ2IsaUJBQWlCO2dCQUN4QixVQUFVO2dCQUNGLGlCQUFpQjs7O0lBMUJqQyxjQUFjO1FBSDFCLFVBQVUsQ0FBQztZQUNSLFVBQVUsRUFBRSxNQUFNO1NBQ3JCLENBQUM7T0FDVyxjQUFjLENBdUgxQjt5QkFwSUQ7Q0FvSUMsQUF2SEQsSUF1SEM7U0F2SFksY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWNhcHRjaGFTZXR0aW5ncyB9IGZyb20gJ25nLXJlY2FwdGNoYS9yZWNhcHRjaGEvcmVjYXB0Y2hhLXNldHRpbmdzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIGZpbHRlciwgY29uY2F0TWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgUGFyYW1ldGVyc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wYXJhbWV0ZXJzLnNlcnZpY2UnO1xuXG4vL2ltcG9ydCAqIGZyb20gJy4uL2Fzc2V0cy9lYy1pMThuJ1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDYXB0Y2hhU2VydmljZSB7XG4gICAgXG4gICAgcHJpdmF0ZSBjYXB0Y2hhU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PFJlY2FwdGNoYVNldHRpbmdzPiA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe3NpdGVLZXk6Jyd9KVxuICAgIHB1YmxpYyBjYXB0Y2hhID0gdGhpcy5jYXB0Y2hhU3ViamVjdC5hc09ic2VydmFibGUoKVxuICAgIFxuICAgIHB1YmxpYyBwYXJhbXM6IGFueTtcblxuICAgIHByaXZhdGUgdXJsQmFzZUZvcm1hdDpzdHJpbmdcbiAgICBwcml2YXRlIHRlc3Rpbmc6c3RyaW5nID0gXCJlYXN5Y29tbWVyY2V0ZWNoXCJcbiAgICBwcml2YXRlIHByb2R1Y3Rpb25FbnZpcm9ubWVudDpCb29sZWFuID0gZmFsc2U7XG4gICAgXG4gICAgcHJpdmF0ZSByZWNhcHRjaGFTaXRlS2V5c1VybCA9ICcuL2Fzc2V0cy9yZWNhcHRjaGEvcmVjYXB0Y2hhLXNpdGUta2V5cy5qc29uJztcbiAgICBwcml2YXRlIHJlY2FwdGNoYVNpdGVzVXJsID0gJy4vYXNzZXRzL3JlY2FwdGNoYS9yZWNhcHRjaGEtc2l0ZXMuanNvbic7XG4gICAgcHJpdmF0ZSByZWNhcHRjaGFTaXRlc1VybFByb2QgPSAnLi9hc3NldHMvcmVjYXB0Y2hhL3JlY2FwdGNoYS1zaXRlcy1wcm9kLmpzb24nXG5cbiAgICBwcml2YXRlIFJFQ0FQVENIQV9TSVRFX0tFWVMgXG4gICAgcHJpdmF0ZSBSRUNBUFRDSEFfU0lURVMgXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENhcmdhIGxhcyBjb25maWd1cmFjaW9uZXMgaW5pY2lhbGVzXG4gICAgICogQHBhcmFtIGNvbnN0cyBDb25zdGFudGVzIGRlbCBjb3JlXG4gICAgICogQHBhcmFtIGNvbm5lY3Rpb24gU2VydmljaW8gcGFyYSByZWFsaXphciBsYXMgcGV0aWNpb25lcyBIVFRQIGFsIGJhY2tlbmRcbiAgICAgKiBAcGFyYW0gaHR0cCBTZXJ2aWNpbyB1dGlsaXphZG8gcGFyYSBvYnRlbmVyIGFyY2hpdm9zIGVzdGF0aWNvcyBjb250ZW5pZG9zIGRlbnRybyBkZSBsYSBhcGxpY2FjacOzblxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uc3RzOiBDb25zdGFudHMsXG4gICAgICAgIHByaXZhdGUgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgaHR0cDpIdHRwQ2xpZW50LFxuICAgICAgICBwcm90ZWN0ZWQgcGFyYW1zU3J2OiBQYXJhbWV0ZXJzU2VydmljZSxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmFtc1Nydi5wYXJhbWV0ZXJzLnN1YnNjcmliZShwYXJhbSA9PiB0aGlzLnBhcmFtcyA9IHBhcmFtKVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQ2FyZ2EgbGEgZGlyZWNjaW9uIGRlIGxhIHBhZ2luYSBhY3R1YWwgcXVlIHNlcmEgdXRpbGl6YWRhIGNvbW8gY2xhdmUgcGFyYSBvYnRlbmVyXG4gICAgICAgICAgICAgKiBsYSBjbGF2ZSBwb3IgZGVmZWN0byBxdWUgcGVydGVuZWNlIGEgZXN0YSBkaXJlY2Npb24sIGluaWNpYWxpemEgbGEgY29uZmlndXJhY2lvbiBpbmljaWFsLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLnVybEJhc2VGb3JtYXQgPSB0aGlzLmZvcm1hdFVybChsb2NhdGlvbi5ocmVmKVxuICAgICAgICAgICAgdGhpcy5wcm9kdWN0aW9uRW52aXJvbm1lbnQgPSB0aGlzLmlzUHJvZCgpXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVyKClcbiAgICB9XG4gICAgLyoqXG4gICAgICogXG4gICAgICogQHJldHVybnMge3N0cmluZ30gcGF0aCBxdWUgY29udGllbmUgbGEgZGlyZWNjaW9uIGRlbCBlbmRwb2ludCByZWZlcmlkbyBhbCBjYXB0Y2hhXG4gICAgICovXG4gICAgcHJpdmF0ZSBjYXB0Y2hhQXBpID0gKCkgPT4gJ3Nob3AtYXBpL2NoYW5uZWxzJztcbiAgICBcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGV2dWVsdmUgdHJ1ZSBzaSBsYSB1cmwgZXMgZGUgcHJvZHVjY2lvbiwgZmFsc2UgZW4gY2FzbyBjb250cmFyaW8uIFxuICAgICAqIEByZXR1cm5zIHtCb29sZWFufVxuICAgICAqL1xuICAgIHByaXZhdGUgaXNQcm9kID0gKCkgPT4gIXRoaXMudXJsQmFzZUZvcm1hdC5pbmNsdWRlcyh0aGlzLnRlc3RpbmcpXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUHJpb3JpemEgc2kgZXhpc3RlIHVuIHBhcmFtZXRybyBkZXNkZSBlbCBiYWNrZW5kIGRlIG5vbWJyZSAncmVjYXB0Y2hhX2tleV9jYW5hbCcsIFxuICAgICAqIGRlIG5vIGV4aXN0aXIgZXN0ZSBidXNjYSB1bm8gZGUgdGlwbyBnZW5lcmFsIGRlIG5vbWJyZSAncmVjYXB0Y2hhX2tleScsXG4gICAgICogeSBlbiBjYXNvIGRlIHF1ZSBlc3RlIG5vIGV4aXN0YSBzZSByZWFsaXphIGxvIHNpZ3VpZW50ZTogXG4gICAgICogY2FyZ2EgbGFzIHZhcmlhYmxlcyBSRUNBUFRDSEFfU0lURVMgeSBSRUNBUFRDSEFfU0lURV9LRVlTLCBjb24gbG9zIHZhbG9yZXNcbiAgICAgKiBkZSBsb3MgSnNvbiBlc3RhdGljb3MsIHBhcmEgcG9zdGVyaW9ybWVudGUgb2J0ZW5lciBsYSBcInNpdGVLZXlcIihjbGF2ZSBkZWwgY2FwdGNoYSkgZW4gY2Fzb1xuICAgICAqIGRlIHF1ZSBubyB2ZW5nYSBkZXNkZSBlbCBiYWNrZW5kLiBcbiAgICAgKi9cbiAgICBwcml2YXRlIGluaXRpYWxpemVyID0gKCkgPT4ge1xuICAgICAgICBsZXQgcGFyYW1UaGlzQ2hhbm5lbCA9IHRoaXMucGFyYW1zLmZpbmQocGFyYW0gPT4gcGFyYW0uY29kZSA9PSAncmVjYXB0Y2hhX2tleV8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpKVxuICAgICAgICBpZiAocGFyYW1UaGlzQ2hhbm5lbCkge1xuICAgICAgICAgICAgdGhpcy5jYXB0Y2hhU3ViamVjdC5uZXh0KHsgc2l0ZUtleTogcGFyYW1UaGlzQ2hhbm5lbC52YWx1ZSB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHBhcmFtR2VuZXJhbCA9IHRoaXMucGFyYW1zLmZpbmQocGFyYW0gPT4gcGFyYW0uY29kZSA9PSAncmVjYXB0Y2hhX2tleScpXG4gICAgICAgICAgICBpZiAocGFyYW1HZW5lcmFsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXB0Y2hhU3ViamVjdC5uZXh0KHsgc2l0ZUtleTogcGFyYW1HZW5lcmFsLnZhbHVlIH0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0UmVjYXB0Y2hhU2l0ZXMoKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAvL2ZpbHRlciggZSA9PiBlW3RoaXMudXJsQmFzZUZvcm1hdCsnZWUnXSApLFxuICAgICAgICAgICAgICAgICAgICBtYXAocmVzID0+IHRoaXMuUkVDQVBUQ0hBX1NJVEVTID0gcmVzKSxcbiAgICAgICAgICAgICAgICAgICAgY29uY2F0TWFwKGUgPT4gdGhpcy5nZXRSZWNhcHRjaGFTaXRlS2V5cygpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAocmVzID0+IHRoaXMuUkVDQVBUQ0hBX1NJVEVfS0VZUyA9IHJlcykpKSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPT4gdGhpcy5nZXRTaXRlS2V5KCkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLyoqXG4gICAgICogXG4gICAgICogQHJldHVybnMge09ic2VydmFibGU8Pn0gRGF0b3Mgb2J0ZW5pZG9zIGRlbCBhcmNoaXZvIGNvbiBsYXMgY2xhdmVzIGNhcHRjaGFcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFJlY2FwdGNoYVNpdGVLZXlzID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4odGhpcy5yZWNhcHRjaGFTaXRlS2V5c1VybClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2Ugb2J0aWVuZSBsb3MgZGF0b3Mgc2VndW4gZWwgZW50b3JubyBlbiBxdWUgc2UgZWplY3V0ZVxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPD59IERhdG9zIG9idGVuaWRvcyBkZWwgYXJjaGl2byBjb24gbGFzIHVybCBkZSBsb3Mgc2l0aW9zXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRSZWNhcHRjaGFTaXRlcyA9ICgpID0+IHRoaXMucHJvZHVjdGlvbkVudmlyb25tZW50ID8gdGhpcy5odHRwLmdldDxhbnlbXT4odGhpcy5yZWNhcHRjaGFTaXRlc1VybFByb2QpIDogdGhpcy5odHRwLmdldDxhbnlbXT4odGhpcy5yZWNhcHRjaGFTaXRlc1VybClcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lcmEgdW5hIHBldGljaW9uIHBhcmEgcmVjaWJpciBsYSBjbGF2ZSBkZWwgY2FwdGNoYS4gRW4gY2FzbyBkZSBubyB0ZW5lciBleGl0byxcbiAgICAgKiB1dGlsaXphIGxvcyBhcmNoaXZvcyBlc3RhdGljb3MgcGFyYSByZXRvcm5hciB1bmEgY2xhdmUgcG9yIGRlZmVjdG8uIFJlbGxlbmEgZWwgT2JzZXJ2YWJsZSBjb25cbiAgICAgKiBsb3MgZGF0b3MgZ2VuZXJhZG9zLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0U2l0ZUtleSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmNhcHRjaGFBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIHJlcyA9PiB7IGNvbnNvbGUubG9nKHJlcyk7IHRoaXMuY2FwdGNoYVN1YmplY3QubmV4dCh7IHNpdGVLZXk6IHJlcy5zaXRlS2V5ID8gcmVzLnNpdGVLZXkgOiB0aGlzLlJFQ0FQVENIQV9TSVRFX0tFWVNbdGhpcy5SRUNBUFRDSEFfU0lURVNbdGhpcy51cmxCYXNlRm9ybWF0XV0gfSkgfSxcbiAgICAgICAgICAgIGVyciA9PiB7IGNvbnNvbGUubG9nKCdFUlJPUiAxJywgZXJyKTsgdGhpcy5jYXB0Y2hhU3ViamVjdC5uZXh0KHsgc2l0ZUtleTogdGhpcy5SRUNBUFRDSEFfU0lURVNbdGhpcy5SRUNBUFRDSEFfU0lURVNbdGhpcy51cmxCYXNlRm9ybWF0XV0gfSkgfVxuICAgICAgICApLmNhdGNoKGVyciA9PiB7IGNvbnNvbGUubG9nKCdFUlJPUiAyICcsIGVyciwgJyBCYXNlIHVybDonLCB0aGlzLmNvbnN0cy5nZXRVcmxCYXNlKCkpOyB0aGlzLmNhcHRjaGFTdWJqZWN0Lm5leHQoeyBzaXRlS2V5OiB0aGlzLlJFQ0FQVENIQV9TSVRFX0tFWVNbdGhpcy5SRUNBUFRDSEFfU0lURVNbdGhpcy51cmxCYXNlRm9ybWF0XV0gfSkgfSlcbiAgICAgICAgLy9jb25zb2xlLmxvZyh0aGlzLmNhcHRjaGEpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogXG4gICAgICogQHJldHVybnMge3N0cmluZ30gQ2xhdmUgZGVsIGNhcHRjaGEuXG4gICAgICovXG4gICAgcHVibGljIGdldEtleSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FwdGNoYS5waXBlKG1hcCgoZWxlbSkgPT4gZWxlbT8uc2l0ZUtleSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWNpYmUgdW5hIHVybCB5IHNlIGVuY2FyZ2EgZGUgcXVpdGFybGUgXCJodHRwXCIsIFwiL1wiIHkgbGFzIGRlbWFzIHJ1dGFzLCBwYXJhIGRldm9sdmVyIGxhIHVybFxuICAgICAqIGRlbCBzaXRpbyBjb24gdW5hIGZvcm1hdG8gbGltcGlvLiBFamVtcGxvIFwiaHR0cHM6Ly9lamVtcGxvLmNvbS5hci9ydXRhMS9ydXRhMi9cIiBhIFwiZWplbXBsby5jb20uYXJcIiBcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIHVybCBxdWUgc2VyYSBmb3JtYXRlYWRhIFxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IHVybCBmb3JtYXRlYWRhXG4gICAgICovXG4gICAgcHJpdmF0ZSBmb3JtYXRVcmwgPSAodXJsOnN0cmluZykgPT4gdXJsLnNwbGl0KFwiL1wiKS5maWx0ZXIoZSA9PiBlICE9IFwiL1wiKS5maWx0ZXIoZSA9PiAhZS5pbmNsdWRlcyhcImh0dHBcIikpLmZpbHRlcihlID0+IGUubGVuZ3RoKS5zbGljZSgwLDEpLnBvcCgpXG5cbn0iXX0=