taxtank-core 0.30.27 → 0.30.29-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 (135) hide show
  1. package/esm2020/lib/db/Models/bank/bank-account-property.mjs +6 -1
  2. package/esm2020/lib/db/Models/bank/bank-account.mjs +6 -1
  3. package/esm2020/lib/db/Models/loan/loan-payout.mjs +9 -1
  4. package/esm2020/lib/db/Models/loan/loan.mjs +18 -1
  5. package/esm2020/lib/db/Models/property/property-share.mjs +6 -1
  6. package/esm2020/lib/db/Models/property/property-valuation.mjs +6 -1
  7. package/esm2020/lib/db/Models/property/property.mjs +18 -1
  8. package/esm2020/lib/forms/sole/sole-invoice.form.mjs +5 -1
  9. package/esm2020/lib/forms/transaction/allocation-rule-transaction.form.mjs +3 -2
  10. package/esm2020/lib/forms/transaction/work/work-transaction.form.mjs +3 -1
  11. package/esm2020/lib/interceptors/basiq-client-id.interceptor.mjs +3 -3
  12. package/esm2020/lib/interceptors/basiq-token.interceptor.mjs +3 -3
  13. package/esm2020/lib/interceptors/corelogic-interceptor.mjs +3 -3
  14. package/esm2020/lib/interceptors/financial-year-interceptor.mjs +3 -3
  15. package/esm2020/lib/interceptors/interceptors.module.mjs +4 -4
  16. package/esm2020/lib/interceptors/jwt-interceptor.mjs +3 -3
  17. package/esm2020/lib/interceptors/preloader.interceptor.mjs +3 -3
  18. package/esm2020/lib/interceptors/user-switcher-interceptor.mjs +3 -3
  19. package/esm2020/lib/models/chart-accounts/chart-accounts.mjs +4 -1
  20. package/esm2020/lib/models/property/property-valuation.mjs +4 -1
  21. package/esm2020/lib/services/account-setup/account-setup.service.mjs +3 -3
  22. package/esm2020/lib/services/affiliate/rewardful/rewardful.service.mjs +3 -3
  23. package/esm2020/lib/services/asset/assets.service.mjs +3 -3
  24. package/esm2020/lib/services/auth/auth.service.mjs +3 -3
  25. package/esm2020/lib/services/auth/jwt.service.mjs +3 -3
  26. package/esm2020/lib/services/bank/bank-account-calculation.service.mjs +3 -3
  27. package/esm2020/lib/services/bank/bank-transaction-calculation.service.mjs +3 -3
  28. package/esm2020/lib/services/event/event-dispatcher.service.mjs +3 -3
  29. package/esm2020/lib/services/event/sse.service.mjs +3 -3
  30. package/esm2020/lib/services/export/export-formatter.service.mjs +3 -3
  31. package/esm2020/lib/services/header-title/header-title.service.mjs +3 -3
  32. package/esm2020/lib/services/http/address/address.service.mjs +3 -3
  33. package/esm2020/lib/services/http/bank/bank-account/bank-account.service.mjs +5 -4
  34. package/esm2020/lib/services/http/bank/bank-connection/bank-connection.service.mjs +3 -3
  35. package/esm2020/lib/services/http/bank/bank-transaction/bank-transaction.service.mjs +3 -3
  36. package/esm2020/lib/services/http/bank/bank.service.mjs +3 -3
  37. package/esm2020/lib/services/http/bank/basiq/basiq-token.service.mjs +3 -3
  38. package/esm2020/lib/services/http/bank/basiq/basiq.service.mjs +3 -3
  39. package/esm2020/lib/services/http/chart-accounts/chart-accounts-depreciations/chart-accounts-depreciations.service.mjs +3 -3
  40. package/esm2020/lib/services/http/chart-accounts/chart-accounts.service.mjs +3 -3
  41. package/esm2020/lib/services/http/chat/chat.service.mjs +3 -3
  42. package/esm2020/lib/services/http/chat/message-document.service.mjs +3 -3
  43. package/esm2020/lib/services/http/chat/message.service.mjs +3 -3
  44. package/esm2020/lib/services/http/depreciation/depreciation-capital-project/depreciation-capital-project.service.mjs +3 -3
  45. package/esm2020/lib/services/http/depreciation/depreciation-receipt/depreciation-receipt.service.mjs +3 -3
  46. package/esm2020/lib/services/http/depreciation/depreciation.service.mjs +3 -3
  47. package/esm2020/lib/services/http/document/document-folder/document-folder.service.mjs +3 -3
  48. package/esm2020/lib/services/http/document/document.service.mjs +3 -3
  49. package/esm2020/lib/services/http/facebook/facebook.service.mjs +3 -3
  50. package/esm2020/lib/services/http/file/file.service.mjs +3 -3
  51. package/esm2020/lib/services/http/firm/client-income/client-income-types.service.mjs +3 -3
  52. package/esm2020/lib/services/http/firm/client-invite/client-invite.service.mjs +3 -3
  53. package/esm2020/lib/services/http/firm/client-movement/client-movement.service.mjs +3 -3
  54. package/esm2020/lib/services/http/firm/employee/employee.service.mjs +3 -3
  55. package/esm2020/lib/services/http/firm/employee-invite/employee-invite.service.mjs +3 -3
  56. package/esm2020/lib/services/http/firm/firm.service.mjs +3 -3
  57. package/esm2020/lib/services/http/firm/portfolio-report/client-portfolio-report.service.mjs +3 -3
  58. package/esm2020/lib/services/http/google/google.service.mjs +3 -3
  59. package/esm2020/lib/services/http/holding/holding-sale.service.mjs +3 -3
  60. package/esm2020/lib/services/http/holding/holding-type.service.mjs +3 -3
  61. package/esm2020/lib/services/http/holding/holding.service.mjs +3 -3
  62. package/esm2020/lib/services/http/income-source/income-source-forecast/income-source-forecast.service.mjs +3 -3
  63. package/esm2020/lib/services/http/income-source/income-source.service.mjs +3 -3
  64. package/esm2020/lib/services/http/income-source/salary-forecast/salary-forecast.service.mjs +3 -3
  65. package/esm2020/lib/services/http/income-source/sole-forecast/sole-forecast.service.mjs +3 -3
  66. package/esm2020/lib/services/http/loan/borrowing-expense/borrowing-expense.service.mjs +3 -3
  67. package/esm2020/lib/services/http/loan/loan.service.mjs +3 -3
  68. package/esm2020/lib/services/http/property/property-category/property-category.service.mjs +3 -3
  69. package/esm2020/lib/services/http/property/property-category-movement/property-category-movement.service.mjs +3 -3
  70. package/esm2020/lib/services/http/property/property-document/property-document.service.mjs +3 -3
  71. package/esm2020/lib/services/http/property/property-sale/property-sale.service.mjs +3 -3
  72. package/esm2020/lib/services/http/property/property-sale/tax-exemption/tax-exemption.service.mjs +3 -3
  73. package/esm2020/lib/services/http/property/property-share/property-share.service.mjs +3 -3
  74. package/esm2020/lib/services/http/property/property.service.mjs +3 -3
  75. package/esm2020/lib/services/http/receipt/receipt.service.mjs +3 -3
  76. package/esm2020/lib/services/http/rest/rest-old.service.mjs +3 -3
  77. package/esm2020/lib/services/http/rest/rest.service.mjs +3 -3
  78. package/esm2020/lib/services/http/service-notification/service-notification.service.mjs +3 -3
  79. package/esm2020/lib/services/http/sole/bas-report/bas-report.service.mjs +3 -3
  80. package/esm2020/lib/services/http/sole/sole-business/sole-business.service.mjs +3 -3
  81. package/esm2020/lib/services/http/sole/sole-business-activity/sole-business-activity.service.mjs +3 -3
  82. package/esm2020/lib/services/http/sole/sole-business-loss/sole-business-loss-rules/sole-business-loss-offset-rule.service.mjs +3 -3
  83. package/esm2020/lib/services/http/sole/sole-business-loss/sole-business-loss.service.mjs +3 -3
  84. package/esm2020/lib/services/http/sole/sole-contact/sole-contact.service.mjs +3 -3
  85. package/esm2020/lib/services/http/sole/sole-depreciation-method/sole-depreciation-method.service.mjs +3 -3
  86. package/esm2020/lib/services/http/sole/sole-details/sole-details.service.mjs +3 -3
  87. package/esm2020/lib/services/http/sole/sole-invoice/sole-invoice.service.mjs +3 -3
  88. package/esm2020/lib/services/http/sole/sole-invoice-template/sole-invoice-template.service.mjs +3 -3
  89. package/esm2020/lib/services/http/subscription/service-payment/service-payment.service.mjs +3 -3
  90. package/esm2020/lib/services/http/subscription/service-payment-method/service-payment-method.service.mjs +3 -3
  91. package/esm2020/lib/services/http/subscription/service-price/service-price.service.mjs +3 -3
  92. package/esm2020/lib/services/http/subscription/service-product/service-product.service.mjs +3 -3
  93. package/esm2020/lib/services/http/subscription/service-subscription/subscription.service.mjs +3 -3
  94. package/esm2020/lib/services/http/tax-review/tax-review-history/tax-review-history.service.mjs +3 -3
  95. package/esm2020/lib/services/http/tax-review/tax-review.service.mjs +3 -3
  96. package/esm2020/lib/services/http/tax-summary/tax-summary.service.mjs +3 -3
  97. package/esm2020/lib/services/http/transaction/transaction-allocation/allocation-rule/allocation-rule.service.mjs +3 -3
  98. package/esm2020/lib/services/http/transaction/transaction-allocation/transaction-allocation.service.mjs +3 -3
  99. package/esm2020/lib/services/http/transaction/transaction-receipt/transaction-receipt.service.mjs +3 -3
  100. package/esm2020/lib/services/http/transaction/transaction.service.mjs +3 -3
  101. package/esm2020/lib/services/http/tutorial-video/tutorial-video.service.mjs +3 -3
  102. package/esm2020/lib/services/http/user/occupation/occupation.service.mjs +3 -3
  103. package/esm2020/lib/services/http/user/user-event-setting/user-event-setting.service.mjs +3 -3
  104. package/esm2020/lib/services/http/user/user-event-type/user-event-type.service.mjs +3 -3
  105. package/esm2020/lib/services/http/user/user.service.mjs +3 -3
  106. package/esm2020/lib/services/http/user/users-invite/users-invite.service.mjs +3 -3
  107. package/esm2020/lib/services/http/vehicle/vehicle-claim-details.service.mjs +3 -3
  108. package/esm2020/lib/services/http/vehicle/vehicle-claim.service.mjs +3 -3
  109. package/esm2020/lib/services/http/vehicle/vehicle-logbook.service.mjs +3 -3
  110. package/esm2020/lib/services/http/vehicle/vehicle.service.mjs +3 -3
  111. package/esm2020/lib/services/intercom/intercom.service.mjs +3 -3
  112. package/esm2020/lib/services/pdf/pdf-from-dom-element/pdf-from-dom-element.service.mjs +3 -3
  113. package/esm2020/lib/services/pdf/pdf-from-table/pdf-from-data-table/pdf-from-data-table.service.mjs +3 -3
  114. package/esm2020/lib/services/pdf/pdf-from-table/pdf-from-html-table/pdf-from-html-table.service.mjs +3 -3
  115. package/esm2020/lib/services/pdf/pdf-from-table/pdf-from-table.service.mjs +3 -3
  116. package/esm2020/lib/services/preloader/preloader.service.mjs +3 -3
  117. package/esm2020/lib/services/property/corelogic/corelogic.service.mjs +3 -3
  118. package/esm2020/lib/services/property/equity-position-chart/equity-position-chart.service.mjs +3 -3
  119. package/esm2020/lib/services/property/property-calculation/property-calculation.service.mjs +3 -3
  120. package/esm2020/lib/services/report/property/property-transaction-report.service.mjs +3 -3
  121. package/esm2020/lib/services/toast/toast.service.mjs +3 -3
  122. package/esm2020/lib/services/transaction/transaction-calculation.service.mjs +3 -3
  123. package/esm2020/lib/services/user/user-switcher.service.mjs +3 -3
  124. package/esm2020/lib/services/vehicle/logbook-best-period.service.mjs +3 -3
  125. package/esm2020/lib/services/xlsx/xlsx.service.mjs +3 -3
  126. package/esm2020/lib/tt-core.module.mjs +4 -4
  127. package/esm2020/lib/validators/transactions-meta-fields.validator.mjs +34 -0
  128. package/fesm2015/taxtank-core.mjs +438 -344
  129. package/fesm2015/taxtank-core.mjs.map +1 -1
  130. package/fesm2020/taxtank-core.mjs +438 -344
  131. package/fesm2020/taxtank-core.mjs.map +1 -1
  132. package/lib/models/chart-accounts/chart-accounts.d.ts +1 -0
  133. package/lib/models/property/property-valuation.d.ts +1 -0
  134. package/lib/validators/transactions-meta-fields.validator.d.ts +5 -0
  135. package/package.json +1 -1
@@ -36,9 +36,9 @@ export class XlsxService {
36
36
  return xlsx.write(workbook, { bookType: 'xlsx', type: 'array' });
37
37
  }
38
38
  }
39
- XlsxService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: XlsxService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
40
- XlsxService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: XlsxService, providedIn: 'root' });
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: XlsxService, decorators: [{
39
+ XlsxService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: XlsxService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
40
+ XlsxService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: XlsxService, providedIn: 'root' });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: XlsxService, decorators: [{
42
42
  type: Injectable,
43
43
  args: [{
44
44
  providedIn: 'root'
@@ -16,12 +16,12 @@ export class TtCoreModule {
16
16
  };
17
17
  }
18
18
  }
19
- TtCoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: TtCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20
- TtCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: TtCoreModule, imports: [CommonModule,
19
+ TtCoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TtCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20
+ TtCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.4", ngImport: i0, type: TtCoreModule, imports: [CommonModule,
21
21
  InterceptorsModule] });
22
- TtCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: TtCoreModule, imports: [CommonModule,
22
+ TtCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TtCoreModule, imports: [CommonModule,
23
23
  InterceptorsModule] });
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: TtCoreModule, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TtCoreModule, decorators: [{
25
25
  type: NgModule,
26
26
  args: [{
27
27
  declarations: [],
@@ -0,0 +1,34 @@
1
+ import { ChartAccountsMetaFieldListEnum } from '../db/Enums';
2
+ /**
3
+ * Validator that check fields for transaction meta
4
+ */
5
+ export function transactionsMetaFieldsValidator() {
6
+ return (formGroup) => {
7
+ const chartAccounts = formGroup.get('chartAccounts').value;
8
+ if (!chartAccounts) {
9
+ return null;
10
+ }
11
+ const metaFields = chartAccounts.metaFields;
12
+ if (chartAccounts.isDividends()) {
13
+ return checkDividends(metaFields, formGroup);
14
+ }
15
+ return null;
16
+ };
17
+ }
18
+ /**
19
+ * the sum of the fields "Franked" and "Unfranked" must equal transactions amount
20
+ */
21
+ function checkDividends(metaFields, formGroup) {
22
+ const frankedAndUnfrankedIds = [ChartAccountsMetaFieldListEnum.FRANKED, ChartAccountsMetaFieldListEnum.UNFRANKED];
23
+ const amount = Math.abs(formGroup.get('amount').value);
24
+ const frankedAndUnfrankedControls = (formGroup.get('metaFields')).controls
25
+ .filter((control) => frankedAndUnfrankedIds.includes(control.get('chartAccountsMetaField').value.id));
26
+ const frankedAndUnfrankedAmount = frankedAndUnfrankedControls.reduce((sum, control) => sum + (+control.get('value').value), 0);
27
+ for (let control of frankedAndUnfrankedControls) {
28
+ if (control.get('value').value !== null && frankedAndUnfrankedAmount !== amount) {
29
+ return { metaFields: `Field ${control.get('chartAccountsMetaField').value.label} is required` };
30
+ }
31
+ }
32
+ return amount === frankedAndUnfrankedAmount ? null : { metaFields: 'Please enter the franked and/or unfranked amounts.' };
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25zLW1ldGEtZmllbGRzLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi92YWxpZGF0b3JzL3RyYW5zYWN0aW9ucy1tZXRhLWZpZWxkcy52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSTdEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLCtCQUErQjtJQUM3QyxPQUFPLENBQUMsU0FBMkMsRUFBMkIsRUFBRTtRQUM5RSxNQUFNLGFBQWEsR0FBa0IsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFMUUsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxVQUFVLEdBQTZCLGFBQWEsQ0FBQyxVQUFVLENBQUM7UUFFdEUsSUFBSSxhQUFhLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDL0IsT0FBTyxjQUFjLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQzlDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGNBQWMsQ0FBQyxVQUFVLEVBQUUsU0FBUztJQUMzQyxNQUFNLHNCQUFzQixHQUFxQyxDQUFDLDhCQUE4QixDQUFDLE9BQU8sRUFBRSw4QkFBOEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwSixNQUFNLE1BQU0sR0FBVyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0QsTUFBTSwyQkFBMkIsR0FBeUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUTtTQUM3RixNQUFNLENBQUMsQ0FBQyxPQUFrQixFQUFFLEVBQUUsQ0FDN0Isc0JBQXNCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVyRixNQUFNLHlCQUF5QixHQUFXLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVcsRUFBRSxPQUFvQixFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFNUosS0FBSyxJQUFJLE9BQU8sSUFBSSwyQkFBMkIsRUFBRztRQUNoRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSx5QkFBeUIsS0FBSyxNQUFNLEVBQUU7WUFDL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxjQUFjLEVBQUUsQ0FBQTtTQUNoRztLQUNGO0lBRUQsT0FBTyxNQUFNLEtBQUsseUJBQXlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsb0RBQW9ELEVBQUUsQ0FBQztBQUM1SCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgQ2hhcnRBY2NvdW50c01ldGFGaWVsZExpc3RFbnVtIH0gZnJvbSAnLi4vZGIvRW51bXMnO1xuaW1wb3J0IHsgQ2hhcnRBY2NvdW50cywgQ2hhcnRBY2NvdW50c01ldGFGaWVsZCwgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CYXNlRm9ybSB9IGZyb20gJy4uL2Zvcm1zJztcblxuLyoqXG4gKiBWYWxpZGF0b3IgdGhhdCBjaGVjayBmaWVsZHMgZm9yIHRyYW5zYWN0aW9uIG1ldGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zYWN0aW9uc01ldGFGaWVsZHNWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGZvcm1Hcm91cDogVHJhbnNhY3Rpb25CYXNlRm9ybTxUcmFuc2FjdGlvbj4pOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgY2hhcnRBY2NvdW50czogQ2hhcnRBY2NvdW50cyA9IGZvcm1Hcm91cC5nZXQoJ2NoYXJ0QWNjb3VudHMnKS52YWx1ZTtcblxuICAgIGlmICghY2hhcnRBY2NvdW50cykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0YUZpZWxkczogQ2hhcnRBY2NvdW50c01ldGFGaWVsZFtdID0gY2hhcnRBY2NvdW50cy5tZXRhRmllbGRzO1xuXG4gICAgaWYgKGNoYXJ0QWNjb3VudHMuaXNEaXZpZGVuZHMoKSkge1xuICAgICAgcmV0dXJuIGNoZWNrRGl2aWRlbmRzKG1ldGFGaWVsZHMsIGZvcm1Hcm91cCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiB0aGUgc3VtIG9mIHRoZSBmaWVsZHMgXCJGcmFua2VkXCIgYW5kIFwiVW5mcmFua2VkXCIgbXVzdCBlcXVhbCB0cmFuc2FjdGlvbnMgYW1vdW50XG4gKi9cbmZ1bmN0aW9uIGNoZWNrRGl2aWRlbmRzKG1ldGFGaWVsZHMsIGZvcm1Hcm91cCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICBjb25zdCBmcmFua2VkQW5kVW5mcmFua2VkSWRzOiBDaGFydEFjY291bnRzTWV0YUZpZWxkTGlzdEVudW1bXSA9IFtDaGFydEFjY291bnRzTWV0YUZpZWxkTGlzdEVudW0uRlJBTktFRCwgQ2hhcnRBY2NvdW50c01ldGFGaWVsZExpc3RFbnVtLlVORlJBTktFRF07XG4gIGNvbnN0IGFtb3VudDogbnVtYmVyID0gTWF0aC5hYnMoZm9ybUdyb3VwLmdldCgnYW1vdW50JykudmFsdWUpO1xuICBjb25zdCBmcmFua2VkQW5kVW5mcmFua2VkQ29udHJvbHM6IFVudHlwZWRGb3JtQ29udHJvbFtdID0gKGZvcm1Hcm91cC5nZXQoJ21ldGFGaWVsZHMnKSkuY29udHJvbHNcbiAgICAuZmlsdGVyKChjb250cm9sOiBGb3JtR3JvdXApID0+XG4gICAgICBmcmFua2VkQW5kVW5mcmFua2VkSWRzLmluY2x1ZGVzKGNvbnRyb2wuZ2V0KCdjaGFydEFjY291bnRzTWV0YUZpZWxkJykudmFsdWUuaWQpKTtcblxuICBjb25zdCBmcmFua2VkQW5kVW5mcmFua2VkQW1vdW50OiBudW1iZXIgPSBmcmFua2VkQW5kVW5mcmFua2VkQ29udHJvbHMucmVkdWNlKChzdW06IG51bWJlciwgY29udHJvbDogRm9ybUNvbnRyb2wpID0+IHN1bSArICgrY29udHJvbC5nZXQoJ3ZhbHVlJykudmFsdWUpLCAwKTtcblxuICBmb3IoIGxldCBjb250cm9sIG9mIGZyYW5rZWRBbmRVbmZyYW5rZWRDb250cm9scyApIHtcbiAgICBpZiAoY29udHJvbC5nZXQoJ3ZhbHVlJykudmFsdWUgIT09IG51bGwgJiYgZnJhbmtlZEFuZFVuZnJhbmtlZEFtb3VudCAhPT0gYW1vdW50KSB7XG4gICAgICByZXR1cm4geyBtZXRhRmllbGRzOiBgRmllbGQgJHtjb250cm9sLmdldCgnY2hhcnRBY2NvdW50c01ldGFGaWVsZCcpLnZhbHVlLmxhYmVsfSBpcyByZXF1aXJlZGAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbW91bnQgPT09IGZyYW5rZWRBbmRVbmZyYW5rZWRBbW91bnQgPyBudWxsIDogeyBtZXRhRmllbGRzOiAnUGxlYXNlIGVudGVyIHRoZSBmcmFua2VkIGFuZC9vciB1bmZyYW5rZWQgYW1vdW50cy4nIH07XG59XG4iXX0=