CDC National Healthcare Safety Network (NHSN) Digital Quality Measures (dQM) Content Package IG
2.0.0-cibuild - Release 2 ci-build United States of America flag

CDC National Healthcare Safety Network (NHSN) Digital Quality Measures (dQM) Content Package IG - Local Development build (v2.0.0-cibuild) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

: NHSN Acute Care Hospital Monthly Initial Population Library - XML Representation

Page standards status: Trial-use Maturity Level: 1

Raw xml | Download


<Library xmlns="http://hl7.org/fhir">
  <id value="NHSNAcuteCareHospitalMonthlyInitialPopulation"/>
  <text>
    <status value="extensions"/>
    <div xmlns="http://www.w3.org/1999/xhtml">
<div>
    <table class="grid dict">
        
        

        
        
        <tr>
            <th scope="row"><b>Id: </b></th>
            <td style="padding-left: 4px;">NHSNAcuteCareHospitalMonthlyInitialPopulation</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Version: </b></th>
            <td style="padding-left: 4px;">2.0.0-cibuild</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Url: </b></th>
            <td style="padding-left: 4px;"><a href="Library-NHSNAcuteCareHospitalMonthlyInitialPopulation.html">NHSNAcuteCareHospitalMonthlyInitialPopulation</a></td>
        </tr>
        

        

        

        
        <tr>
            <th scope="row"><b>Status: </b></th>
            <td style="padding-left: 4px;">draft</td>
        </tr>
        

        

        
        <tr>
            <th scope="row"><b>Type: </b></th>
            <td style="padding-left: 4px;">
                
                    
                        
                        <p style="margin-bottom: 5px;">
                            <b>system: </b> <span><a href="http://terminology.hl7.org/6.5.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a></span>
                        </p>
                        
                        
                        <p style="margin-bottom: 5px;">
                            <b>code: </b> <span>logic-library</span>
                        </p>
                        
                        
                    
                
                
            </td>
        </tr>
        

        

        
        <tr>
            <th scope="row"><b>Date: </b></th>
            <td style="padding-left: 4px;">2025-11-10 16:09:20+0000</td>
        </tr>
        

        
        <tr>
            <th scope="row"><b>Publisher: </b></th>
            <td style="padding-left: 4px;">CDC National Healthcare Safety Network (NHSN)</td>
        </tr>
        

        

        

        

        

        
        <tr>
            <th scope="row"><b>Jurisdiction: </b></th>
            <td style="padding-left: 4px;">US</td>
        </tr>
        

        

        

        

        

        

        

        
        <tr>
            <th scope="row"><b>Related Artifacts: </b></th>
            <td style="padding-left: 4px;">
                
                
                
                <p><b>Dependencies</b></p>
                <ul>
                  
                    <li><a href="http://fhir.org/guides/cqf/common/4.0.1/4.0.1/Library-FHIR-ModelInfo.html">http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1</a></li>
                  
                    <li><code>http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/FHIRHelpers|4.0.2</code></li>
                  
                    <li><code>http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/NHSNHelpers|0.0.002</code></li>
                  
                    <li><code>http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/SharedResourceCreation|0.1.010</code></li>
                  
                    <li><a href="http://terminology.hl7.org/6.5.0/CodeSystem-v3-ActCode.html">ActCodeversion: null9.0.0)</a></li>
                  
                    <li><a href="http://terminology.hl7.org/6.5.0/CodeSystem-observation-category.html">Observation Category Codesversion: null1.0.1)</a></li>
                  
                    <li><a href="http://terminology.hl7.org/6.5.0/CodeSystem-v3-loinc.html">Logical Observation Identifiers, Names and Codes (LOINC)</a></li>
                  
                    <li><a href="http://terminology.hl7.org/5.0.0/CodeSystem-v2-0074.html">diagnosticServiceSectionIdversion: null2.5.0)</a></li>
                  
                    <li><a href="http://terminology.hl7.org/6.5.0/CodeSystem-condition-category.html">Condition Category Codesversion: null1.0.1)</a></li>
                  
                    <li><a href="http://hl7.org/fhir/us/core/STU6.1/CodeSystem-condition-category.html">US Core Condition Category Extension Codesversion: null6.1.0)</a></li>
                  
                    <li><a href="http://terminology.hl7.org/6.5.0/CodeSystem-condition-clinical.html">Condition Clinical Status Codesversion: null3.0.0)</a></li>
                  
                    <li><code>http://www.snomed.org/</code></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1046.265/expansion">Inpatient, Emergency, and Observation Locations</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.117.1.7.1.292/expansion">Emergency Department Visit</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.666.5.307/expansion">Encounter Inpatient</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1111.143/expansion">Observation Services</a></li>
                  
                    <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1046.274/expansion">NHSN Inpatient Encounter Class Codes</a></li>
                  
                </ul>
                
                
                
                
                
            </td>
        </tr>
        

        
        <tr>
          <th scope="row"><b>Parameters: </b></th>
          <td style="padding-left: 4px;">
            <table class="grid-dict">
              <tr><th><b>Name</b></th><th><b>Type</b></th><th><b>Min</b></th><th><b>Max</b></th><th><b>In/Out</b></th></tr>
              
                <tr><th>Measurement Period</th><th>Period</th><th>0</th><th>1</th><th>In</th></tr>
              
                <tr><th>Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Qualifying Encounters During Measurement Period</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Encounters</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Encounters with Patient Hospital Locations</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Initial Population</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Conditions</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>DiagnosticReports</th><th>DiagnosticReport</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Observations</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Get Locations from IP Encounters in Measurement Period</th><th>Location</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Coverage</th><th>Coverage</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Device</th><th>Device</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE DiagnosticReport Lab</th><th>DiagnosticReport</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE DiagnosticReport Note</th><th>DiagnosticReport</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE DiagnosticReport Others</th><th>DiagnosticReport</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Encounter</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE IP Encounters</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Location</th><th>Location</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Medication Administration</th><th>MedicationAdministration</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Medication Request</th><th>MedicationRequest</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Medication</th><th>Medication</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Observation Lab Category</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Observation Vital Signs Category</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Observation Category</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Procedure</th><th>Procedure</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Specimen</th><th>Specimen</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Service Request</th><th>ServiceRequest</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>SDE Minimal Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>
              
            </table>
          </td>
        </tr>
        

        
        <tr>
          <th scope="row"><b>Data Requirements:</b></th>
          <td style="padding-left: 4px;">
            <table class="grid-dict">
              <tr><th><b>Type</b></th><th><b>Profile</b></th><th><b>MS</b></th><th><b>Code Filter</b></th></tr>
              
                <tr>
                  <th>Patient</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Patient</th>
                  <th>;;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Encounter</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                  <th>;;;;;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>type</span>
                      </span>
                      
                      <br/>
                      
                      
                      
                      <span style="padding-left: 4px;">
                          <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307</span>
                      </span>
                      
                      
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Encounter</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                  <th>;;;;;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>type</span>
                      </span>
                      
                      <br/>
                      
                      
                      
                      <span style="padding-left: 4px;">
                          <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292</span>
                      </span>
                      
                      
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Encounter</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                  <th>;;;;;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>type</span>
                      </span>
                      
                      <br/>
                      
                      
                      
                      <span style="padding-left: 4px;">
                          <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143</span>
                      </span>
                      
                      
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Encounter</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                  <th>;;;;;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>class</span>
                      </span>
                      
                      <br/>
                      
                      
                      
                      <span style="padding-left: 4px;">
                          <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274</span>
                      </span>
                      
                      
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Encounter</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                  <th>;;;;;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>class</span>
                      </span>
                      
                      <br/>
                      
                      
                      
                      
                          
                          <p style="margin-bottom: 5px;">
                              <b>system: </b> <span><a href="http://terminology.hl7.org/6.5.0/CodeSystem-v3-ActCode.html">http://terminology.hl7.org/CodeSystem/v3-ActCode</a></span>
                          </p>
                          
                          
                          <p style="margin-bottom: 5px;">
                              <b>code: </b> <span>EMER</span>
                          </p>
                          
                          
                          <p style="margin-bottom: 5px;">
                              <b>display: </b> <span>emergency</span>
                          </p>
                          
                      
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Encounter</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                  <th>;;;;;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>class</span>
                      </span>
                      
                      <br/>
                      
                      
                      
                      
                          
                          <p style="margin-bottom: 5px;">
                              <b>system: </b> <span><a href="http://terminology.hl7.org/6.5.0/CodeSystem-v3-ActCode.html">http://terminology.hl7.org/CodeSystem/v3-ActCode</a></span>
                          </p>
                          
                          
                          <p style="margin-bottom: 5px;">
                              <b>code: </b> <span>OBSENC</span>
                          </p>
                          
                          
                          <p style="margin-bottom: 5px;">
                              <b>display: </b> <span>observation encounter</span>
                          </p>
                          
                      
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Encounter</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                  <th>;;;;;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Location</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Location</th>
                  <th>;;;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Condition</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Condition</th>
                  <th>;;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>DiagnosticReport</th>
                  <th>http://hl7.org/fhir/StructureDefinition/DiagnosticReport</th>
                  <th>;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Observation</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Observation</th>
                  <th>;;;;;;;;;;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Coverage</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Coverage</th>
                  <th>;;;;;;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Device</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Device</th>
                  <th>;;;;;;;;;;;;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>MedicationAdministration</th>
                  <th>http://hl7.org/fhir/StructureDefinition/MedicationAdministration</th>
                  <th>;;;;;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>MedicationRequest</th>
                  <th>http://hl7.org/fhir/StructureDefinition/MedicationRequest</th>
                  <th>;;;;;;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Medication</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Medication</th>
                  <th>;;;;;;;;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Procedure</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Procedure</th>
                  <th>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>Specimen</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Specimen</th>
                  <th>;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                  </th>
                </tr>
              
                <tr>
                  <th>ServiceRequest</th>
                  <th>http://hl7.org/fhir/StructureDefinition/ServiceRequest</th>
                  <th>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</th>
                  <th>
                    
                  </th>
                </tr>
              
            </table>
          </td>
        </tr>
        

        
        
        <tr>
          <td colspan="2">
            <table>
              <tr><th><a id="cql-content"><b>Content: </b></a> text/cql</th></tr>
              <tr><td><pre><code class="language-cql">library NHSNAcuteCareHospitalMonthlyInitialPopulation version '2.0.0-cibuild'

using FHIR version '4.0.1'

include FHIRHelpers version '4.0.2' called FHIRHelpers
include NHSNHelpers version '0.0.002' called NHSNHelpers
include SharedResourceCreation version '0.1.010' called SharedResource

codesystem &quot;ActCode&quot;: 'http://terminology.hl7.org/CodeSystem/v3-ActCode'
codesystem &quot;Observation Category&quot;: 'http://terminology.hl7.org/CodeSystem/observation-category'
codesystem &quot;LOINC&quot;: 'http://loinc.org' 
codesystem &quot;V2-0074&quot;: 'http://terminology.hl7.org/CodeSystem/v2-0074'
codesystem &quot;Condition Category&quot;: 'http://terminology.hl7.org/CodeSystem/condition-category'
codesystem &quot;US Core Condition Category&quot;: 'http://hl7.org/fhir/us/core/CodeSystem/condition-category'
codesystem &quot;Condition Clinical Status&quot;: 'http://terminology.hl7.org/CodeSystem/condition-clinical'
codesystem &quot;SNOMEDCT&quot;: 'http://snomed.info/sct'
codesystem &quot;MedicationRequest Category&quot;: 'http://terminology.hl7.org/CodeSystem/medicationrequest-category'

valueset &quot;Inpatient, Emergency, and Observation Locations&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.265'
valueset &quot;Emergency Department Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292'
valueset &quot;Encounter Inpatient&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'
valueset &quot;Observation Services&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143'
valueset &quot;NHSN Inpatient Encounter Class Codes&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274'

//code for Observation Category
code &quot;laboratory&quot;: 'laboratory' from &quot;Observation Category&quot; display 'Laboratory'
code &quot;social-history&quot;: 'social-history' from &quot;Observation Category&quot; display 'Social History'
code &quot;vital-signs&quot;: 'vital-signs' from &quot;Observation Category&quot; display 'Vital Signs'
code &quot;imaging&quot;: 'imaging' from &quot;Observation Category&quot; display 'Imaging'
code &quot;procedure&quot;: 'procedure' from &quot;Observation Category&quot; display 'Procedure'
code &quot;survey&quot;: 'survey' from &quot;Observation Category&quot; display 'Survey'

//code for Condition category
//code &quot;problem-list-item&quot;: 'problem-list-item' from &quot;Condition Category&quot; display 'Problem List Item'
code &quot;encounter-diagnosis&quot;: 'encounter-diagnosis' from &quot;Condition Category&quot; display 'Encounter Diagnosis'
//code &quot;health-concern&quot;: 'health-concern' from &quot;US Core Condition Category&quot; display 'Health Concern'

//code for Diagnostic Report Category
code &quot;LAB&quot;: 'LAB' from &quot;V2-0074&quot; display 'Laboratory'
code &quot;Radiology&quot;: 'LP29684-5' from &quot;LOINC&quot; display 'Radiology'
code &quot;Pathology&quot;: 'LP7839-6' from &quot;LOINC&quot; display 'Pathology'
code &quot;Cardiology&quot;: 'LP29708-2' from &quot;LOINC&quot; display 'Cardiology'

//code for Emergency Encounter Class
code &quot;emergency&quot;: 'EMER' from &quot;ActCode&quot; display 'emergency'
code &quot;observation encounter&quot;: 'OBSENC' from &quot;ActCode&quot; display 'observation encounter'

//code for Condition clinicalStatus
code &quot;active&quot;: 'active' from &quot;Condition Clinical Status&quot; display 'active'

//code for Procedure category
code &quot;Surgical procedure&quot;: '387713003' from &quot;SNOMEDCT&quot; display 'Surgical procedure'
code &quot;Diagnostic procedure&quot;: '103693007' from &quot;SNOMEDCT&quot; display 'Diagnostic procedure'

//code for MedicationRequest category
code &quot;inpatient&quot;: 'inpatient' from &quot;MedicationRequest Category&quot; display 'Inpatient'
code &quot;outpatient&quot;: 'outpatient' from &quot;MedicationRequest Category&quot; display 'Outpatient'

//code for ServiceRequest category (also uses Surgical procedure from Procedure categories)
code &quot;Laboratory procedure&quot;: '108252007' from &quot;SNOMEDCT&quot; display 'Laboratory procedure'
code &quot;Imaging&quot;: '363679005' from &quot;SNOMEDCT&quot; display 'Imaging'

parameter &quot;Measurement Period&quot; 
    default Interval[@2022-01-01T00:00:00.0, @2022-01-31T23:59:59.0)

context Patient 

define &quot;Qualifying Encounters During Measurement Period&quot;:
 ( [Encounter: &quot;Encounter Inpatient&quot;]
  union [Encounter: &quot;Emergency Department Visit&quot;]
  union [Encounter: &quot;Observation Services&quot;]
  union [Encounter: class in &quot;NHSN Inpatient Encounter Class Codes&quot;]
  union [Encounter: class ~ &quot;emergency&quot;]
  union [Encounter: class ~ &quot;observation encounter&quot;]) QualifyingEncounters
  where QualifyingEncounters.status in {'in-progress', 'finished', 'triaged', 'onleave', 'entered-in-error'}
    and QualifyingEncounters.period overlaps &quot;Measurement Period&quot; 

define &quot;Encounters with Patient Hospital Locations&quot;:
  &quot;Encounters&quot; Encounters
  where exists(
    Encounters.location EncounterLocation
    where NHSNHelpers.GetLocation(EncounterLocation.location).type in &quot;Inpatient, Emergency, and Observation Locations&quot;
      and EncounterLocation.period overlaps Encounters.period
  )
  and Encounters.status in {'in-progress', 'finished', 'triaged', 'onleave', 'entered-in-error'}
  and Encounters.period overlaps &quot;Measurement Period&quot;

define &quot;Initial Population&quot;:
  &quot;Qualifying Encounters During Measurement Period&quot;
  union &quot;Encounters with Patient Hospital Locations&quot;

define &quot;Encounters&quot;:
  [Encounter]

define &quot;Conditions&quot;:
  [Condition]

define &quot;DiagnosticReports&quot;:
  [DiagnosticReport]

define &quot;Observations&quot;:
  [Observation]

define &quot;Get Locations from IP Encounters in Measurement Period&quot;:
  flatten(&quot;Initial Population&quot; IP
  let locationElements: IP.location
  return
    locationElements LE
    let locationReference: LE.location
    return NHSNHelpers.GetLocation(locationReference))

define &quot;Medication IDs&quot;:
  (&quot;SDE Medication Request&quot;
  union &quot;SDE Medication Administration&quot;) MedReqOrAdmin
  where MedReqOrAdmin.medication is FHIR.Reference
    and exists(&quot;Initial Population&quot;) //No longer need to check for timing here because it's checked in SDE Medication Request/Administriation
  return NHSNHelpers.GetId(MedReqOrAdmin.medication.reference)

//============================================================================
//Supplemental Data Element
//When FHIR.canonical value is present, US Core 3.1.1 profiles are used
//When FHIR.canonical value is not present, FHIR Base profiles are used
//============================================================================
define &quot;SDE Condition&quot;:
  &quot;Conditions&quot; Conditions 
    where exists(
    &quot;Initial Population&quot; IP
//Check for Problem List Conditions that were recorded before or during IP 
     where 
      (exists(IP.diagnosis Diagnoses
          where NHSNHelpers.GetId(Diagnoses.condition.reference) = Conditions.id
        )
        or NHSNHelpers.GetId(Conditions.encounter.reference) = IP.id
      )
      and exists (Conditions.category categories
        where categories ~ &quot;encounter-diagnosis&quot;
    )
  )
  return ConditionResource(Conditions,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-condition'}},
   {&quot;encounter-diagnosis&quot;})

define &quot;SDE Coverage&quot;: 
	[Coverage] Coverages
  where exists(
    &quot;Initial Population&quot; IP
    where Coverages.period overlaps IP.period)
  return CoverageResource(Coverages,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-coverage'}})

define &quot;SDE Device&quot;:
  [Device] Devices 
  where exists(&quot;Initial Population&quot;)
  return DeviceResource(Devices,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-device'}})

//This block collects all DiagnosticReport resources while also marking Lab and Note DiagnosticReports with the appropriate profiles
//#Start DiagnosticReport block
define &quot;SDE DiagnosticReport Lab&quot;:
  &quot;DiagnosticReports&quot; DiagnosticReports
  where (exists(DiagnosticReports.category Category where Category ~ &quot;LAB&quot;)
    and exists(
      &quot;Initial Population&quot; IP
      where NHSNHelpers.&quot;Normalize Interval&quot;(DiagnosticReports.effective) overlaps IP.period))
  return DiagnosticReportLabResource(DiagnosticReports,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-diagnosticreport-lab'}},
  {&quot;LAB&quot;, &quot;Radiology&quot;, &quot;Pathology&quot;, &quot;Cardiology&quot;})
 
define &quot;SDE DiagnosticReport Note&quot;:
  &quot;DiagnosticReports&quot; DiagnosticReports
  where ((exists(DiagnosticReports.category Category where Category ~ &quot;Radiology&quot;))
    or exists((DiagnosticReports.category Category where Category ~ &quot;Pathology&quot;))
    or exists((DiagnosticReports.category Category where Category ~ &quot;Cardiology&quot;)))
    and exists(
      &quot;Initial Population&quot; IP
      where NHSNHelpers.&quot;Normalize Interval&quot;(DiagnosticReports.effective) overlaps IP.period)
  return DiagnosticReportResource(DiagnosticReports,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-diagnosticreport-note'}},
  {&quot;Radiology&quot;, &quot;Pathology&quot;, &quot;Cardiology&quot;, &quot;LAB&quot;})

define &quot;SDE DiagnosticReport Others&quot;:
  [DiagnosticReport] DiagnosticReports
  where not ((exists(DiagnosticReports.category Category where Category ~ &quot;Radiology&quot;))
    or exists((DiagnosticReports.category Category where Category ~ &quot;Pathology&quot;))
    or exists((DiagnosticReports.category Category where Category ~ &quot;Cardiology&quot;))
    or exists(DiagnosticReports.category Category where Category ~ &quot;LAB&quot;))
    and exists(&quot;Initial Population&quot; IP
      where NHSNHelpers.&quot;Normalize Interval&quot;(DiagnosticReports.effective) overlaps IP.period)
  return DiagnosticReportResource(DiagnosticReports,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-diagnosticreport'}},
  {&quot;Radiology&quot;, &quot;Pathology&quot;, &quot;Cardiology&quot;, &quot;LAB&quot;})
//#End DiagnosticReport block

define &quot;SDE Encounter&quot;: 
  &quot;Encounters&quot; Encounters
  where not CheckIP(Encounters)
  and exists(
    &quot;Initial Population&quot; IP
    where Encounters.period overlaps IP.period)
  return EncounterResource(Encounters,
  {FHIR.canonical{value: 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter'}})

define &quot;SDE IP Encounters&quot;:
  &quot;Initial Population&quot; IP
  return EncounterResource(IP, 
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-encounter'}})

define &quot;SDE Location&quot;:
  &quot;Get Locations from IP Encounters in Measurement Period&quot; Locations
  where exists(&quot;Initial Population&quot;)
  and Locations is not null
  return LocationResource(Locations,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-location'}})
 
define &quot;SDE Medication Administration&quot;:
  [MedicationAdministration] MedicationAdministrations 
  where exists(
    &quot;Initial Population&quot; IP
    where NHSNHelpers.&quot;Normalize Interval&quot;(MedicationAdministrations.effective) overlaps IP.period)
  return MedicationAdministrationResource(MedicationAdministrations,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-medicationadministration'}},
  {&quot;inpatient&quot;, &quot;outpatient&quot;})
 
define &quot;SDE Medication Request&quot;:
  [MedicationRequest] MedicationRequests 
  where exists(
    &quot;Initial Population&quot; IP
    where MedicationRequests.authoredOn during IP.period)
  return MedicationRequestResource(MedicationRequests,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-medicationrequest'}},
  {&quot;inpatient&quot;, &quot;outpatient&quot;})
  
define &quot;SDE Medication&quot;:
  [Medication] Medications
  where Medications.id in &quot;Medication IDs&quot;
  return SharedResource.MedicationResource(Medications,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-medication'}})

define &quot;SDE Observation Lab Category&quot;:
  &quot;Observations&quot; Observations 
  where (exists(Observations.category Category where Category ~ &quot;laboratory&quot;))
    and exists(
      &quot;Initial Population&quot; IP
      where NHSNHelpers.&quot;Normalize Interval&quot;(Observations.effective) overlaps IP.period)
  return ObservationLabResource(Observations,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-observation-lab'}},
  {&quot;imaging&quot;, &quot;procedure&quot;, &quot;vital-signs&quot;, &quot;laboratory&quot;})

//Vital Signs Observation has its own profile in FHIR Base
define &quot;SDE Observation Vital Signs Category&quot;:
  &quot;Observations&quot; Observations 
  where (exists(Observations.category Category where Category ~ &quot;vital-signs&quot;))
    and exists(
      &quot;Initial Population&quot; IP
      where NHSNHelpers.&quot;Normalize Interval&quot;(Observations.effective) overlaps IP.period)
  return ObservationVitalSignsResource(Observations,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-observation-vitals'}},
  {&quot;imaging&quot;, &quot;procedure&quot;, &quot;vital-signs&quot;, &quot;laboratory&quot;})

//Defaulting to base FHIR profile as there are no individual profiles in US Core 3.1.1 that cover these Observation categories
define &quot;SDE Observation Category&quot;:
  &quot;Observations&quot; Observations 
  where (/*(exists(Observations.category Category where Category ~ &quot;social-history&quot;))
    or (exists(Observations.category Category where Category ~ &quot;survey&quot;))
    or */(exists(Observations.category Category where Category ~ &quot;imaging&quot;))
    or (exists(Observations.category Category where Category ~ &quot;procedure&quot;)))
    and exists(
      &quot;Initial Population&quot; IP
      where NHSNHelpers.&quot;Normalize Interval&quot;(Observations.effective) overlaps IP.period)
  return ObservationResource(Observations,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-observation'}},
  {&quot;imaging&quot;, &quot;procedure&quot;, &quot;vital-signs&quot;, &quot;laboratory&quot;})

define &quot;SDE Procedure&quot;:
  [Procedure] Procedures 
  where exists(
    &quot;Initial Population&quot; IP
    where NHSNHelpers.&quot;Normalize Interval&quot;(Procedures.performed) overlaps IP.period)
     return ProcedureResource(Procedures,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-procedure'}},
  {&quot;Surgical procedure&quot;, &quot;Diagnostic procedure&quot;})

define &quot;SDE Specimen&quot;:
  [Specimen] Specimens
  where exists(
    &quot;Initial Population&quot; IP
    where NHSNHelpers.&quot;Normalize Interval&quot;(Specimens.collection.collected) overlaps IP.period
  )
  return SpecimenResource(Specimens,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-specimen'}})

define &quot;SDE Service Request&quot;:
  [ServiceRequest] ServiceRequests
  where exists(&quot;Initial Population&quot; IP
    where ServiceRequests.authoredOn during IP.period)
  return ServiceRequestResource(ServiceRequests,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-servicerequest'}},
  {&quot;Laboratory procedure&quot;, &quot;Surgical procedure&quot;, &quot;Imaging&quot;})

define &quot;SDE Minimal Patient&quot;:
  Patient p
  return SharedResource.PatientResource(p,
  {FHIR.canonical{value: 'http://www.cdc.gov/nhsn/fhirportal/dqm/ig/StructureDefinition/cross-measure-patient'}})

//
//Functions
//
define function &quot;CheckIP&quot;(encounter Encounter):
  exists(&quot;Initial Population&quot; IP
  where encounter.id = IP.id)

define function &quot;GetMedicationFrom&quot;(choice Choice&lt;FHIR.CodeableConcept, FHIR.Reference&gt;):
  case
    when choice is FHIR.Reference then
      GetMedication(choice as FHIR.Reference)
    else
      null
  end

define function &quot;GetMedication&quot;(reference Reference):
  singleton from (
    [Medication] Medications
    where Medications.id = NHSNHelpers.GetId(reference.reference)
  )

define function &quot;GetCondition&quot;(reference Reference):
  singleton from (
    &quot;Conditions&quot; Conditions
    where Conditions.id = NHSNHelpers.GetId(reference.reference)
  )

define function &quot;GetEncounter&quot;(reference Reference):
  singleton from (
    &quot;Encounters&quot; Encounters
    where Encounters.id = NHSNHelpers.GetId(reference.reference)
  )

define function RemoveUnaccepted(codes List&lt;FHIR.CodeableConcept&gt;, accepted List&lt;System.Code&gt;):
  codes c
  where exists(
    accepted a
    where c ~ a
  )

define function FilterCodeableConcepts(codes List&lt;FHIR.CodeableConcept&gt;, accepted List&lt;System.Code&gt;):
  if Count(accepted) &gt; 0
    then RemoveUnaccepted(codes, accepted)
  else codes    

//
//Measure Specific Resource Creation Functions
//

define function ConditionResource(condition Condition, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  condition c
  return Condition{
    id: FHIR.id {value: 'LCR-' + c.id},
    meta: SharedResource.MetaElement(c, profileURLs),
    extension: c.extension,
    clinicalStatus: c.clinicalStatus,
    verificationStatus: c.verificationStatus,
    category: FilterCodeableConcepts(c.category, acceptedCategories),
    code: c.code,
    subject: c.subject,
    encounter: c.encounter,
    onset: c.onset,
    abatement: c.abatement,
    recordedDate: c.recordedDate
  }

define function CoverageResource(coverage Coverage, profileURLs List&lt;FHIR.canonical&gt;):
  coverage c
  return Coverage{
    id: FHIR.id{value: 'LCR-' + c.id},
    meta: SharedResource.MetaElement(c, profileURLs),
    extension: c.extension,
    status: c.status,
    type: c.type,
    beneficiary: c.beneficiary,
    period: c.period,
    payor: c.payor
  }

define function DeviceResource(device Device, profileURLs List&lt;FHIR.canonical&gt;):
  device d
  return Device{
    id: FHIR.id{value: 'LCR-' + d.id},
    meta: SharedResource.MetaElement(d, profileURLs),
    extension: d.extension,
    status: d.status,
    expirationDate: d.expirationDate,
    lotNumber: d.lotNumber,
    serialNumber: d.serialNumber,
    modelNumber: d.modelNumber,
    partNumber: d.partNumber,
    type: d.type,
    patient: d.patient,
    parent: d.parent
  }

define function DiagnosticReportCoding(coding List&lt;Coding&gt;):
  coding c
  return Coding{
    system: c.system,
    version: c.version,
    code: c.code,
    display: c.display
  }

define function DiagnosticReportCategory(category List&lt;CodeableConcept&gt;):
  category c
  return CodeableConcept{
    coding: DiagnosticReportCoding(c.coding)
  }

define function DiagnosticReportLabResource(diagnosticReport DiagnosticReport, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  diagnosticReport d
  return DiagnosticReport{
    id: FHIR.id{value: 'LCR-' + d.id},
    meta: SharedResource.MetaElement(d, profileURLs),
    extension: d.extension,
    basedOn: d.basedOn,
    status: d.status,
    category: FilterCodeableConcepts(DiagnosticReportCategory(d.category), acceptedCategories),
    code: d.code,
    subject: d.subject,
    encounter: d.encounter,
    effective: d.effective,
    issued: d.issued,
    specimen: d.specimen,
    result: d.result,
    conclusion: d.conclusion,
    conclusionCode: d.conclusionCode
  }

define function DiagnosticReportResource(diagnosticReport DiagnosticReport, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  diagnosticReport d
  return DiagnosticReport{
    id: FHIR.id{value: 'LCR-' + d.id},
    meta: SharedResource.MetaElement(d, profileURLs),
    extension: d.extension,
    basedOn: d.basedOn,
    status: d.status,
    category: FilterCodeableConcepts(d.category, acceptedCategories),
    code: d.code,
    subject: d.subject,
    encounter: d.encounter,
    effective: d.effective,
    issued: d.issued,
    specimen: d.specimen,
    result: d.result,
    conclusion: d.conclusion,
    conclusionCode: d.conclusionCode
  }

define function EncounterHospitalization(hospitalization FHIR.Encounter.Hospitalization):
  hospitalization h
  return FHIR.Encounter.Hospitalization{
    origin: h.origin,
    admitSource: h.admitSource,
    reAdmission: h.reAdmission,
    dietPreference: h.dietPreference,
    dischargeDisposition: h.dischargeDisposition
  }

define function EncounterResource(encounter Encounter, profileURLs List&lt;FHIR.canonical&gt;):
  encounter e
  return Encounter{
    id: FHIR.id{value: 'LCR-' + e.id},
    meta: SharedResource.MetaElement(e, profileURLs),
    extension: e.extension,
    identifier: SharedResource.EncounterIdentifier(e.identifier),
    status: e.status,
    statusHistory: SharedResource.EncounterStatusHistory(e.statusHistory),
    class: e.class,
    classHistory: SharedResource.EncounterClassHistory(e.classHistory),
    type: e.type,
    subject: e.subject,
    period: e.period,
    reasonCode: e.reasonCode,
    diagnosis: SharedResource.EncounterDiagnosis(e.diagnosis),
    hospitalization: EncounterHospitalization(e.hospitalization),
    location: SharedResource.EncounterLocation(e.location),
    partOf: e.partOf
  }

define function LocationResource(location Location, profileURLs List&lt;FHIR.canonical&gt;):
  location l
  return Location{
    id: FHIR.id {value: 'LCR-' + l.id},
    meta: SharedResource.MetaElement(l, profileURLs),
    extension: l.extension,
    status: l.status,
    name: l.name,
    alias: l.alias,
    type: l.type,
    physicalType: l.physicalType,
    managingOrganization: l.managingOrganization,
    partOf: l.partOf
  }

define function MedicationRequestRepeat(repeat FHIR.Timing.Repeat):
  repeat r
  return FHIR.Timing.Repeat{
    bounds: r.bounds,
    count: r.count,
    countMax: r.countMax,
    &quot;duration&quot;: r.&quot;duration&quot;,
    durationMax: r.durationMax,
    durationUnit: r.durationUnit,
    frequency: r.frequency,
    frequencyMax: r.frequencyMax,
    period: r.period,
    periodMax: r.periodMax,
    periodUnit: r.periodUnit,
    dayOfWeek: r.dayOfWeek,
    timeOfDay: r.timeOfDay,
    &quot;when&quot;: r.&quot;when&quot;,
    offset: r.offset
  }

define function MedicationRequestTiming(timing FHIR.Timing):
  timing t
  return FHIR.Timing{
    event: t.event,
    repeat: MedicationRequestRepeat(t.repeat),
    code: t.code
  }

define function MedicationRequestDosageInstruction(dosageInstruction List&lt;FHIR.Dosage&gt;):
  dosageInstruction dI
  return FHIR.Dosage{
    text: dI.text,
    patientInstruction: dI.patientInstruction,
    timing: MedicationRequestTiming(dI.timing),
    asNeeded: dI.asNeeded,
    site: dI.site,
    route: dI.route,
    method: dI.method,
    doseAndRate: SharedResource.MedicationRequestDoseAndRate(dI.doseAndRate)
  }

define function MedicationRequestResource(medicationRequest MedicationRequest, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  medicationRequest m
  return MedicationRequest{
    id: FHIR.id {value: 'LCR-' + m.id},
    meta: SharedResource.MetaElement(medicationRequest, profileURLs),
    extension: m.extension,
    status: m.status,
    statusReason: m.statusReason,
    intent: m.intent,
    category: FilterCodeableConcepts(m.category, acceptedCategories),
    priority: m.priority,
    doNotPerform: m.doNotPerform,
    reported: m.reported,
    medication: m.medication,
    subject: m.subject,
    encounter: m.encounter,
    authoredOn: m.authoredOn,
    requester: m.requester,
    recorder: m.recorder,
    reasonCode: m.reasonCode,
    reasonReference: m.reasonReference,
    instantiatesCanonical: m.instantiatesCanonical,
    instantiatesUri: m.instantiatesUri,
    courseOfTherapyType: m.courseOfTherapyType,
    dosageInstruction: SharedResource.MedicationRequestDosageInstruction(m.dosageInstruction)
  }

  define function MedicationAdministrationResource(medicationAdministration MedicationAdministration, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  medicationAdministration m
  return MedicationAdministration{
    id: FHIR.id {value: 'LCR-' + m.id},
    meta: SharedResource.MetaElement(m, profileURLs),
    extension: m.extension,
    instantiates: m.instantiates,
    partOf: m.partOf,
    status: m.status,
    statusReason: m.statusReason,
    category: FilterCodeableConcepts({m.category}, acceptedCategories)[0],
    medication: m.medication,
    subject: m.subject,
    context: m.context,
    supportingInformation: m.supportingInformation,
    effective: m.effective,
    performer: SharedResource.MedicationAdministrationPerformer(m.performer),
    reasonCode: m.reasonCode,
    reasonReference: m.reasonReference,
    request: m.request,
    device: m.device,
    note: m.note,
    dosage: SharedResource.MedicationAdministrationDosage(m.dosage),
    eventHistory: m.eventHistory
  }

define function ObservationLabReferenceRange(referenceRange List&lt;FHIR.Observation.ReferenceRange&gt;):
  referenceRange rR
  return FHIR.Observation.ReferenceRange{
    low: rR.low,
    high: rR.high,
    type: rR.type,
    appliesTo: rR.appliesTo,
    age: rR.age
  }

define function ObservationLabCoding(coding List&lt;Coding&gt;):
  coding c
  return Coding{
    system: c.system,
    version: c.version,
    code: c.code,
    display: c.display,
    userSelected: c.userSelected
  }

define function ObservationLabCategory(category List&lt;CodeableConcept&gt;):
  category c
  return CodeableConcept{
    coding: ObservationLabCoding(c.coding),
    text: c.text
  }

define function ObservationLabResource(observation Observation, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  observation o
  return Observation{
    id: FHIR.id {value: 'LCR-' + o.id},
    meta: SharedResource.MetaElement(o, profileURLs),
    extension: o.extension,
    partOf: o.partOf,
    status: o.status,
    category: FilterCodeableConcepts(ObservationLabCategory(o.category), acceptedCategories),
    code: o.code,
    subject: o.subject,
    encounter: o.encounter,
    effective: o.effective,
    issued: o.issued,
    value: o.value,
    dataAbsentReason: o.dataAbsentReason,
    interpretation: o.interpretation,
    bodySite: o.bodySite,
    method: o.method,
    specimen: o.specimen,
    referenceRange: ObservationLabReferenceRange(o.referenceRange),
    hasMember: o.hasMember,
    derivedFrom: o.derivedFrom,
    component: SharedResource.ObservationComponent(o.component)
  }

define function ObservationReferenceRange(referenceRange List&lt;FHIR.Observation.ReferenceRange&gt;):
  referenceRange rR
  return FHIR.Observation.ReferenceRange{
    low: rR.low,
    high: rR.high,
    type: rR.type,
    appliesTo: rR.appliesTo,
    age: rR.age
  }

define function ObservationResource(observation Observation, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  observation o
  return Observation{
    id: FHIR.id {value: 'LCR-' + o.id},
    meta: SharedResource.MetaElement(o, profileURLs),
    extension: o.extension,
    partOf: o.partOf,
    status: o.status,
    category: FilterCodeableConcepts(o.category, acceptedCategories),
    code: o.code,
    subject: o.subject,
    encounter: o.encounter,
    effective: o.effective,
    issued: o.issued,
    value: o.value,
    dataAbsentReason: o.dataAbsentReason,
    interpretation: o.interpretation,
    bodySite: o.bodySite,
    method: o.method,
    specimen: o.specimen,
    referenceRange: ObservationReferenceRange(o.referenceRange),
    hasMember: o.hasMember,
    derivedFrom: o.derivedFrom,
    component: SharedResource.ObservationComponent(o.component)
  }

define function ObservationVitalSignsCoding(coding List&lt;Coding&gt;):
  coding c
  return Coding{
    system: c.system,
    version: c.version,
    code: c.code,
    display: c.display,
    userSelected: c.userSelected
  }

define function ObservationVitalSignsCategory(category List&lt;CodeableConcept&gt;):
  category c
  return CodeableConcept{
    coding: ObservationVitalSignsCoding(c.coding),
    text: c.text
  }

define function ObservationVitalSignsComponent(component List&lt;FHIR.Observation.Component&gt;):
  component c
  return FHIR.Observation.Component{
    code: c.code,
    value: c.value,
    dataAbsentReason: c.dataAbsentReason,
    interpretation: c.interpretation,
    referenceRange: SharedResource.ObservationReferenceRange(c.referenceRange)
  }

define function ObservationVitalSignsReferenceRange(referenceRange List&lt;FHIR.Observation.ReferenceRange&gt;):
  referenceRange rR
  return FHIR.Observation.ReferenceRange{
    low: rR.low,
    high: rR.high,
    type: rR.type,
    appliesTo: rR.appliesTo,
    age: rR.age
  }

define function ObservationVitalSignsResource(observation Observation, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  observation o
  return Observation{
    id: FHIR.id {value: 'LCR-' + o.id},
    meta: SharedResource.MetaElement(o, profileURLs),
    extension: o.extension,
    partOf: o.partOf,
    status: o.status,
    category: FilterCodeableConcepts(ObservationVitalSignsCategory(o.category), acceptedCategories),
    code: o.code,
    subject: o.subject,
    encounter: o.encounter,
    effective: o.effective,
    issued: o.issued,
    value: o.value,
    dataAbsentReason: o.dataAbsentReason,
    interpretation: o.interpretation,
    bodySite: o.bodySite,
    method: o.method,
    specimen: o.specimen,
    referenceRange: ObservationVitalSignsReferenceRange(o.referenceRange),
    hasMember: o.hasMember,
    derivedFrom: o.derivedFrom,
    component: ObservationVitalSignsComponent(o.component)
  }

 define function &quot;GetProcedureExtensions&quot;(domainResource DomainResource):
  domainResource.extension E
    where E.url != 'http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-recorded'
     return E
 
define function ProcedureResource(procedure Procedure, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  procedure p
  return Procedure{
    id: FHIR.id {value: 'LCR-' + p.id},
    meta: SharedResource.MetaElement(p, profileURLs),
    extension: GetProcedureExtensions(p), 
    basedOn: p.basedOn,
    partOf: p.partOf,
    status: p.status,
    category: FilterCodeableConcepts({p.category}, acceptedCategories)[0],
    code: p.code,
    subject: p.subject,
    encounter: p.encounter,
    performed: p.performed,
    location: p.location,
    reasonCode: p.reasonCode,
    reasonReference: p.reasonReference,
    bodySite: p.bodySite
  }

  define function ServiceRequestResource(serviceRequest ServiceRequest, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
  serviceRequest sR
  return ServiceRequest{
    id: FHIR.id {value: 'LCR-' + sR.id},
    meta: SharedResource.MetaElement(sR, profileURLs),
    extension: sR.extension,
    basedOn: sR.basedOn,
    status: sR.status,
    intent: sR.intent,
    category: FilterCodeableConcepts(sR.category, acceptedCategories),
    priority: sR.priority,
    doNotPerform: sR.doNotPerform,
    code: sR.code,
    quantity: sR.quantity,
    subject: sR.subject,
    encounter: sR.encounter,
    occurrence: sR.occurrence,
    asNeeded: sR.asNeeded,
    authoredOn: sR.authoredOn,
    specimen: sR.specimen
  }

  define function SpecimenCollection(collection FHIR.Specimen.Collection):
  collection c
  return FHIR.Specimen.Collection{
    collector: c.collector,
    collected: c.collected,
    quantity: c.quantity,
    bodySite: c.bodySite
  }

  define function SpecimenResource(specimen Specimen, profileURLs List&lt;FHIR.canonical&gt;):
  specimen s
  return Specimen{
    id: FHIR.id {value: 'LCR-' + s.id},
    meta: SharedResource.MetaElement(s, profileURLs),
    extension: s.extension,
    identifier: s.identifier,
    accessionIdentifier: s.accessionIdentifier,
    status: s.status,
    type: s.type,
    subject: s.subject,
    parent: s.parent,
    request: s.request,
    collection: SpecimenCollection(s.collection),
    note: s.note
  }</code></pre></td></tr>
            </table>
          </td>
        </tr>
        
        
        
    </table>
</div>
</div>
  </text>
  <contained>
    <Parameters>
      <id value="options"/>
      <parameter>
        <name value="translatorVersion"/>
        <valueString value="3.11.0"/>
      </parameter>
      <parameter>
        <name value="option"/>
        <valueString value="EnableDateRangeOptimization"/>
      </parameter>
      <parameter>
        <name value="option"/>
        <valueString value="EnableAnnotations"/>
      </parameter>
      <parameter>
        <name value="option"/>
        <valueString value="EnableLocators"/>
      </parameter>
      <parameter>
        <name value="option"/>
        <valueString value="DisableListDemotion"/>
      </parameter>
      <parameter>
        <name value="option"/>
        <valueString value="DisableListPromotion"/>
      </parameter>
      <parameter>
        <name value="analyzeDataRequirements"/>
        <valueBoolean value="false"/>
      </parameter>
      <parameter>
        <name value="collapseDataRequirements"/>
        <valueBoolean value="true"/>
      </parameter>
      <parameter>
        <name value="compatibilityLevel"/>
        <valueString value="1.5"/>
      </parameter>
      <parameter>
        <name value="enableCqlOnly"/>
        <valueBoolean value="false"/>
      </parameter>
      <parameter>
        <name value="errorLevel"/>
        <valueString value="Info"/>
      </parameter>
      <parameter>
        <name value="signatureLevel"/>
        <valueString value="Overloads"/>
      </parameter>
      <parameter>
        <name value="validateUnits"/>
        <valueBoolean value="true"/>
      </parameter>
      <parameter>
        <name value="verifyOnly"/>
        <valueBoolean value="false"/>
      </parameter>
    </Parameters>
  </contained>
  <extension url="http://hl7.org/fhir/StructureDefinition/cqf-cqlOptions">
    <valueReference>
      <reference value="#options"/>
    </valueReference>
  </extension>
  <extension
             url="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-softwaresystem">
    <valueReference>🔗 
      <reference value="Device/cqf-tooling"/>
    </valueReference>
  </extension>
  <url
       value="http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/NHSNAcuteCareHospitalMonthlyInitialPopulation"/>
  <version value="2.0.0-cibuild"/>
  <name value="NHSNAcuteCareHospitalMonthlyInitialPopulation"/>
  <status value="draft"/>
  <type>
    <coding>
      <system value="http://terminology.hl7.org/CodeSystem/library-type"/>
      <code value="logic-library"/>
    </coding>
  </type>
  <date value="2025-11-10T16:09:20+00:00"/>
  <publisher value="CDC National Healthcare Safety Network (NHSN)"/>
  <contact>
    <name value="CDC National Healthcare Safety Network (NHSN)"/>
    <telecom>
      <system value="url"/>
      <value value="http://www.cdc.gov/nhsn"/>
    </telecom>
    <telecom>
      <system value="email"/>
      <value value="nhsn@cdc.gov"/>
    </telecom>
  </contact>
  <jurisdiction>
    <coding>
      <system value="urn:iso:std:iso:3166"/>
      <code value="US"/>
    </coding>
  </jurisdiction>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="FHIR model information"/>
    <resource
              value="http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library FHIRHelpers"/>
    <resource
              value="http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/FHIRHelpers|4.0.2"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library NHSNHelpers"/>
    <resource
              value="http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/NHSNHelpers|0.0.002"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library SharedResource"/>
    <resource
              value="http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library/SharedResourceCreation|0.1.010"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Code system ActCode"/>
    <resource value="http://terminology.hl7.org/CodeSystem/v3-ActCode|9.0.0"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Code system Observation Category"/>
    <resource
              value="http://terminology.hl7.org/CodeSystem/observation-category|1.0.1"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Code system LOINC"/>
    <resource value="http://loinc.org"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Code system V2-0074"/>
    <resource value="http://terminology.hl7.org/CodeSystem/v2-0074|2.5.0"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Code system Condition Category"/>
    <resource
              value="http://terminology.hl7.org/CodeSystem/condition-category|1.0.1"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Code system US Core Condition Category"/>
    <resource
              value="http://hl7.org/fhir/us/core/CodeSystem/condition-category|6.1.0"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Code system Condition Clinical Status"/>
    <resource
              value="http://terminology.hl7.org/CodeSystem/condition-clinical|3.0.0"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Code system SNOMEDCT"/>
    <resource value="http://www.snomed.org/"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display
             value="Value set Inpatient, Emergency, and Observation Locations"/>
    <resource
              value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.265"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Value set Emergency Department Visit"/>
    <resource
              value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Value set Encounter Inpatient"/>
    <resource
              value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Value set Observation Services"/>
    <resource
              value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Value set NHSN Inpatient Encounter Class Codes"/>
    <resource
              value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274"/>
  </relatedArtifact>
  <parameter>
    <name value="Measurement Period"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Period"/>
  </parameter>
  <parameter>
    <name value="Patient"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Patient"/>
  </parameter>
  <parameter>
    <name value="Qualifying Encounters During Measurement Period"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Encounter"/>
  </parameter>
  <parameter>
    <name value="Encounters"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Encounter"/>
  </parameter>
  <parameter>
    <name value="Encounters with Patient Hospital Locations"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Encounter"/>
  </parameter>
  <parameter>
    <name value="Initial Population"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Encounter"/>
  </parameter>
  <parameter>
    <name value="Conditions"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="DiagnosticReports"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="DiagnosticReport"/>
  </parameter>
  <parameter>
    <name value="Observations"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="Get Locations from IP Encounters in Measurement Period"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Location"/>
  </parameter>
  <parameter>
    <name value="SDE Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="SDE Coverage"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Coverage"/>
  </parameter>
  <parameter>
    <name value="SDE Device"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Device"/>
  </parameter>
  <parameter>
    <name value="SDE DiagnosticReport Lab"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="DiagnosticReport"/>
  </parameter>
  <parameter>
    <name value="SDE DiagnosticReport Note"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="DiagnosticReport"/>
  </parameter>
  <parameter>
    <name value="SDE DiagnosticReport Others"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="DiagnosticReport"/>
  </parameter>
  <parameter>
    <name value="SDE Encounter"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Encounter"/>
  </parameter>
  <parameter>
    <name value="SDE IP Encounters"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Encounter"/>
  </parameter>
  <parameter>
    <name value="SDE Location"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Location"/>
  </parameter>
  <parameter>
    <name value="SDE Medication Administration"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="MedicationAdministration"/>
  </parameter>
  <parameter>
    <name value="SDE Medication Request"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="MedicationRequest"/>
  </parameter>
  <parameter>
    <name value="SDE Medication"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Medication"/>
  </parameter>
  <parameter>
    <name value="SDE Observation Lab Category"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="SDE Observation Vital Signs Category"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="SDE Observation Category"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="SDE Procedure"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Procedure"/>
  </parameter>
  <parameter>
    <name value="SDE Specimen"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Specimen"/>
  </parameter>
  <parameter>
    <name value="SDE Service Request"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="ServiceRequest"/>
  </parameter>
  <parameter>
    <name value="SDE Minimal Patient"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Patient"/>
  </parameter>
  <dataRequirement>
    <type value="Patient"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Patient"/>
    <mustSupport value="id"/>
    <mustSupport value="identifier"/>
    <mustSupport value="active"/>
    <mustSupport value="name"/>
    <mustSupport value="telecom"/>
    <mustSupport value="gender"/>
    <mustSupport value="birthDate"/>
    <mustSupport value="deceased"/>
    <mustSupport value="address"/>
    <mustSupport value="maritalStatus"/>
    <mustSupport value="multipleBirth"/>
    <mustSupport value="photo"/>
    <mustSupport value="contact"/>
    <mustSupport value="communication"/>
    <mustSupport value="generalPractitioner"/>
    <mustSupport value="managingOrganization"/>
    <mustSupport value="link"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Encounter"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
    <mustSupport value="type"/>
    <mustSupport value="status"/>
    <mustSupport value="period"/>
    <mustSupport value="location"/>
    <mustSupport value="diagnosis"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="identifier"/>
    <mustSupport value="statusHistory"/>
    <mustSupport value="class"/>
    <mustSupport value="classHistory"/>
    <mustSupport value="serviceType"/>
    <mustSupport value="priority"/>
    <mustSupport value="subject"/>
    <mustSupport value="length"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="reasonReference"/>
    <mustSupport value="account"/>
    <mustSupport value="hospitalization"/>
    <mustSupport value="partOf"/>
    <codeFilter>
      <path value="type"/>
      <valueSet
                value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"/>
    </codeFilter>
  </dataRequirement>
  <dataRequirement>
    <type value="Encounter"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
    <mustSupport value="type"/>
    <mustSupport value="status"/>
    <mustSupport value="period"/>
    <mustSupport value="location"/>
    <mustSupport value="diagnosis"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="identifier"/>
    <mustSupport value="statusHistory"/>
    <mustSupport value="class"/>
    <mustSupport value="classHistory"/>
    <mustSupport value="serviceType"/>
    <mustSupport value="priority"/>
    <mustSupport value="subject"/>
    <mustSupport value="length"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="reasonReference"/>
    <mustSupport value="account"/>
    <mustSupport value="hospitalization"/>
    <mustSupport value="partOf"/>
    <codeFilter>
      <path value="type"/>
      <valueSet
                value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"/>
    </codeFilter>
  </dataRequirement>
  <dataRequirement>
    <type value="Encounter"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
    <mustSupport value="type"/>
    <mustSupport value="status"/>
    <mustSupport value="period"/>
    <mustSupport value="location"/>
    <mustSupport value="diagnosis"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="identifier"/>
    <mustSupport value="statusHistory"/>
    <mustSupport value="class"/>
    <mustSupport value="classHistory"/>
    <mustSupport value="serviceType"/>
    <mustSupport value="priority"/>
    <mustSupport value="subject"/>
    <mustSupport value="length"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="reasonReference"/>
    <mustSupport value="account"/>
    <mustSupport value="hospitalization"/>
    <mustSupport value="partOf"/>
    <codeFilter>
      <path value="type"/>
      <valueSet
                value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143"/>
    </codeFilter>
  </dataRequirement>
  <dataRequirement>
    <type value="Encounter"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
    <mustSupport value="class"/>
    <mustSupport value="status"/>
    <mustSupport value="period"/>
    <mustSupport value="location"/>
    <mustSupport value="diagnosis"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="identifier"/>
    <mustSupport value="statusHistory"/>
    <mustSupport value="classHistory"/>
    <mustSupport value="type"/>
    <mustSupport value="serviceType"/>
    <mustSupport value="priority"/>
    <mustSupport value="subject"/>
    <mustSupport value="length"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="reasonReference"/>
    <mustSupport value="account"/>
    <mustSupport value="hospitalization"/>
    <mustSupport value="partOf"/>
    <codeFilter>
      <path value="class"/>
      <valueSet
                value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274"/>
    </codeFilter>
  </dataRequirement>
  <dataRequirement>
    <type value="Encounter"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
    <mustSupport value="class"/>
    <mustSupport value="status"/>
    <mustSupport value="period"/>
    <mustSupport value="location"/>
    <mustSupport value="diagnosis"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="identifier"/>
    <mustSupport value="statusHistory"/>
    <mustSupport value="classHistory"/>
    <mustSupport value="type"/>
    <mustSupport value="serviceType"/>
    <mustSupport value="priority"/>
    <mustSupport value="subject"/>
    <mustSupport value="length"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="reasonReference"/>
    <mustSupport value="account"/>
    <mustSupport value="hospitalization"/>
    <mustSupport value="partOf"/>
    <codeFilter>
      <path value="class"/>
      <code>
        <system value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
        <code value="EMER"/>
        <display value="emergency"/>
      </code>
    </codeFilter>
  </dataRequirement>
  <dataRequirement>
    <type value="Encounter"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
    <mustSupport value="class"/>
    <mustSupport value="status"/>
    <mustSupport value="period"/>
    <mustSupport value="location"/>
    <mustSupport value="diagnosis"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="identifier"/>
    <mustSupport value="statusHistory"/>
    <mustSupport value="classHistory"/>
    <mustSupport value="type"/>
    <mustSupport value="serviceType"/>
    <mustSupport value="priority"/>
    <mustSupport value="subject"/>
    <mustSupport value="length"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="reasonReference"/>
    <mustSupport value="account"/>
    <mustSupport value="hospitalization"/>
    <mustSupport value="partOf"/>
    <codeFilter>
      <path value="class"/>
      <code>
        <system value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
        <code value="OBSENC"/>
        <display value="observation encounter"/>
      </code>
    </codeFilter>
  </dataRequirement>
  <dataRequirement>
    <type value="Encounter"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
    <mustSupport value="status"/>
    <mustSupport value="period"/>
    <mustSupport value="location"/>
    <mustSupport value="diagnosis"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="identifier"/>
    <mustSupport value="statusHistory"/>
    <mustSupport value="class"/>
    <mustSupport value="classHistory"/>
    <mustSupport value="type"/>
    <mustSupport value="serviceType"/>
    <mustSupport value="priority"/>
    <mustSupport value="subject"/>
    <mustSupport value="length"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="reasonReference"/>
    <mustSupport value="account"/>
    <mustSupport value="hospitalization"/>
    <mustSupport value="partOf"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Location"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Location"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="status"/>
    <mustSupport value="operationalStatus"/>
    <mustSupport value="name"/>
    <mustSupport value="alias"/>
    <mustSupport value="description"/>
    <mustSupport value="mode"/>
    <mustSupport value="type"/>
    <mustSupport value="telecom"/>
    <mustSupport value="address"/>
    <mustSupport value="physicalType"/>
    <mustSupport value="position"/>
    <mustSupport value="managingOrganization"/>
    <mustSupport value="partOf"/>
    <mustSupport value="hoursOfOperation"/>
    <mustSupport value="availabilityExceptions"/>
    <mustSupport value="endpoint"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Condition"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Condition"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="clinicalStatus"/>
    <mustSupport value="verificationStatus"/>
    <mustSupport value="category"/>
    <mustSupport value="severity"/>
    <mustSupport value="code"/>
    <mustSupport value="bodySite"/>
    <mustSupport value="subject"/>
    <mustSupport value="encounter"/>
    <mustSupport value="onset"/>
    <mustSupport value="abatement"/>
    <mustSupport value="recordedDate"/>
    <mustSupport value="stage"/>
    <mustSupport value="evidence"/>
    <mustSupport value="note"/>
    <mustSupport value="encounter.id"/>
  </dataRequirement>
  <dataRequirement>
    <type value="DiagnosticReport"/>
    <profile
             value="http://hl7.org/fhir/StructureDefinition/DiagnosticReport"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="basedOn"/>
    <mustSupport value="status"/>
    <mustSupport value="category"/>
    <mustSupport value="code"/>
    <mustSupport value="subject"/>
    <mustSupport value="encounter"/>
    <mustSupport value="effective"/>
    <mustSupport value="issued"/>
    <mustSupport value="performer"/>
    <mustSupport value="resultsInterpreter"/>
    <mustSupport value="specimen"/>
    <mustSupport value="result"/>
    <mustSupport value="conclusion"/>
    <mustSupport value="conclusionCode"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Observation"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Observation"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="basedOn"/>
    <mustSupport value="partOf"/>
    <mustSupport value="status"/>
    <mustSupport value="category"/>
    <mustSupport value="code"/>
    <mustSupport value="subject"/>
    <mustSupport value="focus"/>
    <mustSupport value="encounter"/>
    <mustSupport value="effective"/>
    <mustSupport value="issued"/>
    <mustSupport value="performer"/>
    <mustSupport value="value"/>
    <mustSupport value="dataAbsentReason"/>
    <mustSupport value="interpretation"/>
    <mustSupport value="note"/>
    <mustSupport value="bodySite"/>
    <mustSupport value="method"/>
    <mustSupport value="specimen"/>
    <mustSupport value="device"/>
    <mustSupport value="referenceRange"/>
    <mustSupport value="hasMember"/>
    <mustSupport value="derivedFrom"/>
    <mustSupport value="component"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Coverage"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Coverage"/>
    <mustSupport value="period"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="status"/>
    <mustSupport value="type"/>
    <mustSupport value="beneficiary"/>
    <mustSupport value="payor"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Device"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Device"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="definition"/>
    <mustSupport value="udiCarrier"/>
    <mustSupport value="status"/>
    <mustSupport value="statusReason"/>
    <mustSupport value="distinctIdentifier"/>
    <mustSupport value="manufacturer"/>
    <mustSupport value="manufactureDate"/>
    <mustSupport value="expirationDate"/>
    <mustSupport value="lotNumber"/>
    <mustSupport value="serialNumber"/>
    <mustSupport value="deviceName"/>
    <mustSupport value="modelNumber"/>
    <mustSupport value="partNumber"/>
    <mustSupport value="type"/>
    <mustSupport value="specialization"/>
    <mustSupport value="version"/>
    <mustSupport value="property"/>
    <mustSupport value="patient"/>
    <mustSupport value="owner"/>
    <mustSupport value="contact"/>
    <mustSupport value="location"/>
    <mustSupport value="url"/>
    <mustSupport value="note"/>
    <mustSupport value="safety"/>
    <mustSupport value="parent"/>
  </dataRequirement>
  <dataRequirement>
    <type value="MedicationAdministration"/>
    <profile
             value="http://hl7.org/fhir/StructureDefinition/MedicationAdministration"/>
    <mustSupport value="effective"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="instantiates"/>
    <mustSupport value="partOf"/>
    <mustSupport value="status"/>
    <mustSupport value="statusReason"/>
    <mustSupport value="category"/>
    <mustSupport value="medication"/>
    <mustSupport value="subject"/>
    <mustSupport value="context"/>
    <mustSupport value="supportingInformation"/>
    <mustSupport value="performer"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="reasonReference"/>
    <mustSupport value="request"/>
    <mustSupport value="device"/>
    <mustSupport value="note"/>
    <mustSupport value="dosage"/>
    <mustSupport value="eventHistory"/>
  </dataRequirement>
  <dataRequirement>
    <type value="MedicationRequest"/>
    <profile
             value="http://hl7.org/fhir/StructureDefinition/MedicationRequest"/>
    <mustSupport value="authoredOn"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="status"/>
    <mustSupport value="statusReason"/>
    <mustSupport value="intent"/>
    <mustSupport value="category"/>
    <mustSupport value="priority"/>
    <mustSupport value="doNotPerform"/>
    <mustSupport value="reported"/>
    <mustSupport value="medication"/>
    <mustSupport value="subject"/>
    <mustSupport value="encounter"/>
    <mustSupport value="requester"/>
    <mustSupport value="recorder"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="reasonReference"/>
    <mustSupport value="instantiatesCanonical"/>
    <mustSupport value="instantiatesUri"/>
    <mustSupport value="courseOfTherapyType"/>
    <mustSupport value="dosageInstruction"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Medication"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Medication"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="code"/>
    <mustSupport value="status"/>
    <mustSupport value="manufacturer"/>
    <mustSupport value="form"/>
    <mustSupport value="amount"/>
    <mustSupport value="ingredient"/>
    <mustSupport value="batch"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Procedure"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Procedure"/>
    <mustSupport value="performed"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="instantiatesCanonical"/>
    <mustSupport value="instantiatesUri"/>
    <mustSupport value="basedOn"/>
    <mustSupport value="partOf"/>
    <mustSupport value="status"/>
    <mustSupport value="statusReason"/>
    <mustSupport value="category"/>
    <mustSupport value="code"/>
    <mustSupport value="subject"/>
    <mustSupport value="encounter"/>
    <mustSupport value="recorder"/>
    <mustSupport value="asserter"/>
    <mustSupport value="performer"/>
    <mustSupport value="location"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="reasonReference"/>
    <mustSupport value="bodySite"/>
    <mustSupport value="outcome"/>
    <mustSupport value="report"/>
    <mustSupport value="complication"/>
    <mustSupport value="complicationDetail"/>
    <mustSupport value="followUp"/>
    <mustSupport value="note"/>
    <mustSupport value="focalDevice"/>
    <mustSupport value="usedReference"/>
    <mustSupport value="usedCode"/>
  </dataRequirement>
  <dataRequirement>
    <type value="Specimen"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Specimen"/>
    <mustSupport value="collection"/>
    <mustSupport value="collection.collected"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="identifier"/>
    <mustSupport value="accessionIdentifier"/>
    <mustSupport value="status"/>
    <mustSupport value="type"/>
    <mustSupport value="subject"/>
    <mustSupport value="receivedTime"/>
    <mustSupport value="parent"/>
    <mustSupport value="request"/>
    <mustSupport value="processing"/>
    <mustSupport value="container"/>
    <mustSupport value="condition"/>
    <mustSupport value="note"/>
  </dataRequirement>
  <dataRequirement>
    <type value="ServiceRequest"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/ServiceRequest"/>
    <mustSupport value="authoredOn"/>
    <mustSupport value="id"/>
    <mustSupport value="extension"/>
    <mustSupport value="instantiatesCanonical"/>
    <mustSupport value="instantiatesUri"/>
    <mustSupport value="basedOn"/>
    <mustSupport value="replaces"/>
    <mustSupport value="requisition"/>
    <mustSupport value="status"/>
    <mustSupport value="intent"/>
    <mustSupport value="category"/>
    <mustSupport value="priority"/>
    <mustSupport value="doNotPerform"/>
    <mustSupport value="code"/>
    <mustSupport value="orderDetail"/>
    <mustSupport value="quantity"/>
    <mustSupport value="subject"/>
    <mustSupport value="encounter"/>
    <mustSupport value="occurrence"/>
    <mustSupport value="asNeeded"/>
    <mustSupport value="requester"/>
    <mustSupport value="performerType"/>
    <mustSupport value="performer"/>
    <mustSupport value="locationCode"/>
    <mustSupport value="locationReference"/>
    <mustSupport value="reasonCode"/>
    <mustSupport value="reasonReference"/>
    <mustSupport value="insurance"/>
    <mustSupport value="supportingInfo"/>
    <mustSupport value="specimen"/>
    <mustSupport value="bodySite"/>
    <mustSupport value="note"/>
    <mustSupport value="patientInstruction"/>
    <mustSupport value="relevantHistory"/>
  </dataRequirement>
  <content>
    <contentType value="text/cql"/>
    <data
          value="bGlicmFyeSBOSFNOQWN1dGVDYXJlSG9zcGl0YWxNb250aGx5SW5pdGlhbFBvcHVsYXRpb24gdmVyc2lvbiAnMi4wLjAtY2lidWlsZCcKCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4yJyBjYWxsZWQgRkhJUkhlbHBlcnMKaW5jbHVkZSBOSFNOSGVscGVycyB2ZXJzaW9uICcwLjAuMDAyJyBjYWxsZWQgTkhTTkhlbHBlcnMKaW5jbHVkZSBTaGFyZWRSZXNvdXJjZUNyZWF0aW9uIHZlcnNpb24gJzAuMS4wMTAnIGNhbGxlZCBTaGFyZWRSZXNvdXJjZQoKY29kZXN5c3RlbSAiQWN0Q29kZSI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL3YzLUFjdENvZGUnCmNvZGVzeXN0ZW0gIk9ic2VydmF0aW9uIENhdGVnb3J5IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vb2JzZXJ2YXRpb24tY2F0ZWdvcnknCmNvZGVzeXN0ZW0gIkxPSU5DIjogJ2h0dHA6Ly9sb2luYy5vcmcnIApjb2Rlc3lzdGVtICJWMi0wMDc0IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vdjItMDA3NCcKY29kZXN5c3RlbSAiQ29uZGl0aW9uIENhdGVnb3J5IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vY29uZGl0aW9uLWNhdGVnb3J5Jwpjb2Rlc3lzdGVtICJVUyBDb3JlIENvbmRpdGlvbiBDYXRlZ29yeSI6ICdodHRwOi8vaGw3Lm9yZy9maGlyL3VzL2NvcmUvQ29kZVN5c3RlbS9jb25kaXRpb24tY2F0ZWdvcnknCmNvZGVzeXN0ZW0gIkNvbmRpdGlvbiBDbGluaWNhbCBTdGF0dXMiOiAnaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS9jb25kaXRpb24tY2xpbmljYWwnCmNvZGVzeXN0ZW0gIlNOT01FRENUIjogJ2h0dHA6Ly9zbm9tZWQuaW5mby9zY3QnCmNvZGVzeXN0ZW0gIk1lZGljYXRpb25SZXF1ZXN0IENhdGVnb3J5IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vbWVkaWNhdGlvbnJlcXVlc3QtY2F0ZWdvcnknCgp2YWx1ZXNldCAiSW5wYXRpZW50LCBFbWVyZ2VuY3ksIGFuZCBPYnNlcnZhdGlvbiBMb2NhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ2LjI2NScKdmFsdWVzZXQgIkVtZXJnZW5jeSBEZXBhcnRtZW50IFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjExNy4xLjcuMS4yOTInCnZhbHVlc2V0ICJFbmNvdW50ZXIgSW5wYXRpZW50IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjY2Ni41LjMwNycKdmFsdWVzZXQgIk9ic2VydmF0aW9uIFNlcnZpY2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTExMS4xNDMnCnZhbHVlc2V0ICJOSFNOIElucGF0aWVudCBFbmNvdW50ZXIgQ2xhc3MgQ29kZXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ2LjI3NCcKCi8vY29kZSBmb3IgT2JzZXJ2YXRpb24gQ2F0ZWdvcnkKY29kZSAibGFib3JhdG9yeSI6ICdsYWJvcmF0b3J5JyBmcm9tICJPYnNlcnZhdGlvbiBDYXRlZ29yeSIgZGlzcGxheSAnTGFib3JhdG9yeScKY29kZSAic29jaWFsLWhpc3RvcnkiOiAnc29jaWFsLWhpc3RvcnknIGZyb20gIk9ic2VydmF0aW9uIENhdGVnb3J5IiBkaXNwbGF5ICdTb2NpYWwgSGlzdG9yeScKY29kZSAidml0YWwtc2lnbnMiOiAndml0YWwtc2lnbnMnIGZyb20gIk9ic2VydmF0aW9uIENhdGVnb3J5IiBkaXNwbGF5ICdWaXRhbCBTaWducycKY29kZSAiaW1hZ2luZyI6ICdpbWFnaW5nJyBmcm9tICJPYnNlcnZhdGlvbiBDYXRlZ29yeSIgZGlzcGxheSAnSW1hZ2luZycKY29kZSAicHJvY2VkdXJlIjogJ3Byb2NlZHVyZScgZnJvbSAiT2JzZXJ2YXRpb24gQ2F0ZWdvcnkiIGRpc3BsYXkgJ1Byb2NlZHVyZScKY29kZSAic3VydmV5IjogJ3N1cnZleScgZnJvbSAiT2JzZXJ2YXRpb24gQ2F0ZWdvcnkiIGRpc3BsYXkgJ1N1cnZleScKCi8vY29kZSBmb3IgQ29uZGl0aW9uIGNhdGVnb3J5Ci8vY29kZSAicHJvYmxlbS1saXN0LWl0ZW0iOiAncHJvYmxlbS1saXN0LWl0ZW0nIGZyb20gIkNvbmRpdGlvbiBDYXRlZ29yeSIgZGlzcGxheSAnUHJvYmxlbSBMaXN0IEl0ZW0nCmNvZGUgImVuY291bnRlci1kaWFnbm9zaXMiOiAnZW5jb3VudGVyLWRpYWdub3NpcycgZnJvbSAiQ29uZGl0aW9uIENhdGVnb3J5IiBkaXNwbGF5ICdFbmNvdW50ZXIgRGlhZ25vc2lzJwovL2NvZGUgImhlYWx0aC1jb25jZXJuIjogJ2hlYWx0aC1jb25jZXJuJyBmcm9tICJVUyBDb3JlIENvbmRpdGlvbiBDYXRlZ29yeSIgZGlzcGxheSAnSGVhbHRoIENvbmNlcm4nCgovL2NvZGUgZm9yIERpYWdub3N0aWMgUmVwb3J0IENhdGVnb3J5CmNvZGUgIkxBQiI6ICdMQUInIGZyb20gIlYyLTAwNzQiIGRpc3BsYXkgJ0xhYm9yYXRvcnknCmNvZGUgIlJhZGlvbG9neSI6ICdMUDI5Njg0LTUnIGZyb20gIkxPSU5DIiBkaXNwbGF5ICdSYWRpb2xvZ3knCmNvZGUgIlBhdGhvbG9neSI6ICdMUDc4MzktNicgZnJvbSAiTE9JTkMiIGRpc3BsYXkgJ1BhdGhvbG9neScKY29kZSAiQ2FyZGlvbG9neSI6ICdMUDI5NzA4LTInIGZyb20gIkxPSU5DIiBkaXNwbGF5ICdDYXJkaW9sb2d5JwoKLy9jb2RlIGZvciBFbWVyZ2VuY3kgRW5jb3VudGVyIENsYXNzCmNvZGUgImVtZXJnZW5jeSI6ICdFTUVSJyBmcm9tICJBY3RDb2RlIiBkaXNwbGF5ICdlbWVyZ2VuY3knCmNvZGUgIm9ic2VydmF0aW9uIGVuY291bnRlciI6ICdPQlNFTkMnIGZyb20gIkFjdENvZGUiIGRpc3BsYXkgJ29ic2VydmF0aW9uIGVuY291bnRlcicKCi8vY29kZSBmb3IgQ29uZGl0aW9uIGNsaW5pY2FsU3RhdHVzCmNvZGUgImFjdGl2ZSI6ICdhY3RpdmUnIGZyb20gIkNvbmRpdGlvbiBDbGluaWNhbCBTdGF0dXMiIGRpc3BsYXkgJ2FjdGl2ZScKCi8vY29kZSBmb3IgUHJvY2VkdXJlIGNhdGVnb3J5CmNvZGUgIlN1cmdpY2FsIHByb2NlZHVyZSI6ICczODc3MTMwMDMnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdTdXJnaWNhbCBwcm9jZWR1cmUnCmNvZGUgIkRpYWdub3N0aWMgcHJvY2VkdXJlIjogJzEwMzY5MzAwNycgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ0RpYWdub3N0aWMgcHJvY2VkdXJlJwoKLy9jb2RlIGZvciBNZWRpY2F0aW9uUmVxdWVzdCBjYXRlZ29yeQpjb2RlICJpbnBhdGllbnQiOiAnaW5wYXRpZW50JyBmcm9tICJNZWRpY2F0aW9uUmVxdWVzdCBDYXRlZ29yeSIgZGlzcGxheSAnSW5wYXRpZW50Jwpjb2RlICJvdXRwYXRpZW50IjogJ291dHBhdGllbnQnIGZyb20gIk1lZGljYXRpb25SZXF1ZXN0IENhdGVnb3J5IiBkaXNwbGF5ICdPdXRwYXRpZW50JwoKLy9jb2RlIGZvciBTZXJ2aWNlUmVxdWVzdCBjYXRlZ29yeSAoYWxzbyB1c2VzIFN1cmdpY2FsIHByb2NlZHVyZSBmcm9tIFByb2NlZHVyZSBjYXRlZ29yaWVzKQpjb2RlICJMYWJvcmF0b3J5IHByb2NlZHVyZSI6ICcxMDgyNTIwMDcnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdMYWJvcmF0b3J5IHByb2NlZHVyZScKY29kZSAiSW1hZ2luZyI6ICczNjM2NzkwMDUnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdJbWFnaW5nJwoKcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIAogICAgZGVmYXVsdCBJbnRlcnZhbFtAMjAyMi0wMS0wMVQwMDowMDowMC4wLCBAMjAyMi0wMS0zMVQyMzo1OTo1OS4wKQoKY29udGV4dCBQYXRpZW50IAoKZGVmaW5lICJRdWFsaWZ5aW5nIEVuY291bnRlcnMgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCI6CiAoIFtFbmNvdW50ZXI6ICJFbmNvdW50ZXIgSW5wYXRpZW50Il0KICB1bmlvbiBbRW5jb3VudGVyOiAiRW1lcmdlbmN5IERlcGFydG1lbnQgVmlzaXQiXQogIHVuaW9uIFtFbmNvdW50ZXI6ICJPYnNlcnZhdGlvbiBTZXJ2aWNlcyJdCiAgdW5pb24gW0VuY291bnRlcjogY2xhc3MgaW4gIk5IU04gSW5wYXRpZW50IEVuY291bnRlciBDbGFzcyBDb2RlcyJdCiAgdW5pb24gW0VuY291bnRlcjogY2xhc3MgfiAiZW1lcmdlbmN5Il0KICB1bmlvbiBbRW5jb3VudGVyOiBjbGFzcyB+ICJvYnNlcnZhdGlvbiBlbmNvdW50ZXIiXSkgUXVhbGlmeWluZ0VuY291bnRlcnMKICB3aGVyZSBRdWFsaWZ5aW5nRW5jb3VudGVycy5zdGF0dXMgaW4geydpbi1wcm9ncmVzcycsICdmaW5pc2hlZCcsICd0cmlhZ2VkJywgJ29ubGVhdmUnLCAnZW50ZXJlZC1pbi1lcnJvcid9CiAgICBhbmQgUXVhbGlmeWluZ0VuY291bnRlcnMucGVyaW9kIG92ZXJsYXBzICJNZWFzdXJlbWVudCBQZXJpb2QiIAoKZGVmaW5lICJFbmNvdW50ZXJzIHdpdGggUGF0aWVudCBIb3NwaXRhbCBMb2NhdGlvbnMiOgogICJFbmNvdW50ZXJzIiBFbmNvdW50ZXJzCiAgd2hlcmUgZXhpc3RzKAogICAgRW5jb3VudGVycy5sb2NhdGlvbiBFbmNvdW50ZXJMb2NhdGlvbgogICAgd2hlcmUgTkhTTkhlbHBlcnMuR2V0TG9jYXRpb24oRW5jb3VudGVyTG9jYXRpb24ubG9jYXRpb24pLnR5cGUgaW4gIklucGF0aWVudCwgRW1lcmdlbmN5LCBhbmQgT2JzZXJ2YXRpb24gTG9jYXRpb25zIgogICAgICBhbmQgRW5jb3VudGVyTG9jYXRpb24ucGVyaW9kIG92ZXJsYXBzIEVuY291bnRlcnMucGVyaW9kCiAgKQogIGFuZCBFbmNvdW50ZXJzLnN0YXR1cyBpbiB7J2luLXByb2dyZXNzJywgJ2ZpbmlzaGVkJywgJ3RyaWFnZWQnLCAnb25sZWF2ZScsICdlbnRlcmVkLWluLWVycm9yJ30KICBhbmQgRW5jb3VudGVycy5wZXJpb2Qgb3ZlcmxhcHMgIk1lYXN1cmVtZW50IFBlcmlvZCIKCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIjoKICAiUXVhbGlmeWluZyBFbmNvdW50ZXJzIER1cmluZyBNZWFzdXJlbWVudCBQZXJpb2QiCiAgdW5pb24gIkVuY291bnRlcnMgd2l0aCBQYXRpZW50IEhvc3BpdGFsIExvY2F0aW9ucyIKCmRlZmluZSAiRW5jb3VudGVycyI6CiAgW0VuY291bnRlcl0KCmRlZmluZSAiQ29uZGl0aW9ucyI6CiAgW0NvbmRpdGlvbl0KCmRlZmluZSAiRGlhZ25vc3RpY1JlcG9ydHMiOgogIFtEaWFnbm9zdGljUmVwb3J0XQoKZGVmaW5lICJPYnNlcnZhdGlvbnMiOgogIFtPYnNlcnZhdGlvbl0KCmRlZmluZSAiR2V0IExvY2F0aW9ucyBmcm9tIElQIEVuY291bnRlcnMgaW4gTWVhc3VyZW1lbnQgUGVyaW9kIjoKICBmbGF0dGVuKCJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgbGV0IGxvY2F0aW9uRWxlbWVudHM6IElQLmxvY2F0aW9uCiAgcmV0dXJuCiAgICBsb2NhdGlvbkVsZW1lbnRzIExFCiAgICBsZXQgbG9jYXRpb25SZWZlcmVuY2U6IExFLmxvY2F0aW9uCiAgICByZXR1cm4gTkhTTkhlbHBlcnMuR2V0TG9jYXRpb24obG9jYXRpb25SZWZlcmVuY2UpKQoKZGVmaW5lICJNZWRpY2F0aW9uIElEcyI6CiAgKCJTREUgTWVkaWNhdGlvbiBSZXF1ZXN0IgogIHVuaW9uICJTREUgTWVkaWNhdGlvbiBBZG1pbmlzdHJhdGlvbiIpIE1lZFJlcU9yQWRtaW4KICB3aGVyZSBNZWRSZXFPckFkbWluLm1lZGljYXRpb24gaXMgRkhJUi5SZWZlcmVuY2UKICAgIGFuZCBleGlzdHMoIkluaXRpYWwgUG9wdWxhdGlvbiIpIC8vTm8gbG9uZ2VyIG5lZWQgdG8gY2hlY2sgZm9yIHRpbWluZyBoZXJlIGJlY2F1c2UgaXQncyBjaGVja2VkIGluIFNERSBNZWRpY2F0aW9uIFJlcXVlc3QvQWRtaW5pc3RyaWF0aW9uCiAgcmV0dXJuIE5IU05IZWxwZXJzLkdldElkKE1lZFJlcU9yQWRtaW4ubWVkaWNhdGlvbi5yZWZlcmVuY2UpCgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy9TdXBwbGVtZW50YWwgRGF0YSBFbGVtZW50Ci8vV2hlbiBGSElSLmNhbm9uaWNhbCB2YWx1ZSBpcyBwcmVzZW50LCBVUyBDb3JlIDMuMS4xIHByb2ZpbGVzIGFyZSB1c2VkCi8vV2hlbiBGSElSLmNhbm9uaWNhbCB2YWx1ZSBpcyBub3QgcHJlc2VudCwgRkhJUiBCYXNlIHByb2ZpbGVzIGFyZSB1c2VkCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkZWZpbmUgIlNERSBDb25kaXRpb24iOgogICJDb25kaXRpb25zIiBDb25kaXRpb25zIAogICAgd2hlcmUgZXhpc3RzKAogICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKLy9DaGVjayBmb3IgUHJvYmxlbSBMaXN0IENvbmRpdGlvbnMgdGhhdCB3ZXJlIHJlY29yZGVkIGJlZm9yZSBvciBkdXJpbmcgSVAgCiAgICAgd2hlcmUgCiAgICAgIChleGlzdHMoSVAuZGlhZ25vc2lzIERpYWdub3NlcwogICAgICAgICAgd2hlcmUgTkhTTkhlbHBlcnMuR2V0SWQoRGlhZ25vc2VzLmNvbmRpdGlvbi5yZWZlcmVuY2UpID0gQ29uZGl0aW9ucy5pZAogICAgICAgICkKICAgICAgICBvciBOSFNOSGVscGVycy5HZXRJZChDb25kaXRpb25zLmVuY291bnRlci5yZWZlcmVuY2UpID0gSVAuaWQKICAgICAgKQogICAgICBhbmQgZXhpc3RzIChDb25kaXRpb25zLmNhdGVnb3J5IGNhdGVnb3JpZXMKICAgICAgICB3aGVyZSBjYXRlZ29yaWVzIH4gImVuY291bnRlci1kaWFnbm9zaXMiCiAgICApCiAgKQogIHJldHVybiBDb25kaXRpb25SZXNvdXJjZShDb25kaXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktY29uZGl0aW9uJ319LAogICB7ImVuY291bnRlci1kaWFnbm9zaXMifSkKCmRlZmluZSAiU0RFIENvdmVyYWdlIjogCglbQ292ZXJhZ2VdIENvdmVyYWdlcwogIHdoZXJlIGV4aXN0cygKICAgICJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgICB3aGVyZSBDb3ZlcmFnZXMucGVyaW9kIG92ZXJsYXBzIElQLnBlcmlvZCkKICByZXR1cm4gQ292ZXJhZ2VSZXNvdXJjZShDb3ZlcmFnZXMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1jb3ZlcmFnZSd9fSkKCmRlZmluZSAiU0RFIERldmljZSI6CiAgW0RldmljZV0gRGV2aWNlcyAKICB3aGVyZSBleGlzdHMoIkluaXRpYWwgUG9wdWxhdGlvbiIpCiAgcmV0dXJuIERldmljZVJlc291cmNlKERldmljZXMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1kZXZpY2UnfX0pCgovL1RoaXMgYmxvY2sgY29sbGVjdHMgYWxsIERpYWdub3N0aWNSZXBvcnQgcmVzb3VyY2VzIHdoaWxlIGFsc28gbWFya2luZyBMYWIgYW5kIE5vdGUgRGlhZ25vc3RpY1JlcG9ydHMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgcHJvZmlsZXMKLy8jU3RhcnQgRGlhZ25vc3RpY1JlcG9ydCBibG9jawpkZWZpbmUgIlNERSBEaWFnbm9zdGljUmVwb3J0IExhYiI6CiAgIkRpYWdub3N0aWNSZXBvcnRzIiBEaWFnbm9zdGljUmVwb3J0cwogIHdoZXJlIChleGlzdHMoRGlhZ25vc3RpY1JlcG9ydHMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAiTEFCIikKICAgIGFuZCBleGlzdHMoCiAgICAgICJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgICAgIHdoZXJlIE5IU05IZWxwZXJzLiJOb3JtYWxpemUgSW50ZXJ2YWwiKERpYWdub3N0aWNSZXBvcnRzLmVmZmVjdGl2ZSkgb3ZlcmxhcHMgSVAucGVyaW9kKSkKICByZXR1cm4gRGlhZ25vc3RpY1JlcG9ydExhYlJlc291cmNlKERpYWdub3N0aWNSZXBvcnRzLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktZGlhZ25vc3RpY3JlcG9ydC1sYWInfX0sCiAgeyJMQUIiLCAiUmFkaW9sb2d5IiwgIlBhdGhvbG9neSIsICJDYXJkaW9sb2d5In0pCiAKZGVmaW5lICJTREUgRGlhZ25vc3RpY1JlcG9ydCBOb3RlIjoKICAiRGlhZ25vc3RpY1JlcG9ydHMiIERpYWdub3N0aWNSZXBvcnRzCiAgd2hlcmUgKChleGlzdHMoRGlhZ25vc3RpY1JlcG9ydHMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAiUmFkaW9sb2d5IikpCiAgICBvciBleGlzdHMoKERpYWdub3N0aWNSZXBvcnRzLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gIlBhdGhvbG9neSIpKQogICAgb3IgZXhpc3RzKChEaWFnbm9zdGljUmVwb3J0cy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJDYXJkaW9sb2d5IikpKQogICAgYW5kIGV4aXN0cygKICAgICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICAgICAgd2hlcmUgTkhTTkhlbHBlcnMuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoRGlhZ25vc3RpY1JlcG9ydHMuZWZmZWN0aXZlKSBvdmVybGFwcyBJUC5wZXJpb2QpCiAgcmV0dXJuIERpYWdub3N0aWNSZXBvcnRSZXNvdXJjZShEaWFnbm9zdGljUmVwb3J0cywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1tb250aGx5LWRpYWdub3N0aWNyZXBvcnQtbm90ZSd9fSwKICB7IlJhZGlvbG9neSIsICJQYXRob2xvZ3kiLCAiQ2FyZGlvbG9neSIsICJMQUIifSkKCmRlZmluZSAiU0RFIERpYWdub3N0aWNSZXBvcnQgT3RoZXJzIjoKICBbRGlhZ25vc3RpY1JlcG9ydF0gRGlhZ25vc3RpY1JlcG9ydHMKICB3aGVyZSBub3QgKChleGlzdHMoRGlhZ25vc3RpY1JlcG9ydHMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAiUmFkaW9sb2d5IikpCiAgICBvciBleGlzdHMoKERpYWdub3N0aWNSZXBvcnRzLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gIlBhdGhvbG9neSIpKQogICAgb3IgZXhpc3RzKChEaWFnbm9zdGljUmVwb3J0cy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJDYXJkaW9sb2d5IikpCiAgICBvciBleGlzdHMoRGlhZ25vc3RpY1JlcG9ydHMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAiTEFCIikpCiAgICBhbmQgZXhpc3RzKCJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgICAgIHdoZXJlIE5IU05IZWxwZXJzLiJOb3JtYWxpemUgSW50ZXJ2YWwiKERpYWdub3N0aWNSZXBvcnRzLmVmZmVjdGl2ZSkgb3ZlcmxhcHMgSVAucGVyaW9kKQogIHJldHVybiBEaWFnbm9zdGljUmVwb3J0UmVzb3VyY2UoRGlhZ25vc3RpY1JlcG9ydHMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1kaWFnbm9zdGljcmVwb3J0J319LAogIHsiUmFkaW9sb2d5IiwgIlBhdGhvbG9neSIsICJDYXJkaW9sb2d5IiwgIkxBQiJ9KQovLyNFbmQgRGlhZ25vc3RpY1JlcG9ydCBibG9jawoKZGVmaW5lICJTREUgRW5jb3VudGVyIjogCiAgIkVuY291bnRlcnMiIEVuY291bnRlcnMKICB3aGVyZSBub3QgQ2hlY2tJUChFbmNvdW50ZXJzKQogIGFuZCBleGlzdHMoCiAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgd2hlcmUgRW5jb3VudGVycy5wZXJpb2Qgb3ZlcmxhcHMgSVAucGVyaW9kKQogIHJldHVybiBFbmNvdW50ZXJSZXNvdXJjZShFbmNvdW50ZXJzLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY29yZS9TdHJ1Y3R1cmVEZWZpbml0aW9uL3VzLWNvcmUtZW5jb3VudGVyJ319KQoKZGVmaW5lICJTREUgSVAgRW5jb3VudGVycyI6CiAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICByZXR1cm4gRW5jb3VudGVyUmVzb3VyY2UoSVAsIAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktZW5jb3VudGVyJ319KQoKZGVmaW5lICJTREUgTG9jYXRpb24iOgogICJHZXQgTG9jYXRpb25zIGZyb20gSVAgRW5jb3VudGVycyBpbiBNZWFzdXJlbWVudCBQZXJpb2QiIExvY2F0aW9ucwogIHdoZXJlIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikKICBhbmQgTG9jYXRpb25zIGlzIG5vdCBudWxsCiAgcmV0dXJuIExvY2F0aW9uUmVzb3VyY2UoTG9jYXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktbG9jYXRpb24nfX0pCiAKZGVmaW5lICJTREUgTWVkaWNhdGlvbiBBZG1pbmlzdHJhdGlvbiI6CiAgW01lZGljYXRpb25BZG1pbmlzdHJhdGlvbl0gTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9ucyAKICB3aGVyZSBleGlzdHMoCiAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgd2hlcmUgTkhTTkhlbHBlcnMuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9ucy5lZmZlY3RpdmUpIG92ZXJsYXBzIElQLnBlcmlvZCkKICByZXR1cm4gTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uUmVzb3VyY2UoTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9ucywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1tb250aGx5LW1lZGljYXRpb25hZG1pbmlzdHJhdGlvbid9fSwKICB7ImlucGF0aWVudCIsICJvdXRwYXRpZW50In0pCiAKZGVmaW5lICJTREUgTWVkaWNhdGlvbiBSZXF1ZXN0IjoKICBbTWVkaWNhdGlvblJlcXVlc3RdIE1lZGljYXRpb25SZXF1ZXN0cyAKICB3aGVyZSBleGlzdHMoCiAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgd2hlcmUgTWVkaWNhdGlvblJlcXVlc3RzLmF1dGhvcmVkT24gZHVyaW5nIElQLnBlcmlvZCkKICByZXR1cm4gTWVkaWNhdGlvblJlcXVlc3RSZXNvdXJjZShNZWRpY2F0aW9uUmVxdWVzdHMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1tZWRpY2F0aW9ucmVxdWVzdCd9fSwKICB7ImlucGF0aWVudCIsICJvdXRwYXRpZW50In0pCiAgCmRlZmluZSAiU0RFIE1lZGljYXRpb24iOgogIFtNZWRpY2F0aW9uXSBNZWRpY2F0aW9ucwogIHdoZXJlIE1lZGljYXRpb25zLmlkIGluICJNZWRpY2F0aW9uIElEcyIKICByZXR1cm4gU2hhcmVkUmVzb3VyY2UuTWVkaWNhdGlvblJlc291cmNlKE1lZGljYXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktbWVkaWNhdGlvbid9fSkKCmRlZmluZSAiU0RFIE9ic2VydmF0aW9uIExhYiBDYXRlZ29yeSI6CiAgIk9ic2VydmF0aW9ucyIgT2JzZXJ2YXRpb25zIAogIHdoZXJlIChleGlzdHMoT2JzZXJ2YXRpb25zLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gImxhYm9yYXRvcnkiKSkKICAgIGFuZCBleGlzdHMoCiAgICAgICJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgICAgIHdoZXJlIE5IU05IZWxwZXJzLiJOb3JtYWxpemUgSW50ZXJ2YWwiKE9ic2VydmF0aW9ucy5lZmZlY3RpdmUpIG92ZXJsYXBzIElQLnBlcmlvZCkKICByZXR1cm4gT2JzZXJ2YXRpb25MYWJSZXNvdXJjZShPYnNlcnZhdGlvbnMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1vYnNlcnZhdGlvbi1sYWInfX0sCiAgeyJpbWFnaW5nIiwgInByb2NlZHVyZSIsICJ2aXRhbC1zaWducyIsICJsYWJvcmF0b3J5In0pCgovL1ZpdGFsIFNpZ25zIE9ic2VydmF0aW9uIGhhcyBpdHMgb3duIHByb2ZpbGUgaW4gRkhJUiBCYXNlCmRlZmluZSAiU0RFIE9ic2VydmF0aW9uIFZpdGFsIFNpZ25zIENhdGVnb3J5IjoKICAiT2JzZXJ2YXRpb25zIiBPYnNlcnZhdGlvbnMgCiAgd2hlcmUgKGV4aXN0cyhPYnNlcnZhdGlvbnMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAidml0YWwtc2lnbnMiKSkKICAgIGFuZCBleGlzdHMoCiAgICAgICJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgICAgIHdoZXJlIE5IU05IZWxwZXJzLiJOb3JtYWxpemUgSW50ZXJ2YWwiKE9ic2VydmF0aW9ucy5lZmZlY3RpdmUpIG92ZXJsYXBzIElQLnBlcmlvZCkKICByZXR1cm4gT2JzZXJ2YXRpb25WaXRhbFNpZ25zUmVzb3VyY2UoT2JzZXJ2YXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktb2JzZXJ2YXRpb24tdml0YWxzJ319LAogIHsiaW1hZ2luZyIsICJwcm9jZWR1cmUiLCAidml0YWwtc2lnbnMiLCAibGFib3JhdG9yeSJ9KQoKLy9EZWZhdWx0aW5nIHRvIGJhc2UgRkhJUiBwcm9maWxlIGFzIHRoZXJlIGFyZSBubyBpbmRpdmlkdWFsIHByb2ZpbGVzIGluIFVTIENvcmUgMy4xLjEgdGhhdCBjb3ZlciB0aGVzZSBPYnNlcnZhdGlvbiBjYXRlZ29yaWVzCmRlZmluZSAiU0RFIE9ic2VydmF0aW9uIENhdGVnb3J5IjoKICAiT2JzZXJ2YXRpb25zIiBPYnNlcnZhdGlvbnMgCiAgd2hlcmUgKC8qKGV4aXN0cyhPYnNlcnZhdGlvbnMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAic29jaWFsLWhpc3RvcnkiKSkKICAgIG9yIChleGlzdHMoT2JzZXJ2YXRpb25zLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gInN1cnZleSIpKQogICAgb3IgKi8oZXhpc3RzKE9ic2VydmF0aW9ucy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJpbWFnaW5nIikpCiAgICBvciAoZXhpc3RzKE9ic2VydmF0aW9ucy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJwcm9jZWR1cmUiKSkpCiAgICBhbmQgZXhpc3RzKAogICAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgICB3aGVyZSBOSFNOSGVscGVycy4iTm9ybWFsaXplIEludGVydmFsIihPYnNlcnZhdGlvbnMuZWZmZWN0aXZlKSBvdmVybGFwcyBJUC5wZXJpb2QpCiAgcmV0dXJuIE9ic2VydmF0aW9uUmVzb3VyY2UoT2JzZXJ2YXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktb2JzZXJ2YXRpb24nfX0sCiAgeyJpbWFnaW5nIiwgInByb2NlZHVyZSIsICJ2aXRhbC1zaWducyIsICJsYWJvcmF0b3J5In0pCgpkZWZpbmUgIlNERSBQcm9jZWR1cmUiOgogIFtQcm9jZWR1cmVdIFByb2NlZHVyZXMgCiAgd2hlcmUgZXhpc3RzKAogICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICAgIHdoZXJlIE5IU05IZWxwZXJzLiJOb3JtYWxpemUgSW50ZXJ2YWwiKFByb2NlZHVyZXMucGVyZm9ybWVkKSBvdmVybGFwcyBJUC5wZXJpb2QpCiAgICAgcmV0dXJuIFByb2NlZHVyZVJlc291cmNlKFByb2NlZHVyZXMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1wcm9jZWR1cmUnfX0sCiAgeyJTdXJnaWNhbCBwcm9jZWR1cmUiLCAiRGlhZ25vc3RpYyBwcm9jZWR1cmUifSkKCmRlZmluZSAiU0RFIFNwZWNpbWVuIjoKICBbU3BlY2ltZW5dIFNwZWNpbWVucwogIHdoZXJlIGV4aXN0cygKICAgICJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgICB3aGVyZSBOSFNOSGVscGVycy4iTm9ybWFsaXplIEludGVydmFsIihTcGVjaW1lbnMuY29sbGVjdGlvbi5jb2xsZWN0ZWQpIG92ZXJsYXBzIElQLnBlcmlvZAogICkKICByZXR1cm4gU3BlY2ltZW5SZXNvdXJjZShTcGVjaW1lbnMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1zcGVjaW1lbid9fSkKCmRlZmluZSAiU0RFIFNlcnZpY2UgUmVxdWVzdCI6CiAgW1NlcnZpY2VSZXF1ZXN0XSBTZXJ2aWNlUmVxdWVzdHMKICB3aGVyZSBleGlzdHMoIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICAgIHdoZXJlIFNlcnZpY2VSZXF1ZXN0cy5hdXRob3JlZE9uIGR1cmluZyBJUC5wZXJpb2QpCiAgcmV0dXJuIFNlcnZpY2VSZXF1ZXN0UmVzb3VyY2UoU2VydmljZVJlcXVlc3RzLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktc2VydmljZXJlcXVlc3QnfX0sCiAgeyJMYWJvcmF0b3J5IHByb2NlZHVyZSIsICJTdXJnaWNhbCBwcm9jZWR1cmUiLCAiSW1hZ2luZyJ9KQoKZGVmaW5lICJTREUgTWluaW1hbCBQYXRpZW50IjoKICBQYXRpZW50IHAKICByZXR1cm4gU2hhcmVkUmVzb3VyY2UuUGF0aWVudFJlc291cmNlKHAsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9jcm9zcy1tZWFzdXJlLXBhdGllbnQnfX0pCgovLwovL0Z1bmN0aW9ucwovLwpkZWZpbmUgZnVuY3Rpb24gIkNoZWNrSVAiKGVuY291bnRlciBFbmNvdW50ZXIpOgogIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogIHdoZXJlIGVuY291bnRlci5pZCA9IElQLmlkKQoKZGVmaW5lIGZ1bmN0aW9uICJHZXRNZWRpY2F0aW9uRnJvbSIoY2hvaWNlIENob2ljZTxGSElSLkNvZGVhYmxlQ29uY2VwdCwgRkhJUi5SZWZlcmVuY2U+KToKICBjYXNlCiAgICB3aGVuIGNob2ljZSBpcyBGSElSLlJlZmVyZW5jZSB0aGVuCiAgICAgIEdldE1lZGljYXRpb24oY2hvaWNlIGFzIEZISVIuUmVmZXJlbmNlKQogICAgZWxzZQogICAgICBudWxsCiAgZW5kCgpkZWZpbmUgZnVuY3Rpb24gIkdldE1lZGljYXRpb24iKHJlZmVyZW5jZSBSZWZlcmVuY2UpOgogIHNpbmdsZXRvbiBmcm9tICgKICAgIFtNZWRpY2F0aW9uXSBNZWRpY2F0aW9ucwogICAgd2hlcmUgTWVkaWNhdGlvbnMuaWQgPSBOSFNOSGVscGVycy5HZXRJZChyZWZlcmVuY2UucmVmZXJlbmNlKQogICkKCmRlZmluZSBmdW5jdGlvbiAiR2V0Q29uZGl0aW9uIihyZWZlcmVuY2UgUmVmZXJlbmNlKToKICBzaW5nbGV0b24gZnJvbSAoCiAgICAiQ29uZGl0aW9ucyIgQ29uZGl0aW9ucwogICAgd2hlcmUgQ29uZGl0aW9ucy5pZCA9IE5IU05IZWxwZXJzLkdldElkKHJlZmVyZW5jZS5yZWZlcmVuY2UpCiAgKQoKZGVmaW5lIGZ1bmN0aW9uICJHZXRFbmNvdW50ZXIiKHJlZmVyZW5jZSBSZWZlcmVuY2UpOgogIHNpbmdsZXRvbiBmcm9tICgKICAgICJFbmNvdW50ZXJzIiBFbmNvdW50ZXJzCiAgICB3aGVyZSBFbmNvdW50ZXJzLmlkID0gTkhTTkhlbHBlcnMuR2V0SWQocmVmZXJlbmNlLnJlZmVyZW5jZSkKICApCgpkZWZpbmUgZnVuY3Rpb24gUmVtb3ZlVW5hY2NlcHRlZChjb2RlcyBMaXN0PEZISVIuQ29kZWFibGVDb25jZXB0PiwgYWNjZXB0ZWQgTGlzdDxTeXN0ZW0uQ29kZT4pOgogIGNvZGVzIGMKICB3aGVyZSBleGlzdHMoCiAgICBhY2NlcHRlZCBhCiAgICB3aGVyZSBjIH4gYQogICkKCmRlZmluZSBmdW5jdGlvbiBGaWx0ZXJDb2RlYWJsZUNvbmNlcHRzKGNvZGVzIExpc3Q8RkhJUi5Db2RlYWJsZUNvbmNlcHQ+LCBhY2NlcHRlZCBMaXN0PFN5c3RlbS5Db2RlPik6CiAgaWYgQ291bnQoYWNjZXB0ZWQpID4gMAogICAgdGhlbiBSZW1vdmVVbmFjY2VwdGVkKGNvZGVzLCBhY2NlcHRlZCkKICBlbHNlIGNvZGVzICAgIAoKLy8KLy9NZWFzdXJlIFNwZWNpZmljIFJlc291cmNlIENyZWF0aW9uIEZ1bmN0aW9ucwovLwoKZGVmaW5lIGZ1bmN0aW9uIENvbmRpdGlvblJlc291cmNlKGNvbmRpdGlvbiBDb25kaXRpb24sIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+LCBhY2NlcHRlZENhdGVnb3JpZXMgTGlzdDxTeXN0ZW0uQ29kZT4pOgogIGNvbmRpdGlvbiBjCiAgcmV0dXJuIENvbmRpdGlvbnsKICAgIGlkOiBGSElSLmlkIHt2YWx1ZTogJ0xDUi0nICsgYy5pZH0sCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChjLCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IGMuZXh0ZW5zaW9uLAogICAgY2xpbmljYWxTdGF0dXM6IGMuY2xpbmljYWxTdGF0dXMsCiAgICB2ZXJpZmljYXRpb25TdGF0dXM6IGMudmVyaWZpY2F0aW9uU3RhdHVzLAogICAgY2F0ZWdvcnk6IEZpbHRlckNvZGVhYmxlQ29uY2VwdHMoYy5jYXRlZ29yeSwgYWNjZXB0ZWRDYXRlZ29yaWVzKSwKICAgIGNvZGU6IGMuY29kZSwKICAgIHN1YmplY3Q6IGMuc3ViamVjdCwKICAgIGVuY291bnRlcjogYy5lbmNvdW50ZXIsCiAgICBvbnNldDogYy5vbnNldCwKICAgIGFiYXRlbWVudDogYy5hYmF0ZW1lbnQsCiAgICByZWNvcmRlZERhdGU6IGMucmVjb3JkZWREYXRlCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIENvdmVyYWdlUmVzb3VyY2UoY292ZXJhZ2UgQ292ZXJhZ2UsIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+KToKICBjb3ZlcmFnZSBjCiAgcmV0dXJuIENvdmVyYWdlewogICAgaWQ6IEZISVIuaWR7dmFsdWU6ICdMQ1ItJyArIGMuaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQoYywgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBjLmV4dGVuc2lvbiwKICAgIHN0YXR1czogYy5zdGF0dXMsCiAgICB0eXBlOiBjLnR5cGUsCiAgICBiZW5lZmljaWFyeTogYy5iZW5lZmljaWFyeSwKICAgIHBlcmlvZDogYy5wZXJpb2QsCiAgICBwYXlvcjogYy5wYXlvcgogIH0KCmRlZmluZSBmdW5jdGlvbiBEZXZpY2VSZXNvdXJjZShkZXZpY2UgRGV2aWNlLCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPik6CiAgZGV2aWNlIGQKICByZXR1cm4gRGV2aWNlewogICAgaWQ6IEZISVIuaWR7dmFsdWU6ICdMQ1ItJyArIGQuaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQoZCwgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBkLmV4dGVuc2lvbiwKICAgIHN0YXR1czogZC5zdGF0dXMsCiAgICBleHBpcmF0aW9uRGF0ZTogZC5leHBpcmF0aW9uRGF0ZSwKICAgIGxvdE51bWJlcjogZC5sb3ROdW1iZXIsCiAgICBzZXJpYWxOdW1iZXI6IGQuc2VyaWFsTnVtYmVyLAogICAgbW9kZWxOdW1iZXI6IGQubW9kZWxOdW1iZXIsCiAgICBwYXJ0TnVtYmVyOiBkLnBhcnROdW1iZXIsCiAgICB0eXBlOiBkLnR5cGUsCiAgICBwYXRpZW50OiBkLnBhdGllbnQsCiAgICBwYXJlbnQ6IGQucGFyZW50CiAgfQoKZGVmaW5lIGZ1bmN0aW9uIERpYWdub3N0aWNSZXBvcnRDb2RpbmcoY29kaW5nIExpc3Q8Q29kaW5nPik6CiAgY29kaW5nIGMKICByZXR1cm4gQ29kaW5newogICAgc3lzdGVtOiBjLnN5c3RlbSwKICAgIHZlcnNpb246IGMudmVyc2lvbiwKICAgIGNvZGU6IGMuY29kZSwKICAgIGRpc3BsYXk6IGMuZGlzcGxheQogIH0KCmRlZmluZSBmdW5jdGlvbiBEaWFnbm9zdGljUmVwb3J0Q2F0ZWdvcnkoY2F0ZWdvcnkgTGlzdDxDb2RlYWJsZUNvbmNlcHQ+KToKICBjYXRlZ29yeSBjCiAgcmV0dXJuIENvZGVhYmxlQ29uY2VwdHsKICAgIGNvZGluZzogRGlhZ25vc3RpY1JlcG9ydENvZGluZyhjLmNvZGluZykKICB9CgpkZWZpbmUgZnVuY3Rpb24gRGlhZ25vc3RpY1JlcG9ydExhYlJlc291cmNlKGRpYWdub3N0aWNSZXBvcnQgRGlhZ25vc3RpY1JlcG9ydCwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4sIGFjY2VwdGVkQ2F0ZWdvcmllcyBMaXN0PFN5c3RlbS5Db2RlPik6CiAgZGlhZ25vc3RpY1JlcG9ydCBkCiAgcmV0dXJuIERpYWdub3N0aWNSZXBvcnR7CiAgICBpZDogRkhJUi5pZHt2YWx1ZTogJ0xDUi0nICsgZC5pZH0sCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChkLCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IGQuZXh0ZW5zaW9uLAogICAgYmFzZWRPbjogZC5iYXNlZE9uLAogICAgc3RhdHVzOiBkLnN0YXR1cywKICAgIGNhdGVnb3J5OiBGaWx0ZXJDb2RlYWJsZUNvbmNlcHRzKERpYWdub3N0aWNSZXBvcnRDYXRlZ29yeShkLmNhdGVnb3J5KSwgYWNjZXB0ZWRDYXRlZ29yaWVzKSwKICAgIGNvZGU6IGQuY29kZSwKICAgIHN1YmplY3Q6IGQuc3ViamVjdCwKICAgIGVuY291bnRlcjogZC5lbmNvdW50ZXIsCiAgICBlZmZlY3RpdmU6IGQuZWZmZWN0aXZlLAogICAgaXNzdWVkOiBkLmlzc3VlZCwKICAgIHNwZWNpbWVuOiBkLnNwZWNpbWVuLAogICAgcmVzdWx0OiBkLnJlc3VsdCwKICAgIGNvbmNsdXNpb246IGQuY29uY2x1c2lvbiwKICAgIGNvbmNsdXNpb25Db2RlOiBkLmNvbmNsdXNpb25Db2RlCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIERpYWdub3N0aWNSZXBvcnRSZXNvdXJjZShkaWFnbm9zdGljUmVwb3J0IERpYWdub3N0aWNSZXBvcnQsIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+LCBhY2NlcHRlZENhdGVnb3JpZXMgTGlzdDxTeXN0ZW0uQ29kZT4pOgogIGRpYWdub3N0aWNSZXBvcnQgZAogIHJldHVybiBEaWFnbm9zdGljUmVwb3J0ewogICAgaWQ6IEZISVIuaWR7dmFsdWU6ICdMQ1ItJyArIGQuaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQoZCwgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBkLmV4dGVuc2lvbiwKICAgIGJhc2VkT246IGQuYmFzZWRPbiwKICAgIHN0YXR1czogZC5zdGF0dXMsCiAgICBjYXRlZ29yeTogRmlsdGVyQ29kZWFibGVDb25jZXB0cyhkLmNhdGVnb3J5LCBhY2NlcHRlZENhdGVnb3JpZXMpLAogICAgY29kZTogZC5jb2RlLAogICAgc3ViamVjdDogZC5zdWJqZWN0LAogICAgZW5jb3VudGVyOiBkLmVuY291bnRlciwKICAgIGVmZmVjdGl2ZTogZC5lZmZlY3RpdmUsCiAgICBpc3N1ZWQ6IGQuaXNzdWVkLAogICAgc3BlY2ltZW46IGQuc3BlY2ltZW4sCiAgICByZXN1bHQ6IGQucmVzdWx0LAogICAgY29uY2x1c2lvbjogZC5jb25jbHVzaW9uLAogICAgY29uY2x1c2lvbkNvZGU6IGQuY29uY2x1c2lvbkNvZGUKICB9CgpkZWZpbmUgZnVuY3Rpb24gRW5jb3VudGVySG9zcGl0YWxpemF0aW9uKGhvc3BpdGFsaXphdGlvbiBGSElSLkVuY291bnRlci5Ib3NwaXRhbGl6YXRpb24pOgogIGhvc3BpdGFsaXphdGlvbiBoCiAgcmV0dXJuIEZISVIuRW5jb3VudGVyLkhvc3BpdGFsaXphdGlvbnsKICAgIG9yaWdpbjogaC5vcmlnaW4sCiAgICBhZG1pdFNvdXJjZTogaC5hZG1pdFNvdXJjZSwKICAgIHJlQWRtaXNzaW9uOiBoLnJlQWRtaXNzaW9uLAogICAgZGlldFByZWZlcmVuY2U6IGguZGlldFByZWZlcmVuY2UsCiAgICBkaXNjaGFyZ2VEaXNwb3NpdGlvbjogaC5kaXNjaGFyZ2VEaXNwb3NpdGlvbgogIH0KCmRlZmluZSBmdW5jdGlvbiBFbmNvdW50ZXJSZXNvdXJjZShlbmNvdW50ZXIgRW5jb3VudGVyLCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPik6CiAgZW5jb3VudGVyIGUKICByZXR1cm4gRW5jb3VudGVyewogICAgaWQ6IEZISVIuaWR7dmFsdWU6ICdMQ1ItJyArIGUuaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQoZSwgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBlLmV4dGVuc2lvbiwKICAgIGlkZW50aWZpZXI6IFNoYXJlZFJlc291cmNlLkVuY291bnRlcklkZW50aWZpZXIoZS5pZGVudGlmaWVyKSwKICAgIHN0YXR1czogZS5zdGF0dXMsCiAgICBzdGF0dXNIaXN0b3J5OiBTaGFyZWRSZXNvdXJjZS5FbmNvdW50ZXJTdGF0dXNIaXN0b3J5KGUuc3RhdHVzSGlzdG9yeSksCiAgICBjbGFzczogZS5jbGFzcywKICAgIGNsYXNzSGlzdG9yeTogU2hhcmVkUmVzb3VyY2UuRW5jb3VudGVyQ2xhc3NIaXN0b3J5KGUuY2xhc3NIaXN0b3J5KSwKICAgIHR5cGU6IGUudHlwZSwKICAgIHN1YmplY3Q6IGUuc3ViamVjdCwKICAgIHBlcmlvZDogZS5wZXJpb2QsCiAgICByZWFzb25Db2RlOiBlLnJlYXNvbkNvZGUsCiAgICBkaWFnbm9zaXM6IFNoYXJlZFJlc291cmNlLkVuY291bnRlckRpYWdub3NpcyhlLmRpYWdub3NpcyksCiAgICBob3NwaXRhbGl6YXRpb246IEVuY291bnRlckhvc3BpdGFsaXphdGlvbihlLmhvc3BpdGFsaXphdGlvbiksCiAgICBsb2NhdGlvbjogU2hhcmVkUmVzb3VyY2UuRW5jb3VudGVyTG9jYXRpb24oZS5sb2NhdGlvbiksCiAgICBwYXJ0T2Y6IGUucGFydE9mCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIExvY2F0aW9uUmVzb3VyY2UobG9jYXRpb24gTG9jYXRpb24sIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+KToKICBsb2NhdGlvbiBsCiAgcmV0dXJuIExvY2F0aW9uewogICAgaWQ6IEZISVIuaWQge3ZhbHVlOiAnTENSLScgKyBsLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KGwsIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogbC5leHRlbnNpb24sCiAgICBzdGF0dXM6IGwuc3RhdHVzLAogICAgbmFtZTogbC5uYW1lLAogICAgYWxpYXM6IGwuYWxpYXMsCiAgICB0eXBlOiBsLnR5cGUsCiAgICBwaHlzaWNhbFR5cGU6IGwucGh5c2ljYWxUeXBlLAogICAgbWFuYWdpbmdPcmdhbml6YXRpb246IGwubWFuYWdpbmdPcmdhbml6YXRpb24sCiAgICBwYXJ0T2Y6IGwucGFydE9mCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIE1lZGljYXRpb25SZXF1ZXN0UmVwZWF0KHJlcGVhdCBGSElSLlRpbWluZy5SZXBlYXQpOgogIHJlcGVhdCByCiAgcmV0dXJuIEZISVIuVGltaW5nLlJlcGVhdHsKICAgIGJvdW5kczogci5ib3VuZHMsCiAgICBjb3VudDogci5jb3VudCwKICAgIGNvdW50TWF4OiByLmNvdW50TWF4LAogICAgImR1cmF0aW9uIjogci4iZHVyYXRpb24iLAogICAgZHVyYXRpb25NYXg6IHIuZHVyYXRpb25NYXgsCiAgICBkdXJhdGlvblVuaXQ6IHIuZHVyYXRpb25Vbml0LAogICAgZnJlcXVlbmN5OiByLmZyZXF1ZW5jeSwKICAgIGZyZXF1ZW5jeU1heDogci5mcmVxdWVuY3lNYXgsCiAgICBwZXJpb2Q6IHIucGVyaW9kLAogICAgcGVyaW9kTWF4OiByLnBlcmlvZE1heCwKICAgIHBlcmlvZFVuaXQ6IHIucGVyaW9kVW5pdCwKICAgIGRheU9mV2Vlazogci5kYXlPZldlZWssCiAgICB0aW1lT2ZEYXk6IHIudGltZU9mRGF5LAogICAgIndoZW4iOiByLiJ3aGVuIiwKICAgIG9mZnNldDogci5vZmZzZXQKICB9CgpkZWZpbmUgZnVuY3Rpb24gTWVkaWNhdGlvblJlcXVlc3RUaW1pbmcodGltaW5nIEZISVIuVGltaW5nKToKICB0aW1pbmcgdAogIHJldHVybiBGSElSLlRpbWluZ3sKICAgIGV2ZW50OiB0LmV2ZW50LAogICAgcmVwZWF0OiBNZWRpY2F0aW9uUmVxdWVzdFJlcGVhdCh0LnJlcGVhdCksCiAgICBjb2RlOiB0LmNvZGUKICB9CgpkZWZpbmUgZnVuY3Rpb24gTWVkaWNhdGlvblJlcXVlc3REb3NhZ2VJbnN0cnVjdGlvbihkb3NhZ2VJbnN0cnVjdGlvbiBMaXN0PEZISVIuRG9zYWdlPik6CiAgZG9zYWdlSW5zdHJ1Y3Rpb24gZEkKICByZXR1cm4gRkhJUi5Eb3NhZ2V7CiAgICB0ZXh0OiBkSS50ZXh0LAogICAgcGF0aWVudEluc3RydWN0aW9uOiBkSS5wYXRpZW50SW5zdHJ1Y3Rpb24sCiAgICB0aW1pbmc6IE1lZGljYXRpb25SZXF1ZXN0VGltaW5nKGRJLnRpbWluZyksCiAgICBhc05lZWRlZDogZEkuYXNOZWVkZWQsCiAgICBzaXRlOiBkSS5zaXRlLAogICAgcm91dGU6IGRJLnJvdXRlLAogICAgbWV0aG9kOiBkSS5tZXRob2QsCiAgICBkb3NlQW5kUmF0ZTogU2hhcmVkUmVzb3VyY2UuTWVkaWNhdGlvblJlcXVlc3REb3NlQW5kUmF0ZShkSS5kb3NlQW5kUmF0ZSkKICB9CgpkZWZpbmUgZnVuY3Rpb24gTWVkaWNhdGlvblJlcXVlc3RSZXNvdXJjZShtZWRpY2F0aW9uUmVxdWVzdCBNZWRpY2F0aW9uUmVxdWVzdCwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4sIGFjY2VwdGVkQ2F0ZWdvcmllcyBMaXN0PFN5c3RlbS5Db2RlPik6CiAgbWVkaWNhdGlvblJlcXVlc3QgbQogIHJldHVybiBNZWRpY2F0aW9uUmVxdWVzdHsKICAgIGlkOiBGSElSLmlkIHt2YWx1ZTogJ0xDUi0nICsgbS5pZH0sCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChtZWRpY2F0aW9uUmVxdWVzdCwgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBtLmV4dGVuc2lvbiwKICAgIHN0YXR1czogbS5zdGF0dXMsCiAgICBzdGF0dXNSZWFzb246IG0uc3RhdHVzUmVhc29uLAogICAgaW50ZW50OiBtLmludGVudCwKICAgIGNhdGVnb3J5OiBGaWx0ZXJDb2RlYWJsZUNvbmNlcHRzKG0uY2F0ZWdvcnksIGFjY2VwdGVkQ2F0ZWdvcmllcyksCiAgICBwcmlvcml0eTogbS5wcmlvcml0eSwKICAgIGRvTm90UGVyZm9ybTogbS5kb05vdFBlcmZvcm0sCiAgICByZXBvcnRlZDogbS5yZXBvcnRlZCwKICAgIG1lZGljYXRpb246IG0ubWVkaWNhdGlvbiwKICAgIHN1YmplY3Q6IG0uc3ViamVjdCwKICAgIGVuY291bnRlcjogbS5lbmNvdW50ZXIsCiAgICBhdXRob3JlZE9uOiBtLmF1dGhvcmVkT24sCiAgICByZXF1ZXN0ZXI6IG0ucmVxdWVzdGVyLAogICAgcmVjb3JkZXI6IG0ucmVjb3JkZXIsCiAgICByZWFzb25Db2RlOiBtLnJlYXNvbkNvZGUsCiAgICByZWFzb25SZWZlcmVuY2U6IG0ucmVhc29uUmVmZXJlbmNlLAogICAgaW5zdGFudGlhdGVzQ2Fub25pY2FsOiBtLmluc3RhbnRpYXRlc0Nhbm9uaWNhbCwKICAgIGluc3RhbnRpYXRlc1VyaTogbS5pbnN0YW50aWF0ZXNVcmksCiAgICBjb3Vyc2VPZlRoZXJhcHlUeXBlOiBtLmNvdXJzZU9mVGhlcmFweVR5cGUsCiAgICBkb3NhZ2VJbnN0cnVjdGlvbjogU2hhcmVkUmVzb3VyY2UuTWVkaWNhdGlvblJlcXVlc3REb3NhZ2VJbnN0cnVjdGlvbihtLmRvc2FnZUluc3RydWN0aW9uKQogIH0KCiAgZGVmaW5lIGZ1bmN0aW9uIE1lZGljYXRpb25BZG1pbmlzdHJhdGlvblJlc291cmNlKG1lZGljYXRpb25BZG1pbmlzdHJhdGlvbiBNZWRpY2F0aW9uQWRtaW5pc3RyYXRpb24sIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+LCBhY2NlcHRlZENhdGVnb3JpZXMgTGlzdDxTeXN0ZW0uQ29kZT4pOgogIG1lZGljYXRpb25BZG1pbmlzdHJhdGlvbiBtCiAgcmV0dXJuIE1lZGljYXRpb25BZG1pbmlzdHJhdGlvbnsKICAgIGlkOiBGSElSLmlkIHt2YWx1ZTogJ0xDUi0nICsgbS5pZH0sCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChtLCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IG0uZXh0ZW5zaW9uLAogICAgaW5zdGFudGlhdGVzOiBtLmluc3RhbnRpYXRlcywKICAgIHBhcnRPZjogbS5wYXJ0T2YsCiAgICBzdGF0dXM6IG0uc3RhdHVzLAogICAgc3RhdHVzUmVhc29uOiBtLnN0YXR1c1JlYXNvbiwKICAgIGNhdGVnb3J5OiBGaWx0ZXJDb2RlYWJsZUNvbmNlcHRzKHttLmNhdGVnb3J5fSwgYWNjZXB0ZWRDYXRlZ29yaWVzKVswXSwKICAgIG1lZGljYXRpb246IG0ubWVkaWNhdGlvbiwKICAgIHN1YmplY3Q6IG0uc3ViamVjdCwKICAgIGNvbnRleHQ6IG0uY29udGV4dCwKICAgIHN1cHBvcnRpbmdJbmZvcm1hdGlvbjogbS5zdXBwb3J0aW5nSW5mb3JtYXRpb24sCiAgICBlZmZlY3RpdmU6IG0uZWZmZWN0aXZlLAogICAgcGVyZm9ybWVyOiBTaGFyZWRSZXNvdXJjZS5NZWRpY2F0aW9uQWRtaW5pc3RyYXRpb25QZXJmb3JtZXIobS5wZXJmb3JtZXIpLAogICAgcmVhc29uQ29kZTogbS5yZWFzb25Db2RlLAogICAgcmVhc29uUmVmZXJlbmNlOiBtLnJlYXNvblJlZmVyZW5jZSwKICAgIHJlcXVlc3Q6IG0ucmVxdWVzdCwKICAgIGRldmljZTogbS5kZXZpY2UsCiAgICBub3RlOiBtLm5vdGUsCiAgICBkb3NhZ2U6IFNoYXJlZFJlc291cmNlLk1lZGljYXRpb25BZG1pbmlzdHJhdGlvbkRvc2FnZShtLmRvc2FnZSksCiAgICBldmVudEhpc3Rvcnk6IG0uZXZlbnRIaXN0b3J5CiAgfQoKZGVmaW5lIGZ1bmN0aW9uIE9ic2VydmF0aW9uTGFiUmVmZXJlbmNlUmFuZ2UocmVmZXJlbmNlUmFuZ2UgTGlzdDxGSElSLk9ic2VydmF0aW9uLlJlZmVyZW5jZVJhbmdlPik6CiAgcmVmZXJlbmNlUmFuZ2UgclIKICByZXR1cm4gRkhJUi5PYnNlcnZhdGlvbi5SZWZlcmVuY2VSYW5nZXsKICAgIGxvdzogclIubG93LAogICAgaGlnaDogclIuaGlnaCwKICAgIHR5cGU6IHJSLnR5cGUsCiAgICBhcHBsaWVzVG86IHJSLmFwcGxpZXNUbywKICAgIGFnZTogclIuYWdlCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIE9ic2VydmF0aW9uTGFiQ29kaW5nKGNvZGluZyBMaXN0PENvZGluZz4pOgogIGNvZGluZyBjCiAgcmV0dXJuIENvZGluZ3sKICAgIHN5c3RlbTogYy5zeXN0ZW0sCiAgICB2ZXJzaW9uOiBjLnZlcnNpb24sCiAgICBjb2RlOiBjLmNvZGUsCiAgICBkaXNwbGF5OiBjLmRpc3BsYXksCiAgICB1c2VyU2VsZWN0ZWQ6IGMudXNlclNlbGVjdGVkCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIE9ic2VydmF0aW9uTGFiQ2F0ZWdvcnkoY2F0ZWdvcnkgTGlzdDxDb2RlYWJsZUNvbmNlcHQ+KToKICBjYXRlZ29yeSBjCiAgcmV0dXJuIENvZGVhYmxlQ29uY2VwdHsKICAgIGNvZGluZzogT2JzZXJ2YXRpb25MYWJDb2RpbmcoYy5jb2RpbmcpLAogICAgdGV4dDogYy50ZXh0CiAgfQoKZGVmaW5lIGZ1bmN0aW9uIE9ic2VydmF0aW9uTGFiUmVzb3VyY2Uob2JzZXJ2YXRpb24gT2JzZXJ2YXRpb24sIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+LCBhY2NlcHRlZENhdGVnb3JpZXMgTGlzdDxTeXN0ZW0uQ29kZT4pOgogIG9ic2VydmF0aW9uIG8KICByZXR1cm4gT2JzZXJ2YXRpb257CiAgICBpZDogRkhJUi5pZCB7dmFsdWU6ICdMQ1ItJyArIG8uaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQobywgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBvLmV4dGVuc2lvbiwKICAgIHBhcnRPZjogby5wYXJ0T2YsCiAgICBzdGF0dXM6IG8uc3RhdHVzLAogICAgY2F0ZWdvcnk6IEZpbHRlckNvZGVhYmxlQ29uY2VwdHMoT2JzZXJ2YXRpb25MYWJDYXRlZ29yeShvLmNhdGVnb3J5KSwgYWNjZXB0ZWRDYXRlZ29yaWVzKSwKICAgIGNvZGU6IG8uY29kZSwKICAgIHN1YmplY3Q6IG8uc3ViamVjdCwKICAgIGVuY291bnRlcjogby5lbmNvdW50ZXIsCiAgICBlZmZlY3RpdmU6IG8uZWZmZWN0aXZlLAogICAgaXNzdWVkOiBvLmlzc3VlZCwKICAgIHZhbHVlOiBvLnZhbHVlLAogICAgZGF0YUFic2VudFJlYXNvbjogby5kYXRhQWJzZW50UmVhc29uLAogICAgaW50ZXJwcmV0YXRpb246IG8uaW50ZXJwcmV0YXRpb24sCiAgICBib2R5U2l0ZTogby5ib2R5U2l0ZSwKICAgIG1ldGhvZDogby5tZXRob2QsCiAgICBzcGVjaW1lbjogby5zcGVjaW1lbiwKICAgIHJlZmVyZW5jZVJhbmdlOiBPYnNlcnZhdGlvbkxhYlJlZmVyZW5jZVJhbmdlKG8ucmVmZXJlbmNlUmFuZ2UpLAogICAgaGFzTWVtYmVyOiBvLmhhc01lbWJlciwKICAgIGRlcml2ZWRGcm9tOiBvLmRlcml2ZWRGcm9tLAogICAgY29tcG9uZW50OiBTaGFyZWRSZXNvdXJjZS5PYnNlcnZhdGlvbkNvbXBvbmVudChvLmNvbXBvbmVudCkKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25SZWZlcmVuY2VSYW5nZShyZWZlcmVuY2VSYW5nZSBMaXN0PEZISVIuT2JzZXJ2YXRpb24uUmVmZXJlbmNlUmFuZ2U+KToKICByZWZlcmVuY2VSYW5nZSByUgogIHJldHVybiBGSElSLk9ic2VydmF0aW9uLlJlZmVyZW5jZVJhbmdlewogICAgbG93OiByUi5sb3csCiAgICBoaWdoOiByUi5oaWdoLAogICAgdHlwZTogclIudHlwZSwKICAgIGFwcGxpZXNUbzogclIuYXBwbGllc1RvLAogICAgYWdlOiByUi5hZ2UKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25SZXNvdXJjZShvYnNlcnZhdGlvbiBPYnNlcnZhdGlvbiwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4sIGFjY2VwdGVkQ2F0ZWdvcmllcyBMaXN0PFN5c3RlbS5Db2RlPik6CiAgb2JzZXJ2YXRpb24gbwogIHJldHVybiBPYnNlcnZhdGlvbnsKICAgIGlkOiBGSElSLmlkIHt2YWx1ZTogJ0xDUi0nICsgby5pZH0sCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChvLCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IG8uZXh0ZW5zaW9uLAogICAgcGFydE9mOiBvLnBhcnRPZiwKICAgIHN0YXR1czogby5zdGF0dXMsCiAgICBjYXRlZ29yeTogRmlsdGVyQ29kZWFibGVDb25jZXB0cyhvLmNhdGVnb3J5LCBhY2NlcHRlZENhdGVnb3JpZXMpLAogICAgY29kZTogby5jb2RlLAogICAgc3ViamVjdDogby5zdWJqZWN0LAogICAgZW5jb3VudGVyOiBvLmVuY291bnRlciwKICAgIGVmZmVjdGl2ZTogby5lZmZlY3RpdmUsCiAgICBpc3N1ZWQ6IG8uaXNzdWVkLAogICAgdmFsdWU6IG8udmFsdWUsCiAgICBkYXRhQWJzZW50UmVhc29uOiBvLmRhdGFBYnNlbnRSZWFzb24sCiAgICBpbnRlcnByZXRhdGlvbjogby5pbnRlcnByZXRhdGlvbiwKICAgIGJvZHlTaXRlOiBvLmJvZHlTaXRlLAogICAgbWV0aG9kOiBvLm1ldGhvZCwKICAgIHNwZWNpbWVuOiBvLnNwZWNpbWVuLAogICAgcmVmZXJlbmNlUmFuZ2U6IE9ic2VydmF0aW9uUmVmZXJlbmNlUmFuZ2Uoby5yZWZlcmVuY2VSYW5nZSksCiAgICBoYXNNZW1iZXI6IG8uaGFzTWVtYmVyLAogICAgZGVyaXZlZEZyb206IG8uZGVyaXZlZEZyb20sCiAgICBjb21wb25lbnQ6IFNoYXJlZFJlc291cmNlLk9ic2VydmF0aW9uQ29tcG9uZW50KG8uY29tcG9uZW50KQogIH0KCmRlZmluZSBmdW5jdGlvbiBPYnNlcnZhdGlvblZpdGFsU2lnbnNDb2RpbmcoY29kaW5nIExpc3Q8Q29kaW5nPik6CiAgY29kaW5nIGMKICByZXR1cm4gQ29kaW5newogICAgc3lzdGVtOiBjLnN5c3RlbSwKICAgIHZlcnNpb246IGMudmVyc2lvbiwKICAgIGNvZGU6IGMuY29kZSwKICAgIGRpc3BsYXk6IGMuZGlzcGxheSwKICAgIHVzZXJTZWxlY3RlZDogYy51c2VyU2VsZWN0ZWQKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25WaXRhbFNpZ25zQ2F0ZWdvcnkoY2F0ZWdvcnkgTGlzdDxDb2RlYWJsZUNvbmNlcHQ+KToKICBjYXRlZ29yeSBjCiAgcmV0dXJuIENvZGVhYmxlQ29uY2VwdHsKICAgIGNvZGluZzogT2JzZXJ2YXRpb25WaXRhbFNpZ25zQ29kaW5nKGMuY29kaW5nKSwKICAgIHRleHQ6IGMudGV4dAogIH0KCmRlZmluZSBmdW5jdGlvbiBPYnNlcnZhdGlvblZpdGFsU2lnbnNDb21wb25lbnQoY29tcG9uZW50IExpc3Q8RkhJUi5PYnNlcnZhdGlvbi5Db21wb25lbnQ+KToKICBjb21wb25lbnQgYwogIHJldHVybiBGSElSLk9ic2VydmF0aW9uLkNvbXBvbmVudHsKICAgIGNvZGU6IGMuY29kZSwKICAgIHZhbHVlOiBjLnZhbHVlLAogICAgZGF0YUFic2VudFJlYXNvbjogYy5kYXRhQWJzZW50UmVhc29uLAogICAgaW50ZXJwcmV0YXRpb246IGMuaW50ZXJwcmV0YXRpb24sCiAgICByZWZlcmVuY2VSYW5nZTogU2hhcmVkUmVzb3VyY2UuT2JzZXJ2YXRpb25SZWZlcmVuY2VSYW5nZShjLnJlZmVyZW5jZVJhbmdlKQogIH0KCmRlZmluZSBmdW5jdGlvbiBPYnNlcnZhdGlvblZpdGFsU2lnbnNSZWZlcmVuY2VSYW5nZShyZWZlcmVuY2VSYW5nZSBMaXN0PEZISVIuT2JzZXJ2YXRpb24uUmVmZXJlbmNlUmFuZ2U+KToKICByZWZlcmVuY2VSYW5nZSByUgogIHJldHVybiBGSElSLk9ic2VydmF0aW9uLlJlZmVyZW5jZVJhbmdlewogICAgbG93OiByUi5sb3csCiAgICBoaWdoOiByUi5oaWdoLAogICAgdHlwZTogclIudHlwZSwKICAgIGFwcGxpZXNUbzogclIuYXBwbGllc1RvLAogICAgYWdlOiByUi5hZ2UKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25WaXRhbFNpZ25zUmVzb3VyY2Uob2JzZXJ2YXRpb24gT2JzZXJ2YXRpb24sIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+LCBhY2NlcHRlZENhdGVnb3JpZXMgTGlzdDxTeXN0ZW0uQ29kZT4pOgogIG9ic2VydmF0aW9uIG8KICByZXR1cm4gT2JzZXJ2YXRpb257CiAgICBpZDogRkhJUi5pZCB7dmFsdWU6ICdMQ1ItJyArIG8uaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQobywgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBvLmV4dGVuc2lvbiwKICAgIHBhcnRPZjogby5wYXJ0T2YsCiAgICBzdGF0dXM6IG8uc3RhdHVzLAogICAgY2F0ZWdvcnk6IEZpbHRlckNvZGVhYmxlQ29uY2VwdHMoT2JzZXJ2YXRpb25WaXRhbFNpZ25zQ2F0ZWdvcnkoby5jYXRlZ29yeSksIGFjY2VwdGVkQ2F0ZWdvcmllcyksCiAgICBjb2RlOiBvLmNvZGUsCiAgICBzdWJqZWN0OiBvLnN1YmplY3QsCiAgICBlbmNvdW50ZXI6IG8uZW5jb3VudGVyLAogICAgZWZmZWN0aXZlOiBvLmVmZmVjdGl2ZSwKICAgIGlzc3VlZDogby5pc3N1ZWQsCiAgICB2YWx1ZTogby52YWx1ZSwKICAgIGRhdGFBYnNlbnRSZWFzb246IG8uZGF0YUFic2VudFJlYXNvbiwKICAgIGludGVycHJldGF0aW9uOiBvLmludGVycHJldGF0aW9uLAogICAgYm9keVNpdGU6IG8uYm9keVNpdGUsCiAgICBtZXRob2Q6IG8ubWV0aG9kLAogICAgc3BlY2ltZW46IG8uc3BlY2ltZW4sCiAgICByZWZlcmVuY2VSYW5nZTogT2JzZXJ2YXRpb25WaXRhbFNpZ25zUmVmZXJlbmNlUmFuZ2Uoby5yZWZlcmVuY2VSYW5nZSksCiAgICBoYXNNZW1iZXI6IG8uaGFzTWVtYmVyLAogICAgZGVyaXZlZEZyb206IG8uZGVyaXZlZEZyb20sCiAgICBjb21wb25lbnQ6IE9ic2VydmF0aW9uVml0YWxTaWduc0NvbXBvbmVudChvLmNvbXBvbmVudCkKICB9CgogZGVmaW5lIGZ1bmN0aW9uICJHZXRQcm9jZWR1cmVFeHRlbnNpb25zIihkb21haW5SZXNvdXJjZSBEb21haW5SZXNvdXJjZSk6CiAgZG9tYWluUmVzb3VyY2UuZXh0ZW5zaW9uIEUKICAgIHdoZXJlIEUudXJsICE9ICdodHRwOi8vaGw3Lm9yZy9maGlyL3VzL3FpY29yZS9TdHJ1Y3R1cmVEZWZpbml0aW9uL3FpY29yZS1yZWNvcmRlZCcKICAgICByZXR1cm4gRQogCmRlZmluZSBmdW5jdGlvbiBQcm9jZWR1cmVSZXNvdXJjZShwcm9jZWR1cmUgUHJvY2VkdXJlLCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPiwgYWNjZXB0ZWRDYXRlZ29yaWVzIExpc3Q8U3lzdGVtLkNvZGU+KToKICBwcm9jZWR1cmUgcAogIHJldHVybiBQcm9jZWR1cmV7CiAgICBpZDogRkhJUi5pZCB7dmFsdWU6ICdMQ1ItJyArIHAuaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQocCwgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBHZXRQcm9jZWR1cmVFeHRlbnNpb25zKHApLCAKICAgIGJhc2VkT246IHAuYmFzZWRPbiwKICAgIHBhcnRPZjogcC5wYXJ0T2YsCiAgICBzdGF0dXM6IHAuc3RhdHVzLAogICAgY2F0ZWdvcnk6IEZpbHRlckNvZGVhYmxlQ29uY2VwdHMoe3AuY2F0ZWdvcnl9LCBhY2NlcHRlZENhdGVnb3JpZXMpWzBdLAogICAgY29kZTogcC5jb2RlLAogICAgc3ViamVjdDogcC5zdWJqZWN0LAogICAgZW5jb3VudGVyOiBwLmVuY291bnRlciwKICAgIHBlcmZvcm1lZDogcC5wZXJmb3JtZWQsCiAgICBsb2NhdGlvbjogcC5sb2NhdGlvbiwKICAgIHJlYXNvbkNvZGU6IHAucmVhc29uQ29kZSwKICAgIHJlYXNvblJlZmVyZW5jZTogcC5yZWFzb25SZWZlcmVuY2UsCiAgICBib2R5U2l0ZTogcC5ib2R5U2l0ZQogIH0KCiAgZGVmaW5lIGZ1bmN0aW9uIFNlcnZpY2VSZXF1ZXN0UmVzb3VyY2Uoc2VydmljZVJlcXVlc3QgU2VydmljZVJlcXVlc3QsIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+LCBhY2NlcHRlZENhdGVnb3JpZXMgTGlzdDxTeXN0ZW0uQ29kZT4pOgogIHNlcnZpY2VSZXF1ZXN0IHNSCiAgcmV0dXJuIFNlcnZpY2VSZXF1ZXN0ewogICAgaWQ6IEZISVIuaWQge3ZhbHVlOiAnTENSLScgKyBzUi5pZH0sCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChzUiwgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBzUi5leHRlbnNpb24sCiAgICBiYXNlZE9uOiBzUi5iYXNlZE9uLAogICAgc3RhdHVzOiBzUi5zdGF0dXMsCiAgICBpbnRlbnQ6IHNSLmludGVudCwKICAgIGNhdGVnb3J5OiBGaWx0ZXJDb2RlYWJsZUNvbmNlcHRzKHNSLmNhdGVnb3J5LCBhY2NlcHRlZENhdGVnb3JpZXMpLAogICAgcHJpb3JpdHk6IHNSLnByaW9yaXR5LAogICAgZG9Ob3RQZXJmb3JtOiBzUi5kb05vdFBlcmZvcm0sCiAgICBjb2RlOiBzUi5jb2RlLAogICAgcXVhbnRpdHk6IHNSLnF1YW50aXR5LAogICAgc3ViamVjdDogc1Iuc3ViamVjdCwKICAgIGVuY291bnRlcjogc1IuZW5jb3VudGVyLAogICAgb2NjdXJyZW5jZTogc1Iub2NjdXJyZW5jZSwKICAgIGFzTmVlZGVkOiBzUi5hc05lZWRlZCwKICAgIGF1dGhvcmVkT246IHNSLmF1dGhvcmVkT24sCiAgICBzcGVjaW1lbjogc1Iuc3BlY2ltZW4KICB9CgogIGRlZmluZSBmdW5jdGlvbiBTcGVjaW1lbkNvbGxlY3Rpb24oY29sbGVjdGlvbiBGSElSLlNwZWNpbWVuLkNvbGxlY3Rpb24pOgogIGNvbGxlY3Rpb24gYwogIHJldHVybiBGSElSLlNwZWNpbWVuLkNvbGxlY3Rpb257CiAgICBjb2xsZWN0b3I6IGMuY29sbGVjdG9yLAogICAgY29sbGVjdGVkOiBjLmNvbGxlY3RlZCwKICAgIHF1YW50aXR5OiBjLnF1YW50aXR5LAogICAgYm9keVNpdGU6IGMuYm9keVNpdGUKICB9CgogIGRlZmluZSBmdW5jdGlvbiBTcGVjaW1lblJlc291cmNlKHNwZWNpbWVuIFNwZWNpbWVuLCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPik6CiAgc3BlY2ltZW4gcwogIHJldHVybiBTcGVjaW1lbnsKICAgIGlkOiBGSElSLmlkIHt2YWx1ZTogJ0xDUi0nICsgcy5pZH0sCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChzLCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IHMuZXh0ZW5zaW9uLAogICAgaWRlbnRpZmllcjogcy5pZGVudGlmaWVyLAogICAgYWNjZXNzaW9uSWRlbnRpZmllcjogcy5hY2Nlc3Npb25JZGVudGlmaWVyLAogICAgc3RhdHVzOiBzLnN0YXR1cywKICAgIHR5cGU6IHMudHlwZSwKICAgIHN1YmplY3Q6IHMuc3ViamVjdCwKICAgIHBhcmVudDogcy5wYXJlbnQsCiAgICByZXF1ZXN0OiBzLnJlcXVlc3QsCiAgICBjb2xsZWN0aW9uOiBTcGVjaW1lbkNvbGxlY3Rpb24ocy5jb2xsZWN0aW9uKSwKICAgIG5vdGU6IHMubm90ZQogIH0="/>
    <url
         value="http://www.cdc.gov/nhsn/fhirportal/dqm/ig/Library-NHSNAcuteCareHospitalMonthlyInitialPopulation.cql"/>
  </content>
</Library>