ng-easycommerce-v18 0.3.19-beta.2 → 0.3.20-beta.2

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 (212) hide show
  1. package/README.md +110 -109
  2. package/assets/decidirFormEc.html +514 -514
  3. package/assets/ec-i18n/ct.json +282 -282
  4. package/assets/ec-i18n/en.json +0 -1
  5. package/assets/ec-i18n/es.json +433 -434
  6. package/assets/ec-i18n/fr.json +0 -0
  7. package/assets/ec-i18n/gl.json +282 -282
  8. package/assets/ec-i18n/pr.json +282 -282
  9. package/assets/images/cards-occasional.svg +21 -21
  10. package/assets/recaptcha/recaptcha-site-keys.json +3 -3
  11. package/assets/recaptcha/recaptcha-sites-prod.json +38 -38
  12. package/assets/recaptcha/recaptcha-sites.json +52 -52
  13. package/esm2022/lib/api/connection.service.mjs +1 -1
  14. package/esm2022/lib/classes/checkout/steps.mjs +1 -1
  15. package/esm2022/lib/classes/component-helper.mjs +1 -1
  16. package/esm2022/lib/classes/filters/attributes-filter.mjs +74 -4
  17. package/esm2022/lib/classes/filters/category-filter.mjs +105 -26
  18. package/esm2022/lib/classes/filters/dynamics-filter.mjs +1 -1
  19. package/esm2022/lib/classes/filters/filter-factory.mjs +7 -3
  20. package/esm2022/lib/classes/filters/filter.mjs +1 -1
  21. package/esm2022/lib/classes/filters/index.mjs +1 -1
  22. package/esm2022/lib/classes/filters/price_range-filter.mjs +3 -3
  23. package/esm2022/lib/classes/filters/sort-filter.mjs +1 -1
  24. package/esm2022/lib/classes/index.mjs +1 -1
  25. package/esm2022/lib/classes/user.mjs +1 -1
  26. package/esm2022/lib/constants/api.constants.service.mjs +15 -19
  27. package/esm2022/lib/constants/core.constants.service.mjs +16 -5
  28. package/esm2022/lib/constants/index.mjs +1 -1
  29. package/esm2022/lib/ec-components/abstractions-components/block-ec.component.mjs +1 -1
  30. package/esm2022/lib/ec-components/abstractions-components/index.mjs +1 -1
  31. package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +1 -17
  32. package/esm2022/lib/ec-components/account-ec/account-ec.component.mjs +3 -3
  33. package/esm2022/lib/ec-components/account-ec/index.mjs +1 -1
  34. package/esm2022/lib/ec-components/account-ec/order-ec/order-ec.component.mjs +3 -3
  35. package/esm2022/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.mjs +3 -3
  36. package/esm2022/lib/ec-components/auth-ec/auth-ec.component.mjs +3 -3
  37. package/esm2022/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.mjs +3 -3
  38. package/esm2022/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.mjs +3 -3
  39. package/esm2022/lib/ec-components/auth-ec/index.mjs +1 -1
  40. package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +18 -28
  41. package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +23 -27
  42. package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +3 -3
  43. package/esm2022/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.mjs +3 -3
  44. package/esm2022/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.mjs +3 -3
  45. package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs +3 -3
  46. package/esm2022/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.mjs +3 -3
  47. package/esm2022/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.mjs +3 -3
  48. package/esm2022/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.mjs +3 -3
  49. package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +18 -9
  50. package/esm2022/lib/ec-components/blocks-ec/blocks-ec.component.mjs +3 -3
  51. package/esm2022/lib/ec-components/blocks-ec/index.mjs +1 -1
  52. package/esm2022/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.mjs +3 -3
  53. package/esm2022/lib/ec-components/cart-ec/cart-ec.component.mjs +3 -3
  54. package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +11 -39
  55. package/esm2022/lib/ec-components/cart-ec/index.mjs +1 -1
  56. package/esm2022/lib/ec-components/checkout-ec/checkout-ec.component.mjs +3 -3
  57. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.mjs +3 -3
  58. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.mjs +3 -3
  59. package/esm2022/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.mjs +3 -3
  60. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.mjs +3 -3
  61. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.mjs +3 -3
  62. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/index.mjs +1 -1
  63. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +3 -3
  64. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.mjs +3 -3
  65. package/esm2022/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.mjs +3 -3
  66. package/esm2022/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.mjs +3 -3
  67. package/esm2022/lib/ec-components/checkout-ec/success-ec/success-ec.component.mjs +3 -3
  68. package/esm2022/lib/ec-components/collection-ec/collection-ec.component.mjs +43 -19
  69. package/esm2022/lib/ec-components/contact-ec/contact-ec.component.mjs +1 -1
  70. package/esm2022/lib/ec-components/coupon-ec/coupon-ec.component.mjs +3 -3
  71. package/esm2022/lib/ec-components/faqs-ec/faqs-ec.component.mjs +3 -3
  72. package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +45 -41
  73. package/esm2022/lib/ec-components/filters-sort-ec/filters-sort-ec.component.mjs +3 -3
  74. package/esm2022/lib/ec-components/footer-ec/footer-ec.component.mjs +3 -3
  75. package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +37 -45
  76. package/esm2022/lib/ec-components/home-ec/home-ec.component.mjs +3 -3
  77. package/esm2022/lib/ec-components/index.mjs +1 -1
  78. package/esm2022/lib/ec-components/price-range-filter/price-range-filter.component.mjs +15 -4
  79. package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +7 -12
  80. package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +8 -56
  81. package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +3 -3
  82. package/esm2022/lib/ec-components/reviews-ec/reviews-ec.component.mjs +3 -3
  83. package/esm2022/lib/ec-components/reviews-form-ec/reviews-form-ec.component.mjs +3 -3
  84. package/esm2022/lib/ec-components/section-container-ec/section-container-ec.component.mjs +3 -3
  85. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/index.mjs +1 -1
  86. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-email-ec/share-email-ec.component.mjs +3 -3
  87. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-facebook-ec/share-facebook-ec.component.mjs +3 -3
  88. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-pinterest-ec/share-pinterest-ec.component.mjs +3 -3
  89. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-twitter-ec/share-twitter-ec.component.mjs +3 -3
  90. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-whatsapp-ec/share-whatsapp-ec.component.mjs +3 -3
  91. package/esm2022/lib/ec-components/share-ec/share-ec.component.mjs +3 -3
  92. package/esm2022/lib/ec-components/sidebar-ec/sidebar-ec.component.mjs +3 -3
  93. package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +11 -20
  94. package/esm2022/lib/ec-components/variants-ec/variants-ec.component.mjs +3 -3
  95. package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +8 -14
  96. package/esm2022/lib/ec-components/widgets-ec/index.mjs +1 -1
  97. package/esm2022/lib/ec-components/widgets-ec/loading/index.mjs +1 -1
  98. package/esm2022/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.mjs +3 -3
  99. package/esm2022/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.mjs +3 -3
  100. package/esm2022/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.mjs +3 -3
  101. package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +6 -8
  102. package/esm2022/lib/ec-components/widgets-ec/price-ec/price-ec.component.mjs +3 -3
  103. package/esm2022/lib/ec-components/widgets-ec/rating-ec/rating-ec.component.mjs +3 -3
  104. package/esm2022/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.mjs +3 -3
  105. package/esm2022/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.mjs +3 -3
  106. package/esm2022/lib/ec-directive/index.mjs +1 -1
  107. package/esm2022/lib/ec-directive/product-off.directive.mjs +1 -1
  108. package/esm2022/lib/ec-directive/product-stock.directive.mjs +1 -1
  109. package/esm2022/lib/ec-guards/auth.guard.mjs +1 -1
  110. package/esm2022/lib/ec-pipe/ec-currency-symbol.pipe.mjs +1 -1
  111. package/esm2022/lib/ec-pipe/ec-safe-html.pipe.mjs +1 -1
  112. package/esm2022/lib/ec-pipe/index.mjs +1 -1
  113. package/esm2022/lib/ec-services/addressing.service.mjs +1 -1
  114. package/esm2022/lib/ec-services/analytics/analytics.service.mjs +1 -1
  115. package/esm2022/lib/ec-services/analytics/doppler.service.mjs +1 -1
  116. package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +1 -1
  117. package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +4 -4
  118. package/esm2022/lib/ec-services/analytics/gtm.service.mjs +6 -10
  119. package/esm2022/lib/ec-services/analytics/index.mjs +1 -1
  120. package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +18 -17
  121. package/esm2022/lib/ec-services/auth.service.mjs +1 -1
  122. package/esm2022/lib/ec-services/auth.storage.service.mjs +1 -1
  123. package/esm2022/lib/ec-services/blocks-repository.service.mjs +1 -1
  124. package/esm2022/lib/ec-services/blocks.service.mjs +1 -1
  125. package/esm2022/lib/ec-services/cart.service.mjs +4 -22
  126. package/esm2022/lib/ec-services/channel.service.mjs +1 -1
  127. package/esm2022/lib/ec-services/checkout.service.mjs +2 -4
  128. package/esm2022/lib/ec-services/currency.service.mjs +1 -1
  129. package/esm2022/lib/ec-services/filters.service.mjs +124 -18
  130. package/esm2022/lib/ec-services/form.service.mjs +1 -1
  131. package/esm2022/lib/ec-services/index.mjs +1 -3
  132. package/esm2022/lib/ec-services/local-storage.service.mjs +1 -1
  133. package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +1 -1
  134. package/esm2022/lib/ec-services/options.service.mjs +1 -1
  135. package/esm2022/lib/ec-services/order-utility.service.mjs +1 -1
  136. package/esm2022/lib/ec-services/orders.service.mjs +1 -1
  137. package/esm2022/lib/ec-services/pagination.service.mjs +70 -22
  138. package/esm2022/lib/ec-services/parameters.service.mjs +1 -1
  139. package/esm2022/lib/ec-services/payment.service.mjs +1 -1
  140. package/esm2022/lib/ec-services/product-detail.service.mjs +1 -11
  141. package/esm2022/lib/ec-services/products.service.mjs +5 -3
  142. package/esm2022/lib/ec-services/re-captcha.service.mjs +1 -1
  143. package/esm2022/lib/ec-services/reviews.service.mjs +1 -1
  144. package/esm2022/lib/ec-services/shipment.service.mjs +1 -1
  145. package/esm2022/lib/ec-services/stores.service.mjs +1 -1
  146. package/esm2022/lib/ec-services/test.service.mjs +1 -1
  147. package/esm2022/lib/ec-services/toast.service.mjs +1 -1
  148. package/esm2022/lib/interceptors/auth.interceptor.mjs +1 -1
  149. package/esm2022/lib/interceptors/index.mjs +1 -2
  150. package/esm2022/lib/interfaces/analytics/event-key.mjs +1 -1
  151. package/esm2022/lib/interfaces/analytics/facebook-pixel-data.mjs +1 -1
  152. package/esm2022/lib/interfaces/analytics/gtm-config.mjs +1 -1
  153. package/esm2022/lib/interfaces/analytics/index.mjs +1 -1
  154. package/esm2022/lib/interfaces/blocks.mjs +1 -1
  155. package/esm2022/lib/interfaces/checkout.mjs +1 -1
  156. package/esm2022/lib/interfaces/connection.mjs +1 -1
  157. package/esm2022/lib/interfaces/coupon.mjs +1 -1
  158. package/esm2022/lib/interfaces/currency.mjs +1 -1
  159. package/esm2022/lib/interfaces/deserializable.mjs +1 -1
  160. package/esm2022/lib/interfaces/environment.mjs +1 -1
  161. package/esm2022/lib/interfaces/faqs.mjs +1 -1
  162. package/esm2022/lib/interfaces/filter.mjs +1 -1
  163. package/esm2022/lib/interfaces/index.mjs +1 -2
  164. package/esm2022/lib/interfaces/options.mjs +1 -1
  165. package/esm2022/lib/interfaces/pagination.mjs +1 -1
  166. package/esm2022/lib/interfaces/parameter.mjs +1 -1
  167. package/esm2022/lib/interfaces/product.mjs +1 -1
  168. package/esm2022/lib/interfaces/step.mjs +1 -1
  169. package/esm2022/lib/interfaces/storage.mjs +1 -1
  170. package/esm2022/lib/interfaces/store.mjs +1 -1
  171. package/esm2022/lib/interfaces/types/user.type.mjs +1 -1
  172. package/esm2022/lib/providers/index.mjs +1 -2
  173. package/esm2022/lib/providers/provideEnvironment.mjs +1 -1
  174. package/esm2022/lib/stores/currency.store.mjs +1 -1
  175. package/esm2022/public-api.mjs +1 -1
  176. package/fesm2022/ng-easycommerce-v18.mjs +797 -1008
  177. package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
  178. package/lib/classes/filters/attributes-filter.d.ts +24 -0
  179. package/lib/classes/filters/category-filter.d.ts +30 -3
  180. package/lib/constants/api.constants.service.d.ts +0 -1
  181. package/lib/constants/core.constants.service.d.ts +7 -0
  182. package/lib/ec-components/abstractions-components/menu-ec.component.d.ts +0 -12
  183. package/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.d.ts +0 -2
  184. package/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.d.ts +1 -1
  185. package/lib/ec-components/collection-ec/collection-ec.component.d.ts +5 -4
  186. package/lib/ec-components/filters-ec/filters-ec.component.d.ts +17 -12
  187. package/lib/ec-components/price-range-filter/price-range-filter.component.d.ts +2 -0
  188. package/lib/ec-components/product-ec/product-ec.component.d.ts +0 -4
  189. package/lib/ec-services/analytics/gtm.service.d.ts +1 -1
  190. package/lib/ec-services/cart.service.d.ts +1 -1
  191. package/lib/ec-services/filters.service.d.ts +18 -1
  192. package/lib/ec-services/index.d.ts +0 -2
  193. package/lib/ec-services/pagination.service.d.ts +21 -5
  194. package/lib/ec-services/products.service.d.ts +1 -1
  195. package/lib/interceptors/index.d.ts +0 -1
  196. package/lib/interfaces/environment.d.ts +0 -1
  197. package/lib/interfaces/filter.d.ts +0 -1
  198. package/lib/interfaces/index.d.ts +0 -1
  199. package/lib/interfaces/options.d.ts +0 -2
  200. package/lib/interfaces/product.d.ts +0 -6
  201. package/lib/providers/index.d.ts +0 -1
  202. package/package.json +1 -1
  203. package/esm2022/lib/ec-services/base-api.service.mjs +0 -148
  204. package/esm2022/lib/ec-services/runtime-config.service.mjs +0 -190
  205. package/esm2022/lib/interceptors/runtime-config.interceptor.mjs +0 -41
  206. package/esm2022/lib/interfaces/runtime-config.mjs +0 -2
  207. package/esm2022/lib/providers/provideRuntimeConfig.mjs +0 -42
  208. package/lib/ec-services/base-api.service.d.ts +0 -64
  209. package/lib/ec-services/runtime-config.service.d.ts +0 -63
  210. package/lib/interceptors/runtime-config.interceptor.d.ts +0 -7
  211. package/lib/interfaces/runtime-config.d.ts +0 -22
  212. package/lib/providers/provideRuntimeConfig.d.ts +0 -13
@@ -2,6 +2,7 @@ import { EnvironmentInjector, inject, Injectable, runInInjectionContext } from '
2
2
  import { BehaviorSubject } from 'rxjs';
3
3
  import { FilterFactory } from '../classes';
4
4
  import { ApiConstantsService, CoreConstantsService } from '../constants';
5
+ import { PriceRangeFilter } from '../classes/filters/price_range-filter';
5
6
  import * as i0 from "@angular/core";
6
7
  export class FiltersService {
7
8
  _apiConsts = inject(ApiConstantsService);
@@ -21,6 +22,7 @@ export class FiltersService {
21
22
  limit: 0
22
23
  };
23
24
  _filtersInitialized = false;
25
+ _lastRouteQuery = null;
24
26
  constructor() {
25
27
  //this._defaultFilters = this._consts.getDefaultFilters()
26
28
  }
@@ -41,10 +43,20 @@ export class FiltersService {
41
43
  let extra_params = '';
42
44
  this._filtersSubject.value.forEach(filter => {
43
45
  const extra = filter.toUrlParams();
44
- extra.split('=')[1] != '' ? extra_params += extra : null;
46
+ if (extra && extra.split('=')[1] !== '') {
47
+ extra_params += extra;
48
+ }
45
49
  });
46
- if (search_value)
47
- extra_params += ('&criteria[search][type]=contains&criteria[search][value]=' + search_value);
50
+ // Si en la URL ya venía `attributeCodes` pero aún ningún filtro lo agregó,
51
+ // lo volvemos a sumar a mano. Esto evita que al refrescar (SSR) se pierda el filtro
52
+ // aunque el AttributesFilter todavía no haya terminado de hidratarse.
53
+ const attributeCodesFromRoute = this._lastRouteQuery?.['attributeCodes'];
54
+ if (attributeCodesFromRoute && !extra_params.includes('attributeCodes=')) {
55
+ extra_params += `&attributeCodes=${attributeCodesFromRoute}`;
56
+ }
57
+ if (search_value) {
58
+ extra_params += '&criteria[search][type]=contains&criteria[search][value]=' + search_value;
59
+ }
48
60
  return this.productsFilterApi(extra_params);
49
61
  }
50
62
  isUpdated(paginationSettings) {
@@ -60,7 +72,7 @@ export class FiltersService {
60
72
  this._paginationSettings = paginationSettings;
61
73
  return change;
62
74
  }
63
- setFilters(paginationSettings, search_value) {
75
+ setFilters(paginationSettings, search_value, routeQueryParams) {
64
76
  this._paginationSettings = paginationSettings;
65
77
  let final_filters = [];
66
78
  let filtersToProcess = this._optionsFilters?.includes('all')
@@ -73,15 +85,30 @@ export class FiltersService {
73
85
  if (filter) {
74
86
  final_filters.push(filter);
75
87
  }
76
- else {
77
- // console.warn(`❌ Failed to create filter for type: ${filterType}`);
78
- }
79
88
  });
80
89
  });
81
90
  this._defaultFilters?.forEach(filterDefault => {
82
91
  let filter = final_filters.find(filter => filter.type() == filterDefault.filter_type);
83
92
  filter && filterDefault.codes.forEach(value => filter.setSelected(value));
84
93
  });
94
+ // hidratar price_range desde la URL
95
+ if (routeQueryParams) {
96
+ const pr = final_filters.find(f => f.type() === 'price_range');
97
+ if (pr) {
98
+ const rawMin = routeQueryParams['price_min'];
99
+ const rawMax = routeQueryParams['price_max'];
100
+ const min = rawMin != null ? Number(rawMin) : null;
101
+ const max = rawMax != null ? Number(rawMax) : null;
102
+ if ((min != null && !Number.isNaN(min)) || (max != null && !Number.isNaN(max))) {
103
+ if (min != null && !Number.isNaN(min)) {
104
+ pr.currentMinPrice = min;
105
+ }
106
+ if (max != null && !Number.isNaN(max)) {
107
+ pr.currentMaxPrice = max;
108
+ }
109
+ }
110
+ }
111
+ }
85
112
  this._filtersSubject.next(final_filters);
86
113
  }
87
114
  getFilters(paginationSettings) {
@@ -96,9 +123,7 @@ export class FiltersService {
96
123
  runInInjectionContext(this.environmentInjector, () => {
97
124
  const filterFactory = new FilterFactory();
98
125
  filtersToProcess?.forEach(filterType => {
99
- // console.log('Creating filter for type:', filterType);
100
126
  const filter = filterFactory.create(filterType, settings);
101
- // console.log('Created filter:', filter);
102
127
  if (filter) {
103
128
  final_filters.push(filter);
104
129
  }
@@ -123,7 +148,6 @@ export class FiltersService {
123
148
  if (filterObj.type() !== 'price_range') {
124
149
  let index = final_filters.findIndex(filter => filter.type() == filterObj.type());
125
150
  final_filters[index].setSelected(filterElem, filterElem.value || filterElem.code);
126
- console.log(index, final_filters);
127
151
  }
128
152
  this._filtersSubject.next(final_filters);
129
153
  // }
@@ -133,13 +157,6 @@ export class FiltersService {
133
157
  runInInjectionContext(this.environmentInjector, () => {
134
158
  const filterFactory = new FilterFactory();
135
159
  const filter = [];
136
- /* claves.forEach((key:any) => {
137
- filter.push(filterFactory.create(key))
138
- paginationFilters[key].forEach((value:any) => {
139
- console.log(filter[0].createElement(value,paginationFilters[key]));
140
- })
141
-
142
- }) */
143
160
  this._filtersSubject.value.forEach((value) => {
144
161
  if (value.type() == "attributes") {
145
162
  //value.data = [];
@@ -159,6 +176,95 @@ export class FiltersService {
159
176
  pr.setSelected(min, max);
160
177
  this._filtersSubject.next([...filters]);
161
178
  }
179
+ /**
180
+ * Fuerza a emitir de nuevo los filtros actuales.
181
+ * Útil cuando un filtro async (categorías, atributos) termina de cargarse
182
+ * y necesitamos que PaginationService vuelva a armar la URL.
183
+ */
184
+ refreshFilters() {
185
+ const current = this._filtersSubject.value;
186
+ // Emitimos una copia para que los subscribers detecten el cambio
187
+ this._filtersSubject.next([...current]);
188
+ }
189
+ /**
190
+ * Punto central donde se hidratan los filtros a partir de la URL:
191
+ * - Lee type/value de la ruta (ej. /collection/categories/:value).
192
+ * - Lee query params (category, price_min, price_max, attributeCodes, search, etc.).
193
+ * - Crea instancias de filtros y les delega la hidratación específica.
194
+ *
195
+ * Este método se llama tanto en SSR como en navegador.
196
+ */
197
+ hydrateFromRoute(paginationSettings, routeParams, routeQuery) {
198
+ // hidratar search desde la URL ===
199
+ const searchFromUrl = routeQuery?.['search'];
200
+ if (typeof searchFromUrl === 'string' && searchFromUrl.trim() !== '') {
201
+ // Guardamos el valor para que otros componentes (Header, Collection) lo reutilicen
202
+ this._consts.searchValue = searchFromUrl.trim();
203
+ }
204
+ else {
205
+ // Si no viene `search` en la URL, limpiamos el estado global para no arrastrar búsquedas viejas
206
+ this._consts.searchValue = '';
207
+ }
208
+ // Guardamos la última query completa para usarla en generateFinalApi (parche attributeCodes)
209
+ this._lastRouteQuery = routeQuery;
210
+ // Guardamos las settings actuales (type, value, limit, etc.)
211
+ this._paginationSettings = paginationSettings;
212
+ // Creamos los filtros base (attributes, categories, dynamics, sort, price_range, etc.)
213
+ let final_filters = [];
214
+ let filtersToProcess = this._optionsFilters?.includes('all')
215
+ ? ['attributes', 'categories', 'dynamics', 'sort', 'price_range']
216
+ : this._optionsFilters;
217
+ runInInjectionContext(this.environmentInjector, () => {
218
+ const filterFactory = new FilterFactory();
219
+ filtersToProcess?.forEach(filterType => {
220
+ const filter = filterFactory.create(filterType, paginationSettings);
221
+ if (filter) {
222
+ final_filters.push(filter);
223
+ }
224
+ });
225
+ });
226
+ // Aplicamos defaultFilters si corresponde
227
+ this._defaultFilters?.forEach(filterDefault => {
228
+ const filter = final_filters.find(f => f.type() === filterDefault.filter_type);
229
+ filter && filterDefault.codes.forEach(value => filter.setSelected(value));
230
+ });
231
+ // Hidratar filtros con slug y query params genéricos
232
+ final_filters.forEach(f => {
233
+ const anyFilter = f;
234
+ // type/value en la URL: /collection/categories/:value
235
+ const urlType = routeParams['type'];
236
+ const urlValue = routeParams['value'];
237
+ // Por ejemplo, el CategoryFilter implementa setFromSlug para marcar la categoría correcta
238
+ if (urlType === 'categories' && urlValue && typeof anyFilter.setFromSlug === 'function') {
239
+ anyFilter.setFromSlug(urlValue);
240
+ }
241
+ // query params genéricos: ?category=0101&price_min=...&price_max=...&attributeCodes=...
242
+ // Cada filtro que lo soporte implementa hydrateFromQuery y decide qué leer.
243
+ if (typeof anyFilter.hydrateFromQuery === 'function') {
244
+ anyFilter.hydrateFromQuery(routeQuery);
245
+ }
246
+ });
247
+ // Hidratar específicamente el PriceRangeFilter desde la URL
248
+ const priceFilter = final_filters.find((f) => f instanceof PriceRangeFilter);
249
+ if (priceFilter && routeQuery) {
250
+ const minFromUrl = routeQuery['price_min'];
251
+ const maxFromUrl = routeQuery['price_max'];
252
+ if (minFromUrl != null || maxFromUrl != null) {
253
+ const min = minFromUrl != null ? Number(minFromUrl) : priceFilter.minPrice;
254
+ const max = maxFromUrl != null ? Number(maxFromUrl) : priceFilter.maxPrice;
255
+ // usamos la API del filtro para setear el rango
256
+ priceFilter.setSelected(min, max);
257
+ }
258
+ else {
259
+ // si no hay nada en la URL, lo reseteamos
260
+ priceFilter.reset();
261
+ }
262
+ }
263
+ // Emitimos filtros ya hidratados para que PaginationService y Collection reaccionen
264
+ this._filtersSubject.next(final_filters);
265
+ // Marcamos que el sistema de filtros está listo (útil para mostrar spinners, etc.)
266
+ this._readySubject.next(true);
267
+ }
162
268
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FiltersService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
163
269
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FiltersService, providedIn: 'root' });
164
270
  }
@@ -168,4 +274,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
168
274
  providedIn: 'root'
169
275
  }]
170
276
  }], ctorParameters: () => [] });
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2ZpbHRlcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBVSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQU16RSxNQUFNLE9BQU8sY0FBYztJQUNmLFVBQVUsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDOUQsT0FBTyxHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM3RCxlQUFlLEdBQThCLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLFFBQVEsR0FBeUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVwRSxjQUFjLEdBQTRCLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLE9BQU8sR0FBdUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVoRSxhQUFhLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQy9FLE1BQU0sR0FBd0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUUvRCxtQkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUVqRCxlQUFlLEdBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsZUFBZSxHQUFvQixFQUFFLENB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QUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLGFBQWEsQ0FBaUMsQ0FBQztRQUN6RixJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU87UUFDaEIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQzt3R0F2S1EsY0FBYzs0R0FBZCxjQUFjLGNBRlgsTUFBTTs7NEZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudEluamVjdG9yLCBpbmplY3QsIEluamVjdGFibGUsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRmlsdGVyLCBGaWx0ZXJGYWN0b3J5IH0gZnJvbSAnLi4vY2xhc3Nlcyc7XHJcbmltcG9ydCB7IERlZmF1bHRGaWx0ZXIsIEZpbHRlckVsZW1lbnQsIFBhZ2luYXRpb25TZXR0aW5ncywgRmlsdGVyVHlwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlLCBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IFByaWNlUmFuZ2VGaWx0ZXIgfSBmcm9tICcuLi9jbGFzc2VzL2ZpbHRlcnMvcHJpY2VfcmFuZ2UtZmlsdGVyJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyc1NlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBfYXBpQ29uc3RzOiBBcGlDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSBfY29uc3RzOiBDb3JlQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSk7XHJcbiAgICBwcml2YXRlIF9maWx0ZXJzU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PEZpbHRlcltdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyW10+KFtdKTtcclxuICAgIHB1YmxpYyBmaWx0ZXJzJDogT2JzZXJ2YWJsZTxGaWx0ZXJbXT4gPSB0aGlzLl9maWx0ZXJzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcml2YXRlIF9hcGlVcmxTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XHJcbiAgICBwdWJsaWMgYXBpVXJsJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5fYXBpVXJsU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcml2YXRlIF9yZWFkeVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIHJlYWR5JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX3JlYWR5U3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcml2YXRlIGVudmlyb25tZW50SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3RvcilcclxuXHJcbiAgICBwcml2YXRlIF9vcHRpb25zRmlsdGVyczogKEZpbHRlclR5cGUgfCAnYWxsJylbXSA9IFsnYWxsJ107XHJcbiAgICBwcml2YXRlIF9kZWZhdWx0RmlsdGVyczogRGVmYXVsdEZpbHRlcltdID0gW107XHJcblxyXG4gICAgcHJpdmF0ZSBfcGFnaW5hdGlvblNldHRpbmdzOiBQYWdpbmF0aW9uU2V0dGluZ3MgPSB7XHJcbiAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgIHR5cGU6ICcnLFxyXG4gICAgICAgIGxpbWl0OiAwXHJcbiAgICB9O1xyXG5cclxuICAgIHByaXZhdGUgX2ZpbHRlcnNJbml0aWFsaXplZCA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIC8vdGhpcy5fZGVmYXVsdEZpbHRlcnMgPSB0aGlzLl9jb25zdHMuZ2V0RGVmYXVsdEZpbHRlcnMoKVxyXG4gICAgfVxyXG5cclxuICAgIC8vQVBJIFVSTFxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRvcm5hIGxhIHVybCBwYXJhIGVsIGZpbHRyYWRvXHJcbiAgICAgKiBAcGFyYW0gZmlsdGVycyBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcm9kdWN0c0ZpbHRlckFwaShmaWx0ZXJzID0gJycpIHsgcmV0dXJuICdzaG9wLWFwaS8nICsgdGhpcy5fYXBpQ29uc3RzLkNIQU5ORUwgKyAnL3Byb2R1Y3Qtc2VhcmNoLycgKyAnP2xvY2FsZT0nICsgdGhpcy5fYXBpQ29uc3RzLkxPQ0FMRSArIGZpbHRlcnMgfTtcclxuICAgIC8qKlxyXG4gICAgICogQXJtYSBsb3MgZmlsdHJvcyB5IHJldG9ybmEgbGEgdXJsIGNvbXBsZXRhIGNvbiBsb3MgZmlsdHJvcyBhcGxpY2Fkb3MuXHJcbiAgICAgKiBAcGFyYW0gc2VhcmNoX3ZhbHVlIHZhbG9yIGEgYnVzY2FyXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgZ2VuZXJhdGVGaW5hbEFwaShzZWFyY2hfdmFsdWU/OiBzdHJpbmcpIHtcclxuICAgICAgICBsZXQgZXh0cmFfcGFyYW1zID0gJyc7XHJcbiAgICAgICAgdGhpcy5fZmlsdGVyc1N1YmplY3QudmFsdWUuZm9yRWFjaChmaWx0ZXIgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBleHRyYSA9IGZpbHRlci50b1VybFBhcmFtcygpO1xyXG4gICAgICAgICAgICBleHRyYS5zcGxpdCgnPScpWzFdICE9ICcnID8gZXh0cmFfcGFyYW1zICs9IGV4dHJhIDogbnVsbDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmIChzZWFyY2hfdmFsdWUpIGV4dHJhX3BhcmFtcyArPSAoJyZjcml0ZXJpYVtzZWFyY2hdW3R5cGVdPWNvbnRhaW5zJmNyaXRlcmlhW3NlYXJjaF1bdmFsdWVdPScgKyBzZWFyY2hfdmFsdWUpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5wcm9kdWN0c0ZpbHRlckFwaShleHRyYV9wYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaXNVcGRhdGVkKHBhZ2luYXRpb25TZXR0aW5nczogUGFnaW5hdGlvblNldHRpbmdzKSB7XHJcbiAgICAgICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBPYmplY3Qua2V5cyhwYWdpbmF0aW9uU2V0dGluZ3MpO1xyXG4gICAgICAgIGxldCBjaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKHBhZ2luYXRpb25TZXR0aW5ncyBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldO1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZTIgPSAodGhpcy5fcGFnaW5hdGlvblNldHRpbmdzIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2tleV07XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZTIpIGNoYW5nZSA9IHRydWU7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBpZiAoY2hhbmdlKSB0aGlzLl9wYWdpbmF0aW9uU2V0dGluZ3MgPSBwYWdpbmF0aW9uU2V0dGluZ3M7XHJcbiAgICAgICAgcmV0dXJuIGNoYW5nZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRGaWx0ZXJzKHBhZ2luYXRpb25TZXR0aW5nczogUGFnaW5hdGlvblNldHRpbmdzLCBzZWFyY2hfdmFsdWU/OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9wYWdpbmF0aW9uU2V0dGluZ3MgPSBwYWdpbmF0aW9uU2V0dGluZ3M7XHJcbiAgICAgICAgbGV0IGZpbmFsX2ZpbHRlcnM6IEZpbHRlcltdID0gW107XHJcbiAgICAgICAgbGV0IGZpbHRlcnNUb1Byb2Nlc3MgPSB0aGlzLl9vcHRpb25zRmlsdGVycz8uaW5jbHVkZXMoJ2FsbCcpXHJcbiAgICAgICAgICAgID8gKFsnYXR0cmlidXRlcycsICdjYXRlZ29yaWVzJywgJ2R5bmFtaWNzJywgJ3NvcnQnLCAncHJpY2VfcmFuZ2UnXSBhcyBGaWx0ZXJUeXBlW10pXHJcbiAgICAgICAgICAgIDogdGhpcy5fb3B0aW9uc0ZpbHRlcnM7XHJcblxyXG4gICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmVudmlyb25tZW50SW5qZWN0b3IsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyRmFjdG9yeSA9IG5ldyBGaWx0ZXJGYWN0b3J5KCk7XHJcbiAgICAgICAgICAgIGZpbHRlcnNUb1Byb2Nlc3M/LmZvckVhY2goZmlsdGVyVHlwZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSBmaWx0ZXJGYWN0b3J5LmNyZWF0ZShmaWx0ZXJUeXBlLCBwYWdpbmF0aW9uU2V0dGluZ3MpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbmFsX2ZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLndhcm4oYOKdjCBGYWlsZWQgdG8gY3JlYXRlIGZpbHRlciBmb3IgdHlwZTogJHtmaWx0ZXJUeXBlfWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLl9kZWZhdWx0RmlsdGVycz8uZm9yRWFjaChmaWx0ZXJEZWZhdWx0ID0+IHtcclxuICAgICAgICAgICAgbGV0IGZpbHRlciA9IGZpbmFsX2ZpbHRlcnMuZmluZChmaWx0ZXIgPT4gZmlsdGVyLnR5cGUoKSA9PSBmaWx0ZXJEZWZhdWx0LmZpbHRlcl90eXBlKTtcclxuICAgICAgICAgICAgZmlsdGVyICYmIGZpbHRlckRlZmF1bHQuY29kZXMuZm9yRWFjaCh2YWx1ZSA9PiBmaWx0ZXIuc2V0U2VsZWN0ZWQodmFsdWUpKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuX2ZpbHRlcnNTdWJqZWN0Lm5leHQoZmluYWxfZmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmlsdGVycyhwYWdpbmF0aW9uU2V0dGluZ3M/OiBQYWdpbmF0aW9uU2V0dGluZ3MpIHtcclxuICAgICAgICBpZiAodGhpcy5fZmlsdGVyc0luaXRpYWxpemVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5fZmlsdGVyc0luaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBzZXR0aW5ncyA9IHBhZ2luYXRpb25TZXR0aW5ncyB8fCB0aGlzLl9wYWdpbmF0aW9uU2V0dGluZ3M7XHJcbiAgICAgICAgbGV0IGZpbmFsX2ZpbHRlcnM6IEZpbHRlcltdID0gW107XHJcbiAgICAgICAgbGV0IGZpbHRlcnNUb1Byb2Nlc3MgPSB0aGlzLl9vcHRpb25zRmlsdGVycz8uaW5jbHVkZXMoJ2FsbCcpXHJcbiAgICAgICAgICAgID8gKFsnYXR0cmlidXRlcycsICdjYXRlZ29yaWVzJywgJ2R5bmFtaWNzJywgJ3NvcnQnLCAncHJpY2VfcmFuZ2UnXSBhcyBGaWx0ZXJUeXBlW10pXHJcbiAgICAgICAgICAgIDogdGhpcy5fb3B0aW9uc0ZpbHRlcnM7XHJcblxyXG4gICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmVudmlyb25tZW50SW5qZWN0b3IsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyRmFjdG9yeSA9IG5ldyBGaWx0ZXJGYWN0b3J5KCk7XHJcbiAgICAgICAgICAgIGZpbHRlcnNUb1Byb2Nlc3M/LmZvckVhY2goZmlsdGVyVHlwZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnQ3JlYXRpbmcgZmlsdGVyIGZvciB0eXBlOicsIGZpbHRlclR5cGUpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gZmlsdGVyRmFjdG9yeS5jcmVhdGUoZmlsdGVyVHlwZSwgc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ0NyZWF0ZWQgZmlsdGVyOicsIGZpbHRlcik7XHJcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmluYWxfZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUud2FybihgRmFpbGVkIHRvIGNyZWF0ZSBmaWx0ZXIgZm9yIHR5cGU6ICR7ZmlsdGVyVHlwZX1gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuX2RlZmF1bHRGaWx0ZXJzPy5mb3JFYWNoKGZpbHRlckRlZmF1bHQgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZmlsdGVyID0gZmluYWxfZmlsdGVycy5maW5kKGZpbHRlciA9PiBmaWx0ZXIudHlwZSgpID09IGZpbHRlckRlZmF1bHQuZmlsdGVyX3R5cGUpO1xyXG4gICAgICAgICAgICBmaWx0ZXIgJiYgZmlsdGVyRGVmYXVsdC5jb2Rlcy5mb3JFYWNoKHZhbHVlID0+IGZpbHRlci5zZXRTZWxlY3RlZCh2YWx1ZSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2ZpbHRlcnNTdWJqZWN0Lm5leHQoZmluYWxfZmlsdGVycyk7XHJcbiAgICAgICAgcmV0dXJuIGZpbmFsX2ZpbHRlcnM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3BlY2lmaWNGaWx0ZXJzKHR5cGVzOiBGaWx0ZXJUeXBlW10pOiBGaWx0ZXJbXSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyczogRmlsdGVyW10gPSB0aGlzLl9maWx0ZXJzU3ViamVjdC52YWx1ZS5maWx0ZXIoZmlsdGVyID0+IHR5cGVzLmluY2x1ZGVzKGZpbHRlci50eXBlKCkpKVxyXG4gICAgICAgIHJldHVybiBmaWx0ZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEZpbHRlclNlbGVjdGVkKGZpbHRlck9iajogRmlsdGVyLCBmaWx0ZXJFbGVtOiBGaWx0ZXJFbGVtZW50KSB7XHJcbiAgICAgICAgbGV0IGZpbmFsX2ZpbHRlcnM6IEZpbHRlcltdID0gdGhpcy5fZmlsdGVyc1N1YmplY3QudmFsdWU7XHJcbiAgICAgICAgaWYgKGZpbHRlck9iai50eXBlKCkgIT09ICdwcmljZV9yYW5nZScpIHtcclxuICAgICAgICAgICAgbGV0IGluZGV4ID0gZmluYWxfZmlsdGVycy5maW5kSW5kZXgoZmlsdGVyID0+IGZpbHRlci50eXBlKCkgPT0gZmlsdGVyT2JqLnR5cGUoKSk7XHJcbiAgICAgICAgICAgIGZpbmFsX2ZpbHRlcnNbaW5kZXhdLnNldFNlbGVjdGVkKGZpbHRlckVsZW0sIGZpbHRlckVsZW0udmFsdWUgfHwgZmlsdGVyRWxlbS5jb2RlKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coaW5kZXgsIGZpbmFsX2ZpbHRlcnMpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2ZpbHRlcnNTdWJqZWN0Lm5leHQoZmluYWxfZmlsdGVycyk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUZpbHRlcnMocGFnaW5hdGlvbkZpbHRlcnM6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNsYXZlcyA9IE9iamVjdC5rZXlzKHBhZ2luYXRpb25GaWx0ZXJzKVxyXG4gICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmVudmlyb25tZW50SW5qZWN0b3IsICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyRmFjdG9yeSA9IG5ldyBGaWx0ZXJGYWN0b3J5KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcjogRmlsdGVyW10gPSBbXVxyXG4gICAgICAgICAgICAvKiBjbGF2ZXMuZm9yRWFjaCgoa2V5OmFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyLnB1c2goZmlsdGVyRmFjdG9yeS5jcmVhdGUoa2V5KSlcclxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb25GaWx0ZXJzW2tleV0uZm9yRWFjaCgodmFsdWU6YW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGZpbHRlclswXS5jcmVhdGVFbGVtZW50KHZhbHVlLHBhZ2luYXRpb25GaWx0ZXJzW2tleV0pKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9KSAqL1xyXG4gICAgICAgICAgICB0aGlzLl9maWx0ZXJzU3ViamVjdC52YWx1ZS5mb3JFYWNoKCh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUudHlwZSgpID09IFwiYXR0cmlidXRlc1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy92YWx1ZS5kYXRhID0gW107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICAvKiogXHJcbiAgICAgKiBBY3R1YWxpemEgaW50ZXJuYW1lbnRlIGVsIHJhbmdvIGRlIHByZWNpbyB5IHJlLWVtaXRlIFxyXG4gICAgICogZWwgYXJyYXkgZGUgZmlsdHJvcyBwYXJhIHF1ZSBQYWdpbmF0aW9uU2VydmljZSB2dWVsdmEgYSBsbGFtYXIgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB1cGRhdGVQcmljZVJhbmdlRmlsdGVyKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLl9maWx0ZXJzU3ViamVjdC52YWx1ZTtcclxuICAgICAgICBjb25zdCBwciA9IGZpbHRlcnMuZmluZChmID0+IGYudHlwZSgpID09PSAncHJpY2VfcmFuZ2UnKSBhcyBQcmljZVJhbmdlRmlsdGVyIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICghcHIpIHJldHVybjtcclxuICAgICAgICBwci5zZXRTZWxlY3RlZChtaW4sIG1heCk7XHJcbiAgICAgICAgdGhpcy5fZmlsdGVyc1N1YmplY3QubmV4dChbLi4uZmlsdGVyc10pO1xyXG4gICAgfVxyXG59XHJcblxyXG4vLyBleHBvcnQgdHlwZSBGaWx0ZXJUeXBlID0gJ2F0dHJpYnV0ZXMnIHwgJ2NhdGVnb3JpZXMnIHwgJ2R5bmFtaWNzJyB8ICdzb3J0JyB8ICdwcmljZV9yYW5nZSc7IC8vIFVzZSBpbXBvcnRlZCBGaWx0ZXJUeXBlIGluc3RlYWRcclxuIl19
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2ZpbHRlcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBVSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQU16RSxNQUFNLE9BQU8sY0FBYztJQUNmLFVBQVUsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDOUQsT0FBTyxHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM3RCxlQUFlLEdBQThCLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLFFBQVEsR0FBeUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVwRSxjQUFjLEdBQTRCLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLE9BQU8sR0FBdUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVoRSxhQUFhLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQy9FLE1BQU0sR0FBd0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUUvRCxtQkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUVqRCxlQUFlLEdBQTJC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LElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO2dCQUMzRSxNQUFNLEdBQUcsR0FBRyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7Z0JBRTNFLGdEQUFnRDtnQkFDaEQsV0FBVyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLDBDQUEwQztnQkFDMUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLENBQUM7UUFDTCxDQUFDO1FBRUQsb0ZBQW9GO1FBQ3BGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXpDLG1GQUFtRjtRQUNuRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO3dHQWxUUSxjQUFjOzRHQUFkLGNBQWMsY0FGWCxNQUFNOzs0RkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50SW5qZWN0b3IsIGluamVjdCwgSW5qZWN0YWJsZSwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZpbHRlciwgRmlsdGVyRmFjdG9yeSB9IGZyb20gJy4uL2NsYXNzZXMnO1xuaW1wb3J0IHsgRGVmYXVsdEZpbHRlciwgRmlsdGVyRWxlbWVudCwgUGFnaW5hdGlvblNldHRpbmdzLCBGaWx0ZXJUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlLCBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQcmljZVJhbmdlRmlsdGVyIH0gZnJvbSAnLi4vY2xhc3Nlcy9maWx0ZXJzL3ByaWNlX3JhbmdlLWZpbHRlcic7XG5pbXBvcnQgeyBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlcnNTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF9hcGlDb25zdHM6IEFwaUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQXBpQ29uc3RhbnRzU2VydmljZSk7XG4gICAgcHJpdmF0ZSBfY29uc3RzOiBDb3JlQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSk7XG4gICAgcHJpdmF0ZSBfZmlsdGVyc1N1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbHRlcltdPihbXSk7XG4gICAgcHVibGljIGZpbHRlcnMkOiBPYnNlcnZhYmxlPEZpbHRlcltdPiA9IHRoaXMuX2ZpbHRlcnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHJpdmF0ZSBfYXBpVXJsU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICAgIHB1YmxpYyBhcGlVcmwkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLl9hcGlVcmxTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHJpdmF0ZSBfcmVhZHlTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwdWJsaWMgcmVhZHkkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5fcmVhZHlTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudEluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpXG5cbiAgICBwcml2YXRlIF9vcHRpb25zRmlsdGVyczogKEZpbHRlclR5cGUgfCAnYWxsJylbXSA9IFsnYWxsJ107XG4gICAgcHJpdmF0ZSBfZGVmYXVsdEZpbHRlcnM6IERlZmF1bHRGaWx0ZXJbXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBfcGFnaW5hdGlvblNldHRpbmdzOiBQYWdpbmF0aW9uU2V0dGluZ3MgPSB7XG4gICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgdHlwZTogJycsXG4gICAgICAgIGxpbWl0OiAwXG4gICAgfTtcblxuICAgIHByaXZhdGUgX2ZpbHRlcnNJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2xhc3RSb3V0ZVF1ZXJ5OiBQYXJhbXMgfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvL3RoaXMuX2RlZmF1bHRGaWx0ZXJzID0gdGhpcy5fY29uc3RzLmdldERlZmF1bHRGaWx0ZXJzKClcbiAgICB9XG5cbiAgICAvL0FQSSBVUkxcbiAgICAvKipcbiAgICAgKiBSZXRvcm5hIGxhIHVybCBwYXJhIGVsIGZpbHRyYWRvXG4gICAgICogQHBhcmFtIGZpbHRlcnMgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHJvZHVjdHNGaWx0ZXJBcGkoZmlsdGVycyA9ICcnKSB7IHJldHVybiAnc2hvcC1hcGkvJyArIHRoaXMuX2FwaUNvbnN0cy5DSEFOTkVMICsgJy9wcm9kdWN0LXNlYXJjaC8nICsgJz9sb2NhbGU9JyArIHRoaXMuX2FwaUNvbnN0cy5MT0NBTEUgKyBmaWx0ZXJzIH07XG4gICAgLyoqXG4gICAgICogQXJtYSBsb3MgZmlsdHJvcyB5IHJldG9ybmEgbGEgdXJsIGNvbXBsZXRhIGNvbiBsb3MgZmlsdHJvcyBhcGxpY2Fkb3MuXG4gICAgICogQHBhcmFtIHNlYXJjaF92YWx1ZSB2YWxvciBhIGJ1c2NhclxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIGdlbmVyYXRlRmluYWxBcGkoc2VhcmNoX3ZhbHVlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGV4dHJhX3BhcmFtcyA9ICcnO1xuXG4gICAgICAgIHRoaXMuX2ZpbHRlcnNTdWJqZWN0LnZhbHVlLmZvckVhY2goZmlsdGVyID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV4dHJhID0gZmlsdGVyLnRvVXJsUGFyYW1zKCk7XG4gICAgICAgICAgICBpZiAoZXh0cmEgJiYgZXh0cmEuc3BsaXQoJz0nKVsxXSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICBleHRyYV9wYXJhbXMgKz0gZXh0cmE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNpIGVuIGxhIFVSTCB5YSB2ZW7DrWEgYGF0dHJpYnV0ZUNvZGVzYCBwZXJvIGHDum4gbmluZ8O6biBmaWx0cm8gbG8gYWdyZWfDsyxcbiAgICAgICAgLy8gbG8gdm9sdmVtb3MgYSBzdW1hciBhIG1hbm8uIEVzdG8gZXZpdGEgcXVlIGFsIHJlZnJlc2NhciAoU1NSKSBzZSBwaWVyZGEgZWwgZmlsdHJvXG4gICAgICAgIC8vIGF1bnF1ZSBlbCBBdHRyaWJ1dGVzRmlsdGVyIHRvZGF2w61hIG5vIGhheWEgdGVybWluYWRvIGRlIGhpZHJhdGFyc2UuXG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZUNvZGVzRnJvbVJvdXRlID0gdGhpcy5fbGFzdFJvdXRlUXVlcnk/LlsnYXR0cmlidXRlQ29kZXMnXTtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZUNvZGVzRnJvbVJvdXRlICYmICFleHRyYV9wYXJhbXMuaW5jbHVkZXMoJ2F0dHJpYnV0ZUNvZGVzPScpKSB7XG4gICAgICAgICAgICBleHRyYV9wYXJhbXMgKz0gYCZhdHRyaWJ1dGVDb2Rlcz0ke2F0dHJpYnV0ZUNvZGVzRnJvbVJvdXRlfWA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2VhcmNoX3ZhbHVlKSB7XG4gICAgICAgICAgICBleHRyYV9wYXJhbXMgKz0gJyZjcml0ZXJpYVtzZWFyY2hdW3R5cGVdPWNvbnRhaW5zJmNyaXRlcmlhW3NlYXJjaF1bdmFsdWVdPScgKyBzZWFyY2hfdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wcm9kdWN0c0ZpbHRlckFwaShleHRyYV9wYXJhbXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNVcGRhdGVkKHBhZ2luYXRpb25TZXR0aW5nczogUGFnaW5hdGlvblNldHRpbmdzKSB7XG4gICAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gT2JqZWN0LmtleXMocGFnaW5hdGlvblNldHRpbmdzKTtcbiAgICAgICAgbGV0IGNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IChwYWdpbmF0aW9uU2V0dGluZ3MgYXMgUmVjb3JkPHN0cmluZywgYW55Pilba2V5XTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlMiA9ICh0aGlzLl9wYWdpbmF0aW9uU2V0dGluZ3MgYXMgUmVjb3JkPHN0cmluZywgYW55Pilba2V5XTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZTIpIGNoYW5nZSA9IHRydWU7XG4gICAgICAgIH0pXG4gICAgICAgIGlmIChjaGFuZ2UpIHRoaXMuX3BhZ2luYXRpb25TZXR0aW5ncyA9IHBhZ2luYXRpb25TZXR0aW5ncztcbiAgICAgICAgcmV0dXJuIGNoYW5nZTtcbiAgICB9XG5cbiAgICBzZXRGaWx0ZXJzKFxuICAgICAgICBwYWdpbmF0aW9uU2V0dGluZ3M6IFBhZ2luYXRpb25TZXR0aW5ncyxcbiAgICAgICAgc2VhcmNoX3ZhbHVlPzogc3RyaW5nLFxuICAgICAgICByb3V0ZVF1ZXJ5UGFyYW1zPzogYW55XG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3BhZ2luYXRpb25TZXR0aW5ncyA9IHBhZ2luYXRpb25TZXR0aW5ncztcbiAgICAgICAgbGV0IGZpbmFsX2ZpbHRlcnM6IEZpbHRlcltdID0gW107XG4gICAgICAgIGxldCBmaWx0ZXJzVG9Qcm9jZXNzID0gdGhpcy5fb3B0aW9uc0ZpbHRlcnM/LmluY2x1ZGVzKCdhbGwnKVxuICAgICAgICAgICAgPyAoWydhdHRyaWJ1dGVzJywgJ2NhdGVnb3JpZXMnLCAnZHluYW1pY3MnLCAnc29ydCcsICdwcmljZV9yYW5nZSddIGFzIEZpbHRlclR5cGVbXSlcbiAgICAgICAgICAgIDogdGhpcy5fb3B0aW9uc0ZpbHRlcnM7XG5cbiAgICAgICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuZW52aXJvbm1lbnRJbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyRmFjdG9yeSA9IG5ldyBGaWx0ZXJGYWN0b3J5KCk7XG4gICAgICAgICAgICBmaWx0ZXJzVG9Qcm9jZXNzPy5mb3JFYWNoKGZpbHRlclR5cGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IGZpbHRlckZhY3RvcnkuY3JlYXRlKGZpbHRlclR5cGUsIHBhZ2luYXRpb25TZXR0aW5ncyk7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICBmaW5hbF9maWx0ZXJzLnB1c2goZmlsdGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZGVmYXVsdEZpbHRlcnM/LmZvckVhY2goZmlsdGVyRGVmYXVsdCA9PiB7XG4gICAgICAgICAgICBsZXQgZmlsdGVyID0gZmluYWxfZmlsdGVycy5maW5kKGZpbHRlciA9PiBmaWx0ZXIudHlwZSgpID09IGZpbHRlckRlZmF1bHQuZmlsdGVyX3R5cGUpO1xuICAgICAgICAgICAgZmlsdGVyICYmIGZpbHRlckRlZmF1bHQuY29kZXMuZm9yRWFjaCh2YWx1ZSA9PiBmaWx0ZXIuc2V0U2VsZWN0ZWQodmFsdWUpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gaGlkcmF0YXIgcHJpY2VfcmFuZ2UgZGVzZGUgbGEgVVJMXG4gICAgICAgIGlmIChyb3V0ZVF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICBjb25zdCBwciA9IGZpbmFsX2ZpbHRlcnMuZmluZChmID0+IGYudHlwZSgpID09PSAncHJpY2VfcmFuZ2UnKSBhcyBQcmljZVJhbmdlRmlsdGVyIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKHByKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmF3TWluID0gcm91dGVRdWVyeVBhcmFtc1sncHJpY2VfbWluJ107XG4gICAgICAgICAgICAgICAgY29uc3QgcmF3TWF4ID0gcm91dGVRdWVyeVBhcmFtc1sncHJpY2VfbWF4J107XG5cbiAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSByYXdNaW4gIT0gbnVsbCA/IE51bWJlcihyYXdNaW4pIDogbnVsbDtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXggPSByYXdNYXggIT0gbnVsbCA/IE51bWJlcihyYXdNYXgpIDogbnVsbDtcblxuICAgICAgICAgICAgICAgIGlmICgobWluICE9IG51bGwgJiYgIU51bWJlci5pc05hTihtaW4pKSB8fCAobWF4ICE9IG51bGwgJiYgIU51bWJlci5pc05hTihtYXgpKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWluICE9IG51bGwgJiYgIU51bWJlci5pc05hTihtaW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwci5jdXJyZW50TWluUHJpY2UgPSBtaW47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG1heCAhPSBudWxsICYmICFOdW1iZXIuaXNOYU4obWF4KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHIuY3VycmVudE1heFByaWNlID0gbWF4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZmlsdGVyc1N1YmplY3QubmV4dChmaW5hbF9maWx0ZXJzKTtcbiAgICB9XG5cbiAgICBnZXRGaWx0ZXJzKHBhZ2luYXRpb25TZXR0aW5ncz86IFBhZ2luYXRpb25TZXR0aW5ncykge1xuICAgICAgICBpZiAodGhpcy5fZmlsdGVyc0luaXRpYWxpemVkKSByZXR1cm47XG4gICAgICAgIHRoaXMuX2ZpbHRlcnNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gcGFnaW5hdGlvblNldHRpbmdzIHx8IHRoaXMuX3BhZ2luYXRpb25TZXR0aW5ncztcbiAgICAgICAgbGV0IGZpbmFsX2ZpbHRlcnM6IEZpbHRlcltdID0gW107XG4gICAgICAgIGxldCBmaWx0ZXJzVG9Qcm9jZXNzID0gdGhpcy5fb3B0aW9uc0ZpbHRlcnM/LmluY2x1ZGVzKCdhbGwnKVxuICAgICAgICAgICAgPyAoWydhdHRyaWJ1dGVzJywgJ2NhdGVnb3JpZXMnLCAnZHluYW1pY3MnLCAnc29ydCcsICdwcmljZV9yYW5nZSddIGFzIEZpbHRlclR5cGVbXSlcbiAgICAgICAgICAgIDogdGhpcy5fb3B0aW9uc0ZpbHRlcnM7XG5cbiAgICAgICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuZW52aXJvbm1lbnRJbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyRmFjdG9yeSA9IG5ldyBGaWx0ZXJGYWN0b3J5KCk7XG4gICAgICAgICAgICBmaWx0ZXJzVG9Qcm9jZXNzPy5mb3JFYWNoKGZpbHRlclR5cGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IGZpbHRlckZhY3RvcnkuY3JlYXRlKGZpbHRlclR5cGUsIHNldHRpbmdzKTtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsX2ZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUud2FybihgRmFpbGVkIHRvIGNyZWF0ZSBmaWx0ZXIgZm9yIHR5cGU6ICR7ZmlsdGVyVHlwZX1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZGVmYXVsdEZpbHRlcnM/LmZvckVhY2goZmlsdGVyRGVmYXVsdCA9PiB7XG4gICAgICAgICAgICBsZXQgZmlsdGVyID0gZmluYWxfZmlsdGVycy5maW5kKGZpbHRlciA9PiBmaWx0ZXIudHlwZSgpID09IGZpbHRlckRlZmF1bHQuZmlsdGVyX3R5cGUpO1xuICAgICAgICAgICAgZmlsdGVyICYmIGZpbHRlckRlZmF1bHQuY29kZXMuZm9yRWFjaCh2YWx1ZSA9PiBmaWx0ZXIuc2V0U2VsZWN0ZWQodmFsdWUpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2ZpbHRlcnNTdWJqZWN0Lm5leHQoZmluYWxfZmlsdGVycyk7XG4gICAgICAgIHJldHVybiBmaW5hbF9maWx0ZXJzO1xuICAgIH1cblxuICAgIGdldFNwZWNpZmljRmlsdGVycyh0eXBlczogRmlsdGVyVHlwZVtdKTogRmlsdGVyW10ge1xuICAgICAgICBjb25zdCBmaWx0ZXJzOiBGaWx0ZXJbXSA9IHRoaXMuX2ZpbHRlcnNTdWJqZWN0LnZhbHVlLmZpbHRlcihmaWx0ZXIgPT4gdHlwZXMuaW5jbHVkZXMoZmlsdGVyLnR5cGUoKSkpXG4gICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgIH1cblxuICAgIHNldEZpbHRlclNlbGVjdGVkKGZpbHRlck9iajogRmlsdGVyLCBmaWx0ZXJFbGVtOiBGaWx0ZXJFbGVtZW50KSB7XG4gICAgICAgIGxldCBmaW5hbF9maWx0ZXJzOiBGaWx0ZXJbXSA9IHRoaXMuX2ZpbHRlcnNTdWJqZWN0LnZhbHVlO1xuICAgICAgICBpZiAoZmlsdGVyT2JqLnR5cGUoKSAhPT0gJ3ByaWNlX3JhbmdlJykge1xuICAgICAgICAgICAgbGV0IGluZGV4ID0gZmluYWxfZmlsdGVycy5maW5kSW5kZXgoZmlsdGVyID0+IGZpbHRlci50eXBlKCkgPT0gZmlsdGVyT2JqLnR5cGUoKSk7XG4gICAgICAgICAgICBmaW5hbF9maWx0ZXJzW2luZGV4XS5zZXRTZWxlY3RlZChmaWx0ZXJFbGVtLCBmaWx0ZXJFbGVtLnZhbHVlIHx8IGZpbHRlckVsZW0uY29kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZmlsdGVyc1N1YmplY3QubmV4dChmaW5hbF9maWx0ZXJzKTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIHVwZGF0ZUZpbHRlcnMocGFnaW5hdGlvbkZpbHRlcnM6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjbGF2ZXMgPSBPYmplY3Qua2V5cyhwYWdpbmF0aW9uRmlsdGVycylcbiAgICAgICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuZW52aXJvbm1lbnRJbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyRmFjdG9yeSA9IG5ldyBGaWx0ZXJGYWN0b3J5KCk7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXI6IEZpbHRlcltdID0gW11cbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlcnNTdWJqZWN0LnZhbHVlLmZvckVhY2goKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUudHlwZSgpID09IFwiYXR0cmlidXRlc1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vdmFsdWUuZGF0YSA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgLyoqIFxuICAgICAqIEFjdHVhbGl6YSBpbnRlcm5hbWVudGUgZWwgcmFuZ28gZGUgcHJlY2lvIHkgcmUtZW1pdGUgXG4gICAgICogZWwgYXJyYXkgZGUgZmlsdHJvcyBwYXJhIHF1ZSBQYWdpbmF0aW9uU2VydmljZSB2dWVsdmEgYSBsbGFtYXIgXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZVByaWNlUmFuZ2VGaWx0ZXIobWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLl9maWx0ZXJzU3ViamVjdC52YWx1ZTtcbiAgICAgICAgY29uc3QgcHIgPSBmaWx0ZXJzLmZpbmQoZiA9PiBmLnR5cGUoKSA9PT0gJ3ByaWNlX3JhbmdlJykgYXMgUHJpY2VSYW5nZUZpbHRlciB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKCFwcikgcmV0dXJuO1xuICAgICAgICBwci5zZXRTZWxlY3RlZChtaW4sIG1heCk7XG4gICAgICAgIHRoaXMuX2ZpbHRlcnNTdWJqZWN0Lm5leHQoWy4uLmZpbHRlcnNdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGdWVyemEgYSBlbWl0aXIgZGUgbnVldm8gbG9zIGZpbHRyb3MgYWN0dWFsZXMuXG4gICAgICogw5p0aWwgY3VhbmRvIHVuIGZpbHRybyBhc3luYyAoY2F0ZWdvcsOtYXMsIGF0cmlidXRvcykgdGVybWluYSBkZSBjYXJnYXJzZVxuICAgICAqIHkgbmVjZXNpdGFtb3MgcXVlIFBhZ2luYXRpb25TZXJ2aWNlIHZ1ZWx2YSBhIGFybWFyIGxhIFVSTC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVmcmVzaEZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9maWx0ZXJzU3ViamVjdC52YWx1ZTtcbiAgICAgICAgLy8gRW1pdGltb3MgdW5hIGNvcGlhIHBhcmEgcXVlIGxvcyBzdWJzY3JpYmVycyBkZXRlY3RlbiBlbCBjYW1iaW9cbiAgICAgICAgdGhpcy5fZmlsdGVyc1N1YmplY3QubmV4dChbLi4uY3VycmVudF0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFB1bnRvIGNlbnRyYWwgZG9uZGUgc2UgaGlkcmF0YW4gbG9zIGZpbHRyb3MgYSBwYXJ0aXIgZGUgbGEgVVJMOlxuICAgICAqIC0gTGVlIHR5cGUvdmFsdWUgZGUgbGEgcnV0YSAoZWouIC9jb2xsZWN0aW9uL2NhdGVnb3JpZXMvOnZhbHVlKS5cbiAgICAgKiAtIExlZSBxdWVyeSBwYXJhbXMgKGNhdGVnb3J5LCBwcmljZV9taW4sIHByaWNlX21heCwgYXR0cmlidXRlQ29kZXMsIHNlYXJjaCwgZXRjLikuXG4gICAgICogLSBDcmVhIGluc3RhbmNpYXMgZGUgZmlsdHJvcyB5IGxlcyBkZWxlZ2EgbGEgaGlkcmF0YWNpw7NuIGVzcGVjw61maWNhLlxuICAgICAqXG4gICAgICogRXN0ZSBtw6l0b2RvIHNlIGxsYW1hIHRhbnRvIGVuIFNTUiBjb21vIGVuIG5hdmVnYWRvci5cbiAgICAgKi9cbiAgICBoeWRyYXRlRnJvbVJvdXRlKFxuICAgICAgICBwYWdpbmF0aW9uU2V0dGluZ3M6IFBhZ2luYXRpb25TZXR0aW5ncyxcbiAgICAgICAgcm91dGVQYXJhbXM6IFBhcmFtcyxcbiAgICAgICAgcm91dGVRdWVyeTogUGFyYW1zXG4gICAgKTogdm9pZCB7XG4gICAgICAgIC8vIGhpZHJhdGFyIHNlYXJjaCBkZXNkZSBsYSBVUkwgPT09XG4gICAgICAgIGNvbnN0IHNlYXJjaEZyb21VcmwgPSByb3V0ZVF1ZXJ5Py5bJ3NlYXJjaCddO1xuICAgICAgICBpZiAodHlwZW9mIHNlYXJjaEZyb21VcmwgPT09ICdzdHJpbmcnICYmIHNlYXJjaEZyb21VcmwudHJpbSgpICE9PSAnJykge1xuICAgICAgICAgICAgLy8gR3VhcmRhbW9zIGVsIHZhbG9yIHBhcmEgcXVlIG90cm9zIGNvbXBvbmVudGVzIChIZWFkZXIsIENvbGxlY3Rpb24pIGxvIHJldXRpbGljZW5cbiAgICAgICAgICAgIHRoaXMuX2NvbnN0cy5zZWFyY2hWYWx1ZSA9IHNlYXJjaEZyb21VcmwudHJpbSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gU2kgbm8gdmllbmUgYHNlYXJjaGAgZW4gbGEgVVJMLCBsaW1waWFtb3MgZWwgZXN0YWRvIGdsb2JhbCBwYXJhIG5vIGFycmFzdHJhciBiw7pzcXVlZGFzIHZpZWphc1xuICAgICAgICAgICAgdGhpcy5fY29uc3RzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHdWFyZGFtb3MgbGEgw7psdGltYSBxdWVyeSBjb21wbGV0YSBwYXJhIHVzYXJsYSBlbiBnZW5lcmF0ZUZpbmFsQXBpIChwYXJjaGUgYXR0cmlidXRlQ29kZXMpXG4gICAgICAgIHRoaXMuX2xhc3RSb3V0ZVF1ZXJ5ID0gcm91dGVRdWVyeTtcblxuICAgICAgICAvLyBHdWFyZGFtb3MgbGFzIHNldHRpbmdzIGFjdHVhbGVzICh0eXBlLCB2YWx1ZSwgbGltaXQsIGV0Yy4pXG4gICAgICAgIHRoaXMuX3BhZ2luYXRpb25TZXR0aW5ncyA9IHBhZ2luYXRpb25TZXR0aW5ncztcblxuICAgICAgICAvLyBDcmVhbW9zIGxvcyBmaWx0cm9zIGJhc2UgKGF0dHJpYnV0ZXMsIGNhdGVnb3JpZXMsIGR5bmFtaWNzLCBzb3J0LCBwcmljZV9yYW5nZSwgZXRjLilcbiAgICAgICAgbGV0IGZpbmFsX2ZpbHRlcnM6IEZpbHRlcltdID0gW107XG4gICAgICAgIGxldCBmaWx0ZXJzVG9Qcm9jZXNzID0gdGhpcy5fb3B0aW9uc0ZpbHRlcnM/LmluY2x1ZGVzKCdhbGwnKVxuICAgICAgICAgICAgPyAoWydhdHRyaWJ1dGVzJywgJ2NhdGVnb3JpZXMnLCAnZHluYW1pY3MnLCAnc29ydCcsICdwcmljZV9yYW5nZSddIGFzIEZpbHRlclR5cGVbXSlcbiAgICAgICAgICAgIDogdGhpcy5fb3B0aW9uc0ZpbHRlcnM7XG5cbiAgICAgICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuZW52aXJvbm1lbnRJbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyRmFjdG9yeSA9IG5ldyBGaWx0ZXJGYWN0b3J5KCk7XG4gICAgICAgICAgICBmaWx0ZXJzVG9Qcm9jZXNzPy5mb3JFYWNoKGZpbHRlclR5cGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IGZpbHRlckZhY3RvcnkuY3JlYXRlKGZpbHRlclR5cGUsIHBhZ2luYXRpb25TZXR0aW5ncyk7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICBmaW5hbF9maWx0ZXJzLnB1c2goZmlsdGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQXBsaWNhbW9zIGRlZmF1bHRGaWx0ZXJzIHNpIGNvcnJlc3BvbmRlXG4gICAgICAgIHRoaXMuX2RlZmF1bHRGaWx0ZXJzPy5mb3JFYWNoKGZpbHRlckRlZmF1bHQgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gZmluYWxfZmlsdGVycy5maW5kKGYgPT4gZi50eXBlKCkgPT09IGZpbHRlckRlZmF1bHQuZmlsdGVyX3R5cGUpO1xuICAgICAgICAgICAgZmlsdGVyICYmIGZpbHRlckRlZmF1bHQuY29kZXMuZm9yRWFjaCh2YWx1ZSA9PiBmaWx0ZXIuc2V0U2VsZWN0ZWQodmFsdWUpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gSGlkcmF0YXIgZmlsdHJvcyBjb24gc2x1ZyB5IHF1ZXJ5IHBhcmFtcyBnZW7DqXJpY29zXG4gICAgICAgIGZpbmFsX2ZpbHRlcnMuZm9yRWFjaChmID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFueUZpbHRlciA9IGYgYXMgYW55O1xuXG4gICAgICAgICAgICAvLyB0eXBlL3ZhbHVlIGVuIGxhIFVSTDogL2NvbGxlY3Rpb24vY2F0ZWdvcmllcy86dmFsdWVcbiAgICAgICAgICAgIGNvbnN0IHVybFR5cGUgPSByb3V0ZVBhcmFtc1sndHlwZSddO1xuICAgICAgICAgICAgY29uc3QgdXJsVmFsdWUgPSByb3V0ZVBhcmFtc1sndmFsdWUnXTtcblxuICAgICAgICAgICAgLy8gUG9yIGVqZW1wbG8sIGVsIENhdGVnb3J5RmlsdGVyIGltcGxlbWVudGEgc2V0RnJvbVNsdWcgcGFyYSBtYXJjYXIgbGEgY2F0ZWdvcsOtYSBjb3JyZWN0YVxuICAgICAgICAgICAgaWYgKHVybFR5cGUgPT09ICdjYXRlZ29yaWVzJyAmJiB1cmxWYWx1ZSAmJiB0eXBlb2YgYW55RmlsdGVyLnNldEZyb21TbHVnID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgYW55RmlsdGVyLnNldEZyb21TbHVnKHVybFZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gcXVlcnkgcGFyYW1zIGdlbsOpcmljb3M6ID9jYXRlZ29yeT0wMTAxJnByaWNlX21pbj0uLi4mcHJpY2VfbWF4PS4uLiZhdHRyaWJ1dGVDb2Rlcz0uLi5cbiAgICAgICAgICAgIC8vIENhZGEgZmlsdHJvIHF1ZSBsbyBzb3BvcnRlIGltcGxlbWVudGEgaHlkcmF0ZUZyb21RdWVyeSB5IGRlY2lkZSBxdcOpIGxlZXIuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGFueUZpbHRlci5oeWRyYXRlRnJvbVF1ZXJ5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgYW55RmlsdGVyLmh5ZHJhdGVGcm9tUXVlcnkocm91dGVRdWVyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEhpZHJhdGFyIGVzcGVjw61maWNhbWVudGUgZWwgUHJpY2VSYW5nZUZpbHRlciBkZXNkZSBsYSBVUkxcbiAgICAgICAgY29uc3QgcHJpY2VGaWx0ZXIgPSBmaW5hbF9maWx0ZXJzLmZpbmQoXG4gICAgICAgICAgICAoZjogRmlsdGVyKSA9PiBmIGluc3RhbmNlb2YgUHJpY2VSYW5nZUZpbHRlclxuICAgICAgICApIGFzIFByaWNlUmFuZ2VGaWx0ZXIgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKHByaWNlRmlsdGVyICYmIHJvdXRlUXVlcnkpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pbkZyb21VcmwgPSByb3V0ZVF1ZXJ5WydwcmljZV9taW4nXTtcbiAgICAgICAgICAgIGNvbnN0IG1heEZyb21VcmwgPSByb3V0ZVF1ZXJ5WydwcmljZV9tYXgnXTtcblxuICAgICAgICAgICAgaWYgKG1pbkZyb21VcmwgIT0gbnVsbCB8fCBtYXhGcm9tVXJsICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBtaW5Gcm9tVXJsICE9IG51bGwgPyBOdW1iZXIobWluRnJvbVVybCkgOiBwcmljZUZpbHRlci5taW5QcmljZTtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBtYXhGcm9tVXJsICE9IG51bGwgPyBOdW1iZXIobWF4RnJvbVVybCkgOiBwcmljZUZpbHRlci5tYXhQcmljZTtcblxuICAgICAgICAgICAgICAgIC8vIHVzYW1vcyBsYSBBUEkgZGVsIGZpbHRybyBwYXJhIHNldGVhciBlbCByYW5nb1xuICAgICAgICAgICAgICAgIHByaWNlRmlsdGVyLnNldFNlbGVjdGVkKG1pbiwgbWF4KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gc2kgbm8gaGF5IG5hZGEgZW4gbGEgVVJMLCBsbyByZXNldGVhbW9zXG4gICAgICAgICAgICAgICAgcHJpY2VGaWx0ZXIucmVzZXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEVtaXRpbW9zIGZpbHRyb3MgeWEgaGlkcmF0YWRvcyBwYXJhIHF1ZSBQYWdpbmF0aW9uU2VydmljZSB5IENvbGxlY3Rpb24gcmVhY2Npb25lblxuICAgICAgICB0aGlzLl9maWx0ZXJzU3ViamVjdC5uZXh0KGZpbmFsX2ZpbHRlcnMpO1xuXG4gICAgICAgIC8vIE1hcmNhbW9zIHF1ZSBlbCBzaXN0ZW1hIGRlIGZpbHRyb3MgZXN0w6EgbGlzdG8gKMO6dGlsIHBhcmEgbW9zdHJhciBzcGlubmVycywgZXRjLilcbiAgICAgICAgdGhpcy5fcmVhZHlTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgfVxufVxuXG4vLyBleHBvcnQgdHlwZSBGaWx0ZXJUeXBlID0gJ2F0dHJpYnV0ZXMnIHwgJ2NhdGVnb3JpZXMnIHwgJ2R5bmFtaWNzJyB8ICdzb3J0JyB8ICdwcmljZV9yYW5nZSc7IC8vIFVzZSBpbXBvcnRlZCBGaWx0ZXJUeXBlIGluc3RlYWRcbiJdfQ==
@@ -90,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
90
90
  providedIn: 'root'
91
91
  }]
92
92
  }], ctorParameters: () => [] });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2Zvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFckU7O0dBRUc7QUFJSCxNQUFNLE9BQU8sV0FBVztJQUNmLFNBQVMsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUE7SUFDNUQsVUFBVSxHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUV2RCxnQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBUSxFQUFFLENBQUMsQ0FBQztJQUNsRCxnQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBUSxFQUFFLENBQUMsQ0FBQztJQUMvQyxvQkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBUSxFQUFFLENBQUMsQ0FBQztJQUU1RCxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9DLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEQsY0FBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVwRSxTQUFTO0lBQ1Q7OztPQUdHO0lBQ0ksc0JBQXNCLEtBQUssT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSx3QkFB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QUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFBO0lBQ0Q7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxZQUFpQjtRQUM1QixPQUFPLFlBQVksQ0FBQTtJQUNwQixDQUFDO3dHQXRGVyxXQUFXOzRHQUFYLFdBQVcsY0FGWCxNQUFNOzs0RkFFTixXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNpbyBlbmNhcmdhZG8gZGUgbWFuZWphciB0b2RvIGFxdWVsbG8gcmVsYWNpb25hZG8gY29uIGxvcyBmb3JtdWxhcmlvcyBkZW50cm8gZGUgbGEgYXBsaWNhY2nDs24uXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtU2VydmljZSB7XHJcblx0cHJpdmF0ZSBhcGlDb25zdHM6IEFwaUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQXBpQ29uc3RhbnRzU2VydmljZSlcclxuXHRwcml2YXRlIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlID0gaW5qZWN0KENvbm5lY3Rpb25TZXJ2aWNlKVxyXG4gXHRcclxuXHRwcm90ZWN0ZWQgY291bnRyaWVzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcclxuXHRwcm90ZWN0ZWQgcHJvdmluY2VzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcclxuICAgIHByb3RlY3RlZCBkb2N1bWVudFR5cGVzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcclxuXHRcclxuXHRwdWJsaWMgY291bnRyaWVzJCA9IHRoaXMuY291bnRyaWVzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICAgIHB1YmxpYyBwcm92aW5jZXMkID0gdGhpcy5wcm92aW5jZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcHVibGljIGRvY3VtZW50VHlwZXMkID0gdGhpcy5kb2N1bWVudFR5cGVzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcblx0Ly9BUEkgVVJMXHJcblx0LyoqXHJcblx0ICogUmV0b3JuYSB1bmEgdXJsIHBhcmEgZW52aWFyIGxvcyBkYXRvcyBkZSB1biBmb3JtdWxhcmlvIGRlIGNvbnRhY3RvLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb250YWN0Rm9ybVJlc3BvbnNlQVBJKCkgeyByZXR1cm4gYCR7dGhpcy5hcGlDb25zdHMuQ01TX1VSTH0ke3RoaXMuYXBpQ29uc3RzLkxPQ0FMRX0vY29udGFjdC1mb3JtL3Jlc3BvbnNlYCB9XHJcblx0LyoqXHJcblx0ICogUmV0b3JuYSB1bmEgdXJsIHBhcmEgZWwgZW5kcG9pbnQgcXVlIG9idGluZW4gbG9zIHBhaXNlcy5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgY291bnRyaWVzQXBpKCkgeyByZXR1cm4gJ3Nob3AtYXBpLycgKyB0aGlzLmFwaUNvbnN0cy5DSEFOTkVMICsgJy9jb3VudHJpZXMnIH07XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblx0LyoqXHJcblx0ICogRW52aWEgZW4gZm9ybXVsYXJpby5cclxuXHQgKiBAcGFyYW0gcmVzcG9uc2Vfb2JqIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHNlbmRSZXNwb25zZShyZXNwb25zZV9vYmo6IGFueSkge1xyXG5cdFx0cmV0dXJuIHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMuY29udGFjdEZvcm1SZXNwb25zZUFQSSgpLCB0aGlzLnByZXBhcmVEYXRhKHJlc3BvbnNlX29iaikpXHJcblx0fVxyXG5cclxuXHQvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBjb250aWVuZSB1biBhcnJlZ2xvIGRlIHN0cmluZyBjdXlvIGNvbnRlbmlkbyBzb24gbG9zIGNvZGlnb3MgZGUgbG9zIHBhaXNlcyBhIGV4Y2x1aXIuXHJcbiAgICAgKiBAZXhhbXBsZSBbJ0dCJ11cclxuICAgICAqL1xyXG4gICAgcHVibGljIGV4Y2x1ZGVkQ291bnRyaWVzOiBzdHJpbmdbXSA9IFtdXHJcbiBcdHB1YmxpYyBhbGxvd2VkQ291bnRyaWVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cdC8qKlxyXG5cdCAqIE9idGllbmUgbG9zIHBhaXNlcyB5IGxvcyBndWFyZGEgZW4gdW4gb2JzZXJ2YWJsZS5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRnZXRDb3VudHJpZXNEYXRhKCk6T2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5jb3VudHJpZXNBcGkoKSkucGlwZShcclxuXHRcdFx0c2hhcmVSZXBsYXkoMSksXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6YW55KSA9PiB7XHJcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhyZXNwb25zZSk7XHJcblx0XHRcdFx0Y29uc3QgZGF0YSA9IHJlc3BvbnNlLl9lbWJlZGRlZC5pdGVtcztcclxuXHRcdFx0XHR0aGlzLmNvdW50cmllc1N1YmplY3QubmV4dChkYXRhKVxyXG5cdFx0XHRcdGNvbnN0IGRvY3VtZW50VHlwZXNMb2NhbGUgPSBkYXRhLmZpbmQoKHJlczogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRyZXR1cm4gcmVzLmNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKSA9PSB0aGlzLmFwaUNvbnN0cy5MT0NBTEUudG9Mb2NhbGVMb3dlckNhc2UoKS5zcGxpdCgnXycpWzFdXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0XHRjb25zdCBkb2N1bWVudFR5cGVzRGF0YSA9IGRvY3VtZW50VHlwZXNMb2NhbGVbJ2RvY3VtZW50VHlwZXMnXVxyXG5cdFx0XHRcdHRoaXMuZG9jdW1lbnRUeXBlc1N1YmplY3QubmV4dChkb2N1bWVudFR5cGVzRGF0YSlcclxuXHRcdFx0fSkpLnN1YnNjcmliZSgpO1xyXG5cclxuXHRcdFx0aWYodGhpcy5leGNsdWRlZENvdW50cmllcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0dGhpcy5jb3VudHJpZXMkID0gdGhpcy5jb3VudHJpZXMkLnBpcGUoXHJcblx0XHRcdFx0XHRtYXAoY291bnRyaWVzID0+IGNvdW50cmllcy5maWx0ZXIoY291bnRyeSA9PiAhdGhpcy5leGNsdWRlZENvdW50cmllcy5pbmNsdWRlcyhjb3VudHJ5LmNvZGUpKSlcclxuXHRcdFx0XHQpXHJcblx0XHRcdH1cclxuXHRcdFx0aWYodGhpcy5hbGxvd2VkQ291bnRyaWVzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHR0aGlzLmNvdW50cmllcyQgPSB0aGlzLmNvdW50cmllcyQucGlwZShcclxuXHRcdFx0XHRcdG1hcChjb3VudHJpZXMgPT4gY291bnRyaWVzLmZpbHRlcihjb3VudHJ5ID0+IHRoaXMuYWxsb3dlZENvdW50cmllcy5pbmNsdWRlcyhjb3VudHJ5LmNvZGUpKSlcclxuXHRcdFx0XHQpXHJcblx0XHRcdH1cclxuXHRcdFxyXG5cdFx0cmV0dXJuIHRoaXMuY291bnRyaWVzJDtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQ2FtYmlhIGxhIGxpc3RhIGRlIHByb3ZpbmNpYXMgc2VndW4gZWwgY29kaWdvIGRlbCBwYcOtcy5cclxuXHQgKiBAcGFyYW0gY29kZSBcclxuXHQgKi9cclxuXHRvbkNvdW50cnlTZWxlY3RlZCA9IChjb2RlOnN0cmluZykgPT4ge1xyXG5cdFx0Y29uc3QgcHJvdmluY2VzID0gdGhpcy5jb3VudHJpZXNTdWJqZWN0LnZhbHVlLmZpbmQocHJvdmluY2UgPT4gcHJvdmluY2UuY29kZSA9PSBjb2RlKS5wcm92aW5jZXM7XHJcblx0XHR0aGlzLnByb3ZpbmNlc1N1YmplY3QubmV4dChwcm92aW5jZXMpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBQYXJhIGVsIGZ1dHVybywgY3VhbmRvIGhheWEgcXVlIGFwbGljYXIgYWxndW4gZm9ybWF0byBhbnRlcyBkZSBlbnZpYXIgZWwgZm9ybXVsYXJpby5cclxuXHQgKiBAcGFyYW0gcmVzcG9uc2Vfb2JqIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByZXBhcmVEYXRhKHJlc3BvbnNlX29iajogYW55KSB7XHJcblx0XHRyZXR1cm4gcmVzcG9uc2Vfb2JqXHJcblx0fVxyXG5cclxufVxyXG4iXX0=
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2Zvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFckU7O0dBRUc7QUFJSCxNQUFNLE9BQU8sV0FBVztJQUNmLFNBQVMsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUE7SUFDNUQsVUFBVSxHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUV2RCxnQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBUSxFQUFFLENBQUMsQ0FBQztJQUNsRCxnQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBUSxFQUFFLENBQUMsQ0FBQztJQUMvQyxvQkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBUSxFQUFFLENBQUMsQ0FBQztJQUU1RCxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9DLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEQsY0FBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVwRSxTQUFTO0lBQ1Q7OztPQUdHO0lBQ0ksc0JBQXNCLEtBQUssT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSx3QkFB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QUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFBO0lBQ0Q7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxZQUFpQjtRQUM1QixPQUFPLFlBQVksQ0FBQTtJQUNwQixDQUFDO3dHQXRGVyxXQUFXOzRHQUFYLFdBQVcsY0FGWCxNQUFNOzs0RkFFTixXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBpQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBlbmNhcmdhZG8gZGUgbWFuZWphciB0b2RvIGFxdWVsbG8gcmVsYWNpb25hZG8gY29uIGxvcyBmb3JtdWxhcmlvcyBkZW50cm8gZGUgbGEgYXBsaWNhY2nDs24uXG4gKi9cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1TZXJ2aWNlIHtcblx0cHJpdmF0ZSBhcGlDb25zdHM6IEFwaUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQXBpQ29uc3RhbnRzU2VydmljZSlcblx0cHJpdmF0ZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSA9IGluamVjdChDb25uZWN0aW9uU2VydmljZSlcbiBcdFxuXHRwcm90ZWN0ZWQgY291bnRyaWVzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcblx0cHJvdGVjdGVkIHByb3ZpbmNlc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgcHJvdGVjdGVkIGRvY3VtZW50VHlwZXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuXHRcblx0cHVibGljIGNvdW50cmllcyQgPSB0aGlzLmNvdW50cmllc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIHByb3ZpbmNlcyQgPSB0aGlzLnByb3ZpbmNlc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGRvY3VtZW50VHlwZXMkID0gdGhpcy5kb2N1bWVudFR5cGVzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuXHQvL0FQSSBVUkxcblx0LyoqXG5cdCAqIFJldG9ybmEgdW5hIHVybCBwYXJhIGVudmlhciBsb3MgZGF0b3MgZGUgdW4gZm9ybXVsYXJpbyBkZSBjb250YWN0by5cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwdWJsaWMgY29udGFjdEZvcm1SZXNwb25zZUFQSSgpIHsgcmV0dXJuIGAke3RoaXMuYXBpQ29uc3RzLkNNU19VUkx9JHt0aGlzLmFwaUNvbnN0cy5MT0NBTEV9L2NvbnRhY3QtZm9ybS9yZXNwb25zZWAgfVxuXHQvKipcblx0ICogUmV0b3JuYSB1bmEgdXJsIHBhcmEgZWwgZW5kcG9pbnQgcXVlIG9idGluZW4gbG9zIHBhaXNlcy5cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwdWJsaWMgY291bnRyaWVzQXBpKCkgeyByZXR1cm4gJ3Nob3AtYXBpLycgKyB0aGlzLmFwaUNvbnN0cy5DSEFOTkVMICsgJy9jb3VudHJpZXMnIH07XG5cblx0Y29uc3RydWN0b3IoKSB7IH1cblx0LyoqXG5cdCAqIEVudmlhIGVuIGZvcm11bGFyaW8uXG5cdCAqIEBwYXJhbSByZXNwb25zZV9vYmogXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0c2VuZFJlc3BvbnNlKHJlc3BvbnNlX29iajogYW55KSB7XG5cdFx0cmV0dXJuIHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMuY29udGFjdEZvcm1SZXNwb25zZUFQSSgpLCB0aGlzLnByZXBhcmVEYXRhKHJlc3BvbnNlX29iaikpXG5cdH1cblxuXHQvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gY29udGllbmUgdW4gYXJyZWdsbyBkZSBzdHJpbmcgY3V5byBjb250ZW5pZG8gc29uIGxvcyBjb2RpZ29zIGRlIGxvcyBwYWlzZXMgYSBleGNsdWlyLlxuICAgICAqIEBleGFtcGxlIFsnR0InXVxuICAgICAqL1xuICAgIHB1YmxpYyBleGNsdWRlZENvdW50cmllczogc3RyaW5nW10gPSBbXVxuIFx0cHVibGljIGFsbG93ZWRDb3VudHJpZXM6IHN0cmluZ1tdID0gW107XG5cdC8qKlxuXHQgKiBPYnRpZW5lIGxvcyBwYWlzZXMgeSBsb3MgZ3VhcmRhIGVuIHVuIG9ic2VydmFibGUuXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0Z2V0Q291bnRyaWVzRGF0YSgpOk9ic2VydmFibGU8YW55PiB7XG5cdFx0dGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmNvdW50cmllc0FwaSgpKS5waXBlKFxuXHRcdFx0c2hhcmVSZXBsYXkoMSksXG5cdFx0XHRtYXAoKHJlc3BvbnNlOmFueSkgPT4ge1xuXHRcdFx0XHQvL2NvbnNvbGUubG9nKHJlc3BvbnNlKTtcblx0XHRcdFx0Y29uc3QgZGF0YSA9IHJlc3BvbnNlLl9lbWJlZGRlZC5pdGVtcztcblx0XHRcdFx0dGhpcy5jb3VudHJpZXNTdWJqZWN0Lm5leHQoZGF0YSlcblx0XHRcdFx0Y29uc3QgZG9jdW1lbnRUeXBlc0xvY2FsZSA9IGRhdGEuZmluZCgocmVzOiBhbnkpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gcmVzLmNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKSA9PSB0aGlzLmFwaUNvbnN0cy5MT0NBTEUudG9Mb2NhbGVMb3dlckNhc2UoKS5zcGxpdCgnXycpWzFdXG5cdFx0XHRcdH0pXG5cdFx0XHRcdGNvbnN0IGRvY3VtZW50VHlwZXNEYXRhID0gZG9jdW1lbnRUeXBlc0xvY2FsZVsnZG9jdW1lbnRUeXBlcyddXG5cdFx0XHRcdHRoaXMuZG9jdW1lbnRUeXBlc1N1YmplY3QubmV4dChkb2N1bWVudFR5cGVzRGF0YSlcblx0XHRcdH0pKS5zdWJzY3JpYmUoKTtcblxuXHRcdFx0aWYodGhpcy5leGNsdWRlZENvdW50cmllcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRoaXMuY291bnRyaWVzJCA9IHRoaXMuY291bnRyaWVzJC5waXBlKFxuXHRcdFx0XHRcdG1hcChjb3VudHJpZXMgPT4gY291bnRyaWVzLmZpbHRlcihjb3VudHJ5ID0+ICF0aGlzLmV4Y2x1ZGVkQ291bnRyaWVzLmluY2x1ZGVzKGNvdW50cnkuY29kZSkpKVxuXHRcdFx0XHQpXG5cdFx0XHR9XG5cdFx0XHRpZih0aGlzLmFsbG93ZWRDb3VudHJpZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0aGlzLmNvdW50cmllcyQgPSB0aGlzLmNvdW50cmllcyQucGlwZShcblx0XHRcdFx0XHRtYXAoY291bnRyaWVzID0+IGNvdW50cmllcy5maWx0ZXIoY291bnRyeSA9PiB0aGlzLmFsbG93ZWRDb3VudHJpZXMuaW5jbHVkZXMoY291bnRyeS5jb2RlKSkpXG5cdFx0XHRcdClcblx0XHRcdH1cblx0XHRcblx0XHRyZXR1cm4gdGhpcy5jb3VudHJpZXMkO1xuXHR9XG5cdC8qKlxuXHQgKiBDYW1iaWEgbGEgbGlzdGEgZGUgcHJvdmluY2lhcyBzZWd1biBlbCBjb2RpZ28gZGVsIHBhw61zLlxuXHQgKiBAcGFyYW0gY29kZSBcblx0ICovXG5cdG9uQ291bnRyeVNlbGVjdGVkID0gKGNvZGU6c3RyaW5nKSA9PiB7XG5cdFx0Y29uc3QgcHJvdmluY2VzID0gdGhpcy5jb3VudHJpZXNTdWJqZWN0LnZhbHVlLmZpbmQocHJvdmluY2UgPT4gcHJvdmluY2UuY29kZSA9PSBjb2RlKS5wcm92aW5jZXM7XG5cdFx0dGhpcy5wcm92aW5jZXNTdWJqZWN0Lm5leHQocHJvdmluY2VzKTtcblx0fVxuXHQvKipcblx0ICogUGFyYSBlbCBmdXR1cm8sIGN1YW5kbyBoYXlhIHF1ZSBhcGxpY2FyIGFsZ3VuIGZvcm1hdG8gYW50ZXMgZGUgZW52aWFyIGVsIGZvcm11bGFyaW8uXG5cdCAqIEBwYXJhbSByZXNwb25zZV9vYmogXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJlcGFyZURhdGEocmVzcG9uc2Vfb2JqOiBhbnkpIHtcblx0XHRyZXR1cm4gcmVzcG9uc2Vfb2JqXG5cdH1cblxufVxuIl19
@@ -24,6 +24,4 @@ export * from './order-utility.service';
24
24
  export * from './payment.service';
25
25
  export * from './test.service';
26
26
  export * from './orders.service';
27
- export * from './runtime-config.service';
28
- export * from './base-api.service';
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL29wdGlvbnMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGFyYW1ldGVycy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9ibG9ja3Muc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYmxvY2tzLXJlcG9zaXRvcnkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYW5hbHl0aWNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9jdXJyZW5jeS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9jaGFubmVsLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RvYXN0LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlLWNhcHRjaGEuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcHJvZHVjdHMuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGFnaW5hdGlvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXJzLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Byb2R1Y3QtZGV0YWlsLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NhcnQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbmd4LWxvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2hlY2tvdXQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYWRkcmVzc2luZy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9hdXRoLnN0b3JhZ2Uuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2hpcG1lbnQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vb3JkZXItdXRpbGl0eS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9wYXltZW50LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Rlc3Quc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vb3JkZXJzLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3J1bnRpbWUtY29uZmlnLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Jhc2UtYXBpLnNlcnZpY2UnOyJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vb3B0aW9ucy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcGFyYW1ldGVycy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYmxvY2tzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9ibG9ja3MtcmVwb3NpdG9yeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYW5hbHl0aWNzJztcbmV4cG9ydCAqIGZyb20gJy4vY3VycmVuY3kuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NoYW5uZWwuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3RvYXN0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9yZS1jYXB0Y2hhLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9kdWN0cy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcGFnaW5hdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVycy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvZHVjdC1kZXRhaWwuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NhcnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL25neC1sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jaGVja291dC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYWRkcmVzc2luZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aC5zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zaGlwbWVudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vb3JkZXItdXRpbGl0eS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcGF5bWVudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdGVzdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vb3JkZXJzLnNlcnZpY2UnOyJdfQ==
@@ -55,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
55
55
  providedIn: 'root'
56
56
  }]
57
57
  }], ctorParameters: () => [] });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRW5EOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCOztPQUVHO0lBQ0ssY0FBYyxHQUFrQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFOUQsZ0JBQWdCLENBQUM7SUFDakI7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxHQUFXO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLEdBQVcsRUFBRSxLQUFVLEVBQUUsV0FBZSxFQUFDLElBQUksRUFBQyxHQUFHLEVBQUM7UUFDeEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxHQUFXLEVBQUUsV0FBZSxHQUFHO1FBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsR0FBRyxDQUFDLEtBQWE7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQzt3R0F4Q1UsbUJBQW1COzRHQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmFnZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG4vKipcclxuICogQWRhcHRlciB1c2FkbyBwYXJhIHN0b3JhZ2VhciBsb3MgZGF0b3MuXHJcbiAqIEBjbGFzcyBMb2NhbFN0b3JhZ2VTZXJ2aWNlXHJcbiAqIEBpbXBsZW1lbnRzIHtTdG9yYWdlfVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlU2VydmljZSBpbXBsZW1lbnRzIFN0b3JhZ2Uge1xyXG4gIC8qKlxyXG4gICAqIFNlcnZpY2lvIHVzYWRvIHBhcmEgZ3VhcmRhciBsb3MgZGF0b3MgZW4gbGFzIGNvb2tpZXNcclxuICAgKi9cclxuICBwcml2YXRlIF9jb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlID0gaW5qZWN0KENvb2tpZVNlcnZpY2UpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG4gIC8qKlxyXG4gICAqIE9idGllbmUgZWwgaXRlbSBkZWwgU3RvcmFnZVxyXG4gICAqIEBwYXJhbSBrZXkgQ2xhdmUgcGFyYSBhY2NlZGVyIGFsIHZhbG9yXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgZ2V0SXRlbShrZXk6IHN0cmluZyk6c3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9jb29raWVTZXJ2aWNlLmdldChrZXkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHdWFyZGEgdW4gZGF0byBlbiBlbCBzdG9yYWdlLlxyXG4gICAqIEBwYXJhbSBrZXkgQ2xhdmUgcXVlIHNlIGFzb2NpYSBhbCB2YWxvclxyXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWxvciBhIGd1YXJkYXJcclxuICAgKiBAcGFyYW0gbWV0YWRhdGEgT3BjaW9uZXMgZXh0cmEgcXVlIHB1ZWRlIG5lY2VzaXRhciBlbCBzZXJ2aWNpby5cclxuICAgKi9cclxuICBzZXRJdGVtKGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBtZXRhZGF0YTphbnkgPSB7cGF0aDonLyd9KSB7XHJcbiAgICB0aGlzLl9jb29raWVTZXJ2aWNlLnNldChrZXksIHZhbHVlLCBtZXRhZGF0YSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJlbXVldmUgZWwgaXRlbSBkZWwgc3RvcmFnZS5cclxuICAgKiBAcGFyYW0ga2V5IENsYXZlIGRlbCBpdGVtIGRlbCBzdG9yYWdlIGEgZWxpbWluYXIuXHJcbiAgICogQHBhcmFtIG1ldGFkYXRhIE9wY2lvbmVzIGV4dHJhIHF1ZSBwdWVkZSBuZWNlc2l0YXIgZWwgc2VydmljaW8uXHJcbiAgICovXHJcbiAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZywgbWV0YWRhdGE6YW55ID0gJy8nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb29raWVTZXJ2aWNlLmRlbGV0ZShrZXksIG1ldGFkYXRhKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTGltcGlhIGVsIFN0b3JhZ2UuXHJcbiAgICovXHJcbiAgY2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb29raWVTZXJ2aWNlLmRlbGV0ZUFsbCgpO1xyXG4gIH1cclxuICBrZXkoaW5kZXg6IG51bWJlcik6IHN0cmluZyB8IG51bGwge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRW5EOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCOztPQUVHO0lBQ0ssY0FBYyxHQUFrQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFOUQsZ0JBQWdCLENBQUM7SUFDakI7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxHQUFXO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLEdBQVcsRUFBRSxLQUFVLEVBQUUsV0FBZSxFQUFDLElBQUksRUFBQyxHQUFHLEVBQUM7UUFDeEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxHQUFXLEVBQUUsV0FBZSxHQUFHO1FBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsR0FBRyxDQUFDLEtBQWE7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQzt3R0F4Q1UsbUJBQW1COzRHQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG4vKipcbiAqIEFkYXB0ZXIgdXNhZG8gcGFyYSBzdG9yYWdlYXIgbG9zIGRhdG9zLlxuICogQGNsYXNzIExvY2FsU3RvcmFnZVNlcnZpY2VcbiAqIEBpbXBsZW1lbnRzIHtTdG9yYWdlfVxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIGltcGxlbWVudHMgU3RvcmFnZSB7XG4gIC8qKlxuICAgKiBTZXJ2aWNpbyB1c2FkbyBwYXJhIGd1YXJkYXIgbG9zIGRhdG9zIGVuIGxhcyBjb29raWVzXG4gICAqL1xuICBwcml2YXRlIF9jb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlID0gaW5qZWN0KENvb2tpZVNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG4gIC8qKlxuICAgKiBPYnRpZW5lIGVsIGl0ZW0gZGVsIFN0b3JhZ2VcbiAgICogQHBhcmFtIGtleSBDbGF2ZSBwYXJhIGFjY2VkZXIgYWwgdmFsb3JcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBnZXRJdGVtKGtleTogc3RyaW5nKTpzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jb29raWVTZXJ2aWNlLmdldChrZXkpO1xuICB9XG4gIC8qKlxuICAgKiBHdWFyZGEgdW4gZGF0byBlbiBlbCBzdG9yYWdlLlxuICAgKiBAcGFyYW0ga2V5IENsYXZlIHF1ZSBzZSBhc29jaWEgYWwgdmFsb3JcbiAgICogQHBhcmFtIHZhbHVlIFZhbG9yIGEgZ3VhcmRhclxuICAgKiBAcGFyYW0gbWV0YWRhdGEgT3BjaW9uZXMgZXh0cmEgcXVlIHB1ZWRlIG5lY2VzaXRhciBlbCBzZXJ2aWNpby5cbiAgICovXG4gIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIG1ldGFkYXRhOmFueSA9IHtwYXRoOicvJ30pIHtcbiAgICB0aGlzLl9jb29raWVTZXJ2aWNlLnNldChrZXksIHZhbHVlLCBtZXRhZGF0YSk7XG4gIH1cbiAgLyoqXG4gICAqIFJlbXVldmUgZWwgaXRlbSBkZWwgc3RvcmFnZS5cbiAgICogQHBhcmFtIGtleSBDbGF2ZSBkZWwgaXRlbSBkZWwgc3RvcmFnZSBhIGVsaW1pbmFyLlxuICAgKiBAcGFyYW0gbWV0YWRhdGEgT3BjaW9uZXMgZXh0cmEgcXVlIHB1ZWRlIG5lY2VzaXRhciBlbCBzZXJ2aWNpby5cbiAgICovXG4gIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcsIG1ldGFkYXRhOmFueSA9ICcvJyk6IHZvaWQge1xuICAgIHRoaXMuX2Nvb2tpZVNlcnZpY2UuZGVsZXRlKGtleSwgbWV0YWRhdGEpO1xuICB9XG4gIC8qKlxuICAgKiBMaW1waWEgZWwgU3RvcmFnZS5cbiAgICovXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuX2Nvb2tpZVNlcnZpY2UuZGVsZXRlQWxsKCk7XG4gIH1cbiAga2V5KGluZGV4OiBudW1iZXIpOiBzdHJpbmcgfCBudWxsIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxufVxuIl19
@@ -63,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
63
63
  providedIn: 'root'
64
64
  }]
65
65
  }], ctorParameters: () => [] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWxvY2FsLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9uZ3gtbG9jYWwtc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFcEQ7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFDbEM7O09BRUc7SUFDSyxRQUFRLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRWxELGdCQUFpQixDQUFDO0lBRVYsY0FBYyxDQUFDLEdBQVE7UUFDOUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ2hDLElBQUksRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDbEMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2FBQzNCLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsR0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxHQUFXLEVBQUUsS0FBVSxFQUFFLFdBQWdCLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtRQUM3RCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEdBQVcsRUFBRSxRQUFjO1FBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxLQUFLO1FBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELEdBQUcsQ0FBQyxLQUFhO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM1QyxDQUFDO3dHQWxEVyxzQkFBc0I7NEdBQXRCLHNCQUFzQixjQUZ0QixNQUFNOzs0RkFFTixzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFN0b3JhZ2VNYXAgfSBmcm9tICdAbmd4LXB3YS9sb2NhbC1zdG9yYWdlJztcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbi8qKlxyXG4gKiBBZGFwdGVyIHVzYWRvIHBhcmEgc3RvcmFnZWFyIGxvcyBkYXRvcy5cclxuICogQGNsYXNzIE5neExvY2FsU3RvcmFnZVNlcnZpY2VcclxuICogQGltcGxlbWVudHMge1N0b3JhZ2V9XHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hMb2NhbFN0b3JhZ2VTZXJ2aWNlIGltcGxlbWVudHMgU3RvcmFnZSB7XHJcblx0LyoqXHJcblx0ICogU2VydmljaW8gdXNhZG8gcGFyYSBndWFyZGFyIGxvcyBkYXRvcyBlbiBlbCBsb2NhbHN0b3JhZ2UuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfc3RvcmFnZTogU3RvcmFnZU1hcCA9IGluamVjdChTdG9yYWdlTWFwKTtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7ICB9XHJcblxyXG5cdHByaXZhdGUgZ2V0SXRlbVByb21pc2Uoa2V5OiBhbnkpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdHRoaXMuX3N0b3JhZ2UuZ2V0KGtleSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAoZGF0YTogYW55KSA9PiByZXNvbHZlKGRhdGEpLFxyXG5cdFx0XHRcdGVycm9yOiAoZXJyKSA9PiByZWplY3QoZXJyKSxcclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE9idGllbmUgZWwgaXRlbSBkZWwgU3RvcmFnZVxyXG5cdCAqIEBwYXJhbSBrZXkgQ2xhdmUgcGFyYSBhY2NlZGVyIGFsIHZhbG9yXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0Z2V0SXRlbShrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5fc3RvcmFnZS5nZXQoa2V5KTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogR3VhcmRhIHVuIGRhdG8gZW4gZWwgc3RvcmFnZS5cclxuXHQgKiBAcGFyYW0ga2V5IENsYXZlIHF1ZSBzZSBhc29jaWEgYWwgdmFsb3JcclxuXHQgKiBAcGFyYW0gdmFsdWUgVmFsb3IgYSBndWFyZGFyXHJcblx0ICogQHBhcmFtIG1ldGFkYXRhIE9wY2lvbmVzIGV4dHJhIHF1ZSBwdWVkZSBuZWNlc2l0YXIgZWwgc2VydmljaW8uXHJcblx0ICovXHJcblx0c2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgbWV0YWRhdGE6IGFueSA9IHsgcGF0aDogJy8nIH0pIHtcclxuXHRcdHRoaXMuX3N0b3JhZ2Uuc2V0KGtleSwgdmFsdWUpLnN1YnNjcmliZSgoKSA9PiB7IH0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZW11ZXZlIGVsIGl0ZW0gZGVsIHN0b3JhZ2UuXHJcblx0ICogQHBhcmFtIGtleSBDbGF2ZSBkZWwgaXRlbSBkZWwgc3RvcmFnZSBhIGVsaW1pbmFyLlxyXG5cdCAqIEBwYXJhbSBtZXRhZGF0YSBPcGNpb25lcyBleHRyYSBxdWUgcHVlZGUgbmVjZXNpdGFyIGVsIHNlcnZpY2lvLlxyXG5cdCAqL1xyXG5cdHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcsIG1ldGFkYXRhPzogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLl9zdG9yYWdlLmRlbGV0ZShrZXkpLnN1YnNjcmliZSgoKSA9PiB7IH0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBMaW1waWEgZWwgU3RvcmFnZS5cclxuXHQgKi9cclxuXHRjbGVhcigpOiB2b2lkIHtcclxuXHRcdHRoaXMuX3N0b3JhZ2UuY2xlYXIoKS5zdWJzY3JpYmUoKCkgPT4geyB9KTtcclxuXHR9XHJcblx0a2V5KGluZGV4OiBudW1iZXIpOiBzdHJpbmcgfCBudWxsIHtcclxuXHRcdHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcclxuXHR9XHJcblxyXG59XHJcbiJdfQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWxvY2FsLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9uZ3gtbG9jYWwtc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFcEQ7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFDbEM7O09BRUc7SUFDSyxRQUFRLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRWxELGdCQUFpQixDQUFDO0lBRVYsY0FBYyxDQUFDLEdBQVE7UUFDOUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ2hDLElBQUksRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDbEMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2FBQzNCLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsR0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxHQUFXLEVBQUUsS0FBVSxFQUFFLFdBQWdCLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtRQUM3RCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEdBQVcsRUFBRSxRQUFjO1FBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxLQUFLO1FBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELEdBQUcsQ0FBQyxLQUFhO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM1QyxDQUFDO3dHQWxEVyxzQkFBc0I7NEdBQXRCLHNCQUFzQixjQUZ0QixNQUFNOzs0RkFFTixzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JhZ2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFN0b3JhZ2VNYXAgfSBmcm9tICdAbmd4LXB3YS9sb2NhbC1zdG9yYWdlJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuLyoqXG4gKiBBZGFwdGVyIHVzYWRvIHBhcmEgc3RvcmFnZWFyIGxvcyBkYXRvcy5cbiAqIEBjbGFzcyBOZ3hMb2NhbFN0b3JhZ2VTZXJ2aWNlXG4gKiBAaW1wbGVtZW50cyB7U3RvcmFnZX1cbiAqL1xuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTmd4TG9jYWxTdG9yYWdlU2VydmljZSBpbXBsZW1lbnRzIFN0b3JhZ2Uge1xuXHQvKipcblx0ICogU2VydmljaW8gdXNhZG8gcGFyYSBndWFyZGFyIGxvcyBkYXRvcyBlbiBlbCBsb2NhbHN0b3JhZ2UuXG5cdCAqL1xuXHRwcml2YXRlIF9zdG9yYWdlOiBTdG9yYWdlTWFwID0gaW5qZWN0KFN0b3JhZ2VNYXApO1xuXG5cdGNvbnN0cnVjdG9yKCkgeyAgfVxuXG5cdHByaXZhdGUgZ2V0SXRlbVByb21pc2Uoa2V5OiBhbnkpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0dGhpcy5fc3RvcmFnZS5nZXQoa2V5KS5zdWJzY3JpYmUoe1xuXHRcdFx0XHRuZXh0OiAoZGF0YTogYW55KSA9PiByZXNvbHZlKGRhdGEpLFxuXHRcdFx0XHRlcnJvcjogKGVycikgPT4gcmVqZWN0KGVyciksXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBPYnRpZW5lIGVsIGl0ZW0gZGVsIFN0b3JhZ2Vcblx0ICogQHBhcmFtIGtleSBDbGF2ZSBwYXJhIGFjY2VkZXIgYWwgdmFsb3Jcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRnZXRJdGVtKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcblx0XHRyZXR1cm4gdGhpcy5fc3RvcmFnZS5nZXQoa2V5KTtcblx0fVxuXHQvKipcblx0ICogR3VhcmRhIHVuIGRhdG8gZW4gZWwgc3RvcmFnZS5cblx0ICogQHBhcmFtIGtleSBDbGF2ZSBxdWUgc2UgYXNvY2lhIGFsIHZhbG9yXG5cdCAqIEBwYXJhbSB2YWx1ZSBWYWxvciBhIGd1YXJkYXJcblx0ICogQHBhcmFtIG1ldGFkYXRhIE9wY2lvbmVzIGV4dHJhIHF1ZSBwdWVkZSBuZWNlc2l0YXIgZWwgc2VydmljaW8uXG5cdCAqL1xuXHRzZXRJdGVtKGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBtZXRhZGF0YTogYW55ID0geyBwYXRoOiAnLycgfSkge1xuXHRcdHRoaXMuX3N0b3JhZ2Uuc2V0KGtleSwgdmFsdWUpLnN1YnNjcmliZSgoKSA9PiB7IH0pO1xuXHR9XG5cdC8qKlxuXHQgKiBSZW11ZXZlIGVsIGl0ZW0gZGVsIHN0b3JhZ2UuXG5cdCAqIEBwYXJhbSBrZXkgQ2xhdmUgZGVsIGl0ZW0gZGVsIHN0b3JhZ2UgYSBlbGltaW5hci5cblx0ICogQHBhcmFtIG1ldGFkYXRhIE9wY2lvbmVzIGV4dHJhIHF1ZSBwdWVkZSBuZWNlc2l0YXIgZWwgc2VydmljaW8uXG5cdCAqL1xuXHRyZW1vdmVJdGVtKGtleTogc3RyaW5nLCBtZXRhZGF0YT86IGFueSk6IHZvaWQge1xuXHRcdHRoaXMuX3N0b3JhZ2UuZGVsZXRlKGtleSkuc3Vic2NyaWJlKCgpID0+IHsgfSk7XG5cdH1cblx0LyoqXG5cdCAqIExpbXBpYSBlbCBTdG9yYWdlLlxuXHQgKi9cblx0Y2xlYXIoKTogdm9pZCB7XG5cdFx0dGhpcy5fc3RvcmFnZS5jbGVhcigpLnN1YnNjcmliZSgoKSA9PiB7IH0pO1xuXHR9XG5cdGtleShpbmRleDogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuXHR9XG5cbn1cbiJdfQ==
@@ -302,4 +302,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
302
302
  providedIn: 'root'
303
303
  }]
304
304
  }], ctorParameters: () => [] });
305
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL29wdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxXQUFXLEVBQVEsTUFBTSxNQUFNLENBQUM7QUFDM0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUd6RTs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sY0FBYztJQUMxQjs7T0FFRztJQUNLLFVBQVUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMvQzs7T0FFRztJQUNLLFNBQVMsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNqRDs7T0FFRztJQUNLLFlBQVksR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNuRDs7T0FFRztJQUNLLGlCQUFpQixHQUFHLElBQUksZUFBZSxDQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELFdBQVcsR0FBMkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BGOztPQUVHO0lBQ0ssZUFBZSxHQUFHLElBQUksZUFBZSxDQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELFNBQVMsR0FBMEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvRTs7T0FFRztJQUNLLGlCQUFpQixHQUFHLElBQUksZUFBZSxDQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELFdBQVcsR0FBNEIs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QUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtxQkFDakksQ0FBQyxDQUFDO2lCQUNILENBQUM7Z0JBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQTtZQUNGLE9BQU8sTUFBTSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBNVNXLGNBQWM7NEdBQWQsY0FBYyxjQUZkLE1BQU07OzRGQUVOLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjYXRjaEVycm9yLCBtYXAsIE9ic2VydmFibGUsIG9mLCBzaGFyZVJlcGxheSwgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlLCBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEF0dHJpYnV0ZSwgQ2F0ZWdvcnksIEZBUSwgU2VjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi9jbGFzc2VzJztcclxuLyoqXHJcbiAqIEVzdGUgc2VydmljaW8gcGVybWl0ZSBtYW5lamEgbGFzIENhdGVnb3JpYXMsIFNlY2Npb25lcyB5IEF0cmlidXRvcyBjb21vIG1lbnVlcyBcclxuICogcGFyYSBsYSBhcGxpY2FjacOzbi4gXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPcHRpb25zU2VydmljZSB7XHJcblx0LyoqXHJcblx0ICogTWFuZWphIGxhcyBwZXRpY2lvbmVzIGEgbGEgQVBJXHJcblx0ICovXHJcblx0cHJpdmF0ZSBjb25uZWN0aW9uID0gaW5qZWN0KENvbm5lY3Rpb25TZXJ2aWNlKTtcclxuXHQvKipcclxuXHQgKiBDb25zdGFudGVzIGRlbCBjb3JlXHJcblx0ICovXHJcblx0cHJpdmF0ZSBjb25zdGFudHMgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cdC8qKlxyXG5cdCAqIENvbnN0YW50ZXMgZGUgbGEgQVBJXHJcblx0ICovXHJcblx0cHJpdmF0ZSBhcGlDb25zdGFudHMgPSBpbmplY3QoQXBpQ29uc3RhbnRzU2VydmljZSk7XHJcblx0LyoqXHJcblx0ICogTWFuZWphIGxvcyBjYW1iaW9zIGVuIGxhcyBjYXRlZ29yaWFzXHJcblx0ICovXHJcblx0cHJpdmF0ZSBjYXRlZ29yaWVzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2F0ZWdvcnlbXT4oW10pO1xyXG5cdHByaXZhdGUgY2F0ZWdvcmllcyQ6IE9ic2VydmFibGU8Q2F0ZWdvcnlbXT4gPSB0aGlzLmNhdGVnb3JpZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cdC8qKlxyXG5cdCAqIE1hbmVqYSBsb3MgY2FtYmlvcyBlbiBsYXMgc2VjY2lvbmVzXHJcblx0ICovXHJcblx0cHJpdmF0ZSBzZWN0aW9uc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlY3Rpb25bXT4oW10pO1xyXG5cdHByaXZhdGUgc2VjdGlvbnMkOiBPYnNlcnZhYmxlPFNlY3Rpb25bXT4gPSB0aGlzLnNlY3Rpb25zU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHQvKipcclxuXHQgKiBNYW5lamEgbG9zIGNhbWJpb3MgZW4gbG9zIGF0cmlidXRvc1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgYXR0cmlidXRlc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF0dHJpYnV0ZVtdPihbXSk7XHJcblx0cHJpdmF0ZSBhdHRyaWJ1dGVzJDogT2JzZXJ2YWJsZTxBdHRyaWJ1dGVbXT4gPSB0aGlzLmF0dHJpYnV0ZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuXHQvL0FQSSBVUkxTXHJcblx0cHJpdmF0ZSByZWFkb25seSBTSE9QX0NIQU5ORUxfQVBJID0gYCR7dGhpcy5hcGlDb25zdGFudHMuU0hPUF9BUElfVVJMfSR7dGhpcy5hcGlDb25zdGFudHMuQ0hBTk5FTH0vYDtcclxuXHRwcml2YXRlIHJlYWRvbmx5IENNU19DSEFOTkVMX0FQSSA9IGAke3RoaXMuYXBpQ29uc3RhbnRzLkNNU19VUkx9JHt0aGlzLmFwaUNvbnN0YW50cy5DSEFOTkVMfS9gO1xyXG5cdC8qKlxyXG5cdCAqIERldnVlbHZlIGxhIFVSTCBwYXJhIG9idGVuZXIgbGFzIGNhdGVnb3JpYXMuXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSB0YXhvbnNBcGkoKSB7IHJldHVybiBgJHt0aGlzLlNIT1BfQ0hBTk5FTF9BUEl9dGF4b25zLz9sb2NhbGU9JHt0aGlzLmFwaUNvbnN0YW50cy5MT0NBTEV9YCB9O1xyXG5cdC8qKlxyXG5cdCAqIERldnVlbHZlIGxhIFVSTCBwYXJhIG9idGVuZXIgbGFzIHNlY2Npb25lc1xyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgc2VjdGlvbnNBcGkoKSB7IHJldHVybiBgJHt0aGlzLkNNU19DSEFOTkVMX0FQSX1zZWN0aW9ucy8/bG9jYWxlPSR7dGhpcy5hcGlDb25zdGFudHMuTE9DQUxFfWAgfTtcclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSBsYSBVUkwgcGFyYSBvYnRlbmVyIGxvcyBhdHJpYnV0b3MuIFNlIGxlIHB1ZWRlIGFwbGljYXIgZmxpdHJvcy5cclxuXHQgKiBAcGFyYW0gZmlsdGVyIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgYXR0cmlidXRlc0FwaShmaWx0ZXIgPSAnJykgeyByZXR1cm4gYCR7dGhpcy5TSE9QX0NIQU5ORUxfQVBJfXByb2R1Y3Qtc2VhcmNoL2F0dHJpYnV0ZXMvP2xvY2FsZT0ke3RoaXMuYXBpQ29uc3RhbnRzLkxPQ0FMRX0mbGltaXQ9MSZwYWdlPTEke2ZpbHRlcn1gIH07XHJcblx0cHJpdmF0ZSBmYXFzQXBpKCkgeyByZXR1cm4gJ2Ntcy8nICsgdGhpcy5hcGlDb25zdGFudHMuQ0hBTk5FTCArICcvZmFxJyB9O1xyXG4gICAgcHJpdmF0ZSBwYWdlQ29udGVudEJ5Q29kZUFwaSA9IChjb2RlOiBzdHJpbmcpID0+IHRoaXMuY21zQmFzZSgpICsgJy8nICsgdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpICsgJy9wYWdlLycgKyBjb2RlO1xyXG5cdHByaXZhdGUgY21zQmFzZSA9ICgpID0+ICdjbXMvJyArIHRoaXMuYXBpQ29uc3RhbnRzLkxPQ0FMRTtcclxuXHRjb25zdHJ1Y3RvcigpIHsgfVxyXG5cdC8qKlxyXG5cdCAqIE9idGllbmUgbGFzIGNhdGVnb3JpYXMgZGVsIGJhY2tlbmQuIFkgbG9zIG1hcGVhIHBhcmEgcXVlIHNlYSBtYXMgYW1pZ2FibGUgZWwgbWFuZWpvIGNvbW8gbWVuw7ouXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGdldENhdGVnb3JpZXMoKTogT2JzZXJ2YWJsZTxDYXRlZ29yeVtdPiB7XHJcblx0XHRpZiAodGhpcy5jYXRlZ29yaWVzU3ViamVjdC5nZXRWYWx1ZSgpLmxlbmd0aCA9PT0gMCkge1xyXG5cdFx0XHR0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMudGF4b25zQXBpKCkpLnBpcGUoXHJcblx0XHRcdFx0c2hhcmVSZXBsYXkoMSksXHJcblx0XHRcdFx0bWFwKChyZXNwb25zZTogQ2F0ZWdvcnlbXSkgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgY2F0ZWdvcmllcyA9IHRoaXMuYXBwZW5kUGF0aHModHJ1ZSwgcmVzcG9uc2UpXHJcblx0XHRcdFx0XHR0aGlzLmNhdGVnb3JpZXNTdWJqZWN0Lm5leHQoY2F0ZWdvcmllcylcclxuXHRcdFx0XHRcdHJldHVybiBjYXRlZ29yaWVzXHJcblx0XHRcdFx0fSksXHJcblx0XHRcdFx0Y2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coYEVycm9yOiAke2Vycm9yfWApXHJcblx0XHRcdFx0XHR0aGlzLmNhdGVnb3JpZXNTdWJqZWN0Lm5leHQoW10pXHJcblx0XHRcdFx0XHRyZXR1cm4gb2YoW10pXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KS5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLmNhdGVnb3JpZXMkO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBPYnRpZW5lIGxhcyBzZWNjaW9uZXMgZGVsIGJhY2tlbmQuIFkgbG9zIG1hcGVhIHBhcmEgcXVlIHNlYSBtYXMgYW1pZ2FibGUgZWwgbWFuZWpvIGNvbW8gbWVuw7ouXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGdldFNlY3Rpb25zKCk6IE9ic2VydmFibGU8U2VjdGlvbltdPiB7XHJcblx0XHRpZiAodGhpcy5zZWN0aW9uc1N1YmplY3QuZ2V0VmFsdWUoKS5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0dGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLnNlY3Rpb25zQXBpKCkpLnBpcGUoXHJcblx0XHRcdFx0c2hhcmVSZXBsYXkoMSksXHJcblx0XHRcdFx0bWFwKChyZXNwb25zZTogU2VjdGlvbltdKSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgc2VjdGlvbnMgPSByZXNwb25zZS5maWx0ZXIoKHNlY3Rpb246IFNlY3Rpb24pID0+IHNlY3Rpb24uY29kZSAhPSAnaG9tZScpXHJcblx0XHRcdFx0XHRzZWN0aW9ucyA9IHNlY3Rpb25zLm1hcCgoc2VjdGlvbjogU2VjdGlvbikgPT4gdGhpcy5hcHBlbmRTZWN0aW9uKHNlY3Rpb24pKVxyXG5cdFx0XHRcdFx0dGhpcy5zZWN0aW9uc1N1YmplY3QubmV4dChzZWN0aW9ucylcclxuXHRcdFx0XHRcdHJldHVybiBzZWN0aW9uc1xyXG5cdFx0XHRcdH0pKS5zdWJzY3JpYmUoKVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMuc2VjdGlvbnMkO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBPYnRpZW5lIGxvcyBhdHJpYnV0b3MgZGVsIGJhY2tlbmQuIFkgbG9zIG1hcGVhIHBhcmEgcXVlIHNlYSBtYXMgYW1pZ2FibGUgZWwgbWFuZWpvIGNvbW8gbWVuw7ouXHJcblx0ICogQHBhcmFtIHBhcmFtcyBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0QXR0cmlidXRlcyhwYXJhbXM/OiBhbnkpOiBPYnNlcnZhYmxlPEF0dHJpYnV0ZVtdPiB7XHJcblx0XHRpZiAodGhpcy5hdHRyaWJ1dGVzU3ViamVjdC5nZXRWYWx1ZSgpLmxlbmd0aCA9PT0gMCkge1xyXG5cdFx0XHR0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuYXR0cmlidXRlc0FwaShwYXJhbXMpKS5waXBlKFxyXG5cdFx0XHRcdHNoYXJlUmVwbGF5KDEpLFxyXG5cdFx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSB8IEF0dHJpYnV0ZSkgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgYXR0cmlidXRlcyA9IHRoaXMuYXBwZW5kUGF0aHMoZmFsc2UsIChyZXNwb25zZS5hdHRyaWJ1dGVzWzBdIHx8IHJlc3BvbnNlKSlcclxuXHRcdFx0XHRcdHRoaXMuYXR0cmlidXRlc1N1YmplY3QubmV4dChhdHRyaWJ1dGVzKVxyXG5cdFx0XHRcdFx0cmV0dXJuIGF0dHJpYnV0ZXNcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0KSkuc3Vic2NyaWJlKClcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLmF0dHJpYnV0ZXMkO1xyXG5cdH1cclxuXHJcblxyXG5cdC8vIEhFTFBFUlNcclxuXHRzbHVnaWZ5KHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG5cdFx0aWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdHJldHVybiAnJzsgLy8gbyBkZXZvbHZlciB1biBzbHVnIHBvciBkZWZlY3RvIHNpIHByZWZlcsOtc1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnLScpLnJlcGxhY2UoL1teXFx3XFwtXSsvZywgJycpO1xyXG5cdH1cdC8qKlxyXG5cdCAqIEVsaW1pbmEgbG9zIGFjZW50b3NcclxuXHQgKiBAcGFyYW0gc3RyIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcmVtb3ZlQWNjZW50cyhzdHI6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHN0ci5ub3JtYWxpemUoXCJORkRcIikucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgXCJcIik7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFJlYWxpemEgdW4gbWFwZW8gZGUgbG9zIGRhdG9zIHBhcmEgZGFybGUgdW4gZm9ybWF0byBtYXMgZW50ZW5kaWJsZSBhIGxhXHJcblx0ICogaG9yYSBkZSB1c2FyIGNvbW8gdW4gbWVuw7ouXHJcblx0ICogQHBhcmFtIGlzQ2F0ZWdvcnkgVXRpbGl6YWRvIHBhcmEgZGlmZXJlbmNpYXIgc2kgZXMgY2F0ZWdvcsOtYSBvIGF0cmlidXRvLlxyXG5cdCAqIEBwYXJhbSByZXNwb25zZSBSZXNwdWVzdGEgcXVlIG9idGllbmUgZGVsIGJhY2tlbmQgY29uIGxvcyBkYXRvcyBhIG1hcGVhci5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgYXBwZW5kUGF0aHMoaXNDYXRlZ29yeTogYm9vbGVhbiwgcmVzcG9uc2U6IGFueSkge1xyXG5cdFx0Y29uc3Qgbm9ybWFsaXplZFJlc3BvbnNlID0gQXJyYXkuaXNBcnJheShyZXNwb25zZSkgPyByZXNwb25zZSA6IFtyZXNwb25zZV07XHJcblxyXG5cdFx0Y29uc3QgcmVzdWx0ID0gbm9ybWFsaXplZFJlc3BvbnNlLm1hcCgoc3ViZWxlbWVudDogYW55KSA9PiB7XHJcblx0XHRcdGlmICghc3ViZWxlbWVudC5jaGlsZHJlbiB8fCBzdWJlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdFx0c3ViZWxlbWVudC5jaGlsZHJlbiA9IFtdO1xyXG5cdFx0XHRcdHN1YmVsZW1lbnQucGF0aCA9IGlzQ2F0ZWdvcnlcclxuXHRcdFx0XHRcdD8gdGhpcy5jb25zdGFudHMuUFJPRFVDVF9MSVNUX1JPVVRFICsgJ2NhdGVnb3JpZXMvJyArIHRoaXMuc2x1Z2lmeShzdWJlbGVtZW50LnNsdWcgPz8gc3ViZWxlbWVudC5uYW1lKVxyXG5cdFx0XHRcdFx0OiB0aGlzLmNvbnN0YW50cy5QUk9EVUNUX0xJU1RfUk9VVEUgKyAnYXR0cmlidXRlcy8nICsgdGhpcy5zbHVnaWZ5KHN1YmVsZW1lbnQuc2x1ZyA/PyBzdWJlbGVtZW50Lm5hbWUpO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHN1YmVsZW1lbnQuY2hpbGRyZW4pIHtcclxuXHRcdFx0XHRzdWJlbGVtZW50LnNsdWcgPSBzdWJlbGVtZW50LnNsdWcgfHwgdGhpcy5zbHVnaWZ5KHN1YmVsZW1lbnQubmFtZSk7XHJcblx0XHRcdFx0c3ViZWxlbWVudC5jaGlsZHJlbiA9IHRoaXMuYXBwZW5kUGF0aHMoaXNDYXRlZ29yeSwgc3ViZWxlbWVudC5jaGlsZHJlbik7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHN1YmVsZW1lbnQucGF0aCA9IGlzQ2F0ZWdvcnlcclxuXHRcdFx0XHQ/IHRoaXMuY29uc3RhbnRzLlBST0RVQ1RfTElTVF9ST1VURSArICdjYXRlZ29yaWVzLycgKyB0aGlzLnNsdWdpZnkoc3ViZWxlbWVudC5zbHVnID8/IHN1YmVsZW1lbnQubmFtZSlcclxuXHRcdFx0XHQ6IHRoaXMuY29uc3RhbnRzLlBST0RVQ1RfTElTVF9ST1VURSArICdhdHRyaWJ1dGVzLycgKyB0aGlzLnNsdWdpZnkoc3ViZWxlbWVudC5zbHVnID8/IHN1YmVsZW1lbnQubmFtZSk7XHJcblxyXG5cdFx0XHRyZXR1cm4gc3ViZWxlbWVudDtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiByZXN1bHQ7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEdlbmVyYSB1biBtYXBlbyBkZSBzZWNjaW9uZXMgcGFyYSBxdWUgcXVlZGVuIG1hcyBhbWlnYWJsZXMgYSBsYSBob3JhIGRlIG1hbmVqYXIgY29tbyBtZW7Dui5cclxuXHQgKiBAcGFyYW0gc2VjdGlvbiBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcml2YXRlIGFwcGVuZFNlY3Rpb24oc2VjdGlvbjogYW55KSB7XHJcblx0XHRsZXQgZGF0YTogYW55ID0ge307XHJcblx0XHRpZiAoc2VjdGlvbi5wYWdlcz8ubGVuZ3RoKSB7XHJcblx0XHRcdGRhdGEudHlwZSA9ICdzdWInO1xyXG5cdFx0XHRkYXRhLmNoaWxkcmVuID0gc2VjdGlvbi5wYWdlcy5tYXAoKHBhZ2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHRjb2RlOiBwYWdlLmNvZGUsXHJcblx0XHRcdFx0XHRuYW1lOiBwYWdlLm5hbWUsXHJcblx0XHRcdFx0XHR0eXBlOiAnbGluaycsXHJcblx0XHRcdFx0XHRwYXRoOiB0aGlzLmNvbnN0YW50cy5TRUNUSU9OU19ST1VURSArIChwYWdlLnNsdWcgPyBwYWdlLnNsdWcgOiBwYWdlLmNvZGUpLFxyXG5cdFx0XHRcdFx0Ly8gcGF0aDogdGhpcy5jb25zdGFudHMuU0VDVElPTlNfUk9VVEUgKyBwYWdlLnNsdWcsXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdFx0Ly9kYXRhLnRpdGxlID0gc2VjdGlvbi5uYW1lO1xyXG5cdFx0XHRkYXRhLm5hbWUgPSBzZWN0aW9uLm5hbWU7XHJcblx0XHRcdGRhdGEucGF0aCA9IHRoaXMuY29uc3RhbnRzLlNFQ1RJT05TX1JPVVRFICsgKHNlY3Rpb24uc2x1ZyA/IHNlY3Rpb24uc2x1ZyA6IHNlY3Rpb24uY29kZSk7XHJcblx0XHRcdGRhdGEuY29kZSA9IHNlY3Rpb24uY29kZTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGRhdGEuY29kZSA9IHNlY3Rpb24uY29kZTtcclxuXHRcdFx0Ly9kYXRhLnRpdGxlID0gc2VjdGlvbi5uYW1lO1xyXG5cdFx0XHRkYXRhLm5hbWUgPSBzZWN0aW9uLm5hbWU7XHJcblx0XHRcdGRhdGEudHlwZSA9ICdsaW5rJztcclxuXHRcdFx0ZGF0YS5jaGlsZHJlbiA9IFtdO1xyXG5cdFx0XHRkYXRhLnBhdGggPSB0aGlzLmNvbnN0YW50cy5TRUNUSU9OU19ST1VURSArIChzZWN0aW9uLnNsdWcgPyBzZWN0aW9uLnNsdWcgOiBzZWN0aW9uLmNvZGUpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGRhdGE7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE1hcGVhIGxvcyBlbGVtZW50b3MgcGFyYSBkYXJsZSB1biBmb3JtYXRvIG1hcyBhbWlnYWJsZSBwYXJhIGxvcyBtZW7DumVzIHkgZmlsdHJvcy5cclxuXHQgKiBAcGFyYW0gZWxlbWVudHMgY2F0ZWdvcmlhcyB8IGF0cmlidXRvcyBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2VuZXJhdGVNZW51ID0gKGVsZW1lbnRzOiBhbnkpID0+IHtcclxuXHRcdHJldHVybiBlbGVtZW50cy5tYXAoKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG5cdFx0XHRpZiAoZWxlbWVudC5jaGlsZHJlbiAmJiBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdC4uLmVsZW1lbnQsXHJcblx0XHRcdFx0XHR0aXRsZTogZWxlbWVudC5uYW1lLFxyXG5cdFx0XHRcdFx0cGF0aDogZWxlbWVudC5wYXRoLFxyXG5cdFx0XHRcdFx0dHlwZTogJ2xpbmsnLFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdFx0Li4uZWxlbWVudCxcclxuXHRcdFx0XHRcdHRpdGxlOiBlbGVtZW50Lm5hbWUsXHJcblx0XHRcdFx0XHR0eXBlOiAnc3ViJyxcclxuXHRcdFx0XHRcdHBhdGg6IGVsZW1lbnQucGF0aCxcclxuXHRcdFx0XHRcdGNoaWxkcmVuOiAoZWxlbWVudC5jaGlsZHJlbiA/IHRoaXMuZ2VuZXJhdGVNZW51KGVsZW1lbnQuY2hpbGRyZW4pIDogW10pXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSBsb3MgZWxlbWVudG9zIGRlbCBicmVhZGNydW1iLlxyXG5cdCAqIEBwYXJhbSBjb2RlIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGdldEJyZWFkY3J1bWIgPSAoY29kZTogYW55KSA9PiB7XHJcblx0XHRpZiAoIWNvZGUpIHJldHVybiBudWxsO1xyXG5cdFx0bGV0IGJyZWFkY3J1bWIgPSB0aGlzLmdlbmVyYXRlQnJlYWRjcnVtYihjb2RlLCB0aGlzLmdlbmVyYXRlTWVudSh0aGlzLmNhdGVnb3JpZXNTdWJqZWN0LnZhbHVlKSwgW10pO1xyXG5cdFx0aWYgKCFicmVhZGNydW1iIHx8ICFicmVhZGNydW1iLmxlbmd0aCkgYnJlYWRjcnVtYiA9IHRoaXMuZ2VuZXJhdGVCcmVhZGNydW1iKGNvZGUsIHRoaXMuZ2VuZXJhdGVNZW51KHRoaXMuYXR0cmlidXRlc1N1YmplY3QudmFsdWUpLCBbXSk7XHJcblx0XHRyZXR1cm4gKGJyZWFkY3J1bWIgJiYgYnJlYWRjcnVtYi5sZW5ndGgpICYmIGJyZWFkY3J1bWIucmV2ZXJzZSgpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBHZW5lcmEgbG9zIGJyZWFkY3J1bWJzIGVuIGJhc2UgYSBsb3MgZmlsdHJvcyBhcGxpY2Fkb3MuXHJcblx0ICogQHBhcmFtIGZpbHRlcnMgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0Z2V0QnJlYWRjcnVtYkJ5RmlsdGVycyA9IChmaWx0ZXJzOiBGaWx0ZXJbXSkgPT4ge1xyXG5cdFx0bGV0IGZpbmFsX3Jlc3VsdDogYW55W10gPSBbXTtcclxuXHRcdGZpbHRlcnMuZm9yRWFjaChmaWx0ZXIgPT4ge1xyXG5cdFx0XHRsZXQgcmVzdWx0ID0gZmlsdGVyLmdldFNlbGVjdGVkTGlzdCgpO1xyXG5cdFx0XHRpZiAoIXJlc3VsdCB8fCAhcmVzdWx0Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuXHRcdFx0aWYgKGZpbHRlci50eXBlKCkgPT0gJ2NhdGVnb3JpZXMnKSBmaW5hbF9yZXN1bHQudW5zaGlmdCguLi50aGlzLmdlbmVyYXRlQnJlYWRjcnVtYihyZXN1bHRbMF0sIGZpbHRlci5kYXRhLCBbXSkucmV2ZXJzZSgpKTtcclxuXHRcdFx0ZWxzZSByZXN1bHQuZm9yRWFjaChcclxuXHRcdFx0XHQoY29kZTogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgYnJlYWRjcnVtYiA9IHRoaXMuZ2VuZXJhdGVCcmVhZGNydW1iKGNvZGUsIGZpbHRlci5kYXRhLCBbXSlcclxuXHRcdFx0XHRcdGJyZWFkY3J1bWIubGVuZ3RoICYmIGZpbmFsX3Jlc3VsdC5wdXNoKGJyZWFkY3J1bWJbMF0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiBmaW5hbF9yZXN1bHQ7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEdlbmVyYSBlbCBsaXN0YWRvIGRlIGJyZWFkY3J1bWIuXHJcblx0ICogQHBhcmFtIGNvZGUgXHJcblx0ICogQHBhcmFtIGVsZW1lbnRzIGZpbHRyb3MgYWN0dWFsZXMgZW4gZWwgZnJvbnRlbmRcclxuXHQgKiBAcGFyYW0gcmVzdWx0IGRhdG9zIGEgYWN0dWFsaXphciBjb24gZWwgbnVldm8gbGlzdGFkbyBkZSBicmVhZGNydW1iXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBnZW5lcmF0ZUJyZWFkY3J1bWIgPSAoY29kZTogc3RyaW5nLCBlbGVtZW50czogYW55LCByZXN1bHQ6IGFueSkgPT4ge1xyXG5cdFx0bGV0IGVsZW1lbnQgPSBlbGVtZW50cy5maW5kKChlbGVtOiBhbnkpID0+IGVsZW0uY29kZSA9PSBjb2RlKTtcclxuXHRcdGlmIChlbGVtZW50KSB7XHJcblx0XHRcdHJlc3VsdC5wdXNoKGVsZW1lbnQpO1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSB7XHJcblx0XHRcdGVsZW1lbnRzLnNvbWUoKGVsZW06IGFueSkgPT4ge1xyXG5cdFx0XHRcdGlmIChlbGVtLmNoaWxkcmVuICYmIGVsZW0uY2hpbGRyZW4ubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRjb25zdCBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xyXG5cdFx0XHRcdFx0bGV0IG5ld19yZXN1bHQgPSB0aGlzLmdlbmVyYXRlQnJlYWRjcnVtYihjb2RlLCBlbGVtLmNoaWxkcmVuLCByZXN1bHQpO1xyXG5cdFx0XHRcdFx0aWYgKG5ld19yZXN1bHQubGVuZ3RoID4gbGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdHJlc3VsdCA9IG5ld19yZXN1bHQ7XHJcblx0XHRcdFx0XHRcdHJlc3VsdC5wdXNoKGVsZW0pO1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHR9KVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHJlc3VsdDtcclxuXHR9XHJcblx0cHVibGljIGdldFNlY3Rpb25Db250ZW50QnlMaW5rID0gKGxpbms6IGFueSkgPT5cclxuXHRcdHRoaXMuY29ubmVjdGlvbi5nZXRIVE1MKHRoaXMucGFnZUNvbnRlbnRCeUNvZGVBcGkobGluaykpLnBpcGUoXHJcblx0XHRcdG1hcChodG1sID0+IGh0bWwuc3BsaXQoJzwvaGVhZD4nKVtodG1sLnNwbGl0KCc8L2hlYWQ+JykubGVuZ3RoIC0gMV0pLFxyXG5cdFx0XHRjYXRjaEVycm9yKGUgPT4gb2YoZmFsc2UpKVxyXG5cdFx0KTtcclxuXHJcblx0XHRcclxuXHJcblx0Z2V0RkFRKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5mYXFzQXBpKCkpLnBpcGUobWFwKHJlc3BvbnNlID0+IHtcclxuXHRcdFx0bGV0IHJlc3VsdDogRkFRW10gPSBbXTtcclxuXHRcdFx0cmVzcG9uc2UuZm9yRWFjaCgocmVzcG9uc2VfZmFxOiBhbnkpID0+IHtcclxuXHRcdFx0XHRsZXQgZmFxczogRkFRID0ge1xyXG5cdFx0XHRcdFx0Y29kZTogcmVzcG9uc2VfZmFxLmNvZGUsXHJcblx0XHRcdFx0XHRwb3NpdGlvbjogcmVzcG9uc2VfZmFxLnBvc2l0aW9uLFxyXG5cdFx0XHRcdFx0dGl0bGU6IHJlc3BvbnNlX2ZhcS50cmFuc2xhdGlvbnNbdGhpcy5hcGlDb25zdGFudHMuTE9DQUxFXS50b3BpYyxcclxuXHRcdFx0XHRcdHF1ZXN0aW9uczogcmVzcG9uc2VfZmFxLmZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucy5tYXAoKGFza2VkX3F1ZXN0aW9uOiBhbnkpID0+ICh7XHJcblx0XHRcdFx0XHRcdGNvZGU6IGFza2VkX3F1ZXN0aW9uLmNvZGUsXHJcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiBhc2tlZF9xdWVzdGlvbi5wb3NpdGlvbixcclxuXHRcdFx0XHRcdFx0cXVlc3Rpb246IGFza2VkX3F1ZXN0aW9uLnRyYW5zbGF0aW9uc1t0aGlzLmFwaUNvbnN0YW50cy5MT0NBTEVdID8gYXNrZWRfcXVlc3Rpb24udHJhbnNsYXRpb25zW3RoaXMuYXBpQ29uc3RhbnRzLkxPQ0FMRV0ucXVlc3Rpb24gOiAnJyxcclxuXHRcdFx0XHRcdFx0YW5zd2VyOiBhc2tlZF9xdWVzdGlvbi50cmFuc2xhdGlvbnNbdGhpcy5hcGlDb25zdGFudHMuTE9DQUxFXSA/IGFza2VkX3F1ZXN0aW9uLnRyYW5zbGF0aW9uc1t0aGlzLmFwaUNvbnN0YW50cy5MT0NBTEVdLmFuc3dlciA6ICcnLFxyXG5cdFx0XHRcdFx0fSkpXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHRyZXN1bHQucHVzaChmYXFzKTtcclxuXHRcdFx0fSlcclxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcclxuXHRcdH0pKTtcclxuXHR9XHJcbn0gXHJcbiJdfQ==
305
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL29wdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxXQUFXLEVBQVEsTUFBTSxNQUFNLENBQUM7QUFDM0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUd6RTs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sY0FBYztJQUMxQjs7T0FFRztJQUNLLFVBQVUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMvQzs7T0FFRztJQUNLLFNBQVMsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNqRDs7T0FFRztJQUNLLFlBQVksR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNuRDs7T0FFRztJQUNLLGlCQUFpQixHQUFHLElBQUksZUFBZSxDQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELFdBQVcsR0FBMkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BGOztPQUVHO0lBQ0ssZUFBZSxHQUFHLElBQUksZUFBZSxDQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELFNBQVMsR0FBMEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvRTs7T0FFRztJQUNLLGlCQUFpQixHQUFHLElBQUksZUFBZSxDQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELFdBQVcsR0FBNEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBRXJGLFVBQVU7SUFDTyxnQkFBZ0IsR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLENBQUM7SUFDcEYsZUFBZSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsQ0FBQztJQUMvRjs7O09BR0c7SUFDSyxTQUFTLEtBQUssT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0Isa0JBQWtCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUEsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUNwRzs7O09BR0c7SUFDSyxXQUFXLEtBQUssT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLG9CQUFvQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFBLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDdkc7Ozs7T0FJRztJQUNLLGFBQWEsQ0FBQyxNQUFNLEdBQUcsRUFBRSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLHFDQUFxQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sa0JBQWtCLE1BQU0sRUFBRSxDQUFBLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDdEosT0FBTyxLQUFLLE9BQU8sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQSxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQzlELG9CQUFvQixHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQztJQUNqSCxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQzFELGdCQUFnQixDQUFDO0lBQ2pCOzs7T0FHRztJQUNJLGFBQWE7UUFDbkIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDekMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLEdBQUcsQ0FBQyxDQUFDLFFBQW9CLEVBQUUsRUFBRTtnQkFDNUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUE7Z0JBQ25ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7Z0JBQ3ZDLE9BQU8sVUFBVSxDQUFBO1lBQ2xCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsS0FBSyxFQUFFLENBQUMsQ0FBQTtnQkFDOUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQkFDL0IsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDZCxDQUFDLENBQUMsQ0FDRixDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN6QixDQUFDO0lBQ0Q7OztPQUdHO0lBQ0ksV0FBVztRQUNqQixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDM0MsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLEdBQUcsQ0FBQyxDQUFDLFFBQW1CLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQWdCLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUE7Z0JBQzVFLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO2dCQUMxRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDbkMsT0FBTyxRQUFRLENBQUE7WUFDaEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUNqQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3ZCLENBQUM7SUFDRDs7OztPQUlHO0lBQ0ksYUFBYSxDQUFDLE1BQVk7UUFDaEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ25ELFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxHQUFHLENBQUMsQ0FBQyxRQUF5QixFQUFFLEVBQUU7Z0JBQ2pDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFBO2dCQUNoRixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO2dCQUN2QyxPQUFPLFVBQVUsQ0FBQTtZQUNsQixDQUFDLENBQ0EsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFBO1FBQ2hCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDekIsQ0FBQztJQUdELFVBQVU7SUFDVixPQUFPLENBQUMsS0FBVTtRQUNqQixJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sRUFBRSxDQUFDLENBQUMsNkNBQTZDO1FBQ3pELENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQyxDQUFDOzs7O09BSUM7SUFDSyxhQUFhLENBQUMsR0FBVztRQUNoQyxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDRDs7Ozs7O09BTUc7SUFDSSxXQUFXLENBQUMsVUFBbUIsRUFBRSxRQUFhO1FBQ3BELE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNFLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQWUsRUFBRSxFQUFFO1lBQ3pELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM3RCxVQUFVLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztnQkFDekIsVUFBVSxDQUFDLElBQUksR0FBRyxVQUFVO29CQUMzQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsR0FBRyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQ3RHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixHQUFHLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pHLENBQUM7aUJBQU0sSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkUsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekUsQ0FBQztZQUVELFVBQVUsQ0FBQyxJQUFJLEdBQUcsVUFBVTtnQkFDM0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUN0RyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsR0FBRyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV4RyxPQUFPLFVBQVUsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUNEOzs7O09BSUc7SUFDSyxhQUFhLENBQUMsT0FBWTtRQUNqQyxJQUFJLElBQUksR0FBUSxFQUFFLENBQUM7UUFDbkIsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDL0MsT0FBTztvQkFDTixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7b0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO29CQUNmLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ3pFLG1EQUFtRDtpQkFDbkQsQ0FBQTtZQUNGLENBQUMsQ0FBQyxDQUFDO1lBQ0gsNEJBQTRCO1lBQzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztZQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pGLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUMxQixDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztZQUN6Qiw0QkFBNEI7WUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUNEOzs7O09BSUc7SUFDSSxZQUFZLEdBQUcsQ0FBQyxRQUFhLEVBQUUsRUFBRTtRQUN2QyxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtZQUNwQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3RELE9BQU87b0JBQ04sR0FBRyxPQUFPO29CQUNWLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbkIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixJQUFJLEVBQUUsTUFBTTtpQkFDWixDQUFBO1lBQ0YsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLE9BQU87b0JBQ04sR0FBRyxPQUFPO29CQUNWLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbkIsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2lCQUN2RSxDQUFBO1lBQ0YsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFBO0lBQ0gsQ0FBQyxDQUFBO0lBQ0Q7Ozs7T0FJRztJQUNILGFBQWEsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFO1FBQzdCLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDdkIsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU07WUFBRSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2SSxPQUFPLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbEUsQ0FBQyxDQUFBO0lBQ0Q7Ozs7T0FJRztJQUNILHNCQUFzQixHQUFHLENBQUMsT0FBaUIsRUFBRSxFQUFFO1FBQzlDLElBQUksWUFBWSxHQUFVLEVBQUUsQ0FBQztRQUM3QixPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hCLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07Z0JBQUUsT0FBTztZQUV0QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxZQUFZO2dCQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQzs7Z0JBQ3JILE1BQU0sQ0FBQyxPQUFPLENBQ2xCLENBQUMsSUFBUyxFQUFFLEVBQUU7b0JBQ2IsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO29CQUMvRCxVQUFVLENBQUMsTUFBTSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZELENBQUMsQ0FDRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFlBQVksQ0FBQztJQUNyQixDQUFDLENBQUE7SUFDRDs7Ozs7O09BTUc7SUFDSyxrQkFBa0IsR0FBRyxDQUFDLElBQVksRUFBRSxRQUFhLEVBQUUsTUFBVyxFQUFFLEVBQUU7UUFDekUsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztRQUM5RCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QixDQUFDO2FBQ0ksQ0FBQztZQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQzNDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7b0JBQzdCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDdEUsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO3dCQUNoQyxNQUFNLEdBQUcsVUFBVSxDQUFDO3dCQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNsQixPQUFPLElBQUksQ0FBQztvQkFDYixDQUFDO2dCQUNGLENBQUM7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQTtRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNmLENBQUMsQ0FBQTtJQUNNLHVCQUF1QixHQUFHLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM1RCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQ3BFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUMxQixDQUFDO0lBSUgsTUFBTTtRQUNMLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM5RCxJQUFJLE1BQU0sR0FBVSxFQUFFLENBQUM7WUFDdkIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQWlCLEVBQUUsRUFBRTtnQkFDdEMsSUFBSSxJQUFJLEdBQVE7b0JBQ2YsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJO29CQUN2QixRQUFRLEVBQUUsWUFBWSxDQUFDLFFBQVE7b0JBQy9CLEtBQUssRUFBRSxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSztvQkFDaEUsU0FBUyxFQUFFLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUM5RSxJQUFJLEVBQUUsY0FBYyxDQUFDLElBQUk7d0JBQ3pCLFFBQVEsRUFBRSxjQUFjLENBQUMsUUFBUTt3QkFDakMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDckksTUFBTSxFQUFFLGNBQWMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtxQkFDakksQ0FBQyxDQUFDO2lCQUNILENBQUM7Z0JBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQTtZQUNGLE9BQU8sTUFBTSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBNVNXLGNBQWM7NEdBQWQsY0FBYyxjQUZkLE1BQU07OzRGQUVOLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNhdGNoRXJyb3IsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlLCBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBdHRyaWJ1dGUsIENhdGVnb3J5LCBGQVEsIFNlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uL2NsYXNzZXMnO1xuLyoqXG4gKiBFc3RlIHNlcnZpY2lvIHBlcm1pdGUgbWFuZWphIGxhcyBDYXRlZ29yaWFzLCBTZWNjaW9uZXMgeSBBdHJpYnV0b3MgY29tbyBtZW51ZXMgXG4gKiBwYXJhIGxhIGFwbGljYWNpw7NuLiBcbiAqL1xuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgT3B0aW9uc1NlcnZpY2Uge1xuXHQvKipcblx0ICogTWFuZWphIGxhcyBwZXRpY2lvbmVzIGEgbGEgQVBJXG5cdCAqL1xuXHRwcml2YXRlIGNvbm5lY3Rpb24gPSBpbmplY3QoQ29ubmVjdGlvblNlcnZpY2UpO1xuXHQvKipcblx0ICogQ29uc3RhbnRlcyBkZWwgY29yZVxuXHQgKi9cblx0cHJpdmF0ZSBjb25zdGFudHMgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xuXHQvKipcblx0ICogQ29uc3RhbnRlcyBkZSBsYSBBUElcblx0ICovXG5cdHByaXZhdGUgYXBpQ29uc3RhbnRzID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xuXHQvKipcblx0ICogTWFuZWphIGxvcyBjYW1iaW9zIGVuIGxhcyBjYXRlZ29yaWFzXG5cdCAqL1xuXHRwcml2YXRlIGNhdGVnb3JpZXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDYXRlZ29yeVtdPihbXSk7XG5cdHByaXZhdGUgY2F0ZWdvcmllcyQ6IE9ic2VydmFibGU8Q2F0ZWdvcnlbXT4gPSB0aGlzLmNhdGVnb3JpZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXHQvKipcblx0ICogTWFuZWphIGxvcyBjYW1iaW9zIGVuIGxhcyBzZWNjaW9uZXNcblx0ICovXG5cdHByaXZhdGUgc2VjdGlvbnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZWN0aW9uW10+KFtdKTtcblx0cHJpdmF0ZSBzZWN0aW9ucyQ6IE9ic2VydmFibGU8U2VjdGlvbltdPiA9IHRoaXMuc2VjdGlvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXHQvKipcblx0ICogTWFuZWphIGxvcyBjYW1iaW9zIGVuIGxvcyBhdHJpYnV0b3Ncblx0ICovXG5cdHByaXZhdGUgYXR0cmlidXRlc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF0dHJpYnV0ZVtdPihbXSk7XG5cdHByaXZhdGUgYXR0cmlidXRlcyQ6IE9ic2VydmFibGU8QXR0cmlidXRlW10+ID0gdGhpcy5hdHRyaWJ1dGVzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuXHQvL0FQSSBVUkxTXG5cdHByaXZhdGUgcmVhZG9ubHkgU0hPUF9DSEFOTkVMX0FQSSA9IGAke3RoaXMuYXBpQ29uc3RhbnRzLlNIT1BfQVBJX1VSTH0ke3RoaXMuYXBpQ29uc3RhbnRzLkNIQU5ORUx9L2A7XG5cdHByaXZhdGUgcmVhZG9ubHkgQ01TX0NIQU5ORUxfQVBJID0gYCR7dGhpcy5hcGlDb25zdGFudHMuQ01TX1VSTH0ke3RoaXMuYXBpQ29uc3RhbnRzLkNIQU5ORUx9L2A7XG5cdC8qKlxuXHQgKiBEZXZ1ZWx2ZSBsYSBVUkwgcGFyYSBvYnRlbmVyIGxhcyBjYXRlZ29yaWFzLlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgdGF4b25zQXBpKCkgeyByZXR1cm4gYCR7dGhpcy5TSE9QX0NIQU5ORUxfQVBJfXRheG9ucy8/bG9jYWxlPSR7dGhpcy5hcGlDb25zdGFudHMuTE9DQUxFfWAgfTtcblx0LyoqXG5cdCAqIERldnVlbHZlIGxhIFVSTCBwYXJhIG9idGVuZXIgbGFzIHNlY2Npb25lc1xuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgc2VjdGlvbnNBcGkoKSB7IHJldHVybiBgJHt0aGlzLkNNU19DSEFOTkVMX0FQSX1zZWN0aW9ucy8/bG9jYWxlPSR7dGhpcy5hcGlDb25zdGFudHMuTE9DQUxFfWAgfTtcblx0LyoqXG5cdCAqIERldnVlbHZlIGxhIFVSTCBwYXJhIG9idGVuZXIgbG9zIGF0cmlidXRvcy4gU2UgbGUgcHVlZGUgYXBsaWNhciBmbGl0cm9zLlxuXHQgKiBAcGFyYW0gZmlsdGVyIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgYXR0cmlidXRlc0FwaShmaWx0ZXIgPSAnJykgeyByZXR1cm4gYCR7dGhpcy5TSE9QX0NIQU5ORUxfQVBJfXByb2R1Y3Qtc2VhcmNoL2F0dHJpYnV0ZXMvP2xvY2FsZT0ke3RoaXMuYXBpQ29uc3RhbnRzLkxPQ0FMRX0mbGltaXQ9MSZwYWdlPTEke2ZpbHRlcn1gIH07XG5cdHByaXZhdGUgZmFxc0FwaSgpIHsgcmV0dXJuICdjbXMvJyArIHRoaXMuYXBpQ29uc3RhbnRzLkNIQU5ORUwgKyAnL2ZhcScgfTtcbiAgICBwcml2YXRlIHBhZ2VDb250ZW50QnlDb2RlQXBpID0gKGNvZGU6IHN0cmluZykgPT4gdGhpcy5jbXNCYXNlKCkgKyAnLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3BhZ2UvJyArIGNvZGU7XG5cdHByaXZhdGUgY21zQmFzZSA9ICgpID0+ICdjbXMvJyArIHRoaXMuYXBpQ29uc3RhbnRzLkxPQ0FMRTtcblx0Y29uc3RydWN0b3IoKSB7IH1cblx0LyoqXG5cdCAqIE9idGllbmUgbGFzIGNhdGVnb3JpYXMgZGVsIGJhY2tlbmQuIFkgbG9zIG1hcGVhIHBhcmEgcXVlIHNlYSBtYXMgYW1pZ2FibGUgZWwgbWFuZWpvIGNvbW8gbWVuw7ouXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHVibGljIGdldENhdGVnb3JpZXMoKTogT2JzZXJ2YWJsZTxDYXRlZ29yeVtdPiB7XG5cdFx0aWYgKHRoaXMuY2F0ZWdvcmllc1N1YmplY3QuZ2V0VmFsdWUoKS5sZW5ndGggPT09IDApIHtcblx0XHRcdHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy50YXhvbnNBcGkoKSkucGlwZShcblx0XHRcdFx0c2hhcmVSZXBsYXkoMSksXG5cdFx0XHRcdG1hcCgocmVzcG9uc2U6IENhdGVnb3J5W10pID0+IHtcblx0XHRcdFx0XHRjb25zdCBjYXRlZ29yaWVzID0gdGhpcy5hcHBlbmRQYXRocyh0cnVlLCByZXNwb25zZSlcblx0XHRcdFx0XHR0aGlzLmNhdGVnb3JpZXNTdWJqZWN0Lm5leHQoY2F0ZWdvcmllcylcblx0XHRcdFx0XHRyZXR1cm4gY2F0ZWdvcmllc1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0Y2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGBFcnJvcjogJHtlcnJvcn1gKVxuXHRcdFx0XHRcdHRoaXMuY2F0ZWdvcmllc1N1YmplY3QubmV4dChbXSlcblx0XHRcdFx0XHRyZXR1cm4gb2YoW10pXG5cdFx0XHRcdH0pXG5cdFx0XHQpLnN1YnNjcmliZSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5jYXRlZ29yaWVzJDtcblx0fVxuXHQvKipcblx0ICogT2J0aWVuZSBsYXMgc2VjY2lvbmVzIGRlbCBiYWNrZW5kLiBZIGxvcyBtYXBlYSBwYXJhIHF1ZSBzZWEgbWFzIGFtaWdhYmxlIGVsIG1hbmVqbyBjb21vIG1lbsO6LlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHB1YmxpYyBnZXRTZWN0aW9ucygpOiBPYnNlcnZhYmxlPFNlY3Rpb25bXT4ge1xuXHRcdGlmICh0aGlzLnNlY3Rpb25zU3ViamVjdC5nZXRWYWx1ZSgpLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0dGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLnNlY3Rpb25zQXBpKCkpLnBpcGUoXG5cdFx0XHRcdHNoYXJlUmVwbGF5KDEpLFxuXHRcdFx0XHRtYXAoKHJlc3BvbnNlOiBTZWN0aW9uW10pID0+IHtcblx0XHRcdFx0XHRsZXQgc2VjdGlvbnMgPSByZXNwb25zZS5maWx0ZXIoKHNlY3Rpb246IFNlY3Rpb24pID0+IHNlY3Rpb24uY29kZSAhPSAnaG9tZScpXG5cdFx0XHRcdFx0c2VjdGlvbnMgPSBzZWN0aW9ucy5tYXAoKHNlY3Rpb246IFNlY3Rpb24pID0+IHRoaXMuYXBwZW5kU2VjdGlvbihzZWN0aW9uKSlcblx0XHRcdFx0XHR0aGlzLnNlY3Rpb25zU3ViamVjdC5uZXh0KHNlY3Rpb25zKVxuXHRcdFx0XHRcdHJldHVybiBzZWN0aW9uc1xuXHRcdFx0XHR9KSkuc3Vic2NyaWJlKClcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuc2VjdGlvbnMkO1xuXHR9XG5cdC8qKlxuXHQgKiBPYnRpZW5lIGxvcyBhdHJpYnV0b3MgZGVsIGJhY2tlbmQuIFkgbG9zIG1hcGVhIHBhcmEgcXVlIHNlYSBtYXMgYW1pZ2FibGUgZWwgbWFuZWpvIGNvbW8gbWVuw7ouXG5cdCAqIEBwYXJhbSBwYXJhbXMgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHVibGljIGdldEF0dHJpYnV0ZXMocGFyYW1zPzogYW55KTogT2JzZXJ2YWJsZTxBdHRyaWJ1dGVbXT4ge1xuXHRcdGlmICh0aGlzLmF0dHJpYnV0ZXNTdWJqZWN0LmdldFZhbHVlKCkubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuYXR0cmlidXRlc0FwaShwYXJhbXMpKS5waXBlKFxuXHRcdFx0XHRzaGFyZVJlcGxheSgxKSxcblx0XHRcdFx0bWFwKChyZXNwb25zZTogYW55IHwgQXR0cmlidXRlKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgYXR0cmlidXRlcyA9IHRoaXMuYXBwZW5kUGF0aHMoZmFsc2UsIChyZXNwb25zZS5hdHRyaWJ1dGVzWzBdIHx8IHJlc3BvbnNlKSlcblx0XHRcdFx0XHR0aGlzLmF0dHJpYnV0ZXNTdWJqZWN0Lm5leHQoYXR0cmlidXRlcylcblx0XHRcdFx0XHRyZXR1cm4gYXR0cmlidXRlc1xuXHRcdFx0XHR9XG5cdFx0XHRcdCkpLnN1YnNjcmliZSgpXG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmF0dHJpYnV0ZXMkO1xuXHR9XG5cblxuXHQvLyBIRUxQRVJTXG5cdHNsdWdpZnkodmFsdWU6IGFueSk6IHN0cmluZyB7XG5cdFx0aWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHRyZXR1cm4gJyc7IC8vIG8gZGV2b2x2ZXIgdW4gc2x1ZyBwb3IgZGVmZWN0byBzaSBwcmVmZXLDrXNcblx0XHR9XG5cdFx0cmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnLScpLnJlcGxhY2UoL1teXFx3XFwtXSsvZywgJycpO1xuXHR9XHQvKipcblx0ICogRWxpbWluYSBsb3MgYWNlbnRvc1xuXHQgKiBAcGFyYW0gc3RyIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgcmVtb3ZlQWNjZW50cyhzdHI6IHN0cmluZykge1xuXHRcdHJldHVybiBzdHIubm9ybWFsaXplKFwiTkZEXCIpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csIFwiXCIpO1xuXHR9XG5cdC8qKlxuXHQgKiBSZWFsaXphIHVuIG1hcGVvIGRlIGxvcyBkYXRvcyBwYXJhIGRhcmxlIHVuIGZvcm1hdG8gbWFzIGVudGVuZGlibGUgYSBsYVxuXHQgKiBob3JhIGRlIHVzYXIgY29tbyB1biBtZW7Dui5cblx0ICogQHBhcmFtIGlzQ2F0ZWdvcnkgVXRpbGl6YWRvIHBhcmEgZGlmZXJlbmNpYXIgc2kgZXMgY2F0ZWdvcsOtYSBvIGF0cmlidXRvLlxuXHQgKiBAcGFyYW0gcmVzcG9uc2UgUmVzcHVlc3RhIHF1ZSBvYnRpZW5lIGRlbCBiYWNrZW5kIGNvbiBsb3MgZGF0b3MgYSBtYXBlYXIuXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHVibGljIGFwcGVuZFBhdGhzKGlzQ2F0ZWdvcnk6IGJvb2xlYW4sIHJlc3BvbnNlOiBhbnkpIHtcblx0XHRjb25zdCBub3JtYWxpemVkUmVzcG9uc2UgPSBBcnJheS5pc0FycmF5KHJlc3BvbnNlKSA/IHJlc3BvbnNlIDogW3Jlc3BvbnNlXTtcblxuXHRcdGNvbnN0IHJlc3VsdCA9IG5vcm1hbGl6ZWRSZXNwb25zZS5tYXAoKHN1YmVsZW1lbnQ6IGFueSkgPT4ge1xuXHRcdFx0aWYgKCFzdWJlbGVtZW50LmNoaWxkcmVuIHx8IHN1YmVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID09IDApIHtcblx0XHRcdFx0c3ViZWxlbWVudC5jaGlsZHJlbiA9IFtdO1xuXHRcdFx0XHRzdWJlbGVtZW50LnBhdGggPSBpc0NhdGVnb3J5XG5cdFx0XHRcdFx0PyB0aGlzLmNvbnN0YW50cy5QUk9EVUNUX0xJU1RfUk9VVEUgKyAnY2F0ZWdvcmllcy8nICsgdGhpcy5zbHVnaWZ5KHN1YmVsZW1lbnQuc2x1ZyA/PyBzdWJlbGVtZW50Lm5hbWUpXG5cdFx0XHRcdFx0OiB0aGlzLmNvbnN0YW50cy5QUk9EVUNUX0xJU1RfUk9VVEUgKyAnYXR0cmlidXRlcy8nICsgdGhpcy5zbHVnaWZ5KHN1YmVsZW1lbnQuc2x1ZyA/PyBzdWJlbGVtZW50Lm5hbWUpO1xuXHRcdFx0fSBlbHNlIGlmIChzdWJlbGVtZW50LmNoaWxkcmVuKSB7XG5cdFx0XHRcdHN1YmVsZW1lbnQuc2x1ZyA9IHN1YmVsZW1lbnQuc2x1ZyB8fCB0aGlzLnNsdWdpZnkoc3ViZWxlbWVudC5uYW1lKTtcblx0XHRcdFx0c3ViZWxlbWVudC5jaGlsZHJlbiA9IHRoaXMuYXBwZW5kUGF0aHMoaXNDYXRlZ29yeSwgc3ViZWxlbWVudC5jaGlsZHJlbik7XG5cdFx0XHR9XG5cblx0XHRcdHN1YmVsZW1lbnQucGF0aCA9IGlzQ2F0ZWdvcnlcblx0XHRcdFx0PyB0aGlzLmNvbnN0YW50cy5QUk9EVUNUX0xJU1RfUk9VVEUgKyAnY2F0ZWdvcmllcy8nICsgdGhpcy5zbHVnaWZ5KHN1YmVsZW1lbnQuc2x1ZyA/PyBzdWJlbGVtZW50Lm5hbWUpXG5cdFx0XHRcdDogdGhpcy5jb25zdGFudHMuUFJPRFVDVF9MSVNUX1JPVVRFICsgJ2F0dHJpYnV0ZXMvJyArIHRoaXMuc2x1Z2lmeShzdWJlbGVtZW50LnNsdWcgPz8gc3ViZWxlbWVudC5uYW1lKTtcblxuXHRcdFx0cmV0dXJuIHN1YmVsZW1lbnQ7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cdC8qKlxuXHQgKiBHZW5lcmEgdW4gbWFwZW8gZGUgc2VjY2lvbmVzIHBhcmEgcXVlIHF1ZWRlbiBtYXMgYW1pZ2FibGVzIGEgbGEgaG9yYSBkZSBtYW5lamFyIGNvbW8gbWVuw7ouXG5cdCAqIEBwYXJhbSBzZWN0aW9uIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgYXBwZW5kU2VjdGlvbihzZWN0aW9uOiBhbnkpIHtcblx0XHRsZXQgZGF0YTogYW55ID0ge307XG5cdFx0aWYgKHNlY3Rpb24ucGFnZXM/Lmxlbmd0aCkge1xuXHRcdFx0ZGF0YS50eXBlID0gJ3N1Yic7XG5cdFx0XHRkYXRhLmNoaWxkcmVuID0gc2VjdGlvbi5wYWdlcy5tYXAoKHBhZ2U6IGFueSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdGNvZGU6IHBhZ2UuY29kZSxcblx0XHRcdFx0XHRuYW1lOiBwYWdlLm5hbWUsXG5cdFx0XHRcdFx0dHlwZTogJ2xpbmsnLFxuXHRcdFx0XHRcdHBhdGg6IHRoaXMuY29uc3RhbnRzLlNFQ1RJT05TX1JPVVRFICsgKHBhZ2Uuc2x1ZyA/IHBhZ2Uuc2x1ZyA6IHBhZ2UuY29kZSksXG5cdFx0XHRcdFx0Ly8gcGF0aDogdGhpcy5jb25zdGFudHMuU0VDVElPTlNfUk9VVEUgKyBwYWdlLnNsdWcsXG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0Ly9kYXRhLnRpdGxlID0gc2VjdGlvbi5uYW1lO1xuXHRcdFx0ZGF0YS5uYW1lID0gc2VjdGlvbi5uYW1lO1xuXHRcdFx0ZGF0YS5wYXRoID0gdGhpcy5jb25zdGFudHMuU0VDVElPTlNfUk9VVEUgKyAoc2VjdGlvbi5zbHVnID8gc2VjdGlvbi5zbHVnIDogc2VjdGlvbi5jb2RlKTtcblx0XHRcdGRhdGEuY29kZSA9IHNlY3Rpb24uY29kZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGF0YS5jb2RlID0gc2VjdGlvbi5jb2RlO1xuXHRcdFx0Ly9kYXRhLnRpdGxlID0gc2VjdGlvbi5uYW1lO1xuXHRcdFx0ZGF0YS5uYW1lID0gc2VjdGlvbi5uYW1lO1xuXHRcdFx0ZGF0YS50eXBlID0gJ2xpbmsnO1xuXHRcdFx0ZGF0YS5jaGlsZHJlbiA9IFtdO1xuXHRcdFx0ZGF0YS5wYXRoID0gdGhpcy5jb25zdGFudHMuU0VDVElPTlNfUk9VVEUgKyAoc2VjdGlvbi5zbHVnID8gc2VjdGlvbi5zbHVnIDogc2VjdGlvbi5jb2RlKTtcblx0XHR9XG5cdFx0cmV0dXJuIGRhdGE7XG5cdH1cblx0LyoqXG5cdCAqIE1hcGVhIGxvcyBlbGVtZW50b3MgcGFyYSBkYXJsZSB1biBmb3JtYXRvIG1hcyBhbWlnYWJsZSBwYXJhIGxvcyBtZW7DumVzIHkgZmlsdHJvcy5cblx0ICogQHBhcmFtIGVsZW1lbnRzIGNhdGVnb3JpYXMgfCBhdHJpYnV0b3MgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHVibGljIGdlbmVyYXRlTWVudSA9IChlbGVtZW50czogYW55KSA9PiB7XG5cdFx0cmV0dXJuIGVsZW1lbnRzLm1hcCgoZWxlbWVudDogYW55KSA9PiB7XG5cdFx0XHRpZiAoZWxlbWVudC5jaGlsZHJlbiAmJiBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0Li4uZWxlbWVudCxcblx0XHRcdFx0XHR0aXRsZTogZWxlbWVudC5uYW1lLFxuXHRcdFx0XHRcdHBhdGg6IGVsZW1lbnQucGF0aCxcblx0XHRcdFx0XHR0eXBlOiAnbGluaycsXG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0Li4uZWxlbWVudCxcblx0XHRcdFx0XHR0aXRsZTogZWxlbWVudC5uYW1lLFxuXHRcdFx0XHRcdHR5cGU6ICdzdWInLFxuXHRcdFx0XHRcdHBhdGg6IGVsZW1lbnQucGF0aCxcblx0XHRcdFx0XHRjaGlsZHJlbjogKGVsZW1lbnQuY2hpbGRyZW4gPyB0aGlzLmdlbmVyYXRlTWVudShlbGVtZW50LmNoaWxkcmVuKSA6IFtdKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSlcblx0fVxuXHQvKipcblx0ICogRGV2dWVsdmUgbG9zIGVsZW1lbnRvcyBkZWwgYnJlYWRjcnVtYi5cblx0ICogQHBhcmFtIGNvZGUgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0Z2V0QnJlYWRjcnVtYiA9IChjb2RlOiBhbnkpID0+IHtcblx0XHRpZiAoIWNvZGUpIHJldHVybiBudWxsO1xuXHRcdGxldCBicmVhZGNydW1iID0gdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWIoY29kZSwgdGhpcy5nZW5lcmF0ZU1lbnUodGhpcy5jYXRlZ29yaWVzU3ViamVjdC52YWx1ZSksIFtdKTtcblx0XHRpZiAoIWJyZWFkY3J1bWIgfHwgIWJyZWFkY3J1bWIubGVuZ3RoKSBicmVhZGNydW1iID0gdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWIoY29kZSwgdGhpcy5nZW5lcmF0ZU1lbnUodGhpcy5hdHRyaWJ1dGVzU3ViamVjdC52YWx1ZSksIFtdKTtcblx0XHRyZXR1cm4gKGJyZWFkY3J1bWIgJiYgYnJlYWRjcnVtYi5sZW5ndGgpICYmIGJyZWFkY3J1bWIucmV2ZXJzZSgpO1xuXHR9XG5cdC8qKlxuXHQgKiBHZW5lcmEgbG9zIGJyZWFkY3J1bWJzIGVuIGJhc2UgYSBsb3MgZmlsdHJvcyBhcGxpY2Fkb3MuXG5cdCAqIEBwYXJhbSBmaWx0ZXJzIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdGdldEJyZWFkY3J1bWJCeUZpbHRlcnMgPSAoZmlsdGVyczogRmlsdGVyW10pID0+IHtcblx0XHRsZXQgZmluYWxfcmVzdWx0OiBhbnlbXSA9IFtdO1xuXHRcdGZpbHRlcnMuZm9yRWFjaChmaWx0ZXIgPT4ge1xuXHRcdFx0bGV0IHJlc3VsdCA9IGZpbHRlci5nZXRTZWxlY3RlZExpc3QoKTtcblx0XHRcdGlmICghcmVzdWx0IHx8ICFyZXN1bHQubGVuZ3RoKSByZXR1cm47XG5cblx0XHRcdGlmIChmaWx0ZXIudHlwZSgpID09ICdjYXRlZ29yaWVzJykgZmluYWxfcmVzdWx0LnVuc2hpZnQoLi4udGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWIocmVzdWx0WzBdLCBmaWx0ZXIuZGF0YSwgW10pLnJldmVyc2UoKSk7XG5cdFx0XHRlbHNlIHJlc3VsdC5mb3JFYWNoKFxuXHRcdFx0XHQoY29kZTogYW55KSA9PiB7XG5cdFx0XHRcdFx0bGV0IGJyZWFkY3J1bWIgPSB0aGlzLmdlbmVyYXRlQnJlYWRjcnVtYihjb2RlLCBmaWx0ZXIuZGF0YSwgW10pXG5cdFx0XHRcdFx0YnJlYWRjcnVtYi5sZW5ndGggJiYgZmluYWxfcmVzdWx0LnB1c2goYnJlYWRjcnVtYlswXSk7XG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gZmluYWxfcmVzdWx0O1xuXHR9XG5cdC8qKlxuXHQgKiBHZW5lcmEgZWwgbGlzdGFkbyBkZSBicmVhZGNydW1iLlxuXHQgKiBAcGFyYW0gY29kZSBcblx0ICogQHBhcmFtIGVsZW1lbnRzIGZpbHRyb3MgYWN0dWFsZXMgZW4gZWwgZnJvbnRlbmRcblx0ICogQHBhcmFtIHJlc3VsdCBkYXRvcyBhIGFjdHVhbGl6YXIgY29uIGVsIG51ZXZvIGxpc3RhZG8gZGUgYnJlYWRjcnVtYlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgZ2VuZXJhdGVCcmVhZGNydW1iID0gKGNvZGU6IHN0cmluZywgZWxlbWVudHM6IGFueSwgcmVzdWx0OiBhbnkpID0+IHtcblx0XHRsZXQgZWxlbWVudCA9IGVsZW1lbnRzLmZpbmQoKGVsZW06IGFueSkgPT4gZWxlbS5jb2RlID09IGNvZGUpO1xuXHRcdGlmIChlbGVtZW50KSB7XG5cdFx0XHRyZXN1bHQucHVzaChlbGVtZW50KTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRlbGVtZW50cy5zb21lKChlbGVtOiBhbnkpID0+IHtcblx0XHRcdFx0aWYgKGVsZW0uY2hpbGRyZW4gJiYgZWxlbS5jaGlsZHJlbi5sZW5ndGgpIHtcblx0XHRcdFx0XHRjb25zdCBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXHRcdFx0XHRcdGxldCBuZXdfcmVzdWx0ID0gdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWIoY29kZSwgZWxlbS5jaGlsZHJlbiwgcmVzdWx0KTtcblx0XHRcdFx0XHRpZiAobmV3X3Jlc3VsdC5sZW5ndGggPiBsZW5ndGgpIHtcblx0XHRcdFx0XHRcdHJlc3VsdCA9IG5ld19yZXN1bHQ7XG5cdFx0XHRcdFx0XHRyZXN1bHQucHVzaChlbGVtKTtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9KVxuXHRcdH1cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cdHB1YmxpYyBnZXRTZWN0aW9uQ29udGVudEJ5TGluayA9IChsaW5rOiBhbnkpID0+XG5cdFx0dGhpcy5jb25uZWN0aW9uLmdldEhUTUwodGhpcy5wYWdlQ29udGVudEJ5Q29kZUFwaShsaW5rKSkucGlwZShcblx0XHRcdG1hcChodG1sID0+IGh0bWwuc3BsaXQoJzwvaGVhZD4nKVtodG1sLnNwbGl0KCc8L2hlYWQ+JykubGVuZ3RoIC0gMV0pLFxuXHRcdFx0Y2F0Y2hFcnJvcihlID0+IG9mKGZhbHNlKSlcblx0XHQpO1xuXG5cdFx0XG5cblx0Z2V0RkFRKCkge1xuXHRcdHJldHVybiB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuZmFxc0FwaSgpKS5waXBlKG1hcChyZXNwb25zZSA9PiB7XG5cdFx0XHRsZXQgcmVzdWx0OiBGQVFbXSA9IFtdO1xuXHRcdFx0cmVzcG9uc2UuZm9yRWFjaCgocmVzcG9uc2VfZmFxOiBhbnkpID0+IHtcblx0XHRcdFx0bGV0IGZhcXM6IEZBUSA9IHtcblx0XHRcdFx0XHRjb2RlOiByZXNwb25zZV9mYXEuY29kZSxcblx0XHRcdFx0XHRwb3NpdGlvbjogcmVzcG9uc2VfZmFxLnBvc2l0aW9uLFxuXHRcdFx0XHRcdHRpdGxlOiByZXNwb25zZV9mYXEudHJhbnNsYXRpb25zW3RoaXMuYXBpQ29uc3RhbnRzLkxPQ0FMRV0udG9waWMsXG5cdFx0XHRcdFx0cXVlc3Rpb25zOiByZXNwb25zZV9mYXEuZnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLm1hcCgoYXNrZWRfcXVlc3Rpb246IGFueSkgPT4gKHtcblx0XHRcdFx0XHRcdGNvZGU6IGFza2VkX3F1ZXN0aW9uLmNvZGUsXG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogYXNrZWRfcXVlc3Rpb24ucG9zaXRpb24sXG5cdFx0XHRcdFx0XHRxdWVzdGlvbjogYXNrZWRfcXVlc3Rpb24udHJhbnNsYXRpb25zW3RoaXMuYXBpQ29uc3RhbnRzLkxPQ0FMRV0gPyBhc2tlZF9xdWVzdGlvbi50cmFuc2xhdGlvbnNbdGhpcy5hcGlDb25zdGFudHMuTE9DQUxFXS5xdWVzdGlvbiA6ICcnLFxuXHRcdFx0XHRcdFx0YW5zd2VyOiBhc2tlZF9xdWVzdGlvbi50cmFuc2xhdGlvbnNbdGhpcy5hcGlDb25zdGFudHMuTE9DQUxFXSA/IGFza2VkX3F1ZXN0aW9uLnRyYW5zbGF0aW9uc1t0aGlzLmFwaUNvbnN0YW50cy5MT0NBTEVdLmFuc3dlciA6ICcnLFxuXHRcdFx0XHRcdH0pKVxuXHRcdFx0XHR9O1xuXHRcdFx0XHRyZXN1bHQucHVzaChmYXFzKTtcblx0XHRcdH0pXG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH0pKTtcblx0fVxufSBcbiJdfQ==