iso_20022_setr/
setr_007_001_04.rs

1// Copyright 2023 Emergent Financial, LLC - All Rights Reserved
2//
3//
4// This software is licensed under the Emergent Financial Limited Public License Version 1.0
5// (EF-LPLv1). You may use, copy, modify, and distribute this software under the terms and
6// conditions of the EF-LPL. For more information, please refer to the full text of the license
7// at https://github.com/emergentfinancial/ef-lpl.
8//
9//
10// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
11// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
12// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
13// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
14// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
15// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16//
17// See ISO-20022 Intellectual Property Rights Policy at
18// <https://www.iso20022.org/intellectual-property-rights>
19// for more information.
20
21use validator::Validate;
22
23::lazy_static::lazy_static! {
24    static ref SOUTH_AFRICAN_NCC_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"ZA[0-9]{6,6}"#).unwrap();
25}
26
27::lazy_static::lazy_static! {
28    static ref IBAN_2007_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"#).unwrap();
29}
30
31::lazy_static::lazy_static! {
32    static ref COUNTRY_CODE_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{2,2}"#).unwrap();
33}
34
35::lazy_static::lazy_static! {
36    static ref RUSSIAN_CENTRAL_BANK_IDENTIFICATION_CODE_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"RU[0-9]{9,9}"#).unwrap();
37}
38
39::lazy_static::lazy_static! {
40    static ref ACTIVE_CURRENCY_CODE_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{3,3}"#).unwrap();
41}
42
43::lazy_static::lazy_static! {
44    static ref IRISH_NSC_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"IE[0-9]{6,6}"#).unwrap();
45}
46
47::lazy_static::lazy_static! {
48    static ref CHIPS_UNIVERSAL_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"CH[0-9]{6,6}"#).unwrap();
49}
50
51::lazy_static::lazy_static! {
52    static ref LEI_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z0-9]{18,18}[0-9]{2,2}"#).unwrap();
53}
54
55::lazy_static::lazy_static! {
56    static ref SWISS_BC_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"SW[0-9]{3,5}"#).unwrap();
57}
58
59::lazy_static::lazy_static! {
60    static ref MIC_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z0-9]{4,4}"#).unwrap();
61}
62
63::lazy_static::lazy_static! {
64    static ref GERMAN_BANKLEITZAHL_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"BL[0-9]{8,8}"#).unwrap();
65}
66
67::lazy_static::lazy_static! {
68    static ref NEW_ZEALAND_NCC_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"NZ[0-9]{6,6}"#).unwrap();
69}
70
71::lazy_static::lazy_static! {
72    static ref ITALIAN_DOMESTIC_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"IT[0-9]{10,10}"#).unwrap();
73}
74
75::lazy_static::lazy_static! {
76    static ref CHIPS_PARTICIPANT_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"CP[0-9]{4,4}"#).unwrap();
77}
78
79::lazy_static::lazy_static! {
80    static ref SMALL_NETWORK_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"AU[0-9]{6,6}"#).unwrap();
81}
82
83::lazy_static::lazy_static! {
84    static ref BICFI_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"#).unwrap();
85}
86
87::lazy_static::lazy_static! {
88    static ref ISO_YEAR_MONTH_REGEX: ::regex::Regex = ::regex::Regex::new(r#"^-?\d{4}-(0[1-9]|1[0-2])([+-]\d{2}:\d{2}|Z)?$"#).unwrap();
89}
90
91::lazy_static::lazy_static! {
92    static ref ANY_BIC_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"#).unwrap();
93}
94
95::lazy_static::lazy_static! {
96    static ref MAX_4_ALPHA_NUMERIC_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[a-zA-Z0-9]{1,4}"#).unwrap();
97}
98
99::lazy_static::lazy_static! {
100    static ref ISIN_OCT_2015_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{2,2}[A-Z0-9]{9,9}[0-9]{1,1}"#).unwrap();
101}
102
103::lazy_static::lazy_static! {
104    static ref EXTENSIVE_BRANCH_NETWORK_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"AU[0-9]{6,6}"#).unwrap();
105}
106
107::lazy_static::lazy_static! {
108    static ref SPANISH_DOMESTIC_INTERBANKING_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"ES[0-9]{8,9}"#).unwrap();
109}
110
111::lazy_static::lazy_static! {
112    static ref CANADIAN_PAYMENTS_ARN_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"CA[0-9]{9,9}"#).unwrap();
113}
114
115::lazy_static::lazy_static! {
116    static ref HONG_KONG_BANK_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"HK[0-9]{3,3}"#).unwrap();
117}
118
119::lazy_static::lazy_static! {
120    static ref BLOOMBERG_2_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"(BBG)[BCDFGHJKLMNPQRSTVWXYZ\d]{8}\d"#).unwrap();
121}
122
123::lazy_static::lazy_static! {
124    static ref ACTIVE_OR_HISTORIC_CURRENCY_CODE_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[A-Z]{3,3}"#).unwrap();
125}
126
127::lazy_static::lazy_static! {
128    static ref SWISS_SIC_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"SW[0-9]{6,6}"#).unwrap();
129}
130
131::lazy_static::lazy_static! {
132    static ref UK_DOMESTIC_SORT_CODE_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"SC[0-9]{6,6}"#).unwrap();
133}
134
135::lazy_static::lazy_static! {
136    static ref EXACT_4_ALPHA_NUMERIC_TEXT_REGEX: ::regex::Regex = ::regex::Regex::new(r#"[a-zA-Z0-9]{4}"#).unwrap();
137}
138
139::lazy_static::lazy_static! {
140    static ref FEDWIRE_ROUTING_NUMBER_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"FW[0-9]{9,9}"#).unwrap();
141}
142
143::lazy_static::lazy_static! {
144    static ref PORTUGUESE_NCC_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"PT[0-9]{8,8}"#).unwrap();
145}
146
147::lazy_static::lazy_static! {
148    static ref AUSTRIAN_BANKLEITZAHL_IDENTIFIER_REGEX: ::regex::Regex = ::regex::Regex::new(r#"AT[0-9]{5,5}"#).unwrap();
149}
150
151/// Returns the namespace of the schema
152pub fn namespace() -> String {
153    "urn:iso:std:iso:20022:tech:xsd:setr.007.001.04".to_string()
154}
155
156#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
157pub enum InvestmentFundRole2Code {
158    #[serde(rename = "FMCO")]
159    Fmco,
160    #[serde(rename = "REGI")]
161    Regi,
162    #[serde(rename = "TRAG")]
163    Trag,
164    #[serde(rename = "INTR")]
165    Intr,
166    #[serde(rename = "DIST")]
167    Dist,
168    #[serde(rename = "CONC")]
169    Conc,
170    #[serde(rename = "UCL1")]
171    Ucl1,
172    #[serde(rename = "UCL2")]
173    Ucl2,
174    #[serde(rename = "TRAN")]
175    Tran,
176    #[default]
177    Unknown,
178}
179#[derive(
180    Debug,
181    Default,
182    Clone,
183    PartialEq,
184    ::serde::Serialize,
185    ::serde::Deserialize,
186    ::derive_builder::Builder,
187    ::validator::Validate,
188)]
189pub struct GenericIdentification78 {
190    #[validate]
191    #[serde(rename = "Tp")]
192    pub tp: GenericIdentification30,
193    #[serde(rename = "Id", skip_serializing_if = "Option::is_none")]
194    pub id: Option<Max35Text>,
195}
196#[derive(
197    Debug,
198    Default,
199    Clone,
200    PartialEq,
201    ::serde::Serialize,
202    ::serde::Deserialize,
203    ::derive_builder::Builder,
204    ::validator::Validate,
205)]
206pub struct MessageIdentification1 {
207    #[validate]
208    #[serde(rename = "Id")]
209    pub id: Max35Text,
210    #[validate]
211    #[serde(rename = "CreDtTm")]
212    pub cre_dt_tm: IsoDateTime,
213}
214#[derive(
215    Debug,
216    Default,
217    Clone,
218    PartialEq,
219    ::serde::Serialize,
220    ::serde::Deserialize,
221    ::derive_builder::Builder,
222    ::validator::Validate,
223)]
224pub struct ExternalAccountIdentification1Code {
225    #[validate(length(min = 1, max = 4,))]
226    #[serde(rename = "$text")]
227    pub value: String,
228}
229#[derive(
230    Debug,
231    Default,
232    Clone,
233    PartialEq,
234    ::serde::Serialize,
235    ::serde::Deserialize,
236    ::derive_builder::Builder,
237    ::validator::Validate,
238)]
239pub struct CopyInformation4 {
240    #[validate]
241    #[serde(rename = "CpyInd")]
242    pub cpy_ind: YesNoIndicator,
243    #[serde(rename = "OrgnlRcvr", skip_serializing_if = "Option::is_none")]
244    pub orgnl_rcvr: Option<AnyBicIdentifier>,
245}
246#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
247pub enum OrderWaiverReason1Code {
248    #[serde(rename = "LATE")]
249    Late,
250    #[serde(rename = "FEND")]
251    Fend,
252    #[serde(rename = "BMIN")]
253    Bmin,
254    #[serde(rename = "CUTO")]
255    Cuto,
256    #[serde(rename = "COMW")]
257    Comw,
258    #[default]
259    Unknown,
260}
261#[derive(
262    Debug,
263    Default,
264    Clone,
265    PartialEq,
266    ::serde::Serialize,
267    ::serde::Deserialize,
268    ::derive_builder::Builder,
269    ::validator::Validate,
270)]
271pub struct SouthAfricanNccIdentifier {
272    #[validate(regex = "SOUTH_AFRICAN_NCC_IDENTIFIER_REGEX")]
273    #[serde(rename = "$text")]
274    pub value: String,
275}
276#[derive(
277    Debug,
278    Default,
279    Clone,
280    PartialEq,
281    ::serde::Serialize,
282    ::serde::Deserialize,
283    ::derive_builder::Builder,
284    ::validator::Validate,
285)]
286pub struct TradeTransactionCondition8ChoiceEnum {
287    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
288    pub cd: Option<TradeTransactionCondition5Code>,
289    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
290    pub prtry: Option<GenericIdentification30>,
291}
292#[derive(
293    Debug,
294    Default,
295    Clone,
296    PartialEq,
297    ::serde::Serialize,
298    ::serde::Deserialize,
299    ::derive_builder::Builder,
300    ::validator::Validate,
301)]
302pub struct TradeTransactionCondition8Choice {
303    #[serde(flatten)]
304    pub value: TradeTransactionCondition8ChoiceEnum,
305}
306#[derive(
307    Debug,
308    Default,
309    Clone,
310    PartialEq,
311    ::serde::Serialize,
312    ::serde::Deserialize,
313    ::derive_builder::Builder,
314    ::validator::Validate,
315)]
316pub struct GenericIdentification1 {
317    #[validate]
318    #[serde(rename = "Id")]
319    pub id: Max35Text,
320    #[serde(rename = "SchmeNm", skip_serializing_if = "Option::is_none")]
321    pub schme_nm: Option<Max35Text>,
322    #[serde(rename = "Issr", skip_serializing_if = "Option::is_none")]
323    pub issr: Option<Max35Text>,
324}
325#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
326pub enum ConductClassification1Code {
327    #[serde(rename = "NSTA")]
328    Nsta,
329    #[serde(rename = "RCLT")]
330    Rclt,
331    #[serde(rename = "STAN")]
332    Stan,
333    #[default]
334    Unknown,
335}
336#[derive(
337    Debug,
338    Default,
339    Clone,
340    PartialEq,
341    ::serde::Serialize,
342    ::serde::Deserialize,
343    ::derive_builder::Builder,
344    ::validator::Validate,
345)]
346pub struct Intermediary40 {
347    #[validate]
348    #[serde(rename = "Id")]
349    pub id: PartyIdentification113,
350    #[serde(rename = "Acct", skip_serializing_if = "Option::is_none")]
351    pub acct: Option<Account22>,
352    #[serde(rename = "OrdrOrgtrElgblty", skip_serializing_if = "Option::is_none")]
353    pub ordr_orgtr_elgblty: Option<OrderOriginatorEligibility1Code>,
354    #[serde(rename = "Role", skip_serializing_if = "Option::is_none")]
355    pub role: Option<InvestmentFundRole2Choice>,
356}
357#[derive(
358    Debug,
359    Default,
360    Clone,
361    PartialEq,
362    ::serde::Serialize,
363    ::serde::Deserialize,
364    ::derive_builder::Builder,
365    ::validator::Validate,
366)]
367pub struct Extension1 {
368    #[validate]
369    #[serde(rename = "PlcAndNm")]
370    pub plc_and_nm: Max350Text,
371    #[validate]
372    #[serde(rename = "Txt")]
373    pub txt: Max350Text,
374}
375#[derive(
376    Debug,
377    Default,
378    Clone,
379    PartialEq,
380    ::serde::Serialize,
381    ::serde::Deserialize,
382    ::derive_builder::Builder,
383    ::validator::Validate,
384)]
385pub struct ReceivingPartiesAndAccount16 {
386    #[serde(rename = "RcvrsCtdnDtls", skip_serializing_if = "Option::is_none")]
387    pub rcvrs_ctdn_dtls: Option<PartyIdentificationAndAccount147>,
388    #[serde(rename = "RcvrsIntrmy1Dtls", skip_serializing_if = "Option::is_none")]
389    pub rcvrs_intrmy_1_dtls: Option<PartyIdentificationAndAccount147>,
390    #[serde(rename = "RcvrsIntrmy2Dtls", skip_serializing_if = "Option::is_none")]
391    pub rcvrs_intrmy_2_dtls: Option<PartyIdentificationAndAccount147>,
392    #[validate]
393    #[serde(rename = "RcvgAgtDtls")]
394    pub rcvg_agt_dtls: PartyIdentificationAndAccount147,
395}
396#[derive(
397    Debug,
398    Default,
399    Clone,
400    PartialEq,
401    ::serde::Serialize,
402    ::serde::Deserialize,
403    ::derive_builder::Builder,
404    ::validator::Validate,
405)]
406pub struct CancellationRight1ChoiceEnum {
407    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
408    pub cd: Option<CancellationRight1Code>,
409    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
410    pub prtry: Option<GenericIdentification47>,
411}
412#[derive(
413    Debug,
414    Default,
415    Clone,
416    PartialEq,
417    ::serde::Serialize,
418    ::serde::Deserialize,
419    ::derive_builder::Builder,
420    ::validator::Validate,
421)]
422pub struct CancellationRight1Choice {
423    #[serde(flatten)]
424    pub value: CancellationRight1ChoiceEnum,
425}
426#[derive(
427    Debug,
428    Default,
429    Clone,
430    PartialEq,
431    ::serde::Serialize,
432    ::serde::Deserialize,
433    ::derive_builder::Builder,
434    ::validator::Validate,
435)]
436pub struct Max350Text {
437    #[validate(length(min = 1, max = 350,))]
438    #[serde(rename = "$text")]
439    pub value: String,
440}
441#[derive(
442    Debug,
443    Default,
444    Clone,
445    PartialEq,
446    ::serde::Serialize,
447    ::serde::Deserialize,
448    ::derive_builder::Builder,
449    ::validator::Validate,
450)]
451pub struct Max3Text {
452    #[validate(length(min = 1, max = 3,))]
453    #[serde(rename = "$text")]
454    pub value: String,
455}
456#[derive(
457    Debug,
458    Default,
459    Clone,
460    PartialEq,
461    ::serde::Serialize,
462    ::serde::Deserialize,
463    ::derive_builder::Builder,
464    ::validator::Validate,
465)]
466pub struct NameAndAddress4 {
467    #[serde(rename = "Nm", skip_serializing_if = "Option::is_none")]
468    pub nm: Option<Max350Text>,
469    #[validate]
470    #[serde(rename = "Adr")]
471    pub adr: PostalAddress1,
472}
473#[derive(
474    Debug,
475    Default,
476    Clone,
477    PartialEq,
478    ::serde::Serialize,
479    ::serde::Deserialize,
480    ::derive_builder::Builder,
481    ::validator::Validate,
482)]
483pub struct SicovamIdentifier {
484    #[serde(rename = "$text")]
485    pub value: String,
486}
487#[derive(
488    Debug,
489    Default,
490    Clone,
491    PartialEq,
492    ::serde::Serialize,
493    ::serde::Deserialize,
494    ::derive_builder::Builder,
495    ::validator::Validate,
496)]
497pub struct Iban2007Identifier {
498    #[validate(regex = "IBAN_2007_IDENTIFIER_REGEX")]
499    #[serde(rename = "$text")]
500    pub value: String,
501}
502#[derive(
503    Debug,
504    Default,
505    Clone,
506    PartialEq,
507    ::serde::Serialize,
508    ::serde::Deserialize,
509    ::derive_builder::Builder,
510    ::validator::Validate,
511)]
512pub struct SourceOfCash1ChoiceEnum {
513    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
514    pub cd: Option<SourceOfCash1Code>,
515    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
516    pub prtry: Option<GenericIdentification47>,
517}
518#[derive(
519    Debug,
520    Default,
521    Clone,
522    PartialEq,
523    ::serde::Serialize,
524    ::serde::Deserialize,
525    ::derive_builder::Builder,
526    ::validator::Validate,
527)]
528pub struct SourceOfCash1Choice {
529    #[serde(flatten)]
530    pub value: SourceOfCash1ChoiceEnum,
531}
532#[derive(
533    Debug,
534    Default,
535    Clone,
536    PartialEq,
537    ::serde::Serialize,
538    ::serde::Deserialize,
539    ::derive_builder::Builder,
540    ::validator::Validate,
541)]
542pub struct DateFormat42ChoiceEnum {
543    #[serde(rename = "YrMnth", skip_serializing_if = "Option::is_none")]
544    pub yr_mnth: Option<IsoYearMonth>,
545    #[serde(rename = "YrMnthDay", skip_serializing_if = "Option::is_none")]
546    pub yr_mnth_day: Option<IsoDate>,
547}
548#[derive(
549    Debug,
550    Default,
551    Clone,
552    PartialEq,
553    ::serde::Serialize,
554    ::serde::Deserialize,
555    ::derive_builder::Builder,
556    ::validator::Validate,
557)]
558pub struct DateFormat42Choice {
559    #[serde(flatten)]
560    pub value: DateFormat42ChoiceEnum,
561}
562#[derive(
563    Debug,
564    Default,
565    Clone,
566    PartialEq,
567    ::serde::Serialize,
568    ::serde::Deserialize,
569    ::derive_builder::Builder,
570    ::validator::Validate,
571)]
572pub struct SubscriptionBulkOrderV04 {
573    #[validate]
574    #[serde(rename = "MsgId")]
575    pub msg_id: MessageIdentification1,
576    #[serde(rename = "PoolRef", skip_serializing_if = "Option::is_none")]
577    pub pool_ref: Option<AdditionalReference9>,
578    #[validate(length(min = 0,))]
579    #[serde(rename = "PrvsRef", default)]
580    pub prvs_ref: Vec<AdditionalReference8>,
581    #[validate]
582    #[serde(rename = "BlkOrdrDtls")]
583    pub blk_ordr_dtls: SubscriptionBulkOrder5,
584    #[serde(rename = "CpyDtls", skip_serializing_if = "Option::is_none")]
585    pub cpy_dtls: Option<CopyInformation4>,
586    #[validate(length(min = 0,))]
587    #[serde(rename = "Xtnsn", default)]
588    pub xtnsn: Vec<Extension1>,
589}
590#[derive(
591    Debug,
592    Default,
593    Clone,
594    PartialEq,
595    ::serde::Serialize,
596    ::serde::Deserialize,
597    ::derive_builder::Builder,
598    ::validator::Validate,
599)]
600pub struct TransactionChannelType1ChoiceEnum {
601    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
602    pub cd: Option<TransactionChannel2Code>,
603    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
604    pub prtry: Option<GenericIdentification47>,
605}
606#[derive(
607    Debug,
608    Default,
609    Clone,
610    PartialEq,
611    ::serde::Serialize,
612    ::serde::Deserialize,
613    ::derive_builder::Builder,
614    ::validator::Validate,
615)]
616pub struct TransactionChannelType1Choice {
617    #[serde(flatten)]
618    pub value: TransactionChannelType1ChoiceEnum,
619}
620#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
621pub enum CancellationRight1Code {
622    #[serde(rename = "VALI")]
623    Vali,
624    #[serde(rename = "NOXO")]
625    Noxo,
626    #[serde(rename = "NOWA")]
627    Nowa,
628    #[serde(rename = "NOIN")]
629    Noin,
630    #[default]
631    Unknown,
632}
633#[derive(
634    Debug,
635    Default,
636    Clone,
637    PartialEq,
638    ::serde::Serialize,
639    ::serde::Deserialize,
640    ::derive_builder::Builder,
641    ::validator::Validate,
642)]
643pub struct CountryCode {
644    #[validate(regex = "COUNTRY_CODE_REGEX")]
645    #[serde(rename = "$text")]
646    pub value: String,
647}
648#[derive(
649    Debug,
650    Default,
651    Clone,
652    PartialEq,
653    ::serde::Serialize,
654    ::serde::Deserialize,
655    ::derive_builder::Builder,
656    ::validator::Validate,
657)]
658pub struct FinancialInstrumentQuantity27ChoiceEnum {
659    #[serde(rename = "UnitsNb", skip_serializing_if = "Option::is_none")]
660    pub units_nb: Option<DecimalNumber>,
661    #[serde(rename = "NetAmt", skip_serializing_if = "Option::is_none")]
662    pub net_amt: Option<ActiveOrHistoricCurrencyAndAmount>,
663    #[serde(rename = "GrssAmt", skip_serializing_if = "Option::is_none")]
664    pub grss_amt: Option<ActiveOrHistoricCurrencyAndAmount>,
665}
666#[derive(
667    Debug,
668    Default,
669    Clone,
670    PartialEq,
671    ::serde::Serialize,
672    ::serde::Deserialize,
673    ::derive_builder::Builder,
674    ::validator::Validate,
675)]
676pub struct FinancialInstrumentQuantity27Choice {
677    #[serde(flatten)]
678    pub value: FinancialInstrumentQuantity27ChoiceEnum,
679}
680#[derive(
681    Debug,
682    Default,
683    Clone,
684    PartialEq,
685    ::serde::Serialize,
686    ::serde::Deserialize,
687    ::derive_builder::Builder,
688    ::validator::Validate,
689)]
690pub struct RussianCentralBankIdentificationCodeIdentifier {
691    #[validate(regex = "RUSSIAN_CENTRAL_BANK_IDENTIFICATION_CODE_IDENTIFIER_REGEX")]
692    #[serde(rename = "$text")]
693    pub value: String,
694}
695#[derive(
696    Debug,
697    Default,
698    Clone,
699    PartialEq,
700    ::serde::Serialize,
701    ::serde::Deserialize,
702    ::derive_builder::Builder,
703    ::validator::Validate,
704)]
705pub struct SubscriptionOrder15 {
706    #[validate]
707    #[serde(rename = "OrdrRef")]
708    pub ordr_ref: Max35Text,
709    #[serde(rename = "ClntRef", skip_serializing_if = "Option::is_none")]
710    pub clnt_ref: Option<Max35Text>,
711    #[validate(length(min = 0, max = 10,))]
712    #[serde(rename = "OrdrTp", default)]
713    pub ordr_tp: Vec<FundOrderType4Choice>,
714    #[serde(rename = "AmtOrUnits")]
715    pub amt_or_units: FinancialInstrumentQuantity27Choice,
716    #[serde(rename = "Rndg", skip_serializing_if = "Option::is_none")]
717    pub rndg: Option<RoundingDirection2Code>,
718    #[serde(rename = "SttlmAmt", skip_serializing_if = "Option::is_none")]
719    pub sttlm_amt: Option<ActiveCurrencyAndAmount>,
720    #[serde(rename = "CshSttlmDt", skip_serializing_if = "Option::is_none")]
721    pub csh_sttlm_dt: Option<IsoDate>,
722    #[serde(rename = "SttlmMtd", skip_serializing_if = "Option::is_none")]
723    pub sttlm_mtd: Option<DeliveryReceiptType2Code>,
724    #[serde(rename = "IncmPref", skip_serializing_if = "Option::is_none")]
725    pub incm_pref: Option<IncomePreference1Code>,
726    #[validate]
727    #[serde(rename = "InvstmtAcctDtls")]
728    pub invstmt_acct_dtls: InvestmentAccount58,
729    #[validate(length(min = 0,))]
730    #[serde(rename = "BnfcryDtls", default)]
731    pub bnfcry_dtls: Vec<IndividualPerson31>,
732    #[serde(rename = "FXDtls", skip_serializing_if = "Option::is_none")]
733    pub fx_dtls: Option<ForeignExchangeTerms32>,
734    #[serde(rename = "LttrInttRef", skip_serializing_if = "Option::is_none")]
735    pub lttr_intt_ref: Option<Max35Text>,
736    #[serde(rename = "AcmltnRghtRef", skip_serializing_if = "Option::is_none")]
737    pub acmltn_rght_ref: Option<Max35Text>,
738    #[serde(rename = "TxOvrhd", skip_serializing_if = "Option::is_none")]
739    pub tx_ovrhd: Option<FeeAndTax1>,
740    #[serde(rename = "SttlmAndCtdyDtls", skip_serializing_if = "Option::is_none")]
741    pub sttlm_and_ctdy_dtls: Option<FundSettlementParameters11>,
742    #[validate]
743    #[serde(rename = "PhysDlvryInd")]
744    pub phys_dlvry_ind: YesNoIndicator,
745    #[serde(rename = "PhysDlvryDtls", skip_serializing_if = "Option::is_none")]
746    pub phys_dlvry_dtls: Option<NameAndAddress4>,
747    #[serde(rename = "CshSttlmDtls", skip_serializing_if = "Option::is_none")]
748    pub csh_sttlm_dtls: Option<PaymentTransaction70>,
749    #[serde(rename = "NonStdSttlmInf", skip_serializing_if = "Option::is_none")]
750    pub non_std_sttlm_inf: Option<Max350Text>,
751    #[validate(length(min = 0, max = 4,))]
752    #[serde(rename = "StffClntBrkdwn", default)]
753    pub stff_clnt_brkdwn: Vec<InvestmentFundsOrderBreakdown2>,
754    #[serde(rename = "FinAdvc", skip_serializing_if = "Option::is_none")]
755    pub fin_advc: Option<FinancialAdvice1Code>,
756    #[serde(rename = "NgtdTrad", skip_serializing_if = "Option::is_none")]
757    pub ngtd_trad: Option<NegotiatedTrade1Code>,
758    #[validate(length(min = 0, max = 10,))]
759    #[serde(rename = "RltdPtyDtls", default)]
760    pub rltd_pty_dtls: Vec<Intermediary40>,
761    #[serde(rename = "Equlstn", skip_serializing_if = "Option::is_none")]
762    pub equlstn: Option<Equalisation1>,
763    #[validate(length(min = 0,))]
764    #[serde(rename = "SrcOfCsh", default)]
765    pub src_of_csh: Vec<SourceOfCash1Choice>,
766    #[serde(rename = "CstmrCndctClssfctn", skip_serializing_if = "Option::is_none")]
767    pub cstmr_cndct_clssfctn: Option<CustomerConductClassification1Choice>,
768    #[serde(rename = "TxChanlTp", skip_serializing_if = "Option::is_none")]
769    pub tx_chanl_tp: Option<TransactionChannelType1Choice>,
770    #[serde(rename = "SgntrTp", skip_serializing_if = "Option::is_none")]
771    pub sgntr_tp: Option<SignatureType1Choice>,
772    #[serde(rename = "OrdrWvrDtls", skip_serializing_if = "Option::is_none")]
773    pub ordr_wvr_dtls: Option<OrderWaiver1>,
774}
775#[derive(
776    Debug,
777    Default,
778    Clone,
779    PartialEq,
780    ::serde::Serialize,
781    ::serde::Deserialize,
782    ::derive_builder::Builder,
783    ::validator::Validate,
784)]
785pub struct InvestmentAccount60 {
786    #[serde(rename = "AcctId", skip_serializing_if = "Option::is_none")]
787    pub acct_id: Option<Max35Text>,
788    #[serde(rename = "Tp", skip_serializing_if = "Option::is_none")]
789    pub tp: Option<InvestmentAccountType1Choice>,
790}
791#[derive(
792    Debug,
793    Default,
794    Clone,
795    PartialEq,
796    ::serde::Serialize,
797    ::serde::Deserialize,
798    ::derive_builder::Builder,
799    ::validator::Validate,
800)]
801pub struct ActiveCurrencyCode {
802    #[validate(regex = "ACTIVE_CURRENCY_CODE_REGEX")]
803    #[serde(rename = "$text")]
804    pub value: String,
805}
806#[derive(
807    Debug,
808    Default,
809    Clone,
810    PartialEq,
811    ::serde::Serialize,
812    ::serde::Deserialize,
813    ::derive_builder::Builder,
814    ::validator::Validate,
815)]
816pub struct Max16Text {
817    #[validate(length(min = 1, max = 16,))]
818    #[serde(rename = "$text")]
819    pub value: String,
820}
821#[derive(
822    Debug,
823    Default,
824    Clone,
825    PartialEq,
826    ::serde::Serialize,
827    ::serde::Deserialize,
828    ::derive_builder::Builder,
829    ::validator::Validate,
830)]
831pub struct BaseOneRate {
832    #[serde(rename = "$text")]
833    pub value: f64,
834}
835#[derive(
836    Debug,
837    Default,
838    Clone,
839    PartialEq,
840    ::serde::Serialize,
841    ::serde::Deserialize,
842    ::derive_builder::Builder,
843    ::validator::Validate,
844)]
845pub struct CreditTransfer8 {
846    #[serde(rename = "Ref", skip_serializing_if = "Option::is_none")]
847    pub r#ref: Option<Max35Text>,
848    #[serde(rename = "Dbtr", skip_serializing_if = "Option::is_none")]
849    pub dbtr: Option<PartyIdentification113>,
850    #[serde(rename = "DbtrAcct", skip_serializing_if = "Option::is_none")]
851    pub dbtr_acct: Option<AccountIdentificationAndName5>,
852    #[serde(rename = "DbtrAgt", skip_serializing_if = "Option::is_none")]
853    pub dbtr_agt: Option<FinancialInstitutionIdentification10>,
854    #[serde(rename = "DbtrAgtAcct", skip_serializing_if = "Option::is_none")]
855    pub dbtr_agt_acct: Option<AccountIdentificationAndName5>,
856    #[serde(rename = "IntrmyAgt1", skip_serializing_if = "Option::is_none")]
857    pub intrmy_agt_1: Option<FinancialInstitutionIdentification10>,
858    #[serde(rename = "IntrmyAgt1Acct", skip_serializing_if = "Option::is_none")]
859    pub intrmy_agt_1_acct: Option<AccountIdentificationAndName5>,
860    #[serde(rename = "IntrmyAgt2", skip_serializing_if = "Option::is_none")]
861    pub intrmy_agt_2: Option<FinancialInstitutionIdentification10>,
862    #[serde(rename = "IntrmyAgt2Acct", skip_serializing_if = "Option::is_none")]
863    pub intrmy_agt_2_acct: Option<AccountIdentificationAndName5>,
864    #[validate]
865    #[serde(rename = "CdtrAgt")]
866    pub cdtr_agt: FinancialInstitutionIdentification10,
867    #[serde(rename = "CdtrAgtAcct", skip_serializing_if = "Option::is_none")]
868    pub cdtr_agt_acct: Option<AccountIdentificationAndName5>,
869    #[serde(rename = "Cdtr", skip_serializing_if = "Option::is_none")]
870    pub cdtr: Option<PartyIdentification113>,
871    #[validate]
872    #[serde(rename = "CdtrAcct")]
873    pub cdtr_acct: AccountIdentificationAndName5,
874}
875#[derive(
876    Debug,
877    Default,
878    Clone,
879    PartialEq,
880    ::serde::Serialize,
881    ::serde::Deserialize,
882    ::derive_builder::Builder,
883    ::validator::Validate,
884)]
885pub struct ActiveCurrencyAndAmount {
886    #[serde(rename = "ActiveCurrencyAndAmount")]
887    pub value: ActiveCurrencyAndAmountSimpleType,
888    #[serde(rename = "@Ccy")]
889    pub ccy: ActiveCurrencyCode,
890}
891#[derive(
892    Debug,
893    Default,
894    Clone,
895    PartialEq,
896    ::serde::Serialize,
897    ::serde::Deserialize,
898    ::derive_builder::Builder,
899    ::validator::Validate,
900)]
901pub struct ChargeOrCommissionDiscount1 {
902    #[serde(rename = "Amt", skip_serializing_if = "Option::is_none")]
903    pub amt: Option<ActiveCurrencyAndAmount>,
904    #[serde(rename = "Rate", skip_serializing_if = "Option::is_none")]
905    pub rate: Option<PercentageRate>,
906    #[serde(rename = "Bsis", skip_serializing_if = "Option::is_none")]
907    pub bsis: Option<WaivingInstruction2Choice>,
908}
909#[derive(
910    Debug,
911    Default,
912    Clone,
913    PartialEq,
914    ::serde::Serialize,
915    ::serde::Deserialize,
916    ::derive_builder::Builder,
917    ::validator::Validate,
918)]
919pub struct IdentificationSource1ChoiceEnum {
920    #[serde(rename = "Dmst", skip_serializing_if = "Option::is_none")]
921    pub dmst: Option<CountryCode>,
922    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
923    pub prtry: Option<Max35Text>,
924}
925#[derive(
926    Debug,
927    Default,
928    Clone,
929    PartialEq,
930    ::serde::Serialize,
931    ::serde::Deserialize,
932    ::derive_builder::Builder,
933    ::validator::Validate,
934)]
935pub struct IdentificationSource1Choice {
936    #[serde(flatten)]
937    pub value: IdentificationSource1ChoiceEnum,
938}
939#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
940pub enum IncomePreference1Code {
941    #[serde(rename = "CASH")]
942    Cash,
943    #[serde(rename = "DRIP")]
944    Drip,
945    #[default]
946    Unknown,
947}
948#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
949pub enum FundOrderType5Code {
950    #[serde(rename = "NSPN")]
951    Nspn,
952    #[serde(rename = "NCPN")]
953    Ncpn,
954    #[serde(rename = "SWSP")]
955    Swsp,
956    #[serde(rename = "CWSP")]
957    Cwsp,
958    #[default]
959    Unknown,
960}
961#[derive(
962    Debug,
963    Default,
964    Clone,
965    PartialEq,
966    ::serde::Serialize,
967    ::serde::Deserialize,
968    ::derive_builder::Builder,
969    ::validator::Validate,
970)]
971pub struct IrishNscIdentifier {
972    #[validate(regex = "IRISH_NSC_IDENTIFIER_REGEX")]
973    #[serde(rename = "$text")]
974    pub value: String,
975}
976#[derive(
977    Debug,
978    Default,
979    Clone,
980    PartialEq,
981    ::serde::Serialize,
982    ::serde::Deserialize,
983    ::derive_builder::Builder,
984    ::validator::Validate,
985)]
986pub struct BelgianIdentifier {
987    #[serde(rename = "$text")]
988    pub value: String,
989}
990#[derive(
991    Debug,
992    Default,
993    Clone,
994    PartialEq,
995    ::serde::Serialize,
996    ::serde::Deserialize,
997    ::derive_builder::Builder,
998    ::validator::Validate,
999)]
1000pub struct QuickIdentifier {
1001    #[serde(rename = "$text")]
1002    pub value: String,
1003}
1004#[derive(
1005    Debug,
1006    Default,
1007    Clone,
1008    PartialEq,
1009    ::serde::Serialize,
1010    ::serde::Deserialize,
1011    ::derive_builder::Builder,
1012    ::validator::Validate,
1013)]
1014pub struct ActiveCurrencyAndAmountSimpleType {
1015    #[validate(range(min = 0,))]
1016    #[serde(rename = "$text")]
1017    pub value: f64,
1018}
1019#[derive(
1020    Debug,
1021    Default,
1022    Clone,
1023    PartialEq,
1024    ::serde::Serialize,
1025    ::serde::Deserialize,
1026    ::derive_builder::Builder,
1027    ::validator::Validate,
1028)]
1029pub struct SafekeepingPlaceTypeAndText6 {
1030    #[serde(rename = "SfkpgPlcTp")]
1031    pub sfkpg_plc_tp: SafekeepingPlace2Code,
1032    #[serde(rename = "Id", skip_serializing_if = "Option::is_none")]
1033    pub id: Option<Max35Text>,
1034}
1035#[derive(
1036    Debug,
1037    Default,
1038    Clone,
1039    PartialEq,
1040    ::serde::Serialize,
1041    ::serde::Deserialize,
1042    ::derive_builder::Builder,
1043    ::validator::Validate,
1044)]
1045pub struct FinancialInstitutionIdentification10 {
1046    #[serde(rename = "Pty")]
1047    pub pty: FinancialInstitutionIdentification8Choice,
1048    #[serde(rename = "LEI", skip_serializing_if = "Option::is_none")]
1049    pub lei: Option<LeiIdentifier>,
1050}
1051#[derive(
1052    Debug,
1053    Default,
1054    Clone,
1055    PartialEq,
1056    ::serde::Serialize,
1057    ::serde::Deserialize,
1058    ::derive_builder::Builder,
1059    ::validator::Validate,
1060)]
1061pub struct OtherIdentification3ChoiceEnum {
1062    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
1063    pub prtry: Option<GenericIdentification47>,
1064    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
1065    pub cd: Option<PartyIdentificationType7Code>,
1066}
1067#[derive(
1068    Debug,
1069    Default,
1070    Clone,
1071    PartialEq,
1072    ::serde::Serialize,
1073    ::serde::Deserialize,
1074    ::derive_builder::Builder,
1075    ::validator::Validate,
1076)]
1077pub struct OtherIdentification3Choice {
1078    #[serde(flatten)]
1079    pub value: OtherIdentification3ChoiceEnum,
1080}
1081#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1082pub enum FundCashAccount2Code {
1083    #[serde(rename = "CASH")]
1084    Cash,
1085    #[serde(rename = "CPFO")]
1086    Cpfo,
1087    #[serde(rename = "CPFS")]
1088    Cpfs,
1089    #[serde(rename = "SRSA")]
1090    Srsa,
1091    #[default]
1092    Unknown,
1093}
1094#[derive(
1095    Debug,
1096    Default,
1097    Clone,
1098    PartialEq,
1099    ::serde::Serialize,
1100    ::serde::Deserialize,
1101    ::derive_builder::Builder,
1102    ::validator::Validate,
1103)]
1104pub struct PartyIdentification113 {
1105    #[serde(rename = "Pty")]
1106    pub pty: PartyIdentification90Choice,
1107    #[serde(rename = "LEI", skip_serializing_if = "Option::is_none")]
1108    pub lei: Option<LeiIdentifier>,
1109}
1110#[derive(
1111    Debug,
1112    Default,
1113    Clone,
1114    PartialEq,
1115    ::serde::Serialize,
1116    ::serde::Deserialize,
1117    ::derive_builder::Builder,
1118    ::validator::Validate,
1119)]
1120pub struct ExemptionReason1ChoiceEnum {
1121    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
1122    pub prtry: Option<GenericIdentification47>,
1123    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
1124    pub cd: Option<TaxExemptReason1Code>,
1125}
1126#[derive(
1127    Debug,
1128    Default,
1129    Clone,
1130    PartialEq,
1131    ::serde::Serialize,
1132    ::serde::Deserialize,
1133    ::derive_builder::Builder,
1134    ::validator::Validate,
1135)]
1136pub struct ExemptionReason1Choice {
1137    #[serde(flatten)]
1138    pub value: ExemptionReason1ChoiceEnum,
1139}
1140#[derive(
1141    Debug,
1142    Default,
1143    Clone,
1144    PartialEq,
1145    ::serde::Serialize,
1146    ::serde::Deserialize,
1147    ::derive_builder::Builder,
1148    ::validator::Validate,
1149)]
1150pub struct SubAccount6 {
1151    #[validate]
1152    #[serde(rename = "Id")]
1153    pub id: Max35Text,
1154    #[serde(rename = "Nm", skip_serializing_if = "Option::is_none")]
1155    pub nm: Option<Max35Text>,
1156    #[serde(rename = "Chrtc", skip_serializing_if = "Option::is_none")]
1157    pub chrtc: Option<Max35Text>,
1158    #[serde(rename = "AcctDsgnt", skip_serializing_if = "Option::is_none")]
1159    pub acct_dsgnt: Option<Max35Text>,
1160}
1161#[derive(
1162    Debug,
1163    Default,
1164    Clone,
1165    PartialEq,
1166    ::serde::Serialize,
1167    ::serde::Deserialize,
1168    ::derive_builder::Builder,
1169    ::validator::Validate,
1170)]
1171pub struct PostalAddress1 {
1172    #[serde(rename = "AdrTp", skip_serializing_if = "Option::is_none")]
1173    pub adr_tp: Option<AddressType2Code>,
1174    #[validate(length(min = 0, max = 5,))]
1175    #[serde(rename = "AdrLine", default)]
1176    pub adr_line: Vec<Max70Text>,
1177    #[serde(rename = "StrtNm", skip_serializing_if = "Option::is_none")]
1178    pub strt_nm: Option<Max70Text>,
1179    #[serde(rename = "BldgNb", skip_serializing_if = "Option::is_none")]
1180    pub bldg_nb: Option<Max16Text>,
1181    #[serde(rename = "PstCd", skip_serializing_if = "Option::is_none")]
1182    pub pst_cd: Option<Max16Text>,
1183    #[serde(rename = "TwnNm", skip_serializing_if = "Option::is_none")]
1184    pub twn_nm: Option<Max35Text>,
1185    #[serde(rename = "CtrySubDvsn", skip_serializing_if = "Option::is_none")]
1186    pub ctry_sub_dvsn: Option<Max35Text>,
1187    #[serde(rename = "Ctry")]
1188    pub ctry: CountryCode,
1189}
1190#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1191pub enum ResidentialStatus1Code {
1192    #[serde(rename = "RESI")]
1193    Resi,
1194    #[serde(rename = "PRES")]
1195    Pres,
1196    #[serde(rename = "NRES")]
1197    Nres,
1198    #[default]
1199    Unknown,
1200}
1201#[derive(
1202    Debug,
1203    Default,
1204    Clone,
1205    PartialEq,
1206    ::serde::Serialize,
1207    ::serde::Deserialize,
1208    ::derive_builder::Builder,
1209    ::validator::Validate,
1210)]
1211pub struct ChipsUniversalIdentifier {
1212    #[validate(regex = "CHIPS_UNIVERSAL_IDENTIFIER_REGEX")]
1213    #[serde(rename = "$text")]
1214    pub value: String,
1215}
1216#[derive(
1217    Debug,
1218    Default,
1219    Clone,
1220    PartialEq,
1221    ::serde::Serialize,
1222    ::serde::Deserialize,
1223    ::derive_builder::Builder,
1224    ::validator::Validate,
1225)]
1226pub struct PlaceOfTradeIdentification1ChoiceEnum {
1227    #[serde(rename = "OverTheCntr", skip_serializing_if = "Option::is_none")]
1228    pub over_the_cntr: Option<Max35Text>,
1229    #[serde(rename = "Xchg", skip_serializing_if = "Option::is_none")]
1230    pub xchg: Option<MicIdentifier>,
1231    #[serde(rename = "Pty", skip_serializing_if = "Option::is_none")]
1232    pub pty: Option<AnyBicIdentifier>,
1233    #[serde(rename = "Ctry", skip_serializing_if = "Option::is_none")]
1234    pub ctry: Option<CountryCode>,
1235}
1236#[derive(
1237    Debug,
1238    Default,
1239    Clone,
1240    PartialEq,
1241    ::serde::Serialize,
1242    ::serde::Deserialize,
1243    ::derive_builder::Builder,
1244    ::validator::Validate,
1245)]
1246pub struct PlaceOfTradeIdentification1Choice {
1247    #[serde(flatten)]
1248    pub value: PlaceOfTradeIdentification1ChoiceEnum,
1249}
1250#[derive(
1251    Debug,
1252    Default,
1253    Clone,
1254    PartialEq,
1255    ::serde::Serialize,
1256    ::serde::Deserialize,
1257    ::derive_builder::Builder,
1258    ::validator::Validate,
1259)]
1260pub struct PartyIdentificationAndAccount147 {
1261    #[validate]
1262    #[serde(rename = "PtyId")]
1263    pub pty_id: PartyIdentification113,
1264    #[serde(rename = "AcctId", skip_serializing_if = "Option::is_none")]
1265    pub acct_id: Option<Max35Text>,
1266}
1267#[derive(
1268    Debug,
1269    Default,
1270    Clone,
1271    PartialEq,
1272    ::serde::Serialize,
1273    ::serde::Deserialize,
1274    ::derive_builder::Builder,
1275    ::validator::Validate,
1276)]
1277pub struct LeiIdentifier {
1278    #[validate(regex = "LEI_IDENTIFIER_REGEX")]
1279    #[serde(rename = "$text")]
1280    pub value: String,
1281}
1282#[derive(
1283    Debug,
1284    Default,
1285    Clone,
1286    PartialEq,
1287    ::serde::Serialize,
1288    ::serde::Deserialize,
1289    ::derive_builder::Builder,
1290    ::validator::Validate,
1291)]
1292pub struct InvestmentFundRole2ChoiceEnum {
1293    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
1294    pub cd: Option<InvestmentFundRole2Code>,
1295    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
1296    pub prtry: Option<GenericIdentification47>,
1297}
1298#[derive(
1299    Debug,
1300    Default,
1301    Clone,
1302    PartialEq,
1303    ::serde::Serialize,
1304    ::serde::Deserialize,
1305    ::derive_builder::Builder,
1306    ::validator::Validate,
1307)]
1308pub struct InvestmentFundRole2Choice {
1309    #[serde(flatten)]
1310    pub value: InvestmentFundRole2ChoiceEnum,
1311}
1312#[derive(
1313    Debug,
1314    Default,
1315    Clone,
1316    PartialEq,
1317    ::serde::Serialize,
1318    ::serde::Deserialize,
1319    ::derive_builder::Builder,
1320    ::validator::Validate,
1321)]
1322pub struct FinancialInstrument57 {
1323    #[serde(rename = "Id")]
1324    pub id: SecurityIdentification25Choice,
1325    #[serde(rename = "Nm", skip_serializing_if = "Option::is_none")]
1326    pub nm: Option<Max350Text>,
1327    #[serde(rename = "ShrtNm", skip_serializing_if = "Option::is_none")]
1328    pub shrt_nm: Option<Max35Text>,
1329    #[serde(rename = "SplmtryId", skip_serializing_if = "Option::is_none")]
1330    pub splmtry_id: Option<Max35Text>,
1331    #[serde(rename = "ClssTp", skip_serializing_if = "Option::is_none")]
1332    pub clss_tp: Option<Max35Text>,
1333    #[serde(rename = "SctiesForm", skip_serializing_if = "Option::is_none")]
1334    pub scties_form: Option<FormOfSecurity1Code>,
1335    #[serde(rename = "DstrbtnPlcy", skip_serializing_if = "Option::is_none")]
1336    pub dstrbtn_plcy: Option<DistributionPolicy1Code>,
1337    #[serde(rename = "PdctGrp", skip_serializing_if = "Option::is_none")]
1338    pub pdct_grp: Option<Max140Text>,
1339    #[serde(rename = "SrsId", skip_serializing_if = "Option::is_none")]
1340    pub srs_id: Option<Series1>,
1341}
1342#[derive(
1343    Debug,
1344    Default,
1345    Clone,
1346    PartialEq,
1347    ::serde::Serialize,
1348    ::serde::Deserialize,
1349    ::derive_builder::Builder,
1350    ::validator::Validate,
1351)]
1352pub struct TaxCalculationInformation9 {
1353    #[serde(rename = "Bsis")]
1354    pub bsis: TaxBasis1Choice,
1355}
1356#[derive(
1357    Debug,
1358    Default,
1359    Clone,
1360    PartialEq,
1361    ::serde::Serialize,
1362    ::serde::Deserialize,
1363    ::derive_builder::Builder,
1364    ::validator::Validate,
1365)]
1366pub struct BranchData {
1367    #[serde(rename = "Id", skip_serializing_if = "Option::is_none")]
1368    pub id: Option<Max35Text>,
1369    #[serde(rename = "Nm", skip_serializing_if = "Option::is_none")]
1370    pub nm: Option<Max35Text>,
1371    #[serde(rename = "PstlAdr", skip_serializing_if = "Option::is_none")]
1372    pub pstl_adr: Option<PostalAddress1>,
1373}
1374#[derive(
1375    Debug,
1376    Default,
1377    Clone,
1378    PartialEq,
1379    ::serde::Serialize,
1380    ::serde::Deserialize,
1381    ::derive_builder::Builder,
1382    ::validator::Validate,
1383)]
1384pub struct TaxType3ChoiceEnum {
1385    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
1386    pub prtry: Option<GenericIdentification47>,
1387    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
1388    pub cd: Option<TaxType17Code>,
1389}
1390#[derive(
1391    Debug,
1392    Default,
1393    Clone,
1394    PartialEq,
1395    ::serde::Serialize,
1396    ::serde::Deserialize,
1397    ::derive_builder::Builder,
1398    ::validator::Validate,
1399)]
1400pub struct TaxType3Choice {
1401    #[serde(flatten)]
1402    pub value: TaxType3ChoiceEnum,
1403}
1404#[derive(
1405    Debug,
1406    Default,
1407    Clone,
1408    PartialEq,
1409    ::serde::Serialize,
1410    ::serde::Deserialize,
1411    ::derive_builder::Builder,
1412    ::validator::Validate,
1413)]
1414pub struct SwissBcIdentifier {
1415    #[validate(regex = "SWISS_BC_IDENTIFIER_REGEX")]
1416    #[serde(rename = "$text")]
1417    pub value: String,
1418}
1419#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1420pub enum TradeTransactionCondition5Code {
1421    #[serde(rename = "XCPN")]
1422    Xcpn,
1423    #[serde(rename = "CCPN")]
1424    Ccpn,
1425    #[default]
1426    Unknown,
1427}
1428#[derive(
1429    Debug,
1430    Default,
1431    Clone,
1432    PartialEq,
1433    ::serde::Serialize,
1434    ::serde::Deserialize,
1435    ::derive_builder::Builder,
1436    ::validator::Validate,
1437)]
1438pub struct GenericIdentification30 {
1439    #[validate]
1440    #[serde(rename = "Id")]
1441    pub id: Exact4AlphaNumericText,
1442    #[validate]
1443    #[serde(rename = "Issr")]
1444    pub issr: Max35Text,
1445    #[serde(rename = "SchmeNm", skip_serializing_if = "Option::is_none")]
1446    pub schme_nm: Option<Max35Text>,
1447}
1448#[derive(
1449    Debug,
1450    Default,
1451    Clone,
1452    PartialEq,
1453    ::serde::Serialize,
1454    ::serde::Deserialize,
1455    ::derive_builder::Builder,
1456    ::validator::Validate,
1457)]
1458pub struct ActiveOrHistoricCurrencyAndAmountSimpleType {
1459    #[validate(range(min = 0,))]
1460    #[serde(rename = "$text")]
1461    pub value: f64,
1462}
1463#[derive(
1464    Debug,
1465    Default,
1466    Clone,
1467    PartialEq,
1468    ::serde::Serialize,
1469    ::serde::Deserialize,
1470    ::derive_builder::Builder,
1471    ::validator::Validate,
1472)]
1473pub struct Max140Text {
1474    #[validate(length(min = 1, max = 140,))]
1475    #[serde(rename = "$text")]
1476    pub value: String,
1477}
1478#[derive(
1479    Debug,
1480    Default,
1481    Clone,
1482    PartialEq,
1483    ::serde::Serialize,
1484    ::serde::Deserialize,
1485    ::derive_builder::Builder,
1486    ::validator::Validate,
1487)]
1488pub struct SafekeepingPlaceFormat8ChoiceEnum {
1489    #[serde(rename = "Id", skip_serializing_if = "Option::is_none")]
1490    pub id: Option<SafekeepingPlaceTypeAndText6>,
1491    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
1492    pub prtry: Option<GenericIdentification78>,
1493    #[serde(rename = "Ctry", skip_serializing_if = "Option::is_none")]
1494    pub ctry: Option<CountryCode>,
1495    #[serde(rename = "TpAndId", skip_serializing_if = "Option::is_none")]
1496    pub tp_and_id: Option<SafekeepingPlaceTypeAndAnyBicIdentifier1>,
1497}
1498#[derive(
1499    Debug,
1500    Default,
1501    Clone,
1502    PartialEq,
1503    ::serde::Serialize,
1504    ::serde::Deserialize,
1505    ::derive_builder::Builder,
1506    ::validator::Validate,
1507)]
1508pub struct SafekeepingPlaceFormat8Choice {
1509    #[serde(flatten)]
1510    pub value: SafekeepingPlaceFormat8ChoiceEnum,
1511}
1512#[derive(
1513    Debug,
1514    Default,
1515    Clone,
1516    PartialEq,
1517    ::serde::Serialize,
1518    ::serde::Deserialize,
1519    ::derive_builder::Builder,
1520    ::validator::Validate,
1521)]
1522pub struct MicIdentifier {
1523    #[validate(regex = "MIC_IDENTIFIER_REGEX")]
1524    #[serde(rename = "$text")]
1525    pub value: String,
1526}
1527#[derive(
1528    Debug,
1529    Default,
1530    Clone,
1531    PartialEq,
1532    ::serde::Serialize,
1533    ::serde::Deserialize,
1534    ::derive_builder::Builder,
1535    ::validator::Validate,
1536)]
1537pub struct GermanBankleitzahlIdentifier {
1538    #[validate(regex = "GERMAN_BANKLEITZAHL_IDENTIFIER_REGEX")]
1539    #[serde(rename = "$text")]
1540    pub value: String,
1541}
1542#[derive(
1543    Debug,
1544    Default,
1545    Clone,
1546    PartialEq,
1547    ::serde::Serialize,
1548    ::serde::Deserialize,
1549    ::derive_builder::Builder,
1550    ::validator::Validate,
1551)]
1552pub struct NewZealandNccIdentifier {
1553    #[validate(regex = "NEW_ZEALAND_NCC_IDENTIFIER_REGEX")]
1554    #[serde(rename = "$text")]
1555    pub value: String,
1556}
1557#[derive(
1558    Debug,
1559    Default,
1560    Clone,
1561    PartialEq,
1562    ::serde::Serialize,
1563    ::serde::Deserialize,
1564    ::derive_builder::Builder,
1565    ::validator::Validate,
1566)]
1567pub struct FundSettlementParameters11 {
1568    #[serde(rename = "SttlmDt", skip_serializing_if = "Option::is_none")]
1569    pub sttlm_dt: Option<IsoDate>,
1570    #[validate]
1571    #[serde(rename = "SttlmPlc")]
1572    pub sttlm_plc: PartyIdentification113,
1573    #[serde(rename = "SfkpgPlc", skip_serializing_if = "Option::is_none")]
1574    pub sfkpg_plc: Option<SafekeepingPlaceFormat8Choice>,
1575    #[serde(rename = "SctiesSttlmSysId", skip_serializing_if = "Option::is_none")]
1576    pub scties_sttlm_sys_id: Option<Max35Text>,
1577    #[validate(length(min = 0,))]
1578    #[serde(rename = "TradTxCond", default)]
1579    pub trad_tx_cond: Vec<TradeTransactionCondition8Choice>,
1580    #[validate(length(min = 0,))]
1581    #[serde(rename = "SttlmTxCond", default)]
1582    pub sttlm_tx_cond: Vec<SettlementTransactionCondition30Choice>,
1583    #[validate]
1584    #[serde(rename = "RcvgSdDtls")]
1585    pub rcvg_sd_dtls: ReceivingPartiesAndAccount16,
1586    #[serde(rename = "DlvrgSdDtls", skip_serializing_if = "Option::is_none")]
1587    pub dlvrg_sd_dtls: Option<DeliveringPartiesAndAccount16>,
1588}
1589#[derive(
1590    Debug,
1591    Default,
1592    Clone,
1593    PartialEq,
1594    ::serde::Serialize,
1595    ::serde::Deserialize,
1596    ::derive_builder::Builder,
1597    ::validator::Validate,
1598)]
1599pub struct TaxAmountOrRate4ChoiceEnum {
1600    #[serde(rename = "Amt", skip_serializing_if = "Option::is_none")]
1601    pub amt: Option<ActiveCurrencyAndAmount>,
1602    #[serde(rename = "Rate", skip_serializing_if = "Option::is_none")]
1603    pub rate: Option<PercentageRate>,
1604}
1605#[derive(
1606    Debug,
1607    Default,
1608    Clone,
1609    PartialEq,
1610    ::serde::Serialize,
1611    ::serde::Deserialize,
1612    ::derive_builder::Builder,
1613    ::validator::Validate,
1614)]
1615pub struct TaxAmountOrRate4Choice {
1616    #[serde(flatten)]
1617    pub value: TaxAmountOrRate4ChoiceEnum,
1618}
1619#[derive(
1620    Debug,
1621    Default,
1622    Clone,
1623    PartialEq,
1624    ::serde::Serialize,
1625    ::serde::Deserialize,
1626    ::derive_builder::Builder,
1627    ::validator::Validate,
1628)]
1629pub struct IsoDate {
1630    #[serde(rename = "$text")]
1631    pub value: ::chrono::NaiveDate,
1632}
1633#[derive(
1634    Debug,
1635    Default,
1636    Clone,
1637    PartialEq,
1638    ::serde::Serialize,
1639    ::serde::Deserialize,
1640    ::derive_builder::Builder,
1641    ::validator::Validate,
1642)]
1643pub struct OrderWaiver1 {
1644    #[validate(length(min = 0,))]
1645    #[serde(rename = "OrdrWvrRsn", default)]
1646    pub ordr_wvr_rsn: Vec<OrderWaiverReason3Choice>,
1647    #[serde(rename = "InfVal", skip_serializing_if = "Option::is_none")]
1648    pub inf_val: Option<Max350Text>,
1649}
1650#[derive(
1651    Debug,
1652    Default,
1653    Clone,
1654    PartialEq,
1655    ::serde::Serialize,
1656    ::serde::Deserialize,
1657    ::derive_builder::Builder,
1658    ::validator::Validate,
1659)]
1660pub struct Account22 {
1661    #[validate]
1662    #[serde(rename = "Id")]
1663    pub id: Max35Text,
1664    #[serde(rename = "AcctSvcr", skip_serializing_if = "Option::is_none")]
1665    pub acct_svcr: Option<PartyIdentification113>,
1666}
1667#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1668pub enum TaxType17Code {
1669    #[serde(rename = "PROV")]
1670    Prov,
1671    #[serde(rename = "NATI")]
1672    Nati,
1673    #[serde(rename = "STAT")]
1674    Stat,
1675    #[serde(rename = "WITH")]
1676    With,
1677    #[serde(rename = "KAPA")]
1678    Kapa,
1679    #[serde(rename = "NKAP")]
1680    Nkap,
1681    #[serde(rename = "INPO")]
1682    Inpo,
1683    #[serde(rename = "STAM")]
1684    Stam,
1685    #[serde(rename = "WTAX")]
1686    Wtax,
1687    #[serde(rename = "INHT")]
1688    Inht,
1689    #[serde(rename = "SOSU")]
1690    Sosu,
1691    #[serde(rename = "CTAX")]
1692    Ctax,
1693    #[serde(rename = "GIFT")]
1694    Gift,
1695    #[serde(rename = "COAX")]
1696    Coax,
1697    #[serde(rename = "EUTR")]
1698    Eutr,
1699    #[serde(rename = "AKT1")]
1700    Akt1,
1701    #[serde(rename = "AKT2")]
1702    Akt2,
1703    #[serde(rename = "ZWIS")]
1704    Zwis,
1705    #[default]
1706    Unknown,
1707}
1708#[derive(
1709    Debug,
1710    Default,
1711    Clone,
1712    PartialEq,
1713    ::serde::Serialize,
1714    ::serde::Deserialize,
1715    ::derive_builder::Builder,
1716    ::validator::Validate,
1717)]
1718pub struct ItalianDomesticIdentifier {
1719    #[validate(regex = "ITALIAN_DOMESTIC_IDENTIFIER_REGEX")]
1720    #[serde(rename = "$text")]
1721    pub value: String,
1722}
1723#[derive(
1724    Debug,
1725    Default,
1726    Clone,
1727    PartialEq,
1728    ::serde::Serialize,
1729    ::serde::Deserialize,
1730    ::derive_builder::Builder,
1731    ::validator::Validate,
1732)]
1733pub struct OrderWaiverReason3ChoiceEnum {
1734    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
1735    pub cd: Option<OrderWaiverReason1Code>,
1736    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
1737    pub prtry: Option<GenericIdentification47>,
1738}
1739#[derive(
1740    Debug,
1741    Default,
1742    Clone,
1743    PartialEq,
1744    ::serde::Serialize,
1745    ::serde::Deserialize,
1746    ::derive_builder::Builder,
1747    ::validator::Validate,
1748)]
1749pub struct OrderWaiverReason3Choice {
1750    #[serde(flatten)]
1751    pub value: OrderWaiverReason3ChoiceEnum,
1752}
1753#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1754pub enum TaxationBasis5Code {
1755    #[serde(rename = "FLAT")]
1756    Flat,
1757    #[serde(rename = "GRAM")]
1758    Gram,
1759    #[serde(rename = "NEAM")]
1760    Neam,
1761    #[serde(rename = "NAVP")]
1762    Navp,
1763    #[serde(rename = "PERU")]
1764    Peru,
1765    #[default]
1766    Unknown,
1767}
1768#[derive(
1769    Debug,
1770    Default,
1771    Clone,
1772    PartialEq,
1773    ::serde::Serialize,
1774    ::serde::Deserialize,
1775    ::derive_builder::Builder,
1776    ::validator::Validate,
1777)]
1778pub struct EuroclearClearstreamIdentifier {
1779    #[validate(length(min = 1, max = 12,))]
1780    #[serde(rename = "$text")]
1781    pub value: String,
1782}
1783#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1784pub enum WaivingInstruction1Code {
1785    #[serde(rename = "WICA")]
1786    Wica,
1787    #[serde(rename = "WIUN")]
1788    Wiun,
1789    #[default]
1790    Unknown,
1791}
1792#[derive(
1793    Debug,
1794    Default,
1795    Clone,
1796    PartialEq,
1797    ::serde::Serialize,
1798    ::serde::Deserialize,
1799    ::derive_builder::Builder,
1800    ::validator::Validate,
1801)]
1802pub struct SafekeepingPlaceTypeAndAnyBicIdentifier1 {
1803    #[serde(rename = "SfkpgPlcTp")]
1804    pub sfkpg_plc_tp: SafekeepingPlace1Code,
1805    #[validate]
1806    #[serde(rename = "Id")]
1807    pub id: AnyBicIdentifier,
1808}
1809#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1810pub enum SourceOfCash1Code {
1811    #[serde(rename = "ALMY")]
1812    Almy,
1813    #[serde(rename = "CASH")]
1814    Cash,
1815    #[serde(rename = "COMP")]
1816    Comp,
1817    #[serde(rename = "EMIN")]
1818    Emin,
1819    #[serde(rename = "GIFT")]
1820    Gift,
1821    #[serde(rename = "INHE")]
1822    Inhe,
1823    #[serde(rename = "INLQ")]
1824    Inlq,
1825    #[serde(rename = "REST")]
1826    Rest,
1827    #[serde(rename = "REDM")]
1828    Redm,
1829    #[serde(rename = "REPY")]
1830    Repy,
1831    #[serde(rename = "SEAQ")]
1832    Seaq,
1833    #[serde(rename = "SALE")]
1834    Sale,
1835    #[serde(rename = "SVGS")]
1836    Svgs,
1837    #[serde(rename = "SELF")]
1838    XSelf,
1839    #[serde(rename = "WINS")]
1840    Wins,
1841    #[default]
1842    Unknown,
1843}
1844#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1845pub enum CardType1Code {
1846    #[serde(rename = "CRDT")]
1847    Crdt,
1848    #[serde(rename = "DBIT")]
1849    Dbit,
1850    #[default]
1851    Unknown,
1852}
1853#[derive(
1854    Debug,
1855    Default,
1856    Clone,
1857    PartialEq,
1858    ::serde::Serialize,
1859    ::serde::Deserialize,
1860    ::derive_builder::Builder,
1861    ::validator::Validate,
1862)]
1863pub struct ChipsParticipantIdentifier {
1864    #[validate(regex = "CHIPS_PARTICIPANT_IDENTIFIER_REGEX")]
1865    #[serde(rename = "$text")]
1866    pub value: String,
1867}
1868#[derive(
1869    Debug,
1870    Default,
1871    Clone,
1872    PartialEq,
1873    ::serde::Serialize,
1874    ::serde::Deserialize,
1875    ::derive_builder::Builder,
1876    ::validator::Validate,
1877)]
1878pub struct DirectDebitMandate6 {
1879    #[validate]
1880    #[serde(rename = "DbtrAcct")]
1881    pub dbtr_acct: AccountIdentificationAndName5,
1882    #[serde(rename = "Dbtr", skip_serializing_if = "Option::is_none")]
1883    pub dbtr: Option<PartyIdentification113>,
1884    #[serde(rename = "DbtrTaxIdNb", skip_serializing_if = "Option::is_none")]
1885    pub dbtr_tax_id_nb: Option<Max35Text>,
1886    #[serde(rename = "DbtrNtlRegnNb", skip_serializing_if = "Option::is_none")]
1887    pub dbtr_ntl_regn_nb: Option<Max35Text>,
1888    #[serde(rename = "Cdtr", skip_serializing_if = "Option::is_none")]
1889    pub cdtr: Option<PartyIdentification113>,
1890    #[validate]
1891    #[serde(rename = "DbtrAgt")]
1892    pub dbtr_agt: FinancialInstitutionIdentification10,
1893    #[serde(rename = "DbtrAgtBrnch", skip_serializing_if = "Option::is_none")]
1894    pub dbtr_agt_brnch: Option<BranchData>,
1895    #[serde(rename = "CdtrAgt", skip_serializing_if = "Option::is_none")]
1896    pub cdtr_agt: Option<FinancialInstitutionIdentification10>,
1897    #[serde(rename = "CdtrAgtBrnch", skip_serializing_if = "Option::is_none")]
1898    pub cdtr_agt_brnch: Option<BranchData>,
1899    #[serde(rename = "RegnId", skip_serializing_if = "Option::is_none")]
1900    pub regn_id: Option<Max35Text>,
1901    #[serde(rename = "MndtId", skip_serializing_if = "Option::is_none")]
1902    pub mndt_id: Option<Max35Text>,
1903}
1904#[derive(
1905    Debug,
1906    Default,
1907    Clone,
1908    PartialEq,
1909    ::serde::Serialize,
1910    ::serde::Deserialize,
1911    ::derive_builder::Builder,
1912    ::validator::Validate,
1913)]
1914pub struct ValorenIdentifier {
1915    #[serde(rename = "$text")]
1916    pub value: String,
1917}
1918#[derive(
1919    Debug,
1920    Default,
1921    Clone,
1922    PartialEq,
1923    ::serde::Serialize,
1924    ::serde::Deserialize,
1925    ::derive_builder::Builder,
1926    ::validator::Validate,
1927)]
1928pub struct SubscriptionBulkOrder5 {
1929    #[serde(rename = "MstrRef", skip_serializing_if = "Option::is_none")]
1930    pub mstr_ref: Option<Max35Text>,
1931    #[serde(rename = "PlcOfTrad", skip_serializing_if = "Option::is_none")]
1932    pub plc_of_trad: Option<PlaceOfTradeIdentification1Choice>,
1933    #[serde(rename = "OrdrDtTm", skip_serializing_if = "Option::is_none")]
1934    pub ordr_dt_tm: Option<IsoDateTime>,
1935    #[serde(rename = "XpryDtTm", skip_serializing_if = "Option::is_none")]
1936    pub xpry_dt_tm: Option<DateAndDateTimeChoice>,
1937    #[serde(rename = "ReqdFutrTradDt", skip_serializing_if = "Option::is_none")]
1938    pub reqd_futr_trad_dt: Option<IsoDate>,
1939    #[serde(rename = "CxlRght", skip_serializing_if = "Option::is_none")]
1940    pub cxl_rght: Option<CancellationRight1Choice>,
1941    #[validate]
1942    #[serde(rename = "FinInstrmDtls")]
1943    pub fin_instrm_dtls: FinancialInstrument57,
1944    #[validate(length(min = 1,))]
1945    #[serde(rename = "IndvOrdrDtls", default)]
1946    pub indv_ordr_dtls: Vec<SubscriptionOrder15>,
1947    #[serde(rename = "ReqdSttlmCcy", skip_serializing_if = "Option::is_none")]
1948    pub reqd_sttlm_ccy: Option<ActiveCurrencyCode>,
1949    #[serde(rename = "ReqdNAVCcy", skip_serializing_if = "Option::is_none")]
1950    pub reqd_nav_ccy: Option<ActiveOrHistoricCurrencyCode>,
1951    #[serde(rename = "TtlSttlmAmt", skip_serializing_if = "Option::is_none")]
1952    pub ttl_sttlm_amt: Option<ActiveCurrencyAndAmount>,
1953    #[serde(rename = "BlkCshSttlmDtls", skip_serializing_if = "Option::is_none")]
1954    pub blk_csh_sttlm_dtls: Option<PaymentTransaction70>,
1955}
1956#[derive(
1957    Debug,
1958    Default,
1959    Clone,
1960    PartialEq,
1961    ::serde::Serialize,
1962    ::serde::Deserialize,
1963    ::derive_builder::Builder,
1964    ::validator::Validate,
1965)]
1966pub struct ForeignExchangeTerms32 {
1967    #[serde(rename = "UnitCcy")]
1968    pub unit_ccy: ActiveCurrencyCode,
1969    #[serde(rename = "QtdCcy")]
1970    pub qtd_ccy: ActiveCurrencyCode,
1971    #[validate]
1972    #[serde(rename = "XchgRate")]
1973    pub xchg_rate: BaseOneRate,
1974    #[serde(rename = "QtnDt", skip_serializing_if = "Option::is_none")]
1975    pub qtn_dt: Option<IsoDateTime>,
1976    #[serde(rename = "QtgInstn", skip_serializing_if = "Option::is_none")]
1977    pub qtg_instn: Option<PartyIdentification113>,
1978}
1979#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
1980pub enum TransactionChannel2Code {
1981    #[serde(rename = "FIAD")]
1982    Fiad,
1983    #[serde(rename = "HOBA")]
1984    Hoba,
1985    #[serde(rename = "BRAN")]
1986    Bran,
1987    #[default]
1988    Unknown,
1989}
1990#[derive(
1991    Debug,
1992    Default,
1993    Clone,
1994    PartialEq,
1995    ::serde::Serialize,
1996    ::serde::Deserialize,
1997    ::derive_builder::Builder,
1998    ::validator::Validate,
1999)]
2000pub struct SettlementTransactionCondition30ChoiceEnum {
2001    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
2002    pub cd: Option<SettlementTransactionCondition11Code>,
2003    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
2004    pub prtry: Option<GenericIdentification30>,
2005}
2006#[derive(
2007    Debug,
2008    Default,
2009    Clone,
2010    PartialEq,
2011    ::serde::Serialize,
2012    ::serde::Deserialize,
2013    ::derive_builder::Builder,
2014    ::validator::Validate,
2015)]
2016pub struct SettlementTransactionCondition30Choice {
2017    #[serde(flatten)]
2018    pub value: SettlementTransactionCondition30ChoiceEnum,
2019}
2020#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2021pub enum FormOfSecurity1Code {
2022    #[serde(rename = "BEAR")]
2023    Bear,
2024    #[serde(rename = "REGD")]
2025    Regd,
2026    #[default]
2027    Unknown,
2028}
2029#[derive(
2030    Debug,
2031    Default,
2032    Clone,
2033    PartialEq,
2034    ::serde::Serialize,
2035    ::serde::Deserialize,
2036    ::derive_builder::Builder,
2037    ::validator::Validate,
2038)]
2039pub struct IndividualPerson31 {
2040    #[serde(rename = "Nm", skip_serializing_if = "Option::is_none")]
2041    pub nm: Option<Max350Text>,
2042    #[serde(rename = "BirthDt", skip_serializing_if = "Option::is_none")]
2043    pub birth_dt: Option<IsoDate>,
2044    #[serde(rename = "CtryAndResdtlSts", skip_serializing_if = "Option::is_none")]
2045    pub ctry_and_resdtl_sts: Option<CountryAndResidentialStatusType2>,
2046    #[serde(
2047        rename = "BnfcryCertfctnCmpltn",
2048        skip_serializing_if = "Option::is_none"
2049    )]
2050    pub bnfcry_certfctn_cmpltn: Option<BeneficiaryCertificationCompletion1Code>,
2051    #[validate(length(min = 0,))]
2052    #[serde(rename = "OthrId", default)]
2053    pub othr_id: Vec<GenericIdentification164>,
2054}
2055#[derive(
2056    Debug,
2057    Default,
2058    Clone,
2059    PartialEq,
2060    ::serde::Serialize,
2061    ::serde::Deserialize,
2062    ::derive_builder::Builder,
2063    ::validator::Validate,
2064)]
2065pub struct InvestmentAccountType1ChoiceEnum {
2066    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
2067    pub cd: Option<FundCashAccount2Code>,
2068    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
2069    pub prtry: Option<GenericIdentification47>,
2070}
2071#[derive(
2072    Debug,
2073    Default,
2074    Clone,
2075    PartialEq,
2076    ::serde::Serialize,
2077    ::serde::Deserialize,
2078    ::derive_builder::Builder,
2079    ::validator::Validate,
2080)]
2081pub struct InvestmentAccountType1Choice {
2082    #[serde(flatten)]
2083    pub value: InvestmentAccountType1ChoiceEnum,
2084}
2085#[derive(
2086    Debug,
2087    Default,
2088    Clone,
2089    PartialEq,
2090    ::serde::Serialize,
2091    ::serde::Deserialize,
2092    ::derive_builder::Builder,
2093    ::validator::Validate,
2094)]
2095pub struct Max34Text {
2096    #[validate(length(min = 1, max = 34,))]
2097    #[serde(rename = "$text")]
2098    pub value: String,
2099}
2100#[derive(
2101    Debug,
2102    Default,
2103    Clone,
2104    PartialEq,
2105    ::serde::Serialize,
2106    ::serde::Deserialize,
2107    ::derive_builder::Builder,
2108    ::validator::Validate,
2109)]
2110pub struct PaymentCard25 {
2111    #[serde(rename = "Tp")]
2112    pub tp: CardType1Code,
2113    #[validate]
2114    #[serde(rename = "Nb")]
2115    pub nb: Max35Text,
2116    #[validate]
2117    #[serde(rename = "HldrNm")]
2118    pub hldr_nm: Max35Text,
2119    #[serde(rename = "StartDt", skip_serializing_if = "Option::is_none")]
2120    pub start_dt: Option<IsoYearMonth>,
2121    #[validate]
2122    #[serde(rename = "XpryDt")]
2123    pub xpry_dt: IsoYearMonth,
2124    #[serde(rename = "CardIssrNm", skip_serializing_if = "Option::is_none")]
2125    pub card_issr_nm: Option<Max35Text>,
2126    #[serde(rename = "CardIssrId", skip_serializing_if = "Option::is_none")]
2127    pub card_issr_id: Option<PartyIdentification113>,
2128    #[serde(rename = "SctyCd", skip_serializing_if = "Option::is_none")]
2129    pub scty_cd: Option<Max35Text>,
2130    #[serde(rename = "SeqNb", skip_serializing_if = "Option::is_none")]
2131    pub seq_nb: Option<Max3Text>,
2132}
2133#[derive(
2134    Debug,
2135    Default,
2136    Clone,
2137    PartialEq,
2138    ::serde::Serialize,
2139    ::serde::Deserialize,
2140    ::derive_builder::Builder,
2141    ::validator::Validate,
2142)]
2143pub struct SmallNetworkIdentifier {
2144    #[validate(regex = "SMALL_NETWORK_IDENTIFIER_REGEX")]
2145    #[serde(rename = "$text")]
2146    pub value: String,
2147}
2148#[derive(
2149    Debug,
2150    Default,
2151    Clone,
2152    PartialEq,
2153    ::serde::Serialize,
2154    ::serde::Deserialize,
2155    ::derive_builder::Builder,
2156    ::validator::Validate,
2157)]
2158pub struct BicfiIdentifier {
2159    #[validate(regex = "BICFI_IDENTIFIER_REGEX")]
2160    #[serde(rename = "$text")]
2161    pub value: String,
2162}
2163#[derive(
2164    Debug,
2165    Default,
2166    Clone,
2167    PartialEq,
2168    ::serde::Serialize,
2169    ::serde::Deserialize,
2170    ::derive_builder::Builder,
2171    ::validator::Validate,
2172)]
2173pub struct Max35Text {
2174    #[validate(length(min = 1, max = 35,))]
2175    #[serde(rename = "$text")]
2176    pub value: String,
2177}
2178#[derive(
2179    Debug,
2180    Default,
2181    Clone,
2182    PartialEq,
2183    ::serde::Serialize,
2184    ::serde::Deserialize,
2185    ::derive_builder::Builder,
2186    ::validator::Validate,
2187)]
2188pub struct GenericAccountIdentification1 {
2189    #[validate]
2190    #[serde(rename = "Id")]
2191    pub id: Max34Text,
2192    #[serde(rename = "SchmeNm", skip_serializing_if = "Option::is_none")]
2193    pub schme_nm: Option<AccountSchemeName1Choice>,
2194    #[serde(rename = "Issr", skip_serializing_if = "Option::is_none")]
2195    pub issr: Option<Max35Text>,
2196}
2197#[derive(
2198    Debug,
2199    Default,
2200    Clone,
2201    PartialEq,
2202    ::serde::Serialize,
2203    ::serde::Deserialize,
2204    ::derive_builder::Builder,
2205    ::validator::Validate,
2206)]
2207pub struct PaymentInstrument20ChoiceEnum {
2208    #[serde(rename = "CdtTrfDtls", skip_serializing_if = "Option::is_none")]
2209    pub cdt_trf_dtls: Option<CreditTransfer8>,
2210    #[serde(rename = "PmtCardDtls", skip_serializing_if = "Option::is_none")]
2211    pub pmt_card_dtls: Option<PaymentCard25>,
2212    #[serde(rename = "BkrsDrftDtls", skip_serializing_if = "Option::is_none")]
2213    pub bkrs_drft_dtls: Option<Cheque9>,
2214    #[serde(rename = "CshAcctDtls", skip_serializing_if = "Option::is_none")]
2215    pub csh_acct_dtls: Option<InvestmentAccount60>,
2216    #[serde(rename = "ChqDtls", skip_serializing_if = "Option::is_none")]
2217    pub chq_dtls: Option<Cheque9>,
2218    #[serde(rename = "DrctDbtDtls", skip_serializing_if = "Option::is_none")]
2219    pub drct_dbt_dtls: Option<DirectDebitMandate6>,
2220}
2221#[derive(
2222    Debug,
2223    Default,
2224    Clone,
2225    PartialEq,
2226    ::serde::Serialize,
2227    ::serde::Deserialize,
2228    ::derive_builder::Builder,
2229    ::validator::Validate,
2230)]
2231pub struct PaymentInstrument20Choice {
2232    #[serde(flatten)]
2233    pub value: PaymentInstrument20ChoiceEnum,
2234}
2235#[derive(
2236    Debug,
2237    Default,
2238    Clone,
2239    PartialEq,
2240    ::serde::Serialize,
2241    ::serde::Deserialize,
2242    ::derive_builder::Builder,
2243    ::validator::Validate,
2244)]
2245pub struct DeliveringPartiesAndAccount16 {
2246    #[serde(rename = "DlvrrsCtdnDtls", skip_serializing_if = "Option::is_none")]
2247    pub dlvrrs_ctdn_dtls: Option<PartyIdentificationAndAccount147>,
2248    #[serde(rename = "DlvrrsIntrmy1Dtls", skip_serializing_if = "Option::is_none")]
2249    pub dlvrrs_intrmy_1_dtls: Option<PartyIdentificationAndAccount147>,
2250    #[serde(rename = "DlvrrsIntrmy2Dtls", skip_serializing_if = "Option::is_none")]
2251    pub dlvrrs_intrmy_2_dtls: Option<PartyIdentificationAndAccount147>,
2252    #[validate]
2253    #[serde(rename = "DlvrgAgtDtls")]
2254    pub dlvrg_agt_dtls: PartyIdentificationAndAccount147,
2255}
2256#[derive(
2257    Debug,
2258    Default,
2259    Clone,
2260    PartialEq,
2261    ::serde::Serialize,
2262    ::serde::Deserialize,
2263    ::derive_builder::Builder,
2264    ::validator::Validate,
2265)]
2266pub struct ChargeBasis2ChoiceEnum {
2267    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
2268    pub prtry: Option<GenericIdentification47>,
2269    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
2270    pub cd: Option<TaxationBasis5Code>,
2271}
2272#[derive(
2273    Debug,
2274    Default,
2275    Clone,
2276    PartialEq,
2277    ::serde::Serialize,
2278    ::serde::Deserialize,
2279    ::derive_builder::Builder,
2280    ::validator::Validate,
2281)]
2282pub struct ChargeBasis2Choice {
2283    #[serde(flatten)]
2284    pub value: ChargeBasis2ChoiceEnum,
2285}
2286#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2287pub enum TaxExemptReason1Code {
2288    #[serde(rename = "NONE")]
2289    None,
2290    #[serde(rename = "MASA")]
2291    Masa,
2292    #[serde(rename = "MISA")]
2293    Misa,
2294    #[serde(rename = "SISA")]
2295    Sisa,
2296    #[serde(rename = "IISA")]
2297    Iisa,
2298    #[serde(rename = "CUYP")]
2299    Cuyp,
2300    #[serde(rename = "PRYP")]
2301    Pryp,
2302    #[serde(rename = "ASTR")]
2303    Astr,
2304    #[serde(rename = "EMPY")]
2305    Empy,
2306    #[serde(rename = "EMCY")]
2307    Emcy,
2308    #[serde(rename = "EPRY")]
2309    Epry,
2310    #[serde(rename = "ECYE")]
2311    Ecye,
2312    #[serde(rename = "NFPI")]
2313    Nfpi,
2314    #[serde(rename = "NFQP")]
2315    Nfqp,
2316    #[serde(rename = "DECP")]
2317    Decp,
2318    #[serde(rename = "IRAC")]
2319    Irac,
2320    #[serde(rename = "IRAR")]
2321    Irar,
2322    #[serde(rename = "KEOG")]
2323    Keog,
2324    #[serde(rename = "PFSP")]
2325    Pfsp,
2326    #[serde(rename = "401K")]
2327    X401K,
2328    #[serde(rename = "SIRA")]
2329    Sira,
2330    #[serde(rename = "403B")]
2331    X403B,
2332    #[serde(rename = "457X")]
2333    X457X,
2334    #[serde(rename = "RIRA")]
2335    Rira,
2336    #[serde(rename = "RIAN")]
2337    Rian,
2338    #[serde(rename = "RCRF")]
2339    Rcrf,
2340    #[serde(rename = "RCIP")]
2341    Rcip,
2342    #[serde(rename = "EIFP")]
2343    Eifp,
2344    #[serde(rename = "EIOP")]
2345    Eiop,
2346    #[default]
2347    Unknown,
2348}
2349#[derive(
2350    Debug,
2351    Default,
2352    Clone,
2353    PartialEq,
2354    ::serde::Serialize,
2355    ::serde::Deserialize,
2356    ::derive_builder::Builder,
2357    ::validator::Validate,
2358)]
2359pub struct SecurityIdentification25ChoiceEnum {
2360    #[serde(rename = "Blmbrg", skip_serializing_if = "Option::is_none")]
2361    pub blmbrg: Option<Bloomberg2Identifier>,
2362    #[serde(rename = "OthrPrtryId", skip_serializing_if = "Option::is_none")]
2363    pub othr_prtry_id: Option<AlternateSecurityIdentification7>,
2364    #[serde(rename = "Belgn", skip_serializing_if = "Option::is_none")]
2365    pub belgn: Option<BelgianIdentifier>,
2366    #[serde(rename = "SCVM", skip_serializing_if = "Option::is_none")]
2367    pub scvm: Option<SicovamIdentifier>,
2368    #[serde(rename = "SEDOL", skip_serializing_if = "Option::is_none")]
2369    pub sedol: Option<SedolIdentifier>,
2370    #[serde(rename = "ISIN", skip_serializing_if = "Option::is_none")]
2371    pub isin: Option<IsinOct2015Identifier>,
2372    #[serde(rename = "TckrSymb", skip_serializing_if = "Option::is_none")]
2373    pub tckr_symb: Option<TickerIdentifier>,
2374    #[serde(rename = "Vlrn", skip_serializing_if = "Option::is_none")]
2375    pub vlrn: Option<ValorenIdentifier>,
2376    #[serde(rename = "Wrtppr", skip_serializing_if = "Option::is_none")]
2377    pub wrtppr: Option<WertpapierIdentifier>,
2378    #[serde(rename = "Dtch", skip_serializing_if = "Option::is_none")]
2379    pub dtch: Option<DutchIdentifier>,
2380    #[serde(rename = "Cmon", skip_serializing_if = "Option::is_none")]
2381    pub cmon: Option<EuroclearClearstreamIdentifier>,
2382    #[serde(rename = "QUICK", skip_serializing_if = "Option::is_none")]
2383    pub quick: Option<QuickIdentifier>,
2384    #[serde(rename = "CUSIP", skip_serializing_if = "Option::is_none")]
2385    pub cusip: Option<CusipIdentifier>,
2386    #[serde(rename = "RIC", skip_serializing_if = "Option::is_none")]
2387    pub ric: Option<RicIdentifier>,
2388    #[serde(rename = "CTA", skip_serializing_if = "Option::is_none")]
2389    pub cta: Option<ConsolidatedTapeAssociationIdentifier>,
2390}
2391#[derive(
2392    Debug,
2393    Default,
2394    Clone,
2395    PartialEq,
2396    ::serde::Serialize,
2397    ::serde::Deserialize,
2398    ::derive_builder::Builder,
2399    ::validator::Validate,
2400)]
2401pub struct SecurityIdentification25Choice {
2402    #[serde(flatten)]
2403    pub value: SecurityIdentification25ChoiceEnum,
2404}
2405#[derive(
2406    Debug,
2407    Default,
2408    Clone,
2409    PartialEq,
2410    ::serde::Serialize,
2411    ::serde::Deserialize,
2412    ::derive_builder::Builder,
2413    ::validator::Validate,
2414)]
2415pub struct AdditionalReference8 {
2416    #[validate]
2417    #[serde(rename = "Ref")]
2418    pub r#ref: Max35Text,
2419    #[serde(rename = "RefIssr", skip_serializing_if = "Option::is_none")]
2420    pub ref_issr: Option<PartyIdentification113>,
2421    #[serde(rename = "MsgNm", skip_serializing_if = "Option::is_none")]
2422    pub msg_nm: Option<Max35Text>,
2423}
2424#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2425pub enum BeneficiaryCertificationCompletion1Code {
2426    #[serde(rename = "NCER")]
2427    Ncer,
2428    #[serde(rename = "ELEC")]
2429    Elec,
2430    #[serde(rename = "PHYS")]
2431    Phys,
2432    #[default]
2433    Unknown,
2434}
2435#[derive(
2436    Debug,
2437    Default,
2438    Clone,
2439    PartialEq,
2440    ::serde::Serialize,
2441    ::serde::Deserialize,
2442    ::derive_builder::Builder,
2443    ::validator::Validate,
2444)]
2445pub struct FinancialInstitutionIdentification8ChoiceEnum {
2446    #[serde(rename = "NmAndAdr", skip_serializing_if = "Option::is_none")]
2447    pub nm_and_adr: Option<NameAndAddress5>,
2448    #[serde(rename = "PrtryId", skip_serializing_if = "Option::is_none")]
2449    pub prtry_id: Option<Max35Text>,
2450    #[serde(rename = "ClrSysMmbId", skip_serializing_if = "Option::is_none")]
2451    pub clr_sys_mmb_id: Option<ClearingSystemMemberIdentificationChoice>,
2452    #[serde(rename = "BICFI", skip_serializing_if = "Option::is_none")]
2453    pub bicfi: Option<BicfiIdentifier>,
2454}
2455#[derive(
2456    Debug,
2457    Default,
2458    Clone,
2459    PartialEq,
2460    ::serde::Serialize,
2461    ::serde::Deserialize,
2462    ::derive_builder::Builder,
2463    ::validator::Validate,
2464)]
2465pub struct FinancialInstitutionIdentification8Choice {
2466    #[serde(flatten)]
2467    pub value: FinancialInstitutionIdentification8ChoiceEnum,
2468}
2469#[derive(
2470    Debug,
2471    Default,
2472    Clone,
2473    PartialEq,
2474    ::serde::Serialize,
2475    ::serde::Deserialize,
2476    ::derive_builder::Builder,
2477    ::validator::Validate,
2478)]
2479pub struct IsoYearMonth {
2480    #[validate(regex = "ISO_YEAR_MONTH_REGEX")]
2481    #[serde(rename = "$text")]
2482    pub value: String,
2483}
2484#[derive(
2485    Debug,
2486    Default,
2487    Clone,
2488    PartialEq,
2489    ::serde::Serialize,
2490    ::serde::Deserialize,
2491    ::derive_builder::Builder,
2492    ::validator::Validate,
2493)]
2494pub struct FundOrderType4ChoiceEnum {
2495    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
2496    pub cd: Option<FundOrderType8Code>,
2497    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
2498    pub prtry: Option<GenericIdentification47>,
2499}
2500#[derive(
2501    Debug,
2502    Default,
2503    Clone,
2504    PartialEq,
2505    ::serde::Serialize,
2506    ::serde::Deserialize,
2507    ::derive_builder::Builder,
2508    ::validator::Validate,
2509)]
2510pub struct FundOrderType4Choice {
2511    #[serde(flatten)]
2512    pub value: FundOrderType4ChoiceEnum,
2513}
2514#[derive(
2515    Debug,
2516    Default,
2517    Clone,
2518    PartialEq,
2519    ::serde::Serialize,
2520    ::serde::Deserialize,
2521    ::derive_builder::Builder,
2522    ::validator::Validate,
2523)]
2524pub struct AnyBicIdentifier {
2525    #[validate(regex = "ANY_BIC_IDENTIFIER_REGEX")]
2526    #[serde(rename = "$text")]
2527    pub value: String,
2528}
2529#[derive(
2530    Debug,
2531    Default,
2532    Clone,
2533    PartialEq,
2534    ::serde::Serialize,
2535    ::serde::Deserialize,
2536    ::derive_builder::Builder,
2537    ::validator::Validate,
2538)]
2539pub struct GenericIdentification164 {
2540    #[validate]
2541    #[serde(rename = "Id")]
2542    pub id: Max35Text,
2543    #[serde(rename = "IdTp")]
2544    pub id_tp: OtherIdentification3Choice,
2545    #[serde(rename = "Issr", skip_serializing_if = "Option::is_none")]
2546    pub issr: Option<Max35Text>,
2547}
2548#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2549pub enum InvestmentFundFee1Code {
2550    #[serde(rename = "BEND")]
2551    Bend,
2552    #[serde(rename = "BRKF")]
2553    Brkf,
2554    #[serde(rename = "COMM")]
2555    Comm,
2556    #[serde(rename = "CDPL")]
2557    Cdpl,
2558    #[serde(rename = "CDSC")]
2559    Cdsc,
2560    #[serde(rename = "CBCH")]
2561    Cbch,
2562    #[serde(rename = "DLEV")]
2563    Dlev,
2564    #[serde(rename = "FEND")]
2565    Fend,
2566    #[serde(rename = "INIT")]
2567    Init,
2568    #[serde(rename = "ADDF")]
2569    Addf,
2570    #[serde(rename = "POST")]
2571    Post,
2572    #[serde(rename = "PREM")]
2573    Prem,
2574    #[serde(rename = "CHAR")]
2575    Char,
2576    #[serde(rename = "SHIP")]
2577    Ship,
2578    #[serde(rename = "SWIT")]
2579    Swit,
2580    #[serde(rename = "UCIC")]
2581    Ucic,
2582    #[serde(rename = "REGF")]
2583    Regf,
2584    #[serde(rename = "PENA")]
2585    Pena,
2586    #[default]
2587    Unknown,
2588}
2589#[derive(
2590    Debug,
2591    Default,
2592    Clone,
2593    PartialEq,
2594    ::serde::Serialize,
2595    ::serde::Deserialize,
2596    ::derive_builder::Builder,
2597    ::validator::Validate,
2598)]
2599pub struct NameAndAddress5 {
2600    #[validate]
2601    #[serde(rename = "Nm")]
2602    pub nm: Max350Text,
2603    #[serde(rename = "Adr", skip_serializing_if = "Option::is_none")]
2604    pub adr: Option<PostalAddress1>,
2605}
2606#[derive(
2607    Debug,
2608    Default,
2609    Clone,
2610    PartialEq,
2611    ::serde::Serialize,
2612    ::serde::Deserialize,
2613    ::derive_builder::Builder,
2614    ::validator::Validate,
2615)]
2616pub struct SedolIdentifier {
2617    #[serde(rename = "$text")]
2618    pub value: String,
2619}
2620#[derive(
2621    Debug,
2622    Default,
2623    Clone,
2624    PartialEq,
2625    ::serde::Serialize,
2626    ::serde::Deserialize,
2627    ::derive_builder::Builder,
2628    ::validator::Validate,
2629)]
2630pub struct OrderBreakdownType1ChoiceEnum {
2631    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
2632    pub prtry: Option<GenericIdentification47>,
2633    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
2634    pub cd: Option<FundOrderType5Code>,
2635}
2636#[derive(
2637    Debug,
2638    Default,
2639    Clone,
2640    PartialEq,
2641    ::serde::Serialize,
2642    ::serde::Deserialize,
2643    ::derive_builder::Builder,
2644    ::validator::Validate,
2645)]
2646pub struct OrderBreakdownType1Choice {
2647    #[serde(flatten)]
2648    pub value: OrderBreakdownType1ChoiceEnum,
2649}
2650#[derive(
2651    Debug,
2652    Default,
2653    Clone,
2654    PartialEq,
2655    ::serde::Serialize,
2656    ::serde::Deserialize,
2657    ::derive_builder::Builder,
2658    ::validator::Validate,
2659)]
2660pub struct SignatureType1ChoiceEnum {
2661    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
2662    pub cd: Option<SignatureType2Code>,
2663    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
2664    pub prtry: Option<GenericIdentification47>,
2665}
2666#[derive(
2667    Debug,
2668    Default,
2669    Clone,
2670    PartialEq,
2671    ::serde::Serialize,
2672    ::serde::Deserialize,
2673    ::derive_builder::Builder,
2674    ::validator::Validate,
2675)]
2676pub struct SignatureType1Choice {
2677    #[serde(flatten)]
2678    pub value: SignatureType1ChoiceEnum,
2679}
2680#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2681pub enum SignatureType2Code {
2682    #[serde(rename = "DIGI")]
2683    Digi,
2684    #[serde(rename = "ELEC")]
2685    Elec,
2686    #[serde(rename = "NONE")]
2687    None,
2688    #[serde(rename = "ORIG")]
2689    Orig,
2690    #[default]
2691    Unknown,
2692}
2693#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2694pub enum DistributionPolicy1Code {
2695    #[serde(rename = "DIST")]
2696    Dist,
2697    #[serde(rename = "ACCU")]
2698    Accu,
2699    #[default]
2700    Unknown,
2701}
2702#[derive(
2703    Debug,
2704    Default,
2705    Clone,
2706    PartialEq,
2707    ::serde::Serialize,
2708    ::serde::Deserialize,
2709    ::derive_builder::Builder,
2710    ::validator::Validate,
2711)]
2712pub struct PaymentTransaction70 {
2713    #[serde(rename = "PmtInstrm")]
2714    pub pmt_instrm: PaymentInstrument20Choice,
2715}
2716#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2717pub enum FinancialAdvice1Code {
2718    #[serde(rename = "RECE")]
2719    Rece,
2720    #[serde(rename = "NREC")]
2721    Nrec,
2722    #[serde(rename = "UKWN")]
2723    Ukwn,
2724    #[default]
2725    Unknown,
2726}
2727#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2728pub enum SafekeepingPlace1Code {
2729    #[serde(rename = "CUST")]
2730    Cust,
2731    #[serde(rename = "ICSD")]
2732    Icsd,
2733    #[serde(rename = "NCSD")]
2734    Ncsd,
2735    #[serde(rename = "SHHE")]
2736    Shhe,
2737    #[default]
2738    Unknown,
2739}
2740#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2741pub enum PartyIdentificationType7Code {
2742    #[serde(rename = "ATIN")]
2743    Atin,
2744    #[serde(rename = "IDCD")]
2745    Idcd,
2746    #[serde(rename = "NRIN")]
2747    Nrin,
2748    #[serde(rename = "OTHR")]
2749    Othr,
2750    #[serde(rename = "PASS")]
2751    Pass,
2752    #[serde(rename = "POCD")]
2753    Pocd,
2754    #[serde(rename = "SOCS")]
2755    Socs,
2756    #[serde(rename = "SRSA")]
2757    Srsa,
2758    #[serde(rename = "GUNL")]
2759    Gunl,
2760    #[serde(rename = "GTIN")]
2761    Gtin,
2762    #[serde(rename = "ITIN")]
2763    Itin,
2764    #[serde(rename = "CPFA")]
2765    Cpfa,
2766    #[serde(rename = "AREG")]
2767    Areg,
2768    #[serde(rename = "DRLC")]
2769    Drlc,
2770    #[serde(rename = "EMID")]
2771    Emid,
2772    #[serde(rename = "NINV")]
2773    Ninv,
2774    #[serde(rename = "INCL")]
2775    Incl,
2776    #[serde(rename = "GIIN")]
2777    Giin,
2778    #[default]
2779    Unknown,
2780}
2781#[derive(
2782    Debug,
2783    Default,
2784    Clone,
2785    PartialEq,
2786    ::serde::Serialize,
2787    ::serde::Deserialize,
2788    ::derive_builder::Builder,
2789    ::validator::Validate,
2790)]
2791pub struct CustomerConductClassification1ChoiceEnum {
2792    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
2793    pub prtry: Option<GenericIdentification47>,
2794    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
2795    pub cd: Option<ConductClassification1Code>,
2796}
2797#[derive(
2798    Debug,
2799    Default,
2800    Clone,
2801    PartialEq,
2802    ::serde::Serialize,
2803    ::serde::Deserialize,
2804    ::derive_builder::Builder,
2805    ::validator::Validate,
2806)]
2807pub struct CustomerConductClassification1Choice {
2808    #[serde(flatten)]
2809    pub value: CustomerConductClassification1ChoiceEnum,
2810}
2811#[derive(
2812    Debug,
2813    Default,
2814    Clone,
2815    PartialEq,
2816    ::serde::Serialize,
2817    ::serde::Deserialize,
2818    ::derive_builder::Builder,
2819    ::validator::Validate,
2820)]
2821pub struct InvestmentAccount58 {
2822    #[validate]
2823    #[serde(rename = "AcctId")]
2824    pub acct_id: Max35Text,
2825    #[serde(rename = "AcctNm", skip_serializing_if = "Option::is_none")]
2826    pub acct_nm: Option<Max35Text>,
2827    #[serde(rename = "AcctDsgnt", skip_serializing_if = "Option::is_none")]
2828    pub acct_dsgnt: Option<Max35Text>,
2829    #[validate(length(min = 0,))]
2830    #[serde(rename = "OwnrId", default)]
2831    pub ownr_id: Vec<PartyIdentification113>,
2832    #[serde(rename = "AcctSvcr", skip_serializing_if = "Option::is_none")]
2833    pub acct_svcr: Option<PartyIdentification113>,
2834    #[serde(rename = "OrdrOrgtrElgblty", skip_serializing_if = "Option::is_none")]
2835    pub ordr_orgtr_elgblty: Option<OrderOriginatorEligibility1Code>,
2836    #[serde(rename = "SubAcctDtls", skip_serializing_if = "Option::is_none")]
2837    pub sub_acct_dtls: Option<SubAccount6>,
2838}
2839#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2840pub enum RoundingDirection2Code {
2841    #[serde(rename = "RDUP")]
2842    Rdup,
2843    #[serde(rename = "RDWN")]
2844    Rdwn,
2845    #[default]
2846    Unknown,
2847}
2848#[derive(
2849    Debug,
2850    Default,
2851    Clone,
2852    PartialEq,
2853    ::serde::Serialize,
2854    ::serde::Deserialize,
2855    ::derive_builder::Builder,
2856    ::validator::Validate,
2857)]
2858pub struct TaxBasis1ChoiceEnum {
2859    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
2860    pub cd: Option<TaxationBasis2Code>,
2861    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
2862    pub prtry: Option<GenericIdentification47>,
2863}
2864#[derive(
2865    Debug,
2866    Default,
2867    Clone,
2868    PartialEq,
2869    ::serde::Serialize,
2870    ::serde::Deserialize,
2871    ::derive_builder::Builder,
2872    ::validator::Validate,
2873)]
2874pub struct TaxBasis1Choice {
2875    #[serde(flatten)]
2876    pub value: TaxBasis1ChoiceEnum,
2877}
2878#[derive(
2879    Debug,
2880    Default,
2881    Clone,
2882    PartialEq,
2883    ::serde::Serialize,
2884    ::serde::Deserialize,
2885    ::derive_builder::Builder,
2886    ::validator::Validate,
2887)]
2888pub struct GenericIdentification47 {
2889    #[validate]
2890    #[serde(rename = "Id")]
2891    pub id: Exact4AlphaNumericText,
2892    #[validate]
2893    #[serde(rename = "Issr")]
2894    pub issr: Max4AlphaNumericText,
2895    #[serde(rename = "SchmeNm", skip_serializing_if = "Option::is_none")]
2896    pub schme_nm: Option<Max4AlphaNumericText>,
2897}
2898#[derive(
2899    Debug,
2900    Default,
2901    Clone,
2902    PartialEq,
2903    ::serde::Serialize,
2904    ::serde::Deserialize,
2905    ::derive_builder::Builder,
2906    ::validator::Validate,
2907)]
2908pub struct TickerIdentifier {
2909    #[validate(length(min = 1, max = 35,))]
2910    #[serde(rename = "$text")]
2911    pub value: String,
2912}
2913#[derive(
2914    Debug,
2915    Default,
2916    Clone,
2917    PartialEq,
2918    ::serde::Serialize,
2919    ::serde::Deserialize,
2920    ::derive_builder::Builder,
2921    ::validator::Validate,
2922)]
2923pub struct YesNoIndicator {
2924    #[serde(rename = "$text")]
2925    pub value: bool,
2926}
2927#[derive(
2928    Debug,
2929    Default,
2930    Clone,
2931    PartialEq,
2932    ::serde::Serialize,
2933    ::serde::Deserialize,
2934    ::derive_builder::Builder,
2935    ::validator::Validate,
2936)]
2937pub struct DecimalNumber {
2938    #[serde(rename = "$text")]
2939    pub value: f64,
2940}
2941#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2942pub enum DeliveryReceiptType2Code {
2943    #[serde(rename = "FREE")]
2944    Free,
2945    #[serde(rename = "APMT")]
2946    Apmt,
2947    #[default]
2948    Unknown,
2949}
2950#[derive(
2951    Debug,
2952    Default,
2953    Clone,
2954    PartialEq,
2955    ::serde::Serialize,
2956    ::serde::Deserialize,
2957    ::derive_builder::Builder,
2958    ::validator::Validate,
2959)]
2960pub struct ActiveOrHistoricCurrencyAndAmount {
2961    #[serde(rename = "ActiveOrHistoricCurrencyAndAmount")]
2962    pub value: ActiveOrHistoricCurrencyAndAmountSimpleType,
2963    #[serde(rename = "@Ccy")]
2964    pub ccy: ActiveOrHistoricCurrencyCode,
2965}
2966#[derive(
2967    Debug,
2968    Default,
2969    Clone,
2970    PartialEq,
2971    ::serde::Serialize,
2972    ::serde::Deserialize,
2973    ::derive_builder::Builder,
2974    ::validator::Validate,
2975)]
2976pub struct Max4AlphaNumericText {
2977    #[validate(length(min = 1, max = 4,), regex = "MAX_4_ALPHA_NUMERIC_TEXT_REGEX")]
2978    #[serde(rename = "$text")]
2979    pub value: String,
2980}
2981#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2982pub enum OrderOriginatorEligibility1Code {
2983    #[serde(rename = "ELIG")]
2984    Elig,
2985    #[serde(rename = "RETL")]
2986    Retl,
2987    #[serde(rename = "PROF")]
2988    Prof,
2989    #[default]
2990    Unknown,
2991}
2992#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
2993pub enum FundOrderType8Code {
2994    #[serde(rename = "BEDB")]
2995    Bedb,
2996    #[serde(rename = "INVP")]
2997    Invp,
2998    #[serde(rename = "PREA")]
2999    Prea,
3000    #[serde(rename = "RGSV")]
3001    Rgsv,
3002    #[serde(rename = "RGSU")]
3003    Rgsu,
3004    #[serde(rename = "RDIV")]
3005    Rdiv,
3006    #[serde(rename = "STAF")]
3007    Staf,
3008    #[serde(rename = "WIDP")]
3009    Widp,
3010    #[default]
3011    Unknown,
3012}
3013#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
3014pub enum AddressType2Code {
3015    #[serde(rename = "ADDR")]
3016    Addr,
3017    #[serde(rename = "PBOX")]
3018    Pbox,
3019    #[serde(rename = "HOME")]
3020    Home,
3021    #[serde(rename = "BIZZ")]
3022    Bizz,
3023    #[serde(rename = "MLTO")]
3024    Mlto,
3025    #[serde(rename = "DLVY")]
3026    Dlvy,
3027    #[default]
3028    Unknown,
3029}
3030#[derive(
3031    Debug,
3032    Default,
3033    Clone,
3034    PartialEq,
3035    ::serde::Serialize,
3036    ::serde::Deserialize,
3037    ::derive_builder::Builder,
3038    ::validator::Validate,
3039)]
3040pub struct DutchIdentifier {
3041    #[serde(rename = "$text")]
3042    pub value: String,
3043}
3044#[derive(
3045    Debug,
3046    Default,
3047    Clone,
3048    PartialEq,
3049    ::serde::Serialize,
3050    ::serde::Deserialize,
3051    ::derive_builder::Builder,
3052    ::validator::Validate,
3053)]
3054pub struct AdditionalReference9 {
3055    #[validate]
3056    #[serde(rename = "Ref")]
3057    pub r#ref: Max35Text,
3058    #[serde(rename = "RefIssr", skip_serializing_if = "Option::is_none")]
3059    pub ref_issr: Option<PartyIdentification113>,
3060    #[serde(rename = "MsgNm", skip_serializing_if = "Option::is_none")]
3061    pub msg_nm: Option<Max35Text>,
3062}
3063#[derive(
3064    Debug,
3065    Default,
3066    Clone,
3067    PartialEq,
3068    ::serde::Serialize,
3069    ::serde::Deserialize,
3070    ::derive_builder::Builder,
3071    ::validator::Validate,
3072)]
3073pub struct IsinOct2015Identifier {
3074    #[validate(regex = "ISIN_OCT_2015_IDENTIFIER_REGEX")]
3075    #[serde(rename = "$text")]
3076    pub value: String,
3077}
3078#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
3079pub enum NegotiatedTrade1Code {
3080    #[serde(rename = "NEGO")]
3081    Nego,
3082    #[serde(rename = "NNGO")]
3083    Nngo,
3084    #[serde(rename = "UNKW")]
3085    Unkw,
3086    #[default]
3087    Unknown,
3088}
3089#[derive(
3090    Debug,
3091    Default,
3092    Clone,
3093    PartialEq,
3094    ::serde::Serialize,
3095    ::serde::Deserialize,
3096    ::derive_builder::Builder,
3097    ::validator::Validate,
3098)]
3099pub struct Cheque9 {
3100    #[serde(rename = "Nb", skip_serializing_if = "Option::is_none")]
3101    pub nb: Option<Max35Text>,
3102    #[validate]
3103    #[serde(rename = "PyeeId")]
3104    pub pyee_id: PartyIdentification113,
3105    #[serde(rename = "DrweeId", skip_serializing_if = "Option::is_none")]
3106    pub drwee_id: Option<FinancialInstitutionIdentification10>,
3107    #[serde(rename = "DrwrId", skip_serializing_if = "Option::is_none")]
3108    pub drwr_id: Option<PartyIdentification113>,
3109}
3110#[derive(
3111    Debug,
3112    Default,
3113    Clone,
3114    PartialEq,
3115    ::serde::Serialize,
3116    ::serde::Deserialize,
3117    ::derive_builder::Builder,
3118    ::validator::Validate,
3119)]
3120pub struct PartyIdentification90ChoiceEnum {
3121    #[serde(rename = "AnyBIC", skip_serializing_if = "Option::is_none")]
3122    pub any_bic: Option<AnyBicIdentifier>,
3123    #[serde(rename = "NmAndAdr", skip_serializing_if = "Option::is_none")]
3124    pub nm_and_adr: Option<NameAndAddress5>,
3125    #[serde(rename = "PrtryId", skip_serializing_if = "Option::is_none")]
3126    pub prtry_id: Option<GenericIdentification1>,
3127}
3128#[derive(
3129    Debug,
3130    Default,
3131    Clone,
3132    PartialEq,
3133    ::serde::Serialize,
3134    ::serde::Deserialize,
3135    ::derive_builder::Builder,
3136    ::validator::Validate,
3137)]
3138pub struct PartyIdentification90Choice {
3139    #[serde(flatten)]
3140    pub value: PartyIdentification90ChoiceEnum,
3141}
3142#[derive(
3143    Debug,
3144    Default,
3145    Clone,
3146    PartialEq,
3147    ::serde::Serialize,
3148    ::serde::Deserialize,
3149    ::derive_builder::Builder,
3150    ::validator::Validate,
3151)]
3152pub struct Series1 {
3153    #[serde(rename = "SrsDt", skip_serializing_if = "Option::is_none")]
3154    pub srs_dt: Option<DateFormat42Choice>,
3155    #[serde(rename = "SrsNm", skip_serializing_if = "Option::is_none")]
3156    pub srs_nm: Option<Max35Text>,
3157}
3158#[derive(
3159    Debug,
3160    Default,
3161    Clone,
3162    PartialEq,
3163    ::serde::Serialize,
3164    ::serde::Deserialize,
3165    ::derive_builder::Builder,
3166    ::validator::Validate,
3167)]
3168pub struct ExtensiveBranchNetworkIdentifier {
3169    #[validate(regex = "EXTENSIVE_BRANCH_NETWORK_IDENTIFIER_REGEX")]
3170    #[serde(rename = "$text")]
3171    pub value: String,
3172}
3173#[derive(
3174    Debug,
3175    Default,
3176    Clone,
3177    PartialEq,
3178    ::serde::Serialize,
3179    ::serde::Deserialize,
3180    ::derive_builder::Builder,
3181    ::validator::Validate,
3182)]
3183pub struct Fee1 {
3184    #[serde(rename = "Tp")]
3185    pub tp: ChargeType5Choice,
3186    #[serde(rename = "Bsis", skip_serializing_if = "Option::is_none")]
3187    pub bsis: Option<ChargeBasis2Choice>,
3188    #[serde(rename = "StdAmt", skip_serializing_if = "Option::is_none")]
3189    pub std_amt: Option<ActiveCurrencyAndAmount>,
3190    #[serde(rename = "StdRate", skip_serializing_if = "Option::is_none")]
3191    pub std_rate: Option<PercentageRate>,
3192    #[serde(rename = "DscntDtls", skip_serializing_if = "Option::is_none")]
3193    pub dscnt_dtls: Option<ChargeOrCommissionDiscount1>,
3194    #[serde(rename = "ReqdAmt", skip_serializing_if = "Option::is_none")]
3195    pub reqd_amt: Option<ActiveCurrencyAndAmount>,
3196    #[serde(rename = "ReqdRate", skip_serializing_if = "Option::is_none")]
3197    pub reqd_rate: Option<PercentageRate>,
3198    #[serde(rename = "NonStdSLARef", skip_serializing_if = "Option::is_none")]
3199    pub non_std_sla_ref: Option<Max35Text>,
3200    #[serde(rename = "RcptId", skip_serializing_if = "Option::is_none")]
3201    pub rcpt_id: Option<PartyIdentification113>,
3202}
3203#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
3204pub enum SettlementTransactionCondition11Code {
3205    #[serde(rename = "NOMC")]
3206    Nomc,
3207    #[default]
3208    Unknown,
3209}
3210#[derive(
3211    Debug,
3212    Default,
3213    Clone,
3214    PartialEq,
3215    ::serde::Serialize,
3216    ::serde::Deserialize,
3217    ::derive_builder::Builder,
3218    ::validator::Validate,
3219)]
3220pub struct InvestmentFundsOrderBreakdown2 {
3221    #[serde(rename = "OrdrBrkdwnTp")]
3222    pub ordr_brkdwn_tp: OrderBreakdownType1Choice,
3223    #[validate]
3224    #[serde(rename = "Amt")]
3225    pub amt: ActiveCurrencyAndAmount,
3226}
3227#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
3228pub enum TaxationBasis2Code {
3229    #[serde(rename = "FLAT")]
3230    Flat,
3231    #[serde(rename = "PERU")]
3232    Peru,
3233    #[default]
3234    Unknown,
3235}
3236#[derive(
3237    Debug,
3238    Default,
3239    Clone,
3240    PartialEq,
3241    ::serde::Serialize,
3242    ::serde::Deserialize,
3243    ::derive_builder::Builder,
3244    ::validator::Validate,
3245)]
3246pub struct SpanishDomesticInterbankingIdentifier {
3247    #[validate(regex = "SPANISH_DOMESTIC_INTERBANKING_IDENTIFIER_REGEX")]
3248    #[serde(rename = "$text")]
3249    pub value: String,
3250}
3251#[derive(
3252    Debug,
3253    Default,
3254    Clone,
3255    PartialEq,
3256    ::serde::Serialize,
3257    ::serde::Deserialize,
3258    ::derive_builder::Builder,
3259    ::validator::Validate,
3260)]
3261pub struct CanadianPaymentsArnIdentifier {
3262    #[validate(regex = "CANADIAN_PAYMENTS_ARN_IDENTIFIER_REGEX")]
3263    #[serde(rename = "$text")]
3264    pub value: String,
3265}
3266#[derive(
3267    Debug,
3268    Default,
3269    Clone,
3270    PartialEq,
3271    ::serde::Serialize,
3272    ::serde::Deserialize,
3273    ::derive_builder::Builder,
3274    ::validator::Validate,
3275)]
3276pub struct CusipIdentifier {
3277    #[serde(rename = "$text")]
3278    pub value: String,
3279}
3280#[derive(
3281    Debug,
3282    Default,
3283    Clone,
3284    PartialEq,
3285    ::serde::Serialize,
3286    ::serde::Deserialize,
3287    ::derive_builder::Builder,
3288    ::validator::Validate,
3289)]
3290pub struct ClearingSystemMemberIdentificationChoiceEnum {
3291    #[serde(rename = "USFW", skip_serializing_if = "Option::is_none")]
3292    pub usfw: Option<FedwireRoutingNumberIdentifier>,
3293    #[serde(rename = "RUCB", skip_serializing_if = "Option::is_none")]
3294    pub rucb: Option<RussianCentralBankIdentificationCodeIdentifier>,
3295    #[serde(rename = "ATBLZ", skip_serializing_if = "Option::is_none")]
3296    pub atblz: Option<AustrianBankleitzahlIdentifier>,
3297    #[serde(rename = "CHBC", skip_serializing_if = "Option::is_none")]
3298    pub chbc: Option<SwissBcIdentifier>,
3299    #[serde(rename = "IENSC", skip_serializing_if = "Option::is_none")]
3300    pub iensc: Option<IrishNscIdentifier>,
3301    #[serde(rename = "PTNCC", skip_serializing_if = "Option::is_none")]
3302    pub ptncc: Option<PortugueseNccIdentifier>,
3303    #[serde(rename = "AUBSBx", skip_serializing_if = "Option::is_none")]
3304    pub aubs_bx: Option<ExtensiveBranchNetworkIdentifier>,
3305    #[serde(rename = "ITNCC", skip_serializing_if = "Option::is_none")]
3306    pub itncc: Option<ItalianDomesticIdentifier>,
3307    #[serde(rename = "ESNCC", skip_serializing_if = "Option::is_none")]
3308    pub esncc: Option<SpanishDomesticInterbankingIdentifier>,
3309    #[serde(rename = "CACPA", skip_serializing_if = "Option::is_none")]
3310    pub cacpa: Option<CanadianPaymentsArnIdentifier>,
3311    #[serde(rename = "HKNCC", skip_serializing_if = "Option::is_none")]
3312    pub hkncc: Option<HongKongBankIdentifier>,
3313    #[serde(rename = "AUBSBs", skip_serializing_if = "Option::is_none")]
3314    pub aubs_bs: Option<SmallNetworkIdentifier>,
3315    #[serde(rename = "USCH", skip_serializing_if = "Option::is_none")]
3316    pub usch: Option<ChipsParticipantIdentifier>,
3317    #[serde(rename = "DEBLZ", skip_serializing_if = "Option::is_none")]
3318    pub deblz: Option<GermanBankleitzahlIdentifier>,
3319    #[serde(rename = "ZANCC", skip_serializing_if = "Option::is_none")]
3320    pub zancc: Option<SouthAfricanNccIdentifier>,
3321    #[serde(rename = "NZNCC", skip_serializing_if = "Option::is_none")]
3322    pub nzncc: Option<NewZealandNccIdentifier>,
3323    #[serde(rename = "CHSIC", skip_serializing_if = "Option::is_none")]
3324    pub chsic: Option<SwissSicIdentifier>,
3325    #[serde(rename = "GBSC", skip_serializing_if = "Option::is_none")]
3326    pub gbsc: Option<UkDomesticSortCodeIdentifier>,
3327    #[serde(rename = "USCHU", skip_serializing_if = "Option::is_none")]
3328    pub uschu: Option<ChipsUniversalIdentifier>,
3329}
3330#[derive(
3331    Debug,
3332    Default,
3333    Clone,
3334    PartialEq,
3335    ::serde::Serialize,
3336    ::serde::Deserialize,
3337    ::derive_builder::Builder,
3338    ::validator::Validate,
3339)]
3340pub struct ClearingSystemMemberIdentificationChoice {
3341    #[serde(flatten)]
3342    pub value: ClearingSystemMemberIdentificationChoiceEnum,
3343}
3344#[derive(
3345    Debug,
3346    Default,
3347    Clone,
3348    PartialEq,
3349    ::serde::Serialize,
3350    ::serde::Deserialize,
3351    ::derive_builder::Builder,
3352    ::validator::Validate,
3353)]
3354pub struct ConsolidatedTapeAssociationIdentifier {
3355    #[validate(length(min = 1, max = 35,))]
3356    #[serde(rename = "$text")]
3357    pub value: String,
3358}
3359#[derive(
3360    Debug,
3361    Default,
3362    Clone,
3363    PartialEq,
3364    ::serde::Serialize,
3365    ::serde::Deserialize,
3366    ::derive_builder::Builder,
3367    ::validator::Validate,
3368)]
3369pub struct HongKongBankIdentifier {
3370    #[validate(regex = "HONG_KONG_BANK_IDENTIFIER_REGEX")]
3371    #[serde(rename = "$text")]
3372    pub value: String,
3373}
3374#[derive(
3375    Debug,
3376    Default,
3377    Clone,
3378    PartialEq,
3379    ::serde::Serialize,
3380    ::serde::Deserialize,
3381    ::derive_builder::Builder,
3382    ::validator::Validate,
3383)]
3384pub struct Equalisation1 {
3385    #[serde(rename = "Amt", skip_serializing_if = "Option::is_none")]
3386    pub amt: Option<ActiveOrHistoricCurrencyAndAmount>,
3387    #[serde(rename = "Rate", skip_serializing_if = "Option::is_none")]
3388    pub rate: Option<PercentageRate>,
3389}
3390#[derive(
3391    Debug,
3392    Default,
3393    Clone,
3394    PartialEq,
3395    ::serde::Serialize,
3396    ::serde::Deserialize,
3397    ::derive_builder::Builder,
3398    ::validator::Validate,
3399)]
3400pub struct Bloomberg2Identifier {
3401    #[validate(regex = "BLOOMBERG_2_IDENTIFIER_REGEX")]
3402    #[serde(rename = "$text")]
3403    pub value: String,
3404}
3405#[derive(
3406    Debug,
3407    Default,
3408    Clone,
3409    PartialEq,
3410    ::serde::Serialize,
3411    ::serde::Deserialize,
3412    ::derive_builder::Builder,
3413    ::validator::Validate,
3414)]
3415pub struct AccountIdentification4ChoiceEnum {
3416    #[serde(rename = "IBAN", skip_serializing_if = "Option::is_none")]
3417    pub iban: Option<Iban2007Identifier>,
3418    #[serde(rename = "Othr", skip_serializing_if = "Option::is_none")]
3419    pub othr: Option<GenericAccountIdentification1>,
3420}
3421#[derive(
3422    Debug,
3423    Default,
3424    Clone,
3425    PartialEq,
3426    ::serde::Serialize,
3427    ::serde::Deserialize,
3428    ::derive_builder::Builder,
3429    ::validator::Validate,
3430)]
3431pub struct AccountIdentification4Choice {
3432    #[serde(flatten)]
3433    pub value: AccountIdentification4ChoiceEnum,
3434}
3435#[derive(
3436    Debug,
3437    Default,
3438    Clone,
3439    PartialEq,
3440    ::serde::Serialize,
3441    ::serde::Deserialize,
3442    ::derive_builder::Builder,
3443    ::validator::Validate,
3444)]
3445pub struct Max70Text {
3446    #[validate(length(min = 1, max = 70,))]
3447    #[serde(rename = "$text")]
3448    pub value: String,
3449}
3450#[derive(
3451    Debug,
3452    Default,
3453    Clone,
3454    PartialEq,
3455    ::serde::Serialize,
3456    ::serde::Deserialize,
3457    ::derive_builder::Builder,
3458    ::validator::Validate,
3459)]
3460pub struct DateAndDateTimeChoiceEnum {
3461    #[serde(rename = "DtTm", skip_serializing_if = "Option::is_none")]
3462    pub dt_tm: Option<IsoDateTime>,
3463    #[serde(rename = "Dt", skip_serializing_if = "Option::is_none")]
3464    pub dt: Option<IsoDate>,
3465}
3466#[derive(
3467    Debug,
3468    Default,
3469    Clone,
3470    PartialEq,
3471    ::serde::Serialize,
3472    ::serde::Deserialize,
3473    ::derive_builder::Builder,
3474    ::validator::Validate,
3475)]
3476pub struct DateAndDateTimeChoice {
3477    #[serde(flatten)]
3478    pub value: DateAndDateTimeChoiceEnum,
3479}
3480#[derive(
3481    Debug,
3482    Default,
3483    Clone,
3484    PartialEq,
3485    ::serde::Serialize,
3486    ::serde::Deserialize,
3487    ::derive_builder::Builder,
3488    ::validator::Validate,
3489)]
3490pub struct ActiveOrHistoricCurrencyCode {
3491    #[validate(regex = "ACTIVE_OR_HISTORIC_CURRENCY_CODE_REGEX")]
3492    #[serde(rename = "$text")]
3493    pub value: String,
3494}
3495#[derive(
3496    Debug,
3497    Default,
3498    Clone,
3499    PartialEq,
3500    ::serde::Serialize,
3501    ::serde::Deserialize,
3502    ::derive_builder::Builder,
3503    ::validator::Validate,
3504)]
3505pub struct CountryAndResidentialStatusType2 {
3506    #[serde(rename = "Ctry")]
3507    pub ctry: CountryCode,
3508    #[serde(rename = "ResdtlSts")]
3509    pub resdtl_sts: ResidentialStatus1Code,
3510}
3511#[derive(
3512    Debug,
3513    Default,
3514    Clone,
3515    PartialEq,
3516    ::serde::Serialize,
3517    ::serde::Deserialize,
3518    ::derive_builder::Builder,
3519    ::validator::Validate,
3520)]
3521pub struct PercentageRate {
3522    #[serde(rename = "$text")]
3523    pub value: f64,
3524}
3525#[derive(
3526    Debug,
3527    Default,
3528    Clone,
3529    PartialEq,
3530    ::serde::Serialize,
3531    ::serde::Deserialize,
3532    ::derive_builder::Builder,
3533    ::validator::Validate,
3534)]
3535pub struct SwissSicIdentifier {
3536    #[validate(regex = "SWISS_SIC_IDENTIFIER_REGEX")]
3537    #[serde(rename = "$text")]
3538    pub value: String,
3539}
3540#[derive(
3541    Debug,
3542    Default,
3543    Clone,
3544    PartialEq,
3545    ::serde::Serialize,
3546    ::serde::Deserialize,
3547    ::derive_builder::Builder,
3548    ::validator::Validate,
3549)]
3550pub struct ChargeType5ChoiceEnum {
3551    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
3552    pub cd: Option<InvestmentFundFee1Code>,
3553    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
3554    pub prtry: Option<GenericIdentification47>,
3555}
3556#[derive(
3557    Debug,
3558    Default,
3559    Clone,
3560    PartialEq,
3561    ::serde::Serialize,
3562    ::serde::Deserialize,
3563    ::derive_builder::Builder,
3564    ::validator::Validate,
3565)]
3566pub struct ChargeType5Choice {
3567    #[serde(flatten)]
3568    pub value: ChargeType5ChoiceEnum,
3569}
3570#[derive(
3571    Debug,
3572    Default,
3573    Clone,
3574    PartialEq,
3575    ::serde::Serialize,
3576    ::serde::Deserialize,
3577    ::derive_builder::Builder,
3578    ::validator::Validate,
3579)]
3580pub struct IsoDateTime {
3581    #[serde(rename = "$text")]
3582    pub value: ::chrono::DateTime<::chrono::Utc>,
3583}
3584#[derive(
3585    Debug,
3586    Default,
3587    Clone,
3588    PartialEq,
3589    ::serde::Serialize,
3590    ::serde::Deserialize,
3591    ::derive_builder::Builder,
3592    ::validator::Validate,
3593)]
3594pub struct AccountSchemeName1ChoiceEnum {
3595    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
3596    pub cd: Option<ExternalAccountIdentification1Code>,
3597    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
3598    pub prtry: Option<Max35Text>,
3599}
3600#[derive(
3601    Debug,
3602    Default,
3603    Clone,
3604    PartialEq,
3605    ::serde::Serialize,
3606    ::serde::Deserialize,
3607    ::derive_builder::Builder,
3608    ::validator::Validate,
3609)]
3610pub struct AccountSchemeName1Choice {
3611    #[serde(flatten)]
3612    pub value: AccountSchemeName1ChoiceEnum,
3613}
3614#[derive(
3615    Debug,
3616    Default,
3617    Clone,
3618    PartialEq,
3619    ::serde::Serialize,
3620    ::serde::Deserialize,
3621    ::derive_builder::Builder,
3622    ::validator::Validate,
3623)]
3624pub struct UkDomesticSortCodeIdentifier {
3625    #[validate(regex = "UK_DOMESTIC_SORT_CODE_IDENTIFIER_REGEX")]
3626    #[serde(rename = "$text")]
3627    pub value: String,
3628}
3629#[derive(
3630    Debug,
3631    Default,
3632    Clone,
3633    PartialEq,
3634    ::serde::Serialize,
3635    ::serde::Deserialize,
3636    ::derive_builder::Builder,
3637    ::validator::Validate,
3638)]
3639pub struct RicIdentifier {
3640    #[validate(length(min = 1, max = 35,))]
3641    #[serde(rename = "$text")]
3642    pub value: String,
3643}
3644#[derive(
3645    Debug,
3646    Default,
3647    Clone,
3648    PartialEq,
3649    ::serde::Serialize,
3650    ::serde::Deserialize,
3651    ::derive_builder::Builder,
3652    ::validator::Validate,
3653)]
3654pub struct FeeAndTax1 {
3655    #[serde(rename = "ComrclAgrmtRef", skip_serializing_if = "Option::is_none")]
3656    pub comrcl_agrmt_ref: Option<Max35Text>,
3657    #[validate(length(min = 0,))]
3658    #[serde(rename = "IndvFee", default)]
3659    pub indv_fee: Vec<Fee1>,
3660    #[validate(length(min = 0,))]
3661    #[serde(rename = "IndvTax", default)]
3662    pub indv_tax: Vec<Tax30>,
3663}
3664#[derive(
3665    Debug,
3666    Default,
3667    Clone,
3668    PartialEq,
3669    ::serde::Serialize,
3670    ::serde::Deserialize,
3671    ::derive_builder::Builder,
3672    ::validator::Validate,
3673)]
3674pub struct Exact4AlphaNumericText {
3675    #[validate(regex = "EXACT_4_ALPHA_NUMERIC_TEXT_REGEX")]
3676    #[serde(rename = "$text")]
3677    pub value: String,
3678}
3679#[derive(
3680    Debug,
3681    Default,
3682    Clone,
3683    PartialEq,
3684    ::serde::Serialize,
3685    ::serde::Deserialize,
3686    ::derive_builder::Builder,
3687    ::validator::Validate,
3688)]
3689pub struct Tax30 {
3690    #[serde(rename = "Tp")]
3691    pub tp: TaxType3Choice,
3692    #[serde(rename = "Tax", skip_serializing_if = "Option::is_none")]
3693    pub tax: Option<TaxAmountOrRate4Choice>,
3694    #[serde(rename = "Ctry", skip_serializing_if = "Option::is_none")]
3695    pub ctry: Option<CountryCode>,
3696    #[validate]
3697    #[serde(rename = "XmptnInd")]
3698    pub xmptn_ind: YesNoIndicator,
3699    #[serde(rename = "XmptnRsn", skip_serializing_if = "Option::is_none")]
3700    pub xmptn_rsn: Option<ExemptionReason1Choice>,
3701    #[serde(rename = "RcptId", skip_serializing_if = "Option::is_none")]
3702    pub rcpt_id: Option<PartyIdentification113>,
3703    #[serde(rename = "TaxClctnDtls", skip_serializing_if = "Option::is_none")]
3704    pub tax_clctn_dtls: Option<TaxCalculationInformation9>,
3705}
3706#[derive(
3707    Debug,
3708    Default,
3709    Clone,
3710    PartialEq,
3711    ::serde::Serialize,
3712    ::serde::Deserialize,
3713    ::derive_builder::Builder,
3714    ::validator::Validate,
3715)]
3716pub struct FedwireRoutingNumberIdentifier {
3717    #[validate(regex = "FEDWIRE_ROUTING_NUMBER_IDENTIFIER_REGEX")]
3718    #[serde(rename = "$text")]
3719    pub value: String,
3720}
3721#[derive(
3722    Debug,
3723    Default,
3724    Clone,
3725    PartialEq,
3726    ::serde::Serialize,
3727    ::serde::Deserialize,
3728    ::derive_builder::Builder,
3729    ::validator::Validate,
3730)]
3731pub struct AlternateSecurityIdentification7 {
3732    #[validate]
3733    #[serde(rename = "Id")]
3734    pub id: Max35Text,
3735    #[serde(rename = "IdSrc")]
3736    pub id_src: IdentificationSource1Choice,
3737}
3738#[derive(
3739    Debug,
3740    Default,
3741    Clone,
3742    PartialEq,
3743    ::serde::Serialize,
3744    ::serde::Deserialize,
3745    ::derive_builder::Builder,
3746    ::validator::Validate,
3747)]
3748pub struct PortugueseNccIdentifier {
3749    #[validate(regex = "PORTUGUESE_NCC_IDENTIFIER_REGEX")]
3750    #[serde(rename = "$text")]
3751    pub value: String,
3752}
3753#[derive(Debug, Default, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
3754pub enum SafekeepingPlace2Code {
3755    #[serde(rename = "SHHE")]
3756    Shhe,
3757    #[serde(rename = "ALLP")]
3758    Allp,
3759    #[default]
3760    Unknown,
3761}
3762#[derive(
3763    Debug,
3764    Default,
3765    Clone,
3766    PartialEq,
3767    ::serde::Serialize,
3768    ::serde::Deserialize,
3769    ::derive_builder::Builder,
3770    ::validator::Validate,
3771)]
3772pub struct AccountIdentificationAndName5 {
3773    #[serde(rename = "Id")]
3774    pub id: AccountIdentification4Choice,
3775    #[serde(rename = "Nm", skip_serializing_if = "Option::is_none")]
3776    pub nm: Option<Max35Text>,
3777}
3778#[derive(
3779    Debug,
3780    Default,
3781    Clone,
3782    PartialEq,
3783    ::serde::Serialize,
3784    ::serde::Deserialize,
3785    ::derive_builder::Builder,
3786    ::validator::Validate,
3787)]
3788#[serde(rename = "Document")]
3789pub struct Document {
3790    #[validate]
3791    #[serde(rename = "SbcptBlkOrdr")]
3792    pub sbcpt_blk_ordr: SubscriptionBulkOrderV04,
3793    #[serde(rename = "@xmlns", default = "namespace")]
3794    pub xmlns: String,
3795}
3796#[derive(
3797    Debug,
3798    Default,
3799    Clone,
3800    PartialEq,
3801    ::serde::Serialize,
3802    ::serde::Deserialize,
3803    ::derive_builder::Builder,
3804    ::validator::Validate,
3805)]
3806pub struct AustrianBankleitzahlIdentifier {
3807    #[validate(regex = "AUSTRIAN_BANKLEITZAHL_IDENTIFIER_REGEX")]
3808    #[serde(rename = "$text")]
3809    pub value: String,
3810}
3811#[derive(
3812    Debug,
3813    Default,
3814    Clone,
3815    PartialEq,
3816    ::serde::Serialize,
3817    ::serde::Deserialize,
3818    ::derive_builder::Builder,
3819    ::validator::Validate,
3820)]
3821pub struct WaivingInstruction2ChoiceEnum {
3822    #[serde(rename = "Cd", skip_serializing_if = "Option::is_none")]
3823    pub cd: Option<WaivingInstruction1Code>,
3824    #[serde(rename = "Prtry", skip_serializing_if = "Option::is_none")]
3825    pub prtry: Option<GenericIdentification47>,
3826}
3827#[derive(
3828    Debug,
3829    Default,
3830    Clone,
3831    PartialEq,
3832    ::serde::Serialize,
3833    ::serde::Deserialize,
3834    ::derive_builder::Builder,
3835    ::validator::Validate,
3836)]
3837pub struct WaivingInstruction2Choice {
3838    #[serde(flatten)]
3839    pub value: WaivingInstruction2ChoiceEnum,
3840}
3841#[derive(
3842    Debug,
3843    Default,
3844    Clone,
3845    PartialEq,
3846    ::serde::Serialize,
3847    ::serde::Deserialize,
3848    ::derive_builder::Builder,
3849    ::validator::Validate,
3850)]
3851pub struct WertpapierIdentifier {
3852    #[serde(rename = "$text")]
3853    pub value: String,
3854}