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.22 Logic - JSON Representation

Draft as of 2024-11-07

Raw json | Download

{
  "resourceType" : "Library",
  "id" : "HIVIND22Logic",
  "meta" : {
    "profile" : [
      🔗 "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"🔗 ,
      "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"🔗 ,
      "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"🔗 ,
      "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"
    ]
  },
  "text" : {
    "status" : "generated",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: Library HIVIND22Logic</b></p><a name=\"HIVIND22Logic\"> </a><a name=\"hcHIVIND22Logic\"> </a><a name=\"HIVIND22Logic-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><tr><td>Depends On</td><td>Library HIE</td><td><a href=\"Library-HIVIndicatorElements.html\">HIVIndicatorElements</a></td></tr><tr><td>Depends On</td><td>Library HE</td><td><a href=\"Library-HIVElements.html\">HIVElements</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>Measure Population</td><td>out</td><td>0</td><td>1</td><td>boolean</td></tr><tr><td>Administrative Gender Stratifier</td><td>out</td><td>0</td><td>1</td><td>Coding</td></tr><tr><td>Age Stratifier</td><td>out</td><td>0</td><td>1</td><td>string</td></tr><tr><td>Geographic Region Stratifier</td><td>out</td><td>0</td><td>1</td><td>string</td></tr><tr><td>patientGroups Stratifier</td><td>out</td><td>0</td><td>*</td><td>string</td></tr><tr><td>HIV status of partner or contact</td><td>out</td><td>0</td><td>1</td><td>Coding</td></tr><tr><td>Stratification</td><td>out</td><td>0</td><td>1</td><td>string</td></tr></table><h2>Contents</h2><p><code>text/cql</code></p><pre><code class=\"language-sql\">/**\n * Library: HIV.IND.22 Logic\n * Ref No: HTS.5\n * Short Name: HTS partner services\n *\n * Definition: Number of people who were identified and tested using partner testing services and who received their results\n *\n * Numerator: For the general population: Number of elicited partners and other contacts* of people diagnosed with HIV who received HTS |  | Additional cascade data collected: | • Number of people diagnosed with HIV (index cases) offered partner services | • Number of people diagnosed with HIV (index cases) accepting partner services | •\u00a0Number of contacts/partners of people living with HIV whose information is elicited from people diagnosed with HIV (index cases) |  | For key populations: Number of elicited contacts1 of members of key populations who received HTS. | Additional cascade data collected: | •\u00a0Number of key population members offered social network-based/partner services | • Number of key population members accepting social network-based/partner services | • Number of contacts of key population members elicited\n * Numerator Calculation: COUNT of clients &quot;Referred through partner services&quot; that are a 'Partner or contact of an index case' AND &quot;Type of contact or partner for partner services&quot; IN 'Sexual partner', 'Drug-injecting partner' with &quot;HIV test date&quot; AND &quot;Date HIV test results returned&quot; in the reporting period\n * Numerator Exclusions: \n *\n * Denominator: 1\n * Denominator Calculation: 1\n * Denominator Exclusions: \n *\n * Disaggregations:\n * •\u00a0By index case gender (male, female, other**) \n *  •\u00a0Age (0–4, 5–9, 10–14, 15–19, 20–24, 25–49, 50+ years)*** \n *  • HIV status of partner or contact (already known positive, newly diagnosed positive, negative) \n *  •\u00a0Key populations (men who have sex with men, people living in prisons and other closed settings, people who inject drugs, sex workers, trans and gender diverse people)**** \n *  •\u00a0Cities and other administrative regions of epidemiologic importance\n *\n * Disaggregation Elements: *Gender [of index case] | Age | Partner HIV status (reported) | HIV status of contact | Key population member type\n *\n * Numerator and Denominator Elements:\n * Date HIV test results returned \n *  HIV test date \n *  Referred through partner services \n *  Type of contact or partner for partner services\n *\n * Reference: Consolidated guidelines on person-centred HIV strategic information: strengthening routine data for impact. Geneva: World Health Organization; 2022\n * \n * Data Concepts:\n * HIV.A.DE17: Age | Calculated age (number of years) of the client based on date of birth\n * HIV.B.DE5: Referred through partner services | Client reported coming to the facility after receiving a provider-assisted referral or patient referral from a contact or partner\n * HIV.B.DE6: Partner or contact of an index case | The client is a contact or partner of a person diagnosed with HIV (an index case)\n * HIV.B.DE7: Partner or contact of an HIV testing client (non-index case) | The client is a contact or partner identified through partner or social network services, but is not known to be a partner of an index-case\n * HIV.B.DE8: Type of contact or partner for partner services | Client's relationship to the person that referred the client for partner services or family services\n * HIV.B.DE9: Biological child | Client is the biological child of the person that referred the client for family services\n * HIV.B.DE10: Drug-injecting partner | Client is a drug-injecting partner of the person that referred the client for partner services\n * HIV.B.DE11: Sexual partner | Client is a sexual partner of the person that referred the client for partner services\n * HIV.B.DE12: Social contact | Client is a social contact of the person that referred the client for social-network services\n * HIV.B.DE33: Partner HIV status (reported) | The HIV status of the client's partner.\n * HIV.B.DE34: HIV-positive | Client's partner is HIV-positive\n * HIV.B.DE35: HIV-negative | Client's partner is HIV-negative\n * HIV.B.DE36: Unknown | Don't know HIV status - client does not know partner's HIV status\n * HIV.B.DE50: Key population member type* | The type of key population that the client is included in\n * HIV.B.DE51: Sex worker | Client is a sex worker\n * HIV.B.DE52: Men who have sex with men | Client is a man who has sex with men\n * HIV.B.DE53: Trans and gender-diverse people | Client identifies as trans and gender-diverse\n * HIV.B.DE54: People who inject drugs | Client is a person who injects drugs\n * HIV.B.DE55: People living in prisons and other closed settings | Client lives in a prison or another closed setting\n * HIV.B.DE60: Date HIV test results returned | Date HIV test result returned to client\n * HIV.B.DE110: HIV test date | Date of the HIV test\n * HIV.E.DE114: Key population member type* | The type of key population that the infant's mother is included in\n * HIV.E.DE115: Sex worker | Infant's mother is a sex worker\n * HIV.E.DE116: People who inject drugs | Infant's mother is a person who injects drugs\n * HIV.E.DE117: Trans and gender-diverse people | Infant's mother identifies as trans and gender-diverse\n * HIV.E.DE118: People living in prisons and other closed setting | Infant's mother is in a prison or closed setting\n * HIV.E.DE224: HIV test date | Date of the HIV test\n * HIV.PRV.DE11: HIV status of contact | The HIV status of the client's contact\n * HIV.PRV.DE12: HIV-positive | Client's contact is HIV-positive\n * HIV.PRV.DE13: HIV-negative | Client's contact is HIV-negative\n * HIV.PRV.DE14: Unknown | Client does not know contact's HIV status\n * HIV.SRV.DE1: HIV test date | Date of the HIV test\n *\n * Additional Context\n * - what it measures: This measures the coverage and impact of the testing cascade of services for partners and other contacts* of people living with HIV, including key population members.\n * - rationale: •\u00a0Contact testing, including among sexual partners, has been shown to increase the diagnosis of already-infected contacts and partners of newly identified HIV cases. | •\u00a0Among serodiscordant couples, partner notification and testing can be a critical step in preventing infection of the uninfected partner. | • Contact and/or partner notification and testing should be voluntary and provided with supportive services.\n * - method: Patient monitoring data (HIV index testing services register or logbook, HTS registers or reporting forms) or EMR\n * \n * Suggested Scoring Method: continuous-variable | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cv-measure-cqfm\n */\n\nlibrary HIVIND22Logic\n\n// Included Libraries\nusing FHIR version '4.0.1'\n\ninclude HIVCommon version '0.0.1' called HIC\ninclude FHIRHelpers version '4.0.1'\ninclude WHOCommon called WCom\ninclude HIVIndicatorElements called HIE\ninclude HIVElements called HE\n\n// Indicator Definition\nparameter &quot;Measurement Period&quot; Interval&lt;Date&gt; default Interval[@2023-01-01, @2023-01-30]\n\ncontext Patient\n/* Populations */\n\n/*\n *Initial Population\n */\n\ndefine &quot;Initial Population&quot;:\n  true\n\n/**\n * Measure Population\n *\n * Definition: For the general population: Number of elicited partners and other contacts* of people diagnosed with HIV who received HTS |  | Additional cascade data collected: | • Number of people diagnosed with HIV (index cases) offered partner services | • Number of people diagnosed with HIV (index cases) accepting partner services | •\u00a0Number of contacts/partners of people living with HIV whose information is elicited from people diagnosed with HIV (index cases) |  | For key populations: Number of elicited contacts1 of members of key populations who received HTS. | Additional cascade data collected: | •\u00a0Number of key population members offered social network-based/partner services | • Number of key population members accepting social network-based/partner services | • Number of contacts of key population members elicited\n * Calculation: For the general population: Number of elicited partners and other contacts* of people diagnosed with HIV who received HTS |  | Additional cascade data collected: | • Number of people diagnosed with HIV (index cases) offered partner services | • Number of people diagnosed with HIV (index cases) accepting partner services | •\u00a0Number of contacts/partners of people living with HIV whose information is elicited from people diagnosed with HIV (index cases) |  | For key populations: Number of elicited contacts1 of members of key populations who received HTS. | Additional cascade data collected: | •\u00a0Number of key population members offered social network-based/partner services | • Number of key population members accepting social network-based/partner services | • Number of contacts of key population members elicited\n */\n                                                       \ndefine &quot;Measure Population&quot;:\n    exists(HE.&quot;Partner or contact of an index case&quot; IC\n    with HE.&quot;Drug-injecting partner&quot; DIP\n      such that IC.hasMember.references(DIP)\n    with HIE.&quot;HIV test results returned in measurement period&quot; HIV\n      such that IC.hasMember.references(HIV)\n      and HIV.issued after start of &quot;Measurement Period&quot;\n      and HIV.issued before end of &quot;Measurement Period&quot;)\n    or \n    exists(HE.&quot;Partner or contact of an index case&quot; IC\n    with HE.&quot;Sexual partner&quot; SP\n      such that IC.hasMember.references(SP)\n      with HIE.&quot;HIV test results returned in measurement period&quot; HIV\n      such that IC.hasMember.references(HIV)\n      and HIV.issued after start of &quot;Measurement Period&quot;\n      and HIV.issued before end of &quot;Measurement Period&quot;)\n\n\n\n/**\n * Measure Observation\n * Definition: For the general population: Number of elicited partners and other contacts* of people diagnosed with HIV who received HTS |  | Additional cascade data collected: | • Number of people diagnosed with HIV (index cases) offered partner services | • Number of people diagnosed with HIV (index cases) accepting partner services | •\u00a0Number of contacts/partners of people living with HIV whose information is elicited from people diagnosed with HIV (index cases) |  | For key populations: Number of elicited contacts1 of members of key populations who received HTS. | Additional cascade data collected: | •\u00a0Number of key population members offered social network-based/partner services | • Number of key population members accepting social network-based/partner services | • Number of contacts of key population members elicited\n * Calculation: For the general population: Number of elicited partners and other contacts* of people diagnosed with HIV who received HTS |  | Additional cascade data collected: | • Number of people diagnosed with HIV (index cases) offered partner services | • Number of people diagnosed with HIV (index cases) accepting partner services | •\u00a0Number of contacts/partners of people living with HIV whose information is elicited from people diagnosed with HIV (index cases) |  | For key populations: Number of elicited contacts1 of members of key populations who received HTS. | Additional cascade data collected: | •\u00a0Number of key population members offered social network-based/partner services | • Number of key population members accepting social network-based/partner services | • Number of contacts of key population members elicited                                                      \n */     \n\ndefine function &quot;Measure Observation&quot;(Patient &quot;Patient&quot;):\n  1\n/* end Populations */\n\n/*\n * Disaggregators\n */\n\ndefine &quot;Administrative Gender Stratifier&quot;:\n\tHIE.&quot;By Administrative Gender Stratifier&quot;\n\ndefine &quot;Age Stratifier&quot;:\n\tHIE.&quot;By Age Stratifier 2&quot;\n\ndefine &quot;Geographic Region Stratifier&quot;:\n\tHIE.&quot;By Geographic Region Stratifier&quot;\n\ndefine &quot;patientGroups Stratifier&quot;:\n\tHIE.&quot;patientGroups&quot;\n\ndefine &quot;HIV status of partner or contact&quot;:\n  HIE.&quot;HIV status of partner or contact&quot;\n\ndefine &quot;Stratification&quot;:\n HIE.&quot;By Administrative Gender Stratifier&quot;.code \n + ':' + HIE.&quot;HIV status of partner or contact&quot;.code\n  + ':' + HIE.&quot;By Age Stratifier 2&quot;\n+ ':' + HIE.&quot;By Geographic Region Stratifier&quot;\n+ Combine(HIE.patientGroups, ':')\n</code></pre><p><code>Content not shown - (</code><code>application/elm+xml</code>, size = 51Kb )</p></div>"
  },
  "extension" : [
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability",
      "valueCode" : "computable"
    }
  ],
  "url" : "http://smart.who.int/hiv/Library/HIVIND22Logic",
  "version" : "0.3.0",
  "name" : "HIVIND22Logic",
  "title" : "HIV.IND.22 Logic",
  "status" : "draft",
  "experimental" : true,
  "type" : {
    "coding" : [
      {
        "system" : "http://terminology.hl7.org/CodeSystem/library-type",
        "code" : "logic-library"
      }
    ]
  },
  "date" : "2024-11-07T20:59:16+00:00",
  "publisher" : "WHO",
  "contact" : [
    {
      "name" : "WHO",
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://who.int"
        }
      ]
    }
  ],
  "description" : "Number of people who were identified and tested using partner testing services and who received their results",
  "relatedArtifact" : [
    {
      "type" : "depends-on",
      "display" : "Library HIC",
      "resource" : "http://smart.who.int/hiv/Library/HIVCommon|0.0.1"
    },
    {
      "type" : "depends-on",
      "display" : "Library WCom",
      "resource" : "http://smart.who.int/hiv/Library/WHOCommon"
    },
    {
      "type" : "depends-on",
      "display" : "Library HIE",
      "resource" : "http://smart.who.int/hiv/Library/HIVIndicatorElements"
    },
    {
      "type" : "depends-on",
      "display" : "Library HE",
      "resource" : "http://smart.who.int/hiv/Library/HIVElements"
    }
  ],
  "parameter" : [
    {
      "name" : "Measurement Period",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "type" : "Period"
    },
    {
      "name" : "Patient",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "Patient"
    },
    {
      "name" : "Initial Population",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "boolean"
    },
    {
      "name" : "Measure Population",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "boolean"
    },
    {
      "name" : "Administrative Gender Stratifier",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "Coding"
    },
    {
      "name" : "Age Stratifier",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "string"
    },
    {
      "name" : "Geographic Region Stratifier",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "string"
    },
    {
      "name" : "patientGroups Stratifier",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "string"
    },
    {
      "name" : "HIV status of partner or contact",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "Coding"
    },
    {
      "name" : "Stratification",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "string"
    }
  ],
  "content" : [
    {
      "contentType" : "text/cql",
      "data" : "LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuMjIgTG9naWMKICogUmVmIE5vOiBIVFMuNQogKiBTaG9ydCBOYW1lOiBIVFMgcGFydG5lciBzZXJ2aWNlcwogKgogKiBEZWZpbml0aW9uOiBOdW1iZXIgb2YgcGVvcGxlIHdobyB3ZXJlIGlkZW50aWZpZWQgYW5kIHRlc3RlZCB1c2luZyBwYXJ0bmVyIHRlc3Rpbmcgc2VydmljZXMgYW5kIHdobyByZWNlaXZlZCB0aGVpciByZXN1bHRzCiAqCiAqIE51bWVyYXRvcjogRm9yIHRoZSBnZW5lcmFsIHBvcHVsYXRpb246IE51bWJlciBvZiBlbGljaXRlZCBwYXJ0bmVycyBhbmQgb3RoZXIgY29udGFjdHMqIG9mIHBlb3BsZSBkaWFnbm9zZWQgd2l0aCBISVYgd2hvIHJlY2VpdmVkIEhUUyB8ICB8IEFkZGl0aW9uYWwgY2FzY2FkZSBkYXRhIGNvbGxlY3RlZDogfCDigKIgTnVtYmVyIG9mIHBlb3BsZSBkaWFnbm9zZWQgd2l0aCBISVYgKGluZGV4IGNhc2VzKSBvZmZlcmVkIHBhcnRuZXIgc2VydmljZXMgfCDigKIgTnVtYmVyIG9mIHBlb3BsZSBkaWFnbm9zZWQgd2l0aCBISVYgKGluZGV4IGNhc2VzKSBhY2NlcHRpbmcgcGFydG5lciBzZXJ2aWNlcyB8IOKAosKgTnVtYmVyIG9mIGNvbnRhY3RzL3BhcnRuZXJzIG9mIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYgd2hvc2UgaW5mb3JtYXRpb24gaXMgZWxpY2l0ZWQgZnJvbSBwZW9wbGUgZGlhZ25vc2VkIHdpdGggSElWIChpbmRleCBjYXNlcykgfCAgfCBGb3Iga2V5IHBvcHVsYXRpb25zOiBOdW1iZXIgb2YgZWxpY2l0ZWQgY29udGFjdHMxIG9mIG1lbWJlcnMgb2Yga2V5IHBvcHVsYXRpb25zIHdobyByZWNlaXZlZCBIVFMuIHwgQWRkaXRpb25hbCBjYXNjYWRlIGRhdGEgY29sbGVjdGVkOiB8IOKAosKgTnVtYmVyIG9mIGtleSBwb3B1bGF0aW9uIG1lbWJlcnMgb2ZmZXJlZCBzb2NpYWwgbmV0d29yay1iYXNlZC9wYXJ0bmVyIHNlcnZpY2VzIHwg4oCiIE51bWJlciBvZiBrZXkgcG9wdWxhdGlvbiBtZW1iZXJzIGFjY2VwdGluZyBzb2NpYWwgbmV0d29yay1iYXNlZC9wYXJ0bmVyIHNlcnZpY2VzIHwg4oCiIE51bWJlciBvZiBjb250YWN0cyBvZiBrZXkgcG9wdWxhdGlvbiBtZW1iZXJzIGVsaWNpdGVkCiAqIE51bWVyYXRvciBDYWxjdWxhdGlvbjogQ09VTlQgb2YgY2xpZW50cyAiUmVmZXJyZWQgdGhyb3VnaCBwYXJ0bmVyIHNlcnZpY2VzIiB0aGF0IGFyZSBhICdQYXJ0bmVyIG9yIGNvbnRhY3Qgb2YgYW4gaW5kZXggY2FzZScgQU5EICJUeXBlIG9mIGNvbnRhY3Qgb3IgcGFydG5lciBmb3IgcGFydG5lciBzZXJ2aWNlcyIgSU4gJ1NleHVhbCBwYXJ0bmVyJywgJ0RydWctaW5qZWN0aW5nIHBhcnRuZXInIHdpdGggIkhJViB0ZXN0IGRhdGUiIEFORCAiRGF0ZSBISVYgdGVzdCByZXN1bHRzIHJldHVybmVkIiBpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBOdW1lcmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERlbm9taW5hdG9yOiAxCiAqIERlbm9taW5hdG9yIENhbGN1bGF0aW9uOiAxCiAqIERlbm9taW5hdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEaXNhZ2dyZWdhdGlvbnM6CiAqIOKAosKgQnkgaW5kZXggY2FzZSBnZW5kZXIgKG1hbGUsIGZlbWFsZSwgb3RoZXIqKikgCiAqICDigKLCoEFnZSAoMOKAkzQsIDXigJM5LCAxMOKAkzE0LCAxNeKAkzE5LCAyMOKAkzI0LCAyNeKAkzQ5LCA1MCsgeWVhcnMpKioqIAogKiAg4oCiIEhJViBzdGF0dXMgb2YgcGFydG5lciBvciBjb250YWN0IChhbHJlYWR5IGtub3duIHBvc2l0aXZlLCBuZXdseSBkaWFnbm9zZWQgcG9zaXRpdmUsIG5lZ2F0aXZlKSAKICogIOKAosKgS2V5IHBvcHVsYXRpb25zIChtZW4gd2hvIGhhdmUgc2V4IHdpdGggbWVuLCBwZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5ncywgcGVvcGxlIHdobyBpbmplY3QgZHJ1Z3MsIHNleCB3b3JrZXJzLCB0cmFucyBhbmQgZ2VuZGVyIGRpdmVyc2UgcGVvcGxlKSoqKiogCiAqICDigKLCoENpdGllcyBhbmQgb3RoZXIgYWRtaW5pc3RyYXRpdmUgcmVnaW9ucyBvZiBlcGlkZW1pb2xvZ2ljIGltcG9ydGFuY2UKICoKICogRGlzYWdncmVnYXRpb24gRWxlbWVudHM6ICpHZW5kZXIgW29mIGluZGV4IGNhc2VdIHwgQWdlIHwgUGFydG5lciBISVYgc3RhdHVzIChyZXBvcnRlZCkgfCBISVYgc3RhdHVzIG9mIGNvbnRhY3QgfCBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgdHlwZQogKgogKiBOdW1lcmF0b3IgYW5kIERlbm9taW5hdG9yIEVsZW1lbnRzOgogKiBEYXRlIEhJViB0ZXN0IHJlc3VsdHMgcmV0dXJuZWQgCiAqICBISVYgdGVzdCBkYXRlIAogKiAgUmVmZXJyZWQgdGhyb3VnaCBwYXJ0bmVyIHNlcnZpY2VzIAogKiAgVHlwZSBvZiBjb250YWN0IG9yIHBhcnRuZXIgZm9yIHBhcnRuZXIgc2VydmljZXMKICoKICogUmVmZXJlbmNlOiBDb25zb2xpZGF0ZWQgZ3VpZGVsaW5lcyBvbiBwZXJzb24tY2VudHJlZCBISVYgc3RyYXRlZ2ljIGluZm9ybWF0aW9uOiBzdHJlbmd0aGVuaW5nIHJvdXRpbmUgZGF0YSBmb3IgaW1wYWN0LiBHZW5ldmE6IFdvcmxkIEhlYWx0aCBPcmdhbml6YXRpb247IDIwMjIKICogCiAqIERhdGEgQ29uY2VwdHM6CiAqIEhJVi5BLkRFMTc6IEFnZSB8IENhbGN1bGF0ZWQgYWdlIChudW1iZXIgb2YgeWVhcnMpIG9mIHRoZSBjbGllbnQgYmFzZWQgb24gZGF0ZSBvZiBiaXJ0aAogKiBISVYuQi5ERTU6IFJlZmVycmVkIHRocm91Z2ggcGFydG5lciBzZXJ2aWNlcyB8IENsaWVudCByZXBvcnRlZCBjb21pbmcgdG8gdGhlIGZhY2lsaXR5IGFmdGVyIHJlY2VpdmluZyBhIHByb3ZpZGVyLWFzc2lzdGVkIHJlZmVycmFsIG9yIHBhdGllbnQgcmVmZXJyYWwgZnJvbSBhIGNvbnRhY3Qgb3IgcGFydG5lcgogKiBISVYuQi5ERTY6IFBhcnRuZXIgb3IgY29udGFjdCBvZiBhbiBpbmRleCBjYXNlIHwgVGhlIGNsaWVudCBpcyBhIGNvbnRhY3Qgb3IgcGFydG5lciBvZiBhIHBlcnNvbiBkaWFnbm9zZWQgd2l0aCBISVYgKGFuIGluZGV4IGNhc2UpCiAqIEhJVi5CLkRFNzogUGFydG5lciBvciBjb250YWN0IG9mIGFuIEhJViB0ZXN0aW5nIGNsaWVudCAobm9uLWluZGV4IGNhc2UpIHwgVGhlIGNsaWVudCBpcyBhIGNvbnRhY3Qgb3IgcGFydG5lciBpZGVudGlmaWVkIHRocm91Z2ggcGFydG5lciBvciBzb2NpYWwgbmV0d29yayBzZXJ2aWNlcywgYnV0IGlzIG5vdCBrbm93biB0byBiZSBhIHBhcnRuZXIgb2YgYW4gaW5kZXgtY2FzZQogKiBISVYuQi5ERTg6IFR5cGUgb2YgY29udGFjdCBvciBwYXJ0bmVyIGZvciBwYXJ0bmVyIHNlcnZpY2VzIHwgQ2xpZW50J3MgcmVsYXRpb25zaGlwIHRvIHRoZSBwZXJzb24gdGhhdCByZWZlcnJlZCB0aGUgY2xpZW50IGZvciBwYXJ0bmVyIHNlcnZpY2VzIG9yIGZhbWlseSBzZXJ2aWNlcwogKiBISVYuQi5ERTk6IEJpb2xvZ2ljYWwgY2hpbGQgfCBDbGllbnQgaXMgdGhlIGJpb2xvZ2ljYWwgY2hpbGQgb2YgdGhlIHBlcnNvbiB0aGF0IHJlZmVycmVkIHRoZSBjbGllbnQgZm9yIGZhbWlseSBzZXJ2aWNlcwogKiBISVYuQi5ERTEwOiBEcnVnLWluamVjdGluZyBwYXJ0bmVyIHwgQ2xpZW50IGlzIGEgZHJ1Zy1pbmplY3RpbmcgcGFydG5lciBvZiB0aGUgcGVyc29uIHRoYXQgcmVmZXJyZWQgdGhlIGNsaWVudCBmb3IgcGFydG5lciBzZXJ2aWNlcwogKiBISVYuQi5ERTExOiBTZXh1YWwgcGFydG5lciB8IENsaWVudCBpcyBhIHNleHVhbCBwYXJ0bmVyIG9mIHRoZSBwZXJzb24gdGhhdCByZWZlcnJlZCB0aGUgY2xpZW50IGZvciBwYXJ0bmVyIHNlcnZpY2VzCiAqIEhJVi5CLkRFMTI6IFNvY2lhbCBjb250YWN0IHwgQ2xpZW50IGlzIGEgc29jaWFsIGNvbnRhY3Qgb2YgdGhlIHBlcnNvbiB0aGF0IHJlZmVycmVkIHRoZSBjbGllbnQgZm9yIHNvY2lhbC1uZXR3b3JrIHNlcnZpY2VzCiAqIEhJVi5CLkRFMzM6IFBhcnRuZXIgSElWIHN0YXR1cyAocmVwb3J0ZWQpIHwgVGhlIEhJViBzdGF0dXMgb2YgdGhlIGNsaWVudCdzIHBhcnRuZXIuCiAqIEhJVi5CLkRFMzQ6IEhJVi1wb3NpdGl2ZSB8IENsaWVudCdzIHBhcnRuZXIgaXMgSElWLXBvc2l0aXZlCiAqIEhJVi5CLkRFMzU6IEhJVi1uZWdhdGl2ZSB8IENsaWVudCdzIHBhcnRuZXIgaXMgSElWLW5lZ2F0aXZlCiAqIEhJVi5CLkRFMzY6IFVua25vd24gfCBEb24ndCBrbm93IEhJViBzdGF0dXMgLSBjbGllbnQgZG9lcyBub3Qga25vdyBwYXJ0bmVyJ3MgSElWIHN0YXR1cwogKiBISVYuQi5ERTUwOiBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgdHlwZSogfCBUaGUgdHlwZSBvZiBrZXkgcG9wdWxhdGlvbiB0aGF0IHRoZSBjbGllbnQgaXMgaW5jbHVkZWQgaW4KICogSElWLkIuREU1MTogU2V4IHdvcmtlciB8IENsaWVudCBpcyBhIHNleCB3b3JrZXIKICogSElWLkIuREU1MjogTWVuIHdobyBoYXZlIHNleCB3aXRoIG1lbiB8IENsaWVudCBpcyBhIG1hbiB3aG8gaGFzIHNleCB3aXRoIG1lbgogKiBISVYuQi5ERTUzOiBUcmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UgcGVvcGxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgdHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlCiAqIEhJVi5CLkRFNTQ6IFBlb3BsZSB3aG8gaW5qZWN0IGRydWdzIHwgQ2xpZW50IGlzIGEgcGVyc29uIHdobyBpbmplY3RzIGRydWdzCiAqIEhJVi5CLkRFNTU6IFBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmdzIHwgQ2xpZW50IGxpdmVzIGluIGEgcHJpc29uIG9yIGFub3RoZXIgY2xvc2VkIHNldHRpbmcKICogSElWLkIuREU2MDogRGF0ZSBISVYgdGVzdCByZXN1bHRzIHJldHVybmVkIHwgRGF0ZSBISVYgdGVzdCByZXN1bHQgcmV0dXJuZWQgdG8gY2xpZW50CiAqIEhJVi5CLkRFMTEwOiBISVYgdGVzdCBkYXRlIHwgRGF0ZSBvZiB0aGUgSElWIHRlc3QKICogSElWLkUuREUxMTQ6IEtleSBwb3B1bGF0aW9uIG1lbWJlciB0eXBlKiB8IFRoZSB0eXBlIG9mIGtleSBwb3B1bGF0aW9uIHRoYXQgdGhlIGluZmFudCdzIG1vdGhlciBpcyBpbmNsdWRlZCBpbgogKiBISVYuRS5ERTExNTogU2V4IHdvcmtlciB8IEluZmFudCdzIG1vdGhlciBpcyBhIHNleCB3b3JrZXIKICogSElWLkUuREUxMTY6IFBlb3BsZSB3aG8gaW5qZWN0IGRydWdzIHwgSW5mYW50J3MgbW90aGVyIGlzIGEgcGVyc29uIHdobyBpbmplY3RzIGRydWdzCiAqIEhJVi5FLkRFMTE3OiBUcmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UgcGVvcGxlIHwgSW5mYW50J3MgbW90aGVyIGlkZW50aWZpZXMgYXMgdHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlCiAqIEhJVi5FLkRFMTE4OiBQZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5nIHwgSW5mYW50J3MgbW90aGVyIGlzIGluIGEgcHJpc29uIG9yIGNsb3NlZCBzZXR0aW5nCiAqIEhJVi5FLkRFMjI0OiBISVYgdGVzdCBkYXRlIHwgRGF0ZSBvZiB0aGUgSElWIHRlc3QKICogSElWLlBSVi5ERTExOiBISVYgc3RhdHVzIG9mIGNvbnRhY3QgfCBUaGUgSElWIHN0YXR1cyBvZiB0aGUgY2xpZW50J3MgY29udGFjdAogKiBISVYuUFJWLkRFMTI6IEhJVi1wb3NpdGl2ZSB8IENsaWVudCdzIGNvbnRhY3QgaXMgSElWLXBvc2l0aXZlCiAqIEhJVi5QUlYuREUxMzogSElWLW5lZ2F0aXZlIHwgQ2xpZW50J3MgY29udGFjdCBpcyBISVYtbmVnYXRpdmUKICogSElWLlBSVi5ERTE0OiBVbmtub3duIHwgQ2xpZW50IGRvZXMgbm90IGtub3cgY29udGFjdCdzIEhJViBzdGF0dXMKICogSElWLlNSVi5ERTE6IEhJViB0ZXN0IGRhdGUgfCBEYXRlIG9mIHRoZSBISVYgdGVzdAogKgogKiBBZGRpdGlvbmFsIENvbnRleHQKICogLSB3aGF0IGl0IG1lYXN1cmVzOiBUaGlzIG1lYXN1cmVzIHRoZSBjb3ZlcmFnZSBhbmQgaW1wYWN0IG9mIHRoZSB0ZXN0aW5nIGNhc2NhZGUgb2Ygc2VydmljZXMgZm9yIHBhcnRuZXJzIGFuZCBvdGhlciBjb250YWN0cyogb2YgcGVvcGxlIGxpdmluZyB3aXRoIEhJViwgaW5jbHVkaW5nIGtleSBwb3B1bGF0aW9uIG1lbWJlcnMuCiAqIC0gcmF0aW9uYWxlOiDigKLCoENvbnRhY3QgdGVzdGluZywgaW5jbHVkaW5nIGFtb25nIHNleHVhbCBwYXJ0bmVycywgaGFzIGJlZW4gc2hvd24gdG8gaW5jcmVhc2UgdGhlIGRpYWdub3NpcyBvZiBhbHJlYWR5LWluZmVjdGVkIGNvbnRhY3RzIGFuZCBwYXJ0bmVycyBvZiBuZXdseSBpZGVudGlmaWVkIEhJViBjYXNlcy4gfCDigKLCoEFtb25nIHNlcm9kaXNjb3JkYW50IGNvdXBsZXMsIHBhcnRuZXIgbm90aWZpY2F0aW9uIGFuZCB0ZXN0aW5nIGNhbiBiZSBhIGNyaXRpY2FsIHN0ZXAgaW4gcHJldmVudGluZyBpbmZlY3Rpb24gb2YgdGhlIHVuaW5mZWN0ZWQgcGFydG5lci4gfCDigKIgQ29udGFjdCBhbmQvb3IgcGFydG5lciBub3RpZmljYXRpb24gYW5kIHRlc3Rpbmcgc2hvdWxkIGJlIHZvbHVudGFyeSBhbmQgcHJvdmlkZWQgd2l0aCBzdXBwb3J0aXZlIHNlcnZpY2VzLgogKiAtIG1ldGhvZDogUGF0aWVudCBtb25pdG9yaW5nIGRhdGEgKEhJViBpbmRleCB0ZXN0aW5nIHNlcnZpY2VzIHJlZ2lzdGVyIG9yIGxvZ2Jvb2ssIEhUUyByZWdpc3RlcnMgb3IgcmVwb3J0aW5nIGZvcm1zKSBvciBFTVIKICogCiAqIFN1Z2dlc3RlZCBTY29yaW5nIE1ldGhvZDogY29udGludW91cy12YXJpYWJsZSB8IGh0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY3FmbWVhc3VyZXMvU3RydWN0dXJlRGVmaW5pdGlvbi9jdi1tZWFzdXJlLWNxZm0KICovCgpsaWJyYXJ5IEhJVklORDIyTG9naWMKCi8vIEluY2x1ZGVkIExpYnJhcmllcwp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBISVZDb21tb24gdmVyc2lvbiAnMC4wLjEnIGNhbGxlZCBISUMKaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScKaW5jbHVkZSBXSE9Db21tb24gY2FsbGVkIFdDb20KaW5jbHVkZSBISVZJbmRpY2F0b3JFbGVtZW50cyBjYWxsZWQgSElFCmluY2x1ZGUgSElWRWxlbWVudHMgY2FsbGVkIEhFCgovLyBJbmRpY2F0b3IgRGVmaW5pdGlvbgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZT4gZGVmYXVsdCBJbnRlcnZhbFtAMjAyMy0wMS0wMSwgQDIwMjMtMDEtMzBdCgpjb250ZXh0IFBhdGllbnQKLyogUG9wdWxhdGlvbnMgKi8KCi8qCiAqSW5pdGlhbCBQb3B1bGF0aW9uCiAqLwoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogIHRydWUKCi8qKgogKiBNZWFzdXJlIFBvcHVsYXRpb24KICoKICogRGVmaW5pdGlvbjogRm9yIHRoZSBnZW5lcmFsIHBvcHVsYXRpb246IE51bWJlciBvZiBlbGljaXRlZCBwYXJ0bmVycyBhbmQgb3RoZXIgY29udGFjdHMqIG9mIHBlb3BsZSBkaWFnbm9zZWQgd2l0aCBISVYgd2hvIHJlY2VpdmVkIEhUUyB8ICB8IEFkZGl0aW9uYWwgY2FzY2FkZSBkYXRhIGNvbGxlY3RlZDogfCDigKIgTnVtYmVyIG9mIHBlb3BsZSBkaWFnbm9zZWQgd2l0aCBISVYgKGluZGV4IGNhc2VzKSBvZmZlcmVkIHBhcnRuZXIgc2VydmljZXMgfCDigKIgTnVtYmVyIG9mIHBlb3BsZSBkaWFnbm9zZWQgd2l0aCBISVYgKGluZGV4IGNhc2VzKSBhY2NlcHRpbmcgcGFydG5lciBzZXJ2aWNlcyB8IOKAosKgTnVtYmVyIG9mIGNvbnRhY3RzL3BhcnRuZXJzIG9mIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYgd2hvc2UgaW5mb3JtYXRpb24gaXMgZWxpY2l0ZWQgZnJvbSBwZW9wbGUgZGlhZ25vc2VkIHdpdGggSElWIChpbmRleCBjYXNlcykgfCAgfCBGb3Iga2V5IHBvcHVsYXRpb25zOiBOdW1iZXIgb2YgZWxpY2l0ZWQgY29udGFjdHMxIG9mIG1lbWJlcnMgb2Yga2V5IHBvcHVsYXRpb25zIHdobyByZWNlaXZlZCBIVFMuIHwgQWRkaXRpb25hbCBjYXNjYWRlIGRhdGEgY29sbGVjdGVkOiB8IOKAosKgTnVtYmVyIG9mIGtleSBwb3B1bGF0aW9uIG1lbWJlcnMgb2ZmZXJlZCBzb2NpYWwgbmV0d29yay1iYXNlZC9wYXJ0bmVyIHNlcnZpY2VzIHwg4oCiIE51bWJlciBvZiBrZXkgcG9wdWxhdGlvbiBtZW1iZXJzIGFjY2VwdGluZyBzb2NpYWwgbmV0d29yay1iYXNlZC9wYXJ0bmVyIHNlcnZpY2VzIHwg4oCiIE51bWJlciBvZiBjb250YWN0cyBvZiBrZXkgcG9wdWxhdGlvbiBtZW1iZXJzIGVsaWNpdGVkCiAqIENhbGN1bGF0aW9uOiBGb3IgdGhlIGdlbmVyYWwgcG9wdWxhdGlvbjogTnVtYmVyIG9mIGVsaWNpdGVkIHBhcnRuZXJzIGFuZCBvdGhlciBjb250YWN0cyogb2YgcGVvcGxlIGRpYWdub3NlZCB3aXRoIEhJViB3aG8gcmVjZWl2ZWQgSFRTIHwgIHwgQWRkaXRpb25hbCBjYXNjYWRlIGRhdGEgY29sbGVjdGVkOiB8IOKAoiBOdW1iZXIgb2YgcGVvcGxlIGRpYWdub3NlZCB3aXRoIEhJViAoaW5kZXggY2FzZXMpIG9mZmVyZWQgcGFydG5lciBzZXJ2aWNlcyB8IOKAoiBOdW1iZXIgb2YgcGVvcGxlIGRpYWdub3NlZCB3aXRoIEhJViAoaW5kZXggY2FzZXMpIGFjY2VwdGluZyBwYXJ0bmVyIHNlcnZpY2VzIHwg4oCiwqBOdW1iZXIgb2YgY29udGFjdHMvcGFydG5lcnMgb2YgcGVvcGxlIGxpdmluZyB3aXRoIEhJViB3aG9zZSBpbmZvcm1hdGlvbiBpcyBlbGljaXRlZCBmcm9tIHBlb3BsZSBkaWFnbm9zZWQgd2l0aCBISVYgKGluZGV4IGNhc2VzKSB8ICB8IEZvciBrZXkgcG9wdWxhdGlvbnM6IE51bWJlciBvZiBlbGljaXRlZCBjb250YWN0czEgb2YgbWVtYmVycyBvZiBrZXkgcG9wdWxhdGlvbnMgd2hvIHJlY2VpdmVkIEhUUy4gfCBBZGRpdGlvbmFsIGNhc2NhZGUgZGF0YSBjb2xsZWN0ZWQ6IHwg4oCiwqBOdW1iZXIgb2Yga2V5IHBvcHVsYXRpb24gbWVtYmVycyBvZmZlcmVkIHNvY2lhbCBuZXR3b3JrLWJhc2VkL3BhcnRuZXIgc2VydmljZXMgfCDigKIgTnVtYmVyIG9mIGtleSBwb3B1bGF0aW9uIG1lbWJlcnMgYWNjZXB0aW5nIHNvY2lhbCBuZXR3b3JrLWJhc2VkL3BhcnRuZXIgc2VydmljZXMgfCDigKIgTnVtYmVyIG9mIGNvbnRhY3RzIG9mIGtleSBwb3B1bGF0aW9uIG1lbWJlcnMgZWxpY2l0ZWQKICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKZGVmaW5lICJNZWFzdXJlIFBvcHVsYXRpb24iOgogICAgZXhpc3RzKEhFLiJQYXJ0bmVyIG9yIGNvbnRhY3Qgb2YgYW4gaW5kZXggY2FzZSIgSUMKICAgIHdpdGggSEUuIkRydWctaW5qZWN0aW5nIHBhcnRuZXIiIERJUAogICAgICBzdWNoIHRoYXQgSUMuaGFzTWVtYmVyLnJlZmVyZW5jZXMoRElQKQogICAgd2l0aCBISUUuIkhJViB0ZXN0IHJlc3VsdHMgcmV0dXJuZWQgaW4gbWVhc3VyZW1lbnQgcGVyaW9kIiBISVYKICAgICAgc3VjaCB0aGF0IElDLmhhc01lbWJlci5yZWZlcmVuY2VzKEhJVikKICAgICAgYW5kIEhJVi5pc3N1ZWQgYWZ0ZXIgc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgYW5kIEhJVi5pc3N1ZWQgYmVmb3JlIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIikKICAgIG9yIAogICAgZXhpc3RzKEhFLiJQYXJ0bmVyIG9yIGNvbnRhY3Qgb2YgYW4gaW5kZXggY2FzZSIgSUMKICAgIHdpdGggSEUuIlNleHVhbCBwYXJ0bmVyIiBTUAogICAgICBzdWNoIHRoYXQgSUMuaGFzTWVtYmVyLnJlZmVyZW5jZXMoU1ApCiAgICAgIHdpdGggSElFLiJISVYgdGVzdCByZXN1bHRzIHJldHVybmVkIGluIG1lYXN1cmVtZW50IHBlcmlvZCIgSElWCiAgICAgIHN1Y2ggdGhhdCBJQy5oYXNNZW1iZXIucmVmZXJlbmNlcyhISVYpCiAgICAgIGFuZCBISVYuaXNzdWVkIGFmdGVyIHN0YXJ0IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgIGFuZCBISVYuaXNzdWVkIGJlZm9yZSBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIpCgoKCi8qKgogKiBNZWFzdXJlIE9ic2VydmF0aW9uCiAqIERlZmluaXRpb246IEZvciB0aGUgZ2VuZXJhbCBwb3B1bGF0aW9uOiBOdW1iZXIgb2YgZWxpY2l0ZWQgcGFydG5lcnMgYW5kIG90aGVyIGNvbnRhY3RzKiBvZiBwZW9wbGUgZGlhZ25vc2VkIHdpdGggSElWIHdobyByZWNlaXZlZCBIVFMgfCAgfCBBZGRpdGlvbmFsIGNhc2NhZGUgZGF0YSBjb2xsZWN0ZWQ6IHwg4oCiIE51bWJlciBvZiBwZW9wbGUgZGlhZ25vc2VkIHdpdGggSElWIChpbmRleCBjYXNlcykgb2ZmZXJlZCBwYXJ0bmVyIHNlcnZpY2VzIHwg4oCiIE51bWJlciBvZiBwZW9wbGUgZGlhZ25vc2VkIHdpdGggSElWIChpbmRleCBjYXNlcykgYWNjZXB0aW5nIHBhcnRuZXIgc2VydmljZXMgfCDigKLCoE51bWJlciBvZiBjb250YWN0cy9wYXJ0bmVycyBvZiBwZW9wbGUgbGl2aW5nIHdpdGggSElWIHdob3NlIGluZm9ybWF0aW9uIGlzIGVsaWNpdGVkIGZyb20gcGVvcGxlIGRpYWdub3NlZCB3aXRoIEhJViAoaW5kZXggY2FzZXMpIHwgIHwgRm9yIGtleSBwb3B1bGF0aW9uczogTnVtYmVyIG9mIGVsaWNpdGVkIGNvbnRhY3RzMSBvZiBtZW1iZXJzIG9mIGtleSBwb3B1bGF0aW9ucyB3aG8gcmVjZWl2ZWQgSFRTLiB8IEFkZGl0aW9uYWwgY2FzY2FkZSBkYXRhIGNvbGxlY3RlZDogfCDigKLCoE51bWJlciBvZiBrZXkgcG9wdWxhdGlvbiBtZW1iZXJzIG9mZmVyZWQgc29jaWFsIG5ldHdvcmstYmFzZWQvcGFydG5lciBzZXJ2aWNlcyB8IOKAoiBOdW1iZXIgb2Yga2V5IHBvcHVsYXRpb24gbWVtYmVycyBhY2NlcHRpbmcgc29jaWFsIG5ldHdvcmstYmFzZWQvcGFydG5lciBzZXJ2aWNlcyB8IOKAoiBOdW1iZXIgb2YgY29udGFjdHMgb2Yga2V5IHBvcHVsYXRpb24gbWVtYmVycyBlbGljaXRlZAogKiBDYWxjdWxhdGlvbjogRm9yIHRoZSBnZW5lcmFsIHBvcHVsYXRpb246IE51bWJlciBvZiBlbGljaXRlZCBwYXJ0bmVycyBhbmQgb3RoZXIgY29udGFjdHMqIG9mIHBlb3BsZSBkaWFnbm9zZWQgd2l0aCBISVYgd2hvIHJlY2VpdmVkIEhUUyB8ICB8IEFkZGl0aW9uYWwgY2FzY2FkZSBkYXRhIGNvbGxlY3RlZDogfCDigKIgTnVtYmVyIG9mIHBlb3BsZSBkaWFnbm9zZWQgd2l0aCBISVYgKGluZGV4IGNhc2VzKSBvZmZlcmVkIHBhcnRuZXIgc2VydmljZXMgfCDigKIgTnVtYmVyIG9mIHBlb3BsZSBkaWFnbm9zZWQgd2l0aCBISVYgKGluZGV4IGNhc2VzKSBhY2NlcHRpbmcgcGFydG5lciBzZXJ2aWNlcyB8IOKAosKgTnVtYmVyIG9mIGNvbnRhY3RzL3BhcnRuZXJzIG9mIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYgd2hvc2UgaW5mb3JtYXRpb24gaXMgZWxpY2l0ZWQgZnJvbSBwZW9wbGUgZGlhZ25vc2VkIHdpdGggSElWIChpbmRleCBjYXNlcykgfCAgfCBGb3Iga2V5IHBvcHVsYXRpb25zOiBOdW1iZXIgb2YgZWxpY2l0ZWQgY29udGFjdHMxIG9mIG1lbWJlcnMgb2Yga2V5IHBvcHVsYXRpb25zIHdobyByZWNlaXZlZCBIVFMuIHwgQWRkaXRpb25hbCBjYXNjYWRlIGRhdGEgY29sbGVjdGVkOiB8IOKAosKgTnVtYmVyIG9mIGtleSBwb3B1bGF0aW9uIG1lbWJlcnMgb2ZmZXJlZCBzb2NpYWwgbmV0d29yay1iYXNlZC9wYXJ0bmVyIHNlcnZpY2VzIHwg4oCiIE51bWJlciBvZiBrZXkgcG9wdWxhdGlvbiBtZW1iZXJzIGFjY2VwdGluZyBzb2NpYWwgbmV0d29yay1iYXNlZC9wYXJ0bmVyIHNlcnZpY2VzIHwg4oCiIE51bWJlciBvZiBjb250YWN0cyBvZiBrZXkgcG9wdWxhdGlvbiBtZW1iZXJzIGVsaWNpdGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAqLyAgICAgCgpkZWZpbmUgZnVuY3Rpb24gIk1lYXN1cmUgT2JzZXJ2YXRpb24iKFBhdGllbnQgIlBhdGllbnQiKToKICAxCi8qIGVuZCBQb3B1bGF0aW9ucyAqLwoKLyoKICogRGlzYWdncmVnYXRvcnMKICovCgpkZWZpbmUgIkFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIjoKCUhJRS4iQnkgQWRtaW5pc3RyYXRpdmUgR2VuZGVyIFN0cmF0aWZpZXIiCgpkZWZpbmUgIkFnZSBTdHJhdGlmaWVyIjoKCUhJRS4iQnkgQWdlIFN0cmF0aWZpZXIgMiIKCmRlZmluZSAiR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciI6CglISUUuIkJ5IEdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXIiCgpkZWZpbmUgInBhdGllbnRHcm91cHMgU3RyYXRpZmllciI6CglISUUuInBhdGllbnRHcm91cHMiCgpkZWZpbmUgIkhJViBzdGF0dXMgb2YgcGFydG5lciBvciBjb250YWN0IjoKICBISUUuIkhJViBzdGF0dXMgb2YgcGFydG5lciBvciBjb250YWN0IgoKZGVmaW5lICJTdHJhdGlmaWNhdGlvbiI6CiBISUUuIkJ5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIi5jb2RlIAogKyAnOicgKyBISUUuIkhJViBzdGF0dXMgb2YgcGFydG5lciBvciBjb250YWN0Ii5jb2RlCiAgKyAnOicgKyBISUUuIkJ5IEFnZSBTdHJhdGlmaWVyIDIiCisgJzonICsgSElFLiJCeSBHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIgorIENvbWJpbmUoSElFLnBhdGllbnRHcm91cHMsICc6JykK"
    },
    {
      "contentType" : "application/elm+xml",
      "data" : "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGxpYnJhcnkgeG1sbnM9InVybjpobDctb3JnOmVsbTpyMSIgeG1sbnM6dD0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczpmaGlyPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB4bWxuczpxZG00Mz0idXJuOmhlYWx0aGl0LWdvdjpxZG06djRfMyIgeG1sbnM6cWRtNTM9InVybjpoZWFsdGhpdC1nb3Y6cWRtOnY1XzMiIHhtbG5zOmE9InVybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMSI+CiAgIDxhbm5vdGF0aW9uIHRyYW5zbGF0b3JPcHRpb25zPSJFbmFibGVBbm5vdGF0aW9ucyxFbmFibGVMb2NhdG9ycyxEaXNhYmxlTGlzdERlbW90aW9uLERpc2FibGVMaXN0UHJvbW90aW9uIiBzaWduYXR1cmVMZXZlbD0iTm9uZSIgeHNpOnR5cGU9ImE6Q3FsVG9FbG1JbmZvIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBGSElSSGVscGVycy5Ub0ludGVydmFsIGhhcyBtdWx0aXBsZSBvdmVybG9hZHMgYW5kIGR1ZSB0byB0aGUgU2lnbmF0dXJlTGV2ZWwgc2V0dGluZyAoTm9uZSksIHRoZSBvdmVybG9hZCBzaWduYXR1cmUgaXMgbm90IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbWJpZ3VvdXMgZnVuY3Rpb24gcmVzb2x1dGlvbiBhdCBydW50aW1lLCBjb25zaWRlciBzZXR0aW5nIHRoZSBTaWduYXR1cmVMZXZlbCB0byBPdmVybG9hZHMgb3IgQWxsIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRwdXQgaW5jbHVkZXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBzdXBwb3J0IGNvcnJlY3Qgb3ZlcmxvYWQgc2VsZWN0aW9uIGF0IHJ1bnRpbWUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBGSElSSGVscGVycy5Ub0ludGVydmFsIGhhcyBtdWx0aXBsZSBvdmVybG9hZHMgYW5kIGR1ZSB0byB0aGUgU2lnbmF0dXJlTGV2ZWwgc2V0dGluZyAoTm9uZSksIHRoZSBvdmVybG9hZCBzaWduYXR1cmUgaXMgbm90IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbWJpZ3VvdXMgZnVuY3Rpb24gcmVzb2x1dGlvbiBhdCBydW50aW1lLCBjb25zaWRlciBzZXR0aW5nIHRoZSBTaWduYXR1cmVMZXZlbCB0byBPdmVybG9hZHMgb3IgQWxsIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRwdXQgaW5jbHVkZXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBzdXBwb3J0IGNvcnJlY3Qgb3ZlcmxvYWQgc2VsZWN0aW9uIGF0IHJ1bnRpbWUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBXSE9Db21tb24ucmVmZXJlbmNlcyBoYXMgbXVsdGlwbGUgb3ZlcmxvYWRzIGFuZCBkdWUgdG8gdGhlIFNpZ25hdHVyZUxldmVsIHNldHRpbmcgKE5vbmUpLCB0aGUgb3ZlcmxvYWQgc2lnbmF0dXJlIGlzIG5vdCBiZWluZyBpbmNsdWRlZCBpbiB0aGUgb3V0cHV0LiBUaGlzIG1heSByZXN1bHQgaW4gYW1iaWd1b3VzIGZ1bmN0aW9uIHJlc29sdXRpb24gYXQgcnVudGltZSwgY29uc2lkZXIgc2V0dGluZyB0aGUgU2lnbmF0dXJlTGV2ZWwgdG8gT3ZlcmxvYWRzIG9yIEFsbCB0byBlbnN1cmUgdGhhdCB0aGUgb3V0cHV0IGluY2x1ZGVzIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gc3VwcG9ydCBjb3JyZWN0IG92ZXJsb2FkIHNlbGVjdGlvbiBhdCBydW50aW1lLiIgZXJyb3JUeXBlPSJzZW1hbnRpYyIgZXJyb3JTZXZlcml0eT0id2FybmluZyIgeHNpOnR5cGU9ImE6Q3FsVG9FbG1FcnJvciIvPgogICA8YW5ub3RhdGlvbiBtZXNzYWdlPSJUaGUgZnVuY3Rpb24gV0hPQ29tbW9uLnJlZmVyZW5jZXMgaGFzIG11bHRpcGxlIG92ZXJsb2FkcyBhbmQgZHVlIHRvIHRoZSBTaWduYXR1cmVMZXZlbCBzZXR0aW5nIChOb25lKSwgdGhlIG92ZXJsb2FkIHNpZ25hdHVyZSBpcyBub3QgYmVpbmcgaW5jbHVkZWQgaW4gdGhlIG91dHB1dC4gVGhpcyBtYXkgcmVzdWx0IGluIGFtYmlndW91cyBmdW5jdGlvbiByZXNvbHV0aW9uIGF0IHJ1bnRpbWUsIGNvbnNpZGVyIHNldHRpbmcgdGhlIFNpZ25hdHVyZUxldmVsIHRvIE92ZXJsb2FkcyBvciBBbGwgdG8gZW5zdXJlIHRoYXQgdGhlIG91dHB1dCBpbmNsdWRlcyBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvIHN1cHBvcnQgY29ycmVjdCBvdmVybG9hZCBzZWxlY3Rpb24gYXQgcnVudGltZS4iIGVycm9yVHlwZT0ic2VtYW50aWMiIGVycm9yU2V2ZXJpdHk9Indhcm5pbmciIHhzaTp0eXBlPSJhOkNxbFRvRWxtRXJyb3IiLz4KICAgPGFubm90YXRpb24gbWVzc2FnZT0iVGhlIGZ1bmN0aW9uIEZISVJIZWxwZXJzLlRvRGF0ZVRpbWUgaGFzIG11bHRpcGxlIG92ZXJsb2FkcyBhbmQgZHVlIHRvIHRoZSBTaWduYXR1cmVMZXZlbCBzZXR0aW5nIChOb25lKSwgdGhlIG92ZXJsb2FkIHNpZ25hdHVyZSBpcyBub3QgYmVpbmcgaW5jbHVkZWQgaW4gdGhlIG91dHB1dC4gVGhpcyBtYXkgcmVzdWx0IGluIGFtYmlndW91cyBmdW5jdGlvbiByZXNvbHV0aW9uIGF0IHJ1bnRpbWUsIGNvbnNpZGVyIHNldHRpbmcgdGhlIFNpZ25hdHVyZUxldmVsIHRvIE92ZXJsb2FkcyBvciBBbGwgdG8gZW5zdXJlIHRoYXQgdGhlIG91dHB1dCBpbmNsdWRlcyBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvIHN1cHBvcnQgY29ycmVjdCBvdmVybG9hZCBzZWxlY3Rpb24gYXQgcnVudGltZS4iIGVycm9yVHlwZT0ic2VtYW50aWMiIGVycm9yU2V2ZXJpdHk9Indhcm5pbmciIHhzaTp0eXBlPSJhOkNxbFRvRWxtRXJyb3IiLz4KICAgPGFubm90YXRpb24gbWVzc2FnZT0iVGhlIGZ1bmN0aW9uIEZISVJIZWxwZXJzLlRvRGF0ZVRpbWUgaGFzIG11bHRpcGxlIG92ZXJsb2FkcyBhbmQgZHVlIHRvIHRoZSBTaWduYXR1cmVMZXZlbCBzZXR0aW5nIChOb25lKSwgdGhlIG92ZXJsb2FkIHNpZ25hdHVyZSBpcyBub3QgYmVpbmcgaW5jbHVkZWQgaW4gdGhlIG91dHB1dC4gVGhpcyBtYXkgcmVzdWx0IGluIGFtYmlndW91cyBmdW5jdGlvbiByZXNvbHV0aW9uIGF0IHJ1bnRpbWUsIGNvbnNpZGVyIHNldHRpbmcgdGhlIFNpZ25hdHVyZUxldmVsIHRvIE92ZXJsb2FkcyBvciBBbGwgdG8gZW5zdXJlIHRoYXQgdGhlIG91dHB1dCBpbmNsdWRlcyBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvIHN1cHBvcnQgY29ycmVjdCBvdmVybG9hZCBzZWxlY3Rpb24gYXQgcnVudGltZS4iIGVycm9yVHlwZT0ic2VtYW50aWMiIGVycm9yU2V2ZXJpdHk9Indhcm5pbmciIHhzaTp0eXBlPSJhOkNxbFRvRWxtRXJyb3IiLz4KICAgPGFubm90YXRpb24gbWVzc2FnZT0iVGhlIGZ1bmN0aW9uIFdIT0NvbW1vbi5yZWZlcmVuY2VzIGhhcyBtdWx0aXBsZSBvdmVybG9hZHMgYW5kIGR1ZSB0byB0aGUgU2lnbmF0dXJlTGV2ZWwgc2V0dGluZyAoTm9uZSksIHRoZSBvdmVybG9hZCBzaWduYXR1cmUgaXMgbm90IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbWJpZ3VvdXMgZnVuY3Rpb24gcmVzb2x1dGlvbiBhdCBydW50aW1lLCBjb25zaWRlciBzZXR0aW5nIHRoZSBTaWduYXR1cmVMZXZlbCB0byBPdmVybG9hZHMgb3IgQWxsIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRwdXQgaW5jbHVkZXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBzdXBwb3J0IGNvcnJlY3Qgb3ZlcmxvYWQgc2VsZWN0aW9uIGF0IHJ1bnRpbWUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIG1lc3NhZ2U9IlRoZSBmdW5jdGlvbiBXSE9Db21tb24ucmVmZXJlbmNlcyBoYXMgbXVsdGlwbGUgb3ZlcmxvYWRzIGFuZCBkdWUgdG8gdGhlIFNpZ25hdHVyZUxldmVsIHNldHRpbmcgKE5vbmUpLCB0aGUgb3ZlcmxvYWQgc2lnbmF0dXJlIGlzIG5vdCBiZWluZyBpbmNsdWRlZCBpbiB0aGUgb3V0cHV0LiBUaGlzIG1heSByZXN1bHQgaW4gYW1iaWd1b3VzIGZ1bmN0aW9uIHJlc29sdXRpb24gYXQgcnVudGltZSwgY29uc2lkZXIgc2V0dGluZyB0aGUgU2lnbmF0dXJlTGV2ZWwgdG8gT3ZlcmxvYWRzIG9yIEFsbCB0byBlbnN1cmUgdGhhdCB0aGUgb3V0cHV0IGluY2x1ZGVzIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gc3VwcG9ydCBjb3JyZWN0IG92ZXJsb2FkIHNlbGVjdGlvbiBhdCBydW50aW1lLiIgZXJyb3JUeXBlPSJzZW1hbnRpYyIgZXJyb3JTZXZlcml0eT0id2FybmluZyIgeHNpOnR5cGU9ImE6Q3FsVG9FbG1FcnJvciIvPgogICA8YW5ub3RhdGlvbiBtZXNzYWdlPSJUaGUgZnVuY3Rpb24gRkhJUkhlbHBlcnMuVG9EYXRlVGltZSBoYXMgbXVsdGlwbGUgb3ZlcmxvYWRzIGFuZCBkdWUgdG8gdGhlIFNpZ25hdHVyZUxldmVsIHNldHRpbmcgKE5vbmUpLCB0aGUgb3ZlcmxvYWQgc2lnbmF0dXJlIGlzIG5vdCBiZWluZyBpbmNsdWRlZCBpbiB0aGUgb3V0cHV0LiBUaGlzIG1heSByZXN1bHQgaW4gYW1iaWd1b3VzIGZ1bmN0aW9uIHJlc29sdXRpb24gYXQgcnVudGltZSwgY29uc2lkZXIgc2V0dGluZyB0aGUgU2lnbmF0dXJlTGV2ZWwgdG8gT3ZlcmxvYWRzIG9yIEFsbCB0byBlbnN1cmUgdGhhdCB0aGUgb3V0cHV0IGluY2x1ZGVzIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gc3VwcG9ydCBjb3JyZWN0IG92ZXJsb2FkIHNlbGVjdGlvbiBhdCBydW50aW1lLiIgZXJyb3JUeXBlPSJzZW1hbnRpYyIgZXJyb3JTZXZlcml0eT0id2FybmluZyIgeHNpOnR5cGU9ImE6Q3FsVG9FbG1FcnJvciIvPgogICA8YW5ub3RhdGlvbiBtZXNzYWdlPSJUaGUgZnVuY3Rpb24gRkhJUkhlbHBlcnMuVG9EYXRlVGltZSBoYXMgbXVsdGlwbGUgb3ZlcmxvYWRzIGFuZCBkdWUgdG8gdGhlIFNpZ25hdHVyZUxldmVsIHNldHRpbmcgKE5vbmUpLCB0aGUgb3ZlcmxvYWQgc2lnbmF0dXJlIGlzIG5vdCBiZWluZyBpbmNsdWRlZCBpbiB0aGUgb3V0cHV0LiBUaGlzIG1heSByZXN1bHQgaW4gYW1iaWd1b3VzIGZ1bmN0aW9uIHJlc29sdXRpb24gYXQgcnVudGltZSwgY29uc2lkZXIgc2V0dGluZyB0aGUgU2lnbmF0dXJlTGV2ZWwgdG8gT3ZlcmxvYWRzIG9yIEFsbCB0byBlbnN1cmUgdGhhdCB0aGUgb3V0cHV0IGluY2x1ZGVzIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gc3VwcG9ydCBjb3JyZWN0IG92ZXJsb2FkIHNlbGVjdGlvbiBhdCBydW50aW1lLiIgZXJyb3JUeXBlPSJzZW1hbnRpYyIgZXJyb3JTZXZlcml0eT0id2FybmluZyIgeHNpOnR5cGU9ImE6Q3FsVG9FbG1FcnJvciIvPgogICA8YW5ub3RhdGlvbiBtZXNzYWdlPSJUaGUgZnVuY3Rpb24gRkhJUkhlbHBlcnMuVG9TdHJpbmcgaGFzIG11bHRpcGxlIG92ZXJsb2FkcyBhbmQgZHVlIHRvIHRoZSBTaWduYXR1cmVMZXZlbCBzZXR0aW5nIChOb25lKSwgdGhlIG92ZXJsb2FkIHNpZ25hdHVyZSBpcyBub3QgYmVpbmcgaW5jbHVkZWQgaW4gdGhlIG91dHB1dC4gVGhpcyBtYXkgcmVzdWx0IGluIGFtYmlndW91cyBmdW5jdGlvbiByZXNvbHV0aW9uIGF0IHJ1bnRpbWUsIGNvbnNpZGVyIHNldHRpbmcgdGhlIFNpZ25hdHVyZUxldmVsIHRvIE92ZXJsb2FkcyBvciBBbGwgdG8gZW5zdXJlIHRoYXQgdGhlIG91dHB1dCBpbmNsdWRlcyBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvIHN1cHBvcnQgY29ycmVjdCBvdmVybG9hZCBzZWxlY3Rpb24gYXQgcnVudGltZS4iIGVycm9yVHlwZT0ic2VtYW50aWMiIGVycm9yU2V2ZXJpdHk9Indhcm5pbmciIHhzaTp0eXBlPSJhOkNxbFRvRWxtRXJyb3IiLz4KICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgIDxhOnMgcj0iMTE5Ij4KICAgICAgICAgPGE6cz4vKioKICogTGlicmFyeTogSElWLklORC4yMiBMb2dpYwogKiBSZWYgTm86IEhUUy41CiAqIFNob3J0IE5hbWU6IEhUUyBwYXJ0bmVyIHNlcnZpY2VzCiAqCiAqIERlZmluaXRpb246IE51bWJlciBvZiBwZW9wbGUgd2hvIHdlcmUgaWRlbnRpZmllZCBhbmQgdGVzdGVkIHVzaW5nIHBhcnRuZXIgdGVzdGluZyBzZXJ2aWNlcyBhbmQgd2hvIHJlY2VpdmVkIHRoZWlyIHJlc3VsdHMKICoKICogTnVtZXJhdG9yOiBGb3IgdGhlIGdlbmVyYWwgcG9wdWxhdGlvbjogTnVtYmVyIG9mIGVsaWNpdGVkIHBhcnRuZXJzIGFuZCBvdGhlciBjb250YWN0cyogb2YgcGVvcGxlIGRpYWdub3NlZCB3aXRoIEhJViB3aG8gcmVjZWl2ZWQgSFRTIHwgIHwgQWRkaXRpb25hbCBjYXNjYWRlIGRhdGEgY29sbGVjdGVkOiB8IOKAoiBOdW1iZXIgb2YgcGVvcGxlIGRpYWdub3NlZCB3aXRoIEhJViAoaW5kZXggY2FzZXMpIG9mZmVyZWQgcGFydG5lciBzZXJ2aWNlcyB8IOKAoiBOdW1iZXIgb2YgcGVvcGxlIGRpYWdub3NlZCB3aXRoIEhJViAoaW5kZXggY2FzZXMpIGFjY2VwdGluZyBwYXJ0bmVyIHNlcnZpY2VzIHwg4oCiwqBOdW1iZXIgb2YgY29udGFjdHMvcGFydG5lcnMgb2YgcGVvcGxlIGxpdmluZyB3aXRoIEhJViB3aG9zZSBpbmZvcm1hdGlvbiBpcyBlbGljaXRlZCBmcm9tIHBlb3BsZSBkaWFnbm9zZWQgd2l0aCBISVYgKGluZGV4IGNhc2VzKSB8ICB8IEZvciBrZXkgcG9wdWxhdGlvbnM6IE51bWJlciBvZiBlbGljaXRlZCBjb250YWN0czEgb2YgbWVtYmVycyBvZiBrZXkgcG9wdWxhdGlvbnMgd2hvIHJlY2VpdmVkIEhUUy4gfCBBZGRpdGlvbmFsIGNhc2NhZGUgZGF0YSBjb2xsZWN0ZWQ6IHwg4oCiwqBOdW1iZXIgb2Yga2V5IHBvcHVsYXRpb24gbWVtYmVycyBvZmZlcmVkIHNvY2lhbCBuZXR3b3JrLWJhc2VkL3BhcnRuZXIgc2VydmljZXMgfCDigKIgTnVtYmVyIG9mIGtleSBwb3B1bGF0aW9uIG1lbWJlcnMgYWNjZXB0aW5nIHNvY2lhbCBuZXR3b3JrLWJhc2VkL3BhcnRuZXIgc2VydmljZXMgfCDigKIgTnVtYmVyIG9mIGNvbnRhY3RzIG9mIGtleSBwb3B1bGF0aW9uIG1lbWJlcnMgZWxpY2l0ZWQKICogTnVtZXJhdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzICZxdW90O1JlZmVycmVkIHRocm91Z2ggcGFydG5lciBzZXJ2aWNlcyZxdW90OyB0aGF0IGFyZSBhICdQYXJ0bmVyIG9yIGNvbnRhY3Qgb2YgYW4gaW5kZXggY2FzZScgQU5EICZxdW90O1R5cGUgb2YgY29udGFjdCBvciBwYXJ0bmVyIGZvciBwYXJ0bmVyIHNlcnZpY2VzJnF1b3Q7IElOICdTZXh1YWwgcGFydG5lcicsICdEcnVnLWluamVjdGluZyBwYXJ0bmVyJyB3aXRoICZxdW90O0hJViB0ZXN0IGRhdGUmcXVvdDsgQU5EICZxdW90O0RhdGUgSElWIHRlc3QgcmVzdWx0cyByZXR1cm5lZCZxdW90OyBpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBOdW1lcmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERlbm9taW5hdG9yOiAxCiAqIERlbm9taW5hdG9yIENhbGN1bGF0aW9uOiAxCiAqIERlbm9taW5hdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEaXNhZ2dyZWdhdGlvbnM6CiAqIOKAosKgQnkgaW5kZXggY2FzZSBnZW5kZXIgKG1hbGUsIGZlbWFsZSwgb3RoZXIqKikgCiAqICDigKLCoEFnZSAoMOKAkzQsIDXigJM5LCAxMOKAkzE0LCAxNeKAkzE5LCAyMOKAkzI0LCAyNeKAkzQ5LCA1MCsgeWVhcnMpKioqIAogKiAg4oCiIEhJViBzdGF0dXMgb2YgcGFydG5lciBvciBjb250YWN0IChhbHJlYWR5IGtub3duIHBvc2l0aXZlLCBuZXdseSBkaWFnbm9zZWQgcG9zaXRpdmUsIG5lZ2F0aXZlKSAKICogIOKAosKgS2V5IHBvcHVsYXRpb25zIChtZW4gd2hvIGhhdmUgc2V4IHdpdGggbWVuLCBwZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5ncywgcGVvcGxlIHdobyBpbmplY3QgZHJ1Z3MsIHNleCB3b3JrZXJzLCB0cmFucyBhbmQgZ2VuZGVyIGRpdmVyc2UgcGVvcGxlKSoqKiogCiAqICDigKLCoENpdGllcyBhbmQgb3RoZXIgYWRtaW5pc3RyYXRpdmUgcmVnaW9ucyBvZiBlcGlkZW1pb2xvZ2ljIGltcG9ydGFuY2UKICoKICogRGlzYWdncmVnYXRpb24gRWxlbWVudHM6ICpHZW5kZXIgW29mIGluZGV4IGNhc2VdIHwgQWdlIHwgUGFydG5lciBISVYgc3RhdHVzIChyZXBvcnRlZCkgfCBISVYgc3RhdHVzIG9mIGNvbnRhY3QgfCBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgdHlwZQogKgogKiBOdW1lcmF0b3IgYW5kIERlbm9taW5hdG9yIEVsZW1lbnRzOgogKiBEYXRlIEhJViB0ZXN0IHJlc3VsdHMgcmV0dXJuZWQgCiAqICBISVYgdGVzdCBkYXRlIAogKiAgUmVmZXJyZWQgdGhyb3VnaCBwYXJ0bmVyIHNlcnZpY2VzIAogKiAgVHlwZSBvZiBjb250YWN0IG9yIHBhcnRuZXIgZm9yIHBhcnRuZXIgc2VydmljZXMKICoKICogUmVmZXJlbmNlOiBDb25zb2xpZGF0ZWQgZ3VpZGVsaW5lcyBvbiBwZXJzb24tY2VudHJlZCBISVYgc3RyYXRlZ2ljIGluZm9ybWF0aW9uOiBzdHJlbmd0aGVuaW5nIHJvdXRpbmUgZGF0YSBmb3IgaW1wYWN0LiBHZW5ldmE6IFdvcmxkIEhlYWx0aCBPcmdhbml6YXRpb247IDIwMjIKICogCiAqIERhdGEgQ29uY2VwdHM6CiAqIEhJVi5BLkRFMTc6IEFnZSB8IENhbGN1bGF0ZWQgYWdlIChudW1iZXIgb2YgeWVhcnMpIG9mIHRoZSBjbGllbnQgYmFzZWQgb24gZGF0ZSBvZiBiaXJ0aAogKiBISVYuQi5ERTU6IFJlZmVycmVkIHRocm91Z2ggcGFydG5lciBzZXJ2aWNlcyB8IENsaWVudCByZXBvcnRlZCBjb21pbmcgdG8gdGhlIGZhY2lsaXR5IGFmdGVyIHJlY2VpdmluZyBhIHByb3ZpZGVyLWFzc2lzdGVkIHJlZmVycmFsIG9yIHBhdGllbnQgcmVmZXJyYWwgZnJvbSBhIGNvbnRhY3Qgb3IgcGFydG5lcgogKiBISVYuQi5ERTY6IFBhcnRuZXIgb3IgY29udGFjdCBvZiBhbiBpbmRleCBjYXNlIHwgVGhlIGNsaWVudCBpcyBhIGNvbnRhY3Qgb3IgcGFydG5lciBvZiBhIHBlcnNvbiBkaWFnbm9zZWQgd2l0aCBISVYgKGFuIGluZGV4IGNhc2UpCiAqIEhJVi5CLkRFNzogUGFydG5lciBvciBjb250YWN0IG9mIGFuIEhJViB0ZXN0aW5nIGNsaWVudCAobm9uLWluZGV4IGNhc2UpIHwgVGhlIGNsaWVudCBpcyBhIGNvbnRhY3Qgb3IgcGFydG5lciBpZGVudGlmaWVkIHRocm91Z2ggcGFydG5lciBvciBzb2NpYWwgbmV0d29yayBzZXJ2aWNlcywgYnV0IGlzIG5vdCBrbm93biB0byBiZSBhIHBhcnRuZXIgb2YgYW4gaW5kZXgtY2FzZQogKiBISVYuQi5ERTg6IFR5cGUgb2YgY29udGFjdCBvciBwYXJ0bmVyIGZvciBwYXJ0bmVyIHNlcnZpY2VzIHwgQ2xpZW50J3MgcmVsYXRpb25zaGlwIHRvIHRoZSBwZXJzb24gdGhhdCByZWZlcnJlZCB0aGUgY2xpZW50IGZvciBwYXJ0bmVyIHNlcnZpY2VzIG9yIGZhbWlseSBzZXJ2aWNlcwogKiBISVYuQi5ERTk6IEJpb2xvZ2ljYWwgY2hpbGQgfCBDbGllbnQgaXMgdGhlIGJpb2xvZ2ljYWwgY2hpbGQgb2YgdGhlIHBlcnNvbiB0aGF0IHJlZmVycmVkIHRoZSBjbGllbnQgZm9yIGZhbWlseSBzZXJ2aWNlcwogKiBISVYuQi5ERTEwOiBEcnVnLWluamVjdGluZyBwYXJ0bmVyIHwgQ2xpZW50IGlzIGEgZHJ1Zy1pbmplY3RpbmcgcGFydG5lciBvZiB0aGUgcGVyc29uIHRoYXQgcmVmZXJyZWQgdGhlIGNsaWVudCBmb3IgcGFydG5lciBzZXJ2aWNlcwogKiBISVYuQi5ERTExOiBTZXh1YWwgcGFydG5lciB8IENsaWVudCBpcyBhIHNleHVhbCBwYXJ0bmVyIG9mIHRoZSBwZXJzb24gdGhhdCByZWZlcnJlZCB0aGUgY2xpZW50IGZvciBwYXJ0bmVyIHNlcnZpY2VzCiAqIEhJVi5CLkRFMTI6IFNvY2lhbCBjb250YWN0IHwgQ2xpZW50IGlzIGEgc29jaWFsIGNvbnRhY3Qgb2YgdGhlIHBlcnNvbiB0aGF0IHJlZmVycmVkIHRoZSBjbGllbnQgZm9yIHNvY2lhbC1uZXR3b3JrIHNlcnZpY2VzCiAqIEhJVi5CLkRFMzM6IFBhcnRuZXIgSElWIHN0YXR1cyAocmVwb3J0ZWQpIHwgVGhlIEhJViBzdGF0dXMgb2YgdGhlIGNsaWVudCdzIHBhcnRuZXIuCiAqIEhJVi5CLkRFMzQ6IEhJVi1wb3NpdGl2ZSB8IENsaWVudCdzIHBhcnRuZXIgaXMgSElWLXBvc2l0aXZlCiAqIEhJVi5CLkRFMzU6IEhJVi1uZWdhdGl2ZSB8IENsaWVudCdzIHBhcnRuZXIgaXMgSElWLW5lZ2F0aXZlCiAqIEhJVi5CLkRFMzY6IFVua25vd24gfCBEb24ndCBrbm93IEhJViBzdGF0dXMgLSBjbGllbnQgZG9lcyBub3Qga25vdyBwYXJ0bmVyJ3MgSElWIHN0YXR1cwogKiBISVYuQi5ERTUwOiBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgdHlwZSogfCBUaGUgdHlwZSBvZiBrZXkgcG9wdWxhdGlvbiB0aGF0IHRoZSBjbGllbnQgaXMgaW5jbHVkZWQgaW4KICogSElWLkIuREU1MTogU2V4IHdvcmtlciB8IENsaWVudCBpcyBhIHNleCB3b3JrZXIKICogSElWLkIuREU1MjogTWVuIHdobyBoYXZlIHNleCB3aXRoIG1lbiB8IENsaWVudCBpcyBhIG1hbiB3aG8gaGFzIHNleCB3aXRoIG1lbgogKiBISVYuQi5ERTUzOiBUcmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UgcGVvcGxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgdHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlCiAqIEhJVi5CLkRFNTQ6IFBlb3BsZSB3aG8gaW5qZWN0IGRydWdzIHwgQ2xpZW50IGlzIGEgcGVyc29uIHdobyBpbmplY3RzIGRydWdzCiAqIEhJVi5CLkRFNTU6IFBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmdzIHwgQ2xpZW50IGxpdmVzIGluIGEgcHJpc29uIG9yIGFub3RoZXIgY2xvc2VkIHNldHRpbmcKICogSElWLkIuREU2MDogRGF0ZSBISVYgdGVzdCByZXN1bHRzIHJldHVybmVkIHwgRGF0ZSBISVYgdGVzdCByZXN1bHQgcmV0dXJuZWQgdG8gY2xpZW50CiAqIEhJVi5CLkRFMTEwOiBISVYgdGVzdCBkYXRlIHwgRGF0ZSBvZiB0aGUgSElWIHRlc3QKICogSElWLkUuREUxMTQ6IEtleSBwb3B1bGF0aW9uIG1lbWJlciB0eXBlKiB8IFRoZSB0eXBlIG9mIGtleSBwb3B1bGF0aW9uIHRoYXQgdGhlIGluZmFudCdzIG1vdGhlciBpcyBpbmNsdWRlZCBpbgogKiBISVYuRS5ERTExNTogU2V4IHdvcmtlciB8IEluZmFudCdzIG1vdGhlciBpcyBhIHNleCB3b3JrZXIKICogSElWLkUuREUxMTY6IFBlb3BsZSB3aG8gaW5qZWN0IGRydWdzIHwgSW5mYW50J3MgbW90aGVyIGlzIGEgcGVyc29uIHdobyBpbmplY3RzIGRydWdzCiAqIEhJVi5FLkRFMTE3OiBUcmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UgcGVvcGxlIHwgSW5mYW50J3MgbW90aGVyIGlkZW50aWZpZXMgYXMgdHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlCiAqIEhJVi5FLkRFMTE4OiBQZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5nIHwgSW5mYW50J3MgbW90aGVyIGlzIGluIGEgcHJpc29uIG9yIGNsb3NlZCBzZXR0aW5nCiAqIEhJVi5FLkRFMjI0OiBISVYgdGVzdCBkYXRlIHwgRGF0ZSBvZiB0aGUgSElWIHRlc3QKICogSElWLlBSVi5ERTExOiBISVYgc3RhdHVzIG9mIGNvbnRhY3QgfCBUaGUgSElWIHN0YXR1cyBvZiB0aGUgY2xpZW50J3MgY29udGFjdAogKiBISVYuUFJWLkRFMTI6IEhJVi1wb3NpdGl2ZSB8IENsaWVudCdzIGNvbnRhY3QgaXMgSElWLXBvc2l0aXZlCiAqIEhJVi5QUlYuREUxMzogSElWLW5lZ2F0aXZlIHwgQ2xpZW50J3MgY29udGFjdCBpcyBISVYtbmVnYXRpdmUKICogSElWLlBSVi5ERTE0OiBVbmtub3duIHwgQ2xpZW50IGRvZXMgbm90IGtub3cgY29udGFjdCdzIEhJViBzdGF0dXMKICogSElWLlNSVi5ERTE6IEhJViB0ZXN0IGRhdGUgfCBEYXRlIG9mIHRoZSBISVYgdGVzdAogKgogKiBBZGRpdGlvbmFsIENvbnRleHQKICogLSB3aGF0IGl0IG1lYXN1cmVzOiBUaGlzIG1lYXN1cmVzIHRoZSBjb3ZlcmFnZSBhbmQgaW1wYWN0IG9mIHRoZSB0ZXN0aW5nIGNhc2NhZGUgb2Ygc2VydmljZXMgZm9yIHBhcnRuZXJzIGFuZCBvdGhlciBjb250YWN0cyogb2YgcGVvcGxlIGxpdmluZyB3aXRoIEhJViwgaW5jbHVkaW5nIGtleSBwb3B1bGF0aW9uIG1lbWJlcnMuCiAqIC0gcmF0aW9uYWxlOiDigKLCoENvbnRhY3QgdGVzdGluZywgaW5jbHVkaW5nIGFtb25nIHNleHVhbCBwYXJ0bmVycywgaGFzIGJlZW4gc2hvd24gdG8gaW5jcmVhc2UgdGhlIGRpYWdub3NpcyBvZiBhbHJlYWR5LWluZmVjdGVkIGNvbnRhY3RzIGFuZCBwYXJ0bmVycyBvZiBuZXdseSBpZGVudGlmaWVkIEhJViBjYXNlcy4gfCDigKLCoEFtb25nIHNlcm9kaXNjb3JkYW50IGNvdXBsZXMsIHBhcnRuZXIgbm90aWZpY2F0aW9uIGFuZCB0ZXN0aW5nIGNhbiBiZSBhIGNyaXRpY2FsIHN0ZXAgaW4gcHJldmVudGluZyBpbmZlY3Rpb24gb2YgdGhlIHVuaW5mZWN0ZWQgcGFydG5lci4gfCDigKIgQ29udGFjdCBhbmQvb3IgcGFydG5lciBub3RpZmljYXRpb24gYW5kIHRlc3Rpbmcgc2hvdWxkIGJlIHZvbHVudGFyeSBhbmQgcHJvdmlkZWQgd2l0aCBzdXBwb3J0aXZlIHNlcnZpY2VzLgogKiAtIG1ldGhvZDogUGF0aWVudCBtb25pdG9yaW5nIGRhdGEgKEhJViBpbmRleCB0ZXN0aW5nIHNlcnZpY2VzIHJlZ2lzdGVyIG9yIGxvZ2Jvb2ssIEhUUyByZWdpc3RlcnMgb3IgcmVwb3J0aW5nIGZvcm1zKSBvciBFTVIKICogCiAqIFN1Z2dlc3RlZCBTY29yaW5nIE1ldGhvZDogY29udGludW91cy12YXJpYWJsZSB8IGh0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY3FmbWVhc3VyZXMvU3RydWN0dXJlRGVmaW5pdGlvbi9jdi1tZWFzdXJlLWNxZm0KICovCgpsaWJyYXJ5IEhJVklORDIyTG9naWM8L2E6cz4KICAgICAgPC9hOnM+CiAgIDwvYW5ub3RhdGlvbj4KICAgPGlkZW50aWZpZXIgaWQ9IkhJVklORDIyTG9naWMiIHN5c3RlbT0iaHR0cDovL3NtYXJ0Lndoby5pbnQvaGl2Ii8+CiAgIDxzY2hlbWFJZGVudGlmaWVyIGlkPSJ1cm46aGw3LW9yZzplbG0iIHZlcnNpb249InIxIi8+CiAgIDx1c2luZ3M+CiAgICAgIDxkZWYgbG9jYWxJZGVudGlmaWVyPSJTeXN0ZW0iIHVyaT0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIi8+CiAgICAgIDxkZWYgbG9jYWxJZD0iMSIgbG9jYXRvcj0iNzg6MS03ODoyNiIgbG9jYWxJZGVudGlmaWVyPSJGSElSIiB1cmk9Imh0dHA6Ly9obDcub3JnL2ZoaXIiIHZlcnNpb249IjQuMC4xIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMSI+CiAgICAgICAgICAgICAgIDxhOnM+Ly8gSW5jbHVkZWQgTGlicmFyaWVzCnVzaW5nIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICA8YTpzPkZISVI8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IHZlcnNpb24gJzQuMC4xJzwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgPC91c2luZ3M+CiAgIDxpbmNsdWRlcz4KICAgICAgPGRlZiBsb2NhbElkPSIyIiBsb2NhdG9yPSI4MDoxLTgwOjQ0IiBsb2NhbElkZW50aWZpZXI9IkhJQyIgcGF0aD0iaHR0cDovL3NtYXJ0Lndoby5pbnQvaGl2L0hJVkNvbW1vbiIgdmVyc2lvbj0iMC4wLjEiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIyIj4KICAgICAgICAgICAgICAgPGE6cz5pbmNsdWRlIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICA8YTpzPkhJVkNvbW1vbjwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4gdmVyc2lvbiAnMC4wLjEnIGNhbGxlZCBISUM8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMyIgbG9jYXRvcj0iODE6MS04MTozNSIgbG9jYWxJZGVudGlmaWVyPSJGSElSSGVscGVycyIgcGF0aD0iaHR0cDovL2hsNy5vcmcvZmhpci9GSElSSGVscGVycyIgdmVyc2lvbj0iNC4wLjEiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIzIj4KICAgICAgICAgICAgICAgPGE6cz5pbmNsdWRlIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICA8YTpzPkZISVJIZWxwZXJzPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiB2ZXJzaW9uICc0LjAuMSc8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iNCIgbG9jYXRvcj0iODI6MS04MjoyOSIgbG9jYWxJZGVudGlmaWVyPSJXQ29tIiBwYXRoPSJodHRwOi8vc21hcnQud2hvLmludC9oaXYvV0hPQ29tbW9uIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iNCI+CiAgICAgICAgICAgICAgIDxhOnM+aW5jbHVkZSA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5XSE9Db21tb248L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IGNhbGxlZCBXQ29tPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjUiIGxvY2F0b3I9IjgzOjEtODM6MzkiIGxvY2FsSWRlbnRpZmllcj0iSElFIiBwYXRoPSJodHRwOi8vc21hcnQud2hvLmludC9oaXYvSElWSW5kaWNhdG9yRWxlbWVudHMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSI1Ij4KICAgICAgICAgICAgICAgPGE6cz5pbmNsdWRlIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICA8YTpzPkhJVkluZGljYXRvckVsZW1lbnRzPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiBjYWxsZWQgSElFPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjYiIGxvY2F0b3I9Ijg0OjEtODQ6MjkiIGxvY2FsSWRlbnRpZmllcj0iSEUiIHBhdGg9Imh0dHA6Ly9zbWFydC53aG8uaW50L2hpdi9ISVZFbGVtZW50cyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjYiPgogICAgICAgICAgICAgICA8YTpzPmluY2x1ZGUgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+SElWRWxlbWVudHM8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IGNhbGxlZCBIRTwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgPC9pbmNsdWRlcz4KICAgPHBhcmFtZXRlcnM+CiAgICAgIDxkZWYgbG9jYWxJZD0iMTIiIGxvY2F0b3I9Ijg3OjEtODc6ODgiIG5hbWU9Ik1lYXN1cmVtZW50IFBlcmlvZCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjEyIj4KICAgICAgICAgICAgICAgPGE6cz4vLyBJbmRpY2F0b3IgRGVmaW5pdGlvbgpwYXJhbWV0ZXIgJnF1b3Q7TWVhc3VyZW1lbnQgUGVyaW9kJnF1b3Q7IDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjExIj4KICAgICAgICAgICAgICAgICAgPGE6cz5JbnRlcnZhbCZsdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMCI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+RGF0ZTwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4+PC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiBkZWZhdWx0IDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjkiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjciPkludGVydmFsW0AyMDIzLTAxLTAxLCBAMjAyMy0wMS0zMF08L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxkZWZhdWx0IGxvY2FsSWQ9IjkiIGxvY2F0b3I9Ijg3OjU1LTg3Ojg4IiBsb3dDbG9zZWQ9InRydWUiIGhpZ2hDbG9zZWQ9InRydWUiIHhzaTp0eXBlPSJJbnRlcnZhbCI+CiAgICAgICAgICAgIDxsb3cgbG9jYWxJZD0iNyIgbG9jYXRvcj0iODc6NjQtODc6NzQiIHhzaTp0eXBlPSJEYXRlIj4KICAgICAgICAgICAgICAgPHllYXIgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIyMDIzIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8bW9udGggdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIxIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8ZGF5IHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iMSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgPC9sb3c+CiAgICAgICAgICAgIDxoaWdoIGxvY2FsSWQ9IjgiIGxvY2F0b3I9Ijg3Ojc3LTg3Ojg3IiB4c2k6dHlwZT0iRGF0ZSI+CiAgICAgICAgICAgICAgIDx5ZWFyIHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iMjAyMyIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPG1vbnRoIHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iMSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPGRheSB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjMwIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICA8L2hpZ2g+CiAgICAgICAgIDwvZGVmYXVsdD4KICAgICAgICAgPHBhcmFtZXRlclR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMTEiIGxvY2F0b3I9Ijg3OjMyLTg3OjQ1IiB4c2k6dHlwZT0iSW50ZXJ2YWxUeXBlU3BlY2lmaWVyIj4KICAgICAgICAgICAgPHBvaW50VHlwZSBsb2NhbElkPSIxMCIgbG9jYXRvcj0iODc6NDEtODc6NDQiIG5hbWU9InQ6RGF0ZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICA8L3BhcmFtZXRlclR5cGVTcGVjaWZpZXI+CiAgICAgIDwvZGVmPgogICA8L3BhcmFtZXRlcnM+CiAgIDxjb250ZXh0cz4KICAgICAgPGRlZiBsb2NhdG9yPSI4OToxLTg5OjE1IiBuYW1lPSJQYXRpZW50Ii8+CiAgIDwvY29udGV4dHM+CiAgIDxzdGF0ZW1lbnRzPgogICAgICA8ZGVmIGxvY2F0b3I9Ijg5OjEtODk6MTUiIG5hbWU9IlBhdGllbnQiIGNvbnRleHQ9IlBhdGllbnQiPgogICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iU2luZ2xldG9uRnJvbSI+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2F0b3I9Ijg5OjEtODk6MTUiIGRhdGFUeXBlPSJmaGlyOlBhdGllbnQiIHRlbXBsYXRlSWQ9Imh0dHA6Ly9obDcub3JnL2ZoaXIvU3RydWN0dXJlRGVmaW5pdGlvbi9QYXRpZW50IiB4c2k6dHlwZT0iUmV0cmlldmUiLz4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIxNCIgbG9jYXRvcj0iOTY6MS05Nzo2IiBuYW1lPSJJbml0aWFsIFBvcHVsYXRpb24iIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIxNCI+CiAgICAgICAgICAgICAgIDxhOnMgcj0iMTMiPi8qIFBvcHVsYXRpb25zICovCgovKgogKkluaXRpYWwgUG9wdWxhdGlvbgogKi8KCmRlZmluZSAmcXVvdDtJbml0aWFsIFBvcHVsYXRpb24mcXVvdDs6CiAgdHJ1ZTwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIxMyIgbG9jYXRvcj0iOTc6My05Nzo2IiB2YWx1ZVR5cGU9InQ6Qm9vbGVhbiIgdmFsdWU9InRydWUiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9Ijc2IiBsb2NhdG9yPSIxMDY6MS0xMjE6NTYiIG5hbWU9Ik1lYXN1cmUgUG9wdWxhdGlvbiIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9Ijc2Ij4KICAgICAgICAgICAgICAgPGE6cz4vKioKICogTWVhc3VyZSBQb3B1bGF0aW9uCiAqCiAqIERlZmluaXRpb246IEZvciB0aGUgZ2VuZXJhbCBwb3B1bGF0aW9uOiBOdW1iZXIgb2YgZWxpY2l0ZWQgcGFydG5lcnMgYW5kIG90aGVyIGNvbnRhY3RzKiBvZiBwZW9wbGUgZGlhZ25vc2VkIHdpdGggSElWIHdobyByZWNlaXZlZCBIVFMgfCAgfCBBZGRpdGlvbmFsIGNhc2NhZGUgZGF0YSBjb2xsZWN0ZWQ6IHwg4oCiIE51bWJlciBvZiBwZW9wbGUgZGlhZ25vc2VkIHdpdGggSElWIChpbmRleCBjYXNlcykgb2ZmZXJlZCBwYXJ0bmVyIHNlcnZpY2VzIHwg4oCiIE51bWJlciBvZiBwZW9wbGUgZGlhZ25vc2VkIHdpdGggSElWIChpbmRleCBjYXNlcykgYWNjZXB0aW5nIHBhcnRuZXIgc2VydmljZXMgfCDigKLCoE51bWJlciBvZiBjb250YWN0cy9wYXJ0bmVycyBvZiBwZW9wbGUgbGl2aW5nIHdpdGggSElWIHdob3NlIGluZm9ybWF0aW9uIGlzIGVsaWNpdGVkIGZyb20gcGVvcGxlIGRpYWdub3NlZCB3aXRoIEhJViAoaW5kZXggY2FzZXMpIHwgIHwgRm9yIGtleSBwb3B1bGF0aW9uczogTnVtYmVyIG9mIGVsaWNpdGVkIGNvbnRhY3RzMSBvZiBtZW1iZXJzIG9mIGtleSBwb3B1bGF0aW9ucyB3aG8gcmVjZWl2ZWQgSFRTLiB8IEFkZGl0aW9uYWwgY2FzY2FkZSBkYXRhIGNvbGxlY3RlZDogfCDigKLCoE51bWJlciBvZiBrZXkgcG9wdWxhdGlvbiBtZW1iZXJzIG9mZmVyZWQgc29jaWFsIG5ldHdvcmstYmFzZWQvcGFydG5lciBzZXJ2aWNlcyB8IOKAoiBOdW1iZXIgb2Yga2V5IHBvcHVsYXRpb24gbWVtYmVycyBhY2NlcHRpbmcgc29jaWFsIG5ldHdvcmstYmFzZWQvcGFydG5lciBzZXJ2aWNlcyB8IOKAoiBOdW1iZXIgb2YgY29udGFjdHMgb2Yga2V5IHBvcHVsYXRpb24gbWVtYmVycyBlbGljaXRlZAogKiBDYWxjdWxhdGlvbjogRm9yIHRoZSBnZW5lcmFsIHBvcHVsYXRpb246IE51bWJlciBvZiBlbGljaXRlZCBwYXJ0bmVycyBhbmQgb3RoZXIgY29udGFjdHMqIG9mIHBlb3BsZSBkaWFnbm9zZWQgd2l0aCBISVYgd2hvIHJlY2VpdmVkIEhUUyB8ICB8IEFkZGl0aW9uYWwgY2FzY2FkZSBkYXRhIGNvbGxlY3RlZDogfCDigKIgTnVtYmVyIG9mIHBlb3BsZSBkaWFnbm9zZWQgd2l0aCBISVYgKGluZGV4IGNhc2VzKSBvZmZlcmVkIHBhcnRuZXIgc2VydmljZXMgfCDigKIgTnVtYmVyIG9mIHBlb3BsZSBkaWFnbm9zZWQgd2l0aCBISVYgKGluZGV4IGNhc2VzKSBhY2NlcHRpbmcgcGFydG5lciBzZXJ2aWNlcyB8IOKAosKgTnVtYmVyIG9mIGNvbnRhY3RzL3BhcnRuZXJzIG9mIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYgd2hvc2UgaW5mb3JtYXRpb24gaXMgZWxpY2l0ZWQgZnJvbSBwZW9wbGUgZGlhZ25vc2VkIHdpdGggSElWIChpbmRleCBjYXNlcykgfCAgfCBGb3Iga2V5IHBvcHVsYXRpb25zOiBOdW1iZXIgb2YgZWxpY2l0ZWQgY29udGFjdHMxIG9mIG1lbWJlcnMgb2Yga2V5IHBvcHVsYXRpb25zIHdobyByZWNlaXZlZCBIVFMuIHwgQWRkaXRpb25hbCBjYXNjYWRlIGRhdGEgY29sbGVjdGVkOiB8IOKAosKgTnVtYmVyIG9mIGtleSBwb3B1bGF0aW9uIG1lbWJlcnMgb2ZmZXJlZCBzb2NpYWwgbmV0d29yay1iYXNlZC9wYXJ0bmVyIHNlcnZpY2VzIHwg4oCiIE51bWJlciBvZiBrZXkgcG9wdWxhdGlvbiBtZW1iZXJzIGFjY2VwdGluZyBzb2NpYWwgbmV0d29yay1iYXNlZC9wYXJ0bmVyIHNlcnZpY2VzIHwg4oCiIE51bWJlciBvZiBjb250YWN0cyBvZiBrZXkgcG9wdWxhdGlvbiBtZW1iZXJzIGVsaWNpdGVkCiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCmRlZmluZSAmcXVvdDtNZWFzdXJlIFBvcHVsYXRpb24mcXVvdDs6CiAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSI3NSI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDQiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPmV4aXN0czwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4oPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+SEUuJnF1b3Q7UGFydG5lciBvciBjb250YWN0IG9mIGFuIGluZGV4IGNhc2UmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiBJQzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+CiAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+d2l0aCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPkhFLiZxdW90O0RydWctaW5qZWN0aW5nIHBhcnRuZXImcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiBESVA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+CiAgICAgIHN1Y2ggdGhhdCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5JQzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmhhc01lbWJlcjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5yZWZlcmVuY2VzKDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5ESVA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+KTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPndpdGggPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5ISUUuJnF1b3Q7SElWIHRlc3QgcmVzdWx0cyByZXR1cm5lZCBpbiBtZWFzdXJlbWVudCBwZXJpb2QmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiBISVY8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+CiAgICAgIHN1Y2ggdGhhdCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0MSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPklDPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+aGFzTWVtYmVyPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnJlZmVyZW5jZXMoPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPkhJVjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4pPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4KICAgICAgYW5kIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPkhJVjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmlzc3VlZDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzQiPiBhZnRlciA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+c3RhcnQgb2YgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O01lYXN1cmVtZW50IFBlcmlvZCZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4KICAgICAgYW5kIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPkhJVjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmlzc3VlZDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDAiPiBiZWZvcmUgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmVuZCBvZiA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7TWVhc3VyZW1lbnQgUGVyaW9kJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+KTwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+CiAgICBvciAKICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc0Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cz5leGlzdHM8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+KDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjczIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPkhFLiZxdW90O1BhcnRuZXIgb3IgY29udGFjdCBvZiBhbiBpbmRleCBjYXNlJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gSUM8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPndpdGggPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5IRS4mcXVvdDtTZXh1YWwgcGFydG5lciZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+IFNQPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgICBzdWNoIHRoYXQgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0OSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+SUM8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5oYXNNZW1iZXI8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+cmVmZXJlbmNlcyg8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+U1A8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+KTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+d2l0aCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPkhJRS4mcXVvdDtISVYgdGVzdCByZXN1bHRzIHJldHVybmVkIGluIG1lYXN1cmVtZW50IHBlcmlvZCZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+IEhJVjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4KICAgICAgc3VjaCB0aGF0IDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjcxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+SUM8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5oYXNNZW1iZXI8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1OSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+cmVmZXJlbmNlcyg8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1OCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+SElWPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPik8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgICBhbmQgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjYxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+SElWPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+aXNzdWVkPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NCI+IGFmdGVyIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjYzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5zdGFydCBvZiA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7TWVhc3VyZW1lbnQgUGVyaW9kJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgogICAgICBhbmQgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjY3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+SElWPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+aXNzdWVkPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MCI+IGJlZm9yZSA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2OSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+ZW5kIG9mIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjY4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtNZWFzdXJlbWVudCBQZXJpb2QmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4pPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9Ijc1IiBsb2NhdG9yPSIxMDc6NS0xMjE6NTYiIHhzaTp0eXBlPSJPciI+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjQ0IiBsb2NhdG9yPSIxMDc6NS0xMTM6NTYiIHhzaTp0eXBlPSJFeGlzdHMiPgogICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI0MyIgbG9jYXRvcj0iMTA3OjExLTExMzo1NiIgeHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIxNiIgbG9jYXRvcj0iMTA3OjEyLTEwNzo1NCIgYWxpYXM9IklDIj4KICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTUiIGxvY2F0b3I9IjEwNzoxMi0xMDc6NTEiIG5hbWU9IlBhcnRuZXIgb3IgY29udGFjdCBvZiBhbiBpbmRleCBjYXNlIiBsaWJyYXJ5TmFtZT0iSEUiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICA8cmVsYXRpb25zaGlwIGxvY2FsSWQ9IjIzIiBsb2NhdG9yPSIxMDg6NS0xMDk6NDQiIGFsaWFzPSJESVAiIHhzaTp0eXBlPSJXaXRoIj4KICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTciIGxvY2F0b3I9IjEwODoxMC0xMDg6MzYiIG5hbWU9IkRydWctaW5qZWN0aW5nIHBhcnRuZXIiIGxpYnJhcnlOYW1lPSJIRSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgICAgPHN1Y2hUaGF0IGxvY2FsSWQ9IjIyIiBsb2NhdG9yPSIxMDk6MTctMTA5OjQ0IiBuYW1lPSJyZWZlcmVuY2VzIiBsaWJyYXJ5TmFtZT0iV0NvbSIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjAiIGxvY2F0b3I9IjEwOToxNy0xMDk6MjgiIHBhdGg9Imhhc01lbWJlciIgc2NvcGU9IklDIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjEiIGxvY2F0b3I9IjEwOTo0MS0xMDk6NDMiIG5hbWU9IkRJUCIgeHNpOnR5cGU9IkFsaWFzUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgIDwvc3VjaFRoYXQ+CiAgICAgICAgICAgICAgICAgIDwvcmVsYXRpb25zaGlwPgogICAgICAgICAgICAgICAgICA8cmVsYXRpb25zaGlwIGxvY2FsSWQ9IjQyIiBsb2NhdG9yPSIxMTA6NS0xMTM6NTUiIGFsaWFzPSJISVYiIHhzaTp0eXBlPSJXaXRoIj4KICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMjQiIGxvY2F0b3I9IjExMDoxMC0xMTA6NjIiIG5hbWU9IkhJViB0ZXN0IHJlc3VsdHMgcmV0dXJuZWQgaW4gbWVhc3VyZW1lbnQgcGVyaW9kIiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICAgICA8c3VjaFRoYXQgbG9jYWxJZD0iNDEiIGxvY2F0b3I9IjExMToxNy0xMTM6NTUiIHhzaTp0eXBlPSJBbmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIzNSIgbG9jYXRvcj0iMTExOjE3LTExMjo1NiIgeHNpOnR5cGU9IkFuZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjI5IiBsb2NhdG9yPSIxMTE6MTctMTExOjQ0IiBuYW1lPSJyZWZlcmVuY2VzIiBsaWJyYXJ5TmFtZT0iV0NvbSIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjciIGxvY2F0b3I9IjExMToxNy0xMTE6MjgiIHBhdGg9Imhhc01lbWJlciIgc2NvcGU9IklDIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjgiIGxvY2F0b3I9IjExMTo0MS0xMTE6NDMiIG5hbWU9IkhJViIgeHNpOnR5cGU9IkFsaWFzUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMzQiIGxvY2F0b3I9IjExMjoxMS0xMTI6NTYiIHhzaTp0eXBlPSJBZnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvRGF0ZVRpbWUiIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMzEiIGxvY2F0b3I9IjExMjoxMS0xMTI6MjAiIHBhdGg9Imlzc3VlZCIgc2NvcGU9IkhJViIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlRvRGF0ZVRpbWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIzMyIgbG9jYXRvcj0iMTEyOjI4LTExMjo1NiIgeHNpOnR5cGU9IlN0YXJ0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMzIiIGxvY2F0b3I9IjExMjozNy0xMTI6NTYiIG5hbWU9Ik1lYXN1cmVtZW50IFBlcmlvZCIgeHNpOnR5cGU9IlBhcmFtZXRlclJlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjQwIiBsb2NhdG9yPSIxMTM6MTEtMTEzOjU1IiB4c2k6dHlwZT0iQmVmb3JlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iVG9EYXRlVGltZSIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIzNyIgbG9jYXRvcj0iMTEzOjExLTExMzoyMCIgcGF0aD0iaXNzdWVkIiBzY29wZT0iSElWIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iVG9EYXRlVGltZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjM5IiBsb2NhdG9yPSIxMTM6MjktMTEzOjU1IiB4c2k6dHlwZT0iRW5kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMzgiIGxvY2F0b3I9IjExMzozNi0xMTM6NTUiIG5hbWU9Ik1lYXN1cmVtZW50IFBlcmlvZCIgeHNpOnR5cGU9IlBhcmFtZXRlclJlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8L3N1Y2hUaGF0PgogICAgICAgICAgICAgICAgICA8L3JlbGF0aW9uc2hpcD4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9Ijc0IiBsb2NhdG9yPSIxMTU6NS0xMjE6NTYiIHhzaTp0eXBlPSJFeGlzdHMiPgogICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI3MyIgbG9jYXRvcj0iMTE1OjExLTEyMTo1NiIgeHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI0NiIgbG9jYXRvcj0iMTE1OjEyLTExNTo1NCIgYWxpYXM9IklDIj4KICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNDUiIGxvY2F0b3I9IjExNToxMi0xMTU6NTEiIG5hbWU9IlBhcnRuZXIgb3IgY29udGFjdCBvZiBhbiBpbmRleCBjYXNlIiBsaWJyYXJ5TmFtZT0iSEUiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICA8cmVsYXRpb25zaGlwIGxvY2FsSWQ9IjUzIiBsb2NhdG9yPSIxMTY6NS0xMTc6NDMiIGFsaWFzPSJTUCIgeHNpOnR5cGU9IldpdGgiPgogICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI0NyIgbG9jYXRvcj0iMTE2OjEwLTExNjoyOCIgbmFtZT0iU2V4dWFsIHBhcnRuZXIiIGxpYnJhcnlOYW1lPSJIRSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgICAgPHN1Y2hUaGF0IGxvY2FsSWQ9IjUyIiBsb2NhdG9yPSIxMTc6MTctMTE3OjQzIiBuYW1lPSJyZWZlcmVuY2VzIiBsaWJyYXJ5TmFtZT0iV0NvbSIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNTAiIGxvY2F0b3I9IjExNzoxNy0xMTc6MjgiIHBhdGg9Imhhc01lbWJlciIgc2NvcGU9IklDIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNTEiIGxvY2F0b3I9IjExNzo0MS0xMTc6NDIiIG5hbWU9IlNQIiB4c2k6dHlwZT0iQWxpYXNSZWYiLz4KICAgICAgICAgICAgICAgICAgICAgPC9zdWNoVGhhdD4KICAgICAgICAgICAgICAgICAgPC9yZWxhdGlvbnNoaXA+CiAgICAgICAgICAgICAgICAgIDxyZWxhdGlvbnNoaXAgbG9jYWxJZD0iNzIiIGxvY2F0b3I9IjExODo3LTEyMTo1NSIgYWxpYXM9IkhJViIgeHNpOnR5cGU9IldpdGgiPgogICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI1NCIgbG9jYXRvcj0iMTE4OjEyLTExODo2NCIgbmFtZT0iSElWIHRlc3QgcmVzdWx0cyByZXR1cm5lZCBpbiBtZWFzdXJlbWVudCBwZXJpb2QiIGxpYnJhcnlOYW1lPSJISUUiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgIDxzdWNoVGhhdCBsb2NhbElkPSI3MSIgbG9jYXRvcj0iMTE5OjE3LTEyMTo1NSIgeHNpOnR5cGU9IkFuZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjY1IiBsb2NhdG9yPSIxMTk6MTctMTIwOjU2IiB4c2k6dHlwZT0iQW5kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNTkiIGxvY2F0b3I9IjExOToxNy0xMTk6NDQiIG5hbWU9InJlZmVyZW5jZXMiIGxpYnJhcnlOYW1lPSJXQ29tIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI1NyIgbG9jYXRvcj0iMTE5OjE3LTExOToyOCIgcGF0aD0iaGFzTWVtYmVyIiBzY29wZT0iSUMiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI1OCIgbG9jYXRvcj0iMTE5OjQxLTExOTo0MyIgbmFtZT0iSElWIiB4c2k6dHlwZT0iQWxpYXNSZWYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI2NCIgbG9jYXRvcj0iMTIwOjExLTEyMDo1NiIgeHNpOnR5cGU9IkFmdGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iVG9EYXRlVGltZSIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI2MSIgbG9jYXRvcj0iMTIwOjExLTEyMDoyMCIgcGF0aD0iaXNzdWVkIiBzY29wZT0iSElWIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iVG9EYXRlVGltZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjYzIiBsb2NhdG9yPSIxMjA6MjgtMTIwOjU2IiB4c2k6dHlwZT0iU3RhcnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI2MiIgbG9jYXRvcj0iMTIwOjM3LTEyMDo1NiIgbmFtZT0iTWVhc3VyZW1lbnQgUGVyaW9kIiB4c2k6dHlwZT0iUGFyYW1ldGVyUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNzAiIGxvY2F0b3I9IjEyMToxMS0xMjE6NTUiIHhzaTp0eXBlPSJCZWZvcmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJUb0RhdGVUaW1lIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjY3IiBsb2NhdG9yPSIxMjE6MTEtMTIxOjIwIiBwYXRoPSJpc3N1ZWQiIHNjb3BlPSJISVYiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJUb0RhdGVUaW1lIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNjkiIGxvY2F0b3I9IjEyMToyOS0xMjE6NTUiIHhzaTp0eXBlPSJFbmQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI2OCIgbG9jYXRvcj0iMTIxOjM2LTEyMTo1NSIgbmFtZT0iTWVhc3VyZW1lbnQgUGVyaW9kIiB4c2k6dHlwZT0iUGFyYW1ldGVyUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgIDwvc3VjaFRoYXQ+CiAgICAgICAgICAgICAgICAgIDwvcmVsYXRpb25zaGlwPgogICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI3OSIgbG9jYXRvcj0iMTMxOjEtMTMyOjMiIG5hbWU9Ik1lYXN1cmUgT2JzZXJ2YXRpb24iIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9Ijc5Ij4KICAgICAgICAgICAgICAgPGE6cz4vKioKICogTWVhc3VyZSBPYnNlcnZhdGlvbgogKiBEZWZpbml0aW9uOiBGb3IgdGhlIGdlbmVyYWwgcG9wdWxhdGlvbjogTnVtYmVyIG9mIGVsaWNpdGVkIHBhcnRuZXJzIGFuZCBvdGhlciBjb250YWN0cyogb2YgcGVvcGxlIGRpYWdub3NlZCB3aXRoIEhJViB3aG8gcmVjZWl2ZWQgSFRTIHwgIHwgQWRkaXRpb25hbCBjYXNjYWRlIGRhdGEgY29sbGVjdGVkOiB8IOKAoiBOdW1iZXIgb2YgcGVvcGxlIGRpYWdub3NlZCB3aXRoIEhJViAoaW5kZXggY2FzZXMpIG9mZmVyZWQgcGFydG5lciBzZXJ2aWNlcyB8IOKAoiBOdW1iZXIgb2YgcGVvcGxlIGRpYWdub3NlZCB3aXRoIEhJViAoaW5kZXggY2FzZXMpIGFjY2VwdGluZyBwYXJ0bmVyIHNlcnZpY2VzIHwg4oCiwqBOdW1iZXIgb2YgY29udGFjdHMvcGFydG5lcnMgb2YgcGVvcGxlIGxpdmluZyB3aXRoIEhJViB3aG9zZSBpbmZvcm1hdGlvbiBpcyBlbGljaXRlZCBmcm9tIHBlb3BsZSBkaWFnbm9zZWQgd2l0aCBISVYgKGluZGV4IGNhc2VzKSB8ICB8IEZvciBrZXkgcG9wdWxhdGlvbnM6IE51bWJlciBvZiBlbGljaXRlZCBjb250YWN0czEgb2YgbWVtYmVycyBvZiBrZXkgcG9wdWxhdGlvbnMgd2hvIHJlY2VpdmVkIEhUUy4gfCBBZGRpdGlvbmFsIGNhc2NhZGUgZGF0YSBjb2xsZWN0ZWQ6IHwg4oCiwqBOdW1iZXIgb2Yga2V5IHBvcHVsYXRpb24gbWVtYmVycyBvZmZlcmVkIHNvY2lhbCBuZXR3b3JrLWJhc2VkL3BhcnRuZXIgc2VydmljZXMgfCDigKIgTnVtYmVyIG9mIGtleSBwb3B1bGF0aW9uIG1lbWJlcnMgYWNjZXB0aW5nIHNvY2lhbCBuZXR3b3JrLWJhc2VkL3BhcnRuZXIgc2VydmljZXMgfCDigKIgTnVtYmVyIG9mIGNvbnRhY3RzIG9mIGtleSBwb3B1bGF0aW9uIG1lbWJlcnMgZWxpY2l0ZWQKICogQ2FsY3VsYXRpb246IEZvciB0aGUgZ2VuZXJhbCBwb3B1bGF0aW9uOiBOdW1iZXIgb2YgZWxpY2l0ZWQgcGFydG5lcnMgYW5kIG90aGVyIGNvbnRhY3RzKiBvZiBwZW9wbGUgZGlhZ25vc2VkIHdpdGggSElWIHdobyByZWNlaXZlZCBIVFMgfCAgfCBBZGRpdGlvbmFsIGNhc2NhZGUgZGF0YSBjb2xsZWN0ZWQ6IHwg4oCiIE51bWJlciBvZiBwZW9wbGUgZGlhZ25vc2VkIHdpdGggSElWIChpbmRleCBjYXNlcykgb2ZmZXJlZCBwYXJ0bmVyIHNlcnZpY2VzIHwg4oCiIE51bWJlciBvZiBwZW9wbGUgZGlhZ25vc2VkIHdpdGggSElWIChpbmRleCBjYXNlcykgYWNjZXB0aW5nIHBhcnRuZXIgc2VydmljZXMgfCDigKLCoE51bWJlciBvZiBjb250YWN0cy9wYXJ0bmVycyBvZiBwZW9wbGUgbGl2aW5nIHdpdGggSElWIHdob3NlIGluZm9ybWF0aW9uIGlzIGVsaWNpdGVkIGZyb20gcGVvcGxlIGRpYWdub3NlZCB3aXRoIEhJViAoaW5kZXggY2FzZXMpIHwgIHwgRm9yIGtleSBwb3B1bGF0aW9uczogTnVtYmVyIG9mIGVsaWNpdGVkIGNvbnRhY3RzMSBvZiBtZW1iZXJzIG9mIGtleSBwb3B1bGF0aW9ucyB3aG8gcmVjZWl2ZWQgSFRTLiB8IEFkZGl0aW9uYWwgY2FzY2FkZSBkYXRhIGNvbGxlY3RlZDogfCDigKLCoE51bWJlciBvZiBrZXkgcG9wdWxhdGlvbiBtZW1iZXJzIG9mZmVyZWQgc29jaWFsIG5ldHdvcmstYmFzZWQvcGFydG5lciBzZXJ2aWNlcyB8IOKAoiBOdW1iZXIgb2Yga2V5IHBvcHVsYXRpb24gbWVtYmVycyBhY2NlcHRpbmcgc29jaWFsIG5ldHdvcmstYmFzZWQvcGFydG5lciBzZXJ2aWNlcyB8IOKAoiBOdW1iZXIgb2YgY29udGFjdHMgb2Yga2V5IHBvcHVsYXRpb24gbWVtYmVycyBlbGljaXRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogKi8gICAgIAoKZGVmaW5lIGZ1bmN0aW9uICZxdW90O01lYXN1cmUgT2JzZXJ2YXRpb24mcXVvdDsoUGF0aWVudCAmcXVvdDtQYXRpZW50JnF1b3Q7KToKICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSI3OCI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzgiPjE8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9Ijc4IiBsb2NhdG9yPSIxMzI6MyIgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIxIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICA8b3BlcmFuZCBuYW1lPSJQYXRpZW50Ij4KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9Ijc3IiBsb2NhdG9yPSIxMzE6NDctMTMxOjU1IiBuYW1lPSJmaGlyOlBhdGllbnQiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgPC9vcGVyYW5kPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI4MiIgbG9jYXRvcj0iMTM5OjEtMTQwOjQyIiBuYW1lPSJBZG1pbmlzdHJhdGl2ZSBHZW5kZXIgU3RyYXRpZmllciIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjgyIj4KICAgICAgICAgICAgICAgPGE6cz4vKiBlbmQgUG9wdWxhdGlvbnMgKi8KCi8qCiAqIERpc2FnZ3JlZ2F0b3JzCiAqLwoKZGVmaW5lICZxdW90O0FkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyJnF1b3Q7OgoJPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iODEiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjgwIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz5ISUU8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjgxIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtCeSBBZG1pbmlzdHJhdGl2ZSBHZW5kZXIgU3RyYXRpZmllciZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjgxIiBsb2NhdG9yPSIxNDA6Mi0xNDA6NDIiIG5hbWU9IkJ5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI4NSIgbG9jYXRvcj0iMTQyOjEtMTQzOjI2IiBuYW1lPSJBZ2UgU3RyYXRpZmllciIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9Ijg1Ij4KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgJnF1b3Q7QWdlIFN0cmF0aWZpZXImcXVvdDs6Cgk8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSI4NCI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODMiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPkhJRTwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODQiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0J5IEFnZSBTdHJhdGlmaWVyIDImcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI4NCIgbG9jYXRvcj0iMTQzOjItMTQzOjI2IiBuYW1lPSJCeSBBZ2UgU3RyYXRpZmllciAyIiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI4OCIgbG9jYXRvcj0iMTQ1OjEtMTQ2OjM4IiBuYW1lPSJHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iODgiPgogICAgICAgICAgICAgICA8YTpzPmRlZmluZSAmcXVvdDtHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyJnF1b3Q7OgoJPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iODciPgogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg2Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cz5ISUU8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg3Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtCeSBHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iODciIGxvY2F0b3I9IjE0NjoyLTE0NjozOCIgbmFtZT0iQnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciIgbGlicmFyeU5hbWU9IkhJRSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iOTEiIGxvY2F0b3I9IjE0ODoxLTE0OToyMCIgbmFtZT0icGF0aWVudEdyb3VwcyBTdHJhdGlmaWVyIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iOTEiPgogICAgICAgICAgICAgICA8YTpzPmRlZmluZSAmcXVvdDtwYXRpZW50R3JvdXBzIFN0cmF0aWZpZXImcXVvdDs6Cgk8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSI5MCI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODkiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPkhJRTwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTAiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O3BhdGllbnRHcm91cHMmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI5MCIgbG9jYXRvcj0iMTQ5OjItMTQ5OjIwIiBuYW1lPSJwYXRpZW50R3JvdXBzIiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI5NCIgbG9jYXRvcj0iMTUxOjEtMTUyOjQwIiBuYW1lPSJISVYgc3RhdHVzIG9mIHBhcnRuZXIgb3IgY29udGFjdCIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9Ijk0Ij4KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgJnF1b3Q7SElWIHN0YXR1cyBvZiBwYXJ0bmVyIG9yIGNvbnRhY3QmcXVvdDs6CiAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iOTMiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjkyIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz5ISUU8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjkzIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtISVYgc3RhdHVzIG9mIHBhcnRuZXIgb3IgY29udGFjdCZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjkzIiBsb2NhdG9yPSIxNTI6My0xNTI6NDAiIG5hbWU9IkhJViBzdGF0dXMgb2YgcGFydG5lciBvciBjb250YWN0IiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIxMTkiIGxvY2F0b3I9IjE1NDoxLTE1OTozMyIgbmFtZT0iU3RyYXRpZmljYXRpb24iIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIxMTkiPgogICAgICAgICAgICAgICA8YTpzPmRlZmluZSAmcXVvdDtTdHJhdGlmaWNhdGlvbiZxdW90OzoKIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjExOCI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTEzIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMTAiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjEwOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTA1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMDMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijk5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI5NyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijk1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5ISUU8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijk2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtCeSBBZG1pbmlzdHJhdGl2ZSBHZW5kZXIgU3RyYXRpZmllciZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijk3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5jb2RlPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gCiArIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijk4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4nOic8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiArIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjEwMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTAxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMDAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPkhJRTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTAxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtISVYgc3RhdHVzIG9mIHBhcnRuZXIgb3IgY29udGFjdCZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjEwMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+Y29kZTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgogICsgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTA0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4nOic8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiArIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjEwNyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTA2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5ISUU8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjEwNyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7QnkgQWdlIFN0cmF0aWZpZXIgMiZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPgorIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjEwOSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JzonPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4gKyA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMTIiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjExMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+SElFPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0J5IEdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXImcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4KKyA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMTciPgogICAgICAgICAgICAgICAgICAgICA8YTpzPkNvbWJpbmUoPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTE1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMTQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPkhJRTwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTE1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5wYXRpZW50R3JvdXBzPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4sIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjExNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JzonPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzPik8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIxMTgiIGxvY2F0b3I9IjE1NToyLTE1OTozMyIgeHNpOnR5cGU9IkNvbmNhdGVuYXRlIj4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMTEzIiBsb2NhdG9yPSIxNTU6Mi0xNTg6NDUiIHhzaTp0eXBlPSJDb25jYXRlbmF0ZSI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjExMCIgbG9jYXRvcj0iMTU1OjItMTU4OjUiIHhzaTp0eXBlPSJDb25jYXRlbmF0ZSI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjEwOCIgbG9jYXRvcj0iMTU1OjItMTU3OjM1IiB4c2k6dHlwZT0iQ29uY2F0ZW5hdGUiPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIxMDUiIGxvY2F0b3I9IjE1NToyLTE1Nzo3IiB4c2k6dHlwZT0iQ29uY2F0ZW5hdGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIxMDMiIGxvY2F0b3I9IjE1NToyLTE1Njo1MiIgeHNpOnR5cGU9IkNvbmNhdGVuYXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iOTkiIGxvY2F0b3I9IjE1NToyLTE1Njo2IiB4c2k6dHlwZT0iQ29uY2F0ZW5hdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI5NyIgbG9jYXRvcj0iMTU1OjItMTU1OjQ3IiBwYXRoPSJjb2RlIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9Ijk2IiBsb2NhdG9yPSIxNTU6Mi0xNTU6NDIiIG5hbWU9IkJ5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIiBsaWJyYXJ5TmFtZT0iSElFIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9Ijk4IiBsb2NhdG9yPSIxNTY6NC0xNTY6NiIgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9IjoiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMTAyIiBsb2NhdG9yPSIxNTY6MTAtMTU2OjUyIiBwYXRoPSJjb2RlIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjEwMSIgbG9jYXRvcj0iMTU2OjEwLTE1Njo0NyIgbmFtZT0iSElWIHN0YXR1cyBvZiBwYXJ0bmVyIG9yIGNvbnRhY3QiIGxpYnJhcnlOYW1lPSJISUUiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIxMDQiIGxvY2F0b3I9IjE1Nzo1LTE1Nzo3IiB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0iOiIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIxMDciIGxvY2F0b3I9IjE1NzoxMS0xNTc6MzUiIG5hbWU9IkJ5IEFnZSBTdHJhdGlmaWVyIDIiIGxpYnJhcnlOYW1lPSJISUUiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMTA5IiBsb2NhdG9yPSIxNTg6My0xNTg6NSIgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9IjoiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iVG9TdHJpbmciIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMTEyIiBsb2NhdG9yPSIxNTg6OS0xNTg6NDUiIG5hbWU9IkJ5IEdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXIiIGxpYnJhcnlOYW1lPSJISUUiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIxMTciIGxvY2F0b3I9IjE1OTozLTE1OTozMyIgeHNpOnR5cGU9IkNvbWJpbmUiPgogICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjExNSIgbG9jYXRvcj0iMTU5OjExLTE1OToyNyIgbmFtZT0icGF0aWVudEdyb3VwcyIgbGlicmFyeU5hbWU9IkhJRSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgPHNlcGFyYXRvciBsb2NhbElkPSIxMTYiIGxvY2F0b3I9IjE1OTozMC0xNTk6MzIiIHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSI6IiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgIDwvc3RhdGVtZW50cz4KPC9saWJyYXJ5Pgo="
    }
  ]
}