taxtank-core 0.21.13 → 0.21.16
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.
- package/bundles/taxtank-core.umd.js +311 -298
- package/bundles/taxtank-core.umd.js.map +1 -1
- package/esm2015/lib/collections/property/property.collection.js +2 -8
- package/esm2015/lib/forms/bank/bank-account/bank-account-properties.form.js +4 -3
- package/esm2015/lib/interceptors/basiq.interceptor.js +3 -3
- package/esm2015/lib/interceptors/corelogic-interceptor.js +3 -3
- package/esm2015/lib/interceptors/financial-year-interceptor.js +3 -3
- package/esm2015/lib/interceptors/interceptors.module.js +4 -4
- package/esm2015/lib/interceptors/jwt-interceptor.js +3 -3
- package/esm2015/lib/interceptors/preloader.interceptor.js +3 -3
- package/esm2015/lib/interceptors/user-switcher-interceptor.js +3 -3
- package/esm2015/lib/models/property/property.js +5 -1
- package/esm2015/lib/models/report/my-tax/my-tax-deductions/my-tax-deductions.js +6 -3
- package/esm2015/lib/models/transaction/transaction.js +4 -1
- package/esm2015/lib/services/account-setup/account-setup.service.js +3 -3
- package/esm2015/lib/services/asset/assets.service.js +3 -3
- package/esm2015/lib/services/auth/auth.service.js +3 -3
- package/esm2015/lib/services/auth/jwt.service.js +3 -3
- package/esm2015/lib/services/bank/bank-account-calculation.service.js +3 -3
- package/esm2015/lib/services/bank/bank-transaction-calculation.service.js +3 -3
- package/esm2015/lib/services/event/event-dispatcher.service.js +3 -3
- package/esm2015/lib/services/event/sse.service.js +3 -3
- package/esm2015/lib/services/export/export-formatter.service.js +3 -3
- package/esm2015/lib/services/header-title/header-title.service.js +3 -3
- package/esm2015/lib/services/http/address/address.service.js +3 -3
- package/esm2015/lib/services/http/bank/bank-account/bank-account.service.js +3 -3
- package/esm2015/lib/services/http/bank/bank-connection/bank-connection.service.js +3 -3
- package/esm2015/lib/services/http/bank/bank-transaction/bank-transaction.service.js +3 -3
- package/esm2015/lib/services/http/bank/bank.service.js +3 -3
- package/esm2015/lib/services/http/bank/basiq/basiq-token.service.js +3 -3
- package/esm2015/lib/services/http/bank/basiq/basiq.service.js +3 -3
- package/esm2015/lib/services/http/chart-accounts/chart-accounts-depreciations/chart-accounts-depreciations.service.js +3 -3
- package/esm2015/lib/services/http/chart-accounts/chart-accounts.service.js +3 -3
- package/esm2015/lib/services/http/chat/chat.service.js +3 -3
- package/esm2015/lib/services/http/chat/message/message.service.js +3 -3
- package/esm2015/lib/services/http/chat/message-document/message-document.service.js +3 -3
- package/esm2015/lib/services/http/depreciation/depreciation-capital-project/depreciation-capital-project.service.js +3 -3
- package/esm2015/lib/services/http/depreciation/depreciation.service.js +3 -3
- package/esm2015/lib/services/http/document/document-folder/document-folder.service.js +3 -3
- package/esm2015/lib/services/http/facebook/facebook.service.js +3 -3
- package/esm2015/lib/services/http/firm/client-income/client-income-types.service.js +3 -3
- package/esm2015/lib/services/http/firm/client-invite/client-invite.service.js +3 -3
- package/esm2015/lib/services/http/firm/client-movement/client-movement.service.js +3 -3
- package/esm2015/lib/services/http/firm/employee/employee.service.js +3 -3
- package/esm2015/lib/services/http/firm/employee-invite/employee-invite.service.js +3 -3
- package/esm2015/lib/services/http/firm/firm.service.js +3 -3
- package/esm2015/lib/services/http/firm/portfolio-report/client-portfolio-report.service.js +3 -3
- package/esm2015/lib/services/http/income-source/income-source-forecast/income-source-forecast.service.js +3 -3
- package/esm2015/lib/services/http/income-source/income-source.service.js +3 -3
- package/esm2015/lib/services/http/income-source/salary-forecast/salary-forecast.service.js +3 -3
- package/esm2015/lib/services/http/income-source/sole-forecast/sole-forecast.service.js +3 -3
- package/esm2015/lib/services/http/loan/borrowing-expense/borrowing-expense.service.js +3 -3
- package/esm2015/lib/services/http/loan/loan.service.js +3 -3
- package/esm2015/lib/services/http/property/property-category/property-category.service.js +3 -3
- package/esm2015/lib/services/http/property/property-category-movement/property-category-movement.service.js +3 -3
- package/esm2015/lib/services/http/property/property-document/property-document.service.js +3 -3
- package/esm2015/lib/services/http/property/property-sale/property-sale.service.js +3 -3
- package/esm2015/lib/services/http/property/property-sale/tax-exemption/tax-exemption.service.js +3 -3
- package/esm2015/lib/services/http/property/property-share/property-share.service.js +3 -3
- package/esm2015/lib/services/http/property/property.service.js +3 -3
- package/esm2015/lib/services/http/rest/rest.service.js +3 -3
- package/esm2015/lib/services/http/service-notification/service-notification.service.js +3 -3
- package/esm2015/lib/services/http/subscription/service-price.service.js +3 -3
- package/esm2015/lib/services/http/subscription/subscription.service.js +3 -3
- package/esm2015/lib/services/http/tax-review/tax-review-history/tax-review-history.service.js +3 -3
- package/esm2015/lib/services/http/tax-review/tax-review.service.js +3 -3
- package/esm2015/lib/services/http/tax-summary/tax-summary.service.js +3 -3
- package/esm2015/lib/services/http/transaction/transaction-allocation/transaction-allocation.service.js +3 -3
- package/esm2015/lib/services/http/transaction/transaction.service.js +8 -6
- package/esm2015/lib/services/http/tutorial-video/tutorial-video.service.js +3 -3
- package/esm2015/lib/services/http/user/occupation/occupation.service.js +3 -3
- package/esm2015/lib/services/http/user/user-event-setting/user-event-setting.service.js +3 -3
- package/esm2015/lib/services/http/user/user-event-type/user-event-type.service.js +3 -3
- package/esm2015/lib/services/http/user/user.service.js +3 -3
- package/esm2015/lib/services/http/vehicle/vehicle-claim.service.js +3 -3
- package/esm2015/lib/services/http/vehicle/vehicle-logbook.service.js +3 -3
- package/esm2015/lib/services/http/vehicle/vehicle.service.js +3 -3
- package/esm2015/lib/services/intercom/intercom.service.js +3 -3
- package/esm2015/lib/services/kompassify/kompassify.service.js +3 -3
- package/esm2015/lib/services/pdf/pdf-from-dom-element/pdf-from-dom-element.service.js +3 -3
- package/esm2015/lib/services/pdf/pdf-from-table/pdf-from-data-table/pdf-from-data-table.service.js +3 -3
- package/esm2015/lib/services/pdf/pdf-from-table/pdf-from-html-table/pdf-from-html-table.service.js +3 -3
- package/esm2015/lib/services/pdf/pdf-from-table/pdf-from-table.service.js +3 -3
- package/esm2015/lib/services/preloader/preloader.service.js +3 -3
- package/esm2015/lib/services/property/corelogic/corelogic.service.js +3 -3
- package/esm2015/lib/services/property/equity-position-chart/equity-position-chart.service.js +3 -3
- package/esm2015/lib/services/property/property-calculation/property-calculation.service.js +34 -11
- package/esm2015/lib/services/report/property/property-transaction-report.service.js +3 -3
- package/esm2015/lib/services/toast/toast.service.js +3 -3
- package/esm2015/lib/services/transaction/transaction-calculation.service.js +3 -3
- package/esm2015/lib/services/user/user-switcher.service.js +3 -3
- package/esm2015/lib/services/xlsx/xlsx.service.js +3 -3
- package/esm2015/lib/tt-core.module.js +4 -4
- package/fesm2015/taxtank-core.js +309 -279
- package/fesm2015/taxtank-core.js.map +1 -1
- package/lib/collections/property/property.collection.d.ts +0 -2
- package/lib/models/property/property.d.ts +1 -0
- package/lib/models/transaction/transaction.d.ts +1 -0
- package/lib/services/property/property-calculation/property-calculation.service.d.ts +8 -0
- package/package.json +1 -1
package/esm2015/lib/services/pdf/pdf-from-table/pdf-from-html-table/pdf-from-html-table.service.js
CHANGED
|
@@ -29,9 +29,9 @@ export class PdfFromHtmlTableService extends PdfFromTableService {
|
|
|
29
29
|
return pdf;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
PdfFromHtmlTableService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
33
|
-
PdfFromHtmlTableService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
32
|
+
PdfFromHtmlTableService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PdfFromHtmlTableService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
33
|
+
PdfFromHtmlTableService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PdfFromHtmlTableService, providedIn: 'root' });
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PdfFromHtmlTableService, decorators: [{
|
|
35
35
|
type: Injectable,
|
|
36
36
|
args: [{
|
|
37
37
|
providedIn: 'root'
|
|
@@ -42,9 +42,9 @@ export class PdfFromTableService {
|
|
|
42
42
|
doc.addImage(logo, 'PNG', doc.internal.pageSize.width - FILE_SETTINGS.logo.positionX, FILE_SETTINGS.logo.positionY, FILE_SETTINGS.logo.width, FILE_SETTINGS.logo.height);
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
PdfFromTableService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
46
|
-
PdfFromTableService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
47
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
45
|
+
PdfFromTableService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PdfFromTableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
46
|
+
PdfFromTableService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PdfFromTableService, providedIn: 'root' });
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PdfFromTableService, decorators: [{
|
|
48
48
|
type: Injectable,
|
|
49
49
|
args: [{
|
|
50
50
|
providedIn: 'root'
|
|
@@ -19,9 +19,9 @@ export class PreloaderService {
|
|
|
19
19
|
this.activePreloaders.next(activePreloaders);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
PreloaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
23
|
-
PreloaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
22
|
+
PreloaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PreloaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23
|
+
PreloaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PreloaderService, providedIn: 'root' });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PreloaderService, decorators: [{
|
|
25
25
|
type: Injectable,
|
|
26
26
|
args: [{
|
|
27
27
|
providedIn: 'root'
|
|
@@ -32,9 +32,9 @@ export class CorelogicService {
|
|
|
32
32
|
}));
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
CorelogicService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
36
|
-
CorelogicService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
35
|
+
CorelogicService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: CorelogicService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
36
|
+
CorelogicService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: CorelogicService, providedIn: 'root' });
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: CorelogicService, decorators: [{
|
|
38
38
|
type: Injectable,
|
|
39
39
|
args: [{
|
|
40
40
|
providedIn: 'root'
|
package/esm2015/lib/services/property/equity-position-chart/equity-position-chart.service.js
CHANGED
|
@@ -31,9 +31,9 @@ export class EquityPositionChartService {
|
|
|
31
31
|
}));
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
EquityPositionChartService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
35
|
-
EquityPositionChartService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
34
|
+
EquityPositionChartService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: EquityPositionChartService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
35
|
+
EquityPositionChartService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: EquityPositionChartService, providedIn: 'root' });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: EquityPositionChartService, decorators: [{
|
|
37
37
|
type: Injectable,
|
|
38
38
|
args: [{
|
|
39
39
|
providedIn: 'root'
|
|
@@ -23,12 +23,12 @@ export class PropertyCalculationService {
|
|
|
23
23
|
}));
|
|
24
24
|
}
|
|
25
25
|
taxPositionGrowth(properties, transactions, depreciations) {
|
|
26
|
-
const
|
|
27
|
-
// check if
|
|
28
|
-
if (!
|
|
26
|
+
const forecastedTaxPosition = properties.sumBy('forecastedTaxPosition');
|
|
27
|
+
// check if forecastedTaxPosition = 0 to avoid division by zero
|
|
28
|
+
if (!forecastedTaxPosition) {
|
|
29
29
|
return 0;
|
|
30
30
|
}
|
|
31
|
-
return (
|
|
31
|
+
return (this.getTaxPosition(transactions, depreciations) - forecastedTaxPosition) / forecastedTaxPosition;
|
|
32
32
|
}
|
|
33
33
|
taxPositionGrowth$(properties$, transactions$, depreciations$) {
|
|
34
34
|
return combineLatest([
|
|
@@ -89,11 +89,12 @@ export class PropertyCalculationService {
|
|
|
89
89
|
}
|
|
90
90
|
getLvrGrowth(properties, bankAccounts, loans) {
|
|
91
91
|
const lvr = this.getLvr(properties, bankAccounts);
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
const lvrCommencement = this.getLvrCommencement(properties, loans, bankAccounts);
|
|
93
|
+
if (!lvrCommencement) {
|
|
94
|
+
// check if lvrCommencement = 0 to avoid division by zero
|
|
94
95
|
return 0;
|
|
95
96
|
}
|
|
96
|
-
return (
|
|
97
|
+
return (this.getLvr(properties, bankAccounts) - lvrCommencement) / lvrCommencement;
|
|
97
98
|
}
|
|
98
99
|
getLvrGrowth$(properties$, bankAccounts$, loans$) {
|
|
99
100
|
return combineLatest([
|
|
@@ -104,14 +105,28 @@ export class PropertyCalculationService {
|
|
|
104
105
|
return this.getLvrGrowth(properties, bankAccounts, loans);
|
|
105
106
|
}));
|
|
106
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Equity position = Market value - current loan value
|
|
110
|
+
*/
|
|
107
111
|
getEquityPosition(properties, bankAccounts) {
|
|
108
112
|
// Math abs is required for correct percentage calculation
|
|
109
113
|
return properties.marketValue - Math.abs(this.getLoanValue(properties, bankAccounts));
|
|
110
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Purchase Equity = Purchase price - initial loan value
|
|
117
|
+
*/
|
|
111
118
|
getPurchaseEquity(properties, bankAccounts, loans) {
|
|
112
119
|
// Math abs is required for correct percentage calculation
|
|
113
120
|
return properties.purchasePrice - Math.abs(this.getLoanAmount(properties, bankAccounts, loans));
|
|
114
121
|
}
|
|
122
|
+
getEquityGrowth(properties, bankAccounts, loans) {
|
|
123
|
+
const purchaseEquity = this.getPurchaseEquity(properties, bankAccounts, loans);
|
|
124
|
+
// check if purchaseEquity = 0 to avoid division by zero
|
|
125
|
+
if (!purchaseEquity) {
|
|
126
|
+
return 0;
|
|
127
|
+
}
|
|
128
|
+
return (this.getEquityPosition(properties, bankAccounts) - purchaseEquity) / purchaseEquity;
|
|
129
|
+
}
|
|
115
130
|
/**
|
|
116
131
|
* Get dictionary of badges for each property in collection
|
|
117
132
|
*/
|
|
@@ -122,6 +137,14 @@ export class PropertyCalculationService {
|
|
|
122
137
|
});
|
|
123
138
|
return badgesByProperty;
|
|
124
139
|
}
|
|
140
|
+
getCashPositionGrowth(properties, transactions) {
|
|
141
|
+
const forecastedCashPosition = properties.sumBy('forecastedCashPosition');
|
|
142
|
+
// check if forecastedCashPosition = 0 to avoid division by zero
|
|
143
|
+
if (!forecastedCashPosition) {
|
|
144
|
+
return 0;
|
|
145
|
+
}
|
|
146
|
+
return (transactions.cashPosition - forecastedCashPosition) / forecastedCashPosition;
|
|
147
|
+
}
|
|
125
148
|
/**
|
|
126
149
|
* Get Badge for single property in collection
|
|
127
150
|
*/
|
|
@@ -144,12 +167,12 @@ export class PropertyCalculationService {
|
|
|
144
167
|
}
|
|
145
168
|
}
|
|
146
169
|
}
|
|
147
|
-
PropertyCalculationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
148
|
-
PropertyCalculationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
149
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
170
|
+
PropertyCalculationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyCalculationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
171
|
+
PropertyCalculationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyCalculationService, providedIn: 'root' });
|
|
172
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyCalculationService, decorators: [{
|
|
150
173
|
type: Injectable,
|
|
151
174
|
args: [{
|
|
152
175
|
providedIn: 'root'
|
|
153
176
|
}]
|
|
154
177
|
}] });
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktY2FsY3VsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9wcm9wZXJ0eS9wcm9wZXJ0eS1jYWxjdWxhdGlvbi9wcm9wZXJ0eS1jYWxjdWxhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7O0FBRXhFOzs7R0FHRztBQUlILE1BQU0sT0FBTywwQkFBMEI7SUFDckMsY0FBYyxDQUFDLFlBQW1DLEVBQUUsYUFBcUM7UUFDdkYsOEVBQThFO1FBQzlFLE9BQU8sWUFBWSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsZUFBZSxDQUNiLGFBQWdELEVBQ2hELGNBQWtEO1FBRWxELE9BQU8sYUFBYSxDQUFDO1lBQ25CLGFBQWE7WUFDYixjQUFjO1NBQ2YsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxhQUFhLENBQWtELEVBQVUsRUFBRTtZQUM3RixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlC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Z0JBQWdCLEdBQXVCLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzlFLE1BQU0sNkJBQTZCLEdBQWEsZ0JBQWdCLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztRQUNwRyxNQUFNLDBCQUEwQixHQUFhLGdCQUFnQixDQUFDLDZCQUE2QixDQUN6RixZQUFZLEVBQUUsYUFBYSxDQUM1QixDQUFDO1FBRUYsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVE7Z0JBQ3JCLE9BQU8sSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwRCxLQUFLLFFBQVEsQ0FBQyxFQUFFLEtBQUssMEJBQTBCLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQyxFQUFFLEtBQUssNkJBQTZCLENBQUMsRUFBRTtnQkFDcEcsT0FBTyxJQUFJLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekUsS0FBSyxRQUFRLENBQUMsRUFBRSxLQUFLLDBCQUEwQixDQUFDLEVBQUU7Z0JBQ2hELE9BQU8sSUFBSSxLQUFLLENBQUMsc0JBQXNCLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hFLEtBQUssUUFBUSxDQUFDLEVBQUUsS0FBSyw2QkFBNkIsQ0FBQyxFQUFFO2dCQUNuRCxPQUFPLElBQUksS0FBSyxDQUFDLHlCQUF5QixFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRTtnQkFDRSxPQUFPLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDOzt3SEF4TFUsMEJBQTBCOzRIQUExQiwwQkFBMEIsY0FGekIsTUFBTTs0RkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFua0FjY291bnRDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvYmFuay1hY2NvdW50LmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgRGVwcmVjaWF0aW9uQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvbGxlY3Rpb25zL2RlcHJlY2lhdGlvbi5jb2xsZWN0aW9uJztcbmltcG9ydCB7IExvYW5Db2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvbG9hbi9sb2FuLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgUHJvcGVydHlDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvcHJvcGVydHkvcHJvcGVydHkuY29sbGVjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkNvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb2xsZWN0aW9ucy90cmFuc2FjdGlvbi90cmFuc2FjdGlvbi5jb2xsZWN0aW9uJztcbmltcG9ydCB7IFByb3BlcnR5IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Byb3BlcnR5L3Byb3BlcnR5JztcbmltcG9ydCB7IEJhbmtBY2NvdW50IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2JhbmsvYmFuay1hY2NvdW50JztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZGljdGlvbmFyeS9kaWN0aW9uYXJ5JztcbmltcG9ydCB7IEJhZGdlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2JhZGdlL2JhZGdlJztcbmltcG9ydCB7IEJhZGdlQ29sb3JFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2JhZGdlL2JhZGdlLWNvbG9yLmVudW0nO1xuXG4vKipcbiAqIFNlcnZpY2Ugd2l0aCBjYWxjdWxhdGlvbnMgbWV0aG9kcyBmb3IgcHJvcGVydGllcyByZWxhdGVkIHdpdGggb3RoZXIgZW50aXRpZXMuXG4gKiBMb2dpYyBoZXJlIHdvcmtzIGxpa2UgY29sbGVjdGlvbnMgbWV0aG9kcyBidXQgZm9yIHNldmVyYWwgZW50aXRpZXNcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUHJvcGVydHlDYWxjdWxhdGlvblNlcnZpY2Uge1xuICBnZXRUYXhQb3NpdGlvbih0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uQ29sbGVjdGlvbiwgZGVwcmVjaWF0aW9uczogRGVwcmVjaWF0aW9uQ29sbGVjdGlvbik6IG51bWJlciB7XG4gICAgLy8gQFRPRE8gaGFjazogbWF0aCBhYnMgYWRkZWQgYmVjYXVzZSB3ZSBoYXZlIG1pc21hdGNoaW5nIG9mIHJlYWwgdmFsdWVzIHNpZ25zXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9ucy5jYXNoUG9zaXRpb24gLSBNYXRoLmFicyhkZXByZWNpYXRpb25zLmNsYWltQW1vdW50KTtcbiAgfVxuXG4gIGdldFRheFBvc2l0aW9uJChcbiAgICB0cmFuc2FjdGlvbnMkOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uQ29sbGVjdGlvbj4sXG4gICAgZGVwcmVjaWF0aW9ucyQ6IE9ic2VydmFibGU8RGVwcmVjaWF0aW9uQ29sbGVjdGlvbj5cbiAgKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0cmFuc2FjdGlvbnMkLFxuICAgICAgZGVwcmVjaWF0aW9ucyRcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbdHJhbnNhY3Rpb25zLCBkZXByZWNpYXRpb25zXTogW1RyYW5zYWN0aW9uQ29sbGVjdGlvbiwgRGVwcmVjaWF0aW9uQ29sbGVjdGlvbl0pOiBudW1iZXIgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUYXhQb3NpdGlvbih0cmFuc2FjdGlvbnMsIGRlcHJlY2lhdGlvbnMpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgdGF4UG9zaXRpb25Hcm93dGgocHJvcGVydGllczogUHJvcGVydHlDb2xsZWN0aW9uLCB0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uQ29sbGVjdGlvbiwgZGVwcmVjaWF0aW9uczogRGVwcmVjaWF0aW9uQ29sbGVjdGlvbik6IG51bWJlciB7XG4gICAgY29uc3QgdGF4UG9zaXRpb246IG51bWJlciA9IHRoaXMuZ2V0VGF4UG9zaXRpb24odHJhbnNhY3Rpb25zLCBkZXByZWNpYXRpb25zKTtcbiAgICAvLyBjaGVjayBpZiB0YXhQb3NpdGlvbiA9IDAgdG8gYXZvaWQgZGl2aXNpb24gYnkgemVyb1xuICAgIGlmICghdGF4UG9zaXRpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiAodGF4UG9zaXRpb24gLSBwcm9wZXJ0aWVzLmZvcmVjYXN0ZWRUYXhQb3NpdGlvbikgLyB0YXhQb3NpdGlvbjtcbiAgfVxuXG4gIHRheFBvc2l0aW9uR3Jvd3RoJChcbiAgICBwcm9wZXJ0aWVzJDogT2JzZXJ2YWJsZTxQcm9wZXJ0eUNvbGxlY3Rpb24+LFxuICAgIHRyYW5zYWN0aW9ucyQ6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25Db2xsZWN0aW9uPixcbiAgICBkZXByZWNpYXRpb25zJDogT2JzZXJ2YWJsZTxEZXByZWNpYXRpb25Db2xsZWN0aW9uPlxuICApOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHByb3BlcnRpZXMkLFxuICAgICAgdHJhbnNhY3Rpb25zJCxcbiAgICAgIGRlcHJlY2lhdGlvbnMkXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW3Byb3BlcnRpZXMsIHRyYW5zYWN0aW9ucywgZGVwcmVjaWF0aW9uc106IFtQcm9wZXJ0eUNvbGxlY3Rpb24sIFRyYW5zYWN0aW9uQ29sbGVjdGlvbiwgRGVwcmVjaWF0aW9uQ29sbGVjdGlvbl0pOiBudW1iZXIgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YXhQb3NpdGlvbkdyb3d0aChwcm9wZXJ0aWVzLCB0cmFuc2FjdGlvbnMsIGRlcHJlY2lhdGlvbnMpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0UmVudGFsUmV0dXJuKHByb3BlcnRpZXM6IFByb3BlcnR5Q29sbGVjdGlvbiwgdHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbkNvbGxlY3Rpb24pOiBudW1iZXIge1xuICAgIHJldHVybiB0cmFuc2FjdGlvbnMuY2xhaW1JbmNvbWUgLyBwcm9wZXJ0aWVzLm1hcmtldFZhbHVlO1xuICB9XG5cbiAgZ2V0TG9hbkFtb3VudChwcm9wZXJ0aWVzOiBQcm9wZXJ0eUNvbGxlY3Rpb24sIGJhbmtBY2NvdW50czogQmFua0FjY291bnRDb2xsZWN0aW9uLCBsb2FuczogTG9hbkNvbGxlY3Rpb24pOiBudW1iZXIge1xuICAgIHJldHVybiBwcm9wZXJ0aWVzLml0ZW1zLnJlZHVjZSgodG90YWxBbW91bnQ6IG51bWJlciwgcHJvcGVydHk6IFByb3BlcnR5KTogbnVtYmVyID0+IHtcbiAgICAgIHJldHVybiB0b3RhbEFtb3VudCArIGJhbmtBY2NvdW50cy5pdGVtc1xuICAgICAgICAucmVkdWNlKChwcm9wZXJ0eUFtb3VudDogbnVtYmVyLCBiYW5rQWNjb3VudDogQmFua0FjY291bnQpOiBudW1iZXIgPT4ge1xuICAgICAgICAgIHJldHVybiBwcm9wZXJ0eUFtb3VudCArIGJhbmtBY2NvdW50LmdldFByb3BlcnR5UGVyY2VudGFnZShwcm9wZXJ0eS5pZCkgKiAobG9hbnMuZ2V0QnlCYW5rQWNjb3VudElkKGJhbmtBY2NvdW50LmlkKT8uYW1vdW50IHx8IDApO1xuICAgICAgICB9LCAwKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIGdldExvYW5WYWx1ZShwcm9wZXJ0aWVzOiBQcm9wZXJ0eUNvbGxlY3Rpb24sIGJhbmtBY2NvdW50czogQmFua0FjY291bnRDb2xsZWN0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcHJvcGVydGllcy5pdGVtcy5yZWR1Y2UoKHRvdGFsQW1vdW50OiBudW1iZXIsIHByb3BlcnR5OiBQcm9wZXJ0eSk6IG51bWJlciA9PiB7XG4gICAgICByZXR1cm4gdG90YWxBbW91bnQgKyBiYW5rQWNjb3VudHMuaXRlbXNcbiAgICAgICAgLnJlZHVjZSgocHJvcGVydHlBbW91bnQ6IG51bWJlciwgYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KTogbnVtYmVyID0+IHtcbiAgICAgICAgICByZXR1cm4gcHJvcGVydHlBbW91bnQgKyBiYW5rQWNjb3VudC5nZXRQcm9wZXJ0eUJhbGFuY2VBbW91bnQocHJvcGVydHkuaWQpO1xuICAgICAgICB9LCAwKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMVlJcbiAgICovXG5cbiAgZ2V0THZyKHByb3BlcnRpZXM6IFByb3BlcnR5Q29sbGVjdGlvbiwgYmFua0FjY291bnRzOiBCYW5rQWNjb3VudENvbGxlY3Rpb24pOiBudW1iZXIge1xuICAgIC8vIE1hdGggYWJzIGlzIHJlcXVpcmVkIGZvciBjb3JyZWN0IHBlcmNlbnRhZ2UgY2FsY3VsYXRpb25cbiAgICByZXR1cm4gTWF0aC5hYnModGhpcy5nZXRMb2FuVmFsdWUocHJvcGVydGllcywgYmFua0FjY291bnRzKSkgLyBwcm9wZXJ0aWVzLm1hcmtldFZhbHVlO1xuICB9XG5cbiAgZ2V0THZyJChcbiAgICBwcm9wZXJ0aWVzJDogT2JzZXJ2YWJsZTxQcm9wZXJ0eUNvbGxlY3Rpb24+LFxuICAgIGJhbmtBY2NvdW50cyQ6IE9ic2VydmFibGU8QmFua0FjY291bnRDb2xsZWN0aW9uPlxuICApOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHByb3BlcnRpZXMkLFxuICAgICAgYmFua0FjY291bnRzJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtwcm9wZXJ0aWVzLCBiYW5rQWNjb3VudHNdOiBbUHJvcGVydHlDb2xsZWN0aW9uLCBCYW5rQWNjb3VudENvbGxlY3Rpb25dKTogbnVtYmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0THZyKHByb3BlcnRpZXMsIGJhbmtBY2NvdW50cyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXRMdnJDb21tZW5jZW1lbnQocHJvcGVydGllczogUHJvcGVydHlDb2xsZWN0aW9uLCBsb2FuczogTG9hbkNvbGxlY3Rpb24sIGJhbmtBY2NvdW50czogQmFua0FjY291bnRDb2xsZWN0aW9uKTogbnVtYmVyIHtcbiAgICAvLyBNYXRoIGFicyBpcyByZXF1aXJlZCBmb3IgY29ycmVjdCBwZXJjZW50YWdlIGNhbGN1bGF0aW9uXG4gICAgcmV0dXJuIE1hdGguYWJzKHRoaXMuZ2V0TG9hbkFtb3VudChwcm9wZXJ0aWVzLCBiYW5rQWNjb3VudHMsIGxvYW5zKSkgLyBwcm9wZXJ0aWVzLnB1cmNoYXNlUHJpY2U7XG4gIH1cblxuICBnZXRMdnJDb21tZW5jZW1lbnQkKFxuICAgIHByb3BlcnRpZXMkOiBPYnNlcnZhYmxlPFByb3BlcnR5Q29sbGVjdGlvbj4sXG4gICAgYmFua0FjY291bnRzJDogT2JzZXJ2YWJsZTxCYW5rQWNjb3VudENvbGxlY3Rpb24+LFxuICAgIGxvYW5zJDogT2JzZXJ2YWJsZTxMb2FuQ29sbGVjdGlvbj5cbiAgKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICBwcm9wZXJ0aWVzJCxcbiAgICAgIGJhbmtBY2NvdW50cyQsXG4gICAgICBsb2FucyRcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbcHJvcGVydGllcywgYmFua0FjY291bnRzLCBsb2Fuc106IFtQcm9wZXJ0eUNvbGxlY3Rpb24sIEJhbmtBY2NvdW50Q29sbGVjdGlvbiwgTG9hbkNvbGxlY3Rpb25dKTogbnVtYmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0THZyQ29tbWVuY2VtZW50KHByb3BlcnRpZXMsIGxvYW5zLCBiYW5rQWNjb3VudHMpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0THZyR3Jvd3RoKHByb3BlcnRpZXM6IFByb3BlcnR5Q29sbGVjdGlvbiwgYmFua0FjY291bnRzOiBCYW5rQWNjb3VudENvbGxlY3Rpb24sIGxvYW5zOiBMb2FuQ29sbGVjdGlvbik6IG51bWJlciB7XG4gICAgY29uc3QgbHZyOiBudW1iZXIgPSB0aGlzLmdldEx2cihwcm9wZXJ0aWVzLCBiYW5rQWNjb3VudHMpO1xuICAgIGlmICghbHZyKSB7XG4gICAgICAvLyBjaGVjayBpZiBsdnIgPSAwIHRvIGF2b2lkIGRpdmlzaW9uIGJ5IHplcm9cbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiAobHZyIC0gdGhpcy5nZXRMdnJDb21tZW5jZW1lbnQocHJvcGVydGllcywgbG9hbnMsIGJhbmtBY2NvdW50cykpIC8gbHZyO1xuICB9XG5cbiAgZ2V0THZyR3Jvd3RoJChcbiAgICBwcm9wZXJ0aWVzJDogT2JzZXJ2YWJsZTxQcm9wZXJ0eUNvbGxlY3Rpb24+LFxuICAgIGJhbmtBY2NvdW50cyQ6IE9ic2VydmFibGU8QmFua0FjY291bnRDb2xsZWN0aW9uPixcbiAgICBsb2FucyQ6IE9ic2VydmFibGU8TG9hbkNvbGxlY3Rpb24+XG4gICk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgcHJvcGVydGllcyQsXG4gICAgICBiYW5rQWNjb3VudHMkLFxuICAgICAgbG9hbnMkXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW3Byb3BlcnRpZXMsIGJhbmtBY2NvdW50cywgbG9hbnNdOiBbUHJvcGVydHlDb2xsZWN0aW9uLCBCYW5rQWNjb3VudENvbGxlY3Rpb24sIExvYW5Db2xsZWN0aW9uXSk6IG51bWJlciA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEx2ckdyb3d0aChwcm9wZXJ0aWVzLCBiYW5rQWNjb3VudHMsIGxvYW5zKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldEVxdWl0eVBvc2l0aW9uKHByb3BlcnRpZXM6IFByb3BlcnR5Q29sbGVjdGlvbiwgYmFua0FjY291bnRzOiBCYW5rQWNjb3VudENvbGxlY3Rpb24pOiBudW1iZXIge1xuICAgIC8vIE1hdGggYWJzIGlzIHJlcXVpcmVkIGZvciBjb3JyZWN0IHBlcmNlbnRhZ2UgY2FsY3VsYXRpb25cbiAgICByZXR1cm4gcHJvcGVydGllcy5tYXJrZXRWYWx1ZSAtIE1hdGguYWJzKHRoaXMuZ2V0TG9hblZhbHVlKHByb3BlcnRpZXMsIGJhbmtBY2NvdW50cykpO1xuICB9XG5cbiAgZ2V0UHVyY2hhc2VFcXVpdHkocHJvcGVydGllczogUHJvcGVydHlDb2xsZWN0aW9uLCBiYW5rQWNjb3VudHM6IEJhbmtBY2NvdW50Q29sbGVjdGlvbiwgbG9hbnM6IExvYW5Db2xsZWN0aW9uKTogbnVtYmVyIHtcbiAgICAvLyBNYXRoIGFicyBpcyByZXF1aXJlZCBmb3IgY29ycmVjdCBwZXJjZW50YWdlIGNhbGN1bGF0aW9uXG4gICAgcmV0dXJuIHByb3BlcnRpZXMucHVyY2hhc2VQcmljZSAtIE1hdGguYWJzKHRoaXMuZ2V0TG9hbkFtb3VudChwcm9wZXJ0aWVzLCBiYW5rQWNjb3VudHMsIGxvYW5zKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRpY3Rpb25hcnkgb2YgYmFkZ2VzIGZvciBlYWNoIHByb3BlcnR5IGluIGNvbGxlY3Rpb25cbiAgICovXG4gIGdldEJhZGdlc0J5UHJvcGVydHkocHJvcGVydGllczogUHJvcGVydHlDb2xsZWN0aW9uLCB0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uQ29sbGVjdGlvbiwgZGVwcmVjaWF0aW9uczogRGVwcmVjaWF0aW9uQ29sbGVjdGlvbik6IERpY3Rpb25hcnk8QmFkZ2U+IHtcbiAgICBjb25zdCBiYWRnZXNCeVByb3BlcnR5ID0gbmV3IERpY3Rpb25hcnkoW10pO1xuXG4gICAgcHJvcGVydGllcy50b0FycmF5KCkuZm9yRWFjaCgocHJvcGVydHk6IFByb3BlcnR5KSA9PiB7XG4gICAgICBiYWRnZXNCeVByb3BlcnR5LmFkZChwcm9wZXJ0eS5pZCwgdGhpcy5nZXRCYWRnZShwcm9wZXJ0eSwgcHJvcGVydGllcywgdHJhbnNhY3Rpb25zLCBkZXByZWNpYXRpb25zKSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmFkZ2VzQnlQcm9wZXJ0eTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgQmFkZ2UgZm9yIHNpbmdsZSBwcm9wZXJ0eSBpbiBjb2xsZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldEJhZGdlKHByb3BlcnR5OiBQcm9wZXJ0eSwgcHJvcGVydGllczogUHJvcGVydHlDb2xsZWN0aW9uLCB0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uQ29sbGVjdGlvbiwgZGVwcmVjaWF0aW9uczogRGVwcmVjaWF0aW9uQ29sbGVjdGlvbik6IEJhZGdlIHtcbiAgICAvLyBiZXN0IHBlcmZvcm1hbmNlIHByb3BlcnRpZXMgY291bGQgYmUgb25seSBmcm9tIGFjdGl2ZSBwcm9wZXJ0aWVzIGxpc3RcbiAgICBjb25zdCBhY3RpdmVQcm9wZXJ0aWVzOiBQcm9wZXJ0eUNvbGxlY3Rpb24gPSBwcm9wZXJ0aWVzLmdldEFjdGl2ZVByb3BlcnRpZXMoKTtcbiAgICBjb25zdCBiZXN0UGVyZm9ybWFuY2VHcm93dGhQcm9wZXJ0eTogUHJvcGVydHkgPSBhY3RpdmVQcm9wZXJ0aWVzLmdldEJlc3RQZXJmb3JtYW5jZUdyb3d0aFByb3BlcnR5KCk7XG4gICAgY29uc3QgYmVzdFBlcmZvcm1hbmNlVGF4UHJvcGVydHk6IFByb3BlcnR5ID0gYWN0aXZlUHJvcGVydGllcy5nZXRCZXN0UGVyZm9ybWFuY2VUYXhQcm9wZXJ0eShcbiAgICAgIHRyYW5zYWN0aW9ucywgZGVwcmVjaWF0aW9uc1xuICAgICk7XG5cbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgIGNhc2UgIXByb3BlcnR5LmlzQWN0aXZlOlxuICAgICAgICByZXR1cm4gbmV3IEJhZGdlKCdJbmFjdGl2ZScsIEJhZGdlQ29sb3JFbnVtLkdSQVkpO1xuICAgICAgY2FzZSBwcm9wZXJ0eS5pZCA9PT0gYmVzdFBlcmZvcm1hbmNlVGF4UHJvcGVydHkuaWQgJiYgcHJvcGVydHkuaWQgPT09IGJlc3RQZXJmb3JtYW5jZUdyb3d0aFByb3BlcnR5LmlkOlxuICAgICAgICByZXR1cm4gbmV3IEJhZGdlKCdCZXN0IHBlcmZvcm1hbmNlIGdyb3d0aCAmIHRheCcsIEJhZGdlQ29sb3JFbnVtLkdPTEQpO1xuICAgICAgY2FzZSBwcm9wZXJ0eS5pZCA9PT0gYmVzdFBlcmZvcm1hbmNlVGF4UHJvcGVydHkuaWQ6XG4gICAgICAgIHJldHVybiBuZXcgQmFkZ2UoJ0Jlc3QgcGVyZm9ybWFuY2UgdGF4JywgQmFkZ2VDb2xvckVudW0uR09MRCk7XG4gICAgICBjYXNlIHByb3BlcnR5LmlkID09PSBiZXN0UGVyZm9ybWFuY2VHcm93dGhQcm9wZXJ0eS5pZDpcbiAgICAgICAgcmV0dXJuIG5ldyBCYWRnZSgnQmVzdCBwZXJmb3JtYW5jZSBncm93dGgnLCBCYWRnZUNvbG9yRW51bS5HUkVFTik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbmV3IEJhZGdlKCdNb25pdG9yaW5nIHBlcmZvcm1hbmNlJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktY2FsY3VsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9wcm9wZXJ0eS9wcm9wZXJ0eS1jYWxjdWxhdGlvbi9wcm9wZXJ0eS1jYWxjdWxhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7O0FBRXhFOzs7R0FHRztBQUlILE1BQU0sT0FBTywwQkFBMEI7SUFDckMsY0FBYyxDQUFDLFlBQW1DLEVBQUUsYUFBcUM7UUFDdkYsOEVBQThFO1FBQzlFLE9BQU8sWUFBWSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsZUFBZSxDQUNiLGFBQWdELEVBQ2hELGNBQWtEO1FBRWxELE9BQU8sYUFBYSxDQUFDO1lBQ25CLGFBQWE7WUFDYixjQUFjO1NBQ2YsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxhQUFhLENBQWtELEVBQVUsRUFBRTtZQUM3RixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlC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Q0FBQyxDQUFDO1lBQ3BELEtBQUssUUFBUSxDQUFDLEVBQUUsS0FBSywwQkFBMEIsQ0FBQyxFQUFFLElBQUksUUFBUSxDQUFDLEVBQUUsS0FBSyw2QkFBNkIsQ0FBQyxFQUFFO2dCQUNwRyxPQUFPLElBQUksS0FBSyxDQUFDLCtCQUErQixFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6RSxLQUFLLFFBQVEsQ0FBQyxFQUFFLEtBQUssMEJBQTBCLENBQUMsRUFBRTtnQkFDaEQsT0FBTyxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEUsS0FBSyxRQUFRLENBQUMsRUFBRSxLQUFLLDZCQUE2QixDQUFDLEVBQUU7Z0JBQ25ELE9BQU8sSUFBSSxLQUFLLENBQUMseUJBQXlCLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BFO2dCQUNFLE9BQU8sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUM5QztJQUNILENBQUM7O3dIQXBOVSwwQkFBMEI7NEhBQTFCLDBCQUEwQixjQUZ6QixNQUFNOzRGQUVQLDBCQUEwQjtrQkFIdEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYW5rQWNjb3VudENvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb2xsZWN0aW9ucy9iYW5rLWFjY291bnQuY29sbGVjdGlvbic7XG5pbXBvcnQgeyBEZXByZWNpYXRpb25Db2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvZGVwcmVjaWF0aW9uLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgTG9hbkNvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb2xsZWN0aW9ucy9sb2FuL2xvYW4uY29sbGVjdGlvbic7XG5pbXBvcnQgeyBQcm9wZXJ0eUNvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb2xsZWN0aW9ucy9wcm9wZXJ0eS9wcm9wZXJ0eS5jb2xsZWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvbGxlY3Rpb25zL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgUHJvcGVydHkgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcHJvcGVydHkvcHJvcGVydHknO1xuaW1wb3J0IHsgQmFua0FjY291bnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvYmFuay9iYW5rLWFjY291bnQnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9kaWN0aW9uYXJ5L2RpY3Rpb25hcnknO1xuaW1wb3J0IHsgQmFkZ2UgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvYmFkZ2UvYmFkZ2UnO1xuaW1wb3J0IHsgQmFkZ2VDb2xvckVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvYmFkZ2UvYmFkZ2UtY29sb3IuZW51bSc7XG5cbi8qKlxuICogU2VydmljZSB3aXRoIGNhbGN1bGF0aW9ucyBtZXRob2RzIGZvciBwcm9wZXJ0aWVzIHJlbGF0ZWQgd2l0aCBvdGhlciBlbnRpdGllcy5cbiAqIExvZ2ljIGhlcmUgd29ya3MgbGlrZSBjb2xsZWN0aW9ucyBtZXRob2RzIGJ1dCBmb3Igc2V2ZXJhbCBlbnRpdGllc1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eUNhbGN1bGF0aW9uU2VydmljZSB7XG4gIGdldFRheFBvc2l0aW9uKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25Db2xsZWN0aW9uLCBkZXByZWNpYXRpb25zOiBEZXByZWNpYXRpb25Db2xsZWN0aW9uKTogbnVtYmVyIHtcbiAgICAvLyBAVE9ETyBoYWNrOiBtYXRoIGFicyBhZGRlZCBiZWNhdXNlIHdlIGhhdmUgbWlzbWF0Y2hpbmcgb2YgcmVhbCB2YWx1ZXMgc2lnbnNcbiAgICByZXR1cm4gdHJhbnNhY3Rpb25zLmNhc2hQb3NpdGlvbiAtIE1hdGguYWJzKGRlcHJlY2lhdGlvbnMuY2xhaW1BbW91bnQpO1xuICB9XG5cbiAgZ2V0VGF4UG9zaXRpb24kKFxuICAgIHRyYW5zYWN0aW9ucyQ6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25Db2xsZWN0aW9uPixcbiAgICBkZXByZWNpYXRpb25zJDogT2JzZXJ2YWJsZTxEZXByZWNpYXRpb25Db2xsZWN0aW9uPlxuICApOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRyYW5zYWN0aW9ucyQsXG4gICAgICBkZXByZWNpYXRpb25zJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFt0cmFuc2FjdGlvbnMsIGRlcHJlY2lhdGlvbnNdOiBbVHJhbnNhY3Rpb25Db2xsZWN0aW9uLCBEZXByZWNpYXRpb25Db2xsZWN0aW9uXSk6IG51bWJlciA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRheFBvc2l0aW9uKHRyYW5zYWN0aW9ucywgZGVwcmVjaWF0aW9ucyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICB0YXhQb3NpdGlvbkdyb3d0aChwcm9wZXJ0aWVzOiBQcm9wZXJ0eUNvbGxlY3Rpb24sIHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25Db2xsZWN0aW9uLCBkZXByZWNpYXRpb25zOiBEZXByZWNpYXRpb25Db2xsZWN0aW9uKTogbnVtYmVyIHtcbiAgICBjb25zdCBmb3JlY2FzdGVkVGF4UG9zaXRpb246IG51bWJlciA9IHByb3BlcnRpZXMuc3VtQnkoJ2ZvcmVjYXN0ZWRUYXhQb3NpdGlvbicpO1xuICAgIC8vIGNoZWNrIGlmIGZvcmVjYXN0ZWRUYXhQb3NpdGlvbiA9IDAgdG8gYXZvaWQgZGl2aXNpb24gYnkgemVyb1xuICAgIGlmICghZm9yZWNhc3RlZFRheFBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRoaXMuZ2V0VGF4UG9zaXRpb24odHJhbnNhY3Rpb25zLCBkZXByZWNpYXRpb25zKSAtIGZvcmVjYXN0ZWRUYXhQb3NpdGlvbikgLyBmb3JlY2FzdGVkVGF4UG9zaXRpb247XG4gIH1cblxuICB0YXhQb3NpdGlvbkdyb3d0aCQoXG4gICAgcHJvcGVydGllcyQ6IE9ic2VydmFibGU8UHJvcGVydHlDb2xsZWN0aW9uPixcbiAgICB0cmFuc2FjdGlvbnMkOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uQ29sbGVjdGlvbj4sXG4gICAgZGVwcmVjaWF0aW9ucyQ6IE9ic2VydmFibGU8RGVwcmVjaWF0aW9uQ29sbGVjdGlvbj5cbiAgKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICBwcm9wZXJ0aWVzJCxcbiAgICAgIHRyYW5zYWN0aW9ucyQsXG4gICAgICBkZXByZWNpYXRpb25zJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtwcm9wZXJ0aWVzLCB0cmFuc2FjdGlvbnMsIGRlcHJlY2lhdGlvbnNdOiBbUHJvcGVydHlDb2xsZWN0aW9uLCBUcmFuc2FjdGlvbkNvbGxlY3Rpb24sIERlcHJlY2lhdGlvbkNvbGxlY3Rpb25dKTogbnVtYmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGF4UG9zaXRpb25Hcm93dGgocHJvcGVydGllcywgdHJhbnNhY3Rpb25zLCBkZXByZWNpYXRpb25zKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldFJlbnRhbFJldHVybihwcm9wZXJ0aWVzOiBQcm9wZXJ0eUNvbGxlY3Rpb24sIHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25Db2xsZWN0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdHJhbnNhY3Rpb25zLmNsYWltSW5jb21lIC8gcHJvcGVydGllcy5tYXJrZXRWYWx1ZTtcbiAgfVxuXG4gIGdldExvYW5BbW91bnQocHJvcGVydGllczogUHJvcGVydHlDb2xsZWN0aW9uLCBiYW5rQWNjb3VudHM6IEJhbmtBY2NvdW50Q29sbGVjdGlvbiwgbG9hbnM6IExvYW5Db2xsZWN0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcHJvcGVydGllcy5pdGVtcy5yZWR1Y2UoKHRvdGFsQW1vdW50OiBudW1iZXIsIHByb3BlcnR5OiBQcm9wZXJ0eSk6IG51bWJlciA9PiB7XG4gICAgICByZXR1cm4gdG90YWxBbW91bnQgKyBiYW5rQWNjb3VudHMuaXRlbXNcbiAgICAgICAgLnJlZHVjZSgocHJvcGVydHlBbW91bnQ6IG51bWJlciwgYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KTogbnVtYmVyID0+IHtcbiAgICAgICAgICByZXR1cm4gcHJvcGVydHlBbW91bnQgKyBiYW5rQWNjb3VudC5nZXRQcm9wZXJ0eVBlcmNlbnRhZ2UocHJvcGVydHkuaWQpICogKGxvYW5zLmdldEJ5QmFua0FjY291bnRJZChiYW5rQWNjb3VudC5pZCk/LmFtb3VudCB8fCAwKTtcbiAgICAgICAgfSwgMCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBnZXRMb2FuVmFsdWUocHJvcGVydGllczogUHJvcGVydHlDb2xsZWN0aW9uLCBiYW5rQWNjb3VudHM6IEJhbmtBY2NvdW50Q29sbGVjdGlvbik6IG51bWJlciB7XG4gICAgcmV0dXJuIHByb3BlcnRpZXMuaXRlbXMucmVkdWNlKCh0b3RhbEFtb3VudDogbnVtYmVyLCBwcm9wZXJ0eTogUHJvcGVydHkpOiBudW1iZXIgPT4ge1xuICAgICAgcmV0dXJuIHRvdGFsQW1vdW50ICsgYmFua0FjY291bnRzLml0ZW1zXG4gICAgICAgIC5yZWR1Y2UoKHByb3BlcnR5QW1vdW50OiBudW1iZXIsIGJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCk6IG51bWJlciA9PiB7XG4gICAgICAgICAgcmV0dXJuIHByb3BlcnR5QW1vdW50ICsgYmFua0FjY291bnQuZ2V0UHJvcGVydHlCYWxhbmNlQW1vdW50KHByb3BlcnR5LmlkKTtcbiAgICAgICAgfSwgMCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICAvKipcbiAgICogTFZSXG4gICAqL1xuXG4gIGdldEx2cihwcm9wZXJ0aWVzOiBQcm9wZXJ0eUNvbGxlY3Rpb24sIGJhbmtBY2NvdW50czogQmFua0FjY291bnRDb2xsZWN0aW9uKTogbnVtYmVyIHtcbiAgICAvLyBNYXRoIGFicyBpcyByZXF1aXJlZCBmb3IgY29ycmVjdCBwZXJjZW50YWdlIGNhbGN1bGF0aW9uXG4gICAgcmV0dXJuIE1hdGguYWJzKHRoaXMuZ2V0TG9hblZhbHVlKHByb3BlcnRpZXMsIGJhbmtBY2NvdW50cykpIC8gcHJvcGVydGllcy5tYXJrZXRWYWx1ZTtcbiAgfVxuXG4gIGdldEx2ciQoXG4gICAgcHJvcGVydGllcyQ6IE9ic2VydmFibGU8UHJvcGVydHlDb2xsZWN0aW9uPixcbiAgICBiYW5rQWNjb3VudHMkOiBPYnNlcnZhYmxlPEJhbmtBY2NvdW50Q29sbGVjdGlvbj5cbiAgKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICBwcm9wZXJ0aWVzJCxcbiAgICAgIGJhbmtBY2NvdW50cyRcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbcHJvcGVydGllcywgYmFua0FjY291bnRzXTogW1Byb3BlcnR5Q29sbGVjdGlvbiwgQmFua0FjY291bnRDb2xsZWN0aW9uXSk6IG51bWJlciA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEx2cihwcm9wZXJ0aWVzLCBiYW5rQWNjb3VudHMpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0THZyQ29tbWVuY2VtZW50KHByb3BlcnRpZXM6IFByb3BlcnR5Q29sbGVjdGlvbiwgbG9hbnM6IExvYW5Db2xsZWN0aW9uLCBiYW5rQWNjb3VudHM6IEJhbmtBY2NvdW50Q29sbGVjdGlvbik6IG51bWJlciB7XG4gICAgLy8gTWF0aCBhYnMgaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3QgcGVyY2VudGFnZSBjYWxjdWxhdGlvblxuICAgIHJldHVybiBNYXRoLmFicyh0aGlzLmdldExvYW5BbW91bnQocHJvcGVydGllcywgYmFua0FjY291bnRzLCBsb2FucykpIC8gcHJvcGVydGllcy5wdXJjaGFzZVByaWNlO1xuICB9XG5cbiAgZ2V0THZyQ29tbWVuY2VtZW50JChcbiAgICBwcm9wZXJ0aWVzJDogT2JzZXJ2YWJsZTxQcm9wZXJ0eUNvbGxlY3Rpb24+LFxuICAgIGJhbmtBY2NvdW50cyQ6IE9ic2VydmFibGU8QmFua0FjY291bnRDb2xsZWN0aW9uPixcbiAgICBsb2FucyQ6IE9ic2VydmFibGU8TG9hbkNvbGxlY3Rpb24+XG4gICk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgcHJvcGVydGllcyQsXG4gICAgICBiYW5rQWNjb3VudHMkLFxuICAgICAgbG9hbnMkXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW3Byb3BlcnRpZXMsIGJhbmtBY2NvdW50cywgbG9hbnNdOiBbUHJvcGVydHlDb2xsZWN0aW9uLCBCYW5rQWNjb3VudENvbGxlY3Rpb24sIExvYW5Db2xsZWN0aW9uXSk6IG51bWJlciA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEx2ckNvbW1lbmNlbWVudChwcm9wZXJ0aWVzLCBsb2FucywgYmFua0FjY291bnRzKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldEx2ckdyb3d0aChwcm9wZXJ0aWVzOiBQcm9wZXJ0eUNvbGxlY3Rpb24sIGJhbmtBY2NvdW50czogQmFua0FjY291bnRDb2xsZWN0aW9uLCBsb2FuczogTG9hbkNvbGxlY3Rpb24pOiBudW1iZXIge1xuICAgIGNvbnN0IGx2cjogbnVtYmVyID0gdGhpcy5nZXRMdnIocHJvcGVydGllcywgYmFua0FjY291bnRzKTtcbiAgICBjb25zdCBsdnJDb21tZW5jZW1lbnQ6IG51bWJlciA9IHRoaXMuZ2V0THZyQ29tbWVuY2VtZW50KHByb3BlcnRpZXMsIGxvYW5zLCBiYW5rQWNjb3VudHMpO1xuICAgIGlmICghbHZyQ29tbWVuY2VtZW50KSB7XG4gICAgICAvLyBjaGVjayBpZiBsdnJDb21tZW5jZW1lbnQgPSAwIHRvIGF2b2lkIGRpdmlzaW9uIGJ5IHplcm9cbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiAodGhpcy5nZXRMdnIocHJvcGVydGllcywgYmFua0FjY291bnRzKSAtIGx2ckNvbW1lbmNlbWVudCkgLyBsdnJDb21tZW5jZW1lbnQ7XG4gIH1cblxuICBnZXRMdnJHcm93dGgkKFxuICAgIHByb3BlcnRpZXMkOiBPYnNlcnZhYmxlPFByb3BlcnR5Q29sbGVjdGlvbj4sXG4gICAgYmFua0FjY291bnRzJDogT2JzZXJ2YWJsZTxCYW5rQWNjb3VudENvbGxlY3Rpb24+LFxuICAgIGxvYW5zJDogT2JzZXJ2YWJsZTxMb2FuQ29sbGVjdGlvbj5cbiAgKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICBwcm9wZXJ0aWVzJCxcbiAgICAgIGJhbmtBY2NvdW50cyQsXG4gICAgICBsb2FucyRcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbcHJvcGVydGllcywgYmFua0FjY291bnRzLCBsb2Fuc106IFtQcm9wZXJ0eUNvbGxlY3Rpb24sIEJhbmtBY2NvdW50Q29sbGVjdGlvbiwgTG9hbkNvbGxlY3Rpb25dKTogbnVtYmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0THZyR3Jvd3RoKHByb3BlcnRpZXMsIGJhbmtBY2NvdW50cywgbG9hbnMpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEVxdWl0eSBwb3NpdGlvbiA9IE1hcmtldCB2YWx1ZSAtIGN1cnJlbnQgbG9hbiB2YWx1ZVxuICAgKi9cbiAgZ2V0RXF1aXR5UG9zaXRpb24ocHJvcGVydGllczogUHJvcGVydHlDb2xsZWN0aW9uLCBiYW5rQWNjb3VudHM6IEJhbmtBY2NvdW50Q29sbGVjdGlvbik6IG51bWJlciB7XG4gICAgLy8gTWF0aCBhYnMgaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3QgcGVyY2VudGFnZSBjYWxjdWxhdGlvblxuICAgIHJldHVybiBwcm9wZXJ0aWVzLm1hcmtldFZhbHVlIC0gTWF0aC5hYnModGhpcy5nZXRMb2FuVmFsdWUocHJvcGVydGllcywgYmFua0FjY291bnRzKSk7XG4gIH1cblxuICAvKipcbiAgICogUHVyY2hhc2UgRXF1aXR5ID0gUHVyY2hhc2UgcHJpY2UgLSBpbml0aWFsIGxvYW4gdmFsdWVcbiAgICovXG4gIGdldFB1cmNoYXNlRXF1aXR5KHByb3BlcnRpZXM6IFByb3BlcnR5Q29sbGVjdGlvbiwgYmFua0FjY291bnRzOiBCYW5rQWNjb3VudENvbGxlY3Rpb24sIGxvYW5zOiBMb2FuQ29sbGVjdGlvbik6IG51bWJlciB7XG4gICAgLy8gTWF0aCBhYnMgaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3QgcGVyY2VudGFnZSBjYWxjdWxhdGlvblxuICAgIHJldHVybiBwcm9wZXJ0aWVzLnB1cmNoYXNlUHJpY2UgLSBNYXRoLmFicyh0aGlzLmdldExvYW5BbW91bnQocHJvcGVydGllcywgYmFua0FjY291bnRzLCBsb2FucykpO1xuICB9XG5cbiAgZ2V0RXF1aXR5R3Jvd3RoKHByb3BlcnRpZXM6IFByb3BlcnR5Q29sbGVjdGlvbiwgYmFua0FjY291bnRzOiBCYW5rQWNjb3VudENvbGxlY3Rpb24sIGxvYW5zOiBMb2FuQ29sbGVjdGlvbik6IG51bWJlciB7XG4gICAgY29uc3QgcHVyY2hhc2VFcXVpdHk6IG51bWJlciA9IHRoaXMuZ2V0UHVyY2hhc2VFcXVpdHkocHJvcGVydGllcywgYmFua0FjY291bnRzLCBsb2Fucyk7XG4gICAgLy8gY2hlY2sgaWYgcHVyY2hhc2VFcXVpdHkgPSAwIHRvIGF2b2lkIGRpdmlzaW9uIGJ5IHplcm9cbiAgICBpZiAoIXB1cmNoYXNlRXF1aXR5KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRoaXMuZ2V0RXF1aXR5UG9zaXRpb24ocHJvcGVydGllcywgYmFua0FjY291bnRzKSAtIHB1cmNoYXNlRXF1aXR5KSAvIHB1cmNoYXNlRXF1aXR5O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBkaWN0aW9uYXJ5IG9mIGJhZGdlcyBmb3IgZWFjaCBwcm9wZXJ0eSBpbiBjb2xsZWN0aW9uXG4gICAqL1xuICBnZXRCYWRnZXNCeVByb3BlcnR5KHByb3BlcnRpZXM6IFByb3BlcnR5Q29sbGVjdGlvbiwgdHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbkNvbGxlY3Rpb24sIGRlcHJlY2lhdGlvbnM6IERlcHJlY2lhdGlvbkNvbGxlY3Rpb24pOiBEaWN0aW9uYXJ5PEJhZGdlPiB7XG4gICAgY29uc3QgYmFkZ2VzQnlQcm9wZXJ0eSA9IG5ldyBEaWN0aW9uYXJ5KFtdKTtcblxuICAgIHByb3BlcnRpZXMudG9BcnJheSgpLmZvckVhY2goKHByb3BlcnR5OiBQcm9wZXJ0eSkgPT4ge1xuICAgICAgYmFkZ2VzQnlQcm9wZXJ0eS5hZGQocHJvcGVydHkuaWQsIHRoaXMuZ2V0QmFkZ2UocHJvcGVydHksIHByb3BlcnRpZXMsIHRyYW5zYWN0aW9ucywgZGVwcmVjaWF0aW9ucykpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJhZGdlc0J5UHJvcGVydHk7XG4gIH1cblxuICBnZXRDYXNoUG9zaXRpb25Hcm93dGgocHJvcGVydGllczogUHJvcGVydHlDb2xsZWN0aW9uLCB0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uQ29sbGVjdGlvbik6IG51bWJlciB7XG4gICAgY29uc3QgZm9yZWNhc3RlZENhc2hQb3NpdGlvbjogbnVtYmVyID0gcHJvcGVydGllcy5zdW1CeSgnZm9yZWNhc3RlZENhc2hQb3NpdGlvbicpO1xuXG4gICAgLy8gY2hlY2sgaWYgZm9yZWNhc3RlZENhc2hQb3NpdGlvbiA9IDAgdG8gYXZvaWQgZGl2aXNpb24gYnkgemVyb1xuICAgIGlmICghZm9yZWNhc3RlZENhc2hQb3NpdGlvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuICh0cmFuc2FjdGlvbnMuY2FzaFBvc2l0aW9uIC0gZm9yZWNhc3RlZENhc2hQb3NpdGlvbikgLyBmb3JlY2FzdGVkQ2FzaFBvc2l0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBCYWRnZSBmb3Igc2luZ2xlIHByb3BlcnR5IGluIGNvbGxlY3Rpb25cbiAgICovXG4gIHByaXZhdGUgZ2V0QmFkZ2UocHJvcGVydHk6IFByb3BlcnR5LCBwcm9wZXJ0aWVzOiBQcm9wZXJ0eUNvbGxlY3Rpb24sIHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25Db2xsZWN0aW9uLCBkZXByZWNpYXRpb25zOiBEZXByZWNpYXRpb25Db2xsZWN0aW9uKTogQmFkZ2Uge1xuICAgIC8vIGJlc3QgcGVyZm9ybWFuY2UgcHJvcGVydGllcyBjb3VsZCBiZSBvbmx5IGZyb20gYWN0aXZlIHByb3BlcnRpZXMgbGlzdFxuICAgIGNvbnN0IGFjdGl2ZVByb3BlcnRpZXM6IFByb3BlcnR5Q29sbGVjdGlvbiA9IHByb3BlcnRpZXMuZ2V0QWN0aXZlUHJvcGVydGllcygpO1xuICAgIGNvbnN0IGJlc3RQZXJmb3JtYW5jZUdyb3d0aFByb3BlcnR5OiBQcm9wZXJ0eSA9IGFjdGl2ZVByb3BlcnRpZXMuZ2V0QmVzdFBlcmZvcm1hbmNlR3Jvd3RoUHJvcGVydHkoKTtcbiAgICBjb25zdCBiZXN0UGVyZm9ybWFuY2VUYXhQcm9wZXJ0eTogUHJvcGVydHkgPSBhY3RpdmVQcm9wZXJ0aWVzLmdldEJlc3RQZXJmb3JtYW5jZVRheFByb3BlcnR5KFxuICAgICAgdHJhbnNhY3Rpb25zLCBkZXByZWNpYXRpb25zXG4gICAgKTtcblxuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgY2FzZSAhcHJvcGVydHkuaXNBY3RpdmU6XG4gICAgICAgIHJldHVybiBuZXcgQmFkZ2UoJ0luYWN0aXZlJywgQmFkZ2VDb2xvckVudW0uR1JBWSk7XG4gICAgICBjYXNlIHByb3BlcnR5LmlkID09PSBiZXN0UGVyZm9ybWFuY2VUYXhQcm9wZXJ0eS5pZCAmJiBwcm9wZXJ0eS5pZCA9PT0gYmVzdFBlcmZvcm1hbmNlR3Jvd3RoUHJvcGVydHkuaWQ6XG4gICAgICAgIHJldHVybiBuZXcgQmFkZ2UoJ0Jlc3QgcGVyZm9ybWFuY2UgZ3Jvd3RoICYgdGF4JywgQmFkZ2VDb2xvckVudW0uR09MRCk7XG4gICAgICBjYXNlIHByb3BlcnR5LmlkID09PSBiZXN0UGVyZm9ybWFuY2VUYXhQcm9wZXJ0eS5pZDpcbiAgICAgICAgcmV0dXJuIG5ldyBCYWRnZSgnQmVzdCBwZXJmb3JtYW5jZSB0YXgnLCBCYWRnZUNvbG9yRW51bS5HT0xEKTtcbiAgICAgIGNhc2UgcHJvcGVydHkuaWQgPT09IGJlc3RQZXJmb3JtYW5jZUdyb3d0aFByb3BlcnR5LmlkOlxuICAgICAgICByZXR1cm4gbmV3IEJhZGdlKCdCZXN0IHBlcmZvcm1hbmNlIGdyb3d0aCcsIEJhZGdlQ29sb3JFbnVtLkdSRUVOKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBuZXcgQmFkZ2UoJ01vbml0b3JpbmcgcGVyZm9ybWFuY2UnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -65,9 +65,9 @@ export class PropertyTransactionReportService {
|
|
|
65
65
|
}));
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
PropertyTransactionReportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
69
|
-
PropertyTransactionReportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
68
|
+
PropertyTransactionReportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyTransactionReportService, deps: [{ token: i1.PropertyService }, { token: i2.TransactionService }, { token: i3.DepreciationService }, { token: i4.ChartAccountsService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
69
|
+
PropertyTransactionReportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyTransactionReportService, providedIn: 'root' });
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyTransactionReportService, decorators: [{
|
|
71
71
|
type: Injectable,
|
|
72
72
|
args: [{
|
|
73
73
|
providedIn: 'root'
|
|
@@ -46,9 +46,9 @@ export class ToastService {
|
|
|
46
46
|
}));
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
ToastService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
50
|
-
ToastService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
51
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
49
|
+
ToastService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
50
|
+
ToastService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ToastService, providedIn: 'root' });
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ToastService, decorators: [{
|
|
52
52
|
type: Injectable,
|
|
53
53
|
args: [{
|
|
54
54
|
providedIn: 'root'
|
|
@@ -36,9 +36,9 @@ export class TransactionCalculationService {
|
|
|
36
36
|
}));
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
TransactionCalculationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
40
|
-
TransactionCalculationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
39
|
+
TransactionCalculationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TransactionCalculationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
40
|
+
TransactionCalculationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TransactionCalculationService, providedIn: 'root' });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TransactionCalculationService, decorators: [{
|
|
42
42
|
type: Injectable,
|
|
43
43
|
args: [{
|
|
44
44
|
providedIn: 'root'
|
|
@@ -26,9 +26,9 @@ export class UserSwitcherService {
|
|
|
26
26
|
window.location.replace('/firm/dashboard');
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
UserSwitcherService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
30
|
-
UserSwitcherService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
29
|
+
UserSwitcherService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: UserSwitcherService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
30
|
+
UserSwitcherService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: UserSwitcherService, providedIn: 'root' });
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: UserSwitcherService, decorators: [{
|
|
32
32
|
type: Injectable,
|
|
33
33
|
args: [{
|
|
34
34
|
providedIn: 'root'
|
|
@@ -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: "12.2.
|
|
40
|
-
XlsxService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
39
|
+
XlsxService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: XlsxService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
40
|
+
XlsxService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: XlsxService, providedIn: 'root' });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: XlsxService, decorators: [{
|
|
42
42
|
type: Injectable,
|
|
43
43
|
args: [{
|
|
44
44
|
providedIn: 'root'
|
|
@@ -16,14 +16,14 @@ export class TtCoreModule {
|
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
TtCoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
|
20
|
-
TtCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.
|
|
19
|
+
TtCoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TtCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
20
|
+
TtCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TtCoreModule, imports: [CommonModule,
|
|
21
21
|
InterceptorsModule] });
|
|
22
|
-
TtCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.
|
|
22
|
+
TtCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TtCoreModule, imports: [[
|
|
23
23
|
CommonModule,
|
|
24
24
|
InterceptorsModule
|
|
25
25
|
]] });
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TtCoreModule, decorators: [{
|
|
27
27
|
type: NgModule,
|
|
28
28
|
args: [{
|
|
29
29
|
declarations: [],
|