<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<Response
      xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17
        http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd">
    <Result>
        <Decision>Deny</Decision>
        <Status>
            <StatusCode
                  Value="urn:oasis:names:tc:xacml:1.0:status:ok"/>
        </Status>

    <AssociatedAdvice>
        <Advice
            AdviceId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA018:policy3:Advice-3">
            <AttributeAssignment
                AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA018:policy3:assignment1"
                DataType="http://www.w3.org/2001/XMLSchema#string">assignment1</AttributeAssignment>
            <AttributeAssignment
                AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA018:policy3:assignment2"
                DataType="http://www.w3.org/2001/XMLSchema#string">assignment2</AttributeAssignment>
        </Advice>
        <Advice
            AdviceId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA018:policy3:Advice-4">
            <AttributeAssignment
                AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA018:policy3:assignment1"
                DataType="http://www.w3.org/2001/XMLSchema#string">assignment1</AttributeAssignment>
            <AttributeAssignment
                AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA018:policy3:assignment2"
                DataType="http://www.w3.org/2001/XMLSchema#string">assignment2</AttributeAssignment>
        </Advice>
        <Advice
            AdviceId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA018:policyset:Advice-3">
            <AttributeAssignment
                AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA018:policyset:assignment1"
                DataType="http://www.w3.org/2001/XMLSchema#string">assignment1</AttributeAssignment>
            <AttributeAssignment
                AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA018:policyset:assignment2"
                DataType="http://www.w3.org/2001/XMLSchema#string">assignment2</AttributeAssignment>
        </Advice>
        <Advice
            AdviceId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA018:policyset:Advice-4">
            <AttributeAssignment
                AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA018:policyset:assignment1"
                DataType="http://www.w3.org/2001/XMLSchema#string">assignment1</AttributeAssignment>
            <AttributeAssignment
                AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIIA018:policyset:assignment2"
                DataType="http://www.w3.org/2001/XMLSchema#string">assignment2</AttributeAssignment>
        </Advice>
    </AssociatedAdvice>

    </Result>
</Response>
