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
Draft as of 2024-11-07 |
<Library xmlns="http://hl7.org/fhir">
<id value="HIVIND43Logic"/>
<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 HIVIND43Logic</b></p><a name="HIVIND43Logic"> </a><a name="hcHIVIND43Logic"> </a><a name="HIVIND43Logic-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.43 Logic
* Ref No: VER.7
* Short Name: HIV prevalence among women attending ANC
*
* Definition: % of pregnant women who are HIV-positive at the time of their first test during the current pregnancy
*
* Numerator: Number of ANC attendees who tested HIV-positive at their first test during the current pregnancy plus number of ANC attendees known to be HIV-positive before their first ANC visit
* Numerator Calculation: COUNT of "Currently pregnant" clients with "HIV test result"='HIV-positive' AND "HIV test date" on "ANC contact date" is EARLIEST within current pregnancy | PLUS | COUNT of clients with "HIV status"='HIV-positive' on first "ANC contact date"
* Numerator Exclusions:
*
* Denominator: Number of ANC attendees receiving their first HIV test during pregnancy plus number of ANC attendees known to be HIV-positive before first ANC visit
* Denominator Calculation: COUNT of "Currently pregnant" clients with "HIV test date" on a "ANC contact date" during current pregnancy | PLUS | COUNT of clients with "HIV status"='HIV-positive' on first "ANC contact date"
* Denominator Exclusions:
*
* Disaggregations:
* • Age (<15, 15–19, 20–24, 25–29, 30–34, 35–39, 40–49, 50+ years)
* • HIV status at first test during current pregnancy (known positive, tested HIV-negative, tested HIV-positive, not tested)
* • Cities and other administrative regions of epidemiologic importance
*
* Disaggregation Elements: Age | HIV status at first HIV test during current pregnancy
*
* Numerator and Denominator Elements:
* ANC contact date
* Currently pregnant
* HIV status
* HIV test date
* HIV test result
*
* Reference: Consolidated guidelines on person-centred HIV strategic information: strengthening routine data for impact. Geneva: World Health Organization; 2022
*
* Data Concepts:
* HIV.A.DE17: Age | Calculated age (number of years) of the client based on date of birth
* HIV.B.DE29: Currently pregnant | Client is currently pregnant
* HIV.B.DE110: HIV test date | Date of the HIV test
* HIV.B.DE111: HIV test result | The result from HIV testing after applying the testing algorithm
* HIV.B.DE112: HIV-positive | Test result is HIV-positive
* HIV.B.DE113: HIV-negative | Test result is HIV-negative
* HIV.B.DE114: HIV-inconclusive | Test result is HIV-inconclusive
* HIV.B.DE115: HIV status | HIV status reported after applying the national HIV testing algorithm. No single HIV test can provide an HIV-positive diagnosis.
* HIV.B.DE116: HIV-positive | Client is HIV-positive
* HIV.B.DE117: HIV-negative | Client is HIV-negative
* HIV.B.DE118: Unknown | Client has unknown HIV status
* HIV.D.DE31: Currently pregnant | Client is currently pregnant
* HIV.E.DE85: ANC contact date | The date and time of the client's ANC contact (in the ANC DAK this is called 'Contact date')
* HIV.E.DE224: HIV test date | Date of the HIV test
* HIV.SRV.DE1: HIV test date | Date of the HIV test
* HIV.SRV.DE2: HIV test result | The result from HIV testing after applying the testing algorithm
* HIV.SRV.DE7: Currently pregnant | Client is currently pregnant
* HIV.SRV.DE18: ANC contact date | The date and time of the client's ANC contact (in the ANC DAK this is called 'Contact date')
*
* Additional Context
* - what it measures: HIV prevalence among pregnant women attending ANC, including those who were diagnosed with HIV before their first ANC visit and those testing positive during their current pregnancy.
* - rationale: HIV prevalence among ANC attendees is used for surveillance to measure HIV prevalence and incidence and to monitor trends in HIV infection when the following conditions are met to ensure that HIV prevalence among ANC clients is consistently representative of HIV prevalence among all pregnant women: | • ANC attendance is high and all women are recorded (for example, not missing large private-sector ANC services). | • HIV testing is offered to all pregnant women and not restricted to only higher-risk women or interrupted due to stock-outs of test kits. | • Only the first HIV test result is used to calculate HIV prevalence during a single pregnancy. | • Women who are already known to be HIV-positive and/or are already on ART prior to their first ANC visit during a pregnancy and, therefore, are not tested for HIV, are recorded | and included in routine reporting. All HIV-positive women must be included in both the numerator and denominator when calculating HIV prevalence among pregnant women. | | See section 5.2 4 on WHO's 2022 HIV SI Guidelines on routine antenatal HIV testing for more detail. | This indicator is also useful for estimating the number of women in need of PMTCT services for programme planning purposes.
* - method: ANC registers, patient monitoring tools, EMRs (for example, patient records). | | The recommended reporting period is 12 months.
*
* Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm
*/
library HIVIND43Logic
// 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 "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 ANC attendees who tested HIV-positive at their first test during the current pregnancy plus number of ANC attendees known to be HIV-positive before their first ANC visit
* Calculation: COUNT of "Currently pregnant" clients with "HIV test result"='HIV-positive' AND "HIV test date" on "ANC contact date" is EARLIEST within current pregnancy | PLUS | COUNT of clients with "HIV status"='HIV-positive' on first "ANC contact date"
*/
define "Numerator":
true
/**
* Denominator
*
* Definition: Number of ANC attendees receiving their first HIV test during pregnancy plus number of ANC attendees known to be HIV-positive before first ANC visit
* Calculation: COUNT of "Currently pregnant" clients with "HIV test date" on a "ANC contact date" during current pregnancy | PLUS | COUNT of clients with "HIV status"='HIV-positive' on first "ANC contact date"
*/
define "Denominator":
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/HIVIND43Logic"/>
<version value="0.3.0"/>
<name value="HIVIND43Logic"/>
<title value="HIV.IND.43 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-11-07T21:07:17+00:00"/>
<publisher value="WHO"/>
<contact>
<name value="WHO"/>
<telecom>
<system value="url"/>
<value value="http://who.int"/>
</telecom>
</contact>
<description
value="% of pregnant women who are HIV-positive at the time of their first test during the current pregnancy"/>
<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="LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuNDMgTG9naWMKICogUmVmIE5vOiBWRVIuNwogKiBTaG9ydCBOYW1lOiBISVYgcHJldmFsZW5jZSBhbW9uZyB3b21lbiBhdHRlbmRpbmcgQU5DCiAqCiAqIERlZmluaXRpb246ICUgb2YgcHJlZ25hbnQgd29tZW4gd2hvIGFyZSBISVYtcG9zaXRpdmUgYXQgdGhlIHRpbWUgb2YgdGhlaXIgZmlyc3QgdGVzdCBkdXJpbmcgdGhlIGN1cnJlbnQgcHJlZ25hbmN5CiAqCiAqIE51bWVyYXRvcjogTnVtYmVyIG9mIEFOQyBhdHRlbmRlZXMgd2hvIHRlc3RlZCBISVYtcG9zaXRpdmUgYXQgdGhlaXIgZmlyc3QgdGVzdCBkdXJpbmcgdGhlIGN1cnJlbnQgcHJlZ25hbmN5IHBsdXMgbnVtYmVyIG9mIEFOQyBhdHRlbmRlZXMga25vd24gdG8gYmUgSElWLXBvc2l0aXZlIGJlZm9yZSB0aGVpciBmaXJzdCBBTkMgdmlzaXQKICogTnVtZXJhdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiAiQ3VycmVudGx5IHByZWduYW50IiBjbGllbnRzIHdpdGggIkhJViB0ZXN0IHJlc3VsdCI9J0hJVi1wb3NpdGl2ZScgQU5EICJISVYgdGVzdCBkYXRlIiBvbiAiQU5DIGNvbnRhY3QgZGF0ZSIgaXMgRUFSTElFU1Qgd2l0aGluIGN1cnJlbnQgcHJlZ25hbmN5IHwgUExVUyB8IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgb24gZmlyc3QgIkFOQyBjb250YWN0IGRhdGUiCiAqIE51bWVyYXRvciBFeGNsdXNpb25zOiAKICoKICogRGVub21pbmF0b3I6IE51bWJlciBvZiBBTkMgYXR0ZW5kZWVzIHJlY2VpdmluZyB0aGVpciBmaXJzdCBISVYgdGVzdCBkdXJpbmcgcHJlZ25hbmN5IHBsdXMgbnVtYmVyIG9mIEFOQyBhdHRlbmRlZXMga25vd24gdG8gYmUgSElWLXBvc2l0aXZlIGJlZm9yZSBmaXJzdCBBTkMgdmlzaXQKICogRGVub21pbmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mICJDdXJyZW50bHkgcHJlZ25hbnQiIGNsaWVudHMgd2l0aCAiSElWIHRlc3QgZGF0ZSIgb24gYSAiQU5DIGNvbnRhY3QgZGF0ZSIgZHVyaW5nIGN1cnJlbnQgcHJlZ25hbmN5IHwgUExVUyB8IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgb24gZmlyc3QgIkFOQyBjb250YWN0IGRhdGUiCiAqIERlbm9taW5hdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEaXNhZ2dyZWdhdGlvbnM6CiAqIOKAoiBBZ2UgKDwxNSwgMTXigJMxOSwgMjDigJMyNCwgMjXigJMyOSwgMzDigJMzNCwgMzXigJMzOSwgNDDigJM0OSwgNTArIHllYXJzKSAKICogIOKAosKgSElWIHN0YXR1cyBhdCBmaXJzdCB0ZXN0IGR1cmluZyBjdXJyZW50IHByZWduYW5jeSAoa25vd24gcG9zaXRpdmUsIHRlc3RlZCBISVYtbmVnYXRpdmUsIHRlc3RlZCBISVYtcG9zaXRpdmUsIG5vdCB0ZXN0ZWQpIAogKiAg4oCiwqBDaXRpZXMgYW5kIG90aGVyIGFkbWluaXN0cmF0aXZlIHJlZ2lvbnMgb2YgZXBpZGVtaW9sb2dpYyBpbXBvcnRhbmNlCiAqCiAqIERpc2FnZ3JlZ2F0aW9uIEVsZW1lbnRzOiBBZ2UgfCBISVYgc3RhdHVzIGF0IGZpcnN0IEhJViB0ZXN0IGR1cmluZyBjdXJyZW50IHByZWduYW5jeQogKgogKiBOdW1lcmF0b3IgYW5kIERlbm9taW5hdG9yIEVsZW1lbnRzOgogKiBBTkMgY29udGFjdCBkYXRlIAogKiAgQ3VycmVudGx5IHByZWduYW50IAogKiAgSElWIHN0YXR1cyAKICogIEhJViB0ZXN0IGRhdGUgCiAqICBISVYgdGVzdCByZXN1bHQKICoKICogUmVmZXJlbmNlOiBDb25zb2xpZGF0ZWQgZ3VpZGVsaW5lcyBvbiBwZXJzb24tY2VudHJlZCBISVYgc3RyYXRlZ2ljIGluZm9ybWF0aW9uOiBzdHJlbmd0aGVuaW5nIHJvdXRpbmUgZGF0YSBmb3IgaW1wYWN0LiBHZW5ldmE6IFdvcmxkIEhlYWx0aCBPcmdhbml6YXRpb247IDIwMjIKICogCiAqIERhdGEgQ29uY2VwdHM6CiAqIEhJVi5BLkRFMTc6IEFnZSB8IENhbGN1bGF0ZWQgYWdlIChudW1iZXIgb2YgeWVhcnMpIG9mIHRoZSBjbGllbnQgYmFzZWQgb24gZGF0ZSBvZiBiaXJ0aAogKiBISVYuQi5ERTI5OiBDdXJyZW50bHkgcHJlZ25hbnQgfCBDbGllbnQgaXMgY3VycmVudGx5IHByZWduYW50CiAqIEhJVi5CLkRFMTEwOiBISVYgdGVzdCBkYXRlIHwgRGF0ZSBvZiB0aGUgSElWIHRlc3QKICogSElWLkIuREUxMTE6IEhJViB0ZXN0IHJlc3VsdCB8IFRoZSByZXN1bHQgZnJvbSBISVYgdGVzdGluZyBhZnRlciBhcHBseWluZyB0aGUgdGVzdGluZyBhbGdvcml0aG0KICogSElWLkIuREUxMTI6IEhJVi1wb3NpdGl2ZSB8IFRlc3QgcmVzdWx0IGlzIEhJVi1wb3NpdGl2ZQogKiBISVYuQi5ERTExMzogSElWLW5lZ2F0aXZlIHwgVGVzdCByZXN1bHQgaXMgSElWLW5lZ2F0aXZlCiAqIEhJVi5CLkRFMTE0OiBISVYtaW5jb25jbHVzaXZlIHwgVGVzdCByZXN1bHQgaXMgSElWLWluY29uY2x1c2l2ZQogKiBISVYuQi5ERTExNTogSElWIHN0YXR1cyB8IEhJViBzdGF0dXMgcmVwb3J0ZWQgYWZ0ZXIgYXBwbHlpbmcgdGhlIG5hdGlvbmFsIEhJViB0ZXN0aW5nIGFsZ29yaXRobS4gTm8gc2luZ2xlIEhJViB0ZXN0IGNhbiBwcm92aWRlIGFuIEhJVi1wb3NpdGl2ZSBkaWFnbm9zaXMuCiAqIEhJVi5CLkRFMTE2OiBISVYtcG9zaXRpdmUgfCBDbGllbnQgaXMgSElWLXBvc2l0aXZlCiAqIEhJVi5CLkRFMTE3OiBISVYtbmVnYXRpdmUgfCBDbGllbnQgaXMgSElWLW5lZ2F0aXZlCiAqIEhJVi5CLkRFMTE4OiBVbmtub3duIHwgQ2xpZW50IGhhcyB1bmtub3duIEhJViBzdGF0dXMKICogSElWLkQuREUzMTogQ3VycmVudGx5IHByZWduYW50IHwgQ2xpZW50IGlzIGN1cnJlbnRseSBwcmVnbmFudAogKiBISVYuRS5ERTg1OiBBTkMgY29udGFjdCBkYXRlIHwgVGhlIGRhdGUgYW5kIHRpbWUgb2YgdGhlIGNsaWVudCdzIEFOQyBjb250YWN0IChpbiB0aGUgQU5DIERBSyB0aGlzIGlzIGNhbGxlZCAnQ29udGFjdCBkYXRlJykKICogSElWLkUuREUyMjQ6IEhJViB0ZXN0IGRhdGUgfCBEYXRlIG9mIHRoZSBISVYgdGVzdAogKiBISVYuU1JWLkRFMTogSElWIHRlc3QgZGF0ZSB8IERhdGUgb2YgdGhlIEhJViB0ZXN0CiAqIEhJVi5TUlYuREUyOiBISVYgdGVzdCByZXN1bHQgfCBUaGUgcmVzdWx0IGZyb20gSElWIHRlc3RpbmcgYWZ0ZXIgYXBwbHlpbmcgdGhlIHRlc3RpbmcgYWxnb3JpdGhtCiAqIEhJVi5TUlYuREU3OiBDdXJyZW50bHkgcHJlZ25hbnQgfCBDbGllbnQgaXMgY3VycmVudGx5IHByZWduYW50CiAqIEhJVi5TUlYuREUxODogQU5DIGNvbnRhY3QgZGF0ZSB8IFRoZSBkYXRlIGFuZCB0aW1lIG9mIHRoZSBjbGllbnQncyBBTkMgY29udGFjdCAoaW4gdGhlIEFOQyBEQUsgdGhpcyBpcyBjYWxsZWQgJ0NvbnRhY3QgZGF0ZScpCiAqCiAqIEFkZGl0aW9uYWwgQ29udGV4dAogKiAtIHdoYXQgaXQgbWVhc3VyZXM6IEhJViBwcmV2YWxlbmNlIGFtb25nIHByZWduYW50IHdvbWVuIGF0dGVuZGluZyBBTkMsIGluY2x1ZGluZyB0aG9zZSB3aG8gd2VyZSBkaWFnbm9zZWQgd2l0aCBISVYgYmVmb3JlIHRoZWlyIGZpcnN0IEFOQyB2aXNpdCBhbmQgdGhvc2UgdGVzdGluZyBwb3NpdGl2ZSBkdXJpbmcgdGhlaXIgY3VycmVudCBwcmVnbmFuY3kuCiAqIC0gcmF0aW9uYWxlOiBISVYgcHJldmFsZW5jZSBhbW9uZyBBTkMgYXR0ZW5kZWVzIGlzIHVzZWQgZm9yIHN1cnZlaWxsYW5jZSB0byBtZWFzdXJlIEhJViBwcmV2YWxlbmNlIGFuZCBpbmNpZGVuY2UgYW5kIHRvIG1vbml0b3IgdHJlbmRzIGluIEhJViBpbmZlY3Rpb24gd2hlbiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldCB0byBlbnN1cmUgdGhhdCBISVYgcHJldmFsZW5jZSBhbW9uZyBBTkMgY2xpZW50cyBpcyBjb25zaXN0ZW50bHkgcmVwcmVzZW50YXRpdmUgb2YgSElWIHByZXZhbGVuY2UgYW1vbmcgYWxsIHByZWduYW50IHdvbWVuOiB8IOKAoiBBTkMgYXR0ZW5kYW5jZSBpcyBoaWdoIGFuZCBhbGwgd29tZW4gYXJlIHJlY29yZGVkIChmb3IgZXhhbXBsZSwgbm90IG1pc3NpbmcgbGFyZ2UgcHJpdmF0ZS1zZWN0b3IgQU5DIHNlcnZpY2VzKS4gfCDigKLCoEhJViB0ZXN0aW5nIGlzIG9mZmVyZWQgdG8gYWxsIHByZWduYW50IHdvbWVuIGFuZCBub3QgcmVzdHJpY3RlZCB0byBvbmx5IGhpZ2hlci1yaXNrIHdvbWVuIG9yIGludGVycnVwdGVkIGR1ZSB0byBzdG9jay1vdXRzIG9mIHRlc3Qga2l0cy4gfCDigKLCoE9ubHkgdGhlIGZpcnN0IEhJViB0ZXN0IHJlc3VsdCBpcyB1c2VkIHRvIGNhbGN1bGF0ZSBISVYgcHJldmFsZW5jZSBkdXJpbmcgYSBzaW5nbGUgcHJlZ25hbmN5LiB8IOKAosKgV29tZW4gd2hvIGFyZSBhbHJlYWR5IGtub3duIHRvIGJlIEhJVi1wb3NpdGl2ZSBhbmQvb3IgYXJlIGFscmVhZHkgb24gQVJUIHByaW9yIHRvIHRoZWlyIGZpcnN0IEFOQyB2aXNpdCBkdXJpbmcgYSBwcmVnbmFuY3kgYW5kLCB0aGVyZWZvcmUsIGFyZSBub3QgdGVzdGVkIGZvciBISVYsIGFyZSByZWNvcmRlZCB8IGFuZCBpbmNsdWRlZCBpbiByb3V0aW5lIHJlcG9ydGluZy4gQWxsIEhJVi1wb3NpdGl2ZSB3b21lbiBtdXN0IGJlIGluY2x1ZGVkIGluIGJvdGggdGhlIG51bWVyYXRvciBhbmQgZGVub21pbmF0b3Igd2hlbiBjYWxjdWxhdGluZyBISVYgcHJldmFsZW5jZSBhbW9uZyBwcmVnbmFudCB3b21lbi4gfCAgfCBTZWUgc2VjdGlvbiA1LjIgNCBvbiBXSE8ncyAyMDIyIEhJViBTSSBHdWlkZWxpbmVzIG9uIHJvdXRpbmUgYW50ZW5hdGFsIEhJViB0ZXN0aW5nIGZvciBtb3JlIGRldGFpbC4gfCBUaGlzIGluZGljYXRvciBpcyBhbHNvIHVzZWZ1bCBmb3IgZXN0aW1hdGluZyB0aGUgbnVtYmVyIG9mIHdvbWVuIGluIG5lZWQgb2YgUE1UQ1Qgc2VydmljZXMgZm9yIHByb2dyYW1tZSBwbGFubmluZyBwdXJwb3Nlcy4KICogLSBtZXRob2Q6IEFOQyByZWdpc3RlcnMsIHBhdGllbnQgbW9uaXRvcmluZyB0b29scywgRU1ScyAoZm9yIGV4YW1wbGUsIHBhdGllbnQgcmVjb3JkcykuIHwgIHwgVGhlIHJlY29tbWVuZGVkIHJlcG9ydGluZyBwZXJpb2QgaXMgMTIgbW9udGhzLgogKiAKICogU3VnZ2VzdGVkIFNjb3JpbmcgTWV0aG9kOiBwcm9wb3J0aW9uIHwgaHR0cDovL2hsNy5vcmcvZmhpci91cy9jcWZtZWFzdXJlcy9TdHJ1Y3R1cmVEZWZpbml0aW9uL3Byb3BvcnRpb24tbWVhc3VyZS1jcWZtCiAqLwoKbGlicmFyeSBISVZJTkQ0M0xvZ2ljCgovLyBJbmNsdWRlZCBMaWJyYXJpZXMKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgSElWQ29tbW9uIHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0NvbQoKLy8gSW5kaWNhdG9yIERlZmluaXRpb24KcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGU+IGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjMtMDEtMDEsIEAyMDIzLTAxLTMwXQoKY29udGV4dCBQYXRpZW50Ci8qIFBvcHVsYXRpb25zICovCgovKgogKkluaXRpYWwgUG9wdWxhdGlvbgogKi8KCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIjoKICB0cnVlCgovKioKICogTnVtZXJhdG9yCiAqIAogKiBEZWZpbml0aW9uOiBOdW1iZXIgb2YgQU5DIGF0dGVuZGVlcyB3aG8gdGVzdGVkIEhJVi1wb3NpdGl2ZSBhdCB0aGVpciBmaXJzdCB0ZXN0IGR1cmluZyB0aGUgY3VycmVudCBwcmVnbmFuY3kgcGx1cyBudW1iZXIgb2YgQU5DIGF0dGVuZGVlcyBrbm93biB0byBiZSBISVYtcG9zaXRpdmUgYmVmb3JlIHRoZWlyIGZpcnN0IEFOQyB2aXNpdAogKiBDYWxjdWxhdGlvbjogQ09VTlQgb2YgIkN1cnJlbnRseSBwcmVnbmFudCIgY2xpZW50cyB3aXRoICJISVYgdGVzdCByZXN1bHQiPSdISVYtcG9zaXRpdmUnIEFORCAiSElWIHRlc3QgZGF0ZSIgb24gIkFOQyBjb250YWN0IGRhdGUiIGlzIEVBUkxJRVNUIHdpdGhpbiBjdXJyZW50IHByZWduYW5jeSB8IFBMVVMgfCBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkhJViBzdGF0dXMiPSdISVYtcG9zaXRpdmUnIG9uIGZpcnN0ICJBTkMgY29udGFjdCBkYXRlIgogKi8KCmRlZmluZSAiTnVtZXJhdG9yIjoKICB0cnVlCgoKLyoqCiAqIERlbm9taW5hdG9yCiAqCiAqIERlZmluaXRpb246IE51bWJlciBvZiBBTkMgYXR0ZW5kZWVzIHJlY2VpdmluZyB0aGVpciBmaXJzdCBISVYgdGVzdCBkdXJpbmcgcHJlZ25hbmN5IHBsdXMgbnVtYmVyIG9mIEFOQyBhdHRlbmRlZXMga25vd24gdG8gYmUgSElWLXBvc2l0aXZlIGJlZm9yZSBmaXJzdCBBTkMgdmlzaXQKICogQ2FsY3VsYXRpb246IENPVU5UIG9mICJDdXJyZW50bHkgcHJlZ25hbnQiIGNsaWVudHMgd2l0aCAiSElWIHRlc3QgZGF0ZSIgb24gYSAiQU5DIGNvbnRhY3QgZGF0ZSIgZHVyaW5nIGN1cnJlbnQgcHJlZ25hbmN5IHwgUExVUyB8IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgb24gZmlyc3QgIkFOQyBjb250YWN0IGRhdGUiCiAqLwoKZGVmaW5lICJEZW5vbWluYXRvciI6CiAgdHJ1ZQogICAgCgovKiBlbmQgUG9wdWxhdGlvbnMgKi8KCg=="/>
</content>
<content>
<contentType value="application/elm+xml"/>
<data
value="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGxpYnJhcnkgeG1sbnM9InVybjpobDctb3JnOmVsbTpyMSIgeG1sbnM6dD0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczpmaGlyPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB4bWxuczpxZG00Mz0idXJuOmhlYWx0aGl0LWdvdjpxZG06djRfMyIgeG1sbnM6cWRtNTM9InVybjpoZWFsdGhpdC1nb3Y6cWRtOnY1XzMiIHhtbG5zOmE9InVybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMSI+CiAgIDxhbm5vdGF0aW9uIHRyYW5zbGF0b3JPcHRpb25zPSJFbmFibGVBbm5vdGF0aW9ucyxFbmFibGVMb2NhdG9ycyxEaXNhYmxlTGlzdERlbW90aW9uLERpc2FibGVMaXN0UHJvbW90aW9uIiBzaWduYXR1cmVMZXZlbD0iTm9uZSIgeHNpOnR5cGU9ImE6Q3FsVG9FbG1JbmZvIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBGSElSSGVscGVycy5Ub0ludGVydmFsIGhhcyBtdWx0aXBsZSBvdmVybG9hZHMgYW5kIGR1ZSB0byB0aGUgU2lnbmF0dXJlTGV2ZWwgc2V0dGluZyAoTm9uZSksIHRoZSBvdmVybG9hZCBzaWduYXR1cmUgaXMgbm90IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbWJpZ3VvdXMgZnVuY3Rpb24gcmVzb2x1dGlvbiBhdCBydW50aW1lLCBjb25zaWRlciBzZXR0aW5nIHRoZSBTaWduYXR1cmVMZXZlbCB0byBPdmVybG9hZHMgb3IgQWxsIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRwdXQgaW5jbHVkZXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBzdXBwb3J0IGNvcnJlY3Qgb3ZlcmxvYWQgc2VsZWN0aW9uIGF0IHJ1bnRpbWUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBGSElSSGVscGVycy5Ub0ludGVydmFsIGhhcyBtdWx0aXBsZSBvdmVybG9hZHMgYW5kIGR1ZSB0byB0aGUgU2lnbmF0dXJlTGV2ZWwgc2V0dGluZyAoTm9uZSksIHRoZSBvdmVybG9hZCBzaWduYXR1cmUgaXMgbm90IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbWJpZ3VvdXMgZnVuY3Rpb24gcmVzb2x1dGlvbiBhdCBydW50aW1lLCBjb25zaWRlciBzZXR0aW5nIHRoZSBTaWduYXR1cmVMZXZlbCB0byBPdmVybG9hZHMgb3IgQWxsIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRwdXQgaW5jbHVkZXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBzdXBwb3J0IGNvcnJlY3Qgb3ZlcmxvYWQgc2VsZWN0aW9uIGF0IHJ1bnRpbWUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICA8YTpzIHI9IjE2Ij4KICAgICAgICAgPGE6cz4vKioKICogTGlicmFyeTogSElWLklORC40MyBMb2dpYwogKiBSZWYgTm86IFZFUi43CiAqIFNob3J0IE5hbWU6IEhJViBwcmV2YWxlbmNlIGFtb25nIHdvbWVuIGF0dGVuZGluZyBBTkMKICoKICogRGVmaW5pdGlvbjogJSBvZiBwcmVnbmFudCB3b21lbiB3aG8gYXJlIEhJVi1wb3NpdGl2ZSBhdCB0aGUgdGltZSBvZiB0aGVpciBmaXJzdCB0ZXN0IGR1cmluZyB0aGUgY3VycmVudCBwcmVnbmFuY3kKICoKICogTnVtZXJhdG9yOiBOdW1iZXIgb2YgQU5DIGF0dGVuZGVlcyB3aG8gdGVzdGVkIEhJVi1wb3NpdGl2ZSBhdCB0aGVpciBmaXJzdCB0ZXN0IGR1cmluZyB0aGUgY3VycmVudCBwcmVnbmFuY3kgcGx1cyBudW1iZXIgb2YgQU5DIGF0dGVuZGVlcyBrbm93biB0byBiZSBISVYtcG9zaXRpdmUgYmVmb3JlIHRoZWlyIGZpcnN0IEFOQyB2aXNpdAogKiBOdW1lcmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mICZxdW90O0N1cnJlbnRseSBwcmVnbmFudCZxdW90OyBjbGllbnRzIHdpdGggJnF1b3Q7SElWIHRlc3QgcmVzdWx0JnF1b3Q7PSdISVYtcG9zaXRpdmUnIEFORCAmcXVvdDtISVYgdGVzdCBkYXRlJnF1b3Q7IG9uICZxdW90O0FOQyBjb250YWN0IGRhdGUmcXVvdDsgaXMgRUFSTElFU1Qgd2l0aGluIGN1cnJlbnQgcHJlZ25hbmN5IHwgUExVUyB8IENPVU5UIG9mIGNsaWVudHMgd2l0aCAmcXVvdDtISVYgc3RhdHVzJnF1b3Q7PSdISVYtcG9zaXRpdmUnIG9uIGZpcnN0ICZxdW90O0FOQyBjb250YWN0IGRhdGUmcXVvdDsKICogTnVtZXJhdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEZW5vbWluYXRvcjogTnVtYmVyIG9mIEFOQyBhdHRlbmRlZXMgcmVjZWl2aW5nIHRoZWlyIGZpcnN0IEhJViB0ZXN0IGR1cmluZyBwcmVnbmFuY3kgcGx1cyBudW1iZXIgb2YgQU5DIGF0dGVuZGVlcyBrbm93biB0byBiZSBISVYtcG9zaXRpdmUgYmVmb3JlIGZpcnN0IEFOQyB2aXNpdAogKiBEZW5vbWluYXRvciBDYWxjdWxhdGlvbjogQ09VTlQgb2YgJnF1b3Q7Q3VycmVudGx5IHByZWduYW50JnF1b3Q7IGNsaWVudHMgd2l0aCAmcXVvdDtISVYgdGVzdCBkYXRlJnF1b3Q7IG9uIGEgJnF1b3Q7QU5DIGNvbnRhY3QgZGF0ZSZxdW90OyBkdXJpbmcgY3VycmVudCBwcmVnbmFuY3kgfCBQTFVTIHwgQ09VTlQgb2YgY2xpZW50cyB3aXRoICZxdW90O0hJViBzdGF0dXMmcXVvdDs9J0hJVi1wb3NpdGl2ZScgb24gZmlyc3QgJnF1b3Q7QU5DIGNvbnRhY3QgZGF0ZSZxdW90OwogKiBEZW5vbWluYXRvciBFeGNsdXNpb25zOiAKICoKICogRGlzYWdncmVnYXRpb25zOgogKiDigKIgQWdlICgmbHQ7MTUsIDE14oCTMTksIDIw4oCTMjQsIDI14oCTMjksIDMw4oCTMzQsIDM14oCTMzksIDQw4oCTNDksIDUwKyB5ZWFycykgCiAqICDigKLCoEhJViBzdGF0dXMgYXQgZmlyc3QgdGVzdCBkdXJpbmcgY3VycmVudCBwcmVnbmFuY3kgKGtub3duIHBvc2l0aXZlLCB0ZXN0ZWQgSElWLW5lZ2F0aXZlLCB0ZXN0ZWQgSElWLXBvc2l0aXZlLCBub3QgdGVzdGVkKSAKICogIOKAosKgQ2l0aWVzIGFuZCBvdGhlciBhZG1pbmlzdHJhdGl2ZSByZWdpb25zIG9mIGVwaWRlbWlvbG9naWMgaW1wb3J0YW5jZQogKgogKiBEaXNhZ2dyZWdhdGlvbiBFbGVtZW50czogQWdlIHwgSElWIHN0YXR1cyBhdCBmaXJzdCBISVYgdGVzdCBkdXJpbmcgY3VycmVudCBwcmVnbmFuY3kKICoKICogTnVtZXJhdG9yIGFuZCBEZW5vbWluYXRvciBFbGVtZW50czoKICogQU5DIGNvbnRhY3QgZGF0ZSAKICogIEN1cnJlbnRseSBwcmVnbmFudCAKICogIEhJViBzdGF0dXMgCiAqICBISVYgdGVzdCBkYXRlIAogKiAgSElWIHRlc3QgcmVzdWx0CiAqCiAqIFJlZmVyZW5jZTogQ29uc29saWRhdGVkIGd1aWRlbGluZXMgb24gcGVyc29uLWNlbnRyZWQgSElWIHN0cmF0ZWdpYyBpbmZvcm1hdGlvbjogc3RyZW5ndGhlbmluZyByb3V0aW5lIGRhdGEgZm9yIGltcGFjdC4gR2VuZXZhOiBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uOyAyMDIyCiAqIAogKiBEYXRhIENvbmNlcHRzOgogKiBISVYuQS5ERTE3OiBBZ2UgfCBDYWxjdWxhdGVkIGFnZSAobnVtYmVyIG9mIHllYXJzKSBvZiB0aGUgY2xpZW50IGJhc2VkIG9uIGRhdGUgb2YgYmlydGgKICogSElWLkIuREUyOTogQ3VycmVudGx5IHByZWduYW50IHwgQ2xpZW50IGlzIGN1cnJlbnRseSBwcmVnbmFudAogKiBISVYuQi5ERTExMDogSElWIHRlc3QgZGF0ZSB8IERhdGUgb2YgdGhlIEhJViB0ZXN0CiAqIEhJVi5CLkRFMTExOiBISVYgdGVzdCByZXN1bHQgfCBUaGUgcmVzdWx0IGZyb20gSElWIHRlc3RpbmcgYWZ0ZXIgYXBwbHlpbmcgdGhlIHRlc3RpbmcgYWxnb3JpdGhtCiAqIEhJVi5CLkRFMTEyOiBISVYtcG9zaXRpdmUgfCBUZXN0IHJlc3VsdCBpcyBISVYtcG9zaXRpdmUKICogSElWLkIuREUxMTM6IEhJVi1uZWdhdGl2ZSB8IFRlc3QgcmVzdWx0IGlzIEhJVi1uZWdhdGl2ZQogKiBISVYuQi5ERTExNDogSElWLWluY29uY2x1c2l2ZSB8IFRlc3QgcmVzdWx0IGlzIEhJVi1pbmNvbmNsdXNpdmUKICogSElWLkIuREUxMTU6IEhJViBzdGF0dXMgfCBISVYgc3RhdHVzIHJlcG9ydGVkIGFmdGVyIGFwcGx5aW5nIHRoZSBuYXRpb25hbCBISVYgdGVzdGluZyBhbGdvcml0aG0uIE5vIHNpbmdsZSBISVYgdGVzdCBjYW4gcHJvdmlkZSBhbiBISVYtcG9zaXRpdmUgZGlhZ25vc2lzLgogKiBISVYuQi5ERTExNjogSElWLXBvc2l0aXZlIHwgQ2xpZW50IGlzIEhJVi1wb3NpdGl2ZQogKiBISVYuQi5ERTExNzogSElWLW5lZ2F0aXZlIHwgQ2xpZW50IGlzIEhJVi1uZWdhdGl2ZQogKiBISVYuQi5ERTExODogVW5rbm93biB8IENsaWVudCBoYXMgdW5rbm93biBISVYgc3RhdHVzCiAqIEhJVi5ELkRFMzE6IEN1cnJlbnRseSBwcmVnbmFudCB8IENsaWVudCBpcyBjdXJyZW50bHkgcHJlZ25hbnQKICogSElWLkUuREU4NTogQU5DIGNvbnRhY3QgZGF0ZSB8IFRoZSBkYXRlIGFuZCB0aW1lIG9mIHRoZSBjbGllbnQncyBBTkMgY29udGFjdCAoaW4gdGhlIEFOQyBEQUsgdGhpcyBpcyBjYWxsZWQgJ0NvbnRhY3QgZGF0ZScpCiAqIEhJVi5FLkRFMjI0OiBISVYgdGVzdCBkYXRlIHwgRGF0ZSBvZiB0aGUgSElWIHRlc3QKICogSElWLlNSVi5ERTE6IEhJViB0ZXN0IGRhdGUgfCBEYXRlIG9mIHRoZSBISVYgdGVzdAogKiBISVYuU1JWLkRFMjogSElWIHRlc3QgcmVzdWx0IHwgVGhlIHJlc3VsdCBmcm9tIEhJViB0ZXN0aW5nIGFmdGVyIGFwcGx5aW5nIHRoZSB0ZXN0aW5nIGFsZ29yaXRobQogKiBISVYuU1JWLkRFNzogQ3VycmVudGx5IHByZWduYW50IHwgQ2xpZW50IGlzIGN1cnJlbnRseSBwcmVnbmFudAogKiBISVYuU1JWLkRFMTg6IEFOQyBjb250YWN0IGRhdGUgfCBUaGUgZGF0ZSBhbmQgdGltZSBvZiB0aGUgY2xpZW50J3MgQU5DIGNvbnRhY3QgKGluIHRoZSBBTkMgREFLIHRoaXMgaXMgY2FsbGVkICdDb250YWN0IGRhdGUnKQogKgogKiBBZGRpdGlvbmFsIENvbnRleHQKICogLSB3aGF0IGl0IG1lYXN1cmVzOiBISVYgcHJldmFsZW5jZSBhbW9uZyBwcmVnbmFudCB3b21lbiBhdHRlbmRpbmcgQU5DLCBpbmNsdWRpbmcgdGhvc2Ugd2hvIHdlcmUgZGlhZ25vc2VkIHdpdGggSElWIGJlZm9yZSB0aGVpciBmaXJzdCBBTkMgdmlzaXQgYW5kIHRob3NlIHRlc3RpbmcgcG9zaXRpdmUgZHVyaW5nIHRoZWlyIGN1cnJlbnQgcHJlZ25hbmN5LgogKiAtIHJhdGlvbmFsZTogSElWIHByZXZhbGVuY2UgYW1vbmcgQU5DIGF0dGVuZGVlcyBpcyB1c2VkIGZvciBzdXJ2ZWlsbGFuY2UgdG8gbWVhc3VyZSBISVYgcHJldmFsZW5jZSBhbmQgaW5jaWRlbmNlIGFuZCB0byBtb25pdG9yIHRyZW5kcyBpbiBISVYgaW5mZWN0aW9uIHdoZW4gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQgdG8gZW5zdXJlIHRoYXQgSElWIHByZXZhbGVuY2UgYW1vbmcgQU5DIGNsaWVudHMgaXMgY29uc2lzdGVudGx5IHJlcHJlc2VudGF0aXZlIG9mIEhJViBwcmV2YWxlbmNlIGFtb25nIGFsbCBwcmVnbmFudCB3b21lbjogfCDigKIgQU5DIGF0dGVuZGFuY2UgaXMgaGlnaCBhbmQgYWxsIHdvbWVuIGFyZSByZWNvcmRlZCAoZm9yIGV4YW1wbGUsIG5vdCBtaXNzaW5nIGxhcmdlIHByaXZhdGUtc2VjdG9yIEFOQyBzZXJ2aWNlcykuIHwg4oCiwqBISVYgdGVzdGluZyBpcyBvZmZlcmVkIHRvIGFsbCBwcmVnbmFudCB3b21lbiBhbmQgbm90IHJlc3RyaWN0ZWQgdG8gb25seSBoaWdoZXItcmlzayB3b21lbiBvciBpbnRlcnJ1cHRlZCBkdWUgdG8gc3RvY2stb3V0cyBvZiB0ZXN0IGtpdHMuIHwg4oCiwqBPbmx5IHRoZSBmaXJzdCBISVYgdGVzdCByZXN1bHQgaXMgdXNlZCB0byBjYWxjdWxhdGUgSElWIHByZXZhbGVuY2UgZHVyaW5nIGEgc2luZ2xlIHByZWduYW5jeS4gfCDigKLCoFdvbWVuIHdobyBhcmUgYWxyZWFkeSBrbm93biB0byBiZSBISVYtcG9zaXRpdmUgYW5kL29yIGFyZSBhbHJlYWR5IG9uIEFSVCBwcmlvciB0byB0aGVpciBmaXJzdCBBTkMgdmlzaXQgZHVyaW5nIGEgcHJlZ25hbmN5IGFuZCwgdGhlcmVmb3JlLCBhcmUgbm90IHRlc3RlZCBmb3IgSElWLCBhcmUgcmVjb3JkZWQgfCBhbmQgaW5jbHVkZWQgaW4gcm91dGluZSByZXBvcnRpbmcuIEFsbCBISVYtcG9zaXRpdmUgd29tZW4gbXVzdCBiZSBpbmNsdWRlZCBpbiBib3RoIHRoZSBudW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yIHdoZW4gY2FsY3VsYXRpbmcgSElWIHByZXZhbGVuY2UgYW1vbmcgcHJlZ25hbnQgd29tZW4uIHwgIHwgU2VlIHNlY3Rpb24gNS4yIDQgb24gV0hPJ3MgMjAyMiBISVYgU0kgR3VpZGVsaW5lcyBvbiByb3V0aW5lIGFudGVuYXRhbCBISVYgdGVzdGluZyBmb3IgbW9yZSBkZXRhaWwuIHwgVGhpcyBpbmRpY2F0b3IgaXMgYWxzbyB1c2VmdWwgZm9yIGVzdGltYXRpbmcgdGhlIG51bWJlciBvZiB3b21lbiBpbiBuZWVkIG9mIFBNVENUIHNlcnZpY2VzIGZvciBwcm9ncmFtbWUgcGxhbm5pbmcgcHVycG9zZXMuCiAqIC0gbWV0aG9kOiBBTkMgcmVnaXN0ZXJzLCBwYXRpZW50IG1vbml0b3JpbmcgdG9vbHMsIEVNUnMgKGZvciBleGFtcGxlLCBwYXRpZW50IHJlY29yZHMpLiB8ICB8IFRoZSByZWNvbW1lbmRlZCByZXBvcnRpbmcgcGVyaW9kIGlzIDEyIG1vbnRocy4KICogCiAqIFN1Z2dlc3RlZCBTY29yaW5nIE1ldGhvZDogcHJvcG9ydGlvbiB8IGh0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY3FmbWVhc3VyZXMvU3RydWN0dXJlRGVmaW5pdGlvbi9wcm9wb3J0aW9uLW1lYXN1cmUtY3FmbQogKi8KCmxpYnJhcnkgSElWSU5ENDNMb2dpYzwvYTpzPgogICAgICA8L2E6cz4KICAgPC9hbm5vdGF0aW9uPgogICA8aWRlbnRpZmllciBpZD0iSElWSU5ENDNMb2dpYyIgc3lzdGVtPSJodHRwOi8vc21hcnQud2hvLmludC9oaXYiLz4KICAgPHNjaGVtYUlkZW50aWZpZXIgaWQ9InVybjpobDctb3JnOmVsbSIgdmVyc2lvbj0icjEiLz4KICAgPHVzaW5ncz4KICAgICAgPGRlZiBsb2NhbElkZW50aWZpZXI9IlN5c3RlbSIgdXJpPSJ1cm46aGw3LW9yZzplbG0tdHlwZXM6cjEiLz4KICAgICAgPGRlZiBsb2NhbElkPSIxIiBsb2NhdG9yPSI2MzoxLTYzOjI2IiBsb2NhbElkZW50aWZpZXI9IkZISVIiIHVyaT0iaHR0cDovL2hsNy5vcmcvZmhpciIgdmVyc2lvbj0iNC4wLjEiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIxIj4KICAgICAgICAgICAgICAgPGE6cz4vLyBJbmNsdWRlZCBMaWJyYXJpZXMKdXNpbmcgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUjwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4gdmVyc2lvbiAnNC4wLjEnPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICA8L3VzaW5ncz4KICAgPGluY2x1ZGVzPgogICAgICA8ZGVmIGxvY2FsSWQ9IjIiIGxvY2F0b3I9IjY1OjEtNjU6NDQiIGxvY2FsSWRlbnRpZmllcj0iSElDIiBwYXRoPSJodHRwOi8vc21hcnQud2hvLmludC9oaXYvSElWQ29tbW9uIiB2ZXJzaW9uPSIwLjAuMSI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjIiPgogICAgICAgICAgICAgICA8YTpzPmluY2x1ZGUgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+SElWQ29tbW9uPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiB2ZXJzaW9uICcwLjAuMScgY2FsbGVkIEhJQzwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIzIiBsb2NhdG9yPSI2NjoxLTY2OjM1IiBsb2NhbElkZW50aWZpZXI9IkZISVJIZWxwZXJzIiBwYXRoPSJodHRwOi8vaGw3Lm9yZy9maGlyL0ZISVJIZWxwZXJzIiB2ZXJzaW9uPSI0LjAuMSI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjMiPgogICAgICAgICAgICAgICA8YTpzPmluY2x1ZGUgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUkhlbHBlcnM8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IHZlcnNpb24gJzQuMC4xJzwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI0IiBsb2NhdG9yPSI2ODoxLTY4OjI5IiBsb2NhbElkZW50aWZpZXI9IldDb20iIHBhdGg9Imh0dHA6Ly9zbWFydC53aG8uaW50L2hpdi9XSE9Db21tb24iPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSI0Ij4KICAgICAgICAgICAgICAgPGE6cz5pbmNsdWRlIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICA8YTpzPldIT0NvbW1vbjwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4gY2FsbGVkIFdDb208L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgIDwvaW5jbHVkZXM+CiAgIDxwYXJhbWV0ZXJzPgogICAgICA8ZGVmIGxvY2FsSWQ9IjEwIiBsb2NhdG9yPSI3MToxLTcxOjg4IiBuYW1lPSJNZWFzdXJlbWVudCBQZXJpb2QiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIxMCI+CiAgICAgICAgICAgICAgIDxhOnM+Ly8gSW5kaWNhdG9yIERlZmluaXRpb24KcGFyYW1ldGVyICZxdW90O01lYXN1cmVtZW50IFBlcmlvZCZxdW90OyA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSI5Ij4KICAgICAgICAgICAgICAgICAgPGE6cz5JbnRlcnZhbCZsdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cz5EYXRlPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzPj48L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IGRlZmF1bHQgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iNyI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNSI+SW50ZXJ2YWxbQDIwMjMtMDEtMDEsIEAyMDIzLTAxLTMwXTwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGRlZmF1bHQgbG9jYWxJZD0iNyIgbG9jYXRvcj0iNzE6NTUtNzE6ODgiIGxvd0Nsb3NlZD0idHJ1ZSIgaGlnaENsb3NlZD0idHJ1ZSIgeHNpOnR5cGU9IkludGVydmFsIj4KICAgICAgICAgICAgPGxvdyBsb2NhbElkPSI1IiBsb2NhdG9yPSI3MTo2NC03MTo3NCIgeHNpOnR5cGU9IkRhdGUiPgogICAgICAgICAgICAgICA8eWVhciB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjIwMjMiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDxtb250aCB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjEiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDxkYXkgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIxIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICA8L2xvdz4KICAgICAgICAgICAgPGhpZ2ggbG9jYWxJZD0iNiIgbG9jYXRvcj0iNzE6NzctNzE6ODciIHhzaTp0eXBlPSJEYXRlIj4KICAgICAgICAgICAgICAgPHllYXIgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIyMDIzIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8bW9udGggdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIxIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8ZGF5IHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iMzAiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgIDwvaGlnaD4KICAgICAgICAgPC9kZWZhdWx0PgogICAgICAgICA8cGFyYW1ldGVyVHlwZVNwZWNpZmllciBsb2NhbElkPSI5IiBsb2NhdG9yPSI3MTozMi03MTo0NSIgeHNpOnR5cGU9IkludGVydmFsVHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgIDxwb2ludFR5cGUgbG9jYWxJZD0iOCIgbG9jYXRvcj0iNzE6NDEtNzE6NDQiIG5hbWU9InQ6RGF0ZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICA8L3BhcmFtZXRlclR5cGVTcGVjaWZpZXI+CiAgICAgIDwvZGVmPgogICA8L3BhcmFtZXRlcnM+CiAgIDxjb250ZXh0cz4KICAgICAgPGRlZiBsb2NhdG9yPSI3MzoxLTczOjE1IiBuYW1lPSJQYXRpZW50Ii8+CiAgIDwvY29udGV4dHM+CiAgIDxzdGF0ZW1lbnRzPgogICAgICA8ZGVmIGxvY2F0b3I9IjczOjEtNzM6MTUiIG5hbWU9IlBhdGllbnQiIGNvbnRleHQ9IlBhdGllbnQiPgogICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iU2luZ2xldG9uRnJvbSI+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2F0b3I9IjczOjEtNzM6MTUiIGRhdGFUeXBlPSJmaGlyOlBhdGllbnQiIHRlbXBsYXRlSWQ9Imh0dHA6Ly9obDcub3JnL2ZoaXIvU3RydWN0dXJlRGVmaW5pdGlvbi9QYXRpZW50IiB4c2k6dHlwZT0iUmV0cmlldmUiLz4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIxMiIgbG9jYXRvcj0iODA6MS04MTo2IiBuYW1lPSJJbml0aWFsIFBvcHVsYXRpb24iIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIxMiI+CiAgICAgICAgICAgICAgIDxhOnMgcj0iMTEiPi8qIFBvcHVsYXRpb25zICovCgovKgogKkluaXRpYWwgUG9wdWxhdGlvbgogKi8KCmRlZmluZSAmcXVvdDtJbml0aWFsIFBvcHVsYXRpb24mcXVvdDs6CiAgdHJ1ZTwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIxMSIgbG9jYXRvcj0iODE6My04MTo2IiB2YWx1ZVR5cGU9InQ6Qm9vbGVhbiIgdmFsdWU9InRydWUiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjE0IiBsb2NhdG9yPSI5MDoxLTkxOjYiIG5hbWU9Ik51bWVyYXRvciIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjE0Ij4KICAgICAgICAgICAgICAgPGE6cyByPSIxMyI+LyoqCiAqIE51bWVyYXRvcgogKiAKICogRGVmaW5pdGlvbjogTnVtYmVyIG9mIEFOQyBhdHRlbmRlZXMgd2hvIHRlc3RlZCBISVYtcG9zaXRpdmUgYXQgdGhlaXIgZmlyc3QgdGVzdCBkdXJpbmcgdGhlIGN1cnJlbnQgcHJlZ25hbmN5IHBsdXMgbnVtYmVyIG9mIEFOQyBhdHRlbmRlZXMga25vd24gdG8gYmUgSElWLXBvc2l0aXZlIGJlZm9yZSB0aGVpciBmaXJzdCBBTkMgdmlzaXQKICogQ2FsY3VsYXRpb246IENPVU5UIG9mICZxdW90O0N1cnJlbnRseSBwcmVnbmFudCZxdW90OyBjbGllbnRzIHdpdGggJnF1b3Q7SElWIHRlc3QgcmVzdWx0JnF1b3Q7PSdISVYtcG9zaXRpdmUnIEFORCAmcXVvdDtISVYgdGVzdCBkYXRlJnF1b3Q7IG9uICZxdW90O0FOQyBjb250YWN0IGRhdGUmcXVvdDsgaXMgRUFSTElFU1Qgd2l0aGluIGN1cnJlbnQgcHJlZ25hbmN5IHwgUExVUyB8IENPVU5UIG9mIGNsaWVudHMgd2l0aCAmcXVvdDtISVYgc3RhdHVzJnF1b3Q7PSdISVYtcG9zaXRpdmUnIG9uIGZpcnN0ICZxdW90O0FOQyBjb250YWN0IGRhdGUmcXVvdDsKICovCgpkZWZpbmUgJnF1b3Q7TnVtZXJhdG9yJnF1b3Q7OgogIHRydWU8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTMiIGxvY2F0b3I9IjkxOjMtOTE6NiIgdmFsdWVUeXBlPSJ0OkJvb2xlYW4iIHZhbHVlPSJ0cnVlIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIxNiIgbG9jYXRvcj0iMTAxOjEtMTAyOjYiIG5hbWU9IkRlbm9taW5hdG9yIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMTYiPgogICAgICAgICAgICAgICA8YTpzIHI9IjE1Ij4vKioKICogRGVub21pbmF0b3IKICoKICogRGVmaW5pdGlvbjogTnVtYmVyIG9mIEFOQyBhdHRlbmRlZXMgcmVjZWl2aW5nIHRoZWlyIGZpcnN0IEhJViB0ZXN0IGR1cmluZyBwcmVnbmFuY3kgcGx1cyBudW1iZXIgb2YgQU5DIGF0dGVuZGVlcyBrbm93biB0byBiZSBISVYtcG9zaXRpdmUgYmVmb3JlIGZpcnN0IEFOQyB2aXNpdAogKiBDYWxjdWxhdGlvbjogQ09VTlQgb2YgJnF1b3Q7Q3VycmVudGx5IHByZWduYW50JnF1b3Q7IGNsaWVudHMgd2l0aCAmcXVvdDtISVYgdGVzdCBkYXRlJnF1b3Q7IG9uIGEgJnF1b3Q7QU5DIGNvbnRhY3QgZGF0ZSZxdW90OyBkdXJpbmcgY3VycmVudCBwcmVnbmFuY3kgfCBQTFVTIHwgQ09VTlQgb2YgY2xpZW50cyB3aXRoICZxdW90O0hJViBzdGF0dXMmcXVvdDs9J0hJVi1wb3NpdGl2ZScgb24gZmlyc3QgJnF1b3Q7QU5DIGNvbnRhY3QgZGF0ZSZxdW90OwogKi8KCmRlZmluZSAmcXVvdDtEZW5vbWluYXRvciZxdW90OzoKICB0cnVlPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjE1IiBsb2NhdG9yPSIxMDI6My0xMDI6NiIgdmFsdWVUeXBlPSJ0OkJvb2xlYW4iIHZhbHVlPSJ0cnVlIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICA8L2RlZj4KICAgPC9zdGF0ZW1lbnRzPgo8L2xpYnJhcnk+Cg=="/>
</content>
</Library>