WHO SMART Guidelines - HIV
0.3.0 - ci-build

WHO SMART Guidelines - HIV - Local Development build (v0.3.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

: HIV.IND.42 Logic - XML Representation

Draft as of 2024-08-21

Raw xml | Download



<Library xmlns="http://hl7.org/fhir">
  <id value="HIVIND42Logic"/>
  <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="generated"/>
    <div xmlns="http://www.w3.org/1999/xhtml"><p class="res-header-id"><b>Generated Narrative: Library HIVIND42Logic</b></p><a name="HIVIND42Logic"> </a><a name="hcHIVIND42Logic"> </a><a name="HIVIND42Logic-en-US"> </a><h2>Related Artifacts</h2><table class="grid"><tr><td>Depends On</td><td>Library HIC</td><td><code>http://smart.who.int/hiv/Library/HIVCommon|0.0.1</code></td></tr><tr><td>Depends On</td><td>Library WCom</td><td><a href="Library-WHOCommon.html">WHOCommon</a></td></tr></table><h2>Parameters</h2><table class="grid"><tr><td>Measurement Period</td><td>in</td><td>0</td><td>1</td><td>Period</td></tr><tr><td>Patient</td><td>out</td><td>0</td><td>1</td><td>Patient</td></tr><tr><td>Initial Population</td><td>out</td><td>0</td><td>1</td><td>boolean</td></tr><tr><td>Numerator</td><td>out</td><td>0</td><td>1</td><td>boolean</td></tr><tr><td>Denominator</td><td>out</td><td>0</td><td>1</td><td>boolean</td></tr></table><h2>Contents</h2><p><code>text/cql</code></p><pre><code class="language-sql">/**
 * Library: HIV.IND.42 Logic
 * Ref No: VER.6
 * Short Name: Final outcome of PMTCT
 *
 * Definition: % of HIV-exposed infants whose final HIV outcome status is known
 *
 * Numerator: HIV-exposed infants born within the past 12 months (or 24 months in breastfeeding settings) who have known final HIV outcome status
 * Numerator Calculation: COUNT of infants who are an &quot;HIV-exposed infant or child&quot; AND [(with an &quot;Infant date of birth&quot; in past 12 months) OR (with an &quot;Infant date of birth&quot; in past 24 months IF mothers are &quot;Breastfeeding&quot;)] AND &quot;Registered in birth cohort&quot;=True AND with a &quot;Final diagnosis of HIV-exposed infant&quot; of NOT NULL
 * Numerator Exclusions: 
 *
 * Denominator: a) Programme-based/service delivery denominator | Number of HIV-exposed infants who were born within the 12 months (or 24 months in breastfeeding settings) prior to the reporting period and registered in the birth cohort | For example, for the reporting period January to December 2021 the denominator would be the number of HIV-exposed infants born between January to December 2020 in non-breast feeding settings and January to December 2019 in breastfeeding settings. |  | b) Population-based denominator | Estimated number of HIV-positive women who delivered within the past 12 months | (or 24 months in breastfeeding settings)
 * Denominator Calculation: COUNT of infants who are an &quot;HIV-exposed infant or child&quot; AND [(with an &quot;Infant date of birth&quot; within past 12 months) OR (with an &quot;Infant date of birth&quot; within past 24 months IF mothers are &quot;Breastfeeding&quot;)] AND &quot;Registered in birth cohort&quot;=True
 * Denominator Exclusions: 
 *
 * Disaggregations:
 * • Outcome status (HIV-positive, HIV-negative, no longer breastfeeding) 
 *  • Cities and other administrative regions of epidemiologic importance
 *
 * Disaggregation Elements: Infant HIV status
 *
 * Numerator and Denominator Elements:
 * Breastfeeding 
 *  Final diagnosis of HIV-exposed infant 
 *  HIV-exposed infant or child 
 *  Infant date of birth 
 *  Registered in birth cohort
 *
 * Reference: Consolidated guidelines on person-centred HIV strategic information: strengthening routine data for impact. Geneva: World Health Organization; 2022
 * 
 * Data Concepts:
 * HIV.B.DE32: Breastfeeding | Infant is being breastfed by mother
 * HIV.D.DE32: Breastfeeding | Client is giving infant breast milk
 * HIV.E.DE87: Infant date of birth | The infant's date of birth (DOB) if known
 * HIV.E.DE112: HIV-exposed infant or child | Whether the infant or child was determined to have had HIV exposure
 * HIV.E.DE179: Registered in birth cohort | Whether the infant has been registered in a birth cohort
 * HIV.E.DE225: Infant HIV status | HIV status reported after applying the HIV testing algorithm. No single HIV test can provide an HIV-positive diagnosis.
 * HIV.E.DE226: HIV-positive | Infant is HIV-positive
 * HIV.E.DE227: HIV-negative | Infant is HIV-negative
 * HIV.E.DE228: Unknown | Infant has unknown HIV status
 * HIV.E.DE230: Final diagnosis of HIV-exposed infant | HIV-exposed infant final status at 18 months or 3 months after cessation of breastfeeding (whichever is later).
 * HIV.E.DE231: HIV-positive | The infant is HIV-positive
 * HIV.E.DE232: HIV-negative and no longer breastfeeding | The infant is HIV-negative and the mother has quit breastfeeding
 * HIV.E.DE233: HIV status unknown | The final HIV status of the child is unknown because the infant died, was lost to follow-up or transferred out without ever having an HIV-positive diagnosis or is active in care but was not tested at 18 months
 * HIV.SRV.DE20: HIV-exposed infant or child | Whether the infant or child was determined to have had HIV exposure
 * HIV.SRV.DE22: Final diagnosis of HIV-exposed infant | HIV-exposed infant final status at 18 months or 3 months after cessation of breastfeeding (whichever is later).
 *
 * Additional Context
 * - what it measures: This indicator measures quality of programme follow-up to track exposed infants and ascertain final HIV status.
 * - rationale: • Effective PMTCT programmes must follow HIV-exposed infants until the end of the breastfeeding period to ensure that the full cascade of services and support is provided to HIV-positive mothers and their infants. | • The ability to ascertain final outcome status through routine programme data across multiple points of care is a key challenge.
 * - method: This indicator measures quality of programme follow-up to track exposed infants and ascertain final HIV status.
 * 
 * Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm
 */

library HIVIND42Logic

// 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

// 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: HIV-exposed infants born within the past 12 months (or 24 months in breastfeeding settings) who have known final HIV outcome status
 * Calculation: COUNT of infants who are an &quot;HIV-exposed infant or child&quot; AND [(with an &quot;Infant date of birth&quot; in past 12 months) OR (with an &quot;Infant date of birth&quot; in past 24 months IF mothers are &quot;Breastfeeding&quot;)] AND &quot;Registered in birth cohort&quot;=True AND with a &quot;Final diagnosis of HIV-exposed infant&quot; of NOT NULL
 */

define &quot;Numerator&quot;:
  true


/**
 * Denominator
 *
 * Definition: a) Programme-based/service delivery denominator | Number of HIV-exposed infants who were born within the 12 months (or 24 months in breastfeeding settings) prior to the reporting period and registered in the birth cohort | For example, for the reporting period January to December 2021 the denominator would be the number of HIV-exposed infants born between January to December 2020 in non-breast feeding settings and January to December 2019 in breastfeeding settings. |  | b) Population-based denominator | Estimated number of HIV-positive women who delivered within the past 12 months | (or 24 months in breastfeeding settings)
 * Calculation: COUNT of infants who are an &quot;HIV-exposed infant or child&quot; AND [(with an &quot;Infant date of birth&quot; within past 12 months) OR (with an &quot;Infant date of birth&quot; within past 24 months IF mothers are &quot;Breastfeeding&quot;)] AND &quot;Registered in birth cohort&quot;=True
 */

define &quot;Denominator&quot;:
  true
    

/* end Populations */

</code></pre><p><code>Content not shown - (</code><code>application/elm+xml</code>, size = 12Kb )</p></div>
  </text>
  <extension
             url="http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability">
    <valueCode value="computable"/>
  </extension>
  <url value="http://smart.who.int/hiv/Library/HIVIND42Logic"/>
  <version value="0.3.0"/>
  <name value="HIVIND42Logic"/>
  <title value="HIV.IND.42 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="2024-08-21T16:05:17+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 whose final HIV outcome status is known"/>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library HIC"/>
    <resource value="http://smart.who.int/hiv/Library/HIVCommon|0.0.1"/>
  </relatedArtifact>
  <relatedArtifact>
    <type value="depends-on"/>
    <display value="Library WCom"/>
    <resource value="http://smart.who.int/hiv/Library/WHOCommon"/>
  </relatedArtifact>
  <parameter>
    <name value="Measurement Period"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Period"/>
  </parameter>
  <parameter>
    <name value="Patient"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="Patient"/>
  </parameter>
  <parameter>
    <name value="Initial Population"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Numerator"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="Denominator"/>
    <use value="out"/>
    <min value="0"/>
    <max value="1"/>
    <type value="boolean"/>
  </parameter>
  <content>
    <contentType value="text/cql"/>
    <data
          value="LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuNDIgTG9naWMKICogUmVmIE5vOiBWRVIuNgogKiBTaG9ydCBOYW1lOiBGaW5hbCBvdXRjb21lIG9mIFBNVENUCiAqCiAqIERlZmluaXRpb246ICUgb2YgSElWLWV4cG9zZWQgaW5mYW50cyB3aG9zZSBmaW5hbCBISVYgb3V0Y29tZSBzdGF0dXMgaXMga25vd24KICoKICogTnVtZXJhdG9yOiBISVYtZXhwb3NlZCBpbmZhbnRzIGJvcm4gd2l0aGluIHRoZSBwYXN0IDEyIG1vbnRocyAob3IgMjQgbW9udGhzIGluIGJyZWFzdGZlZWRpbmcgc2V0dGluZ3MpIHdobyBoYXZlIGtub3duIGZpbmFsIEhJViBvdXRjb21lIHN0YXR1cwogKiBOdW1lcmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mIGluZmFudHMgd2hvIGFyZSBhbiAiSElWLWV4cG9zZWQgaW5mYW50IG9yIGNoaWxkIiBBTkQgWyh3aXRoIGFuICJJbmZhbnQgZGF0ZSBvZiBiaXJ0aCIgaW4gcGFzdCAxMiBtb250aHMpIE9SICh3aXRoIGFuICJJbmZhbnQgZGF0ZSBvZiBiaXJ0aCIgaW4gcGFzdCAyNCBtb250aHMgSUYgbW90aGVycyBhcmUgIkJyZWFzdGZlZWRpbmciKV0gQU5EICJSZWdpc3RlcmVkIGluIGJpcnRoIGNvaG9ydCI9VHJ1ZSBBTkQgd2l0aCBhICJGaW5hbCBkaWFnbm9zaXMgb2YgSElWLWV4cG9zZWQgaW5mYW50IiBvZiBOT1QgTlVMTAogKiBOdW1lcmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERlbm9taW5hdG9yOiBhKSBQcm9ncmFtbWUtYmFzZWQvc2VydmljZSBkZWxpdmVyeSBkZW5vbWluYXRvciB8IE51bWJlciBvZiBISVYtZXhwb3NlZCBpbmZhbnRzIHdobyB3ZXJlIGJvcm4gd2l0aGluIHRoZSAxMiBtb250aHMgKG9yIDI0IG1vbnRocyBpbiBicmVhc3RmZWVkaW5nIHNldHRpbmdzKSBwcmlvciB0byB0aGUgcmVwb3J0aW5nIHBlcmlvZCBhbmQgcmVnaXN0ZXJlZCBpbiB0aGUgYmlydGggY29ob3J0IHwgRm9yIGV4YW1wbGUsIGZvciB0aGUgcmVwb3J0aW5nIHBlcmlvZCBKYW51YXJ5IHRvIERlY2VtYmVyIDIwMjEgdGhlIGRlbm9taW5hdG9yIHdvdWxkIGJlIHRoZSBudW1iZXIgb2YgSElWLWV4cG9zZWQgaW5mYW50cyBib3JuIGJldHdlZW4gSmFudWFyeSB0byBEZWNlbWJlciAyMDIwIGluIG5vbi1icmVhc3QgZmVlZGluZyBzZXR0aW5ncyBhbmQgSmFudWFyeSB0byBEZWNlbWJlciAyMDE5IGluIGJyZWFzdGZlZWRpbmcgc2V0dGluZ3MuIHwgIHwgYikgUG9wdWxhdGlvbi1iYXNlZCBkZW5vbWluYXRvciB8IEVzdGltYXRlZCBudW1iZXIgb2YgSElWLXBvc2l0aXZlIHdvbWVuIHdobyBkZWxpdmVyZWQgd2l0aGluIHRoZSBwYXN0IDEyIG1vbnRocyB8IChvciAyNCBtb250aHMgaW4gYnJlYXN0ZmVlZGluZyBzZXR0aW5ncykKICogRGVub21pbmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mIGluZmFudHMgd2hvIGFyZSBhbiAiSElWLWV4cG9zZWQgaW5mYW50IG9yIGNoaWxkIiBBTkQgWyh3aXRoIGFuICJJbmZhbnQgZGF0ZSBvZiBiaXJ0aCIgd2l0aGluIHBhc3QgMTIgbW9udGhzKSBPUiAod2l0aCBhbiAiSW5mYW50IGRhdGUgb2YgYmlydGgiIHdpdGhpbiBwYXN0IDI0IG1vbnRocyBJRiBtb3RoZXJzIGFyZSAiQnJlYXN0ZmVlZGluZyIpXSBBTkQgIlJlZ2lzdGVyZWQgaW4gYmlydGggY29ob3J0Ij1UcnVlCiAqIERlbm9taW5hdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEaXNhZ2dyZWdhdGlvbnM6CiAqIOKAosKgT3V0Y29tZSBzdGF0dXMgKEhJVi1wb3NpdGl2ZSwgSElWLW5lZ2F0aXZlLCBubyBsb25nZXIgYnJlYXN0ZmVlZGluZykgCiAqICDigKLCoENpdGllcyBhbmQgb3RoZXIgYWRtaW5pc3RyYXRpdmUgcmVnaW9ucyBvZiBlcGlkZW1pb2xvZ2ljIGltcG9ydGFuY2UKICoKICogRGlzYWdncmVnYXRpb24gRWxlbWVudHM6IEluZmFudCBISVYgc3RhdHVzCiAqCiAqIE51bWVyYXRvciBhbmQgRGVub21pbmF0b3IgRWxlbWVudHM6CiAqIEJyZWFzdGZlZWRpbmcgCiAqICBGaW5hbCBkaWFnbm9zaXMgb2YgSElWLWV4cG9zZWQgaW5mYW50IAogKiAgSElWLWV4cG9zZWQgaW5mYW50IG9yIGNoaWxkIAogKiAgSW5mYW50IGRhdGUgb2YgYmlydGggCiAqICBSZWdpc3RlcmVkIGluIGJpcnRoIGNvaG9ydAogKgogKiBSZWZlcmVuY2U6IENvbnNvbGlkYXRlZCBndWlkZWxpbmVzIG9uIHBlcnNvbi1jZW50cmVkIEhJViBzdHJhdGVnaWMgaW5mb3JtYXRpb246IHN0cmVuZ3RoZW5pbmcgcm91dGluZSBkYXRhIGZvciBpbXBhY3QuIEdlbmV2YTogV29ybGQgSGVhbHRoIE9yZ2FuaXphdGlvbjsgMjAyMgogKiAKICogRGF0YSBDb25jZXB0czoKICogSElWLkIuREUzMjogQnJlYXN0ZmVlZGluZyB8IEluZmFudCBpcyBiZWluZyBicmVhc3RmZWQgYnkgbW90aGVyCiAqIEhJVi5ELkRFMzI6IEJyZWFzdGZlZWRpbmcgfCBDbGllbnQgaXMgZ2l2aW5nIGluZmFudCBicmVhc3QgbWlsawogKiBISVYuRS5ERTg3OiBJbmZhbnQgZGF0ZSBvZiBiaXJ0aCB8IFRoZSBpbmZhbnQncyBkYXRlIG9mIGJpcnRoIChET0IpIGlmIGtub3duCiAqIEhJVi5FLkRFMTEyOiBISVYtZXhwb3NlZCBpbmZhbnQgb3IgY2hpbGQgfCBXaGV0aGVyIHRoZSBpbmZhbnQgb3IgY2hpbGQgd2FzIGRldGVybWluZWQgdG8gaGF2ZSBoYWQgSElWIGV4cG9zdXJlCiAqIEhJVi5FLkRFMTc5OiBSZWdpc3RlcmVkIGluIGJpcnRoIGNvaG9ydCB8IFdoZXRoZXIgdGhlIGluZmFudCBoYXMgYmVlbiByZWdpc3RlcmVkIGluIGEgYmlydGggY29ob3J0CiAqIEhJVi5FLkRFMjI1OiBJbmZhbnQgSElWIHN0YXR1cyB8IEhJViBzdGF0dXMgcmVwb3J0ZWQgYWZ0ZXIgYXBwbHlpbmcgdGhlIEhJViB0ZXN0aW5nIGFsZ29yaXRobS4gTm8gc2luZ2xlIEhJViB0ZXN0IGNhbiBwcm92aWRlIGFuIEhJVi1wb3NpdGl2ZSBkaWFnbm9zaXMuCiAqIEhJVi5FLkRFMjI2OiBISVYtcG9zaXRpdmUgfCBJbmZhbnQgaXMgSElWLXBvc2l0aXZlCiAqIEhJVi5FLkRFMjI3OiBISVYtbmVnYXRpdmUgfCBJbmZhbnQgaXMgSElWLW5lZ2F0aXZlCiAqIEhJVi5FLkRFMjI4OiBVbmtub3duIHwgSW5mYW50IGhhcyB1bmtub3duIEhJViBzdGF0dXMKICogSElWLkUuREUyMzA6IEZpbmFsIGRpYWdub3NpcyBvZiBISVYtZXhwb3NlZCBpbmZhbnQgfCBISVYtZXhwb3NlZCBpbmZhbnQgZmluYWwgc3RhdHVzIGF0IDE4IG1vbnRocyBvciAzIG1vbnRocyBhZnRlciBjZXNzYXRpb24gb2YgYnJlYXN0ZmVlZGluZyAod2hpY2hldmVyIGlzIGxhdGVyKS4KICogSElWLkUuREUyMzE6IEhJVi1wb3NpdGl2ZSB8IFRoZSBpbmZhbnQgaXMgSElWLXBvc2l0aXZlCiAqIEhJVi5FLkRFMjMyOiBISVYtbmVnYXRpdmUgYW5kIG5vIGxvbmdlciBicmVhc3RmZWVkaW5nIHwgVGhlIGluZmFudCBpcyBISVYtbmVnYXRpdmUgYW5kIHRoZSBtb3RoZXIgaGFzIHF1aXQgYnJlYXN0ZmVlZGluZwogKiBISVYuRS5ERTIzMzogSElWIHN0YXR1cyB1bmtub3duIHwgVGhlIGZpbmFsIEhJViBzdGF0dXMgb2YgdGhlIGNoaWxkIGlzIHVua25vd24gYmVjYXVzZSB0aGUgaW5mYW50IGRpZWQsIHdhcyBsb3N0IHRvIGZvbGxvdy11cCBvciB0cmFuc2ZlcnJlZCBvdXQgd2l0aG91dCBldmVyIGhhdmluZyBhbiBISVYtcG9zaXRpdmUgZGlhZ25vc2lzIG9yIGlzIGFjdGl2ZSBpbiBjYXJlIGJ1dCB3YXMgbm90IHRlc3RlZCBhdCAxOCBtb250aHMKICogSElWLlNSVi5ERTIwOiBISVYtZXhwb3NlZCBpbmZhbnQgb3IgY2hpbGQgfCBXaGV0aGVyIHRoZSBpbmZhbnQgb3IgY2hpbGQgd2FzIGRldGVybWluZWQgdG8gaGF2ZSBoYWQgSElWIGV4cG9zdXJlCiAqIEhJVi5TUlYuREUyMjogRmluYWwgZGlhZ25vc2lzIG9mIEhJVi1leHBvc2VkIGluZmFudCB8IEhJVi1leHBvc2VkIGluZmFudCBmaW5hbCBzdGF0dXMgYXQgMTggbW9udGhzIG9yIDMgbW9udGhzIGFmdGVyIGNlc3NhdGlvbiBvZiBicmVhc3RmZWVkaW5nICh3aGljaGV2ZXIgaXMgbGF0ZXIpLgogKgogKiBBZGRpdGlvbmFsIENvbnRleHQKICogLSB3aGF0IGl0IG1lYXN1cmVzOiBUaGlzIGluZGljYXRvciBtZWFzdXJlcyBxdWFsaXR5IG9mIHByb2dyYW1tZSBmb2xsb3ctdXAgdG8gdHJhY2sgZXhwb3NlZCBpbmZhbnRzIGFuZCBhc2NlcnRhaW4gZmluYWwgSElWIHN0YXR1cy4KICogLSByYXRpb25hbGU6IOKAosKgRWZmZWN0aXZlIFBNVENUIHByb2dyYW1tZXMgbXVzdCBmb2xsb3cgSElWLWV4cG9zZWQgaW5mYW50cyB1bnRpbCB0aGUgZW5kIG9mIHRoZSBicmVhc3RmZWVkaW5nIHBlcmlvZCB0byBlbnN1cmUgdGhhdCB0aGUgZnVsbCBjYXNjYWRlIG9mIHNlcnZpY2VzIGFuZCBzdXBwb3J0IGlzIHByb3ZpZGVkIHRvIEhJVi1wb3NpdGl2ZSBtb3RoZXJzIGFuZCB0aGVpciBpbmZhbnRzLiB8IOKAosKgVGhlIGFiaWxpdHkgdG8gYXNjZXJ0YWluIGZpbmFsIG91dGNvbWUgc3RhdHVzIHRocm91Z2ggcm91dGluZSBwcm9ncmFtbWUgZGF0YSBhY3Jvc3MgbXVsdGlwbGUgcG9pbnRzIG9mIGNhcmUgaXMgYSBrZXkgY2hhbGxlbmdlLgogKiAtIG1ldGhvZDogVGhpcyBpbmRpY2F0b3IgbWVhc3VyZXMgcXVhbGl0eSBvZiBwcm9ncmFtbWUgZm9sbG93LXVwIHRvIHRyYWNrIGV4cG9zZWQgaW5mYW50cyBhbmQgYXNjZXJ0YWluIGZpbmFsIEhJViBzdGF0dXMuCiAqIAogKiBTdWdnZXN0ZWQgU2NvcmluZyBNZXRob2Q6IHByb3BvcnRpb24gfCBodHRwOi8vaGw3Lm9yZy9maGlyL3VzL2NxZm1lYXN1cmVzL1N0cnVjdHVyZURlZmluaXRpb24vcHJvcG9ydGlvbi1tZWFzdXJlLWNxZm0KICovCgpsaWJyYXJ5IEhJVklORDQyTG9naWMKCi8vIEluY2x1ZGVkIExpYnJhcmllcwp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBISVZDb21tb24gdmVyc2lvbiAnMC4wLjEnIGNhbGxlZCBISUMKaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgV0hPQ29tbW9uIGNhbGxlZCBXQ29tCgovLyBJbmRpY2F0b3IgRGVmaW5pdGlvbgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZT4gZGVmYXVsdCBJbnRlcnZhbFtAMjAyMy0wMS0wMSwgQDIwMjMtMDEtMzBdCgpjb250ZXh0IFBhdGllbnQKLyogUG9wdWxhdGlvbnMgKi8KCi8qCiAqSW5pdGlhbCBQb3B1bGF0aW9uCiAqLwoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogIHRydWUKCi8qKgogKiBOdW1lcmF0b3IKICogCiAqIERlZmluaXRpb246IEhJVi1leHBvc2VkIGluZmFudHMgYm9ybiB3aXRoaW4gdGhlIHBhc3QgMTIgbW9udGhzIChvciAyNCBtb250aHMgaW4gYnJlYXN0ZmVlZGluZyBzZXR0aW5ncykgd2hvIGhhdmUga25vd24gZmluYWwgSElWIG91dGNvbWUgc3RhdHVzCiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBpbmZhbnRzIHdobyBhcmUgYW4gIkhJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCIgQU5EIFsod2l0aCBhbiAiSW5mYW50IGRhdGUgb2YgYmlydGgiIGluIHBhc3QgMTIgbW9udGhzKSBPUiAod2l0aCBhbiAiSW5mYW50IGRhdGUgb2YgYmlydGgiIGluIHBhc3QgMjQgbW9udGhzIElGIG1vdGhlcnMgYXJlICJCcmVhc3RmZWVkaW5nIildIEFORCAiUmVnaXN0ZXJlZCBpbiBiaXJ0aCBjb2hvcnQiPVRydWUgQU5EIHdpdGggYSAiRmluYWwgZGlhZ25vc2lzIG9mIEhJVi1leHBvc2VkIGluZmFudCIgb2YgTk9UIE5VTEwKICovCgpkZWZpbmUgIk51bWVyYXRvciI6CiAgdHJ1ZQoKCi8qKgogKiBEZW5vbWluYXRvcgogKgogKiBEZWZpbml0aW9uOiBhKSBQcm9ncmFtbWUtYmFzZWQvc2VydmljZSBkZWxpdmVyeSBkZW5vbWluYXRvciB8IE51bWJlciBvZiBISVYtZXhwb3NlZCBpbmZhbnRzIHdobyB3ZXJlIGJvcm4gd2l0aGluIHRoZSAxMiBtb250aHMgKG9yIDI0IG1vbnRocyBpbiBicmVhc3RmZWVkaW5nIHNldHRpbmdzKSBwcmlvciB0byB0aGUgcmVwb3J0aW5nIHBlcmlvZCBhbmQgcmVnaXN0ZXJlZCBpbiB0aGUgYmlydGggY29ob3J0IHwgRm9yIGV4YW1wbGUsIGZvciB0aGUgcmVwb3J0aW5nIHBlcmlvZCBKYW51YXJ5IHRvIERlY2VtYmVyIDIwMjEgdGhlIGRlbm9taW5hdG9yIHdvdWxkIGJlIHRoZSBudW1iZXIgb2YgSElWLWV4cG9zZWQgaW5mYW50cyBib3JuIGJldHdlZW4gSmFudWFyeSB0byBEZWNlbWJlciAyMDIwIGluIG5vbi1icmVhc3QgZmVlZGluZyBzZXR0aW5ncyBhbmQgSmFudWFyeSB0byBEZWNlbWJlciAyMDE5IGluIGJyZWFzdGZlZWRpbmcgc2V0dGluZ3MuIHwgIHwgYikgUG9wdWxhdGlvbi1iYXNlZCBkZW5vbWluYXRvciB8IEVzdGltYXRlZCBudW1iZXIgb2YgSElWLXBvc2l0aXZlIHdvbWVuIHdobyBkZWxpdmVyZWQgd2l0aGluIHRoZSBwYXN0IDEyIG1vbnRocyB8IChvciAyNCBtb250aHMgaW4gYnJlYXN0ZmVlZGluZyBzZXR0aW5ncykKICogQ2FsY3VsYXRpb246IENPVU5UIG9mIGluZmFudHMgd2hvIGFyZSBhbiAiSElWLWV4cG9zZWQgaW5mYW50IG9yIGNoaWxkIiBBTkQgWyh3aXRoIGFuICJJbmZhbnQgZGF0ZSBvZiBiaXJ0aCIgd2l0aGluIHBhc3QgMTIgbW9udGhzKSBPUiAod2l0aCBhbiAiSW5mYW50IGRhdGUgb2YgYmlydGgiIHdpdGhpbiBwYXN0IDI0IG1vbnRocyBJRiBtb3RoZXJzIGFyZSAiQnJlYXN0ZmVlZGluZyIpXSBBTkQgIlJlZ2lzdGVyZWQgaW4gYmlydGggY29ob3J0Ij1UcnVlCiAqLwoKZGVmaW5lICJEZW5vbWluYXRvciI6CiAgdHJ1ZQogICAgCgovKiBlbmQgUG9wdWxhdGlvbnMgKi8KCg=="/>
  </content>
  <content>
    <contentType value="application/elm+xml"/>
    <data
          value="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGxpYnJhcnkgeG1sbnM9InVybjpobDctb3JnOmVsbTpyMSIgeG1sbnM6dD0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczpmaGlyPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB4bWxuczpxZG00Mz0idXJuOmhlYWx0aGl0LWdvdjpxZG06djRfMyIgeG1sbnM6cWRtNTM9InVybjpoZWFsdGhpdC1nb3Y6cWRtOnY1XzMiIHhtbG5zOmE9InVybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMSI+CiAgIDxhbm5vdGF0aW9uIHRyYW5zbGF0b3JPcHRpb25zPSJFbmFibGVBbm5vdGF0aW9ucyxFbmFibGVMb2NhdG9ycyxEaXNhYmxlTGlzdERlbW90aW9uLERpc2FibGVMaXN0UHJvbW90aW9uIiBzaWduYXR1cmVMZXZlbD0iTm9uZSIgeHNpOnR5cGU9ImE6Q3FsVG9FbG1JbmZvIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBGSElSSGVscGVycy5Ub0ludGVydmFsIGhhcyBtdWx0aXBsZSBvdmVybG9hZHMgYW5kIGR1ZSB0byB0aGUgU2lnbmF0dXJlTGV2ZWwgc2V0dGluZyAoTm9uZSksIHRoZSBvdmVybG9hZCBzaWduYXR1cmUgaXMgbm90IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbWJpZ3VvdXMgZnVuY3Rpb24gcmVzb2x1dGlvbiBhdCBydW50aW1lLCBjb25zaWRlciBzZXR0aW5nIHRoZSBTaWduYXR1cmVMZXZlbCB0byBPdmVybG9hZHMgb3IgQWxsIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRwdXQgaW5jbHVkZXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBzdXBwb3J0IGNvcnJlY3Qgb3ZlcmxvYWQgc2VsZWN0aW9uIGF0IHJ1bnRpbWUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBGSElSSGVscGVycy5Ub0ludGVydmFsIGhhcyBtdWx0aXBsZSBvdmVybG9hZHMgYW5kIGR1ZSB0byB0aGUgU2lnbmF0dXJlTGV2ZWwgc2V0dGluZyAoTm9uZSksIHRoZSBvdmVybG9hZCBzaWduYXR1cmUgaXMgbm90IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbWJpZ3VvdXMgZnVuY3Rpb24gcmVzb2x1dGlvbiBhdCBydW50aW1lLCBjb25zaWRlciBzZXR0aW5nIHRoZSBTaWduYXR1cmVMZXZlbCB0byBPdmVybG9hZHMgb3IgQWxsIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRwdXQgaW5jbHVkZXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBzdXBwb3J0IGNvcnJlY3Qgb3ZlcmxvYWQgc2VsZWN0aW9uIGF0IHJ1bnRpbWUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICA8YTpzIHI9IjE2Ij4KICAgICAgICAgPGE6cz4vKioKICogTGlicmFyeTogSElWLklORC40MiBMb2dpYwogKiBSZWYgTm86IFZFUi42CiAqIFNob3J0IE5hbWU6IEZpbmFsIG91dGNvbWUgb2YgUE1UQ1QKICoKICogRGVmaW5pdGlvbjogJSBvZiBISVYtZXhwb3NlZCBpbmZhbnRzIHdob3NlIGZpbmFsIEhJViBvdXRjb21lIHN0YXR1cyBpcyBrbm93bgogKgogKiBOdW1lcmF0b3I6IEhJVi1leHBvc2VkIGluZmFudHMgYm9ybiB3aXRoaW4gdGhlIHBhc3QgMTIgbW9udGhzIChvciAyNCBtb250aHMgaW4gYnJlYXN0ZmVlZGluZyBzZXR0aW5ncykgd2hvIGhhdmUga25vd24gZmluYWwgSElWIG91dGNvbWUgc3RhdHVzCiAqIE51bWVyYXRvciBDYWxjdWxhdGlvbjogQ09VTlQgb2YgaW5mYW50cyB3aG8gYXJlIGFuICZxdW90O0hJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCZxdW90OyBBTkQgWyh3aXRoIGFuICZxdW90O0luZmFudCBkYXRlIG9mIGJpcnRoJnF1b3Q7IGluIHBhc3QgMTIgbW9udGhzKSBPUiAod2l0aCBhbiAmcXVvdDtJbmZhbnQgZGF0ZSBvZiBiaXJ0aCZxdW90OyBpbiBwYXN0IDI0IG1vbnRocyBJRiBtb3RoZXJzIGFyZSAmcXVvdDtCcmVhc3RmZWVkaW5nJnF1b3Q7KV0gQU5EICZxdW90O1JlZ2lzdGVyZWQgaW4gYmlydGggY29ob3J0JnF1b3Q7PVRydWUgQU5EIHdpdGggYSAmcXVvdDtGaW5hbCBkaWFnbm9zaXMgb2YgSElWLWV4cG9zZWQgaW5mYW50JnF1b3Q7IG9mIE5PVCBOVUxMCiAqIE51bWVyYXRvciBFeGNsdXNpb25zOiAKICoKICogRGVub21pbmF0b3I6IGEpIFByb2dyYW1tZS1iYXNlZC9zZXJ2aWNlIGRlbGl2ZXJ5IGRlbm9taW5hdG9yIHwgTnVtYmVyIG9mIEhJVi1leHBvc2VkIGluZmFudHMgd2hvIHdlcmUgYm9ybiB3aXRoaW4gdGhlIDEyIG1vbnRocyAob3IgMjQgbW9udGhzIGluIGJyZWFzdGZlZWRpbmcgc2V0dGluZ3MpIHByaW9yIHRvIHRoZSByZXBvcnRpbmcgcGVyaW9kIGFuZCByZWdpc3RlcmVkIGluIHRoZSBiaXJ0aCBjb2hvcnQgfCBGb3IgZXhhbXBsZSwgZm9yIHRoZSByZXBvcnRpbmcgcGVyaW9kIEphbnVhcnkgdG8gRGVjZW1iZXIgMjAyMSB0aGUgZGVub21pbmF0b3Igd291bGQgYmUgdGhlIG51bWJlciBvZiBISVYtZXhwb3NlZCBpbmZhbnRzIGJvcm4gYmV0d2VlbiBKYW51YXJ5IHRvIERlY2VtYmVyIDIwMjAgaW4gbm9uLWJyZWFzdCBmZWVkaW5nIHNldHRpbmdzIGFuZCBKYW51YXJ5IHRvIERlY2VtYmVyIDIwMTkgaW4gYnJlYXN0ZmVlZGluZyBzZXR0aW5ncy4gfCAgfCBiKSBQb3B1bGF0aW9uLWJhc2VkIGRlbm9taW5hdG9yIHwgRXN0aW1hdGVkIG51bWJlciBvZiBISVYtcG9zaXRpdmUgd29tZW4gd2hvIGRlbGl2ZXJlZCB3aXRoaW4gdGhlIHBhc3QgMTIgbW9udGhzIHwgKG9yIDI0IG1vbnRocyBpbiBicmVhc3RmZWVkaW5nIHNldHRpbmdzKQogKiBEZW5vbWluYXRvciBDYWxjdWxhdGlvbjogQ09VTlQgb2YgaW5mYW50cyB3aG8gYXJlIGFuICZxdW90O0hJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCZxdW90OyBBTkQgWyh3aXRoIGFuICZxdW90O0luZmFudCBkYXRlIG9mIGJpcnRoJnF1b3Q7IHdpdGhpbiBwYXN0IDEyIG1vbnRocykgT1IgKHdpdGggYW4gJnF1b3Q7SW5mYW50IGRhdGUgb2YgYmlydGgmcXVvdDsgd2l0aGluIHBhc3QgMjQgbW9udGhzIElGIG1vdGhlcnMgYXJlICZxdW90O0JyZWFzdGZlZWRpbmcmcXVvdDspXSBBTkQgJnF1b3Q7UmVnaXN0ZXJlZCBpbiBiaXJ0aCBjb2hvcnQmcXVvdDs9VHJ1ZQogKiBEZW5vbWluYXRvciBFeGNsdXNpb25zOiAKICoKICogRGlzYWdncmVnYXRpb25zOgogKiDigKLCoE91dGNvbWUgc3RhdHVzIChISVYtcG9zaXRpdmUsIEhJVi1uZWdhdGl2ZSwgbm8gbG9uZ2VyIGJyZWFzdGZlZWRpbmcpIAogKiAg4oCiwqBDaXRpZXMgYW5kIG90aGVyIGFkbWluaXN0cmF0aXZlIHJlZ2lvbnMgb2YgZXBpZGVtaW9sb2dpYyBpbXBvcnRhbmNlCiAqCiAqIERpc2FnZ3JlZ2F0aW9uIEVsZW1lbnRzOiBJbmZhbnQgSElWIHN0YXR1cwogKgogKiBOdW1lcmF0b3IgYW5kIERlbm9taW5hdG9yIEVsZW1lbnRzOgogKiBCcmVhc3RmZWVkaW5nIAogKiAgRmluYWwgZGlhZ25vc2lzIG9mIEhJVi1leHBvc2VkIGluZmFudCAKICogIEhJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCAKICogIEluZmFudCBkYXRlIG9mIGJpcnRoIAogKiAgUmVnaXN0ZXJlZCBpbiBiaXJ0aCBjb2hvcnQKICoKICogUmVmZXJlbmNlOiBDb25zb2xpZGF0ZWQgZ3VpZGVsaW5lcyBvbiBwZXJzb24tY2VudHJlZCBISVYgc3RyYXRlZ2ljIGluZm9ybWF0aW9uOiBzdHJlbmd0aGVuaW5nIHJvdXRpbmUgZGF0YSBmb3IgaW1wYWN0LiBHZW5ldmE6IFdvcmxkIEhlYWx0aCBPcmdhbml6YXRpb247IDIwMjIKICogCiAqIERhdGEgQ29uY2VwdHM6CiAqIEhJVi5CLkRFMzI6IEJyZWFzdGZlZWRpbmcgfCBJbmZhbnQgaXMgYmVpbmcgYnJlYXN0ZmVkIGJ5IG1vdGhlcgogKiBISVYuRC5ERTMyOiBCcmVhc3RmZWVkaW5nIHwgQ2xpZW50IGlzIGdpdmluZyBpbmZhbnQgYnJlYXN0IG1pbGsKICogSElWLkUuREU4NzogSW5mYW50IGRhdGUgb2YgYmlydGggfCBUaGUgaW5mYW50J3MgZGF0ZSBvZiBiaXJ0aCAoRE9CKSBpZiBrbm93bgogKiBISVYuRS5ERTExMjogSElWLWV4cG9zZWQgaW5mYW50IG9yIGNoaWxkIHwgV2hldGhlciB0aGUgaW5mYW50IG9yIGNoaWxkIHdhcyBkZXRlcm1pbmVkIHRvIGhhdmUgaGFkIEhJViBleHBvc3VyZQogKiBISVYuRS5ERTE3OTogUmVnaXN0ZXJlZCBpbiBiaXJ0aCBjb2hvcnQgfCBXaGV0aGVyIHRoZSBpbmZhbnQgaGFzIGJlZW4gcmVnaXN0ZXJlZCBpbiBhIGJpcnRoIGNvaG9ydAogKiBISVYuRS5ERTIyNTogSW5mYW50IEhJViBzdGF0dXMgfCBISVYgc3RhdHVzIHJlcG9ydGVkIGFmdGVyIGFwcGx5aW5nIHRoZSBISVYgdGVzdGluZyBhbGdvcml0aG0uIE5vIHNpbmdsZSBISVYgdGVzdCBjYW4gcHJvdmlkZSBhbiBISVYtcG9zaXRpdmUgZGlhZ25vc2lzLgogKiBISVYuRS5ERTIyNjogSElWLXBvc2l0aXZlIHwgSW5mYW50IGlzIEhJVi1wb3NpdGl2ZQogKiBISVYuRS5ERTIyNzogSElWLW5lZ2F0aXZlIHwgSW5mYW50IGlzIEhJVi1uZWdhdGl2ZQogKiBISVYuRS5ERTIyODogVW5rbm93biB8IEluZmFudCBoYXMgdW5rbm93biBISVYgc3RhdHVzCiAqIEhJVi5FLkRFMjMwOiBGaW5hbCBkaWFnbm9zaXMgb2YgSElWLWV4cG9zZWQgaW5mYW50IHwgSElWLWV4cG9zZWQgaW5mYW50IGZpbmFsIHN0YXR1cyBhdCAxOCBtb250aHMgb3IgMyBtb250aHMgYWZ0ZXIgY2Vzc2F0aW9uIG9mIGJyZWFzdGZlZWRpbmcgKHdoaWNoZXZlciBpcyBsYXRlcikuCiAqIEhJVi5FLkRFMjMxOiBISVYtcG9zaXRpdmUgfCBUaGUgaW5mYW50IGlzIEhJVi1wb3NpdGl2ZQogKiBISVYuRS5ERTIzMjogSElWLW5lZ2F0aXZlIGFuZCBubyBsb25nZXIgYnJlYXN0ZmVlZGluZyB8IFRoZSBpbmZhbnQgaXMgSElWLW5lZ2F0aXZlIGFuZCB0aGUgbW90aGVyIGhhcyBxdWl0IGJyZWFzdGZlZWRpbmcKICogSElWLkUuREUyMzM6IEhJViBzdGF0dXMgdW5rbm93biB8IFRoZSBmaW5hbCBISVYgc3RhdHVzIG9mIHRoZSBjaGlsZCBpcyB1bmtub3duIGJlY2F1c2UgdGhlIGluZmFudCBkaWVkLCB3YXMgbG9zdCB0byBmb2xsb3ctdXAgb3IgdHJhbnNmZXJyZWQgb3V0IHdpdGhvdXQgZXZlciBoYXZpbmcgYW4gSElWLXBvc2l0aXZlIGRpYWdub3NpcyBvciBpcyBhY3RpdmUgaW4gY2FyZSBidXQgd2FzIG5vdCB0ZXN0ZWQgYXQgMTggbW9udGhzCiAqIEhJVi5TUlYuREUyMDogSElWLWV4cG9zZWQgaW5mYW50IG9yIGNoaWxkIHwgV2hldGhlciB0aGUgaW5mYW50IG9yIGNoaWxkIHdhcyBkZXRlcm1pbmVkIHRvIGhhdmUgaGFkIEhJViBleHBvc3VyZQogKiBISVYuU1JWLkRFMjI6IEZpbmFsIGRpYWdub3NpcyBvZiBISVYtZXhwb3NlZCBpbmZhbnQgfCBISVYtZXhwb3NlZCBpbmZhbnQgZmluYWwgc3RhdHVzIGF0IDE4IG1vbnRocyBvciAzIG1vbnRocyBhZnRlciBjZXNzYXRpb24gb2YgYnJlYXN0ZmVlZGluZyAod2hpY2hldmVyIGlzIGxhdGVyKS4KICoKICogQWRkaXRpb25hbCBDb250ZXh0CiAqIC0gd2hhdCBpdCBtZWFzdXJlczogVGhpcyBpbmRpY2F0b3IgbWVhc3VyZXMgcXVhbGl0eSBvZiBwcm9ncmFtbWUgZm9sbG93LXVwIHRvIHRyYWNrIGV4cG9zZWQgaW5mYW50cyBhbmQgYXNjZXJ0YWluIGZpbmFsIEhJViBzdGF0dXMuCiAqIC0gcmF0aW9uYWxlOiDigKLCoEVmZmVjdGl2ZSBQTVRDVCBwcm9ncmFtbWVzIG11c3QgZm9sbG93IEhJVi1leHBvc2VkIGluZmFudHMgdW50aWwgdGhlIGVuZCBvZiB0aGUgYnJlYXN0ZmVlZGluZyBwZXJpb2QgdG8gZW5zdXJlIHRoYXQgdGhlIGZ1bGwgY2FzY2FkZSBvZiBzZXJ2aWNlcyBhbmQgc3VwcG9ydCBpcyBwcm92aWRlZCB0byBISVYtcG9zaXRpdmUgbW90aGVycyBhbmQgdGhlaXIgaW5mYW50cy4gfCDigKLCoFRoZSBhYmlsaXR5IHRvIGFzY2VydGFpbiBmaW5hbCBvdXRjb21lIHN0YXR1cyB0aHJvdWdoIHJvdXRpbmUgcHJvZ3JhbW1lIGRhdGEgYWNyb3NzIG11bHRpcGxlIHBvaW50cyBvZiBjYXJlIGlzIGEga2V5IGNoYWxsZW5nZS4KICogLSBtZXRob2Q6IFRoaXMgaW5kaWNhdG9yIG1lYXN1cmVzIHF1YWxpdHkgb2YgcHJvZ3JhbW1lIGZvbGxvdy11cCB0byB0cmFjayBleHBvc2VkIGluZmFudHMgYW5kIGFzY2VydGFpbiBmaW5hbCBISVYgc3RhdHVzLgogKiAKICogU3VnZ2VzdGVkIFNjb3JpbmcgTWV0aG9kOiBwcm9wb3J0aW9uIHwgaHR0cDovL2hsNy5vcmcvZmhpci91cy9jcWZtZWFzdXJlcy9TdHJ1Y3R1cmVEZWZpbml0aW9uL3Byb3BvcnRpb24tbWVhc3VyZS1jcWZtCiAqLwoKbGlicmFyeSBISVZJTkQ0MkxvZ2ljPC9hOnM+CiAgICAgIDwvYTpzPgogICA8L2Fubm90YXRpb24+CiAgIDxpZGVudGlmaWVyIGlkPSJISVZJTkQ0MkxvZ2ljIiBzeXN0ZW09Imh0dHA6Ly9zbWFydC53aG8uaW50L2hpdiIvPgogICA8c2NoZW1hSWRlbnRpZmllciBpZD0idXJuOmhsNy1vcmc6ZWxtIiB2ZXJzaW9uPSJyMSIvPgogICA8dXNpbmdzPgogICAgICA8ZGVmIGxvY2FsSWRlbnRpZmllcj0iU3lzdGVtIiB1cmk9InVybjpobDctb3JnOmVsbS10eXBlczpyMSIvPgogICAgICA8ZGVmIGxvY2FsSWQ9IjEiIGxvY2F0b3I9IjU5OjEtNTk6MjYiIGxvY2FsSWRlbnRpZmllcj0iRkhJUiIgdXJpPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB2ZXJzaW9uPSI0LjAuMSI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjEiPgogICAgICAgICAgICAgICA8YTpzPi8vIEluY2x1ZGVkIExpYnJhcmllcwp1c2luZyA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiB2ZXJzaW9uICc0LjAuMSc8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgIDwvdXNpbmdzPgogICA8aW5jbHVkZXM+CiAgICAgIDxkZWYgbG9jYWxJZD0iMiIgbG9jYXRvcj0iNjE6MS02MTo0NCIgbG9jYWxJZGVudGlmaWVyPSJISUMiIHBhdGg9Imh0dHA6Ly9zbWFydC53aG8uaW50L2hpdi9ISVZDb21tb24iIHZlcnNpb249IjAuMC4xIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMiI+CiAgICAgICAgICAgICAgIDxhOnM+aW5jbHVkZSA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5ISVZDb21tb248L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjMiIGxvY2F0b3I9IjYyOjEtNjI6MzUiIGxvY2FsSWRlbnRpZmllcj0iRkhJUkhlbHBlcnMiIHBhdGg9Imh0dHA6Ly9obDcub3JnL2ZoaXIvRkhJUkhlbHBlcnMiIHZlcnNpb249IjQuMC4xIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMyI+CiAgICAgICAgICAgICAgIDxhOnM+aW5jbHVkZSA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSSGVscGVyczwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4gdmVyc2lvbiAnNC4wLjEnPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjQiIGxvY2F0b3I9IjY0OjEtNjQ6MjkiIGxvY2FsSWRlbnRpZmllcj0iV0NvbSIgcGF0aD0iaHR0cDovL3NtYXJ0Lndoby5pbnQvaGl2L1dIT0NvbW1vbiI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjQiPgogICAgICAgICAgICAgICA8YTpzPmluY2x1ZGUgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+V0hPQ29tbW9uPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiBjYWxsZWQgV0NvbTwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgPC9pbmNsdWRlcz4KICAgPHBhcmFtZXRlcnM+CiAgICAgIDxkZWYgbG9jYWxJZD0iMTAiIGxvY2F0b3I9IjY3OjEtNjc6ODgiIG5hbWU9Ik1lYXN1cmVtZW50IFBlcmlvZCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjEwIj4KICAgICAgICAgICAgICAgPGE6cz4vLyBJbmRpY2F0b3IgRGVmaW5pdGlvbgpwYXJhbWV0ZXIgJnF1b3Q7TWVhc3VyZW1lbnQgUGVyaW9kJnF1b3Q7IDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjkiPgogICAgICAgICAgICAgICAgICA8YTpzPkludGVydmFsJmx0OzwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjgiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPkRhdGU8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+PjwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4gZGVmYXVsdCA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSI3Ij4KICAgICAgICAgICAgICAgICAgPGE6cyByPSI1Ij5JbnRlcnZhbFtAMjAyMy0wMS0wMSwgQDIwMjMtMDEtMzBdPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZGVmYXVsdCBsb2NhbElkPSI3IiBsb2NhdG9yPSI2Nzo1NS02Nzo4OCIgbG93Q2xvc2VkPSJ0cnVlIiBoaWdoQ2xvc2VkPSJ0cnVlIiB4c2k6dHlwZT0iSW50ZXJ2YWwiPgogICAgICAgICAgICA8bG93IGxvY2FsSWQ9IjUiIGxvY2F0b3I9IjY3OjY0LTY3Ojc0IiB4c2k6dHlwZT0iRGF0ZSI+CiAgICAgICAgICAgICAgIDx5ZWFyIHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iMjAyMyIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPG1vbnRoIHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iMSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPGRheSB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjEiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgIDwvbG93PgogICAgICAgICAgICA8aGlnaCBsb2NhbElkPSI2IiBsb2NhdG9yPSI2Nzo3Ny02Nzo4NyIgeHNpOnR5cGU9IkRhdGUiPgogICAgICAgICAgICAgICA8eWVhciB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjIwMjMiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDxtb250aCB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjEiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDxkYXkgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIzMCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgPC9oaWdoPgogICAgICAgICA8L2RlZmF1bHQ+CiAgICAgICAgIDxwYXJhbWV0ZXJUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjkiIGxvY2F0b3I9IjY3OjMyLTY3OjQ1IiB4c2k6dHlwZT0iSW50ZXJ2YWxUeXBlU3BlY2lmaWVyIj4KICAgICAgICAgICAgPHBvaW50VHlwZSBsb2NhbElkPSI4IiBsb2NhdG9yPSI2Nzo0MS02Nzo0NCIgbmFtZT0idDpEYXRlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgIDwvcGFyYW1ldGVyVHlwZVNwZWNpZmllcj4KICAgICAgPC9kZWY+CiAgIDwvcGFyYW1ldGVycz4KICAgPGNvbnRleHRzPgogICAgICA8ZGVmIGxvY2F0b3I9IjY5OjEtNjk6MTUiIG5hbWU9IlBhdGllbnQiLz4KICAgPC9jb250ZXh0cz4KICAgPHN0YXRlbWVudHM+CiAgICAgIDxkZWYgbG9jYXRvcj0iNjk6MS02OToxNSIgbmFtZT0iUGF0aWVudCIgY29udGV4dD0iUGF0aWVudCI+CiAgICAgICAgIDxleHByZXNzaW9uIHhzaTp0eXBlPSJTaW5nbGV0b25Gcm9tIj4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYXRvcj0iNjk6MS02OToxNSIgZGF0YVR5cGU9ImZoaXI6UGF0aWVudCIgdGVtcGxhdGVJZD0iaHR0cDovL2hsNy5vcmcvZmhpci9TdHJ1Y3R1cmVEZWZpbml0aW9uL1BhdGllbnQiIHhzaTp0eXBlPSJSZXRyaWV2ZSIvPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjEyIiBsb2NhdG9yPSI3NjoxLTc3OjYiIG5hbWU9IkluaXRpYWwgUG9wdWxhdGlvbiIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjEyIj4KICAgICAgICAgICAgICAgPGE6cyByPSIxMSI+LyogUG9wdWxhdGlvbnMgKi8KCi8qCiAqSW5pdGlhbCBQb3B1bGF0aW9uCiAqLwoKZGVmaW5lICZxdW90O0luaXRpYWwgUG9wdWxhdGlvbiZxdW90OzoKICB0cnVlPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjExIiBsb2NhdG9yPSI3NzozLTc3OjYiIHZhbHVlVHlwZT0idDpCb29sZWFuIiB2YWx1ZT0idHJ1ZSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMTQiIGxvY2F0b3I9Ijg2OjEtODc6NiIgbmFtZT0iTnVtZXJhdG9yIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMTQiPgogICAgICAgICAgICAgICA8YTpzIHI9IjEzIj4vKioKICogTnVtZXJhdG9yCiAqIAogKiBEZWZpbml0aW9uOiBISVYtZXhwb3NlZCBpbmZhbnRzIGJvcm4gd2l0aGluIHRoZSBwYXN0IDEyIG1vbnRocyAob3IgMjQgbW9udGhzIGluIGJyZWFzdGZlZWRpbmcgc2V0dGluZ3MpIHdobyBoYXZlIGtub3duIGZpbmFsIEhJViBvdXRjb21lIHN0YXR1cwogKiBDYWxjdWxhdGlvbjogQ09VTlQgb2YgaW5mYW50cyB3aG8gYXJlIGFuICZxdW90O0hJVi1leHBvc2VkIGluZmFudCBvciBjaGlsZCZxdW90OyBBTkQgWyh3aXRoIGFuICZxdW90O0luZmFudCBkYXRlIG9mIGJpcnRoJnF1b3Q7IGluIHBhc3QgMTIgbW9udGhzKSBPUiAod2l0aCBhbiAmcXVvdDtJbmZhbnQgZGF0ZSBvZiBiaXJ0aCZxdW90OyBpbiBwYXN0IDI0IG1vbnRocyBJRiBtb3RoZXJzIGFyZSAmcXVvdDtCcmVhc3RmZWVkaW5nJnF1b3Q7KV0gQU5EICZxdW90O1JlZ2lzdGVyZWQgaW4gYmlydGggY29ob3J0JnF1b3Q7PVRydWUgQU5EIHdpdGggYSAmcXVvdDtGaW5hbCBkaWFnbm9zaXMgb2YgSElWLWV4cG9zZWQgaW5mYW50JnF1b3Q7IG9mIE5PVCBOVUxMCiAqLwoKZGVmaW5lICZxdW90O051bWVyYXRvciZxdW90OzoKICB0cnVlPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjEzIiBsb2NhdG9yPSI4NzozLTg3OjYiIHZhbHVlVHlwZT0idDpCb29sZWFuIiB2YWx1ZT0idHJ1ZSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMTYiIGxvY2F0b3I9Ijk3OjEtOTg6NiIgbmFtZT0iRGVub21pbmF0b3IiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIxNiI+CiAgICAgICAgICAgICAgIDxhOnMgcj0iMTUiPi8qKgogKiBEZW5vbWluYXRvcgogKgogKiBEZWZpbml0aW9uOiBhKSBQcm9ncmFtbWUtYmFzZWQvc2VydmljZSBkZWxpdmVyeSBkZW5vbWluYXRvciB8IE51bWJlciBvZiBISVYtZXhwb3NlZCBpbmZhbnRzIHdobyB3ZXJlIGJvcm4gd2l0aGluIHRoZSAxMiBtb250aHMgKG9yIDI0IG1vbnRocyBpbiBicmVhc3RmZWVkaW5nIHNldHRpbmdzKSBwcmlvciB0byB0aGUgcmVwb3J0aW5nIHBlcmlvZCBhbmQgcmVnaXN0ZXJlZCBpbiB0aGUgYmlydGggY29ob3J0IHwgRm9yIGV4YW1wbGUsIGZvciB0aGUgcmVwb3J0aW5nIHBlcmlvZCBKYW51YXJ5IHRvIERlY2VtYmVyIDIwMjEgdGhlIGRlbm9taW5hdG9yIHdvdWxkIGJlIHRoZSBudW1iZXIgb2YgSElWLWV4cG9zZWQgaW5mYW50cyBib3JuIGJldHdlZW4gSmFudWFyeSB0byBEZWNlbWJlciAyMDIwIGluIG5vbi1icmVhc3QgZmVlZGluZyBzZXR0aW5ncyBhbmQgSmFudWFyeSB0byBEZWNlbWJlciAyMDE5IGluIGJyZWFzdGZlZWRpbmcgc2V0dGluZ3MuIHwgIHwgYikgUG9wdWxhdGlvbi1iYXNlZCBkZW5vbWluYXRvciB8IEVzdGltYXRlZCBudW1iZXIgb2YgSElWLXBvc2l0aXZlIHdvbWVuIHdobyBkZWxpdmVyZWQgd2l0aGluIHRoZSBwYXN0IDEyIG1vbnRocyB8IChvciAyNCBtb250aHMgaW4gYnJlYXN0ZmVlZGluZyBzZXR0aW5ncykKICogQ2FsY3VsYXRpb246IENPVU5UIG9mIGluZmFudHMgd2hvIGFyZSBhbiAmcXVvdDtISVYtZXhwb3NlZCBpbmZhbnQgb3IgY2hpbGQmcXVvdDsgQU5EIFsod2l0aCBhbiAmcXVvdDtJbmZhbnQgZGF0ZSBvZiBiaXJ0aCZxdW90OyB3aXRoaW4gcGFzdCAxMiBtb250aHMpIE9SICh3aXRoIGFuICZxdW90O0luZmFudCBkYXRlIG9mIGJpcnRoJnF1b3Q7IHdpdGhpbiBwYXN0IDI0IG1vbnRocyBJRiBtb3RoZXJzIGFyZSAmcXVvdDtCcmVhc3RmZWVkaW5nJnF1b3Q7KV0gQU5EICZxdW90O1JlZ2lzdGVyZWQgaW4gYmlydGggY29ob3J0JnF1b3Q7PVRydWUKICovCgpkZWZpbmUgJnF1b3Q7RGVub21pbmF0b3ImcXVvdDs6CiAgdHJ1ZTwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIxNSIgbG9jYXRvcj0iOTg6My05ODo2IiB2YWx1ZVR5cGU9InQ6Qm9vbGVhbiIgdmFsdWU9InRydWUiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgIDwvZGVmPgogICA8L3N0YXRlbWVudHM+CjwvbGlicmFyeT4K"/>
  </content>
</Library>