@fintekkers/ledger-models 0.3.0 → 0.4.0
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/node/fintekkers/models/security/security_pb.d.ts +0 -80
- package/node/fintekkers/models/security/security_pb.js +1 -723
- package/node/fintekkers/models/security/security_pb.test.js +15 -15
- package/node/fintekkers/models/security/security_pb.test.js.map +1 -1
- package/node/fintekkers/models/security/security_pb.test.ts +17 -18
- package/node/wrappers/models/price/Price.cash.test.js +1 -1
- package/node/wrappers/models/price/Price.cash.test.js.map +1 -1
- package/node/wrappers/models/price/Price.cash.test.ts +2 -2
- package/node/wrappers/models/security/BondSecurity.js +8 -8
- package/node/wrappers/models/security/BondSecurity.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.priceScale.test.js +5 -3
- package/node/wrappers/models/security/BondSecurity.priceScale.test.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.priceScale.test.ts +7 -5
- package/node/wrappers/models/security/BondSecurity.test.js +28 -20
- package/node/wrappers/models/security/BondSecurity.test.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.test.ts +29 -21
- package/node/wrappers/models/security/BondSecurity.ts +8 -8
- package/node/wrappers/models/security/security-roundtrip.test.js +77 -61
- package/node/wrappers/models/security/security-roundtrip.test.js.map +1 -1
- package/node/wrappers/models/security/security-roundtrip.test.ts +78 -62
- package/node/wrappers/models/security/security.d.ts +2 -3
- package/node/wrappers/models/security/security.js +8 -10
- package/node/wrappers/models/security/security.js.map +1 -1
- package/node/wrappers/models/security/security.test.js +16 -12
- package/node/wrappers/models/security/security.test.js.map +1 -1
- package/node/wrappers/models/security/security.test.ts +17 -15
- package/node/wrappers/models/security/security.ts +8 -10
- package/node/wrappers/models/transaction/transaction.derived.test.js +8 -6
- package/node/wrappers/models/transaction/transaction.derived.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction.derived.test.ts +9 -7
- package/node/wrappers/models/transaction/transaction_constructor.test.js +8 -6
- package/node/wrappers/models/transaction/transaction_constructor.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction_constructor.test.ts +9 -7
- package/node/wrappers/models/utils/datetime.d.ts +14 -0
- package/node/wrappers/models/utils/datetime.js +20 -0
- package/node/wrappers/models/utils/datetime.js.map +1 -1
- package/node/wrappers/models/utils/datetime.test.js +38 -0
- package/node/wrappers/models/utils/datetime.test.js.map +1 -1
- package/node/wrappers/models/utils/datetime.test.ts +46 -0
- package/node/wrappers/models/utils/datetime.ts +22 -0
- package/node/wrappers/services/searchWithSecurities.test.js +2 -2
- package/node/wrappers/services/searchWithSecurities.test.js.map +1 -1
- package/node/wrappers/services/searchWithSecurities.test.ts +2 -2
- package/node/wrappers/services/security-service/security.maturityLadder.test.js +2 -1
- package/node/wrappers/services/security-service/security.maturityLadder.test.js.map +1 -1
- package/node/wrappers/services/security-service/security.maturityLadder.test.ts +2 -1
- package/node/wrappers/services/security-service/security.test.js +10 -8
- package/node/wrappers/services/security-service/security.test.js.map +1 -1
- package/node/wrappers/services/security-service/security.test.ts +12 -9
- package/node/wrappers/util/link-resolver.test.js +1 -1
- package/node/wrappers/util/link-resolver.test.js.map +1 -1
- package/node/wrappers/util/link-resolver.test.ts +1 -1
- package/package.json +1 -1
|
@@ -40,15 +40,17 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
|
|
|
40
40
|
original.setAssetClass('Fixed Income');
|
|
41
41
|
original.setIssuerName('US Treasury');
|
|
42
42
|
original.setQuantityType(security_quantity_type_pb_1.SecurityQuantityTypeProto.ORIGINAL_FACE_VALUE);
|
|
43
|
-
original.
|
|
43
|
+
original.setIdentifiersList([makeIdentifier(identifier_type_pb_1.IdentifierTypeProto.CUSIP, '912828ZT0')]);
|
|
44
44
|
original.setDescription('UST 5% 2030');
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
45
|
+
const bond = new security_pb_2.BondDetailsProto();
|
|
46
|
+
bond.setCouponRate(makeDecimal('5.0'));
|
|
47
|
+
bond.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED);
|
|
48
|
+
bond.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
|
|
49
|
+
bond.setFaceValue(makeDecimal('1000'));
|
|
50
|
+
bond.setIssueDate(makeDate(2020, 1, 15));
|
|
51
|
+
bond.setDatedDate(makeDate(2020, 1, 15));
|
|
52
|
+
bond.setMaturityDate(makeDate(2030, 1, 15));
|
|
53
|
+
original.setBondDetails(bond);
|
|
52
54
|
const bytes = original.serializeBinary();
|
|
53
55
|
const parsed = security_pb_2.SecurityProto.deserializeBinary(bytes);
|
|
54
56
|
expect(parsed.getProductType()).toBe(product_type_pb_1.ProductTypeProto.TREASURY_NOTE);
|
|
@@ -56,17 +58,18 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
|
|
|
56
58
|
expect(parsed.getIssuerName()).toBe('US Treasury');
|
|
57
59
|
expect(parsed.getDescription()).toBe('UST 5% 2030');
|
|
58
60
|
expect(parsed.getQuantityType()).toBe(security_quantity_type_pb_1.SecurityQuantityTypeProto.ORIGINAL_FACE_VALUE);
|
|
59
|
-
|
|
60
|
-
expect(
|
|
61
|
-
expect(
|
|
62
|
-
expect(
|
|
63
|
-
expect(
|
|
64
|
-
expect(
|
|
65
|
-
expect(
|
|
66
|
-
expect(
|
|
67
|
-
expect(
|
|
68
|
-
expect(
|
|
69
|
-
expect(parsed.
|
|
61
|
+
const parsedBond = parsed.getBondDetails();
|
|
62
|
+
expect(parsedBond.getCouponRate().getArbitraryPrecisionValue()).toBe('5.0');
|
|
63
|
+
expect(parsedBond.getCouponType()).toBe(coupon_type_pb_1.CouponTypeProto.FIXED);
|
|
64
|
+
expect(parsedBond.getCouponFrequency()).toBe(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
|
|
65
|
+
expect(parsedBond.getFaceValue().getArbitraryPrecisionValue()).toBe('1000');
|
|
66
|
+
expect(parsedBond.getIssueDate().getYear()).toBe(2020);
|
|
67
|
+
expect(parsedBond.getDatedDate().getMonth()).toBe(1);
|
|
68
|
+
expect(parsedBond.getMaturityDate().getYear()).toBe(2030);
|
|
69
|
+
expect(parsedBond.getMaturityDate().getMonth()).toBe(1);
|
|
70
|
+
expect(parsedBond.getMaturityDate().getDay()).toBe(15);
|
|
71
|
+
expect(parsed.getIdentifiersList()[0].getIdentifierValue()).toBe('912828ZT0');
|
|
72
|
+
expect(parsed.getIdentifiersList()[0].getIdentifierType()).toBe(identifier_type_pb_1.IdentifierTypeProto.CUSIP);
|
|
70
73
|
});
|
|
71
74
|
test('TIPS: bond fields + base_cpi + inflation_index_type survive round-trip', () => {
|
|
72
75
|
const original = new security_pb_2.SecurityProto();
|
|
@@ -75,23 +78,29 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
|
|
|
75
78
|
original.setProductType(product_type_pb_1.ProductTypeProto.TIPS);
|
|
76
79
|
original.setAssetClass('Fixed Income');
|
|
77
80
|
original.setIssuerName('US Treasury');
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
original.
|
|
81
|
+
const bond = new security_pb_2.BondDetailsProto();
|
|
82
|
+
bond.setCouponRate(makeDecimal('0.625'));
|
|
83
|
+
bond.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED);
|
|
84
|
+
bond.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
|
|
85
|
+
bond.setFaceValue(makeDecimal('1000'));
|
|
86
|
+
bond.setMaturityDate(makeDate(2030, 1, 15));
|
|
87
|
+
original.setBondDetails(bond);
|
|
88
|
+
const tips = new security_pb_2.TipsExtensionProto();
|
|
89
|
+
tips.setBaseCpi(makeDecimal('256.394'));
|
|
90
|
+
tips.setInflationIndexType(index_type_pb_1.IndexTypeProto.CPI_U);
|
|
91
|
+
original.setTipsExtension(tips);
|
|
85
92
|
const bytes = original.serializeBinary();
|
|
86
93
|
const parsed = security_pb_2.SecurityProto.deserializeBinary(bytes);
|
|
87
94
|
expect(parsed.getProductType()).toBe(product_type_pb_1.ProductTypeProto.TIPS);
|
|
88
|
-
|
|
89
|
-
expect(
|
|
90
|
-
expect(
|
|
91
|
-
expect(
|
|
92
|
-
expect(
|
|
93
|
-
expect(
|
|
94
|
-
|
|
95
|
+
const parsedBond = parsed.getBondDetails();
|
|
96
|
+
expect(parsedBond.getCouponRate().getArbitraryPrecisionValue()).toBe('0.625');
|
|
97
|
+
expect(parsedBond.getCouponType()).toBe(coupon_type_pb_1.CouponTypeProto.FIXED);
|
|
98
|
+
expect(parsedBond.getCouponFrequency()).toBe(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
|
|
99
|
+
expect(parsedBond.getFaceValue().getArbitraryPrecisionValue()).toBe('1000');
|
|
100
|
+
expect(parsedBond.getMaturityDate().getYear()).toBe(2030);
|
|
101
|
+
const parsedTips = parsed.getTipsExtension();
|
|
102
|
+
expect(parsedTips.getBaseCpi().getArbitraryPrecisionValue()).toBe('256.394');
|
|
103
|
+
expect(parsedTips.getInflationIndexType()).toBe(index_type_pb_1.IndexTypeProto.CPI_U);
|
|
95
104
|
});
|
|
96
105
|
test('FRN: spread + reference_rate_index + reset_frequency survive round-trip', () => {
|
|
97
106
|
const original = new security_pb_2.SecurityProto();
|
|
@@ -100,22 +109,28 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
|
|
|
100
109
|
original.setProductType(product_type_pb_1.ProductTypeProto.TREASURY_FRN);
|
|
101
110
|
original.setAssetClass('Fixed Income');
|
|
102
111
|
original.setIssuerName('US Treasury');
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
original.
|
|
112
|
+
const bond = new security_pb_2.BondDetailsProto();
|
|
113
|
+
bond.setCouponType(coupon_type_pb_1.CouponTypeProto.FLOAT);
|
|
114
|
+
bond.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.QUARTERLY);
|
|
115
|
+
bond.setFaceValue(makeDecimal('100'));
|
|
116
|
+
bond.setMaturityDate(makeDate(2028, 1, 15));
|
|
117
|
+
original.setBondDetails(bond);
|
|
118
|
+
const frn = new security_pb_2.FrnExtensionProto();
|
|
119
|
+
frn.setSpread(makeDecimal('50'));
|
|
120
|
+
frn.setReferenceRateIndex(index_type_pb_1.IndexTypeProto.T_BILL_13_WEEK);
|
|
121
|
+
original.setFrnExtension(frn);
|
|
109
122
|
// Note: setResetFrequency (field 92) not yet in generated JS — codegen needs update
|
|
110
123
|
const bytes = original.serializeBinary();
|
|
111
124
|
const parsed = security_pb_2.SecurityProto.deserializeBinary(bytes);
|
|
112
125
|
expect(parsed.getProductType()).toBe(product_type_pb_1.ProductTypeProto.TREASURY_FRN);
|
|
113
|
-
|
|
114
|
-
expect(
|
|
115
|
-
expect(
|
|
116
|
-
expect(
|
|
117
|
-
expect(
|
|
118
|
-
|
|
126
|
+
const parsedBond = parsed.getBondDetails();
|
|
127
|
+
expect(parsedBond.getCouponType()).toBe(coupon_type_pb_1.CouponTypeProto.FLOAT);
|
|
128
|
+
expect(parsedBond.getCouponFrequency()).toBe(coupon_frequency_pb_1.CouponFrequencyProto.QUARTERLY);
|
|
129
|
+
expect(parsedBond.getFaceValue().getArbitraryPrecisionValue()).toBe('100');
|
|
130
|
+
expect(parsedBond.getMaturityDate().getYear()).toBe(2028);
|
|
131
|
+
const parsedFrn = parsed.getFrnExtension();
|
|
132
|
+
expect(parsedFrn.getSpread().getArbitraryPrecisionValue()).toBe('50');
|
|
133
|
+
expect(parsedFrn.getReferenceRateIndex()).toBe(index_type_pb_1.IndexTypeProto.T_BILL_13_WEEK);
|
|
119
134
|
});
|
|
120
135
|
test('EQUITY_SECURITY: identifier + asset_class survive round-trip', () => {
|
|
121
136
|
const original = new security_pb_2.SecurityProto();
|
|
@@ -125,7 +140,7 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
|
|
|
125
140
|
original.setAssetClass('Equity');
|
|
126
141
|
original.setIssuerName('Apple Inc.');
|
|
127
142
|
original.setQuantityType(security_quantity_type_pb_1.SecurityQuantityTypeProto.UNITS);
|
|
128
|
-
original.
|
|
143
|
+
original.setIdentifiersList([makeIdentifier(identifier_type_pb_1.IdentifierTypeProto.EXCH_TICKER, 'AAPL')]);
|
|
129
144
|
original.setDescription('Apple Inc. Common Stock');
|
|
130
145
|
const bytes = original.serializeBinary();
|
|
131
146
|
const parsed = security_pb_2.SecurityProto.deserializeBinary(bytes);
|
|
@@ -134,8 +149,8 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
|
|
|
134
149
|
expect(parsed.getIssuerName()).toBe('Apple Inc.');
|
|
135
150
|
expect(parsed.getQuantityType()).toBe(security_quantity_type_pb_1.SecurityQuantityTypeProto.UNITS);
|
|
136
151
|
expect(parsed.getDescription()).toBe('Apple Inc. Common Stock');
|
|
137
|
-
expect(parsed.
|
|
138
|
-
expect(parsed.
|
|
152
|
+
expect(parsed.getIdentifiersList()[0].getIdentifierValue()).toBe('AAPL');
|
|
153
|
+
expect(parsed.getIdentifiersList()[0].getIdentifierType()).toBe(identifier_type_pb_1.IdentifierTypeProto.EXCH_TICKER);
|
|
139
154
|
});
|
|
140
155
|
test('CASH_SECURITY: cash_id + settlement fields survive round-trip', () => {
|
|
141
156
|
const original = new security_pb_2.SecurityProto();
|
|
@@ -145,17 +160,17 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
|
|
|
145
160
|
original.setAssetClass('Cash');
|
|
146
161
|
original.setIssuerName('Federal Reserve');
|
|
147
162
|
original.setQuantityType(security_quantity_type_pb_1.SecurityQuantityTypeProto.UNITS);
|
|
148
|
-
original.setCashId('USD');
|
|
163
|
+
original.setCashDetails(new security_pb_2.CashDetailsProto().setCashId('USD'));
|
|
149
164
|
original.setDescription('US Dollar');
|
|
150
|
-
original.
|
|
165
|
+
original.setIdentifiersList([makeIdentifier(identifier_type_pb_1.IdentifierTypeProto.CASH, 'USD')]);
|
|
151
166
|
const bytes = original.serializeBinary();
|
|
152
167
|
const parsed = security_pb_2.SecurityProto.deserializeBinary(bytes);
|
|
153
168
|
expect(parsed.getProductType()).toBe(product_type_pb_1.ProductTypeProto.CURRENCY);
|
|
154
169
|
expect(parsed.getAssetClass()).toBe('Cash');
|
|
155
|
-
expect(parsed.getCashId()).toBe('USD');
|
|
170
|
+
expect(parsed.getCashDetails().getCashId()).toBe('USD');
|
|
156
171
|
expect(parsed.getDescription()).toBe('US Dollar');
|
|
157
|
-
expect(parsed.
|
|
158
|
-
expect(parsed.
|
|
172
|
+
expect(parsed.getIdentifiersList()[0].getIdentifierValue()).toBe('USD');
|
|
173
|
+
expect(parsed.getIdentifiersList()[0].getIdentifierType()).toBe(identifier_type_pb_1.IdentifierTypeProto.CASH);
|
|
159
174
|
});
|
|
160
175
|
test('INDEX_SECURITY: index_type + inflation_index_type survive round-trip', () => {
|
|
161
176
|
const original = new security_pb_2.SecurityProto();
|
|
@@ -165,19 +180,19 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
|
|
|
165
180
|
original.setAssetClass('Index');
|
|
166
181
|
original.setIssuerName('Bureau of Labor Statistics');
|
|
167
182
|
original.setDescription('US CPI-U All Urban Consumers');
|
|
168
|
-
original.setIndexType(index_type_pb_1.IndexTypeProto.CPI_U);
|
|
169
|
-
original.
|
|
183
|
+
original.setIndexDetails(new security_pb_1.IndexDetailsProto().setIndexType(index_type_pb_1.IndexTypeProto.CPI_U));
|
|
184
|
+
original.setIdentifiersList([makeIdentifier(identifier_type_pb_1.IdentifierTypeProto.CUSIP, 'CPI-U')]);
|
|
170
185
|
const bytes = original.serializeBinary();
|
|
171
186
|
const parsed = security_pb_2.SecurityProto.deserializeBinary(bytes);
|
|
172
187
|
expect(parsed.getProductType()).toBe(product_type_pb_1.ProductTypeProto.EQUITY_INDEX);
|
|
173
188
|
expect(parsed.getAssetClass()).toBe('Index');
|
|
174
189
|
expect(parsed.getIssuerName()).toBe('Bureau of Labor Statistics');
|
|
175
190
|
expect(parsed.getDescription()).toBe('US CPI-U All Urban Consumers');
|
|
176
|
-
expect(parsed.getIndexType()).toBe(index_type_pb_1.IndexTypeProto.CPI_U);
|
|
177
|
-
expect(parsed.
|
|
191
|
+
expect(parsed.getIndexDetails().getIndexType()).toBe(index_type_pb_1.IndexTypeProto.CPI_U);
|
|
192
|
+
expect(parsed.getIdentifiersList()[0].getIdentifierValue()).toBe('CPI-U');
|
|
178
193
|
});
|
|
179
194
|
});
|
|
180
|
-
describe('
|
|
195
|
+
describe('Security link helpers + IndexDetailsProto.constituents', () => {
|
|
181
196
|
test('linkOf populates uuid, as_of and sets is_link=true', () => {
|
|
182
197
|
const uuid = uuid_1.UUID.random();
|
|
183
198
|
const asOf = datetime_1.ZonedDateTime.now();
|
|
@@ -242,9 +257,10 @@ describe('v0.2.5: Security link helpers + IndexDetailsProto.constituents', () =>
|
|
|
242
257
|
expect(parsedDetails.getConstituentsList()[0].getAsOf()).toBeDefined();
|
|
243
258
|
});
|
|
244
259
|
test('Wire compat: SecurityIdProto-shaped bytes (uuid at tag 1) parse as SecurityProto', () => {
|
|
245
|
-
//
|
|
246
|
-
//
|
|
247
|
-
//
|
|
260
|
+
// Wire-format contract: SecurityIdProto-shaped bytes (uuid at tag 1)
|
|
261
|
+
// are bit-for-bit a SecurityProto with only uuid set. We rebuild that
|
|
262
|
+
// shape by serializing a SecurityProto with only uuid set and confirm
|
|
263
|
+
// round-trip under the new type.
|
|
248
264
|
const uuid = uuid_1.UUID.random();
|
|
249
265
|
const legacy = new security_pb_2.SecurityProto();
|
|
250
266
|
legacy.setUuid(uuid.toUUIDProto());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-roundtrip.test.js","sourceRoot":"","sources":["security-roundtrip.test.ts"],"names":[],"mappings":";;;;;AAAA;;;;GAIG;AACH,iFAAoF;AACpF,iFAAgF;AAChF,0DAAkC;AAClC,wCAAqC;AACrC,gDAAkD;AAClD,yFAAuF;AACvF,iGAA+F;AAC/F,uFAAqF;AACrF,6GAA0G;AAC1G,gGAA+F;AAC/F,0GAAwG;AACxG,2FAAyF;AACzF,uFAAqF;AACrF,iFAA+E;AAE/E,SAAS,WAAW,CAAC,KAAa;IAC9B,OAAO,IAAI,oCAAiB,EAAE,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW;IACtD,OAAO,IAAI,8BAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,KAAa;IAC/C,OAAO,IAAI,+BAAe,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnF,CAAC;AAED,QAAQ,CAAC,+DAA+D,EAAE,GAAG,EAAE;IAE3E,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,QAAQ,CAAC,cAAc,CAAC,kCAAgB,CAAC,aAAa,CAAC,CAAC;QACxD,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACvC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACtC,QAAQ,CAAC,eAAe,CAAC,qDAAyB,CAAC,mBAAmB,CAAC,CAAC;QACxE,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,wCAAmB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;QAC/E,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACvC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,QAAQ,CAAC,aAAa,CAAC,gCAAe,CAAC,KAAK,CAAC,CAAC;QAC9C,QAAQ,CAAC,kBAAkB,CAAC,0CAAoB,CAAC,YAAY,CAAC,CAAC;QAC/D,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3C,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7C,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7C,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAEhD,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,kCAAgB,CAAC,aAAa,CAAC,CAAC;QACrE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,qDAAyB,CAAC,mBAAmB,CAAC,CAAC;QACrF,MAAM,CAAC,MAAM,CAAC,aAAa,EAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,gCAAe,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,0CAAoB,CAAC,YAAY,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,YAAY,EAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAG,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,YAAY,EAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,eAAe,EAAG,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,eAAe,EAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,eAAe,EAAG,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,aAAa,EAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,wCAAmB,CAAC,KAAK,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,QAAQ,CAAC,cAAc,CAAC,kCAAgB,CAAC,IAAI,CAAC,CAAC;QAC/C,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACvC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACtC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,QAAQ,CAAC,aAAa,CAAC,gCAAe,CAAC,KAAK,CAAC,CAAC;QAC9C,QAAQ,CAAC,kBAAkB,CAAC,0CAAoB,CAAC,YAAY,CAAC,CAAC;QAC/D,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3C,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAChD,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5C,QAAQ,CAAC,qBAAqB,CAAC,8BAAc,CAAC,KAAK,CAAC,CAAC;QAErD,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,kCAAgB,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,aAAa,EAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3E,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,gCAAe,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,0CAAoB,CAAC,YAAY,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,YAAY,EAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,eAAe,EAAG,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,UAAU,EAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1E,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,8BAAc,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,QAAQ,CAAC,cAAc,CAAC,kCAAgB,CAAC,YAAY,CAAC,CAAC;QACvD,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACvC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACtC,QAAQ,CAAC,aAAa,CAAC,gCAAe,CAAC,KAAK,CAAC,CAAC;QAC9C,QAAQ,CAAC,kBAAkB,CAAC,0CAAoB,CAAC,SAAS,CAAC,CAAC;QAC5D,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAChD,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,QAAQ,CAAC,qBAAqB,CAAC,8BAAc,CAAC,cAAc,CAAC,CAAC;QAC9D,oFAAoF;QAEpF,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,kCAAgB,CAAC,YAAY,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,gCAAe,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,0CAAoB,CAAC,SAAS,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,eAAe,EAAG,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,SAAS,EAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,8BAAc,CAAC,cAAc,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,QAAQ,CAAC,cAAc,CAAC,kCAAgB,CAAC,YAAY,CAAC,CAAC;QACvD,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACrC,QAAQ,CAAC,eAAe,CAAC,qDAAyB,CAAC,KAAK,CAAC,CAAC;QAC1D,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,wCAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QAChF,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;QAEnD,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,kCAAgB,CAAC,YAAY,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,qDAAyB,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,wCAAmB,CAAC,WAAW,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,QAAQ,CAAC,cAAc,CAAC,kCAAgB,CAAC,QAAQ,CAAC,CAAC;QACnD,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/B,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAC1C,QAAQ,CAAC,eAAe,CAAC,qDAAyB,CAAC,KAAK,CAAC,CAAC;QAC1D,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1B,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACrC,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,wCAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAExE,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,kCAAgB,CAAC,QAAQ,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,aAAa,EAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,wCAAmB,CAAC,IAAI,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,QAAQ,CAAC,cAAc,CAAC,kCAAgB,CAAC,YAAY,CAAC,CAAC;QACvD,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAChC,QAAQ,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC;QACrD,QAAQ,CAAC,cAAc,CAAC,8BAA8B,CAAC,CAAC;QACxD,QAAQ,CAAC,YAAY,CAAC,8BAAc,CAAC,KAAK,CAAC,CAAC;QAC5C,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,wCAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QAE3E,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,kCAAgB,CAAC,YAAY,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACrE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,8BAAc,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,aAAa,EAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gEAAgE,EAAE,GAAG,EAAE;IAE5E,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,IAAI,GAAG,WAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,wBAAa,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,kBAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B;IACvE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,IAAI,GAAG,WAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,kBAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,IAAI,GAAG,WAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,EAAE,CAAC,kBAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,SAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,IAAI,GAAG,IAAI,2BAAa,EAAE,CAAC;QACjC,MAAM,WAAW,GAAG,IAAI,kBAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzC,MAAM,IAAI,GAAG,kBAAQ,CAAC,MAAM,CAAC,WAAI,CAAC,MAAM,EAAE,EAAE,wBAAa,CAAC,GAAG,EAAE,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,IAAI,kBAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,IAAI,GAAG,kBAAQ,CAAC,MAAM,CAAC,WAAI,CAAC,MAAM,EAAE,EAAE,wBAAa,CAAC,GAAG,EAAE,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,IAAI,kBAAQ,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,IAAI,GAAG,WAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,wBAAa,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,kBAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAG,CAAC,eAAe,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAG,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8EAA8E,EAAE,GAAG,EAAE;QACtF,MAAM,IAAI,GAAG,wBAAa,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,kBAAQ,CAAC,MAAM,CAAC,WAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,EAAE,GAAG,kBAAQ,CAAC,MAAM,CAAC,WAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,IAAI,+BAAiB,EAAE,CAAC;QACxC,OAAO,CAAC,YAAY,CAAC,8BAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,OAAO,CAAC,mBAAmB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAEtC,MAAM,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,kCAAgB,CAAC,YAAY,CAAC,CAAC;QACvD,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAElC,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;QAC3E,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,EAAG,CAAC;QAChD,MAAM,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,yEAAyE;QACzE,sEAAsE;QACtE,qDAAqD;QACrD,MAAM,IAAI,GAAG,WAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,2BAAa,EAAE,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAEnC,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAG,CAAC,eAAe,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"security-roundtrip.test.js","sourceRoot":"","sources":["security-roundtrip.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* For each type: construct → serialize to bytes → deserialize → verify all fields match.
|
|
5
5
|
*/
|
|
6
6
|
import { IndexDetailsProto } from '../../../fintekkers/models/security/security_pb';
|
|
7
|
-
import { SecurityProto } from '../../../fintekkers/models/security/security_pb';
|
|
7
|
+
import { SecurityProto, BondDetailsProto, TipsExtensionProto, FrnExtensionProto, CashDetailsProto } from '../../../fintekkers/models/security/security_pb';
|
|
8
8
|
import Security from './security';
|
|
9
9
|
import { UUID } from '../utils/uuid';
|
|
10
10
|
import { ZonedDateTime } from '../utils/datetime';
|
|
@@ -40,15 +40,17 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
|
|
|
40
40
|
original.setAssetClass('Fixed Income');
|
|
41
41
|
original.setIssuerName('US Treasury');
|
|
42
42
|
original.setQuantityType(SecurityQuantityTypeProto.ORIGINAL_FACE_VALUE);
|
|
43
|
-
original.
|
|
43
|
+
original.setIdentifiersList([makeIdentifier(IdentifierTypeProto.CUSIP, '912828ZT0')]);
|
|
44
44
|
original.setDescription('UST 5% 2030');
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
45
|
+
const bond = new BondDetailsProto();
|
|
46
|
+
bond.setCouponRate(makeDecimal('5.0'));
|
|
47
|
+
bond.setCouponType(CouponTypeProto.FIXED);
|
|
48
|
+
bond.setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY);
|
|
49
|
+
bond.setFaceValue(makeDecimal('1000'));
|
|
50
|
+
bond.setIssueDate(makeDate(2020, 1, 15));
|
|
51
|
+
bond.setDatedDate(makeDate(2020, 1, 15));
|
|
52
|
+
bond.setMaturityDate(makeDate(2030, 1, 15));
|
|
53
|
+
original.setBondDetails(bond);
|
|
52
54
|
|
|
53
55
|
const bytes = original.serializeBinary();
|
|
54
56
|
const parsed = SecurityProto.deserializeBinary(bytes);
|
|
@@ -58,17 +60,18 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
|
|
|
58
60
|
expect(parsed.getIssuerName()).toBe('US Treasury');
|
|
59
61
|
expect(parsed.getDescription()).toBe('UST 5% 2030');
|
|
60
62
|
expect(parsed.getQuantityType()).toBe(SecurityQuantityTypeProto.ORIGINAL_FACE_VALUE);
|
|
61
|
-
|
|
62
|
-
expect(
|
|
63
|
-
expect(
|
|
64
|
-
expect(
|
|
65
|
-
expect(
|
|
66
|
-
expect(
|
|
67
|
-
expect(
|
|
68
|
-
expect(
|
|
69
|
-
expect(
|
|
70
|
-
expect(
|
|
71
|
-
expect(parsed.
|
|
63
|
+
const parsedBond = parsed.getBondDetails()!;
|
|
64
|
+
expect(parsedBond.getCouponRate()!.getArbitraryPrecisionValue()).toBe('5.0');
|
|
65
|
+
expect(parsedBond.getCouponType()).toBe(CouponTypeProto.FIXED);
|
|
66
|
+
expect(parsedBond.getCouponFrequency()).toBe(CouponFrequencyProto.SEMIANNUALLY);
|
|
67
|
+
expect(parsedBond.getFaceValue()!.getArbitraryPrecisionValue()).toBe('1000');
|
|
68
|
+
expect(parsedBond.getIssueDate()!.getYear()).toBe(2020);
|
|
69
|
+
expect(parsedBond.getDatedDate()!.getMonth()).toBe(1);
|
|
70
|
+
expect(parsedBond.getMaturityDate()!.getYear()).toBe(2030);
|
|
71
|
+
expect(parsedBond.getMaturityDate()!.getMonth()).toBe(1);
|
|
72
|
+
expect(parsedBond.getMaturityDate()!.getDay()).toBe(15);
|
|
73
|
+
expect(parsed.getIdentifiersList()[0].getIdentifierValue()).toBe('912828ZT0');
|
|
74
|
+
expect(parsed.getIdentifiersList()[0].getIdentifierType()).toBe(IdentifierTypeProto.CUSIP);
|
|
72
75
|
});
|
|
73
76
|
|
|
74
77
|
test('TIPS: bond fields + base_cpi + inflation_index_type survive round-trip', () => {
|
|
@@ -78,25 +81,31 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
|
|
|
78
81
|
original.setProductType(ProductTypeProto.TIPS);
|
|
79
82
|
original.setAssetClass('Fixed Income');
|
|
80
83
|
original.setIssuerName('US Treasury');
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
original.
|
|
84
|
+
const bond = new BondDetailsProto();
|
|
85
|
+
bond.setCouponRate(makeDecimal('0.625'));
|
|
86
|
+
bond.setCouponType(CouponTypeProto.FIXED);
|
|
87
|
+
bond.setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY);
|
|
88
|
+
bond.setFaceValue(makeDecimal('1000'));
|
|
89
|
+
bond.setMaturityDate(makeDate(2030, 1, 15));
|
|
90
|
+
original.setBondDetails(bond);
|
|
91
|
+
const tips = new TipsExtensionProto();
|
|
92
|
+
tips.setBaseCpi(makeDecimal('256.394'));
|
|
93
|
+
tips.setInflationIndexType(IndexTypeProto.CPI_U);
|
|
94
|
+
original.setTipsExtension(tips);
|
|
88
95
|
|
|
89
96
|
const bytes = original.serializeBinary();
|
|
90
97
|
const parsed = SecurityProto.deserializeBinary(bytes);
|
|
91
98
|
|
|
92
99
|
expect(parsed.getProductType()).toBe(ProductTypeProto.TIPS);
|
|
93
|
-
|
|
94
|
-
expect(
|
|
95
|
-
expect(
|
|
96
|
-
expect(
|
|
97
|
-
expect(
|
|
98
|
-
expect(
|
|
99
|
-
|
|
100
|
+
const parsedBond = parsed.getBondDetails()!;
|
|
101
|
+
expect(parsedBond.getCouponRate()!.getArbitraryPrecisionValue()).toBe('0.625');
|
|
102
|
+
expect(parsedBond.getCouponType()).toBe(CouponTypeProto.FIXED);
|
|
103
|
+
expect(parsedBond.getCouponFrequency()).toBe(CouponFrequencyProto.SEMIANNUALLY);
|
|
104
|
+
expect(parsedBond.getFaceValue()!.getArbitraryPrecisionValue()).toBe('1000');
|
|
105
|
+
expect(parsedBond.getMaturityDate()!.getYear()).toBe(2030);
|
|
106
|
+
const parsedTips = parsed.getTipsExtension()!;
|
|
107
|
+
expect(parsedTips.getBaseCpi()!.getArbitraryPrecisionValue()).toBe('256.394');
|
|
108
|
+
expect(parsedTips.getInflationIndexType()).toBe(IndexTypeProto.CPI_U);
|
|
100
109
|
});
|
|
101
110
|
|
|
102
111
|
test('FRN: spread + reference_rate_index + reset_frequency survive round-trip', () => {
|
|
@@ -106,24 +115,30 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
|
|
|
106
115
|
original.setProductType(ProductTypeProto.TREASURY_FRN);
|
|
107
116
|
original.setAssetClass('Fixed Income');
|
|
108
117
|
original.setIssuerName('US Treasury');
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
original.
|
|
118
|
+
const bond = new BondDetailsProto();
|
|
119
|
+
bond.setCouponType(CouponTypeProto.FLOAT);
|
|
120
|
+
bond.setCouponFrequency(CouponFrequencyProto.QUARTERLY);
|
|
121
|
+
bond.setFaceValue(makeDecimal('100'));
|
|
122
|
+
bond.setMaturityDate(makeDate(2028, 1, 15));
|
|
123
|
+
original.setBondDetails(bond);
|
|
124
|
+
const frn = new FrnExtensionProto();
|
|
125
|
+
frn.setSpread(makeDecimal('50'));
|
|
126
|
+
frn.setReferenceRateIndex(IndexTypeProto.T_BILL_13_WEEK);
|
|
127
|
+
original.setFrnExtension(frn);
|
|
115
128
|
// Note: setResetFrequency (field 92) not yet in generated JS — codegen needs update
|
|
116
129
|
|
|
117
130
|
const bytes = original.serializeBinary();
|
|
118
131
|
const parsed = SecurityProto.deserializeBinary(bytes);
|
|
119
132
|
|
|
120
133
|
expect(parsed.getProductType()).toBe(ProductTypeProto.TREASURY_FRN);
|
|
121
|
-
|
|
122
|
-
expect(
|
|
123
|
-
expect(
|
|
124
|
-
expect(
|
|
125
|
-
expect(
|
|
126
|
-
|
|
134
|
+
const parsedBond = parsed.getBondDetails()!;
|
|
135
|
+
expect(parsedBond.getCouponType()).toBe(CouponTypeProto.FLOAT);
|
|
136
|
+
expect(parsedBond.getCouponFrequency()).toBe(CouponFrequencyProto.QUARTERLY);
|
|
137
|
+
expect(parsedBond.getFaceValue()!.getArbitraryPrecisionValue()).toBe('100');
|
|
138
|
+
expect(parsedBond.getMaturityDate()!.getYear()).toBe(2028);
|
|
139
|
+
const parsedFrn = parsed.getFrnExtension()!;
|
|
140
|
+
expect(parsedFrn.getSpread()!.getArbitraryPrecisionValue()).toBe('50');
|
|
141
|
+
expect(parsedFrn.getReferenceRateIndex()).toBe(IndexTypeProto.T_BILL_13_WEEK);
|
|
127
142
|
});
|
|
128
143
|
|
|
129
144
|
test('EQUITY_SECURITY: identifier + asset_class survive round-trip', () => {
|
|
@@ -134,7 +149,7 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
|
|
|
134
149
|
original.setAssetClass('Equity');
|
|
135
150
|
original.setIssuerName('Apple Inc.');
|
|
136
151
|
original.setQuantityType(SecurityQuantityTypeProto.UNITS);
|
|
137
|
-
original.
|
|
152
|
+
original.setIdentifiersList([makeIdentifier(IdentifierTypeProto.EXCH_TICKER, 'AAPL')]);
|
|
138
153
|
original.setDescription('Apple Inc. Common Stock');
|
|
139
154
|
|
|
140
155
|
const bytes = original.serializeBinary();
|
|
@@ -145,8 +160,8 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
|
|
|
145
160
|
expect(parsed.getIssuerName()).toBe('Apple Inc.');
|
|
146
161
|
expect(parsed.getQuantityType()).toBe(SecurityQuantityTypeProto.UNITS);
|
|
147
162
|
expect(parsed.getDescription()).toBe('Apple Inc. Common Stock');
|
|
148
|
-
expect(parsed.
|
|
149
|
-
expect(parsed.
|
|
163
|
+
expect(parsed.getIdentifiersList()[0].getIdentifierValue()).toBe('AAPL');
|
|
164
|
+
expect(parsed.getIdentifiersList()[0].getIdentifierType()).toBe(IdentifierTypeProto.EXCH_TICKER);
|
|
150
165
|
});
|
|
151
166
|
|
|
152
167
|
test('CASH_SECURITY: cash_id + settlement fields survive round-trip', () => {
|
|
@@ -157,19 +172,19 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
|
|
|
157
172
|
original.setAssetClass('Cash');
|
|
158
173
|
original.setIssuerName('Federal Reserve');
|
|
159
174
|
original.setQuantityType(SecurityQuantityTypeProto.UNITS);
|
|
160
|
-
original.setCashId('USD');
|
|
175
|
+
original.setCashDetails(new CashDetailsProto().setCashId('USD'));
|
|
161
176
|
original.setDescription('US Dollar');
|
|
162
|
-
original.
|
|
177
|
+
original.setIdentifiersList([makeIdentifier(IdentifierTypeProto.CASH, 'USD')]);
|
|
163
178
|
|
|
164
179
|
const bytes = original.serializeBinary();
|
|
165
180
|
const parsed = SecurityProto.deserializeBinary(bytes);
|
|
166
181
|
|
|
167
182
|
expect(parsed.getProductType()).toBe(ProductTypeProto.CURRENCY);
|
|
168
183
|
expect(parsed.getAssetClass()).toBe('Cash');
|
|
169
|
-
expect(parsed.getCashId()).toBe('USD');
|
|
184
|
+
expect(parsed.getCashDetails()!.getCashId()).toBe('USD');
|
|
170
185
|
expect(parsed.getDescription()).toBe('US Dollar');
|
|
171
|
-
expect(parsed.
|
|
172
|
-
expect(parsed.
|
|
186
|
+
expect(parsed.getIdentifiersList()[0].getIdentifierValue()).toBe('USD');
|
|
187
|
+
expect(parsed.getIdentifiersList()[0].getIdentifierType()).toBe(IdentifierTypeProto.CASH);
|
|
173
188
|
});
|
|
174
189
|
|
|
175
190
|
test('INDEX_SECURITY: index_type + inflation_index_type survive round-trip', () => {
|
|
@@ -180,8 +195,8 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
|
|
|
180
195
|
original.setAssetClass('Index');
|
|
181
196
|
original.setIssuerName('Bureau of Labor Statistics');
|
|
182
197
|
original.setDescription('US CPI-U All Urban Consumers');
|
|
183
|
-
original.setIndexType(IndexTypeProto.CPI_U);
|
|
184
|
-
original.
|
|
198
|
+
original.setIndexDetails(new IndexDetailsProto().setIndexType(IndexTypeProto.CPI_U));
|
|
199
|
+
original.setIdentifiersList([makeIdentifier(IdentifierTypeProto.CUSIP, 'CPI-U')]);
|
|
185
200
|
|
|
186
201
|
const bytes = original.serializeBinary();
|
|
187
202
|
const parsed = SecurityProto.deserializeBinary(bytes);
|
|
@@ -190,12 +205,12 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
|
|
|
190
205
|
expect(parsed.getAssetClass()).toBe('Index');
|
|
191
206
|
expect(parsed.getIssuerName()).toBe('Bureau of Labor Statistics');
|
|
192
207
|
expect(parsed.getDescription()).toBe('US CPI-U All Urban Consumers');
|
|
193
|
-
expect(parsed.getIndexType()).toBe(IndexTypeProto.CPI_U);
|
|
194
|
-
expect(parsed.
|
|
208
|
+
expect(parsed.getIndexDetails()!.getIndexType()).toBe(IndexTypeProto.CPI_U);
|
|
209
|
+
expect(parsed.getIdentifiersList()[0].getIdentifierValue()).toBe('CPI-U');
|
|
195
210
|
});
|
|
196
211
|
});
|
|
197
212
|
|
|
198
|
-
describe('
|
|
213
|
+
describe('Security link helpers + IndexDetailsProto.constituents', () => {
|
|
199
214
|
|
|
200
215
|
test('linkOf populates uuid, as_of and sets is_link=true', () => {
|
|
201
216
|
const uuid = UUID.random();
|
|
@@ -274,9 +289,10 @@ describe('v0.2.5: Security link helpers + IndexDetailsProto.constituents', () =>
|
|
|
274
289
|
});
|
|
275
290
|
|
|
276
291
|
test('Wire compat: SecurityIdProto-shaped bytes (uuid at tag 1) parse as SecurityProto', () => {
|
|
277
|
-
//
|
|
278
|
-
//
|
|
279
|
-
//
|
|
292
|
+
// Wire-format contract: SecurityIdProto-shaped bytes (uuid at tag 1)
|
|
293
|
+
// are bit-for-bit a SecurityProto with only uuid set. We rebuild that
|
|
294
|
+
// shape by serializing a SecurityProto with only uuid set and confirm
|
|
295
|
+
// round-trip under the new type.
|
|
280
296
|
const uuid = UUID.random();
|
|
281
297
|
const legacy = new SecurityProto();
|
|
282
298
|
legacy.setUuid(uuid.toUUIDProto());
|
|
@@ -90,9 +90,8 @@ declare class Security {
|
|
|
90
90
|
getMaturityDate(): LocalDate;
|
|
91
91
|
/**
|
|
92
92
|
* Returns the canonical bond_details sub-message if set, else undefined.
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
* tips_extension / frn_extension fields.
|
|
93
|
+
* TIPS and FRN extras live in their own tips_extension / frn_extension
|
|
94
|
+
* fields and co-exist with bond_details.
|
|
96
95
|
*/
|
|
97
96
|
protected getBondLikeDetails(): any | undefined;
|
|
98
97
|
getIssuerName(): string;
|
|
@@ -165,11 +165,12 @@ class Security {
|
|
|
165
165
|
return securityTypeString || 'UNKNOWN_SECURITY_TYPE';
|
|
166
166
|
}
|
|
167
167
|
getSecurityID() {
|
|
168
|
+
// Primary identifier lives at identifiers[0] (tag 42).
|
|
168
169
|
this.assertNotLink('securityId');
|
|
169
|
-
const
|
|
170
|
-
if (!
|
|
170
|
+
const list = this.proto.getIdentifiersList();
|
|
171
|
+
if (!list || list.length === 0)
|
|
171
172
|
throw new Error("Identifier is required");
|
|
172
|
-
return
|
|
173
|
+
return list[0];
|
|
173
174
|
}
|
|
174
175
|
/**
|
|
175
176
|
* Returns the issue date if set, else null. Per-type semantic:
|
|
@@ -185,9 +186,8 @@ class Security {
|
|
|
185
186
|
*/
|
|
186
187
|
getIssueDate() {
|
|
187
188
|
this.assertNotLink('issueDate');
|
|
188
|
-
// Prefer oneof bond sub-message if available, fall back to flat fields
|
|
189
189
|
const bond = this.getBondLikeDetails();
|
|
190
|
-
const date = bond ? bond.getIssueDate() :
|
|
190
|
+
const date = bond ? bond.getIssueDate() : undefined;
|
|
191
191
|
if (!date)
|
|
192
192
|
return null;
|
|
193
193
|
return new date_1.LocalDate(date);
|
|
@@ -204,18 +204,16 @@ class Security {
|
|
|
204
204
|
*/
|
|
205
205
|
getMaturityDate() {
|
|
206
206
|
this.assertNotLink('maturityDate');
|
|
207
|
-
// Prefer oneof bond sub-message if available, fall back to flat fields
|
|
208
207
|
const bond = this.getBondLikeDetails();
|
|
209
|
-
const date = bond ? bond.getMaturityDate() :
|
|
208
|
+
const date = bond ? bond.getMaturityDate() : undefined;
|
|
210
209
|
if (!date)
|
|
211
210
|
throw new Error("Maturity date is required");
|
|
212
211
|
return new date_1.LocalDate(date);
|
|
213
212
|
}
|
|
214
213
|
/**
|
|
215
214
|
* Returns the canonical bond_details sub-message if set, else undefined.
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
* tips_extension / frn_extension fields.
|
|
215
|
+
* TIPS and FRN extras live in their own tips_extension / frn_extension
|
|
216
|
+
* fields and co-exist with bond_details.
|
|
219
217
|
*/
|
|
220
218
|
getBondLikeDetails() {
|
|
221
219
|
var _a;
|