<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element type="collateralBalances" name="CollateralBalances"/>

  <xs:complexType name="collateralBalances">
    <xs:sequence>
      <xs:element name="CollateralBalance" maxOccurs="unbounded" minOccurs="0">
        <xs:complexType>
          <xs:all>
            <xs:element ref="nettingSetGroup"/>
            <xs:element type="currencyCode" name="Currency" minOccurs="0"/>
            <xs:element type="xs:decimal" name="InitialMargin" minOccurs="0"/>
            <xs:element type="xs:decimal" name="VariationMargin" minOccurs="0"/>
          </xs:all>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element type="nettingsetdefinitions" name="NettingSetDefinitions"/>

  <xs:complexType name="nettingsetdefinitions">
    <xs:sequence>
      <xs:element name="NettingSet" maxOccurs="unbounded" minOccurs="0">
        <xs:complexType>
          <xs:all>
            <xs:element ref="nettingSetGroup"/>
            <xs:element type="xs:boolean" name="ActiveCSAFlag" minOccurs="0"/>
            <xs:element name="CSADetails" minOccurs="0">
              <xs:complexType mixed="true">
                <xs:all>
                  <xs:element type="csaType" name="Bilateral" minOccurs="0"/>
                  <xs:element type="currencyCode" name="CSACurrency" minOccurs="0"/>
                  <xs:element type="xs:string" name="Index" minOccurs="0"/>
                  <xs:element type="non-negative-decimal" name="ThresholdPay" minOccurs="0"/>
                  <xs:element type="non-negative-decimal" name="ThresholdReceive" minOccurs="0"/>
                  <xs:element type="non-negative-decimal" name="MinimumTransferAmountPay" minOccurs="0"/>
                  <xs:element type="non-negative-decimal" name="MinimumTransferAmountReceive" minOccurs="0"/>
                  <xs:element name="IndependentAmount" minOccurs="0">
                    <xs:complexType>
                      <xs:all>
                        <xs:element type="xs:decimal" name="IndependentAmountHeld"/>
                        <xs:element type="independentAmountType" name="IndependentAmountType"/>
                      </xs:all>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="MarginingFrequency" minOccurs="0">
                    <xs:complexType>
                      <xs:all>
                        <xs:element type="xs:string" name="CallFrequency"/>
                        <xs:element type="xs:string" name="PostFrequency"/>
                      </xs:all>
                    </xs:complexType>
                  </xs:element>
                  <xs:element type="xs:string" name="MarginPeriodOfRisk" minOccurs="0"/>
                  <xs:element type="xs:decimal" name="CollateralCompoundingSpreadReceive" minOccurs="0"/>
                  <xs:element type="xs:decimal" name="CollateralCompoundingSpreadPay" minOccurs="0"/>
                  <xs:element name="EligibleCollaterals" minOccurs="0">
                    <xs:complexType>
                      <xs:all>
                        <xs:element name="Currencies">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element type="currencyCode" name="Currency" maxOccurs="unbounded" minOccurs="0"/>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:all>
                    </xs:complexType>
                  </xs:element>
                  <xs:element type="xs:boolean" name="ApplyInitialMargin" minOccurs="0"/>
                  <xs:element type="csaType" name="InitialMarginType" minOccurs="0"/>
                  <xs:element type="xs:boolean" name="CalculateIMAmount" minOccurs="0"/>
                  <xs:element type="xs:boolean" name="CalculateVMAmount" minOccurs="0"/>
                  <xs:element type="xs:string" name="NonExemptIMRegulations" minOccurs="0"/>
                </xs:all>
              </xs:complexType>
            </xs:element>
            <xs:element type="xs:decimal" name="RiskWeight" minOccurs="0"/>
          </xs:all>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="csaType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Bilateral"/>
      <xs:enumeration value="CallOnly"/>
      <xs:enumeration value="PostOnly"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="independentAmountType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="FIXED"/>
    </xs:restriction>
  </xs:simpleType>

</xs:schema>
