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

: HIV.IND.38 Logic - XML Representation

Draft as of 2025-02-07

Raw xml | Download


<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 &quot;HIV-exposed infant or child&quot; with &quot;Infant date of birth&quot; within the reporting period AND with &quot;Date of viral load sample collection&quot; LESS THAN 2 months AFTER &quot;Infant date of birth&quot; AND &quot;HIV test type&quot;='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 (&lt;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 (&lt;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 &quot;Measurement Period&quot; Interval&lt;Date&gt; default Interval[@2023-01-01, @2023-01-30]

context Patient
/* Populations */

/*
 *Initial Population
 */

define &quot;Initial Population&quot;:
  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 &quot;HIV-exposed infant or child&quot; with &quot;Infant date of birth&quot; within the reporting period AND with &quot;Date of viral load sample collection&quot; LESS THAN 2 months AFTER &quot;Infant date of birth&quot; AND &quot;HIV test type&quot;='Nucleic acid test for HIV'
 */


define &quot;Numerator&quot;:
  exists(HIE.&quot;HIV-exposed infant or child E.DE112&quot; O
  with [Patient] P
      such that O.subject.references(P) and P.birthDate during &quot;Measurement Period&quot;)
   and exists(
    HE.&quot;Nucleic acid test for HIV B.DE84&quot; O 
    with [Patient] Pt
    such that O.subject.references(Pt) 
    and months between start of O.effective.toInterval() and FHIRHelpers.ToDate(Pt.birthDate) &lt; 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 &quot;Denominator&quot;:
  true
    

/* end Populations */

/*
 * Disaggregators
 */

define &quot;Age Stratifier&quot;:
	HIE.&quot;By Age Stratifier 7&quot;

define &quot;Geographic Region Stratifier&quot;:
	HIE.&quot;By Geographic Region Stratifier&quot;

define &quot;EID test number 1 test result&quot;:
  HIE.&quot;EID test number 1 test result&quot;

define &quot;Stratification&quot;:
 HIE.&quot;By Age Stratifier 7&quot;
+ ':' + HIE.&quot;By Geographic Region Stratifier&quot;
+ HIE.&quot;EID test number 1 test result&quot;.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>