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

: IMMZD18SSeasonalinfluenzaSeasonalInfluenzaLogic - XML Representation

Draft as of 2026-03-31

Raw xml | Download


<Library xmlns="http://hl7.org/fhir">
  <id value="IMMZD18SSeasonalinfluenzaSeasonalInfluenzaLogic"/>
  <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;">IMMZD18SSeasonalinfluenzaSeasonalInfluenzaLogic</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Id: </b></th>
            <td style="padding-left: 4px;">IMMZD18SSeasonalinfluenzaSeasonalInfluenzaLogic</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-IMMZD18SSeasonalinfluenzaSeasonalInfluenzaLogic.html">IMMZD18SSeasonalinfluenzaSeasonalInfluenzaLogic</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 decision support logic for the IMMZ.D18.S.Seasonal influenza schedule table in 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-WHOCommon.html">WHOCommon</a></li>
                  
                    <li><a href="Library-IMMZCommon.html">IMMZCommon</a></li>
                  
                    <li><a href="Library-IMMZConcepts.html">IMMZConcepts</a></li>
                  
                    <li><a href="Library-IMMZEncounterElements.html">IMMZEncounterElements</a></li>
                  
                    <li><a href="Library-IMMZD2DTSeasonalinfluenzaEncounterElements.html">IMMZD2DTSeasonalinfluenzaEncounterElements</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>Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>First seasonal influenza dose from the primary series was administered</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Seasonal influenza dose 1</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Seasonal influenza dose 1 Due Date</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Seasonal influenza dose 1 Create</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Seasonal influenza dose 1 Overdue</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Seasonal influenza dose 1 Expiration</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Second seasonal influenza dose from the primary series was administered. The primary series has been completed</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Seasonal influenza dose 2</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Seasonal influenza dose 2 Due Date</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Seasonal influenza dose 2 Expiration</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Seasonal influenza dose 2 Create</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Seasonal influenza dose 2 Overdue</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Seasonal influenza annual dose</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Seasonal influenza annual dose Due Date</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Seasonal influenza annual dose Create</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Seasonal influenza annual dose Overdue</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Seasonal influenza annual dose Expiration</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Seasonal influenza annual dose was administered less than 1 year ago</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
              
                <tr><th>Test Validation</th><th>Resource</th><th>0</th><th>1</th><th>Out</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: IMMZD18SSeasonalinfluenzaSeasonalInfluenzaLogic (IMMZ.D18.S.Seasonal influenza schedule)
 * Schedule Table: Inactivated trivalent and quadrivalent vaccines, 2-dose schedule for children aged under 9 years
 */
library IMMZD18SSeasonalinfluenzaSeasonalInfluenzaLogic

using FHIR version '4.0.1'
include FHIRHelpers version '4.0.1'

include WHOCommon called WC

include IMMZCommon called Common
include IMMZConcepts called Concepts

include IMMZEncounterElements called IE
include IMMZD2DTSeasonalinfluenzaEncounterElements called Encounter

parameter Today Date default Today()


context Patient


/*
@output: Seasonal influenza dose 1
@description: Provision of the seasonal influenza vaccine dose 1
@trigger: Child's birth
@pseudo: 
@triggerDate: &quot;Date of birth&quot;
*/
define &quot;Seasonal influenza dose 1&quot;:
  Encounter.&quot;No seasonal influenza primary series doses were administered&quot;
  and not &quot;First seasonal influenza dose from the primary series was administered&quot;


/*
@output: Seasonal influenza dose 1 Create
@create: Influenza vaccines are safe and effective in children from 6 months of age
*/
define &quot;Seasonal influenza dose 1 Create&quot;:
  if &quot;Seasonal influenza dose 1&quot;
  then 'Influenza vaccines are safe and effective in children from 6 months of age' + '
Due Date: ' + ToString(&quot;Seasonal influenza dose 1 Due Date&quot;)
  else ''


/*
@dynamicValue: Seasonal influenza dose 1 Due Date
@pseudocode: &quot;Date of birth&quot; + 6 months
*/
define &quot;Seasonal influenza dose 1 Due Date&quot;:
  if &quot;Seasonal influenza dose 1&quot; then Patient.birthDate + 6 months
  else null


/*
@dynamicValue: Seasonal influenza dose 1 Overdue
@pseudocode: To be determined by Member States; however, there is no recommended overdue date and individuals are always eligible to be vaccinated
*/
define &quot;Seasonal influenza dose 1 Overdue&quot;:
  null


/*
@dynamicValue: Seasonal influenza dose 1 Expiration
@pseudocode: To be determined by Member States; however, there is no recommended expiration date and individuals are always eligible to be vaccinated
*/
define &quot;Seasonal influenza dose 1 Expiration&quot;:
  null

  
/*
@complete: First seasonal influenza dose from the primary series was administered
@pseudocode: Count of vaccines administered (where &quot;Vaccine type&quot; = &quot;Seasonal influenza vaccines&quot; and &quot;Type of dose&quot; = &quot;Primary series&quot;) = 1
*/
define &quot;First seasonal influenza dose from the primary series was administered&quot;:
  Encounter.&quot;One seasonal influenza primary series doses were administered&quot;



/*
@output: Seasonal influenza dose 2
@description: Provision of the seasonal influenza vaccine dose 2
@trigger: First seasonal influenza dose from the primary series was administered and client is less than 9 years
@pseudo: Count of vaccines administered (where &quot;Vaccine type&quot; = &quot;Seasonal influenza vaccines&quot; and &quot;Type of dose&quot; = &quot;Primary series&quot;) = 1 AND (Today's date − &quot;Date of birth&quot; &lt; 9 years)
@triggerDate: &quot;Date and time of vaccination&quot; (where &quot;Vaccine type&quot; = &quot;Seasonal influenza vaccines&quot;)
*/
define &quot;Seasonal influenza dose 2&quot;:
  &quot;First seasonal influenza dose from the primary series was administered&quot;
  and Encounter.&quot;Client's age is less than 9 years&quot;
  and not &quot;Second seasonal influenza dose from the primary series was administered. The primary series has been completed&quot;


/*
@output: Seasonal influenza dose 2 Create
@create: Children aged 6 months to 8 years should receive 2 doses at least 4 weeks apart
*/
define &quot;Seasonal influenza dose 2 Create&quot;:
  if &quot;Seasonal influenza dose 2&quot;
  then 'Children aged 6 months to 8 years should receive 2 doses at least 4 weeks apart' + '
Due Date: ' + ToString(&quot;Seasonal influenza dose 2 Due Date&quot;) + '
Expiration: ' + ToString(&quot;Seasonal influenza dose 2 Expiration&quot;)
  else ''


/*
@dynamicValue: Seasonal influenza dose 2 Due Date
@pseudocode: &quot;Date and time of vaccination&quot; (where &quot;Vaccine type&quot; = &quot;Seasonal influenza vaccines&quot;) + 4 weeks
*/
define &quot;Seasonal influenza dose 2 Due Date&quot;:
  if &quot;Seasonal influenza dose 2&quot; then Encounter.&quot;Date of Latest Seasonal influenza Dose&quot; + 4 weeks
  else null


/*
@dynamicValue: Seasonal influenza dose 2 Overdue
@pseudocode: To be determined by Member States; however, there is no recommended overdue date and individuals are always eligible to be vaccinated
*/
define &quot;Seasonal influenza dose 2 Overdue&quot;:
  null


/*
@dynamicValue: Seasonal influenza dose 2 Expiration
@pseudocode: &quot;Date of birth&quot; + 9 years
*/
define &quot;Seasonal influenza dose 2 Expiration&quot;:
  if &quot;Seasonal influenza dose 2&quot; then Patient.birthDate + 9 years
  else null

  
/*
@complete: Second seasonal influenza dose from the primary series was administered. The primary series has been completed
@pseudocode: &quot;Completed the primary vaccination series&quot; = TRUE (where &quot;Vaccine type&quot; = &quot;Seasonal influenza vaccines&quot;)
*/
define &quot;Second seasonal influenza dose from the primary series was administered. The primary series has been completed&quot;:
  Encounter.&quot;Two seasonal influenza primary series doses were administered&quot;



/*
@output: Seasonal influenza annual dose
@description: Provision of the seasonal influenza vaccine annual dose
@trigger: The primary series has been completed
@pseudo: &quot;Completed the primary vaccination series&quot; = TRUE (where &quot;Vaccine type&quot; = &quot;Seasonal influenza vaccines&quot;)
@triggerDate: Latest &quot;Date and time of vaccination&quot; (where &quot;Vaccine type&quot; = &quot;Seasonal influenza vaccines&quot;)
*/
define &quot;Seasonal influenza annual dose&quot;:
  ( &quot;Second seasonal influenza dose from the primary series was administered. The primary series has been completed&quot;
  or ( &quot;First seasonal influenza dose from the primary series was administered&quot;
    and Encounter.&quot;Client's age is more than or equal to 9 years&quot;
   ) )


/*
@output: Seasonal influenza annual dose Create
@create: Seasonal influenza vaccine annual dose should be provided 1 year after the previous dose
*/
define &quot;Seasonal influenza annual dose Create&quot;:
  if &quot;Seasonal influenza annual dose&quot;
  then 'Seasonal influenza vaccine annual dose should be provided 1 year after the previous dose' + '
Due Date: ' + ToString(&quot;Seasonal influenza annual dose Due Date&quot;)
  else ''


/*
@dynamicValue: Seasonal influenza annual dose Due Date
@pseudocode: Latest &quot;Date and time of vaccination&quot; (where &quot;Vaccine type&quot; = &quot;Seasonal influenza vaccines&quot;) + 1 year
*/
define &quot;Seasonal influenza annual dose Due Date&quot;:
  if &quot;Seasonal influenza annual dose&quot; then Encounter.&quot;Date of Latest Seasonal influenza Dose&quot; + 1 year
  else null


/*
@dynamicValue: Seasonal influenza annual dose Overdue
@pseudocode: To be determined by Member States; however, there is no recommended overdue date and individuals are always eligible to be vaccinated
*/
define &quot;Seasonal influenza annual dose Overdue&quot;:
  null


/*
@dynamicValue: Seasonal influenza annual dose Expiration
@pseudocode: To be determined by Member States; however, there is no recommended expiration date and individuals are always eligible to be vaccinated
*/
define &quot;Seasonal influenza annual dose Expiration&quot;:
  null

  
/*
@complete: Seasonal influenza annual dose was administered less than 1 year ago
@pseudocode: Count of vaccines administered (where &quot;Vaccine type&quot; = &quot;Seasonal influenza vaccines&quot; and &quot;Type of dose&quot; = &quot;Booster dose&quot;) ≥ 1 AND Today's date - Latest &quot;Date and time of vaccination&quot; (where &quot;Vaccine type&quot; = &quot;Seasonal influenza vaccines&quot;) &lt; 1 year
*/
define &quot;Seasonal influenza annual dose was administered less than 1 year ago&quot;:
  Encounter.&quot;The latest seasonal influenza dose was administered less than 1 year ago&quot;



/*
@test: Test expected results based on example patients
*/
define &quot;Test Validation&quot;:
  case
    when Patient.id = 'Seasonalinfluenza08.1' then &quot;Seasonal influenza dose 1&quot;
    when Patient.id = 'Seasonalinfluenza09.2' then &quot;Seasonal influenza dose 1&quot;
    when Patient.id = 'Seasonalinfluenza10.3' then &quot;Seasonal influenza dose 2&quot;
    when Patient.id = 'Seasonalinfluenza11.3' then &quot;Seasonal influenza dose 2&quot;
    when Patient.id = 'Seasonalinfluenza12.3' then &quot;Seasonal influenza annual dose&quot;
    when Patient.id = 'Seasonalinfluenza13.3' then &quot;Seasonal influenza annual dose&quot;
    when Patient.id = 'Seasonalinfluenza14.2' then &quot;Seasonal influenza annual dose&quot;
    when Patient.id = 'Seasonalinfluenza15.2' then &quot;Seasonal influenza annual dose&quot;
    else 'No test case set'
  end
</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/IMMZD18SSeasonalinfluenzaSeasonalInfluenzaLogic"/>
  <version value="1.0.0"/>
  <name value="IMMZD18SSeasonalinfluenzaSeasonalInfluenzaLogic"/>
  <title value="IMMZD18SSeasonalinfluenzaSeasonalInfluenzaLogic"/>
  <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 decision support logic for the IMMZ.D18.S.Seasonal influenza schedule table in the Immunization CPG"/>
  <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 Common"/>
    <resource value="http://smart.who.int/immunizations/Library/IMMZCommon"/>
  </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 IE"/>
    <resource
              value="http://smart.who.int/immunizations/Library/IMMZEncounterElements"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library Encounter"/>
    <resource
              value="http://smart.who.int/immunizations/Library/IMMZD2DTSeasonalinfluenzaEncounterElements"/>
  </relatedArtifact>
  <parameter>
    <name value="Today"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <type value="date"/>
  </parameter>
  <parameter>
    <name value="Patient"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Patient"/>
  </parameter>
  <parameter>
    <name
          value="First seasonal influenza dose from the primary series was administered"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Seasonal influenza dose 1"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Seasonal influenza dose 1 Due Date"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="date"/>
  </parameter>
  <parameter>
    <name value="Seasonal influenza dose 1 Create"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="string"/>
  </parameter>
  <parameter>
    <name value="Seasonal influenza dose 1 Overdue"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Resource"/>
  </parameter>
  <parameter>
    <name value="Seasonal influenza dose 1 Expiration"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Resource"/>
  </parameter>
  <parameter>
    <name
          value="Second seasonal influenza dose from the primary series was administered. The primary series has been completed"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Seasonal influenza dose 2"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Seasonal influenza dose 2 Due Date"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="date"/>
  </parameter>
  <parameter>
    <name value="Seasonal influenza dose 2 Expiration"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="date"/>
  </parameter>
  <parameter>
    <name value="Seasonal influenza dose 2 Create"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="string"/>
  </parameter>
  <parameter>
    <name value="Seasonal influenza dose 2 Overdue"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Resource"/>
  </parameter>
  <parameter>
    <name value="Seasonal influenza annual dose"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Seasonal influenza annual dose Due Date"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="date"/>
  </parameter>
  <parameter>
    <name value="Seasonal influenza annual dose Create"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="string"/>
  </parameter>
  <parameter>
    <name value="Seasonal influenza annual dose Overdue"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Resource"/>
  </parameter>
  <parameter>
    <name value="Seasonal influenza annual dose Expiration"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Resource"/>
  </parameter>
  <parameter>
    <name
          value="Seasonal influenza annual dose was administered less than 1 year ago"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Test Validation"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Resource"/>
  </parameter>
  <content>
    <contentType value="text/cql"/>
    <data
          value="LyoKICogTGlicmFyeTogSU1NWkQxOFNTZWFzb25hbGluZmx1ZW56YVNlYXNvbmFsSW5mbHVlbnphTG9naWMgKElNTVouRDE4LlMuU2Vhc29uYWwgaW5mbHVlbnphIHNjaGVkdWxlKQogKiBTY2hlZHVsZSBUYWJsZTogSW5hY3RpdmF0ZWQgdHJpdmFsZW50IGFuZCBxdWFkcml2YWxlbnQgdmFjY2luZXMsIDItZG9zZSBzY2hlZHVsZSBmb3IgY2hpbGRyZW4gYWdlZCB1bmRlciA5IHllYXJzCiAqLwpsaWJyYXJ5IElNTVpEMThTU2Vhc29uYWxpbmZsdWVuemFTZWFzb25hbEluZmx1ZW56YUxvZ2ljCgp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4xJwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBXSE9Db21tb24gY2FsbGVkIFdDCgppbmNsdWRlIElNTVpDb21tb24gY2FsbGVkIENvbW1vbgppbmNsdWRlIElNTVpDb25jZXB0cyBjYWxsZWQgQ29uY2VwdHMKCmluY2x1ZGUgSU1NWkVuY291bnRlckVsZW1lbnRzIGNhbGxlZCBJRQppbmNsdWRlIElNTVpEMkRUU2Vhc29uYWxpbmZsdWVuemFFbmNvdW50ZXJFbGVtZW50cyBjYWxsZWQgRW5jb3VudGVyCgpwYXJhbWV0ZXIgVG9kYXkgRGF0ZSBkZWZhdWx0IFRvZGF5KCkKCgpjb250ZXh0IFBhdGllbnQKCgovKgpAb3V0cHV0OiBTZWFzb25hbCBpbmZsdWVuemEgZG9zZSAxCkBkZXNjcmlwdGlvbjogUHJvdmlzaW9uIG9mIHRoZSBzZWFzb25hbCBpbmZsdWVuemEgdmFjY2luZSBkb3NlIDEKQHRyaWdnZXI6IENoaWxkJ3MgYmlydGgKQHBzZXVkbzogCkB0cmlnZ2VyRGF0ZTogIkRhdGUgb2YgYmlydGgiCiovCmRlZmluZSAiU2Vhc29uYWwgaW5mbHVlbnphIGRvc2UgMSI6CiAgRW5jb3VudGVyLiJObyBzZWFzb25hbCBpbmZsdWVuemEgcHJpbWFyeSBzZXJpZXMgZG9zZXMgd2VyZSBhZG1pbmlzdGVyZWQiCiAgYW5kIG5vdCAiRmlyc3Qgc2Vhc29uYWwgaW5mbHVlbnphIGRvc2UgZnJvbSB0aGUgcHJpbWFyeSBzZXJpZXMgd2FzIGFkbWluaXN0ZXJlZCIKCgovKgpAb3V0cHV0OiBTZWFzb25hbCBpbmZsdWVuemEgZG9zZSAxIENyZWF0ZQpAY3JlYXRlOiBJbmZsdWVuemEgdmFjY2luZXMgYXJlIHNhZmUgYW5kIGVmZmVjdGl2ZSBpbiBjaGlsZHJlbiBmcm9tIDYgbW9udGhzIG9mIGFnZQoqLwpkZWZpbmUgIlNlYXNvbmFsIGluZmx1ZW56YSBkb3NlIDEgQ3JlYXRlIjoKICBpZiAiU2Vhc29uYWwgaW5mbHVlbnphIGRvc2UgMSIKICB0aGVuICdJbmZsdWVuemEgdmFjY2luZXMgYXJlIHNhZmUgYW5kIGVmZmVjdGl2ZSBpbiBjaGlsZHJlbiBmcm9tIDYgbW9udGhzIG9mIGFnZScgKyAnCkR1ZSBEYXRlOiAnICsgVG9TdHJpbmcoIlNlYXNvbmFsIGluZmx1ZW56YSBkb3NlIDEgRHVlIERhdGUiKQogIGVsc2UgJycKCgovKgpAZHluYW1pY1ZhbHVlOiBTZWFzb25hbCBpbmZsdWVuemEgZG9zZSAxIER1ZSBEYXRlCkBwc2V1ZG9jb2RlOiAiRGF0ZSBvZiBiaXJ0aCIgKyA2IG1vbnRocwoqLwpkZWZpbmUgIlNlYXNvbmFsIGluZmx1ZW56YSBkb3NlIDEgRHVlIERhdGUiOgogIGlmICJTZWFzb25hbCBpbmZsdWVuemEgZG9zZSAxIiB0aGVuIFBhdGllbnQuYmlydGhEYXRlICsgNiBtb250aHMKICBlbHNlIG51bGwKCgovKgpAZHluYW1pY1ZhbHVlOiBTZWFzb25hbCBpbmZsdWVuemEgZG9zZSAxIE92ZXJkdWUKQHBzZXVkb2NvZGU6IFRvIGJlIGRldGVybWluZWQgYnkgTWVtYmVyIFN0YXRlczsgaG93ZXZlciwgdGhlcmUgaXMgbm8gcmVjb21tZW5kZWQgb3ZlcmR1ZSBkYXRlIGFuZCBpbmRpdmlkdWFscyBhcmUgYWx3YXlzIGVsaWdpYmxlIHRvIGJlIHZhY2NpbmF0ZWQKKi8KZGVmaW5lICJTZWFzb25hbCBpbmZsdWVuemEgZG9zZSAxIE92ZXJkdWUiOgogIG51bGwKCgovKgpAZHluYW1pY1ZhbHVlOiBTZWFzb25hbCBpbmZsdWVuemEgZG9zZSAxIEV4cGlyYXRpb24KQHBzZXVkb2NvZGU6IFRvIGJlIGRldGVybWluZWQgYnkgTWVtYmVyIFN0YXRlczsgaG93ZXZlciwgdGhlcmUgaXMgbm8gcmVjb21tZW5kZWQgZXhwaXJhdGlvbiBkYXRlIGFuZCBpbmRpdmlkdWFscyBhcmUgYWx3YXlzIGVsaWdpYmxlIHRvIGJlIHZhY2NpbmF0ZWQKKi8KZGVmaW5lICJTZWFzb25hbCBpbmZsdWVuemEgZG9zZSAxIEV4cGlyYXRpb24iOgogIG51bGwKCiAgCi8qCkBjb21wbGV0ZTogRmlyc3Qgc2Vhc29uYWwgaW5mbHVlbnphIGRvc2UgZnJvbSB0aGUgcHJpbWFyeSBzZXJpZXMgd2FzIGFkbWluaXN0ZXJlZApAcHNldWRvY29kZTogQ291bnQgb2YgdmFjY2luZXMgYWRtaW5pc3RlcmVkICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJTZWFzb25hbCBpbmZsdWVuemEgdmFjY2luZXMiIGFuZCAiVHlwZSBvZiBkb3NlIiA9ICJQcmltYXJ5IHNlcmllcyIpID0gMQoqLwpkZWZpbmUgIkZpcnN0IHNlYXNvbmFsIGluZmx1ZW56YSBkb3NlIGZyb20gdGhlIHByaW1hcnkgc2VyaWVzIHdhcyBhZG1pbmlzdGVyZWQiOgogIEVuY291bnRlci4iT25lIHNlYXNvbmFsIGluZmx1ZW56YSBwcmltYXJ5IHNlcmllcyBkb3NlcyB3ZXJlIGFkbWluaXN0ZXJlZCIKCgoKLyoKQG91dHB1dDogU2Vhc29uYWwgaW5mbHVlbnphIGRvc2UgMgpAZGVzY3JpcHRpb246IFByb3Zpc2lvbiBvZiB0aGUgc2Vhc29uYWwgaW5mbHVlbnphIHZhY2NpbmUgZG9zZSAyCkB0cmlnZ2VyOiBGaXJzdCBzZWFzb25hbCBpbmZsdWVuemEgZG9zZSBmcm9tIHRoZSBwcmltYXJ5IHNlcmllcyB3YXMgYWRtaW5pc3RlcmVkIGFuZCBjbGllbnQgaXMgbGVzcyB0aGFuIDkgeWVhcnMKQHBzZXVkbzogQ291bnQgb2YgdmFjY2luZXMgYWRtaW5pc3RlcmVkICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJTZWFzb25hbCBpbmZsdWVuemEgdmFjY2luZXMiIGFuZCAiVHlwZSBvZiBkb3NlIiA9ICJQcmltYXJ5IHNlcmllcyIpID0gMSBBTkQgKFRvZGF5J3MgZGF0ZSDiiJIgIkRhdGUgb2YgYmlydGgiIDwgOSB5ZWFycykKQHRyaWdnZXJEYXRlOiAiRGF0ZSBhbmQgdGltZSBvZiB2YWNjaW5hdGlvbiIgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIlNlYXNvbmFsIGluZmx1ZW56YSB2YWNjaW5lcyIpCiovCmRlZmluZSAiU2Vhc29uYWwgaW5mbHVlbnphIGRvc2UgMiI6CiAgIkZpcnN0IHNlYXNvbmFsIGluZmx1ZW56YSBkb3NlIGZyb20gdGhlIHByaW1hcnkgc2VyaWVzIHdhcyBhZG1pbmlzdGVyZWQiCiAgYW5kIEVuY291bnRlci4iQ2xpZW50J3MgYWdlIGlzIGxlc3MgdGhhbiA5IHllYXJzIgogIGFuZCBub3QgIlNlY29uZCBzZWFzb25hbCBpbmZsdWVuemEgZG9zZSBmcm9tIHRoZSBwcmltYXJ5IHNlcmllcyB3YXMgYWRtaW5pc3RlcmVkLiBUaGUgcHJpbWFyeSBzZXJpZXMgaGFzIGJlZW4gY29tcGxldGVkIgoKCi8qCkBvdXRwdXQ6IFNlYXNvbmFsIGluZmx1ZW56YSBkb3NlIDIgQ3JlYXRlCkBjcmVhdGU6IENoaWxkcmVuIGFnZWQgNiBtb250aHMgdG8gOCB5ZWFycyBzaG91bGQgcmVjZWl2ZSAyIGRvc2VzIGF0IGxlYXN0IDQgd2Vla3MgYXBhcnQKKi8KZGVmaW5lICJTZWFzb25hbCBpbmZsdWVuemEgZG9zZSAyIENyZWF0ZSI6CiAgaWYgIlNlYXNvbmFsIGluZmx1ZW56YSBkb3NlIDIiCiAgdGhlbiAnQ2hpbGRyZW4gYWdlZCA2IG1vbnRocyB0byA4IHllYXJzIHNob3VsZCByZWNlaXZlIDIgZG9zZXMgYXQgbGVhc3QgNCB3ZWVrcyBhcGFydCcgKyAnCkR1ZSBEYXRlOiAnICsgVG9TdHJpbmcoIlNlYXNvbmFsIGluZmx1ZW56YSBkb3NlIDIgRHVlIERhdGUiKSArICcKRXhwaXJhdGlvbjogJyArIFRvU3RyaW5nKCJTZWFzb25hbCBpbmZsdWVuemEgZG9zZSAyIEV4cGlyYXRpb24iKQogIGVsc2UgJycKCgovKgpAZHluYW1pY1ZhbHVlOiBTZWFzb25hbCBpbmZsdWVuemEgZG9zZSAyIER1ZSBEYXRlCkBwc2V1ZG9jb2RlOiAiRGF0ZSBhbmQgdGltZSBvZiB2YWNjaW5hdGlvbiIgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIlNlYXNvbmFsIGluZmx1ZW56YSB2YWNjaW5lcyIpICsgNCB3ZWVrcwoqLwpkZWZpbmUgIlNlYXNvbmFsIGluZmx1ZW56YSBkb3NlIDIgRHVlIERhdGUiOgogIGlmICJTZWFzb25hbCBpbmZsdWVuemEgZG9zZSAyIiB0aGVuIEVuY291bnRlci4iRGF0ZSBvZiBMYXRlc3QgU2Vhc29uYWwgaW5mbHVlbnphIERvc2UiICsgNCB3ZWVrcwogIGVsc2UgbnVsbAoKCi8qCkBkeW5hbWljVmFsdWU6IFNlYXNvbmFsIGluZmx1ZW56YSBkb3NlIDIgT3ZlcmR1ZQpAcHNldWRvY29kZTogVG8gYmUgZGV0ZXJtaW5lZCBieSBNZW1iZXIgU3RhdGVzOyBob3dldmVyLCB0aGVyZSBpcyBubyByZWNvbW1lbmRlZCBvdmVyZHVlIGRhdGUgYW5kIGluZGl2aWR1YWxzIGFyZSBhbHdheXMgZWxpZ2libGUgdG8gYmUgdmFjY2luYXRlZAoqLwpkZWZpbmUgIlNlYXNvbmFsIGluZmx1ZW56YSBkb3NlIDIgT3ZlcmR1ZSI6CiAgbnVsbAoKCi8qCkBkeW5hbWljVmFsdWU6IFNlYXNvbmFsIGluZmx1ZW56YSBkb3NlIDIgRXhwaXJhdGlvbgpAcHNldWRvY29kZTogIkRhdGUgb2YgYmlydGgiICsgOSB5ZWFycwoqLwpkZWZpbmUgIlNlYXNvbmFsIGluZmx1ZW56YSBkb3NlIDIgRXhwaXJhdGlvbiI6CiAgaWYgIlNlYXNvbmFsIGluZmx1ZW56YSBkb3NlIDIiIHRoZW4gUGF0aWVudC5iaXJ0aERhdGUgKyA5IHllYXJzCiAgZWxzZSBudWxsCgogIAovKgpAY29tcGxldGU6IFNlY29uZCBzZWFzb25hbCBpbmZsdWVuemEgZG9zZSBmcm9tIHRoZSBwcmltYXJ5IHNlcmllcyB3YXMgYWRtaW5pc3RlcmVkLiBUaGUgcHJpbWFyeSBzZXJpZXMgaGFzIGJlZW4gY29tcGxldGVkCkBwc2V1ZG9jb2RlOiAiQ29tcGxldGVkIHRoZSBwcmltYXJ5IHZhY2NpbmF0aW9uIHNlcmllcyIgPSBUUlVFICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJTZWFzb25hbCBpbmZsdWVuemEgdmFjY2luZXMiKQoqLwpkZWZpbmUgIlNlY29uZCBzZWFzb25hbCBpbmZsdWVuemEgZG9zZSBmcm9tIHRoZSBwcmltYXJ5IHNlcmllcyB3YXMgYWRtaW5pc3RlcmVkLiBUaGUgcHJpbWFyeSBzZXJpZXMgaGFzIGJlZW4gY29tcGxldGVkIjoKICBFbmNvdW50ZXIuIlR3byBzZWFzb25hbCBpbmZsdWVuemEgcHJpbWFyeSBzZXJpZXMgZG9zZXMgd2VyZSBhZG1pbmlzdGVyZWQiCgoKCi8qCkBvdXRwdXQ6IFNlYXNvbmFsIGluZmx1ZW56YSBhbm51YWwgZG9zZQpAZGVzY3JpcHRpb246IFByb3Zpc2lvbiBvZiB0aGUgc2Vhc29uYWwgaW5mbHVlbnphIHZhY2NpbmUgYW5udWFsIGRvc2UKQHRyaWdnZXI6IFRoZSBwcmltYXJ5IHNlcmllcyBoYXMgYmVlbiBjb21wbGV0ZWQKQHBzZXVkbzogIkNvbXBsZXRlZCB0aGUgcHJpbWFyeSB2YWNjaW5hdGlvbiBzZXJpZXMiID0gVFJVRSAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiU2Vhc29uYWwgaW5mbHVlbnphIHZhY2NpbmVzIikKQHRyaWdnZXJEYXRlOiBMYXRlc3QgIkRhdGUgYW5kIHRpbWUgb2YgdmFjY2luYXRpb24iICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJTZWFzb25hbCBpbmZsdWVuemEgdmFjY2luZXMiKQoqLwpkZWZpbmUgIlNlYXNvbmFsIGluZmx1ZW56YSBhbm51YWwgZG9zZSI6CiAgKCAiU2Vjb25kIHNlYXNvbmFsIGluZmx1ZW56YSBkb3NlIGZyb20gdGhlIHByaW1hcnkgc2VyaWVzIHdhcyBhZG1pbmlzdGVyZWQuIFRoZSBwcmltYXJ5IHNlcmllcyBoYXMgYmVlbiBjb21wbGV0ZWQiCiAgb3IgKCAiRmlyc3Qgc2Vhc29uYWwgaW5mbHVlbnphIGRvc2UgZnJvbSB0aGUgcHJpbWFyeSBzZXJpZXMgd2FzIGFkbWluaXN0ZXJlZCIKICAgIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIGFnZSBpcyBtb3JlIHRoYW4gb3IgZXF1YWwgdG8gOSB5ZWFycyIKICAgKSApCgoKLyoKQG91dHB1dDogU2Vhc29uYWwgaW5mbHVlbnphIGFubnVhbCBkb3NlIENyZWF0ZQpAY3JlYXRlOiBTZWFzb25hbCBpbmZsdWVuemEgdmFjY2luZSBhbm51YWwgZG9zZSBzaG91bGQgYmUgcHJvdmlkZWQgMSB5ZWFyIGFmdGVyIHRoZSBwcmV2aW91cyBkb3NlCiovCmRlZmluZSAiU2Vhc29uYWwgaW5mbHVlbnphIGFubnVhbCBkb3NlIENyZWF0ZSI6CiAgaWYgIlNlYXNvbmFsIGluZmx1ZW56YSBhbm51YWwgZG9zZSIKICB0aGVuICdTZWFzb25hbCBpbmZsdWVuemEgdmFjY2luZSBhbm51YWwgZG9zZSBzaG91bGQgYmUgcHJvdmlkZWQgMSB5ZWFyIGFmdGVyIHRoZSBwcmV2aW91cyBkb3NlJyArICcKRHVlIERhdGU6ICcgKyBUb1N0cmluZygiU2Vhc29uYWwgaW5mbHVlbnphIGFubnVhbCBkb3NlIER1ZSBEYXRlIikKICBlbHNlICcnCgoKLyoKQGR5bmFtaWNWYWx1ZTogU2Vhc29uYWwgaW5mbHVlbnphIGFubnVhbCBkb3NlIER1ZSBEYXRlCkBwc2V1ZG9jb2RlOiBMYXRlc3QgIkRhdGUgYW5kIHRpbWUgb2YgdmFjY2luYXRpb24iICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJTZWFzb25hbCBpbmZsdWVuemEgdmFjY2luZXMiKSArIDEgeWVhcgoqLwpkZWZpbmUgIlNlYXNvbmFsIGluZmx1ZW56YSBhbm51YWwgZG9zZSBEdWUgRGF0ZSI6CiAgaWYgIlNlYXNvbmFsIGluZmx1ZW56YSBhbm51YWwgZG9zZSIgdGhlbiBFbmNvdW50ZXIuIkRhdGUgb2YgTGF0ZXN0IFNlYXNvbmFsIGluZmx1ZW56YSBEb3NlIiArIDEgeWVhcgogIGVsc2UgbnVsbAoKCi8qCkBkeW5hbWljVmFsdWU6IFNlYXNvbmFsIGluZmx1ZW56YSBhbm51YWwgZG9zZSBPdmVyZHVlCkBwc2V1ZG9jb2RlOiBUbyBiZSBkZXRlcm1pbmVkIGJ5IE1lbWJlciBTdGF0ZXM7IGhvd2V2ZXIsIHRoZXJlIGlzIG5vIHJlY29tbWVuZGVkIG92ZXJkdWUgZGF0ZSBhbmQgaW5kaXZpZHVhbHMgYXJlIGFsd2F5cyBlbGlnaWJsZSB0byBiZSB2YWNjaW5hdGVkCiovCmRlZmluZSAiU2Vhc29uYWwgaW5mbHVlbnphIGFubnVhbCBkb3NlIE92ZXJkdWUiOgogIG51bGwKCgovKgpAZHluYW1pY1ZhbHVlOiBTZWFzb25hbCBpbmZsdWVuemEgYW5udWFsIGRvc2UgRXhwaXJhdGlvbgpAcHNldWRvY29kZTogVG8gYmUgZGV0ZXJtaW5lZCBieSBNZW1iZXIgU3RhdGVzOyBob3dldmVyLCB0aGVyZSBpcyBubyByZWNvbW1lbmRlZCBleHBpcmF0aW9uIGRhdGUgYW5kIGluZGl2aWR1YWxzIGFyZSBhbHdheXMgZWxpZ2libGUgdG8gYmUgdmFjY2luYXRlZAoqLwpkZWZpbmUgIlNlYXNvbmFsIGluZmx1ZW56YSBhbm51YWwgZG9zZSBFeHBpcmF0aW9uIjoKICBudWxsCgogIAovKgpAY29tcGxldGU6IFNlYXNvbmFsIGluZmx1ZW56YSBhbm51YWwgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIGxlc3MgdGhhbiAxIHllYXIgYWdvCkBwc2V1ZG9jb2RlOiBDb3VudCBvZiB2YWNjaW5lcyBhZG1pbmlzdGVyZWQgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIlNlYXNvbmFsIGluZmx1ZW56YSB2YWNjaW5lcyIgYW5kICJUeXBlIG9mIGRvc2UiID0gIkJvb3N0ZXIgZG9zZSIpIOKJpSAxIEFORCBUb2RheSdzIGRhdGUgLSBMYXRlc3QgIkRhdGUgYW5kIHRpbWUgb2YgdmFjY2luYXRpb24iICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJTZWFzb25hbCBpbmZsdWVuemEgdmFjY2luZXMiKSA8IDEgeWVhcgoqLwpkZWZpbmUgIlNlYXNvbmFsIGluZmx1ZW56YSBhbm51YWwgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIGxlc3MgdGhhbiAxIHllYXIgYWdvIjoKICBFbmNvdW50ZXIuIlRoZSBsYXRlc3Qgc2Vhc29uYWwgaW5mbHVlbnphIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCBsZXNzIHRoYW4gMSB5ZWFyIGFnbyIKCgoKLyoKQHRlc3Q6IFRlc3QgZXhwZWN0ZWQgcmVzdWx0cyBiYXNlZCBvbiBleGFtcGxlIHBhdGllbnRzCiovCmRlZmluZSAiVGVzdCBWYWxpZGF0aW9uIjoKICBjYXNlCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnU2Vhc29uYWxpbmZsdWVuemEwOC4xJyB0aGVuICJTZWFzb25hbCBpbmZsdWVuemEgZG9zZSAxIgogICAgd2hlbiBQYXRpZW50LmlkID0gJ1NlYXNvbmFsaW5mbHVlbnphMDkuMicgdGhlbiAiU2Vhc29uYWwgaW5mbHVlbnphIGRvc2UgMSIKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdTZWFzb25hbGluZmx1ZW56YTEwLjMnIHRoZW4gIlNlYXNvbmFsIGluZmx1ZW56YSBkb3NlIDIiCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnU2Vhc29uYWxpbmZsdWVuemExMS4zJyB0aGVuICJTZWFzb25hbCBpbmZsdWVuemEgZG9zZSAyIgogICAgd2hlbiBQYXRpZW50LmlkID0gJ1NlYXNvbmFsaW5mbHVlbnphMTIuMycgdGhlbiAiU2Vhc29uYWwgaW5mbHVlbnphIGFubnVhbCBkb3NlIgogICAgd2hlbiBQYXRpZW50LmlkID0gJ1NlYXNvbmFsaW5mbHVlbnphMTMuMycgdGhlbiAiU2Vhc29uYWwgaW5mbHVlbnphIGFubnVhbCBkb3NlIgogICAgd2hlbiBQYXRpZW50LmlkID0gJ1NlYXNvbmFsaW5mbHVlbnphMTQuMicgdGhlbiAiU2Vhc29uYWwgaW5mbHVlbnphIGFubnVhbCBkb3NlIgogICAgd2hlbiBQYXRpZW50LmlkID0gJ1NlYXNvbmFsaW5mbHVlbnphMTUuMicgdGhlbiAiU2Vhc29uYWwgaW5mbHVlbnphIGFubnVhbCBkb3NlIgogICAgZWxzZSAnTm8gdGVzdCBjYXNlIHNldCcKICBlbmQK"/>
  </content>
</Library>