WHO Immunization Implementation Guide
1.0.0 - release

WHO Immunization Implementation Guide, published by WHO. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/smart-immunizations/tree/132/merge and changes regularly. See the Directory of published versions

: IMMZEncounterElements - XML Representation

Draft as of 2026-03-31

Raw xml | Download


<Library xmlns="http://hl7.org/fhir">
  <id value="IMMZEncounterElements"/>
  <meta>
    <profile
             value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"/>
    <profile
             value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"/>
    <profile
             value="http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"/>
    <profile
             value="http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"/>
  </meta>
  <text>
    <status value="extensions"/>
    <div xmlns="http://www.w3.org/1999/xhtml">
<div>
    <table class="grid dict">
        
        
        <tr>
            <th scope="row"><b>Title: </b></th>
            <td style="padding-left: 4px;">IMMZEncounterElements</td>
        </tr>
        

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

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

        
        <tr>
            <th scope="row"><b>Url: </b></th>
            <td style="padding-left: 4px;"><a href="Library-IMMZEncounterElements.html">IMMZEncounterElements</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/7.1.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;">2026-03-31 13:54:17+0000</td>
        </tr>
        

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

        
        <tr>
            <th scope="row"><b>Description: </b></th>
            <td style="padding-left: 4px;"><div><p>This library defines encounter-based elements used throughout the Immunization CPG</p>
</div></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="Library-WHOConcepts.html">WHOConcepts</a></li>
                  
                    <li><a href="Library-WHOCommon.html">WHOCommon</a></li>
                  
                    <li><a href="Library-WHOEncounterElements.html">WHOEncounterElements</a></li>
                  
                    <li><a href="Library-IMMZConcepts.html">IMMZConcepts</a></li>
                  
                    <li><a href="Library-IMMZCommon.html">IMMZCommon</a></li>
                  
                    <li><a href="Library-IMMZElements.html">IMMZElements</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>Today</th><th>date</th><th>0</th><th>1</th><th>In</th></tr>
              
                <tr><th>EncounterId</th><th>string</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>Doses Administered to Patient</th><th>Immunization</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Draft Medication Request for Patient</th><th>MedicationRequest</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Live Attenuated Vaccines</th><th>Immunization</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Date of Latest Live Attenuated Vaccine</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Current Patient Age In Years</th><th>integer</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Current Patient Age In Months</th><th>integer</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Current Patient Age In Weeks</th><th>integer</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Current Patient Age In Days</th><th>integer</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>No live vaccine was administered</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Live vaccine was administered in the last 4 weeks</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>No live vaccine was administered in the last 4 weeks</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Currently pregnant Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Currently pregnant Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client is pregnant</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI History of anaphylactic reactions Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI History of anaphylactic reactions Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client has history of anaphylactic reactions</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Severe allergic reactions Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Severe allergic reactions Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client has history of severe allergic reactions</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Severely immunocompromised Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Severely immunocompromised Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client is severely immunocompromised</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Severely immunosuppressed Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Severely immunosuppressed Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client is severely immunosuppressed</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Symptomatic HIV infection Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Symptomatic HIV infection Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client has a symptomatic HIV infection</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Immunodeficiency syndromes Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Immunodeficiency syndromes Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client has immunodeficiency syndromes</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Exposed to immunosuppressive treatment Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Exposed to immunosuppressive treatment Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client is exposed to immunosuppressive treatment</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Severe acute illness Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Severe acute illness Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client currently has a severe acute illness</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Prior history of intussusception Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Prior history of intussusception Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client has prior history of intussusception</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Altered immunocompetence Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Altered immunocompetence Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client has altered immunocompetence</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Spina bifida Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Spina bifida Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client has spina bifida</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Bladder exstrophy Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Bladder exstrophy Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client has bladder exstrophy</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Immunocompromised Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Client is immunocompromised</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Immunocompromised Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Immunocompromised Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client is immunocompromised</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Planning to get pregnant in the next month Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Planning to get pregnant in the next month Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client is planning to get pregnant in next month</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Receiving blood products Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Receiving blood products Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client is receiving blood products</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI TB disease Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI TB disease Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client has TB disease</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Breastfeeding Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Breastfeeding Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client is lactating</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Acute gastroenteritis Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Acute gastroenteritis Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client has acute gastroenteritis</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Moderate to severe fever Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Moderate to severe fever Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client has moderate to severe fever</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Hypersensitivity to vaccine components Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Hypersensitivity to vaccine components Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client has hypersensitivity to any component of the vaccine</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Taking antibiotics Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Taking antibiotics Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client is currently taking antibiotics</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>CI Chronic gastrointestinal disease Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>CI Chronic gastrointestinal disease Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>The client has chronic gastrointestinal disease</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Client's HIV status is positive</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Client's HIV status is negative or unknown</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Currently on ART Observation</th><th>Observation</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Client is currently receiving antiretroviral therapy</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Client is currently not receiving antiretroviral therapy</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Immunologically stable Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Client is immunologically stable</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Client is not immunologically stable</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>TB infection test result Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Client's TB infection test result is negative</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Client's TB infection test result is positive</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Client's TB infection test result is unknown (test not done or no result yet)</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Clinically well Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Client is not clinically well</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Client is clinically well</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Client is not immunocompromised</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Birth weight in grams Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Birth weight in grams Value</th><th>Quantity</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Birth weight in grams</th><th>decimal</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Client's weight at birth was over 2000 g</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Client's weight at birth was below 2000 g</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Preterm birth Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Client was a premature infant at birth</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Client was not a premature infant at birth</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Completed the primary vaccination series Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>At high risk for pneumococcal infection Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Client is at high risk for pneumococcal infection</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Client is not at high risk for pneumococcal infection</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Date when primary vaccination series was completed Observation</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
              
                <tr><th>Completed the booster series Observation</th><th>Observation</th><th>0</th><th>*</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>Observation</th>
                  <th>http://hl7.org/fhir/StructureDefinition/Observation</th>
                  <th/>
                  <th>
                    
                      <b>code filter: </b>
                      
                      <br/>
                      
                      
                      <span style="padding-left: 4px;">
                          <b>path: </b><span>code</span>
                      </span>
                      
                      <br/>
                      
                      
                      
                      
                          
                          <p style="margin-bottom: 5px;">
                              <b>system: </b> <span><a href="CodeSystem-IMMZ.D.html">http://smart.who.int/immunizations/CodeSystem/IMMZ.D</a></span>
                          </p>
                          
                          
                          <p style="margin-bottom: 5px;">
                              <b>code: </b> <span>DE209</span>
                          </p>
                          
                          
                          <p style="margin-bottom: 5px;">
                              <b>display: </b> <span>Immunocompromised</span>
                          </p>
                          
                      
                    
                  </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 IMMZEncounterElements

using FHIR version '4.0.1'

include FHIRHelpers version '4.0.1'

include WHOConcepts
include WHOCommon called WC
include WHOEncounterElements called WE

include IMMZConcepts called Concepts
include IMMZCommon called Common
include IMMZElements called Elements

parameter Today Date default Today()
parameter EncounterId String

context Patient

/**
 * @dataElement All Doses Administered to Patient
 */
define &quot;Doses Administered to Patient&quot;:
  Elements.&quot;Doses Administered to Patient&quot; I
    where I.occurrence.toInterval() same day or before Today

/*
@dataElement: Draft Medication Request for Patient
*/
define &quot;Draft Medication Request for Patient&quot;:
  Elements.&quot;Draft Medication Request for Patient&quot; MR
    where MR.encounter.references(EncounterId) 
      or MR.authoredOn.toInterval() same day or before Today
  	sort by date from (authoredOn as FHIR.dateTime) desc

/*
@dataElement Live attenuated vaccines
*/
define &quot;Live Attenuated Vaccines&quot;:
  Elements.&quot;Live Attenuated Vaccines&quot; I
    where I.occurrence.toInterval() same day or before Today

/*
@dataElement Date and time of last live attenuated vaccine
*/
define &quot;Date of Latest Live Attenuated Vaccine&quot;:
  date from start of &quot;Live Attenuated Vaccines&quot;.mostRecent().occurrence.toInterval()
  
/** 
 * @dataElement Patient age in years
 */
define &quot;Current Patient Age In Years&quot;:
  AgeInYearsAt(Today)

/** 
 * @dataElement Patient age in months
 */
define &quot;Current Patient Age In Months&quot;:
  AgeInMonthsAt(Today)

/** 
 * @dataElement Patient age in weeks
 */
define &quot;Current Patient Age In Weeks&quot;:
  AgeInWeeksAt(Today)

/** 
 * @dataElement Patient age in days
 */
define &quot;Current Patient Age In Days&quot;:
  AgeInDaysAt(Today)

/*
@input: No live vaccine was administered
@pseudocode: Today's date − latest &quot;Date and time of vaccination&quot; (where &quot;Live vaccine&quot; = TRUE) IS NULL
*/
define &quot;No live vaccine was administered&quot;:
  not exists(&quot;Live Attenuated Vaccines&quot;)

/*
@input: Live vaccine was administered in the last 4 weeks
@pseudocode: Today's date − latest &quot;Date and time of vaccination&quot; (where &quot;Live vaccine&quot; = TRUE) &lt; 4 weeks
*/
define &quot;Live vaccine was administered in the last 4 weeks&quot;:
	&quot;Date of Latest Live Attenuated Vaccine&quot; is not null 
    and duration in weeks between &quot;Date of Latest Live Attenuated Vaccine&quot; and Today &lt; 4

/*
@input: No live vaccine was administered in the last 4 weeks
@pseudocode: Today's date − latest &quot;Date and time of vaccination&quot; (where &quot;Live vaccine&quot; = TRUE) ≥ 4 weeks
*/
define &quot;No live vaccine was administered in the last 4 weeks&quot;:
  not(&quot;Live vaccine was administered in the last 4 weeks&quot;)

/*
@input: The client is pregnant
@pseudocode: &quot;Potential contraindications&quot; = &quot;Currently pregnant&quot;
*/
define &quot;The client is pregnant&quot;:
  exists &quot;CI Currently pregnant Observation&quot;
  or exists &quot;CI Currently pregnant Condition&quot;
  or exists WE.&quot;Pregnant Observation&quot;

/*
@internal: Observation for currently pregnant
*/
define &quot;CI Currently pregnant Observation&quot;:
  Elements.&quot;CI Currently pregnant Observation&quot; O
    where O.encounter.references(EncounterId)
      or O.effective.toInterval() starts same day or after Today - 9 months

/*
@internal: Condition for currently pregnant
*/
define &quot;CI Currently pregnant Condition&quot;:
  Elements.&quot;CI Currently pregnant Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client has history of anaphylactic reactions
@pseudocode: &quot;Potential contraindications&quot; = &quot;History of anaphylactic reactions&quot;
*/
define &quot;The client has history of anaphylactic reactions&quot;:
  exists &quot;CI History of anaphylactic reactions Observation&quot;
    or exists &quot;CI History of anaphylactic reactions Condition&quot;
    
/*
@internal: Observation for History of anaphylactic reactions
*/
define &quot;CI History of anaphylactic reactions Observation&quot;:
  Elements.&quot;CI History of anaphylactic reactions Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for History of anaphylactic reactions
*/
define &quot;CI History of anaphylactic reactions Condition&quot;:
  Elements.&quot;CI History of anaphylactic reactions Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client has history of severe allergic reactions
@pseudocode: &quot;Potential contraindications&quot; = &quot;Severe allergic reactions&quot;
*/
define &quot;The client has history of severe allergic reactions&quot;:
  exists &quot;CI Severe allergic reactions Observation&quot;
    or exists &quot;CI Severe allergic reactions Condition&quot;
    
/*
@internal: Observation for Severe allergic reactions
*/
define &quot;CI Severe allergic reactions Observation&quot;:
  Elements.&quot;CI Severe allergic reactions Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Severe allergic reactions
*/
define &quot;CI Severe allergic reactions Condition&quot;:
  Elements.&quot;CI Severe allergic reactions Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client is severely immunocompromised
@pseudocode: &quot;Potential contraindications&quot; = &quot;Severely immunocompromised&quot;
*/
define &quot;The client is severely immunocompromised&quot;:
  exists &quot;CI Severely immunocompromised Observation&quot;
    or exists &quot;CI Severely immunocompromised Condition&quot;
    
/*
@internal: Observation for Severely immunocompromised
*/
define &quot;CI Severely immunocompromised Observation&quot;:
  Elements.&quot;CI Severely immunocompromised Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Severely immunocompromised
*/
define &quot;CI Severely immunocompromised Condition&quot;:
  Elements.&quot;CI Severely immunocompromised Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client is severely immunosuppressed
@pseudocode: &quot;Potential contraindications&quot; = &quot;Severely immunosuppressed&quot;
*/
define &quot;The client is severely immunosuppressed&quot;:
  exists &quot;CI Severely immunosuppressed Observation&quot;
    or exists &quot;CI Severely immunosuppressed Condition&quot;
    
/*
@internal: Observation for Severely immunosuppressed
*/
define &quot;CI Severely immunosuppressed Observation&quot;:
  Elements.&quot;CI Severely immunosuppressed Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Severely immunosuppressed
*/
define &quot;CI Severely immunosuppressed Condition&quot;:
  Elements.&quot;CI Severely immunosuppressed Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client has a symptomatic HIV infection
@pseudocode: &quot;Potential contraindications&quot; = &quot;Symptomatic HIV infection&quot;
*/
define &quot;The client has a symptomatic HIV infection&quot;:
  exists &quot;CI Symptomatic HIV infection Observation&quot;
    or exists &quot;CI Symptomatic HIV infection Condition&quot;
    
/*
@internal: Observation for Symptomatic HIV infection
*/
define &quot;CI Symptomatic HIV infection Observation&quot;:
  Elements.&quot;CI Symptomatic HIV infection Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Symptomatic HIV infection
*/
define &quot;CI Symptomatic HIV infection Condition&quot;:
  Elements.&quot;CI Symptomatic HIV infection Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client has immunodeficiency syndromes
@pseudocode: &quot;Potential contraindications&quot; = &quot;Immunodeficiency syndromes&quot;
*/
define &quot;The client has immunodeficiency syndromes&quot;:
  exists &quot;CI Immunodeficiency syndromes Observation&quot;
    or exists &quot;CI Immunodeficiency syndromes Condition&quot;
    
/*
@internal: Observation for Immunodeficiency syndromes
*/
define &quot;CI Immunodeficiency syndromes Observation&quot;:
  Elements.&quot;CI Immunodeficiency syndromes Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Immunodeficiency syndromes
*/
define &quot;CI Immunodeficiency syndromes Condition&quot;:
  Elements.&quot;CI Immunodeficiency syndromes Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client is exposed to immunosuppressive treatment
@pseudocode: &quot;Potential contraindications&quot; = &quot;Exposed to immunosuppressive treatment&quot;
*/
define &quot;The client is exposed to immunosuppressive treatment&quot;:
  exists &quot;CI Exposed to immunosuppressive treatment Observation&quot;
    or exists &quot;CI Exposed to immunosuppressive treatment Condition&quot;
    
/*
@internal: Observation for Exposed to immunosuppressive treatment
*/
define &quot;CI Exposed to immunosuppressive treatment Observation&quot;:
  Elements.&quot;CI Exposed to immunosuppressive treatment Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Exposed to immunosuppressive treatment
*/
define &quot;CI Exposed to immunosuppressive treatment Condition&quot;:
  Elements.&quot;CI Exposed to immunosuppressive treatment Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client currently has a severe acute illness
@pseudocode: &quot;Potential contraindications&quot; = &quot;Severe acute illness&quot;
*/
define &quot;The client currently has a severe acute illness&quot;:
  exists &quot;CI Severe acute illness Observation&quot;
    or exists &quot;CI Severe acute illness Condition&quot;
    
/*
@internal: Observation for Severe acute illness
*/
define &quot;CI Severe acute illness Observation&quot;:
  Elements.&quot;CI Severe acute illness Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Severe acute illness
*/
define &quot;CI Severe acute illness Condition&quot;:
  Elements.&quot;CI Severe acute illness Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client has prior history of intussusception
@pseudocode: &quot;Potential contraindications&quot; = &quot;Prior history of intussusception&quot;
*/
define &quot;The client has prior history of intussusception&quot;:
  exists &quot;CI Prior history of intussusception Observation&quot;
    or exists &quot;CI Prior history of intussusception Condition&quot;
    
/*
@internal: Observation for Prior history of intussusception
*/
define &quot;CI Prior history of intussusception Observation&quot;:
  Elements.&quot;CI Prior history of intussusception Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Prior history of intussusception
*/
define &quot;CI Prior history of intussusception Condition&quot;:
  Elements.&quot;CI Prior history of intussusception Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client has altered immunocompetence
@pseudocode: &quot;Potential contraindications&quot; = &quot;Altered immunocompetence&quot;
*/
define &quot;The client has altered immunocompetence&quot;:
  exists &quot;CI Altered immunocompetence Observation&quot;
    or exists &quot;CI Altered immunocompetence Condition&quot;
    
/*
@internal: Observation for Altered immunocompetence
*/
define &quot;CI Altered immunocompetence Observation&quot;:
  Elements.&quot;CI Altered immunocompetence Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Altered immunocompetence
*/
define &quot;CI Altered immunocompetence Condition&quot;:
  Elements.&quot;CI Altered immunocompetence Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client has spina bifida
@pseudocode: &quot;Potential contraindications&quot; = &quot;Spina bifida&quot;
*/
define &quot;The client has spina bifida&quot;:
  exists &quot;CI Spina bifida Observation&quot;
    or exists &quot;CI Spina bifida Condition&quot;
    
/*
@internal: Observation for Spina bifida
*/
define &quot;CI Spina bifida Observation&quot;:
  Elements.&quot;CI Spina bifida Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Spina bifida
*/
define &quot;CI Spina bifida Condition&quot;:
  Elements.&quot;CI Spina bifida Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client has bladder exstrophy
@pseudocode: &quot;Potential contraindications&quot; = &quot;Bladder exstrophy&quot;
*/
define &quot;The client has bladder exstrophy&quot;:
  exists &quot;CI Bladder exstrophy Observation&quot;
    or exists &quot;CI Bladder exstrophy Condition&quot;
    
/*
@internal: Observation for Bladder exstrophy
*/
define &quot;CI Bladder exstrophy Observation&quot;:
  Elements.&quot;CI Bladder exstrophy Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Bladder exstrophy
*/
define &quot;CI Bladder exstrophy Condition&quot;:
  Elements.&quot;CI Bladder exstrophy Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client is immunocompromised
@pseudocode: &quot;Potential contraindications&quot; = &quot;Immunocompromised&quot;
*/
define &quot;The client is immunocompromised&quot;:
  &quot;Client is immunocompromised&quot;
    or exists &quot;CI Immunocompromised Observation&quot;
    or exists &quot;CI Immunocompromised Condition&quot;

/*
@internal: Observation for Immunocompromised
*/
define &quot;CI Immunocompromised Observation&quot;:
  Elements.&quot;CI Immunocompromised Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Immunocompromised
*/
define &quot;CI Immunocompromised Condition&quot;:
  Elements.&quot;CI Immunocompromised Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client is planning to get pregnant in next month
@pseudocode: &quot;Potential contraindications&quot; = &quot;Planning to get pregnant in the next month&quot;
*/
define &quot;The client is planning to get pregnant in next month&quot;:
  exists &quot;CI Planning to get pregnant in the next month Observation&quot;
    or exists &quot;CI Planning to get pregnant in the next month Condition&quot;

/*
@internal: Observation for Planning to get pregnant in the next month
*/
define &quot;CI Planning to get pregnant in the next month Observation&quot;:
  Elements.&quot;CI Planning to get pregnant in the next month Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Planning to get pregnant in the next month
*/
define &quot;CI Planning to get pregnant in the next month Condition&quot;:
  Elements.&quot;CI Planning to get pregnant in the next month Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client is receiving blood products
@pseudocode: &quot;Potential contraindications&quot; = &quot;Receiving blood products&quot;
*/
define &quot;The client is receiving blood products&quot;:
  exists &quot;CI Receiving blood products Observation&quot;
    or exists &quot;CI Receiving blood products Condition&quot;

/*
@internal: Observation for Receiving blood products
*/
define &quot;CI Receiving blood products Observation&quot;:
  Elements.&quot;CI Receiving blood products Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Receiving blood products
*/
define &quot;CI Receiving blood products Condition&quot;:
  Elements.&quot;CI Receiving blood products Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client has TB disease
@pseudocode: &quot;Potential contraindications&quot; = &quot;TB disease&quot;
*/
define &quot;The client has TB disease&quot;:
  exists &quot;CI TB disease Observation&quot;
    or exists &quot;CI TB disease Condition&quot;

/*
@internal: Observation for TB disease
*/
define &quot;CI TB disease Observation&quot;:
  Elements.&quot;CI TB disease Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for TB disease
*/
define &quot;CI TB disease Condition&quot;:
  Elements.&quot;CI TB disease Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client is lactating
@pseudocode: &quot;Potential contraindications&quot; = &quot;Breastfeeding&quot;
*/
define &quot;The client is lactating&quot;:
  exists &quot;CI Breastfeeding Observation&quot;
    or exists &quot;CI Breastfeeding Condition&quot;

/*
@internal: Observation for Breastfeeding
*/
define &quot;CI Breastfeeding Observation&quot;:
  Elements.&quot;CI Breastfeeding Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Breastfeeding
*/
define &quot;CI Breastfeeding Condition&quot;:
  Elements.&quot;CI Breastfeeding Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client has acute gastroenteritis
@pseudocode: &quot;Potential contraindications&quot; = &quot;Acute gastroenteritis&quot;
*/
define &quot;The client has acute gastroenteritis&quot;:
  exists &quot;CI Acute gastroenteritis Observation&quot;
    or exists &quot;CI Acute gastroenteritis Condition&quot;

/*
@internal: Observation for Acute gastroenteritis
*/
define &quot;CI Acute gastroenteritis Observation&quot;:
  Elements.&quot;CI Acute gastroenteritis Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Acute gastroenteritis
*/
define &quot;CI Acute gastroenteritis Condition&quot;:
  Elements.&quot;CI Acute gastroenteritis Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client has moderate to severe fever
@pseudocode: &quot;Potential contraindications&quot; = &quot;Moderate to severe fever&quot;
*/
define &quot;The client has moderate to severe fever&quot;:
  exists &quot;CI Moderate to severe fever Observation&quot;
    or exists &quot;CI Moderate to severe fever Condition&quot;

/*
@internal: Observation for Moderate to severe fever
*/
define &quot;CI Moderate to severe fever Observation&quot;:
  Elements.&quot;CI Moderate to severe fever Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Moderate to severe fever
*/
define &quot;CI Moderate to severe fever Condition&quot;:
  Elements.&quot;CI Moderate to severe fever Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client has hypersensitivity to any component of the vaccine
@pseudocode: &quot;Potential contraindications&quot; = &quot;Hypersensitivity to vaccine components&quot;
*/
define &quot;The client has hypersensitivity to any component of the vaccine&quot;:
  exists &quot;CI Hypersensitivity to vaccine components Observation&quot;
    or exists &quot;CI Hypersensitivity to vaccine components Condition&quot;

/*
@internal: Observation for Hypersensitivity to vaccine components
*/
define &quot;CI Hypersensitivity to vaccine components Observation&quot;:
  Elements.&quot;CI Hypersensitivity to vaccine components Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Hypersensitivity to vaccine components
*/
define &quot;CI Hypersensitivity to vaccine components Condition&quot;:
  Elements.&quot;CI Hypersensitivity to vaccine components Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client is currently taking antibiotics
@pseudocode: &quot;Potential contraindications&quot; = &quot;Taking antibiotics&quot;
*/
define &quot;The client is currently taking antibiotics&quot;:
  exists &quot;CI Taking antibiotics Observation&quot;
    or exists &quot;CI Taking antibiotics Condition&quot;

/*
@internal: Observation for Taking antibiotics
*/
define &quot;CI Taking antibiotics Observation&quot;:
  Elements.&quot;CI Taking antibiotics Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Taking antibiotics
*/
define &quot;CI Taking antibiotics Condition&quot;:
  Elements.&quot;CI Taking antibiotics Condition&quot; C
    where C.prevalenceInterval() includes Today

/*
@input: The client has chronic gastrointestinal disease
@pseudocode: &quot;Potential contraindications&quot; = &quot;Chronic gastrointestinal disease&quot;
*/
define &quot;The client has chronic gastrointestinal disease&quot;:
  exists &quot;CI Chronic gastrointestinal disease Observation&quot;
    or exists &quot;CI Chronic gastrointestinal disease Condition&quot;

/*
@internal: Observation for Chronic gastrointestinal disease
*/
define &quot;CI Chronic gastrointestinal disease Observation&quot;:
  Elements.&quot;CI Chronic gastrointestinal disease Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Condition for Chronic gastrointestinal disease
*/
define &quot;CI Chronic gastrointestinal disease Condition&quot;:
  Elements.&quot;CI Chronic gastrointestinal disease Condition&quot; C
    where C.prevalenceInterval() includes Today



/*
@input: Client's HIV status is negative or unknown
@pseudocode: &quot;HIV status&quot; ≠ &quot;HIV-positive&quot;
*/
define &quot;Client's HIV status is negative or unknown&quot;:
  not &quot;Client's HIV status is positive&quot;

/*
@input: Client's HIV status is positive
@pseudocode: &quot;HIV status&quot; = &quot;HIV-positive&quot;
*/
define &quot;Client's HIV status is positive&quot;:
  exists( (Elements.&quot;HIV status Observation&quot;.encounterOrOnBefore(EncounterId, Today)) O
    where O.value ~ Concepts.&quot;HIV-positive&quot; )

/*
@internal: Currently on ART Observation
*/
define &quot;Currently on ART Observation&quot;:
  Elements.&quot;Currently on ART Observation&quot;.encounterOrOnBefore(EncounterId, Today).mostRecent()

/*
@input: Client is currently receiving antiretroviral therapy
@pseudocode: &quot;Currently on ART&quot; = TRUE
*/
define &quot;Client is currently receiving antiretroviral therapy&quot;:
  &quot;Currently on ART Observation&quot; is not null
  and &quot;Currently on ART Observation&quot;.value = true

/*
@input: Client is currently not receiving antiretroviral therapy
@pseudocode: &quot;Currently on ART&quot; = FALSE
*/
define &quot;Client is currently not receiving antiretroviral therapy&quot;:
  &quot;Currently on ART Observation&quot; is null
  or &quot;Currently on ART Observation&quot;.value = false
  
/*
@internal: Immunologically stable Observation
*/
define &quot;Immunologically stable Observation&quot;:
  Elements.&quot;Immunologically stable Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@input: Client is immunologically stable
@pseudocode: &quot;Immunologically stable&quot; = TRUE
*/
define &quot;Client is immunologically stable&quot;:
  exists(&quot;Immunologically stable Observation&quot;)
  and First(&quot;Immunologically stable Observation&quot;).value = true

/*
@input: Client is not immunologically stable
@pseudocode: &quot;Immunologically stable&quot; = FALSE
*/
define &quot;Client is not immunologically stable&quot;:
  exists(&quot;Immunologically stable Observation&quot;)
  and First(&quot;Immunologically stable Observation&quot;).value = false

/*
@internal: Immunologically stable Observation
*/
define &quot;TB infection test result Observation&quot;:
  Elements.&quot;TB infection test result Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@input: Client's TB infection test result is negative
@pseudocode: &quot;TB infection test result&quot; = &quot;Negative&quot;
*/
define &quot;Client's TB infection test result is negative&quot;:
  exists(&quot;TB infection test result Observation&quot;)
  and First( &quot;TB infection test result Observation&quot; ).value ~ Concepts.&quot;TB-Negative&quot;
/*
@input: Client's TB infection test result is unknown (test not done or no result yet)
@pseudocode: &quot;TB infection test result&quot; IS NULL
*/
define &quot;Client's TB infection test result is unknown (test not done or no result yet)&quot;:
  not exists( &quot;TB infection test result Observation&quot; ) or (
    not (&quot;Client's TB infection test result is negative&quot;) and not (&quot;Client's TB infection test result is positive&quot;)
  )
/*
@input: Client's TB infection test result is positive
@pseudocode: &quot;TB infection test result&quot; = &quot;Positive&quot;
*/
define &quot;Client's TB infection test result is positive&quot;:
  exists(&quot;TB infection test result Observation&quot;)
  and First( &quot;TB infection test result Observation&quot; ).value ~ Concepts.&quot;TB-Positive&quot;

/*
@internal: Clinically well Observation
*/
define &quot;Clinically well Observation&quot;:
  Elements.&quot;Clinically well Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@input: Client is not clinically well
@pseudocode: &quot;Clinically well&quot; = FALSE
*/
define &quot;Client is not clinically well&quot;:
  exists(&quot;Clinically well Observation&quot;)  
  and First( &quot;Clinically well Observation&quot; ).value = false

/*
@input: Client is clinically well
@pseudocode: &quot;Clinically well&quot; = TRUE
*/
define &quot;Client is clinically well&quot;:
  exists(&quot;Clinically well Observation&quot;)  
  and First( &quot;Clinically well Observation&quot; ).value = true 

/*
@internal: Immunocompromised Observation
*/
define &quot;Immunocompromised Observation&quot;:
  ([Observation: Concepts.&quot;Immunocompromised&quot;] O
    sort by end of effective.toInterval() desc).complete()

/*
@input: Client is immunocompromised
@pseudocode: &quot;Immunocompromised&quot; = TRUE
*/
define &quot;Client is immunocompromised&quot;:
  exists( &quot;Immunocompromised Observation&quot; ) and
  First( &quot;Immunocompromised Observation&quot; ).value = true 

/*
@input: Client is not immunocompromised
@pseudocode: &quot;Immunocompromised&quot; ≠ TRUE
*/
define &quot;Client is not immunocompromised&quot;:
  not &quot;Client is immunocompromised&quot;

/*
@internal: Birth weight in grams Observation
*/
define &quot;Birth weight in grams Observation&quot;:
  Elements.&quot;Birth weight in grams Observation&quot;.encounterOrOnBefore(EncounterId, Today)

define &quot;Birth weight in grams Value&quot;:
  First(&quot;Birth weight in grams Observation&quot;).value as FHIR.Quantity

define &quot;Birth weight in grams&quot;:
  &quot;Birth weight in grams Value&quot;.value as FHIR.decimal

/*
@input: Client's weight at birth was over 2000 g
@pseudocode: &quot;Birth weight in grams&quot;  ≥ 2000
*/
define &quot;Client's weight at birth was over 2000 g&quot;:
  &quot;Birth weight in grams&quot; &gt;= 2000

/*
@input: Client's weight at birth was below 2000 g
@pseudocode: &quot;Birth weight in grams&quot; &lt; 2000
*/
define &quot;Client's weight at birth was below 2000 g&quot;:
  &quot;Birth weight in grams&quot; &lt; 2000

/*
@internal: Preterm birth Observation
*/
define &quot;Preterm birth Observation&quot;:
  Elements.&quot;Preterm birth Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@input: Client was not a premature infant at birth
@pseudocode: &quot;Preterm birth&quot; ≠  TRUE
*/
define &quot;Client was not a premature infant at birth&quot;:
  not(&quot;Client was a premature infant at birth&quot;)

/*
@input: Client was a premature infant at birth
@pseudocode: &quot;Preterm birth&quot; =  TRUE
*/
define &quot;Client was a premature infant at birth&quot;:
  exists( &quot;Preterm birth Observation&quot; O where O.value = true )

/*
@internal: Completed the primary vaccination series Observation
*/
define &quot;Completed the primary vaccination series Observation&quot;:
  Elements.&quot;Completed the primary vaccination series Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: At high risk for pneumococcal infection Observation
*/
define &quot;At high risk for pneumococcal infection Observation&quot;:
  Elements.&quot;At high risk for pneumococcal infection Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@input: Client is at high risk for pneumococcal infection
@pseudocode: &quot;At high risk for pneumococcal infection&quot; = TRUE
*/
define &quot;Client is at high risk for pneumococcal infection&quot;:
  exists( &quot;At high risk for pneumococcal infection Observation&quot; O where O.value = true )

/*
@input: Client is not at high risk for pneumococcal infection
@pseudocode: &quot;At high risk for pneumococcal infection&quot; = FALSE
*/
define &quot;Client is not at high risk for pneumococcal infection&quot;:
  exists( &quot;At high risk for pneumococcal infection Observation&quot; O where O.value = false )

/*
@internal: Date when primary vaccination series was completed Observation
*/
define &quot;Date when primary vaccination series was completed Observation&quot;:
  Elements.&quot;Date when primary vaccination series was completed Observation&quot;.encounterOrOnBefore(EncounterId, Today)

/*
@internal: Completed the booster series Observation
*/
define &quot;Completed the booster series Observation&quot;:
  Elements.&quot;Completed the booster series Observation&quot;.encounterOrOnBefore(EncounterId, Today)</code></pre></td></tr>
            </table>
          </td>
        </tr>
        
        
        
    </table>
</div>
</div>
  </text>
  <extension
             url="http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability">
    <valueCode value="computable"/>
  </extension>
  <url
       value="http://smart.who.int/immunizations/Library/IMMZEncounterElements"/>
  <version value="1.0.0"/>
  <name value="IMMZEncounterElements"/>
  <title value="IMMZEncounterElements"/>
  <status value="draft"/>
  <experimental value="false"/>
  <type>
    <coding>
      <system value="http://terminology.hl7.org/CodeSystem/library-type"/>
      <code value="logic-library"/>
    </coding>
  </type>
  <date value="2026-03-31T13:54:17+00:00"/>
  <publisher value="WHO"/>
  <contact>
    <name value="WHO"/>
    <telecom>
      <system value="url"/>
      <value value="http://who.int"/>
    </telecom>
  </contact>
  <description
               value="This library defines encounter-based elements used throughout the Immunization CPG"/>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library WHOConcepts"/>
    <resource value="http://smart.who.int/immunizations/Library/WHOConcepts"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library WC"/>
    <resource value="http://smart.who.int/immunizations/Library/WHOCommon"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library WE"/>
    <resource
              value="http://smart.who.int/immunizations/Library/WHOEncounterElements"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library Concepts"/>
    <resource
              value="http://smart.who.int/immunizations/Library/IMMZConcepts"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library Common"/>
    <resource value="http://smart.who.int/immunizations/Library/IMMZCommon"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library Elements"/>
    <resource
              value="http://smart.who.int/immunizations/Library/IMMZElements"/>
  </relatedArtifact>
  <parameter>
    <name value="Today"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <type value="date"/>
  </parameter>
  <parameter>
    <name value="EncounterId"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <type value="string"/>
  </parameter>
  <parameter>
    <name value="Patient"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Patient"/>
  </parameter>
  <parameter>
    <name value="Doses Administered to Patient"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Immunization"/>
  </parameter>
  <parameter>
    <name value="Draft Medication Request for Patient"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="MedicationRequest"/>
  </parameter>
  <parameter>
    <name value="Live Attenuated Vaccines"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Immunization"/>
  </parameter>
  <parameter>
    <name value="Date of Latest Live Attenuated Vaccine"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="date"/>
  </parameter>
  <parameter>
    <name value="Current Patient Age In Years"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="integer"/>
  </parameter>
  <parameter>
    <name value="Current Patient Age In Months"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="integer"/>
  </parameter>
  <parameter>
    <name value="Current Patient Age In Weeks"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="integer"/>
  </parameter>
  <parameter>
    <name value="Current Patient Age In Days"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="integer"/>
  </parameter>
  <parameter>
    <name value="No live vaccine was administered"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Live vaccine was administered in the last 4 weeks"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="No live vaccine was administered in the last 4 weeks"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Currently pregnant Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Currently pregnant Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client is pregnant"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI History of anaphylactic reactions Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI History of anaphylactic reactions Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client has history of anaphylactic reactions"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Severe allergic reactions Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Severe allergic reactions Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client has history of severe allergic reactions"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Severely immunocompromised Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Severely immunocompromised Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client is severely immunocompromised"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Severely immunosuppressed Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Severely immunosuppressed Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client is severely immunosuppressed"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Symptomatic HIV infection Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Symptomatic HIV infection Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client has a symptomatic HIV infection"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Immunodeficiency syndromes Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Immunodeficiency syndromes Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client has immunodeficiency syndromes"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Exposed to immunosuppressive treatment Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Exposed to immunosuppressive treatment Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client is exposed to immunosuppressive treatment"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Severe acute illness Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Severe acute illness Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client currently has a severe acute illness"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Prior history of intussusception Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Prior history of intussusception Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client has prior history of intussusception"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Altered immunocompetence Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Altered immunocompetence Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client has altered immunocompetence"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Spina bifida Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Spina bifida Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client has spina bifida"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Bladder exstrophy Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Bladder exstrophy Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client has bladder exstrophy"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Immunocompromised Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="Client is immunocompromised"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Immunocompromised Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Immunocompromised Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client is immunocompromised"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Planning to get pregnant in the next month Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Planning to get pregnant in the next month Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client is planning to get pregnant in next month"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Receiving blood products Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Receiving blood products Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client is receiving blood products"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI TB disease Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI TB disease Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client has TB disease"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Breastfeeding Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Breastfeeding Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client is lactating"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Acute gastroenteritis Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Acute gastroenteritis Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client has acute gastroenteritis"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Moderate to severe fever Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Moderate to severe fever Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client has moderate to severe fever"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Hypersensitivity to vaccine components Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Hypersensitivity to vaccine components Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name
          value="The client has hypersensitivity to any component of the vaccine"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Taking antibiotics Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Taking antibiotics Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client is currently taking antibiotics"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="CI Chronic gastrointestinal disease Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="CI Chronic gastrointestinal disease Condition"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Condition"/>
  </parameter>
  <parameter>
    <name value="The client has chronic gastrointestinal disease"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Client's HIV status is positive"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Client's HIV status is negative or unknown"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Currently on ART Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="Client is currently receiving antiretroviral therapy"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Client is currently not receiving antiretroviral therapy"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Immunologically stable Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="Client is immunologically stable"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Client is not immunologically stable"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="TB infection test result Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="Client's TB infection test result is negative"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Client's TB infection test result is positive"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name
          value="Client's TB infection test result is unknown (test not done or no result yet)"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Clinically well Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="Client is not clinically well"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Client is clinically well"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Client is not immunocompromised"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Birth weight in grams Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="Birth weight in grams Value"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Quantity"/>
  </parameter>
  <parameter>
    <name value="Birth weight in grams"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="decimal"/>
  </parameter>
  <parameter>
    <name value="Client's weight at birth was over 2000 g"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Client's weight at birth was below 2000 g"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Preterm birth Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="Client was a premature infant at birth"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Client was not a premature infant at birth"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Completed the primary vaccination series Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="At high risk for pneumococcal infection Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="Client is at high risk for pneumococcal infection"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Client is not at high risk for pneumococcal infection"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name
          value="Date when primary vaccination series was completed Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="Completed the booster series Observation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <type value="Observation"/>
  </parameter>
  <dataRequirement>
    <type value="Observation"/>
    <profile value="http://hl7.org/fhir/StructureDefinition/Observation"/>
    <codeFilter>
      <path value="code"/>
      <code>
        <system value="http://smart.who.int/immunizations/CodeSystem/IMMZ.D"/>
        <code value="DE209"/>
        <display value="Immunocompromised"/>
      </code>
    </codeFilter>
  </dataRequirement>
  <content>
    <contentType value="text/cql"/>
    <data
          value="bGlicmFyeSBJTU1aRW5jb3VudGVyRWxlbWVudHMKCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBXSE9Db25jZXB0cwppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0MKaW5jbHVkZSBXSE9FbmNvdW50ZXJFbGVtZW50cyBjYWxsZWQgV0UKCmluY2x1ZGUgSU1NWkNvbmNlcHRzIGNhbGxlZCBDb25jZXB0cwppbmNsdWRlIElNTVpDb21tb24gY2FsbGVkIENvbW1vbgppbmNsdWRlIElNTVpFbGVtZW50cyBjYWxsZWQgRWxlbWVudHMKCnBhcmFtZXRlciBUb2RheSBEYXRlIGRlZmF1bHQgVG9kYXkoKQpwYXJhbWV0ZXIgRW5jb3VudGVySWQgU3RyaW5nCgpjb250ZXh0IFBhdGllbnQKCi8qKgogKiBAZGF0YUVsZW1lbnQgQWxsIERvc2VzIEFkbWluaXN0ZXJlZCB0byBQYXRpZW50CiAqLwpkZWZpbmUgIkRvc2VzIEFkbWluaXN0ZXJlZCB0byBQYXRpZW50IjoKICBFbGVtZW50cy4iRG9zZXMgQWRtaW5pc3RlcmVkIHRvIFBhdGllbnQiIEkKICAgIHdoZXJlIEkub2NjdXJyZW5jZS50b0ludGVydmFsKCkgc2FtZSBkYXkgb3IgYmVmb3JlIFRvZGF5CgovKgpAZGF0YUVsZW1lbnQ6IERyYWZ0IE1lZGljYXRpb24gUmVxdWVzdCBmb3IgUGF0aWVudAoqLwpkZWZpbmUgIkRyYWZ0IE1lZGljYXRpb24gUmVxdWVzdCBmb3IgUGF0aWVudCI6CiAgRWxlbWVudHMuIkRyYWZ0IE1lZGljYXRpb24gUmVxdWVzdCBmb3IgUGF0aWVudCIgTVIKICAgIHdoZXJlIE1SLmVuY291bnRlci5yZWZlcmVuY2VzKEVuY291bnRlcklkKSAKICAgICAgb3IgTVIuYXV0aG9yZWRPbi50b0ludGVydmFsKCkgc2FtZSBkYXkgb3IgYmVmb3JlIFRvZGF5CiAgCXNvcnQgYnkgZGF0ZSBmcm9tIChhdXRob3JlZE9uIGFzIEZISVIuZGF0ZVRpbWUpIGRlc2MKCi8qCkBkYXRhRWxlbWVudCBMaXZlIGF0dGVudWF0ZWQgdmFjY2luZXMKKi8KZGVmaW5lICJMaXZlIEF0dGVudWF0ZWQgVmFjY2luZXMiOgogIEVsZW1lbnRzLiJMaXZlIEF0dGVudWF0ZWQgVmFjY2luZXMiIEkKICAgIHdoZXJlIEkub2NjdXJyZW5jZS50b0ludGVydmFsKCkgc2FtZSBkYXkgb3IgYmVmb3JlIFRvZGF5CgovKgpAZGF0YUVsZW1lbnQgRGF0ZSBhbmQgdGltZSBvZiBsYXN0IGxpdmUgYXR0ZW51YXRlZCB2YWNjaW5lCiovCmRlZmluZSAiRGF0ZSBvZiBMYXRlc3QgTGl2ZSBBdHRlbnVhdGVkIFZhY2NpbmUiOgogIGRhdGUgZnJvbSBzdGFydCBvZiAiTGl2ZSBBdHRlbnVhdGVkIFZhY2NpbmVzIi5tb3N0UmVjZW50KCkub2NjdXJyZW5jZS50b0ludGVydmFsKCkKICAKLyoqIAogKiBAZGF0YUVsZW1lbnQgUGF0aWVudCBhZ2UgaW4geWVhcnMKICovCmRlZmluZSAiQ3VycmVudCBQYXRpZW50IEFnZSBJbiBZZWFycyI6CiAgQWdlSW5ZZWFyc0F0KFRvZGF5KQoKLyoqIAogKiBAZGF0YUVsZW1lbnQgUGF0aWVudCBhZ2UgaW4gbW9udGhzCiAqLwpkZWZpbmUgIkN1cnJlbnQgUGF0aWVudCBBZ2UgSW4gTW9udGhzIjoKICBBZ2VJbk1vbnRoc0F0KFRvZGF5KQoKLyoqIAogKiBAZGF0YUVsZW1lbnQgUGF0aWVudCBhZ2UgaW4gd2Vla3MKICovCmRlZmluZSAiQ3VycmVudCBQYXRpZW50IEFnZSBJbiBXZWVrcyI6CiAgQWdlSW5XZWVrc0F0KFRvZGF5KQoKLyoqIAogKiBAZGF0YUVsZW1lbnQgUGF0aWVudCBhZ2UgaW4gZGF5cwogKi8KZGVmaW5lICJDdXJyZW50IFBhdGllbnQgQWdlIEluIERheXMiOgogIEFnZUluRGF5c0F0KFRvZGF5KQoKLyoKQGlucHV0OiBObyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZApAcHNldWRvY29kZTogVG9kYXkncyBkYXRlIOKIkiBsYXRlc3QgIkRhdGUgYW5kIHRpbWUgb2YgdmFjY2luYXRpb24iICh3aGVyZSAiTGl2ZSB2YWNjaW5lIiA9IFRSVUUpIElTIE5VTEwKKi8KZGVmaW5lICJObyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCI6CiAgbm90IGV4aXN0cygiTGl2ZSBBdHRlbnVhdGVkIFZhY2NpbmVzIikKCi8qCkBpbnB1dDogTGl2ZSB2YWNjaW5lIHdhcyBhZG1pbmlzdGVyZWQgaW4gdGhlIGxhc3QgNCB3ZWVrcwpAcHNldWRvY29kZTogVG9kYXkncyBkYXRlIOKIkiBsYXRlc3QgIkRhdGUgYW5kIHRpbWUgb2YgdmFjY2luYXRpb24iICh3aGVyZSAiTGl2ZSB2YWNjaW5lIiA9IFRSVUUpIDwgNCB3ZWVrcwoqLwpkZWZpbmUgIkxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkIGluIHRoZSBsYXN0IDQgd2Vla3MiOgoJIkRhdGUgb2YgTGF0ZXN0IExpdmUgQXR0ZW51YXRlZCBWYWNjaW5lIiBpcyBub3QgbnVsbCAKICAgIGFuZCBkdXJhdGlvbiBpbiB3ZWVrcyBiZXR3ZWVuICJEYXRlIG9mIExhdGVzdCBMaXZlIEF0dGVudWF0ZWQgVmFjY2luZSIgYW5kIFRvZGF5IDwgNAoKLyoKQGlucHV0OiBObyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgbGFzdCA0IHdlZWtzCkBwc2V1ZG9jb2RlOiBUb2RheSdzIGRhdGUg4oiSIGxhdGVzdCAiRGF0ZSBhbmQgdGltZSBvZiB2YWNjaW5hdGlvbiIgKHdoZXJlICJMaXZlIHZhY2NpbmUiID0gVFJVRSkg4omlIDQgd2Vla3MKKi8KZGVmaW5lICJObyBsaXZlIHZhY2NpbmUgd2FzIGFkbWluaXN0ZXJlZCBpbiB0aGUgbGFzdCA0IHdlZWtzIjoKICBub3QoIkxpdmUgdmFjY2luZSB3YXMgYWRtaW5pc3RlcmVkIGluIHRoZSBsYXN0IDQgd2Vla3MiKQoKLyoKQGlucHV0OiBUaGUgY2xpZW50IGlzIHByZWduYW50CkBwc2V1ZG9jb2RlOiAiUG90ZW50aWFsIGNvbnRyYWluZGljYXRpb25zIiA9ICJDdXJyZW50bHkgcHJlZ25hbnQiCiovCmRlZmluZSAiVGhlIGNsaWVudCBpcyBwcmVnbmFudCI6CiAgZXhpc3RzICJDSSBDdXJyZW50bHkgcHJlZ25hbnQgT2JzZXJ2YXRpb24iCiAgb3IgZXhpc3RzICJDSSBDdXJyZW50bHkgcHJlZ25hbnQgQ29uZGl0aW9uIgogIG9yIGV4aXN0cyBXRS4iUHJlZ25hbnQgT2JzZXJ2YXRpb24iCgovKgpAaW50ZXJuYWw6IE9ic2VydmF0aW9uIGZvciBjdXJyZW50bHkgcHJlZ25hbnQKKi8KZGVmaW5lICJDSSBDdXJyZW50bHkgcHJlZ25hbnQgT2JzZXJ2YXRpb24iOgogIEVsZW1lbnRzLiJDSSBDdXJyZW50bHkgcHJlZ25hbnQgT2JzZXJ2YXRpb24iIE8KICAgIHdoZXJlIE8uZW5jb3VudGVyLnJlZmVyZW5jZXMoRW5jb3VudGVySWQpCiAgICAgIG9yIE8uZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKSBzdGFydHMgc2FtZSBkYXkgb3IgYWZ0ZXIgVG9kYXkgLSA5IG1vbnRocwoKLyoKQGludGVybmFsOiBDb25kaXRpb24gZm9yIGN1cnJlbnRseSBwcmVnbmFudAoqLwpkZWZpbmUgIkNJIEN1cnJlbnRseSBwcmVnbmFudCBDb25kaXRpb24iOgogIEVsZW1lbnRzLiJDSSBDdXJyZW50bHkgcHJlZ25hbnQgQ29uZGl0aW9uIiBDCiAgICB3aGVyZSBDLnByZXZhbGVuY2VJbnRlcnZhbCgpIGluY2x1ZGVzIFRvZGF5CgovKgpAaW5wdXQ6IFRoZSBjbGllbnQgaGFzIGhpc3Rvcnkgb2YgYW5hcGh5bGFjdGljIHJlYWN0aW9ucwpAcHNldWRvY29kZTogIlBvdGVudGlhbCBjb250cmFpbmRpY2F0aW9ucyIgPSAiSGlzdG9yeSBvZiBhbmFwaHlsYWN0aWMgcmVhY3Rpb25zIgoqLwpkZWZpbmUgIlRoZSBjbGllbnQgaGFzIGhpc3Rvcnkgb2YgYW5hcGh5bGFjdGljIHJlYWN0aW9ucyI6CiAgZXhpc3RzICJDSSBIaXN0b3J5IG9mIGFuYXBoeWxhY3RpYyByZWFjdGlvbnMgT2JzZXJ2YXRpb24iCiAgICBvciBleGlzdHMgIkNJIEhpc3Rvcnkgb2YgYW5hcGh5bGFjdGljIHJlYWN0aW9ucyBDb25kaXRpb24iCiAgICAKLyoKQGludGVybmFsOiBPYnNlcnZhdGlvbiBmb3IgSGlzdG9yeSBvZiBhbmFwaHlsYWN0aWMgcmVhY3Rpb25zCiovCmRlZmluZSAiQ0kgSGlzdG9yeSBvZiBhbmFwaHlsYWN0aWMgcmVhY3Rpb25zIE9ic2VydmF0aW9uIjoKICBFbGVtZW50cy4iQ0kgSGlzdG9yeSBvZiBhbmFwaHlsYWN0aWMgcmVhY3Rpb25zIE9ic2VydmF0aW9uIi5lbmNvdW50ZXJPck9uQmVmb3JlKEVuY291bnRlcklkLCBUb2RheSkKCi8qCkBpbnRlcm5hbDogQ29uZGl0aW9uIGZvciBIaXN0b3J5IG9mIGFuYXBoeWxhY3RpYyByZWFjdGlvbnMKKi8KZGVmaW5lICJDSSBIaXN0b3J5IG9mIGFuYXBoeWxhY3RpYyByZWFjdGlvbnMgQ29uZGl0aW9uIjoKICBFbGVtZW50cy4iQ0kgSGlzdG9yeSBvZiBhbmFwaHlsYWN0aWMgcmVhY3Rpb25zIENvbmRpdGlvbiIgQwogICAgd2hlcmUgQy5wcmV2YWxlbmNlSW50ZXJ2YWwoKSBpbmNsdWRlcyBUb2RheQoKLyoKQGlucHV0OiBUaGUgY2xpZW50IGhhcyBoaXN0b3J5IG9mIHNldmVyZSBhbGxlcmdpYyByZWFjdGlvbnMKQHBzZXVkb2NvZGU6ICJQb3RlbnRpYWwgY29udHJhaW5kaWNhdGlvbnMiID0gIlNldmVyZSBhbGxlcmdpYyByZWFjdGlvbnMiCiovCmRlZmluZSAiVGhlIGNsaWVudCBoYXMgaGlzdG9yeSBvZiBzZXZlcmUgYWxsZXJnaWMgcmVhY3Rpb25zIjoKICBleGlzdHMgIkNJIFNldmVyZSBhbGxlcmdpYyByZWFjdGlvbnMgT2JzZXJ2YXRpb24iCiAgICBvciBleGlzdHMgIkNJIFNldmVyZSBhbGxlcmdpYyByZWFjdGlvbnMgQ29uZGl0aW9uIgogICAgCi8qCkBpbnRlcm5hbDogT2JzZXJ2YXRpb24gZm9yIFNldmVyZSBhbGxlcmdpYyByZWFjdGlvbnMKKi8KZGVmaW5lICJDSSBTZXZlcmUgYWxsZXJnaWMgcmVhY3Rpb25zIE9ic2VydmF0aW9uIjoKICBFbGVtZW50cy4iQ0kgU2V2ZXJlIGFsbGVyZ2ljIHJlYWN0aW9ucyBPYnNlcnZhdGlvbiIuZW5jb3VudGVyT3JPbkJlZm9yZShFbmNvdW50ZXJJZCwgVG9kYXkpCgovKgpAaW50ZXJuYWw6IENvbmRpdGlvbiBmb3IgU2V2ZXJlIGFsbGVyZ2ljIHJlYWN0aW9ucwoqLwpkZWZpbmUgIkNJIFNldmVyZSBhbGxlcmdpYyByZWFjdGlvbnMgQ29uZGl0aW9uIjoKICBFbGVtZW50cy4iQ0kgU2V2ZXJlIGFsbGVyZ2ljIHJlYWN0aW9ucyBDb25kaXRpb24iIEMKICAgIHdoZXJlIEMucHJldmFsZW5jZUludGVydmFsKCkgaW5jbHVkZXMgVG9kYXkKCi8qCkBpbnB1dDogVGhlIGNsaWVudCBpcyBzZXZlcmVseSBpbW11bm9jb21wcm9taXNlZApAcHNldWRvY29kZTogIlBvdGVudGlhbCBjb250cmFpbmRpY2F0aW9ucyIgPSAiU2V2ZXJlbHkgaW1tdW5vY29tcHJvbWlzZWQiCiovCmRlZmluZSAiVGhlIGNsaWVudCBpcyBzZXZlcmVseSBpbW11bm9jb21wcm9taXNlZCI6CiAgZXhpc3RzICJDSSBTZXZlcmVseSBpbW11bm9jb21wcm9taXNlZCBPYnNlcnZhdGlvbiIKICAgIG9yIGV4aXN0cyAiQ0kgU2V2ZXJlbHkgaW1tdW5vY29tcHJvbWlzZWQgQ29uZGl0aW9uIgogICAgCi8qCkBpbnRlcm5hbDogT2JzZXJ2YXRpb24gZm9yIFNldmVyZWx5IGltbXVub2NvbXByb21pc2VkCiovCmRlZmluZSAiQ0kgU2V2ZXJlbHkgaW1tdW5vY29tcHJvbWlzZWQgT2JzZXJ2YXRpb24iOgogIEVsZW1lbnRzLiJDSSBTZXZlcmVseSBpbW11bm9jb21wcm9taXNlZCBPYnNlcnZhdGlvbiIuZW5jb3VudGVyT3JPbkJlZm9yZShFbmNvdW50ZXJJZCwgVG9kYXkpCgovKgpAaW50ZXJuYWw6IENvbmRpdGlvbiBmb3IgU2V2ZXJlbHkgaW1tdW5vY29tcHJvbWlzZWQKKi8KZGVmaW5lICJDSSBTZXZlcmVseSBpbW11bm9jb21wcm9taXNlZCBDb25kaXRpb24iOgogIEVsZW1lbnRzLiJDSSBTZXZlcmVseSBpbW11bm9jb21wcm9taXNlZCBDb25kaXRpb24iIEMKICAgIHdoZXJlIEMucHJldmFsZW5jZUludGVydmFsKCkgaW5jbHVkZXMgVG9kYXkKCi8qCkBpbnB1dDogVGhlIGNsaWVudCBpcyBzZXZlcmVseSBpbW11bm9zdXBwcmVzc2VkCkBwc2V1ZG9jb2RlOiAiUG90ZW50aWFsIGNvbnRyYWluZGljYXRpb25zIiA9ICJTZXZlcmVseSBpbW11bm9zdXBwcmVzc2VkIgoqLwpkZWZpbmUgIlRoZSBjbGllbnQgaXMgc2V2ZXJlbHkgaW1tdW5vc3VwcHJlc3NlZCI6CiAgZXhpc3RzICJDSSBTZXZlcmVseSBpbW11bm9zdXBwcmVzc2VkIE9ic2VydmF0aW9uIgogICAgb3IgZXhpc3RzICJDSSBTZXZlcmVseSBpbW11bm9zdXBwcmVzc2VkIENvbmRpdGlvbiIKICAgIAovKgpAaW50ZXJuYWw6IE9ic2VydmF0aW9uIGZvciBTZXZlcmVseSBpbW11bm9zdXBwcmVzc2VkCiovCmRlZmluZSAiQ0kgU2V2ZXJlbHkgaW1tdW5vc3VwcHJlc3NlZCBPYnNlcnZhdGlvbiI6CiAgRWxlbWVudHMuIkNJIFNldmVyZWx5IGltbXVub3N1cHByZXNzZWQgT2JzZXJ2YXRpb24iLmVuY291bnRlck9yT25CZWZvcmUoRW5jb3VudGVySWQsIFRvZGF5KQoKLyoKQGludGVybmFsOiBDb25kaXRpb24gZm9yIFNldmVyZWx5IGltbXVub3N1cHByZXNzZWQKKi8KZGVmaW5lICJDSSBTZXZlcmVseSBpbW11bm9zdXBwcmVzc2VkIENvbmRpdGlvbiI6CiAgRWxlbWVudHMuIkNJIFNldmVyZWx5IGltbXVub3N1cHByZXNzZWQgQ29uZGl0aW9uIiBDCiAgICB3aGVyZSBDLnByZXZhbGVuY2VJbnRlcnZhbCgpIGluY2x1ZGVzIFRvZGF5CgovKgpAaW5wdXQ6IFRoZSBjbGllbnQgaGFzIGEgc3ltcHRvbWF0aWMgSElWIGluZmVjdGlvbgpAcHNldWRvY29kZTogIlBvdGVudGlhbCBjb250cmFpbmRpY2F0aW9ucyIgPSAiU3ltcHRvbWF0aWMgSElWIGluZmVjdGlvbiIKKi8KZGVmaW5lICJUaGUgY2xpZW50IGhhcyBhIHN5bXB0b21hdGljIEhJViBpbmZlY3Rpb24iOgogIGV4aXN0cyAiQ0kgU3ltcHRvbWF0aWMgSElWIGluZmVjdGlvbiBPYnNlcnZhdGlvbiIKICAgIG9yIGV4aXN0cyAiQ0kgU3ltcHRvbWF0aWMgSElWIGluZmVjdGlvbiBDb25kaXRpb24iCiAgICAKLyoKQGludGVybmFsOiBPYnNlcnZhdGlvbiBmb3IgU3ltcHRvbWF0aWMgSElWIGluZmVjdGlvbgoqLwpkZWZpbmUgIkNJIFN5bXB0b21hdGljIEhJViBpbmZlY3Rpb24gT2JzZXJ2YXRpb24iOgogIEVsZW1lbnRzLiJDSSBTeW1wdG9tYXRpYyBISVYgaW5mZWN0aW9uIE9ic2VydmF0aW9uIi5lbmNvdW50ZXJPck9uQmVmb3JlKEVuY291bnRlcklkLCBUb2RheSkKCi8qCkBpbnRlcm5hbDogQ29uZGl0aW9uIGZvciBTeW1wdG9tYXRpYyBISVYgaW5mZWN0aW9uCiovCmRlZmluZSAiQ0kgU3ltcHRvbWF0aWMgSElWIGluZmVjdGlvbiBDb25kaXRpb24iOgogIEVsZW1lbnRzLiJDSSBTeW1wdG9tYXRpYyBISVYgaW5mZWN0aW9uIENvbmRpdGlvbiIgQwogICAgd2hlcmUgQy5wcmV2YWxlbmNlSW50ZXJ2YWwoKSBpbmNsdWRlcyBUb2RheQoKLyoKQGlucHV0OiBUaGUgY2xpZW50IGhhcyBpbW11bm9kZWZpY2llbmN5IHN5bmRyb21lcwpAcHNldWRvY29kZTogIlBvdGVudGlhbCBjb250cmFpbmRpY2F0aW9ucyIgPSAiSW1tdW5vZGVmaWNpZW5jeSBzeW5kcm9tZXMiCiovCmRlZmluZSAiVGhlIGNsaWVudCBoYXMgaW1tdW5vZGVmaWNpZW5jeSBzeW5kcm9tZXMiOgogIGV4aXN0cyAiQ0kgSW1tdW5vZGVmaWNpZW5jeSBzeW5kcm9tZXMgT2JzZXJ2YXRpb24iCiAgICBvciBleGlzdHMgIkNJIEltbXVub2RlZmljaWVuY3kgc3luZHJvbWVzIENvbmRpdGlvbiIKICAgIAovKgpAaW50ZXJuYWw6IE9ic2VydmF0aW9uIGZvciBJbW11bm9kZWZpY2llbmN5IHN5bmRyb21lcwoqLwpkZWZpbmUgIkNJIEltbXVub2RlZmljaWVuY3kgc3luZHJvbWVzIE9ic2VydmF0aW9uIjoKICBFbGVtZW50cy4iQ0kgSW1tdW5vZGVmaWNpZW5jeSBzeW5kcm9tZXMgT2JzZXJ2YXRpb24iLmVuY291bnRlck9yT25CZWZvcmUoRW5jb3VudGVySWQsIFRvZGF5KQoKLyoKQGludGVybmFsOiBDb25kaXRpb24gZm9yIEltbXVub2RlZmljaWVuY3kgc3luZHJvbWVzCiovCmRlZmluZSAiQ0kgSW1tdW5vZGVmaWNpZW5jeSBzeW5kcm9tZXMgQ29uZGl0aW9uIjoKICBFbGVtZW50cy4iQ0kgSW1tdW5vZGVmaWNpZW5jeSBzeW5kcm9tZXMgQ29uZGl0aW9uIiBDCiAgICB3aGVyZSBDLnByZXZhbGVuY2VJbnRlcnZhbCgpIGluY2x1ZGVzIFRvZGF5CgovKgpAaW5wdXQ6IFRoZSBjbGllbnQgaXMgZXhwb3NlZCB0byBpbW11bm9zdXBwcmVzc2l2ZSB0cmVhdG1lbnQKQHBzZXVkb2NvZGU6ICJQb3RlbnRpYWwgY29udHJhaW5kaWNhdGlvbnMiID0gIkV4cG9zZWQgdG8gaW1tdW5vc3VwcHJlc3NpdmUgdHJlYXRtZW50IgoqLwpkZWZpbmUgIlRoZSBjbGllbnQgaXMgZXhwb3NlZCB0byBpbW11bm9zdXBwcmVzc2l2ZSB0cmVhdG1lbnQiOgogIGV4aXN0cyAiQ0kgRXhwb3NlZCB0byBpbW11bm9zdXBwcmVzc2l2ZSB0cmVhdG1lbnQgT2JzZXJ2YXRpb24iCiAgICBvciBleGlzdHMgIkNJIEV4cG9zZWQgdG8gaW1tdW5vc3VwcHJlc3NpdmUgdHJlYXRtZW50IENvbmRpdGlvbiIKICAgIAovKgpAaW50ZXJuYWw6IE9ic2VydmF0aW9uIGZvciBFeHBvc2VkIHRvIGltbXVub3N1cHByZXNzaXZlIHRyZWF0bWVudAoqLwpkZWZpbmUgIkNJIEV4cG9zZWQgdG8gaW1tdW5vc3VwcHJlc3NpdmUgdHJlYXRtZW50IE9ic2VydmF0aW9uIjoKICBFbGVtZW50cy4iQ0kgRXhwb3NlZCB0byBpbW11bm9zdXBwcmVzc2l2ZSB0cmVhdG1lbnQgT2JzZXJ2YXRpb24iLmVuY291bnRlck9yT25CZWZvcmUoRW5jb3VudGVySWQsIFRvZGF5KQoKLyoKQGludGVybmFsOiBDb25kaXRpb24gZm9yIEV4cG9zZWQgdG8gaW1tdW5vc3VwcHJlc3NpdmUgdHJlYXRtZW50CiovCmRlZmluZSAiQ0kgRXhwb3NlZCB0byBpbW11bm9zdXBwcmVzc2l2ZSB0cmVhdG1lbnQgQ29uZGl0aW9uIjoKICBFbGVtZW50cy4iQ0kgRXhwb3NlZCB0byBpbW11bm9zdXBwcmVzc2l2ZSB0cmVhdG1lbnQgQ29uZGl0aW9uIiBDCiAgICB3aGVyZSBDLnByZXZhbGVuY2VJbnRlcnZhbCgpIGluY2x1ZGVzIFRvZGF5CgovKgpAaW5wdXQ6IFRoZSBjbGllbnQgY3VycmVudGx5IGhhcyBhIHNldmVyZSBhY3V0ZSBpbGxuZXNzCkBwc2V1ZG9jb2RlOiAiUG90ZW50aWFsIGNvbnRyYWluZGljYXRpb25zIiA9ICJTZXZlcmUgYWN1dGUgaWxsbmVzcyIKKi8KZGVmaW5lICJUaGUgY2xpZW50IGN1cnJlbnRseSBoYXMgYSBzZXZlcmUgYWN1dGUgaWxsbmVzcyI6CiAgZXhpc3RzICJDSSBTZXZlcmUgYWN1dGUgaWxsbmVzcyBPYnNlcnZhdGlvbiIKICAgIG9yIGV4aXN0cyAiQ0kgU2V2ZXJlIGFjdXRlIGlsbG5lc3MgQ29uZGl0aW9uIgogICAgCi8qCkBpbnRlcm5hbDogT2JzZXJ2YXRpb24gZm9yIFNldmVyZSBhY3V0ZSBpbGxuZXNzCiovCmRlZmluZSAiQ0kgU2V2ZXJlIGFjdXRlIGlsbG5lc3MgT2JzZXJ2YXRpb24iOgogIEVsZW1lbnRzLiJDSSBTZXZlcmUgYWN1dGUgaWxsbmVzcyBPYnNlcnZhdGlvbiIuZW5jb3VudGVyT3JPbkJlZm9yZShFbmNvdW50ZXJJZCwgVG9kYXkpCgovKgpAaW50ZXJuYWw6IENvbmRpdGlvbiBmb3IgU2V2ZXJlIGFjdXRlIGlsbG5lc3MKKi8KZGVmaW5lICJDSSBTZXZlcmUgYWN1dGUgaWxsbmVzcyBDb25kaXRpb24iOgogIEVsZW1lbnRzLiJDSSBTZXZlcmUgYWN1dGUgaWxsbmVzcyBDb25kaXRpb24iIEMKICAgIHdoZXJlIEMucHJldmFsZW5jZUludGVydmFsKCkgaW5jbHVkZXMgVG9kYXkKCi8qCkBpbnB1dDogVGhlIGNsaWVudCBoYXMgcHJpb3IgaGlzdG9yeSBvZiBpbnR1c3N1c2NlcHRpb24KQHBzZXVkb2NvZGU6ICJQb3RlbnRpYWwgY29udHJhaW5kaWNhdGlvbnMiID0gIlByaW9yIGhpc3Rvcnkgb2YgaW50dXNzdXNjZXB0aW9uIgoqLwpkZWZpbmUgIlRoZSBjbGllbnQgaGFzIHByaW9yIGhpc3Rvcnkgb2YgaW50dXNzdXNjZXB0aW9uIjoKICBleGlzdHMgIkNJIFByaW9yIGhpc3Rvcnkgb2YgaW50dXNzdXNjZXB0aW9uIE9ic2VydmF0aW9uIgogICAgb3IgZXhpc3RzICJDSSBQcmlvciBoaXN0b3J5IG9mIGludHVzc3VzY2VwdGlvbiBDb25kaXRpb24iCiAgICAKLyoKQGludGVybmFsOiBPYnNlcnZhdGlvbiBmb3IgUHJpb3IgaGlzdG9yeSBvZiBpbnR1c3N1c2NlcHRpb24KKi8KZGVmaW5lICJDSSBQcmlvciBoaXN0b3J5IG9mIGludHVzc3VzY2VwdGlvbiBPYnNlcnZhdGlvbiI6CiAgRWxlbWVudHMuIkNJIFByaW9yIGhpc3Rvcnkgb2YgaW50dXNzdXNjZXB0aW9uIE9ic2VydmF0aW9uIi5lbmNvdW50ZXJPck9uQmVmb3JlKEVuY291bnRlcklkLCBUb2RheSkKCi8qCkBpbnRlcm5hbDogQ29uZGl0aW9uIGZvciBQcmlvciBoaXN0b3J5IG9mIGludHVzc3VzY2VwdGlvbgoqLwpkZWZpbmUgIkNJIFByaW9yIGhpc3Rvcnkgb2YgaW50dXNzdXNjZXB0aW9uIENvbmRpdGlvbiI6CiAgRWxlbWVudHMuIkNJIFByaW9yIGhpc3Rvcnkgb2YgaW50dXNzdXNjZXB0aW9uIENvbmRpdGlvbiIgQwogICAgd2hlcmUgQy5wcmV2YWxlbmNlSW50ZXJ2YWwoKSBpbmNsdWRlcyBUb2RheQoKLyoKQGlucHV0OiBUaGUgY2xpZW50IGhhcyBhbHRlcmVkIGltbXVub2NvbXBldGVuY2UKQHBzZXVkb2NvZGU6ICJQb3RlbnRpYWwgY29udHJhaW5kaWNhdGlvbnMiID0gIkFsdGVyZWQgaW1tdW5vY29tcGV0ZW5jZSIKKi8KZGVmaW5lICJUaGUgY2xpZW50IGhhcyBhbHRlcmVkIGltbXVub2NvbXBldGVuY2UiOgogIGV4aXN0cyAiQ0kgQWx0ZXJlZCBpbW11bm9jb21wZXRlbmNlIE9ic2VydmF0aW9uIgogICAgb3IgZXhpc3RzICJDSSBBbHRlcmVkIGltbXVub2NvbXBldGVuY2UgQ29uZGl0aW9uIgogICAgCi8qCkBpbnRlcm5hbDogT2JzZXJ2YXRpb24gZm9yIEFsdGVyZWQgaW1tdW5vY29tcGV0ZW5jZQoqLwpkZWZpbmUgIkNJIEFsdGVyZWQgaW1tdW5vY29tcGV0ZW5jZSBPYnNlcnZhdGlvbiI6CiAgRWxlbWVudHMuIkNJIEFsdGVyZWQgaW1tdW5vY29tcGV0ZW5jZSBPYnNlcnZhdGlvbiIuZW5jb3VudGVyT3JPbkJlZm9yZShFbmNvdW50ZXJJZCwgVG9kYXkpCgovKgpAaW50ZXJuYWw6IENvbmRpdGlvbiBmb3IgQWx0ZXJlZCBpbW11bm9jb21wZXRlbmNlCiovCmRlZmluZSAiQ0kgQWx0ZXJlZCBpbW11bm9jb21wZXRlbmNlIENvbmRpdGlvbiI6CiAgRWxlbWVudHMuIkNJIEFsdGVyZWQgaW1tdW5vY29tcGV0ZW5jZSBDb25kaXRpb24iIEMKICAgIHdoZXJlIEMucHJldmFsZW5jZUludGVydmFsKCkgaW5jbHVkZXMgVG9kYXkKCi8qCkBpbnB1dDogVGhlIGNsaWVudCBoYXMgc3BpbmEgYmlmaWRhCkBwc2V1ZG9jb2RlOiAiUG90ZW50aWFsIGNvbnRyYWluZGljYXRpb25zIiA9ICJTcGluYSBiaWZpZGEiCiovCmRlZmluZSAiVGhlIGNsaWVudCBoYXMgc3BpbmEgYmlmaWRhIjoKICBleGlzdHMgIkNJIFNwaW5hIGJpZmlkYSBPYnNlcnZhdGlvbiIKICAgIG9yIGV4aXN0cyAiQ0kgU3BpbmEgYmlmaWRhIENvbmRpdGlvbiIKICAgIAovKgpAaW50ZXJuYWw6IE9ic2VydmF0aW9uIGZvciBTcGluYSBiaWZpZGEKKi8KZGVmaW5lICJDSSBTcGluYSBiaWZpZGEgT2JzZXJ2YXRpb24iOgogIEVsZW1lbnRzLiJDSSBTcGluYSBiaWZpZGEgT2JzZXJ2YXRpb24iLmVuY291bnRlck9yT25CZWZvcmUoRW5jb3VudGVySWQsIFRvZGF5KQoKLyoKQGludGVybmFsOiBDb25kaXRpb24gZm9yIFNwaW5hIGJpZmlkYQoqLwpkZWZpbmUgIkNJIFNwaW5hIGJpZmlkYSBDb25kaXRpb24iOgogIEVsZW1lbnRzLiJDSSBTcGluYSBiaWZpZGEgQ29uZGl0aW9uIiBDCiAgICB3aGVyZSBDLnByZXZhbGVuY2VJbnRlcnZhbCgpIGluY2x1ZGVzIFRvZGF5CgovKgpAaW5wdXQ6IFRoZSBjbGllbnQgaGFzIGJsYWRkZXIgZXhzdHJvcGh5CkBwc2V1ZG9jb2RlOiAiUG90ZW50aWFsIGNvbnRyYWluZGljYXRpb25zIiA9ICJCbGFkZGVyIGV4c3Ryb3BoeSIKKi8KZGVmaW5lICJUaGUgY2xpZW50IGhhcyBibGFkZGVyIGV4c3Ryb3BoeSI6CiAgZXhpc3RzICJDSSBCbGFkZGVyIGV4c3Ryb3BoeSBPYnNlcnZhdGlvbiIKICAgIG9yIGV4aXN0cyAiQ0kgQmxhZGRlciBleHN0cm9waHkgQ29uZGl0aW9uIgogICAgCi8qCkBpbnRlcm5hbDogT2JzZXJ2YXRpb24gZm9yIEJsYWRkZXIgZXhzdHJvcGh5CiovCmRlZmluZSAiQ0kgQmxhZGRlciBleHN0cm9waHkgT2JzZXJ2YXRpb24iOgogIEVsZW1lbnRzLiJDSSBCbGFkZGVyIGV4c3Ryb3BoeSBPYnNlcnZhdGlvbiIuZW5jb3VudGVyT3JPbkJlZm9yZShFbmNvdW50ZXJJZCwgVG9kYXkpCgovKgpAaW50ZXJuYWw6IENvbmRpdGlvbiBmb3IgQmxhZGRlciBleHN0cm9waHkKKi8KZGVmaW5lICJDSSBCbGFkZGVyIGV4c3Ryb3BoeSBDb25kaXRpb24iOgogIEVsZW1lbnRzLiJDSSBCbGFkZGVyIGV4c3Ryb3BoeSBDb25kaXRpb24iIEMKICAgIHdoZXJlIEMucHJldmFsZW5jZUludGVydmFsKCkgaW5jbHVkZXMgVG9kYXkKCi8qCkBpbnB1dDogVGhlIGNsaWVudCBpcyBpbW11bm9jb21wcm9taXNlZApAcHNldWRvY29kZTogIlBvdGVudGlhbCBjb250cmFpbmRpY2F0aW9ucyIgPSAiSW1tdW5vY29tcHJvbWlzZWQiCiovCmRlZmluZSAiVGhlIGNsaWVudCBpcyBpbW11bm9jb21wcm9taXNlZCI6CiAgIkNsaWVudCBpcyBpbW11bm9jb21wcm9taXNlZCIKICAgIG9yIGV4aXN0cyAiQ0kgSW1tdW5vY29tcHJvbWlzZWQgT2JzZXJ2YXRpb24iCiAgICBvciBleGlzdHMgIkNJIEltbXVub2NvbXByb21pc2VkIENvbmRpdGlvbiIKCi8qCkBpbnRlcm5hbDogT2JzZXJ2YXRpb24gZm9yIEltbXVub2NvbXByb21pc2VkCiovCmRlZmluZSAiQ0kgSW1tdW5vY29tcHJvbWlzZWQgT2JzZXJ2YXRpb24iOgogIEVsZW1lbnRzLiJDSSBJbW11bm9jb21wcm9taXNlZCBPYnNlcnZhdGlvbiIuZW5jb3VudGVyT3JPbkJlZm9yZShFbmNvdW50ZXJJZCwgVG9kYXkpCgovKgpAaW50ZXJuYWw6IENvbmRpdGlvbiBmb3IgSW1tdW5vY29tcHJvbWlzZWQKKi8KZGVmaW5lICJDSSBJbW11bm9jb21wcm9taXNlZCBDb25kaXRpb24iOgogIEVsZW1lbnRzLiJDSSBJbW11bm9jb21wcm9taXNlZCBDb25kaXRpb24iIEMKICAgIHdoZXJlIEMucHJldmFsZW5jZUludGVydmFsKCkgaW5jbHVkZXMgVG9kYXkKCi8qCkBpbnB1dDogVGhlIGNsaWVudCBpcyBwbGFubmluZyB0byBnZXQgcHJlZ25hbnQgaW4gbmV4dCBtb250aApAcHNldWRvY29kZTogIlBvdGVudGlhbCBjb250cmFpbmRpY2F0aW9ucyIgPSAiUGxhbm5pbmcgdG8gZ2V0IHByZWduYW50IGluIHRoZSBuZXh0IG1vbnRoIgoqLwpkZWZpbmUgIlRoZSBjbGllbnQgaXMgcGxhbm5pbmcgdG8gZ2V0IHByZWduYW50IGluIG5leHQgbW9udGgiOgogIGV4aXN0cyAiQ0kgUGxhbm5pbmcgdG8gZ2V0IHByZWduYW50IGluIHRoZSBuZXh0IG1vbnRoIE9ic2VydmF0aW9uIgogICAgb3IgZXhpc3RzICJDSSBQbGFubmluZyB0byBnZXQgcHJlZ25hbnQgaW4gdGhlIG5leHQgbW9udGggQ29uZGl0aW9uIgoKLyoKQGludGVybmFsOiBPYnNlcnZhdGlvbiBmb3IgUGxhbm5pbmcgdG8gZ2V0IHByZWduYW50IGluIHRoZSBuZXh0IG1vbnRoCiovCmRlZmluZSAiQ0kgUGxhbm5pbmcgdG8gZ2V0IHByZWduYW50IGluIHRoZSBuZXh0IG1vbnRoIE9ic2VydmF0aW9uIjoKICBFbGVtZW50cy4iQ0kgUGxhbm5pbmcgdG8gZ2V0IHByZWduYW50IGluIHRoZSBuZXh0IG1vbnRoIE9ic2VydmF0aW9uIi5lbmNvdW50ZXJPck9uQmVmb3JlKEVuY291bnRlcklkLCBUb2RheSkKCi8qCkBpbnRlcm5hbDogQ29uZGl0aW9uIGZvciBQbGFubmluZyB0byBnZXQgcHJlZ25hbnQgaW4gdGhlIG5leHQgbW9udGgKKi8KZGVmaW5lICJDSSBQbGFubmluZyB0byBnZXQgcHJlZ25hbnQgaW4gdGhlIG5leHQgbW9udGggQ29uZGl0aW9uIjoKICBFbGVtZW50cy4iQ0kgUGxhbm5pbmcgdG8gZ2V0IHByZWduYW50IGluIHRoZSBuZXh0IG1vbnRoIENvbmRpdGlvbiIgQwogICAgd2hlcmUgQy5wcmV2YWxlbmNlSW50ZXJ2YWwoKSBpbmNsdWRlcyBUb2RheQoKLyoKQGlucHV0OiBUaGUgY2xpZW50IGlzIHJlY2VpdmluZyBibG9vZCBwcm9kdWN0cwpAcHNldWRvY29kZTogIlBvdGVudGlhbCBjb250cmFpbmRpY2F0aW9ucyIgPSAiUmVjZWl2aW5nIGJsb29kIHByb2R1Y3RzIgoqLwpkZWZpbmUgIlRoZSBjbGllbnQgaXMgcmVjZWl2aW5nIGJsb29kIHByb2R1Y3RzIjoKICBleGlzdHMgIkNJIFJlY2VpdmluZyBibG9vZCBwcm9kdWN0cyBPYnNlcnZhdGlvbiIKICAgIG9yIGV4aXN0cyAiQ0kgUmVjZWl2aW5nIGJsb29kIHByb2R1Y3RzIENvbmRpdGlvbiIKCi8qCkBpbnRlcm5hbDogT2JzZXJ2YXRpb24gZm9yIFJlY2VpdmluZyBibG9vZCBwcm9kdWN0cwoqLwpkZWZpbmUgIkNJIFJlY2VpdmluZyBibG9vZCBwcm9kdWN0cyBPYnNlcnZhdGlvbiI6CiAgRWxlbWVudHMuIkNJIFJlY2VpdmluZyBibG9vZCBwcm9kdWN0cyBPYnNlcnZhdGlvbiIuZW5jb3VudGVyT3JPbkJlZm9yZShFbmNvdW50ZXJJZCwgVG9kYXkpCgovKgpAaW50ZXJuYWw6IENvbmRpdGlvbiBmb3IgUmVjZWl2aW5nIGJsb29kIHByb2R1Y3RzCiovCmRlZmluZSAiQ0kgUmVjZWl2aW5nIGJsb29kIHByb2R1Y3RzIENvbmRpdGlvbiI6CiAgRWxlbWVudHMuIkNJIFJlY2VpdmluZyBibG9vZCBwcm9kdWN0cyBDb25kaXRpb24iIEMKICAgIHdoZXJlIEMucHJldmFsZW5jZUludGVydmFsKCkgaW5jbHVkZXMgVG9kYXkKCi8qCkBpbnB1dDogVGhlIGNsaWVudCBoYXMgVEIgZGlzZWFzZQpAcHNldWRvY29kZTogIlBvdGVudGlhbCBjb250cmFpbmRpY2F0aW9ucyIgPSAiVEIgZGlzZWFzZSIKKi8KZGVmaW5lICJUaGUgY2xpZW50IGhhcyBUQiBkaXNlYXNlIjoKICBleGlzdHMgIkNJIFRCIGRpc2Vhc2UgT2JzZXJ2YXRpb24iCiAgICBvciBleGlzdHMgIkNJIFRCIGRpc2Vhc2UgQ29uZGl0aW9uIgoKLyoKQGludGVybmFsOiBPYnNlcnZhdGlvbiBmb3IgVEIgZGlzZWFzZQoqLwpkZWZpbmUgIkNJIFRCIGRpc2Vhc2UgT2JzZXJ2YXRpb24iOgogIEVsZW1lbnRzLiJDSSBUQiBkaXNlYXNlIE9ic2VydmF0aW9uIi5lbmNvdW50ZXJPck9uQmVmb3JlKEVuY291bnRlcklkLCBUb2RheSkKCi8qCkBpbnRlcm5hbDogQ29uZGl0aW9uIGZvciBUQiBkaXNlYXNlCiovCmRlZmluZSAiQ0kgVEIgZGlzZWFzZSBDb25kaXRpb24iOgogIEVsZW1lbnRzLiJDSSBUQiBkaXNlYXNlIENvbmRpdGlvbiIgQwogICAgd2hlcmUgQy5wcmV2YWxlbmNlSW50ZXJ2YWwoKSBpbmNsdWRlcyBUb2RheQoKLyoKQGlucHV0OiBUaGUgY2xpZW50IGlzIGxhY3RhdGluZwpAcHNldWRvY29kZTogIlBvdGVudGlhbCBjb250cmFpbmRpY2F0aW9ucyIgPSAiQnJlYXN0ZmVlZGluZyIKKi8KZGVmaW5lICJUaGUgY2xpZW50IGlzIGxhY3RhdGluZyI6CiAgZXhpc3RzICJDSSBCcmVhc3RmZWVkaW5nIE9ic2VydmF0aW9uIgogICAgb3IgZXhpc3RzICJDSSBCcmVhc3RmZWVkaW5nIENvbmRpdGlvbiIKCi8qCkBpbnRlcm5hbDogT2JzZXJ2YXRpb24gZm9yIEJyZWFzdGZlZWRpbmcKKi8KZGVmaW5lICJDSSBCcmVhc3RmZWVkaW5nIE9ic2VydmF0aW9uIjoKICBFbGVtZW50cy4iQ0kgQnJlYXN0ZmVlZGluZyBPYnNlcnZhdGlvbiIuZW5jb3VudGVyT3JPbkJlZm9yZShFbmNvdW50ZXJJZCwgVG9kYXkpCgovKgpAaW50ZXJuYWw6IENvbmRpdGlvbiBmb3IgQnJlYXN0ZmVlZGluZwoqLwpkZWZpbmUgIkNJIEJyZWFzdGZlZWRpbmcgQ29uZGl0aW9uIjoKICBFbGVtZW50cy4iQ0kgQnJlYXN0ZmVlZGluZyBDb25kaXRpb24iIEMKICAgIHdoZXJlIEMucHJldmFsZW5jZUludGVydmFsKCkgaW5jbHVkZXMgVG9kYXkKCi8qCkBpbnB1dDogVGhlIGNsaWVudCBoYXMgYWN1dGUgZ2FzdHJvZW50ZXJpdGlzCkBwc2V1ZG9jb2RlOiAiUG90ZW50aWFsIGNvbnRyYWluZGljYXRpb25zIiA9ICJBY3V0ZSBnYXN0cm9lbnRlcml0aXMiCiovCmRlZmluZSAiVGhlIGNsaWVudCBoYXMgYWN1dGUgZ2FzdHJvZW50ZXJpdGlzIjoKICBleGlzdHMgIkNJIEFjdXRlIGdhc3Ryb2VudGVyaXRpcyBPYnNlcnZhdGlvbiIKICAgIG9yIGV4aXN0cyAiQ0kgQWN1dGUgZ2FzdHJvZW50ZXJpdGlzIENvbmRpdGlvbiIKCi8qCkBpbnRlcm5hbDogT2JzZXJ2YXRpb24gZm9yIEFjdXRlIGdhc3Ryb2VudGVyaXRpcwoqLwpkZWZpbmUgIkNJIEFjdXRlIGdhc3Ryb2VudGVyaXRpcyBPYnNlcnZhdGlvbiI6CiAgRWxlbWVudHMuIkNJIEFjdXRlIGdhc3Ryb2VudGVyaXRpcyBPYnNlcnZhdGlvbiIuZW5jb3VudGVyT3JPbkJlZm9yZShFbmNvdW50ZXJJZCwgVG9kYXkpCgovKgpAaW50ZXJuYWw6IENvbmRpdGlvbiBmb3IgQWN1dGUgZ2FzdHJvZW50ZXJpdGlzCiovCmRlZmluZSAiQ0kgQWN1dGUgZ2FzdHJvZW50ZXJpdGlzIENvbmRpdGlvbiI6CiAgRWxlbWVudHMuIkNJIEFjdXRlIGdhc3Ryb2VudGVyaXRpcyBDb25kaXRpb24iIEMKICAgIHdoZXJlIEMucHJldmFsZW5jZUludGVydmFsKCkgaW5jbHVkZXMgVG9kYXkKCi8qCkBpbnB1dDogVGhlIGNsaWVudCBoYXMgbW9kZXJhdGUgdG8gc2V2ZXJlIGZldmVyCkBwc2V1ZG9jb2RlOiAiUG90ZW50aWFsIGNvbnRyYWluZGljYXRpb25zIiA9ICJNb2RlcmF0ZSB0byBzZXZlcmUgZmV2ZXIiCiovCmRlZmluZSAiVGhlIGNsaWVudCBoYXMgbW9kZXJhdGUgdG8gc2V2ZXJlIGZldmVyIjoKICBleGlzdHMgIkNJIE1vZGVyYXRlIHRvIHNldmVyZSBmZXZlciBPYnNlcnZhdGlvbiIKICAgIG9yIGV4aXN0cyAiQ0kgTW9kZXJhdGUgdG8gc2V2ZXJlIGZldmVyIENvbmRpdGlvbiIKCi8qCkBpbnRlcm5hbDogT2JzZXJ2YXRpb24gZm9yIE1vZGVyYXRlIHRvIHNldmVyZSBmZXZlcgoqLwpkZWZpbmUgIkNJIE1vZGVyYXRlIHRvIHNldmVyZSBmZXZlciBPYnNlcnZhdGlvbiI6CiAgRWxlbWVudHMuIkNJIE1vZGVyYXRlIHRvIHNldmVyZSBmZXZlciBPYnNlcnZhdGlvbiIuZW5jb3VudGVyT3JPbkJlZm9yZShFbmNvdW50ZXJJZCwgVG9kYXkpCgovKgpAaW50ZXJuYWw6IENvbmRpdGlvbiBmb3IgTW9kZXJhdGUgdG8gc2V2ZXJlIGZldmVyCiovCmRlZmluZSAiQ0kgTW9kZXJhdGUgdG8gc2V2ZXJlIGZldmVyIENvbmRpdGlvbiI6CiAgRWxlbWVudHMuIkNJIE1vZGVyYXRlIHRvIHNldmVyZSBmZXZlciBDb25kaXRpb24iIEMKICAgIHdoZXJlIEMucHJldmFsZW5jZUludGVydmFsKCkgaW5jbHVkZXMgVG9kYXkKCi8qCkBpbnB1dDogVGhlIGNsaWVudCBoYXMgaHlwZXJzZW5zaXRpdml0eSB0byBhbnkgY29tcG9uZW50IG9mIHRoZSB2YWNjaW5lCkBwc2V1ZG9jb2RlOiAiUG90ZW50aWFsIGNvbnRyYWluZGljYXRpb25zIiA9ICJIeXBlcnNlbnNpdGl2aXR5IHRvIHZhY2NpbmUgY29tcG9uZW50cyIKKi8KZGVmaW5lICJUaGUgY2xpZW50IGhhcyBoeXBlcnNlbnNpdGl2aXR5IHRvIGFueSBjb21wb25lbnQgb2YgdGhlIHZhY2NpbmUiOgogIGV4aXN0cyAiQ0kgSHlwZXJzZW5zaXRpdml0eSB0byB2YWNjaW5lIGNvbXBvbmVudHMgT2JzZXJ2YXRpb24iCiAgICBvciBleGlzdHMgIkNJIEh5cGVyc2Vuc2l0aXZpdHkgdG8gdmFjY2luZSBjb21wb25lbnRzIENvbmRpdGlvbiIKCi8qCkBpbnRlcm5hbDogT2JzZXJ2YXRpb24gZm9yIEh5cGVyc2Vuc2l0aXZpdHkgdG8gdmFjY2luZSBjb21wb25lbnRzCiovCmRlZmluZSAiQ0kgSHlwZXJzZW5zaXRpdml0eSB0byB2YWNjaW5lIGNvbXBvbmVudHMgT2JzZXJ2YXRpb24iOgogIEVsZW1lbnRzLiJDSSBIeXBlcnNlbnNpdGl2aXR5IHRvIHZhY2NpbmUgY29tcG9uZW50cyBPYnNlcnZhdGlvbiIuZW5jb3VudGVyT3JPbkJlZm9yZShFbmNvdW50ZXJJZCwgVG9kYXkpCgovKgpAaW50ZXJuYWw6IENvbmRpdGlvbiBmb3IgSHlwZXJzZW5zaXRpdml0eSB0byB2YWNjaW5lIGNvbXBvbmVudHMKKi8KZGVmaW5lICJDSSBIeXBlcnNlbnNpdGl2aXR5IHRvIHZhY2NpbmUgY29tcG9uZW50cyBDb25kaXRpb24iOgogIEVsZW1lbnRzLiJDSSBIeXBlcnNlbnNpdGl2aXR5IHRvIHZhY2NpbmUgY29tcG9uZW50cyBDb25kaXRpb24iIEMKICAgIHdoZXJlIEMucHJldmFsZW5jZUludGVydmFsKCkgaW5jbHVkZXMgVG9kYXkKCi8qCkBpbnB1dDogVGhlIGNsaWVudCBpcyBjdXJyZW50bHkgdGFraW5nIGFudGliaW90aWNzCkBwc2V1ZG9jb2RlOiAiUG90ZW50aWFsIGNvbnRyYWluZGljYXRpb25zIiA9ICJUYWtpbmcgYW50aWJpb3RpY3MiCiovCmRlZmluZSAiVGhlIGNsaWVudCBpcyBjdXJyZW50bHkgdGFraW5nIGFudGliaW90aWNzIjoKICBleGlzdHMgIkNJIFRha2luZyBhbnRpYmlvdGljcyBPYnNlcnZhdGlvbiIKICAgIG9yIGV4aXN0cyAiQ0kgVGFraW5nIGFudGliaW90aWNzIENvbmRpdGlvbiIKCi8qCkBpbnRlcm5hbDogT2JzZXJ2YXRpb24gZm9yIFRha2luZyBhbnRpYmlvdGljcwoqLwpkZWZpbmUgIkNJIFRha2luZyBhbnRpYmlvdGljcyBPYnNlcnZhdGlvbiI6CiAgRWxlbWVudHMuIkNJIFRha2luZyBhbnRpYmlvdGljcyBPYnNlcnZhdGlvbiIuZW5jb3VudGVyT3JPbkJlZm9yZShFbmNvdW50ZXJJZCwgVG9kYXkpCgovKgpAaW50ZXJuYWw6IENvbmRpdGlvbiBmb3IgVGFraW5nIGFudGliaW90aWNzCiovCmRlZmluZSAiQ0kgVGFraW5nIGFudGliaW90aWNzIENvbmRpdGlvbiI6CiAgRWxlbWVudHMuIkNJIFRha2luZyBhbnRpYmlvdGljcyBDb25kaXRpb24iIEMKICAgIHdoZXJlIEMucHJldmFsZW5jZUludGVydmFsKCkgaW5jbHVkZXMgVG9kYXkKCi8qCkBpbnB1dDogVGhlIGNsaWVudCBoYXMgY2hyb25pYyBnYXN0cm9pbnRlc3RpbmFsIGRpc2Vhc2UKQHBzZXVkb2NvZGU6ICJQb3RlbnRpYWwgY29udHJhaW5kaWNhdGlvbnMiID0gIkNocm9uaWMgZ2FzdHJvaW50ZXN0aW5hbCBkaXNlYXNlIgoqLwpkZWZpbmUgIlRoZSBjbGllbnQgaGFzIGNocm9uaWMgZ2FzdHJvaW50ZXN0aW5hbCBkaXNlYXNlIjoKICBleGlzdHMgIkNJIENocm9uaWMgZ2FzdHJvaW50ZXN0aW5hbCBkaXNlYXNlIE9ic2VydmF0aW9uIgogICAgb3IgZXhpc3RzICJDSSBDaHJvbmljIGdhc3Ryb2ludGVzdGluYWwgZGlzZWFzZSBDb25kaXRpb24iCgovKgpAaW50ZXJuYWw6IE9ic2VydmF0aW9uIGZvciBDaHJvbmljIGdhc3Ryb2ludGVzdGluYWwgZGlzZWFzZQoqLwpkZWZpbmUgIkNJIENocm9uaWMgZ2FzdHJvaW50ZXN0aW5hbCBkaXNlYXNlIE9ic2VydmF0aW9uIjoKICBFbGVtZW50cy4iQ0kgQ2hyb25pYyBnYXN0cm9pbnRlc3RpbmFsIGRpc2Vhc2UgT2JzZXJ2YXRpb24iLmVuY291bnRlck9yT25CZWZvcmUoRW5jb3VudGVySWQsIFRvZGF5KQoKLyoKQGludGVybmFsOiBDb25kaXRpb24gZm9yIENocm9uaWMgZ2FzdHJvaW50ZXN0aW5hbCBkaXNlYXNlCiovCmRlZmluZSAiQ0kgQ2hyb25pYyBnYXN0cm9pbnRlc3RpbmFsIGRpc2Vhc2UgQ29uZGl0aW9uIjoKICBFbGVtZW50cy4iQ0kgQ2hyb25pYyBnYXN0cm9pbnRlc3RpbmFsIGRpc2Vhc2UgQ29uZGl0aW9uIiBDCiAgICB3aGVyZSBDLnByZXZhbGVuY2VJbnRlcnZhbCgpIGluY2x1ZGVzIFRvZGF5CgoKCi8qCkBpbnB1dDogQ2xpZW50J3MgSElWIHN0YXR1cyBpcyBuZWdhdGl2ZSBvciB1bmtub3duCkBwc2V1ZG9jb2RlOiAiSElWIHN0YXR1cyIg4omgICJISVYtcG9zaXRpdmUiCiovCmRlZmluZSAiQ2xpZW50J3MgSElWIHN0YXR1cyBpcyBuZWdhdGl2ZSBvciB1bmtub3duIjoKICBub3QgIkNsaWVudCdzIEhJViBzdGF0dXMgaXMgcG9zaXRpdmUiCgovKgpAaW5wdXQ6IENsaWVudCdzIEhJViBzdGF0dXMgaXMgcG9zaXRpdmUKQHBzZXVkb2NvZGU6ICJISVYgc3RhdHVzIiA9ICJISVYtcG9zaXRpdmUiCiovCmRlZmluZSAiQ2xpZW50J3MgSElWIHN0YXR1cyBpcyBwb3NpdGl2ZSI6CiAgZXhpc3RzKCAoRWxlbWVudHMuIkhJViBzdGF0dXMgT2JzZXJ2YXRpb24iLmVuY291bnRlck9yT25CZWZvcmUoRW5jb3VudGVySWQsIFRvZGF5KSkgTwogICAgd2hlcmUgTy52YWx1ZSB+IENvbmNlcHRzLiJISVYtcG9zaXRpdmUiICkKCi8qCkBpbnRlcm5hbDogQ3VycmVudGx5IG9uIEFSVCBPYnNlcnZhdGlvbgoqLwpkZWZpbmUgIkN1cnJlbnRseSBvbiBBUlQgT2JzZXJ2YXRpb24iOgogIEVsZW1lbnRzLiJDdXJyZW50bHkgb24gQVJUIE9ic2VydmF0aW9uIi5lbmNvdW50ZXJPck9uQmVmb3JlKEVuY291bnRlcklkLCBUb2RheSkubW9zdFJlY2VudCgpCgovKgpAaW5wdXQ6IENsaWVudCBpcyBjdXJyZW50bHkgcmVjZWl2aW5nIGFudGlyZXRyb3ZpcmFsIHRoZXJhcHkKQHBzZXVkb2NvZGU6ICJDdXJyZW50bHkgb24gQVJUIiA9IFRSVUUKKi8KZGVmaW5lICJDbGllbnQgaXMgY3VycmVudGx5IHJlY2VpdmluZyBhbnRpcmV0cm92aXJhbCB0aGVyYXB5IjoKICAiQ3VycmVudGx5IG9uIEFSVCBPYnNlcnZhdGlvbiIgaXMgbm90IG51bGwKICBhbmQgIkN1cnJlbnRseSBvbiBBUlQgT2JzZXJ2YXRpb24iLnZhbHVlID0gdHJ1ZQoKLyoKQGlucHV0OiBDbGllbnQgaXMgY3VycmVudGx5IG5vdCByZWNlaXZpbmcgYW50aXJldHJvdmlyYWwgdGhlcmFweQpAcHNldWRvY29kZTogIkN1cnJlbnRseSBvbiBBUlQiID0gRkFMU0UKKi8KZGVmaW5lICJDbGllbnQgaXMgY3VycmVudGx5IG5vdCByZWNlaXZpbmcgYW50aXJldHJvdmlyYWwgdGhlcmFweSI6CiAgIkN1cnJlbnRseSBvbiBBUlQgT2JzZXJ2YXRpb24iIGlzIG51bGwKICBvciAiQ3VycmVudGx5IG9uIEFSVCBPYnNlcnZhdGlvbiIudmFsdWUgPSBmYWxzZQogIAovKgpAaW50ZXJuYWw6IEltbXVub2xvZ2ljYWxseSBzdGFibGUgT2JzZXJ2YXRpb24KKi8KZGVmaW5lICJJbW11bm9sb2dpY2FsbHkgc3RhYmxlIE9ic2VydmF0aW9uIjoKICBFbGVtZW50cy4iSW1tdW5vbG9naWNhbGx5IHN0YWJsZSBPYnNlcnZhdGlvbiIuZW5jb3VudGVyT3JPbkJlZm9yZShFbmNvdW50ZXJJZCwgVG9kYXkpCgovKgpAaW5wdXQ6IENsaWVudCBpcyBpbW11bm9sb2dpY2FsbHkgc3RhYmxlCkBwc2V1ZG9jb2RlOiAiSW1tdW5vbG9naWNhbGx5IHN0YWJsZSIgPSBUUlVFCiovCmRlZmluZSAiQ2xpZW50IGlzIGltbXVub2xvZ2ljYWxseSBzdGFibGUiOgogIGV4aXN0cygiSW1tdW5vbG9naWNhbGx5IHN0YWJsZSBPYnNlcnZhdGlvbiIpCiAgYW5kIEZpcnN0KCJJbW11bm9sb2dpY2FsbHkgc3RhYmxlIE9ic2VydmF0aW9uIikudmFsdWUgPSB0cnVlCgovKgpAaW5wdXQ6IENsaWVudCBpcyBub3QgaW1tdW5vbG9naWNhbGx5IHN0YWJsZQpAcHNldWRvY29kZTogIkltbXVub2xvZ2ljYWxseSBzdGFibGUiID0gRkFMU0UKKi8KZGVmaW5lICJDbGllbnQgaXMgbm90IGltbXVub2xvZ2ljYWxseSBzdGFibGUiOgogIGV4aXN0cygiSW1tdW5vbG9naWNhbGx5IHN0YWJsZSBPYnNlcnZhdGlvbiIpCiAgYW5kIEZpcnN0KCJJbW11bm9sb2dpY2FsbHkgc3RhYmxlIE9ic2VydmF0aW9uIikudmFsdWUgPSBmYWxzZQoKLyoKQGludGVybmFsOiBJbW11bm9sb2dpY2FsbHkgc3RhYmxlIE9ic2VydmF0aW9uCiovCmRlZmluZSAiVEIgaW5mZWN0aW9uIHRlc3QgcmVzdWx0IE9ic2VydmF0aW9uIjoKICBFbGVtZW50cy4iVEIgaW5mZWN0aW9uIHRlc3QgcmVzdWx0IE9ic2VydmF0aW9uIi5lbmNvdW50ZXJPck9uQmVmb3JlKEVuY291bnRlcklkLCBUb2RheSkKCi8qCkBpbnB1dDogQ2xpZW50J3MgVEIgaW5mZWN0aW9uIHRlc3QgcmVzdWx0IGlzIG5lZ2F0aXZlCkBwc2V1ZG9jb2RlOiAiVEIgaW5mZWN0aW9uIHRlc3QgcmVzdWx0IiA9ICJOZWdhdGl2ZSIKKi8KZGVmaW5lICJDbGllbnQncyBUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQgaXMgbmVnYXRpdmUiOgogIGV4aXN0cygiVEIgaW5mZWN0aW9uIHRlc3QgcmVzdWx0IE9ic2VydmF0aW9uIikKICBhbmQgRmlyc3QoICJUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQgT2JzZXJ2YXRpb24iICkudmFsdWUgfiBDb25jZXB0cy4iVEItTmVnYXRpdmUiCi8qCkBpbnB1dDogQ2xpZW50J3MgVEIgaW5mZWN0aW9uIHRlc3QgcmVzdWx0IGlzIHVua25vd24gKHRlc3Qgbm90IGRvbmUgb3Igbm8gcmVzdWx0IHlldCkKQHBzZXVkb2NvZGU6ICJUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQiIElTIE5VTEwKKi8KZGVmaW5lICJDbGllbnQncyBUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQgaXMgdW5rbm93biAodGVzdCBub3QgZG9uZSBvciBubyByZXN1bHQgeWV0KSI6CiAgbm90IGV4aXN0cyggIlRCIGluZmVjdGlvbiB0ZXN0IHJlc3VsdCBPYnNlcnZhdGlvbiIgKSBvciAoCiAgICBub3QgKCJDbGllbnQncyBUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQgaXMgbmVnYXRpdmUiKSBhbmQgbm90ICgiQ2xpZW50J3MgVEIgaW5mZWN0aW9uIHRlc3QgcmVzdWx0IGlzIHBvc2l0aXZlIikKICApCi8qCkBpbnB1dDogQ2xpZW50J3MgVEIgaW5mZWN0aW9uIHRlc3QgcmVzdWx0IGlzIHBvc2l0aXZlCkBwc2V1ZG9jb2RlOiAiVEIgaW5mZWN0aW9uIHRlc3QgcmVzdWx0IiA9ICJQb3NpdGl2ZSIKKi8KZGVmaW5lICJDbGllbnQncyBUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQgaXMgcG9zaXRpdmUiOgogIGV4aXN0cygiVEIgaW5mZWN0aW9uIHRlc3QgcmVzdWx0IE9ic2VydmF0aW9uIikKICBhbmQgRmlyc3QoICJUQiBpbmZlY3Rpb24gdGVzdCByZXN1bHQgT2JzZXJ2YXRpb24iICkudmFsdWUgfiBDb25jZXB0cy4iVEItUG9zaXRpdmUiCgovKgpAaW50ZXJuYWw6IENsaW5pY2FsbHkgd2VsbCBPYnNlcnZhdGlvbgoqLwpkZWZpbmUgIkNsaW5pY2FsbHkgd2VsbCBPYnNlcnZhdGlvbiI6CiAgRWxlbWVudHMuIkNsaW5pY2FsbHkgd2VsbCBPYnNlcnZhdGlvbiIuZW5jb3VudGVyT3JPbkJlZm9yZShFbmNvdW50ZXJJZCwgVG9kYXkpCgovKgpAaW5wdXQ6IENsaWVudCBpcyBub3QgY2xpbmljYWxseSB3ZWxsCkBwc2V1ZG9jb2RlOiAiQ2xpbmljYWxseSB3ZWxsIiA9IEZBTFNFCiovCmRlZmluZSAiQ2xpZW50IGlzIG5vdCBjbGluaWNhbGx5IHdlbGwiOgogIGV4aXN0cygiQ2xpbmljYWxseSB3ZWxsIE9ic2VydmF0aW9uIikgIAogIGFuZCBGaXJzdCggIkNsaW5pY2FsbHkgd2VsbCBPYnNlcnZhdGlvbiIgKS52YWx1ZSA9IGZhbHNlCgovKgpAaW5wdXQ6IENsaWVudCBpcyBjbGluaWNhbGx5IHdlbGwKQHBzZXVkb2NvZGU6ICJDbGluaWNhbGx5IHdlbGwiID0gVFJVRQoqLwpkZWZpbmUgIkNsaWVudCBpcyBjbGluaWNhbGx5IHdlbGwiOgogIGV4aXN0cygiQ2xpbmljYWxseSB3ZWxsIE9ic2VydmF0aW9uIikgIAogIGFuZCBGaXJzdCggIkNsaW5pY2FsbHkgd2VsbCBPYnNlcnZhdGlvbiIgKS52YWx1ZSA9IHRydWUgCgovKgpAaW50ZXJuYWw6IEltbXVub2NvbXByb21pc2VkIE9ic2VydmF0aW9uCiovCmRlZmluZSAiSW1tdW5vY29tcHJvbWlzZWQgT2JzZXJ2YXRpb24iOgogIChbT2JzZXJ2YXRpb246IENvbmNlcHRzLiJJbW11bm9jb21wcm9taXNlZCJdIE8KICAgIHNvcnQgYnkgZW5kIG9mIGVmZmVjdGl2ZS50b0ludGVydmFsKCkgZGVzYykuY29tcGxldGUoKQoKLyoKQGlucHV0OiBDbGllbnQgaXMgaW1tdW5vY29tcHJvbWlzZWQKQHBzZXVkb2NvZGU6ICJJbW11bm9jb21wcm9taXNlZCIgPSBUUlVFCiovCmRlZmluZSAiQ2xpZW50IGlzIGltbXVub2NvbXByb21pc2VkIjoKICBleGlzdHMoICJJbW11bm9jb21wcm9taXNlZCBPYnNlcnZhdGlvbiIgKSBhbmQKICBGaXJzdCggIkltbXVub2NvbXByb21pc2VkIE9ic2VydmF0aW9uIiApLnZhbHVlID0gdHJ1ZSAKCi8qCkBpbnB1dDogQ2xpZW50IGlzIG5vdCBpbW11bm9jb21wcm9taXNlZApAcHNldWRvY29kZTogIkltbXVub2NvbXByb21pc2VkIiDiiaAgVFJVRQoqLwpkZWZpbmUgIkNsaWVudCBpcyBub3QgaW1tdW5vY29tcHJvbWlzZWQiOgogIG5vdCAiQ2xpZW50IGlzIGltbXVub2NvbXByb21pc2VkIgoKLyoKQGludGVybmFsOiBCaXJ0aCB3ZWlnaHQgaW4gZ3JhbXMgT2JzZXJ2YXRpb24KKi8KZGVmaW5lICJCaXJ0aCB3ZWlnaHQgaW4gZ3JhbXMgT2JzZXJ2YXRpb24iOgogIEVsZW1lbnRzLiJCaXJ0aCB3ZWlnaHQgaW4gZ3JhbXMgT2JzZXJ2YXRpb24iLmVuY291bnRlck9yT25CZWZvcmUoRW5jb3VudGVySWQsIFRvZGF5KQoKZGVmaW5lICJCaXJ0aCB3ZWlnaHQgaW4gZ3JhbXMgVmFsdWUiOgogIEZpcnN0KCJCaXJ0aCB3ZWlnaHQgaW4gZ3JhbXMgT2JzZXJ2YXRpb24iKS52YWx1ZSBhcyBGSElSLlF1YW50aXR5CgpkZWZpbmUgIkJpcnRoIHdlaWdodCBpbiBncmFtcyI6CiAgIkJpcnRoIHdlaWdodCBpbiBncmFtcyBWYWx1ZSIudmFsdWUgYXMgRkhJUi5kZWNpbWFsCgovKgpAaW5wdXQ6IENsaWVudCdzIHdlaWdodCBhdCBiaXJ0aCB3YXMgb3ZlciAyMDAwIGcKQHBzZXVkb2NvZGU6ICJCaXJ0aCB3ZWlnaHQgaW4gZ3JhbXMiICDiiaUgMjAwMAoqLwpkZWZpbmUgIkNsaWVudCdzIHdlaWdodCBhdCBiaXJ0aCB3YXMgb3ZlciAyMDAwIGciOgogICJCaXJ0aCB3ZWlnaHQgaW4gZ3JhbXMiID49IDIwMDAKCi8qCkBpbnB1dDogQ2xpZW50J3Mgd2VpZ2h0IGF0IGJpcnRoIHdhcyBiZWxvdyAyMDAwIGcKQHBzZXVkb2NvZGU6ICJCaXJ0aCB3ZWlnaHQgaW4gZ3JhbXMiIDwgMjAwMAoqLwpkZWZpbmUgIkNsaWVudCdzIHdlaWdodCBhdCBiaXJ0aCB3YXMgYmVsb3cgMjAwMCBnIjoKICAiQmlydGggd2VpZ2h0IGluIGdyYW1zIiA8IDIwMDAKCi8qCkBpbnRlcm5hbDogUHJldGVybSBiaXJ0aCBPYnNlcnZhdGlvbgoqLwpkZWZpbmUgIlByZXRlcm0gYmlydGggT2JzZXJ2YXRpb24iOgogIEVsZW1lbnRzLiJQcmV0ZXJtIGJpcnRoIE9ic2VydmF0aW9uIi5lbmNvdW50ZXJPck9uQmVmb3JlKEVuY291bnRlcklkLCBUb2RheSkKCi8qCkBpbnB1dDogQ2xpZW50IHdhcyBub3QgYSBwcmVtYXR1cmUgaW5mYW50IGF0IGJpcnRoCkBwc2V1ZG9jb2RlOiAiUHJldGVybSBiaXJ0aCIg4omgICBUUlVFCiovCmRlZmluZSAiQ2xpZW50IHdhcyBub3QgYSBwcmVtYXR1cmUgaW5mYW50IGF0IGJpcnRoIjoKICBub3QoIkNsaWVudCB3YXMgYSBwcmVtYXR1cmUgaW5mYW50IGF0IGJpcnRoIikKCi8qCkBpbnB1dDogQ2xpZW50IHdhcyBhIHByZW1hdHVyZSBpbmZhbnQgYXQgYmlydGgKQHBzZXVkb2NvZGU6ICJQcmV0ZXJtIGJpcnRoIiA9ICBUUlVFCiovCmRlZmluZSAiQ2xpZW50IHdhcyBhIHByZW1hdHVyZSBpbmZhbnQgYXQgYmlydGgiOgogIGV4aXN0cyggIlByZXRlcm0gYmlydGggT2JzZXJ2YXRpb24iIE8gd2hlcmUgTy52YWx1ZSA9IHRydWUgKQoKLyoKQGludGVybmFsOiBDb21wbGV0ZWQgdGhlIHByaW1hcnkgdmFjY2luYXRpb24gc2VyaWVzIE9ic2VydmF0aW9uCiovCmRlZmluZSAiQ29tcGxldGVkIHRoZSBwcmltYXJ5IHZhY2NpbmF0aW9uIHNlcmllcyBPYnNlcnZhdGlvbiI6CiAgRWxlbWVudHMuIkNvbXBsZXRlZCB0aGUgcHJpbWFyeSB2YWNjaW5hdGlvbiBzZXJpZXMgT2JzZXJ2YXRpb24iLmVuY291bnRlck9yT25CZWZvcmUoRW5jb3VudGVySWQsIFRvZGF5KQoKLyoKQGludGVybmFsOiBBdCBoaWdoIHJpc2sgZm9yIHBuZXVtb2NvY2NhbCBpbmZlY3Rpb24gT2JzZXJ2YXRpb24KKi8KZGVmaW5lICJBdCBoaWdoIHJpc2sgZm9yIHBuZXVtb2NvY2NhbCBpbmZlY3Rpb24gT2JzZXJ2YXRpb24iOgogIEVsZW1lbnRzLiJBdCBoaWdoIHJpc2sgZm9yIHBuZXVtb2NvY2NhbCBpbmZlY3Rpb24gT2JzZXJ2YXRpb24iLmVuY291bnRlck9yT25CZWZvcmUoRW5jb3VudGVySWQsIFRvZGF5KQoKLyoKQGlucHV0OiBDbGllbnQgaXMgYXQgaGlnaCByaXNrIGZvciBwbmV1bW9jb2NjYWwgaW5mZWN0aW9uCkBwc2V1ZG9jb2RlOiAiQXQgaGlnaCByaXNrIGZvciBwbmV1bW9jb2NjYWwgaW5mZWN0aW9uIiA9IFRSVUUKKi8KZGVmaW5lICJDbGllbnQgaXMgYXQgaGlnaCByaXNrIGZvciBwbmV1bW9jb2NjYWwgaW5mZWN0aW9uIjoKICBleGlzdHMoICJBdCBoaWdoIHJpc2sgZm9yIHBuZXVtb2NvY2NhbCBpbmZlY3Rpb24gT2JzZXJ2YXRpb24iIE8gd2hlcmUgTy52YWx1ZSA9IHRydWUgKQoKLyoKQGlucHV0OiBDbGllbnQgaXMgbm90IGF0IGhpZ2ggcmlzayBmb3IgcG5ldW1vY29jY2FsIGluZmVjdGlvbgpAcHNldWRvY29kZTogIkF0IGhpZ2ggcmlzayBmb3IgcG5ldW1vY29jY2FsIGluZmVjdGlvbiIgPSBGQUxTRQoqLwpkZWZpbmUgIkNsaWVudCBpcyBub3QgYXQgaGlnaCByaXNrIGZvciBwbmV1bW9jb2NjYWwgaW5mZWN0aW9uIjoKICBleGlzdHMoICJBdCBoaWdoIHJpc2sgZm9yIHBuZXVtb2NvY2NhbCBpbmZlY3Rpb24gT2JzZXJ2YXRpb24iIE8gd2hlcmUgTy52YWx1ZSA9IGZhbHNlICkKCi8qCkBpbnRlcm5hbDogRGF0ZSB3aGVuIHByaW1hcnkgdmFjY2luYXRpb24gc2VyaWVzIHdhcyBjb21wbGV0ZWQgT2JzZXJ2YXRpb24KKi8KZGVmaW5lICJEYXRlIHdoZW4gcHJpbWFyeSB2YWNjaW5hdGlvbiBzZXJpZXMgd2FzIGNvbXBsZXRlZCBPYnNlcnZhdGlvbiI6CiAgRWxlbWVudHMuIkRhdGUgd2hlbiBwcmltYXJ5IHZhY2NpbmF0aW9uIHNlcmllcyB3YXMgY29tcGxldGVkIE9ic2VydmF0aW9uIi5lbmNvdW50ZXJPck9uQmVmb3JlKEVuY291bnRlcklkLCBUb2RheSkKCi8qCkBpbnRlcm5hbDogQ29tcGxldGVkIHRoZSBib29zdGVyIHNlcmllcyBPYnNlcnZhdGlvbgoqLwpkZWZpbmUgIkNvbXBsZXRlZCB0aGUgYm9vc3RlciBzZXJpZXMgT2JzZXJ2YXRpb24iOgogIEVsZW1lbnRzLiJDb21wbGV0ZWQgdGhlIGJvb3N0ZXIgc2VyaWVzIE9ic2VydmF0aW9uIi5lbmNvdW50ZXJPck9uQmVmb3JlKEVuY291bnRlcklkLCBUb2RheSk="/>
  </content>
</Library>