taxtank-core 0.30.134 → 0.30.135

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.
@@ -13,7 +13,7 @@ export class TaxSummary {
13
13
  return [this.work, this.property, this.other, this.sole, this.summary];
14
14
  }
15
15
  getReportItems(sections) {
16
- return new ReportItemCollection([].concat(...this.sections.map((section) => section.items.toArray())));
16
+ return new ReportItemCollection([].concat(...sections.map((section) => section.items.toArray())));
17
17
  }
18
18
  get taxPercent() {
19
19
  // Check if netAmount is not 0 to avoid division by zero
@@ -31,12 +31,27 @@ export class TaxSummary {
31
31
  return this.workNetTotal - Math.abs(taxWithheld);
32
32
  }
33
33
  get income() {
34
- return this.getReportItems([this.work, this.property, this.other]).sumByCategories([
34
+ return this.getReportItems([this.work, this.property, this.sole, this.other]).sumByCategories([
35
35
  ...TAX_RETURN_CATEGORIES.work.income,
36
36
  ...TAX_RETURN_CATEGORIES.property.income,
37
+ ...TAX_RETURN_CATEGORIES.sole.income,
37
38
  ...TAX_RETURN_CATEGORIES.other.income,
38
39
  ]);
39
40
  }
41
+ get expense() {
42
+ return this.getReportItems([this.work, this.property, this.sole, this.other]).sumByCategories([
43
+ ...TAX_RETURN_CATEGORIES.work.expenses,
44
+ ...TAX_RETURN_CATEGORIES.property.expenses,
45
+ ...TAX_RETURN_CATEGORIES.sole.expenses,
46
+ ...TAX_RETURN_CATEGORIES.other.expenses,
47
+ ]);
48
+ }
49
+ get netCash() {
50
+ return this.workNetCash + this.propertyNetCash + this.soleNetCash + this.otherNetCash;
51
+ }
52
+ get netTotal() {
53
+ return this.workNetTotal + this.propertyNetTotal + this.soleNetTotal + this.otherNetTotal;
54
+ }
40
55
  /**
41
56
  * Work Net Total = Income - expenses - interest
42
57
  * https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/217677990/Dashboard+Main
@@ -134,4 +149,4 @@ __decorate([
134
149
  __decorate([
135
150
  Type(() => TaxSummarySection)
136
151
  ], TaxSummary.prototype, "summary", void 0);
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LXN1bW1hcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvbW9kZWxzL3RheC1zdW1tYXJ5L3RheC1zdW1tYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFHaEY7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFrQnJCLElBQUksUUFBUTtRQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQTZCO1FBQzFDLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekcsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLHdEQUF3RDtRQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDM0IsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUFDLGlCQUFpQixDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO0lBQ3hILENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLFdBQVc7UUFDYixNQUFNLFdBQVcsR0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWxKLE9BQU8sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO1lBQ2pGLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLE1BQU07WUFDcEMsR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUN4QyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxNQUFNO1NBQ3RDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLFlBQVk7UUFDZCxNQUFNLE1BQU0sR0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JJLE1BQU0sUUFBUSxHQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekksTUFBTSxRQUFRLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1SSxPQUFPLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksZUFBZTtRQUNqQixNQUFNLE1BQU0sR0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pKLE1BQU0sUUFBUSxHQUFXLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUscUJBQXFCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckosTUFBTSxRQUFRLEdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVySixPQUFPLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksZ0JBQWdCO1FBQ2xCLE1BQU0sWUFBWSxHQUFXLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFN0osT0FBTyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksWUFBWTtRQUNkLE1BQU0sTUFBTSxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEksTUFBTSxRQUFRLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1SSxNQUFNLFdBQVcsR0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxFQUFFLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JKLE1BQU0sY0FBYyxHQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLEVBQUUscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFM0osT0FBTyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksYUFBYTtRQUNmLE1BQU0sTUFBTSxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEksTUFBTSxRQUFRLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1SSxNQUFNLFVBQVUsR0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLFdBQVcsQ0FBQyxFQUFFLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hKLE1BQU0sZUFBZSxHQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLEVBQUUscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUosTUFBTSxlQUFlLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTdKLE9BQU8sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDcEgsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksV0FBVztRQUNiLE1BQU0sWUFBWSxHQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdEcsTUFBTSxJQUFJLEdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RixNQUFNLFdBQVcsR0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRS9JLE9BQU8sSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLEdBQUcsSUFBSSxHQUFHLFdBQVcsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxZQUFZO1FBQ2QsMENBQTBDO1FBQzFDLE1BQU0sTUFBTSxHQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztRQUM1RyxNQUFNLFdBQVcsR0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRS9JLE9BQU8sTUFBTSxHQUFHLFdBQVcsQ0FBQztJQUM5QixDQUFDO0lBRUQsdUJBQXVCLENBQUMsUUFBc0I7UUFDNUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7YUFDbkIsY0FBYyxDQUFDLHlCQUF5QixDQUFDLHdCQUF3QixDQUFDLENBQUMsS0FBSzthQUN4RSxNQUFNLENBQUMsT0FBTyxFQUFFLGNBQWMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQzVELENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxRQUFzQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSzthQUNuQixjQUFjLENBQUMseUJBQXlCLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxLQUFLO2FBQ3ZFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsY0FBYyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDNUQsQ0FBQztDQUNGO0FBbkpDO0lBREMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO3dDQUNOO0FBR3hCO0lBREMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDOzRDQUNGO0FBRzVCO0lBREMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO3lDQUNMO0FBR3pCO0lBREMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO3dDQUNOO0FBR3hCO0lBREMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDOzJDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGF4U3VtbWFyeVNlY3Rpb24gfSBmcm9tICcuL3RheC1zdW1tYXJ5LXNlY3Rpb24nO1xuaW1wb3J0IHsgVHlwZSB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFJlcG9ydEl0ZW1Db2xsZWN0aW9uLCBUQVhfUkVUVVJOX0NBVEVHT1JJRVMgfSBmcm9tICcuLi8uLi9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBUYXhSZXR1cm5DYXRlZ29yeUxpc3RFbnVtIH0gZnJvbSAnLi4vLi4vZGIvRW51bXMnO1xuaW1wb3J0IHsgVGF4U3VtbWFyeVNlY3Rpb25FbnVtIH0gZnJvbSAnLi4vLi4vZGIvRW51bXMvdGF4LXN1bW1hcnktc2VjdGlvbi5lbnVtJztcbmltcG9ydCB7IFNvbGVCdXNpbmVzcyB9IGZyb20gJy4uL3NvbGUnO1xuXG4vKipcbiAqIEBUb2RvIHJlZmFjdG9yIHdpdGggYmFzZSBtb2RlbCB3aGVuIGl0IHdpbGwgYmUgcHJvdmlkZWRcbiAqIFRheCBzdW1tYXJ5IHJlcG9ydCBzdHJ1Y3R1cmVcbiAqL1xuZXhwb3J0IGNsYXNzIFRheFN1bW1hcnkge1xuICBAVHlwZSgoKSA9PiBUYXhTdW1tYXJ5U2VjdGlvbilcbiAgd29yazogVGF4U3VtbWFyeVNlY3Rpb247XG5cbiAgQFR5cGUoKCkgPT4gVGF4U3VtbWFyeVNlY3Rpb24pXG4gIHByb3BlcnR5OiBUYXhTdW1tYXJ5U2VjdGlvbjtcblxuICBAVHlwZSgoKSA9PiBUYXhTdW1tYXJ5U2VjdGlvbilcbiAgb3RoZXI6IFRheFN1bW1hcnlTZWN0aW9uO1xuXG4gIEBUeXBlKCgpID0+IFRheFN1bW1hcnlTZWN0aW9uKVxuICBzb2xlOiBUYXhTdW1tYXJ5U2VjdGlvbjtcblxuICBAVHlwZSgoKSA9PiBUYXhTdW1tYXJ5U2VjdGlvbilcbiAgc3VtbWFyeTogVGF4U3VtbWFyeVNlY3Rpb247XG5cbiAgcHJvamVjdGVkVGF4UG9zaXRpb246IG51bWJlcjtcblxuICBnZXQgc2VjdGlvbnMoKTogVGF4U3VtbWFyeVNlY3Rpb25bXSB7XG4gICAgcmV0dXJuIFt0aGlzLndvcmssIHRoaXMucHJvcGVydHksIHRoaXMub3RoZXIsIHRoaXMuc29sZSwgdGhpcy5zdW1tYXJ5XTtcbiAgfVxuXG4gIGdldFJlcG9ydEl0ZW1zKHNlY3Rpb25zOiBUYXhTdW1tYXJ5U2VjdGlvbltdKTogUmVwb3J0SXRlbUNvbGxlY3Rpb24ge1xuICAgIHJldHVybiBuZXcgUmVwb3J0SXRlbUNvbGxlY3Rpb24oW10uY29uY2F0KC4uLnRoaXMuc2VjdGlvbnMubWFwKChzZWN0aW9uKSA9PiBzZWN0aW9uLml0ZW1zLnRvQXJyYXkoKSkpKTtcbiAgfVxuXG4gIGdldCB0YXhQZXJjZW50KCk6IG51bWJlciB7XG4gICAgLy8gQ2hlY2sgaWYgbmV0QW1vdW50IGlzIG5vdCAwIHRvIGF2b2lkIGRpdmlzaW9uIGJ5IHplcm9cbiAgICBpZiAoIXRoaXMuc3VtbWFyeS5uZXRBbW91bnQpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN1bW1hcnkuaXRlbXMuZmluZEJ5Q2F0ZWdvcnkoVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5HUk9TU19UQVhfUEFZQUJMRSkuYW1vdW50IC8gdGhpcy5zdW1tYXJ5Lm5ldEFtb3VudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXb3JrIE5ldCBDYXNoID0gSW5jb21lIC0gdGF4IHdpdGhoZWxkIC0gZXhwZW5zZXMgLSBpbnRlcmVzdFxuICAgKiBodHRwczovL3RheHRhbmsuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9UQVhUQU5LL3BhZ2VzLzIxNzY3Nzk5MC9EYXNoYm9hcmQrTWFpblxuICAgKi9cbiAgZ2V0IHdvcmtOZXRDYXNoKCk6IG51bWJlciB7XG4gICAgY29uc3QgdGF4V2l0aGhlbGQ6IG51bWJlciA9IHRoaXMuc3VtbWFyeS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy53b3JrLnRheFdpdGhoZWxkLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uV09SS19UQU5LKTtcblxuICAgIHJldHVybiB0aGlzLndvcmtOZXRUb3RhbCAtIE1hdGguYWJzKHRheFdpdGhoZWxkKTtcbiAgfVxuXG4gIGdldCBpbmNvbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXBvcnRJdGVtcyhbdGhpcy53b3JrLCB0aGlzLnByb3BlcnR5LCB0aGlzLm90aGVyXSkuc3VtQnlDYXRlZ29yaWVzKFtcbiAgICAgIC4uLlRBWF9SRVRVUk5fQ0FURUdPUklFUy53b3JrLmluY29tZSxcbiAgICAgIC4uLlRBWF9SRVRVUk5fQ0FURUdPUklFUy5wcm9wZXJ0eS5pbmNvbWUsXG4gICAgICAuLi5UQVhfUkVUVVJOX0NBVEVHT1JJRVMub3RoZXIuaW5jb21lLFxuICAgIF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFdvcmsgTmV0IFRvdGFsID0gSW5jb21lIC0gZXhwZW5zZXMgLSBpbnRlcmVzdFxuICAgKiBodHRwczovL3RheHRhbmsuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9UQVhUQU5LL3BhZ2VzLzIxNzY3Nzk5MC9EYXNoYm9hcmQrTWFpblxuICAgKi9cbiAgZ2V0IHdvcmtOZXRUb3RhbCgpOiBudW1iZXIge1xuICAgIGNvbnN0IGluY29tZTogbnVtYmVyID0gdGhpcy53b3JrLml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oVEFYX1JFVFVSTl9DQVRFR09SSUVTLndvcmsuaW5jb21lLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uV09SS19UQU5LKTtcbiAgICBjb25zdCBleHBlbnNlczogbnVtYmVyID0gdGhpcy53b3JrLml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oVEFYX1JFVFVSTl9DQVRFR09SSUVTLndvcmsuZXhwZW5zZXMsIFRheFN1bW1hcnlTZWN0aW9uRW51bS5XT1JLX1RBTkspO1xuICAgIGNvbnN0IGludGVyZXN0OiBudW1iZXIgPSB0aGlzLnN1bW1hcnkuaXRlbXMuc3VtQnlDYXRlZ29yaWVzQW5kU2VjdGlvbihUQVhfUkVUVVJOX0NBVEVHT1JJRVMud29yay5pbnRlcmVzdCwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLldPUktfVEFOSyk7XG5cbiAgICByZXR1cm4gaW5jb21lIC0gTWF0aC5hYnMoZXhwZW5zZXMpIC0gTWF0aC5hYnMoaW50ZXJlc3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3BlcnR5IE5ldCBDYXNoIChDYXNoIFBvc2l0aW9uKSA9IFJlbnRhbCBJbmNvbWUgLSBleHBlbnNlcyAtIGludGVyZXN0XG4gICAqIGh0dHBzOi8vdGF4dGFuay5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1RBWFRBTksvcGFnZXMvMjE3Njc3OTkwL0Rhc2hib2FyZCtNYWluXG4gICAqL1xuICBnZXQgcHJvcGVydHlOZXRDYXNoKCk6IG51bWJlciB7XG4gICAgY29uc3QgaW5jb21lOiBudW1iZXIgPSB0aGlzLnByb3BlcnR5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oVEFYX1JFVFVSTl9DQVRFR09SSUVTLnByb3BlcnR5LmluY29tZSwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLlBST1BFUlRZX1RBTkspO1xuICAgIGNvbnN0IGV4cGVuc2VzOiBudW1iZXIgPSB0aGlzLnByb3BlcnR5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oVEFYX1JFVFVSTl9DQVRFR09SSUVTLnByb3BlcnR5LmV4cGVuc2VzLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uUFJPUEVSVFlfVEFOSyk7XG4gICAgY29uc3QgaW50ZXJlc3Q6IG51bWJlciA9IHRoaXMucHJvcGVydHkuaXRlbXMuc3VtQnlDYXRlZ29yaWVzQW5kU2VjdGlvbihUQVhfUkVUVVJOX0NBVEVHT1JJRVMucHJvcGVydHkuaW50ZXJlc3QsIFRheFN1bW1hcnlTZWN0aW9uRW51bS5QUk9QRVJUWV9UQU5LKTtcblxuICAgIHJldHVybiBpbmNvbWUgLSBNYXRoLmFicyhleHBlbnNlcykgLSBNYXRoLmFicyhpbnRlcmVzdCk7XG4gIH1cblxuICAvKipcbiAgICogUHJvcGVydHkgTmV0IFRvdGFsIChUYXggUG9zaXRpb24pID0gUmVudGFsIEluY29tZSAtIGV4cGVuc2VzIC0gaW50ZXJlc3QgLSBkZXByZWNpYXRpb25cbiAgICogaHR0cHM6Ly90YXh0YW5rLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvVEFYVEFOSy9wYWdlcy8yMTc2Nzc5OTAvRGFzaGJvYXJkK01haW5cbiAgICovXG4gIGdldCBwcm9wZXJ0eU5ldFRvdGFsKCk6IG51bWJlciB7XG4gICAgY29uc3QgZGVwcmVjaWF0aW9uOiBudW1iZXIgPSB0aGlzLnByb3BlcnR5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oVEFYX1JFVFVSTl9DQVRFR09SSUVTLnByb3BlcnR5LmRlcHJlY2lhdGlvbiwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLlBST1BFUlRZX1RBTkspO1xuXG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlOZXRDYXNoIC0gTWF0aC5hYnMoZGVwcmVjaWF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdGhlciBOZXQgQ2FzaCA9IGdyb3NzIGluY29tZSDigJMgZXhwZW5zZXMg4oCTIHRheCB3aXRoaGVsZCAtIHRheCBpbnN0YWxtZW50c1xuICAgKiBodHRwczovL3RheHRhbmsuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9UQVhUQU5LL3BhZ2VzLzIxNzY3Nzk5MC9EYXNoYm9hcmQrTWFpblxuICAgKi9cbiAgZ2V0IG90aGVyTmV0Q2FzaCgpOiBudW1iZXIge1xuICAgIGNvbnN0IGluY29tZTogbnVtYmVyID0gdGhpcy5vdGhlci5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5vdGhlci5pbmNvbWUsIFRheFN1bW1hcnlTZWN0aW9uRW51bS5PVEhFUl9UQU5LKTtcbiAgICBjb25zdCBleHBlbnNlczogbnVtYmVyID0gdGhpcy5vdGhlci5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5vdGhlci5leHBlbnNlcywgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLk9USEVSX1RBTkspO1xuICAgIGNvbnN0IHRheFdpdGhoZWxkOiBudW1iZXIgPSB0aGlzLnN1bW1hcnkuaXRlbXMuc3VtQnlDYXRlZ29yaWVzQW5kU2VjdGlvbihbVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5UQVhfV0lUSEhFTERdLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uT1RIRVJfVEFOSyk7XG4gICAgY29uc3QgdGF4SW5zdGFsbWVudHM6IG51bWJlciA9IHRoaXMuc3VtbWFyeS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFtUYXhSZXR1cm5DYXRlZ29yeUxpc3RFbnVtLlRBWF9JTlNUQUxNRU5UU10sIFRheFN1bW1hcnlTZWN0aW9uRW51bS5PVEhFUl9UQU5LKTtcblxuICAgIHJldHVybiBpbmNvbWUgLSBNYXRoLmFicyhleHBlbnNlcykgLSBNYXRoLmFicyh0YXhXaXRoaGVsZCkgLSBNYXRoLmFicyh0YXhJbnN0YWxtZW50cyk7XG4gIH1cblxuICAvKipcbiAgICogT3RoZXIgTmV0IFRvdGFsID0gR3Jvc3MgaW5jb21lIC0gZXhwZW5zZXMgKyB0YXggb2Zmc2V0cyArIHRheCBpbnN0YWxtZW50cyArIGZyYW5raW5nIGNyZWRpdHNcbiAgICogaHR0cHM6Ly90YXh0YW5rLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvVEFYVEFOSy9wYWdlcy8yMTc2Nzc5OTAvRGFzaGJvYXJkK01haW5cbiAgICovXG4gIGdldCBvdGhlck5ldFRvdGFsKCk6IG51bWJlciB7XG4gICAgY29uc3QgaW5jb21lOiBudW1iZXIgPSB0aGlzLm90aGVyLml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oVEFYX1JFVFVSTl9DQVRFR09SSUVTLm90aGVyLmluY29tZSwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLk9USEVSX1RBTkspO1xuICAgIGNvbnN0IGV4cGVuc2VzOiBudW1iZXIgPSB0aGlzLm90aGVyLml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oVEFYX1JFVFVSTl9DQVRFR09SSUVTLm90aGVyLmV4cGVuc2VzLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uT1RIRVJfVEFOSyk7XG4gICAgY29uc3QgdGF4T2Zmc2V0czogbnVtYmVyID0gdGhpcy5zdW1tYXJ5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oW1RheFJldHVybkNhdGVnb3J5TGlzdEVudW0uVEFYX09GRlNFVFNdLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uU1VNTUFSWSk7XG4gICAgY29uc3QgdGF4SW5zdGFsbG1lbnRzOiBudW1iZXIgPSB0aGlzLnN1bW1hcnkuaXRlbXMuc3VtQnlDYXRlZ29yaWVzQW5kU2VjdGlvbihbVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5UQVhfSU5TVEFMTUVOVFNdLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uT1RIRVJfVEFOSyk7XG4gICAgY29uc3QgZnJhbmtpbmdDcmVkaXRzOiBudW1iZXIgPSB0aGlzLnN1bW1hcnkuaXRlbXMuc3VtQnlDYXRlZ29yaWVzQW5kU2VjdGlvbihbVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5GUkFOS0lOR19DUkVESVRTXSwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLk9USEVSX1RBTkspO1xuXG4gICAgcmV0dXJuIGluY29tZSAtIE1hdGguYWJzKGV4cGVuc2VzKSArIE1hdGguYWJzKHRheE9mZnNldHMpICsgTWF0aC5hYnModGF4SW5zdGFsbG1lbnRzKSArIE1hdGguYWJzKGZyYW5raW5nQ3JlZGl0cyk7XG4gIH1cblxuICAvKipcbiAgICogU29sZSBOZXQgQ2FzaCA9IGdyb3NzIGluY29tZSDigJMgZXhwZW5zZXNcbiAgICogaHR0cHM6Ly90YXh0YW5rLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvVEFYVEFOSy9wYWdlcy8yMTc2Nzc5OTAvRGFzaGJvYXJkK01haW5cbiAgICovXG4gIGdldCBzb2xlTmV0Q2FzaCgpOiBudW1iZXIge1xuICAgIGNvbnN0IGRlcHJlY2lhdGlvbjogbnVtYmVyID0gdGhpcy5zb2xlLml0ZW1zLnN1bUJ5Q2F0ZWdvcmllcyhUQVhfUkVUVVJOX0NBVEVHT1JJRVMuc29sZS5kZXByZWNpYXRpb24pO1xuICAgIGNvbnN0IGxvc3M6IG51bWJlciA9IHRoaXMuc29sZS5pdGVtcy5zdW1CeUNhdGVnb3JpZXMoVEFYX1JFVFVSTl9DQVRFR09SSUVTLnNvbGUubG9zcyk7XG4gICAgY29uc3QgbG9zc0N1cnJlbnQ6IG51bWJlciA9IHRoaXMuc29sZS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5zb2xlLmxvc3NDdXJyZW50LCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uU09MRV9UQU5LKTtcblxuICAgIHJldHVybiB0aGlzLnNvbGVOZXRUb3RhbCAtIGRlcHJlY2lhdGlvbiAtIGxvc3MgKyBsb3NzQ3VycmVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTb2xlIE5ldCBUb3RhbCA9IEdyb3NzIGluY29tZSAtIGV4cGVuc2VzXG4gICAqIGh0dHBzOi8vdGF4dGFuay5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1RBWFRBTksvcGFnZXMvMjE3Njc3OTkwL0Rhc2hib2FyZCtNYWluXG4gICAqL1xuICBnZXQgc29sZU5ldFRvdGFsKCk6IG51bWJlciB7XG4gICAgLy8gaW5jb21lICsgZXhwZW5zZXMgKyBkZXByZWNpYXRpb24gKyBsb3NzXG4gICAgY29uc3QgcHJvZml0OiBudW1iZXIgPSB0aGlzLnNvbGUuaXRlbXMuc3VtQnlDYXRlZ29yaWVzKFtUYXhSZXR1cm5DYXRlZ29yeUxpc3RFbnVtLkJVU0lORVNTX0lOQ09NRV9PUl9MT1NTXSk7XG4gICAgY29uc3QgbG9zc0N1cnJlbnQ6IG51bWJlciA9IHRoaXMuc29sZS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5zb2xlLmxvc3NDdXJyZW50LCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uU09MRV9UQU5LKTtcblxuICAgIHJldHVybiBwcm9maXQgLSBsb3NzQ3VycmVudDtcbiAgfVxuXG4gIGdldERlZmVycmVkQnVzaW5lc3NMb3NzKGJ1c2luZXNzOiBTb2xlQnVzaW5lc3MpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNvbGUuaXRlbXNcbiAgICAgIC5maW5kQnlDYXRlZ29yeShUYXhSZXR1cm5DYXRlZ29yeUxpc3RFbnVtLkRFRkVSUkVEX0JVU0lORVNTX0xPU1NFUykuaXRlbXNcbiAgICAgIC5maW5kQnkoJ3RpdGxlJywgYEl0ZW0gMTVjIC0gJHtidXNpbmVzcy5uYW1lfWApPy5hbW91bnQ7XG4gIH1cblxuICBnZXRCdXNpbmVzc0Nsb3NlQmFsYW5jZShidXNpbmVzczogU29sZUJ1c2luZXNzKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zb2xlLml0ZW1zXG4gICAgICAuZmluZEJ5Q2F0ZWdvcnkoVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5CVVNJTkVTU19JTkNPTUVfT1JfTE9TUykuaXRlbXNcbiAgICAgIC5maW5kQnkoJ3RpdGxlJywgYEl0ZW0gMTVjIC0gJHtidXNpbmVzcy5uYW1lfWApPy5hbW91bnQ7XG4gIH1cbn1cbiJdfQ==
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LXN1bW1hcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvbW9kZWxzL3RheC1zdW1tYXJ5L3RheC1zdW1tYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFHaEY7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFrQnJCLElBQUksUUFBUTtRQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQTZCO1FBQzFDLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUMzQixPQUFPLENBQUMsQ0FBQztTQUNWO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FB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QUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUvSSxPQUFPLE1BQU0sR0FBRyxXQUFXLENBQUM7SUFDOUIsQ0FBQztJQUVELHVCQUF1QixDQUFDLFFBQXNCO1FBQzVDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO2FBQ25CLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLEtBQUs7YUFDeEUsTUFBTSxDQUFDLE9BQU8sRUFBRSxjQUFjLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUM1RCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsUUFBc0I7UUFDNUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7YUFDbkIsY0FBYyxDQUFDLHlCQUF5QixDQUFDLHVCQUF1QixDQUFDLENBQUMsS0FBSzthQUN2RSxNQUFNLENBQUMsT0FBTyxFQUFFLGNBQWMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQzVELENBQUM7Q0FDRjtBQXJLQztJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQzt3Q0FDTjtBQUd4QjtJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQzs0Q0FDRjtBQUc1QjtJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQzt5Q0FDTDtBQUd6QjtJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQzt3Q0FDTjtBQUd4QjtJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQzsyQ0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRheFN1bW1hcnlTZWN0aW9uIH0gZnJvbSAnLi90YXgtc3VtbWFyeS1zZWN0aW9uJztcbmltcG9ydCB7IFR5cGUgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBSZXBvcnRJdGVtQ29sbGVjdGlvbiwgVEFYX1JFVFVSTl9DQVRFR09SSUVTIH0gZnJvbSAnLi4vLi4vY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bSB9IGZyb20gJy4uLy4uL2RiL0VudW1zJztcbmltcG9ydCB7IFRheFN1bW1hcnlTZWN0aW9uRW51bSB9IGZyb20gJy4uLy4uL2RiL0VudW1zL3RheC1zdW1tYXJ5LXNlY3Rpb24uZW51bSc7XG5pbXBvcnQgeyBTb2xlQnVzaW5lc3MgfSBmcm9tICcuLi9zb2xlJztcblxuLyoqXG4gKiBAVG9kbyByZWZhY3RvciB3aXRoIGJhc2UgbW9kZWwgd2hlbiBpdCB3aWxsIGJlIHByb3ZpZGVkXG4gKiBUYXggc3VtbWFyeSByZXBvcnQgc3RydWN0dXJlXG4gKi9cbmV4cG9ydCBjbGFzcyBUYXhTdW1tYXJ5IHtcbiAgQFR5cGUoKCkgPT4gVGF4U3VtbWFyeVNlY3Rpb24pXG4gIHdvcms6IFRheFN1bW1hcnlTZWN0aW9uO1xuXG4gIEBUeXBlKCgpID0+IFRheFN1bW1hcnlTZWN0aW9uKVxuICBwcm9wZXJ0eTogVGF4U3VtbWFyeVNlY3Rpb247XG5cbiAgQFR5cGUoKCkgPT4gVGF4U3VtbWFyeVNlY3Rpb24pXG4gIG90aGVyOiBUYXhTdW1tYXJ5U2VjdGlvbjtcblxuICBAVHlwZSgoKSA9PiBUYXhTdW1tYXJ5U2VjdGlvbilcbiAgc29sZTogVGF4U3VtbWFyeVNlY3Rpb247XG5cbiAgQFR5cGUoKCkgPT4gVGF4U3VtbWFyeVNlY3Rpb24pXG4gIHN1bW1hcnk6IFRheFN1bW1hcnlTZWN0aW9uO1xuXG4gIHByb2plY3RlZFRheFBvc2l0aW9uOiBudW1iZXI7XG5cbiAgZ2V0IHNlY3Rpb25zKCk6IFRheFN1bW1hcnlTZWN0aW9uW10ge1xuICAgIHJldHVybiBbdGhpcy53b3JrLCB0aGlzLnByb3BlcnR5LCB0aGlzLm90aGVyLCB0aGlzLnNvbGUsIHRoaXMuc3VtbWFyeV07XG4gIH1cblxuICBnZXRSZXBvcnRJdGVtcyhzZWN0aW9uczogVGF4U3VtbWFyeVNlY3Rpb25bXSk6IFJlcG9ydEl0ZW1Db2xsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IFJlcG9ydEl0ZW1Db2xsZWN0aW9uKFtdLmNvbmNhdCguLi5zZWN0aW9ucy5tYXAoKHNlY3Rpb24pID0+IHNlY3Rpb24uaXRlbXMudG9BcnJheSgpKSkpO1xuICB9XG5cbiAgZ2V0IHRheFBlcmNlbnQoKTogbnVtYmVyIHtcbiAgICAvLyBDaGVjayBpZiBuZXRBbW91bnQgaXMgbm90IDAgdG8gYXZvaWQgZGl2aXNpb24gYnkgemVyb1xuICAgIGlmICghdGhpcy5zdW1tYXJ5Lm5ldEFtb3VudCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3VtbWFyeS5pdGVtcy5maW5kQnlDYXRlZ29yeShUYXhSZXR1cm5DYXRlZ29yeUxpc3RFbnVtLkdST1NTX1RBWF9QQVlBQkxFKS5hbW91bnQgLyB0aGlzLnN1bW1hcnkubmV0QW1vdW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFdvcmsgTmV0IENhc2ggPSBJbmNvbWUgLSB0YXggd2l0aGhlbGQgLSBleHBlbnNlcyAtIGludGVyZXN0XG4gICAqIGh0dHBzOi8vdGF4dGFuay5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1RBWFRBTksvcGFnZXMvMjE3Njc3OTkwL0Rhc2hib2FyZCtNYWluXG4gICAqL1xuICBnZXQgd29ya05ldENhc2goKTogbnVtYmVyIHtcbiAgICBjb25zdCB0YXhXaXRoaGVsZDogbnVtYmVyID0gdGhpcy5zdW1tYXJ5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oVEFYX1JFVFVSTl9DQVRFR09SSUVTLndvcmsudGF4V2l0aGhlbGQsIFRheFN1bW1hcnlTZWN0aW9uRW51bS5XT1JLX1RBTkspO1xuXG4gICAgcmV0dXJuIHRoaXMud29ya05ldFRvdGFsIC0gTWF0aC5hYnModGF4V2l0aGhlbGQpO1xuICB9XG5cbiAgZ2V0IGluY29tZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldFJlcG9ydEl0ZW1zKFt0aGlzLndvcmssIHRoaXMucHJvcGVydHksIHRoaXMuc29sZSwgdGhpcy5vdGhlcl0pLnN1bUJ5Q2F0ZWdvcmllcyhbXG4gICAgICAuLi5UQVhfUkVUVVJOX0NBVEVHT1JJRVMud29yay5pbmNvbWUsXG4gICAgICAuLi5UQVhfUkVUVVJOX0NBVEVHT1JJRVMucHJvcGVydHkuaW5jb21lLFxuICAgICAgLi4uVEFYX1JFVFVSTl9DQVRFR09SSUVTLnNvbGUuaW5jb21lLFxuICAgICAgLi4uVEFYX1JFVFVSTl9DQVRFR09SSUVTLm90aGVyLmluY29tZSxcbiAgICBdKTtcbiAgfVxuXG4gIGdldCBleHBlbnNlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVwb3J0SXRlbXMoW3RoaXMud29yaywgdGhpcy5wcm9wZXJ0eSwgdGhpcy5zb2xlLCB0aGlzLm90aGVyXSkuc3VtQnlDYXRlZ29yaWVzKFtcbiAgICAgIC4uLlRBWF9SRVRVUk5fQ0FURUdPUklFUy53b3JrLmV4cGVuc2VzLFxuICAgICAgLi4uVEFYX1JFVFVSTl9DQVRFR09SSUVTLnByb3BlcnR5LmV4cGVuc2VzLFxuICAgICAgLi4uVEFYX1JFVFVSTl9DQVRFR09SSUVTLnNvbGUuZXhwZW5zZXMsXG4gICAgICAuLi5UQVhfUkVUVVJOX0NBVEVHT1JJRVMub3RoZXIuZXhwZW5zZXMsXG4gICAgXSk7XG4gIH1cblxuICBnZXQgbmV0Q2FzaCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLndvcmtOZXRDYXNoICsgdGhpcy5wcm9wZXJ0eU5ldENhc2ggKyB0aGlzLnNvbGVOZXRDYXNoICsgdGhpcy5vdGhlck5ldENhc2g7XG4gIH1cblxuICBnZXQgbmV0VG90YWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy53b3JrTmV0VG90YWwgKyB0aGlzLnByb3BlcnR5TmV0VG90YWwgKyB0aGlzLnNvbGVOZXRUb3RhbCArIHRoaXMub3RoZXJOZXRUb3RhbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXb3JrIE5ldCBUb3RhbCA9IEluY29tZSAtIGV4cGVuc2VzIC0gaW50ZXJlc3RcbiAgICogaHR0cHM6Ly90YXh0YW5rLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvVEFYVEFOSy9wYWdlcy8yMTc2Nzc5OTAvRGFzaGJvYXJkK01haW5cbiAgICovXG4gIGdldCB3b3JrTmV0VG90YWwoKTogbnVtYmVyIHtcbiAgICBjb25zdCBpbmNvbWU6IG51bWJlciA9IHRoaXMud29yay5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy53b3JrLmluY29tZSwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLldPUktfVEFOSyk7XG4gICAgY29uc3QgZXhwZW5zZXM6IG51bWJlciA9IHRoaXMud29yay5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy53b3JrLmV4cGVuc2VzLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uV09SS19UQU5LKTtcbiAgICBjb25zdCBpbnRlcmVzdDogbnVtYmVyID0gdGhpcy5zdW1tYXJ5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oVEFYX1JFVFVSTl9DQVRFR09SSUVTLndvcmsuaW50ZXJlc3QsIFRheFN1bW1hcnlTZWN0aW9uRW51bS5XT1JLX1RBTkspO1xuXG4gICAgcmV0dXJuIGluY29tZSAtIE1hdGguYWJzKGV4cGVuc2VzKSAtIE1hdGguYWJzKGludGVyZXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9wZXJ0eSBOZXQgQ2FzaCAoQ2FzaCBQb3NpdGlvbikgPSBSZW50YWwgSW5jb21lIC0gZXhwZW5zZXMgLSBpbnRlcmVzdFxuICAgKiBodHRwczovL3RheHRhbmsuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9UQVhUQU5LL3BhZ2VzLzIxNzY3Nzk5MC9EYXNoYm9hcmQrTWFpblxuICAgKi9cbiAgZ2V0IHByb3BlcnR5TmV0Q2FzaCgpOiBudW1iZXIge1xuICAgIGNvbnN0IGluY29tZTogbnVtYmVyID0gdGhpcy5wcm9wZXJ0eS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5wcm9wZXJ0eS5pbmNvbWUsIFRheFN1bW1hcnlTZWN0aW9uRW51bS5QUk9QRVJUWV9UQU5LKTtcbiAgICBjb25zdCBleHBlbnNlczogbnVtYmVyID0gdGhpcy5wcm9wZXJ0eS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5wcm9wZXJ0eS5leHBlbnNlcywgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLlBST1BFUlRZX1RBTkspO1xuICAgIGNvbnN0IGludGVyZXN0OiBudW1iZXIgPSB0aGlzLnByb3BlcnR5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oVEFYX1JFVFVSTl9DQVRFR09SSUVTLnByb3BlcnR5LmludGVyZXN0LCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uUFJPUEVSVFlfVEFOSyk7XG5cbiAgICByZXR1cm4gaW5jb21lIC0gTWF0aC5hYnMoZXhwZW5zZXMpIC0gTWF0aC5hYnMoaW50ZXJlc3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3BlcnR5IE5ldCBUb3RhbCAoVGF4IFBvc2l0aW9uKSA9IFJlbnRhbCBJbmNvbWUgLSBleHBlbnNlcyAtIGludGVyZXN0IC0gZGVwcmVjaWF0aW9uXG4gICAqIGh0dHBzOi8vdGF4dGFuay5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1RBWFRBTksvcGFnZXMvMjE3Njc3OTkwL0Rhc2hib2FyZCtNYWluXG4gICAqL1xuICBnZXQgcHJvcGVydHlOZXRUb3RhbCgpOiBudW1iZXIge1xuICAgIGNvbnN0IGRlcHJlY2lhdGlvbjogbnVtYmVyID0gdGhpcy5wcm9wZXJ0eS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5wcm9wZXJ0eS5kZXByZWNpYXRpb24sIFRheFN1bW1hcnlTZWN0aW9uRW51bS5QUk9QRVJUWV9UQU5LKTtcblxuICAgIHJldHVybiB0aGlzLnByb3BlcnR5TmV0Q2FzaCAtIE1hdGguYWJzKGRlcHJlY2lhdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogT3RoZXIgTmV0IENhc2ggPSBncm9zcyBpbmNvbWUg4oCTIGV4cGVuc2VzIOKAkyB0YXggd2l0aGhlbGQgLSB0YXggaW5zdGFsbWVudHNcbiAgICogaHR0cHM6Ly90YXh0YW5rLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvVEFYVEFOSy9wYWdlcy8yMTc2Nzc5OTAvRGFzaGJvYXJkK01haW5cbiAgICovXG4gIGdldCBvdGhlck5ldENhc2goKTogbnVtYmVyIHtcbiAgICBjb25zdCBpbmNvbWU6IG51bWJlciA9IHRoaXMub3RoZXIuaXRlbXMuc3VtQnlDYXRlZ29yaWVzQW5kU2VjdGlvbihUQVhfUkVUVVJOX0NBVEVHT1JJRVMub3RoZXIuaW5jb21lLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uT1RIRVJfVEFOSyk7XG4gICAgY29uc3QgZXhwZW5zZXM6IG51bWJlciA9IHRoaXMub3RoZXIuaXRlbXMuc3VtQnlDYXRlZ29yaWVzQW5kU2VjdGlvbihUQVhfUkVUVVJOX0NBVEVHT1JJRVMub3RoZXIuZXhwZW5zZXMsIFRheFN1bW1hcnlTZWN0aW9uRW51bS5PVEhFUl9UQU5LKTtcbiAgICBjb25zdCB0YXhXaXRoaGVsZDogbnVtYmVyID0gdGhpcy5zdW1tYXJ5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oW1RheFJldHVybkNhdGVnb3J5TGlzdEVudW0uVEFYX1dJVEhIRUxEXSwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLk9USEVSX1RBTkspO1xuICAgIGNvbnN0IHRheEluc3RhbG1lbnRzOiBudW1iZXIgPSB0aGlzLnN1bW1hcnkuaXRlbXMuc3VtQnlDYXRlZ29yaWVzQW5kU2VjdGlvbihbVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5UQVhfSU5TVEFMTUVOVFNdLCBUYXhTdW1tYXJ5U2VjdGlvbkVudW0uT1RIRVJfVEFOSyk7XG5cbiAgICByZXR1cm4gaW5jb21lIC0gTWF0aC5hYnMoZXhwZW5zZXMpIC0gTWF0aC5hYnModGF4V2l0aGhlbGQpIC0gTWF0aC5hYnModGF4SW5zdGFsbWVudHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE90aGVyIE5ldCBUb3RhbCA9IEdyb3NzIGluY29tZSAtIGV4cGVuc2VzICsgdGF4IG9mZnNldHMgKyB0YXggaW5zdGFsbWVudHMgKyBmcmFua2luZyBjcmVkaXRzXG4gICAqIGh0dHBzOi8vdGF4dGFuay5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1RBWFRBTksvcGFnZXMvMjE3Njc3OTkwL0Rhc2hib2FyZCtNYWluXG4gICAqL1xuICBnZXQgb3RoZXJOZXRUb3RhbCgpOiBudW1iZXIge1xuICAgIGNvbnN0IGluY29tZTogbnVtYmVyID0gdGhpcy5vdGhlci5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5vdGhlci5pbmNvbWUsIFRheFN1bW1hcnlTZWN0aW9uRW51bS5PVEhFUl9UQU5LKTtcbiAgICBjb25zdCBleHBlbnNlczogbnVtYmVyID0gdGhpcy5vdGhlci5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5vdGhlci5leHBlbnNlcywgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLk9USEVSX1RBTkspO1xuICAgIGNvbnN0IHRheE9mZnNldHM6IG51bWJlciA9IHRoaXMuc3VtbWFyeS5pdGVtcy5zdW1CeUNhdGVnb3JpZXNBbmRTZWN0aW9uKFtUYXhSZXR1cm5DYXRlZ29yeUxpc3RFbnVtLlRBWF9PRkZTRVRTXSwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLlNVTU1BUlkpO1xuICAgIGNvbnN0IHRheEluc3RhbGxtZW50czogbnVtYmVyID0gdGhpcy5zdW1tYXJ5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oW1RheFJldHVybkNhdGVnb3J5TGlzdEVudW0uVEFYX0lOU1RBTE1FTlRTXSwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLk9USEVSX1RBTkspO1xuICAgIGNvbnN0IGZyYW5raW5nQ3JlZGl0czogbnVtYmVyID0gdGhpcy5zdW1tYXJ5Lml0ZW1zLnN1bUJ5Q2F0ZWdvcmllc0FuZFNlY3Rpb24oW1RheFJldHVybkNhdGVnb3J5TGlzdEVudW0uRlJBTktJTkdfQ1JFRElUU10sIFRheFN1bW1hcnlTZWN0aW9uRW51bS5PVEhFUl9UQU5LKTtcblxuICAgIHJldHVybiBpbmNvbWUgLSBNYXRoLmFicyhleHBlbnNlcykgKyBNYXRoLmFicyh0YXhPZmZzZXRzKSArIE1hdGguYWJzKHRheEluc3RhbGxtZW50cykgKyBNYXRoLmFicyhmcmFua2luZ0NyZWRpdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvbGUgTmV0IENhc2ggPSBncm9zcyBpbmNvbWUg4oCTIGV4cGVuc2VzXG4gICAqIGh0dHBzOi8vdGF4dGFuay5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1RBWFRBTksvcGFnZXMvMjE3Njc3OTkwL0Rhc2hib2FyZCtNYWluXG4gICAqL1xuICBnZXQgc29sZU5ldENhc2goKTogbnVtYmVyIHtcbiAgICBjb25zdCBkZXByZWNpYXRpb246IG51bWJlciA9IHRoaXMuc29sZS5pdGVtcy5zdW1CeUNhdGVnb3JpZXMoVEFYX1JFVFVSTl9DQVRFR09SSUVTLnNvbGUuZGVwcmVjaWF0aW9uKTtcbiAgICBjb25zdCBsb3NzOiBudW1iZXIgPSB0aGlzLnNvbGUuaXRlbXMuc3VtQnlDYXRlZ29yaWVzKFRBWF9SRVRVUk5fQ0FURUdPUklFUy5zb2xlLmxvc3MpO1xuICAgIGNvbnN0IGxvc3NDdXJyZW50OiBudW1iZXIgPSB0aGlzLnNvbGUuaXRlbXMuc3VtQnlDYXRlZ29yaWVzQW5kU2VjdGlvbihUQVhfUkVUVVJOX0NBVEVHT1JJRVMuc29sZS5sb3NzQ3VycmVudCwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLlNPTEVfVEFOSyk7XG5cbiAgICByZXR1cm4gdGhpcy5zb2xlTmV0VG90YWwgLSBkZXByZWNpYXRpb24gLSBsb3NzICsgbG9zc0N1cnJlbnQ7XG4gIH1cblxuICAvKipcbiAgICogU29sZSBOZXQgVG90YWwgPSBHcm9zcyBpbmNvbWUgLSBleHBlbnNlc1xuICAgKiBodHRwczovL3RheHRhbmsuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9UQVhUQU5LL3BhZ2VzLzIxNzY3Nzk5MC9EYXNoYm9hcmQrTWFpblxuICAgKi9cbiAgZ2V0IHNvbGVOZXRUb3RhbCgpOiBudW1iZXIge1xuICAgIC8vIGluY29tZSArIGV4cGVuc2VzICsgZGVwcmVjaWF0aW9uICsgbG9zc1xuICAgIGNvbnN0IHByb2ZpdDogbnVtYmVyID0gdGhpcy5zb2xlLml0ZW1zLnN1bUJ5Q2F0ZWdvcmllcyhbVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5CVVNJTkVTU19JTkNPTUVfT1JfTE9TU10pO1xuICAgIGNvbnN0IGxvc3NDdXJyZW50OiBudW1iZXIgPSB0aGlzLnNvbGUuaXRlbXMuc3VtQnlDYXRlZ29yaWVzQW5kU2VjdGlvbihUQVhfUkVUVVJOX0NBVEVHT1JJRVMuc29sZS5sb3NzQ3VycmVudCwgVGF4U3VtbWFyeVNlY3Rpb25FbnVtLlNPTEVfVEFOSyk7XG5cbiAgICByZXR1cm4gcHJvZml0IC0gbG9zc0N1cnJlbnQ7XG4gIH1cblxuICBnZXREZWZlcnJlZEJ1c2luZXNzTG9zcyhidXNpbmVzczogU29sZUJ1c2luZXNzKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zb2xlLml0ZW1zXG4gICAgICAuZmluZEJ5Q2F0ZWdvcnkoVGF4UmV0dXJuQ2F0ZWdvcnlMaXN0RW51bS5ERUZFUlJFRF9CVVNJTkVTU19MT1NTRVMpLml0ZW1zXG4gICAgICAuZmluZEJ5KCd0aXRsZScsIGBJdGVtIDE1YyAtICR7YnVzaW5lc3MubmFtZX1gKT8uYW1vdW50O1xuICB9XG5cbiAgZ2V0QnVzaW5lc3NDbG9zZUJhbGFuY2UoYnVzaW5lc3M6IFNvbGVCdXNpbmVzcyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc29sZS5pdGVtc1xuICAgICAgLmZpbmRCeUNhdGVnb3J5KFRheFJldHVybkNhdGVnb3J5TGlzdEVudW0uQlVTSU5FU1NfSU5DT01FX09SX0xPU1MpLml0ZW1zXG4gICAgICAuZmluZEJ5KCd0aXRsZScsIGBJdGVtIDE1YyAtICR7YnVzaW5lc3MubmFtZX1gKT8uYW1vdW50O1xuICB9XG59XG4iXX0=
@@ -12464,7 +12464,7 @@ class TaxSummary {
12464
12464
  return [this.work, this.property, this.other, this.sole, this.summary];
12465
12465
  }
12466
12466
  getReportItems(sections) {
12467
- return new ReportItemCollection([].concat(...this.sections.map((section) => section.items.toArray())));
12467
+ return new ReportItemCollection([].concat(...sections.map((section) => section.items.toArray())));
12468
12468
  }
12469
12469
  get taxPercent() {
12470
12470
  // Check if netAmount is not 0 to avoid division by zero
@@ -12482,12 +12482,27 @@ class TaxSummary {
12482
12482
  return this.workNetTotal - Math.abs(taxWithheld);
12483
12483
  }
12484
12484
  get income() {
12485
- return this.getReportItems([this.work, this.property, this.other]).sumByCategories([
12485
+ return this.getReportItems([this.work, this.property, this.sole, this.other]).sumByCategories([
12486
12486
  ...TAX_RETURN_CATEGORIES.work.income,
12487
12487
  ...TAX_RETURN_CATEGORIES.property.income,
12488
+ ...TAX_RETURN_CATEGORIES.sole.income,
12488
12489
  ...TAX_RETURN_CATEGORIES.other.income,
12489
12490
  ]);
12490
12491
  }
12492
+ get expense() {
12493
+ return this.getReportItems([this.work, this.property, this.sole, this.other]).sumByCategories([
12494
+ ...TAX_RETURN_CATEGORIES.work.expenses,
12495
+ ...TAX_RETURN_CATEGORIES.property.expenses,
12496
+ ...TAX_RETURN_CATEGORIES.sole.expenses,
12497
+ ...TAX_RETURN_CATEGORIES.other.expenses,
12498
+ ]);
12499
+ }
12500
+ get netCash() {
12501
+ return this.workNetCash + this.propertyNetCash + this.soleNetCash + this.otherNetCash;
12502
+ }
12503
+ get netTotal() {
12504
+ return this.workNetTotal + this.propertyNetTotal + this.soleNetTotal + this.otherNetTotal;
12505
+ }
12491
12506
  /**
12492
12507
  * Work Net Total = Income - expenses - interest
12493
12508
  * https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/217677990/Dashboard+Main