@esolve/ng-esolve-connect 0.16.1 → 0.17.1

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 (186) hide show
  1. package/esm2020/lib/auth/esolve-auth.service.mjs +15 -10
  2. package/esm2020/lib/payment/classes/esolve-banking-details.model.mjs +11 -0
  3. package/esm2020/lib/payment/classes/esolve-payment-method.model.mjs +36 -0
  4. package/esm2020/lib/payment/classes/esolve-payment-result.model.mjs +37 -0
  5. package/esm2020/lib/payment/classes/esolve-vault-item-result.model.mjs +20 -0
  6. package/esm2020/lib/payment/classes/esolve-vault-item.model.mjs +20 -0
  7. package/esm2020/lib/payment/classes/index.mjs +6 -0
  8. package/esm2020/lib/payment/esolve-payment.service.mjs +57 -16
  9. package/esm2020/lib/payment/index.mjs +4 -14
  10. package/esm2020/lib/payment/interfaces/esolve-card-data.interface.mjs +2 -0
  11. package/esm2020/lib/payment/interfaces/esolve-payment-form-input.interface.mjs +2 -0
  12. package/esm2020/lib/payment/interfaces/esolve-payment-method-options.interface.mjs +2 -0
  13. package/esm2020/lib/payment/interfaces/esolve-payment-method-record.interface.mjs +2 -0
  14. package/esm2020/lib/payment/interfaces/esolve-payment-response.interface.mjs +2 -0
  15. package/esm2020/lib/payment/interfaces/esolve-payment-set-body.interface.mjs +2 -0
  16. package/esm2020/lib/payment/interfaces/esolve-payment-status.interface.mjs +2 -0
  17. package/esm2020/lib/payment/interfaces/esolve-vault-record.interface.mjs +2 -0
  18. package/esm2020/lib/payment/interfaces/esolve-vault-response.interface.mjs +2 -0
  19. package/esm2020/lib/payment/interfaces/index.mjs +9 -0
  20. package/esm2020/lib/payment/types/esolve-integration-type.type.mjs +2 -0
  21. package/esm2020/lib/payment/types/esolve-service-provider.type.mjs +2 -0
  22. package/esm2020/lib/payment/types/index.mjs +3 -0
  23. package/esm2020/lib/shared/sort/esolve-sort-order.type.mjs +2 -0
  24. package/esm2020/lib/shared/sort/esolve-sort.interface.mjs +2 -0
  25. package/esm2020/lib/shared/sort/index.mjs +5 -0
  26. package/esm2020/lib/stock/classes/esolve-additional-stock-image.model.mjs +21 -0
  27. package/esm2020/lib/stock/classes/esolve-colour.model.mjs +8 -0
  28. package/esm2020/lib/stock/classes/esolve-linked-stock-item.model.mjs +9 -0
  29. package/esm2020/lib/stock/classes/esolve-media-stock-item.model.mjs +7 -0
  30. package/esm2020/lib/stock/classes/esolve-recipe-stock-item.model.mjs +9 -0
  31. package/esm2020/lib/stock/classes/esolve-stock-badge.model.mjs +11 -0
  32. package/esm2020/lib/stock/classes/esolve-stock-group-item.model.mjs +7 -0
  33. package/esm2020/lib/stock/classes/esolve-stock-group.model.mjs +13 -0
  34. package/esm2020/lib/stock/classes/esolve-stock-image-collection.model.mjs +26 -0
  35. package/esm2020/lib/stock/classes/esolve-stock-image.model.mjs +45 -0
  36. package/esm2020/lib/stock/classes/esolve-stock-item-base.model.mjs +237 -0
  37. package/esm2020/lib/stock/classes/esolve-stock-item-list.model.mjs +11 -0
  38. package/esm2020/lib/stock/classes/esolve-stock-item.model.mjs +17 -0
  39. package/esm2020/lib/stock/classes/esolve-stock-lead-times.model.mjs +9 -0
  40. package/esm2020/lib/stock/classes/esolve-stock-price.model.mjs +43 -0
  41. package/esm2020/lib/stock/classes/index.mjs +17 -0
  42. package/esm2020/lib/stock/esolve-stock.service.mjs +40 -9
  43. package/esm2020/lib/stock/index.mjs +4 -36
  44. package/esm2020/lib/stock/interfaces/esolve-additional-stock-image-record.interface.mjs +2 -0
  45. package/esm2020/lib/stock/interfaces/esolve-colour-record.interface.mjs +2 -0
  46. package/esm2020/lib/stock/interfaces/esolve-linked-stock-record.interface.mjs +2 -0
  47. package/esm2020/lib/stock/interfaces/esolve-media-stock-item-options.interface.mjs +2 -0
  48. package/esm2020/lib/stock/interfaces/esolve-media-stock-item-record.interface.mjs +2 -0
  49. package/esm2020/lib/stock/interfaces/esolve-recipe-item-record.interface.mjs +2 -0
  50. package/esm2020/lib/stock/interfaces/esolve-recipe-stock-options.interface.mjs +2 -0
  51. package/esm2020/lib/stock/interfaces/esolve-stock-badge-record.interface.mjs +2 -0
  52. package/esm2020/lib/stock/interfaces/esolve-stock-base-record.interface.mjs +2 -0
  53. package/esm2020/lib/stock/interfaces/esolve-stock-group-item-record.interface.mjs +2 -0
  54. package/esm2020/lib/stock/interfaces/esolve-stock-image-collection-record.interface.mjs +3 -0
  55. package/esm2020/lib/stock/interfaces/esolve-stock-item-options.interface.mjs +2 -0
  56. package/esm2020/lib/stock/interfaces/esolve-stock-lead-times-record.interface.mjs +2 -0
  57. package/esm2020/lib/stock/interfaces/esolve-stock-linked-category-record.interface.mjs +2 -0
  58. package/esm2020/lib/stock/interfaces/esolve-stock-record.interface.mjs +2 -0
  59. package/esm2020/lib/stock/interfaces/index.mjs +17 -0
  60. package/esm2020/lib/stock/types/esolve-media-stock-item-list.type.mjs +2 -0
  61. package/esm2020/lib/stock/types/esolve-media-stock-sort-field.type.mjs +2 -0
  62. package/esm2020/lib/stock/types/esolve-stock-image-size.type.mjs +2 -0
  63. package/esm2020/lib/stock/types/esolve-stock-sort-field.type.mjs +2 -0
  64. package/esm2020/lib/stock/types/esolve-stock-unit-of-measure.type.mjs +2 -0
  65. package/esm2020/lib/stock/types/index.mjs +7 -0
  66. package/esm2020/public-api.mjs +2 -1
  67. package/fesm2015/esolve-ng-esolve-connect.mjs +217 -92
  68. package/fesm2015/esolve-ng-esolve-connect.mjs.map +1 -1
  69. package/fesm2020/esolve-ng-esolve-connect.mjs +201 -80
  70. package/fesm2020/esolve-ng-esolve-connect.mjs.map +1 -1
  71. package/lib/payment/{esolve-banking-details.model.d.ts → classes/esolve-banking-details.model.d.ts} +0 -0
  72. package/lib/payment/{esolve-payment-method.model.d.ts → classes/esolve-payment-method.model.d.ts} +2 -2
  73. package/lib/payment/classes/esolve-payment-result.model.d.ts +28 -0
  74. package/lib/payment/{esolve-vault-item-result.model.d.ts → classes/esolve-vault-item-result.model.d.ts} +2 -2
  75. package/lib/payment/{esolve-vault-item.model.d.ts → classes/esolve-vault-item.model.d.ts} +0 -0
  76. package/lib/payment/classes/index.d.ts +5 -0
  77. package/lib/payment/esolve-payment.service.d.ts +36 -7
  78. package/lib/payment/index.d.ts +3 -13
  79. package/lib/payment/{esolve-card-data.interface.d.ts → interfaces/esolve-card-data.interface.d.ts} +0 -0
  80. package/lib/payment/interfaces/esolve-payment-form-input.interface.d.ts +4 -0
  81. package/lib/payment/{esolve-payment-method-options.interface.d.ts → interfaces/esolve-payment-method-options.interface.d.ts} +0 -0
  82. package/lib/payment/{esolve-payment-method-record.interface.d.ts → interfaces/esolve-payment-method-record.interface.d.ts} +1 -1
  83. package/lib/payment/interfaces/esolve-payment-response.interface.d.ts +28 -0
  84. package/lib/payment/{esolve-payment-set-body.interface.d.ts → interfaces/esolve-payment-set-body.interface.d.ts} +0 -0
  85. package/lib/payment/interfaces/esolve-payment-status.interface.d.ts +3 -0
  86. package/lib/payment/{esolve-vault-record.interface.d.ts → interfaces/esolve-vault-record.interface.d.ts} +0 -0
  87. package/lib/payment/{esolve-vault-response.interface.d.ts → interfaces/esolve-vault-response.interface.d.ts} +1 -1
  88. package/lib/payment/interfaces/index.d.ts +7 -0
  89. package/lib/payment/{esolve-integration-type.type.d.ts → types/esolve-integration-type.type.d.ts} +0 -0
  90. package/lib/payment/types/esolve-service-provider.type.d.ts +1 -0
  91. package/lib/payment/types/index.d.ts +2 -0
  92. package/lib/shared/sort/esolve-sort-order.type.d.ts +1 -0
  93. package/lib/shared/sort/esolve-sort.interface.d.ts +5 -0
  94. package/lib/shared/sort/index.d.ts +2 -0
  95. package/lib/stock/{esolve-additional-stock-image.model.d.ts → classes/esolve-additional-stock-image.model.d.ts} +1 -1
  96. package/lib/stock/{esolve-colour.model.d.ts → classes/esolve-colour.model.d.ts} +1 -1
  97. package/lib/stock/{esolve-linked-stock-item.model.d.ts → classes/esolve-linked-stock-item.model.d.ts} +2 -2
  98. package/lib/stock/{esolve-media-stock-item.model.d.ts → classes/esolve-media-stock-item.model.d.ts} +2 -2
  99. package/lib/stock/{esolve-recipe-stock-item.model.d.ts → classes/esolve-recipe-stock-item.model.d.ts} +2 -2
  100. package/lib/stock/{esolve-stock-badge.model.d.ts → classes/esolve-stock-badge.model.d.ts} +0 -0
  101. package/lib/stock/{esolve-stock-group-item.model.d.ts → classes/esolve-stock-group-item.model.d.ts} +2 -2
  102. package/lib/stock/{esolve-stock-group.model.d.ts → classes/esolve-stock-group.model.d.ts} +2 -2
  103. package/lib/stock/{esolve-stock-image-collection.model.d.ts → classes/esolve-stock-image-collection.model.d.ts} +1 -1
  104. package/lib/stock/{esolve-stock-image.model.d.ts → classes/esolve-stock-image.model.d.ts} +1 -1
  105. package/lib/stock/{esolve-stock-item-base.model.d.ts → classes/esolve-stock-item-base.model.d.ts} +18 -10
  106. package/lib/stock/{esolve-stock-item-list.model.d.ts → classes/esolve-stock-item-list.model.d.ts} +1 -1
  107. package/lib/stock/{esolve-stock-item.model.d.ts → classes/esolve-stock-item.model.d.ts} +2 -2
  108. package/lib/stock/{esolve-stock-lead-times.model.d.ts → classes/esolve-stock-lead-times.model.d.ts} +1 -1
  109. package/lib/stock/{esolve-stock-price.model.d.ts → classes/esolve-stock-price.model.d.ts} +0 -0
  110. package/lib/stock/classes/index.d.ts +15 -0
  111. package/lib/stock/esolve-stock.service.d.ts +4 -9
  112. package/lib/stock/index.d.ts +3 -32
  113. package/lib/stock/{esolve-additional-stock-image-record.interface.d.ts → interfaces/esolve-additional-stock-image-record.interface.d.ts} +0 -0
  114. package/lib/stock/{esolve-colour-record.interface.d.ts → interfaces/esolve-colour-record.interface.d.ts} +0 -0
  115. package/lib/stock/{esolve-linked-stock-record.interface.d.ts → interfaces/esolve-linked-stock-record.interface.d.ts} +1 -1
  116. package/lib/stock/{esolve-media-stock-item-options.interface.d.ts → interfaces/esolve-media-stock-item-options.interface.d.ts} +3 -0
  117. package/lib/stock/{esolve-media-stock-item-record.interface.d.ts → interfaces/esolve-media-stock-item-record.interface.d.ts} +1 -1
  118. package/lib/stock/{esolve-recipe-item-record.interface.d.ts → interfaces/esolve-recipe-item-record.interface.d.ts} +1 -1
  119. package/lib/stock/interfaces/esolve-recipe-stock-options.interface.d.ts +7 -0
  120. package/lib/stock/{esolve-stock-badge-record.interface.d.ts → interfaces/esolve-stock-badge-record.interface.d.ts} +0 -0
  121. package/lib/stock/{esolve-stock-base-record.interface.d.ts → interfaces/esolve-stock-base-record.interface.d.ts} +9 -7
  122. package/lib/stock/{esolve-stock-group-item-record.interface.d.ts → interfaces/esolve-stock-group-item-record.interface.d.ts} +1 -1
  123. package/lib/stock/{esolve-stock-image-collection-record.interface.d.ts → interfaces/esolve-stock-image-collection-record.interface.d.ts} +0 -0
  124. package/lib/stock/{esolve-stock-item-options.interface.d.ts → interfaces/esolve-stock-item-options.interface.d.ts} +3 -0
  125. package/lib/stock/{esolve-stock-lead-times-record.interface.d.ts → interfaces/esolve-stock-lead-times-record.interface.d.ts} +0 -0
  126. package/lib/stock/{esolve-stock-linked-category-record.interface.d.ts → interfaces/esolve-stock-linked-category-record.interface.d.ts} +0 -0
  127. package/lib/stock/{esolve-stock-record.interface.d.ts → interfaces/esolve-stock-record.interface.d.ts} +1 -1
  128. package/lib/stock/interfaces/index.d.ts +15 -0
  129. package/lib/stock/types/esolve-media-stock-item-list.type.d.ts +7 -0
  130. package/lib/stock/types/esolve-media-stock-sort-field.type.d.ts +2 -0
  131. package/lib/stock/{esolve-stock-image-size.type.d.ts → types/esolve-stock-image-size.type.d.ts} +0 -0
  132. package/lib/stock/types/esolve-stock-sort-field.type.d.ts +1 -0
  133. package/lib/stock/{esolve-stock-unit-of-measure.type.d.ts → types/esolve-stock-unit-of-measure.type.d.ts} +0 -0
  134. package/lib/stock/types/index.d.ts +5 -0
  135. package/package.json +1 -1
  136. package/public-api.d.ts +1 -0
  137. package/esm2020/lib/payment/esolve-banking-details.model.mjs +0 -11
  138. package/esm2020/lib/payment/esolve-card-data.interface.mjs +0 -2
  139. package/esm2020/lib/payment/esolve-integration-type.type.mjs +0 -2
  140. package/esm2020/lib/payment/esolve-paygate-form-input.interface.mjs +0 -2
  141. package/esm2020/lib/payment/esolve-payment-method-options.interface.mjs +0 -2
  142. package/esm2020/lib/payment/esolve-payment-method-record.interface.mjs +0 -2
  143. package/esm2020/lib/payment/esolve-payment-method.model.mjs +0 -36
  144. package/esm2020/lib/payment/esolve-payment-response.interface.mjs +0 -2
  145. package/esm2020/lib/payment/esolve-payment-result.model.mjs +0 -22
  146. package/esm2020/lib/payment/esolve-payment-set-body.interface.mjs +0 -2
  147. package/esm2020/lib/payment/esolve-vault-item-result.model.mjs +0 -20
  148. package/esm2020/lib/payment/esolve-vault-item.model.mjs +0 -20
  149. package/esm2020/lib/payment/esolve-vault-record.interface.mjs +0 -2
  150. package/esm2020/lib/payment/esolve-vault-response.interface.mjs +0 -2
  151. package/esm2020/lib/stock/esolve-additional-stock-image-record.interface.mjs +0 -2
  152. package/esm2020/lib/stock/esolve-additional-stock-image.model.mjs +0 -21
  153. package/esm2020/lib/stock/esolve-colour-record.interface.mjs +0 -2
  154. package/esm2020/lib/stock/esolve-colour.model.mjs +0 -8
  155. package/esm2020/lib/stock/esolve-linked-stock-item.model.mjs +0 -9
  156. package/esm2020/lib/stock/esolve-linked-stock-record.interface.mjs +0 -2
  157. package/esm2020/lib/stock/esolve-media-stock-item-list.type.mjs +0 -2
  158. package/esm2020/lib/stock/esolve-media-stock-item-options.interface.mjs +0 -2
  159. package/esm2020/lib/stock/esolve-media-stock-item-record.interface.mjs +0 -2
  160. package/esm2020/lib/stock/esolve-media-stock-item.model.mjs +0 -7
  161. package/esm2020/lib/stock/esolve-recipe-item-record.interface.mjs +0 -2
  162. package/esm2020/lib/stock/esolve-recipe-stock-item.model.mjs +0 -9
  163. package/esm2020/lib/stock/esolve-stock-badge-record.interface.mjs +0 -2
  164. package/esm2020/lib/stock/esolve-stock-badge.model.mjs +0 -11
  165. package/esm2020/lib/stock/esolve-stock-base-record.interface.mjs +0 -2
  166. package/esm2020/lib/stock/esolve-stock-group-item-record.interface.mjs +0 -2
  167. package/esm2020/lib/stock/esolve-stock-group-item.model.mjs +0 -7
  168. package/esm2020/lib/stock/esolve-stock-group.model.mjs +0 -13
  169. package/esm2020/lib/stock/esolve-stock-image-collection-record.interface.mjs +0 -3
  170. package/esm2020/lib/stock/esolve-stock-image-collection.model.mjs +0 -26
  171. package/esm2020/lib/stock/esolve-stock-image-size.type.mjs +0 -2
  172. package/esm2020/lib/stock/esolve-stock-image.model.mjs +0 -45
  173. package/esm2020/lib/stock/esolve-stock-item-base.model.mjs +0 -224
  174. package/esm2020/lib/stock/esolve-stock-item-list.model.mjs +0 -11
  175. package/esm2020/lib/stock/esolve-stock-item-options.interface.mjs +0 -2
  176. package/esm2020/lib/stock/esolve-stock-item.model.mjs +0 -17
  177. package/esm2020/lib/stock/esolve-stock-lead-times-record.interface.mjs +0 -2
  178. package/esm2020/lib/stock/esolve-stock-lead-times.model.mjs +0 -9
  179. package/esm2020/lib/stock/esolve-stock-linked-category-record.interface.mjs +0 -2
  180. package/esm2020/lib/stock/esolve-stock-price.model.mjs +0 -43
  181. package/esm2020/lib/stock/esolve-stock-record.interface.mjs +0 -2
  182. package/esm2020/lib/stock/esolve-stock-unit-of-measure.type.mjs +0 -2
  183. package/lib/payment/esolve-paygate-form-input.interface.d.ts +0 -4
  184. package/lib/payment/esolve-payment-response.interface.d.ts +0 -10
  185. package/lib/payment/esolve-payment-result.model.d.ts +0 -11
  186. package/lib/stock/esolve-media-stock-item-list.type.d.ts +0 -7
@@ -93,10 +93,14 @@ export class EsolveAuthService {
93
93
  return this.errorHandler.handleHttpPostError('set-login', errorRes);
94
94
  }));
95
95
  }
96
- logout() {
96
+ async logout() {
97
97
  this.session.clearTimer();
98
98
  this.cookieService.delete('_ws_id');
99
- return this.getAccessToken('', '', true).toPromise();
99
+ const response = await this.getAccessToken('', '', true).toPromise();
100
+ if (response) {
101
+ return response;
102
+ }
103
+ throw new Error('Invalid response');
100
104
  }
101
105
  checkAccessToken(session) {
102
106
  session = session || this.session.currentSession;
@@ -105,7 +109,7 @@ export class EsolveAuthService {
105
109
  .get(`${this.config.api_url}/get-access-token.php`, {
106
110
  params: { key: token },
107
111
  headers: new HttpHeaders({
108
- 'Accept-Language': '*'
112
+ 'Accept-Language': '*',
109
113
  }),
110
114
  })
111
115
  .pipe(map((responseData) => {
@@ -123,14 +127,15 @@ export class EsolveAuthService {
123
127
  user_id: additional_data.user_id,
124
128
  };
125
129
  return result;
126
- }))
127
- .toPromise();
130
+ }));
128
131
  }
129
132
  // Handlers
130
133
  handleExpiration() {
131
134
  return (session) => {
132
- this.checkAccessToken(session).then((response) => {
133
- this.handleAuthentication(response);
135
+ this.checkAccessToken(session).toPromise().then((response) => {
136
+ if (response) {
137
+ this.handleAuthentication(response);
138
+ }
134
139
  }, () => {
135
140
  this.logout();
136
141
  });
@@ -150,7 +155,7 @@ export class EsolveAuthService {
150
155
  if ((!errorRes.type) ||
151
156
  (!errorRes.service_type) ||
152
157
  (!errorRes.message)) {
153
- return throwError(error);
158
+ return throwError(() => error);
154
159
  }
155
160
  if (errorRes.message.trim() !== '') {
156
161
  error.message = errorRes.message;
@@ -158,7 +163,7 @@ export class EsolveAuthService {
158
163
  if (errorRes.additional_data) {
159
164
  error.data = errorRes.additional_data;
160
165
  }
161
- return throwError(error);
166
+ return throwError(() => error);
162
167
  }
163
168
  }
164
169
  EsolveAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsolveAuthService, deps: [{ token: ESOLVE_CONNECT_CONFIG }, { token: i1.HttpClient }, { token: i2.EsolveSessionService }, { token: i3.EsolveErrorHandlerService }, { token: i4.EsolveCookieService }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -172,4 +177,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
172
177
  type: Inject,
173
178
  args: [ESOLVE_CONNECT_CONFIG]
174
179
  }] }, { type: i1.HttpClient }, { type: i2.EsolveSessionService }, { type: i3.EsolveErrorHandlerService }, { type: i4.EsolveCookieService }]; } });
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYXV0aC9lc29sdmUtYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFFSCxVQUFVLEVBRVYsV0FBVyxHQUNkLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7O0FBZ0IxRSxNQUFNLE9BQU8saUJBQWlCO0lBQzFCLFlBQzJDLE1BQTJCLEVBQzFELElBQWdCLEVBQ2hCLE9BQTZCLEVBQzdCLFlBQXVDLEVBQ3ZDLGFBQWtDO1FBSkgsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDMUQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQUM3QixpQkFBWSxHQUFaLFlBQVksQ0FBMkI7UUFDdkMsa0JBQWEsR0FBYixhQUFhLENBQXFCO0lBQzFDLENBQUM7SUFFRSxjQUFjLENBQ2pCLEtBQWEsRUFDYixRQUFnQixFQUNoQixZQUFxQixLQUFLO1FBRTFCLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFFOUIsSUFBSSxTQUFTLEVBQUU7WUFDWCxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDMUM7UUFFRCxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUU7WUFDZCxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdkM7UUFFRCxJQUFJLFFBQVEsS0FBSyxFQUFFLEVBQUU7WUFDakIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzdDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FDQSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyx1QkFBdUIsRUFDN0M7WUFDSSxNQUFNO1lBQ04sT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDO2dCQUNyQixpQkFBaUIsRUFBRSxHQUFHO2FBQ3pCLENBQUM7U0FDTCxDQUNKO2FBQ0EsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ2pCLElBQ0ksQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztnQkFDL0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxFQUNyQztnQkFDRSxNQUFNLFlBQVksQ0FBQzthQUN0QjtRQUNMLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQzVCLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNWLENBQUM7SUFFTSxTQUFTO1FBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUN2QixHQUFHLEVBQUU7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUM5QyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQ1QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDTixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FDSixDQUFDO1FBQ04sQ0FBQyxDQUNKLENBQUM7SUFDTixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQWEsRUFBRSxRQUFnQjtRQUN4QyxNQUFNLElBQUksR0FBRztZQUNULEtBQUssRUFBRTtnQkFDSCxLQUFLO2dCQUNMLFFBQVE7YUFDWDtTQUNKLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsSUFBSSxDQUNELEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLGdCQUFnQixFQUN0QyxJQUFJLEVBQ0o7WUFDSSxPQUFPLEVBQUU7Z0JBQ0wsY0FBYyxFQUFFLGtEQUFrRDthQUNyRTtZQUNELFlBQVksRUFBRSxNQUFNO1lBQ3BCLE9BQU8sRUFBRSxNQUFNO1NBQ2xCLENBQ0o7YUFDQSxJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDYixJQUNJLENBQUMsUUFBUSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUM7Z0JBQ2xDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEVBQ2xDO2dCQUNFLE1BQU0sUUFBUSxDQUFDO2FBQ2xCO1lBRUQsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUU3QyxJQUNJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDO2dCQUMzQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxFQUM3QztnQkFDRSxNQUFNLGNBQWMsQ0FBQzthQUN4QjtZQUVELEtBQUssTUFBTSxZQUFZLElBQUksY0FBYyxDQUFDLEdBQUcsRUFBRTtnQkFDM0MsSUFDSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO29CQUNqQyxDQUFDLFlBQVksQ0FBQyxZQUFZLEtBQUssZUFBZSxDQUFDLEVBQ2pEO29CQUNFLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUM7b0JBQ2pELE1BQU0sT0FBTyxHQUFHLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztvQkFDMUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO29CQUU5QyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO3dCQUM3QixPQUFPLEVBQUUsT0FBTzt3QkFDaEIsV0FBVyxFQUFFLFdBQVc7cUJBQzNCLENBQUMsQ0FBQztvQkFFSCxPQUFPLE9BQU8sQ0FBQztpQkFDbEI7YUFDSjtZQUVELE1BQU0sY0FBYyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLFFBQWlDLEVBQUUsRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDVixDQUFDO0lBRU0sTUFBTTtRQUNULElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE9BQXVCO1FBQzVDLE9BQU8sR0FBRyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFFakQsTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFFakMsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FDQSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyx1QkFBdUIsRUFDN0M7WUFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO1lBQ3RCLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDckIsaUJBQWlCLEVBQUUsR0FBRzthQUN6QixDQUFDO1NBQ0wsQ0FDSjthQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUNqQixJQUNJLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUM7Z0JBQy9CLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUM7Z0JBQ25DLENBQUMsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUMxQztnQkFDRSxNQUFNLFlBQVksQ0FBQzthQUN0QjtZQUVELE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxlQUFlLENBQUM7WUFFckQsTUFBTSxNQUFNLEdBQXFCO2dCQUM3QixHQUFHLEVBQUUsS0FBSztnQkFDVixPQUFPLEVBQUUsZUFBZSxDQUFDLE9BQU87Z0JBQ2hDLFdBQVcsRUFBRSxlQUFlLENBQUMsV0FBVztnQkFDeEMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxXQUFXO2dCQUN4QyxPQUFPLEVBQUUsZUFBZSxDQUFDLE9BQU87YUFDbkMsQ0FBQztZQUVGLE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUNMO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7SUFDSCxnQkFBZ0I7UUFDcEIsT0FBTyxDQUFDLE9BQXVCLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUMvQixDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNULElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4QyxDQUFDLEVBQ0QsR0FBRyxFQUFFO2dCQUNELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixDQUFDLENBQ0osQ0FBQztRQUNOLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxNQUF3QjtRQUNqRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNiLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUN0QixDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQ2YsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUNuQixNQUFNLENBQUMsR0FBRyxFQUNWLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFDbkIsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUNmLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUMxQixDQUFDO0lBQ04sQ0FBQztJQUVPLFdBQVcsQ0FDZixRQUF5RDtRQUV6RCxNQUFNLEtBQUssR0FBRztZQUNWLE9BQU8sRUFBRSwyQkFBMkI7WUFDcEMsSUFBSSxFQUFFLEVBQUU7U0FDWCxDQUFDO1FBRUYsSUFDSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNoQixDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUN4QixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUNyQjtZQUNFLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVCO1FBRUQsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNoQyxLQUFLLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDcEM7UUFFRCxJQUFJLFFBQVEsQ0FBQyxlQUFlLEVBQUU7WUFDMUIsS0FBSyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1NBQ3pDO1FBRUQsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7OEdBMU9RLGlCQUFpQixrQkFFZCxxQkFBcUI7a0hBRnhCLGlCQUFpQixjQUZkLE1BQU07MkZBRVQsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBR1EsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEh0dHBDbGllbnQsXHJcbiAgICBIdHRwUGFyYW1zLFxyXG4gICAgSHR0cEVycm9yUmVzcG9uc2UsXHJcbiAgICBIdHRwSGVhZGVycyxcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRhcCwgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlQ29ubmVjdENvbmZpZyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LmNvbmZpZyc7XHJcbmltcG9ydCB7IEVTT0xWRV9DT05ORUNUX0NPTkZJRyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LWNvbmZpZy5jb25zdGFudCc7XHJcbmltcG9ydCB7IEVzb2x2ZUNvb2tpZVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvY29va2llL2Vzb2x2ZS1jb29raWUuc2VydmljZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvZXJyb3JzL2Vzb2x2ZS1lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVTZXRSZXNwb25zZSB9IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZSc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVTZXNzaW9uIH0gZnJvbSAnLi4vc2Vzc2lvbi9lc29sdmUtc2Vzc2lvbi5tb2RlbCc7XHJcbmltcG9ydCB7IEVzb2x2ZVNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2Vzc2lvbi9lc29sdmUtc2Vzc2lvbi5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IEVzb2x2ZUxvZ2luUG9zdFJlc3BvbnNlSXRlbSB9IGZyb20gJy4vZXNvbHZlLWxvZ2luLXBvc3QtcmVzcG9uc2UtaXRlbS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVBdXRoR2V0UmVzcG9uc2UgfSBmcm9tICcuL2Vzb2x2ZS1hdXRoLWdldC1yZXNwb25zZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVBdXRoQ2hlY2tSZXNwb25zZSB9IGZyb20gJy4vZXNvbHZlLWF1dGgtY2hlY2stcmVzcG9uc2UuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRXNvbHZlQXV0aFJlc3VsdCB9IGZyb20gJy4vZXNvbHZlLWF1dGgtcmVzdWx0LnR5cGUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNvbHZlQXV0aFNlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChFU09MVkVfQ09OTkVDVF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBFc29sdmVDb25uZWN0Q29uZmlnLFxyXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICBwcml2YXRlIHNlc3Npb246IEVzb2x2ZVNlc3Npb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFc29sdmVFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY29va2llU2VydmljZTogRXNvbHZlQ29va2llU2VydmljZSxcclxuICAgICkgeyB9XHJcblxyXG4gICAgcHVibGljIGdldEFjY2Vzc1Rva2VuKFxyXG4gICAgICAgIGVtYWlsOiBzdHJpbmcsXHJcbiAgICAgICAgcGFzc3dvcmQ6IHN0cmluZyxcclxuICAgICAgICBhbm9ueW1vdXM6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlQXV0aEdldFJlc3BvbnNlPiB7XHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcblxyXG4gICAgICAgIGlmIChhbm9ueW1vdXMpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnYW5vbnltb3VzJywgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZW1haWwgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2VtYWlsJywgZW1haWwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHBhc3N3b3JkICE9PSAnJykge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxFc29sdmVBdXRoR2V0UmVzcG9uc2U+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWFjY2Vzcy10b2tlbi5waHBgLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogJyonLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFwKChyZXNwb25zZURhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZURhdGEudHlwZSA9PT0gJ2Vycm9yJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlRGF0YS50eXBlID09PSAnZXhjZXB0aW9uJylcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2VEYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSxcclxuICAgICAgICAgICAgICAgIHRhcCgocmVzcG9uc2VEYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBdXRoZW50aWNhdGlvbihyZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGF1dG9Mb2dpbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlc3Npb24ucmVzdG9yZShcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVFeHBpcmF0aW9uKCksXHJcbiAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWNjZXNzVG9rZW4oJycsICcnLCB0cnVlKS50b1Byb21pc2UoKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgICgpID0+IHsgfSxcclxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGxvZ2luKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgICAgICAgIGxvZ2luOiB7XHJcbiAgICAgICAgICAgICAgICBlbWFpbCxcclxuICAgICAgICAgICAgICAgIHBhc3N3b3JkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZUxvZ2luUG9zdFJlc3BvbnNlSXRlbT4+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LWxvZ2luLnBocGAsXHJcbiAgICAgICAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZS5yZXNwb25zZXMgPT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlc3BvbnNlcy5sZW5ndGggPD0gMClcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2dpbl9yZXNwb25zZSA9IHJlc3BvbnNlLnJlc3BvbnNlc1swXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobG9naW5fcmVzcG9uc2Uuc3RhdHVzLnN0YXRlICE9PSAnc3VjY2VzcycpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChsb2dpbl9yZXNwb25zZS5zdGF0dXMuc3RhdGUgIT09ICd3YXJuaW5nJylcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbG9naW5fcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlc3BvbnNlX2xvZyBvZiBsb2dpbl9yZXNwb25zZS5sb2cpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlX2xvZy50eXBlID09PSAnc3VjY2VzcycpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2VfbG9nLm1lc3NhZ2VfY29kZSA9PT0gJ2xvZ2luX3N1Y2Nlc3MnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlc3Npb25fZGF0YSA9IGxvZ2luX3Jlc3BvbnNlLnNlc3Npb25fZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJfaWQgPSArbG9naW5fcmVzcG9uc2UuZXNvbHZlX2lkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9jYXRpb25faWQgPSArc2Vzc2lvbl9kYXRhLmxvY2F0aW9uX2lkO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvbi5oYW5kbGVVcGRhdGVTZXNzaW9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOiB1c2VyX2lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uX2lkOiBsb2NhdGlvbl9pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVzZXJfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGxvZ2luX3Jlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LWxvZ2luJywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbG9nb3V0KCk6IFByb21pc2U8RXNvbHZlQXV0aEdldFJlc3BvbnNlPiB7XHJcbiAgICAgICAgdGhpcy5zZXNzaW9uLmNsZWFyVGltZXIoKTtcclxuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2UuZGVsZXRlKCdfd3NfaWQnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWNjZXNzVG9rZW4oJycsICcnLCB0cnVlKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrQWNjZXNzVG9rZW4oc2Vzc2lvbj86IEVzb2x2ZVNlc3Npb24pOiBQcm9taXNlPEVzb2x2ZUF1dGhSZXN1bHQ+IHtcclxuICAgICAgICBzZXNzaW9uID0gc2Vzc2lvbiB8fCB0aGlzLnNlc3Npb24uY3VycmVudFNlc3Npb247XHJcblxyXG4gICAgICAgIGNvbnN0IHRva2VuID0gc2Vzc2lvbj8ua2V5ID8/ICcnO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlQXV0aENoZWNrUmVzcG9uc2U+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWFjY2Vzcy10b2tlbi5waHBgLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBrZXk6IHRva2VuIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6ICcqJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZURhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZURhdGEudHlwZSA9PT0gJ2Vycm9yJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlRGF0YS50eXBlID09PSAnZXhjZXB0aW9uJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKCFyZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhLmtleV9va2F5KVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZURhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsX2RhdGEgPSByZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQ6IEVzb2x2ZUF1dGhSZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogdG9rZW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZXM6IGFkZGl0aW9uYWxfZGF0YS5leHBpcmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBpcnlfdGltZTogYWRkaXRpb25hbF9kYXRhLmV4cGlyeV90aW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbl9pZDogYWRkaXRpb25hbF9kYXRhLmxvY2F0aW9uX2lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOiBhZGRpdGlvbmFsX2RhdGEudXNlcl9pZCxcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSGFuZGxlcnNcclxuICAgIHByaXZhdGUgaGFuZGxlRXhwaXJhdGlvbigpOiAoc2Vzc2lvbj86IEVzb2x2ZVNlc3Npb24pID0+IHZvaWQge1xyXG4gICAgICAgIHJldHVybiAoc2Vzc2lvbj86IEVzb2x2ZVNlc3Npb24pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0FjY2Vzc1Rva2VuKHNlc3Npb24pLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUF1dGhlbnRpY2F0aW9uKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlQXV0aGVudGljYXRpb24ocmVzdWx0OiBFc29sdmVBdXRoUmVzdWx0KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFyZXN1bHQua2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2Vzc2lvbi5oYW5kbGVTZXNzaW9uKFxyXG4gICAgICAgICAgICArcmVzdWx0LnVzZXJfaWQsXHJcbiAgICAgICAgICAgICtyZXN1bHQubG9jYXRpb25faWQsXHJcbiAgICAgICAgICAgIHJlc3VsdC5rZXksXHJcbiAgICAgICAgICAgICtyZXN1bHQuZXhwaXJ5X3RpbWUsXHJcbiAgICAgICAgICAgICtyZXN1bHQuZXhwaXJlcyxcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVFeHBpcmF0aW9uKClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlRXJyb3IoXHJcbiAgICAgICAgZXJyb3JSZXM6IEVzb2x2ZUF1dGhHZXRSZXNwb25zZSB8IEVzb2x2ZUF1dGhDaGVja1Jlc3BvbnNlXHJcbiAgICApOiBPYnNlcnZhYmxlPG5ldmVyPiB7XHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdBbiB1bmtub3duIGVycm9yIG9jY3VycmVkJyxcclxuICAgICAgICAgICAgZGF0YToge30sXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAoIWVycm9yUmVzLnR5cGUpIHx8XHJcbiAgICAgICAgICAgICghZXJyb3JSZXMuc2VydmljZV90eXBlKSB8fFxyXG4gICAgICAgICAgICAoIWVycm9yUmVzLm1lc3NhZ2UpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlcnJvclJlcy5tZXNzYWdlLnRyaW0oKSAhPT0gJycpIHtcclxuICAgICAgICAgICAgZXJyb3IubWVzc2FnZSA9IGVycm9yUmVzLm1lc3NhZ2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXJyb3JSZXMuYWRkaXRpb25hbF9kYXRhKSB7XHJcbiAgICAgICAgICAgIGVycm9yLmRhdGEgPSBlcnJvclJlcy5hZGRpdGlvbmFsX2RhdGE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICB9XHJcbn1cclxuIl19
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYXV0aC9lc29sdmUtYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFFSCxVQUFVLEVBRVYsV0FBVyxHQUNkLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7O0FBZ0IxRSxNQUFNLE9BQU8saUJBQWlCO0lBQzFCLFlBQzJDLE1BQTJCLEVBQzFELElBQWdCLEVBQ2hCLE9BQTZCLEVBQzdCLFlBQXVDLEVBQ3ZDLGFBQWtDO1FBSkgsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDMUQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQUM3QixpQkFBWSxHQUFaLFlBQVksQ0FBMkI7UUFDdkMsa0JBQWEsR0FBYixhQUFhLENBQXFCO0lBQzFDLENBQUM7SUFFRSxjQUFjLENBQ2pCLEtBQWEsRUFDYixRQUFnQixFQUNoQixZQUFxQixLQUFLO1FBRTFCLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFFOUIsSUFBSSxTQUFTLEVBQUU7WUFDWCxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDMUM7UUFFRCxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUU7WUFDZCxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdkM7UUFFRCxJQUFJLFFBQVEsS0FBSyxFQUFFLEVBQUU7WUFDakIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzdDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FDQSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyx1QkFBdUIsRUFDN0M7WUFDSSxNQUFNO1lBQ04sT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDO2dCQUNyQixpQkFBaUIsRUFBRSxHQUFHO2FBQ3pCLENBQUM7U0FDTCxDQUNKO2FBQ0EsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ2pCLElBQ0ksQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztnQkFDL0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxFQUNyQztnQkFDRSxNQUFNLFlBQVksQ0FBQzthQUN0QjtRQUNMLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQzVCLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNWLENBQUM7SUFFTSxTQUFTO1FBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUN2QixHQUFHLEVBQUU7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUM5QyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQ1QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDTixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FDSixDQUFDO1FBQ04sQ0FBQyxDQUNKLENBQUM7SUFDTixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQWEsRUFBRSxRQUFnQjtRQUN4QyxNQUFNLElBQUksR0FBRztZQUNULEtBQUssRUFBRTtnQkFDSCxLQUFLO2dCQUNMLFFBQVE7YUFDWDtTQUNKLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsSUFBSSxDQUNELEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLGdCQUFnQixFQUN0QyxJQUFJLEVBQ0o7WUFDSSxPQUFPLEVBQUU7Z0JBQ0wsY0FBYyxFQUFFLGtEQUFrRDthQUNyRTtZQUNELFlBQVksRUFBRSxNQUFNO1lBQ3BCLE9BQU8sRUFBRSxNQUFNO1NBQ2xCLENBQ0o7YUFDQSxJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDYixJQUNJLENBQUMsUUFBUSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUM7Z0JBQ2xDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEVBQ2xDO2dCQUNFLE1BQU0sUUFBUSxDQUFDO2FBQ2xCO1lBRUQsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUU3QyxJQUNJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDO2dCQUMzQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxFQUM3QztnQkFDRSxNQUFNLGNBQWMsQ0FBQzthQUN4QjtZQUVELEtBQUssTUFBTSxZQUFZLElBQUksY0FBYyxDQUFDLEdBQUcsRUFBRTtnQkFDM0MsSUFDSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO29CQUNqQyxDQUFDLFlBQVksQ0FBQyxZQUFZLEtBQUssZUFBZSxDQUFDLEVBQ2pEO29CQUNFLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUM7b0JBQ2pELE1BQU0sT0FBTyxHQUFHLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztvQkFDMUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO29CQUU5QyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO3dCQUM3QixPQUFPLEVBQUUsT0FBTzt3QkFDaEIsV0FBVyxFQUFFLFdBQVc7cUJBQzNCLENBQUMsQ0FBQztvQkFFSCxPQUFPLE9BQU8sQ0FBQztpQkFDbEI7YUFDSjtZQUVELE1BQU0sY0FBYyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLFFBQWlDLEVBQUUsRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDVixDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU07UUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXBDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRXJFLElBQUksUUFBUSxFQUFFO1lBQ1YsT0FBTyxRQUFRLENBQUM7U0FDbkI7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE9BQXVCO1FBQzVDLE9BQU8sR0FBRyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFFakQsTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFFakMsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FDQSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyx1QkFBdUIsRUFDN0M7WUFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO1lBQ3RCLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDckIsaUJBQWlCLEVBQUUsR0FBRzthQUN6QixDQUFDO1NBQ0wsQ0FDSjthQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUNqQixJQUNJLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUM7Z0JBQy9CLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUM7Z0JBQ25DLENBQUMsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUMxQztnQkFDRSxNQUFNLFlBQVksQ0FBQzthQUN0QjtZQUVELE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxlQUFlLENBQUM7WUFFckQsTUFBTSxNQUFNLEdBQXFCO2dCQUM3QixHQUFHLEVBQUUsS0FBSztnQkFDVixPQUFPLEVBQUUsZUFBZSxDQUFDLE9BQU87Z0JBQ2hDLFdBQVcsRUFBRSxlQUFlLENBQUMsV0FBVztnQkFDeEMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxXQUFXO2dCQUN4QyxPQUFPLEVBQUUsZUFBZSxDQUFDLE9BQU87YUFDbkMsQ0FBQztZQUVGLE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDVixDQUFDO0lBRUQsV0FBVztJQUNILGdCQUFnQjtRQUNwQixPQUFPLENBQUMsT0FBdUIsRUFBRSxFQUFFO1lBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQzNDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxRQUFRLEVBQUU7b0JBQ1YsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUN2QztZQUNMLENBQUMsRUFDRCxHQUFHLEVBQUU7Z0JBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLENBQUMsQ0FDSixDQUFDO1FBQ04sQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVPLG9CQUFvQixDQUFDLE1BQXdCO1FBQ2pELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ2IsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQ3RCLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFDZixDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQ25CLE1BQU0sQ0FBQyxHQUFHLEVBQ1YsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUNuQixDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQ2YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQzFCLENBQUM7SUFDTixDQUFDO0lBRU8sV0FBVyxDQUNmLFFBQXlEO1FBRXpELE1BQU0sS0FBSyxHQUFHO1lBQ1YsT0FBTyxFQUFFLDJCQUEyQjtZQUNwQyxJQUFJLEVBQUUsRUFBRTtTQUNYLENBQUM7UUFFRixJQUNJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQ3JCO1lBQ0UsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbEM7UUFFRCxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2hDLEtBQUssQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztTQUNwQztRQUVELElBQUksUUFBUSxDQUFDLGVBQWUsRUFBRTtZQUMxQixLQUFLLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7U0FDekM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDOzs4R0FqUFEsaUJBQWlCLGtCQUVkLHFCQUFxQjtrSEFGeEIsaUJBQWlCLGNBRmQsTUFBTTsyRkFFVCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFHUSxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgSHR0cENsaWVudCxcclxuICAgIEh0dHBQYXJhbXMsXHJcbiAgICBIdHRwRXJyb3JSZXNwb25zZSxcclxuICAgIEh0dHBIZWFkZXJzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFwLCBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QuY29uZmlnJztcclxuaW1wb3J0IHsgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QtY29uZmlnLmNvbnN0YW50JztcclxuaW1wb3J0IHsgRXNvbHZlQ29va2llU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9jb29raWUvZXNvbHZlLWNvb2tpZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9lcnJvcnMvZXNvbHZlLWVycm9yLWhhbmRsZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVNldFJlc3BvbnNlIH0gZnJvbSAnLi4vc2hhcmVkL3Jlc3BvbnNlJztcclxuXHJcbmltcG9ydCB7IEVzb2x2ZVNlc3Npb24gfSBmcm9tICcuLi9zZXNzaW9uL2Vzb2x2ZS1zZXNzaW9uLm1vZGVsJztcclxuaW1wb3J0IHsgRXNvbHZlU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXNzaW9uL2Vzb2x2ZS1zZXNzaW9uLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlTG9naW5Qb3N0UmVzcG9uc2VJdGVtIH0gZnJvbSAnLi9lc29sdmUtbG9naW4tcG9zdC1yZXNwb25zZS1pdGVtLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUF1dGhHZXRSZXNwb25zZSB9IGZyb20gJy4vZXNvbHZlLWF1dGgtZ2V0LXJlc3BvbnNlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUF1dGhDaGVja1Jlc3BvbnNlIH0gZnJvbSAnLi9lc29sdmUtYXV0aC1jaGVjay1yZXNwb25zZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVBdXRoUmVzdWx0IH0gZnJvbSAnLi9lc29sdmUtYXV0aC1yZXN1bHQudHlwZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVBdXRoU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KEVTT0xWRV9DT05ORUNUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEVzb2x2ZUNvbm5lY3RDb25maWcsXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvbjogRXNvbHZlU2Vzc2lvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBFc29sdmVDb29raWVTZXJ2aWNlLFxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QWNjZXNzVG9rZW4oXHJcbiAgICAgICAgZW1haWw6IHN0cmluZyxcclxuICAgICAgICBwYXNzd29yZDogc3RyaW5nLFxyXG4gICAgICAgIGFub255bW91czogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVBdXRoR2V0UmVzcG9uc2U+IHtcclxuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuXHJcbiAgICAgICAgaWYgKGFub255bW91cykge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdhbm9ueW1vdXMnLCB0cnVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlbWFpbCAhPT0gJycpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZW1haWwnLCBlbWFpbCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocGFzc3dvcmQgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Bhc3N3b3JkJywgcGFzc3dvcmQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUF1dGhHZXRSZXNwb25zZT4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtYWNjZXNzLXRva2VuLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiAnKicsXHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YXAoKHJlc3BvbnNlRGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlRGF0YS50eXBlID09PSAnZXJyb3InKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2VEYXRhLnR5cGUgPT09ICdleGNlcHRpb24nKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZURhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpLFxyXG4gICAgICAgICAgICAgICAgdGFwKChyZXNwb25zZURhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUF1dGhlbnRpY2F0aW9uKHJlc3BvbnNlRGF0YS5hZGRpdGlvbmFsX2RhdGEpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXV0b0xvZ2luKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2Vzc2lvbi5yZXN0b3JlKFxyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUV4cGlyYXRpb24oKSxcclxuICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRBY2Nlc3NUb2tlbignJywgJycsIHRydWUpLnRvUHJvbWlzZSgpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4geyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbG9naW4oZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgICAgICAgbG9naW46IHtcclxuICAgICAgICAgICAgICAgIGVtYWlsLFxyXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlTG9naW5Qb3N0UmVzcG9uc2VJdGVtPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtbG9naW4ucGhwYCxcclxuICAgICAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OydcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5J1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlc3BvbnNlcyA9PT0gdW5kZWZpbmVkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVzcG9uc2VzLmxlbmd0aCA8PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvZ2luX3Jlc3BvbnNlID0gcmVzcG9uc2UucmVzcG9uc2VzWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChsb2dpbl9yZXNwb25zZS5zdGF0dXMuc3RhdGUgIT09ICdzdWNjZXNzJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ2luX3Jlc3BvbnNlLnN0YXR1cy5zdGF0ZSAhPT0gJ3dhcm5pbmcnKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBsb2dpbl9yZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVzcG9uc2VfbG9nIG9mIGxvZ2luX3Jlc3BvbnNlLmxvZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2VfbG9nLnR5cGUgPT09ICdzdWNjZXNzJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZV9sb2cubWVzc2FnZV9jb2RlID09PSAnbG9naW5fc3VjY2VzcycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2Vzc2lvbl9kYXRhID0gbG9naW5fcmVzcG9uc2Uuc2Vzc2lvbl9kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXNlcl9pZCA9ICtsb2dpbl9yZXNwb25zZS5lc29sdmVfaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2NhdGlvbl9pZCA9ICtzZXNzaW9uX2RhdGEubG9jYXRpb25faWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uLmhhbmRsZVVwZGF0ZVNlc3Npb24oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6IHVzZXJfaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25faWQ6IGxvY2F0aW9uX2lkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXNlcl9pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbG9naW5fcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtbG9naW4nLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBsb2dvdXQoKTogUHJvbWlzZTxFc29sdmVBdXRoR2V0UmVzcG9uc2U+IHtcclxuICAgICAgICB0aGlzLnNlc3Npb24uY2xlYXJUaW1lcigpO1xyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUoJ193c19pZCcpO1xyXG5cclxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0QWNjZXNzVG9rZW4oJycsICcnLCB0cnVlKS50b1Byb21pc2UoKTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCByZXNwb25zZScpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tBY2Nlc3NUb2tlbihzZXNzaW9uPzogRXNvbHZlU2Vzc2lvbik6IE9ic2VydmFibGU8RXNvbHZlQXV0aFJlc3VsdD4ge1xyXG4gICAgICAgIHNlc3Npb24gPSBzZXNzaW9uIHx8IHRoaXMuc2Vzc2lvbi5jdXJyZW50U2Vzc2lvbjtcclxuXHJcbiAgICAgICAgY29uc3QgdG9rZW4gPSBzZXNzaW9uPy5rZXkgPz8gJyc7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxFc29sdmVBdXRoQ2hlY2tSZXNwb25zZT4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtYWNjZXNzLXRva2VuLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IGtleTogdG9rZW4gfSxcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogJyonLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZURhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZURhdGEudHlwZSA9PT0gJ2Vycm9yJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlRGF0YS50eXBlID09PSAnZXhjZXB0aW9uJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKCFyZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhLmtleV9va2F5KVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZURhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsX2RhdGEgPSByZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQ6IEVzb2x2ZUF1dGhSZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogdG9rZW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZXM6IGFkZGl0aW9uYWxfZGF0YS5leHBpcmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBpcnlfdGltZTogYWRkaXRpb25hbF9kYXRhLmV4cGlyeV90aW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbl9pZDogYWRkaXRpb25hbF9kYXRhLmxvY2F0aW9uX2lkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOiBhZGRpdGlvbmFsX2RhdGEudXNlcl9pZCxcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBIYW5kbGVyc1xyXG4gICAgcHJpdmF0ZSBoYW5kbGVFeHBpcmF0aW9uKCk6IChzZXNzaW9uPzogRXNvbHZlU2Vzc2lvbikgPT4gdm9pZCB7XHJcbiAgICAgICAgcmV0dXJuIChzZXNzaW9uPzogRXNvbHZlU2Vzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrQWNjZXNzVG9rZW4oc2Vzc2lvbikudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUF1dGhlbnRpY2F0aW9uKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVBdXRoZW50aWNhdGlvbihyZXN1bHQ6IEVzb2x2ZUF1dGhSZXN1bHQpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXJlc3VsdC5rZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXNzaW9uLmhhbmRsZVNlc3Npb24oXHJcbiAgICAgICAgICAgICtyZXN1bHQudXNlcl9pZCxcclxuICAgICAgICAgICAgK3Jlc3VsdC5sb2NhdGlvbl9pZCxcclxuICAgICAgICAgICAgcmVzdWx0LmtleSxcclxuICAgICAgICAgICAgK3Jlc3VsdC5leHBpcnlfdGltZSxcclxuICAgICAgICAgICAgK3Jlc3VsdC5leHBpcmVzLFxyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUV4cGlyYXRpb24oKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVFcnJvcihcclxuICAgICAgICBlcnJvclJlczogRXNvbHZlQXV0aEdldFJlc3BvbnNlIHwgRXNvbHZlQXV0aENoZWNrUmVzcG9uc2VcclxuICAgICk6IE9ic2VydmFibGU8bmV2ZXI+IHtcclxuICAgICAgICBjb25zdCBlcnJvciA9IHtcclxuICAgICAgICAgICAgbWVzc2FnZTogJ0FuIHVua25vd24gZXJyb3Igb2NjdXJyZWQnLFxyXG4gICAgICAgICAgICBkYXRhOiB7fSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICghZXJyb3JSZXMudHlwZSkgfHxcclxuICAgICAgICAgICAgKCFlcnJvclJlcy5zZXJ2aWNlX3R5cGUpIHx8XHJcbiAgICAgICAgICAgICghZXJyb3JSZXMubWVzc2FnZSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVycm9yUmVzLm1lc3NhZ2UudHJpbSgpICE9PSAnJykge1xyXG4gICAgICAgICAgICBlcnJvci5tZXNzYWdlID0gZXJyb3JSZXMubWVzc2FnZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlcnJvclJlcy5hZGRpdGlvbmFsX2RhdGEpIHtcclxuICAgICAgICAgICAgZXJyb3IuZGF0YSA9IGVycm9yUmVzLmFkZGl0aW9uYWxfZGF0YTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,11 @@
1
+ export class EsolveBankingDetails {
2
+ constructor(bank_name, account_holder, account, account_type, swift_number, branch_code) {
3
+ this.bank_name = bank_name;
4
+ this.account_holder = account_holder;
5
+ this.account = account;
6
+ this.account_type = account_type;
7
+ this.swift_number = swift_number;
8
+ this.branch_code = branch_code;
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWJhbmtpbmctZGV0YWlscy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvcGF5bWVudC9jbGFzc2VzL2Vzb2x2ZS1iYW5raW5nLWRldGFpbHMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLG9CQUFvQjtJQUM3QixZQUNXLFNBQWlCLEVBQ2pCLGNBQXNCLEVBQ3RCLE9BQWUsRUFDZixZQUFvQixFQUNwQixZQUFvQixFQUNwQixXQUFtQjtRQUxuQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLG1CQUFjLEdBQWQsY0FBYyxDQUFRO1FBQ3RCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUNwQixpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUNwQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtJQUMxQixDQUFDO0NBQ1IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRXNvbHZlQmFua2luZ0RldGFpbHMge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIGJhbmtfbmFtZTogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBhY2NvdW50X2hvbGRlcjogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBhY2NvdW50OiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIGFjY291bnRfdHlwZTogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBzd2lmdF9udW1iZXI6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgYnJhbmNoX2NvZGU6IHN0cmluZyxcclxuICAgICkgeyB9XHJcbn1cclxuIl19
@@ -0,0 +1,36 @@
1
+ import { EsolveBankingDetails } from './esolve-banking-details.model';
2
+ export class EsolvePaymentMethod {
3
+ constructor(record) {
4
+ this.id = +record.id;
5
+ this.location_id = +record.location_id;
6
+ this.paymethod_name = record.paymethod_name;
7
+ this.description = record.description;
8
+ this.display_banking_details = record.display_banking_details;
9
+ this.currency_code = record.currency_code;
10
+ this.merchant_id = record.merchant_id;
11
+ this.application_id = record.application_id;
12
+ this.api_signature = record.api_signature;
13
+ this.is_gateway = record.is_gateway;
14
+ this.must_store_card_details = record.must_store_card_details;
15
+ this.allow_budget = record.allow_budget;
16
+ this.integration_type = record.integration_type;
17
+ this.bank_gateway_id = record.bank_gateway_id;
18
+ this.accepted_card_types = record.accepted_card_types;
19
+ this.post_transactions_to_gateway = record.post_transactions_to_gateway;
20
+ this.three_d_secure_url = record.three_d_secure_url;
21
+ this.gateway_url = record.gateway_url;
22
+ this.generate_token_url = record.generate_token_url;
23
+ this.widget_url = record.widget_url;
24
+ this.successful_url = record.successful_url;
25
+ this.failed_url = record.failed_url;
26
+ this.enable_callback = record.enable_callback;
27
+ this.live = record.live;
28
+ this.default_module_id = +record.default_module_id;
29
+ this.service_provider = record.service_provider;
30
+ this.on_account = record.on_account;
31
+ this.sort_priority = +record.sort_priority;
32
+ this.image_url = record.image_url;
33
+ this.banking_details = new EsolveBankingDetails(record.bank_name, record.account_holder, record.account, record.account_type, record.swift_number, record.branch_code);
34
+ }
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXBheW1lbnQtbWV0aG9kLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9wYXltZW50L2NsYXNzZXMvZXNvbHZlLXBheW1lbnQtbWV0aG9kLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXRFLE1BQU0sT0FBTyxtQkFBbUI7SUFpQzVCLFlBQVksTUFBaUM7UUFDekMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUN0QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDO1FBQzlELElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDdEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztRQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDcEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQztRQUM5RCxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDeEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztRQUNoRCxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFDOUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztRQUN0RCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixDQUFDO1FBQ3hFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUM7UUFDcEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUM7UUFDcEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQztRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDcEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7UUFDbkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztRQUNoRCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBRWxDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxvQkFBb0IsQ0FDM0MsTUFBTSxDQUFDLFNBQVMsRUFDaEIsTUFBTSxDQUFDLGNBQWMsRUFDckIsTUFBTSxDQUFDLE9BQU8sRUFDZCxNQUFNLENBQUMsWUFBWSxFQUNuQixNQUFNLENBQUMsWUFBWSxFQUNuQixNQUFNLENBQUMsV0FBVyxDQUNyQixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXNvbHZlSW50ZWdyYXRpb25UeXBlIH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5pbXBvcnQgeyBFc29sdmVQYXltZW50TWV0aG9kUmVjb3JkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEVzb2x2ZUJhbmtpbmdEZXRhaWxzIH0gZnJvbSAnLi9lc29sdmUtYmFua2luZy1kZXRhaWxzLm1vZGVsJztcclxuXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVQYXltZW50TWV0aG9kIHtcclxuICAgIHB1YmxpYyBpZDogbnVtYmVyO1xyXG4gICAgcHVibGljIGxvY2F0aW9uX2lkOiBudW1iZXI7XHJcbiAgICBwdWJsaWMgcGF5bWV0aG9kX25hbWU6IHN0cmluZztcclxuICAgIHB1YmxpYyBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgcHVibGljIGRpc3BsYXlfYmFua2luZ19kZXRhaWxzOiBib29sZWFuO1xyXG4gICAgcHVibGljIGN1cnJlbmN5X2NvZGU6IHN0cmluZztcclxuICAgIHB1YmxpYyBtZXJjaGFudF9pZDogc3RyaW5nO1xyXG4gICAgcHVibGljIGFwcGxpY2F0aW9uX2lkOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgYXBpX3NpZ25hdHVyZTogc3RyaW5nO1xyXG4gICAgcHVibGljIGlzX2dhdGV3YXk6IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgbXVzdF9zdG9yZV9jYXJkX2RldGFpbHM6IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgYWxsb3dfYnVkZ2V0OiBib29sZWFuO1xyXG4gICAgcHVibGljIGludGVncmF0aW9uX3R5cGU6IEVzb2x2ZUludGVncmF0aW9uVHlwZTtcclxuICAgIHB1YmxpYyBiYW5rX2dhdGV3YXlfaWQ6IHN0cmluZztcclxuICAgIHB1YmxpYyBhY2NlcHRlZF9jYXJkX3R5cGVzOiBzdHJpbmdbXTtcclxuICAgIHB1YmxpYyBwb3N0X3RyYW5zYWN0aW9uc190b19nYXRld2F5OiBib29sZWFuO1xyXG4gICAgcHVibGljIHRocmVlX2Rfc2VjdXJlX3VybDogc3RyaW5nO1xyXG4gICAgcHVibGljIGdhdGV3YXlfdXJsOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgZ2VuZXJhdGVfdG9rZW5fdXJsOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgd2lkZ2V0X3VybDogc3RyaW5nO1xyXG4gICAgcHVibGljIHN1Y2Nlc3NmdWxfdXJsOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgZmFpbGVkX3VybDogc3RyaW5nO1xyXG4gICAgcHVibGljIGVuYWJsZV9jYWxsYmFjazogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBsaXZlOiBib29sZWFuO1xyXG4gICAgcHVibGljIGRlZmF1bHRfbW9kdWxlX2lkOiBudW1iZXI7XHJcbiAgICBwdWJsaWMgc2VydmljZV9wcm92aWRlcjogc3RyaW5nO1xyXG4gICAgcHVibGljIG9uX2FjY291bnQ6IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgc29ydF9wcmlvcml0eTogbnVtYmVyO1xyXG4gICAgcHVibGljIGltYWdlX3VybDogc3RyaW5nO1xyXG5cclxuICAgIHB1YmxpYyBiYW5raW5nX2RldGFpbHM6IEVzb2x2ZUJhbmtpbmdEZXRhaWxzO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlY29yZDogRXNvbHZlUGF5bWVudE1ldGhvZFJlY29yZCkge1xyXG4gICAgICAgIHRoaXMuaWQgPSArcmVjb3JkLmlkO1xyXG4gICAgICAgIHRoaXMubG9jYXRpb25faWQgPSArcmVjb3JkLmxvY2F0aW9uX2lkO1xyXG4gICAgICAgIHRoaXMucGF5bWV0aG9kX25hbWUgPSByZWNvcmQucGF5bWV0aG9kX25hbWU7XHJcbiAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IHJlY29yZC5kZXNjcmlwdGlvbjtcclxuICAgICAgICB0aGlzLmRpc3BsYXlfYmFua2luZ19kZXRhaWxzID0gcmVjb3JkLmRpc3BsYXlfYmFua2luZ19kZXRhaWxzO1xyXG4gICAgICAgIHRoaXMuY3VycmVuY3lfY29kZSA9IHJlY29yZC5jdXJyZW5jeV9jb2RlO1xyXG4gICAgICAgIHRoaXMubWVyY2hhbnRfaWQgPSByZWNvcmQubWVyY2hhbnRfaWQ7XHJcbiAgICAgICAgdGhpcy5hcHBsaWNhdGlvbl9pZCA9IHJlY29yZC5hcHBsaWNhdGlvbl9pZDtcclxuICAgICAgICB0aGlzLmFwaV9zaWduYXR1cmUgPSByZWNvcmQuYXBpX3NpZ25hdHVyZTtcclxuICAgICAgICB0aGlzLmlzX2dhdGV3YXkgPSByZWNvcmQuaXNfZ2F0ZXdheTtcclxuICAgICAgICB0aGlzLm11c3Rfc3RvcmVfY2FyZF9kZXRhaWxzID0gcmVjb3JkLm11c3Rfc3RvcmVfY2FyZF9kZXRhaWxzO1xyXG4gICAgICAgIHRoaXMuYWxsb3dfYnVkZ2V0ID0gcmVjb3JkLmFsbG93X2J1ZGdldDtcclxuICAgICAgICB0aGlzLmludGVncmF0aW9uX3R5cGUgPSByZWNvcmQuaW50ZWdyYXRpb25fdHlwZTtcclxuICAgICAgICB0aGlzLmJhbmtfZ2F0ZXdheV9pZCA9IHJlY29yZC5iYW5rX2dhdGV3YXlfaWQ7XHJcbiAgICAgICAgdGhpcy5hY2NlcHRlZF9jYXJkX3R5cGVzID0gcmVjb3JkLmFjY2VwdGVkX2NhcmRfdHlwZXM7XHJcbiAgICAgICAgdGhpcy5wb3N0X3RyYW5zYWN0aW9uc190b19nYXRld2F5ID0gcmVjb3JkLnBvc3RfdHJhbnNhY3Rpb25zX3RvX2dhdGV3YXk7XHJcbiAgICAgICAgdGhpcy50aHJlZV9kX3NlY3VyZV91cmwgPSByZWNvcmQudGhyZWVfZF9zZWN1cmVfdXJsO1xyXG4gICAgICAgIHRoaXMuZ2F0ZXdheV91cmwgPSByZWNvcmQuZ2F0ZXdheV91cmw7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZV90b2tlbl91cmwgPSByZWNvcmQuZ2VuZXJhdGVfdG9rZW5fdXJsO1xyXG4gICAgICAgIHRoaXMud2lkZ2V0X3VybCA9IHJlY29yZC53aWRnZXRfdXJsO1xyXG4gICAgICAgIHRoaXMuc3VjY2Vzc2Z1bF91cmwgPSByZWNvcmQuc3VjY2Vzc2Z1bF91cmw7XHJcbiAgICAgICAgdGhpcy5mYWlsZWRfdXJsID0gcmVjb3JkLmZhaWxlZF91cmw7XHJcbiAgICAgICAgdGhpcy5lbmFibGVfY2FsbGJhY2sgPSByZWNvcmQuZW5hYmxlX2NhbGxiYWNrO1xyXG4gICAgICAgIHRoaXMubGl2ZSA9IHJlY29yZC5saXZlO1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdF9tb2R1bGVfaWQgPSArcmVjb3JkLmRlZmF1bHRfbW9kdWxlX2lkO1xyXG4gICAgICAgIHRoaXMuc2VydmljZV9wcm92aWRlciA9IHJlY29yZC5zZXJ2aWNlX3Byb3ZpZGVyO1xyXG4gICAgICAgIHRoaXMub25fYWNjb3VudCA9IHJlY29yZC5vbl9hY2NvdW50O1xyXG4gICAgICAgIHRoaXMuc29ydF9wcmlvcml0eSA9ICtyZWNvcmQuc29ydF9wcmlvcml0eTtcclxuICAgICAgICB0aGlzLmltYWdlX3VybCA9IHJlY29yZC5pbWFnZV91cmw7XHJcblxyXG4gICAgICAgIHRoaXMuYmFua2luZ19kZXRhaWxzID0gbmV3IEVzb2x2ZUJhbmtpbmdEZXRhaWxzKFxyXG4gICAgICAgICAgICByZWNvcmQuYmFua19uYW1lLFxyXG4gICAgICAgICAgICByZWNvcmQuYWNjb3VudF9ob2xkZXIsXHJcbiAgICAgICAgICAgIHJlY29yZC5hY2NvdW50LFxyXG4gICAgICAgICAgICByZWNvcmQuYWNjb3VudF90eXBlLFxyXG4gICAgICAgICAgICByZWNvcmQuc3dpZnRfbnVtYmVyLFxyXG4gICAgICAgICAgICByZWNvcmQuYnJhbmNoX2NvZGUsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,37 @@
1
+ import { EsolveResponseResult } from '../../shared/response';
2
+ export class EsolvePaymentResult extends EsolveResponseResult {
3
+ constructor(response) {
4
+ super(response);
5
+ this.redirect_required = false;
6
+ if (typeof response.service_provider !== 'undefined') {
7
+ this.service_provider = response.service_provider;
8
+ }
9
+ if (typeof response.redirect_required !== 'undefined') {
10
+ this.redirect_required = response.redirect_required;
11
+ }
12
+ this.gateway_error_message = response.gateway_error_message ?? '';
13
+ // Check if redirect settings need to be set
14
+ if (this.redirect_required && this.service_provider) {
15
+ if (typeof response.redirect_url !== 'undefined') {
16
+ this.redirect_url = response.redirect_url;
17
+ }
18
+ // Check integration specific settings
19
+ if (this.service_provider === 'snapscan') {
20
+ // QR code scan is required
21
+ if (typeof response.qr_code_url !== 'undefined') {
22
+ this.qr_code_url = response.qr_code_url;
23
+ }
24
+ }
25
+ else {
26
+ // Normal form posting redirect
27
+ if (typeof response.form_inputs !== 'undefined') {
28
+ this.form_inputs = response.form_inputs;
29
+ }
30
+ if (typeof response.form_enctype !== 'undefined') {
31
+ this.form_enctype = response.form_enctype;
32
+ }
33
+ }
34
+ }
35
+ }
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXBheW1lbnQtcmVzdWx0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9wYXltZW50L2NsYXNzZXMvZXNvbHZlLXBheW1lbnQtcmVzdWx0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSzdELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxvQkFBb0I7SUF3QnpELFlBQVksUUFBK0I7UUFDdkMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBdkJiLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQXlCdEMsSUFBSSxPQUFPLFFBQVEsQ0FBQyxnQkFBZ0IsS0FBSyxXQUFXLEVBQUU7WUFDbEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztTQUNyRDtRQUVELElBQUksT0FBTyxRQUFRLENBQUMsaUJBQWlCLEtBQUssV0FBVyxFQUFFO1lBQ25ELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUM7U0FDdkQ7UUFFRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsUUFBUSxDQUFDLHFCQUFxQixJQUFJLEVBQUUsQ0FBQztRQUVsRSw0Q0FBNEM7UUFDNUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ2pELElBQUksT0FBTyxRQUFRLENBQUMsWUFBWSxLQUFLLFdBQVcsRUFBRTtnQkFDOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO2FBQzdDO1lBRUQsc0NBQXNDO1lBQ3RDLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLFVBQVUsRUFBRTtnQkFDdEMsMkJBQTJCO2dCQUMzQixJQUFJLE9BQU8sUUFBUSxDQUFDLFdBQVcsS0FBSyxXQUFXLEVBQUU7b0JBQzdDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztpQkFDM0M7YUFDSjtpQkFBTTtnQkFDSCwrQkFBK0I7Z0JBQy9CLElBQUksT0FBTyxRQUFRLENBQUMsV0FBVyxLQUFLLFdBQVcsRUFBRTtvQkFDN0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO2lCQUMzQztnQkFFRCxJQUFJLE9BQU8sUUFBUSxDQUFDLFlBQVksS0FBSyxXQUFXLEVBQUU7b0JBQzlDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQztpQkFDN0M7YUFDSjtTQUNKO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXNvbHZlUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi8uLi9zaGFyZWQvcmVzcG9uc2UnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlU2VydmljZVByb3ZpZGVyIH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5pbXBvcnQgeyBFc29sdmVQYXltZW50UmVzcG9uc2UsIEVzb2x2ZVBheW1lbnRGb3JtSW5wdXQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVQYXltZW50UmVzdWx0IGV4dGVuZHMgRXNvbHZlUmVzcG9uc2VSZXN1bHQge1xyXG4gICAgcHVibGljIGdhdGV3YXlfZXJyb3JfbWVzc2FnZTogc3RyaW5nO1xyXG4gICAgcHVibGljIHJlZGlyZWN0X3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgc2VydmljZV9wcm92aWRlcj86IEVzb2x2ZVNlcnZpY2VQcm92aWRlcjtcclxuICAgIHB1YmxpYyByZWRpcmVjdF91cmw/OiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIEZvcm0gcG9zdCB2YXJpYWJsZXNcclxuICAgICAqXHJcbiAgICAgKiBOb3QgYXZhaWxhYmxlIHRvIFNuYXBTY2FuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmb3JtX2lucHV0cz86IEVzb2x2ZVBheW1lbnRGb3JtSW5wdXRbXTtcclxuICAgICAvKipcclxuICAgICAqIEZvcm0gcG9zdCBjb250ZW50IHR5cGVcclxuICAgICAqXHJcbiAgICAgKiBOb3QgYXZhaWxhYmxlIHRvIFNuYXBTY2FuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmb3JtX2VuY3R5cGU/OiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIFFSIGNvZGUgaW1hZ2UgdXJsXHJcbiAgICAgKlxyXG4gICAgICogT25seSBhdmFpbGFibGUgdG8gU25hcFNjYW4gaW50ZWdyYXRpb25zXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBxcl9jb2RlX3VybD86IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZXNwb25zZTogRXNvbHZlUGF5bWVudFJlc3BvbnNlKSB7XHJcbiAgICAgICAgc3VwZXIocmVzcG9uc2UpO1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIHJlc3BvbnNlLnNlcnZpY2VfcHJvdmlkZXIgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VydmljZV9wcm92aWRlciA9IHJlc3BvbnNlLnNlcnZpY2VfcHJvdmlkZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodHlwZW9mIHJlc3BvbnNlLnJlZGlyZWN0X3JlcXVpcmVkICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLnJlZGlyZWN0X3JlcXVpcmVkID0gcmVzcG9uc2UucmVkaXJlY3RfcmVxdWlyZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmdhdGV3YXlfZXJyb3JfbWVzc2FnZSA9IHJlc3BvbnNlLmdhdGV3YXlfZXJyb3JfbWVzc2FnZSA/PyAnJztcclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgcmVkaXJlY3Qgc2V0dGluZ3MgbmVlZCB0byBiZSBzZXRcclxuICAgICAgICBpZiAodGhpcy5yZWRpcmVjdF9yZXF1aXJlZCAmJiB0aGlzLnNlcnZpY2VfcHJvdmlkZXIpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNwb25zZS5yZWRpcmVjdF91cmwgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZGlyZWN0X3VybCA9IHJlc3BvbnNlLnJlZGlyZWN0X3VybDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gQ2hlY2sgaW50ZWdyYXRpb24gc3BlY2lmaWMgc2V0dGluZ3NcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VydmljZV9wcm92aWRlciA9PT0gJ3NuYXBzY2FuJykge1xyXG4gICAgICAgICAgICAgICAgLy8gUVIgY29kZSBzY2FuIGlzIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlc3BvbnNlLnFyX2NvZGVfdXJsICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucXJfY29kZV91cmwgPSByZXNwb25zZS5xcl9jb2RlX3VybDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIE5vcm1hbCBmb3JtIHBvc3RpbmcgcmVkaXJlY3RcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzcG9uc2UuZm9ybV9pbnB1dHMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtX2lucHV0cyA9IHJlc3BvbnNlLmZvcm1faW5wdXRzO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzcG9uc2UuZm9ybV9lbmN0eXBlICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybV9lbmN0eXBlID0gcmVzcG9uc2UuZm9ybV9lbmN0eXBlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { EsolveResponseResult } from '../../shared/response';
2
+ export class EsolveVaultItemResult extends EsolveResponseResult {
3
+ constructor(response) {
4
+ super(response);
5
+ this.id = +response.esolve_id;
6
+ if (typeof response.token !== 'undefined') {
7
+ this.token = response.token;
8
+ }
9
+ if (typeof response.card_valid !== 'undefined') {
10
+ this.card_valid = response.card_valid;
11
+ }
12
+ if (typeof response.card_details_validated !== 'undefined') {
13
+ this.card_details_validated = response.card_details_validated;
14
+ }
15
+ if (typeof response.gateway_error_message !== 'undefined') {
16
+ this.gateway_error_message = response.gateway_error_message;
17
+ }
18
+ }
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXZhdWx0LWl0ZW0tcmVzdWx0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9wYXltZW50L2NsYXNzZXMvZXNvbHZlLXZhdWx0LWl0ZW0tcmVzdWx0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTdELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxvQkFBb0I7SUFPM0QsWUFBWSxRQUE2QjtRQUNyQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFFOUIsSUFBSSxPQUFPLFFBQVEsQ0FBQyxLQUFLLEtBQU0sV0FBVyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztTQUMvQjtRQUVELElBQUksT0FBTyxRQUFRLENBQUMsVUFBVSxLQUFNLFdBQVcsRUFBRTtZQUM3QyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7U0FDekM7UUFFRCxJQUFJLE9BQU8sUUFBUSxDQUFDLHNCQUFzQixLQUFNLFdBQVcsRUFBRTtZQUN6RCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDO1NBQ2pFO1FBRUQsSUFBSSxPQUFPLFFBQVEsQ0FBQyxxQkFBcUIsS0FBTSxXQUFXLEVBQUU7WUFDeEQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztTQUMvRDtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVzb2x2ZVJlc3BvbnNlUmVzdWx0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL3Jlc3BvbnNlJztcclxuXHJcbmltcG9ydCB7IEVzb2x2ZVZhdWx0UmVzcG9uc2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVWYXVsdEl0ZW1SZXN1bHQgZXh0ZW5kcyBFc29sdmVSZXNwb25zZVJlc3VsdCB7XHJcbiAgICBwdWJsaWMgaWQ6IG51bWJlcjtcclxuICAgIHB1YmxpYyB0b2tlbj86IHN0cmluZztcclxuICAgIHB1YmxpYyBjYXJkX3ZhbGlkPzogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBjYXJkX2RldGFpbHNfdmFsaWRhdGVkPzogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBnYXRld2F5X2Vycm9yX21lc3NhZ2U/OiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVzcG9uc2U6IEVzb2x2ZVZhdWx0UmVzcG9uc2UpIHtcclxuICAgICAgICBzdXBlcihyZXNwb25zZSk7XHJcblxyXG4gICAgICAgIHRoaXMuaWQgPSArcmVzcG9uc2UuZXNvbHZlX2lkO1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIHJlc3BvbnNlLnRva2VuICAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgdGhpcy50b2tlbiA9IHJlc3BvbnNlLnRva2VuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiByZXNwb25zZS5jYXJkX3ZhbGlkICAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXJkX3ZhbGlkID0gcmVzcG9uc2UuY2FyZF92YWxpZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgcmVzcG9uc2UuY2FyZF9kZXRhaWxzX3ZhbGlkYXRlZCAgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FyZF9kZXRhaWxzX3ZhbGlkYXRlZCA9IHJlc3BvbnNlLmNhcmRfZGV0YWlsc192YWxpZGF0ZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodHlwZW9mIHJlc3BvbnNlLmdhdGV3YXlfZXJyb3JfbWVzc2FnZSAgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2F0ZXdheV9lcnJvcl9tZXNzYWdlID0gcmVzcG9uc2UuZ2F0ZXdheV9lcnJvcl9tZXNzYWdlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,20 @@
1
+ export class EsolveVaultItem {
2
+ constructor(id, payment_methods_id, last4, brand, expiry_timestamp) {
3
+ this.id = id;
4
+ this.payment_methods_id = payment_methods_id;
5
+ this.last4 = last4;
6
+ this.brand = brand;
7
+ this.expiry = new Date(expiry_timestamp * 1000);
8
+ }
9
+ get expiry_month() {
10
+ const month = this.expiry.getMonth() + 1;
11
+ return month.toString().padStart(2, '0');
12
+ }
13
+ get expiry_year() {
14
+ return this.expiry.getFullYear();
15
+ }
16
+ get masked_number() {
17
+ return this.last4.padStart(19, '**** ');
18
+ }
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXZhdWx0LWl0ZW0ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL3BheW1lbnQvY2xhc3Nlcy9lc29sdmUtdmF1bHQtaXRlbS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sZUFBZTtJQWlCeEIsWUFDVyxFQUFVLEVBQ1Ysa0JBQTBCLEVBQzFCLEtBQWEsRUFDYixLQUFhLEVBQ3BCLGdCQUF3QjtRQUpqQixPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ1YsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBR3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQXRCRCxJQUFXLFlBQVk7UUFDbkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFekMsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FXSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBFc29sdmVWYXVsdEl0ZW0ge1xyXG4gICAgcHJpdmF0ZSBleHBpcnk6IERhdGU7XHJcblxyXG4gICAgcHVibGljIGdldCBleHBpcnlfbW9udGgoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBtb250aCA9IHRoaXMuZXhwaXJ5LmdldE1vbnRoKCkgKyAxO1xyXG5cclxuICAgICAgICByZXR1cm4gbW9udGgudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZXhwaXJ5X3llYXIoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5leHBpcnkuZ2V0RnVsbFllYXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IG1hc2tlZF9udW1iZXIoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sYXN0NC5wYWRTdGFydCgxOSwgJyoqKiogJyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIGlkOiBudW1iZXIsXHJcbiAgICAgICAgcHVibGljIHBheW1lbnRfbWV0aG9kc19pZDogbnVtYmVyLFxyXG4gICAgICAgIHB1YmxpYyBsYXN0NDogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBicmFuZDogc3RyaW5nLFxyXG4gICAgICAgIGV4cGlyeV90aW1lc3RhbXA6IG51bWJlcixcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuZXhwaXJ5ID0gbmV3IERhdGUoZXhwaXJ5X3RpbWVzdGFtcCAqIDEwMDApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export * from './esolve-banking-details.model';
2
+ export * from './esolve-payment-method.model';
3
+ export * from './esolve-payment-result.model';
4
+ export * from './esolve-vault-item-result.model';
5
+ export * from './esolve-vault-item.model';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL3BheW1lbnQvY2xhc3Nlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1iYW5raW5nLWRldGFpbHMubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1wYXltZW50LW1ldGhvZC5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXBheW1lbnQtcmVzdWx0Lm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtdmF1bHQtaXRlbS1yZXN1bHQubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS12YXVsdC1pdGVtLm1vZGVsJztcclxuIl19
@@ -3,10 +3,7 @@ import { Inject, Injectable } from '@angular/core';
3
3
  import { catchError, map } from 'rxjs/operators';
4
4
  import { ESOLVE_CONNECT_CONFIG } from '../esolve-connect-config.constant';
5
5
  import { EsolveResult } from '../shared/esolve-result.model';
6
- import { EsolvePaymentMethod } from './esolve-payment-method.model';
7
- import { EsolveVaultItem } from './esolve-vault-item.model';
8
- import { EsolveVaultItemResult } from './esolve-vault-item-result.model';
9
- import { EsolvePaymentResult } from './esolve-payment-result.model';
6
+ import { EsolvePaymentMethod, EsolvePaymentResult, EsolveVaultItem, EsolveVaultItemResult, } from './classes';
10
7
  import * as i0 from "@angular/core";
11
8
  import * as i1 from "@angular/common/http";
12
9
  import * as i2 from "../shared/errors/esolve-error-handler.service";
@@ -20,7 +17,9 @@ export class EsolvePaymentService {
20
17
  }
21
18
  /**
22
19
  * Retrieves a list of payment methods.
20
+ *
23
21
  * @param options Filter options
22
+ *
24
23
  * @returns An `Observable` with an array of payment methods
25
24
  */
26
25
  getPaymentMethods(options) {
@@ -33,9 +32,28 @@ export class EsolvePaymentService {
33
32
  return this.processPaymentMethods(response.records);
34
33
  }));
35
34
  }
35
+ /**
36
+ * Retrieve the payment status of the specified transaction
37
+ *
38
+ * @param transaction_id ID of the transaction
39
+ *
40
+ * @returns An `Observable` with the success status of the payment
41
+ */
42
+ getPaymentStatus(transaction_id) {
43
+ return this.http
44
+ .get(`${this.config.api_url}/get-payment-status.php`, { params: { cart_id: transaction_id } })
45
+ .pipe(map((response) => {
46
+ if (response.records === undefined) {
47
+ throw response;
48
+ }
49
+ return response.records.success;
50
+ }));
51
+ }
36
52
  /**
37
53
  * Retrieves a list of saved cards from the vault.
54
+ *
38
55
  * @param payment_methods_id eSolve ID of a payment method
56
+ *
39
57
  * @returns An `Observable` with an array of saved bank cards
40
58
  */
41
59
  getVault(payment_methods_id) {
@@ -54,8 +72,10 @@ export class EsolvePaymentService {
54
72
  }
55
73
  /**
56
74
  * Sets a new card in the vault OR updates an existing one.
75
+ *
57
76
  * @param payment_methods_id Selected payment method
58
77
  * @param card_data Information of bank card
78
+ *
59
79
  * @returns An `Observable` with the result of the vault set.
60
80
  */
61
81
  setVaultItem(payment_methods_id, card_data) {
@@ -80,6 +100,13 @@ export class EsolvePaymentService {
80
100
  return this.errorHandler.handleHttpPostError('set-vault', errorRes);
81
101
  }));
82
102
  }
103
+ /**
104
+ * Delete a card in the vault
105
+ *
106
+ * @param id ID of the vault item
107
+ *
108
+ * @returns An `Observable` with the result of the vault delete.
109
+ */
83
110
  deleteVaultItem(id) {
84
111
  return this.http
85
112
  .delete(`${this.config.api_url}/delete-vault.php`, {
@@ -105,25 +132,28 @@ export class EsolvePaymentService {
105
132
  * @param transaction_id eSolve ID to the transaction
106
133
  * @param payment_methods_id eSolve ID to the selected payment method
107
134
  * @param card ID of selected card from the vault or information to a brand new card
135
+ *
108
136
  * @returns An `Observable` with the result of the payment
109
137
  */
110
138
  setPayment(transaction_id, payment_methods_id, card) {
111
139
  const body = {
112
140
  payment: {
113
141
  cart_id: transaction_id,
114
- payment_methods_id
142
+ payment_methods_id,
115
143
  },
116
144
  };
117
- if (typeof card === 'number') {
118
- body.payment.user_vault_id = card;
119
- }
120
- else {
121
- body.card = {
122
- card_number: card.card_number,
123
- card_name: card.name,
124
- card_cvv: card.cvv,
125
- card_expiry: this.generateExpiry(card),
126
- };
145
+ if (card) {
146
+ if (typeof card === 'number') {
147
+ body.payment.user_vault_id = card;
148
+ }
149
+ else {
150
+ body.card = {
151
+ card_number: card.card_number,
152
+ card_name: card.name,
153
+ card_cvv: card.cvv,
154
+ card_expiry: this.generateExpiry(card),
155
+ };
156
+ }
127
157
  }
128
158
  return this.http
129
159
  .post(`${this.config.api_url}/set-payment.php`, body, {
@@ -139,7 +169,9 @@ export class EsolvePaymentService {
139
169
  }
140
170
  /**
141
171
  * Processes the eSolve payment method records.
172
+ *
142
173
  * @param records Records to process
174
+ *
143
175
  * @returns An array of processed payment methods.
144
176
  */
145
177
  processPaymentMethods(records) {
@@ -154,7 +186,9 @@ export class EsolvePaymentService {
154
186
  }
155
187
  /**
156
188
  * Processes the eSolve vault records.
189
+ *
157
190
  * @param records Records to process
191
+ *
158
192
  * @returns An array of processed vault items (a.k.a. cards)
159
193
  */
160
194
  processVaultItems(records) {
@@ -167,6 +201,13 @@ export class EsolvePaymentService {
167
201
  }
168
202
  return vault;
169
203
  }
204
+ /**
205
+ * Generate a concatenated string with the expiry month and year
206
+ *
207
+ * @param card_data Credit card data
208
+ *
209
+ * @returns Expiry string
210
+ */
170
211
  generateExpiry(card_data) {
171
212
  const month_string = card_data.expiry_month.padStart(2, '0');
172
213
  const year_string = card_data.expiry_year.padStart(4, '0');
@@ -184,4 +225,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
184
225
  type: Inject,
185
226
  args: [ESOLVE_CONNECT_CONFIG]
186
227
  }] }, { type: i1.HttpClient }, { type: i2.EsolveErrorHandlerService }, { type: i3.EsolveResponseHandlerService }]; } });
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXBheW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvcGF5bWVudC9lc29sdmUtcGF5bWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakYsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUUxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFRN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFLcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7OztBQU9wRSxNQUFNLE9BQU8sb0JBQW9CO0lBQzdCLFlBQzJDLE1BQTJCLEVBQzFELElBQWdCLEVBQ2hCLFlBQXVDLEVBQ3ZDLGVBQTZDO1FBSGQsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDMUQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixpQkFBWSxHQUFaLFlBQVksQ0FBMkI7UUFDdkMsb0JBQWUsR0FBZixlQUFlLENBQThCO0lBQ3JELENBQUM7SUFFTDs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQUMsT0FBb0M7UUFDekQsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FDQSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMs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TSxDQUFDLEtBQUssRUFDWixNQUFNLENBQUMsZ0JBQWdCLENBQzFCLENBQUM7Z0JBRUYsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUMxQjtTQUNKO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxTQUF5QjtRQUM1QyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0QsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRTNELE9BQU8sR0FBRyxZQUFZLEdBQUcsV0FBVyxFQUFFLENBQUM7SUFDM0MsQ0FBQzs7aUhBaFBRLG9CQUFvQixrQkFFakIscUJBQXFCO3FIQUZ4QixvQkFBb0IsY0FGakIsTUFBTTsyRkFFVCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFHUSxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlQ29ubmVjdENvbmZpZyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LmNvbmZpZyc7XHJcbmltcG9ydCB7IEVTT0xWRV9DT05ORUNUX0NPTkZJRyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LWNvbmZpZy5jb25zdGFudCc7XHJcbmltcG9ydCB7IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvZXJyb3JzL2Vzb2x2ZS1lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVSZXN1bHQgfSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLXJlc3VsdC5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgICBFc29sdmVSZXNwb25zZUhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgRXNvbHZlRGVsZXRlUmVzcG9uc2UsXHJcbiAgICBFc29sdmVTZXRSZXNwb25zZSxcclxuICAgIEVzb2x2ZUdldFJlc3BvbnNlLFxyXG59IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZSc7XHJcblxyXG5pbXBvcnQgeyBFc29sdmVQYXltZW50TWV0aG9kIH0gZnJvbSAnLi9lc29sdmUtcGF5bWVudC1tZXRob2QubW9kZWwnO1xyXG5pbXBvcnQgeyBFc29sdmVQYXltZW50TWV0aG9kUmVjb3JkIH0gZnJvbSAnLi9lc29sdmUtcGF5bWVudC1tZXRob2QtcmVjb3JkLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVBheW1lbnRNZXRob2RPcHRpb25zIH0gZnJvbSAnLi9lc29sdmUtcGF5bWVudC1tZXRob2Qtb3B0aW9ucy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVDYXJkRGF0YSB9IGZyb20gJy4vZXNvbHZlLWNhcmQtZGF0YS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVWYXVsdFJlY29yZCB9IGZyb20gJy4vZXNvbHZlLXZhdWx0LXJlY29yZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVWYXVsdEl0ZW0gfSBmcm9tICcuL2Vzb2x2ZS12YXVsdC1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHsgRXNvbHZlVmF1bHRSZXNwb25zZSB9IGZyb20gJy4vZXNvbHZlLXZhdWx0LXJlc3BvbnNlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVZhdWx0SXRlbVJlc3VsdCB9IGZyb20gJy4vZXNvbHZlLXZhdWx0LWl0ZW0tcmVzdWx0Lm1vZGVsJztcclxuaW1wb3J0IHsgRXNvbHZlUGF5bWVudFJlc3VsdCB9IGZyb20gJy4vZXNvbHZlLXBheW1lbnQtcmVzdWx0Lm1vZGVsJztcclxuaW1wb3J0IHsgRXNvbHZlUGF5bWVudFJlc3BvbnNlIH0gZnJvbSAnLi9lc29sdmUtcGF5bWVudC1yZXNwb25zZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVQYXltZW50U2V0Qm9keSB9IGZyb20gJy4vZXNvbHZlLXBheW1lbnQtc2V0LWJvZHkuaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVzb2x2ZVBheW1lbnRTZXJ2aWNlIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoRVNPTFZFX0NPTk5FQ1RfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogRXNvbHZlQ29ubmVjdENvbmZpZyxcclxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZXNwb25zZUhhbmRsZXI6IEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2UsXHJcbiAgICApIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBwYXltZW50IG1ldGhvZHMuXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBGaWx0ZXIgb3B0aW9uc1xyXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggYW4gYXJyYXkgb2YgcGF5bWVudCBtZXRob2RzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRQYXltZW50TWV0aG9kcyhvcHRpb25zPzogRXNvbHZlUGF5bWVudE1ldGhvZE9wdGlvbnMpOiBPYnNlcnZhYmxlPEVzb2x2ZVBheW1lbnRNZXRob2RbXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVQYXltZW50TWV0aG9kUmVjb3JkW10+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1wYXltZW50LW1ldGhvZHMucGhwYCxcclxuICAgICAgICAgICAgICAgIHsgcGFyYW1zOiB7IC4uLm9wdGlvbnMgfSB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUGF5bWVudE1ldGhvZHMocmVzcG9uc2UucmVjb3Jkcyk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyBhIGxpc3Qgb2Ygc2F2ZWQgY2FyZHMgZnJvbSB0aGUgdmF1bHQuXHJcbiAgICAgKiBAcGFyYW0gcGF5bWVudF9tZXRob2RzX2lkIGVTb2x2ZSBJRCBvZiBhIHBheW1lbnQgbWV0aG9kXHJcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCBhbiBhcnJheSBvZiBzYXZlZCBiYW5rIGNhcmRzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRWYXVsdChwYXltZW50X21ldGhvZHNfaWQ/OiBudW1iZXIpOiBPYnNlcnZhYmxlPEVzb2x2ZVZhdWx0SXRlbVtdPiB7XHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgcGF5bWVudF9tZXRob2RzX2lkICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYXltZW50X21ldGhvZHNfaWQnLCBwYXltZW50X21ldGhvZHNfaWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVZhdWx0UmVjb3JkW10+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC12YXVsdC5waHBgLFxyXG4gICAgICAgICAgICAgICAgeyBwYXJhbXMgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1ZhdWx0SXRlbXMocmVzcG9uc2UucmVjb3Jkcyk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgYSBuZXcgY2FyZCBpbiB0aGUgdmF1bHQgT1IgdXBkYXRlcyBhbiBleGlzdGluZyBvbmUuXHJcbiAgICAgKiBAcGFyYW0gcGF5bWVudF9tZXRob2RzX2lkIFNlbGVjdGVkIHBheW1lbnQgbWV0aG9kXHJcbiAgICAgKiBAcGFyYW0gY2FyZF9kYXRhIEluZm9ybWF0aW9uIG9mIGJhbmsgY2FyZFxyXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUgdmF1bHQgc2V0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0VmF1bHRJdGVtKFxyXG4gICAgICAgIHBheW1lbnRfbWV0aG9kc19pZDogbnVtYmVyLFxyXG4gICAgICAgIGNhcmRfZGF0YTogRXNvbHZlQ2FyZERhdGEsXHJcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVZhdWx0SXRlbVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgICAgICAgIHZhdWx0OiB7XHJcbiAgICAgICAgICAgICAgICBwYXltZW50X21ldGhvZHNfaWQsXHJcbiAgICAgICAgICAgICAgICBjYXJkX251bWJlcjogY2FyZF9kYXRhLmNhcmRfbnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgY2FyZF9uYW1lOiBjYXJkX2RhdGEubmFtZSxcclxuICAgICAgICAgICAgICAgIGNhcmRfY3Z2OiBjYXJkX2RhdGEuY3Z2LFxyXG4gICAgICAgICAgICAgICAgY2FyZF9leHBpcnk6IHRoaXMuZ2VuZXJhdGVFeHBpcnkoY2FyZF9kYXRhKSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZVZhdWx0UmVzcG9uc2U+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC12YXVsdC5waHBgLFxyXG4gICAgICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7J1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT4gdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IG5ldyBFc29sdmVWYXVsdEl0ZW1SZXN1bHQocmVzcG9uc2UpLFxyXG4gICAgICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LXZhdWx0JywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlbGV0ZVZhdWx0SXRlbShpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxFc29sdmVSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5kZWxldGU8RXNvbHZlRGVsZXRlUmVzcG9uc2U+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZGVsZXRlLXZhdWx0LnBocGAsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IGlkIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGh0dHBfcmVzcG9uc2UucmVzdWx0ID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChodHRwX3Jlc3BvbnNlLnJlc3VsdCA9PT0gbnVsbCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGh0dHBfcmVzcG9uc2UucmVzdWx0LnN0YXR1cyAhPT0gJ3N1Y2Nlc3MnKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBodHRwX3Jlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVSZXN1bHQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UucmVzdWx0LnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZS5yZXN1bHQuY29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZS5yZXN1bHQubWVzc2FnZSxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cERlbGV0ZUVycm9yKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLXZhdWx0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JSZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgcGF5bWVudCBmb3IgdGhlIHNwZWNpZmllZCB0cmFuc2FjdGlvbiB1c2luZyBzZWxlY3RlZCBwYXltZW50XHJcbiAgICAgKiBtZXRob2QuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHRyYW5zYWN0aW9uX2lkIGVTb2x2ZSBJRCB0byB0aGUgdHJhbnNhY3Rpb25cclxuICAgICAqIEBwYXJhbSBwYXltZW50X21ldGhvZHNfaWQgZVNvbHZlIElEIHRvIHRoZSBzZWxlY3RlZCBwYXltZW50IG1ldGhvZFxyXG4gICAgICogQHBhcmFtIGNhcmQgSUQgb2Ygc2VsZWN0ZWQgY2FyZCBmcm9tIHRoZSB2YXVsdCBvciBpbmZvcm1hdGlvbiB0byBhIGJyYW5kIG5ldyBjYXJkXHJcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSBwYXltZW50XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRQYXltZW50KFxyXG4gICAgICAgIHRyYW5zYWN0aW9uX2lkOiBudW1iZXIsXHJcbiAgICAgICAgcGF5bWVudF9tZXRob2RzX2lkOiBudW1iZXIsXHJcbiAgICAgICAgY2FyZDogRXNvbHZlQ2FyZERhdGEgfCBudW1iZXIsXHJcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVBheW1lbnRSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBib2R5OiBFc29sdmVQYXltZW50U2V0Qm9keSA9IHtcclxuICAgICAgICAgICAgcGF5bWVudDoge1xyXG4gICAgICAgICAgICAgICAgY2FydF9pZDogdHJhbnNhY3Rpb25faWQsXHJcbiAgICAgICAgICAgICAgICBwYXltZW50X21ldGhvZHNfaWRcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIGNhcmQgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIGJvZHkucGF5bWVudC51c2VyX3ZhdWx0X2lkID0gY2FyZDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBib2R5LmNhcmQgPSB7XHJcbiAgICAgICAgICAgICAgICBjYXJkX251bWJlcjogY2FyZC5jYXJkX251bWJlcixcclxuICAgICAgICAgICAgICAgIGNhcmRfbmFtZTogY2FyZC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgY2FyZF9jdnY6IGNhcmQuY3Z2LFxyXG4gICAgICAgICAgICAgICAgY2FyZF9leHBpcnk6IHRoaXMuZ2VuZXJhdGVFeHBpcnkoY2FyZCksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZVBheW1lbnRSZXNwb25zZT4+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LXBheW1lbnQucGhwYCxcclxuICAgICAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OydcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+IHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxyXG4gICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiBuZXcgRXNvbHZlUGF5bWVudFJlc3VsdChyZXNwb25zZSksXHJcbiAgICAgICAgICAgICAgICApKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKCdzZXQtcGF5bWVudCcsIGVycm9yUmVzKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvY2Vzc2VzIHRoZSBlU29sdmUgcGF5bWVudCBtZXRob2QgcmVjb3Jkcy5cclxuICAgICAqIEBwYXJhbSByZWNvcmRzIFJlY29yZHMgdG8gcHJvY2Vzc1xyXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcHJvY2Vzc2VkIHBheW1lbnQgbWV0aG9kcy5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBwcm9jZXNzUGF5bWVudE1ldGhvZHMocmVjb3JkczogRXNvbHZlUGF5bWVudE1ldGhvZFJlY29yZFtdKTogRXNvbHZlUGF5bWVudE1ldGhvZFtdIHtcclxuICAgICAgICBjb25zdCBwYXltZW50X21ldGhvZHM6IEVzb2x2ZVBheW1lbnRNZXRob2RbXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAocmVjb3Jkcykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXltZW50X21ldGhvZCA9IG5ldyBFc29sdmVQYXltZW50TWV0aG9kKHJlY29yZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgcGF5bWVudF9tZXRob2RzLnB1c2gocGF5bWVudF9tZXRob2QpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcGF5bWVudF9tZXRob2RzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvY2Vzc2VzIHRoZSBlU29sdmUgdmF1bHQgcmVjb3Jkcy5cclxuICAgICAqIEBwYXJhbSByZWNvcmRzIFJlY29yZHMgdG8gcHJvY2Vzc1xyXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcHJvY2Vzc2VkIHZhdWx0IGl0ZW1zIChhLmsuYS4gY2FyZHMpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcHJvY2Vzc1ZhdWx0SXRlbXMocmVjb3JkczogRXNvbHZlVmF1bHRSZWNvcmRbXSk6IEVzb2x2ZVZhdWx0SXRlbVtdIHtcclxuICAgICAgICBjb25zdCB2YXVsdDogRXNvbHZlVmF1bHRJdGVtW10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHJlY29yZHMpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmF1bHRfaXRlbSA9IG5ldyBFc29sdmVWYXVsdEl0ZW0oXHJcbiAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5pZCxcclxuICAgICAgICAgICAgICAgICAgICArcmVjb3JkLnBheW1lbnRfbWV0aG9kc19pZCxcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQubGFzdDQsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmJyYW5kLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5leHBpcnlfdGltZXN0YW1wLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICB2YXVsdC5wdXNoKHZhdWx0X2l0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdmF1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUV4cGlyeShjYXJkX2RhdGE6IEVzb2x2ZUNhcmREYXRhKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBtb250aF9zdHJpbmcgPSBjYXJkX2RhdGEuZXhwaXJ5X21vbnRoLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgY29uc3QgeWVhcl9zdHJpbmcgPSBjYXJkX2RhdGEuZXhwaXJ5X3llYXIucGFkU3RhcnQoNCwgJzAnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGAke21vbnRoX3N0cmluZ30ke3llYXJfc3RyaW5nfWA7XHJcbiAgICB9XHJcbn1cclxuIl19
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXBheW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvcGF5bWVudC9lc29sdmUtcGF5bWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakYsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUcxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFRN0QsT0FBTyxFQUNILG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLHFCQUFxQixHQUN4QixNQUFNLFdBQVcsQ0FBQzs7Ozs7QUFlbkIsTUFBTSxPQUFPLG9CQUFvQjtJQUM3QixZQUMyQyxNQUEyQixFQUMxRCxJQUFnQixFQUNoQixZQUF1QyxFQUN2QyxlQUE2QztRQUhkLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQzFELFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsaUJBQVksR0FBWixZQUFZLENBQTJCO1FBQ3ZDLG9CQUFlLEdBQWYsZUFBZSxDQUE4QjtJQUNyRCxDQUFDO0lBRUw7Ozs7OztPQU1HO0lBQ0ksaUJBQWlCLENBQUMsT0FBb0M7UUFDekQsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FDQSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTywwQkFBMEIsRUFDaEQsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxFQUFFLENBQzdCO2FBQ0EsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLFFB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RCxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3hDO1NBQ0o7UUFFRCxPQUFPLGVBQWUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssaUJBQWlCLENBQUMsT0FBNEI7UUFDbEQsTUFBTSxLQUFLLEdBQXNCLEVBQUUsQ0FBQztRQUVwQyxJQUFJLE9BQU8sRUFBRTtZQUNULEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO2dCQUMxQixNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FDbEMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUNWLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUMxQixNQUFNLENBQUMsS0FBSyxFQUNaLE1BQU0sQ0FBQyxLQUFLLEVBQ1osTUFBTSxDQUFDLGdCQUFnQixDQUMxQixDQUFDO2dCQUVGLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDMUI7U0FDSjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxjQUFjLENBQUMsU0FBeUI7UUFDNUMsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzdELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUUzRCxPQUFPLEdBQUcsWUFBWSxHQUFHLFdBQVcsRUFBRSxDQUFDO0lBQzNDLENBQUM7O2lIQW5TUSxvQkFBb0Isa0JBRWpCLHFCQUFxQjtxSEFGeEIsb0JBQW9CLGNBRmpCLE1BQU07MkZBRVQsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBR1EsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEVTT0xWRV9DT05ORUNUX0NPTkZJRyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LWNvbmZpZy5jb25zdGFudCc7XHJcbmltcG9ydCB7IEVzb2x2ZUNvbm5lY3RDb25maWcgfSBmcm9tICcuLi9lc29sdmUtY29ubmVjdC5jb25maWcnO1xyXG5pbXBvcnQgeyBFc29sdmVFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Vycm9ycy9lc29sdmUtZXJyb3ItaGFuZGxlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXNvbHZlUmVzdWx0IH0gZnJvbSAnLi4vc2hhcmVkL2Vzb2x2ZS1yZXN1bHQubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gICAgRXNvbHZlRGVsZXRlUmVzcG9uc2UsXHJcbiAgICBFc29sdmVHZXRSZXNwb25zZSxcclxuICAgIEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2UsXHJcbiAgICBFc29sdmVTZXRSZXNwb25zZSxcclxufSBmcm9tICcuLi9zaGFyZWQvcmVzcG9uc2UnO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIEVzb2x2ZVBheW1lbnRNZXRob2QsXHJcbiAgICBFc29sdmVQYXltZW50UmVzdWx0LFxyXG4gICAgRXNvbHZlVmF1bHRJdGVtLFxyXG4gICAgRXNvbHZlVmF1bHRJdGVtUmVzdWx0LFxyXG59IGZyb20gJy4vY2xhc3Nlcyc7XHJcbmltcG9ydCB7XHJcbiAgICBFc29sdmVDYXJkRGF0YSxcclxuICAgIEVzb2x2ZVBheW1lbnRNZXRob2RPcHRpb25zLFxyXG4gICAgRXNvbHZlUGF5bWVudE1ldGhvZFJlY29yZCxcclxuICAgIEVzb2x2ZVBheW1lbnRSZXNwb25zZSxcclxuICAgIEVzb2x2ZVZhdWx0UmVjb3JkLFxyXG4gICAgRXNvbHZlVmF1bHRSZXNwb25zZSxcclxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBFc29sdmVQYXltZW50U2V0Qm9keSB9IGZyb20gJy4vaW50ZXJmYWNlcy9lc29sdmUtcGF5bWVudC1zZXQtYm9keS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBFc29sdmVQYXltZW50U3RhdHVzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2Vzb2x2ZS1wYXltZW50LXN0YXR1cy5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNvbHZlUGF5bWVudFNlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChFU09MVkVfQ09OTkVDVF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBFc29sdmVDb25uZWN0Q29uZmlnLFxyXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICBwcml2YXRlIGVycm9ySGFuZGxlcjogRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlc3BvbnNlSGFuZGxlcjogRXNvbHZlUmVzcG9uc2VIYW5kbGVyU2VydmljZSxcclxuICAgICkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIHBheW1lbnQgbWV0aG9kcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBGaWx0ZXIgb3B0aW9uc1xyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIEFuIGBPYnNlcnZhYmxlYCB3aXRoIGFuIGFycmF5IG9mIHBheW1lbnQgbWV0aG9kc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0UGF5bWVudE1ldGhvZHMob3B0aW9ucz86IEVzb2x2ZVBheW1lbnRNZXRob2RPcHRpb25zKTogT2JzZXJ2YWJsZTxFc29sdmVQYXltZW50TWV0aG9kW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlUGF5bWVudE1ldGhvZFJlY29yZFtdPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtcGF5bWVudC1tZXRob2RzLnBocGAsXHJcbiAgICAgICAgICAgICAgICB7IHBhcmFtczogeyAuLi5vcHRpb25zIH0gfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1BheW1lbnRNZXRob2RzKHJlc3BvbnNlLnJlY29yZHMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZSB0aGUgcGF5bWVudCBzdGF0dXMgb2YgdGhlIHNwZWNpZmllZCB0cmFuc2FjdGlvblxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB0cmFuc2FjdGlvbl9pZCBJRCBvZiB0aGUgdHJhbnNhY3Rpb25cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCB0aGUgc3VjY2VzcyBzdGF0dXMgb2YgdGhlIHBheW1lbnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldFBheW1lbnRTdGF0dXModHJhbnNhY3Rpb25faWQ6IG51bWJlcik6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVQYXltZW50U3RhdHVzPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtcGF5bWVudC1zdGF0dXMucGhwYCxcclxuICAgICAgICAgICAgICAgIHsgcGFyYW1zOiB7IGNhcnRfaWQ6IHRyYW5zYWN0aW9uX2lkIH0gfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnJlY29yZHMuc3VjY2VzcztcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBzYXZlZCBjYXJkcyBmcm9tIHRoZSB2YXVsdC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcGF5bWVudF9tZXRob2RzX2lkIGVTb2x2ZSBJRCBvZiBhIHBheW1lbnQgbWV0aG9kXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggYW4gYXJyYXkgb2Ygc2F2ZWQgYmFuayBjYXJkc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0VmF1bHQocGF5bWVudF9tZXRob2RzX2lkPzogbnVtYmVyKTogT2JzZXJ2YWJsZTxFc29sdmVWYXVsdEl0ZW1bXT4ge1xyXG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIHBheW1lbnRfbWV0aG9kc19pZCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGF5bWVudF9tZXRob2RzX2lkJywgcGF5bWVudF9tZXRob2RzX2lkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVWYXVsdFJlY29yZFtdPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtdmF1bHQucGhwYCxcclxuICAgICAgICAgICAgICAgIHsgcGFyYW1zIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NWYXVsdEl0ZW1zKHJlc3BvbnNlLnJlY29yZHMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIGEgbmV3IGNhcmQgaW4gdGhlIHZhdWx0IE9SIHVwZGF0ZXMgYW4gZXhpc3Rpbmcgb25lLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBwYXltZW50X21ldGhvZHNfaWQgU2VsZWN0ZWQgcGF5bWVudCBtZXRob2RcclxuICAgICAqIEBwYXJhbSBjYXJkX2RhdGEgSW5mb3JtYXRpb24gb2YgYmFuayBjYXJkXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUgdmF1bHQgc2V0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0VmF1bHRJdGVtKFxyXG4gICAgICAgIHBheW1lbnRfbWV0aG9kc19pZDogbnVtYmVyLFxyXG4gICAgICAgIGNhcmRfZGF0YTogRXNvbHZlQ2FyZERhdGEsXHJcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVZhdWx0SXRlbVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgICAgICAgIHZhdWx0OiB7XHJcbiAgICAgICAgICAgICAgICBwYXltZW50X21ldGhvZHNfaWQsXHJcbiAgICAgICAgICAgICAgICBjYXJkX251bWJlcjogY2FyZF9kYXRhLmNhcmRfbnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgY2FyZF9uYW1lOiBjYXJkX2RhdGEubmFtZSxcclxuICAgICAgICAgICAgICAgIGNhcmRfY3Z2OiBjYXJkX2RhdGEuY3Z2LFxyXG4gICAgICAgICAgICAgICAgY2FyZF9leHBpcnk6IHRoaXMuZ2VuZXJhdGVFeHBpcnkoY2FyZF9kYXRhKSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZVZhdWx0UmVzcG9uc2U+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC12YXVsdC5waHBgLFxyXG4gICAgICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7J1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT4gdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXHJcbiAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IG5ldyBFc29sdmVWYXVsdEl0ZW1SZXN1bHQocmVzcG9uc2UpLFxyXG4gICAgICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LXZhdWx0JywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWxldGUgYSBjYXJkIGluIHRoZSB2YXVsdFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgdmF1bHQgaXRlbVxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIEFuIGBPYnNlcnZhYmxlYCB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIHZhdWx0IGRlbGV0ZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGRlbGV0ZVZhdWx0SXRlbShpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxFc29sdmVSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5kZWxldGU8RXNvbHZlRGVsZXRlUmVzcG9uc2U+KFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZGVsZXRlLXZhdWx0LnBocGAsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IGlkIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGh0dHBfcmVzcG9uc2UucmVzdWx0ID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChodHRwX3Jlc3BvbnNlLnJlc3VsdCA9PT0gbnVsbCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGh0dHBfcmVzcG9uc2UucmVzdWx0LnN0YXR1cyAhPT0gJ3N1Y2Nlc3MnKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBodHRwX3Jlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVSZXN1bHQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UucmVzdWx0LnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZS5yZXN1bHQuY29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZS5yZXN1bHQubWVzc2FnZSxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cERlbGV0ZUVycm9yKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLXZhdWx0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JSZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgcGF5bWVudCBmb3IgdGhlIHNwZWNpZmllZCB0cmFuc2FjdGlvbiB1c2luZyBzZWxlY3RlZCBwYXltZW50XHJcbiAgICAgKiBtZXRob2QuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHRyYW5zYWN0aW9uX2lkIGVTb2x2ZSBJRCB0byB0aGUgdHJhbnNhY3Rpb25cclxuICAgICAqIEBwYXJhbSBwYXltZW50X21ldGhvZHNfaWQgZVNvbHZlIElEIHRvIHRoZSBzZWxlY3RlZCBwYXltZW50IG1ldGhvZFxyXG4gICAgICogQHBhcmFtIGNhcmQgSUQgb2Ygc2VsZWN0ZWQgY2FyZCBmcm9tIHRoZSB2YXVsdCBvciBpbmZvcm1hdGlvbiB0byBhIGJyYW5kIG5ldyBjYXJkXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUgcGF5bWVudFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0UGF5bWVudChcclxuICAgICAgICB0cmFuc2FjdGlvbl9pZDogbnVtYmVyLFxyXG4gICAgICAgIHBheW1lbnRfbWV0aG9kc19pZDogbnVtYmVyLFxyXG4gICAgICAgIGNhcmQ/OiBFc29sdmVDYXJkRGF0YSB8IG51bWJlcixcclxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlUGF5bWVudFJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGJvZHk6IEVzb2x2ZVBheW1lbnRTZXRCb2R5ID0ge1xyXG4gICAgICAgICAgICBwYXltZW50OiB7XHJcbiAgICAgICAgICAgICAgICBjYXJ0X2lkOiB0cmFuc2FjdGlvbl9pZCxcclxuICAgICAgICAgICAgICAgIHBheW1lbnRfbWV0aG9kc19pZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAoY2FyZCkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNhcmQgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgICAgICBib2R5LnBheW1lbnQudXNlcl92YXVsdF9pZCA9IGNhcmQ7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBib2R5LmNhcmQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FyZF9udW1iZXI6IGNhcmQuY2FyZF9udW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FyZF9uYW1lOiBjYXJkLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FyZF9jdnY6IGNhcmQuY3Z2LFxyXG4gICAgICAgICAgICAgICAgICAgIGNhcmRfZXhwaXJ5OiB0aGlzLmdlbmVyYXRlRXhwaXJ5KGNhcmQpLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAucG9zdDxFc29sdmVTZXRSZXNwb25zZTxFc29sdmVQYXltZW50UmVzcG9uc2U+PihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC1wYXltZW50LnBocGAsXHJcbiAgICAgICAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChodHRwX3Jlc3BvbnNlKSA9PiB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcclxuICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4gbmV3IEVzb2x2ZVBheW1lbnRSZXN1bHQocmVzcG9uc2UpLFxyXG4gICAgICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlSHR0cFBvc3RFcnJvcignc2V0LXBheW1lbnQnLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb2Nlc3NlcyB0aGUgZVNvbHZlIHBheW1lbnQgbWV0aG9kIHJlY29yZHMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHJlY29yZHMgUmVjb3JkcyB0byBwcm9jZXNzXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcHJvY2Vzc2VkIHBheW1lbnQgbWV0aG9kcy5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBwcm9jZXNzUGF5bWVudE1ldGhvZHMocmVjb3JkczogRXNvbHZlUGF5bWVudE1ldGhvZFJlY29yZFtdKTogRXNvbHZlUGF5bWVudE1ldGhvZFtdIHtcclxuICAgICAgICBjb25zdCBwYXltZW50X21ldGhvZHM6IEVzb2x2ZVBheW1lbnRNZXRob2RbXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAocmVjb3Jkcykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXltZW50X21ldGhvZCA9IG5ldyBFc29sdmVQYXltZW50TWV0aG9kKHJlY29yZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgcGF5bWVudF9tZXRob2RzLnB1c2gocGF5bWVudF9tZXRob2QpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcGF5bWVudF9tZXRob2RzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvY2Vzc2VzIHRoZSBlU29sdmUgdmF1bHQgcmVjb3Jkcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcmVjb3JkcyBSZWNvcmRzIHRvIHByb2Nlc3NcclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBwcm9jZXNzZWQgdmF1bHQgaXRlbXMgKGEuay5hLiBjYXJkcylcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBwcm9jZXNzVmF1bHRJdGVtcyhyZWNvcmRzOiBFc29sdmVWYXVsdFJlY29yZFtdKTogRXNvbHZlVmF1bHRJdGVtW10ge1xyXG4gICAgICAgIGNvbnN0IHZhdWx0OiBFc29sdmVWYXVsdEl0ZW1bXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAocmVjb3Jkcykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YXVsdF9pdGVtID0gbmV3IEVzb2x2ZVZhdWx0SXRlbShcclxuICAgICAgICAgICAgICAgICAgICArcmVjb3JkLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICtyZWNvcmQucGF5bWVudF9tZXRob2RzX2lkLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5sYXN0NCxcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuYnJhbmQsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmV4cGlyeV90aW1lc3RhbXAsXHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgIHZhdWx0LnB1c2godmF1bHRfaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YXVsdDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYXRlIGEgY29uY2F0ZW5hdGVkIHN0cmluZyB3aXRoIHRoZSBleHBpcnkgbW9udGggYW5kIHllYXJcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gY2FyZF9kYXRhIENyZWRpdCBjYXJkIGRhdGFcclxuICAgICAqXHJcbiAgICAgKiAgQHJldHVybnMgRXhwaXJ5IHN0cmluZ1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdlbmVyYXRlRXhwaXJ5KGNhcmRfZGF0YTogRXNvbHZlQ2FyZERhdGEpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IG1vbnRoX3N0cmluZyA9IGNhcmRfZGF0YS5leHBpcnlfbW9udGgucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCB5ZWFyX3N0cmluZyA9IGNhcmRfZGF0YS5leHBpcnlfeWVhci5wYWRTdGFydCg0LCAnMCcpO1xyXG5cclxuICAgICAgICByZXR1cm4gYCR7bW9udGhfc3RyaW5nfSR7eWVhcl9zdHJpbmd9YDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,15 +1,5 @@
1
- export * from './esolve-banking-details.model';
2
- export * from './esolve-card-data.interface';
3
- export * from './esolve-integration-type.type';
4
- export * from './esolve-paygate-form-input.interface';
5
- export * from './esolve-vault-item-result.model';
6
- export * from './esolve-vault-response.interface';
7
- export * from './esolve-vault-record.interface';
8
- export * from './esolve-vault-item.model';
9
- export * from './esolve-payment-result.model';
10
- export * from './esolve-payment-response.interface';
11
- export * from './esolve-payment-method-options.interface';
12
- export * from './esolve-payment-method-record.interface';
13
- export * from './esolve-payment-method.model';
1
+ export * from './types';
2
+ export * from './interfaces';
3
+ export * from './classes';
14
4
  export * from './esolve-payment.service';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL3BheW1lbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtYmFua2luZy1kZXRhaWxzLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtY2FyZC1kYXRhLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLWludGVncmF0aW9uLXR5cGUudHlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXBheWdhdGUtZm9ybS1pbnB1dC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS12YXVsdC1pdGVtLXJlc3VsdC5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXZhdWx0LXJlc3BvbnNlLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXZhdWx0LXJlY29yZC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS12YXVsdC1pdGVtLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtcGF5bWVudC1yZXN1bHQubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1wYXltZW50LXJlc3BvbnNlLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXBheW1lbnQtbWV0aG9kLW9wdGlvbnMuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtcGF5bWVudC1tZXRob2QtcmVjb3JkLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXBheW1lbnQtbWV0aG9kLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtcGF5bWVudC5zZXJ2aWNlJztcclxuIl19
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL3BheW1lbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NsYXNzZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1wYXltZW50LnNlcnZpY2UnO1xyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWNhcmQtZGF0YS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL3BheW1lbnQvaW50ZXJmYWNlcy9lc29sdmUtY2FyZC1kYXRhLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBFc29sdmVDYXJkRGF0YSB7XHJcbiAgICBjYXJkX251bWJlcjogc3RyaW5nO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgY3Z2OiBzdHJpbmc7XHJcbiAgICBleHBpcnlfbW9udGg6IHN0cmluZztcclxuICAgIGV4cGlyeV95ZWFyOiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXBheW1lbnQtZm9ybS1pbnB1dC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL3BheW1lbnQvaW50ZXJmYWNlcy9lc29sdmUtcGF5bWVudC1mb3JtLWlucHV0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBFc29sdmVQYXltZW50Rm9ybUlucHV0IHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgdmFsdWU6IHN0cmluZztcclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXBheW1lbnQtbWV0aG9kLW9wdGlvbnMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9wYXltZW50L2ludGVyZmFjZXMvZXNvbHZlLXBheW1lbnQtbWV0aG9kLW9wdGlvbnMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEVzb2x2ZVBheW1lbnRNZXRob2RPcHRpb25zIHtcclxuICAgIGxpdmU/OiBib29sZWFuO1xyXG4gICAgbG9jYXRpb25faWQ/OiBudW1iZXI7XHJcbiAgICBpc19nYXRld2F5PzogYm9vbGVhbjtcclxufVxyXG4iXX0=