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
| Draft as of 2026-03-31 |
<Library xmlns="http://hl7.org/fhir">
<id value="IMMZD5DTRotavirusContraindicationsLogic"/>
<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;">IMMZD5DTRotavirusContraindicationsLogic</td>
</tr>
<tr>
<th scope="row"><b>Id: </b></th>
<td style="padding-left: 4px;">IMMZD5DTRotavirusContraindicationsLogic</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-IMMZD5DTRotavirusContraindicationsLogic.html">IMMZD5DTRotavirusContraindicationsLogic</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.D5.DT.Rotavirus contraindications decision 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-IMMZD5DTRotavirusEncounterElements.html">IMMZD5DTRotavirusEncounterElements</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>Draft Medication Request ID for Rotavirus dose</th><th>id</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Rotavirus vaccination is contraindicated Case 1</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Rotavirus vaccination is contraindicated Case 2</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Rotavirus vaccination is contraindicated</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Rotavirus vaccination is contraindicated Guidance</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Case 1</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Case 2</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Guidance</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Clinical judgement is required. Create a clinical note Case 1</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Clinical judgement is required. Create a clinical note Case 2</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Clinical judgement is required. Create a clinical note Case 3</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Clinical judgement is required. Create a clinical note Case 4</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Clinical judgement is required. Create a clinical note Case 5</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Clinical judgement is required. Create a clinical note Case 6</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Clinical judgement is required. Create a clinical note</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Clinical judgement is required. Create a clinical note Guidance</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Guidance</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Has Guidance</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: IMMZD5DTRotavirusContraindicationsLogic (IMMZ.D5.DT.Rotavirus contraindications)
* Rule: Check for contraindications before administering the vaccine(s) due
* Decision Table: IMMZ.D5.DT.Rotavirus contraindications
* Trigger: IMMZ.D5 Determine vaccine(s) to be administered based on contraindications
*/
library IMMZD5DTRotavirusContraindicationsLogic
using FHIR version '4.0.1'
include FHIRHelpers version '4.0.1'
include IMMZD5DTRotavirusEncounterElements called Encounter
parameter Today Date default Today()
context Patient
/*
@dynamicValue: Draft Medication Request ID for Rotavirus dose
*/
define "Draft Medication Request ID for Rotavirus dose":
First(Encounter."Draft Medication Request for Rotavirus dose").id
/*
@dynamicValue: Guidance
*/
define "Guidance":
case
when "Rotavirus vaccination is contraindicated" then "Rotavirus vaccination is contraindicated Guidance"
when "Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note" then "Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Guidance"
when "Clinical judgement is required. Create a clinical note" then "Clinical judgement is required. Create a clinical note Guidance"
else ''
end
define "Has Guidance":
"Guidance" is not null and "Guidance" != ''
/*
@output: Rotavirus vaccination is contraindicated Case 1
@pseudocode: "Immunization recommendation status" = "Contraindicated"
*/
define "Rotavirus vaccination is contraindicated Case 1":
Encounter."The client has prior history of intussusception"
/*
@output: Rotavirus vaccination is contraindicated Case 2
@pseudocode: "Immunization recommendation status" = "Contraindicated"
*/
define "Rotavirus vaccination is contraindicated Case 2":
Encounter."The client has severe immunodeficiency"
/*
@output: Rotavirus vaccination is contraindicated
@pseudocode: "Immunization recommendation status" = "Contraindicated"
*/
define "Rotavirus vaccination is contraindicated":
"Rotavirus vaccination is contraindicated Case 1"
or "Rotavirus vaccination is contraindicated Case 2"
/*
@output: Rotavirus vaccination is contraindicated Guidance
@guidance = Do not vaccinate client with rotavirus as rotavirus vaccination is contraindicated for clients with prior history of intussusception.
@guidance = Do not vaccinate client with rotavirus as rotavirus vaccincation is contraindicated for clients with severe immunodeficiency, including severe combined immunodeficiency.
*/
define "Rotavirus vaccination is contraindicated Guidance":
case
when "Rotavirus vaccination is contraindicated Case 1" then 'Do not vaccinate client with rotavirus as rotavirus vaccination is contraindicated for clients with prior history of intussusception.'
when "Rotavirus vaccination is contraindicated Case 2" then 'Do not vaccinate client with rotavirus as rotavirus vaccincation is contraindicated for clients with severe immunodeficiency, including severe combined immunodeficiency.'
else ''
end
/*
@output: Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Case 1
@pseudocode: "Immunization recommendation status" = "Further evaluation needed"
*/
define "Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Case 1":
Encounter."The client has a history of severe allergic reactions"
/*
@output: Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Case 2
@pseudocode: "Immunization recommendation status" = "Further evaluation needed"
*/
define "Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Case 2":
Encounter."The client has history of anaphylactic reactions"
/*
@output: Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note
@pseudocode: "Immunization recommendation status" = "Further evaluation needed"
*/
define "Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note":
"Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Case 1"
or "Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Case 2"
/*
@output: Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Guidance
@guidance = Do not vaccinate client with rotavirus if client had severe allergic reactions to a previous rotavirus vaccine dose or rotavirus vaccine components.
Check if the client has no known severe hypersensitivity to rotavirus vaccines components.
@guidance = Do not vaccinate client with rotavirus if client has history of anaphylactic reaction to a previous rotavirus vaccine dose or rotavirus vaccine components.
*/
define "Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Guidance":
case
when "Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Case 1" then 'Do not vaccinate client with rotavirus if client had severe allergic reactions to a previous rotavirus vaccine dose or rotavirus vaccine components.
Check if the client has no known severe hypersensitivity to rotavirus vaccines components.'
when "Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Case 2" then 'Do not vaccinate client with rotavirus if client has history of anaphylactic reaction to a previous rotavirus vaccine dose or rotavirus vaccine components.'
else ''
end
/*
@output: Clinical judgement is required. Create a clinical note Case 1
@pseudocode: "Immunization recommendation status" = "Further evaluation needed"
*/
define "Clinical judgement is required. Create a clinical note Case 1":
Encounter."The client has altered immunocompetence"
/*
@output: Clinical judgement is required. Create a clinical note Case 2
@pseudocode: "Immunization recommendation status" = "Further evaluation needed"
*/
define "Clinical judgement is required. Create a clinical note Case 2":
Encounter."The client has spina bifida"
/*
@output: Clinical judgement is required. Create a clinical note Case 3
@pseudocode: "Immunization recommendation status" = "Further evaluation needed"
*/
define "Clinical judgement is required. Create a clinical note Case 3":
Encounter."The client has bladder exstrophy"
/*
@output: Clinical judgement is required. Create a clinical note Case 4
@pseudocode: "Immunization recommendation status" = "Further evaluation needed"
*/
define "Clinical judgement is required. Create a clinical note Case 4":
Encounter."The client has chronic gastrointestinal disease"
/*
@output: Clinical judgement is required. Create a clinical note Case 5
@pseudocode: "Immunization recommendation status" = "Further evaluation needed"
*/
define "Clinical judgement is required. Create a clinical note Case 5":
Encounter."The client has acute gastroenteritis"
/*
@output: Clinical judgement is required. Create a clinical note Case 6
@pseudocode: "Immunization recommendation status" = "Further evaluation needed"
*/
define "Clinical judgement is required. Create a clinical note Case 6":
Encounter."The client has moderate to severe fever"
/*
@output: Clinical judgement is required. Create a clinical note
@pseudocode: "Immunization recommendation status" = "Further evaluation needed"
*/
define "Clinical judgement is required. Create a clinical note":
"Clinical judgement is required. Create a clinical note Case 1"
or "Clinical judgement is required. Create a clinical note Case 2"
or "Clinical judgement is required. Create a clinical note Case 3"
or "Clinical judgement is required. Create a clinical note Case 4"
or "Clinical judgement is required. Create a clinical note Case 5"
or "Clinical judgement is required. Create a clinical note Case 6"
/*
@output: Clinical judgement is required. Create a clinical note Guidance
@guidance = Client has altered immunocompetence other than severe combined immunodeficiency, consider risks of vaccination and make a judgement.
@guidance = Client has spina bifida, consider risks of vaccination and make a judgement.
@guidance = Client has bladder exstrophy, consider risks of vaccination and make a judgement.
@guidance = Client has chronic gastrointestinal disease, consider risks of vaccination and make a judgement.
@guidance = Client has acute gastroenteritis, consider risks of vaccination and make a judgement. Consider delaying rotavirus vaccination.
@guidance = Client has moderate to severe fever, consider risks of vaccination and make a judgement. Consider delaying rotavirus vaccination.
*/
define "Clinical judgement is required. Create a clinical note Guidance":
case
when "Clinical judgement is required. Create a clinical note Case 1" then 'Client has altered immunocompetence other than severe combined immunodeficiency, consider risks of vaccination and make a judgement.'
when "Clinical judgement is required. Create a clinical note Case 2" then 'Client has spina bifida, consider risks of vaccination and make a judgement.'
when "Clinical judgement is required. Create a clinical note Case 3" then 'Client has bladder exstrophy, consider risks of vaccination and make a judgement.'
when "Clinical judgement is required. Create a clinical note Case 4" then 'Client has chronic gastrointestinal disease, consider risks of vaccination and make a judgement.'
when "Clinical judgement is required. Create a clinical note Case 5" then 'Client has acute gastroenteritis, consider risks of vaccination and make a judgement. Consider delaying rotavirus vaccination.'
when "Clinical judgement is required. Create a clinical note Case 6" then 'Client has moderate to severe fever, consider risks of vaccination and make a judgement. Consider delaying rotavirus vaccination.'
else ''
end
/*
@test: Test expected results based on example patients
*/
define "Test Validation":
case
when Patient.id = 'Rotavirus25.1' then "Rotavirus vaccination is contraindicated Case 1" and "Guidance" = 'Do not vaccinate client with rotavirus as rotavirus vaccination is contraindicated for clients with prior history of intussusception.'
when Patient.id = 'Rotavirus26.1' then "Rotavirus vaccination is contraindicated Case 2" and "Guidance" = 'Do not vaccinate client with rotavirus as rotavirus vaccincation is contraindicated for clients with severe immunodeficiency, including severe combined immunodeficiency.'
when Patient.id = 'Rotavirus27.1' then "Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Case 1" and "Guidance" = 'Do not vaccinate client with rotavirus if client had severe allergic reactions to a previous rotavirus vaccine dose or rotavirus vaccine components.
Check if the client has no known severe hypersensitivity to rotavirus vaccines components.'
when Patient.id = 'Rotavirus28.1' then "Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Case 2" and "Guidance" = 'Do not vaccinate client with rotavirus if client has history of anaphylactic reaction to a previous rotavirus vaccine dose or rotavirus vaccine components.'
when Patient.id = 'Rotavirus29.1' then "Clinical judgement is required. Create a clinical note Case 1" and "Guidance" = 'Client has altered immunocompetence other than severe combined immunodeficiency, consider risks of vaccination and make a judgement.'
when Patient.id = 'Rotavirus30.1' then "Clinical judgement is required. Create a clinical note Case 2" and "Guidance" = 'Client has spina bifida, consider risks of vaccination and make a judgement.'
when Patient.id = 'Rotavirus31.1' then "Clinical judgement is required. Create a clinical note Case 3" and "Guidance" = 'Client has bladder exstrophy, consider risks of vaccination and make a judgement.'
when Patient.id = 'Rotavirus32.1' then "Clinical judgement is required. Create a clinical note Case 4" and "Guidance" = 'Client has chronic gastrointestinal disease, consider risks of vaccination and make a judgement.'
when Patient.id = 'Rotavirus33.1' then "Clinical judgement is required. Create a clinical note Case 5" and "Guidance" = 'Client has acute gastroenteritis, consider risks of vaccination and make a judgement. Consider delaying rotavirus vaccination.'
when Patient.id = 'Rotavirus34.1' then "Clinical judgement is required. Create a clinical note Case 6" and "Guidance" = 'Client has moderate to severe fever, consider risks of vaccination and make a judgement. Consider delaying rotavirus vaccination.'
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/IMMZD5DTRotavirusContraindicationsLogic"/>
<version value="1.0.0"/>
<name value="IMMZD5DTRotavirusContraindicationsLogic"/>
<title value="IMMZD5DTRotavirusContraindicationsLogic"/>
<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.D5.DT.Rotavirus contraindications decision table in the Immunization CPG"/>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library Encounter"/>
<resource
value="http://smart.who.int/immunizations/Library/IMMZD5DTRotavirusEncounterElements"/>
</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="Draft Medication Request ID for Rotavirus dose"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="id"/>
</parameter>
<parameter>
<name value="Rotavirus vaccination is contraindicated Case 1"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Rotavirus vaccination is contraindicated Case 2"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Rotavirus vaccination is contraindicated"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Rotavirus vaccination is contraindicated Guidance"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="string"/>
</parameter>
<parameter>
<name
value="Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Case 1"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Case 2"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="Rotavirus vaccination could be contraindicated. Clinical judgement is required. Create a clinical note Guidance"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="string"/>
</parameter>
<parameter>
<name
value="Clinical judgement is required. Create a clinical note Case 1"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="Clinical judgement is required. Create a clinical note Case 2"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="Clinical judgement is required. Create a clinical note Case 3"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="Clinical judgement is required. Create a clinical note Case 4"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="Clinical judgement is required. Create a clinical note Case 5"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="Clinical judgement is required. Create a clinical note Case 6"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Clinical judgement is required. Create a clinical note"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="Clinical judgement is required. Create a clinical note Guidance"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="string"/>
</parameter>
<parameter>
<name value="Guidance"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="string"/>
</parameter>
<parameter>
<name value="Has Guidance"/>
<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="LyoKICogTGlicmFyeTogSU1NWkQ1RFRSb3RhdmlydXNDb250cmFpbmRpY2F0aW9uc0xvZ2ljIChJTU1aLkQ1LkRULlJvdGF2aXJ1cyBjb250cmFpbmRpY2F0aW9ucykKICogUnVsZTogQ2hlY2sgZm9yIGNvbnRyYWluZGljYXRpb25zIGJlZm9yZSBhZG1pbmlzdGVyaW5nIHRoZSB2YWNjaW5lKHMpIGR1ZQogKiBEZWNpc2lvbiBUYWJsZTogSU1NWi5ENS5EVC5Sb3RhdmlydXMgY29udHJhaW5kaWNhdGlvbnMKICogVHJpZ2dlcjogSU1NWi5ENSBEZXRlcm1pbmUgdmFjY2luZShzKSB0byBiZSBhZG1pbmlzdGVyZWQgYmFzZWQgb24gY29udHJhaW5kaWNhdGlvbnMKICovCmxpYnJhcnkgSU1NWkQ1RFRSb3RhdmlydXNDb250cmFpbmRpY2F0aW9uc0xvZ2ljCgp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4xJwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBJTU1aRDVEVFJvdGF2aXJ1c0VuY291bnRlckVsZW1lbnRzIGNhbGxlZCBFbmNvdW50ZXIKCnBhcmFtZXRlciBUb2RheSBEYXRlIGRlZmF1bHQgVG9kYXkoKQoKY29udGV4dCBQYXRpZW50CgovKgogIEBkeW5hbWljVmFsdWU6IERyYWZ0IE1lZGljYXRpb24gUmVxdWVzdCBJRCBmb3IgUm90YXZpcnVzIGRvc2UKICAqLwogIGRlZmluZSAiRHJhZnQgTWVkaWNhdGlvbiBSZXF1ZXN0IElEIGZvciBSb3RhdmlydXMgZG9zZSI6CiAgICBGaXJzdChFbmNvdW50ZXIuIkRyYWZ0IE1lZGljYXRpb24gUmVxdWVzdCBmb3IgUm90YXZpcnVzIGRvc2UiKS5pZAoKCi8qCkBkeW5hbWljVmFsdWU6IEd1aWRhbmNlCiovCmRlZmluZSAiR3VpZGFuY2UiOgogIGNhc2UgCiAgICB3aGVuICJSb3RhdmlydXMgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIiB0aGVuICJSb3RhdmlydXMgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIEd1aWRhbmNlIgogICAgd2hlbiAiUm90YXZpcnVzIHZhY2NpbmF0aW9uIGNvdWxkIGJlIGNvbnRyYWluZGljYXRlZC4gQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIiB0aGVuICJSb3RhdmlydXMgdmFjY2luYXRpb24gY291bGQgYmUgY29udHJhaW5kaWNhdGVkLiBDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUgR3VpZGFuY2UiCiAgICB3aGVuICJDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUiIHRoZW4gIkNsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSBHdWlkYW5jZSIgCiAgICBlbHNlICcnCiAgZW5kCiAgCmRlZmluZSAiSGFzIEd1aWRhbmNlIjoKICAiR3VpZGFuY2UiIGlzIG5vdCBudWxsIGFuZCAiR3VpZGFuY2UiICE9ICcnCgovKgpAb3V0cHV0OiBSb3RhdmlydXMgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIENhc2UgMQpAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIkNvbnRyYWluZGljYXRlZCIKKi8KZGVmaW5lICJSb3RhdmlydXMgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIENhc2UgMSI6CiAgRW5jb3VudGVyLiJUaGUgY2xpZW50IGhhcyBwcmlvciBoaXN0b3J5IG9mIGludHVzc3VzY2VwdGlvbiIKCi8qCkBvdXRwdXQ6IFJvdGF2aXJ1cyB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgQ2FzZSAyCkBwc2V1ZG9jb2RlOiAiSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyIgPSAiQ29udHJhaW5kaWNhdGVkIgoqLwpkZWZpbmUgIlJvdGF2aXJ1cyB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgQ2FzZSAyIjoKICBFbmNvdW50ZXIuIlRoZSBjbGllbnQgaGFzIHNldmVyZSBpbW11bm9kZWZpY2llbmN5IgoKLyoKQG91dHB1dDogUm90YXZpcnVzIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZApAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIkNvbnRyYWluZGljYXRlZCIKKi8KZGVmaW5lICJSb3RhdmlydXMgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIjoKICAiUm90YXZpcnVzIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBDYXNlIDEiCiAgICBvciAiUm90YXZpcnVzIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBDYXNlIDIiCgovKgpAb3V0cHV0OiBSb3RhdmlydXMgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIEd1aWRhbmNlCkBndWlkYW5jZSA9IERvIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggcm90YXZpcnVzIGFzIHJvdGF2aXJ1cyB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgZm9yIGNsaWVudHMgd2l0aCBwcmlvciBoaXN0b3J5IG9mIGludHVzc3VzY2VwdGlvbi4KQGd1aWRhbmNlID0gRG8gbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCByb3RhdmlydXMgYXMgcm90YXZpcnVzIHZhY2NpbmNhdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgZm9yIGNsaWVudHMgd2l0aCBzZXZlcmUgaW1tdW5vZGVmaWNpZW5jeSwgaW5jbHVkaW5nIHNldmVyZSBjb21iaW5lZCBpbW11bm9kZWZpY2llbmN5LgoqLwpkZWZpbmUgIlJvdGF2aXJ1cyB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgR3VpZGFuY2UiOgogIGNhc2UKICAgIHdoZW4gIlJvdGF2aXJ1cyB2YWNjaW5hdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgQ2FzZSAxIiB0aGVuICdEbyBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIHJvdGF2aXJ1cyBhcyByb3RhdmlydXMgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIGZvciBjbGllbnRzIHdpdGggcHJpb3IgaGlzdG9yeSBvZiBpbnR1c3N1c2NlcHRpb24uJwogICAgd2hlbiAiUm90YXZpcnVzIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBDYXNlIDIiIHRoZW4gJ0RvIG5vdCB2YWNjaW5hdGUgY2xpZW50IHdpdGggcm90YXZpcnVzIGFzIHJvdGF2aXJ1cyB2YWNjaW5jYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIGZvciBjbGllbnRzIHdpdGggc2V2ZXJlIGltbXVub2RlZmljaWVuY3ksIGluY2x1ZGluZyBzZXZlcmUgY29tYmluZWQgaW1tdW5vZGVmaWNpZW5jeS4nCiAgICBlbHNlICcnCiAgZW5kCgovKgpAb3V0cHV0OiBSb3RhdmlydXMgdmFjY2luYXRpb24gY291bGQgYmUgY29udHJhaW5kaWNhdGVkLiBDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUgQ2FzZSAxCkBwc2V1ZG9jb2RlOiAiSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyIgPSAiRnVydGhlciBldmFsdWF0aW9uIG5lZWRlZCIKKi8KZGVmaW5lICJSb3RhdmlydXMgdmFjY2luYXRpb24gY291bGQgYmUgY29udHJhaW5kaWNhdGVkLiBDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUgQ2FzZSAxIjoKICBFbmNvdW50ZXIuIlRoZSBjbGllbnQgaGFzIGEgaGlzdG9yeSBvZiBzZXZlcmUgYWxsZXJnaWMgcmVhY3Rpb25zIgoKLyoKQG91dHB1dDogUm90YXZpcnVzIHZhY2NpbmF0aW9uIGNvdWxkIGJlIGNvbnRyYWluZGljYXRlZC4gQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIENhc2UgMgpAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIkZ1cnRoZXIgZXZhbHVhdGlvbiBuZWVkZWQiCiovCmRlZmluZSAiUm90YXZpcnVzIHZhY2NpbmF0aW9uIGNvdWxkIGJlIGNvbnRyYWluZGljYXRlZC4gQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIENhc2UgMiI6CiAgRW5jb3VudGVyLiJUaGUgY2xpZW50IGhhcyBoaXN0b3J5IG9mIGFuYXBoeWxhY3RpYyByZWFjdGlvbnMiCgovKgpAb3V0cHV0OiBSb3RhdmlydXMgdmFjY2luYXRpb24gY291bGQgYmUgY29udHJhaW5kaWNhdGVkLiBDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUKQHBzZXVkb2NvZGU6ICJJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzIiA9ICJGdXJ0aGVyIGV2YWx1YXRpb24gbmVlZGVkIgoqLwpkZWZpbmUgIlJvdGF2aXJ1cyB2YWNjaW5hdGlvbiBjb3VsZCBiZSBjb250cmFpbmRpY2F0ZWQuIENsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSI6CiAgIlJvdGF2aXJ1cyB2YWNjaW5hdGlvbiBjb3VsZCBiZSBjb250cmFpbmRpY2F0ZWQuIENsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSBDYXNlIDEiCiAgICBvciAiUm90YXZpcnVzIHZhY2NpbmF0aW9uIGNvdWxkIGJlIGNvbnRyYWluZGljYXRlZC4gQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIENhc2UgMiIKCi8qCkBvdXRwdXQ6IFJvdGF2aXJ1cyB2YWNjaW5hdGlvbiBjb3VsZCBiZSBjb250cmFpbmRpY2F0ZWQuIENsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSBHdWlkYW5jZQpAZ3VpZGFuY2UgPSBEbyBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIHJvdGF2aXJ1cyBpZiBjbGllbnQgaGFkIHNldmVyZSBhbGxlcmdpYyByZWFjdGlvbnMgdG8gYSBwcmV2aW91cyByb3RhdmlydXMgdmFjY2luZSBkb3NlIG9yIHJvdGF2aXJ1cyB2YWNjaW5lIGNvbXBvbmVudHMuCkNoZWNrIGlmIHRoZSBjbGllbnQgaGFzIG5vIGtub3duIHNldmVyZSBoeXBlcnNlbnNpdGl2aXR5IHRvIHJvdGF2aXJ1cyB2YWNjaW5lcyBjb21wb25lbnRzLgpAZ3VpZGFuY2UgPSBEbyBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIHJvdGF2aXJ1cyBpZiBjbGllbnQgaGFzIGhpc3Rvcnkgb2YgYW5hcGh5bGFjdGljIHJlYWN0aW9uIHRvIGEgcHJldmlvdXMgcm90YXZpcnVzIHZhY2NpbmUgZG9zZSBvciByb3RhdmlydXMgdmFjY2luZSBjb21wb25lbnRzLgoqLwpkZWZpbmUgIlJvdGF2aXJ1cyB2YWNjaW5hdGlvbiBjb3VsZCBiZSBjb250cmFpbmRpY2F0ZWQuIENsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSBHdWlkYW5jZSI6CiAgY2FzZQogICAgd2hlbiAiUm90YXZpcnVzIHZhY2NpbmF0aW9uIGNvdWxkIGJlIGNvbnRyYWluZGljYXRlZC4gQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIENhc2UgMSIgdGhlbiAnRG8gbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCByb3RhdmlydXMgaWYgY2xpZW50IGhhZCBzZXZlcmUgYWxsZXJnaWMgcmVhY3Rpb25zIHRvIGEgcHJldmlvdXMgcm90YXZpcnVzIHZhY2NpbmUgZG9zZSBvciByb3RhdmlydXMgdmFjY2luZSBjb21wb25lbnRzLgpDaGVjayBpZiB0aGUgY2xpZW50IGhhcyBubyBrbm93biBzZXZlcmUgaHlwZXJzZW5zaXRpdml0eSB0byByb3RhdmlydXMgdmFjY2luZXMgY29tcG9uZW50cy4nCiAgICB3aGVuICJSb3RhdmlydXMgdmFjY2luYXRpb24gY291bGQgYmUgY29udHJhaW5kaWNhdGVkLiBDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUgQ2FzZSAyIiB0aGVuICdEbyBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIHJvdGF2aXJ1cyBpZiBjbGllbnQgaGFzIGhpc3Rvcnkgb2YgYW5hcGh5bGFjdGljIHJlYWN0aW9uIHRvIGEgcHJldmlvdXMgcm90YXZpcnVzIHZhY2NpbmUgZG9zZSBvciByb3RhdmlydXMgdmFjY2luZSBjb21wb25lbnRzLicKICAgIGVsc2UgJycKICBlbmQKCi8qCkBvdXRwdXQ6IENsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSBDYXNlIDEKQHBzZXVkb2NvZGU6ICJJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzIiA9ICJGdXJ0aGVyIGV2YWx1YXRpb24gbmVlZGVkIgoqLwpkZWZpbmUgIkNsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSBDYXNlIDEiOgogIEVuY291bnRlci4iVGhlIGNsaWVudCBoYXMgYWx0ZXJlZCBpbW11bm9jb21wZXRlbmNlIgoKLyoKQG91dHB1dDogQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIENhc2UgMgpAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIkZ1cnRoZXIgZXZhbHVhdGlvbiBuZWVkZWQiCiovCmRlZmluZSAiQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIENhc2UgMiI6CiAgRW5jb3VudGVyLiJUaGUgY2xpZW50IGhhcyBzcGluYSBiaWZpZGEiCgovKgpAb3V0cHV0OiBDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUgQ2FzZSAzCkBwc2V1ZG9jb2RlOiAiSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyIgPSAiRnVydGhlciBldmFsdWF0aW9uIG5lZWRlZCIKKi8KZGVmaW5lICJDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUgQ2FzZSAzIjoKICBFbmNvdW50ZXIuIlRoZSBjbGllbnQgaGFzIGJsYWRkZXIgZXhzdHJvcGh5IgoKLyoKQG91dHB1dDogQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIENhc2UgNApAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIkZ1cnRoZXIgZXZhbHVhdGlvbiBuZWVkZWQiCiovCmRlZmluZSAiQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIENhc2UgNCI6CiAgRW5jb3VudGVyLiJUaGUgY2xpZW50IGhhcyBjaHJvbmljIGdhc3Ryb2ludGVzdGluYWwgZGlzZWFzZSIKCi8qCkBvdXRwdXQ6IENsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSBDYXNlIDUKQHBzZXVkb2NvZGU6ICJJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzIiA9ICJGdXJ0aGVyIGV2YWx1YXRpb24gbmVlZGVkIgoqLwpkZWZpbmUgIkNsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSBDYXNlIDUiOgogIEVuY291bnRlci4iVGhlIGNsaWVudCBoYXMgYWN1dGUgZ2FzdHJvZW50ZXJpdGlzIgoKLyoKQG91dHB1dDogQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIENhc2UgNgpAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gIkZ1cnRoZXIgZXZhbHVhdGlvbiBuZWVkZWQiCiovCmRlZmluZSAiQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIENhc2UgNiI6CiAgRW5jb3VudGVyLiJUaGUgY2xpZW50IGhhcyBtb2RlcmF0ZSB0byBzZXZlcmUgZmV2ZXIiCgovKgpAb3V0cHV0OiBDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUKQHBzZXVkb2NvZGU6ICJJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzIiA9ICJGdXJ0aGVyIGV2YWx1YXRpb24gbmVlZGVkIgoqLwpkZWZpbmUgIkNsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSI6CiAgIkNsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSBDYXNlIDEiCiAgICBvciAiQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIENhc2UgMiIKICAgIG9yICJDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUgQ2FzZSAzIgogICAgb3IgIkNsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSBDYXNlIDQiCiAgICBvciAiQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIENhc2UgNSIKICAgIG9yICJDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUgQ2FzZSA2IgoKLyoKQG91dHB1dDogQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIEd1aWRhbmNlCkBndWlkYW5jZSA9IENsaWVudCBoYXMgYWx0ZXJlZCBpbW11bm9jb21wZXRlbmNlIG90aGVyIHRoYW4gc2V2ZXJlIGNvbWJpbmVkIGltbXVub2RlZmljaWVuY3ksIGNvbnNpZGVyIHJpc2tzIG9mIHZhY2NpbmF0aW9uIGFuZCBtYWtlIGEganVkZ2VtZW50LgpAZ3VpZGFuY2UgPSBDbGllbnQgaGFzIHNwaW5hIGJpZmlkYSwgY29uc2lkZXIgcmlza3Mgb2YgdmFjY2luYXRpb24gYW5kIG1ha2UgYSBqdWRnZW1lbnQuCkBndWlkYW5jZSA9IENsaWVudCBoYXMgYmxhZGRlciBleHN0cm9waHksIGNvbnNpZGVyIHJpc2tzIG9mIHZhY2NpbmF0aW9uIGFuZCBtYWtlIGEganVkZ2VtZW50LgpAZ3VpZGFuY2UgPSBDbGllbnQgaGFzIGNocm9uaWMgZ2FzdHJvaW50ZXN0aW5hbCBkaXNlYXNlLCBjb25zaWRlciByaXNrcyBvZiB2YWNjaW5hdGlvbiBhbmQgbWFrZSBhIGp1ZGdlbWVudC4KQGd1aWRhbmNlID0gQ2xpZW50IGhhcyBhY3V0ZSBnYXN0cm9lbnRlcml0aXMsIGNvbnNpZGVyIHJpc2tzIG9mIHZhY2NpbmF0aW9uIGFuZCBtYWtlIGEganVkZ2VtZW50LiBDb25zaWRlciBkZWxheWluZyByb3RhdmlydXMgdmFjY2luYXRpb24uCkBndWlkYW5jZSA9IENsaWVudCBoYXMgbW9kZXJhdGUgdG8gc2V2ZXJlIGZldmVyLCBjb25zaWRlciByaXNrcyBvZiB2YWNjaW5hdGlvbiBhbmQgbWFrZSBhIGp1ZGdlbWVudC4gQ29uc2lkZXIgZGVsYXlpbmcgcm90YXZpcnVzIHZhY2NpbmF0aW9uLgoqLwpkZWZpbmUgIkNsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSBHdWlkYW5jZSI6CiAgY2FzZQogICAgd2hlbiAiQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIENhc2UgMSIgdGhlbiAnQ2xpZW50IGhhcyBhbHRlcmVkIGltbXVub2NvbXBldGVuY2Ugb3RoZXIgdGhhbiBzZXZlcmUgY29tYmluZWQgaW1tdW5vZGVmaWNpZW5jeSwgY29uc2lkZXIgcmlza3Mgb2YgdmFjY2luYXRpb24gYW5kIG1ha2UgYSBqdWRnZW1lbnQuJwogICAgd2hlbiAiQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIENhc2UgMiIgdGhlbiAnQ2xpZW50IGhhcyBzcGluYSBiaWZpZGEsIGNvbnNpZGVyIHJpc2tzIG9mIHZhY2NpbmF0aW9uIGFuZCBtYWtlIGEganVkZ2VtZW50LicKICAgIHdoZW4gIkNsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSBDYXNlIDMiIHRoZW4gJ0NsaWVudCBoYXMgYmxhZGRlciBleHN0cm9waHksIGNvbnNpZGVyIHJpc2tzIG9mIHZhY2NpbmF0aW9uIGFuZCBtYWtlIGEganVkZ2VtZW50LicKICAgIHdoZW4gIkNsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSBDYXNlIDQiIHRoZW4gJ0NsaWVudCBoYXMgY2hyb25pYyBnYXN0cm9pbnRlc3RpbmFsIGRpc2Vhc2UsIGNvbnNpZGVyIHJpc2tzIG9mIHZhY2NpbmF0aW9uIGFuZCBtYWtlIGEganVkZ2VtZW50LicKICAgIHdoZW4gIkNsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSBDYXNlIDUiIHRoZW4gJ0NsaWVudCBoYXMgYWN1dGUgZ2FzdHJvZW50ZXJpdGlzLCBjb25zaWRlciByaXNrcyBvZiB2YWNjaW5hdGlvbiBhbmQgbWFrZSBhIGp1ZGdlbWVudC4gQ29uc2lkZXIgZGVsYXlpbmcgcm90YXZpcnVzIHZhY2NpbmF0aW9uLicKICAgIHdoZW4gIkNsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSBDYXNlIDYiIHRoZW4gJ0NsaWVudCBoYXMgbW9kZXJhdGUgdG8gc2V2ZXJlIGZldmVyLCBjb25zaWRlciByaXNrcyBvZiB2YWNjaW5hdGlvbiBhbmQgbWFrZSBhIGp1ZGdlbWVudC4gQ29uc2lkZXIgZGVsYXlpbmcgcm90YXZpcnVzIHZhY2NpbmF0aW9uLicKICAgIGVsc2UgJycKICBlbmQKCgovKgpAdGVzdDogVGVzdCBleHBlY3RlZCByZXN1bHRzIGJhc2VkIG9uIGV4YW1wbGUgcGF0aWVudHMKKi8KZGVmaW5lICJUZXN0IFZhbGlkYXRpb24iOgogIGNhc2UKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdSb3RhdmlydXMyNS4xJyB0aGVuICJSb3RhdmlydXMgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIENhc2UgMSIgYW5kICJHdWlkYW5jZSIgPSAnRG8gbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCByb3RhdmlydXMgYXMgcm90YXZpcnVzIHZhY2NpbmF0aW9uIGlzIGNvbnRyYWluZGljYXRlZCBmb3IgY2xpZW50cyB3aXRoIHByaW9yIGhpc3Rvcnkgb2YgaW50dXNzdXNjZXB0aW9uLicKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdSb3RhdmlydXMyNi4xJyB0aGVuICJSb3RhdmlydXMgdmFjY2luYXRpb24gaXMgY29udHJhaW5kaWNhdGVkIENhc2UgMiIgYW5kICJHdWlkYW5jZSIgPSAnRG8gbm90IHZhY2NpbmF0ZSBjbGllbnQgd2l0aCByb3RhdmlydXMgYXMgcm90YXZpcnVzIHZhY2NpbmNhdGlvbiBpcyBjb250cmFpbmRpY2F0ZWQgZm9yIGNsaWVudHMgd2l0aCBzZXZlcmUgaW1tdW5vZGVmaWNpZW5jeSwgaW5jbHVkaW5nIHNldmVyZSBjb21iaW5lZCBpbW11bm9kZWZpY2llbmN5LicKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdSb3RhdmlydXMyNy4xJyB0aGVuICJSb3RhdmlydXMgdmFjY2luYXRpb24gY291bGQgYmUgY29udHJhaW5kaWNhdGVkLiBDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUgQ2FzZSAxIiBhbmQgIkd1aWRhbmNlIiA9ICdEbyBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIHJvdGF2aXJ1cyBpZiBjbGllbnQgaGFkIHNldmVyZSBhbGxlcmdpYyByZWFjdGlvbnMgdG8gYSBwcmV2aW91cyByb3RhdmlydXMgdmFjY2luZSBkb3NlIG9yIHJvdGF2aXJ1cyB2YWNjaW5lIGNvbXBvbmVudHMuCkNoZWNrIGlmIHRoZSBjbGllbnQgaGFzIG5vIGtub3duIHNldmVyZSBoeXBlcnNlbnNpdGl2aXR5IHRvIHJvdGF2aXJ1cyB2YWNjaW5lcyBjb21wb25lbnRzLicKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdSb3RhdmlydXMyOC4xJyB0aGVuICJSb3RhdmlydXMgdmFjY2luYXRpb24gY291bGQgYmUgY29udHJhaW5kaWNhdGVkLiBDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUgQ2FzZSAyIiBhbmQgIkd1aWRhbmNlIiA9ICdEbyBub3QgdmFjY2luYXRlIGNsaWVudCB3aXRoIHJvdGF2aXJ1cyBpZiBjbGllbnQgaGFzIGhpc3Rvcnkgb2YgYW5hcGh5bGFjdGljIHJlYWN0aW9uIHRvIGEgcHJldmlvdXMgcm90YXZpcnVzIHZhY2NpbmUgZG9zZSBvciByb3RhdmlydXMgdmFjY2luZSBjb21wb25lbnRzLicKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdSb3RhdmlydXMyOS4xJyB0aGVuICJDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUgQ2FzZSAxIiBhbmQgIkd1aWRhbmNlIiA9ICdDbGllbnQgaGFzIGFsdGVyZWQgaW1tdW5vY29tcGV0ZW5jZSBvdGhlciB0aGFuIHNldmVyZSBjb21iaW5lZCBpbW11bm9kZWZpY2llbmN5LCBjb25zaWRlciByaXNrcyBvZiB2YWNjaW5hdGlvbiBhbmQgbWFrZSBhIGp1ZGdlbWVudC4nCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnUm90YXZpcnVzMzAuMScgdGhlbiAiQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIENhc2UgMiIgYW5kICJHdWlkYW5jZSIgPSAnQ2xpZW50IGhhcyBzcGluYSBiaWZpZGEsIGNvbnNpZGVyIHJpc2tzIG9mIHZhY2NpbmF0aW9uIGFuZCBtYWtlIGEganVkZ2VtZW50LicKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdSb3RhdmlydXMzMS4xJyB0aGVuICJDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUgQ2FzZSAzIiBhbmQgIkd1aWRhbmNlIiA9ICdDbGllbnQgaGFzIGJsYWRkZXIgZXhzdHJvcGh5LCBjb25zaWRlciByaXNrcyBvZiB2YWNjaW5hdGlvbiBhbmQgbWFrZSBhIGp1ZGdlbWVudC4nCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnUm90YXZpcnVzMzIuMScgdGhlbiAiQ2xpbmljYWwganVkZ2VtZW50IGlzIHJlcXVpcmVkLiBDcmVhdGUgYSBjbGluaWNhbCBub3RlIENhc2UgNCIgYW5kICJHdWlkYW5jZSIgPSAnQ2xpZW50IGhhcyBjaHJvbmljIGdhc3Ryb2ludGVzdGluYWwgZGlzZWFzZSwgY29uc2lkZXIgcmlza3Mgb2YgdmFjY2luYXRpb24gYW5kIG1ha2UgYSBqdWRnZW1lbnQuJwogICAgd2hlbiBQYXRpZW50LmlkID0gJ1JvdGF2aXJ1czMzLjEnIHRoZW4gIkNsaW5pY2FsIGp1ZGdlbWVudCBpcyByZXF1aXJlZC4gQ3JlYXRlIGEgY2xpbmljYWwgbm90ZSBDYXNlIDUiIGFuZCAiR3VpZGFuY2UiID0gJ0NsaWVudCBoYXMgYWN1dGUgZ2FzdHJvZW50ZXJpdGlzLCBjb25zaWRlciByaXNrcyBvZiB2YWNjaW5hdGlvbiBhbmQgbWFrZSBhIGp1ZGdlbWVudC4gQ29uc2lkZXIgZGVsYXlpbmcgcm90YXZpcnVzIHZhY2NpbmF0aW9uLicKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdSb3RhdmlydXMzNC4xJyB0aGVuICJDbGluaWNhbCBqdWRnZW1lbnQgaXMgcmVxdWlyZWQuIENyZWF0ZSBhIGNsaW5pY2FsIG5vdGUgQ2FzZSA2IiBhbmQgIkd1aWRhbmNlIiA9ICdDbGllbnQgaGFzIG1vZGVyYXRlIHRvIHNldmVyZSBmZXZlciwgY29uc2lkZXIgcmlza3Mgb2YgdmFjY2luYXRpb24gYW5kIG1ha2UgYSBqdWRnZW1lbnQuIENvbnNpZGVyIGRlbGF5aW5nIHJvdGF2aXJ1cyB2YWNjaW5hdGlvbi4nCiAgICBlbHNlICdObyB0ZXN0IGNhc2Ugc2V0JwogIGVuZAo="/>
</content>
</Library>