WHO SMART Guidelines - HIV
0.4.3 - ci-build
WHO SMART Guidelines - HIV - Local Development build (v0.4.3) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
Draft as of 2025-02-07 |
<Library xmlns="http://hl7.org/fhir">
<id value="HIVIND38Logic"/>
<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;">HIV.IND.38 Logic</td>
</tr>
<tr>
<th scope="row"><b>Id: </b></th>
<td style="padding-left: 4px;">HIVIND38Logic</td>
</tr>
<tr>
<th scope="row"><b>Version: </b></th>
<td style="padding-left: 4px;">0.4.3</td>
</tr>
<tr>
<th scope="row"><b>Url: </b></th>
<td style="padding-left: 4px;"><a href="Library-HIVIND38Logic.html">HIV.IND.38 Logic</a></td>
</tr>
<tr>
<th scope="row"><b>Status: </b></th>
<td style="padding-left: 4px;">draft</td>
</tr>
<tr>
<th scope="row"><b>Experimental: </b></th>
<td style="padding-left: 4px;">true</td>
</tr>
<tr>
<th scope="row"><b>Type: </b></th>
<td style="padding-left: 4px;">
<p style="margin-bottom: 5px;">
<b>system: </b> <span><a href="http://terminology.hl7.org/6.0.2/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a></span>
</p>
<p style="margin-bottom: 5px;">
<b>code: </b> <span>logic-library</span>
</p>
</td>
</tr>
<tr>
<th scope="row"><b>Date: </b></th>
<td style="padding-left: 4px;">2025-02-07 14:15:45+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>% of HIV-exposed infants who receive a virological test for HIV within two months (and 12 months) of birth</p>
</div></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: HIV.IND.38 Logic
* Ref No: VER.2
* Short Name: Early infant diagnosis (EID) coverage
*
* Definition: % of HIV-exposed infants who receive a virological test for HIV within two months (and 12 months) of birth
*
* Numerator: Number of HIV-exposed infants born during the reporting period who received a virological HIV test within two months (and 12 months) of birth
* Numerator Calculation: COUNT of infants who are an "HIV-exposed infant or child" with "Infant date of birth" within the reporting period AND with "Date of viral load sample collection" LESS THAN 2 months AFTER "Infant date of birth" AND "HIV test type"='Nucleic acid test for HIV'
* Numerator Exclusions:
*
* Denominator: Estimated number of HIV-positive women who delivered during the reporting period. | | Note: The denominator is a proxy measure for the number of infants born to HIV-infected women.
* Denominator Calculation: *Estimated number of HIV-positive women who delivered during the reporting period
* Denominator Exclusions:
*
* Disaggregations:
* • Test result (HIV-positive, HIV-negative, indeterminate, other) to enable calculation of the percentage positive and the percentage with an indeterminate result among HIV-exposed infants receiving a virological test
* • Age of infant (<2 months, 2-12 months) to allow the separate calculation of the proportion of exposed infants receiving virological testing within two months of birth and within 12 months of birth
* • Cities and other administrative regions of epidemiologic importance
*
* Disaggregation Elements: HIV test date (at 2 months, at 12 months) | Age of infant (<2 months, 2-12 months)
*
* Numerator and Denominator Elements:
* Date of viral load sample collection
* HIV test type
* HIV-exposed infant or child
* Infant date of birth
*
* Reference: Consolidated guidelines on person-centred HIV strategic information: strengthening routine data for impact. Geneva: World Health Organization; 2022
*
* Data Concepts:
* HIV.B.DE81: HIV test type | Type of HIV test
* HIV.B.DE82: Rapid diagnostic test for HIV | Antibody test for HIV performed with a rapid diagnostic
* HIV.B.DE83: Enzyme immunoassay for HIV | Antibody test for HIV performed with an enzyme immunoassay
* HIV.B.DE84: Nucleic acid test for HIV | Virological test, which includes testing for early infant diagnosis
* HIV.B.DE85: Dual HIV/syphilis rapid diagnostic test | Antibody test for HIV and syphilis performed with a rapid diagnostic
* HIV.B.DE86: HIV self-test | Antibody test for HIV performed by self-tester using a rapid diagnostic
* HIV.B.DE110: HIV test date | Date of the HIV test
* HIV.D.DE194: Date of viral load sample collection | Date and time when the sample was collected to test the client's HIV viral load
* HIV.E.DE87: Infant date of birth | The infant's date of birth (DOB) if known
* HIV.E.DE90: Age of infant | Infant age calculated using date of birth
* HIV.E.DE112: HIV-exposed infant or child | Whether the infant or child was determined to have had HIV exposure
* HIV.E.DE168: HIV test type | Type of HIV test
* HIV.E.DE169: Rapid diagnostic test for HIV | Antibody test for HIV performed with a rapid diagnostic (RDT)
* HIV.E.DE170: Enzyme immunoassay for HIV | Antibody test for HIV performed with an enzyme immunoassay (EIA)
* HIV.E.DE171: Nucleic acid test for HIV | Virological test, which includes testing for early infant diagnosis
* HIV.E.DE172: Dual HIV/syphilis rapid diagnostic test | Antibody test for HIV and syphilis performed with a rapid diagnostic
* HIV.E.DE224: HIV test date | Date of the HIV test
* HIV.G.DE8: Date of viral load sample collection | Date and time when the sample was collected to test the client's HIV viral load
* HIV.SRV.DE1: HIV test date | Date of the HIV test
* HIV.SRV.DE12: Date of viral load sample collection | Date and time when the sample was collected to test the client's HIV viral load
* HIV.SRV.DE20: HIV-exposed infant or child | Whether the infant or child was determined to have had HIV exposure
*
* Additional Context
* - what it measures: This indicator measures early HIV diagnosis in infants.
* - rationale: • High coverage of early virological testing of infants helps initiate ART early in children with confirmed HIV infection and supports counselling on efforts to prevent seroconversion of those with a negative early test result. | • Current PMTCT guidelines recommend virological testing for HIV-exposed infants within two months of birth.
* - method: For the numerator: Programme records (for example, PMTCT registers, laboratory records). | | For the denominator: Modelling-based estimates (for example, Spectrum AIM) | | The recommended reporting period is 12 months.
*
* Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm
*/
library HIVIND38Logic
// Included Libraries
using FHIR version '4.0.1'
include HIVCommon version '0.0.1' called HIC
include FHIRHelpers version '4.0.1'
include WHOCommon called WCom
include HIVElements called HE
include HIVIndicatorElements called HIE
// Indicator Definition
parameter "Measurement Period" Interval<Date> default Interval[@2023-01-01, @2023-01-30]
context Patient
/* Populations */
/*
*Initial Population
*/
define "Initial Population":
true
/**
* Numerator
*
* Definition: Number of HIV-exposed infants born during the reporting period who received a virological HIV test within two months (and 12 months) of birth
* Calculation: COUNT of infants who are an "HIV-exposed infant or child" with "Infant date of birth" within the reporting period AND with "Date of viral load sample collection" LESS THAN 2 months AFTER "Infant date of birth" AND "HIV test type"='Nucleic acid test for HIV'
*/
define "Numerator":
exists(HIE."HIV-exposed infant or child E.DE112" O
with [Patient] P
such that O.subject.references(P) and P.birthDate during "Measurement Period")
and exists(
HE."Nucleic acid test for HIV B.DE84" O
with [Patient] Pt
such that O.subject.references(Pt)
and months between start of O.effective.toInterval() and FHIRHelpers.ToDate(Pt.birthDate) < 2 months)
/**
* Denominator - THiS SHOULDN'T BE PROPORTION
*
* Definition: Estimated number of HIV-positive women who delivered during the reporting period. | | Note: The denominator is a proxy measure for the number of infants born to HIV-infected women.
* Calculation: *Estimated number of HIV-positive women who delivered during the reporting period
*/
define "Denominator":
true
/* end Populations */
/*
* Disaggregators
*/
define "Age Stratifier":
HIE."By Age Stratifier 7"
define "Geographic Region Stratifier":
HIE."By Geographic Region Stratifier"
define "EID test number 1 test result":
HIE."EID test number 1 test result"
define "Stratification":
HIE."By Age Stratifier 7"
+ ':' + HIE."By Geographic Region Stratifier"
+ HIE."EID test number 1 test result".code </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/hiv/Library/HIVIND38Logic"/>
<version value="0.4.3"/>
<name value="HIVIND38Logic"/>
<title value="HIV.IND.38 Logic"/>
<status value="draft"/>
<experimental value="true"/>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/library-type"/>
<code value="logic-library"/>
</coding>
</type>
<date value="2025-02-07T14:15:45+00:00"/>
<publisher value="WHO"/>
<contact>
<name value="WHO"/>
<telecom>
<system value="url"/>
<value value="http://who.int"/>
</telecom>
</contact>
<description
value="% of HIV-exposed infants who receive a virological test for HIV within two months (and 12 months) of birth"/>
<content>
<contentType value="text/cql"/>
<data
value="LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuMzggTG9naWMKICogUmVmIE5vOiBWRVIuMgogKiBTaG9ydCBOYW1lOiBFYXJseSBpbmZhbnQgZGlhZ25vc2lzIChFSUQpIGNvdmVyYWdlCiAqCiAqIERlZmluaXRpb246ICUgb2YgSElWLWV4cG9zZWQgaW5mYW50cyB3aG8gcmVjZWl2ZSBhIHZpcm9sb2dpY2FsIHRlc3QgZm9yIEhJViB3aXRoaW4gdHdvIG1vbnRocyAoYW5kIDEyIG1vbnRocykgb2YgYmlydGgKICoKICogTnVtZXJhdG9yOiBOdW1iZXIgb2YgSElWLWV4cG9zZWQgaW5mYW50cyBib3JuIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZCB3aG8gcmVjZWl2ZWQgYSB2aXJvbG9naWNhbCBISVYgdGVzdCB3aXRoaW4gdHdvIG1vbnRocyAoYW5kIDEyIG1vbnRocykgb2YgYmlydGgKICogTnVtZXJhdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBpbmZhbnRzIHdobyBhcmUgYW4gIkhJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCIgd2l0aCAiSW5mYW50IGRhdGUgb2YgYmlydGgiIHdpdGhpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZCBBTkQgd2l0aCAiRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIiBMRVNTIFRIQU4gMiBtb250aHMgQUZURVIgIkluZmFudCBkYXRlIG9mIGJpcnRoIiBBTkQgIkhJViB0ZXN0IHR5cGUiPSdOdWNsZWljIGFjaWQgdGVzdCBmb3IgSElWJwogKiBOdW1lcmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERlbm9taW5hdG9yOiBFc3RpbWF0ZWQgbnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZC4gICB8ICB8IE5vdGU6IFRoZSBkZW5vbWluYXRvciBpcyBhIHByb3h5IG1lYXN1cmUgZm9yIHRoZSBudW1iZXIgb2YgaW5mYW50cyBib3JuIHRvIEhJVi1pbmZlY3RlZCB3b21lbi4KICogRGVub21pbmF0b3IgQ2FsY3VsYXRpb246ICpFc3RpbWF0ZWQgbnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSB3b21lbiB3aG8gZGVsaXZlcmVkIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBEZW5vbWluYXRvciBFeGNsdXNpb25zOiAKICoKICogRGlzYWdncmVnYXRpb25zOgogKiDigKLCoFRlc3QgcmVzdWx0IChISVYtcG9zaXRpdmUsIEhJVi1uZWdhdGl2ZSwgaW5kZXRlcm1pbmF0ZSwgb3RoZXIpIHRvIGVuYWJsZSBjYWxjdWxhdGlvbiBvZiB0aGUgcGVyY2VudGFnZSBwb3NpdGl2ZSBhbmQgdGhlIHBlcmNlbnRhZ2Ugd2l0aCBhbiBpbmRldGVybWluYXRlIHJlc3VsdCBhbW9uZyBISVYtZXhwb3NlZCBpbmZhbnRzIHJlY2VpdmluZyBhIHZpcm9sb2dpY2FsIHRlc3QgCiAqICDigKLCoEFnZSBvZiBpbmZhbnQgKDwyIG1vbnRocywgMi0xMiBtb250aHMpIHRvIGFsbG93IHRoZSBzZXBhcmF0ZSBjYWxjdWxhdGlvbiBvZiB0aGUgcHJvcG9ydGlvbiBvZiBleHBvc2VkIGluZmFudHMgcmVjZWl2aW5nIHZpcm9sb2dpY2FsIHRlc3Rpbmcgd2l0aGluIHR3byBtb250aHMgb2YgYmlydGggYW5kIHdpdGhpbiAxMiBtb250aHMgb2YgYmlydGggCiAqICDigKLCoENpdGllcyBhbmQgb3RoZXIgYWRtaW5pc3RyYXRpdmUgcmVnaW9ucyBvZiBlcGlkZW1pb2xvZ2ljIGltcG9ydGFuY2UKICoKICogRGlzYWdncmVnYXRpb24gRWxlbWVudHM6IEhJViB0ZXN0IGRhdGUgKGF0IDIgbW9udGhzLCBhdCAxMiBtb250aHMpIHwgQWdlIG9mIGluZmFudCAoPDIgbW9udGhzLCAyLTEyIG1vbnRocykKICoKICogTnVtZXJhdG9yIGFuZCBEZW5vbWluYXRvciBFbGVtZW50czoKICogRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIAogKiAgSElWIHRlc3QgdHlwZSAKICogIEhJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCAKICogIEluZmFudCBkYXRlIG9mIGJpcnRoCiAqCiAqIFJlZmVyZW5jZTogQ29uc29saWRhdGVkIGd1aWRlbGluZXMgb24gcGVyc29uLWNlbnRyZWQgSElWIHN0cmF0ZWdpYyBpbmZvcm1hdGlvbjogc3RyZW5ndGhlbmluZyByb3V0aW5lIGRhdGEgZm9yIGltcGFjdC4gR2VuZXZhOiBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uOyAyMDIyCiAqIAogKiBEYXRhIENvbmNlcHRzOgogKiBISVYuQi5ERTgxOiBISVYgdGVzdCB0eXBlIHwgVHlwZSBvZiBISVYgdGVzdAogKiBISVYuQi5ERTgyOiBSYXBpZCBkaWFnbm9zdGljIHRlc3QgZm9yIEhJViB8IEFudGlib2R5IHRlc3QgZm9yIEhJViBwZXJmb3JtZWQgd2l0aCBhIHJhcGlkIGRpYWdub3N0aWMKICogSElWLkIuREU4MzogRW56eW1lIGltbXVub2Fzc2F5IGZvciBISVYgfCBBbnRpYm9keSB0ZXN0IGZvciBISVYgcGVyZm9ybWVkIHdpdGggYW4gZW56eW1lIGltbXVub2Fzc2F5CiAqIEhJVi5CLkRFODQ6IE51Y2xlaWMgYWNpZCB0ZXN0IGZvciBISVYgfCBWaXJvbG9naWNhbCB0ZXN0LCB3aGljaCBpbmNsdWRlcyB0ZXN0aW5nIGZvciBlYXJseSBpbmZhbnQgZGlhZ25vc2lzCiAqIEhJVi5CLkRFODU6IER1YWwgSElWL3N5cGhpbGlzIHJhcGlkIGRpYWdub3N0aWMgdGVzdCB8IEFudGlib2R5IHRlc3QgZm9yIEhJViBhbmQgc3lwaGlsaXMgcGVyZm9ybWVkIHdpdGggYSByYXBpZCBkaWFnbm9zdGljCiAqIEhJVi5CLkRFODY6IEhJViBzZWxmLXRlc3QgfCBBbnRpYm9keSB0ZXN0IGZvciBISVYgcGVyZm9ybWVkIGJ5IHNlbGYtdGVzdGVyIHVzaW5nIGEgcmFwaWQgZGlhZ25vc3RpYwogKiBISVYuQi5ERTExMDogSElWIHRlc3QgZGF0ZSB8IERhdGUgb2YgdGhlIEhJViB0ZXN0CiAqIEhJVi5ELkRFMTk0OiBEYXRlIG9mIHZpcmFsIGxvYWQgc2FtcGxlIGNvbGxlY3Rpb24gfCBEYXRlIGFuZCB0aW1lIHdoZW4gdGhlIHNhbXBsZSB3YXMgY29sbGVjdGVkIHRvIHRlc3QgdGhlIGNsaWVudCdzIEhJViB2aXJhbCBsb2FkCiAqIEhJVi5FLkRFODc6IEluZmFudCBkYXRlIG9mIGJpcnRoIHwgVGhlIGluZmFudCdzIGRhdGUgb2YgYmlydGggKERPQikgaWYga25vd24KICogSElWLkUuREU5MDogQWdlIG9mIGluZmFudCB8IEluZmFudCBhZ2UgY2FsY3VsYXRlZCB1c2luZyBkYXRlIG9mIGJpcnRoCiAqIEhJVi5FLkRFMTEyOiBISVYtZXhwb3NlZCBpbmZhbnQgb3IgY2hpbGQgfCBXaGV0aGVyIHRoZSBpbmZhbnQgb3IgY2hpbGQgd2FzIGRldGVybWluZWQgdG8gaGF2ZSBoYWQgSElWIGV4cG9zdXJlCiAqIEhJVi5FLkRFMTY4OiBISVYgdGVzdCB0eXBlIHwgVHlwZSBvZiBISVYgdGVzdAogKiBISVYuRS5ERTE2OTogUmFwaWQgZGlhZ25vc3RpYyB0ZXN0IGZvciBISVYgfCBBbnRpYm9keSB0ZXN0IGZvciBISVYgcGVyZm9ybWVkIHdpdGggYSByYXBpZCBkaWFnbm9zdGljIChSRFQpCiAqIEhJVi5FLkRFMTcwOiBFbnp5bWUgaW1tdW5vYXNzYXkgZm9yIEhJViB8IEFudGlib2R5IHRlc3QgZm9yIEhJViBwZXJmb3JtZWQgd2l0aCBhbiBlbnp5bWUgaW1tdW5vYXNzYXkgKEVJQSkKICogSElWLkUuREUxNzE6IE51Y2xlaWMgYWNpZCB0ZXN0IGZvciBISVYgfCBWaXJvbG9naWNhbCB0ZXN0LCB3aGljaCBpbmNsdWRlcyB0ZXN0aW5nIGZvciBlYXJseSBpbmZhbnQgZGlhZ25vc2lzCiAqIEhJVi5FLkRFMTcyOiBEdWFsIEhJVi9zeXBoaWxpcyByYXBpZCBkaWFnbm9zdGljIHRlc3QgfCBBbnRpYm9keSB0ZXN0IGZvciBISVYgYW5kIHN5cGhpbGlzIHBlcmZvcm1lZCB3aXRoIGEgcmFwaWQgZGlhZ25vc3RpYwogKiBISVYuRS5ERTIyNDogSElWIHRlc3QgZGF0ZSB8IERhdGUgb2YgdGhlIEhJViB0ZXN0CiAqIEhJVi5HLkRFODogRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIHwgRGF0ZSBhbmQgdGltZSB3aGVuIHRoZSBzYW1wbGUgd2FzIGNvbGxlY3RlZCB0byB0ZXN0IHRoZSBjbGllbnQncyBISVYgdmlyYWwgbG9hZAogKiBISVYuU1JWLkRFMTogSElWIHRlc3QgZGF0ZSB8IERhdGUgb2YgdGhlIEhJViB0ZXN0CiAqIEhJVi5TUlYuREUxMjogRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIHwgRGF0ZSBhbmQgdGltZSB3aGVuIHRoZSBzYW1wbGUgd2FzIGNvbGxlY3RlZCB0byB0ZXN0IHRoZSBjbGllbnQncyBISVYgdmlyYWwgbG9hZAogKiBISVYuU1JWLkRFMjA6IEhJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCB8IFdoZXRoZXIgdGhlIGluZmFudCBvciBjaGlsZCB3YXMgZGV0ZXJtaW5lZCB0byBoYXZlIGhhZCBISVYgZXhwb3N1cmUKICoKICogQWRkaXRpb25hbCBDb250ZXh0CiAqIC0gd2hhdCBpdCBtZWFzdXJlczogVGhpcyBpbmRpY2F0b3IgbWVhc3VyZXMgZWFybHkgSElWIGRpYWdub3NpcyBpbiBpbmZhbnRzLgogKiAtIHJhdGlvbmFsZTog4oCiwqBIaWdoIGNvdmVyYWdlIG9mIGVhcmx5IHZpcm9sb2dpY2FsIHRlc3Rpbmcgb2YgaW5mYW50cyBoZWxwcyBpbml0aWF0ZSBBUlQgZWFybHkgaW4gY2hpbGRyZW4gd2l0aCBjb25maXJtZWQgSElWIGluZmVjdGlvbiBhbmQgc3VwcG9ydHMgY291bnNlbGxpbmcgb24gZWZmb3J0cyB0byBwcmV2ZW50IHNlcm9jb252ZXJzaW9uIG9mIHRob3NlIHdpdGggYSBuZWdhdGl2ZSBlYXJseSB0ZXN0IHJlc3VsdC4gfCDigKIgQ3VycmVudCBQTVRDVCBndWlkZWxpbmVzIHJlY29tbWVuZCB2aXJvbG9naWNhbCB0ZXN0aW5nIGZvciBISVYtZXhwb3NlZCBpbmZhbnRzIHdpdGhpbiB0d28gbW9udGhzIG9mIGJpcnRoLgogKiAtIG1ldGhvZDogRm9yIHRoZSBudW1lcmF0b3I6IFByb2dyYW1tZSByZWNvcmRzIChmb3IgZXhhbXBsZSwgUE1UQ1QgcmVnaXN0ZXJzLCBsYWJvcmF0b3J5IHJlY29yZHMpLiB8ICB8IEZvciB0aGUgZGVub21pbmF0b3I6IE1vZGVsbGluZy1iYXNlZCBlc3RpbWF0ZXMgKGZvciBleGFtcGxlLCBTcGVjdHJ1bSBBSU0pIHwgIHwgVGhlIHJlY29tbWVuZGVkIHJlcG9ydGluZyBwZXJpb2QgaXMgMTIgbW9udGhzLgogKiAKICogU3VnZ2VzdGVkIFNjb3JpbmcgTWV0aG9kOiBwcm9wb3J0aW9uIHwgaHR0cDovL2hsNy5vcmcvZmhpci91cy9jcWZtZWFzdXJlcy9TdHJ1Y3R1cmVEZWZpbml0aW9uL3Byb3BvcnRpb24tbWVhc3VyZS1jcWZtCiAqLwoKbGlicmFyeSBISVZJTkQzOExvZ2ljCgovLyBJbmNsdWRlZCBMaWJyYXJpZXMKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgSElWQ29tbW9uIHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0NvbQppbmNsdWRlIEhJVkVsZW1lbnRzIGNhbGxlZCBIRQppbmNsdWRlIEhJVkluZGljYXRvckVsZW1lbnRzIGNhbGxlZCBISUUKCi8vIEluZGljYXRvciBEZWZpbml0aW9uCnBhcmFtZXRlciAiTWVhc3VyZW1lbnQgUGVyaW9kIiBJbnRlcnZhbDxEYXRlPiBkZWZhdWx0IEludGVydmFsW0AyMDIzLTAxLTAxLCBAMjAyMy0wMS0zMF0KCmNvbnRleHQgUGF0aWVudAovKiBQb3B1bGF0aW9ucyAqLwoKLyoKICpJbml0aWFsIFBvcHVsYXRpb24KICovCgpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiI6CiAgdHJ1ZQoKLyoqCiAqIE51bWVyYXRvcgogKiAKICogRGVmaW5pdGlvbjogTnVtYmVyIG9mIEhJVi1leHBvc2VkIGluZmFudHMgYm9ybiBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2Qgd2hvIHJlY2VpdmVkIGEgdmlyb2xvZ2ljYWwgSElWIHRlc3Qgd2l0aGluIHR3byBtb250aHMgKGFuZCAxMiBtb250aHMpIG9mIGJpcnRoCiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBpbmZhbnRzIHdobyBhcmUgYW4gIkhJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCIgd2l0aCAiSW5mYW50IGRhdGUgb2YgYmlydGgiIHdpdGhpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZCBBTkQgd2l0aCAiRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIiBMRVNTIFRIQU4gMiBtb250aHMgQUZURVIgIkluZmFudCBkYXRlIG9mIGJpcnRoIiBBTkQgIkhJViB0ZXN0IHR5cGUiPSdOdWNsZWljIGFjaWQgdGVzdCBmb3IgSElWJwogKi8KCgpkZWZpbmUgIk51bWVyYXRvciI6CiAgZXhpc3RzKEhJRS4iSElWLWV4cG9zZWQgaW5mYW50IG9yIGNoaWxkIEUuREUxMTIiIE8KICB3aXRoIFtQYXRpZW50XSBQCiAgICAgIHN1Y2ggdGhhdCBPLnN1YmplY3QucmVmZXJlbmNlcyhQKSBhbmQgUC5iaXJ0aERhdGUgZHVyaW5nICJNZWFzdXJlbWVudCBQZXJpb2QiKQogICBhbmQgZXhpc3RzKAogICAgSEUuIk51Y2xlaWMgYWNpZCB0ZXN0IGZvciBISVYgQi5ERTg0IiBPIAogICAgd2l0aCBbUGF0aWVudF0gUHQKICAgIHN1Y2ggdGhhdCBPLnN1YmplY3QucmVmZXJlbmNlcyhQdCkgCiAgICBhbmQgbW9udGhzIGJldHdlZW4gc3RhcnQgb2YgTy5lZmZlY3RpdmUudG9JbnRlcnZhbCgpIGFuZCBGSElSSGVscGVycy5Ub0RhdGUoUHQuYmlydGhEYXRlKSA8IDIgbW9udGhzKQoKCi8qKgogKiBEZW5vbWluYXRvciAtIFRIaVMgU0hPVUxETidUIEJFIFBST1BPUlRJT04KICoKICogRGVmaW5pdGlvbjogRXN0aW1hdGVkIG51bWJlciBvZiBISVYtcG9zaXRpdmUgd29tZW4gd2hvIGRlbGl2ZXJlZCBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QuICAgfCAgfCBOb3RlOiBUaGUgZGVub21pbmF0b3IgaXMgYSBwcm94eSBtZWFzdXJlIGZvciB0aGUgbnVtYmVyIG9mIGluZmFudHMgYm9ybiB0byBISVYtaW5mZWN0ZWQgd29tZW4uCiAqIENhbGN1bGF0aW9uOiAqRXN0aW1hdGVkIG51bWJlciBvZiBISVYtcG9zaXRpdmUgd29tZW4gd2hvIGRlbGl2ZXJlZCBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QKICovCgpkZWZpbmUgIkRlbm9taW5hdG9yIjoKICB0cnVlCiAgICAKCi8qIGVuZCBQb3B1bGF0aW9ucyAqLwoKLyoKICogRGlzYWdncmVnYXRvcnMKICovCgpkZWZpbmUgIkFnZSBTdHJhdGlmaWVyIjoKCUhJRS4iQnkgQWdlIFN0cmF0aWZpZXIgNyIKCmRlZmluZSAiR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciI6CglISUUuIkJ5IEdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXIiCgpkZWZpbmUgIkVJRCB0ZXN0IG51bWJlciAxIHRlc3QgcmVzdWx0IjoKICBISUUuIkVJRCB0ZXN0IG51bWJlciAxIHRlc3QgcmVzdWx0IgoKZGVmaW5lICJTdHJhdGlmaWNhdGlvbiI6CiBISUUuIkJ5IEFnZSBTdHJhdGlmaWVyIDciCisgJzonICsgSElFLiJCeSBHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIgorIEhJRS4iRUlEIHRlc3QgbnVtYmVyIDEgdGVzdCByZXN1bHQiLmNvZGUg"/>
</content>
</Library>