HL7 FHIR® Implementation Guide: Electronic Case Reporting (eCR) - US Realm
1.1.0 - STU 2 Ballot

This page is part of the electronic Case Reporting (eCR) (v1.1.0: STU 2 on FHIR R4 Ballot 1) based on FHIR R4. The current version which supercedes this version is 2.1.0. For a full list of available versions, see the Directory of published versions

: Rule Filters - TTL Representation

Raw ttl | Download


@prefix fhir: <http://hl7.org/fhir/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

# - resource -------------------------------------------------------------------

 a fhir:Library;
  fhir:nodeRole fhir:treeRoot;
  fhir:Resource.id [ fhir:value "RuleFilters"];
  fhir:Resource.meta [
     fhir:Meta.versionId [ fhir:value "9" ];
     fhir:Meta.lastUpdated [ fhir:value "2020-12-03T08:50:39.041+00:00"^^xsd:dateTime ];
     fhir:Meta.source [ fhir:value "#WKxcOGbH5i8qjC6M" ];
     fhir:Meta.profile [
       fhir:value "http://hl7.org/fhir/us/ecr/StructureDefinition/us-ph-executablelibrary";
       fhir:index 0;
       fhir:link <http://hl7.org/fhir/us/ecr/StructureDefinition/us-ph-executablelibrary>     ], [
       fhir:value "http://hl7.org/fhir/us/ecr/StructureDefinition/us-ph-computablelibrary";
       fhir:index 1;
       fhir:link <http://hl7.org/fhir/us/ecr/StructureDefinition/us-ph-computablelibrary>     ]
  ];
  fhir:DomainResource.text [
     fhir:Narrative.status [ fhir:value "generated" ];
     fhir:Narrative.div "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n            <table class=\"grid dict\">\n                <tr>\n                    <th scope=\"row\">\n                        <b>Id: </b>\n                    </th>\n                    <td style=\"padding-left: 25px; padding-right: 25px;\">library-RuleFilters-1.0.0</td>\n                </tr>\n                <tr>\n                    <th scope=\"row\">\n                        <b>Type: </b>\n                    </th>\n                    <td style=\"padding-right: 25px;\"> logic-library </td>\n                </tr>\n                <tr>\n                    <th scope=\"row\">\n                        <b>Version: </b>\n                    </th>\n                    <td style=\"padding-left: 25px; padding-right: 25px;\">1.0.0</td>\n                </tr>\n                <tr>\n                    <th scope=\"row\">\n                        <b>Status: </b>\n                    </th>\n                    <td style=\"padding-left: 25px; padding-right: 25px;\">active</td>\n                </tr>\n                <tr style=\"vertical-align: top;\">\n                    <th rowspan=\"1\" scope=\"row\">\n                        <b>Related: </b>\n                    </th>\n                    <td style=\"padding-left: 25px; padding-right: 25px;\">\n                        <p style=\"margin-bottom: 5px;\">\n                            <b>type: </b>\n                            <span>depends-on</span>\n                        </p>\n                        <p style=\"margin-bottom: 5px;\">\n                            <b>Resource: </b>\n                            <br/>\n                            <span>http://aphl.org/fhir/ecr/Library/library-FHIRHelpers|4.0.0</span>\n                        </p>\n                    </td>\n                </tr>\n                <tr style=\"vertical-align: top;\">\n                    <th rowspan=\"7\" scope=\"row\">\n                        <b>Data Requirements: </b>\n                    </th>\n                    <td style=\"padding-left: 25px; padding-right: 25px;\">\n                        <div>\n                            <p style=\"margin-bottom: 5px;\">\n                                <b>type: </b>\n                                <span>ValueSet</span>\n                            </p>\n                        </div>\n                    </td>\n                </tr>\n                <tr style=\"vertical-align: top;\">\n                    <td style=\"padding-left: 25px; padding-right: 25px;\">\n                        <div>\n                            <p style=\"margin-bottom: 5px;\">\n                                <b>type: </b>\n                                <span>Observation</span>\n                            </p>\n                        </div>\n                    </td>\n                </tr>\n                <tr style=\"vertical-align: top;\">\n                    <td style=\"padding-left: 25px; padding-right: 25px;\">\n                        <div>\n                            <p style=\"margin-bottom: 5px;\">\n                                <b>type: </b>\n                                <span>Encounter</span>\n                            </p>\n                        </div>\n                    </td>\n                </tr>\n                <tr style=\"vertical-align: top;\">\n                    <td style=\"padding-left: 25px; padding-right: 25px;\">\n                        <div>\n                            <p style=\"margin-bottom: 5px;\">\n                                <b>type: </b>\n                                <span>Location</span>\n                            </p>\n                        </div>\n                    </td>\n                </tr>\n                <tr style=\"vertical-align: top;\">\n                    <td style=\"padding-left: 25px; padding-right: 25px;\">\n                        <div>\n                            <p style=\"margin-bottom: 5px;\">\n                                <b>type: </b>\n                                <span>CodeSystem</span>\n                            </p>\n                        </div>\n                    </td>\n                </tr>\n                <tr style=\"vertical-align: top;\">\n                    <td style=\"padding-left: 25px; padding-right: 25px;\">\n                        <div>\n                            <p style=\"margin-bottom: 5px;\">\n                                <b>type: </b>\n                                <span>Organization</span>\n                            </p>\n                        </div>\n                    </td>\n                </tr>\n                <tr style=\"vertical-align: top;\">\n                    <td style=\"padding-left: 25px; padding-right: 25px;\">\n                        <div>\n                            <p style=\"margin-bottom: 5px;\">\n                                <b>type: </b>\n                                <span>Organization</span>\n                            </p>\n                        </div>\n                    </td>\n                </tr>\n                <tr style=\"vertical-align: top;\">\n                    <th scope=\"row\">\n                        <b>Content: </b>\n                    </th>\n                    <td style=\"padding-left: 25px; padding-right: 25px;\">\n                        <b>type: </b>\n                        <span>text/cql</span>\n                    </td>\n                </tr>\n                <tr>\n                    <td colspan=\"2\" style=\"padding-left: 25px; padding-right: 25px;\">\n                        <pre>\n                            <code class=\"language-cql\">library RuleFilters version '1.0.0'\n\nusing FHIR version '4.0.0'\n\ninclude FHIRHelpers version '4.0.0'\n\ncodesystem &quot;UsageContext&quot;: 'http://terminology.hl7.org/CodeSystem/usage-context-type'\ncodesystem &quot;JurisdictionsList&quot;: 'http://hl7.org/fhir/us/ecr/CodeSystem/ersd-jurisdictions'\nvalueset &quot;Indeterminate or Equivocal Lab Result Value&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1035'\nvalueset &quot;Negative or Undetected Lab Result Value&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1146.1034'\n\ncode &quot;focus&quot;: 'focus' from UsageContext\n//code &quot;Chlamydia&quot;: 'Chlamydia'\n\n/* parameter &quot;Triggering Encounter&quot; Encounter */\n\ncontext Patient\n\ndefine &quot;Chlamydia ValueSets&quot;:\n  [ValueSet] ValueSet\n    where exists (\n      ValueSet.useContext UseContext\n        where UseContext.code ~ &quot;focus&quot;\n          and not  IsNull(\n            UseContext.value Value\n              where Value.text = 'Chlamydia'\n          )\n    )\n\ndefine function ExpandValueSetCodes(value List&lt;ValueSet&gt;):\n  value Value\n    return Value.expansion.contains.code\n\ndefine function ExpandValueSetSystems(value List&lt;ValueSet&gt;):\n  value Value\n    return Value.expansion.contains.system\n\ndefine &quot;Flattened ValueSet Expansion Codes&quot;:\n  flatten( ExpandValueSetCodes(&quot;Chlamydia ValueSets&quot;) )\n\ndefine &quot;Flattened ValueSet Expansion Systems&quot;:\n  flatten( ExpandValueSetSystems(&quot;Chlamydia ValueSets&quot;) )\n\ndefine function ObservationWithSystemAndCodeInChlamydiaValueSets(observation Observation):\n    not IsNull(\n      observation.code  OConcept\n        where exists (\n          OConcept.coding OCoding\n            where ( OCoding.code in &quot;Flattened ValueSet Expansion Codes&quot; )\n               and OCoding.system in &quot;Flattened ValueSet Expansion Systems&quot;\n        )\n    )\n\ndefine function ObservationWithCodeInChlamydiaValueSets(observation Observation):\n  not IsNull(\n    observation.code  OConcept\n      where exists (\n        OConcept.coding OCoding where OCoding.code in flatten( ExpandValueSetCodes(&quot;Chlamydia ValueSets&quot;) )\n      )\n  )\n\ndefine function ChlamydiaObservations(observation Observation):\n  if exists (observation.code.coding.system)\n  then ObservationWithSystemAndCodeInChlamydiaValueSets(observation)\n  else ObservationWithCodeInChlamydiaValueSets(observation)\n\ndefine &quot;Chlamydia Test Results&quot;:\n  [Observation] O\n    where ChlamydiaObservations(O)\n      and O.status in { 'preliminary', 'final', 'amended', 'corrected' }\n\ndefine &quot;Triggering Encounter&quot;:\n[Encounter] E\n\ndefine &quot;Encounter Location References&quot;:\n  flatten(&quot;Triggering Encounter&quot; TriggeringEncounter\n    return TriggeringEncounter.location.location)\n\ndefine &quot;Locations Matching Encounter Location References&quot;:\n  [Location] Location\n    where exists (\n        &quot;Encounter Location References&quot; LocationReference\n          where ('Location/' + Location.id) ~ LocationReference.reference\n      )\n\n/* define &quot;Encounter Location Addresses And Patient Addresses&quot;:\n  &quot;Locations Matching Encounter Location References&quot;.address\n    union Patient.address */\n\ndefine &quot;Encounter Location Address&quot;:\n  &quot;Locations Matching Encounter Location References&quot; Address\n    return Tuple { state: Address.address.state,  postalCode: Address.address.postalCode }\n\ndefine &quot;Patient Address&quot;:\n  Patient.address PA\n  return Tuple { state: PA.state, postalCode: PA.postalCode }\n\n/* define &quot;Address Elements Relevant to Jurisdiction Qualification&quot;:\n  &quot;Encounter Location Addresses And Patient Addresses&quot; Address\n    return Tuple { state: Address.state,  postalCode: Address.postalCode } */\n\ndefine &quot;Jurisdictions&quot;:\n  flatten([CodeSystem] C\n    return C.concept Cpt\n      return Tuple { jurisdictionCode: Cpt.code,\n        definition: Cpt.definition,\n        jurisdictionType: Cpt.property P where P.code='type' return P.value as FHIR.string,\n        stateCode: Cpt.property P where P.code = 'state' return P.value as FHIR.code,\n        postalCode: Cpt.property P where P.code = 'postalcode' return P.value as FHIR.code\n        })\n\ndefine &quot;Encounter Address Postal Code is in Jurisdiction Codes&quot;:\n  &quot;Jurisdictions&quot; J\n    with &quot;Encounter Location Address&quot; LocationAddress\n      such that LocationAddress.postalCode in J.postalCode\n\ndefine &quot;Encounter Address State is in Jurisdiction Codes&quot;:\n    &quot;Jurisdictions&quot; J\n      with &quot;Encounter Location Address&quot; LocationAddress\n        such that LocationAddress.state in J.stateCode\n          and 'STATE' in J.jurisdictionType\n\ndefine &quot;Patient Address Postal Code is in Jurisdiction Codes&quot;:\n  &quot;Jurisdictions&quot; J\n    with &quot;Patient Address&quot; PA\n      such that PA.postalCode in J.postalCode\n\ndefine &quot;Patient Address State is in Jurisdiction Codes&quot;:\n  &quot;Jurisdictions&quot; J\n    with &quot;Patient Address&quot; PA\n      such that PA.state in J.stateCode\n        and 'STATE' in J.jurisdictionType\n\ndefine &quot;Address Exists in Jurisdiction Codes&quot;:\n  exists (\n    &quot;Encounter Address State is in Jurisdiction Codes&quot;\n      union &quot;Encounter Address Postal Code is in Jurisdiction Codes&quot;\n        union &quot;Patient Address State is in Jurisdiction Codes&quot;\n          union &quot;Patient Address Postal Code is in Jurisdiction Codes&quot;\n    )\n\ndefine function EncounterAddressJurisdictions():\n  if exists (&quot;Encounter Address Postal Code is in Jurisdiction Codes&quot;)\n    then &quot;Encounter Address Postal Code is in Jurisdiction Codes&quot;\n      else &quot;Encounter Address State is in Jurisdiction Codes&quot;\n\ndefine function PatientAddressJurisdictions():\n  if exists (&quot;Patient Address Postal Code is in Jurisdiction Codes&quot;)\n    then &quot;Patient Address Postal Code is in Jurisdiction Codes&quot;\n      else &quot;Patient Address State is in Jurisdiction Codes&quot;\n\ndefine &quot;Jurisdiction Codes Relevant to Encounter Addresses&quot;:\n  EncounterAddressJurisdictions()\n\ndefine &quot;Jurisdiction Codes Relevant to Patient Addresses&quot;:\n  PatientAddressJurisdictions()\n\ndefine &quot;Indeterminate Chlamydia Test Results&quot;:\n  &quot;Chlamydia Test Results&quot; O\n    let organization: [Organization]\n    where (\n      (\n        exists (\n            O.interpretation interpretationConcept\n              where interpretationConcept as CodeableConcept in &quot;Indeterminate or Equivocal Lab Result Value&quot;\n        )\n          or O.value as CodeableConcept in &quot;Indeterminate or Equivocal Lab Result Value&quot;\n      )\n        or &quot;Address Exists in Jurisdiction Codes&quot;\n    )\n\ndefine &quot;Negative Chlamydia Test Results&quot;:\n  &quot;Chlamydia Test Results&quot; O\n    let organization: [Organization]\n    where (\n      (\n        exists (\n            O.interpretation interpretationConcept\n              where interpretationConcept as CodeableConcept in &quot;Negative or Undetected Lab Result Value&quot;\n        )\n          or O.value as CodeableConcept in &quot;Negative or Undetected Lab Result Value&quot;\n      )\n        and &quot;Address Exists in Jurisdiction Codes&quot;\n    )\n\ndefine &quot;Is Reportable&quot;:\n  exists &quot;Indeterminate Chlamydia Test Results&quot;\n    or exists &quot;Negative Chlamydia Test Results&quot;\n</code>\n                        </pre>\n                    </td>\n                </tr>\n            </table>\n        </div>"
  ];
  fhir:Library.url [ fhir:value "http://aphl.org/fhir/ecr/Library/RuleFilters"];
  fhir:Library.version [ fhir:value "1.1.0"];
  fhir:Library.name [ fhir:value "RuleFilters"];
  fhir:Library.title [ fhir:value "Rule Filters"];
  fhir:Library.status [ fhir:value "active"];
  fhir:Library.experimental [ fhir:value "true"^^xsd:boolean];
  fhir:Library.type [
     fhir:CodeableConcept.coding [
       fhir:index 0;
       fhir:Coding.system [ fhir:value "http://terminology.hl7.org/CodeSystem/library-type" ];
       fhir:Coding.code [ fhir:value "logic-library" ]     ]
  ];
  fhir:Library.date [ fhir:value "2020-12-16T19:27:50+00:00"^^xsd:dateTime];
  fhir:Library.publisher [ fhir:value "HL7 Public Health Work Group (http://www.hl7.org/Special/committees/pher/index.cfm)"];
  fhir:Library.contact [
     fhir:index 0;
     fhir:ContactDetail.name [ fhir:value "HL7 International - Public Health" ];
     fhir:ContactDetail.telecom [
       fhir:index 0;
       fhir:ContactPoint.system [ fhir:value "url" ];
       fhir:ContactPoint.value [ fhir:value "http://www.hl7.org/Special/committees/pher" ]     ]
  ];
  fhir:Library.description [ fhir:value "An example logic library for eRSD - Chlamydia example."];
  fhir:Library.jurisdiction [
     fhir:index 0;
     fhir:CodeableConcept.coding [
       fhir:index 0;
       fhir:Coding.system [ fhir:value "urn:iso:std:iso:3166" ];
       fhir:Coding.code [ fhir:value "US" ];
       fhir:Coding.display [ fhir:value "United States of America" ]     ];
     fhir:CodeableConcept.text [ fhir:value "United States of America" ]
  ];
  fhir:Library.relatedArtifact [
     fhir:index 0;
     fhir:RelatedArtifact.type [ fhir:value "depends-on" ];
     fhir:RelatedArtifact.display [ fhir:value "FHIR Helpers Library" ];
     fhir:RelatedArtifact.url [ fhir:value "http://hl7.org/fhir/Library/FHIRHelpers" ];
     fhir:RelatedArtifact.resource [
       fhir:value "http://aphl.org/fhir/ecr/Library/library-FHIRHelpers|4.0.0";
       fhir:link <http://aphl.org/fhir/ecr/Library/library-FHIRHelpers|4.0.0>     ]
  ];
  fhir:Library.parameter [
     fhir:index 0;
     fhir:ParameterDefinition.name [ fhir:value "Triggering Encounter" ];
     fhir:ParameterDefinition.use [ fhir:value "in" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "1" ];
     fhir:ParameterDefinition.type [ fhir:value "Encounter" ]
  ], [
     fhir:index 1;
     fhir:ParameterDefinition.name [ fhir:value "Patient" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "1" ];
     fhir:ParameterDefinition.type [ fhir:value "Patient" ]
  ], [
     fhir:index 2;
     fhir:ParameterDefinition.name [ fhir:value "Chlamydia ValueSets" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "*" ];
     fhir:ParameterDefinition.type [ fhir:value "ValueSet" ]
  ], [
     fhir:index 3;
     fhir:ParameterDefinition.name [ fhir:value "Flattened ValueSet Expansion Codes" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "*" ];
     fhir:ParameterDefinition.type [ fhir:value "code" ]
  ], [
     fhir:index 4;
     fhir:ParameterDefinition.name [ fhir:value "Flattened ValueSet Expansion Systems" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "*" ];
     fhir:ParameterDefinition.type [ fhir:value "uri" ]
  ], [
     fhir:index 5;
     fhir:ParameterDefinition.name [ fhir:value "Testing stuff" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "*" ];
     fhir:ParameterDefinition.type [ fhir:value "Observation" ]
  ], [
     fhir:index 6;
     fhir:ParameterDefinition.name [ fhir:value "Chlamydia Test Results" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "*" ];
     fhir:ParameterDefinition.type [ fhir:value "Observation" ]
  ], [
     fhir:index 7;
     fhir:ParameterDefinition.name [ fhir:value "Encounter Location References" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "*" ];
     fhir:ParameterDefinition.type [ fhir:value "Reference" ]
  ], [
     fhir:index 8;
     fhir:ParameterDefinition.name [ fhir:value "Locations Matching Encounter Location References" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "*" ];
     fhir:ParameterDefinition.type [ fhir:value "Location" ]
  ], [
     fhir:index 9;
     fhir:ParameterDefinition.name [ fhir:value "Encounter Location Addresses And Patient Addresses" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "*" ];
     fhir:ParameterDefinition.type [ fhir:value "Address" ]
  ], [
     fhir:index 10;
     fhir:ParameterDefinition.name [ fhir:value "Address Elements Relevant to Jurisdiction Qualification" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "*" ];
     fhir:ParameterDefinition.type [ fhir:value "Any" ]
  ], [
     fhir:index 11;
     fhir:ParameterDefinition.name [ fhir:value "Jurisdictions" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "*" ];
     fhir:ParameterDefinition.type [ fhir:value "Any" ]
  ], [
     fhir:index 12;
     fhir:ParameterDefinition.name [ fhir:value "Address Postal Code is in Jurisdiction Codes" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "*" ];
     fhir:ParameterDefinition.type [ fhir:value "Any" ]
  ], [
     fhir:index 13;
     fhir:ParameterDefinition.name [ fhir:value "Address State is in Jurisdiction Codes" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "*" ];
     fhir:ParameterDefinition.type [ fhir:value "Any" ]
  ], [
     fhir:index 14;
     fhir:ParameterDefinition.name [ fhir:value "Address Exists in Jurisdiction Codes" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "1" ];
     fhir:ParameterDefinition.type [ fhir:value "boolean" ]
  ], [
     fhir:index 15;
     fhir:ParameterDefinition.name [ fhir:value "Jurisdiction Codes Relevant to Addresses" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "*" ];
     fhir:ParameterDefinition.type [ fhir:value "Any" ]
  ], [
     fhir:index 16;
     fhir:ParameterDefinition.name [ fhir:value "Indeterminate Chlamydia Test Results" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "*" ];
     fhir:ParameterDefinition.type [ fhir:value "Observation" ]
  ], [
     fhir:index 17;
     fhir:ParameterDefinition.name [ fhir:value "Negative Chlamydia Test Results" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "*" ];
     fhir:ParameterDefinition.type [ fhir:value "Observation" ]
  ], [
     fhir:index 18;
     fhir:ParameterDefinition.name [ fhir:value "IsReportable" ];
     fhir:ParameterDefinition.use [ fhir:value "out" ];
     fhir:ParameterDefinition.min [ fhir:value "0"^^xsd:integer ];
     fhir:ParameterDefinition.max [ fhir:value "1" ];
     fhir:ParameterDefinition.type [ fhir:value "boolean" ]
  ];
  fhir:Library.dataRequirement [
     fhir:index 0;
     fhir:DataRequirement.type [ fhir:value "ValueSet" ]
  ], [
     fhir:index 1;
     fhir:DataRequirement.type [ fhir:value "Observation" ]
  ], [
     fhir:index 2;
     fhir:DataRequirement.type [ fhir:value "Encounter" ]
  ], [
     fhir:index 3;
     fhir:DataRequirement.type [ fhir:value "Location" ]
  ], [
     fhir:index 4;
     fhir:DataRequirement.type [ fhir:value "CodeSystem" ]
  ], [
     fhir:index 5;
     fhir:DataRequirement.type [ fhir:value "Organization" ]
  ], [
     fhir:index 6;
     fhir:DataRequirement.type [ fhir:value "Organization" ]
  ];
  fhir:Library.content [
     fhir:index 0;
     fhir:Attachment.contentType [ fhir:value "application/elm+xml" ];
     fhir:Attachment.data [ fhir:value "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGxpYnJhcnkgeG1sbnM9InVybjpobDctb3JnOmVsbTpyMSIgeG1sbnM6dD0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczpmaGlyPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB4bWxuczpxZG00Mz0idXJuOmhlYWx0aGl0LWdvdjpxZG06djRfMyIgeG1sbnM6cWRtNTM9InVybjpoZWFsdGhpdC1nb3Y6cWRtOnY1XzMiIHhtbG5zOmE9InVybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMSI+CiAgIDxhbm5vdGF0aW9uIHRyYW5zbGF0b3JWZXJzaW9uPSIxLjEiIHRyYW5zbGF0b3JPcHRpb25zPSJFbmFibGVEYXRlUmFuZ2VPcHRpbWl6YXRpb24iIHhzaTp0eXBlPSJhOkNxbFRvRWxtSW5mbyIvPgogICA8aWRlbnRpZmllciBpZD0iUnVsZUZpbHRlcnMiIHZlcnNpb249IjEuMC4wIi8+CiAgIDxzY2hlbWFJZGVudGlmaWVyIGlkPSJ1cm46aGw3LW9yZzplbG0iIHZlcnNpb249InIxIi8+CiAgIDx1c2luZ3M+CiAgICAgIDxkZWYgbG9jYWxJZGVudGlmaWVyPSJTeXN0ZW0iIHVyaT0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIi8+CiAgICAgIDxkZWYgbG9jYWxJZGVudGlmaWVyPSJGSElSIiB1cmk9Imh0dHA6Ly9obDcub3JnL2ZoaXIiIHZlcnNpb249IjQuMC4wIi8+CiAgIDwvdXNpbmdzPgogICA8aW5jbHVkZXM+CiAgICAgIDxkZWYgbG9jYWxJZGVudGlmaWVyPSJGSElSSGVscGVycyIgcGF0aD0iRkhJUkhlbHBlcnMiIHZlcnNpb249IjQuMC4wIi8+CiAgIDwvaW5jbHVkZXM+CiAgIDxjb2RlU3lzdGVtcz4KICAgICAgPGRlZiBuYW1lPSJVc2FnZUNvbnRleHQiIGlkPSJodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL3VzYWdlLWNvbnRleHQtdHlwZSIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIvPgogICAgICA8ZGVmIG5hbWU9Ikp1cmlzZGljdGlvbnNMaXN0IiBpZD0iaHR0cDovL2hsNy5vcmcvZmhpci91cy9lY3IvQ29kZVN5c3RlbS9lcnNkLWp1cmlzZGljdGlvbnMiIGFjY2Vzc0xldmVsPSJQdWJsaWMiLz4KICAgPC9jb2RlU3lzdGVtcz4KICAgPHZhbHVlU2V0cz4KICAgICAgPGRlZiBuYW1lPSJJbmRldGVybWluYXRlIG9yIEVxdWl2b2NhbCBMYWIgUmVzdWx0IFZhbHVlIiBpZD0iaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTQ2LjEwMzUiIGFjY2Vzc0xldmVsPSJQdWJsaWMiLz4KICAgICAgPGRlZiBuYW1lPSJOZWdhdGl2ZSBvciBVbmRldGVjdGVkIExhYiBSZXN1bHQgVmFsdWUiIGlkPSJodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjExNDYuMTAzNCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIvPgogICA8L3ZhbHVlU2V0cz4KICAgPGNvZGVzPgogICAgICA8ZGVmIG5hbWU9ImZvY3VzIiBpZD0iZm9jdXMiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8Y29kZVN5c3RlbSBuYW1lPSJVc2FnZUNvbnRleHQiLz4KICAgICAgPC9kZWY+CiAgIDwvY29kZXM+CiAgIDxzdGF0ZW1lbnRzPgogICAgICA8ZGVmIG5hbWU9IlBhdGllbnQiIGNvbnRleHQ9IlBhdGllbnQiPgogICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iU2luZ2xldG9uRnJvbSI+CiAgICAgICAgICAgIDxvcGVyYW5kIGRhdGFUeXBlPSJmaGlyOlBhdGllbnQiIHhzaTp0eXBlPSJSZXRyaWV2ZSIvPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIG5hbWU9IkNobGFteWRpYSBWYWx1ZVNldHMiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICA8c291cmNlIGFsaWFzPSJWYWx1ZVNldCI+CiAgICAgICAgICAgICAgIDxleHByZXNzaW9uIGRhdGFUeXBlPSJmaGlyOlZhbHVlU2V0IiB4c2k6dHlwZT0iUmV0cmlldmUiLz4KICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgIDx3aGVyZSB4c2k6dHlwZT0iRXhpc3RzIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iVXNlQ29udGV4dCI+CiAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIHBhdGg9InVzZUNvbnRleHQiIHNjb3BlPSJWYWx1ZVNldCIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICA8d2hlcmUgeHNpOnR5cGU9IkFuZCI+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJFcXVpdmFsZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iVG9Db2RlIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHBhdGg9ImNvZGUiIHNjb3BlPSJVc2VDb250ZXh0IiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJmb2N1cyIgeHNpOnR5cGU9IkNvZGVSZWYiLz4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iTm90Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IklzTnVsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgYWxpYXM9IlZhbHVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gcGF0aD0idmFsdWUiIHNjb3BlPSJVc2VDb250ZXh0IiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3aGVyZSB4c2k6dHlwZT0iRXF1YWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJUb1N0cmluZyIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJ0ZXh0IiBzY29wZT0iVmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSJDaGxhbXlkaWEiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd2hlcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDwvd2hlcmU+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPC93aGVyZT4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJFeHBhbmRWYWx1ZVNldENvZGVzIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPgogICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICA8c291cmNlIGFsaWFzPSJWYWx1ZSI+CiAgICAgICAgICAgICAgIDxleHByZXNzaW9uIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPgogICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgPHJldHVybj4KICAgICAgICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iJHRoaXMiPgogICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBwYXRoPSJjb250YWlucyIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBwYXRoPSJleHBhbnNpb24iIHNjb3BlPSJWYWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgICAgICAgIDx3aGVyZSB4c2k6dHlwZT0iTm90Ij4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IklzTnVsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHBhdGg9ImNvZGUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbmFtZT0iJHRoaXMiIHhzaTp0eXBlPSJBbGlhc1JlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPC93aGVyZT4KICAgICAgICAgICAgICAgICAgPHJldHVybj4KICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gcGF0aD0iY29kZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBuYW1lPSIkdGhpcyIgeHNpOnR5cGU9IkFsaWFzUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgICAgPC9yZXR1cm4+CiAgICAgICAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgICAgPC9yZXR1cm4+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPgogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgeHNpOnR5cGU9Ikxpc3RUeXBlU3BlY2lmaWVyIj4KICAgICAgICAgICAgICAgPGVsZW1lbnRUeXBlIG5hbWU9ImZoaXI6VmFsdWVTZXQiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgPC9vcGVyYW5kVHlwZVNwZWNpZmllcj4KICAgICAgICAgPC9vcGVyYW5kPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJFeHBhbmRWYWx1ZVNldFN5c3RlbXMiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+CiAgICAgICAgIDxleHByZXNzaW9uIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgIDxzb3VyY2UgYWxpYXM9IlZhbHVlIj4KICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+CiAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICA8cmV0dXJuPgogICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICAgICAgICA8c291cmNlIGFsaWFzPSIkdGhpcyI+CiAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIHBhdGg9ImNvbnRhaW5zIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIHBhdGg9ImV4cGFuc2lvbiIgc2NvcGU9IlZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgICAgICAgPHdoZXJlIHhzaTp0eXBlPSJOb3QiPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iSXNOdWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0ic3lzdGVtIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIG5hbWU9IiR0aGlzIiB4c2k6dHlwZT0iQWxpYXNSZWYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDwvd2hlcmU+CiAgICAgICAgICAgICAgICAgIDxyZXR1cm4+CiAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIHBhdGg9InN5c3RlbSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBuYW1lPSIkdGhpcyIgeHNpOnR5cGU9IkFsaWFzUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgICAgPC9yZXR1cm4+CiAgICAgICAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgICAgPC9yZXR1cm4+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPgogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgeHNpOnR5cGU9Ikxpc3RUeXBlU3BlY2lmaWVyIj4KICAgICAgICAgICAgICAgPGVsZW1lbnRUeXBlIG5hbWU9ImZoaXI6VmFsdWVTZXQiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgPC9vcGVyYW5kVHlwZVNwZWNpZmllcj4KICAgICAgICAgPC9vcGVyYW5kPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJGbGF0dGVuZWQgVmFsdWVTZXQgRXhwYW5zaW9uIENvZGVzIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IkZsYXR0ZW4iPgogICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJFeHBhbmRWYWx1ZVNldENvZGVzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJDaGxhbXlkaWEgVmFsdWVTZXRzIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iRmxhdHRlbmVkIFZhbHVlU2V0IEV4cGFuc2lvbiBTeXN0ZW1zIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IkZsYXR0ZW4iPgogICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJFeHBhbmRWYWx1ZVNldFN5c3RlbXMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IkNobGFteWRpYSBWYWx1ZVNldHMiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJPYnNlcnZhdGlvbldpdGhTeXN0ZW1BbmRDb2RlSW5DaGxhbXlkaWFWYWx1ZVNldHMiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+CiAgICAgICAgIDxleHByZXNzaW9uIHhzaTp0eXBlPSJOb3QiPgogICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iSXNOdWxsIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iT0NvbmNlcHQiPgogICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBwYXRoPSJjb2RlIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIG5hbWU9Im9ic2VydmF0aW9uIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPgogICAgICAgICAgICAgICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICA8d2hlcmUgeHNpOnR5cGU9IkV4aXN0cyI+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgYWxpYXM9Ik9Db2RpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBwYXRoPSJjb2RpbmciIHNjb3BlPSJPQ29uY2VwdCIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICAgICAgICA8d2hlcmUgeHNpOnR5cGU9IkFuZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJJbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHBhdGg9ImNvZGUiIHNjb3BlPSJPQ29kaW5nIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iRmxhdHRlbmVkIFZhbHVlU2V0IEV4cGFuc2lvbiBDb2RlcyIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iSW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJzeXN0ZW0iIHNjb3BlPSJPQ29kaW5nIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iRmxhdHRlbmVkIFZhbHVlU2V0IEV4cGFuc2lvbiBTeXN0ZW1zIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvd2hlcmU+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPC93aGVyZT4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgPG9wZXJhbmQgbmFtZT0ib2JzZXJ2YXRpb24iPgogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbmFtZT0iZmhpcjpPYnNlcnZhdGlvbiIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICA8L29wZXJhbmQ+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIG5hbWU9Ik9ic2VydmF0aW9uV2l0aENvZGVJbkNobGFteWRpYVZhbHVlU2V0cyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9Ik5vdCI+CiAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJJc051bGwiPgogICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICAgICAgICA8c291cmNlIGFsaWFzPSJPQ29uY2VwdCI+CiAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIHBhdGg9ImNvZGUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbmFtZT0ib2JzZXJ2YXRpb24iIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgICAgICAgIDx3aGVyZSB4c2k6dHlwZT0iRXhpc3RzIj4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iT0NvZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIHBhdGg9ImNvZGluZyIgc2NvcGU9Ik9Db25jZXB0IiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgIDx3aGVyZSB4c2k6dHlwZT0iSW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJjb2RlIiBzY29wZT0iT0NvZGluZyIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJGbGF0dGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iRXhwYW5kVmFsdWVTZXRDb2RlcyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iQ2hsYW15ZGlhIFZhbHVlU2V0cyIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvd2hlcmU+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPC93aGVyZT4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgPG9wZXJhbmQgbmFtZT0ib2JzZXJ2YXRpb24iPgogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbmFtZT0iZmhpcjpPYnNlcnZhdGlvbiIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICA8L29wZXJhbmQ+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIG5hbWU9IkNobGFteWRpYU9ic2VydmF0aW9ucyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IklmIj4KICAgICAgICAgICAgPGNvbmRpdGlvbiBhc1R5cGU9InQ6Qm9vbGVhbiIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IkV4aXN0cyI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgYWxpYXM9IiR0aGlzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gcGF0aD0iY29kaW5nIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIHBhdGg9ImNvZGUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbmFtZT0ib2JzZXJ2YXRpb24iIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICAgICA8d2hlcmUgeHNpOnR5cGU9Ik5vdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJJc051bGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJzeXN0ZW0iIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbmFtZT0iJHRoaXMiIHhzaTp0eXBlPSJBbGlhc1JlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPC93aGVyZT4KICAgICAgICAgICAgICAgICAgICAgPHJldHVybj4KICAgICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gcGF0aD0ic3lzdGVtIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIG5hbWU9IiR0aGlzIiB4c2k6dHlwZT0iQWxpYXNSZWYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICA8L3JldHVybj4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDwvY29uZGl0aW9uPgogICAgICAgICAgICA8dGhlbiBuYW1lPSJPYnNlcnZhdGlvbldpdGhTeXN0ZW1BbmRDb2RlSW5DaGxhbXlkaWFWYWx1ZVNldHMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9Im9ic2VydmF0aW9uIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPgogICAgICAgICAgICA8L3RoZW4+CiAgICAgICAgICAgIDxlbHNlIG5hbWU9Ik9ic2VydmF0aW9uV2l0aENvZGVJbkNobGFteWRpYVZhbHVlU2V0cyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0ib2JzZXJ2YXRpb24iIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+CiAgICAgICAgICAgIDwvZWxzZT4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICA8b3BlcmFuZCBuYW1lPSJvYnNlcnZhdGlvbiI+CiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBuYW1lPSJmaGlyOk9ic2VydmF0aW9uIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iQ2hsYW15ZGlhIFRlc3QgUmVzdWx0cyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxleHByZXNzaW9uIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgIDxzb3VyY2UgYWxpYXM9Ik8iPgogICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBkYXRhVHlwZT0iZmhpcjpPYnNlcnZhdGlvbiIgeHNpOnR5cGU9IlJldHJpZXZlIi8+CiAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICA8d2hlcmUgeHNpOnR5cGU9IkFuZCI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IkNobGFteWRpYU9ic2VydmF0aW9ucyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iTyIgeHNpOnR5cGU9IkFsaWFzUmVmIi8+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IkluIj4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iVG9TdHJpbmciIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0ic3RhdHVzIiBzY29wZT0iTyIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9Ikxpc3QiPgogICAgICAgICAgICAgICAgICAgICA8ZWxlbWVudCB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0icHJlbGltaW5hcnkiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgIDxlbGVtZW50IHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSJmaW5hbCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9ImFtZW5kZWQiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgIDxlbGVtZW50IHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSJjb3JyZWN0ZWQiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L3doZXJlPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIG5hbWU9IlRyaWdnZXJpbmcgRW5jb3VudGVyIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iRSI+CiAgICAgICAgICAgICAgIDxleHByZXNzaW9uIGRhdGFUeXBlPSJmaGlyOkVuY291bnRlciIgeHNpOnR5cGU9IlJldHJpZXZlIi8+CiAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIG5hbWU9IkVuY291bnRlciBMb2NhdGlvbiBSZWZlcmVuY2VzIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IkZsYXR0ZW4iPgogICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICAgICA8c291cmNlIGFsaWFzPSJUcmlnZ2VyaW5nRW5jb3VudGVyIj4KICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gbmFtZT0iVHJpZ2dlcmluZyBFbmNvdW50ZXIiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICA8cmV0dXJuPgogICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICAgICAgICAgICA8c291cmNlIGFsaWFzPSIkdGhpcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIHBhdGg9ImxvY2F0aW9uIiBzY29wZT0iVHJpZ2dlcmluZ0VuY291bnRlciIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICAgICA8d2hlcmUgeHNpOnR5cGU9Ik5vdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJJc051bGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJsb2NhdGlvbiIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBuYW1lPSIkdGhpcyIgeHNpOnR5cGU9IkFsaWFzUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8L3doZXJlPgogICAgICAgICAgICAgICAgICAgICA8cmV0dXJuPgogICAgICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBwYXRoPSJsb2NhdGlvbiIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBuYW1lPSIkdGhpcyIgeHNpOnR5cGU9IkFsaWFzUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgICAgICAgPC9yZXR1cm4+CiAgICAgICAgICAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgPC9yZXR1cm4+CiAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJMb2NhdGlvbnMgTWF0Y2hpbmcgRW5jb3VudGVyIExvY2F0aW9uIFJlZmVyZW5jZXMiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICA8c291cmNlIGFsaWFzPSJMb2NhdGlvbiI+CiAgICAgICAgICAgICAgIDxleHByZXNzaW9uIGRhdGFUeXBlPSJmaGlyOkxvY2F0aW9uIiB4c2k6dHlwZT0iUmV0cmlldmUiLz4KICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgIDx3aGVyZSB4c2k6dHlwZT0iRXhpc3RzIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iTG9jYXRpb25SZWZlcmVuY2UiPgogICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBuYW1lPSJFbmNvdW50ZXIgTG9jYXRpb24gUmVmZXJlbmNlcyIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgICAgICAgIDx3aGVyZSB4c2k6dHlwZT0iRXF1aXZhbGVudCI+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJDb25jYXRlbmF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSJMb2NhdGlvbi8iIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvU3RyaW5nIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHBhdGg9ImlkIiBzY29wZT0iTG9jYXRpb24iIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iVG9TdHJpbmciIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0icmVmZXJlbmNlIiBzY29wZT0iTG9jYXRpb25SZWZlcmVuY2UiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDwvd2hlcmU+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPC93aGVyZT4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJFbmNvdW50ZXIgTG9jYXRpb24gQWRkcmVzcyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxleHByZXNzaW9uIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgIDxzb3VyY2UgYWxpYXM9IkFkZHJlc3MiPgogICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBuYW1lPSJMb2NhdGlvbnMgTWF0Y2hpbmcgRW5jb3VudGVyIExvY2F0aW9uIFJlZmVyZW5jZXMiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICA8cmV0dXJuPgogICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iVHVwbGUiPgogICAgICAgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSJzdGF0ZSI+CiAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSBwYXRoPSJzdGF0ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBwYXRoPSJhZGRyZXNzIiBzY29wZT0iQWRkcmVzcyIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgIDwvZWxlbWVudD4KICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0icG9zdGFsQ29kZSI+CiAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSBwYXRoPSJwb3N0YWxDb2RlIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIHBhdGg9ImFkZHJlc3MiIHNjb3BlPSJBZGRyZXNzIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgPC9lbGVtZW50PgogICAgICAgICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgICAgIDwvcmV0dXJuPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIG5hbWU9IlBhdGllbnQgQWRkcmVzcyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxleHByZXNzaW9uIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgIDxzb3VyY2UgYWxpYXM9IlBBIj4KICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gcGF0aD0iYWRkcmVzcyIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgPHNvdXJjZSBuYW1lPSJQYXRpZW50IiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICA8cmV0dXJuPgogICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iVHVwbGUiPgogICAgICAgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSJzdGF0ZSI+CiAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSBwYXRoPSJzdGF0ZSIgc2NvcGU9IlBBIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgPC9lbGVtZW50PgogICAgICAgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSJwb3N0YWxDb2RlIj4KICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHBhdGg9InBvc3RhbENvZGUiIHNjb3BlPSJQQSIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgIDwvZWxlbWVudD4KICAgICAgICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICAgICA8L3JldHVybj4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJKdXJpc2RpY3Rpb25zIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IkZsYXR0ZW4iPgogICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICAgICA8c291cmNlIGFsaWFzPSJDIj4KICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gZGF0YVR5cGU9ImZoaXI6Q29kZVN5c3RlbSIgeHNpOnR5cGU9IlJldHJpZXZlIi8+CiAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICA8cmV0dXJuPgogICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICAgICAgICAgICA8c291cmNlIGFsaWFzPSJDcHQiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBwYXRoPSJjb25jZXB0IiBzY29wZT0iQyIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICAgICA8cmV0dXJuPgogICAgICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iVHVwbGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSJqdXJpc2RpY3Rpb25Db2RlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlIHBhdGg9ImNvZGUiIHNjb3BlPSJDcHQiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VsZW1lbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9ImRlZmluaXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWUgcGF0aD0iZGVmaW5pdGlvbiIgc2NvcGU9IkNwdCIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZWxlbWVudD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0ianVyaXNkaWN0aW9uVHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIGFsaWFzPSJQIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gcGF0aD0icHJvcGVydHkiIHNjb3BlPSJDcHQiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdoZXJlIHhzaTp0eXBlPSJFcXVhbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvU3RyaW5nIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHBhdGg9ImNvZGUiIHNjb3BlPSJQIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0idHlwZSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93aGVyZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJldHVybj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gc3RyaWN0PSJmYWxzZSIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0idmFsdWUiIHNjb3BlPSJQIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFzVHlwZVNwZWNpZmllciBuYW1lPSJmaGlyOnN0cmluZyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmV0dXJuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZhbHVlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VsZW1lbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9InN0YXRlQ29kZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIGFsaWFzPSJQIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gcGF0aD0icHJvcGVydHkiIHNjb3BlPSJDcHQiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdoZXJlIHhzaTp0eXBlPSJFcXVhbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvU3RyaW5nIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHBhdGg9ImNvZGUiIHNjb3BlPSJQIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0ic3RhdGUiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd2hlcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXR1cm4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIHN0cmljdD0iZmFsc2UiIHhzaTp0eXBlPSJBcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHBhdGg9InZhbHVlIiBzY29wZT0iUCIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhc1R5cGVTcGVjaWZpZXIgbmFtZT0iZmhpcjpjb2RlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZXR1cm4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmFsdWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZWxlbWVudD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0icG9zdGFsQ29kZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZSB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIGFsaWFzPSJQIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gcGF0aD0icHJvcGVydHkiIHNjb3BlPSJDcHQiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdoZXJlIHhzaTp0eXBlPSJFcXVhbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvU3RyaW5nIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHBhdGg9ImNvZGUiIHNjb3BlPSJQIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0icG9zdGFsY29kZSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93aGVyZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJldHVybj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gc3RyaWN0PSJmYWxzZSIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0idmFsdWUiIHNjb3BlPSJQIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFzVHlwZVNwZWNpZmllciBuYW1lPSJmaGlyOmNvZGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JldHVybj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92YWx1ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lbGVtZW50PgogICAgICAgICAgICAgICAgICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgICAgIDwvcmV0dXJuPgogICAgICAgICAgICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgICAgICAgIDwvcmV0dXJuPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iRW5jb3VudGVyIEFkZHJlc3MgUG9zdGFsIENvZGUgaXMgaW4gSnVyaXNkaWN0aW9uIENvZGVzIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iSiI+CiAgICAgICAgICAgICAgIDxleHByZXNzaW9uIG5hbWU9Ikp1cmlzZGljdGlvbnMiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICA8cmVsYXRpb25zaGlwIGFsaWFzPSJMb2NhdGlvbkFkZHJlc3MiIHhzaTp0eXBlPSJXaXRoIj4KICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gbmFtZT0iRW5jb3VudGVyIExvY2F0aW9uIEFkZHJlc3MiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgIDxzdWNoVGhhdCB4c2k6dHlwZT0iSW4iPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJUb1N0cmluZyIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJwb3N0YWxDb2RlIiBzY29wZT0iTG9jYXRpb25BZGRyZXNzIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICAgICAgICAgICA8c291cmNlIGFsaWFzPSJYIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gcGF0aD0icG9zdGFsQ29kZSIgc2NvcGU9IkoiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgPHJldHVybiBkaXN0aW5jdD0iZmFsc2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBuYW1lPSJUb1N0cmluZyIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJYIiB4c2k6dHlwZT0iQWxpYXNSZWYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICA8L3JldHVybj4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8L3N1Y2hUaGF0PgogICAgICAgICAgICA8L3JlbGF0aW9uc2hpcD4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJFbmNvdW50ZXIgQWRkcmVzcyBTdGF0ZSBpcyBpbiBKdXJpc2RpY3Rpb24gQ29kZXMiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICA8c291cmNlIGFsaWFzPSJKIj4KICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gbmFtZT0iSnVyaXNkaWN0aW9ucyIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgIDxyZWxhdGlvbnNoaXAgYWxpYXM9IkxvY2F0aW9uQWRkcmVzcyIgeHNpOnR5cGU9IldpdGgiPgogICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBuYW1lPSJFbmNvdW50ZXIgTG9jYXRpb24gQWRkcmVzcyIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgPHN1Y2hUaGF0IHhzaTp0eXBlPSJBbmQiPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iSW4iPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJUb1N0cmluZyIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJzdGF0ZSIgc2NvcGU9IkxvY2F0aW9uQWRkcmVzcyIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iWCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIHBhdGg9InN0YXRlQ29kZSIgc2NvcGU9IkoiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJldHVybiBkaXN0aW5jdD0iZmFsc2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBuYW1lPSJUb1N0cmluZyIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJYIiB4c2k6dHlwZT0iQWxpYXNSZWYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JldHVybj4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJJbiI+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSJTVEFURSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iWCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIHBhdGg9Imp1cmlzZGljdGlvblR5cGUiIHNjb3BlPSJKIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZXR1cm4gZGlzdGluY3Q9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gbmFtZT0iVG9TdHJpbmciIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iWCIgeHNpOnR5cGU9IkFsaWFzUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZXR1cm4+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8L3N1Y2hUaGF0PgogICAgICAgICAgICA8L3JlbGF0aW9uc2hpcD4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJQYXRpZW50IEFkZHJlc3MgUG9zdGFsIENvZGUgaXMgaW4gSnVyaXNkaWN0aW9uIENvZGVzIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iSiI+CiAgICAgICAgICAgICAgIDxleHByZXNzaW9uIG5hbWU9Ikp1cmlzZGljdGlvbnMiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICA8cmVsYXRpb25zaGlwIGFsaWFzPSJQQSIgeHNpOnR5cGU9IldpdGgiPgogICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBuYW1lPSJQYXRpZW50IEFkZHJlc3MiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgIDxzdWNoVGhhdCB4c2k6dHlwZT0iSW4iPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJUb1N0cmluZyIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJwb3N0YWxDb2RlIiBzY29wZT0iUEEiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgYWxpYXM9IlgiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBwYXRoPSJwb3N0YWxDb2RlIiBzY29wZT0iSiIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICAgICA8cmV0dXJuIGRpc3RpbmN0PSJmYWxzZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIG5hbWU9IlRvU3RyaW5nIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlgiIHhzaTp0eXBlPSJBbGlhc1JlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgICAgIDwvcmV0dXJuPgogICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgIDwvc3VjaFRoYXQ+CiAgICAgICAgICAgIDwvcmVsYXRpb25zaGlwPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIG5hbWU9IlBhdGllbnQgQWRkcmVzcyBTdGF0ZSBpcyBpbiBKdXJpc2RpY3Rpb24gQ29kZXMiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICA8c291cmNlIGFsaWFzPSJKIj4KICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gbmFtZT0iSnVyaXNkaWN0aW9ucyIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgIDxyZWxhdGlvbnNoaXAgYWxpYXM9IlBBIiB4c2k6dHlwZT0iV2l0aCI+CiAgICAgICAgICAgICAgIDxleHByZXNzaW9uIG5hbWU9IlBhdGllbnQgQWRkcmVzcyIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgPHN1Y2hUaGF0IHhzaTp0eXBlPSJBbmQiPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iSW4iPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJUb1N0cmluZyIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJzdGF0ZSIgc2NvcGU9IlBBIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIGFsaWFzPSJYIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gcGF0aD0ic3RhdGVDb2RlIiBzY29wZT0iSiIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICAgICAgICA8cmV0dXJuIGRpc3RpbmN0PSJmYWxzZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIG5hbWU9IlRvU3RyaW5nIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlgiIHhzaTp0eXBlPSJBbGlhc1JlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmV0dXJuPgogICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IkluIj4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9IlNUQVRFIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIGFsaWFzPSJYIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gcGF0aD0ianVyaXNkaWN0aW9uVHlwZSIgc2NvcGU9IkoiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJldHVybiBkaXN0aW5jdD0iZmFsc2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBuYW1lPSJUb1N0cmluZyIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJYIiB4c2k6dHlwZT0iQWxpYXNSZWYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JldHVybj4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgIDwvc3VjaFRoYXQ+CiAgICAgICAgICAgIDwvcmVsYXRpb25zaGlwPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIG5hbWU9IkFkZHJlc3MgRXhpc3RzIGluIEp1cmlzZGljdGlvbiBDb2RlcyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxleHByZXNzaW9uIHhzaTp0eXBlPSJFeGlzdHMiPgogICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iVW5pb24iPgogICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iVW5pb24iPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJFbmNvdW50ZXIgQWRkcmVzcyBTdGF0ZSBpcyBpbiBKdXJpc2RpY3Rpb24gQ29kZXMiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IkVuY291bnRlciBBZGRyZXNzIFBvc3RhbCBDb2RlIGlzIGluIEp1cmlzZGljdGlvbiBDb2RlcyIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iVW5pb24iPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJQYXRpZW50IEFkZHJlc3MgU3RhdGUgaXMgaW4gSnVyaXNkaWN0aW9uIENvZGVzIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJQYXRpZW50IEFkZHJlc3MgUG9zdGFsIENvZGUgaXMgaW4gSnVyaXNkaWN0aW9uIENvZGVzIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJFbmNvdW50ZXJBZGRyZXNzSnVyaXNkaWN0aW9ucyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IklmIj4KICAgICAgICAgICAgPGNvbmRpdGlvbiBhc1R5cGU9InQ6Qm9vbGVhbiIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IkV4aXN0cyI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IkVuY291bnRlciBBZGRyZXNzIFBvc3RhbCBDb2RlIGlzIGluIEp1cmlzZGljdGlvbiBDb2RlcyIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L2NvbmRpdGlvbj4KICAgICAgICAgICAgPHRoZW4gbmFtZT0iRW5jb3VudGVyIEFkZHJlc3MgUG9zdGFsIENvZGUgaXMgaW4gSnVyaXNkaWN0aW9uIENvZGVzIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICA8ZWxzZSBuYW1lPSJFbmNvdW50ZXIgQWRkcmVzcyBTdGF0ZSBpcyBpbiBKdXJpc2RpY3Rpb24gQ29kZXMiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iUGF0aWVudEFkZHJlc3NKdXJpc2RpY3Rpb25zIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPgogICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iSWYiPgogICAgICAgICAgICA8Y29uZGl0aW9uIGFzVHlwZT0idDpCb29sZWFuIiB4c2k6dHlwZT0iQXMiPgogICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iRXhpc3RzIj4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iUGF0aWVudCBBZGRyZXNzIFBvc3RhbCBDb2RlIGlzIGluIEp1cmlzZGljdGlvbiBDb2RlcyIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L2NvbmRpdGlvbj4KICAgICAgICAgICAgPHRoZW4gbmFtZT0iUGF0aWVudCBBZGRyZXNzIFBvc3RhbCBDb2RlIGlzIGluIEp1cmlzZGljdGlvbiBDb2RlcyIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgPGVsc2UgbmFtZT0iUGF0aWVudCBBZGRyZXNzIFN0YXRlIGlzIGluIEp1cmlzZGljdGlvbiBDb2RlcyIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJKdXJpc2RpY3Rpb24gQ29kZXMgUmVsZXZhbnQgdG8gRW5jb3VudGVyIEFkZHJlc3NlcyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxleHByZXNzaW9uIG5hbWU9IkVuY291bnRlckFkZHJlc3NKdXJpc2RpY3Rpb25zIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiLz4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iSnVyaXNkaWN0aW9uIENvZGVzIFJlbGV2YW50IHRvIFBhdGllbnQgQWRkcmVzc2VzIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24gbmFtZT0iUGF0aWVudEFkZHJlc3NKdXJpc2RpY3Rpb25zIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiLz4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iSW5kZXRlcm1pbmF0ZSBDaGxhbXlkaWEgVGVzdCBSZXN1bHRzIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iTyI+CiAgICAgICAgICAgICAgIDxleHByZXNzaW9uIG5hbWU9IkNobGFteWRpYSBUZXN0IFJlc3VsdHMiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICA8bGV0IGlkZW50aWZpZXI9Im9yZ2FuaXphdGlvbiI+CiAgICAgICAgICAgICAgIDxleHByZXNzaW9uIGRhdGFUeXBlPSJmaGlyOk9yZ2FuaXphdGlvbiIgeHNpOnR5cGU9IlJldHJpZXZlIi8+CiAgICAgICAgICAgIDwvbGV0PgogICAgICAgICAgICA8d2hlcmUgeHNpOnR5cGU9Ik9yIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9Ik9yIj4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IkV4aXN0cyI+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgYWxpYXM9ImludGVycHJldGF0aW9uQ29uY2VwdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIHBhdGg9ImludGVycHJldGF0aW9uIiBzY29wZT0iTyIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICAgICAgICA8d2hlcmUgeHNpOnR5cGU9IkluVmFsdWVTZXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29kZSBuYW1lPSJUb0NvbmNlcHQiIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgc3RyaWN0PSJmYWxzZSIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iaW50ZXJwcmV0YXRpb25Db25jZXB0IiB4c2k6dHlwZT0iQWxpYXNSZWYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFzVHlwZVNwZWNpZmllciBuYW1lPSJmaGlyOkNvZGVhYmxlQ29uY2VwdCIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbHVlc2V0IG5hbWU9IkluZGV0ZXJtaW5hdGUgb3IgRXF1aXZvY2FsIExhYiBSZXN1bHQgVmFsdWUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC93aGVyZT4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJJblZhbHVlU2V0Ij4KICAgICAgICAgICAgICAgICAgICAgPGNvZGUgbmFtZT0iVG9Db25jZXB0IiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHN0cmljdD0iZmFsc2UiIHhzaTp0eXBlPSJBcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHBhdGg9InZhbHVlIiBzY29wZT0iTyIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhc1R5cGVTcGVjaWZpZXIgbmFtZT0iZmhpcjpDb2RlYWJsZUNvbmNlcHQiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgIDx2YWx1ZXNldCBuYW1lPSJJbmRldGVybWluYXRlIG9yIEVxdWl2b2NhbCBMYWIgUmVzdWx0IFZhbHVlIi8+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJBZGRyZXNzIEV4aXN0cyBpbiBKdXJpc2RpY3Rpb24gQ29kZXMiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgIDwvd2hlcmU+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iTmVnYXRpdmUgQ2hsYW15ZGlhIFRlc3QgUmVzdWx0cyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxleHByZXNzaW9uIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgIDxzb3VyY2UgYWxpYXM9Ik8iPgogICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBuYW1lPSJDaGxhbXlkaWEgVGVzdCBSZXN1bHRzIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgPGxldCBpZGVudGlmaWVyPSJvcmdhbml6YXRpb24iPgogICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBkYXRhVHlwZT0iZmhpcjpPcmdhbml6YXRpb24iIHhzaTp0eXBlPSJSZXRyaWV2ZSIvPgogICAgICAgICAgICA8L2xldD4KICAgICAgICAgICAgPHdoZXJlIHhzaTp0eXBlPSJBbmQiPgogICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iT3IiPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iRXhpc3RzIj4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iaW50ZXJwcmV0YXRpb25Db25jZXB0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gcGF0aD0iaW50ZXJwcmV0YXRpb24iIHNjb3BlPSJPIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgIDx3aGVyZSB4c2k6dHlwZT0iSW5WYWx1ZVNldCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIG5hbWU9IlRvQ29uY2VwdCIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBzdHJpY3Q9ImZhbHNlIiB4c2k6dHlwZT0iQXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJpbnRlcnByZXRhdGlvbkNvbmNlcHQiIHhzaTp0eXBlPSJBbGlhc1JlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXNUeXBlU3BlY2lmaWVyIG5hbWU9ImZoaXI6Q29kZWFibGVDb25jZXB0IiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsdWVzZXQgbmFtZT0iTmVnYXRpdmUgb3IgVW5kZXRlY3RlZCBMYWIgUmVzdWx0IFZhbHVlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvd2hlcmU+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iSW5WYWx1ZVNldCI+CiAgICAgICAgICAgICAgICAgICAgIDxjb2RlIG5hbWU9IlRvQ29uY2VwdCIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBzdHJpY3Q9ImZhbHNlIiB4c2k6dHlwZT0iQXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJ2YWx1ZSIgc2NvcGU9Ik8iIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YXNUeXBlU3BlY2lmaWVyIG5hbWU9ImZoaXI6Q29kZWFibGVDb25jZXB0IiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPC9jb2RlPgogICAgICAgICAgICAgICAgICAgICA8dmFsdWVzZXQgbmFtZT0iTmVnYXRpdmUgb3IgVW5kZXRlY3RlZCBMYWIgUmVzdWx0IFZhbHVlIi8+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJBZGRyZXNzIEV4aXN0cyBpbiBKdXJpc2RpY3Rpb24gQ29kZXMiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgIDwvd2hlcmU+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iSXNSZXBvcnRhYmxlIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9Ik9yIj4KICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IkV4aXN0cyI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IkluZGV0ZXJtaW5hdGUgQ2hsYW15ZGlhIFRlc3QgUmVzdWx0cyIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iRXhpc3RzIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iTmVnYXRpdmUgQ2hsYW15ZGlhIFRlc3QgUmVzdWx0cyIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICA8L3N0YXRlbWVudHM+CjwvbGlicmFyeT4K"^^xsd:base64Binary ]
  ], [
     fhir:index 1;
     fhir:Attachment.contentType [ fhir:value "text/cql" ];
     fhir:Attachment.data [ fhir:value "bGlicmFyeSBSdWxlRmlsdGVycyB2ZXJzaW9uICcxLjAuMCcKCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjAnCgppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4wJwoKY29kZXN5c3RlbSAiVXNhZ2VDb250ZXh0IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vdXNhZ2UtY29udGV4dC10eXBlJwpjb2Rlc3lzdGVtICJKdXJpc2RpY3Rpb25zTGlzdCI6ICdodHRwOi8vaGw3Lm9yZy9maGlyL3VzL2Vjci9Db2RlU3lzdGVtL2Vyc2QtanVyaXNkaWN0aW9ucycKdmFsdWVzZXQgIkluZGV0ZXJtaW5hdGUgb3IgRXF1aXZvY2FsIExhYiBSZXN1bHQgVmFsdWUiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTQ2LjEwMzUnCnZhbHVlc2V0ICJOZWdhdGl2ZSBvciBVbmRldGVjdGVkIExhYiBSZXN1bHQgVmFsdWUiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTQ2LjEwMzQnCgpjb2RlICJmb2N1cyI6ICdmb2N1cycgZnJvbSBVc2FnZUNvbnRleHQKLy9jb2RlICJDaGxhbXlkaWEiOiAnQ2hsYW15ZGlhJwoKLyogcGFyYW1ldGVyICJUcmlnZ2VyaW5nIEVuY291bnRlciIgRW5jb3VudGVyICovCgpjb250ZXh0IFBhdGllbnQKCmRlZmluZSAiQ2hsYW15ZGlhIFZhbHVlU2V0cyI6CiAgW1ZhbHVlU2V0XSBWYWx1ZVNldAogICAgd2hlcmUgZXhpc3RzICgKICAgICAgVmFsdWVTZXQudXNlQ29udGV4dCBVc2VDb250ZXh0CiAgICAgICAgd2hlcmUgVXNlQ29udGV4dC5jb2RlIH4gImZvY3VzIgogICAgICAgICAgYW5kIG5vdCAgSXNOdWxsKAogICAgICAgICAgICBVc2VDb250ZXh0LnZhbHVlIFZhbHVlCiAgICAgICAgICAgICAgd2hlcmUgVmFsdWUudGV4dCA9ICdDaGxhbXlkaWEnCiAgICAgICAgICApCiAgICApCgpkZWZpbmUgZnVuY3Rpb24gRXhwYW5kVmFsdWVTZXRDb2Rlcyh2YWx1ZSBMaXN0PFZhbHVlU2V0Pik6CiAgdmFsdWUgVmFsdWUKICAgIHJldHVybiBWYWx1ZS5leHBhbnNpb24uY29udGFpbnMuY29kZQoKZGVmaW5lIGZ1bmN0aW9uIEV4cGFuZFZhbHVlU2V0U3lzdGVtcyh2YWx1ZSBMaXN0PFZhbHVlU2V0Pik6CiAgdmFsdWUgVmFsdWUKICAgIHJldHVybiBWYWx1ZS5leHBhbnNpb24uY29udGFpbnMuc3lzdGVtCgpkZWZpbmUgIkZsYXR0ZW5lZCBWYWx1ZVNldCBFeHBhbnNpb24gQ29kZXMiOgogIGZsYXR0ZW4oIEV4cGFuZFZhbHVlU2V0Q29kZXMoIkNobGFteWRpYSBWYWx1ZVNldHMiKSApCgpkZWZpbmUgIkZsYXR0ZW5lZCBWYWx1ZVNldCBFeHBhbnNpb24gU3lzdGVtcyI6CiAgZmxhdHRlbiggRXhwYW5kVmFsdWVTZXRTeXN0ZW1zKCJDaGxhbXlkaWEgVmFsdWVTZXRzIikgKQoKZGVmaW5lIGZ1bmN0aW9uIE9ic2VydmF0aW9uV2l0aFN5c3RlbUFuZENvZGVJbkNobGFteWRpYVZhbHVlU2V0cyhvYnNlcnZhdGlvbiBPYnNlcnZhdGlvbik6CiAgICBub3QgSXNOdWxsKAogICAgICBvYnNlcnZhdGlvbi5jb2RlICBPQ29uY2VwdAogICAgICAgIHdoZXJlIGV4aXN0cyAoCiAgICAgICAgICBPQ29uY2VwdC5jb2RpbmcgT0NvZGluZwogICAgICAgICAgICB3aGVyZSAoIE9Db2RpbmcuY29kZSBpbiAiRmxhdHRlbmVkIFZhbHVlU2V0IEV4cGFuc2lvbiBDb2RlcyIgKQogICAgICAgICAgICAgICBhbmQgT0NvZGluZy5zeXN0ZW0gaW4gIkZsYXR0ZW5lZCBWYWx1ZVNldCBFeHBhbnNpb24gU3lzdGVtcyIKICAgICAgICApCiAgICApCgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25XaXRoQ29kZUluQ2hsYW15ZGlhVmFsdWVTZXRzKG9ic2VydmF0aW9uIE9ic2VydmF0aW9uKToKICBub3QgSXNOdWxsKAogICAgb2JzZXJ2YXRpb24uY29kZSAgT0NvbmNlcHQKICAgICAgd2hlcmUgZXhpc3RzICgKICAgICAgICBPQ29uY2VwdC5jb2RpbmcgT0NvZGluZyB3aGVyZSBPQ29kaW5nLmNvZGUgaW4gZmxhdHRlbiggRXhwYW5kVmFsdWVTZXRDb2RlcygiQ2hsYW15ZGlhIFZhbHVlU2V0cyIpICkKICAgICAgKQogICkKCmRlZmluZSBmdW5jdGlvbiBDaGxhbXlkaWFPYnNlcnZhdGlvbnMob2JzZXJ2YXRpb24gT2JzZXJ2YXRpb24pOgogIGlmIGV4aXN0cyAob2JzZXJ2YXRpb24uY29kZS5jb2Rpbmcuc3lzdGVtKQogIHRoZW4gT2JzZXJ2YXRpb25XaXRoU3lzdGVtQW5kQ29kZUluQ2hsYW15ZGlhVmFsdWVTZXRzKG9ic2VydmF0aW9uKQogIGVsc2UgT2JzZXJ2YXRpb25XaXRoQ29kZUluQ2hsYW15ZGlhVmFsdWVTZXRzKG9ic2VydmF0aW9uKQoKZGVmaW5lICJDaGxhbXlkaWEgVGVzdCBSZXN1bHRzIjoKICBbT2JzZXJ2YXRpb25dIE8KICAgIHdoZXJlIENobGFteWRpYU9ic2VydmF0aW9ucyhPKQogICAgICBhbmQgTy5zdGF0dXMgaW4geyAncHJlbGltaW5hcnknLCAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KCmRlZmluZSAiVHJpZ2dlcmluZyBFbmNvdW50ZXIiOgpbRW5jb3VudGVyXSBFCgpkZWZpbmUgIkVuY291bnRlciBMb2NhdGlvbiBSZWZlcmVuY2VzIjoKICBmbGF0dGVuKCJUcmlnZ2VyaW5nIEVuY291bnRlciIgVHJpZ2dlcmluZ0VuY291bnRlcgogICAgcmV0dXJuIFRyaWdnZXJpbmdFbmNvdW50ZXIubG9jYXRpb24ubG9jYXRpb24pCgpkZWZpbmUgIkxvY2F0aW9ucyBNYXRjaGluZyBFbmNvdW50ZXIgTG9jYXRpb24gUmVmZXJlbmNlcyI6CiAgW0xvY2F0aW9uXSBMb2NhdGlvbgogICAgd2hlcmUgZXhpc3RzICgKICAgICAgICAiRW5jb3VudGVyIExvY2F0aW9uIFJlZmVyZW5jZXMiIExvY2F0aW9uUmVmZXJlbmNlCiAgICAgICAgICB3aGVyZSAoJ0xvY2F0aW9uLycgKyBMb2NhdGlvbi5pZCkgfiBMb2NhdGlvblJlZmVyZW5jZS5yZWZlcmVuY2UKICAgICAgKQoKLyogZGVmaW5lICJFbmNvdW50ZXIgTG9jYXRpb24gQWRkcmVzc2VzIEFuZCBQYXRpZW50IEFkZHJlc3NlcyI6CiAgIkxvY2F0aW9ucyBNYXRjaGluZyBFbmNvdW50ZXIgTG9jYXRpb24gUmVmZXJlbmNlcyIuYWRkcmVzcwogICAgdW5pb24gUGF0aWVudC5hZGRyZXNzICovCgpkZWZpbmUgIkVuY291bnRlciBMb2NhdGlvbiBBZGRyZXNzIjoKICAiTG9jYXRpb25zIE1hdGNoaW5nIEVuY291bnRlciBMb2NhdGlvbiBSZWZlcmVuY2VzIiBBZGRyZXNzCiAgICByZXR1cm4gVHVwbGUgeyBzdGF0ZTogQWRkcmVzcy5hZGRyZXNzLnN0YXRlLCAgcG9zdGFsQ29kZTogQWRkcmVzcy5hZGRyZXNzLnBvc3RhbENvZGUgfQoKZGVmaW5lICJQYXRpZW50IEFkZHJlc3MiOgogIFBhdGllbnQuYWRkcmVzcyBQQQogIHJldHVybiBUdXBsZSB7IHN0YXRlOiBQQS5zdGF0ZSwgcG9zdGFsQ29kZTogUEEucG9zdGFsQ29kZSB9CgovKiBkZWZpbmUgIkFkZHJlc3MgRWxlbWVudHMgUmVsZXZhbnQgdG8gSnVyaXNkaWN0aW9uIFF1YWxpZmljYXRpb24iOgogICJFbmNvdW50ZXIgTG9jYXRpb24gQWRkcmVzc2VzIEFuZCBQYXRpZW50IEFkZHJlc3NlcyIgQWRkcmVzcwogICAgcmV0dXJuIFR1cGxlIHsgc3RhdGU6IEFkZHJlc3Muc3RhdGUsICBwb3N0YWxDb2RlOiBBZGRyZXNzLnBvc3RhbENvZGUgfSAqLwoKZGVmaW5lICJKdXJpc2RpY3Rpb25zIjoKICBmbGF0dGVuKFtDb2RlU3lzdGVtXSBDCiAgICByZXR1cm4gQy5jb25jZXB0IENwdAogICAgICByZXR1cm4gVHVwbGUgeyBqdXJpc2RpY3Rpb25Db2RlOiBDcHQuY29kZSwKICAgICAgICBkZWZpbml0aW9uOiBDcHQuZGVmaW5pdGlvbiwKICAgICAgICBqdXJpc2RpY3Rpb25UeXBlOiBDcHQucHJvcGVydHkgUCB3aGVyZSBQLmNvZGU9J3R5cGUnIHJldHVybiBQLnZhbHVlIGFzIEZISVIuc3RyaW5nLAogICAgICAgIHN0YXRlQ29kZTogQ3B0LnByb3BlcnR5IFAgd2hlcmUgUC5jb2RlID0gJ3N0YXRlJyByZXR1cm4gUC52YWx1ZSBhcyBGSElSLmNvZGUsCiAgICAgICAgcG9zdGFsQ29kZTogQ3B0LnByb3BlcnR5IFAgd2hlcmUgUC5jb2RlID0gJ3Bvc3RhbGNvZGUnIHJldHVybiBQLnZhbHVlIGFzIEZISVIuY29kZQogICAgICAgIH0pCgpkZWZpbmUgIkVuY291bnRlciBBZGRyZXNzIFBvc3RhbCBDb2RlIGlzIGluIEp1cmlzZGljdGlvbiBDb2RlcyI6CiAgIkp1cmlzZGljdGlvbnMiIEoKICAgIHdpdGggIkVuY291bnRlciBMb2NhdGlvbiBBZGRyZXNzIiBMb2NhdGlvbkFkZHJlc3MKICAgICAgc3VjaCB0aGF0IExvY2F0aW9uQWRkcmVzcy5wb3N0YWxDb2RlIGluIEoucG9zdGFsQ29kZQoKZGVmaW5lICJFbmNvdW50ZXIgQWRkcmVzcyBTdGF0ZSBpcyBpbiBKdXJpc2RpY3Rpb24gQ29kZXMiOgogICAgIkp1cmlzZGljdGlvbnMiIEoKICAgICAgd2l0aCAiRW5jb3VudGVyIExvY2F0aW9uIEFkZHJlc3MiIExvY2F0aW9uQWRkcmVzcwogICAgICAgIHN1Y2ggdGhhdCBMb2NhdGlvbkFkZHJlc3Muc3RhdGUgaW4gSi5zdGF0ZUNvZGUKICAgICAgICAgIGFuZCAnU1RBVEUnIGluIEouanVyaXNkaWN0aW9uVHlwZQoKZGVmaW5lICJQYXRpZW50IEFkZHJlc3MgUG9zdGFsIENvZGUgaXMgaW4gSnVyaXNkaWN0aW9uIENvZGVzIjoKICAiSnVyaXNkaWN0aW9ucyIgSgogICAgd2l0aCAiUGF0aWVudCBBZGRyZXNzIiBQQQogICAgICBzdWNoIHRoYXQgUEEucG9zdGFsQ29kZSBpbiBKLnBvc3RhbENvZGUKCmRlZmluZSAiUGF0aWVudCBBZGRyZXNzIFN0YXRlIGlzIGluIEp1cmlzZGljdGlvbiBDb2RlcyI6CiAgIkp1cmlzZGljdGlvbnMiIEoKICAgIHdpdGggIlBhdGllbnQgQWRkcmVzcyIgUEEKICAgICAgc3VjaCB0aGF0IFBBLnN0YXRlIGluIEouc3RhdGVDb2RlCiAgICAgICAgYW5kICdTVEFURScgaW4gSi5qdXJpc2RpY3Rpb25UeXBlCgpkZWZpbmUgIkFkZHJlc3MgRXhpc3RzIGluIEp1cmlzZGljdGlvbiBDb2RlcyI6CiAgZXhpc3RzICgKICAgICJFbmNvdW50ZXIgQWRkcmVzcyBTdGF0ZSBpcyBpbiBKdXJpc2RpY3Rpb24gQ29kZXMiCiAgICAgIHVuaW9uICJFbmNvdW50ZXIgQWRkcmVzcyBQb3N0YWwgQ29kZSBpcyBpbiBKdXJpc2RpY3Rpb24gQ29kZXMiCiAgICAgICAgdW5pb24gIlBhdGllbnQgQWRkcmVzcyBTdGF0ZSBpcyBpbiBKdXJpc2RpY3Rpb24gQ29kZXMiCiAgICAgICAgICB1bmlvbiAiUGF0aWVudCBBZGRyZXNzIFBvc3RhbCBDb2RlIGlzIGluIEp1cmlzZGljdGlvbiBDb2RlcyIKICAgICkKCmRlZmluZSBmdW5jdGlvbiBFbmNvdW50ZXJBZGRyZXNzSnVyaXNkaWN0aW9ucygpOgogIGlmIGV4aXN0cyAoIkVuY291bnRlciBBZGRyZXNzIFBvc3RhbCBDb2RlIGlzIGluIEp1cmlzZGljdGlvbiBDb2RlcyIpCiAgICB0aGVuICJFbmNvdW50ZXIgQWRkcmVzcyBQb3N0YWwgQ29kZSBpcyBpbiBKdXJpc2RpY3Rpb24gQ29kZXMiCiAgICAgIGVsc2UgIkVuY291bnRlciBBZGRyZXNzIFN0YXRlIGlzIGluIEp1cmlzZGljdGlvbiBDb2RlcyIKCmRlZmluZSBmdW5jdGlvbiBQYXRpZW50QWRkcmVzc0p1cmlzZGljdGlvbnMoKToKICBpZiBleGlzdHMgKCJQYXRpZW50IEFkZHJlc3MgUG9zdGFsIENvZGUgaXMgaW4gSnVyaXNkaWN0aW9uIENvZGVzIikKICAgIHRoZW4gIlBhdGllbnQgQWRkcmVzcyBQb3N0YWwgQ29kZSBpcyBpbiBKdXJpc2RpY3Rpb24gQ29kZXMiCiAgICAgIGVsc2UgIlBhdGllbnQgQWRkcmVzcyBTdGF0ZSBpcyBpbiBKdXJpc2RpY3Rpb24gQ29kZXMiCgpkZWZpbmUgIkp1cmlzZGljdGlvbiBDb2RlcyBSZWxldmFudCB0byBFbmNvdW50ZXIgQWRkcmVzc2VzIjoKICBFbmNvdW50ZXJBZGRyZXNzSnVyaXNkaWN0aW9ucygpCgpkZWZpbmUgIkp1cmlzZGljdGlvbiBDb2RlcyBSZWxldmFudCB0byBQYXRpZW50IEFkZHJlc3NlcyI6CiAgUGF0aWVudEFkZHJlc3NKdXJpc2RpY3Rpb25zKCkKCmRlZmluZSAiSW5kZXRlcm1pbmF0ZSBDaGxhbXlkaWEgVGVzdCBSZXN1bHRzIjoKICAiQ2hsYW15ZGlhIFRlc3QgUmVzdWx0cyIgTwogICAgbGV0IG9yZ2FuaXphdGlvbjogW09yZ2FuaXphdGlvbl0KICAgIHdoZXJlICgKICAgICAgKAogICAgICAgIGV4aXN0cyAoCiAgICAgICAgICAgIE8uaW50ZXJwcmV0YXRpb24gaW50ZXJwcmV0YXRpb25Db25jZXB0CiAgICAgICAgICAgICAgd2hlcmUgaW50ZXJwcmV0YXRpb25Db25jZXB0IGFzIENvZGVhYmxlQ29uY2VwdCBpbiAiSW5kZXRlcm1pbmF0ZSBvciBFcXVpdm9jYWwgTGFiIFJlc3VsdCBWYWx1ZSIKICAgICAgICApCiAgICAgICAgICBvciBPLnZhbHVlIGFzIENvZGVhYmxlQ29uY2VwdCBpbiAiSW5kZXRlcm1pbmF0ZSBvciBFcXVpdm9jYWwgTGFiIFJlc3VsdCBWYWx1ZSIKICAgICAgKQogICAgICAgIG9yICJBZGRyZXNzIEV4aXN0cyBpbiBKdXJpc2RpY3Rpb24gQ29kZXMiCiAgICApCgpkZWZpbmUgIk5lZ2F0aXZlIENobGFteWRpYSBUZXN0IFJlc3VsdHMiOgogICJDaGxhbXlkaWEgVGVzdCBSZXN1bHRzIiBPCiAgICBsZXQgb3JnYW5pemF0aW9uOiBbT3JnYW5pemF0aW9uXQogICAgd2hlcmUgKAogICAgICAoCiAgICAgICAgZXhpc3RzICgKICAgICAgICAgICAgTy5pbnRlcnByZXRhdGlvbiBpbnRlcnByZXRhdGlvbkNvbmNlcHQKICAgICAgICAgICAgICB3aGVyZSBpbnRlcnByZXRhdGlvbkNvbmNlcHQgYXMgQ29kZWFibGVDb25jZXB0IGluICJOZWdhdGl2ZSBvciBVbmRldGVjdGVkIExhYiBSZXN1bHQgVmFsdWUiCiAgICAgICAgKQogICAgICAgICAgb3IgTy52YWx1ZSBhcyBDb2RlYWJsZUNvbmNlcHQgaW4gIk5lZ2F0aXZlIG9yIFVuZGV0ZWN0ZWQgTGFiIFJlc3VsdCBWYWx1ZSIKICAgICAgKQogICAgICAgIGFuZCAiQWRkcmVzcyBFeGlzdHMgaW4gSnVyaXNkaWN0aW9uIENvZGVzIgogICAgKQoKZGVmaW5lICJJc1JlcG9ydGFibGUiOgogIGV4aXN0cyAiSW5kZXRlcm1pbmF0ZSBDaGxhbXlkaWEgVGVzdCBSZXN1bHRzIgogICAgb3IgZXhpc3RzICJOZWdhdGl2ZSBDaGxhbXlkaWEgVGVzdCBSZXN1bHRzIgo="^^xsd:base64Binary ]
  ].

# - ontology header ------------------------------------------------------------

 a owl:Ontology;
  owl:imports fhir:fhir.ttl.