package semt_017_001_08

import (
	"bytes"
	"encoding/xml"
	"time"
)

type ActiveOrHistoricCurrencyAnd13DecimalAmount struct {
	Value float64                      `xml:",chardata"`
	Ccy   ActiveOrHistoricCurrencyCode `xml:"Ccy,attr"`
}

type ActiveOrHistoricCurrencyAndAmount struct {
	Value float64                      `xml:",chardata"`
	Ccy   ActiveOrHistoricCurrencyCode `xml:"Ccy,attr"`
}

type ActiveOrHistoricCurrencyCode string

type AddressType2Code string

type AmountAndDirection21 struct {
	Amt       ActiveOrHistoricCurrencyAndAmount `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Amt"`
	CdtDbtInd CreditDebitCode                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 CdtDbtInd,omitempty"`
}

type AmountAndDirection3 struct {
	Amt    ActiveOrHistoricCurrencyAndAmount `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Amt"`
	CdtDbt CreditDebitCode                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 CdtDbt"`
}

type AnyBICIdentifier string

type BalanceQuantity8Choice struct {
	Qty   FinancialInstrumentQuantity1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Qty"`
	Prtry GenericIdentification56            `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type BeneficialOwnership4Choice struct {
	Ind   bool                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Ind"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type BlockTrade1Code string

type BlockTrade4Choice struct {
	Cd    BlockTrade1Code         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type CashSettlementSystem2Code string

type CashSettlementSystem4Choice struct {
	Cd    CashSettlementSystem2Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type CentralCounterPartyEligibility4Choice struct {
	Ind   bool                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Ind"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type ClosingBalance3 struct {
	ShrtLngInd ShortLong1Code        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ShrtLngInd"`
	ClsgBal    ClosingBalance4Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ClsgBal"`
}

type ClosingBalance4Choice struct {
	Fnl    BalanceQuantity8Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Fnl"`
	Intrmy BalanceQuantity8Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Intrmy"`
}

type CorporateActionEventType28Code string

type CorporateActionEventType73Choice struct {
	Cd    CorporateActionEventType28Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type CountryCode string

type CreditDebitCode string

type DateAndDateTime2Choice struct {
	Dt   ISODate     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Dt"`
	DtTm ISODateTime `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 DtTm"`
}

type DateTimePeriodDetails2 struct {
	FrDtTm ISODateTime `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FrDtTm"`
	ToDtTm ISODateTime `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ToDtTm"`
}

type DateType3Code string

type DeliveryReceiptType2Code string

type Document struct {
	SctiesTxPstngRpt SecuritiesTransactionPostingReportV08 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SctiesTxPstngRpt"`
}

type EventFrequency4Code string

type Exact3NumericText string

type Exact4AlphaNumericText string

type Exact5NumericText string

type ExternalFinancialInstrumentIdentificationType1Code string

type FinancialInstrumentDetails28 struct {
	FinInstrmId SecurityIdentification19 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FinInstrmId"`
	PricDtls    PriceInformation18       `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PricDtls,omitempty"`
	SfkpgPlc    SafeKeepingPlace1        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SfkpgPlc,omitempty"`
	OpngBal     OpeningBalance3          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 OpngBal,omitempty"`
	ClsgBal     ClosingBalance3          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ClsgBal,omitempty"`
	Tx          []Transaction62          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Tx"`
}

type FinancialInstrumentQuantity1Choice struct {
	Unit     float64 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Unit"`
	FaceAmt  float64 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FaceAmt"`
	AmtsdVal float64 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AmtsdVal"`
}

type Frequency25Choice struct {
	Cd    EventFrequency4Code     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type GenericIdentification30 struct {
	Id      Exact4AlphaNumericText `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	Issr    Max35Text              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Issr"`
	SchmeNm Max35Text              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SchmeNm,omitempty"`
}

type GenericIdentification36 struct {
	Id      Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	Issr    Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Issr"`
	SchmeNm Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SchmeNm,omitempty"`
}

type GenericIdentification56 struct {
	Id      Exact4AlphaNumericText `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	Issr    Max35Text              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Issr"`
	SchmeNm Max35Text              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SchmeNm,omitempty"`
	Bal     float64                `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Bal"`
}

type GenericIdentification78 struct {
	Tp GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Tp"`
	Id Max35Text               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id,omitempty"`
}

type ISINOct2015Identifier string

type ISODate time.Time

func (t *ISODate) UnmarshalText(text []byte) error {
	return (*xsdDate)(t).UnmarshalText(text)
}
func (t ISODate) MarshalText() ([]byte, error) {
	return xsdDate(t).MarshalText()
}

type ISODateTime time.Time

func (t *ISODateTime) UnmarshalText(text []byte) error {
	return (*xsdDateTime)(t).UnmarshalText(text)
}
func (t ISODateTime) MarshalText() ([]byte, error) {
	return xsdDateTime(t).MarshalText()
}

type IdentificationSource3Choice struct {
	Cd    ExternalFinancialInstrumentIdentificationType1Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry Max35Text                                          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type LEIIdentifier string

type LetterOfGuarantee4Choice struct {
	Ind   bool                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Ind"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type MICIdentifier string

type MarketClientSide1Code string

type MarketClientSide6Choice struct {
	Cd    MarketClientSide1Code   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type MarketIdentification1Choice struct {
	MktIdrCd MICIdentifier `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 MktIdrCd"`
	Desc     Max35Text     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Desc"`
}

type MarketIdentification84 struct {
	Id MarketIdentification1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id,omitempty"`
	Tp MarketType8Choice           `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Tp"`
}

type MarketIdentification89 struct {
	Id MarketIdentification1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id,omitempty"`
	Tp MarketType15Choice          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Tp"`
}

type MarketType15Choice struct {
	Cd    MarketType4Code         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type MarketType2Code string

type MarketType4Code string

type MarketType8Choice struct {
	Cd    MarketType2Code         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type Max140Text string

type Max16Text string

type Max350Text string

type Max35Text string

type Max5NumericText string

type Max70Text string

type NameAndAddress5 struct {
	Nm  Max350Text     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Nm"`
	Adr PostalAddress1 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Adr,omitempty"`
}

type NettingEligibility4Choice struct {
	Ind   bool                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Ind"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type Number3Choice struct {
	Shrt Exact3NumericText `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Shrt"`
	Lng  Exact5NumericText `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Lng"`
}

type OpeningBalance3 struct {
	ShrtLngInd ShortLong1Code        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ShrtLngInd"`
	OpngBal    OpeningBalance4Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 OpngBal"`
}

type OpeningBalance4Choice struct {
	Frst   BalanceQuantity8Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Frst"`
	Intrmy BalanceQuantity8Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Intrmy"`
}

type OriginalAndCurrentQuantities1 struct {
	FaceAmt  float64 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FaceAmt"`
	AmtsdVal float64 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AmtsdVal"`
}

type OtherIdentification1 struct {
	Id  Max35Text                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	Sfx Max16Text                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Sfx,omitempty"`
	Tp  IdentificationSource3Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Tp"`
}

type OwnershipLegalRestrictions1Code string

type Pagination1 struct {
	PgNb      Max5NumericText `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PgNb"`
	LastPgInd bool            `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LastPgInd"`
}

type PartyIdentification44Choice struct {
	AnyBIC   AnyBICIdentifier `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AnyBIC"`
	NmAndAdr NameAndAddress5  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 NmAndAdr"`
	Ctry     CountryCode      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Ctry"`
}

type PartyIdentification71Choice struct {
	AnyBIC   AnyBICIdentifier        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AnyBIC"`
	PrtryId  GenericIdentification36 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PrtryId"`
	NmAndAdr NameAndAddress5         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 NmAndAdr"`
}

type PartyIdentification91 struct {
	Id     PartyIdentification44Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	LEI    LEIIdentifier               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LEI,omitempty"`
	PrcgId Max35Text                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PrcgId,omitempty"`
}

type PartyIdentification92Choice struct {
	AnyBIC  AnyBICIdentifier        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AnyBIC"`
	PrtryId GenericIdentification36 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PrtryId"`
}

type PartyIdentification98 struct {
	Id  PartyIdentification92Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	LEI LEIIdentifier               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LEI,omitempty"`
}

type PartyIdentificationAndAccount117 struct {
	Id        PartyIdentification71Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	LEI       LEIIdentifier               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LEI,omitempty"`
	SfkpgAcct SecuritiesAccount19         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SfkpgAcct,omitempty"`
	PrcgId    Max35Text                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PrcgId,omitempty"`
}

type Period2 struct {
	FrDt ISODate `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FrDt"`
	ToDt ISODate `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ToDt"`
}

type Period5Choice struct {
	FrDtTmToDtTm DateTimePeriodDetails2 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FrDtTmToDtTm"`
	FrDtToDt     Period2                `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FrDtToDt"`
}

type PlaceOfClearingIdentification1 struct {
	Id  AnyBICIdentifier `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id,omitempty"`
	LEI LEIIdentifier    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LEI,omitempty"`
}

type PlaceOfTradeIdentification1 struct {
	MktTpAndId MarketIdentification84 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 MktTpAndId,omitempty"`
	LEI        LEIIdentifier          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LEI,omitempty"`
}

type PostalAddress1 struct {
	AdrTp       AddressType2Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AdrTp,omitempty"`
	AdrLine     []Max70Text      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AdrLine,omitempty"`
	StrtNm      Max70Text        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 StrtNm,omitempty"`
	BldgNb      Max16Text        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 BldgNb,omitempty"`
	PstCd       Max16Text        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PstCd,omitempty"`
	TwnNm       Max35Text        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TwnNm,omitempty"`
	CtrySubDvsn Max35Text        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 CtrySubDvsn,omitempty"`
	Ctry        CountryCode      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Ctry"`
}

type PriceInformation18 struct {
	Tp        TypeOfPrice30Choice               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Tp"`
	ValTp     YieldedOrValueType1Choice         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ValTp"`
	Val       PriceRateOrAmountOrUnknown2Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Val"`
	SrcOfPric MarketIdentification89            `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SrcOfPric,omitempty"`
	QtnDt     DateAndDateTime2Choice            `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 QtnDt,omitempty"`
}

type PriceRateOrAmountOrUnknown2Choice struct {
	Rate     float64                                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Rate"`
	Amt      ActiveOrHistoricCurrencyAnd13DecimalAmount `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Amt"`
	UknwnInd bool                                       `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 UknwnInd"`
}

type PriceValueType1Code string

type PurposeCode7Choice struct {
	Cd    SecuritiesAccountPurposeType1Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30           `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type Quantity6Choice struct {
	Qty             FinancialInstrumentQuantity1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Qty"`
	OrgnlAndCurFace OriginalAndCurrentQuantities1      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 OrgnlAndCurFace"`
}

type ReceiveDelivery1Code string

type Registration1Code string

type Registration9Choice struct {
	Cd    Registration1Code       `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type RepurchaseType22Choice struct {
	Cd    RepurchaseType9Code     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type RepurchaseType9Code string

type Restriction5Choice struct {
	Cd    OwnershipLegalRestrictions1Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type SafeKeepingPlace1 struct {
	SfkpgPlcFrmt SafekeepingPlaceFormat10Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SfkpgPlcFrmt,omitempty"`
	LEI          LEIIdentifier                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LEI,omitempty"`
}

type SafekeepingPlace1Code string

type SafekeepingPlace3Code string

type SafekeepingPlaceFormat10Choice struct {
	Id      SafekeepingPlaceTypeAndText8             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	Ctry    CountryCode                              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Ctry"`
	TpAndId SafekeepingPlaceTypeAndAnyBICIdentifier1 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TpAndId"`
	Prtry   GenericIdentification78                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type SafekeepingPlaceTypeAndAnyBICIdentifier1 struct {
	SfkpgPlcTp SafekeepingPlace1Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SfkpgPlcTp"`
	Id         AnyBICIdentifier      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
}

type SafekeepingPlaceTypeAndText8 struct {
	SfkpgPlcTp SafekeepingPlace3Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SfkpgPlcTp"`
	Id         Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id,omitempty"`
}

type SecuritiesAccount19 struct {
	Id Max35Text               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	Tp GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Tp,omitempty"`
	Nm Max70Text               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Nm,omitempty"`
}

type SecuritiesAccount25 struct {
	Id Max35Text          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	Tp PurposeCode7Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Tp,omitempty"`
	Nm Max70Text          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Nm,omitempty"`
}

type SecuritiesAccountPurposeType1Code string

type SecuritiesRTGS4Choice struct {
	Ind   bool                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Ind"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type SecuritiesTransactionPostingReportV08 struct {
	Pgntn         Pagination1                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Pgntn"`
	StmtGnlDtls   Statement61                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 StmtGnlDtls"`
	AcctOwnr      PartyIdentification98          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AcctOwnr,omitempty"`
	SfkpgAcct     SecuritiesAccount19            `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SfkpgAcct"`
	FinInstrmDtls []FinancialInstrumentDetails28 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FinInstrmDtls,omitempty"`
	SubAcctDtls   []SubAccountIdentification51   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SubAcctDtls,omitempty"`
}

type SecuritiesTransactionType19Code string

type SecuritiesTransactionType36Choice struct {
	Cd    SecuritiesTransactionType19Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type SecurityIdentification19 struct {
	ISIN   ISINOct2015Identifier  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ISIN,omitempty"`
	OthrId []OtherIdentification1 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 OthrId,omitempty"`
	Desc   Max140Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Desc,omitempty"`
}

type SettlementDate17Choice struct {
	Dt   DateAndDateTime2Choice    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Dt"`
	DtCd SettlementDateCode7Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 DtCd"`
}

type SettlementDate4Code string

type SettlementDateCode7Choice struct {
	Cd    SettlementDate4Code     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type SettlementDetails150 struct {
	SttlmTxCond    []SettlementTransactionCondition16Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SttlmTxCond,omitempty"`
	SttlgCpcty     SettlingCapacity7Choice                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SttlgCpcty,omitempty"`
	StmpDtyTaxBsis GenericIdentification30                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 StmpDtyTaxBsis,omitempty"`
	SctiesRTGS     SecuritiesRTGS4Choice                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SctiesRTGS,omitempty"`
	Regn           Registration9Choice                      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Regn,omitempty"`
	BnfclOwnrsh    BeneficialOwnership4Choice               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 BnfclOwnrsh,omitempty"`
	CshClrSys      CashSettlementSystem4Choice              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 CshClrSys,omitempty"`
	TaxCpcty       TaxCapacityParty4Choice                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TaxCpcty,omitempty"`
	RpTp           RepurchaseType22Choice                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 RpTp,omitempty"`
	MktClntSd      MarketClientSide6Choice                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 MktClntSd,omitempty"`
	BlckTrad       BlockTrade4Choice                        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 BlckTrad,omitempty"`
	LglRstrctns    Restriction5Choice                       `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LglRstrctns,omitempty"`
	SttlmSysMtd    SettlementSystemMethod4Choice            `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SttlmSysMtd,omitempty"`
	NetgElgblty    NettingEligibility4Choice                `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 NetgElgblty,omitempty"`
	CCPElgblty     CentralCounterPartyEligibility4Choice    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 CCPElgblty,omitempty"`
	LttrOfGrnt     LetterOfGuarantee4Choice                 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LttrOfGrnt,omitempty"`
	PrtlSttlmInd   SettlementTransactionCondition5Code      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PrtlSttlmInd,omitempty"`
}

type SettlementOrCorporateActionEvent22Choice struct {
	SctiesTxTp    SecuritiesTransactionType36Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SctiesTxTp"`
	CorpActnEvtTp CorporateActionEventType73Choice  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 CorpActnEvtTp"`
}

type SettlementParties40 struct {
	Dpstry PartyIdentification91            `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Dpstry,omitempty"`
	Pty1   PartyIdentificationAndAccount117 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Pty1,omitempty"`
	Pty2   PartyIdentificationAndAccount117 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Pty2,omitempty"`
	Pty3   PartyIdentificationAndAccount117 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Pty3,omitempty"`
	Pty4   PartyIdentificationAndAccount117 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Pty4,omitempty"`
	Pty5   PartyIdentificationAndAccount117 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Pty5,omitempty"`
}

type SettlementSystemMethod1Code string

type SettlementSystemMethod4Choice struct {
	Cd    SettlementSystemMethod1Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type SettlementTransactionCondition10Code string

type SettlementTransactionCondition16Choice struct {
	Cd    SettlementTransactionCondition10Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type SettlementTransactionCondition5Code string

type SettlingCapacity2Code string

type SettlingCapacity7Choice struct {
	Cd    SettlingCapacity2Code   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type ShortLong1Code string

type Statement61 struct {
	RptNb      Number3Choice         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 RptNb,omitempty"`
	QryRef     Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 QryRef,omitempty"`
	StmtId     Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 StmtId,omitempty"`
	StmtPrd    Period5Choice         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 StmtPrd"`
	Frqcy      Frequency25Choice     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Frqcy,omitempty"`
	UpdTp      UpdateType15Choice    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 UpdTp,omitempty"`
	StmtBsis   StatementBasis8Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 StmtBsis"`
	ActvtyInd  bool                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ActvtyInd"`
	SubAcctInd bool                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SubAcctInd"`
}

type StatementBasis2Code string

type StatementBasis8Choice struct {
	Cd    StatementBasis2Code     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type StatementUpdateType1Code string

type SubAccountIdentification51 struct {
	AcctOwnr      PartyIdentification98          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AcctOwnr,omitempty"`
	SfkpgAcct     SecuritiesAccount25            `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SfkpgAcct"`
	ActvtyInd     bool                           `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ActvtyInd"`
	FinInstrmDtls []FinancialInstrumentDetails28 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FinInstrmDtls,omitempty"`
}

type SupplementaryData1 struct {
	PlcAndNm Max350Text                 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PlcAndNm,omitempty"`
	Envlp    SupplementaryDataEnvelope1 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Envlp"`
}

type SupplementaryDataEnvelope1 struct {
	Item string `xml:",any"`
}

type TaxCapacityParty4Choice struct {
	Cd    TaxLiability1Code       `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type TaxLiability1Code string

type TradeDate8Choice struct {
	Dt   DateAndDateTime2Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Dt"`
	DtCd TradeDateCode3Choice   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 DtCd"`
}

type TradeDateCode3Choice struct {
	Cd    DateType3Code           `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type Transaction62 struct {
	AcctOwnrTxId                Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AcctOwnrTxId"`
	AcctSvcrTxId                Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AcctSvcrTxId,omitempty"`
	MktInfrstrctrTxId           Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 MktInfrstrctrTxId,omitempty"`
	PrcrTxId                    Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PrcrTxId,omitempty"`
	TradId                      []Max35Text           `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TradId,omitempty"`
	PoolId                      Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PoolId,omitempty"`
	CmonId                      Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 CmonId,omitempty"`
	CorpActnEvtId               Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 CorpActnEvtId,omitempty"`
	TrptyAgtSvcPrvdrCollTxId    Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TrptyAgtSvcPrvdrCollTxId,omitempty"`
	ClntTrptyCollTxId           Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ClntTrptyCollTxId,omitempty"`
	ClntCollInstrId             Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ClntCollInstrId,omitempty"`
	TrptyAgtSvcPrvdrCollInstrId Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TrptyAgtSvcPrvdrCollInstrId,omitempty"`
	TxDtls                      TransactionDetails103 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TxDtls,omitempty"`
	SplmtryData                 []SupplementaryData1  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SplmtryData,omitempty"`
}

type TransactionActivity1Code string

type TransactionActivity3Choice struct {
	Cd    TransactionActivity1Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type TransactionDetails103 struct {
	TxActvty               TransactionActivity3Choice               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TxActvty"`
	SttlmTxOrCorpActnEvtTp SettlementOrCorporateActionEvent22Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SttlmTxOrCorpActnEvtTp,omitempty"`
	SctiesMvmntTp          ReceiveDelivery1Code                     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SctiesMvmntTp"`
	Pmt                    DeliveryReceiptType2Code                 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Pmt"`
	SttlmParams            SettlementDetails150                     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SttlmParams,omitempty"`
	PlcOfTrad              PlaceOfTradeIdentification1              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PlcOfTrad,omitempty"`
	SfkpgPlc               SafeKeepingPlace1                        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SfkpgPlc,omitempty"`
	PlcOfClr               PlaceOfClearingIdentification1           `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PlcOfClr,omitempty"`
	PstngQty               Quantity6Choice                          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PstngQty"`
	NbOfDaysAcrd           float64                                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 NbOfDaysAcrd,omitempty"`
	PstngAmt               AmountAndDirection3                      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PstngAmt,omitempty"`
	AcrdIntrstAmt          AmountAndDirection21                     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AcrdIntrstAmt,omitempty"`
	TradDt                 TradeDate8Choice                         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TradDt,omitempty"`
	FctvSttlmDt            DateAndDateTime2Choice                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FctvSttlmDt"`
	SttlmDt                SettlementDate17Choice                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SttlmDt,omitempty"`
	ValDt                  DateAndDateTime2Choice                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ValDt,omitempty"`
	AckdStsTmStmp          ISODateTime                              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AckdStsTmStmp,omitempty"`
	MtchdStsTmStmp         ISODateTime                              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 MtchdStsTmStmp,omitempty"`
	DlvrgSttlmPties        SettlementParties40                      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 DlvrgSttlmPties,omitempty"`
	RcvgSttlmPties         SettlementParties40                      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 RcvgSttlmPties,omitempty"`
	RvslInd                bool                                     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 RvslInd,omitempty"`
	TxAddtlDtls            Max350Text                               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TxAddtlDtls,omitempty"`
}

type TypeOfPrice16Code string

type TypeOfPrice30Choice struct {
	Cd    TypeOfPrice16Code       `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type UpdateType15Choice struct {
	Cd    StatementUpdateType1Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type YieldedOrValueType1Choice struct {
	Yldd  bool                `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Yldd"`
	ValTp PriceValueType1Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ValTp"`
}

type xsdDate time.Time

func (t *xsdDate) UnmarshalText(text []byte) error {
	return _unmarshalTime(text, (*time.Time)(t), "2006-01-02")
}
func (t xsdDate) MarshalText() ([]byte, error) {
	return _marshalTime((time.Time)(t), "2006-01-02")
}
func (t xsdDate) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
	if (time.Time)(t).IsZero() {
		return nil
	}
	m, err := t.MarshalText()
	if err != nil {
		return err
	}
	return e.EncodeElement(m, start)
}
func (t xsdDate) MarshalXMLAttr(name xml.Name) (xml.Attr, error) {
	if (time.Time)(t).IsZero() {
		return xml.Attr{}, nil
	}
	m, err := t.MarshalText()
	return xml.Attr{Name: name, Value: string(m)}, err
}
func _unmarshalTime(text []byte, t *time.Time, format string) (err error) {
	s := string(bytes.TrimSpace(text))
	*t, err = time.Parse(format, s)
	if _, ok := err.(*time.ParseError); ok {
		*t, err = time.Parse(format+"Z07:00", s)
	}
	return err
}
func _marshalTime(t time.Time, format string) ([]byte, error) {
	return []byte(t.Format(format + "Z07:00")), nil
}

type xsdDateTime time.Time

func (t *xsdDateTime) UnmarshalText(text []byte) error {
	return _unmarshalTime(text, (*time.Time)(t), "2006-01-02T15:04:05.999999999")
}
func (t xsdDateTime) MarshalText() ([]byte, error) {
	return _marshalTime((time.Time)(t), "2006-01-02T15:04:05.999999999")
}
func (t xsdDateTime) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
	if (time.Time)(t).IsZero() {
		return nil
	}
	m, err := t.MarshalText()
	if err != nil {
		return err
	}
	return e.EncodeElement(m, start)
}
func (t xsdDateTime) MarshalXMLAttr(name xml.Name) (xml.Attr, error) {
	if (time.Time)(t).IsZero() {
		return xml.Attr{}, nil
	}
	m, err := t.MarshalText()
	return xml.Attr{Name: name, Value: string(m)}, err
}
// Code generated by main. DO NOT EDIT.

package semt_017_001_08

import (
	"bytes"
	"encoding/xml"
	"time"
)

type ActiveOrHistoricCurrencyAnd13DecimalAmount struct {
	Value float64                      `xml:",chardata"`
	Ccy   ActiveOrHistoricCurrencyCode `xml:"Ccy,attr"`
}

type ActiveOrHistoricCurrencyAndAmount struct {
	Value float64                      `xml:",chardata"`
	Ccy   ActiveOrHistoricCurrencyCode `xml:"Ccy,attr"`
}

// Must match the pattern [A-Z]{3,3}
type ActiveOrHistoricCurrencyCode string

// May be one of ADDR, PBOX, HOME, BIZZ, MLTO, DLVY
type AddressType2Code string

type AmountAndDirection21 struct {
	Amt       ActiveOrHistoricCurrencyAndAmount `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Amt"`
	CdtDbtInd CreditDebitCode                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 CdtDbtInd,omitempty"`
}

type AmountAndDirection3 struct {
	Amt    ActiveOrHistoricCurrencyAndAmount `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Amt"`
	CdtDbt CreditDebitCode                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 CdtDbt"`
}

// Must match the pattern [A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}
type AnyBICIdentifier string

type BalanceQuantity8Choice struct {
	Qty   FinancialInstrumentQuantity1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Qty"`
	Prtry GenericIdentification56            `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type BeneficialOwnership4Choice struct {
	Ind   bool                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Ind"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

// May be one of BLPA, BLCH
type BlockTrade1Code string

type BlockTrade4Choice struct {
	Cd    BlockTrade1Code         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

// May be one of GROS, NETS
type CashSettlementSystem2Code string

type CashSettlementSystem4Choice struct {
	Cd    CashSettlementSystem2Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type CentralCounterPartyEligibility4Choice struct {
	Ind   bool                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Ind"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type ClosingBalance3 struct {
	ShrtLngInd ShortLong1Code        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ShrtLngInd"`
	ClsgBal    ClosingBalance4Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ClsgBal"`
}

type ClosingBalance4Choice struct {
	Fnl    BalanceQuantity8Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Fnl"`
	Intrmy BalanceQuantity8Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Intrmy"`
}

// May be one of ACTV, ATTI, BRUP, DFLT, BONU, EXRI, CAPD, CAPG, CAPI, DRCA, DVCA, CHAN, COOP, CLSA, CONS, CONV, CREV, DECR, DETI, DSCL, DVOP, DRIP, DRAW, DTCH, EXOF, REDM, MCAL, INCR, PPMT, INTR, PRII, RHDI, LIQU, EXTM, MRGR, NOOF, CERT, ODLT, OTHR, PARI, PCAL, PRED, PINK, PLAC, PDEF, PRIO, BPUT, REDO, REMK, BIDS, SPLR, RHTS, DVSC, SHPR, SMAL, SOFF, DVSE, SPLF, TREC, TEND, DLST, SUSP, EXWA, WTRC, WRTH, ACCU, MTNG, INFO, TNDP
type CorporateActionEventType28Code string

type CorporateActionEventType73Choice struct {
	Cd    CorporateActionEventType28Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

// Must match the pattern [A-Z]{2,2}
type CountryCode string

// May be one of CRDT, DBIT
type CreditDebitCode string

type DateAndDateTime2Choice struct {
	Dt   ISODate     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Dt"`
	DtTm ISODateTime `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 DtTm"`
}

type DateTimePeriodDetails2 struct {
	FrDtTm ISODateTime `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FrDtTm"`
	ToDtTm ISODateTime `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ToDtTm"`
}

// May be one of VARI
type DateType3Code string

// May be one of FREE, APMT
type DeliveryReceiptType2Code string

type Document struct {
	SctiesTxPstngRpt SecuritiesTransactionPostingReportV08 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SctiesTxPstngRpt"`
}

// May be one of YEAR, ADHO, MNTH, DAIL, INDA, WEEK
type EventFrequency4Code string

// Must match the pattern [0-9]{3}
type Exact3NumericText string

// Must match the pattern [a-zA-Z0-9]{4}
type Exact4AlphaNumericText string

// Must match the pattern [0-9]{5}
type Exact5NumericText string

// Must be at least 1 items long
type ExternalFinancialInstrumentIdentificationType1Code string

type FinancialInstrumentDetails28 struct {
	FinInstrmId SecurityIdentification19 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FinInstrmId"`
	PricDtls    PriceInformation18       `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PricDtls,omitempty"`
	SfkpgPlc    SafeKeepingPlace1        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SfkpgPlc,omitempty"`
	OpngBal     OpeningBalance3          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 OpngBal,omitempty"`
	ClsgBal     ClosingBalance3          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ClsgBal,omitempty"`
	Tx          []Transaction62          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Tx"`
}

type FinancialInstrumentQuantity1Choice struct {
	Unit     float64 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Unit"`
	FaceAmt  float64 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FaceAmt"`
	AmtsdVal float64 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AmtsdVal"`
}

type Frequency25Choice struct {
	Cd    EventFrequency4Code     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type GenericIdentification30 struct {
	Id      Exact4AlphaNumericText `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	Issr    Max35Text              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Issr"`
	SchmeNm Max35Text              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SchmeNm,omitempty"`
}

type GenericIdentification36 struct {
	Id      Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	Issr    Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Issr"`
	SchmeNm Max35Text `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SchmeNm,omitempty"`
}

type GenericIdentification56 struct {
	Id      Exact4AlphaNumericText `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	Issr    Max35Text              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Issr"`
	SchmeNm Max35Text              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SchmeNm,omitempty"`
	Bal     float64                `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Bal"`
}

type GenericIdentification78 struct {
	Tp GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Tp"`
	Id Max35Text               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id,omitempty"`
}

// Must match the pattern [A-Z]{2,2}[A-Z0-9]{9,9}[0-9]{1,1}
type ISINOct2015Identifier string

type ISODate time.Time

func (t *ISODate) UnmarshalText(text []byte) error {
	return (*xsdDate)(t).UnmarshalText(text)
}
func (t ISODate) MarshalText() ([]byte, error) {
	return xsdDate(t).MarshalText()
}

type ISODateTime time.Time

func (t *ISODateTime) UnmarshalText(text []byte) error {
	return (*xsdDateTime)(t).UnmarshalText(text)
}
func (t ISODateTime) MarshalText() ([]byte, error) {
	return xsdDateTime(t).MarshalText()
}

type IdentificationSource3Choice struct {
	Cd    ExternalFinancialInstrumentIdentificationType1Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry Max35Text                                          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

// Must match the pattern [A-Z0-9]{18,18}[0-9]{2,2}
type LEIIdentifier string

type LetterOfGuarantee4Choice struct {
	Ind   bool                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Ind"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

// Must match the pattern [A-Z0-9]{4,4}
type MICIdentifier string

// May be one of CLNT, MAKT
type MarketClientSide1Code string

type MarketClientSide6Choice struct {
	Cd    MarketClientSide1Code   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type MarketIdentification1Choice struct {
	MktIdrCd MICIdentifier `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 MktIdrCd"`
	Desc     Max35Text     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Desc"`
}

type MarketIdentification84 struct {
	Id MarketIdentification1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id,omitempty"`
	Tp MarketType8Choice           `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Tp"`
}

type MarketIdentification89 struct {
	Id MarketIdentification1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id,omitempty"`
	Tp MarketType15Choice          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Tp"`
}

type MarketType15Choice struct {
	Cd    MarketType4Code         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

// May be one of PRIM, SECM, OTCO, VARI, EXCH
type MarketType2Code string

// May be one of FUND, LMAR, THEO, VEND
type MarketType4Code string

type MarketType8Choice struct {
	Cd    MarketType2Code         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

// Must be at least 1 items long
type Max140Text string

// Must be at least 1 items long
type Max16Text string

// Must be at least 1 items long
type Max350Text string

// Must be at least 1 items long
type Max35Text string

// Must match the pattern [0-9]{1,5}
type Max5NumericText string

// Must be at least 1 items long
type Max70Text string

type NameAndAddress5 struct {
	Nm  Max350Text     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Nm"`
	Adr PostalAddress1 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Adr,omitempty"`
}

type NettingEligibility4Choice struct {
	Ind   bool                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Ind"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type Number3Choice struct {
	Shrt Exact3NumericText `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Shrt"`
	Lng  Exact5NumericText `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Lng"`
}

type OpeningBalance3 struct {
	ShrtLngInd ShortLong1Code        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ShrtLngInd"`
	OpngBal    OpeningBalance4Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 OpngBal"`
}

type OpeningBalance4Choice struct {
	Frst   BalanceQuantity8Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Frst"`
	Intrmy BalanceQuantity8Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Intrmy"`
}

type OriginalAndCurrentQuantities1 struct {
	FaceAmt  float64 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FaceAmt"`
	AmtsdVal float64 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AmtsdVal"`
}

type OtherIdentification1 struct {
	Id  Max35Text                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	Sfx Max16Text                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Sfx,omitempty"`
	Tp  IdentificationSource3Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Tp"`
}

// May be one of A144, NRST, RSTR
type OwnershipLegalRestrictions1Code string

type Pagination1 struct {
	PgNb      Max5NumericText `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PgNb"`
	LastPgInd bool            `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LastPgInd"`
}

type PartyIdentification44Choice struct {
	AnyBIC   AnyBICIdentifier `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AnyBIC"`
	NmAndAdr NameAndAddress5  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 NmAndAdr"`
	Ctry     CountryCode      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Ctry"`
}

type PartyIdentification71Choice struct {
	AnyBIC   AnyBICIdentifier        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AnyBIC"`
	PrtryId  GenericIdentification36 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PrtryId"`
	NmAndAdr NameAndAddress5         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 NmAndAdr"`
}

type PartyIdentification91 struct {
	Id     PartyIdentification44Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	LEI    LEIIdentifier               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LEI,omitempty"`
	PrcgId Max35Text                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PrcgId,omitempty"`
}

type PartyIdentification92Choice struct {
	AnyBIC  AnyBICIdentifier        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AnyBIC"`
	PrtryId GenericIdentification36 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PrtryId"`
}

type PartyIdentification98 struct {
	Id  PartyIdentification92Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	LEI LEIIdentifier               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LEI,omitempty"`
}

type PartyIdentificationAndAccount117 struct {
	Id        PartyIdentification71Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	LEI       LEIIdentifier               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LEI,omitempty"`
	SfkpgAcct SecuritiesAccount19         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SfkpgAcct,omitempty"`
	PrcgId    Max35Text                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PrcgId,omitempty"`
}

type Period2 struct {
	FrDt ISODate `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FrDt"`
	ToDt ISODate `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ToDt"`
}

type Period5Choice struct {
	FrDtTmToDtTm DateTimePeriodDetails2 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FrDtTmToDtTm"`
	FrDtToDt     Period2                `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FrDtToDt"`
}

type PlaceOfClearingIdentification1 struct {
	Id  AnyBICIdentifier `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id,omitempty"`
	LEI LEIIdentifier    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LEI,omitempty"`
}

type PlaceOfTradeIdentification1 struct {
	MktTpAndId MarketIdentification84 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 MktTpAndId,omitempty"`
	LEI        LEIIdentifier          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LEI,omitempty"`
}

type PostalAddress1 struct {
	AdrTp       AddressType2Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AdrTp,omitempty"`
	AdrLine     []Max70Text      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AdrLine,omitempty"`
	StrtNm      Max70Text        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 StrtNm,omitempty"`
	BldgNb      Max16Text        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 BldgNb,omitempty"`
	PstCd       Max16Text        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PstCd,omitempty"`
	TwnNm       Max35Text        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TwnNm,omitempty"`
	CtrySubDvsn Max35Text        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 CtrySubDvsn,omitempty"`
	Ctry        CountryCode      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Ctry"`
}

type PriceInformation18 struct {
	Tp        TypeOfPrice30Choice               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Tp"`
	ValTp     YieldedOrValueType1Choice         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ValTp"`
	Val       PriceRateOrAmountOrUnknown2Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Val"`
	SrcOfPric MarketIdentification89            `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SrcOfPric,omitempty"`
	QtnDt     DateAndDateTime2Choice            `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 QtnDt,omitempty"`
}

type PriceRateOrAmountOrUnknown2Choice struct {
	Rate     float64                                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Rate"`
	Amt      ActiveOrHistoricCurrencyAnd13DecimalAmount `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Amt"`
	UknwnInd bool                                       `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 UknwnInd"`
}

// May be one of DISC, PREM, PARV
type PriceValueType1Code string

type PurposeCode7Choice struct {
	Cd    SecuritiesAccountPurposeType1Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30           `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type Quantity6Choice struct {
	Qty             FinancialInstrumentQuantity1Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Qty"`
	OrgnlAndCurFace OriginalAndCurrentQuantities1      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 OrgnlAndCurFace"`
}

// May be one of DELI, RECE
type ReceiveDelivery1Code string

// May be one of NREG, YREG
type Registration1Code string

type Registration9Choice struct {
	Cd    Registration1Code       `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type RepurchaseType22Choice struct {
	Cd    RepurchaseType9Code     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

// May be one of PAIR, PADJ, RATE, CALL, ROLP, CADJ, TOPU, WTHD
type RepurchaseType9Code string

type Restriction5Choice struct {
	Cd    OwnershipLegalRestrictions1Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type SafeKeepingPlace1 struct {
	SfkpgPlcFrmt SafekeepingPlaceFormat10Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SfkpgPlcFrmt,omitempty"`
	LEI          LEIIdentifier                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LEI,omitempty"`
}

// May be one of CUST, ICSD, NCSD, SHHE
type SafekeepingPlace1Code string

// May be one of SHHE
type SafekeepingPlace3Code string

type SafekeepingPlaceFormat10Choice struct {
	Id      SafekeepingPlaceTypeAndText8             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	Ctry    CountryCode                              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Ctry"`
	TpAndId SafekeepingPlaceTypeAndAnyBICIdentifier1 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TpAndId"`
	Prtry   GenericIdentification78                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type SafekeepingPlaceTypeAndAnyBICIdentifier1 struct {
	SfkpgPlcTp SafekeepingPlace1Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SfkpgPlcTp"`
	Id         AnyBICIdentifier      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
}

type SafekeepingPlaceTypeAndText8 struct {
	SfkpgPlcTp SafekeepingPlace3Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SfkpgPlcTp"`
	Id         Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id,omitempty"`
}

type SecuritiesAccount19 struct {
	Id Max35Text               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	Tp GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Tp,omitempty"`
	Nm Max70Text               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Nm,omitempty"`
}

type SecuritiesAccount25 struct {
	Id Max35Text          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Id"`
	Tp PurposeCode7Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Tp,omitempty"`
	Nm Max70Text          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Nm,omitempty"`
}

// May be one of MARG, SHOR, ABRD, CEND, DVPA, PHYS
type SecuritiesAccountPurposeType1Code string

type SecuritiesRTGS4Choice struct {
	Ind   bool                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Ind"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type SecuritiesTransactionPostingReportV08 struct {
	Pgntn         Pagination1                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Pgntn"`
	StmtGnlDtls   Statement61                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 StmtGnlDtls"`
	AcctOwnr      PartyIdentification98          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AcctOwnr,omitempty"`
	SfkpgAcct     SecuritiesAccount19            `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SfkpgAcct"`
	FinInstrmDtls []FinancialInstrumentDetails28 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FinInstrmDtls,omitempty"`
	SubAcctDtls   []SubAccountIdentification51   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SubAcctDtls,omitempty"`
}

// May be one of BSBK, BIYI, CNCB, COLI, COLO, CONV, FCTA, INSP, ISSU, MKDW, MKUP, NETT, NSYN, OWNE, OWNI, PAIR, PLAC, PORT, REAL, REDI, REDM, RELE, REPU, RODE, RVPO, SBBK, SBRE, SECB, SECL, SLRE, SUBS, SYND, TBAC, TRAD, TRPO, TRVO, TURN, CLAI, CORP, AUTO, ETFT, SWIF, SWIT
type SecuritiesTransactionType19Code string

type SecuritiesTransactionType36Choice struct {
	Cd    SecuritiesTransactionType19Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type SecurityIdentification19 struct {
	ISIN   ISINOct2015Identifier  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ISIN,omitempty"`
	OthrId []OtherIdentification1 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 OthrId,omitempty"`
	Desc   Max140Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Desc,omitempty"`
}

type SettlementDate17Choice struct {
	Dt   DateAndDateTime2Choice    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Dt"`
	DtCd SettlementDateCode7Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 DtCd"`
}

// May be one of WISS
type SettlementDate4Code string

type SettlementDateCode7Choice struct {
	Cd    SettlementDate4Code     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type SettlementDetails150 struct {
	SttlmTxCond    []SettlementTransactionCondition16Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SttlmTxCond,omitempty"`
	SttlgCpcty     SettlingCapacity7Choice                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SttlgCpcty,omitempty"`
	StmpDtyTaxBsis GenericIdentification30                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 StmpDtyTaxBsis,omitempty"`
	SctiesRTGS     SecuritiesRTGS4Choice                    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SctiesRTGS,omitempty"`
	Regn           Registration9Choice                      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Regn,omitempty"`
	BnfclOwnrsh    BeneficialOwnership4Choice               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 BnfclOwnrsh,omitempty"`
	CshClrSys      CashSettlementSystem4Choice              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 CshClrSys,omitempty"`
	TaxCpcty       TaxCapacityParty4Choice                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TaxCpcty,omitempty"`
	RpTp           RepurchaseType22Choice                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 RpTp,omitempty"`
	MktClntSd      MarketClientSide6Choice                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 MktClntSd,omitempty"`
	BlckTrad       BlockTrade4Choice                        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 BlckTrad,omitempty"`
	LglRstrctns    Restriction5Choice                       `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LglRstrctns,omitempty"`
	SttlmSysMtd    SettlementSystemMethod4Choice            `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SttlmSysMtd,omitempty"`
	NetgElgblty    NettingEligibility4Choice                `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 NetgElgblty,omitempty"`
	CCPElgblty     CentralCounterPartyEligibility4Choice    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 CCPElgblty,omitempty"`
	LttrOfGrnt     LetterOfGuarantee4Choice                 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 LttrOfGrnt,omitempty"`
	PrtlSttlmInd   SettlementTransactionCondition5Code      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PrtlSttlmInd,omitempty"`
}

type SettlementOrCorporateActionEvent22Choice struct {
	SctiesTxTp    SecuritiesTransactionType36Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SctiesTxTp"`
	CorpActnEvtTp CorporateActionEventType73Choice  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 CorpActnEvtTp"`
}

type SettlementParties40 struct {
	Dpstry PartyIdentification91            `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Dpstry,omitempty"`
	Pty1   PartyIdentificationAndAccount117 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Pty1,omitempty"`
	Pty2   PartyIdentificationAndAccount117 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Pty2,omitempty"`
	Pty3   PartyIdentificationAndAccount117 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Pty3,omitempty"`
	Pty4   PartyIdentificationAndAccount117 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Pty4,omitempty"`
	Pty5   PartyIdentificationAndAccount117 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Pty5,omitempty"`
}

// May be one of NSET, YSET
type SettlementSystemMethod1Code string

type SettlementSystemMethod4Choice struct {
	Cd    SettlementSystemMethod1Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

// May be one of ADEA, ASGN, BUTC, CLEN, DLWM, DIRT, DRAW, EXER, EXPI, FRCL, KNOC, NOMC, NACT, PENS, PHYS, RHYP, RPTO, RESI, SHOR, SPDL, SPST, TRAN, TRIP, UNEX
type SettlementTransactionCondition10Code string

type SettlementTransactionCondition16Choice struct {
	Cd    SettlementTransactionCondition10Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

// May be one of PART, NPAR, PARC, PARQ
type SettlementTransactionCondition5Code string

// May be one of SAGE, CUST, SPRI, RISP
type SettlingCapacity2Code string

type SettlingCapacity7Choice struct {
	Cd    SettlingCapacity2Code   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

// May be one of SHOR, LONG
type ShortLong1Code string

type Statement61 struct {
	RptNb      Number3Choice         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 RptNb,omitempty"`
	QryRef     Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 QryRef,omitempty"`
	StmtId     Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 StmtId,omitempty"`
	StmtPrd    Period5Choice         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 StmtPrd"`
	Frqcy      Frequency25Choice     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Frqcy,omitempty"`
	UpdTp      UpdateType15Choice    `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 UpdTp,omitempty"`
	StmtBsis   StatementBasis8Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 StmtBsis"`
	ActvtyInd  bool                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ActvtyInd"`
	SubAcctInd bool                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SubAcctInd"`
}

// May be one of SETT, TRAD
type StatementBasis2Code string

type StatementBasis8Choice struct {
	Cd    StatementBasis2Code     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

// May be one of COMP, DELT
type StatementUpdateType1Code string

type SubAccountIdentification51 struct {
	AcctOwnr      PartyIdentification98          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AcctOwnr,omitempty"`
	SfkpgAcct     SecuritiesAccount25            `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SfkpgAcct"`
	ActvtyInd     bool                           `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ActvtyInd"`
	FinInstrmDtls []FinancialInstrumentDetails28 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FinInstrmDtls,omitempty"`
}

type SupplementaryData1 struct {
	PlcAndNm Max350Text                 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PlcAndNm,omitempty"`
	Envlp    SupplementaryDataEnvelope1 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Envlp"`
}

type SupplementaryDataEnvelope1 struct {
	Item string `xml:",any"`
}

type TaxCapacityParty4Choice struct {
	Cd    TaxLiability1Code       `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

// May be one of PRIN, AGEN
type TaxLiability1Code string

type TradeDate8Choice struct {
	Dt   DateAndDateTime2Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Dt"`
	DtCd TradeDateCode3Choice   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 DtCd"`
}

type TradeDateCode3Choice struct {
	Cd    DateType3Code           `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type Transaction62 struct {
	AcctOwnrTxId                Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AcctOwnrTxId"`
	AcctSvcrTxId                Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AcctSvcrTxId,omitempty"`
	MktInfrstrctrTxId           Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 MktInfrstrctrTxId,omitempty"`
	PrcrTxId                    Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PrcrTxId,omitempty"`
	TradId                      []Max35Text           `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TradId,omitempty"`
	PoolId                      Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PoolId,omitempty"`
	CmonId                      Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 CmonId,omitempty"`
	CorpActnEvtId               Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 CorpActnEvtId,omitempty"`
	TrptyAgtSvcPrvdrCollTxId    Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TrptyAgtSvcPrvdrCollTxId,omitempty"`
	ClntTrptyCollTxId           Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ClntTrptyCollTxId,omitempty"`
	ClntCollInstrId             Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ClntCollInstrId,omitempty"`
	TrptyAgtSvcPrvdrCollInstrId Max35Text             `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TrptyAgtSvcPrvdrCollInstrId,omitempty"`
	TxDtls                      TransactionDetails103 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TxDtls,omitempty"`
	SplmtryData                 []SupplementaryData1  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SplmtryData,omitempty"`
}

// May be one of BOLE, CLAI, COLL, CORP, SETT
type TransactionActivity1Code string

type TransactionActivity3Choice struct {
	Cd    TransactionActivity1Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type TransactionDetails103 struct {
	TxActvty               TransactionActivity3Choice               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TxActvty"`
	SttlmTxOrCorpActnEvtTp SettlementOrCorporateActionEvent22Choice `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SttlmTxOrCorpActnEvtTp,omitempty"`
	SctiesMvmntTp          ReceiveDelivery1Code                     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SctiesMvmntTp"`
	Pmt                    DeliveryReceiptType2Code                 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Pmt"`
	SttlmParams            SettlementDetails150                     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SttlmParams,omitempty"`
	PlcOfTrad              PlaceOfTradeIdentification1              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PlcOfTrad,omitempty"`
	SfkpgPlc               SafeKeepingPlace1                        `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SfkpgPlc,omitempty"`
	PlcOfClr               PlaceOfClearingIdentification1           `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PlcOfClr,omitempty"`
	PstngQty               Quantity6Choice                          `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PstngQty"`
	NbOfDaysAcrd           float64                                  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 NbOfDaysAcrd,omitempty"`
	PstngAmt               AmountAndDirection3                      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 PstngAmt,omitempty"`
	AcrdIntrstAmt          AmountAndDirection21                     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AcrdIntrstAmt,omitempty"`
	TradDt                 TradeDate8Choice                         `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TradDt,omitempty"`
	FctvSttlmDt            DateAndDateTime2Choice                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 FctvSttlmDt"`
	SttlmDt                SettlementDate17Choice                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 SttlmDt,omitempty"`
	ValDt                  DateAndDateTime2Choice                   `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ValDt,omitempty"`
	AckdStsTmStmp          ISODateTime                              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 AckdStsTmStmp,omitempty"`
	MtchdStsTmStmp         ISODateTime                              `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 MtchdStsTmStmp,omitempty"`
	DlvrgSttlmPties        SettlementParties40                      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 DlvrgSttlmPties,omitempty"`
	RcvgSttlmPties         SettlementParties40                      `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 RcvgSttlmPties,omitempty"`
	RvslInd                bool                                     `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 RvslInd,omitempty"`
	TxAddtlDtls            Max350Text                               `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 TxAddtlDtls,omitempty"`
}

// May be one of MRKT, INDC
type TypeOfPrice16Code string

type TypeOfPrice30Choice struct {
	Cd    TypeOfPrice16Code       `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30 `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type UpdateType15Choice struct {
	Cd    StatementUpdateType1Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Cd"`
	Prtry GenericIdentification30  `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Prtry"`
}

type YieldedOrValueType1Choice struct {
	Yldd  bool                `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 Yldd"`
	ValTp PriceValueType1Code `xml:"urn:iso:std:iso:20022:tech:xsd:semt.017.001.08 ValTp"`
}

type xsdDate time.Time

func (t *xsdDate) UnmarshalText(text []byte) error {
	return _unmarshalTime(text, (*time.Time)(t), "2006-01-02")
}
func (t xsdDate) MarshalText() ([]byte, error) {
	return _marshalTime((time.Time)(t), "2006-01-02")
}
func (t xsdDate) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
	if (time.Time)(t).IsZero() {
		return nil
	}
	m, err := t.MarshalText()
	if err != nil {
		return err
	}
	return e.EncodeElement(m, start)
}
func (t xsdDate) MarshalXMLAttr(name xml.Name) (xml.Attr, error) {
	if (time.Time)(t).IsZero() {
		return xml.Attr{}, nil
	}
	m, err := t.MarshalText()
	return xml.Attr{Name: name, Value: string(m)}, err
}
func _unmarshalTime(text []byte, t *time.Time, format string) (err error) {
	s := string(bytes.TrimSpace(text))
	*t, err = time.Parse(format, s)
	if _, ok := err.(*time.ParseError); ok {
		*t, err = time.Parse(format+"Z07:00", s)
	}
	return err
}
func _marshalTime(t time.Time, format string) ([]byte, error) {
	return []byte(t.Format(format + "Z07:00")), nil
}

type xsdDateTime time.Time

func (t *xsdDateTime) UnmarshalText(text []byte) error {
	return _unmarshalTime(text, (*time.Time)(t), "2006-01-02T15:04:05.999999999")
}
func (t xsdDateTime) MarshalText() ([]byte, error) {
	return _marshalTime((time.Time)(t), "2006-01-02T15:04:05.999999999")
}
func (t xsdDateTime) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
	if (time.Time)(t).IsZero() {
		return nil
	}
	m, err := t.MarshalText()
	if err != nil {
		return err
	}
	return e.EncodeElement(m, start)
}
func (t xsdDateTime) MarshalXMLAttr(name xml.Name) (xml.Attr, error) {
	if (time.Time)(t).IsZero() {
		return xml.Attr{}, nil
	}
	m, err := t.MarshalText()
	return xml.Attr{Name: name, Value: string(m)}, err
}
