diff --git a/.gitignore b/.gitignore index db79bca9c1c..a70d9c474e8 100644 --- a/.gitignore +++ b/.gitignore @@ -153,3 +153,12 @@ local.properties # TeXlipse plugin .texlipse + +# JVM Dumps +core.* +javacore.* +jitdump.* +Snap.* + +# VS Code +.vscode diff --git a/hapi-fhir-android/pom.xml b/hapi-fhir-android/pom.xml index 73db7d5cb06..aec347585be 100644 --- a/hapi-fhir-android/pom.xml +++ b/hapi-fhir-android/pom.xml @@ -78,7 +78,11 @@ commons-codec test - + + org.mockito + mockito-core + test + org.slf4j slf4j-android diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/BaseRuntimeChildDatatypeDefinition.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/BaseRuntimeChildDatatypeDefinition.java index 043ebfbfeb4..5af5de574dc 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/BaseRuntimeChildDatatypeDefinition.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/context/BaseRuntimeChildDatatypeDefinition.java @@ -30,8 +30,11 @@ import org.hl7.fhir.instance.model.api.IBase; import ca.uhn.fhir.model.api.annotation.Child; import ca.uhn.fhir.model.api.annotation.Description; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public abstract class BaseRuntimeChildDatatypeDefinition extends BaseRuntimeDeclaredChildDefinition { + Logger ourLog = LoggerFactory.getLogger(BaseRuntimeChildDatatypeDefinition.class); private Class myDatatype; diff --git a/hapi-fhir-jpaserver-cql/.gitignore b/hapi-fhir-jpaserver-cql/.gitignore new file mode 100644 index 00000000000..c03394cb2ee --- /dev/null +++ b/hapi-fhir-jpaserver-cql/.gitignore @@ -0,0 +1,130 @@ +ca.*/ +target/ +/bin +nohup.out +LogMessages.html + +# Created by https://www.gitignore.io + +### Java ### +*.class + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + + +### Maven ### +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties + + +### Vim ### +[._]*.s[a-w][a-z] +[._]s[a-w][a-z] +*.un~ +Session.vim +.netrwhist +*~ + + +### Intellij ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm + +*.iml + +## Directory-based project format: +.idea/ +# if you remove the above rule, at least ignore the following: + +# User-specific stuff: +# .idea/workspace.xml +# .idea/tasks.xml +# .idea/dictionaries + +# Sensitive or high-churn files: +# .idea/dataSources.ids +# .idea/dataSources.xml +# .idea/sqlDataSources.xml +# .idea/dynamic.xml +# .idea/uiDesigner.xml + +# Gradle: +# .idea/gradle.xml +# .idea/libraries + +# Mongo Explorer plugin: +# .idea/mongoSettings.xml + +## File-based project format: +*.ipr +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties + + + +### Eclipse ### +*.pydevproject +.metadata +.gradle +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.loadpath + +# Eclipse Core +.project + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# JDT-specific (Eclipse Java Development Tools) + +# PDT-specific +.buildpath + +# sbteclipse plugin +.target + +# TeXlipse plugin +.texlipse + +/target/ diff --git a/hapi-fhir-jpaserver-cql/pom.xml b/hapi-fhir-jpaserver-cql/pom.xml new file mode 100644 index 00000000000..bb0547bd694 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/pom.xml @@ -0,0 +1,201 @@ + + + 4.0.0 + + + ca.uhn.hapi.fhir + hapi-deployable-pom + 5.3.0-SNAPSHOT + ../hapi-deployable-pom/pom.xml + + + hapi-fhir-jpaserver-cql + jar + + HAPI FHIR JPA Server - Clinical Quality Language + + + + ca.uhn.hapi.fhir + org.hl7.fhir.dstu3 + ${fhir_core_version} + compile + + + org.opencds.cqf.cql + evaluator.engine + ${cql-evaluator.version} + + + org.opencds.cqf + tooling + ${cqf-tooling.version} + + + org.slf4j + slf4j-log4j12 + + + javax.activation + javax.activation-api + + + javax.xml.bind + jaxb-api + + + jakarta.xml.bind + jakarta.xml.bind-api + + + jakarta.xml.bind + jaxb-api + + + com.sun.istack + istack-commons-tools + + + com.sun.istack + istack-commons-runtime + + + info.bliki.wiki + bliki-core + + + + + org.opencds.cqf.cql + engine + ${cql-engine.version} + + + org.slf4j + slf4j-log4j12 + + + jakarta.xml.bind + jakarta.xml.bind-api + + + + + org.opencds.cqf.cql + engine.fhir + ${cql-engine.version} + + + org.slf4j + slf4j-log4j12 + + + + + info.cqframework + cql-to-elm + ${cqframework.version} + + + jakarta.xml.bind + jaxb-api + + + jakarta.xml.bind + jakarta.xml.bind-api + + + + + javax.xml.bind + jaxb-api + ${jaxb_api_version} + + + com.jamesmurty.utils + java-xmlbuilder + 1.3 + + + ca.uhn.hapi.fhir + hapi-fhir-base + ${project.version} + + + ca.uhn.hapi.fhir + hapi-fhir-server + ${project.version} + + + ca.uhn.hapi.fhir + hapi-fhir-structures-dstu3 + ${project.version} + + + ca.uhn.hapi.fhir + hapi-fhir-structures-r4 + ${project.version} + + + ca.uhn.hapi.fhir + hapi-fhir-structures-r5 + ${project.version} + + + ca.uhn.hapi.fhir + hapi-fhir-jpaserver-base + ${project.version} + + + com.sun.activation + javax.activation + + + + + com.vladsch.flexmark + flexmark-all + 0.50.26 + + + + org.mockito + mockito-core + test + + + org.springframework + spring-test + test + + + ca.uhn.hapi.fhir + hapi-fhir-test-utilities + 5.3.0-SNAPSHOT + test + + + ca.uhn.hapi.fhir + hapi-fhir-jpaserver-test-utilities + 5.3.0-SNAPSHOT + test + + + + + + + org.basepom.maven + duplicate-finder-maven-plugin + + false + false + false + + + + + + diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/builder/BaseBuilder.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/builder/BaseBuilder.java new file mode 100644 index 00000000000..75b80f91385 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/builder/BaseBuilder.java @@ -0,0 +1,41 @@ +package ca.uhn.fhir.cql.common.builder; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +/* + These builders are based off of work performed by Philips Healthcare. + I simplified their work with this generic base class and added/expanded builders. + + Tip of the hat to Philips Healthcare developer nly98977 +*/ + +public class BaseBuilder { + + protected T complexProperty; + + public BaseBuilder(T complexProperty) { + this.complexProperty = complexProperty; + } + + public T build() { + return complexProperty; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/evaluation/LibraryLoader.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/evaluation/LibraryLoader.java new file mode 100644 index 00000000000..e84d489b404 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/evaluation/LibraryLoader.java @@ -0,0 +1,122 @@ +package ca.uhn.fhir.cql.common.evaluation; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import org.apache.commons.lang3.Validate; +import org.cqframework.cql.cql2elm.CqlTranslator; +import org.cqframework.cql.cql2elm.CqlTranslatorException; +import org.cqframework.cql.cql2elm.CqlTranslatorOptions; +import org.cqframework.cql.cql2elm.LibraryManager; +import org.cqframework.cql.cql2elm.ModelManager; +import org.cqframework.cql.elm.execution.Library; +import org.cqframework.cql.elm.execution.VersionedIdentifier; + +import javax.xml.bind.JAXBException; +import java.io.ByteArrayInputStream; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import static ca.uhn.fhir.cql.common.helper.TranslatorHelper.errorsToString; +import static ca.uhn.fhir.cql.common.helper.TranslatorHelper.getTranslator; +import static ca.uhn.fhir.cql.common.helper.TranslatorHelper.readLibrary; + +public class LibraryLoader implements org.opencds.cqf.cql.engine.execution.LibraryLoader { + private LibraryManager libraryManager; + private ModelManager modelManager; + private Map libraries = new HashMap<>(); + + // private static final Logger logger = + // LoggerFactory.getLogger(LibraryLoader.class); + + public Collection getLibraries() { + return this.libraries.values(); + } + + public LibraryManager getLibraryManager() { + return this.libraryManager; + } + + public ModelManager getModelManager() { + return this.modelManager; + } + + public LibraryLoader(LibraryManager libraryManager, ModelManager modelManager) { + this.libraryManager = libraryManager; + this.modelManager = modelManager; + } + + private Library resolveLibrary(VersionedIdentifier libraryIdentifier) { + Validate.notNull(libraryIdentifier, "Library identifier is null."); + + Validate.notNull(libraryIdentifier.getId(), "Library identifier id is null."); + + String mangledId = this.mangleIdentifer(libraryIdentifier); + + Library library = libraries.get(mangledId); + if (library == null) { + library = loadLibrary(libraryIdentifier); + libraries.put(mangledId, library); + } + + return library; + } + + private String mangleIdentifer(VersionedIdentifier libraryIdentifier) { + String id = libraryIdentifier.getId(); + String version = libraryIdentifier.getVersion(); + + return version == null ? id : id + "-" + version; + } + + private Library loadLibrary(VersionedIdentifier libraryIdentifier) { + org.hl7.elm.r1.VersionedIdentifier identifier = new org.hl7.elm.r1.VersionedIdentifier() + .withId(libraryIdentifier.getId()).withSystem(libraryIdentifier.getSystem()) + .withVersion(libraryIdentifier.getVersion()); + + ArrayList errors = new ArrayList<>(); + org.hl7.elm.r1.Library translatedLibrary = libraryManager.resolveLibrary(identifier, CqlTranslatorOptions.defaultOptions(), errors).getLibrary(); + + if (CqlTranslatorException.HasErrors(errors)) { + throw new IllegalArgumentException(errorsToString(errors)); + } + try { + CqlTranslator translator = getTranslator("", libraryManager, modelManager); + + if (translator.getErrors().size() > 0) { + throw new IllegalArgumentException(errorsToString(translator.getErrors())); + } + + return readLibrary(new ByteArrayInputStream( + translator.convertToXml(translatedLibrary).getBytes(StandardCharsets.UTF_8))); + } catch (JAXBException e) { + throw new IllegalArgumentException(String.format("Errors occurred translating library %s%s.", + identifier.getId(), identifier.getVersion() != null ? ("-" + identifier.getVersion()) : "")); + } + } + + @Override + public Library load(VersionedIdentifier versionedIdentifier) { + return resolveLibrary(versionedIdentifier); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/evaluation/MeasurePopulationType.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/evaluation/MeasurePopulationType.java new file mode 100644 index 00000000000..f37bafd5fda --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/evaluation/MeasurePopulationType.java @@ -0,0 +1,103 @@ +package ca.uhn.fhir.cql.common.evaluation; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import java.util.HashMap; +import java.util.Map; + +public enum MeasurePopulationType { + INITIALPOPULATION("initial-population", "Initial Population", + "The initial population refers to all patients or events to be evaluated by a quality measure involving patients who share a common set of specified characterstics. All patients or events counted (for example, as numerator, as denominator) are drawn from the initial population"), + + NUMERATOR("numerator", "Numerator", + "\tThe upper portion of a fraction used to calculate a rate, proportion, or ratio. Also called the measure focus, it is the target process, condition, event, or outcome. Numerator criteria are the processes or outcomes expected for each patient, or event defined in the denominator. A numerator statement describes the clinical action that satisfies the conditions of the measure"), + + NUMERATOREXCLUSION("numerator-exclusion", "Numerator Exclusion", + "Numerator exclusion criteria define patients or events to be removed from the numerator. Numerator exclusions are used in proportion and ratio measures to help narrow the numerator (for inverted measures)"), + + DENOMINATOR("denominator", "Denominator", + "The lower portion of a fraction used to calculate a rate, proportion, or ratio. The denominator can be the same as the initial population, or a subset of the initial population to further constrain the population for the purpose of the measure"), + + DENOMINATOREXCLUSION("denominator-exclusion", "Denominator Exclusion", + "Denominator exclusion criteria define patients or events that should be removed from the denominator before determining if numerator criteria are met. Denominator exclusions are used in proportion and ratio measures to help narrow the denominator. For example, patients with bilateral lower extremity amputations would be listed as a denominator exclusion for a measure requiring foot exams"), + + DENOMINATOREXCEPTION("denominator-exception", "Denominator Exception", + "Denominator exceptions are conditions that should remove a patient or event from the denominator of a measure only if the numerator criteria are not met. Denominator exception allows for adjustment of the calculated score for those providers with higher risk populations. Denominator exception criteria are only used in proportion measures"), + + MEASUREPOPULATION("measure-population", "Measure Population", + "Measure population criteria define the patients or events for which the individual observation for the measure should be taken. Measure populations are used for continuous variable measures rather than numerator and denominator criteria"), + + MEASUREPOPULATIONEXCLUSION("measure-population-exclusion", "Measure Population Exclusion", + "Measure population criteria define the patients or events that should be removed from the measure population before determining the outcome of one or more continuous variables defined for the measure observation. Measure population exclusion criteria are used within continuous variable measures to help narrow the measure population"), + + MEASUREOBSERVATION("measure-observation", "Measure Observation", + "Defines the individual observation to be performed for each patient or event in the measure population. Measure observations for each case in the population are aggregated to determine the overall measure score for the population"); + + private String code; + private String display; + private String definition; + + MeasurePopulationType(String code, String display, String definition) { + this.code = code; + this.display = display; + this.definition = definition; + } + + private static final Map lookup = new HashMap<>(); + + static { + for (MeasurePopulationType mpt : MeasurePopulationType.values()) { + lookup.put(mpt.toCode(), mpt); + } + } + + // This method can be used for reverse lookup purpose + public static MeasurePopulationType fromCode(String code) { + if (code != null && !code.isEmpty()) { + if (lookup.containsKey(code)) { + return lookup.get(code); + } + // } else if (Configuration.isAcceptInvalidEnums()) { + // return null; + // } else { + // // throw new FHIRException("Unknown MeasureScoring code \'" + code + "\'"); + // } + } + + return null; + } + + public String getSystem() { + return "http://hl7.org/fhir/measure-population"; + } + + public String toCode() { + return this.code; + } + + public String getDisplay() { + return this.display; + } + + public String getDefinition() { + return this.definition; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/evaluation/MeasureScoring.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/evaluation/MeasureScoring.java new file mode 100644 index 00000000000..ee94f6f332e --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/evaluation/MeasureScoring.java @@ -0,0 +1,84 @@ +package ca.uhn.fhir.cql.common.evaluation; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import java.util.HashMap; +import java.util.Map; + +public enum MeasureScoring { + PROPORTION("proportion", "Proportion", "The measure score is defined using a proportion"), + + RATIO("ratio", "Ratio", "The measure score is defined using a ratio"), + + CONTINUOUSVARIABLE("continuous-variable", "Continuous Variable", "The score is defined by a calculation of some quantity"), + + COHORT("cohort", "Cohort", "The measure is a cohort definition"); + + private String code; + private String display; + private String definition; + + MeasureScoring(String code, String display, String definition) { + this.code = code; + this.display = display; + this.definition = definition; + } + + private static final Map lookup = new HashMap<>(); + + static { + for (MeasureScoring ms : MeasureScoring.values()) { + lookup.put(ms.toCode(), ms); + } + } + + public static MeasureScoring fromCode(String code) { + if (code != null && !code.isEmpty()) { + if (lookup.containsKey(code)) { + return lookup.get(code); + } + // } else if (Configuration.isAcceptInvalidEnums()) { + // return null; + // } else { + // // throw new FHIRException("Unknown MeasureScoring code \'" + code + "\'"); + // } + } + + return null; + } + + public String toCode() { + return this.code; + } + + public String getSystem() { + return "http://hl7.org/fhir/measure-scoring"; + } + + public String getDefinition() { + return this.definition; + + } + + public String getDisplay() { + return this.display; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/helper/DateHelper.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/helper/DateHelper.java new file mode 100644 index 00000000000..9a71e61ecd9 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/helper/DateHelper.java @@ -0,0 +1,45 @@ +package ca.uhn.fhir.cql.common.helper; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import org.apache.commons.lang3.StringUtils; +import org.hl7.fhir.r4.model.DateTimeType; + +import java.util.Date; + +/** + * Helper class to resolve period dates used by {@link ca.uhn.fhir.cql.dstu3.evaluation.MeasureEvaluationSeed} + * and {@link ca.uhn.fhir.cql.r4.evaluation.MeasureEvaluationSeed}. + */ +public class DateHelper { + + /** + * + * @param date A date String in the format YYYY-MM-DD. + * @return A {@link java.util.Date} object representing the String data that was passed in. + */ + public static Date resolveRequestDate(String date) { + if (StringUtils.isBlank(date)) { + throw new IllegalArgumentException("date parameter cannot be blank!"); + } + return new DateTimeType(date).getValue(); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/helper/TranslatorHelper.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/helper/TranslatorHelper.java new file mode 100644 index 00000000000..ca2dc29e857 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/helper/TranslatorHelper.java @@ -0,0 +1,102 @@ +package ca.uhn.fhir.cql.common.helper; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import org.cqframework.cql.cql2elm.CqlTranslator; +import org.cqframework.cql.cql2elm.CqlTranslatorException; +import org.cqframework.cql.cql2elm.LibraryManager; +import org.cqframework.cql.cql2elm.ModelManager; +import org.cqframework.cql.elm.execution.Library; +import org.cqframework.cql.elm.tracking.TrackBack; +import org.opencds.cqf.cql.engine.execution.CqlLibraryReader; + +import javax.xml.bind.JAXBException; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; + +public class TranslatorHelper { + public static Library readLibrary(InputStream xmlStream) { + try { + return CqlLibraryReader.read(xmlStream); + } catch (IOException | JAXBException e) { + throw new IllegalArgumentException("Error encountered while reading ELM xml: " + e.getMessage()); + } + } + + public static String errorsToString(Iterable exceptions) { + ArrayList errors = new ArrayList<>(); + for (CqlTranslatorException error : exceptions) { + TrackBack tb = error.getLocator(); + String lines = tb == null ? "[n/a]" + : String.format("%s [%d:%d, %d:%d] ", + (tb.getLibrary() != null ? tb.getLibrary().getId() + + (tb.getLibrary().getVersion() != null ? ("-" + tb.getLibrary().getVersion()) : "") + : ""), + tb.getStartLine(), tb.getStartChar(), tb.getEndLine(), tb.getEndChar()); + errors.add(lines + error.getMessage()); + } + + return String.join("\n", errors); + } + + public static CqlTranslator getTranslator(String cql, LibraryManager libraryManager, ModelManager modelManager) { + return getTranslator(new ByteArrayInputStream(cql.getBytes(StandardCharsets.UTF_8)), libraryManager, + modelManager); + } + + public static CqlTranslator getTranslator(InputStream cqlStream, LibraryManager libraryManager, + ModelManager modelManager) { + ArrayList options = new ArrayList<>(); + options.add(CqlTranslator.Options.EnableAnnotations); + options.add(CqlTranslator.Options.EnableLocators); + options.add(CqlTranslator.Options.DisableListDemotion); + options.add(CqlTranslator.Options.DisableListPromotion); + options.add(CqlTranslator.Options.DisableMethodInvocation); + CqlTranslator translator; + try { + translator = CqlTranslator.fromStream(cqlStream, modelManager, libraryManager, + options.toArray(new CqlTranslator.Options[options.size()])); + } catch (IOException e) { + throw new IllegalArgumentException( + String.format("Errors occurred translating library: %s", e.getMessage())); + } + + return translator; + } + + public static Library translateLibrary(String cql, LibraryManager libraryManager, ModelManager modelManager) { + return translateLibrary(new ByteArrayInputStream(cql.getBytes(StandardCharsets.UTF_8)), libraryManager, + modelManager); + } + + public static Library translateLibrary(InputStream cqlStream, LibraryManager libraryManager, + ModelManager modelManager) { + CqlTranslator translator = getTranslator(cqlStream, libraryManager, modelManager); + return readLibrary(new ByteArrayInputStream(translator.toXml().getBytes(StandardCharsets.UTF_8))); + } + + public static Library translateLibrary(CqlTranslator translator) { + return readLibrary(new ByteArrayInputStream(translator.toXml().getBytes(StandardCharsets.UTF_8))); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/helper/UsingHelper.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/helper/UsingHelper.java new file mode 100644 index 00000000000..8a212a97aa0 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/helper/UsingHelper.java @@ -0,0 +1,63 @@ +package ca.uhn.fhir.cql.common.helper; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import org.apache.commons.lang3.tuple.Triple; +import org.cqframework.cql.elm.execution.Library.Usings; +import org.cqframework.cql.elm.execution.UsingDef; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class UsingHelper { + + private static Map urlsByModelName = new HashMap() { + private static final long serialVersionUID = 1L; + + { + put("FHIR", "http://hl7.org/fhir"); + put("QDM", "urn:healthit-gov:qdm:v5_4"); + } + }; + + // Returns a list of (Model, Version, Url) for the usings in library. The + // "System" using is excluded. + public static List> getUsingUrlAndVersion(Usings usings) { + if (usings == null || usings.getDef() == null) { + return Collections.emptyList(); + } + + List> usingDefs = new ArrayList<>(); + for (UsingDef def : usings.getDef()) { + + if (def.getLocalIdentifier().equals("System")) + continue; + + usingDefs.add(Triple.of(def.getLocalIdentifier(), def.getVersion(), + urlsByModelName.get(def.getLocalIdentifier()))); + } + + return usingDefs; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/provider/CqlProviderFactory.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/provider/CqlProviderFactory.java new file mode 100644 index 00000000000..8c23050a59a --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/provider/CqlProviderFactory.java @@ -0,0 +1,47 @@ +package ca.uhn.fhir.cql.common.provider; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.context.ConfigurationException; +import ca.uhn.fhir.context.FhirContext; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Service; + +@Service +public class CqlProviderFactory { + @Autowired + private FhirContext myFhirContext; + + @Autowired + private ApplicationContext myApplicationContext; + + public Object getMeasureOperationsProvider() { + switch (myFhirContext.getVersion().getVersion()) { + case DSTU3: + return myApplicationContext.getBean(ca.uhn.fhir.cql.dstu3.provider.MeasureOperationsProvider.class); + case R4: + return myApplicationContext.getBean(ca.uhn.fhir.cql.r4.provider.MeasureOperationsProvider.class); + default: + throw new ConfigurationException("CQL is not supported for FHIR version " + myFhirContext.getVersion().getVersion()); + } + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/provider/CqlProviderLoader.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/provider/CqlProviderLoader.java new file mode 100644 index 00000000000..96ece5c23b4 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/provider/CqlProviderLoader.java @@ -0,0 +1,55 @@ +package ca.uhn.fhir.cql.common.provider; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.context.ConfigurationException; +import ca.uhn.fhir.context.FhirContext; +import ca.uhn.fhir.rest.server.provider.ResourceProviderFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; + +@Service +public class CqlProviderLoader { + private static final Logger myLogger = LoggerFactory.getLogger(CqlProviderLoader.class); + @Autowired + private FhirContext myFhirContext; + @Autowired + private ResourceProviderFactory myResourceProviderFactory; + @Autowired + private CqlProviderFactory myCqlProviderFactory; + + @PostConstruct + public void loadProvider() { + switch (myFhirContext.getVersion().getVersion()) { + case DSTU3: + case R4: + myLogger.info("Registering CQL Provider"); + myResourceProviderFactory.addSupplier(() -> myCqlProviderFactory.getMeasureOperationsProvider()); + break; + default: + throw new ConfigurationException("CQL not supported for FHIR version " + myFhirContext.getVersion().getVersion()); + } + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/provider/EvaluationProviderFactory.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/provider/EvaluationProviderFactory.java new file mode 100644 index 00000000000..77fd7d62b48 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/provider/EvaluationProviderFactory.java @@ -0,0 +1,37 @@ +package ca.uhn.fhir.cql.common.provider; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import org.opencds.cqf.cql.engine.data.DataProvider; +import org.opencds.cqf.cql.engine.terminology.TerminologyProvider; + +// TODO: This interface is a partial duplicate of the provider factory interface +// in the cql service layer. We need another round of refactoring to consolidate that. +public interface EvaluationProviderFactory { + public DataProvider createDataProvider(String model, String version); + + public DataProvider createDataProvider(String model, String version, String url, String user, String pass); + + public DataProvider createDataProvider(String model, String version, TerminologyProvider terminologyProvider); + + public TerminologyProvider createTerminologyProvider(String model, String version, String url, String user, + String pass); +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/provider/LibraryResolutionProvider.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/provider/LibraryResolutionProvider.java new file mode 100644 index 00000000000..6a03fc1dca5 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/provider/LibraryResolutionProvider.java @@ -0,0 +1,106 @@ +package ca.uhn.fhir.cql.common.provider; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import java.util.function.Function; + +public interface LibraryResolutionProvider { + public LibraryType resolveLibraryById(String libraryId); + + public LibraryType resolveLibraryByName(String libraryName, String libraryVersion); + + public LibraryType resolveLibraryByCanonicalUrl(String libraryUrl); + + + // Hmmm... Probably need to think through this use case a bit more. + // Should we throw an exception? Should this be a different interface? + public void update(LibraryType library); + + + // This function assumes that you're selecting from a set of libraries with the same name. + // It returns the closest matching version, or the max version if no version is specified. + static LibraryType selectFromList(Iterable libraries, String libraryVersion, Function getVersion) { + LibraryType library = null; + LibraryType maxVersion = null; + for (LibraryType l : libraries) { + String currentVersion = getVersion.apply(l); + if ((libraryVersion != null && currentVersion.equals(libraryVersion)) || + (libraryVersion == null && currentVersion == null)) + { + library = l; + } + + if (maxVersion == null || compareVersions( + getVersion.apply(maxVersion), + getVersion.apply(l) ) < 0){ + maxVersion = l; + } + } + + // If we were not given a version, return the highest found + if (libraryVersion == null && maxVersion != null) { + return maxVersion; + } + + return library; + } + + public static int compareVersions(String version1, String version2) + { + // Treat null as MAX VERSION + if (version1 == null && version2 == null) { + return 0; + } + + if (version1 != null && version2 == null) { + return -1; + } + + if (version1 == null && version2 != null) { + return 1; + } + + String[] string1Vals = version1.split("\\."); + String[] string2Vals = version2.split("\\."); + + int length = Math.max(string1Vals.length, string2Vals.length); + + for (int i = 0; i < length; i++) + { + Integer v1 = (i < string1Vals.length)?Integer.parseInt(string1Vals[i]):0; + Integer v2 = (i < string2Vals.length)?Integer.parseInt(string2Vals[i]):0; + + //Making sure Version1 bigger than version2 + if (v1 > v2) + { + return 1; + } + //Making sure Version1 smaller than version2 + else if(v1 < v2) + { + return -1; + } + } + + //Both are equal + return 0; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/provider/LibrarySourceProvider.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/provider/LibrarySourceProvider.java new file mode 100644 index 00000000000..6f4ffa4155b --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/provider/LibrarySourceProvider.java @@ -0,0 +1,69 @@ +package ca.uhn.fhir.cql.common.provider; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import org.cqframework.cql.cql2elm.FhirLibrarySourceProvider; +import org.hl7.elm.r1.VersionedIdentifier; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.util.function.Function; + +public class LibrarySourceProvider + implements org.cqframework.cql.cql2elm.LibrarySourceProvider { + private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(LibrarySourceProvider.class); + + private FhirLibrarySourceProvider innerProvider; + private LibraryResolutionProvider provider; + private Function> getAttachments; + private Function getContentType; + private Function getContent; + + public LibrarySourceProvider(LibraryResolutionProvider provider, + Function> getAttachments, + Function getContentType, Function getContent) { + + this.innerProvider = new FhirLibrarySourceProvider(); + + this.provider = provider; + this.getAttachments = getAttachments; + this.getContentType = getContentType; + this.getContent = getContent; + } + + @Override + public InputStream getLibrarySource(VersionedIdentifier versionedIdentifier) { + try { + LibraryType lib = this.provider.resolveLibraryByName(versionedIdentifier.getId(), + versionedIdentifier.getVersion()); + for (AttachmentType attachment : this.getAttachments.apply(lib)) { + if ("text/cql".equals(this.getContentType.apply(attachment))) { + return new ByteArrayInputStream(this.getContent.apply(attachment)); + } + } + } catch (Exception e) { + ourLog.warn("Failed to parse Library source for VersionedIdentifier '" + versionedIdentifier + "'!" + + System.lineSeparator() + e.getMessage(), e); + } + + return this.innerProvider.getLibrarySource(versionedIdentifier); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/retrieve/JpaFhirRetrieveProvider.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/retrieve/JpaFhirRetrieveProvider.java new file mode 100644 index 00000000000..dc5e3fe24ff --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/common/retrieve/JpaFhirRetrieveProvider.java @@ -0,0 +1,114 @@ +package ca.uhn.fhir.cql.common.retrieve; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao; +import ca.uhn.fhir.model.api.IQueryParameterType; +import ca.uhn.fhir.rest.api.server.IBundleProvider; +import org.hl7.fhir.instance.model.api.IBaseResource; +import org.opencds.cqf.cql.engine.fhir.retrieve.SearchParamFhirRetrieveProvider; +import org.opencds.cqf.cql.engine.fhir.searchparam.SearchParameterMap; +import org.opencds.cqf.cql.engine.fhir.searchparam.SearchParameterResolver; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Component +public class JpaFhirRetrieveProvider extends SearchParamFhirRetrieveProvider { + + private static final Logger logger = LoggerFactory.getLogger(JpaFhirRetrieveProvider.class); + + DaoRegistry registry; + + @Autowired + public JpaFhirRetrieveProvider(DaoRegistry registry, SearchParameterResolver searchParameterResolver) { + super(searchParameterResolver); + this.registry = registry; + } + + @Override + protected Iterable executeQueries(String dataType, List queries) { + if (queries == null || queries.isEmpty()) { + return Collections.emptyList(); + } + + List objects = new ArrayList<>(); + for (SearchParameterMap map : queries) { + objects.addAll(executeQuery(dataType, map)); + } + + return objects; + } + + protected Collection executeQuery(String dataType, SearchParameterMap map) { + // TODO: Once HAPI breaks this out from the server dependencies + // we can include it on its own. + ca.uhn.fhir.jpa.searchparam.SearchParameterMap hapiMap = new ca.uhn.fhir.jpa.searchparam.SearchParameterMap(); + try { + + Method[] methods = hapiMap.getClass().getDeclaredMethods(); + List methodList = Arrays.asList(methods); + List puts = methodList.stream().filter(x -> x.getName().equals("put")).collect(Collectors.toList()); + Method method = puts.get(0); + method.setAccessible(true); + + for (Map.Entry>> entry : map.entrySet()) { + method.invoke(hapiMap, entry.getKey(), entry.getValue()); + } + + } catch (Exception e) { + logger.warn("Error converting search parameter map", e); + } + + IFhirResourceDao dao = this.registry.getResourceDao(dataType); + + IBundleProvider bundleProvider = dao.search(hapiMap); + if (bundleProvider.size() == null) { + return resolveResourceList(bundleProvider.getResources(0, 10000)); + } + if (bundleProvider.size() == 0) { + return new ArrayList<>(); + } + List resourceList = bundleProvider.getResources(0, bundleProvider.size()); + return resolveResourceList(resourceList); + } + + public synchronized Collection resolveResourceList(List resourceList) { + List ret = new ArrayList<>(); + for (IBaseResource res : resourceList) { + Class clazz = res.getClass(); + ret.add(clazz.cast(res)); + } + // ret.addAll(resourceList); + return ret; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/config/BaseCqlConfig.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/config/BaseCqlConfig.java new file mode 100644 index 00000000000..9468267fbd6 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/config/BaseCqlConfig.java @@ -0,0 +1,49 @@ +package ca.uhn.fhir.cql.config; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.cql.common.provider.CqlProviderFactory; +import ca.uhn.fhir.cql.common.provider.CqlProviderLoader; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import org.cqframework.cql.cql2elm.model.Model; +import org.hl7.elm.r1.VersionedIdentifier; +import org.springframework.context.annotation.Bean; + +public abstract class BaseCqlConfig { + + @Bean + CqlProviderFactory cqlProviderFactory() { + return new CqlProviderFactory(); + } + + @Bean + CqlProviderLoader cqlProviderLoader() { + return new CqlProviderLoader(); + } + + @Bean(name="globalModelCache") + Map globalModelCache() { + return new ConcurrentHashMap(); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/config/CqlDstu3Config.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/config/CqlDstu3Config.java new file mode 100644 index 00000000000..99142ae7ea6 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/config/CqlDstu3Config.java @@ -0,0 +1,85 @@ +package ca.uhn.fhir.cql.config; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.context.FhirContext; +import ca.uhn.fhir.context.support.IValidationSupport; +import ca.uhn.fhir.cql.common.provider.EvaluationProviderFactory; +import ca.uhn.fhir.cql.common.provider.LibraryResolutionProvider; +import ca.uhn.fhir.cql.dstu3.evaluation.ProviderFactory; +import ca.uhn.fhir.cql.dstu3.helper.LibraryHelper; +import ca.uhn.fhir.cql.dstu3.provider.JpaTerminologyProvider; +import ca.uhn.fhir.cql.dstu3.provider.LibraryResolutionProviderImpl; +import ca.uhn.fhir.cql.dstu3.provider.MeasureOperationsProvider; +import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import ca.uhn.fhir.jpa.rp.dstu3.ValueSetResourceProvider; +import ca.uhn.fhir.jpa.term.api.ITermReadSvcDstu3; + +import org.opencds.cqf.cql.engine.model.ModelResolver; + +import java.util.Map; + +import org.cqframework.cql.cql2elm.model.Model; +import org.hl7.elm.r1.VersionedIdentifier; +import org.opencds.cqf.cql.engine.fhir.model.Dstu3FhirModelResolver; +import org.opencds.cqf.cql.engine.terminology.TerminologyProvider; +import org.opencds.cqf.cql.evaluator.engine.model.CachingModelResolverDecorator; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; + +@Configuration +public class CqlDstu3Config extends BaseCqlConfig { + @Lazy + @Bean + TerminologyProvider terminologyProvider(ITermReadSvcDstu3 theITermReadSvc, + ValueSetResourceProvider theValueSetResourceProvider, IValidationSupport theValidationSupport) { + return new JpaTerminologyProvider(theITermReadSvc, theValueSetResourceProvider, theValidationSupport); + } + + @Lazy + @Bean + EvaluationProviderFactory evaluationProviderFactory(FhirContext theFhirContext, DaoRegistry theDaoRegistry, TerminologyProvider theLocalSystemTerminologyProvider, ModelResolver modelResolver) { + return new ProviderFactory(theFhirContext, theDaoRegistry, theLocalSystemTerminologyProvider, modelResolver); + } + + @Lazy + @Bean + LibraryResolutionProvider libraryResolutionProvider() { + return new LibraryResolutionProviderImpl(); + } + + @Lazy + @Bean + public MeasureOperationsProvider measureOperationsProvider() { + return new MeasureOperationsProvider(); + } + + @Bean + public ModelResolver fhirModelResolver () { + return new CachingModelResolverDecorator(new Dstu3FhirModelResolver()); + } + + @Bean + public LibraryHelper libraryHelper(Map globalModelCache) { + return new LibraryHelper(globalModelCache); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/config/CqlR4Config.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/config/CqlR4Config.java new file mode 100644 index 00000000000..c16e31ea71f --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/config/CqlR4Config.java @@ -0,0 +1,92 @@ +package ca.uhn.fhir.cql.config; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.context.FhirContext; +import ca.uhn.fhir.context.support.IValidationSupport; +import ca.uhn.fhir.cql.common.provider.CqlProviderFactory; +import ca.uhn.fhir.cql.common.provider.EvaluationProviderFactory; +import ca.uhn.fhir.cql.common.provider.LibraryResolutionProvider; +import ca.uhn.fhir.cql.r4.provider.LibraryResolutionProviderImpl; +import ca.uhn.fhir.cql.r4.evaluation.ProviderFactory; +import ca.uhn.fhir.cql.r4.helper.LibraryHelper; +import ca.uhn.fhir.cql.r4.provider.JpaTerminologyProvider; +import ca.uhn.fhir.cql.r4.provider.MeasureOperationsProvider; +import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import ca.uhn.fhir.jpa.rp.r4.ValueSetResourceProvider; +import ca.uhn.fhir.jpa.term.api.ITermReadSvcR4; + +import org.opencds.cqf.cql.engine.model.ModelResolver; + +import java.util.Map; + +import org.cqframework.cql.cql2elm.model.Model; +import org.hl7.elm.r1.VersionedIdentifier; +import org.opencds.cqf.cql.engine.fhir.model.R4FhirModelResolver; +import org.opencds.cqf.cql.engine.terminology.TerminologyProvider; +import org.opencds.cqf.cql.evaluator.engine.model.CachingModelResolverDecorator; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; + +@Configuration +public class CqlR4Config extends BaseCqlConfig { + + @Lazy + @Bean + CqlProviderFactory cqlProviderFactory() { + return new CqlProviderFactory(); + } + + @Lazy + @Bean + TerminologyProvider terminologyProvider(ITermReadSvcR4 theITermReadSvc, ValueSetResourceProvider theValueSetResourceProvider, IValidationSupport theValidationSupport) { + return new JpaTerminologyProvider(theITermReadSvc,theValueSetResourceProvider, theValidationSupport); + } + + @Lazy + @Bean + EvaluationProviderFactory evaluationProviderFactory(FhirContext theFhirContext, DaoRegistry theDaoRegistry, TerminologyProvider theLocalSystemTerminologyProvider, ModelResolver modelResolver) { + return new ProviderFactory(theFhirContext, theDaoRegistry, theLocalSystemTerminologyProvider, modelResolver); + } + + @Lazy + @Bean + LibraryResolutionProvider libraryResolutionProvider() { + return new LibraryResolutionProviderImpl(); + } + + @Lazy + @Bean + public MeasureOperationsProvider measureOperationsProvider() { + return new MeasureOperationsProvider(); + } + + @Bean + public ModelResolver fhirModelResolver () { + return new CachingModelResolverDecorator(new R4FhirModelResolver()); + } + + @Bean + public LibraryHelper libraryHelper(Map globalModelCache) { + return new LibraryHelper(globalModelCache); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/builder/MeasureReportBuilder.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/builder/MeasureReportBuilder.java new file mode 100644 index 00000000000..0b96b546c01 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/builder/MeasureReportBuilder.java @@ -0,0 +1,69 @@ +package ca.uhn.fhir.cql.dstu3.builder; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.cql.common.builder.BaseBuilder; +import org.hl7.fhir.dstu3.model.MeasureReport; +import org.hl7.fhir.dstu3.model.Period; +import org.hl7.fhir.dstu3.model.Reference; +import org.hl7.fhir.exceptions.FHIRException; +import org.opencds.cqf.cql.engine.runtime.Interval; + +import java.util.Date; + +public class MeasureReportBuilder extends BaseBuilder { + private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(MeasureReportBuilder.class); + + public MeasureReportBuilder() { + super(new MeasureReport()); + } + + public MeasureReportBuilder buildStatus(String status) { + try { + this.complexProperty.setStatus(MeasureReport.MeasureReportStatus.fromCode(status)); + } catch (FHIRException e) { + ourLog.warn("Exception caught while attempting to set Status to '" + status + "', assuming status COMPLETE!" + + System.lineSeparator() + e.getMessage()); + this.complexProperty.setStatus(MeasureReport.MeasureReportStatus.COMPLETE); + } + return this; + } + + public MeasureReportBuilder buildType(MeasureReport.MeasureReportType type) { + this.complexProperty.setType(type); + return this; + } + + public MeasureReportBuilder buildMeasureReference(String measureRef) { + this.complexProperty.setMeasure(new Reference(measureRef)); + return this; + } + + public MeasureReportBuilder buildPatientReference(String patientRef) { + this.complexProperty.setPatient(new Reference(patientRef)); + return this; + } + + public MeasureReportBuilder buildPeriod(Interval period) { + this.complexProperty.setPeriod(new Period().setStart((Date) period.getStart()).setEnd((Date) period.getEnd())); + return this; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/evaluation/MeasureEvaluation.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/evaluation/MeasureEvaluation.java new file mode 100644 index 00000000000..ab22c8830f3 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/evaluation/MeasureEvaluation.java @@ -0,0 +1,730 @@ +package ca.uhn.fhir.cql.dstu3.evaluation; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.cql.common.evaluation.MeasurePopulationType; +import ca.uhn.fhir.cql.common.evaluation.MeasureScoring; +import ca.uhn.fhir.cql.dstu3.builder.MeasureReportBuilder; +import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import ca.uhn.fhir.jpa.searchparam.SearchParameterMap; +import ca.uhn.fhir.rest.api.server.IBundleProvider; +import ca.uhn.fhir.rest.param.ReferenceParam; +import org.cqframework.cql.elm.execution.ExpressionDef; +import org.cqframework.cql.elm.execution.FunctionDef; +import org.hl7.fhir.dstu3.model.CodeableConcept; +import org.hl7.fhir.dstu3.model.Coding; +import org.hl7.fhir.dstu3.model.Extension; +import org.hl7.fhir.dstu3.model.IdType; +import org.hl7.fhir.dstu3.model.IntegerType; +import org.hl7.fhir.dstu3.model.ListResource; +import org.hl7.fhir.dstu3.model.Measure; +import org.hl7.fhir.dstu3.model.MeasureReport; +import org.hl7.fhir.dstu3.model.Observation; +import org.hl7.fhir.dstu3.model.Patient; +import org.hl7.fhir.dstu3.model.Reference; +import org.hl7.fhir.dstu3.model.Resource; +import org.hl7.fhir.dstu3.model.StringType; +import org.hl7.fhir.dstu3.model.UriType; +import org.hl7.fhir.instance.model.api.IBaseResource; +import org.opencds.cqf.cql.engine.execution.Context; +import org.opencds.cqf.cql.engine.execution.Variable; +import org.opencds.cqf.cql.engine.runtime.Code; +import org.opencds.cqf.cql.engine.runtime.Interval; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; + +public class MeasureEvaluation { + + private static final Logger logger = LoggerFactory.getLogger(MeasureEvaluation.class); + + private Interval measurementPeriod; + private DaoRegistry registry; + + public MeasureEvaluation(DaoRegistry registry, Interval measurementPeriod) { + this.registry = registry; + this.measurementPeriod = measurementPeriod; + } + + public MeasureReport evaluatePatientMeasure(Measure measure, Context context, String patientId) { + logger.info("Generating individual report"); + + if (patientId == null) { + return evaluatePopulationMeasure(measure, context); + } + + Patient patient = registry.getResourceDao(Patient.class).read(new IdType(patientId)); + // Iterable patientRetrieve = provider.retrieve("Patient", "id", + // patientId, "Patient", null, null, null, null, null, null, null, null); + // Patient patient = null; + // if (patientRetrieve.iterator().hasNext()) { + // patient = (Patient) patientRetrieve.iterator().next(); + // } + + + + boolean isSingle = true; + return evaluate(measure, context, + patient == null ? Collections.emptyList() : Collections.singletonList(patient), + MeasureReport.MeasureReportType.INDIVIDUAL, isSingle); + } + + public MeasureReport evaluatePatientListMeasure(Measure measure, Context context, String practitionerRef) { + logger.info("Generating patient-list report"); + + List patients = practitionerRef == null ? getAllPatients() : getPractitionerPatients(practitionerRef); + boolean isSingle = false; + return evaluate(measure, context, patients, MeasureReport.MeasureReportType.PATIENTLIST, isSingle); + } + + private List getPractitionerPatients(String practitionerRef) { + SearchParameterMap map = new SearchParameterMap(); + map.add("general-practitioner", new ReferenceParam( + practitionerRef.startsWith("Practitioner/") ? practitionerRef : "Practitioner/" + practitionerRef)); + + List patients = new ArrayList<>(); + IBundleProvider patientProvider = registry.getResourceDao("Patient").search(map); + List patientList = patientProvider.getResources(0, patientProvider.size()); + patientList.forEach(x -> patients.add((Patient) x)); + return patients; + } + + private List getAllPatients() { + List patients = new ArrayList<>(); + IBundleProvider patientProvider = registry.getResourceDao("Patient").search(new SearchParameterMap()); + List patientList = patientProvider.getResources(0, patientProvider.size()); + patientList.forEach(x -> patients.add((Patient) x)); + return patients; + } + + public MeasureReport evaluatePopulationMeasure(Measure measure, Context context) { + logger.info("Generating summary report"); + + boolean isSingle = false; + return evaluate(measure, context, getAllPatients(), MeasureReport.MeasureReportType.SUMMARY, isSingle); + } + + @SuppressWarnings("unchecked") + private void clearExpressionCache(Context context) { + // Hack to clear expression cache + // See cqf-ruler github issue #153 + try { + Field privateField = Context.class.getDeclaredField("expressions"); + privateField.setAccessible(true); + LinkedHashMap expressions = (LinkedHashMap) privateField.get(context); + expressions.clear(); + + } catch (Exception e) { + logger.warn("Error resetting expression cache", e); + } + } + + private Resource evaluateObservationCriteria(Context context, Patient patient, Resource resource, Measure.MeasureGroupPopulationComponent pop, MeasureReport report) { + if (pop == null || !pop.hasCriteria()) { + return null; + } + + context.setContextValue("Patient", patient.getIdElement().getIdPart()); + + clearExpressionCache(context); + + String observationName = pop.getCriteria(); + ExpressionDef ed = context.resolveExpressionRef(observationName); + if (!(ed instanceof FunctionDef)) { + throw new IllegalArgumentException(String.format("Measure observation %s does not reference a function definition", observationName)); + } + + Object result = null; + context.pushWindow(); + try { + context.push(new Variable().withName(((FunctionDef)ed).getOperand().get(0).getName()).withValue(resource)); + result = ed.getExpression().evaluate(context); + } + finally { + context.popWindow(); + } + + if (result instanceof Resource) { + return (Resource)result; + } + + Observation obs = new Observation(); + obs.setStatus(Observation.ObservationStatus.FINAL); + obs.setId(UUID.randomUUID().toString()); + CodeableConcept cc = new CodeableConcept(); + cc.setText(observationName); + obs.setCode(cc); + Extension obsExtension = new Extension().setUrl("http://hl7.org/fhir/StructureDefinition/cqf-measureInfo"); + Extension extExtMeasure = new Extension() + .setUrl("measure") + .setValue(new UriType("http://hl7.org/fhir/us/cqfmeasures/" + report.getMeasure())); + obsExtension.addExtension(extExtMeasure); + Extension extExtPop = new Extension() + .setUrl("populationId") + .setValue(new StringType(observationName)); + obsExtension.addExtension(extExtPop); + obs.addExtension(obsExtension); + return obs; + } + + @SuppressWarnings("unchecked") + private Iterable evaluateCriteria(Context context, Patient patient, + Measure.MeasureGroupPopulationComponent pop) { + if (pop == null || !pop.hasCriteria()) { + return Collections.emptyList(); + } + + context.setContextValue("Patient", patient.getIdElement().getIdPart()); + + clearExpressionCache(context); + + Object result = context.resolveExpressionRef(pop.getCriteria()).evaluate(context); + if (result == null) { + return Collections.emptyList(); + } + + if (result instanceof Boolean) { + if (((Boolean) result)) { + return Collections.singletonList(patient); + } else { + return Collections.emptyList(); + } + } + + return (Iterable) result; + } + + private boolean evaluatePopulationCriteria(Context context, Patient patient, + Measure.MeasureGroupPopulationComponent criteria, HashMap population, + HashMap populationPatients, Measure.MeasureGroupPopulationComponent exclusionCriteria, + HashMap exclusionPopulation, HashMap exclusionPatients) { + boolean inPopulation = false; + if (criteria != null) { + for (Resource resource : evaluateCriteria(context, patient, criteria)) { + inPopulation = true; + population.put(resource.getIdElement().getIdPart(), resource); + } + } + + if (inPopulation) { + // Are they in the exclusion? + if (exclusionCriteria != null) { + for (Resource resource : evaluateCriteria(context, patient, exclusionCriteria)) { + inPopulation = false; + exclusionPopulation.put(resource.getIdElement().getIdPart(), resource); + population.remove(resource.getIdElement().getIdPart()); + } + } + } + + if (inPopulation && populationPatients != null) { + populationPatients.put(patient.getIdElement().getIdPart(), patient); + } + if (!inPopulation && exclusionPatients != null) { + exclusionPatients.put(patient.getIdElement().getIdPart(), patient); + } + + return inPopulation; + } + + private void addPopulationCriteriaReport(MeasureReport report, + MeasureReport.MeasureReportGroupComponent reportGroup, + Measure.MeasureGroupPopulationComponent populationCriteria, int populationCount, + Iterable patientPopulation) { + if (populationCriteria != null) { + MeasureReport.MeasureReportGroupPopulationComponent populationReport = new MeasureReport.MeasureReportGroupPopulationComponent(); + populationReport.setIdentifier(populationCriteria.getIdentifier()); + populationReport.setCode(populationCriteria.getCode()); + if (report.getType() == MeasureReport.MeasureReportType.PATIENTLIST && patientPopulation != null) { + ListResource subjectList = new ListResource(); + subjectList.setId(UUID.randomUUID().toString()); + populationReport.setPatients(new Reference().setReference("#" + subjectList.getId())); + for (Patient patient : patientPopulation) { + ListResource.ListEntryComponent entry = new ListResource.ListEntryComponent() + .setItem(new Reference() + .setReference(patient.getIdElement().getIdPart().startsWith("Patient/") + ? patient.getIdElement().getIdPart() + : String.format("Patient/%s", patient.getIdElement().getIdPart())) + .setDisplay(patient.getNameFirstRep().getNameAsSingleString())); + subjectList.addEntry(entry); + } + report.addContained(subjectList); + } + populationReport.setCount(populationCount); + reportGroup.addPopulation(populationReport); + } + } + + private MeasureReport evaluate(Measure measure, Context context, List patients, + MeasureReport.MeasureReportType type, boolean isSingle) { + MeasureReportBuilder reportBuilder = new MeasureReportBuilder(); + reportBuilder.buildStatus("complete"); + reportBuilder.buildType(type); + reportBuilder.buildMeasureReference(measure.getIdElement().getValue()); + if (type == MeasureReport.MeasureReportType.INDIVIDUAL && !patients.isEmpty()) { + reportBuilder.buildPatientReference(patients.get(0).getIdElement().getValue()); + } + reportBuilder.buildPeriod(measurementPeriod); + + MeasureReport report = reportBuilder.build(); + + HashMap resources = new HashMap<>(); + HashMap> codeToResourceMap = new HashMap<>(); + Set evaluatedResourcesList = new HashSet<>(); + + MeasureScoring measureScoring = MeasureScoring.fromCode(measure.getScoring().getCodingFirstRep().getCode()); + if (measureScoring == null) { + throw new RuntimeException("Measure scoring is required in order to calculate."); + } + + List sde = new ArrayList<>(); + HashMap> sdeAccumulators = null; + for (Measure.MeasureGroupComponent group : measure.getGroup()) { + MeasureReport.MeasureReportGroupComponent reportGroup = new MeasureReport.MeasureReportGroupComponent(); + reportGroup.setIdentifier(group.getIdentifier()); + report.getGroup().add(reportGroup); + + // Declare variables to avoid a hash lookup on every patient + // TODO: Isn't quite right, there may be multiple initial populations for a + // ratio measure... + Measure.MeasureGroupPopulationComponent initialPopulationCriteria = null; + Measure.MeasureGroupPopulationComponent numeratorCriteria = null; + Measure.MeasureGroupPopulationComponent numeratorExclusionCriteria = null; + Measure.MeasureGroupPopulationComponent denominatorCriteria = null; + Measure.MeasureGroupPopulationComponent denominatorExclusionCriteria = null; + Measure.MeasureGroupPopulationComponent denominatorExceptionCriteria = null; + Measure.MeasureGroupPopulationComponent measurePopulationCriteria = null; + Measure.MeasureGroupPopulationComponent measurePopulationExclusionCriteria = null; + // TODO: Isn't quite right, there may be multiple measure observations... + Measure.MeasureGroupPopulationComponent measureObservationCriteria = null; + + HashMap initialPopulation = null; + HashMap numerator = null; + HashMap numeratorExclusion = null; + HashMap denominator = null; + HashMap denominatorExclusion = null; + HashMap denominatorException = null; + HashMap measurePopulation = null; + HashMap measurePopulationExclusion = null; + HashMap measureObservation = null; + + HashMap initialPopulationPatients = null; + HashMap numeratorPatients = null; + HashMap numeratorExclusionPatients = null; + HashMap denominatorPatients = null; + HashMap denominatorExclusionPatients = null; + HashMap denominatorExceptionPatients = null; + HashMap measurePopulationPatients = null; + HashMap measurePopulationExclusionPatients = null; + + sdeAccumulators = new HashMap<>(); + sde = measure.getSupplementalData(); + for (Measure.MeasureGroupPopulationComponent pop : group.getPopulation()) { + MeasurePopulationType populationType = MeasurePopulationType + .fromCode(pop.getCode().getCodingFirstRep().getCode()); + if (populationType != null) { + switch (populationType) { + case INITIALPOPULATION: + initialPopulationCriteria = pop; + initialPopulation = new HashMap(); + if (type == MeasureReport.MeasureReportType.PATIENTLIST) { + initialPopulationPatients = new HashMap(); + } + break; + case NUMERATOR: + numeratorCriteria = pop; + numerator = new HashMap(); + if (type == MeasureReport.MeasureReportType.PATIENTLIST) { + numeratorPatients = new HashMap(); + } + break; + case NUMERATOREXCLUSION: + numeratorExclusionCriteria = pop; + numeratorExclusion = new HashMap(); + if (type == MeasureReport.MeasureReportType.PATIENTLIST) { + numeratorExclusionPatients = new HashMap(); + } + break; + case DENOMINATOR: + denominatorCriteria = pop; + denominator = new HashMap(); + if (type == MeasureReport.MeasureReportType.PATIENTLIST) { + denominatorPatients = new HashMap(); + } + break; + case DENOMINATOREXCLUSION: + denominatorExclusionCriteria = pop; + denominatorExclusion = new HashMap(); + if (type == MeasureReport.MeasureReportType.PATIENTLIST) { + denominatorExclusionPatients = new HashMap(); + } + break; + case DENOMINATOREXCEPTION: + denominatorExceptionCriteria = pop; + denominatorException = new HashMap(); + if (type == MeasureReport.MeasureReportType.PATIENTLIST) { + denominatorExceptionPatients = new HashMap(); + } + break; + case MEASUREPOPULATION: + measurePopulationCriteria = pop; + measurePopulation = new HashMap(); + if (type == MeasureReport.MeasureReportType.PATIENTLIST) { + measurePopulationPatients = new HashMap(); + } + break; + case MEASUREPOPULATIONEXCLUSION: + measurePopulationExclusionCriteria = pop; + measurePopulationExclusion = new HashMap(); + if (type == MeasureReport.MeasureReportType.PATIENTLIST) { + measurePopulationExclusionPatients = new HashMap(); + } + break; + case MEASUREOBSERVATION: + measureObservationCriteria = pop; + measureObservation = new HashMap<>(); + break; + } + } + } + + switch (measureScoring) { + case PROPORTION: + case RATIO: { + + // For each patient in the initial population + for (Patient patient : patients) { + + // Are they in the initial population? + boolean inInitialPopulation = evaluatePopulationCriteria(context, patient, + initialPopulationCriteria, initialPopulation, initialPopulationPatients, null, null, + null); + populateResourceMap(context, MeasurePopulationType.INITIALPOPULATION, resources, + codeToResourceMap); + + if (inInitialPopulation) { + // Are they in the denominator? + boolean inDenominator = evaluatePopulationCriteria(context, patient, denominatorCriteria, + denominator, denominatorPatients, denominatorExclusionCriteria, + denominatorExclusion, denominatorExclusionPatients); + populateResourceMap(context, MeasurePopulationType.DENOMINATOR, resources, + codeToResourceMap); + + if (inDenominator) { + // Are they in the numerator? + boolean inNumerator = evaluatePopulationCriteria(context, patient, numeratorCriteria, + numerator, numeratorPatients, numeratorExclusionCriteria, numeratorExclusion, + numeratorExclusionPatients); + populateResourceMap(context, MeasurePopulationType.NUMERATOR, resources, + codeToResourceMap); + + if (!inNumerator && inDenominator && (denominatorExceptionCriteria != null)) { + // Are they in the denominator exception? + boolean inException = false; + for (Resource resource : evaluateCriteria(context, patient, + denominatorExceptionCriteria)) { + inException = true; + denominatorException.put(resource.getIdElement().getIdPart(), resource); + denominator.remove(resource.getIdElement().getIdPart()); + populateResourceMap(context, MeasurePopulationType.DENOMINATOREXCEPTION, + resources, codeToResourceMap); + } + if (inException) { + if (denominatorExceptionPatients != null) { + denominatorExceptionPatients.put(patient.getIdElement().getIdPart(), + patient); + } + if (denominatorPatients != null) { + denominatorPatients.remove(patient.getIdElement().getIdPart()); + } + } + } + } + } + populateSDEAccumulators(measure, context, patient, sdeAccumulators, sde); + } + + // Calculate actual measure score, Count(numerator) / Count(denominator) + if (denominator != null && numerator != null && denominator.size() > 0) { + reportGroup.setMeasureScore(numerator.size() / (double) denominator.size()); + } + + break; + } + case CONTINUOUSVARIABLE: { + + // For each patient in the patient list + for (Patient patient : patients) { + + // Are they in the initial population? + boolean inInitialPopulation = evaluatePopulationCriteria(context, patient, + initialPopulationCriteria, initialPopulation, initialPopulationPatients, null, null, + null); + populateResourceMap(context, MeasurePopulationType.INITIALPOPULATION, resources, + codeToResourceMap); + + if (inInitialPopulation) { + // Are they in the measure population? + boolean inMeasurePopulation = evaluatePopulationCriteria(context, patient, + measurePopulationCriteria, measurePopulation, measurePopulationPatients, + measurePopulationExclusionCriteria, measurePopulationExclusion, + measurePopulationExclusionPatients); + + if (inMeasurePopulation) { + for (Resource resource : measurePopulation.values()) { + Resource observation = evaluateObservationCriteria(context, patient, resource, measureObservationCriteria, report); + measureObservation.put(resource.getIdElement().getIdPart(), observation); + report.addContained(observation); + // TODO: Add to the evaluatedResources bundle + //report.getEvaluatedResources().add(new Reference("#" + observation.getId())); + } + } + } + populateSDEAccumulators(measure, context, patient, sdeAccumulators,sde); + } + + break; + } + case COHORT: { + + // For each patient in the patient list + for (Patient patient : patients) { + evaluatePopulationCriteria(context, patient, + initialPopulationCriteria, initialPopulation, initialPopulationPatients, null, null, + null); + populateResourceMap(context, MeasurePopulationType.INITIALPOPULATION, resources, + codeToResourceMap); + populateSDEAccumulators(measure, context, patient, sdeAccumulators, sde); + } + + break; + } + } + + // Add population reports for each group + addPopulationCriteriaReport(report, reportGroup, initialPopulationCriteria, + initialPopulation != null ? initialPopulation.size() : 0, + initialPopulationPatients != null ? initialPopulationPatients.values() : null); + addPopulationCriteriaReport(report, reportGroup, numeratorCriteria, + numerator != null ? numerator.size() : 0, + numeratorPatients != null ? numeratorPatients.values() : null); + addPopulationCriteriaReport(report, reportGroup, numeratorExclusionCriteria, + numeratorExclusion != null ? numeratorExclusion.size() : 0, + numeratorExclusionPatients != null ? numeratorExclusionPatients.values() : null); + addPopulationCriteriaReport(report, reportGroup, denominatorCriteria, + denominator != null ? denominator.size() : 0, + denominatorPatients != null ? denominatorPatients.values() : null); + addPopulationCriteriaReport(report, reportGroup, denominatorExclusionCriteria, + denominatorExclusion != null ? denominatorExclusion.size() : 0, + denominatorExclusionPatients != null ? denominatorExclusionPatients.values() : null); + addPopulationCriteriaReport(report, reportGroup, denominatorExceptionCriteria, + denominatorException != null ? denominatorException.size() : 0, + denominatorExceptionPatients != null ? denominatorExceptionPatients.values() : null); + addPopulationCriteriaReport(report, reportGroup, measurePopulationCriteria, + measurePopulation != null ? measurePopulation.size() : 0, + measurePopulationPatients != null ? measurePopulationPatients.values() : null); + addPopulationCriteriaReport(report, reportGroup, measurePopulationExclusionCriteria, + measurePopulationExclusion != null ? measurePopulationExclusion.size() : 0, + measurePopulationExclusionPatients != null ? measurePopulationExclusionPatients.values() : null); + // TODO: Measure Observations... + } + + for (String key : codeToResourceMap.keySet()) { + org.hl7.fhir.dstu3.model.ListResource list = new org.hl7.fhir.dstu3.model.ListResource(); + for (String element : codeToResourceMap.get(key)) { + org.hl7.fhir.dstu3.model.ListResource.ListEntryComponent comp = new org.hl7.fhir.dstu3.model.ListResource.ListEntryComponent(); + comp.setItem(new Reference('#' + element)); + list.addEntry(comp); + } + + if (!list.isEmpty()) { + list.setId("List/" + UUID.randomUUID().toString()); + list.setTitle(key); + resources.put(list.getId(), list); + list.getEntry().forEach(listResource -> evaluatedResourcesList.add(listResource.getItem().getReference())); + } + } + + if (!resources.isEmpty()) { + List evaluatedResourceIds = new ArrayList<>(); + evaluatedResourcesList.forEach((resource) -> { + evaluatedResourceIds.add(new Reference(resource)); + }); + } + + if (sdeAccumulators.size() > 0) { + report = processAccumulators(report, sdeAccumulators, sde, isSingle, patients); + } + + return report; + } + + private void populateSDEAccumulators(Measure measure, Context context, Patient patient,HashMap> sdeAccumulators, + List sde){ + context.setContextValue("Patient", patient.getIdElement().getIdPart()); + List sdeList = sde.stream().map(sdeItem -> context.resolveExpressionRef(sdeItem.getCriteria()).evaluate(context)).collect(Collectors.toList()); + if(!sdeList.isEmpty()) { + for (int i = 0; i < sdeList.size(); i++) { + Object sdeListItem = sdeList.get(i); + if(null != sdeListItem) { + String sdeAccumulatorKey = sde.get(i).getId(); + if(null == sdeAccumulatorKey || sdeAccumulatorKey.length() < 1){ + sdeAccumulatorKey = sde.get(i).getCriteria(); + } + HashMap sdeItemMap = sdeAccumulators.get(sdeAccumulatorKey); + String code = ""; + + switch (sdeListItem.getClass().getSimpleName()) { + case "Code": + code = ((Code) sdeListItem).getCode(); + break; + case "ArrayList": + if (((ArrayList) sdeListItem).size() > 0) { + if (((ArrayList) sdeListItem).get(0).getClass().getSimpleName().equals("Coding")) { + code = ((Coding) ((ArrayList) sdeListItem).get(0)).getCode(); + } else { + continue; + } + }else{ + continue; + } + break; + } + if(null == code){ + continue; + } + if (null != sdeItemMap && null != sdeItemMap.get(code)) { + Integer sdeItemValue = sdeItemMap.get(code); + sdeItemValue++; + sdeItemMap.put(code, sdeItemValue); + sdeAccumulators.get(sdeAccumulatorKey).put(code, sdeItemValue); + } else { + if (null == sdeAccumulators.get(sdeAccumulatorKey)) { + HashMap newSDEItem = new HashMap<>(); + newSDEItem.put(code, 1); + sdeAccumulators.put(sdeAccumulatorKey, newSDEItem); + } else { + sdeAccumulators.get(sdeAccumulatorKey).put(code, 1); + } + } + } + } + } + } + + private MeasureReport processAccumulators(MeasureReport report, HashMap> sdeAccumulators, + List sde, boolean isSingle, List patients){ + List newRefList = new ArrayList<>(); + sdeAccumulators.forEach((sdeKey, sdeAccumulator) -> { + sdeAccumulator.forEach((sdeAccumulatorKey, sdeAccumulatorValue)->{ + Observation obs = new Observation(); + obs.setStatus(Observation.ObservationStatus.FINAL); + obs.setId(UUID.randomUUID().toString()); + Coding valueCoding = new Coding(); + if(sdeKey.equalsIgnoreCase("sde-sex")){ + valueCoding.setCode(sdeAccumulatorKey); + }else { + String coreCategory = sdeKey.substring(sdeKey.lastIndexOf('-') >= 0 ? sdeKey.lastIndexOf('-') : 0); + patients.forEach((pt)-> { + pt.getExtension().forEach((ptExt) -> { + if (ptExt.getUrl().contains(coreCategory)) { + String code = ((Coding) ptExt.getExtension().get(0).getValue()).getCode(); + if(code.equalsIgnoreCase(sdeAccumulatorKey)) { + valueCoding.setSystem(((Coding) ptExt.getExtension().get(0).getValue()).getSystem()); + valueCoding.setCode(code); + valueCoding.setDisplay(((Coding) ptExt.getExtension().get(0).getValue()).getDisplay()); + } + } + }); + }); + } + CodeableConcept obsCodeableConcept = new CodeableConcept(); + Extension obsExtension = new Extension().setUrl("http://hl7.org/fhir/StructureDefinition/cqf-measureInfo"); + Extension extExtMeasure = new Extension() + .setUrl("measure") + .setValue(new StringType("http://hl7.org/fhir/us/cqfmeasures/" + report.getMeasure())); + obsExtension.addExtension(extExtMeasure); + Extension extExtPop = new Extension() + .setUrl("populationId") + .setValue(new StringType(sdeKey)); + obsExtension.addExtension(extExtPop); + obs.addExtension(obsExtension); + obs.setValue(new IntegerType(sdeAccumulatorValue)); + if(!isSingle) { + valueCoding.setCode(sdeAccumulatorKey); + obsCodeableConcept.setCoding(Collections.singletonList(valueCoding)); + obs.setCode(obsCodeableConcept); + }else{ + obs.setCode(new CodeableConcept().setText(sdeKey)); + obsCodeableConcept.setCoding(Collections.singletonList(valueCoding)); + obs.setValue(obsCodeableConcept); + } + newRefList.add(new Reference("#" + obs.getId())); + report.addContained(obs); + }); + }); + + // TODO: Evaluated resources + // newRefList.addAll(report.getEvaluatedResource()); + // report.setEvaluatedResource(newRefList); + return report; + } + + private void populateResourceMap(Context context, MeasurePopulationType type, HashMap resources, + HashMap> codeToResourceMap) { + if (context.getEvaluatedResources().isEmpty()) { + return; + } + + if (!codeToResourceMap.containsKey(type.toCode())) { + codeToResourceMap.put(type.toCode(), new HashSet<>()); + } + + HashSet codeHashSet = codeToResourceMap.get((type.toCode())); + + for (Object o : context.getEvaluatedResources()) { + if (o instanceof Resource) { + Resource r = (Resource) o; + String id = (r.getIdElement().getResourceType() != null ? (r.getIdElement().getResourceType() + "/") + : "") + r.getIdElement().getIdPart(); + if (!codeHashSet.contains(id)) { + codeHashSet.add(id); + } + + if (!resources.containsKey(id)) { + resources.put(id, r); + } + } + } + + context.clearEvaluatedResources(); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/evaluation/MeasureEvaluationSeed.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/evaluation/MeasureEvaluationSeed.java new file mode 100644 index 00000000000..278863fee75 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/evaluation/MeasureEvaluationSeed.java @@ -0,0 +1,134 @@ +package ca.uhn.fhir.cql.dstu3.evaluation; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.cql.common.helper.DateHelper; +import ca.uhn.fhir.cql.common.helper.UsingHelper; +import ca.uhn.fhir.cql.common.provider.EvaluationProviderFactory; +import ca.uhn.fhir.cql.common.provider.LibraryResolutionProvider; +import ca.uhn.fhir.cql.dstu3.helper.LibraryHelper; +import org.apache.commons.lang3.tuple.Triple; +import org.cqframework.cql.elm.execution.Library; +import org.hl7.fhir.dstu3.model.Measure; +import org.opencds.cqf.cql.engine.data.DataProvider; +import org.opencds.cqf.cql.engine.debug.DebugMap; +import org.opencds.cqf.cql.engine.execution.Context; +import org.opencds.cqf.cql.engine.execution.LibraryLoader; +import org.opencds.cqf.cql.engine.runtime.DateTime; +import org.opencds.cqf.cql.engine.runtime.Interval; +import org.opencds.cqf.cql.engine.terminology.TerminologyProvider; + +import java.util.Date; +import java.util.List; + +public class MeasureEvaluationSeed { + private Measure measure; + private Context context; + private Interval measurementPeriod; + private LibraryLoader libraryLoader; + private LibraryResolutionProvider libraryResourceProvider; + private EvaluationProviderFactory providerFactory; + private DataProvider dataProvider; + private LibraryHelper libraryHelper; + + public MeasureEvaluationSeed(EvaluationProviderFactory providerFactory, LibraryLoader libraryLoader, + LibraryResolutionProvider libraryResourceProvider, LibraryHelper libraryHelper) { + this.providerFactory = providerFactory; + this.libraryLoader = libraryLoader; + this.libraryResourceProvider = libraryResourceProvider; + this.libraryHelper = libraryHelper; + } + + public Measure getMeasure() { + return this.measure; + } + + public Context getContext() { + return this.context; + } + + public Interval getMeasurementPeriod() { + return this.measurementPeriod; + } + + public DataProvider getDataProvider() { + return this.dataProvider; + } + + public void setup(Measure measure, String periodStart, String periodEnd, String productLine, String source, + String user, String pass) { + this.measure = measure; + + this.libraryHelper.loadLibraries(measure, this.libraryLoader, this.libraryResourceProvider); + + // resolve primary library + Library library = this.libraryHelper.resolvePrimaryLibrary(measure, libraryLoader, this.libraryResourceProvider); + + // resolve execution context + context = new Context(library); + context.registerLibraryLoader(libraryLoader); + + List> usingDefs = UsingHelper.getUsingUrlAndVersion(library.getUsings()); + + if (usingDefs.size() > 1) { + throw new IllegalArgumentException( + "Evaluation of Measure using multiple Models is not supported at this time."); + } + + // If there are no Usings, there is probably not any place the Terminology + // actually used so I think the assumption that at least one provider exists is + // ok. + TerminologyProvider terminologyProvider = null; + if (usingDefs.size() > 0) { + // Creates a terminology provider based on the first using statement. This + // assumes the terminology + // server matches the FHIR version of the CQL. + terminologyProvider = this.providerFactory.createTerminologyProvider(usingDefs.get(0).getLeft(), + usingDefs.get(0).getMiddle(), source, user, pass); + context.registerTerminologyProvider(terminologyProvider); + } + + for (Triple def : usingDefs) { + this.dataProvider = this.providerFactory.createDataProvider(def.getLeft(), def.getMiddle(), + terminologyProvider); + context.registerDataProvider(def.getRight(), dataProvider); + } + + // resolve the measurement period + measurementPeriod = new Interval(DateHelper.resolveRequestDate(periodStart), true, + DateHelper.resolveRequestDate(periodEnd), true); + + context.setParameter(null, "Measurement Period", + new Interval(DateTime.fromJavaDate((Date) measurementPeriod.getStart()), true, + DateTime.fromJavaDate((Date) measurementPeriod.getEnd()), true)); + + if (productLine != null) { + context.setParameter(null, "Product Line", productLine); + } + + context.setExpressionCaching(true); + + // This needs to be made configurable + DebugMap debugMap = new DebugMap(); + debugMap.setIsLoggingEnabled(true); + context.setDebugMap(debugMap); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/evaluation/ProviderFactory.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/evaluation/ProviderFactory.java new file mode 100644 index 00000000000..4743e59a934 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/evaluation/ProviderFactory.java @@ -0,0 +1,84 @@ +package ca.uhn.fhir.cql.dstu3.evaluation; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.context.FhirContext; +import ca.uhn.fhir.cql.common.provider.EvaluationProviderFactory; +import ca.uhn.fhir.cql.common.retrieve.JpaFhirRetrieveProvider; +import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import org.opencds.cqf.cql.engine.data.CompositeDataProvider; +import org.opencds.cqf.cql.engine.data.DataProvider; +import org.opencds.cqf.cql.engine.fhir.searchparam.SearchParameterResolver; +import org.opencds.cqf.cql.engine.model.ModelResolver; +import org.opencds.cqf.cql.engine.terminology.TerminologyProvider; +import org.opencds.cqf.cql.evaluator.engine.terminology.PrivateCachingTerminologyProviderDecorator; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +// This class is a relatively dumb factory for data providers. It supports only +// creating JPA providers for FHIR and only basic auth for terminology +@Component +public class ProviderFactory implements EvaluationProviderFactory { + + DaoRegistry registry; + TerminologyProvider defaultTerminologyProvider; + FhirContext fhirContext; + ModelResolver fhirModelResolver; + + @Autowired + public ProviderFactory(FhirContext fhirContext, DaoRegistry registry, + TerminologyProvider defaultTerminologyProvider, ModelResolver fhirModelResolver) { + this.defaultTerminologyProvider = defaultTerminologyProvider; + this.registry = registry; + this.fhirContext = fhirContext; + this.fhirModelResolver = fhirModelResolver; + } + + public DataProvider createDataProvider(String model, String version) { + return this.createDataProvider(model, version, null, null, null); + } + + public DataProvider createDataProvider(String model, String version, String url, String user, String pass) { + TerminologyProvider terminologyProvider = this.createTerminologyProvider(model, version, url, user, pass); + return this.createDataProvider(model, version, terminologyProvider); + } + + public DataProvider createDataProvider(String model, String version, TerminologyProvider terminologyProvider) { + if (model.equals("FHIR") && version.startsWith("3")) { + JpaFhirRetrieveProvider retrieveProvider = new JpaFhirRetrieveProvider(this.registry, + new SearchParameterResolver(this.fhirContext)); + retrieveProvider.setTerminologyProvider(terminologyProvider); + retrieveProvider.setExpandValueSets(true); + + return new CompositeDataProvider(this.fhirModelResolver, retrieveProvider); + } + + throw new IllegalArgumentException( + String.format("Can't construct a data provider for model %s version %s", model, version)); + } + + public TerminologyProvider createTerminologyProvider(String model, String version, String url, String user, + String pass) { + TerminologyProvider terminologyProvider = null; + terminologyProvider = this.defaultTerminologyProvider; + return new PrivateCachingTerminologyProviderDecorator(terminologyProvider); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/helper/LibraryHelper.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/helper/LibraryHelper.java new file mode 100644 index 00000000000..d820950f0ad --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/helper/LibraryHelper.java @@ -0,0 +1,209 @@ +package ca.uhn.fhir.cql.dstu3.helper; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.cql.common.evaluation.LibraryLoader; +import ca.uhn.fhir.cql.common.provider.LibraryResolutionProvider; +import ca.uhn.fhir.cql.common.provider.LibrarySourceProvider; +import org.cqframework.cql.cql2elm.LibraryManager; +import org.cqframework.cql.cql2elm.ModelManager; +import org.cqframework.cql.cql2elm.model.Model; +import org.cqframework.cql.elm.execution.Library; +import org.cqframework.cql.elm.execution.VersionedIdentifier; +import org.hl7.fhir.dstu3.model.Attachment; +import org.hl7.fhir.dstu3.model.Coding; +import org.hl7.fhir.dstu3.model.Measure; +import org.hl7.fhir.dstu3.model.PlanDefinition; +import org.hl7.fhir.dstu3.model.Reference; +import org.hl7.fhir.dstu3.model.RelatedArtifact; +import org.hl7.fhir.dstu3.model.Resource; +import org.opencds.cqf.cql.evaluator.cql2elm.model.CacheAwareModelManager; +import org.opencds.cqf.cql.evaluator.engine.execution.PrivateCachingLibraryLoaderDecorator; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class LibraryHelper { + + private Map modelCache; + + public LibraryHelper(Map modelCache) { + this.modelCache = modelCache; + } + + public org.opencds.cqf.cql.engine.execution.LibraryLoader createLibraryLoader( + LibraryResolutionProvider provider) { + ModelManager modelManager = new CacheAwareModelManager(this.modelCache); + LibraryManager libraryManager = new LibraryManager(modelManager); + libraryManager.getLibrarySourceLoader().clearProviders(); + + libraryManager.getLibrarySourceLoader().registerProvider( + new LibrarySourceProvider( + provider, x -> x.getContent(), x -> x.getContentType(), x -> x.getData())); + + return new PrivateCachingLibraryLoaderDecorator(new LibraryLoader(libraryManager, modelManager)); + } + + public List loadLibraries(Measure measure, + org.opencds.cqf.cql.engine.execution.LibraryLoader libraryLoader, + LibraryResolutionProvider libraryResourceProvider) { + List libraries = new ArrayList(); + + // load libraries + //TODO: if there's a bad measure argument, this blows up for an obscure error + for (Reference ref : measure.getLibrary()) { + // if library is contained in measure, load it into server + if (ref.getReferenceElement().getIdPart().startsWith("#")) { + for (Resource resource : measure.getContained()) { + if (resource instanceof org.hl7.fhir.dstu3.model.Library && resource.getIdElement().getIdPart() + .equals(ref.getReferenceElement().getIdPart().substring(1))) { + libraryResourceProvider.update((org.hl7.fhir.dstu3.model.Library) resource); + } + } + } + + // We just loaded it into the server so we can access it by Id + String id = ref.getReferenceElement().getIdPart(); + if (id.startsWith("#")) { + id = id.substring(1); + } + + org.hl7.fhir.dstu3.model.Library library = libraryResourceProvider.resolveLibraryById(id); + if (library != null && isLogicLibrary(library)) { + libraries.add(libraryLoader + .load(new VersionedIdentifier().withId(library.getName()).withVersion(library.getVersion()))); + } + } + + if (libraries.isEmpty()) { + throw new IllegalArgumentException(String + .format("Could not load library source for libraries referenced in Measure %s.", measure.getId())); + } + + VersionedIdentifier primaryLibraryId = libraries.get(0).getIdentifier(); + org.hl7.fhir.dstu3.model.Library primaryLibrary = libraryResourceProvider.resolveLibraryByName(primaryLibraryId.getId(), primaryLibraryId.getVersion()); + for (RelatedArtifact artifact : primaryLibrary.getRelatedArtifact()) { + if (artifact.hasType() && artifact.getType().equals(RelatedArtifact.RelatedArtifactType.DEPENDSON) && artifact.hasResource() && artifact.getResource().hasReference()) { + if (artifact.getResource().getReferenceElement().getResourceType().equals("Library")) { + org.hl7.fhir.dstu3.model.Library library = libraryResourceProvider.resolveLibraryById(artifact.getResource().getReferenceElement().getIdPart()); + + if (library != null && isLogicLibrary(library)) { + libraries.add( + libraryLoader.load(new VersionedIdentifier().withId(library.getName()).withVersion(library.getVersion())) + ); + } + } + } + } + + return libraries; + } + + private boolean isLogicLibrary(org.hl7.fhir.dstu3.model.Library library) { + if (library == null) { + return false; + } + + if (!library.hasType()) { + // If no type is specified, assume it is a logic library based on whether there is a CQL content element. + if (library.hasContent()) { + for (Attachment a : library.getContent()) { + if (a.hasContentType() && (a.getContentType().equals("text/cql") + || a.getContentType().equals("application/elm+xml") + || a.getContentType().equals("application/elm+json"))) { + return true; + } + } + } + return false; + } + + if (!library.getType().hasCoding()) { + return false; + } + + for (Coding c : library.getType().getCoding()) { + if (c.hasSystem() && c.getSystem().equals("http://hl7.org/fhir/library-type") + && c.hasCode() && c.getCode().equals("logic-library")) { + return true; + } + } + + return false; + } + + public Library resolveLibraryById(String libraryId, + org.opencds.cqf.cql.engine.execution.LibraryLoader libraryLoader, + LibraryResolutionProvider libraryResourceProvider) { + // Library library = null; + + org.hl7.fhir.dstu3.model.Library fhirLibrary = libraryResourceProvider.resolveLibraryById(libraryId); + return libraryLoader + .load(new VersionedIdentifier().withId(fhirLibrary.getName()).withVersion(fhirLibrary.getVersion())); + + // for (Library l : libraryLoader.getLibraries()) { + // VersionedIdentifier vid = l.getIdentifier(); + // if (vid.getId().equals(fhirLibrary.getName()) && + // LibraryResourceHelper.compareVersions(fhirLibrary.getVersion(), + // vid.getVersion()) == 0) { + // library = l; + // break; + // } + // } + + // if (library == null) { + + // } + + // return library; + } + + public Library resolvePrimaryLibrary(Measure measure, + org.opencds.cqf.cql.engine.execution.LibraryLoader libraryLoader, + LibraryResolutionProvider libraryResourceProvider) { + // default is the first library reference + String id = measure.getLibraryFirstRep().getReferenceElement().getIdPart(); + + Library library = resolveLibraryById(id, libraryLoader, libraryResourceProvider); + + if (library == null) { + throw new IllegalArgumentException(String.format("Could not resolve primary library for Measure/%s.", + measure.getIdElement().getIdPart())); + } + + return library; + } + + public Library resolvePrimaryLibrary(PlanDefinition planDefinition, org.opencds.cqf.cql.engine.execution.LibraryLoader libraryLoader, + LibraryResolutionProvider libraryResourceProvider) { + String id = planDefinition.getLibraryFirstRep().getReferenceElement().getIdPart(); + + Library library = resolveLibraryById(id, libraryLoader, libraryResourceProvider); + + if (library == null) { + throw new IllegalArgumentException(String.format("Could not resolve primary library for PlanDefinition/%s", + planDefinition.getIdElement().getIdPart())); + } + + return library; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/provider/JpaTerminologyProvider.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/provider/JpaTerminologyProvider.java new file mode 100644 index 00000000000..8779262b472 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/provider/JpaTerminologyProvider.java @@ -0,0 +1,152 @@ +package ca.uhn.fhir.cql.dstu3.provider; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.context.FhirContext; +import ca.uhn.fhir.context.support.IValidationSupport; +import ca.uhn.fhir.context.support.IValidationSupport.LookupCodeResult; +import ca.uhn.fhir.context.support.ValidationSupportContext; +import ca.uhn.fhir.context.support.ValueSetExpansionOptions; +import ca.uhn.fhir.jpa.rp.dstu3.ValueSetResourceProvider; +import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao; +import ca.uhn.fhir.jpa.searchparam.SearchParameterMap; +import ca.uhn.fhir.jpa.term.api.ITermReadSvcDstu3; +import ca.uhn.fhir.rest.api.server.IBundleProvider; +import ca.uhn.fhir.rest.param.UriParam; +import ca.uhn.fhir.rest.server.exceptions.ResourceNotFoundException; +import org.hl7.fhir.dstu3.model.IdType; +import org.hl7.fhir.dstu3.model.ValueSet; +import org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionContainsComponent; +import org.hl7.fhir.instance.model.api.IBaseResource; +import org.opencds.cqf.cql.engine.runtime.Code; +import org.opencds.cqf.cql.engine.terminology.CodeSystemInfo; +import org.opencds.cqf.cql.engine.terminology.TerminologyProvider; +import org.opencds.cqf.cql.engine.terminology.ValueSetInfo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Christopher Schuler on 7/17/2017. + */ +@Component +public class JpaTerminologyProvider implements TerminologyProvider { + + private ITermReadSvcDstu3 terminologySvc; + private ValueSetResourceProvider valueSetResourceProvider; + private final IValidationSupport validationSupport; + + @Autowired + public JpaTerminologyProvider(ITermReadSvcDstu3 terminologySvc, + ValueSetResourceProvider valueSetResourceProvider, IValidationSupport validationSupport) { + this.terminologySvc = terminologySvc; + this.valueSetResourceProvider = valueSetResourceProvider; + this.validationSupport = validationSupport; + } + + @Override + public boolean in(Code code, ValueSetInfo valueSet) throws ResourceNotFoundException { + for (Code c : expand(valueSet)) { + if (c == null) + continue; + if (c.getCode().equals(code.getCode()) && c.getSystem().equals(code.getSystem())) { + return true; + } + } + return false; + } + + @Override + public Iterable expand(ValueSetInfo valueSet) throws ResourceNotFoundException { + List codes = new ArrayList<>(); + boolean needsExpand = false; + ValueSet vs = null; + if (valueSet.getId().startsWith("http://") || valueSet.getId().startsWith("https://")) { + if (valueSet.getVersion() != null + || (valueSet.getCodeSystems() != null && valueSet.getCodeSystems().size() > 0)) { + if (!(valueSet.getCodeSystems().size() == 1 && valueSet.getCodeSystems().get(0).getVersion() == null)) { + throw new UnsupportedOperationException(String.format( + "Could not expand value set %s; version and code system bindings are not supported at this time.", + valueSet.getId())); + } + } + IBundleProvider bundleProvider = valueSetResourceProvider.getDao() + .search(new SearchParameterMap().add(ValueSet.SP_URL, new UriParam(valueSet.getId()))); + List valueSets = bundleProvider.getResources(0, bundleProvider.size()); + if (valueSets.isEmpty()) { + throw new IllegalArgumentException(String.format("Could not resolve value set %s.", valueSet.getId())); + } else if (valueSets.size() == 1) { + vs = (ValueSet) valueSets.get(0); + } else { + throw new IllegalArgumentException("Found more than 1 ValueSet with url: " + valueSet.getId()); + } + } else { + vs = valueSetResourceProvider.getDao().read(new IdType(valueSet.getId())); + } + if (vs != null) { + if (vs.hasCompose()) { + if (vs.getCompose().hasInclude()) { + for (ValueSet.ConceptSetComponent include : vs.getCompose().getInclude()) { + if (include.hasValueSet() || include.hasFilter()) { + needsExpand = true; + break; + } + for (ValueSet.ConceptReferenceComponent concept : include.getConcept()) { + if (concept.hasCode()) { + codes.add(new Code().withCode(concept.getCode()).withSystem(include.getSystem())); + } + } + } + if (!needsExpand) { + return codes; + } + } + } + + if (vs.hasExpansion() && vs.getExpansion().hasContains()) { + for (ValueSetExpansionContainsComponent vsecc : vs.getExpansion().getContains()) { + codes.add(new Code().withCode(vsecc.getCode()).withSystem(vsecc.getSystem())); + } + + return codes; + } + } + + org.hl7.fhir.r4.model.ValueSet expansion = terminologySvc + .expandValueSet(new ValueSetExpansionOptions().setCount(Integer.MAX_VALUE), valueSet.getId(), null); + expansion.getExpansion().getContains() + .forEach(concept -> codes.add(new Code().withCode(concept.getCode()).withSystem(concept.getSystem()))); + + return codes; + } + + @Override + public Code lookup(Code code, CodeSystemInfo codeSystem) throws ResourceNotFoundException { + LookupCodeResult cs = terminologySvc.lookupCode(new ValidationSupportContext(validationSupport), codeSystem.getId(), code.getCode()); + + code.setDisplay(cs.getCodeDisplay()); + code.setSystem(codeSystem.getId()); + + return code; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/provider/LibraryResolutionProviderImpl.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/provider/LibraryResolutionProviderImpl.java new file mode 100644 index 00000000000..d88d3f80cc1 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/provider/LibraryResolutionProviderImpl.java @@ -0,0 +1,119 @@ +package ca.uhn.fhir.cql.dstu3.provider; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.cql.common.provider.LibraryResolutionProvider; +import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao; +import ca.uhn.fhir.jpa.searchparam.SearchParameterMap; +import ca.uhn.fhir.rest.param.StringParam; +import ca.uhn.fhir.rest.param.TokenParam; +import ca.uhn.fhir.rest.param.UriParam; +import org.hl7.fhir.dstu3.model.IdType; +import org.hl7.fhir.dstu3.model.Library; +import org.hl7.fhir.instance.model.api.IBaseResource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +@Component +public class LibraryResolutionProviderImpl implements LibraryResolutionProvider { + @Autowired + private IFhirResourceDao myLibraryDao; + + // TODO: Figure out if we should throw an exception or something here. + @Override + public void update(Library library) { + myLibraryDao.update(library); + } + + @Override + public Library resolveLibraryById(String libraryId) { + try { + return myLibraryDao.read(new IdType(libraryId)); + } catch (Exception e) { + throw new IllegalArgumentException(String.format("Could not resolve library id %s", libraryId)); + } + } + + @Override + public Library resolveLibraryByCanonicalUrl(String url) { + Objects.requireNonNull(url, "url must not be null"); + + String[] parts = url.split("\\|"); + String resourceUrl = parts[0]; + String version = null; + if (parts.length > 1) { + version = parts[1]; + } + + SearchParameterMap map = new SearchParameterMap(); + map.add("url", new UriParam(resourceUrl)); + if (version != null) { + map.add("version", new TokenParam(version)); + } + + ca.uhn.fhir.rest.api.server.IBundleProvider bundleProvider = myLibraryDao.search(map); + + if (bundleProvider.size() == 0) { + return null; + } + List resourceList = bundleProvider.getResources(0, bundleProvider.size()); + return LibraryResolutionProvider.selectFromList(resolveLibraries(resourceList), version, x -> x.getVersion()); + } + + @Override + public Library resolveLibraryByName(String libraryName, String libraryVersion) { + Iterable libraries = getLibrariesByName(libraryName); + org.hl7.fhir.dstu3.model.Library library = LibraryResolutionProvider.selectFromList(libraries, libraryVersion, + x -> x.getVersion()); + + if (library == null) { + throw new IllegalArgumentException(String.format("Could not resolve library name %s", libraryName)); + } + + return library; + } + + private Iterable getLibrariesByName(String name) { + // Search for libraries by name + SearchParameterMap map = new SearchParameterMap(); + map.add("name", new StringParam(name, true)); + ca.uhn.fhir.rest.api.server.IBundleProvider bundleProvider = myLibraryDao.search(map); + + if (bundleProvider.size() == 0) { + return new ArrayList<>(); + } + List resourceList = bundleProvider.getResources(0, bundleProvider.size()); + return resolveLibraries(resourceList); + } + + private Iterable resolveLibraries(List resourceList) { + List ret = new ArrayList<>(); + for (IBaseResource res : resourceList) { + Class clazz = res.getClass(); + ret.add((org.hl7.fhir.dstu3.model.Library) clazz.cast(res)); + } + return ret; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/provider/MeasureOperationsProvider.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/provider/MeasureOperationsProvider.java new file mode 100644 index 00000000000..718f33fb4ef --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/dstu3/provider/MeasureOperationsProvider.java @@ -0,0 +1,126 @@ +package ca.uhn.fhir.cql.dstu3.provider; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.cql.common.provider.EvaluationProviderFactory; +import ca.uhn.fhir.cql.common.provider.LibraryResolutionProvider; +import ca.uhn.fhir.cql.dstu3.evaluation.MeasureEvaluation; +import ca.uhn.fhir.cql.dstu3.evaluation.MeasureEvaluationSeed; +import ca.uhn.fhir.cql.dstu3.helper.LibraryHelper; +import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao; +import ca.uhn.fhir.rest.annotation.IdParam; +import ca.uhn.fhir.rest.annotation.Operation; +import ca.uhn.fhir.rest.annotation.OperationParam; +import ca.uhn.fhir.rest.server.exceptions.InternalErrorException; +import org.hl7.fhir.dstu3.model.Extension; +import org.hl7.fhir.dstu3.model.IdType; +import org.hl7.fhir.dstu3.model.Library; +import org.hl7.fhir.dstu3.model.Measure; +import org.hl7.fhir.dstu3.model.MeasureReport; +import org.hl7.fhir.dstu3.model.StringType; +import org.hl7.fhir.exceptions.FHIRException; +import org.opencds.cqf.cql.engine.execution.LibraryLoader; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * This class implements the dstu3 $evaluate-measure operation defined in the FHIR Clinical Reasoning module. + * Changes should comply with the specification in as far as is possible, and questions about Measure or CQL evaluation can be directed to the original authors. + * @author Jonathan Percival + * @author Bryn Rhodes + * @see https://hl7.org/fhir/STU3/measure-operations.html#evaluate-measure + */ +@Component +public class MeasureOperationsProvider { + private static final Logger logger = LoggerFactory.getLogger(MeasureOperationsProvider.class); + + @Autowired + private LibraryResolutionProvider libraryResolutionProvider; + @Autowired + private DaoRegistry registry; + @Autowired + private IFhirResourceDao myMeasureDao; + @Autowired + private EvaluationProviderFactory factory; + @Autowired + private LibraryHelper libraryHelper; + + /* + * + * NOTE that the source, user, and pass parameters are not standard parameters + * for the FHIR $evaluate-measure operation + * + */ + @Operation(name = "$evaluate-measure", idempotent = true, type = Measure.class) + public MeasureReport evaluateMeasure(@IdParam IdType theId, + @OperationParam(name = "periodStart") String periodStart, + @OperationParam(name = "periodEnd") String periodEnd, + @OperationParam(name = "measure") String measureRef, + @OperationParam(name = "reportType") String reportType, + @OperationParam(name = "patient") String patientRef, + @OperationParam(name = "productLine") String productLine, + @OperationParam(name = "practitioner") String practitionerRef, + @OperationParam(name = "lastReceivedOn") String lastReceivedOn, + @OperationParam(name = "source") String source, + @OperationParam(name = "user") String user, + @OperationParam(name = "pass") String pass) throws InternalErrorException, FHIRException { + LibraryLoader libraryLoader = this.libraryHelper.createLibraryLoader(this.libraryResolutionProvider); + MeasureEvaluationSeed seed = new MeasureEvaluationSeed(this.factory, libraryLoader, + this.libraryResolutionProvider, this.libraryHelper); + Measure measure = myMeasureDao.read(theId); + + if (measure == null) { + throw new RuntimeException("Could not find Measure/" + theId.getIdPart()); + } + + seed.setup(measure, periodStart, periodEnd, productLine, source, user, pass); + + // resolve report type + MeasureEvaluation evaluator = new MeasureEvaluation(this.registry, + seed.getMeasurementPeriod()); + if (reportType != null) { + switch (reportType) { + case "patient": + return evaluator.evaluatePatientMeasure(seed.getMeasure(), seed.getContext(), patientRef); + case "patient-list": + return evaluator.evaluatePatientListMeasure(seed.getMeasure(), seed.getContext(), practitionerRef); + case "population": + return evaluator.evaluatePopulationMeasure(seed.getMeasure(), seed.getContext()); + default: + throw new IllegalArgumentException("Invalid report type: " + reportType); + } + } + + // default report type is patient + MeasureReport report = evaluator.evaluatePatientMeasure(seed.getMeasure(), seed.getContext(), patientRef); + if (productLine != null) { + Extension ext = new Extension(); + ext.setUrl("http://hl7.org/fhir/us/cqframework/cqfmeasures/StructureDefinition/cqfm-productLine"); + ext.setValue(new StringType(productLine)); + report.addExtension(ext); + } + + return report; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/builder/MeasureReportBuilder.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/builder/MeasureReportBuilder.java new file mode 100644 index 00000000000..026c3a010fc --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/builder/MeasureReportBuilder.java @@ -0,0 +1,84 @@ +package ca.uhn.fhir.cql.r4.builder; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.cql.common.builder.BaseBuilder; +import org.hl7.fhir.exceptions.FHIRException; +import org.hl7.fhir.r4.model.MeasureReport; +import org.hl7.fhir.r4.model.Period; +import org.hl7.fhir.r4.model.Reference; +import org.opencds.cqf.cql.engine.runtime.DateTime; +import org.opencds.cqf.cql.engine.runtime.Interval; + +import java.util.Date; + +public class MeasureReportBuilder extends BaseBuilder { + private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(ca.uhn.fhir.cql.dstu3.builder.MeasureReportBuilder.class); + + public MeasureReportBuilder() { + super(new MeasureReport()); + } + + public MeasureReportBuilder buildStatus(String status) { + try { + this.complexProperty.setStatus(MeasureReport.MeasureReportStatus.fromCode(status)); + } catch (FHIRException e) { + ourLog.warn("Exception caught while attempting to set Status to '" + status + "', assuming status COMPLETE!" + + System.lineSeparator() + e.getMessage()); + this.complexProperty.setStatus(MeasureReport.MeasureReportStatus.COMPLETE); + } + return this; + } + + public MeasureReportBuilder buildType(MeasureReport.MeasureReportType type) { + this.complexProperty.setType(type); + return this; + } + + public MeasureReportBuilder buildType(String type) { + this.complexProperty.setType(MeasureReport.MeasureReportType.fromCode(type)); + return this; + } + + public MeasureReportBuilder buildMeasureReference(String measureRef) { + this.complexProperty.setMeasure(measureRef); + return this; + } + + public MeasureReportBuilder buildPatientReference(String patientRef) { + this.complexProperty.setSubject(new Reference(patientRef)); + return this; + } + + public MeasureReportBuilder buildPeriod(Interval period) { + Object start = period.getStart(); + if (start instanceof DateTime) { + this.complexProperty + .setPeriod(new Period().setStart(Date.from(((DateTime) start).getDateTime().toInstant())) + .setEnd(Date.from(((DateTime) period.getEnd()).getDateTime().toInstant()))); + } else if (start instanceof Date) { + this.complexProperty + .setPeriod(new Period().setStart((Date) period.getStart()).setEnd((Date) period.getEnd())); + } + + return this; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/evaluation/MeasureEvaluation.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/evaluation/MeasureEvaluation.java new file mode 100644 index 00000000000..9daea52a9c4 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/evaluation/MeasureEvaluation.java @@ -0,0 +1,731 @@ +package ca.uhn.fhir.cql.r4.evaluation; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.cql.common.evaluation.MeasurePopulationType; +import ca.uhn.fhir.cql.common.evaluation.MeasureScoring; +import ca.uhn.fhir.cql.r4.builder.MeasureReportBuilder; +import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import ca.uhn.fhir.jpa.searchparam.SearchParameterMap; +import ca.uhn.fhir.rest.api.server.IBundleProvider; +import ca.uhn.fhir.rest.param.ReferenceParam; +import org.cqframework.cql.elm.execution.ExpressionDef; +import org.cqframework.cql.elm.execution.FunctionDef; +import org.hl7.fhir.instance.model.api.IBaseResource; +import org.hl7.fhir.r4.model.CanonicalType; +import org.hl7.fhir.r4.model.CodeableConcept; +import org.hl7.fhir.r4.model.Coding; +import org.hl7.fhir.r4.model.Extension; +import org.hl7.fhir.r4.model.IdType; +import org.hl7.fhir.r4.model.IntegerType; +import org.hl7.fhir.r4.model.ListResource; +import org.hl7.fhir.r4.model.Measure; +import org.hl7.fhir.r4.model.MeasureReport; +import org.hl7.fhir.r4.model.Observation; +import org.hl7.fhir.r4.model.Patient; +import org.hl7.fhir.r4.model.Quantity; +import org.hl7.fhir.r4.model.Reference; +import org.hl7.fhir.r4.model.Resource; +import org.hl7.fhir.r4.model.StringType; +import org.opencds.cqf.cql.engine.data.DataProvider; +import org.opencds.cqf.cql.engine.execution.Context; +import org.opencds.cqf.cql.engine.execution.Variable; +import org.opencds.cqf.cql.engine.runtime.Code; +import org.opencds.cqf.cql.engine.runtime.Interval; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; + +public class MeasureEvaluation { + + private static final Logger logger = LoggerFactory.getLogger(MeasureEvaluation.class); + + private DataProvider provider; + private Interval measurementPeriod; + private DaoRegistry registry; + + public MeasureEvaluation(DataProvider provider, DaoRegistry registry, Interval measurementPeriod) { + this.provider = provider; + this.registry = registry; + this.measurementPeriod = measurementPeriod; + } + + public MeasureReport evaluatePatientMeasure(Measure measure, Context context, String patientId) { + logger.info("Generating individual report"); + + if (patientId == null) { + return evaluatePopulationMeasure(measure, context); + } + + Iterable patientRetrieve = provider.retrieve("Patient", "id", patientId, "Patient", null, null, null, + null, null, null, null, null); + Patient patient = null; + if (patientRetrieve.iterator().hasNext()) { + patient = (Patient) patientRetrieve.iterator().next(); + } + + boolean isSingle = true; + return evaluate(measure, context, + patient == null ? Collections.emptyList() : Collections.singletonList(patient), + MeasureReport.MeasureReportType.INDIVIDUAL, isSingle); + } + + public MeasureReport evaluateSubjectListMeasure(Measure measure, Context context, String practitionerRef) { + logger.info("Generating patient-list report"); + + List patients = practitionerRef == null ? getAllPatients() : getPractitionerPatients(practitionerRef); + boolean isSingle = false; + return evaluate(measure, context, patients, MeasureReport.MeasureReportType.SUBJECTLIST, isSingle); + } + + private List getPractitionerPatients(String practitionerRef) { + SearchParameterMap map = new SearchParameterMap(); + map.add("general-practitioner", new ReferenceParam( + practitionerRef.startsWith("Practitioner/") ? practitionerRef : "Practitioner/" + practitionerRef)); + + List patients = new ArrayList<>(); + IBundleProvider patientProvider = registry.getResourceDao("Patient").search(map); + List patientList = patientProvider.getResources(0, patientProvider.size()); + patientList.forEach(x -> patients.add((Patient) x)); + return patients; + } + + private List getAllPatients() { + List patients = new ArrayList<>(); + IBundleProvider patientProvider = registry.getResourceDao("Patient").search(new SearchParameterMap()); + List patientList = patientProvider.getResources(0, patientProvider.size()); + patientList.forEach(x -> patients.add((Patient) x)); + return patients; + } + + public MeasureReport evaluatePopulationMeasure(Measure measure, Context context) { + logger.info("Generating summary report"); + + boolean isSingle = false; + return evaluate(measure, context, getAllPatients(), MeasureReport.MeasureReportType.SUMMARY, isSingle); + } + + @SuppressWarnings("unchecked") + private void clearExpressionCache(Context context) { + // Hack to clear expression cache + // See cqf-ruler github issue #153 + try { + Field privateField = Context.class.getDeclaredField("expressions"); + privateField.setAccessible(true); + LinkedHashMap expressions = (LinkedHashMap) privateField.get(context); + expressions.clear(); + + } catch (Exception e) { + logger.warn("Error resetting expression cache", e); + } + } + + private Resource evaluateObservationCriteria(Context context, Patient patient, Resource resource, Measure.MeasureGroupPopulationComponent pop, MeasureReport report) { + if (pop == null || !pop.hasCriteria()) { + return null; + } + + context.setContextValue("Patient", patient.getIdElement().getIdPart()); + + clearExpressionCache(context); + + String observationName = pop.getCriteria().getExpression(); + ExpressionDef ed = context.resolveExpressionRef(observationName); + if (!(ed instanceof FunctionDef)) { + throw new IllegalArgumentException(String.format("Measure observation %s does not reference a function definition", observationName)); + } + + Object result = null; + context.pushWindow(); + try { + context.push(new Variable().withName(((FunctionDef)ed).getOperand().get(0).getName()).withValue(resource)); + result = ed.getExpression().evaluate(context); + } + finally { + context.popWindow(); + } + + if (result instanceof Resource) { + return (Resource)result; + } + + Observation obs = new Observation(); + obs.setStatus(Observation.ObservationStatus.FINAL); + obs.setId(UUID.randomUUID().toString()); + CodeableConcept cc = new CodeableConcept(); + cc.setText(observationName); + obs.setCode(cc); + Extension obsExtension = new Extension().setUrl("http://hl7.org/fhir/StructureDefinition/cqf-measureInfo"); + Extension extExtMeasure = new Extension() + .setUrl("measure") + .setValue(new CanonicalType("http://hl7.org/fhir/us/cqfmeasures/" + report.getMeasure())); + obsExtension.addExtension(extExtMeasure); + Extension extExtPop = new Extension() + .setUrl("populationId") + .setValue(new StringType(observationName)); + obsExtension.addExtension(extExtPop); + obs.addExtension(obsExtension); + return obs; + } + + @SuppressWarnings("unchecked") + private Iterable evaluateCriteria(Context context, Patient patient, + Measure.MeasureGroupPopulationComponent pop) { + if (pop == null || !pop.hasCriteria()) { + return Collections.emptyList(); + } + + context.setContextValue("Patient", patient.getIdElement().getIdPart()); + + clearExpressionCache(context); + + Object result = context.resolveExpressionRef(pop.getCriteria().getExpression()).evaluate(context); + if (result == null) { + return Collections.emptyList(); + } + + if (result instanceof Boolean) { + if (((Boolean) result)) { + return Collections.singletonList(patient); + } else { + return Collections.emptyList(); + } + } + + return (Iterable) result; + } + + private boolean evaluatePopulationCriteria(Context context, Patient patient, + Measure.MeasureGroupPopulationComponent criteria, HashMap population, + HashMap populationPatients, Measure.MeasureGroupPopulationComponent exclusionCriteria, + HashMap exclusionPopulation, HashMap exclusionPatients) { + boolean inPopulation = false; + if (criteria != null) { + for (Resource resource : evaluateCriteria(context, patient, criteria)) { + inPopulation = true; + population.put(resource.getIdElement().getIdPart(), resource); + } + } + + if (inPopulation) { + // Are they in the exclusion? + if (exclusionCriteria != null) { + for (Resource resource : evaluateCriteria(context, patient, exclusionCriteria)) { + inPopulation = false; + exclusionPopulation.put(resource.getIdElement().getIdPart(), resource); + population.remove(resource.getIdElement().getIdPart()); + } + } + } + + if (inPopulation && populationPatients != null) { + populationPatients.put(patient.getIdElement().getIdPart(), patient); + } + if (!inPopulation && exclusionPatients != null) { + exclusionPatients.put(patient.getIdElement().getIdPart(), patient); + } + + return inPopulation; + } + + private void addPopulationCriteriaReport(MeasureReport report, + MeasureReport.MeasureReportGroupComponent reportGroup, + Measure.MeasureGroupPopulationComponent populationCriteria, int populationCount, + Iterable patientPopulation) { + if (populationCriteria != null) { + MeasureReport.MeasureReportGroupPopulationComponent populationReport = new MeasureReport.MeasureReportGroupPopulationComponent(); + populationReport.setCode(populationCriteria.getCode()); + if (report.getType() == MeasureReport.MeasureReportType.SUBJECTLIST && patientPopulation != null) { + ListResource SUBJECTLIST = new ListResource(); + SUBJECTLIST.setId(UUID.randomUUID().toString()); + populationReport.setSubjectResults(new Reference().setReference("#" + SUBJECTLIST.getId())); + for (Patient patient : patientPopulation) { + ListResource.ListEntryComponent entry = new ListResource.ListEntryComponent() + .setItem(new Reference() + .setReference(patient.getIdElement().getIdPart().startsWith("Patient/") + ? patient.getIdElement().getIdPart() + : String.format("Patient/%s", patient.getIdElement().getIdPart())) + .setDisplay(patient.getNameFirstRep().getNameAsSingleString())); + SUBJECTLIST.addEntry(entry); + } + report.addContained(SUBJECTLIST); + } + populationReport.setCount(populationCount); + reportGroup.addPopulation(populationReport); + } + } + + private MeasureReport evaluate(Measure measure, Context context, List patients, + MeasureReport.MeasureReportType type, boolean isSingle) { + MeasureReportBuilder reportBuilder = new MeasureReportBuilder(); + reportBuilder.buildStatus("complete"); + reportBuilder.buildType(type); + reportBuilder.buildMeasureReference( + measure.getIdElement().getResourceType() + "/" + measure.getIdElement().getIdPart()); + if (type == MeasureReport.MeasureReportType.INDIVIDUAL && !patients.isEmpty()) { + IdType patientId = patients.get(0).getIdElement(); + reportBuilder.buildPatientReference(patientId.getResourceType() + "/" + patientId.getIdPart()); + } + if (measurementPeriod != null) { + reportBuilder.buildPeriod(measurementPeriod); + } + + MeasureReport report = reportBuilder.build(); + + HashMap resources = new HashMap<>(); + HashMap> codeToResourceMap = new HashMap<>(); + Set evaluatedResourcesList = new HashSet<>(); + + MeasureScoring measureScoring = MeasureScoring.fromCode(measure.getScoring().getCodingFirstRep().getCode()); + if (measureScoring == null) { + throw new RuntimeException("Measure scoring is required in order to calculate."); + } + + List sde = new ArrayList<>(); + HashMap> sdeAccumulators = null; + for (Measure.MeasureGroupComponent group : measure.getGroup()) { + MeasureReport.MeasureReportGroupComponent reportGroup = new MeasureReport.MeasureReportGroupComponent(); + reportGroup.setId(group.getId()); + report.getGroup().add(reportGroup); + + // Declare variables to avoid a hash lookup on every patient + // TODO: Isn't quite right, there may be multiple initial populations for a + // ratio measure... + Measure.MeasureGroupPopulationComponent initialPopulationCriteria = null; + Measure.MeasureGroupPopulationComponent numeratorCriteria = null; + Measure.MeasureGroupPopulationComponent numeratorExclusionCriteria = null; + Measure.MeasureGroupPopulationComponent denominatorCriteria = null; + Measure.MeasureGroupPopulationComponent denominatorExclusionCriteria = null; + Measure.MeasureGroupPopulationComponent denominatorExceptionCriteria = null; + Measure.MeasureGroupPopulationComponent measurePopulationCriteria = null; + Measure.MeasureGroupPopulationComponent measurePopulationExclusionCriteria = null; + // TODO: Isn't quite right, there may be multiple measure observations... + Measure.MeasureGroupPopulationComponent measureObservationCriteria = null; + + HashMap initialPopulation = null; + HashMap numerator = null; + HashMap numeratorExclusion = null; + HashMap denominator = null; + HashMap denominatorExclusion = null; + HashMap denominatorException = null; + HashMap measurePopulation = null; + HashMap measurePopulationExclusion = null; + HashMap measureObservation = null; + + HashMap initialPopulationPatients = null; + HashMap numeratorPatients = null; + HashMap numeratorExclusionPatients = null; + HashMap denominatorPatients = null; + HashMap denominatorExclusionPatients = null; + HashMap denominatorExceptionPatients = null; + HashMap measurePopulationPatients = null; + HashMap measurePopulationExclusionPatients = null; + + sdeAccumulators = new HashMap<>(); + sde = measure.getSupplementalData(); + for (Measure.MeasureGroupPopulationComponent pop : group.getPopulation()) { + MeasurePopulationType populationType = MeasurePopulationType + .fromCode(pop.getCode().getCodingFirstRep().getCode()); + if (populationType != null) { + switch (populationType) { + case INITIALPOPULATION: + initialPopulationCriteria = pop; + initialPopulation = new HashMap<>(); + if (type == MeasureReport.MeasureReportType.SUBJECTLIST) { + initialPopulationPatients = new HashMap<>(); + } + break; + case NUMERATOR: + numeratorCriteria = pop; + numerator = new HashMap<>(); + if (type == MeasureReport.MeasureReportType.SUBJECTLIST) { + numeratorPatients = new HashMap<>(); + } + break; + case NUMERATOREXCLUSION: + numeratorExclusionCriteria = pop; + numeratorExclusion = new HashMap<>(); + if (type == MeasureReport.MeasureReportType.SUBJECTLIST) { + numeratorExclusionPatients = new HashMap<>(); + } + break; + case DENOMINATOR: + denominatorCriteria = pop; + denominator = new HashMap<>(); + if (type == MeasureReport.MeasureReportType.SUBJECTLIST) { + denominatorPatients = new HashMap<>(); + } + break; + case DENOMINATOREXCLUSION: + denominatorExclusionCriteria = pop; + denominatorExclusion = new HashMap<>(); + if (type == MeasureReport.MeasureReportType.SUBJECTLIST) { + denominatorExclusionPatients = new HashMap<>(); + } + break; + case DENOMINATOREXCEPTION: + denominatorExceptionCriteria = pop; + denominatorException = new HashMap<>(); + if (type == MeasureReport.MeasureReportType.SUBJECTLIST) { + denominatorExceptionPatients = new HashMap<>(); + } + break; + case MEASUREPOPULATION: + measurePopulationCriteria = pop; + measurePopulation = new HashMap<>(); + if (type == MeasureReport.MeasureReportType.SUBJECTLIST) { + measurePopulationPatients = new HashMap<>(); + } + break; + case MEASUREPOPULATIONEXCLUSION: + measurePopulationExclusionCriteria = pop; + measurePopulationExclusion = new HashMap<>(); + if (type == MeasureReport.MeasureReportType.SUBJECTLIST) { + measurePopulationExclusionPatients = new HashMap<>(); + } + break; + case MEASUREOBSERVATION: + measureObservationCriteria = pop; + measureObservation = new HashMap<>(); + break; + } + } + } + + switch (measureScoring) { + case PROPORTION: + case RATIO: { + + // For each patient in the initial population + for (Patient patient : patients) { + // Are they in the initial population? + boolean inInitialPopulation = evaluatePopulationCriteria(context, patient, + initialPopulationCriteria, initialPopulation, initialPopulationPatients, null, null, + null); + populateResourceMap(context, MeasurePopulationType.INITIALPOPULATION, resources, + codeToResourceMap); + + if (inInitialPopulation) { + // Are they in the denominator? + boolean inDenominator = evaluatePopulationCriteria(context, patient, denominatorCriteria, + denominator, denominatorPatients, denominatorExclusionCriteria, + denominatorExclusion, denominatorExclusionPatients); + populateResourceMap(context, MeasurePopulationType.DENOMINATOR, resources, + codeToResourceMap); + + if (inDenominator) { + // Are they in the numerator? + boolean inNumerator = evaluatePopulationCriteria(context, patient, numeratorCriteria, + numerator, numeratorPatients, numeratorExclusionCriteria, numeratorExclusion, + numeratorExclusionPatients); + populateResourceMap(context, MeasurePopulationType.NUMERATOR, resources, + codeToResourceMap); + + if (!inNumerator && inDenominator && (denominatorExceptionCriteria != null)) { + // Are they in the denominator exception? + boolean inException = false; + for (Resource resource : evaluateCriteria(context, patient, + denominatorExceptionCriteria)) { + inException = true; + denominatorException.put(resource.getIdElement().getIdPart(), resource); + denominator.remove(resource.getIdElement().getIdPart()); + populateResourceMap(context, MeasurePopulationType.DENOMINATOREXCEPTION, + resources, codeToResourceMap); + } + if (inException) { + if (denominatorExceptionPatients != null) { + denominatorExceptionPatients.put(patient.getIdElement().getIdPart(), + patient); + } + if (denominatorPatients != null) { + denominatorPatients.remove(patient.getIdElement().getIdPart()); + } + } + } + } + } + populateSDEAccumulators(measure, context, patient, sdeAccumulators, sde); + } + + // Calculate actual measure score, Count(numerator) / Count(denominator) + if (denominator != null && numerator != null && denominator.size() > 0) { + reportGroup.setMeasureScore(new Quantity(numerator.size() / (double) denominator.size())); + } + + break; + } + case CONTINUOUSVARIABLE: { + + // For each patient in the patient list + for (Patient patient : patients) { + + // Are they in the initial population? + boolean inInitialPopulation = evaluatePopulationCriteria(context, patient, + initialPopulationCriteria, initialPopulation, initialPopulationPatients, null, null, + null); + populateResourceMap(context, MeasurePopulationType.INITIALPOPULATION, resources, + codeToResourceMap); + + if (inInitialPopulation) { + // Are they in the measure population? + boolean inMeasurePopulation = evaluatePopulationCriteria(context, patient, + measurePopulationCriteria, measurePopulation, measurePopulationPatients, + measurePopulationExclusionCriteria, measurePopulationExclusion, + measurePopulationExclusionPatients); + + if (inMeasurePopulation) { + for (Resource resource : measurePopulation.values()) { + Resource observation = evaluateObservationCriteria(context, patient, resource, measureObservationCriteria, report); + measureObservation.put(resource.getIdElement().getIdPart(), observation); + report.addContained(observation); + report.getEvaluatedResource().add(new Reference("#" + observation.getId())); + } + } + } + populateSDEAccumulators(measure, context, patient, sdeAccumulators,sde); + } + + break; + } + case COHORT: { + + // For each patient in the patient list + for (Patient patient : patients) { + evaluatePopulationCriteria(context, patient, + initialPopulationCriteria, initialPopulation, initialPopulationPatients, null, null, + null); + populateResourceMap(context, MeasurePopulationType.INITIALPOPULATION, resources, + codeToResourceMap); + populateSDEAccumulators(measure, context, patient, sdeAccumulators, sde); + } + + break; + } + } + + // Add population reports for each group + addPopulationCriteriaReport(report, reportGroup, initialPopulationCriteria, + initialPopulation != null ? initialPopulation.size() : 0, + initialPopulationPatients != null ? initialPopulationPatients.values() : null); + addPopulationCriteriaReport(report, reportGroup, numeratorCriteria, + numerator != null ? numerator.size() : 0, + numeratorPatients != null ? numeratorPatients.values() : null); + addPopulationCriteriaReport(report, reportGroup, numeratorExclusionCriteria, + numeratorExclusion != null ? numeratorExclusion.size() : 0, + numeratorExclusionPatients != null ? numeratorExclusionPatients.values() : null); + addPopulationCriteriaReport(report, reportGroup, denominatorCriteria, + denominator != null ? denominator.size() : 0, + denominatorPatients != null ? denominatorPatients.values() : null); + addPopulationCriteriaReport(report, reportGroup, denominatorExclusionCriteria, + denominatorExclusion != null ? denominatorExclusion.size() : 0, + denominatorExclusionPatients != null ? denominatorExclusionPatients.values() : null); + addPopulationCriteriaReport(report, reportGroup, denominatorExceptionCriteria, + denominatorException != null ? denominatorException.size() : 0, + denominatorExceptionPatients != null ? denominatorExceptionPatients.values() : null); + addPopulationCriteriaReport(report, reportGroup, measurePopulationCriteria, + measurePopulation != null ? measurePopulation.size() : 0, + measurePopulationPatients != null ? measurePopulationPatients.values() : null); + addPopulationCriteriaReport(report, reportGroup, measurePopulationExclusionCriteria, + measurePopulationExclusion != null ? measurePopulationExclusion.size() : 0, + measurePopulationExclusionPatients != null ? measurePopulationExclusionPatients.values() : null); + // TODO: Measure Observations... + } + + for (String key : codeToResourceMap.keySet()) { + org.hl7.fhir.r4.model.ListResource list = new org.hl7.fhir.r4.model.ListResource(); + for (String element : codeToResourceMap.get(key)) { + org.hl7.fhir.r4.model.ListResource.ListEntryComponent comp = new org.hl7.fhir.r4.model.ListResource.ListEntryComponent(); + comp.setItem(new Reference('#' + element)); + list.addEntry(comp); + } + + if (!list.isEmpty()) { + list.setId("List/" + UUID.randomUUID().toString()); + list.setTitle(key); + resources.put(list.getId(), list); + list.getEntry().forEach(listResource -> evaluatedResourcesList.add(listResource.getItem().getReference())); + } + } + + if (!evaluatedResourcesList.isEmpty()) { + List evaluatedResourceIds = new ArrayList<>(); + evaluatedResourcesList.forEach((resource) -> { + evaluatedResourceIds.add(new Reference(resource)); + }); + report.setEvaluatedResource(evaluatedResourceIds); + } + + if (sdeAccumulators.size() > 0) { + report = processAccumulators(report, sdeAccumulators, sde, isSingle, patients); + } + + return report; + } + + private void populateSDEAccumulators(Measure measure, Context context, Patient patient,HashMap> sdeAccumulators, + List sde){ + context.setContextValue("Patient", patient.getIdElement().getIdPart()); + List sdeList = sde.stream().map(sdeItem -> context.resolveExpressionRef(sdeItem.getCriteria().getExpression()).evaluate(context)).collect(Collectors.toList()); + if(!sdeList.isEmpty()) { + for (int i = 0; i < sdeList.size(); i++) { + Object sdeListItem = sdeList.get(i); + if(null != sdeListItem) { + String sdeAccumulatorKey = sde.get(i).getCode().getText(); + if(null == sdeAccumulatorKey || sdeAccumulatorKey.length() < 1){ + sdeAccumulatorKey = sde.get(i).getCriteria().getExpression(); + } + HashMap sdeItemMap = sdeAccumulators.get(sdeAccumulatorKey); + String code = ""; + + switch (sdeListItem.getClass().getSimpleName()) { + case "Code": + code = ((Code) sdeListItem).getCode(); + break; + case "ArrayList": + if (((ArrayList) sdeListItem).size() > 0) { + if (((ArrayList) sdeListItem).get(0).getClass().getSimpleName().equals("Coding")) { + code = ((Coding) ((ArrayList) sdeListItem).get(0)).getCode(); + } else { + continue; + } + }else{ + continue; + } + break; + } + if(null == code){ + continue; + } + if (null != sdeItemMap && null != sdeItemMap.get(code)) { + Integer sdeItemValue = sdeItemMap.get(code); + sdeItemValue++; + sdeItemMap.put(code, sdeItemValue); + sdeAccumulators.get(sdeAccumulatorKey).put(code, sdeItemValue); + } else { + if (null == sdeAccumulators.get(sdeAccumulatorKey)) { + HashMap newSDEItem = new HashMap<>(); + newSDEItem.put(code, 1); + sdeAccumulators.put(sdeAccumulatorKey, newSDEItem); + } else { + sdeAccumulators.get(sdeAccumulatorKey).put(code, 1); + } + } + } + } + } + } + + private MeasureReport processAccumulators(MeasureReport report, HashMap> sdeAccumulators, + List sde, boolean isSingle, List patients){ + List newRefList = new ArrayList<>(); + sdeAccumulators.forEach((sdeKey, sdeAccumulator) -> { + sdeAccumulator.forEach((sdeAccumulatorKey, sdeAccumulatorValue)->{ + Observation obs = new Observation(); + obs.setStatus(Observation.ObservationStatus.FINAL); + obs.setId(UUID.randomUUID().toString()); + Coding valueCoding = new Coding(); + if(sdeKey.equalsIgnoreCase("sde-sex")){ + valueCoding.setCode(sdeAccumulatorKey); + }else { + String coreCategory = sdeKey.substring(sdeKey.lastIndexOf('-') >= 0 ? sdeKey.lastIndexOf('-') : 0); + patients.forEach((pt)-> { + pt.getExtension().forEach((ptExt) -> { + if (ptExt.getUrl().contains(coreCategory)) { + String code = ((Coding) ptExt.getExtension().get(0).getValue()).getCode(); + if(code.equalsIgnoreCase(sdeAccumulatorKey)) { + valueCoding.setSystem(((Coding) ptExt.getExtension().get(0).getValue()).getSystem()); + valueCoding.setCode(code); + valueCoding.setDisplay(((Coding) ptExt.getExtension().get(0).getValue()).getDisplay()); + } + } + }); + }); + } + CodeableConcept obsCodeableConcept = new CodeableConcept(); + Extension obsExtension = new Extension().setUrl("http://hl7.org/fhir/StructureDefinition/cqf-measureInfo"); + Extension extExtMeasure = new Extension() + .setUrl("measure") + .setValue(new CanonicalType("http://hl7.org/fhir/us/cqfmeasures/" + report.getMeasure())); + obsExtension.addExtension(extExtMeasure); + Extension extExtPop = new Extension() + .setUrl("populationId") + .setValue(new StringType(sdeKey)); + obsExtension.addExtension(extExtPop); + obs.addExtension(obsExtension); + obs.setValue(new IntegerType(sdeAccumulatorValue)); + if(!isSingle) { + valueCoding.setCode(sdeAccumulatorKey); + obsCodeableConcept.setCoding(Collections.singletonList(valueCoding)); + obs.setCode(obsCodeableConcept); + }else{ + obs.setCode(new CodeableConcept().setText(sdeKey)); + obsCodeableConcept.setCoding(Collections.singletonList(valueCoding)); + obs.setValue(obsCodeableConcept); + } + newRefList.add(new Reference("#" + obs.getId())); + report.addContained(obs); + }); + }); + newRefList.addAll(report.getEvaluatedResource()); + report.setEvaluatedResource(newRefList); + return report; + } + + private void populateResourceMap(Context context, MeasurePopulationType type, HashMap resources, + HashMap> codeToResourceMap) { + if (context.getEvaluatedResources().isEmpty()) { + return; + } + + if (!codeToResourceMap.containsKey(type.toCode())) { + codeToResourceMap.put(type.toCode(), new HashSet<>()); + } + + HashSet codeHashSet = codeToResourceMap.get((type.toCode())); + + for (Object o : context.getEvaluatedResources()) { + if (o instanceof Resource) { + Resource r = (Resource) o; + String id = (r.getIdElement().getResourceType() != null ? (r.getIdElement().getResourceType() + "/") + : "") + r.getIdElement().getIdPart(); + if (!codeHashSet.contains(id)) { + codeHashSet.add(id); + } + + if (!resources.containsKey(id)) { + resources.put(id, r); + } + } + } + + context.clearEvaluatedResources(); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/evaluation/MeasureEvaluationSeed.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/evaluation/MeasureEvaluationSeed.java new file mode 100644 index 00000000000..26c014b1277 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/evaluation/MeasureEvaluationSeed.java @@ -0,0 +1,137 @@ +package ca.uhn.fhir.cql.r4.evaluation; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.cql.common.helper.DateHelper; +import ca.uhn.fhir.cql.common.helper.UsingHelper; +import ca.uhn.fhir.cql.common.provider.EvaluationProviderFactory; +import ca.uhn.fhir.cql.common.provider.LibraryResolutionProvider; +import ca.uhn.fhir.cql.r4.helper.LibraryHelper; +import org.apache.commons.lang3.tuple.Triple; +import org.cqframework.cql.elm.execution.Library; +import org.hl7.fhir.r4.model.Measure; +import org.opencds.cqf.cql.engine.data.DataProvider; +import org.opencds.cqf.cql.engine.debug.DebugMap; +import org.opencds.cqf.cql.engine.execution.Context; +import org.opencds.cqf.cql.engine.execution.LibraryLoader; +import org.opencds.cqf.cql.engine.runtime.DateTime; +import org.opencds.cqf.cql.engine.runtime.Interval; +import org.opencds.cqf.cql.engine.terminology.TerminologyProvider; + +import java.util.Date; +import java.util.List; + +public class MeasureEvaluationSeed { + private Measure measure; + private Context context; + private Interval measurementPeriod; + private LibraryLoader libraryLoader; + private LibraryResolutionProvider libraryResourceProvider; + private EvaluationProviderFactory providerFactory; + private DataProvider dataProvider; + private LibraryHelper libraryHelper; + + public MeasureEvaluationSeed(EvaluationProviderFactory providerFactory, LibraryLoader libraryLoader, + LibraryResolutionProvider libraryResourceProvider, LibraryHelper libraryHelper) { + this.providerFactory = providerFactory; + this.libraryLoader = libraryLoader; + this.libraryResourceProvider = libraryResourceProvider; + this.libraryHelper = libraryHelper; + } + + public Measure getMeasure() { + return this.measure; + } + + public Context getContext() { + return this.context; + } + + public Interval getMeasurementPeriod() { + return this.measurementPeriod; + } + + public DataProvider getDataProvider() { + return this.dataProvider; + } + + public void setup(Measure measure, String periodStart, String periodEnd, String productLine, String source, + String user, String pass) { + this.measure = measure; + + this.libraryHelper.loadLibraries(measure, this.libraryLoader, this.libraryResourceProvider); + + // resolve primary library + Library library = this.libraryHelper.resolvePrimaryLibrary(measure, libraryLoader, this.libraryResourceProvider); + + + // resolve execution context + context = new Context(library); + context.registerLibraryLoader(libraryLoader); + + List> usingDefs = UsingHelper.getUsingUrlAndVersion(library.getUsings()); + + if (usingDefs.size() > 1) { + throw new IllegalArgumentException( + "Evaluation of Measure using multiple Models is not supported at this time."); + } + + // If there are no Usings, there is probably not any place the Terminology + // actually used so I think the assumption that at least one provider exists is + // ok. + TerminologyProvider terminologyProvider = null; + if (usingDefs.size() > 0) { + // Creates a terminology provider based on the first using statement. This + // assumes the terminology + // server matches the FHIR version of the CQL. + terminologyProvider = this.providerFactory.createTerminologyProvider(usingDefs.get(0).getLeft(), + usingDefs.get(0).getMiddle(), source, user, pass); + context.registerTerminologyProvider(terminologyProvider); + } + + for (Triple def : usingDefs) { + this.dataProvider = this.providerFactory.createDataProvider(def.getLeft(), def.getMiddle(), + terminologyProvider); + context.registerDataProvider(def.getRight(), dataProvider); + } + + if (periodStart != null && periodEnd != null) { + // resolve the measurement period + measurementPeriod = new Interval(DateHelper.resolveRequestDate(periodStart), true, + DateHelper.resolveRequestDate(periodEnd), true); + + context.setParameter(null, "Measurement Period", + new Interval(DateTime.fromJavaDate((Date) measurementPeriod.getStart()), true, + DateTime.fromJavaDate((Date) measurementPeriod.getEnd()), true)); + } + + if (productLine != null) { + context.setParameter(null, "Product Line", productLine); + } + + context.setExpressionCaching(true); + + // This needs to be made configurable + DebugMap debugMap = new DebugMap(); + debugMap.setIsLoggingEnabled(true); + context.setDebugMap(debugMap); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/evaluation/ProviderFactory.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/evaluation/ProviderFactory.java new file mode 100644 index 00000000000..9a050c77271 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/evaluation/ProviderFactory.java @@ -0,0 +1,84 @@ +package ca.uhn.fhir.cql.r4.evaluation; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.context.FhirContext; +import ca.uhn.fhir.cql.common.provider.EvaluationProviderFactory; +import ca.uhn.fhir.cql.common.retrieve.JpaFhirRetrieveProvider; +import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import org.opencds.cqf.cql.engine.data.CompositeDataProvider; +import org.opencds.cqf.cql.engine.data.DataProvider; +import org.opencds.cqf.cql.engine.fhir.searchparam.SearchParameterResolver; +import org.opencds.cqf.cql.engine.model.ModelResolver; +import org.opencds.cqf.cql.engine.terminology.TerminologyProvider; +import org.opencds.cqf.cql.evaluator.engine.terminology.PrivateCachingTerminologyProviderDecorator; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +// This class is a relatively dumb factory for data providers. It supports only +// creating JPA providers for FHIR, and only basic auth for terminology +@Component +public class ProviderFactory implements EvaluationProviderFactory { + + DaoRegistry registry; + TerminologyProvider defaultTerminologyProvider; + FhirContext fhirContext; + ModelResolver fhirModelResolver; + + @Autowired + public ProviderFactory(FhirContext fhirContext, DaoRegistry registry, + TerminologyProvider defaultTerminologyProvider, ModelResolver fhirModelResolver) { + this.defaultTerminologyProvider = defaultTerminologyProvider; + this.registry = registry; + this.fhirContext = fhirContext; + this.fhirModelResolver = fhirModelResolver; + } + + public DataProvider createDataProvider(String model, String version) { + return this.createDataProvider(model, version, null, null, null); + } + + public DataProvider createDataProvider(String model, String version, String url, String user, String pass) { + TerminologyProvider terminologyProvider = this.createTerminologyProvider(model, version, url, user, pass); + return this.createDataProvider(model, version, terminologyProvider); + } + + public DataProvider createDataProvider(String model, String version, TerminologyProvider terminologyProvider) { + if (model.equals("FHIR") && version.startsWith("4")) { + JpaFhirRetrieveProvider retrieveProvider = new JpaFhirRetrieveProvider(this.registry, + new SearchParameterResolver(this.fhirContext)); + retrieveProvider.setTerminologyProvider(terminologyProvider); + retrieveProvider.setExpandValueSets(true); + + return new CompositeDataProvider(this.fhirModelResolver, retrieveProvider); + } + + throw new IllegalArgumentException( + String.format("Can't construct a data provider for model %s version %s", model, version)); + } + + public TerminologyProvider createTerminologyProvider(String model, String version, String url, String user, + String pass) { + TerminologyProvider terminologyProvider = null; + terminologyProvider = this.defaultTerminologyProvider; + return new PrivateCachingTerminologyProviderDecorator(terminologyProvider); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/helper/CanonicalHelper.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/helper/CanonicalHelper.java new file mode 100644 index 00000000000..aa4df240c45 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/helper/CanonicalHelper.java @@ -0,0 +1,49 @@ +package ca.uhn.fhir.cql.r4.helper; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import org.hl7.fhir.r4.model.CanonicalType; + +public class CanonicalHelper { + + public static String getId(CanonicalType canonical) { + if (canonical.hasValue()) { + String id = canonical.getValue(); + String temp = id.contains("/") ? id.substring(id.lastIndexOf("/") + 1) : id; + return temp.split("\\|")[0]; + } + + throw new RuntimeException("CanonicalType must have a value for id extraction"); + } + + public static String getResourceName(CanonicalType canonical) { + if (canonical.hasValue()) { + String id = canonical.getValue(); + if (id.contains("/")) { + id = id.replace(id.substring(id.lastIndexOf("/")), ""); + return id.contains("/") ? id.substring(id.lastIndexOf("/") + 1) : id; + } + return null; + } + + throw new RuntimeException("CanonicalType must have a value for resource name extraction"); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/helper/LibraryHelper.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/helper/LibraryHelper.java new file mode 100644 index 00000000000..7b49a376d02 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/helper/LibraryHelper.java @@ -0,0 +1,237 @@ +package ca.uhn.fhir.cql.r4.helper; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.cql.common.evaluation.LibraryLoader; +import ca.uhn.fhir.cql.common.provider.LibraryResolutionProvider; +import ca.uhn.fhir.cql.common.provider.LibrarySourceProvider; +import org.cqframework.cql.cql2elm.LibraryManager; +import org.cqframework.cql.cql2elm.ModelManager; +import org.cqframework.cql.cql2elm.model.Model; +import org.cqframework.cql.elm.execution.Library; +import org.cqframework.cql.elm.execution.VersionedIdentifier; +import org.hl7.fhir.r4.model.Attachment; +import org.hl7.fhir.r4.model.CanonicalType; +import org.hl7.fhir.r4.model.Coding; +import org.hl7.fhir.r4.model.Measure; +import org.hl7.fhir.r4.model.PlanDefinition; +import org.hl7.fhir.r4.model.RelatedArtifact; +import org.hl7.fhir.r4.model.Resource; +import org.opencds.cqf.cql.evaluator.cql2elm.model.CacheAwareModelManager; +import org.opencds.cqf.cql.evaluator.engine.execution.PrivateCachingLibraryLoaderDecorator; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Created by Christopher on 1/11/2017. + */ +public class LibraryHelper { + + private Map modelCache; + + public LibraryHelper(Map modelCache) { + this.modelCache = modelCache; + } + + public org.opencds.cqf.cql.engine.execution.LibraryLoader createLibraryLoader(LibraryResolutionProvider provider) { + ModelManager modelManager = new CacheAwareModelManager(this.modelCache); + LibraryManager libraryManager = new LibraryManager(modelManager); + libraryManager.getLibrarySourceLoader().clearProviders(); + + libraryManager.getLibrarySourceLoader().registerProvider( + new LibrarySourceProvider(provider, + x -> x.getContent(), x -> x.getContentType(), x -> x.getData())); + + return new PrivateCachingLibraryLoaderDecorator(new LibraryLoader(libraryManager, modelManager)); + } + + public org.opencds.cqf.cql.engine.execution.LibraryLoader createLibraryLoader(org.cqframework.cql.cql2elm.LibrarySourceProvider provider) { + ModelManager modelManager = new CacheAwareModelManager(this.modelCache); + LibraryManager libraryManager = new LibraryManager(modelManager); + libraryManager.getLibrarySourceLoader().clearProviders(); + + libraryManager.getLibrarySourceLoader().registerProvider(provider); + + return new PrivateCachingLibraryLoaderDecorator(new LibraryLoader(libraryManager, modelManager)); + } + + public org.hl7.fhir.r4.model.Library resolveLibraryReference(LibraryResolutionProvider libraryResourceProvider, String reference) { + // Raw references to Library/libraryId or libraryId + if (reference.startsWith("Library/") || !reference.contains("/")) { + return libraryResourceProvider.resolveLibraryById(reference.replace("Library/", "")); + } + // Full url (e.g. http://hl7.org/fhir/us/Library/FHIRHelpers) + else if (reference.contains(("/Library/"))) { + return libraryResourceProvider.resolveLibraryByCanonicalUrl(reference); + } + + return null; + } + + public List loadLibraries(Measure measure, + org.opencds.cqf.cql.engine.execution.LibraryLoader libraryLoader, + LibraryResolutionProvider libraryResourceProvider) { + List libraries = new ArrayList(); + + // load libraries + //TODO: if there's a bad measure argument, this blows up for an obscure error + org.hl7.fhir.r4.model.Library primaryLibrary = null; + for (CanonicalType ref : measure.getLibrary()) { + // if library is contained in measure, load it into server + String id = ref.getValue(); //CanonicalHelper.getId(ref); + if (id.startsWith("#")) { + id = id.substring(1); + for (Resource resource : measure.getContained()) { + if (resource instanceof org.hl7.fhir.r4.model.Library + && resource.getIdElement().getIdPart().equals(id)) { + libraryResourceProvider.update((org.hl7.fhir.r4.model.Library) resource); + } + } + } + + // We just loaded it into the server so we can access it by Id + org.hl7.fhir.r4.model.Library library = resolveLibraryReference(libraryResourceProvider, id); + if (primaryLibrary == null) { + primaryLibrary = library; + } + + if (library != null && isLogicLibrary(library)) { + libraries.add( + libraryLoader.load(new VersionedIdentifier().withId(library.getName()).withVersion(library.getVersion())) + ); + } + } + + if (libraries.isEmpty()) { + throw new IllegalArgumentException(String + .format("Could not load library source for libraries referenced in %s.", measure.getId())); + } + + //VersionedIdentifier primaryLibraryId = libraries.get(0).getIdentifier(); + //org.hl7.fhir.r4.model.Library primaryLibrary = libraryResourceProvider.resolveLibraryByName(primaryLibraryId.getId(), primaryLibraryId.getVersion()); + for (RelatedArtifact artifact : primaryLibrary.getRelatedArtifact()) { + if (artifact.hasType() && artifact.getType().equals(RelatedArtifact.RelatedArtifactType.DEPENDSON) && artifact.hasResource()) { + org.hl7.fhir.r4.model.Library library = null; + library = resolveLibraryReference(libraryResourceProvider, artifact.getResource()); + + if (library != null && isLogicLibrary(library)) { + libraries.add( + libraryLoader.load(new VersionedIdentifier().withId(library.getName()).withVersion(library.getVersion())) + ); + } + } + } + + return libraries; + } + + private boolean isLogicLibrary(org.hl7.fhir.r4.model.Library library) { + if (library == null) { + return false; + } + + if (!library.hasType()) { + // If no type is specified, assume it is a logic library based on whether there is a CQL content element. + if (library.hasContent()) { + for (Attachment a : library.getContent()) { + if (a.hasContentType() && (a.getContentType().equals("text/cql") + || a.getContentType().equals("application/elm+xml") + || a.getContentType().equals("application/elm+json"))) { + return true; + } + } + } + return false; + } + + if (!library.getType().hasCoding()) { + return false; + } + + for (Coding c : library.getType().getCoding()) { + if (c.hasSystem() && c.getSystem().equals("http://terminology.hl7.org/CodeSystem/library-type") + && c.hasCode() && c.getCode().equals("logic-library")) { + return true; + } + } + + return false; + } + + public Library resolveLibraryById(String libraryId, + org.opencds.cqf.cql.engine.execution.LibraryLoader libraryLoader, + LibraryResolutionProvider libraryResourceProvider) { + // Library library = null; + + org.hl7.fhir.r4.model.Library fhirLibrary = libraryResourceProvider.resolveLibraryById(libraryId); + return libraryLoader + .load(new VersionedIdentifier().withId(fhirLibrary.getName()).withVersion(fhirLibrary.getVersion())); + + // for (Library l : libraryLoader.getLibraries()) { + // VersionedIdentifier vid = l.getIdentifier(); + // if (vid.getId().equals(fhirLibrary.getName()) && + // LibraryResourceHelper.compareVersions(fhirLibrary.getVersion(), + // vid.getVersion()) == 0) { + // library = l; + // break; + // } + // } + + // if (library == null) { + + // } + + // return library; + } + + public Library resolvePrimaryLibrary(Measure measure, + org.opencds.cqf.cql.engine.execution.LibraryLoader libraryLoader, + LibraryResolutionProvider libraryResourceProvider) { + // default is the first library reference + String id = CanonicalHelper.getId(measure.getLibrary().get(0)); + + Library library = resolveLibraryById(id, libraryLoader, libraryResourceProvider); + + if (library == null) { + throw new IllegalArgumentException(String.format("Could not resolve primary library for Measure/%s.", + measure.getIdElement().getIdPart())); + } + + return library; + } + + public Library resolvePrimaryLibrary(PlanDefinition planDefinition, + org.opencds.cqf.cql.engine.execution.LibraryLoader libraryLoader, + LibraryResolutionProvider libraryResourceProvider) { + String id = CanonicalHelper.getId(planDefinition.getLibrary().get(0)); + + Library library = resolveLibraryById(id, libraryLoader, libraryResourceProvider); + + if (library == null) { + throw new IllegalArgumentException(String.format("Could not resolve primary library for PlanDefinition/%s", + planDefinition.getIdElement().getIdPart())); + } + + return library; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/provider/JpaTerminologyProvider.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/provider/JpaTerminologyProvider.java new file mode 100644 index 00000000000..16383d7499e --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/provider/JpaTerminologyProvider.java @@ -0,0 +1,149 @@ +package ca.uhn.fhir.cql.r4.provider; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.context.FhirContext; +import ca.uhn.fhir.context.support.IValidationSupport; +import ca.uhn.fhir.context.support.IValidationSupport.LookupCodeResult; +import ca.uhn.fhir.context.support.ValidationSupportContext; +import ca.uhn.fhir.context.support.ValueSetExpansionOptions; +import ca.uhn.fhir.jpa.rp.r4.ValueSetResourceProvider; +import ca.uhn.fhir.jpa.searchparam.SearchParameterMap; +import ca.uhn.fhir.jpa.term.api.ITermReadSvcR4; +import ca.uhn.fhir.rest.api.server.IBundleProvider; +import ca.uhn.fhir.rest.param.UriParam; +import ca.uhn.fhir.rest.server.exceptions.ResourceNotFoundException; +import org.hl7.fhir.instance.model.api.IBaseResource; +import org.hl7.fhir.r4.model.IdType; +import org.hl7.fhir.r4.model.ValueSet; +import org.hl7.fhir.r4.model.ValueSet.ValueSetExpansionContainsComponent; +import org.opencds.cqf.cql.engine.runtime.Code; +import org.opencds.cqf.cql.engine.terminology.CodeSystemInfo; +import org.opencds.cqf.cql.engine.terminology.TerminologyProvider; +import org.opencds.cqf.cql.engine.terminology.ValueSetInfo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +@Component +public class JpaTerminologyProvider implements TerminologyProvider { + + private ITermReadSvcR4 terminologySvc; + private ValueSetResourceProvider valueSetResourceProvider; + private final IValidationSupport validationSupport; + + @Autowired + public JpaTerminologyProvider(ITermReadSvcR4 terminologySvc, + ValueSetResourceProvider valueSetResourceProvider, IValidationSupport validationSupport) { + this.terminologySvc = terminologySvc; + this.valueSetResourceProvider = valueSetResourceProvider; + this.validationSupport = validationSupport; + } + + @Override + public boolean in(Code code, ValueSetInfo valueSet) throws ResourceNotFoundException { + for (Code c : expand(valueSet)) { + if (c == null) + continue; + if (c.getCode().equals(code.getCode()) && c.getSystem().equals(code.getSystem())) { + return true; + } + } + return false; + } + + @Override + public Iterable expand(ValueSetInfo valueSet) throws ResourceNotFoundException { + List codes = new ArrayList<>(); + boolean needsExpand = false; + ValueSet vs; + if (valueSet.getId().startsWith("http://") || valueSet.getId().startsWith("https://")) { + if (valueSet.getVersion() != null + || (valueSet.getCodeSystems() != null && valueSet.getCodeSystems().size() > 0)) { + if (!(valueSet.getCodeSystems().size() == 1 && valueSet.getCodeSystems().get(0).getVersion() == null)) { + throw new UnsupportedOperationException(String.format( + "Could not expand value set %s; version and code system bindings are not supported at this time.", + valueSet.getId())); + } + } + IBundleProvider bundleProvider = valueSetResourceProvider.getDao() + .search(new SearchParameterMap().add(ValueSet.SP_URL, new UriParam(valueSet.getId()))); + List valueSets = bundleProvider.getResources(0, bundleProvider.size()); + if (valueSets.isEmpty()) { + throw new IllegalArgumentException(String.format("Could not resolve value set %s.", valueSet.getId())); + } else if (valueSets.size() == 1) { + vs = (ValueSet) valueSets.get(0); + } else { + throw new IllegalArgumentException("Found more than 1 ValueSet with url: " + valueSet.getId()); + } + } else { + vs = valueSetResourceProvider.getDao().read(new IdType(valueSet.getId())); + } + if (vs != null) { + if (vs.hasCompose()) { + if (vs.getCompose().hasInclude()) { + for (ValueSet.ConceptSetComponent include : vs.getCompose().getInclude()) { + if (include.hasValueSet() || include.hasFilter()) { + needsExpand = true; + break; + } + for (ValueSet.ConceptReferenceComponent concept : include.getConcept()) { + if (concept.hasCode()) { + codes.add(new Code().withCode(concept.getCode()).withSystem(include.getSystem())); + } + } + } + if (!needsExpand) { + return codes; + } + } + } + + if (vs.hasExpansion() && vs.getExpansion().hasContains()) { + for (ValueSetExpansionContainsComponent vsecc : vs.getExpansion().getContains()) { + codes.add(new Code().withCode(vsecc.getCode()).withSystem(vsecc.getSystem())); + } + + return codes; + } + + } + + ValueSet expansion = terminologySvc + .expandValueSet(new ValueSetExpansionOptions().setCount(Integer.MAX_VALUE), valueSet.getId(), null); + expansion.getExpansion().getContains() + .forEach(concept -> codes.add(new Code().withCode(concept.getCode()).withSystem(concept.getSystem()))); + + return codes; + } + + @Override + public Code lookup(Code code, CodeSystemInfo codeSystem) throws ResourceNotFoundException { + LookupCodeResult cs = terminologySvc.lookupCode(new ValidationSupportContext(validationSupport), codeSystem.getId(), code.getCode()); + + code.setDisplay(cs.getCodeDisplay()); + code.setSystem(codeSystem.getId()); + + return code; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/provider/LibraryResolutionProviderImpl.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/provider/LibraryResolutionProviderImpl.java new file mode 100644 index 00000000000..1d6a95bec8a --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/provider/LibraryResolutionProviderImpl.java @@ -0,0 +1,125 @@ +package ca.uhn.fhir.cql.r4.provider; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.cql.common.provider.LibraryResolutionProvider; +import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao; +import ca.uhn.fhir.jpa.searchparam.SearchParameterMap; +import ca.uhn.fhir.rest.param.StringParam; +import ca.uhn.fhir.rest.param.TokenParam; +import ca.uhn.fhir.rest.param.UriParam; +import org.hl7.fhir.instance.model.api.IBaseResource; +import org.hl7.fhir.r4.model.IdType; +import org.hl7.fhir.r4.model.Library; +import org.opencds.cqf.cql.engine.terminology.TerminologyProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +@Component +public class LibraryResolutionProviderImpl implements LibraryResolutionProvider { + @Autowired + private IFhirResourceDao myLibraryDao; + @Autowired + DaoRegistry registry; + @Autowired + TerminologyProvider defaultTerminologyProvider; + + // TODO: Figure out if we should throw an exception or something here. + @Override + public void update(Library library) { + myLibraryDao.update(library); + } + + @Override + public Library resolveLibraryById(String libraryId) { + try { + return myLibraryDao.read(new IdType(libraryId)); + } catch (Exception e) { + throw new IllegalArgumentException(String.format("Could not resolve library id %s", libraryId)); + } + } + + @Override + public Library resolveLibraryByName(String libraryName, String libraryVersion) { + Iterable libraries = getLibrariesByName(libraryName); + org.hl7.fhir.r4.model.Library library = LibraryResolutionProvider.selectFromList(libraries, libraryVersion, + x -> x.getVersion()); + + if (library == null) { + throw new IllegalArgumentException(String.format("Could not resolve library name %s", libraryName)); + } + + return library; + } + + @Override + public Library resolveLibraryByCanonicalUrl(String url) { + Objects.requireNonNull(url, "url must not be null"); + + String[] parts = url.split("\\|"); + String resourceUrl = parts[0]; + String version = null; + if (parts.length > 1) { + version = parts[1]; + } + + SearchParameterMap map = new SearchParameterMap(); + map.add("url", new UriParam(resourceUrl)); + if (version != null) { + map.add("version", new TokenParam(version)); + } + + ca.uhn.fhir.rest.api.server.IBundleProvider bundleProvider = myLibraryDao.search(map); + + if (bundleProvider.size() == 0) { + return null; + } + List resourceList = bundleProvider.getResources(0, bundleProvider.size()); + return LibraryResolutionProvider.selectFromList(resolveLibraries(resourceList), version, x -> x.getVersion()); + } + + private Iterable getLibrariesByName(String name) { + // Search for libraries by name + SearchParameterMap map = new SearchParameterMap(); + map.add("name", new StringParam(name, true)); + ca.uhn.fhir.rest.api.server.IBundleProvider bundleProvider = myLibraryDao.search(map); + + if (bundleProvider.size() == 0) { + return new ArrayList<>(); + } + List resourceList = bundleProvider.getResources(0, bundleProvider.size()); + return resolveLibraries(resourceList); + } + + private Iterable resolveLibraries(List resourceList) { + List ret = new ArrayList<>(); + for (IBaseResource res : resourceList) { + Class clazz = res.getClass(); + ret.add((org.hl7.fhir.r4.model.Library) clazz.cast(res)); + } + return ret; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/provider/MeasureOperationsProvider.java b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/provider/MeasureOperationsProvider.java new file mode 100644 index 00000000000..1bebe151d35 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/main/java/ca/uhn/fhir/cql/r4/provider/MeasureOperationsProvider.java @@ -0,0 +1,123 @@ +package ca.uhn.fhir.cql.r4.provider; + +/*- + * #%L + * HAPI FHIR - Clinical Quality Language + * %% + * Copyright (C) 2014 - 2021 Smile CDR, Inc. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.cql.common.provider.EvaluationProviderFactory; +import ca.uhn.fhir.cql.common.provider.LibraryResolutionProvider; +import ca.uhn.fhir.cql.r4.evaluation.MeasureEvaluation; +import ca.uhn.fhir.cql.r4.evaluation.MeasureEvaluationSeed; +import ca.uhn.fhir.cql.r4.helper.LibraryHelper; +import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao; +import ca.uhn.fhir.rest.annotation.IdParam; +import ca.uhn.fhir.rest.annotation.Operation; +import ca.uhn.fhir.rest.annotation.OperationParam; +import ca.uhn.fhir.rest.server.exceptions.InternalErrorException; +import org.hl7.fhir.exceptions.FHIRException; +import org.hl7.fhir.r4.model.Extension; +import org.hl7.fhir.r4.model.IdType; +import org.hl7.fhir.r4.model.Library; +import org.hl7.fhir.r4.model.Measure; +import org.hl7.fhir.r4.model.MeasureReport; +import org.hl7.fhir.r4.model.StringType; +import org.opencds.cqf.cql.engine.execution.LibraryLoader; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * This class implements the r4 $evaluate-measure operation defined in the FHIR Clinical Reasoning module. + * Changes should comply with the specification in as far as is possible, and questions about Measure or CQL evaluation can be directed to the original authors. + * @author Jonathan Percival + * @author Bryn Rhodes + * @see https://hl7.org/fhir/measure-operation-evaluate-measure.html + */ +@Component +public class MeasureOperationsProvider { + @Autowired + private LibraryResolutionProvider libraryResolutionProvider; + @Autowired + private IFhirResourceDao myMeasureDao; + @Autowired + private DaoRegistry registry; + @Autowired + private EvaluationProviderFactory factory; + @Autowired + private LibraryHelper libraryHelper; + + + /* + * + * NOTE that the source, user, and pass parameters are not standard parameters + * for the FHIR $evaluate-measure operation + * + */ + @Operation(name = "$evaluate-measure", idempotent = true, type = Measure.class) + public MeasureReport evaluateMeasure(@IdParam IdType theId, + @OperationParam(name = "periodStart") String periodStart, + @OperationParam(name = "periodEnd") String periodEnd, + @OperationParam(name = "measure") String measureRef, + @OperationParam(name = "reportType") String reportType, + @OperationParam(name = "patient") String patientRef, + @OperationParam(name = "productLine") String productLine, + @OperationParam(name = "practitioner") String practitionerRef, + @OperationParam(name = "lastReceivedOn") String lastReceivedOn, + @OperationParam(name = "source") String source, + @OperationParam(name = "user") String user, + @OperationParam(name = "pass") String pass) throws InternalErrorException, FHIRException { + LibraryLoader libraryLoader = this.libraryHelper.createLibraryLoader(this.libraryResolutionProvider); + MeasureEvaluationSeed seed = new MeasureEvaluationSeed(this.factory, libraryLoader, + this.libraryResolutionProvider, this.libraryHelper); + Measure measure = myMeasureDao.read(theId); + + if (measure == null) { + throw new RuntimeException("Could not find Measure/" + theId.getIdPart()); + } + + seed.setup(measure, periodStart, periodEnd, productLine, source, user, pass); + + // resolve report type + MeasureEvaluation evaluator = new MeasureEvaluation(seed.getDataProvider(), this.registry, + seed.getMeasurementPeriod()); + if (reportType != null) { + switch (reportType) { + case "patient": + return evaluator.evaluatePatientMeasure(seed.getMeasure(), seed.getContext(), patientRef); + case "patient-list": + return evaluator.evaluateSubjectListMeasure(seed.getMeasure(), seed.getContext(), practitionerRef); + case "population": + return evaluator.evaluatePopulationMeasure(seed.getMeasure(), seed.getContext()); + default: + throw new IllegalArgumentException("Invalid report type: " + reportType); + } + } + + // default report type is patient + MeasureReport report = evaluator.evaluatePatientMeasure(seed.getMeasure(), seed.getContext(), patientRef); + if (productLine != null) { + Extension ext = new Extension(); + ext.setUrl("http://hl7.org/fhir/us/cqframework/cqfmeasures/StructureDefinition/cqfm-productLine"); + ext.setValue(new StringType(productLine)); + report.addExtension(ext); + } + + return report; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/BaseCqlDstu3Test.java b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/BaseCqlDstu3Test.java new file mode 100644 index 00000000000..56b9876d34a --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/BaseCqlDstu3Test.java @@ -0,0 +1,82 @@ +package ca.uhn.fhir.cql; + +import ca.uhn.fhir.context.FhirContext; +import ca.uhn.fhir.cql.common.provider.CqlProviderTestBase; +import ca.uhn.fhir.cql.config.CqlDstu3Config; +import ca.uhn.fhir.cql.config.TestCqlConfig; +import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import ca.uhn.fhir.jpa.api.dao.IFhirSystemDao; +import ca.uhn.fhir.jpa.subscription.match.config.SubscriptionProcessorConfig; +import ca.uhn.fhir.jpa.test.BaseJpaDstu3Test; +import org.apache.commons.io.FileUtils; +import org.hl7.fhir.dstu3.model.Bundle; +import org.junit.jupiter.api.extension.ExtendWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import java.io.File; +import java.io.IOException; +import java.util.Collection; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = {TestCqlConfig.class, SubscriptionProcessorConfig.class, CqlDstu3Config.class}) +public class BaseCqlDstu3Test extends BaseJpaDstu3Test implements CqlProviderTestBase { + Logger ourLog = LoggerFactory.getLogger(BaseCqlDstu3Test.class); + + @Autowired + protected + DaoRegistry myDaoRegistry; + @Autowired + protected + FhirContext myFhirContext; + @Autowired + IFhirSystemDao mySystemDao; + + @Override + public FhirContext getFhirContext() { + return myFhirContext; + } + + @Override + public DaoRegistry getDaoRegistry() { + return myDaoRegistry; + } + + + protected int loadDataFromDirectory(String theDirectoryName) throws IOException { + int count = 0; + ourLog.info("Reading files in directory: {}", theDirectoryName); + ClassPathResource dir = new ClassPathResource(theDirectoryName); + Collection files = FileUtils.listFiles(dir.getFile(), null, false); + ourLog.info("{} files found.", files.size()); + for (File file : files) { + String filename = file.getAbsolutePath(); + ourLog.info("Processing filename '{}'", filename); + if (filename.endsWith(".cql") || filename.contains("expectedresults")) { + // Ignore .cql and expectedresults files + ourLog.info("Ignoring file: '{}'", filename); + } else if (filename.endsWith(".json")) { + if (filename.contains("bundle")) { + loadBundle(filename); + } else { + loadResource(filename); + } + count++; + } else { + ourLog.info("Ignoring file: '{}'", filename); + } + } + return count; + } + + protected Bundle loadBundle(String theLocation) throws IOException { + String json = stringFromResource(theLocation); + Bundle bundle = (Bundle) myFhirContext.newJsonParser().parseResource(json); + Bundle result = (Bundle) mySystemDao.transaction(null, bundle); + return result; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/BaseCqlR4Test.java b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/BaseCqlR4Test.java new file mode 100644 index 00000000000..42249e2571b --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/BaseCqlR4Test.java @@ -0,0 +1,82 @@ +package ca.uhn.fhir.cql; + +import ca.uhn.fhir.context.FhirContext; +import ca.uhn.fhir.cql.common.provider.CqlProviderTestBase; +import ca.uhn.fhir.cql.config.CqlR4Config; +import ca.uhn.fhir.cql.config.TestCqlConfig; +import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import ca.uhn.fhir.jpa.api.dao.IFhirSystemDao; +import ca.uhn.fhir.jpa.subscription.match.config.SubscriptionProcessorConfig; +import ca.uhn.fhir.jpa.test.BaseJpaR4Test; +import org.apache.commons.io.FileUtils; +import org.hl7.fhir.r4.model.Bundle; +import org.junit.jupiter.api.extension.ExtendWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import java.io.File; +import java.io.IOException; +import java.util.Collection; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = {CqlR4Config.class, TestCqlConfig.class, SubscriptionProcessorConfig.class}) +public class BaseCqlR4Test extends BaseJpaR4Test implements CqlProviderTestBase { + Logger ourLog = LoggerFactory.getLogger(BaseCqlR4Test.class); + + @Autowired + protected + DaoRegistry myDaoRegistry; + @Autowired + protected + FhirContext myFhirContext; + @Autowired + IFhirSystemDao mySystemDao; + + @Override + public FhirContext getFhirContext() { + return myFhirContext; + } + + @Override + public DaoRegistry getDaoRegistry() { + return myDaoRegistry; + } + + protected int loadDataFromDirectory(String theDirectoryName) throws IOException { + int count = 0; + ourLog.info("Reading files in directory: {}", theDirectoryName); + ClassPathResource dir = new ClassPathResource(theDirectoryName); + Collection files = FileUtils.listFiles(dir.getFile(), null, false); + ourLog.info("{} files found.", files.size()); + for (File file : files) { + String filename = file.getAbsolutePath(); + ourLog.info("Processing filename '{}'", filename); + if (filename.endsWith(".cql") || filename.contains("expectedresults")) { + // Ignore .cql and expectedresults files + ourLog.info("Ignoring file: '{}'", filename); + } else if (filename.endsWith(".json")) { + if (filename.contains("bundle")) { + loadBundle(filename); + } else { + loadResource(filename); + } + count++; + } else { + ourLog.info("Ignoring file: '{}'", filename); + } + } + return count; + } + + protected Bundle loadBundle(String theLocation) throws IOException { + String json = stringFromResource(theLocation); + Bundle bundle = (Bundle) myFhirContext.newJsonParser().parseResource(json); + Bundle result = (Bundle) mySystemDao.transaction(null, bundle); + return result; + } + +} diff --git a/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/common/evaluation/LibraryLoaderTest.java b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/common/evaluation/LibraryLoaderTest.java new file mode 100644 index 00000000000..f2a5520bbc8 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/common/evaluation/LibraryLoaderTest.java @@ -0,0 +1,44 @@ +package ca.uhn.fhir.cql.common.evaluation; + +import org.cqframework.cql.cql2elm.LibraryManager; +import org.cqframework.cql.cql2elm.ModelManager; +import org.cqframework.cql.elm.execution.Library; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.Collection; + +import static org.junit.Assert.assertNotNull; + +@ExtendWith(MockitoExtension.class) +public class LibraryLoaderTest { + + @Mock + LibraryManager libraryManager; + @Mock + ModelManager modelManager; + + @InjectMocks + LibraryLoader libraryLoader; + + @Test + public void testGetLibraryManagerReturnsInjectedMock() { + LibraryManager libraryManager = libraryLoader.getLibraryManager(); + assertNotNull("results of call to getLibraryManager() should NOT be NULL!", libraryManager); + } + + @Test + public void testGetModelManagerReturnsInjectedMock() { + ModelManager modelManager = libraryLoader.getModelManager(); + assertNotNull("results of call to getModelManager() should NOT be NULL!", modelManager); + } + + @Test + public void testGetLibrariesReturnsNonNullCollection() { + Collection libraries = libraryLoader.getLibraries(); + assertNotNull("results of call to getLibraries() should NOT be NULL!", libraries); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/common/helper/DateHelperTest.java b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/common/helper/DateHelperTest.java new file mode 100644 index 00000000000..ce0b1618600 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/common/helper/DateHelperTest.java @@ -0,0 +1,58 @@ +package ca.uhn.fhir.cql.common.helper; + +import ca.uhn.fhir.parser.DataFormatException; +import org.junit.jupiter.api.Test; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.GregorianCalendar; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.fail; + +public class DateHelperTest { + + @Test + public void testDateHelperProperlyResolvesValidDate() { + DateHelper dateHelper = new DateHelper(); + Date result = dateHelper.resolveRequestDate("2001-01-29"); + assertNotNull("result should not be NULL!", result); + GregorianCalendar cal = new GregorianCalendar(); + cal.setTimeInMillis(result.getTime()); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + assertEquals("Got the wrong parsed Date value from initial date String", "2001-01-29", formatter.format(cal.getTime())); + } + + @Test + public void testDateHelperProperlyResolvesValidDateWithYearOnly() { + DateHelper dateHelper = new DateHelper(); + Date result = dateHelper.resolveRequestDate("2001"); + assertNotNull("result should not be NULL!", result); + } + + @Test + public void testDateHelperProperlyDetectsBlankDate() { + DateHelper dateHelper = new DateHelper(); + Date result = null; + try { + result = dateHelper.resolveRequestDate(null); + fail(); + } catch (IllegalArgumentException e) { + assertNull("result should be NULL!", result); + } + } + + @Test + public void testDateHelperProperlyDetectsNonNumericDateCharacters() { + DateHelper dateHelper = new DateHelper(); + Date result = null; + try { + result = dateHelper.resolveRequestDate("aaa-bbb-ccc"); + fail(); + } catch (DataFormatException e) { + assertNull("result should be NULL!", result); + } + } +} diff --git a/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/common/helper/TranslatorHelperTest.java b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/common/helper/TranslatorHelperTest.java new file mode 100644 index 00000000000..c4a9393ab75 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/common/helper/TranslatorHelperTest.java @@ -0,0 +1,215 @@ +package ca.uhn.fhir.cql.common.helper; + +import ca.uhn.fhir.context.FhirContext; +import ca.uhn.fhir.cql.common.provider.CqlProviderTestBase; +import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import org.apache.commons.lang3.StringUtils; +import org.cqframework.cql.cql2elm.CqlTranslator; +import org.cqframework.cql.cql2elm.CqlTranslatorException; +import org.cqframework.cql.cql2elm.LibraryManager; +import org.cqframework.cql.cql2elm.LibrarySourceLoader; +import org.cqframework.cql.cql2elm.ModelManager; +import org.cqframework.cql.cql2elm.NamespaceManager; +import org.cqframework.cql.elm.execution.Library; +import org.cqframework.cql.elm.tracking.TrackBack; +import org.hl7.elm.r1.VersionedIdentifier; +import org.junit.After; +import org.junit.Before; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Matchers; +import org.mockito.Mock; +import org.mockito.MockedStatic; +import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.io.ByteArrayInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; + +import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class TranslatorHelperTest implements CqlProviderTestBase { + private static String sampleCql = "library ASF_FHIR version '1.0.0'\n" + + "using FHIR version '4.0.0'\n"; + + @Mock + LibraryManager libraryManager; + @Mock + ModelManager modelManager; + @Mock + NamespaceManager namespaceManager; + @Mock + LibrarySourceLoader librarySourceLoader; + + //LibraryManager libraryManager; + //ModelManager modelManager; + //NamespaceManager namespaceManager; + //LibrarySourceLoader librarySourceLoader; + + //@BeforeEach + //@BeforeAll + @Before + public void createMocks() { + MockitoAnnotations.openMocks(this); + //libraryManager = Mockito.mock(LibraryManager.class); + //modelManager = Mockito.mock(ModelManager.class); + //namespaceManager = Mockito.mock(NamespaceManager.class); + //librarySourceLoader = Mockito.mock(LibrarySourceLoader.class); + } + + //@AfterAll + //@After + @AfterEach + public void resetMocks() { + reset(libraryManager); + reset(modelManager); + reset(namespaceManager); + reset(librarySourceLoader); + } + + @Test + public void testGetTranslatorWhereNoNamespaces() { + when(libraryManager.getNamespaceManager()).thenReturn(namespaceManager); + when(namespaceManager.hasNamespaces()).thenReturn(false); + CqlTranslator translator = TranslatorHelper.getTranslator(sampleCql, libraryManager, modelManager); + assertNotNull("translator should not be NULL!", translator); + } + + //@Test + // NOTE: This runs OK by itself, but always fails when running as part of this Class! + public void testGetTranslatorWhereHasNamespaces() { + when(libraryManager.getNamespaceManager()).thenReturn(namespaceManager); + when(libraryManager.getLibrarySourceLoader()).thenReturn(librarySourceLoader); + when(namespaceManager.hasNamespaces()).thenReturn(true); + CqlTranslator translator = TranslatorHelper.getTranslator(sampleCql, libraryManager, modelManager); + assertNotNull("translator should not be NULL!", translator); + } + + //@Test + // NOTE: This runs OK by itself, but always fails when running as part of this Class! + public void testGetNullPointerExceptionFromGetTranslatorWhenCqlIsBlankString() { + when(libraryManager.getNamespaceManager()).thenReturn(namespaceManager); + when(libraryManager.getLibrarySourceLoader()).thenReturn(librarySourceLoader); + when(namespaceManager.hasNamespaces()).thenReturn(true); + CqlTranslator translator = null; + try { + translator = TranslatorHelper.getTranslator(" ", libraryManager, modelManager); + fail(); + } catch(NullPointerException e) { + assertNull("translator should be NULL!", translator); + } + } + + //@Test + // NOTE: This one Fails when using the mockito-core library. It wants the mockito-inline library instead, + // but when we replace the -core with teh -inline one, it causes failures in the hapi-fhir-android project! + // The used MockMaker SubclassByteBuddyMockMaker does not support the creation of static mocks + // Mockito's inline mock maker supports static mocks based on the Instrumentation API. + // You can simply enable this mock mode, by placing the 'mockito-inline' artifact where you are currently using 'mockito-core'. + // Note that Mockito's inline mock maker is not supported on Android. + public void testGetIllegalArgumentExceptionFromGetTranslatorWhenCqlIsInvalid() { + ArrayList options = new ArrayList<>(); + options.add(CqlTranslator.Options.EnableAnnotations); + options.add(CqlTranslator.Options.EnableLocators); + options.add(CqlTranslator.Options.DisableListDemotion); + options.add(CqlTranslator.Options.DisableListPromotion); + options.add(CqlTranslator.Options.DisableMethodInvocation); + CqlTranslator translator = null; + try { + MockedStatic cqlTranslator = mockStatic(CqlTranslator.class); + when(CqlTranslator.fromStream(any(InputStream.class), any(ModelManager.class), any(LibraryManager.class), Matchers.anyVararg())).thenThrow(IOException.class); + translator = TranslatorHelper.getTranslator(new ByteArrayInputStream("INVALID-FILENAME".getBytes(StandardCharsets.UTF_8)), libraryManager, modelManager); + fail(); + } catch(IllegalArgumentException | IOException e) { + assertTrue(e instanceof IllegalArgumentException); + assertNull("translator should be NULL!", translator); + } + } + + @Test + public void testFromTranslateLibrary() { + when(libraryManager.getNamespaceManager()).thenReturn(namespaceManager); + when(libraryManager.getLibrarySourceLoader()).thenReturn(librarySourceLoader); + when(namespaceManager.hasNamespaces()).thenReturn(true); + ArrayList options = new ArrayList<>(); + options.add(CqlTranslator.Options.EnableAnnotations); + options.add(CqlTranslator.Options.EnableLocators); + options.add(CqlTranslator.Options.DisableListDemotion); + options.add(CqlTranslator.Options.DisableListPromotion); + options.add(CqlTranslator.Options.DisableMethodInvocation); + Library library = null; + try { + library = TranslatorHelper.translateLibrary("INVALID-FILENAME", libraryManager, modelManager); + } catch(Exception e) { + e.printStackTrace(); + fail(); + } + assertNotNull("library should not be NULL!", library); + } + + @Test + public void testGetIllegalArgumentExceptionFromReadLibraryWhenCqlIsBlankString() { + Library library = null; + try { + library = TranslatorHelper.readLibrary(new ByteArrayInputStream("INVALID-XML-DOCUMENT".getBytes())); + fail(); + } catch(IllegalArgumentException e) { + assertNull("library should be NULL!", library); + } + } + + @Test + public void testTranslatorReadLibrary() { + Library library = null; + try { + library = TranslatorHelper.readLibrary(new ByteArrayInputStream(stringFromResource("dstu3/hedis-ig/library-asf-elm.xml").getBytes())); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + assertNotNull("library should not be NULL!", library); + } + + @Test + public void testErrorsToStringWithEmptyList() { + ArrayList errors = new ArrayList<>(); + String result = TranslatorHelper.errorsToString(errors); + assertTrue(StringUtils.isEmpty(result)); + } + + @Test + public void testErrorsToStringWithNonEmptyList() { + ArrayList errors = new ArrayList<>(); + CqlTranslatorException e = new CqlTranslatorException("Exception"); + TrackBack trackBack = new TrackBack(new VersionedIdentifier(), 0, 0, 0, 0); + e.setLocator(trackBack); + errors.add(e); + String result = TranslatorHelper.errorsToString(errors); + assertTrue(!StringUtils.isEmpty(result)); + assertEquals("null [0:0, 0:0] Exception", result); + } + + @Override + public FhirContext getFhirContext() { + return null; + } + + @Override + public DaoRegistry getDaoRegistry() { + return null; + } +} diff --git a/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/common/provider/CqlProviderTestBase.java b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/common/provider/CqlProviderTestBase.java new file mode 100644 index 00000000000..5b48f9697a2 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/common/provider/CqlProviderTestBase.java @@ -0,0 +1,46 @@ +package ca.uhn.fhir.cql.common.provider; + +import ca.uhn.fhir.context.FhirContext; +import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao; +import com.google.common.base.Charsets; +import org.apache.commons.io.IOUtils; +import org.hl7.fhir.instance.model.api.IBaseResource; +import org.springframework.core.io.DefaultResourceLoader; +import org.springframework.core.io.Resource; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; + +public interface CqlProviderTestBase { + + FhirContext getFhirContext(); + + DaoRegistry getDaoRegistry(); + + default IBaseResource loadResource(String theLocation) throws IOException { + String json = stringFromResource(theLocation); + IBaseResource resource = getFhirContext().newJsonParser().parseResource(json); + IFhirResourceDao dao = getDaoRegistry().getResourceDao(resource.getIdElement().getResourceType()); + if (dao == null) { + return null; + } else { + dao.update(resource); + return resource; + } + } + + default String stringFromResource(String theLocation) throws IOException { + InputStream is = null; + if (theLocation.startsWith(File.separator)) { + is = new FileInputStream(theLocation); + } else { + DefaultResourceLoader resourceLoader = new DefaultResourceLoader(); + Resource resource = resourceLoader.getResource(theLocation); + is = resource.getInputStream(); + } + return IOUtils.toString(is, Charsets.UTF_8); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/config/TestCqlConfig.java b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/config/TestCqlConfig.java new file mode 100644 index 00000000000..3bcc29d2caa --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/config/TestCqlConfig.java @@ -0,0 +1,11 @@ +package ca.uhn.fhir.cql.config; + +import ca.uhn.fhir.jpa.subscription.channel.config.SubscriptionChannelConfig; +import ca.uhn.fhir.jpa.subscription.submit.config.SubscriptionSubmitterConfig; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration +@Import({SubscriptionSubmitterConfig.class, SubscriptionChannelConfig.class}) +public class TestCqlConfig { +} diff --git a/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/dstu3/CqlProviderDstu3Test.java b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/dstu3/CqlProviderDstu3Test.java new file mode 100644 index 00000000000..6ae5acae563 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/dstu3/CqlProviderDstu3Test.java @@ -0,0 +1,148 @@ +package ca.uhn.fhir.cql.dstu3; + +import ca.uhn.fhir.cql.BaseCqlDstu3Test; +import ca.uhn.fhir.cql.common.provider.CqlProviderFactory; +import ca.uhn.fhir.cql.dstu3.provider.MeasureOperationsProvider; +import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao; +import ca.uhn.fhir.jpa.rp.dstu3.LibraryResourceProvider; +import ca.uhn.fhir.jpa.rp.dstu3.MeasureResourceProvider; +import ca.uhn.fhir.jpa.rp.dstu3.ValueSetResourceProvider; +import ca.uhn.fhir.util.StopWatch; +import org.hl7.fhir.dstu3.model.Bundle; +import org.hl7.fhir.dstu3.model.IdType; +import org.hl7.fhir.dstu3.model.Library; +import org.hl7.fhir.dstu3.model.Measure; +import org.hl7.fhir.dstu3.model.MeasureReport; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import java.io.IOException; +import java.util.List; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.hasSize; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class CqlProviderDstu3Test extends BaseCqlDstu3Test { + private static final Logger ourLog = LoggerFactory.getLogger(CqlProviderDstu3Test.class); + + @Autowired + IFhirResourceDao myMeasureDao; + @Autowired + IFhirResourceDao myLibraryDao; + @Autowired + CqlProviderFactory myCqlProviderFactory; + @Autowired + private LibraryResourceProvider myLibraryResourceProvider; + @Autowired + private MeasureResourceProvider myMeasureResourceProvider; + @Autowired + private ValueSetResourceProvider myValueSetResourceProvider; + @Autowired + private MeasureOperationsProvider myMeasureOperationsProvider; + + @BeforeEach + public void before() throws IOException { + // Load terminology for measure tests (HEDIS measures) + loadBundle("dstu3/hedis-ig/hedis-valuesets-bundle.json"); + + // Load libraries + loadResource("dstu3/hedis-ig/library/library-fhir-model-definition.json"); + loadResource("dstu3/hedis-ig/library/library-fhir-helpers.json"); + } + + /* + See dstu3/library-asf-cql.txt to see the cql encoded within library-asf-logic.json + See dstu3/library-asf-elm.xml to see the elm encoded within library-asf-logic.json + To help explain what's being measured here. Specifically how to interpret the contents of library-asf-logic.json. + From https://www.ncqa.org/wp-content/uploads/2020/02/20200212_17_ASF.pdf + • ValueSet: "Alcohol Counseling and Treatment": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1437' + • ValueSet: "Alcohol Screening": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1337' + • ValueSet: "Alcohol use disorder": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1339' + • ValueSet: "Dementia": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1074' + • Diagnosis: Alcohol Use Disorder (2.16.840.1.113883.3.464.1004.1339) + • Diagnosis: Dementia (2.16.840.1.113883.3.464.1004.1074) + • Encounter, Performed: Hospice Encounter (2.16.840.1.113883.3.464.1004.1761) + • Intervention, Order: Hospice Intervention (2.16.840.1.113883.3.464.1004.1762) + • Intervention, Performed: Alcohol Counseling or Other Follow Up Care + (2.16.840.1.113883.3.464.1004.1437) + • Intervention, Performed: Hospice Intervention (2.16.840.1.113883.3.464.1004.1762) + Direct Reference Codes: + • Assessment, Performed: How often have you had five or more drinks in one day during the past year + [Reported] (LOINC version 2.63 Code 88037-7) + • Assessment, Performed: How often have you had four or more drinks in one day during the past year + [Reported] (LOINC version 2.63 Code 75889-6) + • Assessment, Performed: Total score [AUDIT-C] (LOINC version 2.63 Code 75626-2) + */ + @Test + public void testHedisIGEvaluatePatientMeasure() throws IOException { + loadResource("dstu3/hedis-ig/library/library-asf-logic.json"); + // Load the measure for ASF: Unhealthy Alcohol Use Screening and Follow-up (ASF) + loadResource("dstu3/hedis-ig/measure-asf.json"); + Bundle result = loadBundle("dstu3/hedis-ig/test-patient-6529-data.json"); + assertNotNull(result); + List entries = result.getEntry(); + assertThat(entries, hasSize(22)); + assertEquals(entries.get(0).getResponse().getStatus(), "201 Created"); + assertEquals(entries.get(21).getResponse().getStatus(), "201 Created"); + + IdType measureId = new IdType("Measure", "measure-asf"); + String patient = "Patient/Patient-6529"; + String periodStart = "2003-01-01"; + String periodEnd = "2003-12-31"; + + // First run to absorb startup costs + MeasureReport report = myMeasureOperationsProvider.evaluateMeasure(measureId, periodStart, periodEnd, null, null, + patient, null, null, null, null, null, null); + // Assert it worked + assertThat(report.getGroup(), hasSize(1)); + assertThat(report.getGroup().get(0).getPopulation(), hasSize(3)); + ourLog.info(myFhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(report)); + + // Now timed runs + int runCount = 10; + StopWatch sw = new StopWatch(); + for (int i = 0; i < runCount; ++i) { + myMeasureOperationsProvider.evaluateMeasure(measureId, periodStart, periodEnd, null, null, + patient, null, null, null, null, null, null); + } + + ourLog.info("Called evaluateMeasure() {} times: average time per call: {}", runCount, sw.formatMillisPerOperation(runCount)); + } + + @Test + public void testHedisIGEvaluatePopulationMeasure() throws IOException { + loadResource("dstu3/hedis-ig/library/library-asf-logic.json"); + // Load the measure for ASF: Unhealthy Alcohol Use Screening and Follow-up (ASF) + loadResource("dstu3/hedis-ig/measure-asf.json"); + loadBundle("dstu3/hedis-ig/test-patient-6529-data.json"); + // Add a second patient with the same data + loadBundle("dstu3/hedis-ig/test-patient-9999-x-data.json"); + + IdType measureId = new IdType("Measure", "measure-asf"); + String periodStart = "2003-01-01"; + String periodEnd = "2003-12-31"; + + // First run to absorb startup costs + MeasureReport report = myMeasureOperationsProvider.evaluateMeasure(measureId, periodStart, periodEnd, null, "population", + null, null, null, null, null, null, null); + // Assert it worked + assertThat(report.getGroup(), hasSize(1)); + assertThat(report.getGroup().get(0).getPopulation(), hasSize(3)); + ourLog.info(myFhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(report)); + + // Now timed runs + int runCount = 10; + StopWatch sw = new StopWatch(); + for (int i = 0; i < runCount; ++i) { + myMeasureOperationsProvider.evaluateMeasure(measureId, periodStart, periodEnd, null, "population", + null, null, null, null, null, null, null); + } + + ourLog.info("Called evaluateMeasure() {} times: average time per call: {}", runCount, sw.formatMillisPerOperation(runCount)); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/dstu3/CqlProviderLoaderDstu3Test.java b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/dstu3/CqlProviderLoaderDstu3Test.java new file mode 100644 index 00000000000..eb95fe368d5 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/dstu3/CqlProviderLoaderDstu3Test.java @@ -0,0 +1,26 @@ +package ca.uhn.fhir.cql.dstu3; + +import ca.uhn.fhir.cql.BaseCqlDstu3Test; +import ca.uhn.fhir.cql.common.provider.CqlProviderLoader; +import ca.uhn.fhir.rest.server.provider.ResourceProviderFactory; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +class CqlProviderLoaderDstu3Test extends BaseCqlDstu3Test { + private static final Logger ourLog = LoggerFactory.getLogger(CqlProviderLoaderDstu3Test.class); + + @Autowired + CqlProviderLoader myCqlProviderLoader; + + @Autowired + private ResourceProviderFactory myResourceProviderFactory; + + @Test + public void testContextLoads() { + myCqlProviderLoader.loadProvider(); + myResourceProviderFactory.createProviders(); + ourLog.info("The CqlProviderLoader loaded and was able to create Providers."); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/r4/CqlProviderLoaderR4Test.java b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/r4/CqlProviderLoaderR4Test.java new file mode 100644 index 00000000000..7f7076651a4 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/r4/CqlProviderLoaderR4Test.java @@ -0,0 +1,26 @@ +package ca.uhn.fhir.cql.r4; + +import ca.uhn.fhir.cql.BaseCqlR4Test; +import ca.uhn.fhir.cql.common.provider.CqlProviderLoader; +import ca.uhn.fhir.rest.server.provider.ResourceProviderFactory; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +public class CqlProviderLoaderR4Test extends BaseCqlR4Test { + private static final Logger ourLog = LoggerFactory.getLogger(CqlProviderLoaderR4Test.class); + + @Autowired + CqlProviderLoader myCqlProviderLoader; + + @Autowired + private ResourceProviderFactory myResourceProviderFactory; + + @Test + public void contextLoads() { + myCqlProviderLoader.loadProvider(); + myResourceProviderFactory.createProviders(); + ourLog.info("The CqlProviderLoader loaded and was able to create Providers."); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/r4/CqlProviderR4Test.java b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/r4/CqlProviderR4Test.java new file mode 100644 index 00000000000..b5553a1dc8d --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/java/ca/uhn/fhir/cql/r4/CqlProviderR4Test.java @@ -0,0 +1,72 @@ +package ca.uhn.fhir.cql.r4; + +import ca.uhn.fhir.cql.BaseCqlR4Test; +import ca.uhn.fhir.cql.common.provider.CqlProviderTestBase; +import ca.uhn.fhir.cql.r4.provider.MeasureOperationsProvider; +import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao; +import org.hl7.fhir.r4.model.Bundle; +import org.hl7.fhir.r4.model.IdType; +import org.hl7.fhir.r4.model.Library; +import org.hl7.fhir.r4.model.Measure; +import org.hl7.fhir.r4.model.MeasureReport; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import java.io.IOException; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.hasSize; + +public class CqlProviderR4Test extends BaseCqlR4Test implements CqlProviderTestBase { + private static final Logger ourLog = LoggerFactory.getLogger(CqlProviderR4Test.class); + private static final IdType libraryId = new IdType("Library", "library-mrp-logic"); + private static final IdType measureId = new IdType("Measure", "measure-asf"); + private static final String measure = "Measure/measure-asf"; + private static final String patient = "Patient/Patient-6529"; + private static final String periodStart = "2000-01-01"; + private static final String periodEnd = "2019-12-31"; + private static final Object syncObject = new Object(); + private static boolean bundlesLoaded = false; + + @Autowired + IFhirResourceDao myMeasureDao; + @Autowired + IFhirResourceDao myLibraryDao; + @Autowired + MeasureOperationsProvider myMeasureOperationsProvider; + + public synchronized void loadBundles() throws IOException { + if (!bundlesLoaded) { + Bundle result = loadBundle("dstu3/hedis-ig/test-patient-6529-data.json"); + bundlesLoaded = true; + } + } + + @Test + public void testHedisIGEvaluateMeasureWithTimeframe() throws IOException { + loadBundles(); + loadResource("r4/hedis-ig/library-asf-logic.json"); + loadResource("r4/hedis-ig/measure-asf.json"); + MeasureReport report = myMeasureOperationsProvider.evaluateMeasure(measureId, periodStart, periodEnd, measure, "patient", + patient, null, null, null, null, null, null); + // Assert it worked + assertThat(report.getGroup(), hasSize(1)); + assertThat(report.getGroup().get(0).getPopulation(), hasSize(3)); + ourLog.info(myFhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(report)); + } + + @Test + public void testHedisIGEvaluateMeasureNoTimeframe() throws IOException { + loadBundles(); + loadResource("r4/hedis-ig/library-asf-logic.json"); + loadResource("r4/hedis-ig/measure-asf.json"); + MeasureReport report = myMeasureOperationsProvider.evaluateMeasure(measureId, null, null, measure, "patient", + patient, null, null, null, null, null, null); + // Assert it worked + assertThat(report.getGroup(), hasSize(1)); + assertThat(report.getGroup().get(0).getPopulation(), hasSize(3)); + ourLog.info(myFhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(report)); + } +} diff --git a/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/hedis-valuesets-bundle.json b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/hedis-valuesets-bundle.json new file mode 100644 index 00000000000..fad57695c32 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/hedis-valuesets-bundle.json @@ -0,0 +1,37183 @@ +{ + "resourceType": "Bundle", + "type": "transaction", + "entry": [ + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1123.17", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1123.17", + "status": "active", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.3.16AB", + "concept": [ + { + "code": "58953" + }, + { + "code": "58954" + }, + { + "code": "58956" + }, + { + "code": "51925" + }, + { + "code": "57540" + }, + { + "code": "57545" + }, + { + "code": "57550" + }, + { + "code": "57555" + }, + { + "code": "57556" + }, + { + "code": "58548" + }, + { + "code": "58570" + }, + { + "code": "58571" + }, + { + "code": "58572" + }, + { + "code": "58573" + }, + { + "code": "58550" + }, + { + "code": "58552" + }, + { + "code": "58553" + }, + { + "code": "58554" + }, + { + "code": "58240" + }, + { + "code": "58210" + }, + { + "code": "58951" + }, + { + "code": "59135" + }, + { + "code": "X1022450" + }, + { + "code": "58150" + }, + { + "code": "58152" + }, + { + "code": "58200" + }, + { + "code": "X1022451" + }, + { + "code": "58260" + }, + { + "code": "58267" + }, + { + "code": "58262" + }, + { + "code": "58263" + }, + { + "code": "58270" + }, + { + "code": "X1022567" + }, + { + "code": "58290" + }, + { + "code": "58293" + }, + { + "code": "58291" + }, + { + "code": "58292" + }, + { + "code": "58294" + }, + { + "code": "58285" + }, + { + "code": "X1022452" + }, + { + "code": "58275" + }, + { + "code": "58280" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1123.17" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1123.18", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1123.18", + "status": "active", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2017.1.16AA", + "concept": [ + { + "code": "Q51.5" + }, + { + "code": "Z90.710" + }, + { + "code": "Z90.712" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1123.18" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1123.19", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1123.19", + "status": "active", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/Coding/ICD10/index.html", + "version": "2017.1.16AA", + "concept": [ + { + "code": "0UTC0ZZ" + }, + { + "code": "0UTC4ZZ" + }, + { + "code": "0UTC7ZZ" + }, + { + "code": "0UTC8ZZ" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1123.19" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1102.39", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1102.39", + "status": "active", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.5.17AA", + "concept": [ + { + "code": "G0202" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1102.39" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1335.16", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1335.16", + "status": "active", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/Coding/ICD10/index.html", + "version": "2017.1.16AA", + "concept": [ + { + "code": "0HTT0ZZ" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1335.16" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1064.30", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1064.30", + "status": "active", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.5.17AA", + "concept": [ + { + "code": "G0204" + }, + { + "code": "G0245" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1064.30" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1330.2", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1330.2", + "status": "active", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2017.1.16AA", + "concept": [ + { + "code": "Z90.11" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1330.2" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1064.31", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1064.31", + "status": "active", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "45.22" + }, + { + "code": "45.23" + }, + { + "code": "45.25" + }, + { + "code": "45.42" + }, + { + "code": "45.43" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1064.31" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1102.38", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1102.38", + "status": "active", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.3.16AB", + "concept": [ + { + "code": "45330" + }, + { + "code": "45339" + }, + { + "code": "45331" + }, + { + "code": "45334" + }, + { + "code": "45337" + }, + { + "code": "45340" + }, + { + "code": "45335" + }, + { + "code": "45341" + }, + { + "code": "45332" + }, + { + "code": "45333" + }, + { + "code": "45338" + }, + { + "code": "45345" + }, + { + "code": "45342" + }, + { + "code": "45346" + }, + { + "code": "45347" + }, + { + "code": "45349" + }, + { + "code": "45350" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1102.38" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1250.46", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1250.46", + "status": "active", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "45.81" + }, + { + "code": "45.82" + }, + { + "code": "45.83" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1250.46" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1250.44", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1250.44", + "status": "active", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.3.16AB", + "concept": [ + { + "code": "44156" + }, + { + "code": "44158" + }, + { + "code": "44157" + }, + { + "code": "44155" + }, + { + "code": "44151" + }, + { + "code": "44150" + }, + { + "code": "44211" + }, + { + "code": "44212" + }, + { + "code": "44210" + }, + { + "code": "44153" + }, + { + "code": "44152" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1250.44" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1250.45", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1250.45", + "status": "active", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/Coding/ICD10/index.html", + "version": "2017.1.16AA", + "concept": [ + { + "code": "0DTE0ZZ" + }, + { + "code": "0DTE4ZZ" + }, + { + "code": "0DTE7ZZ" + }, + { + "code": "0DTE8ZZ" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1250.45" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1383", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1383", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90791", + "display": "PSYCH DIAGNOSTIC EVALUATION" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90792", + "display": "PSYCH DIAG EVAL W/MED SRVCS" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90832", + "display": "PSYTX W PT 30 MINUTES" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90833", + "display": "PSYTX W PT W E/M 30 MIN" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90834", + "display": "PSYTX W PT 45 MINUTES" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90836", + "display": "PSYTX W PT W E/M 45 MIN" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90837", + "display": "PSYTX W PT 60 MINUTES" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90838", + "display": "PSYTX W PT W E/M 60 MIN" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90839", + "display": "PSYTX CRISIS INITIAL 60 MIN" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90845", + "display": "PSYCHOANALYSIS" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90846", + "display": "FAMILY PSYTX W/O PT 50 MIN" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90847", + "display": "FAMILY PSYTX W/PT 50 MIN" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90849", + "display": "MULTIPLE FAMILY GROUP PSYTX" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90853", + "display": "GROUP PSYCHOTHERAPY" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90865", + "display": "NARCOSYNTHESIS" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90867", + "display": "TCRANIAL MAGN STIM TX PLAN" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90868", + "display": "TCRANIAL MAGN STIM TX DELI" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90869", + "display": "TCRAN MAGN STIM REDETEMINE" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90870", + "display": "ELECTROCONVULSIVE THERAPY" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90875", + "display": "PSYCHOPHYSIOLOGICAL THERAPY" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90876", + "display": "PSYCHOPHYSIOLOGICAL THERAPY" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90880", + "display": "HYPNOTHERAPY" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90887", + "display": "CONSULTATION WITH FAMILY" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0155", + "display": "Services of clinical social worker in home health or hospice settings, each 15 minutes (G0155)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0176", + "display": "Activity therapy, such as music, dance, art or play therapies not for recreation, related to the care and treatment of patient's disabling mental health problems, per session (45 minutes or more) (G0176)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0177", + "display": "Training and educational services related to the care and treatment of patient's disabling mental health problems per session (45 minutes or more) (G0177)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0409", + "display": "Social work and psychological services, directly relating to and/or furthering the patient's rehabilitation goals, each 15 minutes, face-to-face; individual (services provided by a corf-qualified social worker or psychologist in a corf) (G0409)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0410", + "display": "Group psychotherapy other than of a multiple-family group, in a partial hospitalization setting, approximately 45 to 50 minutes (G0410)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0411", + "display": "Interactive group psychotherapy, in a partial hospitalization setting, approximately 45 to 50 minutes (G0411)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0502", + "display": "Initial psychiatric collaborative care management, first 70 minutes in the first calendar month of behavioral health care manager activities, in consultation with a psychiatric consultant, and directed by the treating physician or other qualified health care professional, with the following required elements: outreach to and engagement in treatment of a patient directed by the treating physician or other qualified health care professional; initial assessment of the patient, including administration of validated rating scales, with the development of an individualized treatment plan; review by the psychiatric consultant with modifications of the plan if recommended; entering patient in a registry and tracking patient follow-up and (G0502)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0503", + "display": "Subsequent psychiatric collaborative care management, first 60 minutes in a subsequent month of behavioral health care manager activities, in consultation with a psychiatric consultant, and directed by the treating physician or other qualified health care professional, with the following required elements: tracking patient follow-up and progress using the registry, with appropriate documentation; participation in weekly caseload consultation with the psychiatric consultant; ongoing collaboration with and coordination of the patient's mental health care with the treating physician or other qualified health care professional and any other treating mental health providers; additional review of progress and recommendations for changes (G0503)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0507", + "display": "Care management services for behavioral health conditions, at least 20 minutes of clinical staff time, directed by a physician or other qualified health care professional, per calendar month, with the following required elements: initial assessment or follow-up monitoring, including the use of applicable validated rating scales; behavioral health care planning in relation to behavioral/psychiatric health problems, including revision for patients who are not progressing or whose status changes; facilitating and coordinating treatment such as psychotherapy, pharmacotherapy, counseling and/or psychiatric consultation; and continuity of care with a designated member of the care team (G0507)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0002", + "display": "Behavioral health screening to determine eligibility for admission to treatment program (H0002)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0004", + "display": "Behavioral health counseling and therapy, per 15 minutes (H0004)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0031", + "display": "Mental health assessment, by non-physician (H0031)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0034", + "display": "Medication training and support, per 15 minutes (H0034)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0035", + "display": "Mental health partial hospitalization, treatment, less than 24 hours (H0035)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0036", + "display": "Community psychiatric supportive treatment, face-to-face, per 15 minutes (H0036)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0037", + "display": "Community psychiatric supportive treatment program, per diem (H0037)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0039", + "display": "Assertive community treatment, face-to-face, per 15 minutes (H0039)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0040", + "display": "Assertive community treatment program, per diem (H0040)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2000", + "display": "Comprehensive multidisciplinary evaluation (H2000)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2001", + "display": "Rehabilitation program, per 1/2 day (H2001)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2010", + "display": "Comprehensive medication services, per 15 minutes (H2010)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2011", + "display": "Crisis intervention service, per 15 minutes (H2011)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2012", + "display": "Behavioral health day treatment, per hour (H2012)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2013", + "display": "Psychiatric health facility service, per diem (H2013)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2014", + "display": "Skills training and development, per 15 minutes (H2014)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2015", + "display": "Comprehensive community support services, per 15 minutes (H2015)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2016", + "display": "Comprehensive community support services, per diem (H2016)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2017", + "display": "Psychosocial rehabilitation services, per 15 minutes (H2017)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2018", + "display": "Psychosocial rehabilitation services, per diem (H2018)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2019", + "display": "Therapeutic behavioral services, per 15 minutes (H2019)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2020", + "display": "Therapeutic behavioral services, per diem (H2020)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "M0064", + "display": "Brief office visit for the sole purpose of monitoring or changing drug prescriptions used in the treatment of mental psychoneurotic and personality disorders (M0064)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "S0201", + "display": "Partial hospitalization services, less than 24 hours, per diem (S0201)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "S9480", + "display": "Intensive outpatient psychiatric services, per diem (S9480)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "S9484", + "display": "Crisis intervention mental health services, per hour (S9484)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "S9485", + "display": "Crisis intervention mental health services, per diem (S9485)" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "Z71.82", + "display": "[Z71.82] Exercise counseling" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "5694008", + "display": "Crisis intervention with follow-up (regime/therapy)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "10197000", + "display": "Psychiatric interview and evaluation (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "10997001", + "display": "Psychiatric evaluation of patient for testimentary capacity with report (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "38756009", + "display": "Psychiatric evaluation of patient for criminal responsibility with report (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "45392008", + "display": "Psychologic evaluation or test procedure (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "79094001", + "display": "Initial psychiatric interview with mental status and evaluation (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "88848003", + "display": "Psychiatric follow-up (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "90407005", + "display": "Evaluation of psychiatric state of patient (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "91310009", + "display": "Patient follow-up to return when and if necessary (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "165171009", + "display": "Initial psychiatric evaluation (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "165190001", + "display": "Psychiatric evaluation for rehabilitation (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "225337009", + "display": "Suicide risk assessment (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "370803007", + "display": "Evaluation of psychosocial impact on plan of care (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "372067001", + "display": "Implementation of measures to provide psychological support (regime/therapy)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "385721005", + "display": "Coping support assessment (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "385724002", + "display": "Coping support management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "385725001", + "display": "Emotional support assessment (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "385726000", + "display": "Emotional support education (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "385727009", + "display": "Emotional support management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "385887004", + "display": "Mental health history taking assessment (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "385889001", + "display": "Mental health history taking education (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "385890005", + "display": "Mental health history taking management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "401277000", + "display": "Completion of mental health crisis plan (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410223002", + "display": "Mental health care assessment (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410224008", + "display": "Mental health care education (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410225009", + "display": "Mental health care management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410226005", + "display": "Mental health promotion assessment (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410227001", + "display": "Mental health promotion education (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410228006", + "display": "Mental health promotion management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410229003", + "display": "Mental health screening assessment (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410230008", + "display": "Mental health screening education (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410231007", + "display": "Mental health screening management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410232000", + "display": "Mental health treatment assessment (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410233005", + "display": "Mental health treatment education (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410234004", + "display": "Management of mental health treatment (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "425604002", + "display": "Case management follow up (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "439141002", + "display": "Discharge by mental health primary care worker (procedure)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0900", + "display": "General" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0901", + "display": "Electroshock treatment (ECT)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0902", + "display": "Milieu therapy" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0903", + "display": "Play therapy" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0904", + "display": "Activity therapy" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0905", + "display": "Intensive outpatient services-psychiatric" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0907", + "display": "Community behavioral health program (day treatment)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0911", + "display": "Rehabilitation" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0912", + "display": "Partial hospitalization-less intensive" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0913", + "display": "Partial hospitalization-intensive" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0914", + "display": "Individual therapy" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0915", + "display": "Group therapy" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0916", + "display": "Family therapy" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0917", + "display": "Biofeedback" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0919", + "display": "Other Behavioral health treatments" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1383" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1102.40", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1102.40", + "status": "active", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "45.24" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1102.40" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1346", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1346", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "162004", + "display": "Severe manic bipolar I disorder without psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "1196001", + "display": "Chronic bipolar II disorder, most recent episode major depressive (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "1499003", + "display": "Bipolar I disorder, single manic episode with postpartum onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "3530005", + "display": "Bipolar I disorder, single manic episode, in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "4441000", + "display": "Severe bipolar disorder with psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "5703000", + "display": "Bipolar disorder in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "9340000", + "display": "Bipolar I disorder, single manic episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "10875004", + "display": "Severe mixed bipolar I disorder with psychotic features, mood-incongruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "10981006", + "display": "Severe mixed bipolar I disorder with psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "12969000", + "display": "Severe bipolar II disorder, most recent episode major depressive, in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "13313007", + "display": "Mild bipolar disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "13581000", + "display": "Severe bipolar I disorder, single manic episode with psychotic features, mood-congruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "13746004", + "display": "Bipolar disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "14495005", + "display": "Severe bipolar I disorder, single manic episode without psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "16295005", + "display": "Bipolar II disorder, most recent episode major depressive (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "16506000", + "display": "Mixed bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "17782008", + "display": "Bipolar I disorder, most recent episode manic with catatonic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "19300006", + "display": "Severe bipolar II disorder, most recent episode major depressive with psychotic features, mood-congruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "20960007", + "display": "Severe bipolar II disorder, most recent episode major depressive with psychotic features, mood-incongruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "21900002", + "display": "Bipolar I disorder, most recent episode depressed with catatonic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "22121000", + "display": "Depressed bipolar I disorder in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "22407005", + "display": "Bipolar II disorder, most recent episode major depressive with catatonic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "26203008", + "display": "Severe depressed bipolar I disorder with psychotic features, mood-incongruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "26530004", + "display": "Severe bipolar disorder with psychotic features, mood-incongruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "28663008", + "display": "Severe manic bipolar I disorder with psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "28884001", + "display": "Moderate bipolar I disorder, single manic episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "29929003", + "display": "Bipolar I disorder, most recent episode depressed with atypical features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "30520009", + "display": "Severe bipolar II disorder, most recent episode major depressive with psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "30687003", + "display": "Bipolar II disorder, most recent episode major depressive with postpartum onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "30935000", + "display": "Manic bipolar I disorder in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "31446002", + "display": "Bipolar I disorder, most recent episode hypomanic (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "33380008", + "display": "Severe manic bipolar I disorder with psychotic features, mood-incongruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "34315001", + "display": "Bipolar II disorder, most recent episode major depressive with melancholic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "35481005", + "display": "Mixed bipolar I disorder in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "35722002", + "display": "Severe bipolar II disorder, most recent episode major depressive, in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "35846004", + "display": "Moderate bipolar II disorder, most recent episode major depressive (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "36583000", + "display": "Mixed bipolar I disorder in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "40926005", + "display": "Moderate mixed bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "41552001", + "display": "Mild bipolar I disorder, single manic episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "41832009", + "display": "Severe bipolar I disorder, single manic episode with psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "41836007", + "display": "Bipolar disorder in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "43568002", + "display": "Bipolar II disorder, most recent episode major depressive with atypical features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "43769008", + "display": "Mild mixed bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "45479006", + "display": "Manic bipolar I disorder in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "46229002", + "display": "Severe mixed bipolar I disorder without psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "48937005", + "display": "Bipolar II disorder, most recent episode hypomanic (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "49468007", + "display": "Depressed bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "49512000", + "display": "Depressed bipolar I disorder in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "51637008", + "display": "Chronic bipolar I disorder, most recent episode depressed (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "53049002", + "display": "Severe bipolar disorder without psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "53607008", + "display": "Depressed bipolar I disorder in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "54761006", + "display": "Severe depressed bipolar I disorder with psychotic features, mood-congruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "55516002", + "display": "Bipolar I disorder, most recent episode manic with postpartum onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "59617007", + "display": "Severe depressed bipolar I disorder with psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "61403008", + "display": "Severe depressed bipolar I disorder without psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "63249007", + "display": "Manic bipolar I disorder in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "64731001", + "display": "Severe mixed bipolar I disorder with psychotic features, mood-congruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "65042007", + "display": "Bipolar I disorder, most recent episode mixed with postpartum onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "66631006", + "display": "Moderate depressed bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "67002003", + "display": "Severe bipolar II disorder, most recent episode major depressive, in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "68569003", + "display": "Manic bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "70546001", + "display": "Severe bipolar disorder with psychotic features, mood-congruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "71294008", + "display": "Mild bipolar II disorder, most recent episode major depressive (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "71984005", + "display": "Mild manic bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "73471000", + "display": "Bipolar I disorder, most recent episode mixed with catatonic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "74686005", + "display": "Mild depressed bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "75360000", + "display": "Bipolar I disorder, single manic episode, in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "78269000", + "display": "Bipolar I disorder, single manic episode, in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "78640000", + "display": "Severe manic bipolar I disorder with psychotic features, mood-congruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "79584002", + "display": "Moderate bipolar disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "81319007", + "display": "Severe bipolar II disorder, most recent episode major depressive without psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "82998009", + "display": "Moderate manic bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "83225003", + "display": "Bipolar II disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "85248005", + "display": "Bipolar disorder in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "86058007", + "display": "Severe bipolar I disorder, single manic episode with psychotic features, mood-incongruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "87950005", + "display": "Bipolar I disorder, single manic episode with catatonic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111485001", + "display": "Mixed bipolar I disorder in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191618007", + "display": "Bipolar affective disorder, current episode manic (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191620005", + "display": "Bipolar affective disorder, currently manic, mild (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191621009", + "display": "Bipolar affective disorder, currently manic, moderate (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191623007", + "display": "Bipolar affective disorder, currently manic, severe, with psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191625000", + "display": "Bipolar affective disorder, currently manic, in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191627008", + "display": "Bipolar affective disorder, current episode depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191629006", + "display": "Bipolar affective disorder, currently depressed, mild (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191630001", + "display": "Bipolar affective disorder, currently depressed, moderate (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191632009", + "display": "Bipolar affective disorder, currently depressed, severe, with psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191634005", + "display": "Bipolar affective disorder, currently depressed, in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191636007", + "display": "Mixed bipolar affective disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191638008", + "display": "Mixed bipolar affective disorder, mild (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191639000", + "display": "Mixed bipolar affective disorder, moderate (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191641004", + "display": "Mixed bipolar affective disorder, severe, with psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191643001", + "display": "Mixed bipolar affective disorder, in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192362008", + "display": "Bipolar affective disorder, current episode mixed (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "371596008", + "display": "Bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "371599001", + "display": "Severe bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "371600003", + "display": "Severe bipolar disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "371604007", + "display": "Severe bipolar II disorder (disorder)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1346" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1347", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1347", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90791", + "display": "PSYCH DIAGNOSTIC EVALUATION" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90792", + "display": "PSYCH DIAG EVAL W/MED SRVCS" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90832", + "display": "PSYTX W PT 30 MINUTES" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90834", + "display": "PSYTX W PT 45 MINUTES" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90837", + "display": "PSYTX W PT 60 MINUTES" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "98960", + "display": "SELF-MGMT EDUC & TRAIN 1 PT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "98961", + "display": "SELF-MGMT EDUC/TRAIN 2-4 PT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "98962", + "display": "SELF-MGMT EDUC/TRAIN 5-8 PT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99078", + "display": "GROUP HEALTH EDUCATION" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99201", + "display": "OFFICE/OUTPATIENT VISIT NEW" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99202", + "display": "OFFICE/OUTPATIENT VISIT NEW" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99203", + "display": "OFFICE/OUTPATIENT VISIT NEW" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99204", + "display": "OFFICE/OUTPATIENT VISIT NEW" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99205", + "display": "OFFICE/OUTPATIENT VISIT NEW" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99211", + "display": "OFFICE/OUTPATIENT VISIT EST" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99212", + "display": "OFFICE/OUTPATIENT VISIT EST" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99213", + "display": "OFFICE/OUTPATIENT VISIT EST" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99214", + "display": "OFFICE/OUTPATIENT VISIT EST" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99215", + "display": "OFFICE/OUTPATIENT VISIT EST" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99217", + "display": "OBSERVATION CARE DISCHARGE" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99218", + "display": "INITIAL OBSERVATION CARE" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99219", + "display": "INITIAL OBSERVATION CARE" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99220", + "display": "INITIAL OBSERVATION CARE" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99241", + "display": "OFFICE CONSULTATION" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99242", + "display": "OFFICE CONSULTATION" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99243", + "display": "OFFICE CONSULTATION" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99244", + "display": "OFFICE CONSULTATION" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99245", + "display": "OFFICE CONSULTATION" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99341", + "display": "HOME VISIT NEW PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99342", + "display": "HOME VISIT NEW PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99343", + "display": "HOME VISIT NEW PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99344", + "display": "HOME VISIT NEW PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99345", + "display": "HOME VISIT NEW PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99347", + "display": "HOME VISIT EST PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99348", + "display": "HOME VISIT EST PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99349", + "display": "HOME VISIT EST PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99350", + "display": "HOME VISIT EST PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99381", + "display": "INIT PM E/M NEW PAT INFANT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99382", + "display": "INIT PM E/M NEW PAT 1-4 YRS" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99383", + "display": "PREV VISIT NEW AGE 5-11" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99384", + "display": "PREV VISIT NEW AGE 12-17" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99385", + "display": "PREV VISIT NEW AGE 18-39" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99386", + "display": "PREV VISIT NEW AGE 40-64" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99387", + "display": "INIT PM E/M NEW PAT 65+ YRS" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99391", + "display": "PER PM REEVAL EST PAT INFANT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99392", + "display": "PREV VISIT EST AGE 1-4" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99393", + "display": "PREV VISIT EST AGE 5-11" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99394", + "display": "PREV VISIT EST AGE 12-17" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99395", + "display": "PREV VISIT EST AGE 18-39" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99396", + "display": "PREV VISIT EST AGE 40-64" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99397", + "display": "PER PM REEVAL EST PAT 65+ YR" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99401", + "display": "PREVENTIVE COUNSELING INDIV" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99402", + "display": "PREVENTIVE COUNSELING INDIV" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99403", + "display": "PREVENTIVE COUNSELING INDIV" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99404", + "display": "PREVENTIVE COUNSELING INDIV" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99411", + "display": "PREVENTIVE COUNSELING GROUP" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99412", + "display": "PREVENTIVE COUNSELING GROUP" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99510", + "display": "HOME VISIT SING/M/FAM COUNS" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0155", + "display": "Services of clinical social worker in home health or hospice settings, each 15 minutes (G0155)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0176", + "display": "Activity therapy, such as music, dance, art or play therapies not for recreation, related to the care and treatment of patient's disabling mental health problems, per session (45 minutes or more) (G0176)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0177", + "display": "Training and educational services related to the care and treatment of patient's disabling mental health problems per session (45 minutes or more) (G0177)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0409", + "display": "Social work and psychological services, directly relating to and/or furthering the patient's rehabilitation goals, each 15 minutes, face-to-face; individual (services provided by a corf-qualified social worker or psychologist in a corf) (G0409)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0410", + "display": "Group psychotherapy other than of a multiple-family group, in a partial hospitalization setting, approximately 45 to 50 minutes (G0410)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0411", + "display": "Interactive group psychotherapy, in a partial hospitalization setting, approximately 45 to 50 minutes (G0411)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0463", + "display": "Hospital outpatient clinic visit for assessment and management of a patient (G0463)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0502", + "display": "Initial psychiatric collaborative care management, first 70 minutes in the first calendar month of behavioral health care manager activities, in consultation with a psychiatric consultant, and directed by the treating physician or other qualified health care professional, with the following required elements: outreach to and engagement in treatment of a patient directed by the treating physician or other qualified health care professional; initial assessment of the patient, including administration of validated rating scales, with the development of an individualized treatment plan; review by the psychiatric consultant with modifications of the plan if recommended; entering patient in a registry and tracking patient follow-up and (G0502)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0503", + "display": "Subsequent psychiatric collaborative care management, first 60 minutes in a subsequent month of behavioral health care manager activities, in consultation with a psychiatric consultant, and directed by the treating physician or other qualified health care professional, with the following required elements: tracking patient follow-up and progress using the registry, with appropriate documentation; participation in weekly caseload consultation with the psychiatric consultant; ongoing collaboration with and coordination of the patient's mental health care with the treating physician or other qualified health care professional and any other treating mental health providers; additional review of progress and recommendations for changes (G0503)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0507", + "display": "Care management services for behavioral health conditions, at least 20 minutes of clinical staff time, directed by a physician or other qualified health care professional, per calendar month, with the following required elements: initial assessment or follow-up monitoring, including the use of applicable validated rating scales; behavioral health care planning in relation to behavioral/psychiatric health problems, including revision for patients who are not progressing or whose status changes; facilitating and coordinating treatment such as psychotherapy, pharmacotherapy, counseling and/or psychiatric consultation; and continuity of care with a designated member of the care team (G0507)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0002", + "display": "Behavioral health screening to determine eligibility for admission to treatment program (H0002)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0004", + "display": "Behavioral health counseling and therapy, per 15 minutes (H0004)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0031", + "display": "Mental health assessment, by non-physician (H0031)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0034", + "display": "Medication training and support, per 15 minutes (H0034)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0035", + "display": "Mental health partial hospitalization, treatment, less than 24 hours (H0035)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0036", + "display": "Community psychiatric supportive treatment, face-to-face, per 15 minutes (H0036)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0037", + "display": "Community psychiatric supportive treatment program, per diem (H0037)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0039", + "display": "Assertive community treatment, face-to-face, per 15 minutes (H0039)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0040", + "display": "Assertive community treatment program, per diem (H0040)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2000", + "display": "Comprehensive multidisciplinary evaluation (H2000)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2001", + "display": "Rehabilitation program, per 1/2 day (H2001)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2010", + "display": "Comprehensive medication services, per 15 minutes (H2010)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2011", + "display": "Crisis intervention service, per 15 minutes (H2011)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2012", + "display": "Behavioral health day treatment, per hour (H2012)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2013", + "display": "Psychiatric health facility service, per diem (H2013)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2014", + "display": "Skills training and development, per 15 minutes (H2014)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2015", + "display": "Comprehensive community support services, per 15 minutes (H2015)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2016", + "display": "Comprehensive community support services, per diem (H2016)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2017", + "display": "Psychosocial rehabilitation services, per 15 minutes (H2017)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2018", + "display": "Psychosocial rehabilitation services, per diem (H2018)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2019", + "display": "Therapeutic behavioral services, per 15 minutes (H2019)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2020", + "display": "Therapeutic behavioral services, per diem (H2020)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "M0064", + "display": "Brief office visit for the sole purpose of monitoring or changing drug prescriptions used in the treatment of mental psychoneurotic and personality disorders (M0064)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "S0201", + "display": "Partial hospitalization services, less than 24 hours, per diem (S0201)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "S9480", + "display": "Intensive outpatient psychiatric services, per diem (S9480)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "S9484", + "display": "Crisis intervention mental health services, per hour (S9484)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "S9485", + "display": "Crisis intervention mental health services, per diem (S9485)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "T1015", + "display": "Clinic visit/encounter, all-inclusive (T1015)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "12843005", + "display": "Subsequent hospital visit by physician (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "18170008", + "display": "Subsequent nursing facility visit (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "19681004", + "display": "Nursing evaluation of patient and report (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "87790002", + "display": "Follow-up inpatient consultation visit (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "90526000", + "display": "Initial evaluation and management of healthy individual (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "185349003", + "display": "Encounter for check up (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "185463005", + "display": "Visit out of hours (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "185465003", + "display": "Weekend visit (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "207195004", + "display": "History and physical examination with evaluation and management of nursing facility patient (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "270427003", + "display": "Patient-initiated encounter (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "270430005", + "display": "Provider-initiated encounter (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "308335008", + "display": "Patient encounter procedure (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "390906007", + "display": "Follow-up encounter (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "406547006", + "display": "Urgent follow-up (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "439708006", + "display": "Home visit (procedure)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0510", + "display": "General" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0513", + "display": "Psychiatric clinic" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0516", + "display": "Urgent care clinic" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0517", + "display": "Family practice clinic" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0519", + "display": "Other clinic" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0520", + "display": "General" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0521", + "display": "Clinic visit by member to RHC/FQHC" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0522", + "display": "Home visit by RHC/FQHC practitioner" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0523", + "display": "Family practice clinic" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0526", + "display": "Urgent care clinic" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0527", + "display": "Visit nurse service to a member's home in a home health shortage area" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0528", + "display": "Visit by RHC/FQHC practitioner to other non-RHC/FQHC site (e.g., scene of accident)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0529", + "display": "Other freestanding clinic" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0900", + "display": "General" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0901", + "display": "Electroshock treatment (ECT)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0902", + "display": "Milieu therapy" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0903", + "display": "Play therapy" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0904", + "display": "Activity therapy" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0905", + "display": "Intensive outpatient services-psychiatric" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0907", + "display": "Community behavioral health program (day treatment)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0911", + "display": "Rehabilitation" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0912", + "display": "Partial hospitalization-less intensive" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0913", + "display": "Partial hospitalization-intensive" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0914", + "display": "Individual therapy" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0915", + "display": "Group therapy" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0916", + "display": "Family therapy" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0917", + "display": "Biofeedback" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0919", + "display": "Other Behavioral health treatments" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0982", + "display": "Outpatient services" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0983", + "display": "Clinic" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1347" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1389", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1389", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99366", + "display": "TEAM CONF W/PAT BY HC PROF" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "T1016", + "display": "Case management, each 15 minutes (T1016)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "T1017", + "display": "Targeted case management, each 15 minutes (T1017)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "T2022", + "display": "Case management, per month (T2022)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "T2023", + "display": "Targeted case management; per month (T2023)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "182832007", + "display": "Procedure related to management of drug administration (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "225333008", + "display": "Behavior management (regime/therapy)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "385828006", + "display": "Health promotion management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "386230005", + "display": "Case management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "409022004", + "display": "Dispensing medication management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410216003", + "display": "Communication care management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410219005", + "display": "Personal care management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410328009", + "display": "Coping skills case management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410335001", + "display": "Exercises case management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410346003", + "display": "Medication action/side effects case management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410347007", + "display": "Medication set-up case management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410351009", + "display": "Relaxation/breathing techniques case management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410352002", + "display": "Rest/sleep case management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410353007", + "display": "Safety case management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410354001", + "display": "Screening case management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410356004", + "display": "Signs/symptoms-mental/emotional case management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410358003", + "display": "Social work/counseling case management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410360001", + "display": "Spiritual care case management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410363004", + "display": "Support group case management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410364005", + "display": "Support system case management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "410366007", + "display": "Wellness case management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "416341003", + "display": "Case management started (situation)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "416584001", + "display": "Case management ended (situation)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "424490002", + "display": "Medication prescription case management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "425604002", + "display": "Case management follow up (procedure)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1389" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1386", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1386", + "status": "draft", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G8510", + "display": "Screening for depression is documented as negative, a follow-up plan is not required (G8510)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "428171000124102", + "display": "Depression screening negative (finding)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1386" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1023", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1023", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "999.4", + "display": "Anaphylactic reaction due to serum [999.4]" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1023" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1387", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1387", + "status": "draft", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G8431", + "display": "Screening for depression is documented as being positive and a follow-up plan is documented (G8431)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "428181000124104", + "display": "Depression screening positive (situation)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1387" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1024", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1024", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "T80.52XA", + "display": "[T80.52XA] Anaphylactic reaction due to vaccination, initial encounter" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "T80.52XD", + "display": "[T80.52XD] Anaphylactic reaction due to vaccination, subsequent encounter" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "T80.52XS", + "display": "[T80.52XS] Anaphylactic reaction due to vaccination, sequela" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "999.42", + "display": "Anaphylactic reaction due to vaccination" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1024" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1384", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1384", + "status": "draft", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G8431", + "display": "Screening for depression is documented as being positive and a follow-up plan is documented (G8431)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G8510", + "display": "Screening for depression is documented as negative, a follow-up plan is not required (G8510)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G8511", + "display": "Screening for depression documented as positive, follow-up plan not documented, reason not given (G8511)" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "44261-6", + "display": "Patient Health Questionnaire 9 item (PHQ-9) total score [Reported]" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "48544-1", + "display": "Geriatric depression scale (GDS) total" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "48545-8", + "display": "Geriatric depression scale (GDS) short version total" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "55758-7", + "display": "Patient Health Questionnaire 2 item (PHQ-2) total score [Reported]" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "70271-2", + "display": "Patient Health Questionnaire - Somatic, Anxiety, and Depressive Symptoms (PHQ-SADS) total score [Reported]" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "70272-0", + "display": "Patient Health Questionnaire 4 item (PHQ-4) total score [Reported]" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "71354-5", + "display": "Edinburgh Postnatal Depression Scale [EPDS]" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "71965-8", + "display": "PROMIS-29 Depression score T-score" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "71966-6", + "display": "PROMIS-29 Depression score" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "73831-0", + "display": "Adolescent depression screening assessment" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "73832-8", + "display": "Adult depression screening assessment" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "77688-0", + "display": "Depression scale [UPDRS]" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "77821-7", + "display": "PROMIS short form - emotional distress - depression 4a - version 1.0 raw score" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "77835-7", + "display": "PROMIS short form - emotional distress - depression 8b - version 1.0 raw score" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "77847-2", + "display": "PROMIS pediatric short form - depressive symptoms - version 1.0 raw score" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "77861-3", + "display": "PROMIS emotional distress - depression - version 1.0 Tscore" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "428151000124107", + "display": "Standardized adult depression screening tool completed (situation)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "428161000124109", + "display": "Standardized adolescent depression screening tool completed (situation)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "428171000124102", + "display": "Depression screening negative (finding)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "428181000124104", + "display": "Depression screening positive (situation)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1384" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1385", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1385", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "98960", + "display": "SELF-MGMT EDUC & TRAIN 1 PT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "98961", + "display": "SELF-MGMT EDUC/TRAIN 2-4 PT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "98962", + "display": "SELF-MGMT EDUC/TRAIN 5-8 PT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99078", + "display": "GROUP HEALTH EDUCATION" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99201", + "display": "OFFICE/OUTPATIENT VISIT NEW" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99202", + "display": "OFFICE/OUTPATIENT VISIT NEW" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99203", + "display": "OFFICE/OUTPATIENT VISIT NEW" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99204", + "display": "OFFICE/OUTPATIENT VISIT NEW" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99205", + "display": "OFFICE/OUTPATIENT VISIT NEW" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99211", + "display": "OFFICE/OUTPATIENT VISIT EST" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99212", + "display": "OFFICE/OUTPATIENT VISIT EST" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99213", + "display": "OFFICE/OUTPATIENT VISIT EST" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99214", + "display": "OFFICE/OUTPATIENT VISIT EST" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99215", + "display": "OFFICE/OUTPATIENT VISIT EST" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99217", + "display": "OBSERVATION CARE DISCHARGE" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99218", + "display": "INITIAL OBSERVATION CARE" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99219", + "display": "INITIAL OBSERVATION CARE" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99220", + "display": "INITIAL OBSERVATION CARE" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99241", + "display": "OFFICE CONSULTATION" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99242", + "display": "OFFICE CONSULTATION" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99243", + "display": "OFFICE CONSULTATION" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99244", + "display": "OFFICE CONSULTATION" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99245", + "display": "OFFICE CONSULTATION" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99341", + "display": "HOME VISIT NEW PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99342", + "display": "HOME VISIT NEW PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99343", + "display": "HOME VISIT NEW PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99344", + "display": "HOME VISIT NEW PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99345", + "display": "HOME VISIT NEW PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99347", + "display": "HOME VISIT EST PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99348", + "display": "HOME VISIT EST PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99349", + "display": "HOME VISIT EST PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99350", + "display": "HOME VISIT EST PATIENT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99381", + "display": "INIT PM E/M NEW PAT INFANT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99382", + "display": "INIT PM E/M NEW PAT 1-4 YRS" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99383", + "display": "PREV VISIT NEW AGE 5-11" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99384", + "display": "PREV VISIT NEW AGE 12-17" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99385", + "display": "PREV VISIT NEW AGE 18-39" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99386", + "display": "PREV VISIT NEW AGE 40-64" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99387", + "display": "INIT PM E/M NEW PAT 65+ YRS" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99391", + "display": "PER PM REEVAL EST PAT INFANT" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99392", + "display": "PREV VISIT EST AGE 1-4" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99393", + "display": "PREV VISIT EST AGE 5-11" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99394", + "display": "PREV VISIT EST AGE 12-17" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99395", + "display": "PREV VISIT EST AGE 18-39" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99396", + "display": "PREV VISIT EST AGE 40-64" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99397", + "display": "PER PM REEVAL EST PAT 65+ YR" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99401", + "display": "PREVENTIVE COUNSELING INDIV" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99402", + "display": "PREVENTIVE COUNSELING INDIV" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99403", + "display": "PREVENTIVE COUNSELING INDIV" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99404", + "display": "PREVENTIVE COUNSELING INDIV" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99411", + "display": "PREVENTIVE COUNSELING GROUP" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99412", + "display": "PREVENTIVE COUNSELING GROUP" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0463", + "display": "Hospital outpatient clinic visit for assessment and management of a patient (G0463)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "T1015", + "display": "Clinic visit/encounter, all-inclusive (T1015)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0510", + "display": "General" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0513", + "display": "Psychiatric clinic" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0516", + "display": "Urgent care clinic" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0517", + "display": "Family practice clinic" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0519", + "display": "Other clinic" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0520", + "display": "General" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0521", + "display": "Clinic visit by member to RHC/FQHC" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0522", + "display": "Home visit by RHC/FQHC practitioner" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0523", + "display": "Family practice clinic" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0526", + "display": "Urgent care clinic" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0527", + "display": "Visit nurse service to a member's home in a home health shortage area" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0528", + "display": "Visit by RHC/FQHC practitioner to other non-RHC/FQHC site (e.g., scene of accident)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0529", + "display": "Other freestanding clinic" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0982", + "display": "Outpatient services" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0983", + "display": "Clinic" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1385" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1148.7", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1148.7", + "status": "active", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.3.16AB", + "concept": [ + { + "code": "LT" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1148.7" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1168.11", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1168.11", + "status": "active", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/CMS-Forms/CMS-Forms/CMS-Forms-Items/CMS1196256.html/fl42", + "version": "2012.05", + "concept": [ + { + "code": "0403" + }, + { + "code": "0401" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1168.11" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1420.35", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1420.35", + "status": "active", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.3.16AB", + "concept": [ + { + "code": "81528" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1420.35" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1418", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1418", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99377", + "display": "HOSPICE CARE SUPERVISION" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99378", + "display": "HOSPICE CARE SUPERVISION" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0182", + "display": "Physician supervision of a patient under a medicare-approved hospice (patient not present) requiring complex and multidisciplinary care modalities involving regular physician development and/or revision of care plans, review of subsequent reports of patient status, review of laboratory and other studies, communication (including telephone calls) with other health care professionals involved in the patient's care, integration of new information into the medical treatment plan and/or adjustment of medical therapy, within a calendar month, 30 minutes or more (G0182)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G9473", + "display": "Services performed by chaplain in the hospice setting, each 15 minutes (G9473)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G9474", + "display": "Services performed by dietary counselor in the hospice setting, each 15 minutes (G9474)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G9475", + "display": "Services performed by other counselor in the hospice setting, each 15 minutes (G9475)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G9476", + "display": "Services performed by volunteer in the hospice setting, each 15 minutes (G9476)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G9477", + "display": "Services performed by care coordinator in the hospice setting, each 15 minutes (G9477)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G9478", + "display": "Services performed by other qualified therapist in the hospice setting, each 15 minutes (G9478)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G9479", + "display": "Services performed by qualified pharmacist in the hospice setting, each 15 minutes (G9479)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "Q5003", + "display": "Hospice care provided in nursing long term care facility (ltc) or non-skilled nursing facility (nf) (Q5003)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "Q5004", + "display": "Hospice care provided in skilled nursing facility (snf) (Q5004)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "Q5005", + "display": "Hospice care provided in inpatient hospital (Q5005)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "Q5006", + "display": "Hospice care provided in inpatient hospice facility (Q5006)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "Q5007", + "display": "Hospice care provided in long term care facility (Q5007)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "Q5008", + "display": "Hospice care provided in inpatient psychiatric facility (Q5008)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "Q5010", + "display": "Hospice home care provided in a hospice facility (Q5010)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "S9126", + "display": "Hospice care, in the home, per diem (S9126)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "T2042", + "display": "Hospice routine home care; per diem (T2042)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "T2043", + "display": "Hospice continuous home care; per hour (T2043)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "T2044", + "display": "Hospice inpatient respite care; per diem (T2044)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "T2045", + "display": "Hospice general inpatient care; per diem (T2045)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "T2046", + "display": "Hospice long term care, room and board only; per diem (T2046)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0115", + "display": "Hospice" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0125", + "display": "Hospice" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0135", + "display": "Hospice" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0145", + "display": "Hospice" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0155", + "display": "Hospice" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0235", + "display": "Hospice" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0650", + "display": "General" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0651", + "display": "Routine home care" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0652", + "display": "Continuous home care" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0655", + "display": "Inpatient respite care" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0656", + "display": "General inpatient care nonrespite" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0657", + "display": "Physician services" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0658", + "display": "Hospice room & board-nursing facility" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0659", + "display": "Other hospice" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0810", + "display": "Nonpayment/Zero Claim, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0811", + "display": "Admit-Through-Discharge Claim, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0812", + "display": "Interim - First Claim, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0813", + "display": "Interim - Continuing Claim (Not Valid for Medicare PPS Claims), Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0814", + "display": "Interim - Last Claim (Not Valid for Medicare Inpatient Hospital PPS Claims), Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0815", + "display": "Late Charges Only Claim, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0817", + "display": "Replacement of Prior Claim, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0818", + "display": "Void/Cancel of a Prior Claim, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0819", + "display": "Final Claim for a Home Health PPS Episode, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0820", + "display": "Nonpayment/Zero Claim, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0821", + "display": "Admit-Through-Discharge Claim, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0822", + "display": "Interim - First Claim, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0823", + "display": "Interim - Continuing Claim (Not Valid for Medicare PPS Claims), Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0824", + "display": "Interim - Last Claim (Not Valid for Medicare Inpatient Hospital PPS Claims), Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0825", + "display": "Late Charges Only Claim, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0827", + "display": "Replacement of Prior Claim, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0828", + "display": "Void/Cancel of a Prior Claim, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "0829", + "display": "Final Claim for a Home Health PPS Episode, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "081A", + "display": "Hospice Admission/Election Notice, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "081B", + "display": "Termination/Revocation Notice - Hospice/Medicare Coordinated Care Demonstration/Religious Nonmedica, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "081C", + "display": "Hospice Change of Provider Notice, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "081D", + "display": "Void/Cancel - Hospice/Medicare Coordinated Care Demonstration/Religious Nonmedical Health Care Inst, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "081E", + "display": "Hospice Change of Ownership, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "081F", + "display": "Beneficiary Initiated Adjustment Claim, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "081G", + "display": "CWF Initiated Adjustment Claim, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "081H", + "display": "CMS Initiated Adjustment Claim, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "081I", + "display": "Intermediary Adjustment Claim (Other Than PRO or Provider), Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "081J", + "display": "Initiated Adjustment Claim - Other, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "081K", + "display": "OIG Initiated Adjustment Claim, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "081M", + "display": "MSP Initiated Adjustment Claim, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "081O", + "display": "Nonpayment/Zero Claims, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "081X", + "display": "Void/Cancel a Prior Abbreviated Encounter Submission, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "081Y", + "display": "Replacement of a Prior Abbreviated Encounter Submission, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "081Z", + "display": "New Abbreviated Encounter Submission, Hospice (non-hospital based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "082A", + "display": "Hospice Admission/Election Notice, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "082B", + "display": "Termination/Revocation Notice - Hospice/Medicare Coordinated Care Demonstration/Religious Nonmedica, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "082C", + "display": "Hospice Change of Provider Notice, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "082D", + "display": "Void/Cancel - Hospice/Medicare Coordinated Care Demonstration/Religious Nonmedical Health Care Inst, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "082E", + "display": "Hospice Change of Ownership, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "082F", + "display": "Beneficiary Initiated Adjustment Claim, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "082G", + "display": "CWF Initiated Adjustment Claim, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "082H", + "display": "CMS Initiated Adjustment Claim, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "082I", + "display": "Intermediary Adjustment Claim (Other Than PRO or Provider), Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "082J", + "display": "Initiated Adjustment Claim - Other, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "082K", + "display": "OIG Initiated Adjustment Claim, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "082M", + "display": "MSP Initiated Adjustment Claim, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "082O", + "display": "Nonpayment/Zero Claims, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "082X", + "display": "Void/Cancel a Prior Abbreviated Encounter Submission, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "082Y", + "display": "Replacement of a Prior Abbreviated Encounter Submission, Hospice (hospital-based)" + } + ] + }, + { + "system": "http://www.nubc.org", + "version": "2012.05", + "concept": [ + { + "code": "082Z", + "display": "New Abbreviated Encounter Submission, Hospice (hospital-based)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1418" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1420.37", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1420.37", + "status": "active", + "compose": { + "include": [ + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "77353-1" + }, + { + "code": "77354-9" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1420.37" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1168.10", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1168.10", + "status": "active", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "87.37" + }, + { + "code": "87.36" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1168.10" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1420.36", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1420.36", + "status": "active", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.5.17AA", + "concept": [ + { + "code": "G0464" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1420.36" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1339", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1339", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.10", + "display": "[F10.10] Alcohol abuse, uncomplicated" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.120", + "display": "[F10.120] Alcohol abuse with intoxication, uncomplicated" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.121", + "display": "[F10.121] Alcohol abuse with intoxication delirium" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.129", + "display": "[F10.129] Alcohol abuse with intoxication, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.14", + "display": "[F10.14] Alcohol abuse with alcohol-induced mood disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.150", + "display": "[F10.150] Alcohol abuse with alcohol-induced psychotic disorder with delusions" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.151", + "display": "[F10.151] Alcohol abuse with alcohol-induced psychotic disorder with hallucinations" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.159", + "display": "[F10.159] Alcohol abuse with alcohol-induced psychotic disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.180", + "display": "[F10.180] Alcohol abuse with alcohol-induced anxiety disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.181", + "display": "[F10.181] Alcohol abuse with alcohol-induced sexual dysfunction" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.182", + "display": "[F10.182] Alcohol abuse with alcohol-induced sleep disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.188", + "display": "[F10.188] Alcohol abuse with other alcohol-induced disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.19", + "display": "[F10.19] Alcohol abuse with unspecified alcohol-induced disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.20", + "display": "[F10.20] Alcohol dependence, uncomplicated" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.220", + "display": "[F10.220] Alcohol dependence with intoxication, uncomplicated" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.221", + "display": "[F10.221] Alcohol dependence with intoxication delirium" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.229", + "display": "[F10.229] Alcohol dependence with intoxication, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.230", + "display": "[F10.230] Alcohol dependence with withdrawal, uncomplicated" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.231", + "display": "[F10.231] Alcohol dependence with withdrawal delirium" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.232", + "display": "[F10.232] Alcohol dependence with withdrawal with perceptual disturbance" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.239", + "display": "[F10.239] Alcohol dependence with withdrawal, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.24", + "display": "[F10.24] Alcohol dependence with alcohol-induced mood disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.250", + "display": "[F10.250] Alcohol dependence with alcohol-induced psychotic disorder with delusions" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.251", + "display": "[F10.251] Alcohol dependence with alcohol-induced psychotic disorder with hallucinations" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.259", + "display": "[F10.259] Alcohol dependence with alcohol-induced psychotic disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.26", + "display": "[F10.26] Alcohol dependence with alcohol-induced persisting amnestic disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.27", + "display": "[F10.27] Alcohol dependence with alcohol-induced persisting dementia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.280", + "display": "[F10.280] Alcohol dependence with alcohol-induced anxiety disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.281", + "display": "[F10.281] Alcohol dependence with alcohol-induced sexual dysfunction" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.282", + "display": "[F10.282] Alcohol dependence with alcohol-induced sleep disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.288", + "display": "[F10.288] Alcohol dependence with other alcohol-induced disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.29", + "display": "[F10.29] Alcohol dependence with unspecified alcohol-induced disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.920", + "display": "[F10.920] Alcohol use, unspecified with intoxication, uncomplicated" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.921", + "display": "[F10.921] Alcohol use, unspecified with intoxication delirium" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.929", + "display": "[F10.929] Alcohol use, unspecified with intoxication, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.94", + "display": "[F10.94] Alcohol use, unspecified with alcohol-induced mood disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.950", + "display": "[F10.950] Alcohol use, unspecified with alcohol-induced psychotic disorder with delusions" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.951", + "display": "[F10.951] Alcohol use, unspecified with alcohol-induced psychotic disorder with hallucinations" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.959", + "display": "[F10.959] Alcohol use, unspecified with alcohol-induced psychotic disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.96", + "display": "[F10.96] Alcohol use, unspecified with alcohol-induced persisting amnestic disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.97", + "display": "[F10.97] Alcohol use, unspecified with alcohol-induced persisting dementia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.980", + "display": "[F10.980] Alcohol use, unspecified with alcohol-induced anxiety disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.981", + "display": "[F10.981] Alcohol use, unspecified with alcohol-induced sexual dysfunction" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.982", + "display": "[F10.982] Alcohol use, unspecified with alcohol-induced sleep disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.988", + "display": "[F10.988] Alcohol use, unspecified with other alcohol-induced disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.99", + "display": "[F10.99] Alcohol use, unspecified with unspecified alcohol-induced disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "K29.20", + "display": "[K29.20] Alcoholic gastritis without bleeding" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "K29.21", + "display": "[K29.21] Alcoholic gastritis with bleeding" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "K70.10", + "display": "[K70.10] Alcoholic hepatitis without ascites" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "K70.11", + "display": "[K70.11] Alcoholic hepatitis with ascites" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "281004", + "display": "Dementia associated with alcoholism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "7052005", + "display": "Alcohol hallucinosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "7200002", + "display": "Alcoholism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "8635005", + "display": "Alcohol withdrawal delirium (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "15167005", + "display": "Alcohol abuse (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "18653004", + "display": "Alcohol intoxication delirium (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "29212009", + "display": "Alcohol-induced organic mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "34938008", + "display": "Alcohol-induced anxiety disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "41083005", + "display": "Alcohol-induced sleep disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "42344001", + "display": "Alcohol-induced psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "53936005", + "display": "Alcohol-induced mood disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "61144001", + "display": "Alcohol-induced psychotic disorder with delusions (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "66590003", + "display": "Alcohol dependence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "73097000", + "display": "Alcohol amnestic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "78524005", + "display": "Alcohol-induced sexual dysfunction (finding)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "79578000", + "display": "Alcohol paranoia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "85561006", + "display": "Uncomplicated alcohol withdrawal (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191471000", + "display": "Korsakov's alcoholic psychosis with peripheral neuritis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191475009", + "display": "Chronic alcoholic brain syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191476005", + "display": "Alcohol withdrawal hallucinosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191477001", + "display": "Pathological alcohol intoxication (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191478006", + "display": "Alcoholic paranoia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191480000", + "display": "Alcohol withdrawal syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191802004", + "display": "Acute alcoholic intoxication in alcoholism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191804003", + "display": "Continuous acute alcoholic intoxication in alcoholism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191805002", + "display": "Episodic acute alcoholic intoxication in alcoholism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191806001", + "display": "Acute alcoholic intoxication in remission, in alcoholism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191811004", + "display": "Continuous chronic alcoholism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191812006", + "display": "Episodic chronic alcoholism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191813001", + "display": "Chronic alcoholism in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191882002", + "display": "Nondependent alcohol abuse, continuous (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191883007", + "display": "Nondependent alcohol abuse, episodic (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191884001", + "display": "Nondependent alcohol abuse in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268645007", + "display": "Nondependent alcohol abuse (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "284591009", + "display": "Persistent alcohol abuse (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "713583005", + "display": "Mild alcohol dependence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "713862009", + "display": "Severe alcohol dependence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "714829008", + "display": "Moderate alcohol dependence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "97571000119109", + "display": "Thrombocytopenia co-occurrent and due to alcoholism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "135311000119100", + "display": "Insomnia caused by alcohol (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "10741871000119101", + "display": "Alcohol dependence in pregnancy (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "10755041000119100", + "display": "Alcohol dependence in childbirth (disorder)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1339" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1334.15", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1334.15", + "status": "active", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/Coding/ICD10/index.html", + "version": "2017.1.16AA", + "concept": [ + { + "code": "0HTU0ZZ" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1334.15" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1337", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1337", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99408", + "display": "AUDIT/DAST 15-30 MIN" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99409", + "display": "AUDIT/DAST OVER 30 MIN" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "3016F", + "display": "PT SCRND UNHLTHY OH USE" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0396", + "display": "Alcohol and/or substance (other than tobacco) abuse structured assessment (e.g., audit, dast), and brief intervention 15 to 30 minutes (G0396)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0397", + "display": "Alcohol and/or substance (other than tobacco) abuse structured assessment (e.g., audit, dast), and intervention, greater than 30 minutes (G0397)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0442", + "display": "Annual alcohol misuse screening, 15 minutes (G0442)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0001", + "display": "Alcohol and/or drug assessment (H0001)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0049", + "display": "Alcohol and/or drug screening (H0049)" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "68517-2", + "display": "How many times in the past year have you have X or more drinks in a day [SAMHSA]" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "68519-8", + "display": "How many standard drinks containing alcohol do you have on a typical day [SAMHSA]" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "68520-6", + "display": "How often do you have 6 or more drinks on 1 occasion [SAMHSA]" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "72109-2", + "display": "Alcohol Use Disorder Identification Test - Consumption [AUDIT-C]" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "72110-0", + "display": "Alcohol Use Disorder Identification Test [AUDIT]" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "75624-7", + "display": "Total score [AUDIT]" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "75626-2", + "display": "Total score [AUDIT-C]" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "171208001", + "display": "Alcohol consumption screening (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "408946003", + "display": "Alcohol abuse prevention assessment (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "713107002", + "display": "Screening for alcohol abuse (procedure)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1337" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1139", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1139", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D80.0", + "display": "[D80.0] Hereditary hypogammaglobulinemia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D80.1", + "display": "[D80.1] Nonfamilial hypogammaglobulinemia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D80.2", + "display": "[D80.2] Selective deficiency of immunoglobulin A [IgA]" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D80.3", + "display": "[D80.3] Selective deficiency of immunoglobulin G [IgG] subclasses" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D80.4", + "display": "[D80.4] Selective deficiency of immunoglobulin M [IgM]" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D80.5", + "display": "[D80.5] Immunodeficiency with increased immunoglobulin M [IgM]" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D80.6", + "display": "[D80.6] Antibody deficiency with near-normal immunoglobulins or with hyperimmunoglobulinemia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D80.7", + "display": "[D80.7] Transient hypogammaglobulinemia of infancy" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D80.8", + "display": "[D80.8] Other immunodeficiencies with predominantly antibody defects" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D80.9", + "display": "[D80.9] Immunodeficiency with predominantly antibody defects, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D81.0", + "display": "[D81.0] Severe combined immunodeficiency [SCID] with reticular dysgenesis" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D81.1", + "display": "[D81.1] Severe combined immunodeficiency [SCID] with low T- and B-cell numbers" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D81.2", + "display": "[D81.2] Severe combined immunodeficiency [SCID] with low or normal B-cell numbers" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D81.4", + "display": "[D81.4] Nezelof's syndrome" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D81.6", + "display": "[D81.6] Major histocompatibility complex class I deficiency" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D81.7", + "display": "[D81.7] Major histocompatibility complex class II deficiency" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D81.89", + "display": "[D81.89] Other combined immunodeficiencies" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D81.9", + "display": "[D81.9] Combined immunodeficiency, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D82.0", + "display": "[D82.0] Wiskott-Aldrich syndrome" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D82.1", + "display": "[D82.1] Di George's syndrome" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D82.2", + "display": "[D82.2] Immunodeficiency with short-limbed stature" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D82.3", + "display": "[D82.3] Immunodeficiency following hereditary defective response to Epstein-Barr virus" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D82.4", + "display": "[D82.4] Hyperimmunoglobulin E [IgE] syndrome" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D82.8", + "display": "[D82.8] Immunodeficiency associated with other specified major defects" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D82.9", + "display": "[D82.9] Immunodeficiency associated with major defect, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D83.0", + "display": "[D83.0] Common variable immunodeficiency with predominant abnormalities of B-cell numbers and function" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D83.1", + "display": "[D83.1] Common variable immunodeficiency with predominant immunoregulatory T-cell disorders" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D83.2", + "display": "[D83.2] Common variable immunodeficiency with autoantibodies to B- or T-cells" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D83.8", + "display": "[D83.8] Other common variable immunodeficiencies" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D83.9", + "display": "[D83.9] Common variable immunodeficiency, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D84.0", + "display": "[D84.0] Lymphocyte function antigen-1 [LFA-1] defect" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D84.1", + "display": "[D84.1] Defects in the complement system" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D84.8", + "display": "[D84.8] Other specified immunodeficiencies" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D84.9", + "display": "[D84.9] Immunodeficiency, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D89.3", + "display": "[D89.3] Immune reconstitution syndrome" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D89.810", + "display": "[D89.810] Acute graft-versus-host disease" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D89.811", + "display": "[D89.811] Chronic graft-versus-host disease" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D89.812", + "display": "[D89.812] Acute on chronic graft-versus-host disease" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D89.813", + "display": "[D89.813] Graft-versus-host disease, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D89.82", + "display": "[D89.82] Autoimmune lymphoproliferative syndrome [ALPS]" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D89.89", + "display": "[D89.89] Other specified disorders involving the immune mechanism, not elsewhere classified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D89.9", + "display": "[D89.9] Disorder involving the immune mechanism, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.00", + "display": "Hypogammaglobulinemia, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.01", + "display": "Selective IgA immunodeficiency" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.02", + "display": "Selective IgM immunodeficiency" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.03", + "display": "Other selective immunoglobulin deficiencies" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.04", + "display": "Congenital hypogammaglobulinemia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.05", + "display": "Immunodeficiency with increased IgM" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.06", + "display": "Common variable immunodeficiency" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.09", + "display": "Other deficiency of humoral immunity" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.10", + "display": "Immunodeficiency with predominant T-cell defect, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.11", + "display": "Digeorge's syndrome" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.12", + "display": "Wiskott-aldrich syndrome" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.13", + "display": "Nezelof's syndrome" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.19", + "display": "Other deficiency of cell-mediated immunity" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.2", + "display": "Combined immunity deficiency" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.3", + "display": "Unspecified immunity deficiency" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.41", + "display": "Autoimmune lymphoproliferative syndrome" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.49", + "display": "Autoimmune disease, not elsewhere classified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.50", + "display": "Graft-versus-host disease, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.51", + "display": "Acute graft-versus-host disease" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.52", + "display": "Chronic graft-versus-host disease" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.53", + "display": "Acute on chronic graft-versus-host disease" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.8", + "display": "Other specified disorders involving the immune mechanism" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "279.9", + "display": "Unspecified disorder of immune mechanism" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1139" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1123.20", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1123.20", + "status": "active", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "V88.01" + }, + { + "code": "V88.03" + }, + { + "code": "752.43" + }, + { + "code": "618.5" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1123.20" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1123.21", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1123.21", + "status": "active", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "68.61" + }, + { + "code": "68.71" + }, + { + "code": "68.41" + }, + { + "code": "68.51" + }, + { + "code": "68.69" + }, + { + "code": "68.79" + }, + { + "code": "68.49" + }, + { + "code": "68.59" + }, + { + "code": "68.8" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1123.21" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1256.13", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1256.13", + "status": "active", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.3.16AB", + "concept": [ + { + "code": "19307" + }, + { + "code": "19306" + }, + { + "code": "19305" + }, + { + "code": "19303" + }, + { + "code": "19304" + }, + { + "code": "19240" + }, + { + "code": "19220" + }, + { + "code": "19200" + }, + { + "code": "19180" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1256.13" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1256.14", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1256.14", + "status": "active", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "85.47" + }, + { + "code": "85.43" + }, + { + "code": "85.45" + }, + { + "code": "85.41" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1256.14" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1042.3", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1042.3", + "status": "active", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/Coding/ICD10/index.html", + "version": "2017.1.16AA", + "concept": [ + { + "code": "0HTV0ZZ" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1042.3" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1042.4", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1042.4", + "status": "active", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "85.48" + }, + { + "code": "85.44" + }, + { + "code": "85.46" + }, + { + "code": "85.42" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1042.4" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1208.22", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1208.22", + "status": "active", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.3.16AB", + "concept": [ + { + "code": "88147" + }, + { + "code": "88148" + }, + { + "code": "88142" + }, + { + "code": "88174" + }, + { + "code": "88143" + }, + { + "code": "88175" + }, + { + "code": "88141" + }, + { + "code": "88164" + }, + { + "code": "88166" + }, + { + "code": "88167" + }, + { + "code": "88165" + }, + { + "code": "88150" + }, + { + "code": "88152" + }, + { + "code": "88154" + }, + { + "code": "88153" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1208.22" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1179", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1179", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F20.0", + "display": "[F20.0] Paranoid schizophrenia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F20.1", + "display": "[F20.1] Disorganized schizophrenia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F20.2", + "display": "[F20.2] Catatonic schizophrenia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F20.3", + "display": "[F20.3] Undifferentiated schizophrenia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F20.5", + "display": "[F20.5] Residual schizophrenia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F20.81", + "display": "[F20.81] Schizophreniform disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F20.89", + "display": "[F20.89] Other schizophrenia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F20.9", + "display": "[F20.9] Schizophrenia, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F21", + "display": "[F21] Schizotypal disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F22", + "display": "[F22] Delusional disorders" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F23", + "display": "[F23] Brief psychotic disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F24", + "display": "[F24] Shared psychotic disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F25.0", + "display": "[F25.0] Schizoaffective disorder, bipolar type" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F25.1", + "display": "[F25.1] Schizoaffective disorder, depressive type" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F25.8", + "display": "[F25.8] Other schizoaffective disorders" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F25.9", + "display": "[F25.9] Schizoaffective disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F28", + "display": "[F28] Other psychotic disorder not due to a substance or known physiological condition" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F29", + "display": "[F29] Unspecified psychosis not due to a substance or known physiological condition" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.10", + "display": "[F30.10] Manic episode without psychotic symptoms, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.11", + "display": "[F30.11] Manic episode without psychotic symptoms, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.12", + "display": "[F30.12] Manic episode without psychotic symptoms, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.13", + "display": "[F30.13] Manic episode, severe, without psychotic symptoms" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.2", + "display": "[F30.2] Manic episode, severe with psychotic symptoms" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.3", + "display": "[F30.3] Manic episode in partial remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.4", + "display": "[F30.4] Manic episode in full remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.8", + "display": "[F30.8] Other manic episodes" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.9", + "display": "[F30.9] Manic episode, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.0", + "display": "[F31.0] Bipolar disorder, current episode hypomanic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.10", + "display": "[F31.10] Bipolar disorder, current episode manic without psychotic features, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.11", + "display": "[F31.11] Bipolar disorder, current episode manic without psychotic features, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.12", + "display": "[F31.12] Bipolar disorder, current episode manic without psychotic features, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.13", + "display": "[F31.13] Bipolar disorder, current episode manic without psychotic features, severe" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.2", + "display": "[F31.2] Bipolar disorder, current episode manic severe with psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.30", + "display": "[F31.30] Bipolar disorder, current episode depressed, mild or moderate severity, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.31", + "display": "[F31.31] Bipolar disorder, current episode depressed, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.32", + "display": "[F31.32] Bipolar disorder, current episode depressed, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.4", + "display": "[F31.4] Bipolar disorder, current episode depressed, severe, without psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.5", + "display": "[F31.5] Bipolar disorder, current episode depressed, severe, with psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.60", + "display": "[F31.60] Bipolar disorder, current episode mixed, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.61", + "display": "[F31.61] Bipolar disorder, current episode mixed, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.62", + "display": "[F31.62] Bipolar disorder, current episode mixed, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.63", + "display": "[F31.63] Bipolar disorder, current episode mixed, severe, without psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.64", + "display": "[F31.64] Bipolar disorder, current episode mixed, severe, with psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.70", + "display": "[F31.70] Bipolar disorder, currently in remission, most recent episode unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.71", + "display": "[F31.71] Bipolar disorder, in partial remission, most recent episode hypomanic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.72", + "display": "[F31.72] Bipolar disorder, in full remission, most recent episode hypomanic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.73", + "display": "[F31.73] Bipolar disorder, in partial remission, most recent episode manic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.74", + "display": "[F31.74] Bipolar disorder, in full remission, most recent episode manic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.75", + "display": "[F31.75] Bipolar disorder, in partial remission, most recent episode depressed" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.76", + "display": "[F31.76] Bipolar disorder, in full remission, most recent episode depressed" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.77", + "display": "[F31.77] Bipolar disorder, in partial remission, most recent episode mixed" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.78", + "display": "[F31.78] Bipolar disorder, in full remission, most recent episode mixed" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.81", + "display": "[F31.81] Bipolar II disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.89", + "display": "[F31.89] Other bipolar disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.9", + "display": "[F31.9] Bipolar disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.0", + "display": "[F32.0] Major depressive disorder, single episode, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.1", + "display": "[F32.1] Major depressive disorder, single episode, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.2", + "display": "[F32.2] Major depressive disorder, single episode, severe without psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.3", + "display": "[F32.3] Major depressive disorder, single episode, severe with psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.4", + "display": "[F32.4] Major depressive disorder, single episode, in partial remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.5", + "display": "[F32.5] Major depressive disorder, single episode, in full remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.8", + "display": "[F32.8] Other depressive episodes" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.81", + "display": "[F32.81] Premenstrual dysphoric disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.89", + "display": "[F32.89] Other specified depressive episodes" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.9", + "display": "[F32.9] Major depressive disorder, single episode, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.0", + "display": "[F33.0] Major depressive disorder, recurrent, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.1", + "display": "[F33.1] Major depressive disorder, recurrent, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.2", + "display": "[F33.2] Major depressive disorder, recurrent severe without psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.3", + "display": "[F33.3] Major depressive disorder, recurrent, severe with psychotic symptoms" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.40", + "display": "[F33.40] Major depressive disorder, recurrent, in remission, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.41", + "display": "[F33.41] Major depressive disorder, recurrent, in partial remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.42", + "display": "[F33.42] Major depressive disorder, recurrent, in full remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.8", + "display": "[F33.8] Other recurrent depressive disorders" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.9", + "display": "[F33.9] Major depressive disorder, recurrent, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F34.0", + "display": "[F34.0] Cyclothymic disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F34.1", + "display": "[F34.1] Dysthymic disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F34.8", + "display": "[F34.8] Other persistent mood [affective] disorders" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F34.81", + "display": "[F34.81] Disruptive mood dysregulation disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F34.89", + "display": "[F34.89] Other specified persistent mood disorders" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F34.9", + "display": "[F34.9] Persistent mood [affective] disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F39", + "display": "[F39] Unspecified mood [affective] disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F42", + "display": "[F42] Obsessive-compulsive disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F42.2", + "display": "[F42.2] Mixed obsessional thoughts and acts" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F42.3", + "display": "[F42.3] Hoarding disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F42.4", + "display": "[F42.4] Excoriation (skin-picking) disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F42.8", + "display": "[F42.8] Other obsessive-compulsive disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F42.9", + "display": "[F42.9] Obsessive-compulsive disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F43.0", + "display": "[F43.0] Acute stress reaction" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F43.10", + "display": "[F43.10] Post-traumatic stress disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F43.11", + "display": "[F43.11] Post-traumatic stress disorder, acute" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F43.12", + "display": "[F43.12] Post-traumatic stress disorder, chronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F43.20", + "display": "[F43.20] Adjustment disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F43.21", + "display": "[F43.21] Adjustment disorder with depressed mood" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F43.22", + "display": "[F43.22] Adjustment disorder with anxiety" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F43.23", + "display": "[F43.23] Adjustment disorder with mixed anxiety and depressed mood" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F43.24", + "display": "[F43.24] Adjustment disorder with disturbance of conduct" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F43.25", + "display": "[F43.25] Adjustment disorder with mixed disturbance of emotions and conduct" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F43.29", + "display": "[F43.29] Adjustment disorder with other symptoms" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F43.8", + "display": "[F43.8] Other reactions to severe stress" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F43.9", + "display": "[F43.9] Reaction to severe stress, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F44.89", + "display": "[F44.89] Other dissociative and conversion disorders" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F53", + "display": "[F53] Puerperal psychosis" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F60.0", + "display": "[F60.0] Paranoid personality disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F60.1", + "display": "[F60.1] Schizoid personality disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F60.2", + "display": "[F60.2] Antisocial personality disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F60.3", + "display": "[F60.3] Borderline personality disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F60.4", + "display": "[F60.4] Histrionic personality disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F60.5", + "display": "[F60.5] Obsessive-compulsive personality disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F60.6", + "display": "[F60.6] Avoidant personality disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F60.7", + "display": "[F60.7] Dependent personality disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F60.81", + "display": "[F60.81] Narcissistic personality disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F60.89", + "display": "[F60.89] Other specific personality disorders" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F60.9", + "display": "[F60.9] Personality disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F63.0", + "display": "[F63.0] Pathological gambling" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F63.1", + "display": "[F63.1] Pyromania" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F63.2", + "display": "[F63.2] Kleptomania" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F63.3", + "display": "[F63.3] Trichotillomania" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F63.81", + "display": "[F63.81] Intermittent explosive disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F63.89", + "display": "[F63.89] Other impulse disorders" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F63.9", + "display": "[F63.9] Impulse disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F68.10", + "display": "[F68.10] Factitious disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F68.11", + "display": "[F68.11] Factitious disorder with predominantly psychological signs and symptoms" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F68.12", + "display": "[F68.12] Factitious disorder with predominantly physical signs and symptoms" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F68.13", + "display": "[F68.13] Factitious disorder with combined psychological and physical signs and symptoms" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F68.8", + "display": "[F68.8] Other specified disorders of adult personality and behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F84.0", + "display": "[F84.0] Autistic disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F84.2", + "display": "[F84.2] Rett's syndrome" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F84.3", + "display": "[F84.3] Other childhood disintegrative disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F84.5", + "display": "[F84.5] Asperger's syndrome" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F84.8", + "display": "[F84.8] Other pervasive developmental disorders" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F84.9", + "display": "[F84.9] Pervasive developmental disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F90.0", + "display": "[F90.0] Attention-deficit hyperactivity disorder, predominantly inattentive type" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F90.1", + "display": "[F90.1] Attention-deficit hyperactivity disorder, predominantly hyperactive type" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F90.2", + "display": "[F90.2] Attention-deficit hyperactivity disorder, combined type" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F90.8", + "display": "[F90.8] Attention-deficit hyperactivity disorder, other type" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F90.9", + "display": "[F90.9] Attention-deficit hyperactivity disorder, unspecified type" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F91.0", + "display": "[F91.0] Conduct disorder confined to family context" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F91.1", + "display": "[F91.1] Conduct disorder, childhood-onset type" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F91.2", + "display": "[F91.2] Conduct disorder, adolescent-onset type" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F91.3", + "display": "[F91.3] Oppositional defiant disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F91.8", + "display": "[F91.8] Other conduct disorders" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F91.9", + "display": "[F91.9] Conduct disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F93.0", + "display": "[F93.0] Separation anxiety disorder of childhood" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F93.8", + "display": "[F93.8] Other childhood emotional disorders" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F93.9", + "display": "[F93.9] Childhood emotional disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F94.0", + "display": "[F94.0] Selective mutism" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F94.1", + "display": "[F94.1] Reactive attachment disorder of childhood" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F94.2", + "display": "[F94.2] Disinhibited attachment disorder of childhood" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F94.8", + "display": "[F94.8] Other childhood disorders of social functioning" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F94.9", + "display": "[F94.9] Childhood disorder of social functioning, unspecified" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1179" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1256", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1256", + "status": "active", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.3.16AB", + "concept": [ + { + "code": "19307" + }, + { + "code": "19306" + }, + { + "code": "19305" + }, + { + "code": "19303" + }, + { + "code": "19304" + }, + { + "code": "19240" + }, + { + "code": "19220" + }, + { + "code": "19200" + }, + { + "code": "19180" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "85.47" + }, + { + "code": "85.43" + }, + { + "code": "85.45" + }, + { + "code": "85.41" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1256" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1453", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1453", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "109006", + "display": "Anxiety disorder of childhood OR adolescence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "162004", + "display": "Severe manic bipolar I disorder without psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "281004", + "display": "Dementia associated with alcoholism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "600009", + "display": "Pyromania (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "899001", + "display": "Axis I diagnosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "1145003", + "display": "Developmental speech disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "1196001", + "display": "Chronic bipolar II disorder, most recent episode major depressive (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "1376001", + "display": "Obsessive compulsive personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "1380006", + "display": "Agoraphobia without history of panic disorder with limited symptom attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "1383008", + "display": "Hallucinogen mood disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "1499003", + "display": "Bipolar I disorder, single manic episode with postpartum onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "1686006", + "display": "Sedative, hypnotic AND/OR anxiolytic-induced anxiety disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "1816003", + "display": "Panic disorder with agoraphobia, severe agoraphobic avoidance AND mild panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "1855002", + "display": "Developmental academic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "1973000", + "display": "Sedative, hypnotic AND/OR anxiolytic-induced psychotic disorder with delusions (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "2312009", + "display": "Reactive attachment disorder of infancy OR early childhood, inhibited type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "2403008", + "display": "Psychoactive substance dependence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "2618002", + "display": "Chronic recurrent major depressive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "3158007", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in partial remission AND panic attacks in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "3503000", + "display": "Gender identity disorder of adolescence, previously asexual (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "3914008", + "display": "Mental disorder in childhood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "4306003", + "display": "Cluster B personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "4926007", + "display": "Schizophrenia in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "4932002", + "display": "Panic disorder with agoraphobia, moderate agoraphobic avoidance AND mild panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "5095008", + "display": "Gender identity disorder of childhood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "5158005", + "display": "Gilles de la Tourette's syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "5444000", + "display": "Sedative, hypnotic AND/OR anxiolytic intoxication delirium (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "5464005", + "display": "Brief reactive psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "5507002", + "display": "Stereotypy habit disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "5509004", + "display": "Panic disorder with agoraphobia AND severe panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "5510009", + "display": "Organic delusional disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "5703000", + "display": "Bipolar disorder in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "6348008", + "display": "Cocaine-induced psychotic disorder with hallucinations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "7025000", + "display": "Subchronic undifferentiated schizophrenia with acute exacerbations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "7052005", + "display": "Alcohol hallucinosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "7200002", + "display": "Alcoholism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "7291006", + "display": "Reactive attachment disorder of infancy (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "7397008", + "display": "Aggressor identification syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "7461003", + "display": "Attention deficit hyperactivity disorder, predominantly hyperactive impulsive type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "7794004", + "display": "Chronic motor tic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "8185002", + "display": "Panic disorder with agoraphobia AND moderate panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "8635005", + "display": "Alcohol withdrawal delirium (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "8837000", + "display": "Amphetamine delirium (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "9167000", + "display": "Moderate mood disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "9340000", + "display": "Bipolar I disorder, single manic episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "9674006", + "display": "Adjustment disorder with withdrawal (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "9760005", + "display": "Deferred diagnosis on Axis I (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "10278007", + "display": "Factitious purpura (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "10327003", + "display": "Cocaine-induced mood disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "10586006", + "display": "Occupation-related stress disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "11061003", + "display": "Psychoactive substance use disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "11806006", + "display": "Separation anxiety disorder of childhood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "11941006", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in full remission AND panic attacks in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "12939007", + "display": "Chronic disorganized schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "13313007", + "display": "Mild bipolar disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "13438001", + "display": "Overanxious disorder of childhood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "13601005", + "display": "Paranoid personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "13670005", + "display": "Gender identity disorder of adulthood, previously heterosexual (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "13746004", + "display": "Bipolar disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "14070001", + "display": "Multi-infarct dementia with depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "14077003", + "display": "Pica (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "14183003", + "display": "Chronic major depressive disorder, single episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "14291003", + "display": "Subchronic disorganized schizophrenia with acute exacerbations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "14784000", + "display": "Opioid-induced organic mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "15193003", + "display": "Severe recurrent major depression with psychotic features, mood-incongruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "15277004", + "display": "Hallucinogen-induced anxiety disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "15945005", + "display": "Psychogenic polydipsia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "15977008", + "display": "Adjustment disorder with academic inhibition (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "16295005", + "display": "Bipolar II disorder, most recent episode major depressive (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "16506000", + "display": "Mixed bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "16805009", + "display": "Cluster A personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "16966009", + "display": "Factitious hypoglycemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "16990005", + "display": "Subchronic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "17155009", + "display": "Trichotillomania (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "17226007", + "display": "Adjustment disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "17262008", + "display": "Non-alcoholic Korsakoff's psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "17496003", + "display": "Organic anxiety disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "17782008", + "display": "Bipolar I disorder, most recent episode manic with catatonic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "18003009", + "display": "Gender identity disorder of adulthood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "18085000", + "display": "Compulsive gambling (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "18260003", + "display": "Postpartum psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "18478005", + "display": "Adjustment disorder with physical complaints (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "18653004", + "display": "Alcohol intoxication delirium (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "18689007", + "display": "Inhalant intoxication delirium (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "18818009", + "display": "Moderate recurrent major depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "19445006", + "display": "Opioid-induced psychotic disorder with hallucinations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "19766004", + "display": "Panic disorder with agoraphobia, mild agoraphobic avoidance AND severe panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "20010003", + "display": "Borderline personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "20385005", + "display": "Opioid-induced psychotic disorder with delusions (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "20876004", + "display": "Inhalant-induced anxiety disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "21000000", + "display": "Idiosyncratic intoxication (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "21586000", + "display": "Munchausen's syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "21634003", + "display": "Borjeson-Forssman-Lehmann syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "21897009", + "display": "Generalized anxiety disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "21900002", + "display": "Bipolar I disorder, most recent episode depressed with catatonic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "22121000", + "display": "Depressed bipolar I disorder in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "22230001", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in partial remission AND panic attacks in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "22407005", + "display": "Bipolar II disorder, most recent episode major depressive with catatonic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "22419002", + "display": "Mood disorder with mixed features due to general medical condition (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "23148009", + "display": "Undifferentiated attention deficit disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "23560001", + "display": "Asperger's disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "23645006", + "display": "Organic mood disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "24121004", + "display": "Insomnia disorder related to another mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "24125008", + "display": "Mental disorder in infancy (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "24315006", + "display": "Factitious disorder with combined physical AND psychological symptoms (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "24781009", + "display": "Panic disorder with agoraphobia, mild agoraphobic avoidance AND panic attacks in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "25501002", + "display": "Social phobia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "25766007", + "display": "Mixed receptive-expressive language disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "26025008", + "display": "Residual schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "26203008", + "display": "Severe depressed bipolar I disorder with psychotic features, mood-incongruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "26453000", + "display": "Mental disorder in adolescence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "26472000", + "display": "Paraphrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "26516009", + "display": "Severe mood disorder with psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "26530004", + "display": "Severe bipolar disorder with psychotic features, mood-incongruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "26665006", + "display": "Antisocial personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "26714005", + "display": "Cannabis-induced psychotic disorder with hallucinations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "27387000", + "display": "Subchronic disorganized schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "27544004", + "display": "Developmental coordination disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "27956007", + "display": "Cocaine intoxication (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "28357009", + "display": "Transitory postpartum mood disturbance (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "28368009", + "display": "Psychoactive substance-induced organic hallucinosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "28475009", + "display": "Severe recurrent major depression with psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "28663008", + "display": "Severe manic bipolar I disorder with psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "28676002", + "display": "Mood disorder with manic features due to general medical condition (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "28857002", + "display": "Reactive attachment disorder of infancy OR early childhood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "28864000", + "display": "Sedative, hypnotic AND/OR anxiolytic-induced mood disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "28884001", + "display": "Moderate bipolar I disorder, single manic episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "29212009", + "display": "Alcohol-induced organic mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "29599000", + "display": "Chronic undifferentiated schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "29733004", + "display": "Opioid-induced mood disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "29929003", + "display": "Bipolar I disorder, most recent episode depressed with atypical features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "30059008", + "display": "Panic disorder with agoraphobia, severe agoraphobic avoidance AND moderate panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "30310000", + "display": "Nicotine-induced organic mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "30336007", + "display": "Chronic residual schizophrenia with acute exacerbations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "30491001", + "display": "Cocaine delusional disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "30509009", + "display": "Gender identity disorder of adolescence, previously homosexual (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "30687003", + "display": "Bipolar II disorder, most recent episode major depressive with postpartum onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "30935000", + "display": "Manic bipolar I disorder in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "31027006", + "display": "Schizotypal personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "31177006", + "display": "Attention deficit hyperactivity disorder, combined type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "31358003", + "display": "Coprophilia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "31373002", + "display": "Disorganized schizophrenia in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "31446002", + "display": "Bipolar I disorder, most recent episode hypomanic (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "31611000", + "display": "Multiple personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "31648009", + "display": "Unaggressive type unsocialized behavior disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "31658008", + "display": "Chronic paranoid schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "31715000", + "display": "Phencyclidine delirium (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "31781004", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in partial remission AND mild panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "32009006", + "display": "Hallucinogen hallucinosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "32174002", + "display": "Voice disorder due to psychosexual conflict (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "32358001", + "display": "Amphetamine delusional disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "32388005", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in partial remission AND moderate panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "32552001", + "display": "Psychoactive substance-induced organic delusional disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "32721004", + "display": "Bulimia nervosa, purging type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "32875003", + "display": "Inhalant-induced persisting dementia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "32880007", + "display": "Adjustment disorder with work inhibition (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "33078009", + "display": "Severe recurrent major depression with psychotic features, mood-congruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "33135002", + "display": "Recurrent major depression in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "33323008", + "display": "Somatic delusion disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "33380008", + "display": "Severe manic bipolar I disorder with psychotic features, mood-incongruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "33449004", + "display": "Personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "33693007", + "display": "Compensation neurosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "33871004", + "display": "Phencyclidine-induced psychotic disorder with hallucinations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "34116005", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in full remission AND severe panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "34315001", + "display": "Bipolar II disorder, most recent episode major depressive with melancholic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "34938008", + "display": "Alcohol-induced anxiety disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "35218008", + "display": "Chronic disorganized schizophrenia with acute exacerbations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "35252006", + "display": "Disorganized schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "35253001", + "display": "Attention deficit hyperactivity disorder, predominantly inattentive type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "35481005", + "display": "Mixed bipolar I disorder in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "35489007", + "display": "Depressive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "35607004", + "display": "Panic disorder with agoraphobia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "35827000", + "display": "Recurrent conversion disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "35919005", + "display": "Pervasive developmental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "36217008", + "display": "Organic personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "36474008", + "display": "Severe recurrent major depression without psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "36583000", + "display": "Mixed bipolar I disorder in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "36622002", + "display": "Mild mood disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "37331004", + "display": "Psychoactive substance-induced organic mood disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "37739004", + "display": "Mood disorder due to a general medical condition (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "37746008", + "display": "Avoidant personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "37868008", + "display": "Anxiety disorder of adolescence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "37872007", + "display": "Avoidant disorder of childhood OR adolescence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "37941009", + "display": "Rumination disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "38295006", + "display": "Involutional paraphrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "38328002", + "display": "Panic disorder with agoraphobia, severe agoraphobic avoidance AND panic attacks in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "38368003", + "display": "Schizoaffective disorder, bipolar type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "38547003", + "display": "Mood disorder in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "38694004", + "display": "Recurrent major depressive disorder with atypical features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "39003006", + "display": "Psychoactive substance-induced organic delirium (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "39465007", + "display": "Emotional deprivation syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "39610001", + "display": "Undifferentiated schizophrenia in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "39807006", + "display": "Cannabis intoxication delirium (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "39809009", + "display": "Recurrent major depressive disorder with catatonic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "39951001", + "display": "Cannabis-induced anxiety disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "40379007", + "display": "Mild recurrent major depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "40568001", + "display": "Recurrent brief depressive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "40571009", + "display": "Hallucinogen intoxication delirium (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "40673001", + "display": "Post-encephalitic syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "40987004", + "display": "Intermittent explosive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "41021005", + "display": "Psychologic dyspareunia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "41083005", + "display": "Alcohol-induced sleep disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "41526007", + "display": "Reactive attachment disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "41552001", + "display": "Mild bipolar I disorder, single manic episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "41836007", + "display": "Bipolar disorder in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "42344001", + "display": "Alcohol-induced psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "42594001", + "display": "Organic mood disorder of depressed type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "42868002", + "display": "Subchronic catatonic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "43150009", + "display": "Panic disorder without agoraphobia with severe panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "43497001", + "display": "Amphetamine-induced mood disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "43568002", + "display": "Bipolar II disorder, most recent episode major depressive with atypical features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "43614003", + "display": "Autistic disorder of childhood onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "44031002", + "display": "Postseizure confusion (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "44124003", + "display": "Reactive attachment disorder of early childhood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "44966003", + "display": "Passive aggressive personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "45479006", + "display": "Manic bipolar I disorder in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "45677003", + "display": "Developmental expressive writing disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "45912004", + "display": "Organic hallucinosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "46206005", + "display": "Mood disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "46244001", + "display": "Recurrent major depression in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "46721000", + "display": "Psychoactive substance-induced organic personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "46975003", + "display": "Cocaine-induced organic mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "47372000", + "display": "Adjustment disorder with anxious mood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "47447001", + "display": "Grandiose delusion disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "47505003", + "display": "Posttraumatic stress disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "47664006", + "display": "Sedative, hypnotic AND/OR anxiolytic-induced psychotic disorder with hallucinations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "47916000", + "display": "Developmental arithmetic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "48500005", + "display": "Delusional disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "48589009", + "display": "Minor depressive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "49271002", + "display": "Deferred diagnosis on Axis II (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "49468007", + "display": "Depressed bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "49481000", + "display": "Postseizure delirium (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "49512000", + "display": "Depressed bipolar I disorder in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "49564006", + "display": "Panic disorder with agoraphobia, mild agoraphobic avoidance AND moderate panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "50026000", + "display": "Psychoactive substance-induced organic anxiety disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "50320000", + "display": "Hallucinogen intoxication (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "50705009", + "display": "Factitious disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "50722006", + "display": "Phencyclidine delusional disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "50878001", + "display": "Gender identity disorder of adulthood, previously asexual (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "50933003", + "display": "Hallucinogen delusional disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "50983008", + "display": "Panic disorder with agoraphobia, mild agoraphobic avoidance AND panic attacks in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "51133006", + "display": "Residual schizophrenia in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "51443000", + "display": "Amphetamine-induced psychotic disorder with hallucinations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "51493001", + "display": "Cocaine-induced anxiety disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "51637008", + "display": "Chronic bipolar I disorder, most recent episode depressed (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "51771007", + "display": "Postviral fatigue syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "52702003", + "display": "Chronic fatigue syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "52824009", + "display": "Developmental reading disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "52866005", + "display": "Opioid intoxication delirium (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "52910006", + "display": "Anxiety disorder due to a general medical condition (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "52954000", + "display": "Schizoid personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "53050002", + "display": "Hallucinogen-induced organic mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "53467004", + "display": "Anxiety disorder of childhood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "53607008", + "display": "Depressed bipolar I disorder in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "53936005", + "display": "Alcohol-induced mood disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "53956006", + "display": "Panic disorder without agoraphobia with panic attacks in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "54319003", + "display": "Disruptive behavior disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "54417002", + "display": "Adult gender identity disorder, sexually attracted to females (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "54587008", + "display": "Simple phobia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "54761006", + "display": "Severe depressed bipolar I disorder with psychotic features, mood-congruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "55341008", + "display": "Histrionic personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "55516002", + "display": "Bipolar I disorder, most recent episode manic with postpartum onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "55668003", + "display": "Adjustment disorder with mixed emotional features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "55967005", + "display": "Phencyclidine-induced anxiety disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "56194001", + "display": "Caffeine-induced sleep disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "56576003", + "display": "Panic disorder without agoraphobia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "56627002", + "display": "Psychosexual disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "56641006", + "display": "Axis II diagnosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "56882008", + "display": "Anorexia nervosa (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "57194009", + "display": "Adjustment disorder with depressed mood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "57588009", + "display": "Sedative, hypnotic AND/OR anxiolytic-induced sleep disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "57715001", + "display": "Gender identity disorder of adolescence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "58214004", + "display": "Schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "58329000", + "display": "Organic mood disorder of manic type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "58535001", + "display": "Physical AND emotional exhaustion state (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "58647003", + "display": "Severe mood disorder with psychotic features, mood-congruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "58703003", + "display": "Postpartum depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "59216005", + "display": "Adult gender identity disorder, sexually attracted to males (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "59617007", + "display": "Severe depressed bipolar I disorder with psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "59645001", + "display": "Bulimia nervosa, nonpurging type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "59651006", + "display": "Sedative, hypnotic AND/OR anxiolytic-induced persisting dementia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "59923000", + "display": "Panic disorder with agoraphobia AND panic attacks in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "60123008", + "display": "Delusional disorder, mixed type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "61104008", + "display": "Inhalant-induced organic mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "61144001", + "display": "Alcohol-induced psychotic disorder with delusions (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "61157009", + "display": "Combat fatigue (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "61180001", + "display": "Adult gender identity disorder, sexually attracted to neither sex (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "61212007", + "display": "Panic disorder with agoraphobia, severe agoraphobic avoidance AND severe panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "61403008", + "display": "Severe depressed bipolar I disorder without psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "61569007", + "display": "Agoraphobia without history of panic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "61831009", + "display": "Induced psychotic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "62239001", + "display": "Parkinson-dementia complex of Guam (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "62351001", + "display": "Generalized social phobia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "63181006", + "display": "Paranoid schizophrenia in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "63204009", + "display": "Bouffée délirante (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "63249007", + "display": "Manic bipolar I disorder in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "63393005", + "display": "Anorexia nervosa, binge-eating purging type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "63649001", + "display": "Cannabis delusional disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "63701002", + "display": "Panic disorder with agoraphobia, mild agoraphobic avoidance AND mild panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "63909006", + "display": "Panic disorder with agoraphobia AND panic attacks in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "63983005", + "display": "Inhalant-induced psychotic disorder with hallucinations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "64060000", + "display": "Panic disorder with agoraphobia, moderate agoraphobic avoidance AND panic attacks in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "64165008", + "display": "Avoidant disorder of childhood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "64731001", + "display": "Severe mixed bipolar I disorder with psychotic features, mood-congruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "64905009", + "display": "Paranoid schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "65064003", + "display": "Panic disorder without agoraphobia with moderate panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "66344007", + "display": "Recurrent major depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "66347000", + "display": "Impulse control disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "66381006", + "display": "Adjustment disorder with mixed disturbance of emotions AND conduct (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "66590003", + "display": "Alcohol dependence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "66631006", + "display": "Moderate depressed bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "66936004", + "display": "Identity disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "67123006", + "display": "Adult gender identity disorder, sexually attracted to both sexes (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "67195008", + "display": "Acute stress disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "68019004", + "display": "Recurrent major depression in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "68569003", + "display": "Manic bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "68618008", + "display": "Rett's disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "68890003", + "display": "Schizoaffective disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "68963006", + "display": "Gender identity disorder of adolescence, previously heterosexual (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "68995007", + "display": "Chronic catatonic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "69322001", + "display": "Psychotic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "69361009", + "display": "Kleptomania (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "69479009", + "display": "Anxiety hyperventilation (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "69482004", + "display": "Korsakoff's psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "70328006", + "display": "Cocaine delirium (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "70655008", + "display": "Caffeine-induced anxiety disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "70691001", + "display": "Agoraphobia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "70814008", + "display": "Subchronic residual schizophrenia with acute exacerbations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "70932007", + "display": "Amphetamine-induced sexual dysfunction (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "71103003", + "display": "Chronic residual schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "71328000", + "display": "Opioid-induced sexual dysfunction (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "71336009", + "display": "Recurrent major depressive disorder with postpartum onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "71787009", + "display": "Psychologic vaginismus (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "71959007", + "display": "Elective mutism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "71961003", + "display": "Childhood disintegrative disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "71984005", + "display": "Mild manic bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "72366004", + "display": "Eating disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "72861004", + "display": "Panic disorder without agoraphobia with mild panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "73097000", + "display": "Alcohol amnestic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "73462009", + "display": "Chronic vocal tic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "74010007", + "display": "Panic disorder with agoraphobia, severe agoraphobic avoidance AND panic attacks in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "74266001", + "display": "Mood disorder in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "74686005", + "display": "Mild depressed bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "74732009", + "display": "Mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "74934004", + "display": "Psychoactive substance-induced organic withdrawal (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "75122001", + "display": "Inhalant-induced psychotic disorder with delusions (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "75360000", + "display": "Bipolar I disorder, single manic episode, in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "75752004", + "display": "Bipolar I disorder, most recent episode depressed with melancholic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "75837004", + "display": "Mood disorder with depressive features due to general medical condition (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "76105009", + "display": "Cyclothymia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "76236006", + "display": "Atypical tic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "76566000", + "display": "Subchronic residual schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "76812003", + "display": "Panic disorder with agoraphobia, moderate agoraphobic avoidance AND panic attacks in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "76868007", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in full remission AND mild panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "77355000", + "display": "Cannabis-induced organic mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "77383003", + "display": "Marfanoid mental retardation syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "77475008", + "display": "Jealous delusion disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "77486005", + "display": "Mood disorder with major depressive-like episode due to general medical condition (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "77675002", + "display": "Anorexia nervosa, restricting type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "77815007", + "display": "Gender identity disorder of adulthood, previously homosexual (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "78004001", + "display": "Bulimia nervosa (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "78269000", + "display": "Bipolar I disorder, single manic episode, in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "78358001", + "display": "Amphetamine withdrawal (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "78640000", + "display": "Severe manic bipolar I disorder with psychotic features, mood-congruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "78667006", + "display": "Dysthymia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "79204003", + "display": "Chronic undifferentiated schizophrenia with acute exacerbations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "79524000", + "display": "Ecouteurism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "79578000", + "display": "Alcohol paranoia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "79584002", + "display": "Moderate bipolar disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "79842004", + "display": "Stuporous depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "79866005", + "display": "Subchronic paranoid schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "80711002", + "display": "Narcissistic personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "80868005", + "display": "Cocaine withdrawal (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "81463002", + "display": "Bestiality (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "82096005", + "display": "Aggressive type unsocialized behavior disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "82218004", + "display": "Postoperative depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "82339009", + "display": "Amphetamine-induced anxiety disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "82415003", + "display": "Agoraphobia without history of panic disorder without limited symptom attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "82494000", + "display": "Panic disorder without agoraphobia with panic attacks in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "82738004", + "display": "Panic disorder with agoraphobia, moderate agoraphobic avoidance AND moderate panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "82998009", + "display": "Moderate manic bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "83168008", + "display": "Psychoactive substance-induced organic amnestic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "83225003", + "display": "Bipolar II disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "83253003", + "display": "Shyness disorder of childhood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "83367009", + "display": "Amphetamine-induced organic mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "83458005", + "display": "Agitated depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "83501007", + "display": "Organic mood disorder of mixed type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "83631006", + "display": "Panic disorder with agoraphobia, moderate agoraphobic avoidance AND severe panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "83746006", + "display": "Chronic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "83890006", + "display": "Cluster C personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "84466009", + "display": "Dependent personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "84760002", + "display": "Schizoaffective disorder, depressive type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "84788008", + "display": "Menopausal depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "84984002", + "display": "Adjustment disorder with disturbance of conduct (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "85061001", + "display": "Separation anxiety disorder of childhood, early onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "85248005", + "display": "Bipolar disorder in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "85561006", + "display": "Uncomplicated alcohol withdrawal (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "85762002", + "display": "Voice disorder due to transsexualism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "85821003", + "display": "Acute non-psychotic brain syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "85861002", + "display": "Subchronic undifferentiated schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "87132004", + "display": "Opioid withdrawal (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "87203005", + "display": "Bipolar I disorder, most recent episode depressed with postpartum onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "87414006", + "display": "Reactive depression (situational) (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "87798009", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in full remission AND moderate panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "87950005", + "display": "Bipolar I disorder, single manic episode with catatonic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "87991007", + "display": "Gender identity disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "88845000", + "display": "Explosive type organic personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "88939009", + "display": "Severe mood disorder without psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "88975006", + "display": "Schizophreniform disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "89415002", + "display": "Hypersomnia disorder related to another mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "89451009", + "display": "Inhalant-induced mood disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "89618007", + "display": "Persecutory delusion disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "89948007", + "display": "Panic disorder with agoraphobia AND mild panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "90755006", + "display": "Nicotine withdrawal (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "90790003", + "display": "Avoidant disorder of adolescence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "93461009", + "display": "Gender dysphoria (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "95635002", + "display": "Caffeine withdrawal (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "95637005", + "display": "Munchausen syndrome by proxy (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "106013002", + "display": "Mental disorder of infancy, childhood or adolescence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "106014008", + "display": "Organic mental disorder of unknown etiology (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "106015009", + "display": "Mental disorder AND/OR culture bound syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "109805003", + "display": "Factitious cheilitis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111475002", + "display": "Neurosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111476001", + "display": "Mental disorder usually first evident in infancy, childhood AND/OR adolescence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111477005", + "display": "Reactive attachment disorder of infancy OR early childhood, disinhibited type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111479008", + "display": "Organic mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111480006", + "display": "Psychoactive substance-induced organic dementia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111482003", + "display": "Subchronic schizophrenia with acute exacerbations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111483008", + "display": "Catatonic schizophrenia in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111484002", + "display": "Undifferentiated schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111485001", + "display": "Mixed bipolar I disorder in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111487009", + "display": "Dream anxiety disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111490003", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in partial remission AND severe panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111491004", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in full remission AND panic attacks in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "126943008", + "display": "Separation anxiety (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "128293007", + "display": "Chronic mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "129104009", + "display": "Developmental mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "129604005", + "display": "Delusion of heart disease syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "162313000", + "display": "Morbid jealousy (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "162702000", + "display": "On examination - mentally confused (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "162722001", + "display": "On examination - depressed (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "187921002", + "display": "Developmental receptive language disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191447007", + "display": "Organic psychotic condition (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191455000", + "display": "Presenile dementia with depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191457008", + "display": "Senile dementia with depressive or paranoid features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191458003", + "display": "Senile dementia with paranoia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191459006", + "display": "Senile dementia with depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191466007", + "display": "Arteriosclerotic dementia with depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191471000", + "display": "Korsakov's alcoholic psychosis with peripheral neuritis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191475009", + "display": "Chronic alcoholic brain syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191476005", + "display": "Alcohol withdrawal hallucinosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191477001", + "display": "Pathological alcohol intoxication (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191478006", + "display": "Alcoholic paranoia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191480000", + "display": "Alcohol withdrawal syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191483003", + "display": "Drug-induced psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191484009", + "display": "Drug-induced paranoia or hallucinatory states (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191485005", + "display": "Drug-induced paranoid state (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191486006", + "display": "Drug-induced hallucinosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191492000", + "display": "Drug-induced delirium (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191493005", + "display": "Drug-induced dementia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191494004", + "display": "Drug-induced amnestic syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191495003", + "display": "Drug-induced depressive state (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191496002", + "display": "Drug-induced personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191499009", + "display": "Transient organic psychoses (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191501001", + "display": "Acute confusional state, post-traumatic (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191508007", + "display": "Subacute confusional state, post-traumatic (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191526005", + "display": "Schizophrenic disorders (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191527001", + "display": "Simple schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191530008", + "display": "Acute exacerbation of subchronic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191531007", + "display": "Acute exacerbation of chronic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191536002", + "display": "Subchronic hebephrenic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191537006", + "display": "Chronic hebephrenic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191538001", + "display": "Acute exacerbation of subchronic hebephrenic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191539009", + "display": "Acute exacerbation of chronic hebephrenic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191540006", + "display": "Hebephrenic schizophrenia in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191542003", + "display": "Catatonic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191547009", + "display": "Acute exacerbation of subchronic catatonic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191548004", + "display": "Acute exacerbation of chronic catatonic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191554003", + "display": "Acute exacerbation of subchronic paranoid schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191555002", + "display": "Acute exacerbation of chronic paranoid schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191559008", + "display": "Latent schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191564007", + "display": "Acute exacerbation of chronic latent schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191567000", + "display": "Schizoaffective schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191569002", + "display": "Subchronic schizoaffective schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191570001", + "display": "Chronic schizoaffective schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191571002", + "display": "Acute exacerbation of subchronic schizoaffective schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191572009", + "display": "Acute exacerbation of chronic schizoaffective schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191574005", + "display": "Schizoaffective schizophrenia in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191577003", + "display": "Cenesthopathic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191590005", + "display": "Recurrent manic episodes (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191592002", + "display": "Recurrent manic episodes, mild (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191593007", + "display": "Recurrent manic episodes, moderate (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191595000", + "display": "Recurrent manic episodes, severe, with psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191597008", + "display": "Recurrent manic episodes, in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191610000", + "display": "Recurrent major depressive episodes, mild (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191611001", + "display": "Recurrent major depressive episodes, moderate (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191613003", + "display": "Recurrent major depressive episodes, severe, with psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191615005", + "display": "Recurrent major depressive episodes, in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191616006", + "display": "Recurrent depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191618007", + "display": "Bipolar affective disorder, current episode manic (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191620005", + "display": "Bipolar affective disorder, currently manic, mild (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191621009", + "display": "Bipolar affective disorder, currently manic, moderate (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191623007", + "display": "Bipolar affective disorder, currently manic, severe, with psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191625000", + "display": "Bipolar affective disorder, currently manic, in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191627008", + "display": "Bipolar affective disorder, current episode depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191629006", + "display": "Bipolar affective disorder, currently depressed, mild (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191630001", + "display": "Bipolar affective disorder, currently depressed, moderate (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191632009", + "display": "Bipolar affective disorder, currently depressed, severe, with psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191634005", + "display": "Bipolar affective disorder, currently depressed, in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191636007", + "display": "Mixed bipolar affective disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191659001", + "display": "Atypical depressive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191667009", + "display": "Paranoid disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191668004", + "display": "Simple paranoid state (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191670008", + "display": "Shared paranoid disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191672000", + "display": "Paranoia querulans (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191676002", + "display": "Reactive depressive psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191678001", + "display": "Reactive confusion (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191680007", + "display": "Psychogenic paranoid psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191687005", + "display": "Psychosis with origin in childhood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191689008", + "display": "Active infantile autism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191692007", + "display": "Active disintegrative psychoses (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191693002", + "display": "Residual disintegrative psychoses (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191696005", + "display": "Atypical childhood psychoses (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191697001", + "display": "Borderline psychosis of childhood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191714002", + "display": "Dissociative convulsions (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191722009", + "display": "Agoraphobia with panic attacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191724005", + "display": "Social phobia, fear of eating in public (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191725006", + "display": "Social phobia, fear of public speaking (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191726007", + "display": "Social phobia, fear of public washing (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191736004", + "display": "Obsessive-compulsive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191737008", + "display": "Compulsive neurosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191738003", + "display": "Obsessional neurosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191753006", + "display": "Hypomanic personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191765005", + "display": "Emotionally unstable personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191766006", + "display": "Psychoinfantile personality (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191772006", + "display": "Eccentric personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191773001", + "display": "Immature personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191774007", + "display": "Masochistic personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191787001", + "display": "Psychosexual identity disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191811004", + "display": "Continuous chronic alcoholism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191812006", + "display": "Episodic chronic alcoholism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191813001", + "display": "Chronic alcoholism in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191966002", + "display": "Psychogenic pruritus (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192014006", + "display": "Psychogenic rumination (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192037000", + "display": "Acute panic state due to acute stress reaction (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192038005", + "display": "Acute fugue state due to acute stress reaction (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192039002", + "display": "Acute stupor state due to acute stress reaction (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192041001", + "display": "Acute situational disturbance (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192042008", + "display": "Acute post-trauma stress state (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192044009", + "display": "Stress reaction causing mixed disturbance of emotion and conduct (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192046006", + "display": "Brief depressive adjustment reaction (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192049004", + "display": "Prolonged depressive adjustment reaction (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192051000", + "display": "Adolescent emancipation disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192052007", + "display": "Early adult emancipation disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192054008", + "display": "Culture shock (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192056005", + "display": "Adjustment reaction with aggression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192057001", + "display": "Adjustment reaction with antisocial behavior (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192058006", + "display": "Adjustment reaction with destructiveness (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192061007", + "display": "Concentration camp syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192063005", + "display": "Adjustment reaction with physical symptoms (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192064004", + "display": "Elective mutism due to an adjustment reaction (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192069009", + "display": "Specific nonpsychotic mental disorders following organic brain damage (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192072002", + "display": "Organic memory impairment (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192073007", + "display": "Change in personality (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192079006", + "display": "Postviral depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192080009", + "display": "Chronic depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192097003", + "display": "Isolated explosive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192099000", + "display": "Childhood disorder of conduct and emotion (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192108001", + "display": "Disturbance of anxiety and fearfulness in childhood and adolescence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192110004", + "display": "Childhood and adolescent fearfulness disturbance (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192122001", + "display": "Childhood or adolescent identity disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192127007", + "display": "Child attention deficit disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192147004", + "display": "Mixed disorder of psychological development (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192527004", + "display": "Elaboration of physical symptoms for psychological reasons (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192562009", + "display": "Disorder of psychological development (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192611004", + "display": "Childhood phobic anxiety disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192616009", + "display": "Childhood or adolescent disorder of social functioning (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192631000", + "display": "Pica of infancy and childhood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "197480006", + "display": "Anxiety disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "199257008", + "display": "Mental disorders during pregnancy, childbirth and the puerperium (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "199259006", + "display": "Mental disorder during pregnancy - baby delivered (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "199260001", + "display": "Mental disorder in the puerperium - baby delivered (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "199261002", + "display": "Mental disorder during pregnancy - baby not yet delivered (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "199262009", + "display": "Mental disorder in the puerperium - baby delivered during previous episode of care (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "229623002", + "display": "Developmental dysfluency (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "229699006", + "display": "Immature articulatory praxis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "229700007", + "display": "Developmental motor speech disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "229701006", + "display": "Developmental articulatory dyspraxia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "229715008", + "display": "Deficits in attention motor control and perception (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "229729009", + "display": "Developmental language impairment (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "229740001", + "display": "Delayed pre-verbal development (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "229744005", + "display": "Developmental syntactic impairment (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "229745006", + "display": "Developmental semantic impairment (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "230334008", + "display": "Drug-induced tic (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "230455006", + "display": "Self-induced non-photosensitive epilepsy (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231437006", + "display": "Reactive psychoses (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231438001", + "display": "Presbyophrenic psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231442003", + "display": "Organic catatonic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231443008", + "display": "Right hemispheric organic affective disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231444002", + "display": "Organic bipolar disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231445001", + "display": "Organic dissociative disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231446000", + "display": "Organic emotionally labile disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231449007", + "display": "Epileptic psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231450007", + "display": "Psychosis associated with intensive care (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231451006", + "display": "Drug-induced intensive care psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231452004", + "display": "Limbic epilepsy personality syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231454003", + "display": "Organic pseudopsychopathic personality (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231455002", + "display": "Organic pseudoretarded personality (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231457005", + "display": "Organic psychosyndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231467000", + "display": "Absinthe addiction (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231485007", + "display": "Post-schizophrenic depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231487004", + "display": "Persistent delusional disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231489001", + "display": "Acute transient psychotic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231494001", + "display": "Mania (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231496004", + "display": "Hypomania (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231500002", + "display": "Masked depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231504006", + "display": "Mixed anxiety and depressive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231516000", + "display": "Cutaneous hypochondriasis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231520001", + "display": "Behavioral syndrome associated with physiological disturbance and physical factors (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231521002", + "display": "Weight fixation (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231522009", + "display": "Atypical anorexia nervosa (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231523004", + "display": "Atypical bulimia nervosa (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231524005", + "display": "Interictal behavior disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231525006", + "display": "Manipulative personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231526007", + "display": "Fanatic personality (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231527003", + "display": "Explosive personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231528008", + "display": "Anxious personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231530005", + "display": "Post-concussional personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231536004", + "display": "Atypical autism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231537008", + "display": "Developmental agnosia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231538003", + "display": "Behavioral and emotional disorder with onset in childhood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231539006", + "display": "Adolescent - emotional problem (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231542000", + "display": "Depressive conduct disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "233690008", + "display": "Factitious asthma (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "237351003", + "display": "Mild postnatal psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "238110009", + "display": "Nutritional mental retardation (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "238961003", + "display": "Trichophobia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "238966008", + "display": "Syphilophobia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "238967004", + "display": "Psychogenic sensory disturbance of skin (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "238972008", + "display": "Cutaneous monosymptomatic delusional psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "238973003", + "display": "Delusions of parasitosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "238974009", + "display": "Delusions of infestation (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "238975005", + "display": "Delusion of foul odor (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "238976006", + "display": "Bromisodrophobia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "238977002", + "display": "Delusional hyperhidrosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "238978007", + "display": "Hyperschemazia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "238979004", + "display": "Hyposchemazia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "247803002", + "display": "Seasonal affective disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "247804008", + "display": "Schizophrenic prodrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "267320004", + "display": "Pregnancy with mental disorders (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268612007", + "display": "Senile and presenile organic psychotic conditions (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268617001", + "display": "Acute schizophrenic episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268621008", + "display": "Recurrent major depressive episodes (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268622001", + "display": "Chronic paranoid psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268624000", + "display": "Acute paranoid reaction (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268633003", + "display": "Introverted personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268634009", + "display": "Psychoneurotic personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268664001", + "display": "Childhood emotional disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268666004", + "display": "Childhood and adolescent disturbance with sensitivity (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268667008", + "display": "Childhood and adolescent disturbance with shyness (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268668003", + "display": "Childhood and adolescent disturbance with introversion (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268669006", + "display": "Childhood and adolescent disturbance with elective mutism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268673009", + "display": "Developmental aphasia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268734000", + "display": "Developmental expressive language disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "270901009", + "display": "Schizoaffective disorder, mixed type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "270902002", + "display": "Overeating associated with other psychological disturbances (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "270905000", + "display": "Childhood disinhibited attachment disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "271428004", + "display": "Schizoaffective disorder, manic type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "271952001", + "display": "Stress and adjustment reaction (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "274948002", + "display": "Endogenous depression - recurrent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "274952002", + "display": "Borderline schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "274953007", + "display": "Acute polymorphic psychotic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "275474009", + "display": "Psychogenic overeating (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "278506006", + "display": "Involutional paranoid state (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "278508007", + "display": "Delusional dysmorphophobia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "278852008", + "display": "Paranoid-hallucinatory epileptic psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "278853003", + "display": "Acute schizophrenia-like psychotic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "279611005", + "display": "Shell shock (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "280032002", + "display": "Developmental language disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "280375000", + "display": "Psychological disorder associated with sexual development (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "280994000", + "display": "Chronic confusional state (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "286933003", + "display": "Confusional state (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "300706003", + "display": "Endogenous depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "301643003", + "display": "Sedative, hypnotic AND/OR anxiolytic-induced persisting amnestic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "302507002", + "display": "Sedative amnestic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "307417003", + "display": "Cycloid psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "309279000", + "display": "Caffeine-induced organic mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "310495003", + "display": "Mild depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "310496002", + "display": "Moderate depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "310497006", + "display": "Severe depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "311173003", + "display": "Phencyclidine-related disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "312098001", + "display": "Sedative, hypnotic AND/OR anxiolytic-related disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "312936002", + "display": "Anxiolytic-induced organic mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "313182004", + "display": "Chronic post-traumatic stress disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "313224008", + "display": "Dysmorphophobia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "313915006", + "display": "Hypnotic-induced organic mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "317816007", + "display": "Stockholm syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "318784009", + "display": "Posttraumatic stress disorder, delayed onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "319768000", + "display": "Recurrent major depressive disorder with melancholic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "357705009", + "display": "Cotard's syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "370143000", + "display": "Major depressive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "371026009", + "display": "Senile dementia with psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "371596008", + "display": "Bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "371600003", + "display": "Severe bipolar disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "371631005", + "display": "Panic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "373618009", + "display": "Autistic spectrum disorder with isolated skills (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "386701004", + "display": "Developmental articulation disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "386810004", + "display": "Phobic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "386822001", + "display": "Adjustment reaction of adolescence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "386823006", + "display": "Adjustment reaction of adult life (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "386824000", + "display": "Adjustment reaction of childhood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "386825004", + "display": "Adjustment reaction of late life (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "398066007", + "display": "Intensive care psychiatric disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "402732001", + "display": "Habit tic (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "402733006", + "display": "Habit tic affecting skin (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "402735004", + "display": "Habit tic affecting hair (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "403590001", + "display": "Cutaneous Munchausen syndrome by proxy (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "403593004", + "display": "Phobic fear of skin cancer (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "403594005", + "display": "Psychogenic formication (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "404906000", + "display": "Postoperative confusion (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "406506008", + "display": "Attention deficit hyperactivity disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "408856003", + "display": "Autistic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "416340002", + "display": "Late onset schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "417143004", + "display": "Short duration flashbacks (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "420774007", + "display": "Organic brain syndrome associated with acquired immunodeficiency syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "425914008", + "display": "Adjustment reaction to medical therapy (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "425919003", + "display": "Chronic organic mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "426041005", + "display": "Developmental dyslalia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "426174008", + "display": "Chronic stress disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "426881004", + "display": "Developmental delay in feeding (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "427469003", + "display": "Eating disorder in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "427975003", + "display": "Drug-induced delusional disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "428687006", + "display": "Nightmares associated with chronic post-traumatic stress disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "428703001", + "display": "Transient organic mental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "429672007", + "display": "Drug-induced mood disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "430744005", + "display": "Factitious disorder with predominantly physical signs and symptoms (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "430751001", + "display": "Factitious disorder with predominantly psychological signs and symptoms (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "430909002", + "display": "Conduct disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "439960005", + "display": "Binge eating disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "441704009", + "display": "Affective psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "441711008", + "display": "Chronic psychogenic pain (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "441716003", + "display": "Residual childhood psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "441833000", + "display": "Lethal catatonia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "442057004", + "display": "Chronic depressive personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "442245003", + "display": "Chronic hypomanic personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "442314000", + "display": "Active but odd autism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "442351006", + "display": "Mental disorder caused by drug (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "443919007", + "display": "Complex posttraumatic stress disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "450714000", + "display": "Severe major depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "473452003", + "display": "Atypical psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "473456000", + "display": "Compulsive personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "473457009", + "display": "Obsessional personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "609225004", + "display": "Developmental regression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "712823008", + "display": "Acute depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "712824002", + "display": "Acute polymorphic psychotic disorder without symptoms of schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "712850003", + "display": "Acute polymorphic psychotic disorder co-occurrent with symptoms of schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "712884004", + "display": "Pathological demand avoidance (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "713491003", + "display": "Organic brain syndrome co-occurrent with human immunodeficiency virus infection (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "713583005", + "display": "Mild alcohol dependence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "713862009", + "display": "Severe alcohol dependence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "714829008", + "display": "Moderate alcohol dependence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "715737004", + "display": "Parkinsonism co-occurrent with dementia of Guadeloupe (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "715924009", + "display": "Disruptive mood dysregulation disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "716096005", + "display": "Hypospadias and intellectual disability syndrome Goldblatt type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "716199000", + "display": "Delayed speech and facial asymmetry with strabismus and ear lobe skin crease syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "716578009", + "display": "Developmental language comprehension impairment (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "718393002", + "display": "Atypical Rett syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "251000119105", + "display": "Severe major depression, single episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "261000119107", + "display": "Severe depressed bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "271000119101", + "display": "Severe mixed bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "281000119103", + "display": "Severe recurrent major depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "18491000119109", + "display": "Psychological disorder during pregnancy (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "21071000119101", + "display": "Mood disorder of manic type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "22641000119109", + "display": "Psychosis in early childhood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "22981000119106", + "display": "Recurrent severe manic episodes (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "23601000119102", + "display": "Sedative withdrawal (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "23741000119105", + "display": "Severe manic bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "39951000119105", + "display": "Pervasive developmental disorder of residual state (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "61771000119106", + "display": "Bipolar II disorder, most recent episode rapid cycling (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "62211000119103", + "display": "Moderate expressive language delay (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "62231000119108", + "display": "Mild expressive language delay (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "89381000119107", + "display": "Moderate receptive language delay (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "89501000119108", + "display": "Mild receptive language delay (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "94631000119100", + "display": "Depressive disorder in mother complicating pregnancy (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "97571000119109", + "display": "Thrombocytopenia co-occurrent and due to alcoholism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "130121000119104", + "display": "Dementia due to Rett's syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "133091000119105", + "display": "Rapid cycling bipolar I disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "133121000119109", + "display": "Severe seasonal affective disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "153071000119108", + "display": "Recurrent manic episodes in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "270291000119109", + "display": "Identity disorder of childhood (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "288271000119103", + "display": "Childhood onset fluency disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "288421000119100", + "display": "Hyposomnia co-occurrent and due to psychological disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "288511000119108", + "display": "Chronic mood disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "288751000119101", + "display": "Reactive depressive psychosis, single episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "288851000119106", + "display": "Opioid-induced mood disorder due to opioid abuse (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "288861000119108", + "display": "Opioid-induced mood disorder due to opioid dependence (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "434971000124109", + "display": "Amphetamine induced psychotic disorder (disorder)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1453" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1208.25", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1208.25", + "status": "active", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/CMS-Forms/CMS-Forms/CMS-Forms-Items/CMS1196256.html/fl42", + "version": "2012.05", + "concept": [ + { + "code": "0923" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1208.25" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1208.24", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1208.24", + "status": "active", + "compose": { + "include": [ + { + "system": "http://loinc.org", + "version": "2017.5.17AA", + "concept": [ + { + "code": "33717-0" + }, + { + "code": "47528-5" + }, + { + "code": "47527-7" + }, + { + "code": "19774-9" + }, + { + "code": "19762-4" + }, + { + "code": "19765-7" + }, + { + "code": "19766-5" + }, + { + "code": "10524-7" + }, + { + "code": "18500-9" + }, + { + "code": "19764-0" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1208.24" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1208.23", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1208.23", + "status": "active", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.5.17AA", + "concept": [ + { + "code": "G0147" + }, + { + "code": "G0148" + }, + { + "code": "G0141" + }, + { + "code": "G0124" + }, + { + "code": "G0123" + }, + { + "code": "G0143" + }, + { + "code": "G0145" + }, + { + "code": "G0144" + }, + { + "code": "P3000" + }, + { + "code": "P3001" + }, + { + "code": "Q0091" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1208.23" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1449", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1449", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D60.0", + "display": "[D60.0] Chronic acquired pure red cell aplasia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D60.1", + "display": "[D60.1] Transient acquired pure red cell aplasia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D60.8", + "display": "[D60.8] Other acquired pure red cell aplasias" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D60.9", + "display": "[D60.9] Acquired pure red cell aplasia, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D61.01", + "display": "[D61.01] Constitutional (pure) red blood cell aplasia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D61.09", + "display": "[D61.09] Other constitutional aplastic anemia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D61.1", + "display": "[D61.1] Drug-induced aplastic anemia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D61.2", + "display": "[D61.2] Aplastic anemia due to other external agents" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D61.3", + "display": "[D61.3] Idiopathic aplastic anemia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D61.810", + "display": "[D61.810] Antineoplastic chemotherapy induced pancytopenia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D61.811", + "display": "[D61.811] Other drug-induced pancytopenia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D61.818", + "display": "[D61.818] Other pancytopenia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D61.82", + "display": "[D61.82] Myelophthisis" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D61.89", + "display": "[D61.89] Other specified aplastic anemias and other bone marrow failure syndromes" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D61.9", + "display": "[D61.9] Aplastic anemia, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D62", + "display": "[D62] Acute posthemorrhagic anemia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D63.0", + "display": "[D63.0] Anemia in neoplastic disease" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D63.1", + "display": "[D63.1] Anemia in chronic kidney disease" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D63.8", + "display": "[D63.8] Anemia in other chronic diseases classified elsewhere" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D64.0", + "display": "[D64.0] Hereditary sideroblastic anemia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D64.1", + "display": "[D64.1] Secondary sideroblastic anemia due to disease" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D64.2", + "display": "[D64.2] Secondary sideroblastic anemia due to drugs and toxins" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D64.3", + "display": "[D64.3] Other sideroblastic anemias" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D64.4", + "display": "[D64.4] Congenital dyserythropoietic anemia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "D64.81", + "display": "[D64.81] Anemia due to antineoplastic chemotherapy" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "183005", + "display": "Autoimmune pancytopenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "862001", + "display": "Anemia caused by chlorate (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "5603006", + "display": "Autoimmune hemolytic anemia caused by immunoglobulin G (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "5876000", + "display": "Acquired pancytopenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "9764001", + "display": "Anemia caused by radiation (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "11781007", + "display": "Autoimmune hemolytic anemia caused by complement (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "14126008", + "display": "Autosomal-linked pyridoxine refractory sideroblastic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "15276008", + "display": "Drug-induced enzyme deficiency anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "16645003", + "display": "Anemia caused by insect venom (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "18323000", + "display": "Drug-induced immune hemolytic anemia, immune complex type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "22098000", + "display": "Chronic idiopathic autoimmune hemolytic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "26944003", + "display": "Acute megaloblastic anemia due to dialysis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "28975000", + "display": "Constitutional aplastic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "29551000", + "display": "Anemia caused by oxygen (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "33491002", + "display": "Autoimmune hemolytic anemia caused by immunoglobulin A plus complement (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "34247008", + "display": "Anemia due to mechanical damage (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "36919001", + "display": "Anemia caused by lead (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "41841004", + "display": "Sideroblastic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "42461002", + "display": "Anemia caused by copper (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "43707008", + "display": "Anemia caused by heat (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "43858000", + "display": "Secondary aplastic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "44288006", + "display": "Anemia due to abnormality extrinsic to the red cell (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "50220002", + "display": "Cellular immunologic aplastic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "50253007", + "display": "Secondary paroxysmal cold hemoglobinuria (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "57192008", + "display": "Acute pure red cell aplasia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "62389006", + "display": "Acute megaloblastic anemia due to severe illness (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "62609001", + "display": "Autoimmune hemolytic anemia caused by immunoglobulin G plus complement (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "71832003", + "display": "Autoimmune hemolytic anemia caused by immunoglobulin M (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "71855000", + "display": "Acute megaloblastic anemia secondary to total parenteral nutrition (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "72501006", + "display": "Anemia caused by arsenic hydride (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "73891003", + "display": "Acute megaloblastic anemia caused by nitrous oxide (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "77084001", + "display": "Immunologic aplastic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "77607006", + "display": "Drug-induced sideroblastic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "82430007", + "display": "Acute megaloblastic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "90175006", + "display": "Secondary acquired sideroblastic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "90414007", + "display": "Chronic acquired pure red cell aplasia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "91411007", + "display": "Autoimmune hemolytic anemia caused by immunoglobulin A (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111576004", + "display": "Acquired stomatocytosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111581008", + "display": "Anemia caused by physical agent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "127050002", + "display": "Secondary autoimmune hemolytic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "127054006", + "display": "Cold agglutinin disease caused by Epstein-Barr virus infection (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "127059001", + "display": "Drug-induced immune hemolytic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "127060006", + "display": "Drug-induced immune hemolytic anemia, hapten type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "127061005", + "display": "Autoimmune hemolytic anemia, categorized by antibody class AND/OR complement (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "127319005", + "display": "Anemia caused by alloimmune destruction of transfused red cells (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191212002", + "display": "Secondary cold-type hemolytic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191228007", + "display": "Acquired spherocytosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191244003", + "display": "Aplastic anemia due to chronic disease (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191246001", + "display": "Aplastic anemia due to infection (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191247005", + "display": "Aplastic anemia caused by radiation (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191248000", + "display": "Aplastic anemia caused by toxic cause (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191256002", + "display": "Idiopathic aplastic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191261000", + "display": "Secondary sideroblastic anemia due to disease (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191262007", + "display": "Secondary sideroblastic anemia caused by drugs and toxins (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191265009", + "display": "Anemia in neoplastic disease (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "234366009", + "display": "Alcohol-related sideroblastic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "234371002", + "display": "Congenital pure red cell aplasia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "234372009", + "display": "Congenital red cell hypoplasia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "234373004", + "display": "Constitutional red cell hypoplasia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "234376007", + "display": "Acquired red cell aplasia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "267524009", + "display": "Constitutional aplastic anemia with malformation (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "267525005", + "display": "Constitutional red cell aplasia and hypoplasia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "267527002", + "display": "Aplastic anemia due to drugs (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "273985002", + "display": "Anemia due to isoimmunization (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "276448005", + "display": "Idiopathic sideroblastic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "278363000", + "display": "Alcoholic macrocytosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "290246007", + "display": "Sideropenic anemia with reticuloendothelial siderosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "303266002", + "display": "Aplastic bone marrow (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "306058006", + "display": "Aplastic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "307726001", + "display": "Anemia in ovarian carcinoma (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "309742004", + "display": "Drug-induced autoimmune hemolytic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "398937006", + "display": "Cold autoimmune hemolytic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "413565006", + "display": "Aplastic anemia associated with metabolic alteration (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "413566007", + "display": "Aplastic anemia associated with pancreatitis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "413567003", + "display": "Aplastic anemia associated with pregnancy (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "413603009", + "display": "Autoimmune hemolytic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "420543008", + "display": "Anemia associated with acquired immunodeficiency syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "421102007", + "display": "Aplastic anemia associated with acquired immunodeficiency syndrome (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "424988008", + "display": "Anemia caused by substance (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "428383000", + "display": "Anemia caused by medication (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "429564000", + "display": "Anemia caused by chemotherapy (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "438476003", + "display": "Autoimmune thrombotic thrombocytopenic purpura (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "439007008", + "display": "Acquired thrombotic thrombocytopenic purpura (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "441322009", + "display": "Drug induced thrombotic thrombocytopenic purpura (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "713496008", + "display": "Anemia caused by zidovudine (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "713508003", + "display": "Aplastic anemia co-occurrent with human immunodeficiency virus infection (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "717050005", + "display": "Autosomal recessive sideroblastic anemia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "118791000119106", + "display": "Aplastic anemia caused by antineoplastic agent (disorder)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1449" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1208", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1208", + "status": "active", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.3.16AB", + "concept": [ + { + "code": "88147" + }, + { + "code": "88148" + }, + { + "code": "88142" + }, + { + "code": "88174" + }, + { + "code": "88143" + }, + { + "code": "88175" + }, + { + "code": "88141" + }, + { + "code": "88164" + }, + { + "code": "88166" + }, + { + "code": "88167" + }, + { + "code": "88165" + }, + { + "code": "88150" + }, + { + "code": "88152" + }, + { + "code": "88154" + }, + { + "code": "88153" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.5.17AA", + "concept": [ + { + "code": "G0147" + }, + { + "code": "G0148" + }, + { + "code": "G0141" + }, + { + "code": "G0124" + }, + { + "code": "G0123" + }, + { + "code": "G0143" + }, + { + "code": "G0145" + }, + { + "code": "G0144" + }, + { + "code": "P3000" + }, + { + "code": "P3001" + }, + { + "code": "Q0091" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2017.5.17AA", + "concept": [ + { + "code": "33717-0" + }, + { + "code": "47528-5" + }, + { + "code": "47527-7" + }, + { + "code": "19774-9" + }, + { + "code": "19762-4" + }, + { + "code": "19765-7" + }, + { + "code": "19766-5" + }, + { + "code": "10524-7" + }, + { + "code": "18500-9" + }, + { + "code": "19764-0" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/CMS-Forms/CMS-Forms/CMS-Forms-Items/CMS1196256.html/fl42", + "version": "2012.05", + "concept": [ + { + "code": "0923" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1208" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1421.34", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1421.34", + "status": "active", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.3.16AB", + "concept": [ + { + "code": "74263" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1421.34" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1326", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1326", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "Z51.0", + "display": "[Z51.0] Encounter for antineoplastic radiation therapy" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "Z51.11", + "display": "[Z51.11] Encounter for antineoplastic chemotherapy" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "Z51.12", + "display": "[Z51.12] Encounter for antineoplastic immunotherapy" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1326" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1447", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1447", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "69930", + "display": "IMPLANT COCHLEAR DEVICE" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "L8614", + "display": "Cochlear device, includes all internal and external components (L8614)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "L8619", + "display": "Cochlear implant, external speech processor and controller, integrated system, replacement (L8619)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "L8627", + "display": "Cochlear implant, external speech processor, component, replacement (L8627)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "L8628", + "display": "Cochlear implant, external controller component, replacement (L8628)" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "Z96.20", + "display": "[Z96.20] Presence of otological and audiological implant, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "Z96.21", + "display": "[Z96.21] Cochlear implant status" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "310012007", + "display": "Cochlear implant service (qualifier value)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "310013002", + "display": "Adult cochlear implant service (qualifier value)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "310014008", + "display": "Pediatric cochlear implant service (qualifier value)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "467286008", + "display": "Cochlear implant system coil cable (physical object)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "467396002", + "display": "Cochlear implant system (physical object)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "467453006", + "display": "Cochlear implant system sound processor (physical object)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "467600008", + "display": "Cochlear implant system electrode array assembly (physical object)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "467624000", + "display": "Cochlear implant system battery pack (physical object)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "468054007", + "display": "Cochlear implant system coil (physical object)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "701524004", + "display": "Cochlear implant evaluation/programming application software (physical object)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "701568002", + "display": "Cochlear implant assessment system (physical object)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "708553008", + "display": "Cochlear implant system component (physical object)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "711586008", + "display": "Cochlear implant system coil cover (physical object)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "711587004", + "display": "Cochlear implant system sound processor earhook (physical object)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "711588009", + "display": "Cochlear implant system sound processor off-ear holder (physical object)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "711589001", + "display": "Cochlear implant system connector (physical object)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "711590005", + "display": "Cochlear implant system sound processor/coil decorative cover (physical object)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "711593007", + "display": "Cochlear implant system sound processor audio earhook (physical object)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1447" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1448", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1448", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "G96.0", + "display": "[G96.0] Cerebrospinal fluid leak" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "G97.0", + "display": "[G97.0] Cerebrospinal fluid leak from spinal puncture" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "68382005", + "display": "Cerebrospinal fluid otorrhea (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "73965003", + "display": "Cerebrospinal fluid leakage (morphologic abnormality)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "85638002", + "display": "Cerebrospinal fluid rhinorrhea (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "167719009", + "display": "Cerebrospinal fluid lymphocytosis (finding)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "193064009", + "display": "Cerebrospinal fluid leak from spinal puncture (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "213210005", + "display": "Postoperative cerebrospinal fluid leak (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "230744007", + "display": "Cerebrospinal fluid leak (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "232280003", + "display": "Post-traumatic cerebrospinal otorrhea (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "232281004", + "display": "Postoperative cerebrospinal otorrhea (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "427758000", + "display": "Cerebrospinal fluid leak from mouth (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "429759002", + "display": "Cerebrospinal fluid leak from nose and mouth (disorder)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1448" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1230.12", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1230.12", + "status": "active", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.3.16AB", + "concept": [ + { + "code": "RT" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1230.12" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1042", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1042", + "status": "active", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/Coding/ICD10/index.html", + "version": "2017.1.16AA", + "concept": [ + { + "code": "0HTV0ZZ" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "85.48" + }, + { + "code": "85.44" + }, + { + "code": "85.46" + }, + { + "code": "85.42" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1042" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1331.6", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1331.6", + "status": "active", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2017.1.16AA", + "concept": [ + { + "code": "Z90.13" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1331.6" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1401", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1401", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "44249-1", + "display": "PHQ-9 quick depression assessment panel [Reported.PHQ]" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "44261-6", + "display": "Patient Health Questionnaire 9 item (PHQ-9) total score [Reported]" + } + ] + }, + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "54635-8", + "display": "Resident mood interview (PHQ-9) [Reported PHQ-9 CMS]" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1401" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1325", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1325", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30230AZ", + "display": "[30230AZ] Transfusion of Embryonic Stem Cells into Peripheral Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30230G0", + "display": "[30230G0] Transfusion of Autologous Bone Marrow into Peripheral Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30230G1", + "display": "[30230G1] Transfusion of Nonautologous Bone Marrow into Peripheral Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30230G2", + "display": "[30230G2] Transfusion of Allogeneic Related Bone Marrow into Peripheral Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30230G3", + "display": "[30230G3] Transfusion of Allogeneic Unrelated Bone Marrow into Peripheral Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30230G4", + "display": "[30230G4] Transfusion of Allogeneic Unspecified Bone Marrow into Peripheral Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30230X0", + "display": "[30230X0] Transfusion of Autologous Cord Blood Stem Cells into Peripheral Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30230X1", + "display": "[30230X1] Transfusion of Nonautologous Cord Blood Stem Cells into Peripheral Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30230X2", + "display": "[30230X2] Transfusion of Allogeneic Related Cord Blood Stem Cells into Peripheral Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30230X3", + "display": "[30230X3] Transfusion of Allogeneic Unrelated Cord Blood Stem Cells into Peripheral Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30230X4", + "display": "[30230X4] Transfusion of Allogeneic Unspecified Cord Blood Stem Cells into Peripheral Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30230Y0", + "display": "[30230Y0] Transfusion of Autologous Hematopoietic Stem Cells into Peripheral Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30230Y1", + "display": "[30230Y1] Transfusion of Nonautologous Hematopoietic Stem Cells into Peripheral Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30230Y2", + "display": "[30230Y2] Transfusion of Allogeneic Related Hematopoietic Stem Cells into Peripheral Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30230Y3", + "display": "[30230Y3] Transfusion of Allogeneic Unrelated Hematopoietic Stem Cells into Peripheral Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30230Y4", + "display": "[30230Y4] Transfusion of Allogeneic Unspecified Hematopoietic Stem Cells into Peripheral Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30233AZ", + "display": "[30233AZ] Transfusion of Embryonic Stem Cells into Peripheral Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30233G0", + "display": "[30233G0] Transfusion of Autologous Bone Marrow into Peripheral Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30233G1", + "display": "[30233G1] Transfusion of Nonautologous Bone Marrow into Peripheral Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30233G2", + "display": "[30233G2] Transfusion of Allogeneic Related Bone Marrow into Peripheral Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30233G3", + "display": "[30233G3] Transfusion of Allogeneic Unrelated Bone Marrow into Peripheral Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30233G4", + "display": "[30233G4] Transfusion of Allogeneic Unspecified Bone Marrow into Peripheral Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30233X0", + "display": "[30233X0] Transfusion of Autologous Cord Blood Stem Cells into Peripheral Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30233X1", + "display": "[30233X1] Transfusion of Nonautologous Cord Blood Stem Cells into Peripheral Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30233X2", + "display": "[30233X2] Transfusion of Allogeneic Related Cord Blood Stem Cells into Peripheral Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30233X3", + "display": "[30233X3] Transfusion of Allogeneic Unrelated Cord Blood Stem Cells into Peripheral Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30233X4", + "display": "[30233X4] Transfusion of Allogeneic Unspecified Cord Blood Stem Cells into Peripheral Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30233Y0", + "display": "[30233Y0] Transfusion of Autologous Hematopoietic Stem Cells into Peripheral Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30233Y1", + "display": "[30233Y1] Transfusion of Nonautologous Hematopoietic Stem Cells into Peripheral Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30233Y2", + "display": "[30233Y2] Transfusion of Allogeneic Related Hematopoietic Stem Cells into Peripheral Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30233Y3", + "display": "[30233Y3] Transfusion of Allogeneic Unrelated Hematopoietic Stem Cells into Peripheral Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30233Y4", + "display": "[30233Y4] Transfusion of Allogeneic Unspecified Hematopoietic Stem Cells into Peripheral Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30240AZ", + "display": "[30240AZ] Transfusion of Embryonic Stem Cells into Central Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30240G0", + "display": "[30240G0] Transfusion of Autologous Bone Marrow into Central Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30240G1", + "display": "[30240G1] Transfusion of Nonautologous Bone Marrow into Central Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30240G2", + "display": "[30240G2] Transfusion of Allogeneic Related Bone Marrow into Central Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30240G3", + "display": "[30240G3] Transfusion of Allogeneic Unrelated Bone Marrow into Central Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30240G4", + "display": "[30240G4] Transfusion of Allogeneic Unspecified Bone Marrow into Central Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30240X0", + "display": "[30240X0] Transfusion of Autologous Cord Blood Stem Cells into Central Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30240X1", + "display": "[30240X1] Transfusion of Nonautologous Cord Blood Stem Cells into Central Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30240X2", + "display": "[30240X2] Transfusion of Allogeneic Related Cord Blood Stem Cells into Central Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30240X3", + "display": "[30240X3] Transfusion of Allogeneic Unrelated Cord Blood Stem Cells into Central Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30240X4", + "display": "[30240X4] Transfusion of Allogeneic Unspecified Cord Blood Stem Cells into Central Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30240Y0", + "display": "[30240Y0] Transfusion of Autologous Hematopoietic Stem Cells into Central Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30240Y1", + "display": "[30240Y1] Transfusion of Nonautologous Hematopoietic Stem Cells into Central Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30240Y2", + "display": "[30240Y2] Transfusion of Allogeneic Related Hematopoietic Stem Cells into Central Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30240Y3", + "display": "[30240Y3] Transfusion of Allogeneic Unrelated Hematopoietic Stem Cells into Central Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30240Y4", + "display": "[30240Y4] Transfusion of Allogeneic Unspecified Hematopoietic Stem Cells into Central Vein, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30243AZ", + "display": "[30243AZ] Transfusion of Embryonic Stem Cells into Central Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30243G0", + "display": "[30243G0] Transfusion of Autologous Bone Marrow into Central Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30243G1", + "display": "[30243G1] Transfusion of Nonautologous Bone Marrow into Central Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30243G2", + "display": "[30243G2] Transfusion of Allogeneic Related Bone Marrow into Central Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30243G3", + "display": "[30243G3] Transfusion of Allogeneic Unrelated Bone Marrow into Central Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30243G4", + "display": "[30243G4] Transfusion of Allogeneic Unspecified Bone Marrow into Central Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30243X0", + "display": "[30243X0] Transfusion of Autologous Cord Blood Stem Cells into Central Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30243X1", + "display": "[30243X1] Transfusion of Nonautologous Cord Blood Stem Cells into Central Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30243X2", + "display": "[30243X2] Transfusion of Allogeneic Related Cord Blood Stem Cells into Central Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30243X3", + "display": "[30243X3] Transfusion of Allogeneic Unrelated Cord Blood Stem Cells into Central Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30243X4", + "display": "[30243X4] Transfusion of Allogeneic Unspecified Cord Blood Stem Cells into Central Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30243Y0", + "display": "[30243Y0] Transfusion of Autologous Hematopoietic Stem Cells into Central Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30243Y1", + "display": "[30243Y1] Transfusion of Nonautologous Hematopoietic Stem Cells into Central Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30243Y2", + "display": "[30243Y2] Transfusion of Allogeneic Related Hematopoietic Stem Cells into Central Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30243Y3", + "display": "[30243Y3] Transfusion of Allogeneic Unrelated Hematopoietic Stem Cells into Central Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30243Y4", + "display": "[30243Y4] Transfusion of Allogeneic Unspecified Hematopoietic Stem Cells into Central Vein, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30250G0", + "display": "[30250G0] Transfusion of Autologous Bone Marrow into Peripheral Artery, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30250G1", + "display": "[30250G1] Transfusion of Nonautologous Bone Marrow into Peripheral Artery, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30250X0", + "display": "[30250X0] Transfusion of Autologous Cord Blood Stem Cells into Peripheral Artery, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30250X1", + "display": "[30250X1] Transfusion of Nonautologous Cord Blood Stem Cells into Peripheral Artery, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30250Y0", + "display": "[30250Y0] Transfusion of Autologous Hematopoietic Stem Cells into Peripheral Artery, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30250Y1", + "display": "[30250Y1] Transfusion of Nonautologous Hematopoietic Stem Cells into Peripheral Artery, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30253G0", + "display": "[30253G0] Transfusion of Autologous Bone Marrow into Peripheral Artery, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30253G1", + "display": "[30253G1] Transfusion of Nonautologous Bone Marrow into Peripheral Artery, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30253X0", + "display": "[30253X0] Transfusion of Autologous Cord Blood Stem Cells into Peripheral Artery, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30253X1", + "display": "[30253X1] Transfusion of Nonautologous Cord Blood Stem Cells into Peripheral Artery, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30253Y0", + "display": "[30253Y0] Transfusion of Autologous Hematopoietic Stem Cells into Peripheral Artery, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30253Y1", + "display": "[30253Y1] Transfusion of Nonautologous Hematopoietic Stem Cells into Peripheral Artery, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30260G0", + "display": "[30260G0] Transfusion of Autologous Bone Marrow into Central Artery, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30260G1", + "display": "[30260G1] Transfusion of Nonautologous Bone Marrow into Central Artery, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30260X0", + "display": "[30260X0] Transfusion of Autologous Cord Blood Stem Cells into Central Artery, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30260X1", + "display": "[30260X1] Transfusion of Nonautologous Cord Blood Stem Cells into Central Artery, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30260Y0", + "display": "[30260Y0] Transfusion of Autologous Hematopoietic Stem Cells into Central Artery, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30260Y1", + "display": "[30260Y1] Transfusion of Nonautologous Hematopoietic Stem Cells into Central Artery, Open Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30263G0", + "display": "[30263G0] Transfusion of Autologous Bone Marrow into Central Artery, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30263G1", + "display": "[30263G1] Transfusion of Nonautologous Bone Marrow into Central Artery, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30263X0", + "display": "[30263X0] Transfusion of Autologous Cord Blood Stem Cells into Central Artery, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30263X1", + "display": "[30263X1] Transfusion of Nonautologous Cord Blood Stem Cells into Central Artery, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30263Y0", + "display": "[30263Y0] Transfusion of Autologous Hematopoietic Stem Cells into Central Artery, Percutaneous Approach" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "30263Y1", + "display": "[30263Y1] Transfusion of Nonautologous Hematopoietic Stem Cells into Central Artery, Percutaneous Approach" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1325" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1168", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1168", + "status": "active", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.3.16AB", + "concept": [ + { + "code": "77066" + }, + { + "code": "77065" + }, + { + "code": "77062" + }, + { + "code": "77061" + }, + { + "code": "77056" + }, + { + "code": "77055" + }, + { + "code": "77063" + }, + { + "code": "77057" + }, + { + "code": "77067" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.5.17AA", + "concept": [ + { + "code": "G0202" + }, + { + "code": "G0204" + }, + { + "code": "G0206" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "87.37" + }, + { + "code": "87.36" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/CMS-Forms/CMS-Forms/CMS-Forms-Items/CMS1196256.html/fl42", + "version": "2012.05", + "concept": [ + { + "code": "0403" + }, + { + "code": "0401" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1168" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1441", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1441", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96401", + "display": "CHEMO ANTI-NEOPL SQ/IM" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96402", + "display": "CHEMO HORMON ANTINEOPL SQ/IM" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96405", + "display": "CHEMO INTRALESIONAL UP TO 7" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96406", + "display": "CHEMO INTRALESIONAL OVER 7" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96409", + "display": "CHEMO IV PUSH SNGL DRUG" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96411", + "display": "CHEMO IV PUSH ADDL DRUG" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96413", + "display": "CHEMO IV INFUSION 1 HR" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96415", + "display": "CHEMO IV INFUSION ADDL HR" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96416", + "display": "CHEMO PROLONG INFUSE W/PUMP" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96417", + "display": "CHEMO IV INFUS EACH ADDL SEQ" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96420", + "display": "CHEMO IA PUSH TECNIQUE" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96422", + "display": "CHEMO IA INFUSION UP TO 1 HR" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96423", + "display": "CHEMO IA INFUSE EACH ADDL HR" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96425", + "display": "CHEMOTHERAPY INFUSION METHOD" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96440", + "display": "CHEMOTHERAPY INTRACAVITARY" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96450", + "display": "CHEMOTHERAPY INTO CNS" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96521", + "display": "REFILL/MAINT PORTABLE PUMP" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96522", + "display": "REFILL/MAINT PUMP/RESVR SYST" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96523", + "display": "IRRIG DRUG DELIVERY DEVICE" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96542", + "display": "CHEMOTHERAPY INJECTION" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "96549", + "display": "CHEMOTHERAPY UNSPECIFIED" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "4114003", + "display": "Parenteral chemotherapy for malignant neoplasm (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "6872008", + "display": "Perfusion chemotherapy for malignant neoplasm (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "12149006", + "display": "Chemotherapy administration, subcutaneous, with local anesthesia (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "22733003", + "display": "Chemotherapy for non-malignant neoplasm (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "29391003", + "display": "Chemotherapy administration into peritoneal cavity requiring paracentesis (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "31652009", + "display": "Intracavitary chemotherapy for malignant neoplasm (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "38216008", + "display": "Infusion chemotherapy for malignant neoplasm (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "51534007", + "display": "Oral chemotherapy for malignant neoplasm (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "77738002", + "display": "Local chemotherapy for malignant neoplasm (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "86036005", + "display": "Intravenous chemotherapy administration by push technique (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "265760000", + "display": "Intravenous chemotherapy (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "265761001", + "display": "Intramuscular chemotherapy (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "265762008", + "display": "Subcutaneous chemotherapy (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "266719004", + "display": "Oral chemotherapy (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "309698005", + "display": "Continuous infusion of chemotherapy (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "315601005", + "display": "Ambulatory chemotherapy (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "367336001", + "display": "Chemotherapy (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "394894008", + "display": "Pre-operative chemotherapy (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "394895009", + "display": "Postoperative chemotherapy (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "394935005", + "display": "Combined post-operative chemotherapy and radiotherapy (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "399042005", + "display": "Chemotherapy cycle (procedure)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1441" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1442", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1442", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "19944001", + "display": "Autologous bone marrow transplant without purging (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "23719005", + "display": "Transplantation of bone marrow (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "46280001", + "display": "Autologous bone marrow transplant with purging (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "58390007", + "display": "Allogeneic bone marrow transplantation (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "58776007", + "display": "Autologous bone marrow transplant (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "234331007", + "display": "Syngeneic bone marrow transplant (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "234332000", + "display": "T-cell depleted allogeneic bone marrow graft (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "234333005", + "display": "Imperfect T-cell depleted allogeneic bone marrow graft (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "234334004", + "display": "Allogeneic related bone marrow transplant (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "234335003", + "display": "Allogeneic unrelated bone marrow transplant (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "234336002", + "display": "Hemopoietic stem cell transplant (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "426425001", + "display": "Allograft of bone marrow from sibling donor (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "427423003", + "display": "Allograft of bone marrow from matched unrelated donor (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "442557006", + "display": "Grafting of bone marrow using allograft from unmatched unrelated donor (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "445757003", + "display": "Allogeneic bone marrow transplantation without purging (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "446253009", + "display": "Allogeneic bone marrow transplantation with purging (procedure)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1442" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1168.9", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1168.9", + "status": "active", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.5.17AA", + "concept": [ + { + "code": "G0202" + }, + { + "code": "G0204" + }, + { + "code": "G0206" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1168.9" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1044", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1044", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.10", + "display": "[F30.10] Manic episode without psychotic symptoms, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.11", + "display": "[F30.11] Manic episode without psychotic symptoms, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.12", + "display": "[F30.12] Manic episode without psychotic symptoms, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.13", + "display": "[F30.13] Manic episode, severe, without psychotic symptoms" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.2", + "display": "[F30.2] Manic episode, severe with psychotic symptoms" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.3", + "display": "[F30.3] Manic episode in partial remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.4", + "display": "[F30.4] Manic episode in full remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.8", + "display": "[F30.8] Other manic episodes" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F30.9", + "display": "[F30.9] Manic episode, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.0", + "display": "[F31.0] Bipolar disorder, current episode hypomanic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.10", + "display": "[F31.10] Bipolar disorder, current episode manic without psychotic features, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.11", + "display": "[F31.11] Bipolar disorder, current episode manic without psychotic features, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.12", + "display": "[F31.12] Bipolar disorder, current episode manic without psychotic features, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.13", + "display": "[F31.13] Bipolar disorder, current episode manic without psychotic features, severe" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.2", + "display": "[F31.2] Bipolar disorder, current episode manic severe with psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.30", + "display": "[F31.30] Bipolar disorder, current episode depressed, mild or moderate severity, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.31", + "display": "[F31.31] Bipolar disorder, current episode depressed, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.32", + "display": "[F31.32] Bipolar disorder, current episode depressed, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.4", + "display": "[F31.4] Bipolar disorder, current episode depressed, severe, without psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.5", + "display": "[F31.5] Bipolar disorder, current episode depressed, severe, with psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.60", + "display": "[F31.60] Bipolar disorder, current episode mixed, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.61", + "display": "[F31.61] Bipolar disorder, current episode mixed, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.62", + "display": "[F31.62] Bipolar disorder, current episode mixed, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.63", + "display": "[F31.63] Bipolar disorder, current episode mixed, severe, without psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.64", + "display": "[F31.64] Bipolar disorder, current episode mixed, severe, with psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.70", + "display": "[F31.70] Bipolar disorder, currently in remission, most recent episode unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.71", + "display": "[F31.71] Bipolar disorder, in partial remission, most recent episode hypomanic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.72", + "display": "[F31.72] Bipolar disorder, in full remission, most recent episode hypomanic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.73", + "display": "[F31.73] Bipolar disorder, in partial remission, most recent episode manic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.74", + "display": "[F31.74] Bipolar disorder, in full remission, most recent episode manic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.75", + "display": "[F31.75] Bipolar disorder, in partial remission, most recent episode depressed" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.76", + "display": "[F31.76] Bipolar disorder, in full remission, most recent episode depressed" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.77", + "display": "[F31.77] Bipolar disorder, in partial remission, most recent episode mixed" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.78", + "display": "[F31.78] Bipolar disorder, in full remission, most recent episode mixed" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.00", + "display": "Bipolar I disorder, single manic episode, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.01", + "display": "Bipolar I disorder, single manic episode, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.02", + "display": "Bipolar I disorder, single manic episode, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.03", + "display": "Bipolar I disorder, single manic episode, severe, without mention of psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.04", + "display": "Bipolar I disorder, single manic episode, severe, specified as with psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.05", + "display": "Bipolar I disorder, single manic episode, in partial or unspecified remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.06", + "display": "Bipolar I disorder, single manic episode, in full remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.10", + "display": "Manic affective disorder, recurrent episode, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.11", + "display": "Manic affective disorder, recurrent episode, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.12", + "display": "Manic affective disorder, recurrent episode, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.13", + "display": "Manic affective disorder, recurrent episode, severe, without mention of psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.14", + "display": "Manic affective disorder, recurrent episode, severe, specified as with psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.15", + "display": "Manic affective disorder, recurrent episode, in partial or unspecified remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.16", + "display": "Manic affective disorder, recurrent episode, in full remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.40", + "display": "Bipolar I disorder, most recent episode (or current) manic, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.41", + "display": "Bipolar I disorder, most recent episode (or current) manic, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.42", + "display": "Bipolar I disorder, most recent episode (or current) manic, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.43", + "display": "Bipolar I disorder, most recent episode (or current) manic, severe, without mention of psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.44", + "display": "Bipolar I disorder, most recent episode (or current) manic, severe, specified as with psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.45", + "display": "Bipolar I disorder, most recent episode (or current) manic, in partial or unspecified remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.46", + "display": "Bipolar I disorder, most recent episode (or current) manic, in full remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.50", + "display": "Bipolar I disorder, most recent episode (or current) depressed, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.51", + "display": "Bipolar I disorder, most recent episode (or current) depressed, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.52", + "display": "Bipolar I disorder, most recent episode (or current) depressed, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.53", + "display": "Bipolar I disorder, most recent episode (or current) depressed, severe, without mention of psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.54", + "display": "Bipolar I disorder, most recent episode (or current) depressed, severe, specified as with psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.55", + "display": "Bipolar I disorder, most recent episode (or current) depressed, in partial or unspecified remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.56", + "display": "Bipolar I disorder, most recent episode (or current) depressed, in full remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.60", + "display": "Bipolar I disorder, most recent episode (or current) mixed, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.61", + "display": "Bipolar I disorder, most recent episode (or current) mixed, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.62", + "display": "Bipolar I disorder, most recent episode (or current) mixed, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.63", + "display": "Bipolar I disorder, most recent episode (or current) mixed, severe, without mention of psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.64", + "display": "Bipolar I disorder, most recent episode (or current) mixed, severe, specified as with psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.65", + "display": "Bipolar I disorder, most recent episode (or current) mixed, in partial or unspecified remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.66", + "display": "Bipolar I disorder, most recent episode (or current) mixed, in full remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.7", + "display": "Bipolar I disorder, most recent episode (or current) unspecified" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1044" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1168.8", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1168.8", + "status": "active", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.3.16AB", + "concept": [ + { + "code": "77066" + }, + { + "code": "77065" + }, + { + "code": "77062" + }, + { + "code": "77061" + }, + { + "code": "77056" + }, + { + "code": "77055" + }, + { + "code": "77063" + }, + { + "code": "77057" + }, + { + "code": "77067" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1168.8" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1440", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1440", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90732", + "display": "PPSV23 VACC 2 YRS+ SUBQ/IM" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/cvx", + "version": "2016.10.18", + "concept": [ + { + "code": "33", + "display": "pneumococcal polysaccharide vaccine, 23 valent" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1440" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1064.29", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1064.29", + "status": "active", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.3.16AB", + "concept": [ + { + "code": "44388" + }, + { + "code": "44393" + }, + { + "code": "44389" + }, + { + "code": "44391" + }, + { + "code": "44390" + }, + { + "code": "44392" + }, + { + "code": "44394" + }, + { + "code": "44397" + }, + { + "code": "45378" + }, + { + "code": "44383" + }, + { + "code": "45380" + }, + { + "code": "45382" + }, + { + "code": "45386" + }, + { + "code": "45381" + }, + { + "code": "45391" + }, + { + "code": "45379" + }, + { + "code": "45384" + }, + { + "code": "45385" + }, + { + "code": "44387" + }, + { + "code": "44392" + }, + { + "code": "45355" + }, + { + "code": "44401" + }, + { + "code": "44402" + }, + { + "code": "44403" + }, + { + "code": "44404" + }, + { + "code": "44405" + }, + { + "code": "44406" + }, + { + "code": "44407" + }, + { + "code": "44408" + }, + { + "code": "45388" + }, + { + "code": "45389" + }, + { + "code": "45390" + }, + { + "code": "45393" + }, + { + "code": "45398" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1064.29" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1439", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1439", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "90670", + "display": "PCV13 VACCINE IM" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/cvx", + "version": "2016.10.18", + "concept": [ + { + "code": "133", + "display": "pneumococcal conjugate vaccine, 13 valent" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "448964007", + "display": "Pneumococcal 13-valent conjugate vaccine (product)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1439" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1437", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1437", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99408", + "display": "AUDIT/DAST 15-30 MIN" + } + ] + }, + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.4.17AA", + "concept": [ + { + "code": "99409", + "display": "AUDIT/DAST OVER 30 MIN" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0396", + "display": "Alcohol and/or substance (other than tobacco) abuse structured assessment (e.g., audit, dast), and brief intervention 15 to 30 minutes (G0396)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0397", + "display": "Alcohol and/or substance (other than tobacco) abuse structured assessment (e.g., audit, dast), and intervention, greater than 30 minutes (G0397)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "G0443", + "display": "Brief face-to-face behavioral counseling for alcohol misuse, 15 minutes (G0443)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0005", + "display": "Alcohol and/or drug services; group counseling by a clinician (H0005)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0007", + "display": "Alcohol and/or drug services; crisis intervention (outpatient) (H0007)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0015", + "display": "Alcohol and/or drug services; intensive outpatient (treatment program that operates at least 3 hours/day and at least 3 days/week and is based on an individualized treatment plan), including assessment, counseling; crisis intervention, and activity therapies or education (H0015)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0016", + "display": "Alcohol and/or drug services; medical/somatic (medical intervention in ambulatory setting) (H0016)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0022", + "display": "Alcohol and/or drug intervention service (planned facilitation) (H0022)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H0050", + "display": "Alcohol and/or drug services, brief intervention, per 15 minutes (H0050)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2035", + "display": "Alcohol and/or other drug treatment program, per hour (H2035)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "H2036", + "display": "Alcohol and/or other drug treatment program, per diem (H2036)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "T1006", + "display": "Alcohol and/or substance abuse services, family/couple counseling (T1006)" + } + ] + }, + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.3.17AA", + "concept": [ + { + "code": "T1012", + "display": "Alcohol and/or substance abuse services, skills development (T1012)" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "Z71.41", + "display": "[Z71.41] Alcohol abuse counseling and surveillance of alcoholic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "Z71.89", + "display": "[Z71.89] Other specified counseling" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "20093000", + "display": "Alcohol rehabilitation and detoxification (regime/therapy)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "23915005", + "display": "Combined alcohol and drug rehabilitation and detoxification (regime/therapy)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "24165007", + "display": "Alcoholism counseling (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "64297001", + "display": "Detoxication psychiatric therapy for alcoholism (regime/therapy)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "386449006", + "display": "Substance use treatment: alcohol withdrawal (regime/therapy)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "408945004", + "display": "Alcohol abuse prevention (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "408947007", + "display": "Alcohol abuse prevention education (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "408948002", + "display": "Alcohol abuse prevention management (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "413473000", + "display": "Counseling about alcohol consumption (procedure)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "707166002", + "display": "Alcohol reduction program (regime/therapy)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "429291000124102", + "display": "Alcohol brief intervention (procedure)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1437" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1065.32", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1065.32", + "status": "active", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2017.1.16AA", + "concept": [ + { + "code": "Z90.12" + }, + { + "code": "C18.0" + }, + { + "code": "C18.1" + }, + { + "code": "C18.2" + }, + { + "code": "C18.3" + }, + { + "code": "C18.4" + }, + { + "code": "C18.5" + }, + { + "code": "C18.6" + }, + { + "code": "C18.7" + }, + { + "code": "C18.8" + }, + { + "code": "C18.9" + }, + { + "code": "C19" + }, + { + "code": "C20" + }, + { + "code": "C21.2" + }, + { + "code": "C21.8" + }, + { + "code": "C78.5" + }, + { + "code": "Z85.038" + }, + { + "code": "Z85.048" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1065.32" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1065.33", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1065.33", + "status": "active", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "153.0" + }, + { + "code": "153.1" + }, + { + "code": "153.2" + }, + { + "code": "153.3" + }, + { + "code": "153.4" + }, + { + "code": "153.5" + }, + { + "code": "153.6" + }, + { + "code": "153.7" + }, + { + "code": "153.8" + }, + { + "code": "153.9" + }, + { + "code": "154.0" + }, + { + "code": "154.1" + }, + { + "code": "197.5" + }, + { + "code": "V10.05" + }, + { + "code": "V10.06" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1065.33" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1074", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1074", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F01.50", + "display": "[F01.50] Vascular dementia without behavioral disturbance" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F01.51", + "display": "[F01.51] Vascular dementia with behavioral disturbance" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F02.80", + "display": "[F02.80] Dementia in other diseases classified elsewhere without behavioral disturbance" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F02.81", + "display": "[F02.81] Dementia in other diseases classified elsewhere with behavioral disturbance" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F03.90", + "display": "[F03.90] Unspecified dementia without behavioral disturbance" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F03.91", + "display": "[F03.91] Unspecified dementia with behavioral disturbance" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F04", + "display": "[F04] Amnestic disorder due to known physiological condition" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.27", + "display": "[F10.27] Alcohol dependence with alcohol-induced persisting dementia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F10.97", + "display": "[F10.97] Alcohol use, unspecified with alcohol-induced persisting dementia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F13.27", + "display": "[F13.27] Sedative, hypnotic or anxiolytic dependence with sedative, hypnotic or anxiolytic-induced persisting dementia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F13.97", + "display": "[F13.97] Sedative, hypnotic or anxiolytic use, unspecified with sedative, hypnotic or anxiolytic-induced persisting dementia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F18.17", + "display": "[F18.17] Inhalant abuse with inhalant-induced dementia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F18.27", + "display": "[F18.27] Inhalant dependence with inhalant-induced dementia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F18.97", + "display": "[F18.97] Inhalant use, unspecified with inhalant-induced persisting dementia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F19.17", + "display": "[F19.17] Other psychoactive substance abuse with psychoactive substance-induced persisting dementia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F19.27", + "display": "[F19.27] Other psychoactive substance dependence with psychoactive substance-induced persisting dementia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F19.97", + "display": "[F19.97] Other psychoactive substance use, unspecified with psychoactive substance-induced persisting dementia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "G30.0", + "display": "[G30.0] Alzheimer's disease with early onset" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "G30.1", + "display": "[G30.1] Alzheimer's disease with late onset" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "G30.8", + "display": "[G30.8] Other Alzheimer's disease" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "G30.9", + "display": "[G30.9] Alzheimer's disease, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "G31.83", + "display": "[G31.83] Dementia with Lewy bodies" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "290.0", + "display": "Senile dementia, uncomplicated" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "290.10", + "display": "Presenile dementia, uncomplicated" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "290.11", + "display": "Presenile dementia with delirium" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "290.12", + "display": "Presenile dementia with delusional features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "290.13", + "display": "Presenile dementia with depressive features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "290.20", + "display": "Senile dementia with delusional features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "290.21", + "display": "Senile dementia with depressive features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "290.3", + "display": "Senile dementia with delirium" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "290.40", + "display": "Vascular dementia, uncomplicated" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "290.41", + "display": "Vascular dementia, with delirium" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "290.42", + "display": "Vascular dementia, with delusions" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "290.43", + "display": "Vascular dementia, with depressed mood" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "290.8", + "display": "Other specified senile psychotic conditions" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "290.9", + "display": "Unspecified senile psychotic condition" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "291.2", + "display": "Alcohol-induced persisting dementia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "292.82", + "display": "Drug-induced persisting dementia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "294.0", + "display": "Amnestic disorder in conditions classified elsewhere" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "294.10", + "display": "Dementia in conditions classified elsewhere without behavioral disturbance" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "294.11", + "display": "Dementia in conditions classified elsewhere with behavioral disturbance" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "294.20", + "display": "Dementia, unspecified, without behavioral disturbance" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "294.21", + "display": "Dementia, unspecified, with behavioral disturbance" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "331.0", + "display": "Alzheimer's disease" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "331.82", + "display": "Dementia with lewy bodies" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1074" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1390", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1390", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F01.51", + "display": "[F01.51] Vascular dementia with behavioral disturbance" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.0", + "display": "[F32.0] Major depressive disorder, single episode, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.1", + "display": "[F32.1] Major depressive disorder, single episode, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.2", + "display": "[F32.2] Major depressive disorder, single episode, severe without psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.3", + "display": "[F32.3] Major depressive disorder, single episode, severe with psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.4", + "display": "[F32.4] Major depressive disorder, single episode, in partial remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.5", + "display": "[F32.5] Major depressive disorder, single episode, in full remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.81", + "display": "[F32.81] Premenstrual dysphoric disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.89", + "display": "[F32.89] Other specified depressive episodes" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.9", + "display": "[F32.9] Major depressive disorder, single episode, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.0", + "display": "[F33.0] Major depressive disorder, recurrent, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.1", + "display": "[F33.1] Major depressive disorder, recurrent, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.2", + "display": "[F33.2] Major depressive disorder, recurrent severe without psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.3", + "display": "[F33.3] Major depressive disorder, recurrent, severe with psychotic symptoms" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.42", + "display": "[F33.42] Major depressive disorder, recurrent, in full remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.9", + "display": "[F33.9] Major depressive disorder, recurrent, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F34.1", + "display": "[F34.1] Dysthymic disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F43.21", + "display": "[F43.21] Adjustment disorder with depressed mood" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F43.23", + "display": "[F43.23] Adjustment disorder with mixed anxiety and depressed mood" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "290.13", + "display": "Presenile dementia with depressive features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "290.21", + "display": "Senile dementia with depressive features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "290.43", + "display": "Vascular dementia, with depressed mood" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.21", + "display": "Major depressive affective disorder, single episode, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.22", + "display": "Major depressive affective disorder, single episode, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.23", + "display": "Major depressive affective disorder, single episode, severe, without mention of psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.24", + "display": "Major depressive affective disorder, single episode, severe, specified as with psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.25", + "display": "Major depressive affective disorder, single episode, in partial or unspecified remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.26", + "display": "Major depressive affective disorder, single episode, in full remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.31", + "display": "Major depressive affective disorder, recurrent episode, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.32", + "display": "Major depressive affective disorder, recurrent episode, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.33", + "display": "Major depressive affective disorder, recurrent episode, severe, without mention of psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.34", + "display": "Major depressive affective disorder, recurrent episode, severe, specified as with psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.36", + "display": "Major depressive affective disorder, recurrent episode, in full remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.82", + "display": "Atypical depressive disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "298.0", + "display": "Depressive type psychosis" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "300.4", + "display": "Dysthymic disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "301.12", + "display": "Chronic depressive personality disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "309.0", + "display": "Adjustment disorder with depressed mood" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "309.1", + "display": "Prolonged depressive reaction" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "309.28", + "display": "Adjustment disorder with mixed anxiety and depressed mood" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "311", + "display": "Depressive disorder, not elsewhere classified" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "832007", + "display": "Moderate major depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "2506003", + "display": "Early onset dysthymia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "2618002", + "display": "Chronic recurrent major depressive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "3109008", + "display": "Secondary dysthymia early onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "14183003", + "display": "Chronic major depressive disorder, single episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "15193003", + "display": "Severe recurrent major depression with psychotic features, mood-incongruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "15639000", + "display": "Moderate major depression, single episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "18818009", + "display": "Moderate recurrent major depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "19527009", + "display": "Single episode of major depression in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "19694002", + "display": "Late onset dysthymia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "20250007", + "display": "Severe major depression, single episode, with psychotic features, mood-incongruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "25922000", + "display": "Major depressive disorder, single episode with postpartum onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "28475009", + "display": "Severe recurrent major depression with psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "33078009", + "display": "Severe recurrent major depression with psychotic features, mood-congruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "35489007", + "display": "Depressive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "36170009", + "display": "Secondary dysthymia late onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "36474008", + "display": "Severe recurrent major depression without psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "36923009", + "display": "Major depression, single episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "38451003", + "display": "Primary dysthymia early onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "38694004", + "display": "Recurrent major depressive disorder with atypical features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "39809009", + "display": "Recurrent major depressive disorder with catatonic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "40379007", + "display": "Mild recurrent major depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "40568001", + "display": "Recurrent brief depressive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "42925002", + "display": "Major depressive disorder, single episode with atypical features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "48589009", + "display": "Minor depressive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "63778009", + "display": "Major depressive disorder, single episode with melancholic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "66344007", + "display": "Recurrent major depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "67711008", + "display": "Primary dysthymia late onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "69392006", + "display": "Major depressive disorder, single episode with catatonic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "71336009", + "display": "Recurrent major depressive disorder with postpartum onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "73867007", + "display": "Severe major depression with psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "75084000", + "display": "Severe major depression without psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "75837004", + "display": "Mood disorder with depressive features due to general medical condition (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "76441001", + "display": "Severe major depression, single episode, without psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "77486005", + "display": "Mood disorder with major depressive-like episode due to general medical condition (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "77911002", + "display": "Severe major depression, single episode, with psychotic features, mood-congruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "78667006", + "display": "Dysthymia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "79298009", + "display": "Mild major depression, single episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "81319007", + "display": "Severe bipolar II disorder, most recent episode major depressive without psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "83176005", + "display": "Primary dysthymia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "84760002", + "display": "Schizoaffective disorder, depressive type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "85080004", + "display": "Secondary dysthymia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "87512008", + "display": "Mild major depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191610000", + "display": "Recurrent major depressive episodes, mild (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191611001", + "display": "Recurrent major depressive episodes, moderate (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191613003", + "display": "Recurrent major depressive episodes, severe, with psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191616006", + "display": "Recurrent depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191659001", + "display": "Atypical depressive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "192080009", + "display": "Chronic depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231504006", + "display": "Mixed anxiety and depressive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231542000", + "display": "Depressive conduct disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268621008", + "display": "Recurrent major depressive episodes (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "319768000", + "display": "Recurrent major depressive disorder with melancholic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "320751009", + "display": "Major depression, melancholic type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "370143000", + "display": "Major depressive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "430852001", + "display": "Severe major depression, single episode, with psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "442057004", + "display": "Chronic depressive personality disorder (disorder)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1390" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1329.1", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1329.1", + "status": "active", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2017.1.16AA", + "concept": [ + { + "code": "Z90.12" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1329.1" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1043.5", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1043.5", + "status": "active", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.3.16AB", + "concept": [ + { + "code": "50" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1043.5" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1399", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1399", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.81", + "display": "[F31.81] Bipolar II disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.89", + "display": "[F31.89] Other bipolar disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F31.9", + "display": "[F31.9] Bipolar disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.80", + "display": "Bipolar disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.81", + "display": "Atypical manic disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.82", + "display": "Atypical depressive disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.89", + "display": "Other bipolar disorders" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1399" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1355", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1355", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F34.0", + "display": "[F34.0] Cyclothymic disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F60.3", + "display": "[F60.3] Borderline personality disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F60.4", + "display": "[F60.4] Histrionic personality disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F68.10", + "display": "[F68.10] Factitious disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F68.11", + "display": "[F68.11] Factitious disorder with predominantly psychological signs and symptoms" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F68.12", + "display": "[F68.12] Factitious disorder with predominantly physical signs and symptoms" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F68.13", + "display": "[F68.13] Factitious disorder with combined psychological and physical signs and symptoms" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "301.10", + "display": "Affective personality disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "301.13", + "display": "Cyclothymic disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "301.3", + "display": "Explosive personality disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "301.50", + "display": "Histrionic personality disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "301.51", + "display": "Chronic factitious illness with physical symptoms" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "301.59", + "display": "Other histrionic personality disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "301.83", + "display": "Borderline personality disorder" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "20010003", + "display": "Borderline personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "55341008", + "display": "Histrionic personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191765005", + "display": "Emotionally unstable personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191766006", + "display": "Psychoinfantile personality (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191773001", + "display": "Immature personality disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231527003", + "display": "Explosive personality disorder (disorder)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1355" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1356", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1356", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F84.0", + "display": "[F84.0] Autistic disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F84.3", + "display": "[F84.3] Other childhood disintegrative disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F84.8", + "display": "[F84.8] Other pervasive developmental disorders" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F84.9", + "display": "[F84.9] Pervasive developmental disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "299.00", + "display": "Autistic disorder, current or active state" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "299.01", + "display": "Autistic disorder, residual state" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "299.10", + "display": "Childhood disintegrative disorder, current or active state" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "299.11", + "display": "Childhood disintegrative disorder, residual state" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "299.80", + "display": "Other specified pervasive developmental disorders, current or active state" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "299.81", + "display": "Other specified pervasive developmental disorders, residual state" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "299.90", + "display": "Unspecified pervasive developmental disorder, current or active state" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "299.91", + "display": "Unspecified pervasive developmental disorder, residual state" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "35919005", + "display": "Pervasive developmental disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "43614003", + "display": "Autistic disorder of childhood onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "71961003", + "display": "Childhood disintegrative disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191689008", + "display": "Active infantile autism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191690004", + "display": "Residual infantile autism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231536004", + "display": "Atypical autism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "373618009", + "display": "Autistic spectrum disorder with isolated skills (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "408856003", + "display": "Autistic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "408857007", + "display": "Infantile autism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "442314000", + "display": "Active but odd autism (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "39951000119105", + "display": "Pervasive developmental disorder of residual state (disorder)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1356" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1265.28", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1265.28", + "status": "active", + "compose": { + "include": [ + { + "system": "http://loinc.org", + "version": "2017.5.17AA", + "concept": [ + { + "code": "30167-1" + }, + { + "code": "49896-4" + }, + { + "code": "21440-3" + }, + { + "code": "38372-9" + }, + { + "code": "59420-0" + }, + { + "code": "75406-9" + }, + { + "code": "75694-0" + }, + { + "code": "69002-4" + }, + { + "code": "71431-1" + }, + { + "code": "59263-4" + }, + { + "code": "59264-2" + }, + { + "code": "77379-6" + }, + { + "code": "77399-4" + }, + { + "code": "77400-0" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1265.28" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1093.43", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1093.43", + "status": "active", + "compose": { + "include": [ + { + "system": "http://loinc.org", + "version": "2.61.17AA", + "concept": [ + { + "code": "12503-9" + }, + { + "code": "12504-7" + }, + { + "code": "14563-1" + }, + { + "code": "14564-9" + }, + { + "code": "14565-6" + }, + { + "code": "2335-8" + }, + { + "code": "27396-1" + }, + { + "code": "27401-9" + }, + { + "code": "27925-7" + }, + { + "code": "27926-5" + }, + { + "code": "29771-3" + }, + { + "code": "56490-6" + }, + { + "code": "56491-4" + }, + { + "code": "57905-2" + }, + { + "code": "58453-2" + }, + { + "code": "80372-6" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1093.43" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1351", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1351", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.0", + "display": "[F32.0] Major depressive disorder, single episode, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.1", + "display": "[F32.1] Major depressive disorder, single episode, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.2", + "display": "[F32.2] Major depressive disorder, single episode, severe without psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.3", + "display": "[F32.3] Major depressive disorder, single episode, severe with psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.4", + "display": "[F32.4] Major depressive disorder, single episode, in partial remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.5", + "display": "[F32.5] Major depressive disorder, single episode, in full remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F32.9", + "display": "[F32.9] Major depressive disorder, single episode, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.0", + "display": "[F33.0] Major depressive disorder, recurrent, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.1", + "display": "[F33.1] Major depressive disorder, recurrent, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.2", + "display": "[F33.2] Major depressive disorder, recurrent severe without psychotic features" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.3", + "display": "[F33.3] Major depressive disorder, recurrent, severe with psychotic symptoms" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.40", + "display": "[F33.40] Major depressive disorder, recurrent, in remission, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.41", + "display": "[F33.41] Major depressive disorder, recurrent, in partial remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.42", + "display": "[F33.42] Major depressive disorder, recurrent, in full remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F33.9", + "display": "[F33.9] Major depressive disorder, recurrent, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F34.1", + "display": "[F34.1] Dysthymic disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.20", + "display": "Major depressive affective disorder, single episode, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.21", + "display": "Major depressive affective disorder, single episode, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.22", + "display": "Major depressive affective disorder, single episode, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.23", + "display": "Major depressive affective disorder, single episode, severe, without mention of psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.24", + "display": "Major depressive affective disorder, single episode, severe, specified as with psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.25", + "display": "Major depressive affective disorder, single episode, in partial or unspecified remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.26", + "display": "Major depressive affective disorder, single episode, in full remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.30", + "display": "Major depressive affective disorder, recurrent episode, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.31", + "display": "Major depressive affective disorder, recurrent episode, mild" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.32", + "display": "Major depressive affective disorder, recurrent episode, moderate" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.33", + "display": "Major depressive affective disorder, recurrent episode, severe, without mention of psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.34", + "display": "Major depressive affective disorder, recurrent episode, severe, specified as with psychotic behavior" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.35", + "display": "Major depressive affective disorder, recurrent episode, in partial or unspecified remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "296.36", + "display": "Major depressive affective disorder, recurrent episode, in full remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "300.4", + "display": "Dysthymic disorder" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "832007", + "display": "Moderate major depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "2506003", + "display": "Early onset dysthymia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "2618002", + "display": "Chronic recurrent major depressive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "3109008", + "display": "Secondary dysthymia early onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "14183003", + "display": "Chronic major depressive disorder, single episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "15193003", + "display": "Severe recurrent major depression with psychotic features, mood-incongruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "15639000", + "display": "Moderate major depression, single episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "18818009", + "display": "Moderate recurrent major depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "19527009", + "display": "Single episode of major depression in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "19694002", + "display": "Late onset dysthymia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "20250007", + "display": "Severe major depression, single episode, with psychotic features, mood-incongruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "25922000", + "display": "Major depressive disorder, single episode with postpartum onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "28475009", + "display": "Severe recurrent major depression with psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "30605009", + "display": "Major depression in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "33078009", + "display": "Severe recurrent major depression with psychotic features, mood-congruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "33135002", + "display": "Recurrent major depression in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "33736005", + "display": "Severe major depression with psychotic features, mood-congruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "36170009", + "display": "Secondary dysthymia late onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "36474008", + "display": "Severe recurrent major depression without psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "36923009", + "display": "Major depression, single episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "38451003", + "display": "Primary dysthymia early onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "38694004", + "display": "Recurrent major depressive disorder with atypical features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "39809009", + "display": "Recurrent major depressive disorder with catatonic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "40379007", + "display": "Mild recurrent major depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "42810003", + "display": "Major depression in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "42925002", + "display": "Major depressive disorder, single episode with atypical features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "46244001", + "display": "Recurrent major depression in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "60099002", + "display": "Severe major depression with psychotic features, mood-incongruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "63412003", + "display": "Major depression in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "63778009", + "display": "Major depressive disorder, single episode with melancholic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "66344007", + "display": "Recurrent major depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "67711008", + "display": "Primary dysthymia late onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "69392006", + "display": "Major depressive disorder, single episode with catatonic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "70747007", + "display": "Major depression single episode, in partial remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "71336009", + "display": "Recurrent major depressive disorder with postpartum onset (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "73867007", + "display": "Severe major depression with psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "75084000", + "display": "Severe major depression without psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "76441001", + "display": "Severe major depression, single episode, without psychotic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "77911002", + "display": "Severe major depression, single episode, with psychotic features, mood-congruent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "78667006", + "display": "Dysthymia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "79298009", + "display": "Mild major depression, single episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "83176005", + "display": "Primary dysthymia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "85080004", + "display": "Secondary dysthymia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "87512008", + "display": "Mild major depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191601008", + "display": "Single major depressive episode, mild (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191602001", + "display": "Single major depressive episode, moderate (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191604000", + "display": "Single major depressive episode, severe, with psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191610000", + "display": "Recurrent major depressive episodes, mild (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191611001", + "display": "Recurrent major depressive episodes, moderate (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191613003", + "display": "Recurrent major depressive episodes, severe, with psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191615005", + "display": "Recurrent major depressive episodes, in full remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231499006", + "display": "Endogenous depression first episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268620009", + "display": "Single major depressive episode (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268621008", + "display": "Recurrent major depressive episodes (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "274948002", + "display": "Endogenous depression - recurrent (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "300706003", + "display": "Endogenous depression (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "319768000", + "display": "Recurrent major depressive disorder with melancholic features (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "320751009", + "display": "Major depression, melancholic type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "370143000", + "display": "Major depressive disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "430852001", + "display": "Severe major depression, single episode, with psychotic features (disorder)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1351" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1265.26", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1265.26", + "status": "active", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.3.16AB", + "concept": [ + { + "code": "87620" + }, + { + "code": "87621" + }, + { + "code": "87622" + }, + { + "code": "87624" + }, + { + "code": "87625" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1265.26" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1093.41", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1093.41", + "status": "active", + "compose": { + "include": [ + { + "system": "http://www.ama-assn.org/go/cpt", + "version": "2017.3.16AB", + "concept": [ + { + "code": "82274" + }, + { + "code": "82270" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1093.41" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1352", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1352", + "status": "draft", + "compose": { + "include": [ + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F20.0", + "display": "[F20.0] Paranoid schizophrenia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F20.1", + "display": "[F20.1] Disorganized schizophrenia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F20.2", + "display": "[F20.2] Catatonic schizophrenia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F20.3", + "display": "[F20.3] Undifferentiated schizophrenia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F20.5", + "display": "[F20.5] Residual schizophrenia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F20.81", + "display": "[F20.81] Schizophreniform disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F20.89", + "display": "[F20.89] Other schizophrenia" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F20.9", + "display": "[F20.9] Schizophrenia, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F23", + "display": "[F23] Brief psychotic disorder" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F25.0", + "display": "[F25.0] Schizoaffective disorder, bipolar type" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F25.1", + "display": "[F25.1] Schizoaffective disorder, depressive type" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F25.8", + "display": "[F25.8] Other schizoaffective disorders" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F25.9", + "display": "[F25.9] Schizoaffective disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-10-cm", + "version": "2018.1.17AA", + "concept": [ + { + "code": "F28", + "display": "[F28] Other psychotic disorder not due to a substance or known physiological condition" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.00", + "display": "Simple type schizophrenia, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.01", + "display": "Simple type schizophrenia, subchronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.02", + "display": "Simple type schizophrenia, chronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.03", + "display": "Simple type schizophrenia, subchronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.04", + "display": "Simple type schizophrenia, chronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.05", + "display": "Simple type schizophrenia, in remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.10", + "display": "Disorganized type schizophrenia, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.11", + "display": "Disorganized type schizophrenia, subchronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.12", + "display": "Disorganized type schizophrenia, chronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.13", + "display": "Disorganized type schizophrenia, subchronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.14", + "display": "Disorganized type schizophrenia, chronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.15", + "display": "Disorganized type schizophrenia, in remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.20", + "display": "Catatonic type schizophrenia, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.21", + "display": "Catatonic type schizophrenia, subchronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.22", + "display": "Catatonic type schizophrenia, chronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.23", + "display": "Catatonic type schizophrenia, subchronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.24", + "display": "Catatonic type schizophrenia, chronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.25", + "display": "Catatonic type schizophrenia, in remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.30", + "display": "Paranoid type schizophrenia, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.31", + "display": "Paranoid type schizophrenia, subchronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.32", + "display": "Paranoid type schizophrenia, chronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.33", + "display": "Paranoid type schizophrenia, subchronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.34", + "display": "Paranoid type schizophrenia, chronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.35", + "display": "Paranoid type schizophrenia, in remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.40", + "display": "Schizophreniform disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.41", + "display": "Schizophreniform disorder, subchronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.42", + "display": "Schizophreniform disorder, chronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.43", + "display": "Schizophreniform disorder, subchronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.44", + "display": "Schizophreniform disorder, chronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.45", + "display": "Schizophreniform disorder, in remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.50", + "display": "Latent schizophrenia, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.51", + "display": "Latent schizophrenia, subchronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.52", + "display": "Latent schizophrenia, chronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.53", + "display": "Latent schizophrenia, subchronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.54", + "display": "Latent schizophrenia, chronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.55", + "display": "Latent schizophrenia, in remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.60", + "display": "Schizophrenic disorders, residual type, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.61", + "display": "Schizophrenic disorders, residual type, subchronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.62", + "display": "Schizophrenic disorders, residual type, chronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.63", + "display": "Schizophrenic disorders, residual type, subchronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.64", + "display": "Schizophrenic disorders, residual type, chronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.65", + "display": "Schizophrenic disorders, residual type, in remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.70", + "display": "Schizoaffective disorder, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.71", + "display": "Schizoaffective disorder, subchronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.72", + "display": "Schizoaffective disorder, chronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.73", + "display": "Schizoaffective disorder, subchronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.74", + "display": "Schizoaffective disorder, chronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.75", + "display": "Schizoaffective disorder, in remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.80", + "display": "Other specified types of schizophrenia, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.81", + "display": "Other specified types of schizophrenia, subchronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.82", + "display": "Other specified types of schizophrenia, chronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.83", + "display": "Other specified types of schizophrenia, subchronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.84", + "display": "Other specified types of schizophrenia, chronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.85", + "display": "Other specified types of schizophrenia, in remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.90", + "display": "Unspecified schizophrenia, unspecified" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.91", + "display": "Unspecified schizophrenia, subchronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.92", + "display": "Unspecified schizophrenia, chronic" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.93", + "display": "Unspecified schizophrenia, subchronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.94", + "display": "Unspecified schizophrenia, chronic with acute exacerbation" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "295.95", + "display": "Unspecified schizophrenia, in remission" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "298.0", + "display": "Depressive type psychosis" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "298.1", + "display": "Excitative type psychosis" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "298.2", + "display": "Reactive confusion" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "298.3", + "display": "Acute paranoid reaction" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "298.4", + "display": "Psychogenic paranoid psychosis" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "298.8", + "display": "Other and unspecified reactive psychosis" + } + ] + }, + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "version": "2014.1.13AA", + "concept": [ + { + "code": "298.9", + "display": "Unspecified psychosis" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "4926007", + "display": "Schizophrenia in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "5464005", + "display": "Brief reactive psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "7025000", + "display": "Subchronic undifferentiated schizophrenia with acute exacerbations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "12939007", + "display": "Chronic disorganized schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "14291003", + "display": "Subchronic disorganized schizophrenia with acute exacerbations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "16990005", + "display": "Subchronic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "26025008", + "display": "Residual schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "27387000", + "display": "Subchronic disorganized schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "29599000", + "display": "Chronic undifferentiated schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "30336007", + "display": "Chronic residual schizophrenia with acute exacerbations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "31373002", + "display": "Disorganized schizophrenia in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "31658008", + "display": "Chronic paranoid schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "35218008", + "display": "Chronic disorganized schizophrenia with acute exacerbations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "35252006", + "display": "Disorganized schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "38368003", + "display": "Schizoaffective disorder, bipolar type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "39610001", + "display": "Undifferentiated schizophrenia in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "42868002", + "display": "Subchronic catatonic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "51133006", + "display": "Residual schizophrenia in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "58214004", + "display": "Schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "63181006", + "display": "Paranoid schizophrenia in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "64905009", + "display": "Paranoid schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "68890003", + "display": "Schizoaffective disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "68995007", + "display": "Chronic catatonic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "70814008", + "display": "Subchronic residual schizophrenia with acute exacerbations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "71103003", + "display": "Chronic residual schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "76566000", + "display": "Subchronic residual schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "79204003", + "display": "Chronic undifferentiated schizophrenia with acute exacerbations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "79866005", + "display": "Subchronic paranoid schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "83746006", + "display": "Chronic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "84760002", + "display": "Schizoaffective disorder, depressive type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "85861002", + "display": "Subchronic undifferentiated schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111482003", + "display": "Subchronic schizophrenia with acute exacerbations (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111483008", + "display": "Catatonic schizophrenia in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "111484002", + "display": "Undifferentiated schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191526005", + "display": "Schizophrenic disorders (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191527001", + "display": "Simple schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191530008", + "display": "Acute exacerbation of subchronic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191531007", + "display": "Acute exacerbation of chronic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191536002", + "display": "Subchronic hebephrenic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191537006", + "display": "Chronic hebephrenic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191538001", + "display": "Acute exacerbation of subchronic hebephrenic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191539009", + "display": "Acute exacerbation of chronic hebephrenic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191540006", + "display": "Hebephrenic schizophrenia in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191542003", + "display": "Catatonic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191547009", + "display": "Acute exacerbation of subchronic catatonic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191548004", + "display": "Acute exacerbation of chronic catatonic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191554003", + "display": "Acute exacerbation of subchronic paranoid schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191555002", + "display": "Acute exacerbation of chronic paranoid schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191559008", + "display": "Latent schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191564007", + "display": "Acute exacerbation of chronic latent schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191567000", + "display": "Schizoaffective schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191569002", + "display": "Subchronic schizoaffective schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191570001", + "display": "Chronic schizoaffective schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191571002", + "display": "Acute exacerbation of subchronic schizoaffective schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191572009", + "display": "Acute exacerbation of chronic schizoaffective schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191574005", + "display": "Schizoaffective schizophrenia in remission (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191577003", + "display": "Cenesthopathic schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "191680007", + "display": "Psychogenic paranoid psychosis (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231437006", + "display": "Reactive psychoses (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "231489001", + "display": "Acute transient psychotic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "268624000", + "display": "Acute paranoid reaction (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "270901009", + "display": "Schizoaffective disorder, mixed type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "271428004", + "display": "Schizoaffective disorder, manic type (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "274952002", + "display": "Borderline schizophrenia (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "278853003", + "display": "Acute schizophrenia-like psychotic disorder (disorder)" + } + ] + }, + { + "system": "http://snomed.info/sct", + "version": "2017.03.16AB", + "concept": [ + { + "code": "416340002", + "display": "Late onset schizophrenia (disorder)" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1352" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1265.27", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1265.27", + "status": "active", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.5.17AA", + "concept": [ + { + "code": "G0476" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1265.27" + } + }, + { + "resource": { + "resourceType": "ValueSet", + "id": "2.16.840.1.113883.3.464.1004.1093.42", + "url": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1093.42", + "status": "active", + "compose": { + "include": [ + { + "system": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "version": "2017.5.17AA", + "concept": [ + { + "code": "G0397" + } + ] + } + ] + } + }, + "request": { + "method": "PUT", + "url": "ValueSet/2.16.840.1.113883.3.464.1004.1093.42" + } + }, + { + "resource": { + "resourceType": "CodeSystem", + "id": "2.16.840.1.113883.6.285", + "url": "https://www.cms.gov/Medicare/Coding/MedHCPCSGenInfo", + "status": "draft", + "concept": [ + { + "code": "G0396", + "display": "Alcohol and/or substance (other than tobacco) abuse structured assessment (e.g., audit, dast), and brief intervention 15 to 30 minutes (G0396)" + }, + { + "code": "G0397", + "display": "Alcohol and/or substance (other than tobacco) abuse structured assessment (e.g., audit, dast), and intervention, greater than 30 minutes (G0397)" + }, + { + "code": "G0443", + "display": "Brief face-to-face behavioral counseling for alcohol misuse, 15 minutes (G0443)" + }, + { + "code": "H0005", + "display": "Alcohol and/or drug services; group counseling by a clinician (H0005)" + }, + { + "code": "H0007", + "display": "Alcohol and/or drug services; crisis intervention (outpatient) (H0007)" + }, + { + "code": "H0015", + "display": "Alcohol and/or drug services; intensive outpatient (treatment program that operates at least 3 hours/day and at least 3 days/week and is based on an individualized treatment plan), including assessment, counseling; crisis intervention, and activity therapies or education (H0015)" + }, + { + "code": "H0016", + "display": "Alcohol and/or drug services; medical/somatic (medical intervention in ambulatory setting) (H0016)" + }, + { + "code": "H0022", + "display": "Alcohol and/or drug intervention service (planned facilitation) (H0022)" + }, + { + "code": "H0050", + "display": "Alcohol and/or drug services, brief intervention, per 15 minutes (H0050)" + }, + { + "code": "H2035", + "display": "Alcohol and/or other drug treatment program, per hour (H2035)" + }, + { + "code": "H2036", + "display": "Alcohol and/or other drug treatment program, per diem (H2036)" + }, + { + "code": "T1006", + "display": "Alcohol and/or substance abuse services, family/couple counseling (T1006)" + }, + { + "code": "T1012", + "display": "Alcohol and/or substance abuse services, skills development (T1012)" + }, + { + "code": "G0442", + "display": "Annual alcohol misuse screening, 15 minutes (G0442)" + }, + { + "code": "H0001", + "display": "Alcohol and/or drug assessment (H0001)" + }, + { + "code": "H0049", + "display": "Alcohol and/or drug screening (H0049)" + }, + { + "code": "G0182", + "display": "Physician supervision of a patient under a medicare-approved hospice (patient not present) requiring complex and multidisciplinary care modalities involving regular physician development and/or revision of care plans, review of subsequent reports of patient status, review of laboratory and other studies, communication (including telephone calls) with other health care professionals involved in the patient's care, integration of new information into the medical treatment plan and/or adjustment of medical therapy, within a calendar month, 30 minutes or more (G0182)" + }, + { + "code": "G9473", + "display": "Services performed by chaplain in the hospice setting, each 15 minutes (G9473)" + }, + { + "code": "G9474", + "display": "Services performed by dietary counselor in the hospice setting, each 15 minutes (G9474)" + }, + { + "code": "G9475", + "display": "Services performed by other counselor in the hospice setting, each 15 minutes (G9475)" + }, + { + "code": "G9476", + "display": "Services performed by volunteer in the hospice setting, each 15 minutes (G9476)" + }, + { + "code": "G9477", + "display": "Services performed by care coordinator in the hospice setting, each 15 minutes (G9477)" + }, + { + "code": "G9478", + "display": "Services performed by other qualified therapist in the hospice setting, each 15 minutes (G9478)" + }, + { + "code": "G9479", + "display": "Services performed by qualified pharmacist in the hospice setting, each 15 minutes (G9479)" + }, + { + "code": "Q5003", + "display": "Hospice care provided in nursing long term care facility (ltc) or non-skilled nursing facility (nf) (Q5003)" + }, + { + "code": "Q5004", + "display": "Hospice care provided in skilled nursing facility (snf) (Q5004)" + }, + { + "code": "Q5005", + "display": "Hospice care provided in inpatient hospital (Q5005)" + }, + { + "code": "Q5006", + "display": "Hospice care provided in inpatient hospice facility (Q5006)" + }, + { + "code": "Q5007", + "display": "Hospice care provided in long term care facility (Q5007)" + }, + { + "code": "Q5008", + "display": "Hospice care provided in inpatient psychiatric facility (Q5008)" + }, + { + "code": "Q5010", + "display": "Hospice home care provided in a hospice facility (Q5010)" + }, + { + "code": "S9126", + "display": "Hospice care, in the home, per diem (S9126)" + }, + { + "code": "T2042", + "display": "Hospice routine home care; per diem (T2042)" + }, + { + "code": "T2043", + "display": "Hospice continuous home care; per hour (T2043)" + }, + { + "code": "T2044", + "display": "Hospice inpatient respite care; per diem (T2044)" + }, + { + "code": "T2045", + "display": "Hospice general inpatient care; per diem (T2045)" + }, + { + "code": "T2046", + "display": "Hospice long term care, room and board only; per diem (T2046)" + }, + { + "code": "G0155", + "display": "Services of clinical social worker in home health or hospice settings, each 15 minutes (G0155)" + }, + { + "code": "G0176", + "display": "Activity therapy, such as music, dance, art or play therapies not for recreation, related to the care and treatment of patient's disabling mental health problems, per session (45 minutes or more) (G0176)" + }, + { + "code": "G0177", + "display": "Training and educational services related to the care and treatment of patient's disabling mental health problems per session (45 minutes or more) (G0177)" + }, + { + "code": "G0409", + "display": "Social work and psychological services, directly relating to and/or furthering the patient's rehabilitation goals, each 15 minutes, face-to-face; individual (services provided by a corf-qualified social worker or psychologist in a corf) (G0409)" + }, + { + "code": "G0410", + "display": "Group psychotherapy other than of a multiple-family group, in a partial hospitalization setting, approximately 45 to 50 minutes (G0410)" + }, + { + "code": "G0411", + "display": "Interactive group psychotherapy, in a partial hospitalization setting, approximately 45 to 50 minutes (G0411)" + }, + { + "code": "G0463", + "display": "Hospital outpatient clinic visit for assessment and management of a patient (G0463)" + }, + { + "code": "G0502", + "display": "Initial psychiatric collaborative care management, first 70 minutes in the first calendar month of behavioral health care manager activities, in consultation with a psychiatric consultant, and directed by the treating physician or other qualified health care professional, with the following required elements: outreach to and engagement in treatment of a patient directed by the treating physician or other qualified health care professional; initial assessment of the patient, including administration of validated rating scales, with the development of an individualized treatment plan; review by the psychiatric consultant with modifications of the plan if recommended; entering patient in a registry and tracking patient follow-up and (G0502)" + }, + { + "code": "G0503", + "display": "Subsequent psychiatric collaborative care management, first 60 minutes in a subsequent month of behavioral health care manager activities, in consultation with a psychiatric consultant, and directed by the treating physician or other qualified health care professional, with the following required elements: tracking patient follow-up and progress using the registry, with appropriate documentation; participation in weekly caseload consultation with the psychiatric consultant; ongoing collaboration with and coordination of the patient's mental health care with the treating physician or other qualified health care professional and any other treating mental health providers; additional review of progress and recommendations for changes (G0503)" + }, + { + "code": "G0507", + "display": "Care management services for behavioral health conditions, at least 20 minutes of clinical staff time, directed by a physician or other qualified health care professional, per calendar month, with the following required elements: initial assessment or follow-up monitoring, including the use of applicable validated rating scales; behavioral health care planning in relation to behavioral/psychiatric health problems, including revision for patients who are not progressing or whose status changes; facilitating and coordinating treatment such as psychotherapy, pharmacotherapy, counseling and/or psychiatric consultation; and continuity of care with a designated member of the care team (G0507)" + }, + { + "code": "H0002", + "display": "Behavioral health screening to determine eligibility for admission to treatment program (H0002)" + }, + { + "code": "H0004", + "display": "Behavioral health counseling and therapy, per 15 minutes (H0004)" + }, + { + "code": "H0031", + "display": "Mental health assessment, by non-physician (H0031)" + }, + { + "code": "H0034", + "display": "Medication training and support, per 15 minutes (H0034)" + }, + { + "code": "H0035", + "display": "Mental health partial hospitalization, treatment, less than 24 hours (H0035)" + }, + { + "code": "H0036", + "display": "Community psychiatric supportive treatment, face-to-face, per 15 minutes (H0036)" + }, + { + "code": "H0037", + "display": "Community psychiatric supportive treatment program, per diem (H0037)" + }, + { + "code": "H0039", + "display": "Assertive community treatment, face-to-face, per 15 minutes (H0039)" + }, + { + "code": "H0040", + "display": "Assertive community treatment program, per diem (H0040)" + }, + { + "code": "H2000", + "display": "Comprehensive multidisciplinary evaluation (H2000)" + }, + { + "code": "H2001", + "display": "Rehabilitation program, per 1/2 day (H2001)" + }, + { + "code": "H2010", + "display": "Comprehensive medication services, per 15 minutes (H2010)" + }, + { + "code": "H2011", + "display": "Crisis intervention service, per 15 minutes (H2011)" + }, + { + "code": "H2012", + "display": "Behavioral health day treatment, per hour (H2012)" + }, + { + "code": "H2013", + "display": "Psychiatric health facility service, per diem (H2013)" + }, + { + "code": "H2014", + "display": "Skills training and development, per 15 minutes (H2014)" + }, + { + "code": "H2015", + "display": "Comprehensive community support services, per 15 minutes (H2015)" + }, + { + "code": "H2016", + "display": "Comprehensive community support services, per diem (H2016)" + }, + { + "code": "H2017", + "display": "Psychosocial rehabilitation services, per 15 minutes (H2017)" + }, + { + "code": "H2018", + "display": "Psychosocial rehabilitation services, per diem (H2018)" + }, + { + "code": "H2019", + "display": "Therapeutic behavioral services, per 15 minutes (H2019)" + }, + { + "code": "H2020", + "display": "Therapeutic behavioral services, per diem (H2020)" + }, + { + "code": "M0064", + "display": "Brief office visit for the sole purpose of monitoring or changing drug prescriptions used in the treatment of mental psychoneurotic and personality disorders (M0064)" + }, + { + "code": "S0201", + "display": "Partial hospitalization services, less than 24 hours, per diem (S0201)" + }, + { + "code": "S9480", + "display": "Intensive outpatient psychiatric services, per diem (S9480)" + }, + { + "code": "S9484", + "display": "Crisis intervention mental health services, per hour (S9484)" + }, + { + "code": "S9485", + "display": "Crisis intervention mental health services, per diem (S9485)" + }, + { + "code": "T1015", + "display": "Clinic visit/encounter, all-inclusive (T1015)" + }, + { + "code": "T1016", + "display": "Case management, each 15 minutes (T1016)" + }, + { + "code": "T1017", + "display": "Targeted case management, each 15 minutes (T1017)" + }, + { + "code": "T2022", + "display": "Case management, per month (T2022)" + }, + { + "code": "T2023", + "display": "Targeted case management; per month (T2023)" + }, + { + "code": "G8431", + "display": "Screening for depression is documented as being positive and a follow-up plan is documented (G8431)" + }, + { + "code": "G8510", + "display": "Screening for depression is documented as negative, a follow-up plan is not required (G8510)" + }, + { + "code": "G8511", + "display": "Screening for depression documented as positive, follow-up plan not documented, reason not given (G8511)" + }, + { + "code": "G0202" + }, + { + "code": "G0204" + }, + { + "code": "G0206" + }, + { + "code": "G0147" + }, + { + "code": "G0148" + }, + { + "code": "G0141" + }, + { + "code": "G0124" + }, + { + "code": "G0123" + }, + { + "code": "G0143" + }, + { + "code": "G0145" + }, + { + "code": "G0144" + }, + { + "code": "P3000" + }, + { + "code": "P3001" + }, + { + "code": "Q0091" + }, + { + "code": "G0476" + }, + { + "code": "G0245" + }, + { + "code": "G0464" + }, + { + "code": "L8614", + "display": "Cochlear device, includes all internal and external components (L8614)" + }, + { + "code": "L8619", + "display": "Cochlear implant, external speech processor and controller, integrated system, replacement (L8619)" + }, + { + "code": "L8627", + "display": "Cochlear implant, external speech processor, component, replacement (L8627)" + }, + { + "code": "L8628", + "display": "Cochlear implant, external controller component, replacement (L8628)" + } + ] + }, + "request": { + "method": "PUT", + "url": "CodeSystem/2.16.840.1.113883.6.285" + } + }, + { + "resource": { + "resourceType": "CodeSystem", + "id": "2.16.840.1.113883.6.42", + "url": "http://hl7.org/fhir/sid/icd-9-cm", + "status": "draft", + "concept": [ + { + "code": "290.0", + "display": "Senile dementia, uncomplicated" + }, + { + "code": "290.10", + "display": "Presenile dementia, uncomplicated" + }, + { + "code": "290.11", + "display": "Presenile dementia with delirium" + }, + { + "code": "290.12", + "display": "Presenile dementia with delusional features" + }, + { + "code": "290.13", + "display": "Presenile dementia with depressive features" + }, + { + "code": "290.20", + "display": "Senile dementia with delusional features" + }, + { + "code": "290.21", + "display": "Senile dementia with depressive features" + }, + { + "code": "290.3", + "display": "Senile dementia with delirium" + }, + { + "code": "290.40", + "display": "Vascular dementia, uncomplicated" + }, + { + "code": "290.41", + "display": "Vascular dementia, with delirium" + }, + { + "code": "290.42", + "display": "Vascular dementia, with delusions" + }, + { + "code": "290.43", + "display": "Vascular dementia, with depressed mood" + }, + { + "code": "290.8", + "display": "Other specified senile psychotic conditions" + }, + { + "code": "290.9", + "display": "Unspecified senile psychotic condition" + }, + { + "code": "291.2", + "display": "Alcohol-induced persisting dementia" + }, + { + "code": "292.82", + "display": "Drug-induced persisting dementia" + }, + { + "code": "294.0", + "display": "Amnestic disorder in conditions classified elsewhere" + }, + { + "code": "294.10", + "display": "Dementia in conditions classified elsewhere without behavioral disturbance" + }, + { + "code": "294.11", + "display": "Dementia in conditions classified elsewhere with behavioral disturbance" + }, + { + "code": "294.20", + "display": "Dementia, unspecified, without behavioral disturbance" + }, + { + "code": "294.21", + "display": "Dementia, unspecified, with behavioral disturbance" + }, + { + "code": "331.0", + "display": "Alzheimer's disease" + }, + { + "code": "331.82", + "display": "Dementia with lewy bodies" + }, + { + "code": "296.00", + "display": "Bipolar I disorder, single manic episode, unspecified" + }, + { + "code": "296.01", + "display": "Bipolar I disorder, single manic episode, mild" + }, + { + "code": "296.02", + "display": "Bipolar I disorder, single manic episode, moderate" + }, + { + "code": "296.03", + "display": "Bipolar I disorder, single manic episode, severe, without mention of psychotic behavior" + }, + { + "code": "296.04", + "display": "Bipolar I disorder, single manic episode, severe, specified as with psychotic behavior" + }, + { + "code": "296.05", + "display": "Bipolar I disorder, single manic episode, in partial or unspecified remission" + }, + { + "code": "296.06", + "display": "Bipolar I disorder, single manic episode, in full remission" + }, + { + "code": "296.10", + "display": "Manic affective disorder, recurrent episode, unspecified" + }, + { + "code": "296.11", + "display": "Manic affective disorder, recurrent episode, mild" + }, + { + "code": "296.12", + "display": "Manic affective disorder, recurrent episode, moderate" + }, + { + "code": "296.13", + "display": "Manic affective disorder, recurrent episode, severe, without mention of psychotic behavior" + }, + { + "code": "296.14", + "display": "Manic affective disorder, recurrent episode, severe, specified as with psychotic behavior" + }, + { + "code": "296.15", + "display": "Manic affective disorder, recurrent episode, in partial or unspecified remission" + }, + { + "code": "296.16", + "display": "Manic affective disorder, recurrent episode, in full remission" + }, + { + "code": "296.40", + "display": "Bipolar I disorder, most recent episode (or current) manic, unspecified" + }, + { + "code": "296.41", + "display": "Bipolar I disorder, most recent episode (or current) manic, mild" + }, + { + "code": "296.42", + "display": "Bipolar I disorder, most recent episode (or current) manic, moderate" + }, + { + "code": "296.43", + "display": "Bipolar I disorder, most recent episode (or current) manic, severe, without mention of psychotic behavior" + }, + { + "code": "296.44", + "display": "Bipolar I disorder, most recent episode (or current) manic, severe, specified as with psychotic behavior" + }, + { + "code": "296.45", + "display": "Bipolar I disorder, most recent episode (or current) manic, in partial or unspecified remission" + }, + { + "code": "296.46", + "display": "Bipolar I disorder, most recent episode (or current) manic, in full remission" + }, + { + "code": "296.50", + "display": "Bipolar I disorder, most recent episode (or current) depressed, unspecified" + }, + { + "code": "296.51", + "display": "Bipolar I disorder, most recent episode (or current) depressed, mild" + }, + { + "code": "296.52", + "display": "Bipolar I disorder, most recent episode (or current) depressed, moderate" + }, + { + "code": "296.53", + "display": "Bipolar I disorder, most recent episode (or current) depressed, severe, without mention of psychotic behavior" + }, + { + "code": "296.54", + "display": "Bipolar I disorder, most recent episode (or current) depressed, severe, specified as with psychotic behavior" + }, + { + "code": "296.55", + "display": "Bipolar I disorder, most recent episode (or current) depressed, in partial or unspecified remission" + }, + { + "code": "296.56", + "display": "Bipolar I disorder, most recent episode (or current) depressed, in full remission" + }, + { + "code": "296.60", + "display": "Bipolar I disorder, most recent episode (or current) mixed, unspecified" + }, + { + "code": "296.61", + "display": "Bipolar I disorder, most recent episode (or current) mixed, mild" + }, + { + "code": "296.62", + "display": "Bipolar I disorder, most recent episode (or current) mixed, moderate" + }, + { + "code": "296.63", + "display": "Bipolar I disorder, most recent episode (or current) mixed, severe, without mention of psychotic behavior" + }, + { + "code": "296.64", + "display": "Bipolar I disorder, most recent episode (or current) mixed, severe, specified as with psychotic behavior" + }, + { + "code": "296.65", + "display": "Bipolar I disorder, most recent episode (or current) mixed, in partial or unspecified remission" + }, + { + "code": "296.66", + "display": "Bipolar I disorder, most recent episode (or current) mixed, in full remission" + }, + { + "code": "296.7", + "display": "Bipolar I disorder, most recent episode (or current) unspecified" + }, + { + "code": "296.20", + "display": "Major depressive affective disorder, single episode, unspecified" + }, + { + "code": "296.21", + "display": "Major depressive affective disorder, single episode, mild" + }, + { + "code": "296.22", + "display": "Major depressive affective disorder, single episode, moderate" + }, + { + "code": "296.23", + "display": "Major depressive affective disorder, single episode, severe, without mention of psychotic behavior" + }, + { + "code": "296.24", + "display": "Major depressive affective disorder, single episode, severe, specified as with psychotic behavior" + }, + { + "code": "296.25", + "display": "Major depressive affective disorder, single episode, in partial or unspecified remission" + }, + { + "code": "296.26", + "display": "Major depressive affective disorder, single episode, in full remission" + }, + { + "code": "296.30", + "display": "Major depressive affective disorder, recurrent episode, unspecified" + }, + { + "code": "296.31", + "display": "Major depressive affective disorder, recurrent episode, mild" + }, + { + "code": "296.32", + "display": "Major depressive affective disorder, recurrent episode, moderate" + }, + { + "code": "296.33", + "display": "Major depressive affective disorder, recurrent episode, severe, without mention of psychotic behavior" + }, + { + "code": "296.34", + "display": "Major depressive affective disorder, recurrent episode, severe, specified as with psychotic behavior" + }, + { + "code": "296.35", + "display": "Major depressive affective disorder, recurrent episode, in partial or unspecified remission" + }, + { + "code": "296.36", + "display": "Major depressive affective disorder, recurrent episode, in full remission" + }, + { + "code": "300.4", + "display": "Dysthymic disorder" + }, + { + "code": "296.80", + "display": "Bipolar disorder, unspecified" + }, + { + "code": "296.81", + "display": "Atypical manic disorder" + }, + { + "code": "296.82", + "display": "Atypical depressive disorder" + }, + { + "code": "296.89", + "display": "Other bipolar disorders" + }, + { + "code": "301.10", + "display": "Affective personality disorder, unspecified" + }, + { + "code": "301.13", + "display": "Cyclothymic disorder" + }, + { + "code": "301.3", + "display": "Explosive personality disorder" + }, + { + "code": "301.50", + "display": "Histrionic personality disorder, unspecified" + }, + { + "code": "301.51", + "display": "Chronic factitious illness with physical symptoms" + }, + { + "code": "301.59", + "display": "Other histrionic personality disorder" + }, + { + "code": "301.83", + "display": "Borderline personality disorder" + }, + { + "code": "299.00", + "display": "Autistic disorder, current or active state" + }, + { + "code": "299.01", + "display": "Autistic disorder, residual state" + }, + { + "code": "299.10", + "display": "Childhood disintegrative disorder, current or active state" + }, + { + "code": "299.11", + "display": "Childhood disintegrative disorder, residual state" + }, + { + "code": "299.80", + "display": "Other specified pervasive developmental disorders, current or active state" + }, + { + "code": "299.81", + "display": "Other specified pervasive developmental disorders, residual state" + }, + { + "code": "299.90", + "display": "Unspecified pervasive developmental disorder, current or active state" + }, + { + "code": "299.91", + "display": "Unspecified pervasive developmental disorder, residual state" + }, + { + "code": "295.00", + "display": "Simple type schizophrenia, unspecified" + }, + { + "code": "295.01", + "display": "Simple type schizophrenia, subchronic" + }, + { + "code": "295.02", + "display": "Simple type schizophrenia, chronic" + }, + { + "code": "295.03", + "display": "Simple type schizophrenia, subchronic with acute exacerbation" + }, + { + "code": "295.04", + "display": "Simple type schizophrenia, chronic with acute exacerbation" + }, + { + "code": "295.05", + "display": "Simple type schizophrenia, in remission" + }, + { + "code": "295.10", + "display": "Disorganized type schizophrenia, unspecified" + }, + { + "code": "295.11", + "display": "Disorganized type schizophrenia, subchronic" + }, + { + "code": "295.12", + "display": "Disorganized type schizophrenia, chronic" + }, + { + "code": "295.13", + "display": "Disorganized type schizophrenia, subchronic with acute exacerbation" + }, + { + "code": "295.14", + "display": "Disorganized type schizophrenia, chronic with acute exacerbation" + }, + { + "code": "295.15", + "display": "Disorganized type schizophrenia, in remission" + }, + { + "code": "295.20", + "display": "Catatonic type schizophrenia, unspecified" + }, + { + "code": "295.21", + "display": "Catatonic type schizophrenia, subchronic" + }, + { + "code": "295.22", + "display": "Catatonic type schizophrenia, chronic" + }, + { + "code": "295.23", + "display": "Catatonic type schizophrenia, subchronic with acute exacerbation" + }, + { + "code": "295.24", + "display": "Catatonic type schizophrenia, chronic with acute exacerbation" + }, + { + "code": "295.25", + "display": "Catatonic type schizophrenia, in remission" + }, + { + "code": "295.30", + "display": "Paranoid type schizophrenia, unspecified" + }, + { + "code": "295.31", + "display": "Paranoid type schizophrenia, subchronic" + }, + { + "code": "295.32", + "display": "Paranoid type schizophrenia, chronic" + }, + { + "code": "295.33", + "display": "Paranoid type schizophrenia, subchronic with acute exacerbation" + }, + { + "code": "295.34", + "display": "Paranoid type schizophrenia, chronic with acute exacerbation" + }, + { + "code": "295.35", + "display": "Paranoid type schizophrenia, in remission" + }, + { + "code": "295.40", + "display": "Schizophreniform disorder, unspecified" + }, + { + "code": "295.41", + "display": "Schizophreniform disorder, subchronic" + }, + { + "code": "295.42", + "display": "Schizophreniform disorder, chronic" + }, + { + "code": "295.43", + "display": "Schizophreniform disorder, subchronic with acute exacerbation" + }, + { + "code": "295.44", + "display": "Schizophreniform disorder, chronic with acute exacerbation" + }, + { + "code": "295.45", + "display": "Schizophreniform disorder, in remission" + }, + { + "code": "295.50", + "display": "Latent schizophrenia, unspecified" + }, + { + "code": "295.51", + "display": "Latent schizophrenia, subchronic" + }, + { + "code": "295.52", + "display": "Latent schizophrenia, chronic" + }, + { + "code": "295.53", + "display": "Latent schizophrenia, subchronic with acute exacerbation" + }, + { + "code": "295.54", + "display": "Latent schizophrenia, chronic with acute exacerbation" + }, + { + "code": "295.55", + "display": "Latent schizophrenia, in remission" + }, + { + "code": "295.60", + "display": "Schizophrenic disorders, residual type, unspecified" + }, + { + "code": "295.61", + "display": "Schizophrenic disorders, residual type, subchronic" + }, + { + "code": "295.62", + "display": "Schizophrenic disorders, residual type, chronic" + }, + { + "code": "295.63", + "display": "Schizophrenic disorders, residual type, subchronic with acute exacerbation" + }, + { + "code": "295.64", + "display": "Schizophrenic disorders, residual type, chronic with acute exacerbation" + }, + { + "code": "295.65", + "display": "Schizophrenic disorders, residual type, in remission" + }, + { + "code": "295.70", + "display": "Schizoaffective disorder, unspecified" + }, + { + "code": "295.71", + "display": "Schizoaffective disorder, subchronic" + }, + { + "code": "295.72", + "display": "Schizoaffective disorder, chronic" + }, + { + "code": "295.73", + "display": "Schizoaffective disorder, subchronic with acute exacerbation" + }, + { + "code": "295.74", + "display": "Schizoaffective disorder, chronic with acute exacerbation" + }, + { + "code": "295.75", + "display": "Schizoaffective disorder, in remission" + }, + { + "code": "295.80", + "display": "Other specified types of schizophrenia, unspecified" + }, + { + "code": "295.81", + "display": "Other specified types of schizophrenia, subchronic" + }, + { + "code": "295.82", + "display": "Other specified types of schizophrenia, chronic" + }, + { + "code": "295.83", + "display": "Other specified types of schizophrenia, subchronic with acute exacerbation" + }, + { + "code": "295.84", + "display": "Other specified types of schizophrenia, chronic with acute exacerbation" + }, + { + "code": "295.85", + "display": "Other specified types of schizophrenia, in remission" + }, + { + "code": "295.90", + "display": "Unspecified schizophrenia, unspecified" + }, + { + "code": "295.91", + "display": "Unspecified schizophrenia, subchronic" + }, + { + "code": "295.92", + "display": "Unspecified schizophrenia, chronic" + }, + { + "code": "295.93", + "display": "Unspecified schizophrenia, subchronic with acute exacerbation" + }, + { + "code": "295.94", + "display": "Unspecified schizophrenia, chronic with acute exacerbation" + }, + { + "code": "295.95", + "display": "Unspecified schizophrenia, in remission" + }, + { + "code": "298.0", + "display": "Depressive type psychosis" + }, + { + "code": "298.1", + "display": "Excitative type psychosis" + }, + { + "code": "298.2", + "display": "Reactive confusion" + }, + { + "code": "298.3", + "display": "Acute paranoid reaction" + }, + { + "code": "298.4", + "display": "Psychogenic paranoid psychosis" + }, + { + "code": "298.8", + "display": "Other and unspecified reactive psychosis" + }, + { + "code": "298.9", + "display": "Unspecified psychosis" + }, + { + "code": "301.12", + "display": "Chronic depressive personality disorder" + }, + { + "code": "309.0", + "display": "Adjustment disorder with depressed mood" + }, + { + "code": "309.1", + "display": "Prolonged depressive reaction" + }, + { + "code": "309.28", + "display": "Adjustment disorder with mixed anxiety and depressed mood" + }, + { + "code": "311", + "display": "Depressive disorder, not elsewhere classified" + }, + { + "code": "85.48" + }, + { + "code": "85.44" + }, + { + "code": "85.46" + }, + { + "code": "85.42" + }, + { + "code": "87.37" + }, + { + "code": "87.36" + }, + { + "code": "85.47" + }, + { + "code": "85.43" + }, + { + "code": "85.45" + }, + { + "code": "85.41" + }, + { + "code": "V88.01" + }, + { + "code": "V88.03" + }, + { + "code": "752.43" + }, + { + "code": "618.5" + }, + { + "code": "68.61" + }, + { + "code": "68.71" + }, + { + "code": "68.41" + }, + { + "code": "68.51" + }, + { + "code": "68.69" + }, + { + "code": "68.79" + }, + { + "code": "68.49" + }, + { + "code": "68.59" + }, + { + "code": "68.8" + }, + { + "code": "45.22" + }, + { + "code": "45.23" + }, + { + "code": "45.25" + }, + { + "code": "45.42" + }, + { + "code": "45.43" + }, + { + "code": "153.0" + }, + { + "code": "153.1" + }, + { + "code": "153.2" + }, + { + "code": "153.3" + }, + { + "code": "153.4" + }, + { + "code": "153.5" + }, + { + "code": "153.6" + }, + { + "code": "153.7" + }, + { + "code": "153.8" + }, + { + "code": "153.9" + }, + { + "code": "154.0" + }, + { + "code": "154.1" + }, + { + "code": "197.5" + }, + { + "code": "V10.05" + }, + { + "code": "V10.06" + }, + { + "code": "45.24" + }, + { + "code": "45.81" + }, + { + "code": "45.82" + }, + { + "code": "45.83" + }, + { + "code": "999.4", + "display": "Anaphylactic reaction due to serum [999.4]" + }, + { + "code": "999.42", + "display": "Anaphylactic reaction due to vaccination" + }, + { + "code": "279.00", + "display": "Hypogammaglobulinemia, unspecified" + }, + { + "code": "279.01", + "display": "Selective IgA immunodeficiency" + }, + { + "code": "279.02", + "display": "Selective IgM immunodeficiency" + }, + { + "code": "279.03", + "display": "Other selective immunoglobulin deficiencies" + }, + { + "code": "279.04", + "display": "Congenital hypogammaglobulinemia" + }, + { + "code": "279.05", + "display": "Immunodeficiency with increased IgM" + }, + { + "code": "279.06", + "display": "Common variable immunodeficiency" + }, + { + "code": "279.09", + "display": "Other deficiency of humoral immunity" + }, + { + "code": "279.10", + "display": "Immunodeficiency with predominant T-cell defect, unspecified" + }, + { + "code": "279.11", + "display": "Digeorge's syndrome" + }, + { + "code": "279.12", + "display": "Wiskott-aldrich syndrome" + }, + { + "code": "279.13", + "display": "Nezelof's syndrome" + }, + { + "code": "279.19", + "display": "Other deficiency of cell-mediated immunity" + }, + { + "code": "279.2", + "display": "Combined immunity deficiency" + }, + { + "code": "279.3", + "display": "Unspecified immunity deficiency" + }, + { + "code": "279.41", + "display": "Autoimmune lymphoproliferative syndrome" + }, + { + "code": "279.49", + "display": "Autoimmune disease, not elsewhere classified" + }, + { + "code": "279.50", + "display": "Graft-versus-host disease, unspecified" + }, + { + "code": "279.51", + "display": "Acute graft-versus-host disease" + }, + { + "code": "279.52", + "display": "Chronic graft-versus-host disease" + }, + { + "code": "279.53", + "display": "Acute on chronic graft-versus-host disease" + }, + { + "code": "279.8", + "display": "Other specified disorders involving the immune mechanism" + }, + { + "code": "279.9", + "display": "Unspecified disorder of immune mechanism" + } + ] + }, + "request": { + "method": "PUT", + "url": "CodeSystem/2.16.840.1.113883.6.42" + } + }, + { + "resource": { + "resourceType": "CodeSystem", + "id": "2.16.840.1.113883.6.12", + "url": "http://www.ama-assn.org/go/cpt", + "status": "draft", + "concept": [ + { + "code": "99408", + "display": "AUDIT/DAST 15-30 MIN" + }, + { + "code": "99409", + "display": "AUDIT/DAST OVER 30 MIN" + }, + { + "code": "3016F", + "display": "PT SCRND UNHLTHY OH USE" + }, + { + "code": "99377", + "display": "HOSPICE CARE SUPERVISION" + }, + { + "code": "99378", + "display": "HOSPICE CARE SUPERVISION" + }, + { + "code": "90791", + "display": "PSYCH DIAGNOSTIC EVALUATION" + }, + { + "code": "90792", + "display": "PSYCH DIAG EVAL W/MED SRVCS" + }, + { + "code": "90832", + "display": "PSYTX W PT 30 MINUTES" + }, + { + "code": "90834", + "display": "PSYTX W PT 45 MINUTES" + }, + { + "code": "90837", + "display": "PSYTX W PT 60 MINUTES" + }, + { + "code": "98960", + "display": "SELF-MGMT EDUC & TRAIN 1 PT" + }, + { + "code": "98961", + "display": "SELF-MGMT EDUC/TRAIN 2-4 PT" + }, + { + "code": "98962", + "display": "SELF-MGMT EDUC/TRAIN 5-8 PT" + }, + { + "code": "99078", + "display": "GROUP HEALTH EDUCATION" + }, + { + "code": "99201", + "display": "OFFICE/OUTPATIENT VISIT NEW" + }, + { + "code": "99202", + "display": "OFFICE/OUTPATIENT VISIT NEW" + }, + { + "code": "99203", + "display": "OFFICE/OUTPATIENT VISIT NEW" + }, + { + "code": "99204", + "display": "OFFICE/OUTPATIENT VISIT NEW" + }, + { + "code": "99205", + "display": "OFFICE/OUTPATIENT VISIT NEW" + }, + { + "code": "99211", + "display": "OFFICE/OUTPATIENT VISIT EST" + }, + { + "code": "99212", + "display": "OFFICE/OUTPATIENT VISIT EST" + }, + { + "code": "99213", + "display": "OFFICE/OUTPATIENT VISIT EST" + }, + { + "code": "99214", + "display": "OFFICE/OUTPATIENT VISIT EST" + }, + { + "code": "99215", + "display": "OFFICE/OUTPATIENT VISIT EST" + }, + { + "code": "99217", + "display": "OBSERVATION CARE DISCHARGE" + }, + { + "code": "99218", + "display": "INITIAL OBSERVATION CARE" + }, + { + "code": "99219", + "display": "INITIAL OBSERVATION CARE" + }, + { + "code": "99220", + "display": "INITIAL OBSERVATION CARE" + }, + { + "code": "99241", + "display": "OFFICE CONSULTATION" + }, + { + "code": "99242", + "display": "OFFICE CONSULTATION" + }, + { + "code": "99243", + "display": "OFFICE CONSULTATION" + }, + { + "code": "99244", + "display": "OFFICE CONSULTATION" + }, + { + "code": "99245", + "display": "OFFICE CONSULTATION" + }, + { + "code": "99341", + "display": "HOME VISIT NEW PATIENT" + }, + { + "code": "99342", + "display": "HOME VISIT NEW PATIENT" + }, + { + "code": "99343", + "display": "HOME VISIT NEW PATIENT" + }, + { + "code": "99344", + "display": "HOME VISIT NEW PATIENT" + }, + { + "code": "99345", + "display": "HOME VISIT NEW PATIENT" + }, + { + "code": "99347", + "display": "HOME VISIT EST PATIENT" + }, + { + "code": "99348", + "display": "HOME VISIT EST PATIENT" + }, + { + "code": "99349", + "display": "HOME VISIT EST PATIENT" + }, + { + "code": "99350", + "display": "HOME VISIT EST PATIENT" + }, + { + "code": "99381", + "display": "INIT PM E/M NEW PAT INFANT" + }, + { + "code": "99382", + "display": "INIT PM E/M NEW PAT 1-4 YRS" + }, + { + "code": "99383", + "display": "PREV VISIT NEW AGE 5-11" + }, + { + "code": "99384", + "display": "PREV VISIT NEW AGE 12-17" + }, + { + "code": "99385", + "display": "PREV VISIT NEW AGE 18-39" + }, + { + "code": "99386", + "display": "PREV VISIT NEW AGE 40-64" + }, + { + "code": "99387", + "display": "INIT PM E/M NEW PAT 65+ YRS" + }, + { + "code": "99391", + "display": "PER PM REEVAL EST PAT INFANT" + }, + { + "code": "99392", + "display": "PREV VISIT EST AGE 1-4" + }, + { + "code": "99393", + "display": "PREV VISIT EST AGE 5-11" + }, + { + "code": "99394", + "display": "PREV VISIT EST AGE 12-17" + }, + { + "code": "99395", + "display": "PREV VISIT EST AGE 18-39" + }, + { + "code": "99396", + "display": "PREV VISIT EST AGE 40-64" + }, + { + "code": "99397", + "display": "PER PM REEVAL EST PAT 65+ YR" + }, + { + "code": "99401", + "display": "PREVENTIVE COUNSELING INDIV" + }, + { + "code": "99402", + "display": "PREVENTIVE COUNSELING INDIV" + }, + { + "code": "99403", + "display": "PREVENTIVE COUNSELING INDIV" + }, + { + "code": "99404", + "display": "PREVENTIVE COUNSELING INDIV" + }, + { + "code": "99411", + "display": "PREVENTIVE COUNSELING GROUP" + }, + { + "code": "99412", + "display": "PREVENTIVE COUNSELING GROUP" + }, + { + "code": "99510", + "display": "HOME VISIT SING/M/FAM COUNS" + }, + { + "code": "90833", + "display": "PSYTX W PT W E/M 30 MIN" + }, + { + "code": "90836", + "display": "PSYTX W PT W E/M 45 MIN" + }, + { + "code": "90838", + "display": "PSYTX W PT W E/M 60 MIN" + }, + { + "code": "90839", + "display": "PSYTX CRISIS INITIAL 60 MIN" + }, + { + "code": "90845", + "display": "PSYCHOANALYSIS" + }, + { + "code": "90846", + "display": "FAMILY PSYTX W/O PT 50 MIN" + }, + { + "code": "90847", + "display": "FAMILY PSYTX W/PT 50 MIN" + }, + { + "code": "90849", + "display": "MULTIPLE FAMILY GROUP PSYTX" + }, + { + "code": "90853", + "display": "GROUP PSYCHOTHERAPY" + }, + { + "code": "90865", + "display": "NARCOSYNTHESIS" + }, + { + "code": "90867", + "display": "TCRANIAL MAGN STIM TX PLAN" + }, + { + "code": "90868", + "display": "TCRANIAL MAGN STIM TX DELI" + }, + { + "code": "90869", + "display": "TCRAN MAGN STIM REDETEMINE" + }, + { + "code": "90870", + "display": "ELECTROCONVULSIVE THERAPY" + }, + { + "code": "90875", + "display": "PSYCHOPHYSIOLOGICAL THERAPY" + }, + { + "code": "90876", + "display": "PSYCHOPHYSIOLOGICAL THERAPY" + }, + { + "code": "90880", + "display": "HYPNOTHERAPY" + }, + { + "code": "90887", + "display": "CONSULTATION WITH FAMILY" + }, + { + "code": "99366", + "display": "TEAM CONF W/PAT BY HC PROF" + }, + { + "code": "50" + }, + { + "code": "LT" + }, + { + "code": "77066" + }, + { + "code": "77065" + }, + { + "code": "77062" + }, + { + "code": "77061" + }, + { + "code": "77056" + }, + { + "code": "77055" + }, + { + "code": "77063" + }, + { + "code": "77057" + }, + { + "code": "77067" + }, + { + "code": "RT" + }, + { + "code": "19307" + }, + { + "code": "19306" + }, + { + "code": "19305" + }, + { + "code": "19303" + }, + { + "code": "19304" + }, + { + "code": "19240" + }, + { + "code": "19220" + }, + { + "code": "19200" + }, + { + "code": "19180" + }, + { + "code": "58953" + }, + { + "code": "58954" + }, + { + "code": "58956" + }, + { + "code": "51925" + }, + { + "code": "57540" + }, + { + "code": "57545" + }, + { + "code": "57550" + }, + { + "code": "57555" + }, + { + "code": "57556" + }, + { + "code": "58548" + }, + { + "code": "58570" + }, + { + "code": "58571" + }, + { + "code": "58572" + }, + { + "code": "58573" + }, + { + "code": "58550" + }, + { + "code": "58552" + }, + { + "code": "58553" + }, + { + "code": "58554" + }, + { + "code": "58240" + }, + { + "code": "58210" + }, + { + "code": "58951" + }, + { + "code": "59135" + }, + { + "code": "X1022450" + }, + { + "code": "58150" + }, + { + "code": "58152" + }, + { + "code": "58200" + }, + { + "code": "X1022451" + }, + { + "code": "58260" + }, + { + "code": "58267" + }, + { + "code": "58262" + }, + { + "code": "58263" + }, + { + "code": "58270" + }, + { + "code": "X1022567" + }, + { + "code": "58290" + }, + { + "code": "58293" + }, + { + "code": "58291" + }, + { + "code": "58292" + }, + { + "code": "58294" + }, + { + "code": "58285" + }, + { + "code": "X1022452" + }, + { + "code": "58275" + }, + { + "code": "58280" + }, + { + "code": "88147" + }, + { + "code": "88148" + }, + { + "code": "88142" + }, + { + "code": "88174" + }, + { + "code": "88143" + }, + { + "code": "88175" + }, + { + "code": "88141" + }, + { + "code": "88164" + }, + { + "code": "88166" + }, + { + "code": "88167" + }, + { + "code": "88165" + }, + { + "code": "88150" + }, + { + "code": "88152" + }, + { + "code": "88154" + }, + { + "code": "88153" + }, + { + "code": "87620" + }, + { + "code": "87621" + }, + { + "code": "87622" + }, + { + "code": "87624" + }, + { + "code": "87625" + }, + { + "code": "44388" + }, + { + "code": "44393" + }, + { + "code": "44389" + }, + { + "code": "44391" + }, + { + "code": "44390" + }, + { + "code": "44392" + }, + { + "code": "44394" + }, + { + "code": "44397" + }, + { + "code": "45378" + }, + { + "code": "44383" + }, + { + "code": "45380" + }, + { + "code": "45382" + }, + { + "code": "45386" + }, + { + "code": "45381" + }, + { + "code": "45391" + }, + { + "code": "45379" + }, + { + "code": "45384" + }, + { + "code": "45385" + }, + { + "code": "44387" + }, + { + "code": "45355" + }, + { + "code": "44401" + }, + { + "code": "44402" + }, + { + "code": "44403" + }, + { + "code": "44404" + }, + { + "code": "44405" + }, + { + "code": "44406" + }, + { + "code": "44407" + }, + { + "code": "44408" + }, + { + "code": "45388" + }, + { + "code": "45389" + }, + { + "code": "45390" + }, + { + "code": "45393" + }, + { + "code": "45398" + }, + { + "code": "74263" + }, + { + "code": "81528" + }, + { + "code": "45330" + }, + { + "code": "45339" + }, + { + "code": "45331" + }, + { + "code": "45334" + }, + { + "code": "45337" + }, + { + "code": "45340" + }, + { + "code": "45335" + }, + { + "code": "45341" + }, + { + "code": "45332" + }, + { + "code": "45333" + }, + { + "code": "45338" + }, + { + "code": "45345" + }, + { + "code": "45342" + }, + { + "code": "45346" + }, + { + "code": "45347" + }, + { + "code": "45349" + }, + { + "code": "45350" + }, + { + "code": "82274" + }, + { + "code": "82270" + }, + { + "code": "44156" + }, + { + "code": "44158" + }, + { + "code": "44157" + }, + { + "code": "44155" + }, + { + "code": "44151" + }, + { + "code": "44150" + }, + { + "code": "44211" + }, + { + "code": "44212" + }, + { + "code": "44210" + }, + { + "code": "44153" + }, + { + "code": "44152" + }, + { + "code": "96401", + "display": "CHEMO ANTI-NEOPL SQ/IM" + }, + { + "code": "96402", + "display": "CHEMO HORMON ANTINEOPL SQ/IM" + }, + { + "code": "96405", + "display": "CHEMO INTRALESIONAL UP TO 7" + }, + { + "code": "96406", + "display": "CHEMO INTRALESIONAL OVER 7" + }, + { + "code": "96409", + "display": "CHEMO IV PUSH SNGL DRUG" + }, + { + "code": "96411", + "display": "CHEMO IV PUSH ADDL DRUG" + }, + { + "code": "96413", + "display": "CHEMO IV INFUSION 1 HR" + }, + { + "code": "96415", + "display": "CHEMO IV INFUSION ADDL HR" + }, + { + "code": "96416", + "display": "CHEMO PROLONG INFUSE W/PUMP" + }, + { + "code": "96417", + "display": "CHEMO IV INFUS EACH ADDL SEQ" + }, + { + "code": "96420", + "display": "CHEMO IA PUSH TECNIQUE" + }, + { + "code": "96422", + "display": "CHEMO IA INFUSION UP TO 1 HR" + }, + { + "code": "96423", + "display": "CHEMO IA INFUSE EACH ADDL HR" + }, + { + "code": "96425", + "display": "CHEMOTHERAPY INFUSION METHOD" + }, + { + "code": "96440", + "display": "CHEMOTHERAPY INTRACAVITARY" + }, + { + "code": "96450", + "display": "CHEMOTHERAPY INTO CNS" + }, + { + "code": "96521", + "display": "REFILL/MAINT PORTABLE PUMP" + }, + { + "code": "96522", + "display": "REFILL/MAINT PUMP/RESVR SYST" + }, + { + "code": "96523", + "display": "IRRIG DRUG DELIVERY DEVICE" + }, + { + "code": "96542", + "display": "CHEMOTHERAPY INJECTION" + }, + { + "code": "96549", + "display": "CHEMOTHERAPY UNSPECIFIED" + }, + { + "code": "69930", + "display": "IMPLANT COCHLEAR DEVICE" + }, + { + "code": "90670", + "display": "PCV13 VACCINE IM" + }, + { + "code": "90732", + "display": "PPSV23 VACC 2 YRS+ SUBQ/IM" + } + ] + }, + "request": { + "method": "PUT", + "url": "CodeSystem/2.16.840.1.113883.6.12" + } + }, + { + "resource": { + "resourceType": "CodeSystem", + "id": "2.16.840.1.113883.6.4", + "url": "https://www.cms.gov/Medicare/Coding/ICD10/index.html", + "status": "draft", + "concept": [ + { + "code": "0HTV0ZZ" + }, + { + "code": "0HTU0ZZ" + }, + { + "code": "0HTT0ZZ" + }, + { + "code": "0UTC0ZZ" + }, + { + "code": "0UTC4ZZ" + }, + { + "code": "0UTC7ZZ" + }, + { + "code": "0UTC8ZZ" + }, + { + "code": "0DTE0ZZ" + }, + { + "code": "0DTE4ZZ" + }, + { + "code": "0DTE7ZZ" + }, + { + "code": "0DTE8ZZ" + } + ] + }, + "request": { + "method": "PUT", + "url": "CodeSystem/2.16.840.1.113883.6.4" + } + }, + { + "resource": { + "resourceType": "CodeSystem", + "id": "2.16.840.1.113883.6.90", + "url": "http://hl7.org/fhir/sid/icd-10-cm", + "status": "draft", + "concept": [ + { + "code": "Z71.41", + "display": "[Z71.41] Alcohol abuse counseling and surveillance of alcoholic" + }, + { + "code": "Z71.89", + "display": "[Z71.89] Other specified counseling" + }, + { + "code": "F10.10", + "display": "[F10.10] Alcohol abuse, uncomplicated" + }, + { + "code": "F10.120", + "display": "[F10.120] Alcohol abuse with intoxication, uncomplicated" + }, + { + "code": "F10.121", + "display": "[F10.121] Alcohol abuse with intoxication delirium" + }, + { + "code": "F10.129", + "display": "[F10.129] Alcohol abuse with intoxication, unspecified" + }, + { + "code": "F10.14", + "display": "[F10.14] Alcohol abuse with alcohol-induced mood disorder" + }, + { + "code": "F10.150", + "display": "[F10.150] Alcohol abuse with alcohol-induced psychotic disorder with delusions" + }, + { + "code": "F10.151", + "display": "[F10.151] Alcohol abuse with alcohol-induced psychotic disorder with hallucinations" + }, + { + "code": "F10.159", + "display": "[F10.159] Alcohol abuse with alcohol-induced psychotic disorder, unspecified" + }, + { + "code": "F10.180", + "display": "[F10.180] Alcohol abuse with alcohol-induced anxiety disorder" + }, + { + "code": "F10.181", + "display": "[F10.181] Alcohol abuse with alcohol-induced sexual dysfunction" + }, + { + "code": "F10.182", + "display": "[F10.182] Alcohol abuse with alcohol-induced sleep disorder" + }, + { + "code": "F10.188", + "display": "[F10.188] Alcohol abuse with other alcohol-induced disorder" + }, + { + "code": "F10.19", + "display": "[F10.19] Alcohol abuse with unspecified alcohol-induced disorder" + }, + { + "code": "F10.20", + "display": "[F10.20] Alcohol dependence, uncomplicated" + }, + { + "code": "F10.220", + "display": "[F10.220] Alcohol dependence with intoxication, uncomplicated" + }, + { + "code": "F10.221", + "display": "[F10.221] Alcohol dependence with intoxication delirium" + }, + { + "code": "F10.229", + "display": "[F10.229] Alcohol dependence with intoxication, unspecified" + }, + { + "code": "F10.230", + "display": "[F10.230] Alcohol dependence with withdrawal, uncomplicated" + }, + { + "code": "F10.231", + "display": "[F10.231] Alcohol dependence with withdrawal delirium" + }, + { + "code": "F10.232", + "display": "[F10.232] Alcohol dependence with withdrawal with perceptual disturbance" + }, + { + "code": "F10.239", + "display": "[F10.239] Alcohol dependence with withdrawal, unspecified" + }, + { + "code": "F10.24", + "display": "[F10.24] Alcohol dependence with alcohol-induced mood disorder" + }, + { + "code": "F10.250", + "display": "[F10.250] Alcohol dependence with alcohol-induced psychotic disorder with delusions" + }, + { + "code": "F10.251", + "display": "[F10.251] Alcohol dependence with alcohol-induced psychotic disorder with hallucinations" + }, + { + "code": "F10.259", + "display": "[F10.259] Alcohol dependence with alcohol-induced psychotic disorder, unspecified" + }, + { + "code": "F10.26", + "display": "[F10.26] Alcohol dependence with alcohol-induced persisting amnestic disorder" + }, + { + "code": "F10.27", + "display": "[F10.27] Alcohol dependence with alcohol-induced persisting dementia" + }, + { + "code": "F10.280", + "display": "[F10.280] Alcohol dependence with alcohol-induced anxiety disorder" + }, + { + "code": "F10.281", + "display": "[F10.281] Alcohol dependence with alcohol-induced sexual dysfunction" + }, + { + "code": "F10.282", + "display": "[F10.282] Alcohol dependence with alcohol-induced sleep disorder" + }, + { + "code": "F10.288", + "display": "[F10.288] Alcohol dependence with other alcohol-induced disorder" + }, + { + "code": "F10.29", + "display": "[F10.29] Alcohol dependence with unspecified alcohol-induced disorder" + }, + { + "code": "F10.920", + "display": "[F10.920] Alcohol use, unspecified with intoxication, uncomplicated" + }, + { + "code": "F10.921", + "display": "[F10.921] Alcohol use, unspecified with intoxication delirium" + }, + { + "code": "F10.929", + "display": "[F10.929] Alcohol use, unspecified with intoxication, unspecified" + }, + { + "code": "F10.94", + "display": "[F10.94] Alcohol use, unspecified with alcohol-induced mood disorder" + }, + { + "code": "F10.950", + "display": "[F10.950] Alcohol use, unspecified with alcohol-induced psychotic disorder with delusions" + }, + { + "code": "F10.951", + "display": "[F10.951] Alcohol use, unspecified with alcohol-induced psychotic disorder with hallucinations" + }, + { + "code": "F10.959", + "display": "[F10.959] Alcohol use, unspecified with alcohol-induced psychotic disorder, unspecified" + }, + { + "code": "F10.96", + "display": "[F10.96] Alcohol use, unspecified with alcohol-induced persisting amnestic disorder" + }, + { + "code": "F10.97", + "display": "[F10.97] Alcohol use, unspecified with alcohol-induced persisting dementia" + }, + { + "code": "F10.980", + "display": "[F10.980] Alcohol use, unspecified with alcohol-induced anxiety disorder" + }, + { + "code": "F10.981", + "display": "[F10.981] Alcohol use, unspecified with alcohol-induced sexual dysfunction" + }, + { + "code": "F10.982", + "display": "[F10.982] Alcohol use, unspecified with alcohol-induced sleep disorder" + }, + { + "code": "F10.988", + "display": "[F10.988] Alcohol use, unspecified with other alcohol-induced disorder" + }, + { + "code": "F10.99", + "display": "[F10.99] Alcohol use, unspecified with unspecified alcohol-induced disorder" + }, + { + "code": "K29.20", + "display": "[K29.20] Alcoholic gastritis without bleeding" + }, + { + "code": "K29.21", + "display": "[K29.21] Alcoholic gastritis with bleeding" + }, + { + "code": "K70.10", + "display": "[K70.10] Alcoholic hepatitis without ascites" + }, + { + "code": "K70.11", + "display": "[K70.11] Alcoholic hepatitis with ascites" + }, + { + "code": "F01.50", + "display": "[F01.50] Vascular dementia without behavioral disturbance" + }, + { + "code": "F01.51", + "display": "[F01.51] Vascular dementia with behavioral disturbance" + }, + { + "code": "F02.80", + "display": "[F02.80] Dementia in other diseases classified elsewhere without behavioral disturbance" + }, + { + "code": "F02.81", + "display": "[F02.81] Dementia in other diseases classified elsewhere with behavioral disturbance" + }, + { + "code": "F03.90", + "display": "[F03.90] Unspecified dementia without behavioral disturbance" + }, + { + "code": "F03.91", + "display": "[F03.91] Unspecified dementia with behavioral disturbance" + }, + { + "code": "F04", + "display": "[F04] Amnestic disorder due to known physiological condition" + }, + { + "code": "F13.27", + "display": "[F13.27] Sedative, hypnotic or anxiolytic dependence with sedative, hypnotic or anxiolytic-induced persisting dementia" + }, + { + "code": "F13.97", + "display": "[F13.97] Sedative, hypnotic or anxiolytic use, unspecified with sedative, hypnotic or anxiolytic-induced persisting dementia" + }, + { + "code": "F18.17", + "display": "[F18.17] Inhalant abuse with inhalant-induced dementia" + }, + { + "code": "F18.27", + "display": "[F18.27] Inhalant dependence with inhalant-induced dementia" + }, + { + "code": "F18.97", + "display": "[F18.97] Inhalant use, unspecified with inhalant-induced persisting dementia" + }, + { + "code": "F19.17", + "display": "[F19.17] Other psychoactive substance abuse with psychoactive substance-induced persisting dementia" + }, + { + "code": "F19.27", + "display": "[F19.27] Other psychoactive substance dependence with psychoactive substance-induced persisting dementia" + }, + { + "code": "F19.97", + "display": "[F19.97] Other psychoactive substance use, unspecified with psychoactive substance-induced persisting dementia" + }, + { + "code": "G30.0", + "display": "[G30.0] Alzheimer's disease with early onset" + }, + { + "code": "G30.1", + "display": "[G30.1] Alzheimer's disease with late onset" + }, + { + "code": "G30.8", + "display": "[G30.8] Other Alzheimer's disease" + }, + { + "code": "G30.9", + "display": "[G30.9] Alzheimer's disease, unspecified" + }, + { + "code": "G31.83", + "display": "[G31.83] Dementia with Lewy bodies" + }, + { + "code": "F30.10", + "display": "[F30.10] Manic episode without psychotic symptoms, unspecified" + }, + { + "code": "F30.11", + "display": "[F30.11] Manic episode without psychotic symptoms, mild" + }, + { + "code": "F30.12", + "display": "[F30.12] Manic episode without psychotic symptoms, moderate" + }, + { + "code": "F30.13", + "display": "[F30.13] Manic episode, severe, without psychotic symptoms" + }, + { + "code": "F30.2", + "display": "[F30.2] Manic episode, severe with psychotic symptoms" + }, + { + "code": "F30.3", + "display": "[F30.3] Manic episode in partial remission" + }, + { + "code": "F30.4", + "display": "[F30.4] Manic episode in full remission" + }, + { + "code": "F30.8", + "display": "[F30.8] Other manic episodes" + }, + { + "code": "F30.9", + "display": "[F30.9] Manic episode, unspecified" + }, + { + "code": "F31.0", + "display": "[F31.0] Bipolar disorder, current episode hypomanic" + }, + { + "code": "F31.10", + "display": "[F31.10] Bipolar disorder, current episode manic without psychotic features, unspecified" + }, + { + "code": "F31.11", + "display": "[F31.11] Bipolar disorder, current episode manic without psychotic features, mild" + }, + { + "code": "F31.12", + "display": "[F31.12] Bipolar disorder, current episode manic without psychotic features, moderate" + }, + { + "code": "F31.13", + "display": "[F31.13] Bipolar disorder, current episode manic without psychotic features, severe" + }, + { + "code": "F31.2", + "display": "[F31.2] Bipolar disorder, current episode manic severe with psychotic features" + }, + { + "code": "F31.30", + "display": "[F31.30] Bipolar disorder, current episode depressed, mild or moderate severity, unspecified" + }, + { + "code": "F31.31", + "display": "[F31.31] Bipolar disorder, current episode depressed, mild" + }, + { + "code": "F31.32", + "display": "[F31.32] Bipolar disorder, current episode depressed, moderate" + }, + { + "code": "F31.4", + "display": "[F31.4] Bipolar disorder, current episode depressed, severe, without psychotic features" + }, + { + "code": "F31.5", + "display": "[F31.5] Bipolar disorder, current episode depressed, severe, with psychotic features" + }, + { + "code": "F31.60", + "display": "[F31.60] Bipolar disorder, current episode mixed, unspecified" + }, + { + "code": "F31.61", + "display": "[F31.61] Bipolar disorder, current episode mixed, mild" + }, + { + "code": "F31.62", + "display": "[F31.62] Bipolar disorder, current episode mixed, moderate" + }, + { + "code": "F31.63", + "display": "[F31.63] Bipolar disorder, current episode mixed, severe, without psychotic features" + }, + { + "code": "F31.64", + "display": "[F31.64] Bipolar disorder, current episode mixed, severe, with psychotic features" + }, + { + "code": "F31.70", + "display": "[F31.70] Bipolar disorder, currently in remission, most recent episode unspecified" + }, + { + "code": "F31.71", + "display": "[F31.71] Bipolar disorder, in partial remission, most recent episode hypomanic" + }, + { + "code": "F31.72", + "display": "[F31.72] Bipolar disorder, in full remission, most recent episode hypomanic" + }, + { + "code": "F31.73", + "display": "[F31.73] Bipolar disorder, in partial remission, most recent episode manic" + }, + { + "code": "F31.74", + "display": "[F31.74] Bipolar disorder, in full remission, most recent episode manic" + }, + { + "code": "F31.75", + "display": "[F31.75] Bipolar disorder, in partial remission, most recent episode depressed" + }, + { + "code": "F31.76", + "display": "[F31.76] Bipolar disorder, in full remission, most recent episode depressed" + }, + { + "code": "F31.77", + "display": "[F31.77] Bipolar disorder, in partial remission, most recent episode mixed" + }, + { + "code": "F31.78", + "display": "[F31.78] Bipolar disorder, in full remission, most recent episode mixed" + }, + { + "code": "F32.0", + "display": "[F32.0] Major depressive disorder, single episode, mild" + }, + { + "code": "F32.1", + "display": "[F32.1] Major depressive disorder, single episode, moderate" + }, + { + "code": "F32.2", + "display": "[F32.2] Major depressive disorder, single episode, severe without psychotic features" + }, + { + "code": "F32.3", + "display": "[F32.3] Major depressive disorder, single episode, severe with psychotic features" + }, + { + "code": "F32.4", + "display": "[F32.4] Major depressive disorder, single episode, in partial remission" + }, + { + "code": "F32.5", + "display": "[F32.5] Major depressive disorder, single episode, in full remission" + }, + { + "code": "F32.9", + "display": "[F32.9] Major depressive disorder, single episode, unspecified" + }, + { + "code": "F33.0", + "display": "[F33.0] Major depressive disorder, recurrent, mild" + }, + { + "code": "F33.1", + "display": "[F33.1] Major depressive disorder, recurrent, moderate" + }, + { + "code": "F33.2", + "display": "[F33.2] Major depressive disorder, recurrent severe without psychotic features" + }, + { + "code": "F33.3", + "display": "[F33.3] Major depressive disorder, recurrent, severe with psychotic symptoms" + }, + { + "code": "F33.40", + "display": "[F33.40] Major depressive disorder, recurrent, in remission, unspecified" + }, + { + "code": "F33.41", + "display": "[F33.41] Major depressive disorder, recurrent, in partial remission" + }, + { + "code": "F33.42", + "display": "[F33.42] Major depressive disorder, recurrent, in full remission" + }, + { + "code": "F33.9", + "display": "[F33.9] Major depressive disorder, recurrent, unspecified" + }, + { + "code": "F34.1", + "display": "[F34.1] Dysthymic disorder" + }, + { + "code": "F31.81", + "display": "[F31.81] Bipolar II disorder" + }, + { + "code": "F31.89", + "display": "[F31.89] Other bipolar disorder" + }, + { + "code": "F31.9", + "display": "[F31.9] Bipolar disorder, unspecified" + }, + { + "code": "F34.0", + "display": "[F34.0] Cyclothymic disorder" + }, + { + "code": "F60.3", + "display": "[F60.3] Borderline personality disorder" + }, + { + "code": "F60.4", + "display": "[F60.4] Histrionic personality disorder" + }, + { + "code": "F68.10", + "display": "[F68.10] Factitious disorder, unspecified" + }, + { + "code": "F68.11", + "display": "[F68.11] Factitious disorder with predominantly psychological signs and symptoms" + }, + { + "code": "F68.12", + "display": "[F68.12] Factitious disorder with predominantly physical signs and symptoms" + }, + { + "code": "F68.13", + "display": "[F68.13] Factitious disorder with combined psychological and physical signs and symptoms" + }, + { + "code": "F84.0", + "display": "[F84.0] Autistic disorder" + }, + { + "code": "F84.3", + "display": "[F84.3] Other childhood disintegrative disorder" + }, + { + "code": "F84.8", + "display": "[F84.8] Other pervasive developmental disorders" + }, + { + "code": "F84.9", + "display": "[F84.9] Pervasive developmental disorder, unspecified" + }, + { + "code": "F20.0", + "display": "[F20.0] Paranoid schizophrenia" + }, + { + "code": "F20.1", + "display": "[F20.1] Disorganized schizophrenia" + }, + { + "code": "F20.2", + "display": "[F20.2] Catatonic schizophrenia" + }, + { + "code": "F20.3", + "display": "[F20.3] Undifferentiated schizophrenia" + }, + { + "code": "F20.5", + "display": "[F20.5] Residual schizophrenia" + }, + { + "code": "F20.81", + "display": "[F20.81] Schizophreniform disorder" + }, + { + "code": "F20.89", + "display": "[F20.89] Other schizophrenia" + }, + { + "code": "F20.9", + "display": "[F20.9] Schizophrenia, unspecified" + }, + { + "code": "F23", + "display": "[F23] Brief psychotic disorder" + }, + { + "code": "F25.0", + "display": "[F25.0] Schizoaffective disorder, bipolar type" + }, + { + "code": "F25.1", + "display": "[F25.1] Schizoaffective disorder, depressive type" + }, + { + "code": "F25.8", + "display": "[F25.8] Other schizoaffective disorders" + }, + { + "code": "F25.9", + "display": "[F25.9] Schizoaffective disorder, unspecified" + }, + { + "code": "F28", + "display": "[F28] Other psychotic disorder not due to a substance or known physiological condition" + }, + { + "code": "Z71.82", + "display": "[Z71.82] Exercise counseling" + }, + { + "code": "F32.81", + "display": "[F32.81] Premenstrual dysphoric disorder" + }, + { + "code": "F32.89", + "display": "[F32.89] Other specified depressive episodes" + }, + { + "code": "F43.21", + "display": "[F43.21] Adjustment disorder with depressed mood" + }, + { + "code": "F43.23", + "display": "[F43.23] Adjustment disorder with mixed anxiety and depressed mood" + }, + { + "code": "F21", + "display": "[F21] Schizotypal disorder" + }, + { + "code": "F22", + "display": "[F22] Delusional disorders" + }, + { + "code": "F24", + "display": "[F24] Shared psychotic disorder" + }, + { + "code": "F29", + "display": "[F29] Unspecified psychosis not due to a substance or known physiological condition" + }, + { + "code": "F32.8", + "display": "[F32.8] Other depressive episodes" + }, + { + "code": "F33.8", + "display": "[F33.8] Other recurrent depressive disorders" + }, + { + "code": "F34.8", + "display": "[F34.8] Other persistent mood [affective] disorders" + }, + { + "code": "F34.81", + "display": "[F34.81] Disruptive mood dysregulation disorder" + }, + { + "code": "F34.89", + "display": "[F34.89] Other specified persistent mood disorders" + }, + { + "code": "F34.9", + "display": "[F34.9] Persistent mood [affective] disorder, unspecified" + }, + { + "code": "F39", + "display": "[F39] Unspecified mood [affective] disorder" + }, + { + "code": "F42", + "display": "[F42] Obsessive-compulsive disorder" + }, + { + "code": "F42.2", + "display": "[F42.2] Mixed obsessional thoughts and acts" + }, + { + "code": "F42.3", + "display": "[F42.3] Hoarding disorder" + }, + { + "code": "F42.4", + "display": "[F42.4] Excoriation (skin-picking) disorder" + }, + { + "code": "F42.8", + "display": "[F42.8] Other obsessive-compulsive disorder" + }, + { + "code": "F42.9", + "display": "[F42.9] Obsessive-compulsive disorder, unspecified" + }, + { + "code": "F43.0", + "display": "[F43.0] Acute stress reaction" + }, + { + "code": "F43.10", + "display": "[F43.10] Post-traumatic stress disorder, unspecified" + }, + { + "code": "F43.11", + "display": "[F43.11] Post-traumatic stress disorder, acute" + }, + { + "code": "F43.12", + "display": "[F43.12] Post-traumatic stress disorder, chronic" + }, + { + "code": "F43.20", + "display": "[F43.20] Adjustment disorder, unspecified" + }, + { + "code": "F43.22", + "display": "[F43.22] Adjustment disorder with anxiety" + }, + { + "code": "F43.24", + "display": "[F43.24] Adjustment disorder with disturbance of conduct" + }, + { + "code": "F43.25", + "display": "[F43.25] Adjustment disorder with mixed disturbance of emotions and conduct" + }, + { + "code": "F43.29", + "display": "[F43.29] Adjustment disorder with other symptoms" + }, + { + "code": "F43.8", + "display": "[F43.8] Other reactions to severe stress" + }, + { + "code": "F43.9", + "display": "[F43.9] Reaction to severe stress, unspecified" + }, + { + "code": "F44.89", + "display": "[F44.89] Other dissociative and conversion disorders" + }, + { + "code": "F53", + "display": "[F53] Puerperal psychosis" + }, + { + "code": "F60.0", + "display": "[F60.0] Paranoid personality disorder" + }, + { + "code": "F60.1", + "display": "[F60.1] Schizoid personality disorder" + }, + { + "code": "F60.2", + "display": "[F60.2] Antisocial personality disorder" + }, + { + "code": "F60.5", + "display": "[F60.5] Obsessive-compulsive personality disorder" + }, + { + "code": "F60.6", + "display": "[F60.6] Avoidant personality disorder" + }, + { + "code": "F60.7", + "display": "[F60.7] Dependent personality disorder" + }, + { + "code": "F60.81", + "display": "[F60.81] Narcissistic personality disorder" + }, + { + "code": "F60.89", + "display": "[F60.89] Other specific personality disorders" + }, + { + "code": "F60.9", + "display": "[F60.9] Personality disorder, unspecified" + }, + { + "code": "F63.0", + "display": "[F63.0] Pathological gambling" + }, + { + "code": "F63.1", + "display": "[F63.1] Pyromania" + }, + { + "code": "F63.2", + "display": "[F63.2] Kleptomania" + }, + { + "code": "F63.3", + "display": "[F63.3] Trichotillomania" + }, + { + "code": "F63.81", + "display": "[F63.81] Intermittent explosive disorder" + }, + { + "code": "F63.89", + "display": "[F63.89] Other impulse disorders" + }, + { + "code": "F63.9", + "display": "[F63.9] Impulse disorder, unspecified" + }, + { + "code": "F68.8", + "display": "[F68.8] Other specified disorders of adult personality and behavior" + }, + { + "code": "F84.2", + "display": "[F84.2] Rett's syndrome" + }, + { + "code": "F84.5", + "display": "[F84.5] Asperger's syndrome" + }, + { + "code": "F90.0", + "display": "[F90.0] Attention-deficit hyperactivity disorder, predominantly inattentive type" + }, + { + "code": "F90.1", + "display": "[F90.1] Attention-deficit hyperactivity disorder, predominantly hyperactive type" + }, + { + "code": "F90.2", + "display": "[F90.2] Attention-deficit hyperactivity disorder, combined type" + }, + { + "code": "F90.8", + "display": "[F90.8] Attention-deficit hyperactivity disorder, other type" + }, + { + "code": "F90.9", + "display": "[F90.9] Attention-deficit hyperactivity disorder, unspecified type" + }, + { + "code": "F91.0", + "display": "[F91.0] Conduct disorder confined to family context" + }, + { + "code": "F91.1", + "display": "[F91.1] Conduct disorder, childhood-onset type" + }, + { + "code": "F91.2", + "display": "[F91.2] Conduct disorder, adolescent-onset type" + }, + { + "code": "F91.3", + "display": "[F91.3] Oppositional defiant disorder" + }, + { + "code": "F91.8", + "display": "[F91.8] Other conduct disorders" + }, + { + "code": "F91.9", + "display": "[F91.9] Conduct disorder, unspecified" + }, + { + "code": "F93.0", + "display": "[F93.0] Separation anxiety disorder of childhood" + }, + { + "code": "F93.8", + "display": "[F93.8] Other childhood emotional disorders" + }, + { + "code": "F93.9", + "display": "[F93.9] Childhood emotional disorder, unspecified" + }, + { + "code": "F94.0", + "display": "[F94.0] Selective mutism" + }, + { + "code": "F94.1", + "display": "[F94.1] Reactive attachment disorder of childhood" + }, + { + "code": "F94.2", + "display": "[F94.2] Disinhibited attachment disorder of childhood" + }, + { + "code": "F94.8", + "display": "[F94.8] Other childhood disorders of social functioning" + }, + { + "code": "F94.9", + "display": "[F94.9] Childhood disorder of social functioning, unspecified" + }, + { + "code": "Z90.12" + }, + { + "code": "Z90.11" + }, + { + "code": "Z90.13" + }, + { + "code": "Q51.5" + }, + { + "code": "Z90.710" + }, + { + "code": "Z90.712" + }, + { + "code": "C18.0" + }, + { + "code": "C18.1" + }, + { + "code": "C18.2" + }, + { + "code": "C18.3" + }, + { + "code": "C18.4" + }, + { + "code": "C18.5" + }, + { + "code": "C18.6" + }, + { + "code": "C18.7" + }, + { + "code": "C18.8" + }, + { + "code": "C18.9" + }, + { + "code": "C19" + }, + { + "code": "C20" + }, + { + "code": "C21.2" + }, + { + "code": "C21.8" + }, + { + "code": "C78.5" + }, + { + "code": "Z85.038" + }, + { + "code": "Z85.048" + }, + { + "code": "T80.52XA", + "display": "[T80.52XA] Anaphylactic reaction due to vaccination, initial encounter" + }, + { + "code": "T80.52XD", + "display": "[T80.52XD] Anaphylactic reaction due to vaccination, subsequent encounter" + }, + { + "code": "T80.52XS", + "display": "[T80.52XS] Anaphylactic reaction due to vaccination, sequela" + }, + { + "code": "30230AZ", + "display": "[30230AZ] Transfusion of Embryonic Stem Cells into Peripheral Vein, Open Approach" + }, + { + "code": "30230G0", + "display": "[30230G0] Transfusion of Autologous Bone Marrow into Peripheral Vein, Open Approach" + }, + { + "code": "30230G1", + "display": "[30230G1] Transfusion of Nonautologous Bone Marrow into Peripheral Vein, Open Approach" + }, + { + "code": "30230G2", + "display": "[30230G2] Transfusion of Allogeneic Related Bone Marrow into Peripheral Vein, Open Approach" + }, + { + "code": "30230G3", + "display": "[30230G3] Transfusion of Allogeneic Unrelated Bone Marrow into Peripheral Vein, Open Approach" + }, + { + "code": "30230G4", + "display": "[30230G4] Transfusion of Allogeneic Unspecified Bone Marrow into Peripheral Vein, Open Approach" + }, + { + "code": "30230X0", + "display": "[30230X0] Transfusion of Autologous Cord Blood Stem Cells into Peripheral Vein, Open Approach" + }, + { + "code": "30230X1", + "display": "[30230X1] Transfusion of Nonautologous Cord Blood Stem Cells into Peripheral Vein, Open Approach" + }, + { + "code": "30230X2", + "display": "[30230X2] Transfusion of Allogeneic Related Cord Blood Stem Cells into Peripheral Vein, Open Approach" + }, + { + "code": "30230X3", + "display": "[30230X3] Transfusion of Allogeneic Unrelated Cord Blood Stem Cells into Peripheral Vein, Open Approach" + }, + { + "code": "30230X4", + "display": "[30230X4] Transfusion of Allogeneic Unspecified Cord Blood Stem Cells into Peripheral Vein, Open Approach" + }, + { + "code": "30230Y0", + "display": "[30230Y0] Transfusion of Autologous Hematopoietic Stem Cells into Peripheral Vein, Open Approach" + }, + { + "code": "30230Y1", + "display": "[30230Y1] Transfusion of Nonautologous Hematopoietic Stem Cells into Peripheral Vein, Open Approach" + }, + { + "code": "30230Y2", + "display": "[30230Y2] Transfusion of Allogeneic Related Hematopoietic Stem Cells into Peripheral Vein, Open Approach" + }, + { + "code": "30230Y3", + "display": "[30230Y3] Transfusion of Allogeneic Unrelated Hematopoietic Stem Cells into Peripheral Vein, Open Approach" + }, + { + "code": "30230Y4", + "display": "[30230Y4] Transfusion of Allogeneic Unspecified Hematopoietic Stem Cells into Peripheral Vein, Open Approach" + }, + { + "code": "30233AZ", + "display": "[30233AZ] Transfusion of Embryonic Stem Cells into Peripheral Vein, Percutaneous Approach" + }, + { + "code": "30233G0", + "display": "[30233G0] Transfusion of Autologous Bone Marrow into Peripheral Vein, Percutaneous Approach" + }, + { + "code": "30233G1", + "display": "[30233G1] Transfusion of Nonautologous Bone Marrow into Peripheral Vein, Percutaneous Approach" + }, + { + "code": "30233G2", + "display": "[30233G2] Transfusion of Allogeneic Related Bone Marrow into Peripheral Vein, Percutaneous Approach" + }, + { + "code": "30233G3", + "display": "[30233G3] Transfusion of Allogeneic Unrelated Bone Marrow into Peripheral Vein, Percutaneous Approach" + }, + { + "code": "30233G4", + "display": "[30233G4] Transfusion of Allogeneic Unspecified Bone Marrow into Peripheral Vein, Percutaneous Approach" + }, + { + "code": "30233X0", + "display": "[30233X0] Transfusion of Autologous Cord Blood Stem Cells into Peripheral Vein, Percutaneous Approach" + }, + { + "code": "30233X1", + "display": "[30233X1] Transfusion of Nonautologous Cord Blood Stem Cells into Peripheral Vein, Percutaneous Approach" + }, + { + "code": "30233X2", + "display": "[30233X2] Transfusion of Allogeneic Related Cord Blood Stem Cells into Peripheral Vein, Percutaneous Approach" + }, + { + "code": "30233X3", + "display": "[30233X3] Transfusion of Allogeneic Unrelated Cord Blood Stem Cells into Peripheral Vein, Percutaneous Approach" + }, + { + "code": "30233X4", + "display": "[30233X4] Transfusion of Allogeneic Unspecified Cord Blood Stem Cells into Peripheral Vein, Percutaneous Approach" + }, + { + "code": "30233Y0", + "display": "[30233Y0] Transfusion of Autologous Hematopoietic Stem Cells into Peripheral Vein, Percutaneous Approach" + }, + { + "code": "30233Y1", + "display": "[30233Y1] Transfusion of Nonautologous Hematopoietic Stem Cells into Peripheral Vein, Percutaneous Approach" + }, + { + "code": "30233Y2", + "display": "[30233Y2] Transfusion of Allogeneic Related Hematopoietic Stem Cells into Peripheral Vein, Percutaneous Approach" + }, + { + "code": "30233Y3", + "display": "[30233Y3] Transfusion of Allogeneic Unrelated Hematopoietic Stem Cells into Peripheral Vein, Percutaneous Approach" + }, + { + "code": "30233Y4", + "display": "[30233Y4] Transfusion of Allogeneic Unspecified Hematopoietic Stem Cells into Peripheral Vein, Percutaneous Approach" + }, + { + "code": "30240AZ", + "display": "[30240AZ] Transfusion of Embryonic Stem Cells into Central Vein, Open Approach" + }, + { + "code": "30240G0", + "display": "[30240G0] Transfusion of Autologous Bone Marrow into Central Vein, Open Approach" + }, + { + "code": "30240G1", + "display": "[30240G1] Transfusion of Nonautologous Bone Marrow into Central Vein, Open Approach" + }, + { + "code": "30240G2", + "display": "[30240G2] Transfusion of Allogeneic Related Bone Marrow into Central Vein, Open Approach" + }, + { + "code": "30240G3", + "display": "[30240G3] Transfusion of Allogeneic Unrelated Bone Marrow into Central Vein, Open Approach" + }, + { + "code": "30240G4", + "display": "[30240G4] Transfusion of Allogeneic Unspecified Bone Marrow into Central Vein, Open Approach" + }, + { + "code": "30240X0", + "display": "[30240X0] Transfusion of Autologous Cord Blood Stem Cells into Central Vein, Open Approach" + }, + { + "code": "30240X1", + "display": "[30240X1] Transfusion of Nonautologous Cord Blood Stem Cells into Central Vein, Open Approach" + }, + { + "code": "30240X2", + "display": "[30240X2] Transfusion of Allogeneic Related Cord Blood Stem Cells into Central Vein, Open Approach" + }, + { + "code": "30240X3", + "display": "[30240X3] Transfusion of Allogeneic Unrelated Cord Blood Stem Cells into Central Vein, Open Approach" + }, + { + "code": "30240X4", + "display": "[30240X4] Transfusion of Allogeneic Unspecified Cord Blood Stem Cells into Central Vein, Open Approach" + }, + { + "code": "30240Y0", + "display": "[30240Y0] Transfusion of Autologous Hematopoietic Stem Cells into Central Vein, Open Approach" + }, + { + "code": "30240Y1", + "display": "[30240Y1] Transfusion of Nonautologous Hematopoietic Stem Cells into Central Vein, Open Approach" + }, + { + "code": "30240Y2", + "display": "[30240Y2] Transfusion of Allogeneic Related Hematopoietic Stem Cells into Central Vein, Open Approach" + }, + { + "code": "30240Y3", + "display": "[30240Y3] Transfusion of Allogeneic Unrelated Hematopoietic Stem Cells into Central Vein, Open Approach" + }, + { + "code": "30240Y4", + "display": "[30240Y4] Transfusion of Allogeneic Unspecified Hematopoietic Stem Cells into Central Vein, Open Approach" + }, + { + "code": "30243AZ", + "display": "[30243AZ] Transfusion of Embryonic Stem Cells into Central Vein, Percutaneous Approach" + }, + { + "code": "30243G0", + "display": "[30243G0] Transfusion of Autologous Bone Marrow into Central Vein, Percutaneous Approach" + }, + { + "code": "30243G1", + "display": "[30243G1] Transfusion of Nonautologous Bone Marrow into Central Vein, Percutaneous Approach" + }, + { + "code": "30243G2", + "display": "[30243G2] Transfusion of Allogeneic Related Bone Marrow into Central Vein, Percutaneous Approach" + }, + { + "code": "30243G3", + "display": "[30243G3] Transfusion of Allogeneic Unrelated Bone Marrow into Central Vein, Percutaneous Approach" + }, + { + "code": "30243G4", + "display": "[30243G4] Transfusion of Allogeneic Unspecified Bone Marrow into Central Vein, Percutaneous Approach" + }, + { + "code": "30243X0", + "display": "[30243X0] Transfusion of Autologous Cord Blood Stem Cells into Central Vein, Percutaneous Approach" + }, + { + "code": "30243X1", + "display": "[30243X1] Transfusion of Nonautologous Cord Blood Stem Cells into Central Vein, Percutaneous Approach" + }, + { + "code": "30243X2", + "display": "[30243X2] Transfusion of Allogeneic Related Cord Blood Stem Cells into Central Vein, Percutaneous Approach" + }, + { + "code": "30243X3", + "display": "[30243X3] Transfusion of Allogeneic Unrelated Cord Blood Stem Cells into Central Vein, Percutaneous Approach" + }, + { + "code": "30243X4", + "display": "[30243X4] Transfusion of Allogeneic Unspecified Cord Blood Stem Cells into Central Vein, Percutaneous Approach" + }, + { + "code": "30243Y0", + "display": "[30243Y0] Transfusion of Autologous Hematopoietic Stem Cells into Central Vein, Percutaneous Approach" + }, + { + "code": "30243Y1", + "display": "[30243Y1] Transfusion of Nonautologous Hematopoietic Stem Cells into Central Vein, Percutaneous Approach" + }, + { + "code": "30243Y2", + "display": "[30243Y2] Transfusion of Allogeneic Related Hematopoietic Stem Cells into Central Vein, Percutaneous Approach" + }, + { + "code": "30243Y3", + "display": "[30243Y3] Transfusion of Allogeneic Unrelated Hematopoietic Stem Cells into Central Vein, Percutaneous Approach" + }, + { + "code": "30243Y4", + "display": "[30243Y4] Transfusion of Allogeneic Unspecified Hematopoietic Stem Cells into Central Vein, Percutaneous Approach" + }, + { + "code": "30250G0", + "display": "[30250G0] Transfusion of Autologous Bone Marrow into Peripheral Artery, Open Approach" + }, + { + "code": "30250G1", + "display": "[30250G1] Transfusion of Nonautologous Bone Marrow into Peripheral Artery, Open Approach" + }, + { + "code": "30250X0", + "display": "[30250X0] Transfusion of Autologous Cord Blood Stem Cells into Peripheral Artery, Open Approach" + }, + { + "code": "30250X1", + "display": "[30250X1] Transfusion of Nonautologous Cord Blood Stem Cells into Peripheral Artery, Open Approach" + }, + { + "code": "30250Y0", + "display": "[30250Y0] Transfusion of Autologous Hematopoietic Stem Cells into Peripheral Artery, Open Approach" + }, + { + "code": "30250Y1", + "display": "[30250Y1] Transfusion of Nonautologous Hematopoietic Stem Cells into Peripheral Artery, Open Approach" + }, + { + "code": "30253G0", + "display": "[30253G0] Transfusion of Autologous Bone Marrow into Peripheral Artery, Percutaneous Approach" + }, + { + "code": "30253G1", + "display": "[30253G1] Transfusion of Nonautologous Bone Marrow into Peripheral Artery, Percutaneous Approach" + }, + { + "code": "30253X0", + "display": "[30253X0] Transfusion of Autologous Cord Blood Stem Cells into Peripheral Artery, Percutaneous Approach" + }, + { + "code": "30253X1", + "display": "[30253X1] Transfusion of Nonautologous Cord Blood Stem Cells into Peripheral Artery, Percutaneous Approach" + }, + { + "code": "30253Y0", + "display": "[30253Y0] Transfusion of Autologous Hematopoietic Stem Cells into Peripheral Artery, Percutaneous Approach" + }, + { + "code": "30253Y1", + "display": "[30253Y1] Transfusion of Nonautologous Hematopoietic Stem Cells into Peripheral Artery, Percutaneous Approach" + }, + { + "code": "30260G0", + "display": "[30260G0] Transfusion of Autologous Bone Marrow into Central Artery, Open Approach" + }, + { + "code": "30260G1", + "display": "[30260G1] Transfusion of Nonautologous Bone Marrow into Central Artery, Open Approach" + }, + { + "code": "30260X0", + "display": "[30260X0] Transfusion of Autologous Cord Blood Stem Cells into Central Artery, Open Approach" + }, + { + "code": "30260X1", + "display": "[30260X1] Transfusion of Nonautologous Cord Blood Stem Cells into Central Artery, Open Approach" + }, + { + "code": "30260Y0", + "display": "[30260Y0] Transfusion of Autologous Hematopoietic Stem Cells into Central Artery, Open Approach" + }, + { + "code": "30260Y1", + "display": "[30260Y1] Transfusion of Nonautologous Hematopoietic Stem Cells into Central Artery, Open Approach" + }, + { + "code": "30263G0", + "display": "[30263G0] Transfusion of Autologous Bone Marrow into Central Artery, Percutaneous Approach" + }, + { + "code": "30263G1", + "display": "[30263G1] Transfusion of Nonautologous Bone Marrow into Central Artery, Percutaneous Approach" + }, + { + "code": "30263X0", + "display": "[30263X0] Transfusion of Autologous Cord Blood Stem Cells into Central Artery, Percutaneous Approach" + }, + { + "code": "30263X1", + "display": "[30263X1] Transfusion of Nonautologous Cord Blood Stem Cells into Central Artery, Percutaneous Approach" + }, + { + "code": "30263Y0", + "display": "[30263Y0] Transfusion of Autologous Hematopoietic Stem Cells into Central Artery, Percutaneous Approach" + }, + { + "code": "30263Y1", + "display": "[30263Y1] Transfusion of Nonautologous Hematopoietic Stem Cells into Central Artery, Percutaneous Approach" + }, + { + "code": "G96.0", + "display": "[G96.0] Cerebrospinal fluid leak" + }, + { + "code": "G97.0", + "display": "[G97.0] Cerebrospinal fluid leak from spinal puncture" + }, + { + "code": "Z51.0", + "display": "[Z51.0] Encounter for antineoplastic radiation therapy" + }, + { + "code": "Z51.11", + "display": "[Z51.11] Encounter for antineoplastic chemotherapy" + }, + { + "code": "Z51.12", + "display": "[Z51.12] Encounter for antineoplastic immunotherapy" + }, + { + "code": "Z96.20", + "display": "[Z96.20] Presence of otological and audiological implant, unspecified" + }, + { + "code": "Z96.21", + "display": "[Z96.21] Cochlear implant status" + }, + { + "code": "D80.0", + "display": "[D80.0] Hereditary hypogammaglobulinemia" + }, + { + "code": "D80.1", + "display": "[D80.1] Nonfamilial hypogammaglobulinemia" + }, + { + "code": "D80.2", + "display": "[D80.2] Selective deficiency of immunoglobulin A [IgA]" + }, + { + "code": "D80.3", + "display": "[D80.3] Selective deficiency of immunoglobulin G [IgG] subclasses" + }, + { + "code": "D80.4", + "display": "[D80.4] Selective deficiency of immunoglobulin M [IgM]" + }, + { + "code": "D80.5", + "display": "[D80.5] Immunodeficiency with increased immunoglobulin M [IgM]" + }, + { + "code": "D80.6", + "display": "[D80.6] Antibody deficiency with near-normal immunoglobulins or with hyperimmunoglobulinemia" + }, + { + "code": "D80.7", + "display": "[D80.7] Transient hypogammaglobulinemia of infancy" + }, + { + "code": "D80.8", + "display": "[D80.8] Other immunodeficiencies with predominantly antibody defects" + }, + { + "code": "D80.9", + "display": "[D80.9] Immunodeficiency with predominantly antibody defects, unspecified" + }, + { + "code": "D81.0", + "display": "[D81.0] Severe combined immunodeficiency [SCID] with reticular dysgenesis" + }, + { + "code": "D81.1", + "display": "[D81.1] Severe combined immunodeficiency [SCID] with low T- and B-cell numbers" + }, + { + "code": "D81.2", + "display": "[D81.2] Severe combined immunodeficiency [SCID] with low or normal B-cell numbers" + }, + { + "code": "D81.4", + "display": "[D81.4] Nezelof's syndrome" + }, + { + "code": "D81.6", + "display": "[D81.6] Major histocompatibility complex class I deficiency" + }, + { + "code": "D81.7", + "display": "[D81.7] Major histocompatibility complex class II deficiency" + }, + { + "code": "D81.89", + "display": "[D81.89] Other combined immunodeficiencies" + }, + { + "code": "D81.9", + "display": "[D81.9] Combined immunodeficiency, unspecified" + }, + { + "code": "D82.0", + "display": "[D82.0] Wiskott-Aldrich syndrome" + }, + { + "code": "D82.1", + "display": "[D82.1] Di George's syndrome" + }, + { + "code": "D82.2", + "display": "[D82.2] Immunodeficiency with short-limbed stature" + }, + { + "code": "D82.3", + "display": "[D82.3] Immunodeficiency following hereditary defective response to Epstein-Barr virus" + }, + { + "code": "D82.4", + "display": "[D82.4] Hyperimmunoglobulin E [IgE] syndrome" + }, + { + "code": "D82.8", + "display": "[D82.8] Immunodeficiency associated with other specified major defects" + }, + { + "code": "D82.9", + "display": "[D82.9] Immunodeficiency associated with major defect, unspecified" + }, + { + "code": "D83.0", + "display": "[D83.0] Common variable immunodeficiency with predominant abnormalities of B-cell numbers and function" + }, + { + "code": "D83.1", + "display": "[D83.1] Common variable immunodeficiency with predominant immunoregulatory T-cell disorders" + }, + { + "code": "D83.2", + "display": "[D83.2] Common variable immunodeficiency with autoantibodies to B- or T-cells" + }, + { + "code": "D83.8", + "display": "[D83.8] Other common variable immunodeficiencies" + }, + { + "code": "D83.9", + "display": "[D83.9] Common variable immunodeficiency, unspecified" + }, + { + "code": "D84.0", + "display": "[D84.0] Lymphocyte function antigen-1 [LFA-1] defect" + }, + { + "code": "D84.1", + "display": "[D84.1] Defects in the complement system" + }, + { + "code": "D84.8", + "display": "[D84.8] Other specified immunodeficiencies" + }, + { + "code": "D84.9", + "display": "[D84.9] Immunodeficiency, unspecified" + }, + { + "code": "D89.3", + "display": "[D89.3] Immune reconstitution syndrome" + }, + { + "code": "D89.810", + "display": "[D89.810] Acute graft-versus-host disease" + }, + { + "code": "D89.811", + "display": "[D89.811] Chronic graft-versus-host disease" + }, + { + "code": "D89.812", + "display": "[D89.812] Acute on chronic graft-versus-host disease" + }, + { + "code": "D89.813", + "display": "[D89.813] Graft-versus-host disease, unspecified" + }, + { + "code": "D89.82", + "display": "[D89.82] Autoimmune lymphoproliferative syndrome [ALPS]" + }, + { + "code": "D89.89", + "display": "[D89.89] Other specified disorders involving the immune mechanism, not elsewhere classified" + }, + { + "code": "D89.9", + "display": "[D89.9] Disorder involving the immune mechanism, unspecified" + }, + { + "code": "D60.0", + "display": "[D60.0] Chronic acquired pure red cell aplasia" + }, + { + "code": "D60.1", + "display": "[D60.1] Transient acquired pure red cell aplasia" + }, + { + "code": "D60.8", + "display": "[D60.8] Other acquired pure red cell aplasias" + }, + { + "code": "D60.9", + "display": "[D60.9] Acquired pure red cell aplasia, unspecified" + }, + { + "code": "D61.01", + "display": "[D61.01] Constitutional (pure) red blood cell aplasia" + }, + { + "code": "D61.09", + "display": "[D61.09] Other constitutional aplastic anemia" + }, + { + "code": "D61.1", + "display": "[D61.1] Drug-induced aplastic anemia" + }, + { + "code": "D61.2", + "display": "[D61.2] Aplastic anemia due to other external agents" + }, + { + "code": "D61.3", + "display": "[D61.3] Idiopathic aplastic anemia" + }, + { + "code": "D61.810", + "display": "[D61.810] Antineoplastic chemotherapy induced pancytopenia" + }, + { + "code": "D61.811", + "display": "[D61.811] Other drug-induced pancytopenia" + }, + { + "code": "D61.818", + "display": "[D61.818] Other pancytopenia" + }, + { + "code": "D61.82", + "display": "[D61.82] Myelophthisis" + }, + { + "code": "D61.89", + "display": "[D61.89] Other specified aplastic anemias and other bone marrow failure syndromes" + }, + { + "code": "D61.9", + "display": "[D61.9] Aplastic anemia, unspecified" + }, + { + "code": "D62", + "display": "[D62] Acute posthemorrhagic anemia" + }, + { + "code": "D63.0", + "display": "[D63.0] Anemia in neoplastic disease" + }, + { + "code": "D63.1", + "display": "[D63.1] Anemia in chronic kidney disease" + }, + { + "code": "D63.8", + "display": "[D63.8] Anemia in other chronic diseases classified elsewhere" + }, + { + "code": "D64.0", + "display": "[D64.0] Hereditary sideroblastic anemia" + }, + { + "code": "D64.1", + "display": "[D64.1] Secondary sideroblastic anemia due to disease" + }, + { + "code": "D64.2", + "display": "[D64.2] Secondary sideroblastic anemia due to drugs and toxins" + }, + { + "code": "D64.3", + "display": "[D64.3] Other sideroblastic anemias" + }, + { + "code": "D64.4", + "display": "[D64.4] Congenital dyserythropoietic anemia" + }, + { + "code": "D64.81", + "display": "[D64.81] Anemia due to antineoplastic chemotherapy" + } + ] + }, + "request": { + "method": "PUT", + "url": "CodeSystem/2.16.840.1.113883.6.90" + } + }, + { + "resource": { + "resourceType": "CodeSystem", + "id": "2.16.840.1.113883.6.1", + "url": "http://loinc.org", + "status": "draft", + "concept": [ + { + "code": "68517-2", + "display": "How many times in the past year have you have X or more drinks in a day [SAMHSA]" + }, + { + "code": "68519-8", + "display": "How many standard drinks containing alcohol do you have on a typical day [SAMHSA]" + }, + { + "code": "68520-6", + "display": "How often do you have 6 or more drinks on 1 occasion [SAMHSA]" + }, + { + "code": "72109-2", + "display": "Alcohol Use Disorder Identification Test - Consumption [AUDIT-C]" + }, + { + "code": "72110-0", + "display": "Alcohol Use Disorder Identification Test [AUDIT]" + }, + { + "code": "75624-7", + "display": "Total score [AUDIT]" + }, + { + "code": "75626-2", + "display": "Total score [AUDIT-C]" + }, + { + "code": "44249-1", + "display": "PHQ-9 quick depression assessment panel [Reported.PHQ]" + }, + { + "code": "44261-6", + "display": "Patient Health Questionnaire 9 item (PHQ-9) total score [Reported]" + }, + { + "code": "54635-8", + "display": "Resident mood interview (PHQ-9) [Reported PHQ-9 CMS]" + }, + { + "code": "48544-1", + "display": "Geriatric depression scale (GDS) total" + }, + { + "code": "48545-8", + "display": "Geriatric depression scale (GDS) short version total" + }, + { + "code": "55758-7", + "display": "Patient Health Questionnaire 2 item (PHQ-2) total score [Reported]" + }, + { + "code": "70271-2", + "display": "Patient Health Questionnaire - Somatic, Anxiety, and Depressive Symptoms (PHQ-SADS) total score [Reported]" + }, + { + "code": "70272-0", + "display": "Patient Health Questionnaire 4 item (PHQ-4) total score [Reported]" + }, + { + "code": "71354-5", + "display": "Edinburgh Postnatal Depression Scale [EPDS]" + }, + { + "code": "71965-8", + "display": "PROMIS-29 Depression score T-score" + }, + { + "code": "71966-6", + "display": "PROMIS-29 Depression score" + }, + { + "code": "73831-0", + "display": "Adolescent depression screening assessment" + }, + { + "code": "73832-8", + "display": "Adult depression screening assessment" + }, + { + "code": "77688-0", + "display": "Depression scale [UPDRS]" + }, + { + "code": "77821-7", + "display": "PROMIS short form - emotional distress - depression 4a - version 1.0 raw score" + }, + { + "code": "77835-7", + "display": "PROMIS short form - emotional distress - depression 8b - version 1.0 raw score" + }, + { + "code": "77847-2", + "display": "PROMIS pediatric short form - depressive symptoms - version 1.0 raw score" + }, + { + "code": "77861-3", + "display": "PROMIS emotional distress - depression - version 1.0 Tscore" + }, + { + "code": "33717-0" + }, + { + "code": "47528-5" + }, + { + "code": "47527-7" + }, + { + "code": "19774-9" + }, + { + "code": "19762-4" + }, + { + "code": "19765-7" + }, + { + "code": "19766-5" + }, + { + "code": "10524-7" + }, + { + "code": "18500-9" + }, + { + "code": "19764-0" + }, + { + "code": "30167-1" + }, + { + "code": "49896-4" + }, + { + "code": "21440-3" + }, + { + "code": "38372-9" + }, + { + "code": "59420-0" + }, + { + "code": "75406-9" + }, + { + "code": "75694-0" + }, + { + "code": "69002-4" + }, + { + "code": "71431-1" + }, + { + "code": "59263-4" + }, + { + "code": "59264-2" + }, + { + "code": "77379-6" + }, + { + "code": "77399-4" + }, + { + "code": "77400-0" + }, + { + "code": "77353-1" + }, + { + "code": "77354-9" + }, + { + "code": "12503-9" + }, + { + "code": "12504-7" + }, + { + "code": "14563-1" + }, + { + "code": "14564-9" + }, + { + "code": "14565-6" + }, + { + "code": "2335-8" + }, + { + "code": "27396-1" + }, + { + "code": "27401-9" + }, + { + "code": "27925-7" + }, + { + "code": "27926-5" + }, + { + "code": "29771-3" + }, + { + "code": "56490-6" + }, + { + "code": "56491-4" + }, + { + "code": "57905-2" + }, + { + "code": "58453-2" + }, + { + "code": "80372-6" + } + ] + }, + "request": { + "method": "PUT", + "url": "CodeSystem/2.16.840.1.113883.6.1" + } + }, + { + "resource": { + "resourceType": "CodeSystem", + "id": "2.16.840.1.113883.4.340", + "url": "https://www.cms.gov/Medicare/CMS-Forms/CMS-Forms/CMS-Forms-Items/CMS1196256.html/fl42", + "status": "draft", + "concept": [ + { + "code": "0403" + }, + { + "code": "0401" + }, + { + "code": "0923" + } + ] + }, + "request": { + "method": "PUT", + "url": "CodeSystem/2.16.840.1.113883.4.340" + } + }, + { + "resource": { + "resourceType": "CodeSystem", + "id": "2.16.840.1.113883.12.292", + "url": "http://hl7.org/fhir/sid/cvx", + "status": "draft", + "concept": [ + { + "code": "133", + "display": "pneumococcal conjugate vaccine, 13 valent" + }, + { + "code": "33", + "display": "pneumococcal polysaccharide vaccine, 23 valent" + } + ] + }, + "request": { + "method": "PUT", + "url": "CodeSystem/2.16.840.1.113883.12.292" + } + }, + { + "resource": { + "resourceType": "CodeSystem", + "id": "2.16.840.1.113883.6.96", + "url": "http://snomed.info/sct", + "status": "draft", + "concept": [ + { + "code": "20093000", + "display": "Alcohol rehabilitation and detoxification (regime/therapy)" + }, + { + "code": "23915005", + "display": "Combined alcohol and drug rehabilitation and detoxification (regime/therapy)" + }, + { + "code": "24165007", + "display": "Alcoholism counseling (procedure)" + }, + { + "code": "64297001", + "display": "Detoxication psychiatric therapy for alcoholism (regime/therapy)" + }, + { + "code": "386449006", + "display": "Substance use treatment: alcohol withdrawal (regime/therapy)" + }, + { + "code": "408945004", + "display": "Alcohol abuse prevention (procedure)" + }, + { + "code": "408947007", + "display": "Alcohol abuse prevention education (procedure)" + }, + { + "code": "408948002", + "display": "Alcohol abuse prevention management (procedure)" + }, + { + "code": "413473000", + "display": "Counseling about alcohol consumption (procedure)" + }, + { + "code": "707166002", + "display": "Alcohol reduction program (regime/therapy)" + }, + { + "code": "429291000124102", + "display": "Alcohol brief intervention (procedure)" + }, + { + "code": "171208001", + "display": "Alcohol consumption screening (procedure)" + }, + { + "code": "408946003", + "display": "Alcohol abuse prevention assessment (procedure)" + }, + { + "code": "713107002", + "display": "Screening for alcohol abuse (procedure)" + }, + { + "code": "281004", + "display": "Dementia associated with alcoholism (disorder)" + }, + { + "code": "7052005", + "display": "Alcohol hallucinosis (disorder)" + }, + { + "code": "7200002", + "display": "Alcoholism (disorder)" + }, + { + "code": "8635005", + "display": "Alcohol withdrawal delirium (disorder)" + }, + { + "code": "15167005", + "display": "Alcohol abuse (disorder)" + }, + { + "code": "18653004", + "display": "Alcohol intoxication delirium (disorder)" + }, + { + "code": "29212009", + "display": "Alcohol-induced organic mental disorder (disorder)" + }, + { + "code": "34938008", + "display": "Alcohol-induced anxiety disorder (disorder)" + }, + { + "code": "41083005", + "display": "Alcohol-induced sleep disorder (disorder)" + }, + { + "code": "42344001", + "display": "Alcohol-induced psychosis (disorder)" + }, + { + "code": "53936005", + "display": "Alcohol-induced mood disorder (disorder)" + }, + { + "code": "61144001", + "display": "Alcohol-induced psychotic disorder with delusions (disorder)" + }, + { + "code": "66590003", + "display": "Alcohol dependence (disorder)" + }, + { + "code": "73097000", + "display": "Alcohol amnestic disorder (disorder)" + }, + { + "code": "78524005", + "display": "Alcohol-induced sexual dysfunction (finding)" + }, + { + "code": "79578000", + "display": "Alcohol paranoia (disorder)" + }, + { + "code": "85561006", + "display": "Uncomplicated alcohol withdrawal (disorder)" + }, + { + "code": "191471000", + "display": "Korsakov's alcoholic psychosis with peripheral neuritis (disorder)" + }, + { + "code": "191475009", + "display": "Chronic alcoholic brain syndrome (disorder)" + }, + { + "code": "191476005", + "display": "Alcohol withdrawal hallucinosis (disorder)" + }, + { + "code": "191477001", + "display": "Pathological alcohol intoxication (disorder)" + }, + { + "code": "191478006", + "display": "Alcoholic paranoia (disorder)" + }, + { + "code": "191480000", + "display": "Alcohol withdrawal syndrome (disorder)" + }, + { + "code": "191802004", + "display": "Acute alcoholic intoxication in alcoholism (disorder)" + }, + { + "code": "191804003", + "display": "Continuous acute alcoholic intoxication in alcoholism (disorder)" + }, + { + "code": "191805002", + "display": "Episodic acute alcoholic intoxication in alcoholism (disorder)" + }, + { + "code": "191806001", + "display": "Acute alcoholic intoxication in remission, in alcoholism (disorder)" + }, + { + "code": "191811004", + "display": "Continuous chronic alcoholism (disorder)" + }, + { + "code": "191812006", + "display": "Episodic chronic alcoholism (disorder)" + }, + { + "code": "191813001", + "display": "Chronic alcoholism in remission (disorder)" + }, + { + "code": "191882002", + "display": "Nondependent alcohol abuse, continuous (disorder)" + }, + { + "code": "191883007", + "display": "Nondependent alcohol abuse, episodic (disorder)" + }, + { + "code": "191884001", + "display": "Nondependent alcohol abuse in remission (disorder)" + }, + { + "code": "268645007", + "display": "Nondependent alcohol abuse (disorder)" + }, + { + "code": "284591009", + "display": "Persistent alcohol abuse (disorder)" + }, + { + "code": "713583005", + "display": "Mild alcohol dependence (disorder)" + }, + { + "code": "713862009", + "display": "Severe alcohol dependence (disorder)" + }, + { + "code": "714829008", + "display": "Moderate alcohol dependence (disorder)" + }, + { + "code": "97571000119109", + "display": "Thrombocytopenia co-occurrent and due to alcoholism (disorder)" + }, + { + "code": "135311000119100", + "display": "Insomnia caused by alcohol (disorder)" + }, + { + "code": "10741871000119101", + "display": "Alcohol dependence in pregnancy (disorder)" + }, + { + "code": "10755041000119100", + "display": "Alcohol dependence in childbirth (disorder)" + }, + { + "code": "162004", + "display": "Severe manic bipolar I disorder without psychotic features (disorder)" + }, + { + "code": "1196001", + "display": "Chronic bipolar II disorder, most recent episode major depressive (disorder)" + }, + { + "code": "1499003", + "display": "Bipolar I disorder, single manic episode with postpartum onset (disorder)" + }, + { + "code": "3530005", + "display": "Bipolar I disorder, single manic episode, in full remission (disorder)" + }, + { + "code": "4441000", + "display": "Severe bipolar disorder with psychotic features (disorder)" + }, + { + "code": "5703000", + "display": "Bipolar disorder in partial remission (disorder)" + }, + { + "code": "9340000", + "display": "Bipolar I disorder, single manic episode (disorder)" + }, + { + "code": "10875004", + "display": "Severe mixed bipolar I disorder with psychotic features, mood-incongruent (disorder)" + }, + { + "code": "10981006", + "display": "Severe mixed bipolar I disorder with psychotic features (disorder)" + }, + { + "code": "12969000", + "display": "Severe bipolar II disorder, most recent episode major depressive, in full remission (disorder)" + }, + { + "code": "13313007", + "display": "Mild bipolar disorder (disorder)" + }, + { + "code": "13581000", + "display": "Severe bipolar I disorder, single manic episode with psychotic features, mood-congruent (disorder)" + }, + { + "code": "13746004", + "display": "Bipolar disorder (disorder)" + }, + { + "code": "14495005", + "display": "Severe bipolar I disorder, single manic episode without psychotic features (disorder)" + }, + { + "code": "16295005", + "display": "Bipolar II disorder, most recent episode major depressive (disorder)" + }, + { + "code": "16506000", + "display": "Mixed bipolar I disorder (disorder)" + }, + { + "code": "17782008", + "display": "Bipolar I disorder, most recent episode manic with catatonic features (disorder)" + }, + { + "code": "19300006", + "display": "Severe bipolar II disorder, most recent episode major depressive with psychotic features, mood-congruent (disorder)" + }, + { + "code": "20960007", + "display": "Severe bipolar II disorder, most recent episode major depressive with psychotic features, mood-incongruent (disorder)" + }, + { + "code": "21900002", + "display": "Bipolar I disorder, most recent episode depressed with catatonic features (disorder)" + }, + { + "code": "22121000", + "display": "Depressed bipolar I disorder in full remission (disorder)" + }, + { + "code": "22407005", + "display": "Bipolar II disorder, most recent episode major depressive with catatonic features (disorder)" + }, + { + "code": "26203008", + "display": "Severe depressed bipolar I disorder with psychotic features, mood-incongruent (disorder)" + }, + { + "code": "26530004", + "display": "Severe bipolar disorder with psychotic features, mood-incongruent (disorder)" + }, + { + "code": "28663008", + "display": "Severe manic bipolar I disorder with psychotic features (disorder)" + }, + { + "code": "28884001", + "display": "Moderate bipolar I disorder, single manic episode (disorder)" + }, + { + "code": "29929003", + "display": "Bipolar I disorder, most recent episode depressed with atypical features (disorder)" + }, + { + "code": "30520009", + "display": "Severe bipolar II disorder, most recent episode major depressive with psychotic features (disorder)" + }, + { + "code": "30687003", + "display": "Bipolar II disorder, most recent episode major depressive with postpartum onset (disorder)" + }, + { + "code": "30935000", + "display": "Manic bipolar I disorder in full remission (disorder)" + }, + { + "code": "31446002", + "display": "Bipolar I disorder, most recent episode hypomanic (disorder)" + }, + { + "code": "33380008", + "display": "Severe manic bipolar I disorder with psychotic features, mood-incongruent (disorder)" + }, + { + "code": "34315001", + "display": "Bipolar II disorder, most recent episode major depressive with melancholic features (disorder)" + }, + { + "code": "35481005", + "display": "Mixed bipolar I disorder in remission (disorder)" + }, + { + "code": "35722002", + "display": "Severe bipolar II disorder, most recent episode major depressive, in remission (disorder)" + }, + { + "code": "35846004", + "display": "Moderate bipolar II disorder, most recent episode major depressive (disorder)" + }, + { + "code": "36583000", + "display": "Mixed bipolar I disorder in partial remission (disorder)" + }, + { + "code": "40926005", + "display": "Moderate mixed bipolar I disorder (disorder)" + }, + { + "code": "41552001", + "display": "Mild bipolar I disorder, single manic episode (disorder)" + }, + { + "code": "41832009", + "display": "Severe bipolar I disorder, single manic episode with psychotic features (disorder)" + }, + { + "code": "41836007", + "display": "Bipolar disorder in full remission (disorder)" + }, + { + "code": "43568002", + "display": "Bipolar II disorder, most recent episode major depressive with atypical features (disorder)" + }, + { + "code": "43769008", + "display": "Mild mixed bipolar I disorder (disorder)" + }, + { + "code": "45479006", + "display": "Manic bipolar I disorder in remission (disorder)" + }, + { + "code": "46229002", + "display": "Severe mixed bipolar I disorder without psychotic features (disorder)" + }, + { + "code": "48937005", + "display": "Bipolar II disorder, most recent episode hypomanic (disorder)" + }, + { + "code": "49468007", + "display": "Depressed bipolar I disorder (disorder)" + }, + { + "code": "49512000", + "display": "Depressed bipolar I disorder in partial remission (disorder)" + }, + { + "code": "51637008", + "display": "Chronic bipolar I disorder, most recent episode depressed (disorder)" + }, + { + "code": "53049002", + "display": "Severe bipolar disorder without psychotic features (disorder)" + }, + { + "code": "53607008", + "display": "Depressed bipolar I disorder in remission (disorder)" + }, + { + "code": "54761006", + "display": "Severe depressed bipolar I disorder with psychotic features, mood-congruent (disorder)" + }, + { + "code": "55516002", + "display": "Bipolar I disorder, most recent episode manic with postpartum onset (disorder)" + }, + { + "code": "59617007", + "display": "Severe depressed bipolar I disorder with psychotic features (disorder)" + }, + { + "code": "61403008", + "display": "Severe depressed bipolar I disorder without psychotic features (disorder)" + }, + { + "code": "63249007", + "display": "Manic bipolar I disorder in partial remission (disorder)" + }, + { + "code": "64731001", + "display": "Severe mixed bipolar I disorder with psychotic features, mood-congruent (disorder)" + }, + { + "code": "65042007", + "display": "Bipolar I disorder, most recent episode mixed with postpartum onset (disorder)" + }, + { + "code": "66631006", + "display": "Moderate depressed bipolar I disorder (disorder)" + }, + { + "code": "67002003", + "display": "Severe bipolar II disorder, most recent episode major depressive, in partial remission (disorder)" + }, + { + "code": "68569003", + "display": "Manic bipolar I disorder (disorder)" + }, + { + "code": "70546001", + "display": "Severe bipolar disorder with psychotic features, mood-congruent (disorder)" + }, + { + "code": "71294008", + "display": "Mild bipolar II disorder, most recent episode major depressive (disorder)" + }, + { + "code": "71984005", + "display": "Mild manic bipolar I disorder (disorder)" + }, + { + "code": "73471000", + "display": "Bipolar I disorder, most recent episode mixed with catatonic features (disorder)" + }, + { + "code": "74686005", + "display": "Mild depressed bipolar I disorder (disorder)" + }, + { + "code": "75360000", + "display": "Bipolar I disorder, single manic episode, in remission (disorder)" + }, + { + "code": "78269000", + "display": "Bipolar I disorder, single manic episode, in partial remission (disorder)" + }, + { + "code": "78640000", + "display": "Severe manic bipolar I disorder with psychotic features, mood-congruent (disorder)" + }, + { + "code": "79584002", + "display": "Moderate bipolar disorder (disorder)" + }, + { + "code": "81319007", + "display": "Severe bipolar II disorder, most recent episode major depressive without psychotic features (disorder)" + }, + { + "code": "82998009", + "display": "Moderate manic bipolar I disorder (disorder)" + }, + { + "code": "83225003", + "display": "Bipolar II disorder (disorder)" + }, + { + "code": "85248005", + "display": "Bipolar disorder in remission (disorder)" + }, + { + "code": "86058007", + "display": "Severe bipolar I disorder, single manic episode with psychotic features, mood-incongruent (disorder)" + }, + { + "code": "87950005", + "display": "Bipolar I disorder, single manic episode with catatonic features (disorder)" + }, + { + "code": "111485001", + "display": "Mixed bipolar I disorder in full remission (disorder)" + }, + { + "code": "191618007", + "display": "Bipolar affective disorder, current episode manic (disorder)" + }, + { + "code": "191620005", + "display": "Bipolar affective disorder, currently manic, mild (disorder)" + }, + { + "code": "191621009", + "display": "Bipolar affective disorder, currently manic, moderate (disorder)" + }, + { + "code": "191623007", + "display": "Bipolar affective disorder, currently manic, severe, with psychosis (disorder)" + }, + { + "code": "191625000", + "display": "Bipolar affective disorder, currently manic, in full remission (disorder)" + }, + { + "code": "191627008", + "display": "Bipolar affective disorder, current episode depression (disorder)" + }, + { + "code": "191629006", + "display": "Bipolar affective disorder, currently depressed, mild (disorder)" + }, + { + "code": "191630001", + "display": "Bipolar affective disorder, currently depressed, moderate (disorder)" + }, + { + "code": "191632009", + "display": "Bipolar affective disorder, currently depressed, severe, with psychosis (disorder)" + }, + { + "code": "191634005", + "display": "Bipolar affective disorder, currently depressed, in full remission (disorder)" + }, + { + "code": "191636007", + "display": "Mixed bipolar affective disorder (disorder)" + }, + { + "code": "191638008", + "display": "Mixed bipolar affective disorder, mild (disorder)" + }, + { + "code": "191639000", + "display": "Mixed bipolar affective disorder, moderate (disorder)" + }, + { + "code": "191641004", + "display": "Mixed bipolar affective disorder, severe, with psychosis (disorder)" + }, + { + "code": "191643001", + "display": "Mixed bipolar affective disorder, in full remission (disorder)" + }, + { + "code": "192362008", + "display": "Bipolar affective disorder, current episode mixed (disorder)" + }, + { + "code": "371596008", + "display": "Bipolar I disorder (disorder)" + }, + { + "code": "371599001", + "display": "Severe bipolar I disorder (disorder)" + }, + { + "code": "371600003", + "display": "Severe bipolar disorder (disorder)" + }, + { + "code": "371604007", + "display": "Severe bipolar II disorder (disorder)" + }, + { + "code": "12843005", + "display": "Subsequent hospital visit by physician (procedure)" + }, + { + "code": "18170008", + "display": "Subsequent nursing facility visit (procedure)" + }, + { + "code": "19681004", + "display": "Nursing evaluation of patient and report (procedure)" + }, + { + "code": "87790002", + "display": "Follow-up inpatient consultation visit (procedure)" + }, + { + "code": "90526000", + "display": "Initial evaluation and management of healthy individual (procedure)" + }, + { + "code": "185349003", + "display": "Encounter for check up (procedure)" + }, + { + "code": "185463005", + "display": "Visit out of hours (procedure)" + }, + { + "code": "185465003", + "display": "Weekend visit (procedure)" + }, + { + "code": "207195004", + "display": "History and physical examination with evaluation and management of nursing facility patient (procedure)" + }, + { + "code": "270427003", + "display": "Patient-initiated encounter (procedure)" + }, + { + "code": "270430005", + "display": "Provider-initiated encounter (procedure)" + }, + { + "code": "308335008", + "display": "Patient encounter procedure (procedure)" + }, + { + "code": "390906007", + "display": "Follow-up encounter (procedure)" + }, + { + "code": "406547006", + "display": "Urgent follow-up (procedure)" + }, + { + "code": "439708006", + "display": "Home visit (procedure)" + }, + { + "code": "832007", + "display": "Moderate major depression (disorder)" + }, + { + "code": "2506003", + "display": "Early onset dysthymia (disorder)" + }, + { + "code": "2618002", + "display": "Chronic recurrent major depressive disorder (disorder)" + }, + { + "code": "3109008", + "display": "Secondary dysthymia early onset (disorder)" + }, + { + "code": "14183003", + "display": "Chronic major depressive disorder, single episode (disorder)" + }, + { + "code": "15193003", + "display": "Severe recurrent major depression with psychotic features, mood-incongruent (disorder)" + }, + { + "code": "15639000", + "display": "Moderate major depression, single episode (disorder)" + }, + { + "code": "18818009", + "display": "Moderate recurrent major depression (disorder)" + }, + { + "code": "19527009", + "display": "Single episode of major depression in full remission (disorder)" + }, + { + "code": "19694002", + "display": "Late onset dysthymia (disorder)" + }, + { + "code": "20250007", + "display": "Severe major depression, single episode, with psychotic features, mood-incongruent (disorder)" + }, + { + "code": "25922000", + "display": "Major depressive disorder, single episode with postpartum onset (disorder)" + }, + { + "code": "28475009", + "display": "Severe recurrent major depression with psychotic features (disorder)" + }, + { + "code": "30605009", + "display": "Major depression in partial remission (disorder)" + }, + { + "code": "33078009", + "display": "Severe recurrent major depression with psychotic features, mood-congruent (disorder)" + }, + { + "code": "33135002", + "display": "Recurrent major depression in partial remission (disorder)" + }, + { + "code": "33736005", + "display": "Severe major depression with psychotic features, mood-congruent (disorder)" + }, + { + "code": "36170009", + "display": "Secondary dysthymia late onset (disorder)" + }, + { + "code": "36474008", + "display": "Severe recurrent major depression without psychotic features (disorder)" + }, + { + "code": "36923009", + "display": "Major depression, single episode (disorder)" + }, + { + "code": "38451003", + "display": "Primary dysthymia early onset (disorder)" + }, + { + "code": "38694004", + "display": "Recurrent major depressive disorder with atypical features (disorder)" + }, + { + "code": "39809009", + "display": "Recurrent major depressive disorder with catatonic features (disorder)" + }, + { + "code": "40379007", + "display": "Mild recurrent major depression (disorder)" + }, + { + "code": "42810003", + "display": "Major depression in remission (disorder)" + }, + { + "code": "42925002", + "display": "Major depressive disorder, single episode with atypical features (disorder)" + }, + { + "code": "46244001", + "display": "Recurrent major depression in full remission (disorder)" + }, + { + "code": "60099002", + "display": "Severe major depression with psychotic features, mood-incongruent (disorder)" + }, + { + "code": "63412003", + "display": "Major depression in full remission (disorder)" + }, + { + "code": "63778009", + "display": "Major depressive disorder, single episode with melancholic features (disorder)" + }, + { + "code": "66344007", + "display": "Recurrent major depression (disorder)" + }, + { + "code": "67711008", + "display": "Primary dysthymia late onset (disorder)" + }, + { + "code": "69392006", + "display": "Major depressive disorder, single episode with catatonic features (disorder)" + }, + { + "code": "70747007", + "display": "Major depression single episode, in partial remission (disorder)" + }, + { + "code": "71336009", + "display": "Recurrent major depressive disorder with postpartum onset (disorder)" + }, + { + "code": "73867007", + "display": "Severe major depression with psychotic features (disorder)" + }, + { + "code": "75084000", + "display": "Severe major depression without psychotic features (disorder)" + }, + { + "code": "76441001", + "display": "Severe major depression, single episode, without psychotic features (disorder)" + }, + { + "code": "77911002", + "display": "Severe major depression, single episode, with psychotic features, mood-congruent (disorder)" + }, + { + "code": "78667006", + "display": "Dysthymia (disorder)" + }, + { + "code": "79298009", + "display": "Mild major depression, single episode (disorder)" + }, + { + "code": "83176005", + "display": "Primary dysthymia (disorder)" + }, + { + "code": "85080004", + "display": "Secondary dysthymia (disorder)" + }, + { + "code": "87512008", + "display": "Mild major depression (disorder)" + }, + { + "code": "191601008", + "display": "Single major depressive episode, mild (disorder)" + }, + { + "code": "191602001", + "display": "Single major depressive episode, moderate (disorder)" + }, + { + "code": "191604000", + "display": "Single major depressive episode, severe, with psychosis (disorder)" + }, + { + "code": "191610000", + "display": "Recurrent major depressive episodes, mild (disorder)" + }, + { + "code": "191611001", + "display": "Recurrent major depressive episodes, moderate (disorder)" + }, + { + "code": "191613003", + "display": "Recurrent major depressive episodes, severe, with psychosis (disorder)" + }, + { + "code": "191615005", + "display": "Recurrent major depressive episodes, in full remission (disorder)" + }, + { + "code": "231499006", + "display": "Endogenous depression first episode (disorder)" + }, + { + "code": "268620009", + "display": "Single major depressive episode (disorder)" + }, + { + "code": "268621008", + "display": "Recurrent major depressive episodes (disorder)" + }, + { + "code": "274948002", + "display": "Endogenous depression - recurrent (disorder)" + }, + { + "code": "300706003", + "display": "Endogenous depression (disorder)" + }, + { + "code": "319768000", + "display": "Recurrent major depressive disorder with melancholic features (disorder)" + }, + { + "code": "320751009", + "display": "Major depression, melancholic type (disorder)" + }, + { + "code": "370143000", + "display": "Major depressive disorder (disorder)" + }, + { + "code": "430852001", + "display": "Severe major depression, single episode, with psychotic features (disorder)" + }, + { + "code": "20010003", + "display": "Borderline personality disorder (disorder)" + }, + { + "code": "55341008", + "display": "Histrionic personality disorder (disorder)" + }, + { + "code": "191765005", + "display": "Emotionally unstable personality disorder (disorder)" + }, + { + "code": "191766006", + "display": "Psychoinfantile personality (disorder)" + }, + { + "code": "191773001", + "display": "Immature personality disorder (disorder)" + }, + { + "code": "231527003", + "display": "Explosive personality disorder (disorder)" + }, + { + "code": "35919005", + "display": "Pervasive developmental disorder (disorder)" + }, + { + "code": "43614003", + "display": "Autistic disorder of childhood onset (disorder)" + }, + { + "code": "71961003", + "display": "Childhood disintegrative disorder (disorder)" + }, + { + "code": "191689008", + "display": "Active infantile autism (disorder)" + }, + { + "code": "191690004", + "display": "Residual infantile autism (disorder)" + }, + { + "code": "231536004", + "display": "Atypical autism (disorder)" + }, + { + "code": "373618009", + "display": "Autistic spectrum disorder with isolated skills (disorder)" + }, + { + "code": "408856003", + "display": "Autistic disorder (disorder)" + }, + { + "code": "408857007", + "display": "Infantile autism (disorder)" + }, + { + "code": "442314000", + "display": "Active but odd autism (disorder)" + }, + { + "code": "39951000119105", + "display": "Pervasive developmental disorder of residual state (disorder)" + }, + { + "code": "4926007", + "display": "Schizophrenia in remission (disorder)" + }, + { + "code": "5464005", + "display": "Brief reactive psychosis (disorder)" + }, + { + "code": "7025000", + "display": "Subchronic undifferentiated schizophrenia with acute exacerbations (disorder)" + }, + { + "code": "12939007", + "display": "Chronic disorganized schizophrenia (disorder)" + }, + { + "code": "14291003", + "display": "Subchronic disorganized schizophrenia with acute exacerbations (disorder)" + }, + { + "code": "16990005", + "display": "Subchronic schizophrenia (disorder)" + }, + { + "code": "26025008", + "display": "Residual schizophrenia (disorder)" + }, + { + "code": "27387000", + "display": "Subchronic disorganized schizophrenia (disorder)" + }, + { + "code": "29599000", + "display": "Chronic undifferentiated schizophrenia (disorder)" + }, + { + "code": "30336007", + "display": "Chronic residual schizophrenia with acute exacerbations (disorder)" + }, + { + "code": "31373002", + "display": "Disorganized schizophrenia in remission (disorder)" + }, + { + "code": "31658008", + "display": "Chronic paranoid schizophrenia (disorder)" + }, + { + "code": "35218008", + "display": "Chronic disorganized schizophrenia with acute exacerbations (disorder)" + }, + { + "code": "35252006", + "display": "Disorganized schizophrenia (disorder)" + }, + { + "code": "38368003", + "display": "Schizoaffective disorder, bipolar type (disorder)" + }, + { + "code": "39610001", + "display": "Undifferentiated schizophrenia in remission (disorder)" + }, + { + "code": "42868002", + "display": "Subchronic catatonic schizophrenia (disorder)" + }, + { + "code": "51133006", + "display": "Residual schizophrenia in remission (disorder)" + }, + { + "code": "58214004", + "display": "Schizophrenia (disorder)" + }, + { + "code": "63181006", + "display": "Paranoid schizophrenia in remission (disorder)" + }, + { + "code": "64905009", + "display": "Paranoid schizophrenia (disorder)" + }, + { + "code": "68890003", + "display": "Schizoaffective disorder (disorder)" + }, + { + "code": "68995007", + "display": "Chronic catatonic schizophrenia (disorder)" + }, + { + "code": "70814008", + "display": "Subchronic residual schizophrenia with acute exacerbations (disorder)" + }, + { + "code": "71103003", + "display": "Chronic residual schizophrenia (disorder)" + }, + { + "code": "76566000", + "display": "Subchronic residual schizophrenia (disorder)" + }, + { + "code": "79204003", + "display": "Chronic undifferentiated schizophrenia with acute exacerbations (disorder)" + }, + { + "code": "79866005", + "display": "Subchronic paranoid schizophrenia (disorder)" + }, + { + "code": "83746006", + "display": "Chronic schizophrenia (disorder)" + }, + { + "code": "84760002", + "display": "Schizoaffective disorder, depressive type (disorder)" + }, + { + "code": "85861002", + "display": "Subchronic undifferentiated schizophrenia (disorder)" + }, + { + "code": "111482003", + "display": "Subchronic schizophrenia with acute exacerbations (disorder)" + }, + { + "code": "111483008", + "display": "Catatonic schizophrenia in remission (disorder)" + }, + { + "code": "111484002", + "display": "Undifferentiated schizophrenia (disorder)" + }, + { + "code": "191526005", + "display": "Schizophrenic disorders (disorder)" + }, + { + "code": "191527001", + "display": "Simple schizophrenia (disorder)" + }, + { + "code": "191530008", + "display": "Acute exacerbation of subchronic schizophrenia (disorder)" + }, + { + "code": "191531007", + "display": "Acute exacerbation of chronic schizophrenia (disorder)" + }, + { + "code": "191536002", + "display": "Subchronic hebephrenic schizophrenia (disorder)" + }, + { + "code": "191537006", + "display": "Chronic hebephrenic schizophrenia (disorder)" + }, + { + "code": "191538001", + "display": "Acute exacerbation of subchronic hebephrenic schizophrenia (disorder)" + }, + { + "code": "191539009", + "display": "Acute exacerbation of chronic hebephrenic schizophrenia (disorder)" + }, + { + "code": "191540006", + "display": "Hebephrenic schizophrenia in remission (disorder)" + }, + { + "code": "191542003", + "display": "Catatonic schizophrenia (disorder)" + }, + { + "code": "191547009", + "display": "Acute exacerbation of subchronic catatonic schizophrenia (disorder)" + }, + { + "code": "191548004", + "display": "Acute exacerbation of chronic catatonic schizophrenia (disorder)" + }, + { + "code": "191554003", + "display": "Acute exacerbation of subchronic paranoid schizophrenia (disorder)" + }, + { + "code": "191555002", + "display": "Acute exacerbation of chronic paranoid schizophrenia (disorder)" + }, + { + "code": "191559008", + "display": "Latent schizophrenia (disorder)" + }, + { + "code": "191564007", + "display": "Acute exacerbation of chronic latent schizophrenia (disorder)" + }, + { + "code": "191567000", + "display": "Schizoaffective schizophrenia (disorder)" + }, + { + "code": "191569002", + "display": "Subchronic schizoaffective schizophrenia (disorder)" + }, + { + "code": "191570001", + "display": "Chronic schizoaffective schizophrenia (disorder)" + }, + { + "code": "191571002", + "display": "Acute exacerbation of subchronic schizoaffective schizophrenia (disorder)" + }, + { + "code": "191572009", + "display": "Acute exacerbation of chronic schizoaffective schizophrenia (disorder)" + }, + { + "code": "191574005", + "display": "Schizoaffective schizophrenia in remission (disorder)" + }, + { + "code": "191577003", + "display": "Cenesthopathic schizophrenia (disorder)" + }, + { + "code": "191680007", + "display": "Psychogenic paranoid psychosis (disorder)" + }, + { + "code": "231437006", + "display": "Reactive psychoses (disorder)" + }, + { + "code": "231489001", + "display": "Acute transient psychotic disorder (disorder)" + }, + { + "code": "268624000", + "display": "Acute paranoid reaction (disorder)" + }, + { + "code": "270901009", + "display": "Schizoaffective disorder, mixed type (disorder)" + }, + { + "code": "271428004", + "display": "Schizoaffective disorder, manic type (disorder)" + }, + { + "code": "274952002", + "display": "Borderline schizophrenia (disorder)" + }, + { + "code": "278853003", + "display": "Acute schizophrenia-like psychotic disorder (disorder)" + }, + { + "code": "416340002", + "display": "Late onset schizophrenia (disorder)" + }, + { + "code": "5694008", + "display": "Crisis intervention with follow-up (regime/therapy)" + }, + { + "code": "10197000", + "display": "Psychiatric interview and evaluation (procedure)" + }, + { + "code": "10997001", + "display": "Psychiatric evaluation of patient for testimentary capacity with report (procedure)" + }, + { + "code": "38756009", + "display": "Psychiatric evaluation of patient for criminal responsibility with report (procedure)" + }, + { + "code": "45392008", + "display": "Psychologic evaluation or test procedure (procedure)" + }, + { + "code": "79094001", + "display": "Initial psychiatric interview with mental status and evaluation (procedure)" + }, + { + "code": "88848003", + "display": "Psychiatric follow-up (procedure)" + }, + { + "code": "90407005", + "display": "Evaluation of psychiatric state of patient (procedure)" + }, + { + "code": "91310009", + "display": "Patient follow-up to return when and if necessary (procedure)" + }, + { + "code": "165171009", + "display": "Initial psychiatric evaluation (procedure)" + }, + { + "code": "165190001", + "display": "Psychiatric evaluation for rehabilitation (procedure)" + }, + { + "code": "225337009", + "display": "Suicide risk assessment (procedure)" + }, + { + "code": "370803007", + "display": "Evaluation of psychosocial impact on plan of care (procedure)" + }, + { + "code": "372067001", + "display": "Implementation of measures to provide psychological support (regime/therapy)" + }, + { + "code": "385721005", + "display": "Coping support assessment (procedure)" + }, + { + "code": "385724002", + "display": "Coping support management (procedure)" + }, + { + "code": "385725001", + "display": "Emotional support assessment (procedure)" + }, + { + "code": "385726000", + "display": "Emotional support education (procedure)" + }, + { + "code": "385727009", + "display": "Emotional support management (procedure)" + }, + { + "code": "385887004", + "display": "Mental health history taking assessment (procedure)" + }, + { + "code": "385889001", + "display": "Mental health history taking education (procedure)" + }, + { + "code": "385890005", + "display": "Mental health history taking management (procedure)" + }, + { + "code": "401277000", + "display": "Completion of mental health crisis plan (procedure)" + }, + { + "code": "410223002", + "display": "Mental health care assessment (procedure)" + }, + { + "code": "410224008", + "display": "Mental health care education (procedure)" + }, + { + "code": "410225009", + "display": "Mental health care management (procedure)" + }, + { + "code": "410226005", + "display": "Mental health promotion assessment (procedure)" + }, + { + "code": "410227001", + "display": "Mental health promotion education (procedure)" + }, + { + "code": "410228006", + "display": "Mental health promotion management (procedure)" + }, + { + "code": "410229003", + "display": "Mental health screening assessment (procedure)" + }, + { + "code": "410230008", + "display": "Mental health screening education (procedure)" + }, + { + "code": "410231007", + "display": "Mental health screening management (procedure)" + }, + { + "code": "410232000", + "display": "Mental health treatment assessment (procedure)" + }, + { + "code": "410233005", + "display": "Mental health treatment education (procedure)" + }, + { + "code": "410234004", + "display": "Management of mental health treatment (procedure)" + }, + { + "code": "425604002", + "display": "Case management follow up (procedure)" + }, + { + "code": "439141002", + "display": "Discharge by mental health primary care worker (procedure)" + }, + { + "code": "35489007", + "display": "Depressive disorder (disorder)" + }, + { + "code": "40568001", + "display": "Recurrent brief depressive disorder (disorder)" + }, + { + "code": "48589009", + "display": "Minor depressive disorder (disorder)" + }, + { + "code": "75837004", + "display": "Mood disorder with depressive features due to general medical condition (disorder)" + }, + { + "code": "77486005", + "display": "Mood disorder with major depressive-like episode due to general medical condition (disorder)" + }, + { + "code": "191616006", + "display": "Recurrent depression (disorder)" + }, + { + "code": "191659001", + "display": "Atypical depressive disorder (disorder)" + }, + { + "code": "192080009", + "display": "Chronic depression (disorder)" + }, + { + "code": "231504006", + "display": "Mixed anxiety and depressive disorder (disorder)" + }, + { + "code": "231542000", + "display": "Depressive conduct disorder (disorder)" + }, + { + "code": "442057004", + "display": "Chronic depressive personality disorder (disorder)" + }, + { + "code": "182832007", + "display": "Procedure related to management of drug administration (procedure)" + }, + { + "code": "225333008", + "display": "Behavior management (regime/therapy)" + }, + { + "code": "385828006", + "display": "Health promotion management (procedure)" + }, + { + "code": "386230005", + "display": "Case management (procedure)" + }, + { + "code": "409022004", + "display": "Dispensing medication management (procedure)" + }, + { + "code": "410216003", + "display": "Communication care management (procedure)" + }, + { + "code": "410219005", + "display": "Personal care management (procedure)" + }, + { + "code": "410328009", + "display": "Coping skills case management (procedure)" + }, + { + "code": "410335001", + "display": "Exercises case management (procedure)" + }, + { + "code": "410346003", + "display": "Medication action/side effects case management (procedure)" + }, + { + "code": "410347007", + "display": "Medication set-up case management (procedure)" + }, + { + "code": "410351009", + "display": "Relaxation/breathing techniques case management (procedure)" + }, + { + "code": "410352002", + "display": "Rest/sleep case management (procedure)" + }, + { + "code": "410353007", + "display": "Safety case management (procedure)" + }, + { + "code": "410354001", + "display": "Screening case management (procedure)" + }, + { + "code": "410356004", + "display": "Signs/symptoms-mental/emotional case management (procedure)" + }, + { + "code": "410358003", + "display": "Social work/counseling case management (procedure)" + }, + { + "code": "410360001", + "display": "Spiritual care case management (procedure)" + }, + { + "code": "410363004", + "display": "Support group case management (procedure)" + }, + { + "code": "410364005", + "display": "Support system case management (procedure)" + }, + { + "code": "410366007", + "display": "Wellness case management (procedure)" + }, + { + "code": "416341003", + "display": "Case management started (situation)" + }, + { + "code": "416584001", + "display": "Case management ended (situation)" + }, + { + "code": "424490002", + "display": "Medication prescription case management (procedure)" + }, + { + "code": "428151000124107", + "display": "Standardized adult depression screening tool completed (situation)" + }, + { + "code": "428161000124109", + "display": "Standardized adolescent depression screening tool completed (situation)" + }, + { + "code": "428171000124102", + "display": "Depression screening negative (finding)" + }, + { + "code": "428181000124104", + "display": "Depression screening positive (situation)" + }, + { + "code": "109006", + "display": "Anxiety disorder of childhood OR adolescence (disorder)" + }, + { + "code": "600009", + "display": "Pyromania (disorder)" + }, + { + "code": "899001", + "display": "Axis I diagnosis (disorder)" + }, + { + "code": "1145003", + "display": "Developmental speech disorder (disorder)" + }, + { + "code": "1376001", + "display": "Obsessive compulsive personality disorder (disorder)" + }, + { + "code": "1380006", + "display": "Agoraphobia without history of panic disorder with limited symptom attacks (disorder)" + }, + { + "code": "1383008", + "display": "Hallucinogen mood disorder (disorder)" + }, + { + "code": "1686006", + "display": "Sedative, hypnotic AND/OR anxiolytic-induced anxiety disorder (disorder)" + }, + { + "code": "1816003", + "display": "Panic disorder with agoraphobia, severe agoraphobic avoidance AND mild panic attacks (disorder)" + }, + { + "code": "1855002", + "display": "Developmental academic disorder (disorder)" + }, + { + "code": "1973000", + "display": "Sedative, hypnotic AND/OR anxiolytic-induced psychotic disorder with delusions (disorder)" + }, + { + "code": "2312009", + "display": "Reactive attachment disorder of infancy OR early childhood, inhibited type (disorder)" + }, + { + "code": "2403008", + "display": "Psychoactive substance dependence (disorder)" + }, + { + "code": "3158007", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in partial remission AND panic attacks in partial remission (disorder)" + }, + { + "code": "3503000", + "display": "Gender identity disorder of adolescence, previously asexual (disorder)" + }, + { + "code": "3914008", + "display": "Mental disorder in childhood (disorder)" + }, + { + "code": "4306003", + "display": "Cluster B personality disorder (disorder)" + }, + { + "code": "4932002", + "display": "Panic disorder with agoraphobia, moderate agoraphobic avoidance AND mild panic attacks (disorder)" + }, + { + "code": "5095008", + "display": "Gender identity disorder of childhood (disorder)" + }, + { + "code": "5158005", + "display": "Gilles de la Tourette's syndrome (disorder)" + }, + { + "code": "5444000", + "display": "Sedative, hypnotic AND/OR anxiolytic intoxication delirium (disorder)" + }, + { + "code": "5507002", + "display": "Stereotypy habit disorder (disorder)" + }, + { + "code": "5509004", + "display": "Panic disorder with agoraphobia AND severe panic attacks (disorder)" + }, + { + "code": "5510009", + "display": "Organic delusional disorder (disorder)" + }, + { + "code": "6348008", + "display": "Cocaine-induced psychotic disorder with hallucinations (disorder)" + }, + { + "code": "7291006", + "display": "Reactive attachment disorder of infancy (disorder)" + }, + { + "code": "7397008", + "display": "Aggressor identification syndrome (disorder)" + }, + { + "code": "7461003", + "display": "Attention deficit hyperactivity disorder, predominantly hyperactive impulsive type (disorder)" + }, + { + "code": "7794004", + "display": "Chronic motor tic disorder (disorder)" + }, + { + "code": "8185002", + "display": "Panic disorder with agoraphobia AND moderate panic attacks (disorder)" + }, + { + "code": "8837000", + "display": "Amphetamine delirium (disorder)" + }, + { + "code": "9167000", + "display": "Moderate mood disorder (disorder)" + }, + { + "code": "9674006", + "display": "Adjustment disorder with withdrawal (disorder)" + }, + { + "code": "9760005", + "display": "Deferred diagnosis on Axis I (disorder)" + }, + { + "code": "10278007", + "display": "Factitious purpura (disorder)" + }, + { + "code": "10327003", + "display": "Cocaine-induced mood disorder (disorder)" + }, + { + "code": "10586006", + "display": "Occupation-related stress disorder (disorder)" + }, + { + "code": "11061003", + "display": "Psychoactive substance use disorder (disorder)" + }, + { + "code": "11806006", + "display": "Separation anxiety disorder of childhood (disorder)" + }, + { + "code": "11941006", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in full remission AND panic attacks in full remission (disorder)" + }, + { + "code": "13438001", + "display": "Overanxious disorder of childhood (disorder)" + }, + { + "code": "13601005", + "display": "Paranoid personality disorder (disorder)" + }, + { + "code": "13670005", + "display": "Gender identity disorder of adulthood, previously heterosexual (disorder)" + }, + { + "code": "14070001", + "display": "Multi-infarct dementia with depression (disorder)" + }, + { + "code": "14077003", + "display": "Pica (disorder)" + }, + { + "code": "14784000", + "display": "Opioid-induced organic mental disorder (disorder)" + }, + { + "code": "15277004", + "display": "Hallucinogen-induced anxiety disorder (disorder)" + }, + { + "code": "15945005", + "display": "Psychogenic polydipsia (disorder)" + }, + { + "code": "15977008", + "display": "Adjustment disorder with academic inhibition (disorder)" + }, + { + "code": "16805009", + "display": "Cluster A personality disorder (disorder)" + }, + { + "code": "16966009", + "display": "Factitious hypoglycemia (disorder)" + }, + { + "code": "17155009", + "display": "Trichotillomania (disorder)" + }, + { + "code": "17226007", + "display": "Adjustment disorder (disorder)" + }, + { + "code": "17262008", + "display": "Non-alcoholic Korsakoff's psychosis (disorder)" + }, + { + "code": "17496003", + "display": "Organic anxiety disorder (disorder)" + }, + { + "code": "18003009", + "display": "Gender identity disorder of adulthood (disorder)" + }, + { + "code": "18085000", + "display": "Compulsive gambling (disorder)" + }, + { + "code": "18260003", + "display": "Postpartum psychosis (disorder)" + }, + { + "code": "18478005", + "display": "Adjustment disorder with physical complaints (disorder)" + }, + { + "code": "18689007", + "display": "Inhalant intoxication delirium (disorder)" + }, + { + "code": "19445006", + "display": "Opioid-induced psychotic disorder with hallucinations (disorder)" + }, + { + "code": "19766004", + "display": "Panic disorder with agoraphobia, mild agoraphobic avoidance AND severe panic attacks (disorder)" + }, + { + "code": "20385005", + "display": "Opioid-induced psychotic disorder with delusions (disorder)" + }, + { + "code": "20876004", + "display": "Inhalant-induced anxiety disorder (disorder)" + }, + { + "code": "21000000", + "display": "Idiosyncratic intoxication (disorder)" + }, + { + "code": "21586000", + "display": "Munchausen's syndrome (disorder)" + }, + { + "code": "21634003", + "display": "Borjeson-Forssman-Lehmann syndrome (disorder)" + }, + { + "code": "21897009", + "display": "Generalized anxiety disorder (disorder)" + }, + { + "code": "22230001", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in partial remission AND panic attacks in full remission (disorder)" + }, + { + "code": "22419002", + "display": "Mood disorder with mixed features due to general medical condition (disorder)" + }, + { + "code": "23148009", + "display": "Undifferentiated attention deficit disorder (disorder)" + }, + { + "code": "23560001", + "display": "Asperger's disorder (disorder)" + }, + { + "code": "23645006", + "display": "Organic mood disorder (disorder)" + }, + { + "code": "24121004", + "display": "Insomnia disorder related to another mental disorder (disorder)" + }, + { + "code": "24125008", + "display": "Mental disorder in infancy (disorder)" + }, + { + "code": "24315006", + "display": "Factitious disorder with combined physical AND psychological symptoms (disorder)" + }, + { + "code": "24781009", + "display": "Panic disorder with agoraphobia, mild agoraphobic avoidance AND panic attacks in full remission (disorder)" + }, + { + "code": "25501002", + "display": "Social phobia (disorder)" + }, + { + "code": "25766007", + "display": "Mixed receptive-expressive language disorder (disorder)" + }, + { + "code": "26453000", + "display": "Mental disorder in adolescence (disorder)" + }, + { + "code": "26472000", + "display": "Paraphrenia (disorder)" + }, + { + "code": "26516009", + "display": "Severe mood disorder with psychotic features (disorder)" + }, + { + "code": "26665006", + "display": "Antisocial personality disorder (disorder)" + }, + { + "code": "26714005", + "display": "Cannabis-induced psychotic disorder with hallucinations (disorder)" + }, + { + "code": "27544004", + "display": "Developmental coordination disorder (disorder)" + }, + { + "code": "27956007", + "display": "Cocaine intoxication (disorder)" + }, + { + "code": "28357009", + "display": "Transitory postpartum mood disturbance (disorder)" + }, + { + "code": "28368009", + "display": "Psychoactive substance-induced organic hallucinosis (disorder)" + }, + { + "code": "28676002", + "display": "Mood disorder with manic features due to general medical condition (disorder)" + }, + { + "code": "28857002", + "display": "Reactive attachment disorder of infancy OR early childhood (disorder)" + }, + { + "code": "28864000", + "display": "Sedative, hypnotic AND/OR anxiolytic-induced mood disorder (disorder)" + }, + { + "code": "29733004", + "display": "Opioid-induced mood disorder (disorder)" + }, + { + "code": "30059008", + "display": "Panic disorder with agoraphobia, severe agoraphobic avoidance AND moderate panic attacks (disorder)" + }, + { + "code": "30310000", + "display": "Nicotine-induced organic mental disorder (disorder)" + }, + { + "code": "30491001", + "display": "Cocaine delusional disorder (disorder)" + }, + { + "code": "30509009", + "display": "Gender identity disorder of adolescence, previously homosexual (disorder)" + }, + { + "code": "31027006", + "display": "Schizotypal personality disorder (disorder)" + }, + { + "code": "31177006", + "display": "Attention deficit hyperactivity disorder, combined type (disorder)" + }, + { + "code": "31358003", + "display": "Coprophilia (disorder)" + }, + { + "code": "31611000", + "display": "Multiple personality disorder (disorder)" + }, + { + "code": "31648009", + "display": "Unaggressive type unsocialized behavior disorder (disorder)" + }, + { + "code": "31715000", + "display": "Phencyclidine delirium (disorder)" + }, + { + "code": "31781004", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in partial remission AND mild panic attacks (disorder)" + }, + { + "code": "32009006", + "display": "Hallucinogen hallucinosis (disorder)" + }, + { + "code": "32174002", + "display": "Voice disorder due to psychosexual conflict (disorder)" + }, + { + "code": "32358001", + "display": "Amphetamine delusional disorder (disorder)" + }, + { + "code": "32388005", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in partial remission AND moderate panic attacks (disorder)" + }, + { + "code": "32552001", + "display": "Psychoactive substance-induced organic delusional disorder (disorder)" + }, + { + "code": "32721004", + "display": "Bulimia nervosa, purging type (disorder)" + }, + { + "code": "32875003", + "display": "Inhalant-induced persisting dementia (disorder)" + }, + { + "code": "32880007", + "display": "Adjustment disorder with work inhibition (disorder)" + }, + { + "code": "33323008", + "display": "Somatic delusion disorder (disorder)" + }, + { + "code": "33449004", + "display": "Personality disorder (disorder)" + }, + { + "code": "33693007", + "display": "Compensation neurosis (disorder)" + }, + { + "code": "33871004", + "display": "Phencyclidine-induced psychotic disorder with hallucinations (disorder)" + }, + { + "code": "34116005", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in full remission AND severe panic attacks (disorder)" + }, + { + "code": "35253001", + "display": "Attention deficit hyperactivity disorder, predominantly inattentive type (disorder)" + }, + { + "code": "35607004", + "display": "Panic disorder with agoraphobia (disorder)" + }, + { + "code": "35827000", + "display": "Recurrent conversion disorder (disorder)" + }, + { + "code": "36217008", + "display": "Organic personality disorder (disorder)" + }, + { + "code": "36622002", + "display": "Mild mood disorder (disorder)" + }, + { + "code": "37331004", + "display": "Psychoactive substance-induced organic mood disorder (disorder)" + }, + { + "code": "37739004", + "display": "Mood disorder due to a general medical condition (disorder)" + }, + { + "code": "37746008", + "display": "Avoidant personality disorder (disorder)" + }, + { + "code": "37868008", + "display": "Anxiety disorder of adolescence (disorder)" + }, + { + "code": "37872007", + "display": "Avoidant disorder of childhood OR adolescence (disorder)" + }, + { + "code": "37941009", + "display": "Rumination disorder (disorder)" + }, + { + "code": "38295006", + "display": "Involutional paraphrenia (disorder)" + }, + { + "code": "38328002", + "display": "Panic disorder with agoraphobia, severe agoraphobic avoidance AND panic attacks in full remission (disorder)" + }, + { + "code": "38547003", + "display": "Mood disorder in full remission (disorder)" + }, + { + "code": "39003006", + "display": "Psychoactive substance-induced organic delirium (disorder)" + }, + { + "code": "39465007", + "display": "Emotional deprivation syndrome (disorder)" + }, + { + "code": "39807006", + "display": "Cannabis intoxication delirium (disorder)" + }, + { + "code": "39951001", + "display": "Cannabis-induced anxiety disorder (disorder)" + }, + { + "code": "40571009", + "display": "Hallucinogen intoxication delirium (disorder)" + }, + { + "code": "40673001", + "display": "Post-encephalitic syndrome (disorder)" + }, + { + "code": "40987004", + "display": "Intermittent explosive disorder (disorder)" + }, + { + "code": "41021005", + "display": "Psychologic dyspareunia (disorder)" + }, + { + "code": "41526007", + "display": "Reactive attachment disorder (disorder)" + }, + { + "code": "42594001", + "display": "Organic mood disorder of depressed type (disorder)" + }, + { + "code": "43150009", + "display": "Panic disorder without agoraphobia with severe panic attacks (disorder)" + }, + { + "code": "43497001", + "display": "Amphetamine-induced mood disorder (disorder)" + }, + { + "code": "44031002", + "display": "Postseizure confusion (disorder)" + }, + { + "code": "44124003", + "display": "Reactive attachment disorder of early childhood (disorder)" + }, + { + "code": "44966003", + "display": "Passive aggressive personality disorder (disorder)" + }, + { + "code": "45677003", + "display": "Developmental expressive writing disorder (disorder)" + }, + { + "code": "45912004", + "display": "Organic hallucinosis (disorder)" + }, + { + "code": "46206005", + "display": "Mood disorder (disorder)" + }, + { + "code": "46721000", + "display": "Psychoactive substance-induced organic personality disorder (disorder)" + }, + { + "code": "46975003", + "display": "Cocaine-induced organic mental disorder (disorder)" + }, + { + "code": "47372000", + "display": "Adjustment disorder with anxious mood (disorder)" + }, + { + "code": "47447001", + "display": "Grandiose delusion disorder (disorder)" + }, + { + "code": "47505003", + "display": "Posttraumatic stress disorder (disorder)" + }, + { + "code": "47664006", + "display": "Sedative, hypnotic AND/OR anxiolytic-induced psychotic disorder with hallucinations (disorder)" + }, + { + "code": "47916000", + "display": "Developmental arithmetic disorder (disorder)" + }, + { + "code": "48500005", + "display": "Delusional disorder (disorder)" + }, + { + "code": "49271002", + "display": "Deferred diagnosis on Axis II (disorder)" + }, + { + "code": "49481000", + "display": "Postseizure delirium (disorder)" + }, + { + "code": "49564006", + "display": "Panic disorder with agoraphobia, mild agoraphobic avoidance AND moderate panic attacks (disorder)" + }, + { + "code": "50026000", + "display": "Psychoactive substance-induced organic anxiety disorder (disorder)" + }, + { + "code": "50320000", + "display": "Hallucinogen intoxication (disorder)" + }, + { + "code": "50705009", + "display": "Factitious disorder (disorder)" + }, + { + "code": "50722006", + "display": "Phencyclidine delusional disorder (disorder)" + }, + { + "code": "50878001", + "display": "Gender identity disorder of adulthood, previously asexual (disorder)" + }, + { + "code": "50933003", + "display": "Hallucinogen delusional disorder (disorder)" + }, + { + "code": "50983008", + "display": "Panic disorder with agoraphobia, mild agoraphobic avoidance AND panic attacks in partial remission (disorder)" + }, + { + "code": "51443000", + "display": "Amphetamine-induced psychotic disorder with hallucinations (disorder)" + }, + { + "code": "51493001", + "display": "Cocaine-induced anxiety disorder (disorder)" + }, + { + "code": "51771007", + "display": "Postviral fatigue syndrome (disorder)" + }, + { + "code": "52702003", + "display": "Chronic fatigue syndrome (disorder)" + }, + { + "code": "52824009", + "display": "Developmental reading disorder (disorder)" + }, + { + "code": "52866005", + "display": "Opioid intoxication delirium (disorder)" + }, + { + "code": "52910006", + "display": "Anxiety disorder due to a general medical condition (disorder)" + }, + { + "code": "52954000", + "display": "Schizoid personality disorder (disorder)" + }, + { + "code": "53050002", + "display": "Hallucinogen-induced organic mental disorder (disorder)" + }, + { + "code": "53467004", + "display": "Anxiety disorder of childhood (disorder)" + }, + { + "code": "53956006", + "display": "Panic disorder without agoraphobia with panic attacks in partial remission (disorder)" + }, + { + "code": "54319003", + "display": "Disruptive behavior disorder (disorder)" + }, + { + "code": "54417002", + "display": "Adult gender identity disorder, sexually attracted to females (disorder)" + }, + { + "code": "54587008", + "display": "Simple phobia (disorder)" + }, + { + "code": "55668003", + "display": "Adjustment disorder with mixed emotional features (disorder)" + }, + { + "code": "55967005", + "display": "Phencyclidine-induced anxiety disorder (disorder)" + }, + { + "code": "56194001", + "display": "Caffeine-induced sleep disorder (disorder)" + }, + { + "code": "56576003", + "display": "Panic disorder without agoraphobia (disorder)" + }, + { + "code": "56627002", + "display": "Psychosexual disorder (disorder)" + }, + { + "code": "56641006", + "display": "Axis II diagnosis (disorder)" + }, + { + "code": "56882008", + "display": "Anorexia nervosa (disorder)" + }, + { + "code": "57194009", + "display": "Adjustment disorder with depressed mood (disorder)" + }, + { + "code": "57588009", + "display": "Sedative, hypnotic AND/OR anxiolytic-induced sleep disorder (disorder)" + }, + { + "code": "57715001", + "display": "Gender identity disorder of adolescence (disorder)" + }, + { + "code": "58329000", + "display": "Organic mood disorder of manic type (disorder)" + }, + { + "code": "58535001", + "display": "Physical AND emotional exhaustion state (disorder)" + }, + { + "code": "58647003", + "display": "Severe mood disorder with psychotic features, mood-congruent (disorder)" + }, + { + "code": "58703003", + "display": "Postpartum depression (disorder)" + }, + { + "code": "59216005", + "display": "Adult gender identity disorder, sexually attracted to males (disorder)" + }, + { + "code": "59645001", + "display": "Bulimia nervosa, nonpurging type (disorder)" + }, + { + "code": "59651006", + "display": "Sedative, hypnotic AND/OR anxiolytic-induced persisting dementia (disorder)" + }, + { + "code": "59923000", + "display": "Panic disorder with agoraphobia AND panic attacks in full remission (disorder)" + }, + { + "code": "60123008", + "display": "Delusional disorder, mixed type (disorder)" + }, + { + "code": "61104008", + "display": "Inhalant-induced organic mental disorder (disorder)" + }, + { + "code": "61157009", + "display": "Combat fatigue (disorder)" + }, + { + "code": "61180001", + "display": "Adult gender identity disorder, sexually attracted to neither sex (disorder)" + }, + { + "code": "61212007", + "display": "Panic disorder with agoraphobia, severe agoraphobic avoidance AND severe panic attacks (disorder)" + }, + { + "code": "61569007", + "display": "Agoraphobia without history of panic disorder (disorder)" + }, + { + "code": "61831009", + "display": "Induced psychotic disorder (disorder)" + }, + { + "code": "62239001", + "display": "Parkinson-dementia complex of Guam (disorder)" + }, + { + "code": "62351001", + "display": "Generalized social phobia (disorder)" + }, + { + "code": "63204009", + "display": "Bouffée délirante (disorder)" + }, + { + "code": "63393005", + "display": "Anorexia nervosa, binge-eating purging type (disorder)" + }, + { + "code": "63649001", + "display": "Cannabis delusional disorder (disorder)" + }, + { + "code": "63701002", + "display": "Panic disorder with agoraphobia, mild agoraphobic avoidance AND mild panic attacks (disorder)" + }, + { + "code": "63909006", + "display": "Panic disorder with agoraphobia AND panic attacks in partial remission (disorder)" + }, + { + "code": "63983005", + "display": "Inhalant-induced psychotic disorder with hallucinations (disorder)" + }, + { + "code": "64060000", + "display": "Panic disorder with agoraphobia, moderate agoraphobic avoidance AND panic attacks in full remission (disorder)" + }, + { + "code": "64165008", + "display": "Avoidant disorder of childhood (disorder)" + }, + { + "code": "65064003", + "display": "Panic disorder without agoraphobia with moderate panic attacks (disorder)" + }, + { + "code": "66347000", + "display": "Impulse control disorder (disorder)" + }, + { + "code": "66381006", + "display": "Adjustment disorder with mixed disturbance of emotions AND conduct (disorder)" + }, + { + "code": "66936004", + "display": "Identity disorder (disorder)" + }, + { + "code": "67123006", + "display": "Adult gender identity disorder, sexually attracted to both sexes (disorder)" + }, + { + "code": "67195008", + "display": "Acute stress disorder (disorder)" + }, + { + "code": "68019004", + "display": "Recurrent major depression in remission (disorder)" + }, + { + "code": "68618008", + "display": "Rett's disorder (disorder)" + }, + { + "code": "68963006", + "display": "Gender identity disorder of adolescence, previously heterosexual (disorder)" + }, + { + "code": "69322001", + "display": "Psychotic disorder (disorder)" + }, + { + "code": "69361009", + "display": "Kleptomania (disorder)" + }, + { + "code": "69479009", + "display": "Anxiety hyperventilation (disorder)" + }, + { + "code": "69482004", + "display": "Korsakoff's psychosis (disorder)" + }, + { + "code": "70328006", + "display": "Cocaine delirium (disorder)" + }, + { + "code": "70655008", + "display": "Caffeine-induced anxiety disorder (disorder)" + }, + { + "code": "70691001", + "display": "Agoraphobia (disorder)" + }, + { + "code": "70932007", + "display": "Amphetamine-induced sexual dysfunction (disorder)" + }, + { + "code": "71328000", + "display": "Opioid-induced sexual dysfunction (disorder)" + }, + { + "code": "71787009", + "display": "Psychologic vaginismus (disorder)" + }, + { + "code": "71959007", + "display": "Elective mutism (disorder)" + }, + { + "code": "72366004", + "display": "Eating disorder (disorder)" + }, + { + "code": "72861004", + "display": "Panic disorder without agoraphobia with mild panic attacks (disorder)" + }, + { + "code": "73462009", + "display": "Chronic vocal tic disorder (disorder)" + }, + { + "code": "74010007", + "display": "Panic disorder with agoraphobia, severe agoraphobic avoidance AND panic attacks in partial remission (disorder)" + }, + { + "code": "74266001", + "display": "Mood disorder in partial remission (disorder)" + }, + { + "code": "74732009", + "display": "Mental disorder (disorder)" + }, + { + "code": "74934004", + "display": "Psychoactive substance-induced organic withdrawal (disorder)" + }, + { + "code": "75122001", + "display": "Inhalant-induced psychotic disorder with delusions (disorder)" + }, + { + "code": "75752004", + "display": "Bipolar I disorder, most recent episode depressed with melancholic features (disorder)" + }, + { + "code": "76105009", + "display": "Cyclothymia (disorder)" + }, + { + "code": "76236006", + "display": "Atypical tic disorder (disorder)" + }, + { + "code": "76812003", + "display": "Panic disorder with agoraphobia, moderate agoraphobic avoidance AND panic attacks in partial remission (disorder)" + }, + { + "code": "76868007", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in full remission AND mild panic attacks (disorder)" + }, + { + "code": "77355000", + "display": "Cannabis-induced organic mental disorder (disorder)" + }, + { + "code": "77383003", + "display": "Marfanoid mental retardation syndrome (disorder)" + }, + { + "code": "77475008", + "display": "Jealous delusion disorder (disorder)" + }, + { + "code": "77675002", + "display": "Anorexia nervosa, restricting type (disorder)" + }, + { + "code": "77815007", + "display": "Gender identity disorder of adulthood, previously homosexual (disorder)" + }, + { + "code": "78004001", + "display": "Bulimia nervosa (disorder)" + }, + { + "code": "78358001", + "display": "Amphetamine withdrawal (disorder)" + }, + { + "code": "79524000", + "display": "Ecouteurism (disorder)" + }, + { + "code": "79842004", + "display": "Stuporous depression (disorder)" + }, + { + "code": "80711002", + "display": "Narcissistic personality disorder (disorder)" + }, + { + "code": "80868005", + "display": "Cocaine withdrawal (disorder)" + }, + { + "code": "81463002", + "display": "Bestiality (disorder)" + }, + { + "code": "82096005", + "display": "Aggressive type unsocialized behavior disorder (disorder)" + }, + { + "code": "82218004", + "display": "Postoperative depression (disorder)" + }, + { + "code": "82339009", + "display": "Amphetamine-induced anxiety disorder (disorder)" + }, + { + "code": "82415003", + "display": "Agoraphobia without history of panic disorder without limited symptom attacks (disorder)" + }, + { + "code": "82494000", + "display": "Panic disorder without agoraphobia with panic attacks in full remission (disorder)" + }, + { + "code": "82738004", + "display": "Panic disorder with agoraphobia, moderate agoraphobic avoidance AND moderate panic attacks (disorder)" + }, + { + "code": "83168008", + "display": "Psychoactive substance-induced organic amnestic disorder (disorder)" + }, + { + "code": "83253003", + "display": "Shyness disorder of childhood (disorder)" + }, + { + "code": "83367009", + "display": "Amphetamine-induced organic mental disorder (disorder)" + }, + { + "code": "83458005", + "display": "Agitated depression (disorder)" + }, + { + "code": "83501007", + "display": "Organic mood disorder of mixed type (disorder)" + }, + { + "code": "83631006", + "display": "Panic disorder with agoraphobia, moderate agoraphobic avoidance AND severe panic attacks (disorder)" + }, + { + "code": "83890006", + "display": "Cluster C personality disorder (disorder)" + }, + { + "code": "84466009", + "display": "Dependent personality disorder (disorder)" + }, + { + "code": "84788008", + "display": "Menopausal depression (disorder)" + }, + { + "code": "84984002", + "display": "Adjustment disorder with disturbance of conduct (disorder)" + }, + { + "code": "85061001", + "display": "Separation anxiety disorder of childhood, early onset (disorder)" + }, + { + "code": "85762002", + "display": "Voice disorder due to transsexualism (disorder)" + }, + { + "code": "85821003", + "display": "Acute non-psychotic brain syndrome (disorder)" + }, + { + "code": "87132004", + "display": "Opioid withdrawal (disorder)" + }, + { + "code": "87203005", + "display": "Bipolar I disorder, most recent episode depressed with postpartum onset (disorder)" + }, + { + "code": "87414006", + "display": "Reactive depression (situational) (disorder)" + }, + { + "code": "87798009", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in full remission AND moderate panic attacks (disorder)" + }, + { + "code": "87991007", + "display": "Gender identity disorder (disorder)" + }, + { + "code": "88845000", + "display": "Explosive type organic personality disorder (disorder)" + }, + { + "code": "88939009", + "display": "Severe mood disorder without psychotic features (disorder)" + }, + { + "code": "88975006", + "display": "Schizophreniform disorder (disorder)" + }, + { + "code": "89415002", + "display": "Hypersomnia disorder related to another mental disorder (disorder)" + }, + { + "code": "89451009", + "display": "Inhalant-induced mood disorder (disorder)" + }, + { + "code": "89618007", + "display": "Persecutory delusion disorder (disorder)" + }, + { + "code": "89948007", + "display": "Panic disorder with agoraphobia AND mild panic attacks (disorder)" + }, + { + "code": "90755006", + "display": "Nicotine withdrawal (disorder)" + }, + { + "code": "90790003", + "display": "Avoidant disorder of adolescence (disorder)" + }, + { + "code": "93461009", + "display": "Gender dysphoria (disorder)" + }, + { + "code": "95635002", + "display": "Caffeine withdrawal (disorder)" + }, + { + "code": "95637005", + "display": "Munchausen syndrome by proxy (disorder)" + }, + { + "code": "106013002", + "display": "Mental disorder of infancy, childhood or adolescence (disorder)" + }, + { + "code": "106014008", + "display": "Organic mental disorder of unknown etiology (disorder)" + }, + { + "code": "106015009", + "display": "Mental disorder AND/OR culture bound syndrome (disorder)" + }, + { + "code": "109805003", + "display": "Factitious cheilitis (disorder)" + }, + { + "code": "111475002", + "display": "Neurosis (disorder)" + }, + { + "code": "111476001", + "display": "Mental disorder usually first evident in infancy, childhood AND/OR adolescence (disorder)" + }, + { + "code": "111477005", + "display": "Reactive attachment disorder of infancy OR early childhood, disinhibited type (disorder)" + }, + { + "code": "111479008", + "display": "Organic mental disorder (disorder)" + }, + { + "code": "111480006", + "display": "Psychoactive substance-induced organic dementia (disorder)" + }, + { + "code": "111487009", + "display": "Dream anxiety disorder (disorder)" + }, + { + "code": "111490003", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in partial remission AND severe panic attacks (disorder)" + }, + { + "code": "111491004", + "display": "Panic disorder with agoraphobia, agoraphobic avoidance in full remission AND panic attacks in partial remission (disorder)" + }, + { + "code": "126943008", + "display": "Separation anxiety (disorder)" + }, + { + "code": "128293007", + "display": "Chronic mental disorder (disorder)" + }, + { + "code": "129104009", + "display": "Developmental mental disorder (disorder)" + }, + { + "code": "129604005", + "display": "Delusion of heart disease syndrome (disorder)" + }, + { + "code": "162313000", + "display": "Morbid jealousy (disorder)" + }, + { + "code": "162702000", + "display": "On examination - mentally confused (disorder)" + }, + { + "code": "162722001", + "display": "On examination - depressed (disorder)" + }, + { + "code": "187921002", + "display": "Developmental receptive language disorder (disorder)" + }, + { + "code": "191447007", + "display": "Organic psychotic condition (disorder)" + }, + { + "code": "191455000", + "display": "Presenile dementia with depression (disorder)" + }, + { + "code": "191457008", + "display": "Senile dementia with depressive or paranoid features (disorder)" + }, + { + "code": "191458003", + "display": "Senile dementia with paranoia (disorder)" + }, + { + "code": "191459006", + "display": "Senile dementia with depression (disorder)" + }, + { + "code": "191466007", + "display": "Arteriosclerotic dementia with depression (disorder)" + }, + { + "code": "191483003", + "display": "Drug-induced psychosis (disorder)" + }, + { + "code": "191484009", + "display": "Drug-induced paranoia or hallucinatory states (disorder)" + }, + { + "code": "191485005", + "display": "Drug-induced paranoid state (disorder)" + }, + { + "code": "191486006", + "display": "Drug-induced hallucinosis (disorder)" + }, + { + "code": "191492000", + "display": "Drug-induced delirium (disorder)" + }, + { + "code": "191493005", + "display": "Drug-induced dementia (disorder)" + }, + { + "code": "191494004", + "display": "Drug-induced amnestic syndrome (disorder)" + }, + { + "code": "191495003", + "display": "Drug-induced depressive state (disorder)" + }, + { + "code": "191496002", + "display": "Drug-induced personality disorder (disorder)" + }, + { + "code": "191499009", + "display": "Transient organic psychoses (disorder)" + }, + { + "code": "191501001", + "display": "Acute confusional state, post-traumatic (disorder)" + }, + { + "code": "191508007", + "display": "Subacute confusional state, post-traumatic (disorder)" + }, + { + "code": "191590005", + "display": "Recurrent manic episodes (disorder)" + }, + { + "code": "191592002", + "display": "Recurrent manic episodes, mild (disorder)" + }, + { + "code": "191593007", + "display": "Recurrent manic episodes, moderate (disorder)" + }, + { + "code": "191595000", + "display": "Recurrent manic episodes, severe, with psychosis (disorder)" + }, + { + "code": "191597008", + "display": "Recurrent manic episodes, in full remission (disorder)" + }, + { + "code": "191667009", + "display": "Paranoid disorder (disorder)" + }, + { + "code": "191668004", + "display": "Simple paranoid state (disorder)" + }, + { + "code": "191670008", + "display": "Shared paranoid disorder (disorder)" + }, + { + "code": "191672000", + "display": "Paranoia querulans (disorder)" + }, + { + "code": "191676002", + "display": "Reactive depressive psychosis (disorder)" + }, + { + "code": "191678001", + "display": "Reactive confusion (disorder)" + }, + { + "code": "191687005", + "display": "Psychosis with origin in childhood (disorder)" + }, + { + "code": "191692007", + "display": "Active disintegrative psychoses (disorder)" + }, + { + "code": "191693002", + "display": "Residual disintegrative psychoses (disorder)" + }, + { + "code": "191696005", + "display": "Atypical childhood psychoses (disorder)" + }, + { + "code": "191697001", + "display": "Borderline psychosis of childhood (disorder)" + }, + { + "code": "191714002", + "display": "Dissociative convulsions (disorder)" + }, + { + "code": "191722009", + "display": "Agoraphobia with panic attacks (disorder)" + }, + { + "code": "191724005", + "display": "Social phobia, fear of eating in public (disorder)" + }, + { + "code": "191725006", + "display": "Social phobia, fear of public speaking (disorder)" + }, + { + "code": "191726007", + "display": "Social phobia, fear of public washing (disorder)" + }, + { + "code": "191736004", + "display": "Obsessive-compulsive disorder (disorder)" + }, + { + "code": "191737008", + "display": "Compulsive neurosis (disorder)" + }, + { + "code": "191738003", + "display": "Obsessional neurosis (disorder)" + }, + { + "code": "191753006", + "display": "Hypomanic personality disorder (disorder)" + }, + { + "code": "191772006", + "display": "Eccentric personality disorder (disorder)" + }, + { + "code": "191774007", + "display": "Masochistic personality disorder (disorder)" + }, + { + "code": "191787001", + "display": "Psychosexual identity disorder (disorder)" + }, + { + "code": "191966002", + "display": "Psychogenic pruritus (disorder)" + }, + { + "code": "192014006", + "display": "Psychogenic rumination (disorder)" + }, + { + "code": "192037000", + "display": "Acute panic state due to acute stress reaction (disorder)" + }, + { + "code": "192038005", + "display": "Acute fugue state due to acute stress reaction (disorder)" + }, + { + "code": "192039002", + "display": "Acute stupor state due to acute stress reaction (disorder)" + }, + { + "code": "192041001", + "display": "Acute situational disturbance (disorder)" + }, + { + "code": "192042008", + "display": "Acute post-trauma stress state (disorder)" + }, + { + "code": "192044009", + "display": "Stress reaction causing mixed disturbance of emotion and conduct (disorder)" + }, + { + "code": "192046006", + "display": "Brief depressive adjustment reaction (disorder)" + }, + { + "code": "192049004", + "display": "Prolonged depressive adjustment reaction (disorder)" + }, + { + "code": "192051000", + "display": "Adolescent emancipation disorder (disorder)" + }, + { + "code": "192052007", + "display": "Early adult emancipation disorder (disorder)" + }, + { + "code": "192054008", + "display": "Culture shock (disorder)" + }, + { + "code": "192056005", + "display": "Adjustment reaction with aggression (disorder)" + }, + { + "code": "192057001", + "display": "Adjustment reaction with antisocial behavior (disorder)" + }, + { + "code": "192058006", + "display": "Adjustment reaction with destructiveness (disorder)" + }, + { + "code": "192061007", + "display": "Concentration camp syndrome (disorder)" + }, + { + "code": "192063005", + "display": "Adjustment reaction with physical symptoms (disorder)" + }, + { + "code": "192064004", + "display": "Elective mutism due to an adjustment reaction (disorder)" + }, + { + "code": "192069009", + "display": "Specific nonpsychotic mental disorders following organic brain damage (disorder)" + }, + { + "code": "192072002", + "display": "Organic memory impairment (disorder)" + }, + { + "code": "192073007", + "display": "Change in personality (disorder)" + }, + { + "code": "192079006", + "display": "Postviral depression (disorder)" + }, + { + "code": "192097003", + "display": "Isolated explosive disorder (disorder)" + }, + { + "code": "192099000", + "display": "Childhood disorder of conduct and emotion (disorder)" + }, + { + "code": "192108001", + "display": "Disturbance of anxiety and fearfulness in childhood and adolescence (disorder)" + }, + { + "code": "192110004", + "display": "Childhood and adolescent fearfulness disturbance (disorder)" + }, + { + "code": "192122001", + "display": "Childhood or adolescent identity disorder (disorder)" + }, + { + "code": "192127007", + "display": "Child attention deficit disorder (disorder)" + }, + { + "code": "192147004", + "display": "Mixed disorder of psychological development (disorder)" + }, + { + "code": "192527004", + "display": "Elaboration of physical symptoms for psychological reasons (disorder)" + }, + { + "code": "192562009", + "display": "Disorder of psychological development (disorder)" + }, + { + "code": "192611004", + "display": "Childhood phobic anxiety disorder (disorder)" + }, + { + "code": "192616009", + "display": "Childhood or adolescent disorder of social functioning (disorder)" + }, + { + "code": "192631000", + "display": "Pica of infancy and childhood (disorder)" + }, + { + "code": "197480006", + "display": "Anxiety disorder (disorder)" + }, + { + "code": "199257008", + "display": "Mental disorders during pregnancy, childbirth and the puerperium (disorder)" + }, + { + "code": "199259006", + "display": "Mental disorder during pregnancy - baby delivered (disorder)" + }, + { + "code": "199260001", + "display": "Mental disorder in the puerperium - baby delivered (disorder)" + }, + { + "code": "199261002", + "display": "Mental disorder during pregnancy - baby not yet delivered (disorder)" + }, + { + "code": "199262009", + "display": "Mental disorder in the puerperium - baby delivered during previous episode of care (disorder)" + }, + { + "code": "229623002", + "display": "Developmental dysfluency (disorder)" + }, + { + "code": "229699006", + "display": "Immature articulatory praxis (disorder)" + }, + { + "code": "229700007", + "display": "Developmental motor speech disorder (disorder)" + }, + { + "code": "229701006", + "display": "Developmental articulatory dyspraxia (disorder)" + }, + { + "code": "229715008", + "display": "Deficits in attention motor control and perception (disorder)" + }, + { + "code": "229729009", + "display": "Developmental language impairment (disorder)" + }, + { + "code": "229740001", + "display": "Delayed pre-verbal development (disorder)" + }, + { + "code": "229744005", + "display": "Developmental syntactic impairment (disorder)" + }, + { + "code": "229745006", + "display": "Developmental semantic impairment (disorder)" + }, + { + "code": "230334008", + "display": "Drug-induced tic (disorder)" + }, + { + "code": "230455006", + "display": "Self-induced non-photosensitive epilepsy (disorder)" + }, + { + "code": "231438001", + "display": "Presbyophrenic psychosis (disorder)" + }, + { + "code": "231442003", + "display": "Organic catatonic disorder (disorder)" + }, + { + "code": "231443008", + "display": "Right hemispheric organic affective disorder (disorder)" + }, + { + "code": "231444002", + "display": "Organic bipolar disorder (disorder)" + }, + { + "code": "231445001", + "display": "Organic dissociative disorder (disorder)" + }, + { + "code": "231446000", + "display": "Organic emotionally labile disorder (disorder)" + }, + { + "code": "231449007", + "display": "Epileptic psychosis (disorder)" + }, + { + "code": "231450007", + "display": "Psychosis associated with intensive care (disorder)" + }, + { + "code": "231451006", + "display": "Drug-induced intensive care psychosis (disorder)" + }, + { + "code": "231452004", + "display": "Limbic epilepsy personality syndrome (disorder)" + }, + { + "code": "231454003", + "display": "Organic pseudopsychopathic personality (disorder)" + }, + { + "code": "231455002", + "display": "Organic pseudoretarded personality (disorder)" + }, + { + "code": "231457005", + "display": "Organic psychosyndrome (disorder)" + }, + { + "code": "231467000", + "display": "Absinthe addiction (disorder)" + }, + { + "code": "231485007", + "display": "Post-schizophrenic depression (disorder)" + }, + { + "code": "231487004", + "display": "Persistent delusional disorder (disorder)" + }, + { + "code": "231494001", + "display": "Mania (disorder)" + }, + { + "code": "231496004", + "display": "Hypomania (disorder)" + }, + { + "code": "231500002", + "display": "Masked depression (disorder)" + }, + { + "code": "231516000", + "display": "Cutaneous hypochondriasis (disorder)" + }, + { + "code": "231520001", + "display": "Behavioral syndrome associated with physiological disturbance and physical factors (disorder)" + }, + { + "code": "231521002", + "display": "Weight fixation (disorder)" + }, + { + "code": "231522009", + "display": "Atypical anorexia nervosa (disorder)" + }, + { + "code": "231523004", + "display": "Atypical bulimia nervosa (disorder)" + }, + { + "code": "231524005", + "display": "Interictal behavior disorder (disorder)" + }, + { + "code": "231525006", + "display": "Manipulative personality disorder (disorder)" + }, + { + "code": "231526007", + "display": "Fanatic personality (disorder)" + }, + { + "code": "231528008", + "display": "Anxious personality disorder (disorder)" + }, + { + "code": "231530005", + "display": "Post-concussional personality disorder (disorder)" + }, + { + "code": "231537008", + "display": "Developmental agnosia (disorder)" + }, + { + "code": "231538003", + "display": "Behavioral and emotional disorder with onset in childhood (disorder)" + }, + { + "code": "231539006", + "display": "Adolescent - emotional problem (disorder)" + }, + { + "code": "233690008", + "display": "Factitious asthma (disorder)" + }, + { + "code": "237351003", + "display": "Mild postnatal psychosis (disorder)" + }, + { + "code": "238110009", + "display": "Nutritional mental retardation (disorder)" + }, + { + "code": "238961003", + "display": "Trichophobia (disorder)" + }, + { + "code": "238966008", + "display": "Syphilophobia (disorder)" + }, + { + "code": "238967004", + "display": "Psychogenic sensory disturbance of skin (disorder)" + }, + { + "code": "238972008", + "display": "Cutaneous monosymptomatic delusional psychosis (disorder)" + }, + { + "code": "238973003", + "display": "Delusions of parasitosis (disorder)" + }, + { + "code": "238974009", + "display": "Delusions of infestation (disorder)" + }, + { + "code": "238975005", + "display": "Delusion of foul odor (disorder)" + }, + { + "code": "238976006", + "display": "Bromisodrophobia (disorder)" + }, + { + "code": "238977002", + "display": "Delusional hyperhidrosis (disorder)" + }, + { + "code": "238978007", + "display": "Hyperschemazia (disorder)" + }, + { + "code": "238979004", + "display": "Hyposchemazia (disorder)" + }, + { + "code": "247803002", + "display": "Seasonal affective disorder (disorder)" + }, + { + "code": "247804008", + "display": "Schizophrenic prodrome (disorder)" + }, + { + "code": "267320004", + "display": "Pregnancy with mental disorders (disorder)" + }, + { + "code": "268612007", + "display": "Senile and presenile organic psychotic conditions (disorder)" + }, + { + "code": "268617001", + "display": "Acute schizophrenic episode (disorder)" + }, + { + "code": "268622001", + "display": "Chronic paranoid psychosis (disorder)" + }, + { + "code": "268633003", + "display": "Introverted personality disorder (disorder)" + }, + { + "code": "268634009", + "display": "Psychoneurotic personality disorder (disorder)" + }, + { + "code": "268664001", + "display": "Childhood emotional disorder (disorder)" + }, + { + "code": "268666004", + "display": "Childhood and adolescent disturbance with sensitivity (disorder)" + }, + { + "code": "268667008", + "display": "Childhood and adolescent disturbance with shyness (disorder)" + }, + { + "code": "268668003", + "display": "Childhood and adolescent disturbance with introversion (disorder)" + }, + { + "code": "268669006", + "display": "Childhood and adolescent disturbance with elective mutism (disorder)" + }, + { + "code": "268673009", + "display": "Developmental aphasia (disorder)" + }, + { + "code": "268734000", + "display": "Developmental expressive language disorder (disorder)" + }, + { + "code": "270902002", + "display": "Overeating associated with other psychological disturbances (disorder)" + }, + { + "code": "270905000", + "display": "Childhood disinhibited attachment disorder (disorder)" + }, + { + "code": "271952001", + "display": "Stress and adjustment reaction (disorder)" + }, + { + "code": "274953007", + "display": "Acute polymorphic psychotic disorder (disorder)" + }, + { + "code": "275474009", + "display": "Psychogenic overeating (disorder)" + }, + { + "code": "278506006", + "display": "Involutional paranoid state (disorder)" + }, + { + "code": "278508007", + "display": "Delusional dysmorphophobia (disorder)" + }, + { + "code": "278852008", + "display": "Paranoid-hallucinatory epileptic psychosis (disorder)" + }, + { + "code": "279611005", + "display": "Shell shock (disorder)" + }, + { + "code": "280032002", + "display": "Developmental language disorder (disorder)" + }, + { + "code": "280375000", + "display": "Psychological disorder associated with sexual development (disorder)" + }, + { + "code": "280994000", + "display": "Chronic confusional state (disorder)" + }, + { + "code": "286933003", + "display": "Confusional state (disorder)" + }, + { + "code": "301643003", + "display": "Sedative, hypnotic AND/OR anxiolytic-induced persisting amnestic disorder (disorder)" + }, + { + "code": "302507002", + "display": "Sedative amnestic disorder (disorder)" + }, + { + "code": "307417003", + "display": "Cycloid psychosis (disorder)" + }, + { + "code": "309279000", + "display": "Caffeine-induced organic mental disorder (disorder)" + }, + { + "code": "310495003", + "display": "Mild depression (disorder)" + }, + { + "code": "310496002", + "display": "Moderate depression (disorder)" + }, + { + "code": "310497006", + "display": "Severe depression (disorder)" + }, + { + "code": "311173003", + "display": "Phencyclidine-related disorder (disorder)" + }, + { + "code": "312098001", + "display": "Sedative, hypnotic AND/OR anxiolytic-related disorder (disorder)" + }, + { + "code": "312936002", + "display": "Anxiolytic-induced organic mental disorder (disorder)" + }, + { + "code": "313182004", + "display": "Chronic post-traumatic stress disorder (disorder)" + }, + { + "code": "313224008", + "display": "Dysmorphophobia (disorder)" + }, + { + "code": "313915006", + "display": "Hypnotic-induced organic mental disorder (disorder)" + }, + { + "code": "317816007", + "display": "Stockholm syndrome (disorder)" + }, + { + "code": "318784009", + "display": "Posttraumatic stress disorder, delayed onset (disorder)" + }, + { + "code": "357705009", + "display": "Cotard's syndrome (disorder)" + }, + { + "code": "371026009", + "display": "Senile dementia with psychosis (disorder)" + }, + { + "code": "371631005", + "display": "Panic disorder (disorder)" + }, + { + "code": "386701004", + "display": "Developmental articulation disorder (disorder)" + }, + { + "code": "386810004", + "display": "Phobic disorder (disorder)" + }, + { + "code": "386822001", + "display": "Adjustment reaction of adolescence (disorder)" + }, + { + "code": "386823006", + "display": "Adjustment reaction of adult life (disorder)" + }, + { + "code": "386824000", + "display": "Adjustment reaction of childhood (disorder)" + }, + { + "code": "386825004", + "display": "Adjustment reaction of late life (disorder)" + }, + { + "code": "398066007", + "display": "Intensive care psychiatric disorder (disorder)" + }, + { + "code": "402732001", + "display": "Habit tic (disorder)" + }, + { + "code": "402733006", + "display": "Habit tic affecting skin (disorder)" + }, + { + "code": "402735004", + "display": "Habit tic affecting hair (disorder)" + }, + { + "code": "403590001", + "display": "Cutaneous Munchausen syndrome by proxy (disorder)" + }, + { + "code": "403593004", + "display": "Phobic fear of skin cancer (disorder)" + }, + { + "code": "403594005", + "display": "Psychogenic formication (disorder)" + }, + { + "code": "404906000", + "display": "Postoperative confusion (disorder)" + }, + { + "code": "406506008", + "display": "Attention deficit hyperactivity disorder (disorder)" + }, + { + "code": "417143004", + "display": "Short duration flashbacks (disorder)" + }, + { + "code": "420774007", + "display": "Organic brain syndrome associated with acquired immunodeficiency syndrome (disorder)" + }, + { + "code": "425914008", + "display": "Adjustment reaction to medical therapy (disorder)" + }, + { + "code": "425919003", + "display": "Chronic organic mental disorder (disorder)" + }, + { + "code": "426041005", + "display": "Developmental dyslalia (disorder)" + }, + { + "code": "426174008", + "display": "Chronic stress disorder (disorder)" + }, + { + "code": "426881004", + "display": "Developmental delay in feeding (disorder)" + }, + { + "code": "427469003", + "display": "Eating disorder in remission (disorder)" + }, + { + "code": "427975003", + "display": "Drug-induced delusional disorder (disorder)" + }, + { + "code": "428687006", + "display": "Nightmares associated with chronic post-traumatic stress disorder (disorder)" + }, + { + "code": "428703001", + "display": "Transient organic mental disorder (disorder)" + }, + { + "code": "429672007", + "display": "Drug-induced mood disorder (disorder)" + }, + { + "code": "430744005", + "display": "Factitious disorder with predominantly physical signs and symptoms (disorder)" + }, + { + "code": "430751001", + "display": "Factitious disorder with predominantly psychological signs and symptoms (disorder)" + }, + { + "code": "430909002", + "display": "Conduct disorder (disorder)" + }, + { + "code": "439960005", + "display": "Binge eating disorder (disorder)" + }, + { + "code": "441704009", + "display": "Affective psychosis (disorder)" + }, + { + "code": "441711008", + "display": "Chronic psychogenic pain (disorder)" + }, + { + "code": "441716003", + "display": "Residual childhood psychosis (disorder)" + }, + { + "code": "441833000", + "display": "Lethal catatonia (disorder)" + }, + { + "code": "442245003", + "display": "Chronic hypomanic personality disorder (disorder)" + }, + { + "code": "442351006", + "display": "Mental disorder caused by drug (disorder)" + }, + { + "code": "443919007", + "display": "Complex posttraumatic stress disorder (disorder)" + }, + { + "code": "450714000", + "display": "Severe major depression (disorder)" + }, + { + "code": "473452003", + "display": "Atypical psychosis (disorder)" + }, + { + "code": "473456000", + "display": "Compulsive personality disorder (disorder)" + }, + { + "code": "473457009", + "display": "Obsessional personality disorder (disorder)" + }, + { + "code": "609225004", + "display": "Developmental regression (disorder)" + }, + { + "code": "712823008", + "display": "Acute depression (disorder)" + }, + { + "code": "712824002", + "display": "Acute polymorphic psychotic disorder without symptoms of schizophrenia (disorder)" + }, + { + "code": "712850003", + "display": "Acute polymorphic psychotic disorder co-occurrent with symptoms of schizophrenia (disorder)" + }, + { + "code": "712884004", + "display": "Pathological demand avoidance (disorder)" + }, + { + "code": "713491003", + "display": "Organic brain syndrome co-occurrent with human immunodeficiency virus infection (disorder)" + }, + { + "code": "715737004", + "display": "Parkinsonism co-occurrent with dementia of Guadeloupe (disorder)" + }, + { + "code": "715924009", + "display": "Disruptive mood dysregulation disorder (disorder)" + }, + { + "code": "716096005", + "display": "Hypospadias and intellectual disability syndrome Goldblatt type (disorder)" + }, + { + "code": "716199000", + "display": "Delayed speech and facial asymmetry with strabismus and ear lobe skin crease syndrome (disorder)" + }, + { + "code": "716578009", + "display": "Developmental language comprehension impairment (disorder)" + }, + { + "code": "718393002", + "display": "Atypical Rett syndrome (disorder)" + }, + { + "code": "251000119105", + "display": "Severe major depression, single episode (disorder)" + }, + { + "code": "261000119107", + "display": "Severe depressed bipolar I disorder (disorder)" + }, + { + "code": "271000119101", + "display": "Severe mixed bipolar I disorder (disorder)" + }, + { + "code": "281000119103", + "display": "Severe recurrent major depression (disorder)" + }, + { + "code": "18491000119109", + "display": "Psychological disorder during pregnancy (disorder)" + }, + { + "code": "21071000119101", + "display": "Mood disorder of manic type (disorder)" + }, + { + "code": "22641000119109", + "display": "Psychosis in early childhood (disorder)" + }, + { + "code": "22981000119106", + "display": "Recurrent severe manic episodes (disorder)" + }, + { + "code": "23601000119102", + "display": "Sedative withdrawal (disorder)" + }, + { + "code": "23741000119105", + "display": "Severe manic bipolar I disorder (disorder)" + }, + { + "code": "61771000119106", + "display": "Bipolar II disorder, most recent episode rapid cycling (disorder)" + }, + { + "code": "62211000119103", + "display": "Moderate expressive language delay (disorder)" + }, + { + "code": "62231000119108", + "display": "Mild expressive language delay (disorder)" + }, + { + "code": "89381000119107", + "display": "Moderate receptive language delay (disorder)" + }, + { + "code": "89501000119108", + "display": "Mild receptive language delay (disorder)" + }, + { + "code": "94631000119100", + "display": "Depressive disorder in mother complicating pregnancy (disorder)" + }, + { + "code": "130121000119104", + "display": "Dementia due to Rett's syndrome (disorder)" + }, + { + "code": "133091000119105", + "display": "Rapid cycling bipolar I disorder (disorder)" + }, + { + "code": "133121000119109", + "display": "Severe seasonal affective disorder (disorder)" + }, + { + "code": "153071000119108", + "display": "Recurrent manic episodes in partial remission (disorder)" + }, + { + "code": "270291000119109", + "display": "Identity disorder of childhood (disorder)" + }, + { + "code": "288271000119103", + "display": "Childhood onset fluency disorder (disorder)" + }, + { + "code": "288421000119100", + "display": "Hyposomnia co-occurrent and due to psychological disorder (disorder)" + }, + { + "code": "288511000119108", + "display": "Chronic mood disorder (disorder)" + }, + { + "code": "288751000119101", + "display": "Reactive depressive psychosis, single episode (disorder)" + }, + { + "code": "288851000119106", + "display": "Opioid-induced mood disorder due to opioid abuse (disorder)" + }, + { + "code": "288861000119108", + "display": "Opioid-induced mood disorder due to opioid dependence (disorder)" + }, + { + "code": "434971000124109", + "display": "Amphetamine induced psychotic disorder (disorder)" + }, + { + "code": "19944001", + "display": "Autologous bone marrow transplant without purging (procedure)" + }, + { + "code": "23719005", + "display": "Transplantation of bone marrow (procedure)" + }, + { + "code": "46280001", + "display": "Autologous bone marrow transplant with purging (procedure)" + }, + { + "code": "58390007", + "display": "Allogeneic bone marrow transplantation (procedure)" + }, + { + "code": "58776007", + "display": "Autologous bone marrow transplant (procedure)" + }, + { + "code": "234331007", + "display": "Syngeneic bone marrow transplant (procedure)" + }, + { + "code": "234332000", + "display": "T-cell depleted allogeneic bone marrow graft (procedure)" + }, + { + "code": "234333005", + "display": "Imperfect T-cell depleted allogeneic bone marrow graft (procedure)" + }, + { + "code": "234334004", + "display": "Allogeneic related bone marrow transplant (procedure)" + }, + { + "code": "234335003", + "display": "Allogeneic unrelated bone marrow transplant (procedure)" + }, + { + "code": "234336002", + "display": "Hemopoietic stem cell transplant (procedure)" + }, + { + "code": "426425001", + "display": "Allograft of bone marrow from sibling donor (procedure)" + }, + { + "code": "427423003", + "display": "Allograft of bone marrow from matched unrelated donor (procedure)" + }, + { + "code": "442557006", + "display": "Grafting of bone marrow using allograft from unmatched unrelated donor (procedure)" + }, + { + "code": "445757003", + "display": "Allogeneic bone marrow transplantation without purging (procedure)" + }, + { + "code": "446253009", + "display": "Allogeneic bone marrow transplantation with purging (procedure)" + }, + { + "code": "68382005", + "display": "Cerebrospinal fluid otorrhea (disorder)" + }, + { + "code": "73965003", + "display": "Cerebrospinal fluid leakage (morphologic abnormality)" + }, + { + "code": "85638002", + "display": "Cerebrospinal fluid rhinorrhea (disorder)" + }, + { + "code": "167719009", + "display": "Cerebrospinal fluid lymphocytosis (finding)" + }, + { + "code": "193064009", + "display": "Cerebrospinal fluid leak from spinal puncture (disorder)" + }, + { + "code": "213210005", + "display": "Postoperative cerebrospinal fluid leak (disorder)" + }, + { + "code": "230744007", + "display": "Cerebrospinal fluid leak (disorder)" + }, + { + "code": "232280003", + "display": "Post-traumatic cerebrospinal otorrhea (disorder)" + }, + { + "code": "232281004", + "display": "Postoperative cerebrospinal otorrhea (disorder)" + }, + { + "code": "427758000", + "display": "Cerebrospinal fluid leak from mouth (disorder)" + }, + { + "code": "429759002", + "display": "Cerebrospinal fluid leak from nose and mouth (disorder)" + }, + { + "code": "4114003", + "display": "Parenteral chemotherapy for malignant neoplasm (procedure)" + }, + { + "code": "6872008", + "display": "Perfusion chemotherapy for malignant neoplasm (procedure)" + }, + { + "code": "12149006", + "display": "Chemotherapy administration, subcutaneous, with local anesthesia (procedure)" + }, + { + "code": "22733003", + "display": "Chemotherapy for non-malignant neoplasm (procedure)" + }, + { + "code": "29391003", + "display": "Chemotherapy administration into peritoneal cavity requiring paracentesis (procedure)" + }, + { + "code": "31652009", + "display": "Intracavitary chemotherapy for malignant neoplasm (procedure)" + }, + { + "code": "38216008", + "display": "Infusion chemotherapy for malignant neoplasm (procedure)" + }, + { + "code": "51534007", + "display": "Oral chemotherapy for malignant neoplasm (procedure)" + }, + { + "code": "77738002", + "display": "Local chemotherapy for malignant neoplasm (procedure)" + }, + { + "code": "86036005", + "display": "Intravenous chemotherapy administration by push technique (procedure)" + }, + { + "code": "265760000", + "display": "Intravenous chemotherapy (procedure)" + }, + { + "code": "265761001", + "display": "Intramuscular chemotherapy (procedure)" + }, + { + "code": "265762008", + "display": "Subcutaneous chemotherapy (procedure)" + }, + { + "code": "266719004", + "display": "Oral chemotherapy (procedure)" + }, + { + "code": "309698005", + "display": "Continuous infusion of chemotherapy (procedure)" + }, + { + "code": "315601005", + "display": "Ambulatory chemotherapy (procedure)" + }, + { + "code": "367336001", + "display": "Chemotherapy (procedure)" + }, + { + "code": "394894008", + "display": "Pre-operative chemotherapy (procedure)" + }, + { + "code": "394895009", + "display": "Postoperative chemotherapy (procedure)" + }, + { + "code": "394935005", + "display": "Combined post-operative chemotherapy and radiotherapy (procedure)" + }, + { + "code": "399042005", + "display": "Chemotherapy cycle (procedure)" + }, + { + "code": "310012007", + "display": "Cochlear implant service (qualifier value)" + }, + { + "code": "310013002", + "display": "Adult cochlear implant service (qualifier value)" + }, + { + "code": "310014008", + "display": "Pediatric cochlear implant service (qualifier value)" + }, + { + "code": "467286008", + "display": "Cochlear implant system coil cable (physical object)" + }, + { + "code": "467396002", + "display": "Cochlear implant system (physical object)" + }, + { + "code": "467453006", + "display": "Cochlear implant system sound processor (physical object)" + }, + { + "code": "467600008", + "display": "Cochlear implant system electrode array assembly (physical object)" + }, + { + "code": "467624000", + "display": "Cochlear implant system battery pack (physical object)" + }, + { + "code": "468054007", + "display": "Cochlear implant system coil (physical object)" + }, + { + "code": "701524004", + "display": "Cochlear implant evaluation/programming application software (physical object)" + }, + { + "code": "701568002", + "display": "Cochlear implant assessment system (physical object)" + }, + { + "code": "708553008", + "display": "Cochlear implant system component (physical object)" + }, + { + "code": "711586008", + "display": "Cochlear implant system coil cover (physical object)" + }, + { + "code": "711587004", + "display": "Cochlear implant system sound processor earhook (physical object)" + }, + { + "code": "711588009", + "display": "Cochlear implant system sound processor off-ear holder (physical object)" + }, + { + "code": "711589001", + "display": "Cochlear implant system connector (physical object)" + }, + { + "code": "711590005", + "display": "Cochlear implant system sound processor/coil decorative cover (physical object)" + }, + { + "code": "711593007", + "display": "Cochlear implant system sound processor audio earhook (physical object)" + }, + { + "code": "183005", + "display": "Autoimmune pancytopenia (disorder)" + }, + { + "code": "862001", + "display": "Anemia caused by chlorate (disorder)" + }, + { + "code": "5603006", + "display": "Autoimmune hemolytic anemia caused by immunoglobulin G (disorder)" + }, + { + "code": "5876000", + "display": "Acquired pancytopenia (disorder)" + }, + { + "code": "9764001", + "display": "Anemia caused by radiation (disorder)" + }, + { + "code": "11781007", + "display": "Autoimmune hemolytic anemia caused by complement (disorder)" + }, + { + "code": "14126008", + "display": "Autosomal-linked pyridoxine refractory sideroblastic anemia (disorder)" + }, + { + "code": "15276008", + "display": "Drug-induced enzyme deficiency anemia (disorder)" + }, + { + "code": "16645003", + "display": "Anemia caused by insect venom (disorder)" + }, + { + "code": "18323000", + "display": "Drug-induced immune hemolytic anemia, immune complex type (disorder)" + }, + { + "code": "22098000", + "display": "Chronic idiopathic autoimmune hemolytic anemia (disorder)" + }, + { + "code": "26944003", + "display": "Acute megaloblastic anemia due to dialysis (disorder)" + }, + { + "code": "28975000", + "display": "Constitutional aplastic anemia (disorder)" + }, + { + "code": "29551000", + "display": "Anemia caused by oxygen (disorder)" + }, + { + "code": "33491002", + "display": "Autoimmune hemolytic anemia caused by immunoglobulin A plus complement (disorder)" + }, + { + "code": "34247008", + "display": "Anemia due to mechanical damage (disorder)" + }, + { + "code": "36919001", + "display": "Anemia caused by lead (disorder)" + }, + { + "code": "41841004", + "display": "Sideroblastic anemia (disorder)" + }, + { + "code": "42461002", + "display": "Anemia caused by copper (disorder)" + }, + { + "code": "43707008", + "display": "Anemia caused by heat (disorder)" + }, + { + "code": "43858000", + "display": "Secondary aplastic anemia (disorder)" + }, + { + "code": "44288006", + "display": "Anemia due to abnormality extrinsic to the red cell (disorder)" + }, + { + "code": "50220002", + "display": "Cellular immunologic aplastic anemia (disorder)" + }, + { + "code": "50253007", + "display": "Secondary paroxysmal cold hemoglobinuria (disorder)" + }, + { + "code": "57192008", + "display": "Acute pure red cell aplasia (disorder)" + }, + { + "code": "62389006", + "display": "Acute megaloblastic anemia due to severe illness (disorder)" + }, + { + "code": "62609001", + "display": "Autoimmune hemolytic anemia caused by immunoglobulin G plus complement (disorder)" + }, + { + "code": "71832003", + "display": "Autoimmune hemolytic anemia caused by immunoglobulin M (disorder)" + }, + { + "code": "71855000", + "display": "Acute megaloblastic anemia secondary to total parenteral nutrition (disorder)" + }, + { + "code": "72501006", + "display": "Anemia caused by arsenic hydride (disorder)" + }, + { + "code": "73891003", + "display": "Acute megaloblastic anemia caused by nitrous oxide (disorder)" + }, + { + "code": "77084001", + "display": "Immunologic aplastic anemia (disorder)" + }, + { + "code": "77607006", + "display": "Drug-induced sideroblastic anemia (disorder)" + }, + { + "code": "82430007", + "display": "Acute megaloblastic anemia (disorder)" + }, + { + "code": "90175006", + "display": "Secondary acquired sideroblastic anemia (disorder)" + }, + { + "code": "90414007", + "display": "Chronic acquired pure red cell aplasia (disorder)" + }, + { + "code": "91411007", + "display": "Autoimmune hemolytic anemia caused by immunoglobulin A (disorder)" + }, + { + "code": "111576004", + "display": "Acquired stomatocytosis (disorder)" + }, + { + "code": "111581008", + "display": "Anemia caused by physical agent (disorder)" + }, + { + "code": "127050002", + "display": "Secondary autoimmune hemolytic anemia (disorder)" + }, + { + "code": "127054006", + "display": "Cold agglutinin disease caused by Epstein-Barr virus infection (disorder)" + }, + { + "code": "127059001", + "display": "Drug-induced immune hemolytic anemia (disorder)" + }, + { + "code": "127060006", + "display": "Drug-induced immune hemolytic anemia, hapten type (disorder)" + }, + { + "code": "127061005", + "display": "Autoimmune hemolytic anemia, categorized by antibody class AND/OR complement (disorder)" + }, + { + "code": "127319005", + "display": "Anemia caused by alloimmune destruction of transfused red cells (disorder)" + }, + { + "code": "191212002", + "display": "Secondary cold-type hemolytic anemia (disorder)" + }, + { + "code": "191228007", + "display": "Acquired spherocytosis (disorder)" + }, + { + "code": "191244003", + "display": "Aplastic anemia due to chronic disease (disorder)" + }, + { + "code": "191246001", + "display": "Aplastic anemia due to infection (disorder)" + }, + { + "code": "191247005", + "display": "Aplastic anemia caused by radiation (disorder)" + }, + { + "code": "191248000", + "display": "Aplastic anemia caused by toxic cause (disorder)" + }, + { + "code": "191256002", + "display": "Idiopathic aplastic anemia (disorder)" + }, + { + "code": "191261000", + "display": "Secondary sideroblastic anemia due to disease (disorder)" + }, + { + "code": "191262007", + "display": "Secondary sideroblastic anemia caused by drugs and toxins (disorder)" + }, + { + "code": "191265009", + "display": "Anemia in neoplastic disease (disorder)" + }, + { + "code": "234366009", + "display": "Alcohol-related sideroblastic anemia (disorder)" + }, + { + "code": "234371002", + "display": "Congenital pure red cell aplasia (disorder)" + }, + { + "code": "234372009", + "display": "Congenital red cell hypoplasia (disorder)" + }, + { + "code": "234373004", + "display": "Constitutional red cell hypoplasia (disorder)" + }, + { + "code": "234376007", + "display": "Acquired red cell aplasia (disorder)" + }, + { + "code": "267524009", + "display": "Constitutional aplastic anemia with malformation (disorder)" + }, + { + "code": "267525005", + "display": "Constitutional red cell aplasia and hypoplasia (disorder)" + }, + { + "code": "267527002", + "display": "Aplastic anemia due to drugs (disorder)" + }, + { + "code": "273985002", + "display": "Anemia due to isoimmunization (disorder)" + }, + { + "code": "276448005", + "display": "Idiopathic sideroblastic anemia (disorder)" + }, + { + "code": "278363000", + "display": "Alcoholic macrocytosis (disorder)" + }, + { + "code": "290246007", + "display": "Sideropenic anemia with reticuloendothelial siderosis (disorder)" + }, + { + "code": "303266002", + "display": "Aplastic bone marrow (disorder)" + }, + { + "code": "306058006", + "display": "Aplastic anemia (disorder)" + }, + { + "code": "307726001", + "display": "Anemia in ovarian carcinoma (disorder)" + }, + { + "code": "309742004", + "display": "Drug-induced autoimmune hemolytic anemia (disorder)" + }, + { + "code": "398937006", + "display": "Cold autoimmune hemolytic anemia (disorder)" + }, + { + "code": "413565006", + "display": "Aplastic anemia associated with metabolic alteration (disorder)" + }, + { + "code": "413566007", + "display": "Aplastic anemia associated with pancreatitis (disorder)" + }, + { + "code": "413567003", + "display": "Aplastic anemia associated with pregnancy (disorder)" + }, + { + "code": "413603009", + "display": "Autoimmune hemolytic anemia (disorder)" + }, + { + "code": "420543008", + "display": "Anemia associated with acquired immunodeficiency syndrome (disorder)" + }, + { + "code": "421102007", + "display": "Aplastic anemia associated with acquired immunodeficiency syndrome (disorder)" + }, + { + "code": "424988008", + "display": "Anemia caused by substance (disorder)" + }, + { + "code": "428383000", + "display": "Anemia caused by medication (disorder)" + }, + { + "code": "429564000", + "display": "Anemia caused by chemotherapy (disorder)" + }, + { + "code": "438476003", + "display": "Autoimmune thrombotic thrombocytopenic purpura (disorder)" + }, + { + "code": "439007008", + "display": "Acquired thrombotic thrombocytopenic purpura (disorder)" + }, + { + "code": "441322009", + "display": "Drug induced thrombotic thrombocytopenic purpura (disorder)" + }, + { + "code": "713496008", + "display": "Anemia caused by zidovudine (disorder)" + }, + { + "code": "713508003", + "display": "Aplastic anemia co-occurrent with human immunodeficiency virus infection (disorder)" + }, + { + "code": "717050005", + "display": "Autosomal recessive sideroblastic anemia (disorder)" + }, + { + "code": "118791000119106", + "display": "Aplastic anemia caused by antineoplastic agent (disorder)" + }, + { + "code": "448964007", + "display": "Pneumococcal 13-valent conjugate vaccine (product)" + } + ] + }, + "request": { + "method": "PUT", + "url": "CodeSystem/2.16.840.1.113883.6.96" + } + }, + { + "resource": { + "resourceType": "CodeSystem", + "id": "2.16.840.1.113883.6.301", + "url": "http://www.nubc.org", + "status": "draft", + "concept": [ + { + "code": "0115", + "display": "Hospice" + }, + { + "code": "0125", + "display": "Hospice" + }, + { + "code": "0135", + "display": "Hospice" + }, + { + "code": "0145", + "display": "Hospice" + }, + { + "code": "0155", + "display": "Hospice" + }, + { + "code": "0235", + "display": "Hospice" + }, + { + "code": "0650", + "display": "General" + }, + { + "code": "0651", + "display": "Routine home care" + }, + { + "code": "0652", + "display": "Continuous home care" + }, + { + "code": "0655", + "display": "Inpatient respite care" + }, + { + "code": "0656", + "display": "General inpatient care nonrespite" + }, + { + "code": "0657", + "display": "Physician services" + }, + { + "code": "0658", + "display": "Hospice room & board-nursing facility" + }, + { + "code": "0659", + "display": "Other hospice" + }, + { + "code": "0810", + "display": "Nonpayment/Zero Claim, Hospice (non-hospital based)" + }, + { + "code": "0811", + "display": "Admit-Through-Discharge Claim, Hospice (non-hospital based)" + }, + { + "code": "0812", + "display": "Interim - First Claim, Hospice (non-hospital based)" + }, + { + "code": "0813", + "display": "Interim - Continuing Claim (Not Valid for Medicare PPS Claims), Hospice (non-hospital based)" + }, + { + "code": "0814", + "display": "Interim - Last Claim (Not Valid for Medicare Inpatient Hospital PPS Claims), Hospice (non-hospital based)" + }, + { + "code": "0815", + "display": "Late Charges Only Claim, Hospice (non-hospital based)" + }, + { + "code": "0817", + "display": "Replacement of Prior Claim, Hospice (non-hospital based)" + }, + { + "code": "0818", + "display": "Void/Cancel of a Prior Claim, Hospice (non-hospital based)" + }, + { + "code": "0819", + "display": "Final Claim for a Home Health PPS Episode, Hospice (non-hospital based)" + }, + { + "code": "0820", + "display": "Nonpayment/Zero Claim, Hospice (hospital-based)" + }, + { + "code": "0821", + "display": "Admit-Through-Discharge Claim, Hospice (hospital-based)" + }, + { + "code": "0822", + "display": "Interim - First Claim, Hospice (hospital-based)" + }, + { + "code": "0823", + "display": "Interim - Continuing Claim (Not Valid for Medicare PPS Claims), Hospice (hospital-based)" + }, + { + "code": "0824", + "display": "Interim - Last Claim (Not Valid for Medicare Inpatient Hospital PPS Claims), Hospice (hospital-based)" + }, + { + "code": "0825", + "display": "Late Charges Only Claim, Hospice (hospital-based)" + }, + { + "code": "0827", + "display": "Replacement of Prior Claim, Hospice (hospital-based)" + }, + { + "code": "0828", + "display": "Void/Cancel of a Prior Claim, Hospice (hospital-based)" + }, + { + "code": "0829", + "display": "Final Claim for a Home Health PPS Episode, Hospice (hospital-based)" + }, + { + "code": "081A", + "display": "Hospice Admission/Election Notice, Hospice (non-hospital based)" + }, + { + "code": "081B", + "display": "Termination/Revocation Notice - Hospice/Medicare Coordinated Care Demonstration/Religious Nonmedica, Hospice (non-hospital based)" + }, + { + "code": "081C", + "display": "Hospice Change of Provider Notice, Hospice (non-hospital based)" + }, + { + "code": "081D", + "display": "Void/Cancel - Hospice/Medicare Coordinated Care Demonstration/Religious Nonmedical Health Care Inst, Hospice (non-hospital based)" + }, + { + "code": "081E", + "display": "Hospice Change of Ownership, Hospice (non-hospital based)" + }, + { + "code": "081F", + "display": "Beneficiary Initiated Adjustment Claim, Hospice (non-hospital based)" + }, + { + "code": "081G", + "display": "CWF Initiated Adjustment Claim, Hospice (non-hospital based)" + }, + { + "code": "081H", + "display": "CMS Initiated Adjustment Claim, Hospice (non-hospital based)" + }, + { + "code": "081I", + "display": "Intermediary Adjustment Claim (Other Than PRO or Provider), Hospice (non-hospital based)" + }, + { + "code": "081J", + "display": "Initiated Adjustment Claim - Other, Hospice (non-hospital based)" + }, + { + "code": "081K", + "display": "OIG Initiated Adjustment Claim, Hospice (non-hospital based)" + }, + { + "code": "081M", + "display": "MSP Initiated Adjustment Claim, Hospice (non-hospital based)" + }, + { + "code": "081O", + "display": "Nonpayment/Zero Claims, Hospice (non-hospital based)" + }, + { + "code": "081X", + "display": "Void/Cancel a Prior Abbreviated Encounter Submission, Hospice (non-hospital based)" + }, + { + "code": "081Y", + "display": "Replacement of a Prior Abbreviated Encounter Submission, Hospice (non-hospital based)" + }, + { + "code": "081Z", + "display": "New Abbreviated Encounter Submission, Hospice (non-hospital based)" + }, + { + "code": "082A", + "display": "Hospice Admission/Election Notice, Hospice (hospital-based)" + }, + { + "code": "082B", + "display": "Termination/Revocation Notice - Hospice/Medicare Coordinated Care Demonstration/Religious Nonmedica, Hospice (hospital-based)" + }, + { + "code": "082C", + "display": "Hospice Change of Provider Notice, Hospice (hospital-based)" + }, + { + "code": "082D", + "display": "Void/Cancel - Hospice/Medicare Coordinated Care Demonstration/Religious Nonmedical Health Care Inst, Hospice (hospital-based)" + }, + { + "code": "082E", + "display": "Hospice Change of Ownership, Hospice (hospital-based)" + }, + { + "code": "082F", + "display": "Beneficiary Initiated Adjustment Claim, Hospice (hospital-based)" + }, + { + "code": "082G", + "display": "CWF Initiated Adjustment Claim, Hospice (hospital-based)" + }, + { + "code": "082H", + "display": "CMS Initiated Adjustment Claim, Hospice (hospital-based)" + }, + { + "code": "082I", + "display": "Intermediary Adjustment Claim (Other Than PRO or Provider), Hospice (hospital-based)" + }, + { + "code": "082J", + "display": "Initiated Adjustment Claim - Other, Hospice (hospital-based)" + }, + { + "code": "082K", + "display": "OIG Initiated Adjustment Claim, Hospice (hospital-based)" + }, + { + "code": "082M", + "display": "MSP Initiated Adjustment Claim, Hospice (hospital-based)" + }, + { + "code": "082O", + "display": "Nonpayment/Zero Claims, Hospice (hospital-based)" + }, + { + "code": "082X", + "display": "Void/Cancel a Prior Abbreviated Encounter Submission, Hospice (hospital-based)" + }, + { + "code": "082Y", + "display": "Replacement of a Prior Abbreviated Encounter Submission, Hospice (hospital-based)" + }, + { + "code": "082Z", + "display": "New Abbreviated Encounter Submission, Hospice (hospital-based)" + }, + { + "code": "0510", + "display": "General" + }, + { + "code": "0513", + "display": "Psychiatric clinic" + }, + { + "code": "0516", + "display": "Urgent care clinic" + }, + { + "code": "0517", + "display": "Family practice clinic" + }, + { + "code": "0519", + "display": "Other clinic" + }, + { + "code": "0520", + "display": "General" + }, + { + "code": "0521", + "display": "Clinic visit by member to RHC/FQHC" + }, + { + "code": "0522", + "display": "Home visit by RHC/FQHC practitioner" + }, + { + "code": "0523", + "display": "Family practice clinic" + }, + { + "code": "0526", + "display": "Urgent care clinic" + }, + { + "code": "0527", + "display": "Visit nurse service to a member's home in a home health shortage area" + }, + { + "code": "0528", + "display": "Visit by RHC/FQHC practitioner to other non-RHC/FQHC site (e.g., scene of accident)" + }, + { + "code": "0529", + "display": "Other freestanding clinic" + }, + { + "code": "0900", + "display": "General" + }, + { + "code": "0901", + "display": "Electroshock treatment (ECT)" + }, + { + "code": "0902", + "display": "Milieu therapy" + }, + { + "code": "0903", + "display": "Play therapy" + }, + { + "code": "0904", + "display": "Activity therapy" + }, + { + "code": "0905", + "display": "Intensive outpatient services-psychiatric" + }, + { + "code": "0907", + "display": "Community behavioral health program (day treatment)" + }, + { + "code": "0911", + "display": "Rehabilitation" + }, + { + "code": "0912", + "display": "Partial hospitalization-less intensive" + }, + { + "code": "0913", + "display": "Partial hospitalization-intensive" + }, + { + "code": "0914", + "display": "Individual therapy" + }, + { + "code": "0915", + "display": "Group therapy" + }, + { + "code": "0916", + "display": "Family therapy" + }, + { + "code": "0917", + "display": "Biofeedback" + }, + { + "code": "0919", + "display": "Other Behavioral health treatments" + }, + { + "code": "0982", + "display": "Outpatient services" + }, + { + "code": "0983", + "display": "Clinic" + } + ] + }, + "request": { + "method": "PUT", + "url": "CodeSystem/2.16.840.1.113883.6.301" + } + } + ] +} + diff --git a/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library-asf-cql.txt b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library-asf-cql.txt new file mode 100644 index 00000000000..07fde74dbd4 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library-asf-cql.txt @@ -0,0 +1,237 @@ +library ASF_FHIR version '1.0.0' + +/* +Unhealthy Alcohol Use Screening and Follow-up (ASF) +*/ + +using FHIR version '3.0.0' + +include FHIRHelpers version '3.0.0' called FHIRHelpers + +/* +Measure Description +The percentage of members 18 years of age and older who were screened for +unhealthy alcohol use using a standardized tool and, if screened +positive, received appropriate follow-up care. Two rates are reported. +1. Unhealthy Alcohol Use Screening. The percentage of members who had a +systematic screening for unhealthy alcohol use. +2. Counseling or Other Follow-up. The percentage of members who screened +positive for unhealthy alcohol use and received brief counseling or +other follow-up care within 2 months of a positive screening. +*/ + +codesystem "LOINC": 'http://loinc.org' +codesystem "CQFramework": 'http://cqframework.info/codesystem/placeholder' + +// Update + +valueset "Alcohol Counseling and Treatment": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1437' +valueset "Alcohol Screening": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1337' +valueset "Alcohol use disorder": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1339' +valueset "Dementia": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1074' + +code "Alcoholic drinks per drinking day - Reported": '11287-0' from "LOINC" +code "AUDIT Total Score (in points)": '75624-7' from "LOINC" +code "AUDIT-C Total Score (in points)": '75626-2' from "LOINC" + +/* +This library has an explicit parameter which is the product line. +Recognized normal arguments are {'commercial', 'medicaid', 'medicare'}. +If one of these normal arguments is given, the patient will only be +considered to be in the Initial Population if they have an appropriate +continuous enrollment in that kind of medical plan. +If instead a null argument is given, their enrollment status will have no +effect on whether they are considered to be in the Initial Population. +If instead some other argument is given (an unrecognized plan type), +the patient will unconditionally NOT be in the Initial Population. +*/ + +parameter "Product Line" String + +/* +This library has an explicit parameter which is the measurement year. +While the actual parameter's type accepts all intervals, this library +expects it will only be given arguments corresponding exactly to one whole +calendar year, and it will not behave properly otherwise; 2017 for example: +Interval[DateTime(2017,1,1,0,0,0,0), DateTime(2018,1,1,0,0,0,0)) +*/ + +parameter "Measurement Period" Interval + +/* +This library evaluates with respect to exactly 1 candidate patient at a time, +that patient being given by the special context parameter Patient. +*/ + +context Patient + +define "Initial Population": + AgeInYearsAt(start of "Measurement Period") >= 18 + +/* +Exclusions +*/ + +define "Denominator Exclusion": + exists ( + [Condition: "Alcohol use disorder"] AlcoholUse + where AlcoholUse.clinicalStatus in { 'active', 'recurrence' } + and AlcoholUse.assertedDate during day of Interval[start of "Measurement Period" - 1 year, end of "Measurement Period"] + ) + or exists ( + [Condition: "Dementia"] D + where D.clinicalStatus in { 'active', 'recurrence' } + and D.assertedDate during day of Interval[start of "Measurement Period", end of "Measurement Period" - 60 days] + ) + +/* +Denominators and Numerators +*/ + +// Unhealthy Alcohol Use Screening + +define "Denominator 1": + // "Initial Population" + true + +// Unhealthy Alcohol Use Screening + +define "Numerator 1": + // "Initial Population" + exists ( "AUDIT-C Assessment" ) + or exists ( "AUDIT Assessment" ) + or ( + "Patient is Male" + and exists ( "Five or more drinks per day Assessment" ) + ) + or ( + "Patient is Female" + and ( + exists ( "Four or more drinks per day Assessment" ) + or exists ( "Five or more drinks per day Assessment" ) + ) + ) + or ( + "Patient is 65 or Over" + and ( + exists ( "Four or more drinks per day Assessment" ) + or exists ( "Five or more drinks per day Assessment" ) + ) + ) + // Note: The spec doesn't include the over 65 test here but does in dependent N/D 2. + +define "AUDIT-C Assessment": + [Observation: "AUDIT-C Total Score (in points)"] A + where A.status in { 'final', 'amended', 'corrected' } + and A.effective in day of "Measurement Period" + and A.value is not null + +define "AUDIT Assessment": + [Observation: "AUDIT Total Score (in points)"] A + where A.status in { 'final', 'amended', 'corrected' } + and A.effective in day of "Measurement Period" + and A.value is not null + +define "Patient is Male": + Patient.gender = 'male' + +define "Five or more drinks per day Assessment": + [Observation: "Alcoholic drinks per drinking day - Reported"] A + where A.status in { 'final', 'amended', 'corrected' } + and A.effective in day of "Measurement Period" + and A.value >= 5 '{drinks}/d' + +define "Patient is Female": + Patient.gender = 'female' + +define "Patient is 65 or Over": + AgeInYearsAt(start of "Measurement Period")>= 65 + +define "Four or more drinks per day Assessment": + [Observation: "Alcoholic drinks per drinking day - Reported"] A + where A.status in { 'final', 'amended', 'corrected' } + and A.effective in day of "Measurement Period" + and A.value >= 4 '{drinks}/d' + +// Counseling or Other Follow-Up on Positive Screen + +/* +Initial Population +Product lines -- Commercial, Medicaid, Medicare (report each product line separately). +*/ + +define "Denominator 2": + // "Initial Population" + exists "Positive Assessment for Unhealthy Alcohol Use" + +// Counseling or Other Follow-Up on Positive Screen + +define "Numerator 2": + // "Initial Population" + exists ( + "Initial Positive Assessment for Unhealthy Alcohol Use" A + with "Followup After Positive Screen" F + such that + if F is Observation then F.effective 2 months or less on or after day of A.effective + else F.performed."end" 2 months or less on or after day of A.effective + ) + +define "Positive Assessment for Unhealthy Alcohol Use": + ( + "AUDIT Assessment" A + where A.value >= 8 + ) + union ( + "AUDIT-C Assessment" A + where ("Patient is Male" and A.value >= 4) + or ("Patient is Female" and A.value >= 3) + ) + union ( + "Five or more drinks per day Assessment" A + where "Patient is Male" + and A.value >= 1 + ) + union ( + "Four or more drinks per day Assessment" A + where ("Patient is Female" or "Patient is 65 or Over") + and A.value >= 1 + ) + +define "Followup After Positive Screen": + ( + [Procedure: "Alcohol Counseling and Treatment"] Proc + where Proc.status = 'completed' + ) + union ( + [Observation: "Alcohol Counseling and Treatment"] Obs + where Obs.status in { 'final', 'amended', 'corrected' } + ) + union ( + [Procedure: "Alcohol Screening"] Proc + where Proc.status = 'completed' + ) + union ( + [Observation: "Alcohol Screening"] Obs + where Obs.status in { 'final', 'amended', 'corrected' } + ) + +define "Initial Positive Assessment for Unhealthy Alcohol Use": + { + First( + "Positive Assessment for Unhealthy Alcohol Use" A + sort by effective.value + ) + } + +/* +Stratifiers +*/ + +define "Stratifier 1": + AgeInYearsAt(start of "Measurement Period")in Interval[18, 44] + +define "Stratifier 2": + AgeInYearsAt(start of "Measurement Period")in Interval[45, 64] + +define "Stratifier 3": + AgeInYearsAt(start of "Measurement Period")>= 65 diff --git a/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library-asf-elm.xml b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library-asf-elm.xml new file mode 100644 index 00000000000..312c5f51cf3 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library-asf-elm.xml @@ -0,0 +1,736 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library/README.txt b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library/README.txt new file mode 100644 index 00000000000..509dc0fa999 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library/README.txt @@ -0,0 +1 @@ +The library json files in this folder were downloaded from https://github.com/cqframework/hedis-ig/tree/master/resources/library diff --git a/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library/library-asf-logic.json b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library/library-asf-logic.json new file mode 100644 index 00000000000..d8676edd919 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library/library-asf-logic.json @@ -0,0 +1,138 @@ +{ + "resourceType": "Library", + "id": "library-asf-logic", + "text": { + "status": "generated", + "div": "
\n \n \n
Id: asf-fhir
Type:
system: http://hl7.org/fhir/codesystem-library-type.html
code: logic-library
Version: 1.0.0
Status: active
Related:

type: depends-on

Resource:
reference: Library/fhirhelpers

Data Requirements:

type: Condition

code filter:
path: code
valueset: http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1339

type: Condition

code filter:
path: code
valueset: http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1074

type: Observation

code filter:
path: code

type: Observation

code filter:
path: code

type: Observation

code filter:
path: code

type: Observation

code filter:
path: code

type: Procedure

code filter:
path: code
valueset: http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1437

type: Observation

code filter:
path: code
valueset: http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1437

type: Procedure

code filter:
path: code
valueset: http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1337

type: Observation

code filter:
path: code
valueset: http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1337

Content: type: text/cql
library ASF_FHIR version '1.0.0'\n\n/*\nUnhealthy Alcohol Use Screening and Follow-up (ASF)\n*/\n\nusing FHIR version '3.0.0'\n\ninclude FHIRHelpers version '3.0.0' called FHIRHelpers\n\n/*\nMeasure Description\nThe percentage of members 18 years of age and older who were screened for\nunhealthy alcohol use using a standardized tool and, if screened\npositive, received appropriate follow-up care. Two rates are reported.\n1. Unhealthy Alcohol Use Screening. The percentage of members who had a\nsystematic screening for unhealthy alcohol use.\n2. Counseling or Other Follow-up. The percentage of members who screened\npositive for unhealthy alcohol use and received brief counseling or\nother follow-up care within 2 months of a positive screening.\n*/\n\ncodesystem \"LOINC\": 'http://loinc.org'\ncodesystem \"CQFramework\": 'http://cqframework.info/codesystem/placeholder'\n\n// Update\n\nvalueset \"Alcohol Counseling and Treatment\": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1437'\nvalueset \"Alcohol Screening\": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1337'\nvalueset \"Alcohol use disorder\": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1339'\nvalueset \"Dementia\": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1074'\n\ncode \"Alcoholic drinks per drinking day - Reported\": '11287-0' from \"LOINC\"\ncode \"AUDIT Total Score (in points)\": '75624-7' from \"LOINC\"\ncode \"AUDIT-C Total Score (in points)\": '75626-2' from \"LOINC\"\n\n/*\nThis library has an explicit parameter which is the product line.\nRecognized normal arguments are {'commercial', 'medicaid', 'medicare'}.\nIf one of these normal arguments is given, the patient will only be\nconsidered to be in the Initial Population if they have an appropriate\ncontinuous enrollment in that kind of medical plan.\nIf instead a null argument is given, their enrollment status will have no\neffect on whether they are considered to be in the Initial Population.\nIf instead some other argument is given (an unrecognized plan type),\nthe patient will unconditionally NOT be in the Initial Population.\n*/\n\nparameter \"Product Line\" String\n\n/*\nThis library has an explicit parameter which is the measurement year.\nWhile the actual parameter's type accepts all intervals, this library\nexpects it will only be given arguments corresponding exactly to one whole\ncalendar year, and it will not behave properly otherwise; 2017 for example:\nInterval[DateTime(2017,1,1,0,0,0,0), DateTime(2018,1,1,0,0,0,0))\n*/\n\nparameter \"Measurement Period\" Interval<DateTime>\n\n/*\nThis library evaluates with respect to exactly 1 candidate patient at a time,\nthat patient being given by the special context parameter Patient.\n*/\n\ncontext Patient\n\ndefine \"Initial Population\":\n\tAgeInYearsAt(start of \"Measurement Period\") >= 18\n\n/*\nExclusions\n*/\n\ndefine \"Denominator Exclusion\":\n  exists (\n    [Condition: \"Alcohol use disorder\"] AlcoholUse\n      where AlcoholUse.clinicalStatus in { 'active', 'recurrence' }\n        and AlcoholUse.assertedDate during day of Interval[start of \"Measurement Period\" - 1 year, end of \"Measurement Period\"]\n\t)\n    or exists (\n      [Condition: \"Dementia\"] D\n        where D.clinicalStatus in { 'active', 'recurrence' }\n          and D.assertedDate during day of Interval[start of \"Measurement Period\", end of \"Measurement Period\" - 60 days]\n    )\n\n/*\nDenominators and Numerators\n*/\n\n// Unhealthy Alcohol Use Screening\n\ndefine \"Denominator 1\":\n  // \"Initial Population\"\n  true\n\n// Unhealthy Alcohol Use Screening\n\ndefine \"Numerator 1\":\n  // \"Initial Population\"\n  exists ( \"AUDIT-C Assessment\" )\n    or exists ( \"AUDIT Assessment\" )\n    or (\n      \"Patient is Male\"\n        and exists ( \"Five or more drinks per day Assessment\" )\n    )\n    or (\n      \"Patient is Female\"\n        and (\n          exists ( \"Four or more drinks per day Assessment\" )\n            or exists ( \"Five or more drinks per day Assessment\" )\n        )\n    )\n    or (\n      \"Patient is 65 or Over\"\n        and (\n          exists ( \"Four or more drinks per day Assessment\" )\n            or exists ( \"Five or more drinks per day Assessment\" )\n        )\n    )\n   // Note: The spec doesn't include the over 65 test here but does in dependent N/D 2.\n\ndefine \"AUDIT-C Assessment\":\n  [Observation: \"AUDIT-C Total Score (in points)\"] A\n    where A.status in { 'final', 'amended', 'corrected' }\n      and A.effective in day of \"Measurement Period\"\n      and A.value is not null\n\ndefine \"AUDIT Assessment\":\n  [Observation: \"AUDIT Total Score (in points)\"] A\n    where A.status in { 'final', 'amended', 'corrected' }\n      and A.effective in day of \"Measurement Period\"\n      and A.value is not null\n\ndefine \"Patient is Male\":\n  Patient.gender = 'male'\n\ndefine \"Five or more drinks per day Assessment\":\n  [Observation: \"Alcoholic drinks per drinking day - Reported\"] A\n    where A.status in { 'final', 'amended', 'corrected' }\n      and A.effective in day of \"Measurement Period\"\n      and A.value >= 5 '{drinks}/d'\n\ndefine \"Patient is Female\":\n  Patient.gender = 'female'\n\ndefine \"Patient is 65 or Over\":\n  AgeInYearsAt(start of \"Measurement Period\")>= 65\n\ndefine \"Four or more drinks per day Assessment\":\n  [Observation: \"Alcoholic drinks per drinking day - Reported\"] A\n    where A.status in { 'final', 'amended', 'corrected' }\n      and A.effective in day of \"Measurement Period\"\n      and A.value >= 4 '{drinks}/d'\n\n// Counseling or Other Follow-Up on Positive Screen\n\n/*\nInitial Population\nProduct lines -- Commercial, Medicaid, Medicare (report each product line separately).\n*/\n\ndefine \"Denominator 2\":\n  // \"Initial Population\"\n  exists \"Positive Assessment for Unhealthy Alcohol Use\"\n\n// Counseling or Other Follow-Up on Positive Screen\n\ndefine \"Numerator 2\":\n  // \"Initial Population\"\n  exists (\n    \"Initial Positive Assessment for Unhealthy Alcohol Use\" A\n      with \"Followup After Positive Screen\" F\n        such that\n          if F is Observation then F.effective 2 months or less on or after day of A.effective\n          else F.performed.\"end\" 2 months or less on or after day of A.effective\n  )\n\ndefine \"Positive Assessment for Unhealthy Alcohol Use\":\n  (\n    \"AUDIT Assessment\" A\n      where A.value >= 8\n  )\n    union (\n      \"AUDIT-C Assessment\" A\n        where (\"Patient is Male\" and A.value >= 4)\n          or (\"Patient is Female\" and A.value >= 3)\n    )\n    union (\n      \"Five or more drinks per day Assessment\" A\n        where \"Patient is Male\"\n          and A.value >= 1\n    )\n    union (\n      \"Four or more drinks per day Assessment\" A\n        where (\"Patient is Female\" or \"Patient is 65 or Over\")\n          and A.value >= 1\n    )\n\ndefine \"Followup After Positive Screen\":\n  (\n    [Procedure: \"Alcohol Counseling and Treatment\"] Proc\n      where Proc.status = 'completed'\n\t)\n    union (\n      [Observation: \"Alcohol Counseling and Treatment\"] Obs\n        where Obs.status in { 'final', 'amended', 'corrected' }\n    )\n    union (\n      [Procedure: \"Alcohol Screening\"] Proc\n        where Proc.status = 'completed'\n    )\n    union (\n      [Observation: \"Alcohol Screening\"] Obs\n        where Obs.status in { 'final', 'amended', 'corrected' }\n    )\n\ndefine \"Initial Positive Assessment for Unhealthy Alcohol Use\":\n  {\n    First(\n      \"Positive Assessment for Unhealthy Alcohol Use\" A\n        sort by effective.value\n    )\n  }\n\n/*\nStratifiers\n*/\n\ndefine \"Stratifier 1\":\n  AgeInYearsAt(start of \"Measurement Period\")in Interval[18, 44]\n\ndefine \"Stratifier 2\":\n  AgeInYearsAt(start of \"Measurement Period\")in Interval[45, 64]\n\ndefine \"Stratifier 3\":\n  AgeInYearsAt(start of \"Measurement Period\")>= 65\n
\n \n \n
\n
" + }, + "url": "http://ncqa.org/fhir/hedis/Library/library-asf-logic", + "identifier": [ + { + "use": "official", + "value": "Library_ASF" + } + ], + "version": "1.0.0", + "name": "ASF_FHIR", + "title": "ASF Logic", + "status": "active", + "experimental": true, + "type": { + "coding": [ + { + "system": "http://hl7.org/fhir/library-type", + "code": "logic-library" + } + ] + }, + "date": "2017-05-05", + "publisher": "National Committee for Quality Assurance", + "description": "Unhealthy Alcohol Use Screening and Follow-up (ASF) Logic Library", + "copyright": "The HEDIS measure specifications were developed by and are owned by NCQA. The HEDIS measure specifications are not clinical guidelines and do not establish a standard of medical care. NCQA makes no representations, warranties, or endorsement about the quality of any organization or physician that uses or reports performance measures and NCQA has no liability to anyone who relies on such measure specifications. These materials may not be modified by anyone other than NCQA. Anyone desiring to use or reproduce the materials without modification for a non-commercial purpose may do so without obtaining any approval from NCQA. **Any commercial use (including but not limited to vendors using the measure specifications with a product or service, including calculation of measure results) must be approved by NCQA and are subject to a license at the discretion of NCQA**. © 2019 NCQA, all rights reserved.", + "relatedArtifact": [ + { + "type": "depends-on", + "resource": { + "reference": "Library/library-fhir-helpers" + } + } + ], + "dataRequirement": [ + { + "type": "Condition", + "codeFilter": [ + { + "path": "code", + "valueSetString": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1339" + } + ] + }, + { + "type": "Condition", + "codeFilter": [ + { + "path": "code", + "valueSetString": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1074" + } + ] + }, + { + "type": "Observation", + "codeFilter": [ + { + "path": "code" + } + ] + }, + { + "type": "Observation", + "codeFilter": [ + { + "path": "code" + } + ] + }, + { + "type": "Observation", + "codeFilter": [ + { + "path": "code" + } + ] + }, + { + "type": "Observation", + "codeFilter": [ + { + "path": "code" + } + ] + }, + { + "type": "Procedure", + "codeFilter": [ + { + "path": "code", + "valueSetString": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1437" + } + ] + }, + { + "type": "Observation", + "codeFilter": [ + { + "path": "code", + "valueSetString": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1437" + } + ] + }, + { + "type": "Procedure", + "codeFilter": [ + { + "path": "code", + "valueSetString": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1337" + } + ] + }, + { + "type": "Observation", + "codeFilter": [ + { + "path": "code", + "valueSetString": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1337" + } + ] + } + ], + "content": [ + { + "contentType": "application/elm+xml", + "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGxpYnJhcnkgeG1sbnM9InVybjpobDctb3JnOmVsbTpyMSIgeG1sbnM6dD0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczpmaGlyPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB4bWxuczpxZG00Mz0idXJuOmhlYWx0aGl0LWdvdjpxZG06djRfMyIgeG1sbnM6cWRtNTM9InVybjpoZWFsdGhpdC1nb3Y6cWRtOnY1XzMiIHhtbG5zOmE9InVybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMSI+CiAgIDxhbm5vdGF0aW9uIHN0YXJ0TGluZT0iMTI0IiBzdGFydENoYXI9IjMiIGVuZExpbmU9IjEyNCIgZW5kQ2hhcj0iNTAiIG1lc3NhZ2U9IkNvdWxkIG5vdCByZXNvbHZlIG1lbWJlcnNoaXAgb3BlcmF0b3IgZm9yIHRlcm1pbm9sb2d5IHRhcmdldCBvZiB0aGUgcmV0cmlldmUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIHN0YXJ0TGluZT0iMTMwIiBzdGFydENoYXI9IjMiIGVuZExpbmU9IjEzMCIgZW5kQ2hhcj0iNDgiIG1lc3NhZ2U9IkNvdWxkIG5vdCByZXNvbHZlIG1lbWJlcnNoaXAgb3BlcmF0b3IgZm9yIHRlcm1pbm9sb2d5IHRhcmdldCBvZiB0aGUgcmV0cmlldmUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIHN0YXJ0TGluZT0iMTM5IiBzdGFydENoYXI9IjMiIGVuZExpbmU9IjEzOSIgZW5kQ2hhcj0iNjMiIG1lc3NhZ2U9IkNvdWxkIG5vdCByZXNvbHZlIG1lbWJlcnNoaXAgb3BlcmF0b3IgZm9yIHRlcm1pbm9sb2d5IHRhcmdldCBvZiB0aGUgcmV0cmlldmUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxhbm5vdGF0aW9uIHN0YXJ0TGluZT0iMTUxIiBzdGFydENoYXI9IjMiIGVuZExpbmU9IjE1MSIgZW5kQ2hhcj0iNjMiIG1lc3NhZ2U9IkNvdWxkIG5vdCByZXNvbHZlIG1lbWJlcnNoaXAgb3BlcmF0b3IgZm9yIHRlcm1pbm9sb2d5IHRhcmdldCBvZiB0aGUgcmV0cmlldmUuIiBlcnJvclR5cGU9InNlbWFudGljIiBlcnJvclNldmVyaXR5PSJ3YXJuaW5nIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUVycm9yIi8+CiAgIDxpZGVudGlmaWVyIGlkPSJBU0ZfRkhJUiIgdmVyc2lvbj0iMS4wLjAiLz4KICAgPHNjaGVtYUlkZW50aWZpZXIgaWQ9InVybjpobDctb3JnOmVsbSIgdmVyc2lvbj0icjEiLz4KICAgPHVzaW5ncz4KICAgICAgPGRlZiBsb2NhbElkZW50aWZpZXI9IlN5c3RlbSIgdXJpPSJ1cm46aGw3LW9yZzplbG0tdHlwZXM6cjEiLz4KICAgICAgPGRlZiBsb2NhbElkZW50aWZpZXI9IkZISVIiIHVyaT0iaHR0cDovL2hsNy5vcmcvZmhpciIgdmVyc2lvbj0iMy4wLjAiLz4KICAgPC91c2luZ3M+CiAgIDxpbmNsdWRlcz4KICAgICAgPGRlZiBsb2NhbElkZW50aWZpZXI9IkZISVJIZWxwZXJzIiBwYXRoPSJGSElSSGVscGVycyIgdmVyc2lvbj0iMy4wLjAiLz4KICAgPC9pbmNsdWRlcz4KICAgPHBhcmFtZXRlcnM+CiAgICAgIDxkZWYgbmFtZT0iUHJvZHVjdCBMaW5lIiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPHBhcmFtZXRlclR5cGVTcGVjaWZpZXIgbmFtZT0idDpTdHJpbmciIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iTWVhc3VyZW1lbnQgUGVyaW9kIiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPHBhcmFtZXRlclR5cGVTcGVjaWZpZXIgeHNpOnR5cGU9IkludGVydmFsVHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgIDxwb2ludFR5cGUgbmFtZT0idDpEYXRlVGltZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICA8L3BhcmFtZXRlclR5cGVTcGVjaWZpZXI+CiAgICAgIDwvZGVmPgogICA8L3BhcmFtZXRlcnM+CiAgIDxjb2RlU3lzdGVtcz4KICAgICAgPGRlZiBuYW1lPSJMT0lOQyIgaWQ9Imh0dHA6Ly9sb2luYy5vcmciIGFjY2Vzc0xldmVsPSJQdWJsaWMiLz4KICAgICAgPGRlZiBuYW1lPSJDUUZyYW1ld29yayIgaWQ9Imh0dHA6Ly9jcWZyYW1ld29yay5pbmZvL2NvZGVzeXN0ZW0vcGxhY2Vob2xkZXIiIGFjY2Vzc0xldmVsPSJQdWJsaWMiLz4KICAgPC9jb2RlU3lzdGVtcz4KICAgPHZhbHVlU2V0cz4KICAgICAgPGRlZiBuYW1lPSJBbGNvaG9sIENvdW5zZWxpbmcgYW5kIFRyZWF0bWVudCIgaWQ9Imh0dHA6Ly9uY3FhLm9yZy9oZWRpcy9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDA0LjE0MzciIGFjY2Vzc0xldmVsPSJQdWJsaWMiLz4KICAgICAgPGRlZiBuYW1lPSJBbGNvaG9sIFNjcmVlbmluZyIgaWQ9Imh0dHA6Ly9uY3FhLm9yZy9oZWRpcy9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDA0LjEzMzciIGFjY2Vzc0xldmVsPSJQdWJsaWMiLz4KICAgICAgPGRlZiBuYW1lPSJBbGNvaG9sIHVzZSBkaXNvcmRlciIgaWQ9Imh0dHA6Ly9uY3FhLm9yZy9oZWRpcy9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDA0LjEzMzkiIGFjY2Vzc0xldmVsPSJQdWJsaWMiLz4KICAgICAgPGRlZiBuYW1lPSJEZW1lbnRpYSIgaWQ9Imh0dHA6Ly9uY3FhLm9yZy9oZWRpcy9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDA0LjEwNzQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiLz4KICAgPC92YWx1ZVNldHM+CiAgIDxjb2Rlcz4KICAgICAgPGRlZiBuYW1lPSJBbGNvaG9saWMgZHJpbmtzIHBlciBkcmlua2luZyBkYXkgLSBSZXBvcnRlZCIgaWQ9IjExMjg3LTAiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8Y29kZVN5c3RlbSBuYW1lPSJMT0lOQyIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJBVURJVCBUb3RhbCBTY29yZSAoaW4gcG9pbnRzKSIgaWQ9Ijc1NjI0LTciIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8Y29kZVN5c3RlbSBuYW1lPSJMT0lOQyIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJBVURJVC1DIFRvdGFsIFNjb3JlIChpbiBwb2ludHMpIiBpZD0iNzU2MjYtMiIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxjb2RlU3lzdGVtIG5hbWU9IkxPSU5DIi8+CiAgICAgIDwvZGVmPgogICA8L2NvZGVzPgogICA8c3RhdGVtZW50cz4KICAgICAgPGRlZiBuYW1lPSJQYXRpZW50IiBjb250ZXh0PSJQYXRpZW50Ij4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IlNpbmdsZXRvbkZyb20iPgogICAgICAgICAgICA8b3BlcmFuZCBkYXRhVHlwZT0iZmhpcjpQYXRpZW50IiB4c2k6dHlwZT0iUmV0cmlldmUiLz4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJJbml0aWFsIFBvcHVsYXRpb24iIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iR3JlYXRlck9yRXF1YWwiPgogICAgICAgICAgICA8b3BlcmFuZCBwcmVjaXNpb249IlllYXIiIHhzaTp0eXBlPSJDYWxjdWxhdGVBZ2VBdCI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJUb0RhdGVUaW1lIj4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0iYmlydGhEYXRlLnZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICA8c291cmNlIG5hbWU9IlBhdGllbnQiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iU3RhcnQiPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJNZWFzdXJlbWVudCBQZXJpb2QiIHhzaTp0eXBlPSJQYXJhbWV0ZXJSZWYiLz4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDxvcGVyYW5kIHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iMTgiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iRGVub21pbmF0b3IgRXhjbHVzaW9uIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9Ik9yIj4KICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IkV4aXN0cyI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgICAgICAgIDxzb3VyY2UgYWxpYXM9IkFsY29ob2xVc2UiPgogICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBkYXRhVHlwZT0iZmhpcjpDb25kaXRpb24iIGNvZGVQcm9wZXJ0eT0iY29kZSIgeHNpOnR5cGU9IlJldHJpZXZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGVzIG5hbWU9IkFsY29ob2wgdXNlIGRpc29yZGVyIiB4c2k6dHlwZT0iVmFsdWVTZXRSZWYiLz4KICAgICAgICAgICAgICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgICAgICAgPHdoZXJlIHhzaTp0eXBlPSJBbmQiPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iSW4iPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJUb1N0cmluZyIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJjbGluaWNhbFN0YXR1cyIgc2NvcGU9IkFsY29ob2xVc2UiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJMaXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9ImFjdGl2ZSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9InJlY3VycmVuY2UiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwcmVjaXNpb249IkRheSIgeHNpOnR5cGU9IkluIj4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iVG9EYXRlVGltZSIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJhc3NlcnRlZERhdGUiIHNjb3BlPSJBbGNvaG9sVXNlIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb3dDbG9zZWQ9InRydWUiIGhpZ2hDbG9zZWQ9InRydWUiIHhzaTp0eXBlPSJJbnRlcnZhbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsb3cgeHNpOnR5cGU9IlN1YnRyYWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlN0YXJ0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iTWVhc3VyZW1lbnQgUGVyaW9kIiB4c2k6dHlwZT0iUGFyYW1ldGVyUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgdmFsdWU9IjEiIHVuaXQ9InllYXIiIHhzaTp0eXBlPSJRdWFudGl0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhpZ2ggeHNpOnR5cGU9IkVuZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9Ik1lYXN1cmVtZW50IFBlcmlvZCIgeHNpOnR5cGU9IlBhcmFtZXRlclJlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2hpZ2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8L3doZXJlPgogICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IkV4aXN0cyI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgICAgICAgIDxzb3VyY2UgYWxpYXM9IkQiPgogICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBkYXRhVHlwZT0iZmhpcjpDb25kaXRpb24iIGNvZGVQcm9wZXJ0eT0iY29kZSIgeHNpOnR5cGU9IlJldHJpZXZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGVzIG5hbWU9IkRlbWVudGlhIiB4c2k6dHlwZT0iVmFsdWVTZXRSZWYiLz4KICAgICAgICAgICAgICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgICAgICAgPHdoZXJlIHhzaTp0eXBlPSJBbmQiPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iSW4iPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJUb1N0cmluZyIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJjbGluaWNhbFN0YXR1cyIgc2NvcGU9IkQiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJMaXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9ImFjdGl2ZSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9InJlY3VycmVuY2UiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwcmVjaXNpb249IkRheSIgeHNpOnR5cGU9IkluIj4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iVG9EYXRlVGltZSIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJhc3NlcnRlZERhdGUiIHNjb3BlPSJEIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb3dDbG9zZWQ9InRydWUiIGhpZ2hDbG9zZWQ9InRydWUiIHhzaTp0eXBlPSJJbnRlcnZhbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsb3cgeHNpOnR5cGU9IlN0YXJ0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iTWVhc3VyZW1lbnQgUGVyaW9kIiB4c2k6dHlwZT0iUGFyYW1ldGVyUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8aGlnaCB4c2k6dHlwZT0iU3VidHJhY3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iRW5kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iTWVhc3VyZW1lbnQgUGVyaW9kIiB4c2k6dHlwZT0iUGFyYW1ldGVyUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgdmFsdWU9IjYwIiB1bml0PSJkYXlzIiB4c2k6dHlwZT0iUXVhbnRpdHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oaWdoPgogICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPC93aGVyZT4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iRGVub21pbmF0b3IgMSIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxleHByZXNzaW9uIHZhbHVlVHlwZT0idDpCb29sZWFuIiB2YWx1ZT0idHJ1ZSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iQVVESVQtQyBBc3Nlc3NtZW50IiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iQSI+CiAgICAgICAgICAgICAgIDxleHByZXNzaW9uIGRhdGFUeXBlPSJmaGlyOk9ic2VydmF0aW9uIiBjb2RlUHJvcGVydHk9ImNvZGUiIHhzaTp0eXBlPSJSZXRyaWV2ZSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlcyB4c2k6dHlwZT0iVG9MaXN0Ij4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iQVVESVQtQyBUb3RhbCBTY29yZSAoaW4gcG9pbnRzKSIgeHNpOnR5cGU9IkNvZGVSZWYiLz4KICAgICAgICAgICAgICAgICAgPC9jb2Rlcz4KICAgICAgICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgPHdoZXJlIHhzaTp0eXBlPSJBbmQiPgogICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iQW5kIj4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IkluIj4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iVG9TdHJpbmciIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0ic3RhdHVzIiBzY29wZT0iQSIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9Ikxpc3QiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZWxlbWVudCB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0iZmluYWwiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxlbGVtZW50IHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSJhbWVuZGVkIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZWxlbWVudCB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0iY29ycmVjdGVkIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcHJlY2lzaW9uPSJEYXkiIHhzaTp0eXBlPSJJbiI+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvRGF0ZVRpbWUiIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgYXNUeXBlPSJmaGlyOmRhdGVUaW1lIiB4c2k6dHlwZT0iQXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJlZmZlY3RpdmUiIHNjb3BlPSJBIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9Ik1lYXN1cmVtZW50IFBlcmlvZCIgeHNpOnR5cGU9IlBhcmFtZXRlclJlZiIvPgogICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9Ik5vdCI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJJc051bGwiPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJ2YWx1ZSIgc2NvcGU9IkEiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPC93aGVyZT4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJBVURJVCBBc3Nlc3NtZW50IiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iQSI+CiAgICAgICAgICAgICAgIDxleHByZXNzaW9uIGRhdGFUeXBlPSJmaGlyOk9ic2VydmF0aW9uIiBjb2RlUHJvcGVydHk9ImNvZGUiIHhzaTp0eXBlPSJSZXRyaWV2ZSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlcyB4c2k6dHlwZT0iVG9MaXN0Ij4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iQVVESVQgVG90YWwgU2NvcmUgKGluIHBvaW50cykiIHhzaTp0eXBlPSJDb2RlUmVmIi8+CiAgICAgICAgICAgICAgICAgIDwvY29kZXM+CiAgICAgICAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgIDx3aGVyZSB4c2k6dHlwZT0iQW5kIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IkFuZCI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJJbiI+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvU3RyaW5nIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHBhdGg9InN0YXR1cyIgc2NvcGU9IkEiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJMaXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9ImZpbmFsIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZWxlbWVudCB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0iYW1lbmRlZCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9ImNvcnJlY3RlZCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHByZWNpc2lvbj0iRGF5IiB4c2k6dHlwZT0iSW4iPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJUb0RhdGVUaW1lIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGFzVHlwZT0iZmhpcjpkYXRlVGltZSIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0iZWZmZWN0aXZlIiBzY29wZT0iQSIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJNZWFzdXJlbWVudCBQZXJpb2QiIHhzaTp0eXBlPSJQYXJhbWV0ZXJSZWYiLz4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJOb3QiPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iSXNOdWxsIj4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0idmFsdWUiIHNjb3BlPSJBIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDwvd2hlcmU+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iUGF0aWVudCBpcyBNYWxlIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IkVxdWFsIj4KICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iVG9TdHJpbmciIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0iZ2VuZGVyIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICA8c291cmNlIG5hbWU9IlBhdGllbnQiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8b3BlcmFuZCB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0ibWFsZSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJGaXZlIG9yIG1vcmUgZHJpbmtzIHBlciBkYXkgQXNzZXNzbWVudCIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxleHByZXNzaW9uIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgIDxzb3VyY2UgYWxpYXM9IkEiPgogICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBkYXRhVHlwZT0iZmhpcjpPYnNlcnZhdGlvbiIgY29kZVByb3BlcnR5PSJjb2RlIiB4c2k6dHlwZT0iUmV0cmlldmUiPgogICAgICAgICAgICAgICAgICA8Y29kZXMgeHNpOnR5cGU9IlRvTGlzdCI+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IkFsY29ob2xpYyBkcmlua3MgcGVyIGRyaW5raW5nIGRheSAtIFJlcG9ydGVkIiB4c2k6dHlwZT0iQ29kZVJlZiIvPgogICAgICAgICAgICAgICAgICA8L2NvZGVzPgogICAgICAgICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICA8d2hlcmUgeHNpOnR5cGU9IkFuZCI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJBbmQiPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iSW4iPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJUb1N0cmluZyIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJzdGF0dXMiIHNjb3BlPSJBIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iTGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxlbGVtZW50IHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSJmaW5hbCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9ImFtZW5kZWQiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxlbGVtZW50IHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSJjb3JyZWN0ZWQiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwcmVjaXNpb249IkRheSIgeHNpOnR5cGU9IkluIj4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iVG9EYXRlVGltZSIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBhc1R5cGU9ImZoaXI6ZGF0ZVRpbWUiIHhzaTp0eXBlPSJBcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHBhdGg9ImVmZmVjdGl2ZSIgc2NvcGU9IkEiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iTWVhc3VyZW1lbnQgUGVyaW9kIiB4c2k6dHlwZT0iUGFyYW1ldGVyUmVmIi8+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iR3JlYXRlck9yRXF1YWwiPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJUb1F1YW50aXR5IiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGFzVHlwZT0iZmhpcjpRdWFudGl0eSIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0idmFsdWUiIHNjb3BlPSJBIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHZhbHVlPSI1IiB1bml0PSJ7ZHJpbmtzfS9kIiB4c2k6dHlwZT0iUXVhbnRpdHkiLz4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L3doZXJlPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIG5hbWU9IlBhdGllbnQgaXMgRmVtYWxlIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IkVxdWFsIj4KICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iVG9TdHJpbmciIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0iZ2VuZGVyIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICA8c291cmNlIG5hbWU9IlBhdGllbnQiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8b3BlcmFuZCB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0iZmVtYWxlIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIG5hbWU9IkZvdXIgb3IgbW9yZSBkcmlua3MgcGVyIGRheSBBc3Nlc3NtZW50IiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iQSI+CiAgICAgICAgICAgICAgIDxleHByZXNzaW9uIGRhdGFUeXBlPSJmaGlyOk9ic2VydmF0aW9uIiBjb2RlUHJvcGVydHk9ImNvZGUiIHhzaTp0eXBlPSJSZXRyaWV2ZSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlcyB4c2k6dHlwZT0iVG9MaXN0Ij4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iQWxjb2hvbGljIGRyaW5rcyBwZXIgZHJpbmtpbmcgZGF5IC0gUmVwb3J0ZWQiIHhzaTp0eXBlPSJDb2RlUmVmIi8+CiAgICAgICAgICAgICAgICAgIDwvY29kZXM+CiAgICAgICAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgIDx3aGVyZSB4c2k6dHlwZT0iQW5kIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IkFuZCI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJJbiI+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvU3RyaW5nIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHBhdGg9InN0YXR1cyIgc2NvcGU9IkEiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJMaXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9ImZpbmFsIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZWxlbWVudCB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0iYW1lbmRlZCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9ImNvcnJlY3RlZCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHByZWNpc2lvbj0iRGF5IiB4c2k6dHlwZT0iSW4iPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJUb0RhdGVUaW1lIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGFzVHlwZT0iZmhpcjpkYXRlVGltZSIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0iZWZmZWN0aXZlIiBzY29wZT0iQSIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJNZWFzdXJlbWVudCBQZXJpb2QiIHhzaTp0eXBlPSJQYXJhbWV0ZXJSZWYiLz4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJHcmVhdGVyT3JFcXVhbCI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvUXVhbnRpdHkiIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgYXNUeXBlPSJmaGlyOlF1YW50aXR5IiB4c2k6dHlwZT0iQXMiPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJ2YWx1ZSIgc2NvcGU9IkEiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgdmFsdWU9IjQiIHVuaXQ9Intkcmlua3N9L2QiIHhzaTp0eXBlPSJRdWFudGl0eSIvPgogICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDwvd2hlcmU+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iUGF0aWVudCBpcyA2NSBvciBPdmVyIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IkdyZWF0ZXJPckVxdWFsIj4KICAgICAgICAgICAgPG9wZXJhbmQgcHJlY2lzaW9uPSJZZWFyIiB4c2k6dHlwZT0iQ2FsY3VsYXRlQWdlQXQiPgogICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iVG9EYXRlVGltZSI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHBhdGg9ImJpcnRoRGF0ZS52YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBuYW1lPSJQYXRpZW50IiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlN0YXJ0Ij4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iTWVhc3VyZW1lbnQgUGVyaW9kIiB4c2k6dHlwZT0iUGFyYW1ldGVyUmVmIi8+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8b3BlcmFuZCB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjY1IiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIG5hbWU9Ik51bWVyYXRvciAxIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9Ik9yIj4KICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9Ik9yIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9Ik9yIj4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9Ik9yIj4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IkV4aXN0cyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IkFVRElULUMgQXNzZXNzbWVudCIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iRXhpc3RzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iQVVESVQgQXNzZXNzbWVudCIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJBbmQiPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJQYXRpZW50IGlzIE1hbGUiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJFeGlzdHMiPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJGaXZlIG9yIG1vcmUgZHJpbmtzIHBlciBkYXkgQXNzZXNzbWVudCIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IkFuZCI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlBhdGllbnQgaXMgRmVtYWxlIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iT3IiPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iRXhpc3RzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iRm91ciBvciBtb3JlIGRyaW5rcyBwZXIgZGF5IEFzc2Vzc21lbnQiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IkV4aXN0cyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IkZpdmUgb3IgbW9yZSBkcmlua3MgcGVyIGRheSBBc3Nlc3NtZW50IiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJBbmQiPgogICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJQYXRpZW50IGlzIDY1IG9yIE92ZXIiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJPciI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJFeGlzdHMiPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJGb3VyIG9yIG1vcmUgZHJpbmtzIHBlciBkYXkgQXNzZXNzbWVudCIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iRXhpc3RzIj4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iRml2ZSBvciBtb3JlIGRyaW5rcyBwZXIgZGF5IEFzc2Vzc21lbnQiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iUG9zaXRpdmUgQXNzZXNzbWVudCBmb3IgVW5oZWFsdGh5IEFsY29ob2wgVXNlIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IlVuaW9uIj4KICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlVuaW9uIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iQSI+CiAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIG5hbWU9IkFVRElUIEFzc2Vzc21lbnQiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICA8d2hlcmUgeHNpOnR5cGU9IkdyZWF0ZXJPckVxdWFsIj4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iVG9RdWFudGl0eSIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBhc1R5cGU9ImZoaXI6UXVhbnRpdHkiIHhzaTp0eXBlPSJBcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHBhdGg9InZhbHVlIiBzY29wZT0iQSIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iVG9RdWFudGl0eSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iOCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8L3doZXJlPgogICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgICAgICAgIDxzb3VyY2UgYWxpYXM9IkEiPgogICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBuYW1lPSJBVURJVC1DIEFzc2Vzc21lbnQiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICA8d2hlcmUgeHNpOnR5cGU9Ik9yIj4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IkFuZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlBhdGllbnQgaXMgTWFsZSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IkdyZWF0ZXJPckVxdWFsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iVG9RdWFudGl0eSIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBhc1R5cGU9ImZoaXI6UXVhbnRpdHkiIHhzaTp0eXBlPSJBcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHBhdGg9InZhbHVlIiBzY29wZT0iQSIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iVG9RdWFudGl0eSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iNCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IkFuZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlBhdGllbnQgaXMgRmVtYWxlIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iR3JlYXRlck9yRXF1YWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJUb1F1YW50aXR5IiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGFzVHlwZT0iZmhpcjpRdWFudGl0eSIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0idmFsdWUiIHNjb3BlPSJBIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJUb1F1YW50aXR5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIzIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8L3doZXJlPgogICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlVuaW9uIj4KICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iQSI+CiAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIG5hbWU9IkZpdmUgb3IgbW9yZSBkcmlua3MgcGVyIGRheSBBc3Nlc3NtZW50IiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgICAgICAgPHdoZXJlIHhzaTp0eXBlPSJBbmQiPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJQYXRpZW50IGlzIE1hbGUiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJHcmVhdGVyT3JFcXVhbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvUXVhbnRpdHkiIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgYXNUeXBlPSJmaGlyOlF1YW50aXR5IiB4c2k6dHlwZT0iQXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJ2YWx1ZSIgc2NvcGU9IkEiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlRvUXVhbnRpdHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjEiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8L3doZXJlPgogICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgICAgICAgIDxzb3VyY2UgYWxpYXM9IkEiPgogICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBuYW1lPSJGb3VyIG9yIG1vcmUgZHJpbmtzIHBlciBkYXkgQXNzZXNzbWVudCIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgICAgICAgIDx3aGVyZSB4c2k6dHlwZT0iQW5kIj4KICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9Ik9yIj4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iUGF0aWVudCBpcyBGZW1hbGUiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlBhdGllbnQgaXMgNjUgb3IgT3ZlciIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iR3JlYXRlck9yRXF1YWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJUb1F1YW50aXR5IiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGFzVHlwZT0iZmhpcjpRdWFudGl0eSIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0idmFsdWUiIHNjb3BlPSJBIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJUb1F1YW50aXR5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgdmFsdWVUeXBlPSJ0OkludGVnZXIiIHZhbHVlPSIxIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPC93aGVyZT4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iRGVub21pbmF0b3IgMiIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxleHByZXNzaW9uIHhzaTp0eXBlPSJFeGlzdHMiPgogICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJQb3NpdGl2ZSBBc3Nlc3NtZW50IGZvciBVbmhlYWx0aHkgQWxjb2hvbCBVc2UiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iSW5pdGlhbCBQb3NpdGl2ZSBBc3Nlc3NtZW50IGZvciBVbmhlYWx0aHkgQWxjb2hvbCBVc2UiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iTGlzdCI+CiAgICAgICAgICAgIDxlbGVtZW50IHhzaTp0eXBlPSJGaXJzdCI+CiAgICAgICAgICAgICAgIDxzb3VyY2UgeHNpOnR5cGU9IlF1ZXJ5Ij4KICAgICAgICAgICAgICAgICAgPHNvdXJjZSBhbGlhcz0iQSI+CiAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIG5hbWU9IlBvc2l0aXZlIEFzc2Vzc21lbnQgZm9yIFVuaGVhbHRoeSBBbGNvaG9sIFVzZSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgICAgICAgIDxzb3J0PgogICAgICAgICAgICAgICAgICAgICA8YnkgZGlyZWN0aW9uPSJhc2MiIHhzaTp0eXBlPSJCeUV4cHJlc3Npb24iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBuYW1lPSJlZmZlY3RpdmUiIHhzaTp0eXBlPSJJZGVudGlmaWVyUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgICAgICAgPC9ieT4KICAgICAgICAgICAgICAgICAgPC9zb3J0PgogICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgPC9lbGVtZW50PgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIG5hbWU9IkZvbGxvd3VwIEFmdGVyIFBvc2l0aXZlIFNjcmVlbiIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxleHByZXNzaW9uIHhzaTp0eXBlPSJVbmlvbiI+CiAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJBcyI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJVbmlvbiI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJBcyI+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJVbmlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJBcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgYWxpYXM9IlByb2MiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBkYXRhVHlwZT0iZmhpcjpQcm9jZWR1cmUiIGNvZGVQcm9wZXJ0eT0iY29kZSIgeHNpOnR5cGU9IlJldHJpZXZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGVzIG5hbWU9IkFsY29ob2wgQ291bnNlbGluZyBhbmQgVHJlYXRtZW50IiB4c2k6dHlwZT0iVmFsdWVTZXRSZWYiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdoZXJlIHhzaTp0eXBlPSJFcXVhbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvU3RyaW5nIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHBhdGg9InN0YXR1cyIgc2NvcGU9IlByb2MiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSJjb21wbGV0ZWQiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd2hlcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFzVHlwZVNwZWNpZmllciB4c2k6dHlwZT0iTGlzdFR5cGVTcGVjaWZpZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWxlbWVudFR5cGUgeHNpOnR5cGU9IkNob2ljZVR5cGVTcGVjaWZpZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hvaWNlIG5hbWU9ImZoaXI6UHJvY2VkdXJlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaG9pY2UgbmFtZT0iZmhpcjpPYnNlcnZhdGlvbiIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VsZW1lbnRUeXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FzVHlwZVNwZWNpZmllcj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iQXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIGFsaWFzPSJPYnMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBkYXRhVHlwZT0iZmhpcjpPYnNlcnZhdGlvbiIgY29kZVByb3BlcnR5PSJjb2RlIiB4c2k6dHlwZT0iUmV0cmlldmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29kZXMgbmFtZT0iQWxjb2hvbCBDb3Vuc2VsaW5nIGFuZCBUcmVhdG1lbnQiIHhzaTp0eXBlPSJWYWx1ZVNldFJlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d2hlcmUgeHNpOnR5cGU9IkluIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iVG9TdHJpbmciIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0ic3RhdHVzIiBzY29wZT0iT2JzIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iTGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbGVtZW50IHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSJmaW5hbCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9ImFtZW5kZWQiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbGVtZW50IHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSJjb3JyZWN0ZWQiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93aGVyZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YXNUeXBlU3BlY2lmaWVyIHhzaTp0eXBlPSJMaXN0VHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbGVtZW50VHlwZSB4c2k6dHlwZT0iQ2hvaWNlVHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaG9pY2UgbmFtZT0iZmhpcjpQcm9jZWR1cmUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNob2ljZSBuYW1lPSJmaGlyOk9ic2VydmF0aW9uIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZWxlbWVudFR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNUeXBlU3BlY2lmaWVyPgogICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPGFzVHlwZVNwZWNpZmllciB4c2k6dHlwZT0iTGlzdFR5cGVTcGVjaWZpZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZWxlbWVudFR5cGUgeHNpOnR5cGU9IkNob2ljZVR5cGVTcGVjaWZpZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hvaWNlIG5hbWU9ImZoaXI6UHJvY2VkdXJlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaG9pY2UgbmFtZT0iZmhpcjpPYnNlcnZhdGlvbiIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2VsZW1lbnRUeXBlPgogICAgICAgICAgICAgICAgICAgICA8L2FzVHlwZVNwZWNpZmllcj4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iQXMiPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIGFsaWFzPSJQcm9jIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gZGF0YVR5cGU9ImZoaXI6UHJvY2VkdXJlIiBjb2RlUHJvcGVydHk9ImNvZGUiIHhzaTp0eXBlPSJSZXRyaWV2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlcyBuYW1lPSJBbGNvaG9sIFNjcmVlbmluZyIgeHNpOnR5cGU9IlZhbHVlU2V0UmVmIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgICAgICAgICAgICAgIDx3aGVyZSB4c2k6dHlwZT0iRXF1YWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJUb1N0cmluZyIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJzdGF0dXMiIHNjb3BlPSJQcm9jIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0iY29tcGxldGVkIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3doZXJlPgogICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgIDxhc1R5cGVTcGVjaWZpZXIgeHNpOnR5cGU9Ikxpc3RUeXBlU3BlY2lmaWVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnRUeXBlIHhzaTp0eXBlPSJDaG9pY2VUeXBlU3BlY2lmaWVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNob2ljZSBuYW1lPSJmaGlyOlByb2NlZHVyZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hvaWNlIG5hbWU9ImZoaXI6T2JzZXJ2YXRpb24iIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9lbGVtZW50VHlwZT4KICAgICAgICAgICAgICAgICAgICAgPC9hc1R5cGVTcGVjaWZpZXI+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8YXNUeXBlU3BlY2lmaWVyIHhzaTp0eXBlPSJMaXN0VHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgICAgICAgIDxlbGVtZW50VHlwZSB4c2k6dHlwZT0iQ2hvaWNlVHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgICAgICAgICAgIDxjaG9pY2UgbmFtZT0iZmhpcjpQcm9jZWR1cmUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgICAgICAgICAgPGNob2ljZSBuYW1lPSJmaGlyOk9ic2VydmF0aW9uIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgIDwvZWxlbWVudFR5cGU+CiAgICAgICAgICAgICAgIDwvYXNUeXBlU3BlY2lmaWVyPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJBcyI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJRdWVyeSI+CiAgICAgICAgICAgICAgICAgIDxzb3VyY2UgYWxpYXM9Ik9icyI+CiAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIGRhdGFUeXBlPSJmaGlyOk9ic2VydmF0aW9uIiBjb2RlUHJvcGVydHk9ImNvZGUiIHhzaTp0eXBlPSJSZXRyaWV2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlcyBuYW1lPSJBbGNvaG9sIFNjcmVlbmluZyIgeHNpOnR5cGU9IlZhbHVlU2V0UmVmIi8+CiAgICAgICAgICAgICAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgICAgICAgIDx3aGVyZSB4c2k6dHlwZT0iSW4iPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJUb1N0cmluZyIgbGlicmFyeU5hbWU9IkZISVJIZWxwZXJzIiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPgogICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJzdGF0dXMiIHNjb3BlPSJPYnMiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJMaXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9ImZpbmFsIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZWxlbWVudCB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0iYW1lbmRlZCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGVsZW1lbnQgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9ImNvcnJlY3RlZCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8L3doZXJlPgogICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgIDxhc1R5cGVTcGVjaWZpZXIgeHNpOnR5cGU9Ikxpc3RUeXBlU3BlY2lmaWVyIj4KICAgICAgICAgICAgICAgICAgPGVsZW1lbnRUeXBlIHhzaTp0eXBlPSJDaG9pY2VUeXBlU3BlY2lmaWVyIj4KICAgICAgICAgICAgICAgICAgICAgPGNob2ljZSBuYW1lPSJmaGlyOlByb2NlZHVyZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICAgICAgICA8Y2hvaWNlIG5hbWU9ImZoaXI6T2JzZXJ2YXRpb24iIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgICAgICAgPC9lbGVtZW50VHlwZT4KICAgICAgICAgICAgICAgPC9hc1R5cGVTcGVjaWZpZXI+CiAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJOdW1lcmF0b3IgMiIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxleHByZXNzaW9uIHhzaTp0eXBlPSJFeGlzdHMiPgogICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICAgICA8c291cmNlIGFsaWFzPSJBIj4KICAgICAgICAgICAgICAgICAgPGV4cHJlc3Npb24gbmFtZT0iSW5pdGlhbCBQb3NpdGl2ZSBBc3Nlc3NtZW50IGZvciBVbmhlYWx0aHkgQWxjb2hvbCBVc2UiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICAgICA8cmVsYXRpb25zaGlwIGFsaWFzPSJGIiB4c2k6dHlwZT0iV2l0aCI+CiAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIG5hbWU9IkZvbGxvd3VwIEFmdGVyIFBvc2l0aXZlIFNjcmVlbiIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgPHN1Y2hUaGF0IHhzaTp0eXBlPSJJZiI+CiAgICAgICAgICAgICAgICAgICAgIDxjb25kaXRpb24gYXNUeXBlPSJ0OkJvb2xlYW4iIHhzaTp0eXBlPSJBcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJJcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IkYiIHhzaTp0eXBlPSJBbGlhc1JlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8aXNUeXBlU3BlY2lmaWVyIG5hbWU9ImZoaXI6T2JzZXJ2YXRpb24iIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICA8L2NvbmRpdGlvbj4KICAgICAgICAgICAgICAgICAgICAgPHRoZW4gcHJlY2lzaW9uPSJEYXkiIHhzaTp0eXBlPSJJbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvRGF0ZVRpbWUiIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgYXNUeXBlPSJmaGlyOmRhdGVUaW1lIiB4c2k6dHlwZT0iQXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJlZmZlY3RpdmUiIHNjb3BlPSJGIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvd0Nsb3NlZD0idHJ1ZSIgaGlnaENsb3NlZD0idHJ1ZSIgeHNpOnR5cGU9IkludGVydmFsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxvdyBuYW1lPSJUb0RhdGVUaW1lIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGFzVHlwZT0iZmhpcjpkYXRlVGltZSIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0iZWZmZWN0aXZlIiBzY29wZT0iQSIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoaWdoIHhzaTp0eXBlPSJBZGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJUb0RhdGVUaW1lIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGFzVHlwZT0iZmhpcjpkYXRlVGltZSIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0iZWZmZWN0aXZlIiBzY29wZT0iQSIgeHNpOnR5cGU9IlByb3BlcnR5Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCB2YWx1ZT0iMiIgdW5pdD0ibW9udGhzIiB4c2k6dHlwZT0iUXVhbnRpdHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oaWdoPgogICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgIDwvdGhlbj4KICAgICAgICAgICAgICAgICAgICAgPGVsc2UgcHJlY2lzaW9uPSJEYXkiIHhzaTp0eXBlPSJJbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvRGF0ZVRpbWUiIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0iZW5kIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIHBhdGg9InBlcmZvcm1lZCIgc2NvcGU9IkYiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG93Q2xvc2VkPSJ0cnVlIiBoaWdoQ2xvc2VkPSJ0cnVlIiB4c2k6dHlwZT0iSW50ZXJ2YWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8bG93IG5hbWU9IlRvRGF0ZVRpbWUiIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgYXNUeXBlPSJmaGlyOmRhdGVUaW1lIiB4c2k6dHlwZT0iQXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJlZmZlY3RpdmUiIHNjb3BlPSJBIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhpZ2ggeHNpOnR5cGU9IkFkZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvRGF0ZVRpbWUiIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgYXNUeXBlPSJmaGlyOmRhdGVUaW1lIiB4c2k6dHlwZT0iQXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJlZmZlY3RpdmUiIHNjb3BlPSJBIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHZhbHVlPSIyIiB1bml0PSJtb250aHMiIHhzaTp0eXBlPSJRdWFudGl0eSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2hpZ2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgICAgPC9lbHNlPgogICAgICAgICAgICAgICAgICA8L3N1Y2hUaGF0PgogICAgICAgICAgICAgICA8L3JlbGF0aW9uc2hpcD4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIG5hbWU9IlN0cmF0aWZpZXIgMSIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxleHByZXNzaW9uIHhzaTp0eXBlPSJJbiI+CiAgICAgICAgICAgIDxvcGVyYW5kIHByZWNpc2lvbj0iWWVhciIgeHNpOnR5cGU9IkNhbGN1bGF0ZUFnZUF0Ij4KICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlRvRGF0ZVRpbWUiPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBwYXRoPSJiaXJ0aERhdGUudmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbmFtZT0iUGF0aWVudCIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJTdGFydCI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9Ik1lYXN1cmVtZW50IFBlcmlvZCIgeHNpOnR5cGU9IlBhcmFtZXRlclJlZiIvPgogICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPG9wZXJhbmQgbG93Q2xvc2VkPSJ0cnVlIiBoaWdoQ2xvc2VkPSJ0cnVlIiB4c2k6dHlwZT0iSW50ZXJ2YWwiPgogICAgICAgICAgICAgICA8bG93IHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iMTgiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDxoaWdoIHZhbHVlVHlwZT0idDpJbnRlZ2VyIiB2YWx1ZT0iNDQiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBuYW1lPSJTdHJhdGlmaWVyIDIiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8ZXhwcmVzc2lvbiB4c2k6dHlwZT0iSW4iPgogICAgICAgICAgICA8b3BlcmFuZCBwcmVjaXNpb249IlllYXIiIHhzaTp0eXBlPSJDYWxjdWxhdGVBZ2VBdCI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIHhzaTp0eXBlPSJUb0RhdGVUaW1lIj4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgcGF0aD0iYmlydGhEYXRlLnZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICA8c291cmNlIG5hbWU9IlBhdGllbnQiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iU3RhcnQiPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBuYW1lPSJNZWFzdXJlbWVudCBQZXJpb2QiIHhzaTp0eXBlPSJQYXJhbWV0ZXJSZWYiLz4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvd0Nsb3NlZD0idHJ1ZSIgaGlnaENsb3NlZD0idHJ1ZSIgeHNpOnR5cGU9IkludGVydmFsIj4KICAgICAgICAgICAgICAgPGxvdyB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjQ1IiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8aGlnaCB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjY0IiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbmFtZT0iU3RyYXRpZmllciAzIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGV4cHJlc3Npb24geHNpOnR5cGU9IkdyZWF0ZXJPckVxdWFsIj4KICAgICAgICAgICAgPG9wZXJhbmQgcHJlY2lzaW9uPSJZZWFyIiB4c2k6dHlwZT0iQ2FsY3VsYXRlQWdlQXQiPgogICAgICAgICAgICAgICA8b3BlcmFuZCB4c2k6dHlwZT0iVG9EYXRlVGltZSI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIHBhdGg9ImJpcnRoRGF0ZS52YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBuYW1lPSJQYXRpZW50IiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgPG9wZXJhbmQgeHNpOnR5cGU9IlN0YXJ0Ij4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iTWVhc3VyZW1lbnQgUGVyaW9kIiB4c2k6dHlwZT0iUGFyYW1ldGVyUmVmIi8+CiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8b3BlcmFuZCB2YWx1ZVR5cGU9InQ6SW50ZWdlciIgdmFsdWU9IjY1IiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICA8L3N0YXRlbWVudHM+CjwvbGlicmFyeT4K" + }, + { + "contentType": "text/cql", + "data": "bGlicmFyeSBBU0ZfRkhJUiB2ZXJzaW9uICcxLjAuMCcKCi8qClVuaGVhbHRoeSBBbGNvaG9sIFVzZSBTY3JlZW5pbmcgYW5kIEZvbGxvdy11cCAoQVNGKQoqLwoKdXNpbmcgRkhJUiB2ZXJzaW9uICczLjAuMCcKCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnMy4wLjAnIGNhbGxlZCBGSElSSGVscGVycwoKLyoKTWVhc3VyZSBEZXNjcmlwdGlvbgpUaGUgcGVyY2VudGFnZSBvZiBtZW1iZXJzIDE4IHllYXJzIG9mIGFnZSBhbmQgb2xkZXIgd2hvIHdlcmUgc2NyZWVuZWQgZm9yCnVuaGVhbHRoeSBhbGNvaG9sIHVzZSB1c2luZyBhIHN0YW5kYXJkaXplZCB0b29sIGFuZCwgaWYgc2NyZWVuZWQKcG9zaXRpdmUsIHJlY2VpdmVkIGFwcHJvcHJpYXRlIGZvbGxvdy11cCBjYXJlLiBUd28gcmF0ZXMgYXJlIHJlcG9ydGVkLgoxLiBVbmhlYWx0aHkgQWxjb2hvbCBVc2UgU2NyZWVuaW5nLiBUaGUgcGVyY2VudGFnZSBvZiBtZW1iZXJzIHdobyBoYWQgYQpzeXN0ZW1hdGljIHNjcmVlbmluZyBmb3IgdW5oZWFsdGh5IGFsY29ob2wgdXNlLgoyLiBDb3Vuc2VsaW5nIG9yIE90aGVyIEZvbGxvdy11cC4gVGhlIHBlcmNlbnRhZ2Ugb2YgbWVtYmVycyB3aG8gc2NyZWVuZWQKcG9zaXRpdmUgZm9yIHVuaGVhbHRoeSBhbGNvaG9sIHVzZSBhbmQgcmVjZWl2ZWQgYnJpZWYgY291bnNlbGluZyBvcgpvdGhlciBmb2xsb3ctdXAgY2FyZSB3aXRoaW4gMiBtb250aHMgb2YgYSBwb3NpdGl2ZSBzY3JlZW5pbmcuCiovCgpjb2Rlc3lzdGVtICJMT0lOQyI6ICdodHRwOi8vbG9pbmMub3JnJwpjb2Rlc3lzdGVtICJDUUZyYW1ld29yayI6ICdodHRwOi8vY3FmcmFtZXdvcmsuaW5mby9jb2Rlc3lzdGVtL3BsYWNlaG9sZGVyJwoKLy8gVXBkYXRlCgp2YWx1ZXNldCAiQWxjb2hvbCBDb3Vuc2VsaW5nIGFuZCBUcmVhdG1lbnQiOiAnaHR0cDovL25jcWEub3JnL2hlZGlzL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDQuMTQzNycKdmFsdWVzZXQgIkFsY29ob2wgU2NyZWVuaW5nIjogJ2h0dHA6Ly9uY3FhLm9yZy9oZWRpcy9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDA0LjEzMzcnCnZhbHVlc2V0ICJBbGNvaG9sIHVzZSBkaXNvcmRlciI6ICdodHRwOi8vbmNxYS5vcmcvaGVkaXMvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwNC4xMzM5Jwp2YWx1ZXNldCAiRGVtZW50aWEiOiAnaHR0cDovL25jcWEub3JnL2hlZGlzL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDQuMTA3NCcKCmNvZGUgIkFsY29ob2xpYyBkcmlua3MgcGVyIGRyaW5raW5nIGRheSAtIFJlcG9ydGVkIjogJzExMjg3LTAnIGZyb20gIkxPSU5DIgpjb2RlICJBVURJVCBUb3RhbCBTY29yZSAoaW4gcG9pbnRzKSI6ICc3NTYyNC03JyBmcm9tICJMT0lOQyIKY29kZSAiQVVESVQtQyBUb3RhbCBTY29yZSAoaW4gcG9pbnRzKSI6ICc3NTYyNi0yJyBmcm9tICJMT0lOQyIKCi8qClRoaXMgbGlicmFyeSBoYXMgYW4gZXhwbGljaXQgcGFyYW1ldGVyIHdoaWNoIGlzIHRoZSBwcm9kdWN0IGxpbmUuClJlY29nbml6ZWQgbm9ybWFsIGFyZ3VtZW50cyBhcmUgeydjb21tZXJjaWFsJywgJ21lZGljYWlkJywgJ21lZGljYXJlJ30uCklmIG9uZSBvZiB0aGVzZSBub3JtYWwgYXJndW1lbnRzIGlzIGdpdmVuLCB0aGUgcGF0aWVudCB3aWxsIG9ubHkgYmUKY29uc2lkZXJlZCB0byBiZSBpbiB0aGUgSW5pdGlhbCBQb3B1bGF0aW9uIGlmIHRoZXkgaGF2ZSBhbiBhcHByb3ByaWF0ZQpjb250aW51b3VzIGVucm9sbG1lbnQgaW4gdGhhdCBraW5kIG9mIG1lZGljYWwgcGxhbi4KSWYgaW5zdGVhZCBhIG51bGwgYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZWlyIGVucm9sbG1lbnQgc3RhdHVzIHdpbGwgaGF2ZSBubwplZmZlY3Qgb24gd2hldGhlciB0aGV5IGFyZSBjb25zaWRlcmVkIHRvIGJlIGluIHRoZSBJbml0aWFsIFBvcHVsYXRpb24uCklmIGluc3RlYWQgc29tZSBvdGhlciBhcmd1bWVudCBpcyBnaXZlbiAoYW4gdW5yZWNvZ25pemVkIHBsYW4gdHlwZSksCnRoZSBwYXRpZW50IHdpbGwgdW5jb25kaXRpb25hbGx5IE5PVCBiZSBpbiB0aGUgSW5pdGlhbCBQb3B1bGF0aW9uLgoqLwoKcGFyYW1ldGVyICJQcm9kdWN0IExpbmUiIFN0cmluZwoKLyoKVGhpcyBsaWJyYXJ5IGhhcyBhbiBleHBsaWNpdCBwYXJhbWV0ZXIgd2hpY2ggaXMgdGhlIG1lYXN1cmVtZW50IHllYXIuCldoaWxlIHRoZSBhY3R1YWwgcGFyYW1ldGVyJ3MgdHlwZSBhY2NlcHRzIGFsbCBpbnRlcnZhbHMsIHRoaXMgbGlicmFyeQpleHBlY3RzIGl0IHdpbGwgb25seSBiZSBnaXZlbiBhcmd1bWVudHMgY29ycmVzcG9uZGluZyBleGFjdGx5IHRvIG9uZSB3aG9sZQpjYWxlbmRhciB5ZWFyLCBhbmQgaXQgd2lsbCBub3QgYmVoYXZlIHByb3Blcmx5IG90aGVyd2lzZTsgMjAxNyBmb3IgZXhhbXBsZToKSW50ZXJ2YWxbRGF0ZVRpbWUoMjAxNywxLDEsMCwwLDAsMCksIERhdGVUaW1lKDIwMTgsMSwxLDAsMCwwLDApKQoqLwoKcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGVUaW1lPgoKLyoKVGhpcyBsaWJyYXJ5IGV2YWx1YXRlcyB3aXRoIHJlc3BlY3QgdG8gZXhhY3RseSAxIGNhbmRpZGF0ZSBwYXRpZW50IGF0IGEgdGltZSwKdGhhdCBwYXRpZW50IGJlaW5nIGdpdmVuIGJ5IHRoZSBzcGVjaWFsIGNvbnRleHQgcGFyYW1ldGVyIFBhdGllbnQuCiovCgpjb250ZXh0IFBhdGllbnQKCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIjoKCUFnZUluWWVhcnNBdChzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIikgPj0gMTgKCi8qCkV4Y2x1c2lvbnMKKi8KCmRlZmluZSAiRGVub21pbmF0b3IgRXhjbHVzaW9uIjoKICBleGlzdHMgKAogICAgW0NvbmRpdGlvbjogIkFsY29ob2wgdXNlIGRpc29yZGVyIl0gQWxjb2hvbFVzZQogICAgICB3aGVyZSBBbGNvaG9sVXNlLmNsaW5pY2FsU3RhdHVzIGluIHsgJ2FjdGl2ZScsICdyZWN1cnJlbmNlJyB9CiAgICAgICAgYW5kIEFsY29ob2xVc2UuYXNzZXJ0ZWREYXRlIGR1cmluZyBkYXkgb2YgSW50ZXJ2YWxbc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIgLSAxIHllYXIsIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIl0KCSkKICAgIG9yIGV4aXN0cyAoCiAgICAgIFtDb25kaXRpb246ICJEZW1lbnRpYSJdIEQKICAgICAgICB3aGVyZSBELmNsaW5pY2FsU3RhdHVzIGluIHsgJ2FjdGl2ZScsICdyZWN1cnJlbmNlJyB9CiAgICAgICAgICBhbmQgRC5hc3NlcnRlZERhdGUgZHVyaW5nIGRheSBvZiBJbnRlcnZhbFtzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIiwgZW5kIG9mICJNZWFzdXJlbWVudCBQZXJpb2QiIC0gNjAgZGF5c10KICAgICkKCi8qCkRlbm9taW5hdG9ycyBhbmQgTnVtZXJhdG9ycwoqLwoKLy8gVW5oZWFsdGh5IEFsY29ob2wgVXNlIFNjcmVlbmluZwoKZGVmaW5lICJEZW5vbWluYXRvciAxIjoKICAvLyAiSW5pdGlhbCBQb3B1bGF0aW9uIgogIHRydWUKCi8vIFVuaGVhbHRoeSBBbGNvaG9sIFVzZSBTY3JlZW5pbmcKCmRlZmluZSAiTnVtZXJhdG9yIDEiOgogIC8vICJJbml0aWFsIFBvcHVsYXRpb24iCiAgZXhpc3RzICggIkFVRElULUMgQXNzZXNzbWVudCIgKQogICAgb3IgZXhpc3RzICggIkFVRElUIEFzc2Vzc21lbnQiICkKICAgIG9yICgKICAgICAgIlBhdGllbnQgaXMgTWFsZSIKICAgICAgICBhbmQgZXhpc3RzICggIkZpdmUgb3IgbW9yZSBkcmlua3MgcGVyIGRheSBBc3Nlc3NtZW50IiApCiAgICApCiAgICBvciAoCiAgICAgICJQYXRpZW50IGlzIEZlbWFsZSIKICAgICAgICBhbmQgKAogICAgICAgICAgZXhpc3RzICggIkZvdXIgb3IgbW9yZSBkcmlua3MgcGVyIGRheSBBc3Nlc3NtZW50IiApCiAgICAgICAgICAgIG9yIGV4aXN0cyAoICJGaXZlIG9yIG1vcmUgZHJpbmtzIHBlciBkYXkgQXNzZXNzbWVudCIgKQogICAgICAgICkKICAgICkKICAgIG9yICgKICAgICAgIlBhdGllbnQgaXMgNjUgb3IgT3ZlciIKICAgICAgICBhbmQgKAogICAgICAgICAgZXhpc3RzICggIkZvdXIgb3IgbW9yZSBkcmlua3MgcGVyIGRheSBBc3Nlc3NtZW50IiApCiAgICAgICAgICAgIG9yIGV4aXN0cyAoICJGaXZlIG9yIG1vcmUgZHJpbmtzIHBlciBkYXkgQXNzZXNzbWVudCIgKQogICAgICAgICkKICAgICkKICAgLy8gTm90ZTogVGhlIHNwZWMgZG9lc24ndCBpbmNsdWRlIHRoZSBvdmVyIDY1IHRlc3QgaGVyZSBidXQgZG9lcyBpbiBkZXBlbmRlbnQgTi9EIDIuCgpkZWZpbmUgIkFVRElULUMgQXNzZXNzbWVudCI6CiAgW09ic2VydmF0aW9uOiAiQVVESVQtQyBUb3RhbCBTY29yZSAoaW4gcG9pbnRzKSJdIEEKICAgIHdoZXJlIEEuc3RhdHVzIGluIHsgJ2ZpbmFsJywgJ2FtZW5kZWQnLCAnY29ycmVjdGVkJyB9CiAgICAgIGFuZCBBLmVmZmVjdGl2ZSBpbiBkYXkgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgYW5kIEEudmFsdWUgaXMgbm90IG51bGwKCmRlZmluZSAiQVVESVQgQXNzZXNzbWVudCI6CiAgW09ic2VydmF0aW9uOiAiQVVESVQgVG90YWwgU2NvcmUgKGluIHBvaW50cykiXSBBCiAgICB3aGVyZSBBLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQogICAgICBhbmQgQS5lZmZlY3RpdmUgaW4gZGF5IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgIGFuZCBBLnZhbHVlIGlzIG5vdCBudWxsCgpkZWZpbmUgIlBhdGllbnQgaXMgTWFsZSI6CiAgUGF0aWVudC5nZW5kZXIgPSAnbWFsZScKCmRlZmluZSAiRml2ZSBvciBtb3JlIGRyaW5rcyBwZXIgZGF5IEFzc2Vzc21lbnQiOgogIFtPYnNlcnZhdGlvbjogIkFsY29ob2xpYyBkcmlua3MgcGVyIGRyaW5raW5nIGRheSAtIFJlcG9ydGVkIl0gQQogICAgd2hlcmUgQS5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICAgICAgYW5kIEEuZWZmZWN0aXZlIGluIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICBhbmQgQS52YWx1ZSA+PSA1ICd7ZHJpbmtzfS9kJwoKZGVmaW5lICJQYXRpZW50IGlzIEZlbWFsZSI6CiAgUGF0aWVudC5nZW5kZXIgPSAnZmVtYWxlJwoKZGVmaW5lICJQYXRpZW50IGlzIDY1IG9yIE92ZXIiOgogIEFnZUluWWVhcnNBdChzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIik+PSA2NQoKZGVmaW5lICJGb3VyIG9yIG1vcmUgZHJpbmtzIHBlciBkYXkgQXNzZXNzbWVudCI6CiAgW09ic2VydmF0aW9uOiAiQWxjb2hvbGljIGRyaW5rcyBwZXIgZHJpbmtpbmcgZGF5IC0gUmVwb3J0ZWQiXSBBCiAgICB3aGVyZSBBLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQogICAgICBhbmQgQS5lZmZlY3RpdmUgaW4gZGF5IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgIGFuZCBBLnZhbHVlID49IDQgJ3tkcmlua3N9L2QnCgovLyBDb3Vuc2VsaW5nIG9yIE90aGVyIEZvbGxvdy1VcCBvbiBQb3NpdGl2ZSBTY3JlZW4KCi8qCkluaXRpYWwgUG9wdWxhdGlvbgpQcm9kdWN0IGxpbmVzIC0tIENvbW1lcmNpYWwsIE1lZGljYWlkLCBNZWRpY2FyZSAocmVwb3J0IGVhY2ggcHJvZHVjdCBsaW5lIHNlcGFyYXRlbHkpLgoqLwoKZGVmaW5lICJEZW5vbWluYXRvciAyIjoKICAvLyAiSW5pdGlhbCBQb3B1bGF0aW9uIgogIGV4aXN0cyAiUG9zaXRpdmUgQXNzZXNzbWVudCBmb3IgVW5oZWFsdGh5IEFsY29ob2wgVXNlIgoKLy8gQ291bnNlbGluZyBvciBPdGhlciBGb2xsb3ctVXAgb24gUG9zaXRpdmUgU2NyZWVuCgpkZWZpbmUgIk51bWVyYXRvciAyIjoKICAvLyAiSW5pdGlhbCBQb3B1bGF0aW9uIgogIGV4aXN0cyAoCiAgICAiSW5pdGlhbCBQb3NpdGl2ZSBBc3Nlc3NtZW50IGZvciBVbmhlYWx0aHkgQWxjb2hvbCBVc2UiIEEKICAgICAgd2l0aCAiRm9sbG93dXAgQWZ0ZXIgUG9zaXRpdmUgU2NyZWVuIiBGCiAgICAgICAgc3VjaCB0aGF0CiAgICAgICAgICBpZiBGIGlzIE9ic2VydmF0aW9uIHRoZW4gRi5lZmZlY3RpdmUgMiBtb250aHMgb3IgbGVzcyBvbiBvciBhZnRlciBkYXkgb2YgQS5lZmZlY3RpdmUKICAgICAgICAgIGVsc2UgRi5wZXJmb3JtZWQuImVuZCIgMiBtb250aHMgb3IgbGVzcyBvbiBvciBhZnRlciBkYXkgb2YgQS5lZmZlY3RpdmUKICApCgpkZWZpbmUgIlBvc2l0aXZlIEFzc2Vzc21lbnQgZm9yIFVuaGVhbHRoeSBBbGNvaG9sIFVzZSI6CiAgKAogICAgIkFVRElUIEFzc2Vzc21lbnQiIEEKICAgICAgd2hlcmUgQS52YWx1ZSA+PSA4CiAgKQogICAgdW5pb24gKAogICAgICAiQVVESVQtQyBBc3Nlc3NtZW50IiBBCiAgICAgICAgd2hlcmUgKCJQYXRpZW50IGlzIE1hbGUiIGFuZCBBLnZhbHVlID49IDQpCiAgICAgICAgICBvciAoIlBhdGllbnQgaXMgRmVtYWxlIiBhbmQgQS52YWx1ZSA+PSAzKQogICAgKQogICAgdW5pb24gKAogICAgICAiRml2ZSBvciBtb3JlIGRyaW5rcyBwZXIgZGF5IEFzc2Vzc21lbnQiIEEKICAgICAgICB3aGVyZSAiUGF0aWVudCBpcyBNYWxlIgogICAgICAgICAgYW5kIEEudmFsdWUgPj0gMQogICAgKQogICAgdW5pb24gKAogICAgICAiRm91ciBvciBtb3JlIGRyaW5rcyBwZXIgZGF5IEFzc2Vzc21lbnQiIEEKICAgICAgICB3aGVyZSAoIlBhdGllbnQgaXMgRmVtYWxlIiBvciAiUGF0aWVudCBpcyA2NSBvciBPdmVyIikKICAgICAgICAgIGFuZCBBLnZhbHVlID49IDEKICAgICkKCmRlZmluZSAiRm9sbG93dXAgQWZ0ZXIgUG9zaXRpdmUgU2NyZWVuIjoKICAoCiAgICBbUHJvY2VkdXJlOiAiQWxjb2hvbCBDb3Vuc2VsaW5nIGFuZCBUcmVhdG1lbnQiXSBQcm9jCiAgICAgIHdoZXJlIFByb2Muc3RhdHVzID0gJ2NvbXBsZXRlZCcKCSkKICAgIHVuaW9uICgKICAgICAgW09ic2VydmF0aW9uOiAiQWxjb2hvbCBDb3Vuc2VsaW5nIGFuZCBUcmVhdG1lbnQiXSBPYnMKICAgICAgICB3aGVyZSBPYnMuc3RhdHVzIGluIHsgJ2ZpbmFsJywgJ2FtZW5kZWQnLCAnY29ycmVjdGVkJyB9CiAgICApCiAgICB1bmlvbiAoCiAgICAgIFtQcm9jZWR1cmU6ICJBbGNvaG9sIFNjcmVlbmluZyJdIFByb2MKICAgICAgICB3aGVyZSBQcm9jLnN0YXR1cyA9ICdjb21wbGV0ZWQnCiAgICApCiAgICB1bmlvbiAoCiAgICAgIFtPYnNlcnZhdGlvbjogIkFsY29ob2wgU2NyZWVuaW5nIl0gT2JzCiAgICAgICAgd2hlcmUgT2JzLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQogICAgKQoKZGVmaW5lICJJbml0aWFsIFBvc2l0aXZlIEFzc2Vzc21lbnQgZm9yIFVuaGVhbHRoeSBBbGNvaG9sIFVzZSI6CiAgewogICAgRmlyc3QoCiAgICAgICJQb3NpdGl2ZSBBc3Nlc3NtZW50IGZvciBVbmhlYWx0aHkgQWxjb2hvbCBVc2UiIEEKICAgICAgICBzb3J0IGJ5IGVmZmVjdGl2ZS52YWx1ZQogICAgKQogIH0KCi8qClN0cmF0aWZpZXJzCiovCgpkZWZpbmUgIlN0cmF0aWZpZXIgMSI6CiAgQWdlSW5ZZWFyc0F0KHN0YXJ0IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiKWluIEludGVydmFsWzE4LCA0NF0KCmRlZmluZSAiU3RyYXRpZmllciAyIjoKICBBZ2VJblllYXJzQXQoc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIpaW4gSW50ZXJ2YWxbNDUsIDY0XQoKZGVmaW5lICJTdHJhdGlmaWVyIDMiOgogIEFnZUluWWVhcnNBdChzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIik+PSA2NQo=" + } + ] +} diff --git a/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library/library-fhir-helpers.json b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library/library-fhir-helpers.json new file mode 100644 index 00000000000..48d5f995f95 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library/library-fhir-helpers.json @@ -0,0 +1,63 @@ +{ + "resourceType": "Library", + "id": "library-fhir-helpers", + "text": { + "status": "generated", + "div": "
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
Id: Library/library-fhir-helpers
Type: system: http://hl7.org/fhir/library-type
code: logic-library
Identifier: system: http://example.org/fhir/cqi/ecqm/Library/Identifier
value: FHIRHelpers
Version: 3.0.0
Title: FHIR Helpers
Status: active
Description: This library is used as an example in the FHIR Quality Measure Implementation Guide
Content: type: text/cql
library FHIRHelpers version '3.0.0'\r\n\r\nusing FHIR version '3.0.0'\r\n\r\ndefine function ToInterval(period FHIR.Period):\r\n  if period is null then null \r\n    else Interval[period.\"start\".value, period.\"end\".value]\r\n\r\ndefine function ToQuantity(quantity FHIR.Quantity):\r\n  if quantity is null then null \r\n    else System.Quantity { value: quantity.value.value, unit: quantity.unit.value }\r\n\r\ndefine function ToInterval(range FHIR.Range):\r\n  if range is null then null \r\n    else Interval[ToQuantity(range.low), ToQuantity(range.high)]\r\n\r\ndefine function ToCode(coding FHIR.Coding):\r\n  if coding is null then null \r\n    else System.Code { code: coding.code.value, system: coding.system.value, version: coding.version.value, display: coding.display.value }\r\n\r\ndefine function ToConcept(concept FHIR.CodeableConcept):\r\n  if concept is null then null \r\n    else System.Concept { codes: concept.coding C\r\n    return ToCode(C), display: concept.text.value }\r\n\r\ndefine function ToString(value FHIR.uuid):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.TestScriptRequestMethodCode):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ProvenanceEntityRole):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.UnitsOfTime):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AddressType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AllergyIntoleranceCategory):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.SpecimenStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.RestfulCapabilityMode):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.DetectedIssueSeverity):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.IssueSeverity):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.CareTeamStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.DataElementStringency):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.VisionEyes):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.EncounterStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.StructureDefinitionKind):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.PublicationStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ConsentDataMeaning):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.StructureMapSourceListMode):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.RequestStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.QuestionnaireResponseStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.SearchComparator):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ChargeItemStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ActionParticipantType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AllergyIntoleranceType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.DocumentRelationshipType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AllergyIntoleranceClinicalStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.CarePlanActivityStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ActionList):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ParticipationStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.TestReportResult):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ConceptMapGroupUnmappedMode):\r\n  value.value\r\n\r\ndefine function ToDateTime(value FHIR.instant):\r\n  value.value\r\n\r\ndefine function ToDateTime(value FHIR.dateTime):\r\n  value.value\r\n\r\ndefine function ToDate(value FHIR.date):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.DocumentMode):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AssertionOperatorType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.DaysOfWeek):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.IssueType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ContentType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.StructureMapContextType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.FamilyHistoryStatus):\r\n  value.value\r\n\r\ndefine function ToInteger(value FHIR.positiveInt):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ClinicalImpressionStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AssertionResponseTypes):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.RequestIntent):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.NarrativeStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.MeasmntPrinciple):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ConsentExceptType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.string):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ActionRequiredBehavior):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.EndpointStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.GuidePageKind):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.GuideDependencyType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ResourceVersionPolicy):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.MedicationRequestStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.MedicationAdministrationStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ActionCardinalityBehavior):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.MedicationRequestIntent):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.NamingSystemIdentifierType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ImmunizationStatusCodes):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AccountStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.MedicationDispenseStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ConfidentialityClassification):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.IdentifierUse):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.DigitalMediaType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.StructureMapTargetListMode):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.TestReportParticipantType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.BindingStrength):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.RequestPriority):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ParticipantRequired):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.DiscriminatorType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.XPathUsageType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.StructureMapInputMode):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.InstanceAvailability):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.id):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.LinkageType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ReferenceHandlingPolicy):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.MedicationStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.FilterOperator):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.NamingSystemType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ResearchStudyStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ExtensionContext):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.FHIRDefinedType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AuditEventOutcome):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ActionRelationshipType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ConstraintSeverity):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.EventCapabilityMode):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ContractResourceStatusCodes):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ResearchSubjectStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.UDIEntryType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.DeviceMetricCategory):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.TestReportActionResult):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.StructureMapTransform):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ResponseType):\r\n  value.value\r\n\r\ndefine function ToDecimal(value FHIR.decimal):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AggregationMode):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.CapabilityStatementKind):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AllergyIntoleranceVerificationStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.EventTiming):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.GoalStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.SearchParamType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.SystemRestfulInteraction):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ActionGroupingBehavior):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.StructureMapModelMode):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.TaskStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AdverseEventCausality):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.SubscriptionChannelType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.GraphCompartmentRule):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AssertionDirectionType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.CarePlanIntent):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.SlicingRules):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ExplanationOfBenefitStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ConsentState):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AdverseEventCategory):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.LinkType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AllergyIntoleranceCriticality):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.MedicationRequestPriority):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ConceptMapEquivalence):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.FHIRAllTypes):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.PropertyRepresentation):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AuditEventAction):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.TriggerType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.SearchModifierCode):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.CompositionStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AppointmentStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.MessageSignificanceCategory):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.EventStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.OperationParameterUse):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ListMode):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ActionConditionKind):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ObservationStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.qualityType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AdministrativeGender):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ResourceType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.QuestionnaireItemType):\r\n  value.value\r\n\r\ndefine function ToBoolean(value FHIR.boolean):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.StructureMapGroupTypeMode):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.DeviceMetricCalibrationType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.code):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.SupplyRequestStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ActionSelectionBehavior):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.EncounterLocationStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.SupplyDeliveryStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.DiagnosticReportStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.FlagStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.CarePlanStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ConditionClinicalStatusCodes):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ListStatus):\r\n  value.value\r\n\r\ndefine function Tobase64Binary(value FHIR.base64Binary):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.DeviceUseStatementStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AuditEventAgentNetworkType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AddressUse):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ConditionalDeleteStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ContactPointUse):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.DeviceMetricOperationalStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.NutritionOrderStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.uri):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ContributorType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ReferenceVersionRules):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.Use):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.IdentityAssuranceLevel):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.MeasureReportStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.DeviceMetricColor):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.SearchEntryMode):\r\n  value.value\r\n\r\ndefine function ToTime(value FHIR.time):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ConditionalReadStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ConditionVerificationStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.AllergyIntoleranceSeverity):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.FinancialResourceStatusCodes):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.OperationKind):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ObservationRelationshipType):\r\n  value.value\r\n\r\ndefine function ToInteger(value FHIR.unsignedInt):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.NameUse):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.SubscriptionStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.DocumentReferenceStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.LocationMode):\r\n  value.value\r\n\r\ndefine function ToInteger(value FHIR.integer):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.repositoryType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.LocationStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.FHIRSubstanceStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.UnknownContentCode):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.NoteType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.TestReportStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.HTTPVerb):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.CodeSystemContentMode):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.EpisodeOfCareStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.RemittanceOutcome):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.FHIRDeviceStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ContactPointSystem):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.SlotStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.PropertyType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.markdown):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.TypeDerivationRule):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.MedicationStatementStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.GuidanceResponseStatus):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.QuantityComparator):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.RelatedArtifactType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.oid):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.MeasureReportType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.ActionPrecheckBehavior):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.SampledDataDataType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.MedicationStatementTaken):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.CompartmentType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.CompositionAttestationMode):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.DeviceMetricCalibrationState):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.GroupType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.TypeRestfulInteraction):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.CodeSystemHierarchyMeaning):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.VisionBase):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.BundleType):\r\n  value.value\r\n\r\ndefine function ToString(value FHIR.SystemVersionProcessingMode):\r\n  value.value
\r\n \r\n \r\n
\r\n
" + }, + "url": "http://ncqa.org/fhir/hedis/Library/library-fhir-helpers", + "identifier": [ + { + "use": "official", + "system": "http://example.org/fhir/cqi/ecqm/Library/Identifier", + "value": "FHIRHelpers" + } + ], + "version": "3.0.0", + "name": "FHIRHelpers", + "title": "FHIRHelpers Logic", + "status": "active", + "experimental": true, + "type": { + "coding": [ + { + "system": "http://hl7.org/fhir/library-type", + "code": "logic-library" + } + ] + }, + "date": "2019-09-03", + "publisher": "Health Level 7 International - Clinical Quality Information Work Group", + "description": "FHIR to CQL data types conversion logic library", + "copyright": "The HEDIS measure specifications were developed by and are owned by NCQA. The HEDIS measure specifications are not clinical guidelines and do not establish a standard of medical care. NCQA makes no representations, warranties, or endorsement about the quality of any organization or physician that uses or reports performance measures and NCQA has no liability to anyone who relies on such measure specifications. These materials may not be modified by anyone other than NCQA. Anyone desiring to use or reproduce the materials without modification for a non-commercial purpose may do so without obtaining any approval from NCQA. **Any commercial use (including but not limited to vendors using the measure specifications with a product or service, including calculation of measure results) must be approved by NCQA and are subject to a license at the discretion of NCQA**. © 2019 NCQA, all rights reserved.", + "approvalDate": "2019-08-03", + "lastReviewDate": "2019-08-03", + "contact": [ + { + "telecom": [ + { + "system": "url", + "value": "http://www.hl7.org/Special/committees/cqi/index.cfm" + } + ] + } + ], + "relatedArtifact": [ + { + "type": "depends-on", + "resource": { + "reference": "Library/library-fhir-model-definition" + } + } + ], + "content": [ + { + "contentType": "text/cql", + "data": "bGlicmFyeSBGSElSSGVscGVycyB2ZXJzaW9uICczLjAuMCcNCg0KdXNpbmcgRkhJUiB2ZXJzaW9uICczLjAuMCcNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvSW50ZXJ2YWwocGVyaW9kIEZISVIuUGVyaW9kKToNCiAgaWYgcGVyaW9kIGlzIG51bGwgdGhlbiBudWxsIA0KICAgIGVsc2UgSW50ZXJ2YWxbcGVyaW9kLiJzdGFydCIudmFsdWUsIHBlcmlvZC4iZW5kIi52YWx1ZV0NCg0KZGVmaW5lIGZ1bmN0aW9uIFRvUXVhbnRpdHkocXVhbnRpdHkgRkhJUi5RdWFudGl0eSk6DQogIGlmIHF1YW50aXR5IGlzIG51bGwgdGhlbiBudWxsIA0KICAgIGVsc2UgU3lzdGVtLlF1YW50aXR5IHsgdmFsdWU6IHF1YW50aXR5LnZhbHVlLnZhbHVlLCB1bml0OiBxdWFudGl0eS51bml0LnZhbHVlIH0NCg0KZGVmaW5lIGZ1bmN0aW9uIFRvSW50ZXJ2YWwocmFuZ2UgRkhJUi5SYW5nZSk6DQogIGlmIHJhbmdlIGlzIG51bGwgdGhlbiBudWxsIA0KICAgIGVsc2UgSW50ZXJ2YWxbVG9RdWFudGl0eShyYW5nZS5sb3cpLCBUb1F1YW50aXR5KHJhbmdlLmhpZ2gpXQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9Db2RlKGNvZGluZyBGSElSLkNvZGluZyk6DQogIGlmIGNvZGluZyBpcyBudWxsIHRoZW4gbnVsbCANCiAgICBlbHNlIFN5c3RlbS5Db2RlIHsgY29kZTogY29kaW5nLmNvZGUudmFsdWUsIHN5c3RlbTogY29kaW5nLnN5c3RlbS52YWx1ZSwgdmVyc2lvbjogY29kaW5nLnZlcnNpb24udmFsdWUsIGRpc3BsYXk6IGNvZGluZy5kaXNwbGF5LnZhbHVlIH0NCg0KZGVmaW5lIGZ1bmN0aW9uIFRvQ29uY2VwdChjb25jZXB0IEZISVIuQ29kZWFibGVDb25jZXB0KToNCiAgaWYgY29uY2VwdCBpcyBudWxsIHRoZW4gbnVsbCANCiAgICBlbHNlIFN5c3RlbS5Db25jZXB0IHsgY29kZXM6IGNvbmNlcHQuY29kaW5nIEMNCiAgICByZXR1cm4gVG9Db2RlKEMpLCBkaXNwbGF5OiBjb25jZXB0LnRleHQudmFsdWUgfQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi51dWlkKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuVGVzdFNjcmlwdFJlcXVlc3RNZXRob2RDb2RlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUHJvdmVuYW5jZUVudGl0eVJvbGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Vbml0c09mVGltZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkFkZHJlc3NUeXBlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQWxsZXJneUludG9sZXJhbmNlQ2F0ZWdvcnkpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TcGVjaW1lblN0YXR1cyk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlJlc3RmdWxDYXBhYmlsaXR5TW9kZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkRldGVjdGVkSXNzdWVTZXZlcml0eSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLklzc3VlU2V2ZXJpdHkpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5DYXJlVGVhbVN0YXR1cyk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkRhdGFFbGVtZW50U3RyaW5nZW5jeSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlZpc2lvbkV5ZXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5FbmNvdW50ZXJTdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TdHJ1Y3R1cmVEZWZpbml0aW9uS2luZCk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlB1YmxpY2F0aW9uU3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29uc2VudERhdGFNZWFuaW5nKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuU3RydWN0dXJlTWFwU291cmNlTGlzdE1vZGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5SZXF1ZXN0U3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUXVlc3Rpb25uYWlyZVJlc3BvbnNlU3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuU2VhcmNoQ29tcGFyYXRvcik6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkNoYXJnZUl0ZW1TdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5BY3Rpb25QYXJ0aWNpcGFudFR5cGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5BbGxlcmd5SW50b2xlcmFuY2VUeXBlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRG9jdW1lbnRSZWxhdGlvbnNoaXBUeXBlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQWxsZXJneUludG9sZXJhbmNlQ2xpbmljYWxTdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5DYXJlUGxhbkFjdGl2aXR5U3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQWN0aW9uTGlzdCk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlBhcnRpY2lwYXRpb25TdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5UZXN0UmVwb3J0UmVzdWx0KToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29uY2VwdE1hcEdyb3VwVW5tYXBwZWRNb2RlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvRGF0ZVRpbWUodmFsdWUgRkhJUi5pbnN0YW50KToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvRGF0ZVRpbWUodmFsdWUgRkhJUi5kYXRlVGltZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb0RhdGUodmFsdWUgRkhJUi5kYXRlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRG9jdW1lbnRNb2RlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQXNzZXJ0aW9uT3BlcmF0b3JUeXBlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRGF5c09mV2Vlayk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLklzc3VlVHlwZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkNvbnRlbnRUeXBlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuU3RydWN0dXJlTWFwQ29udGV4dFR5cGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5GYW1pbHlIaXN0b3J5U3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvSW50ZWdlcih2YWx1ZSBGSElSLnBvc2l0aXZlSW50KToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ2xpbmljYWxJbXByZXNzaW9uU3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQXNzZXJ0aW9uUmVzcG9uc2VUeXBlcyk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlJlcXVlc3RJbnRlbnQpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5OYXJyYXRpdmVTdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5NZWFzbW50UHJpbmNpcGxlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29uc2VudEV4Y2VwdFR5cGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5zdHJpbmcpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5BY3Rpb25SZXF1aXJlZEJlaGF2aW9yKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRW5kcG9pbnRTdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5HdWlkZVBhZ2VLaW5kKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuR3VpZGVEZXBlbmRlbmN5VHlwZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlJlc291cmNlVmVyc2lvblBvbGljeSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLk1lZGljYXRpb25SZXF1ZXN0U3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uU3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQWN0aW9uQ2FyZGluYWxpdHlCZWhhdmlvcik6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLk1lZGljYXRpb25SZXF1ZXN0SW50ZW50KToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuTmFtaW5nU3lzdGVtSWRlbnRpZmllclR5cGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5JbW11bml6YXRpb25TdGF0dXNDb2Rlcyk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkFjY291bnRTdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5NZWRpY2F0aW9uRGlzcGVuc2VTdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Db25maWRlbnRpYWxpdHlDbGFzc2lmaWNhdGlvbik6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLklkZW50aWZpZXJVc2UpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5EaWdpdGFsTWVkaWFUeXBlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuU3RydWN0dXJlTWFwVGFyZ2V0TGlzdE1vZGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5UZXN0UmVwb3J0UGFydGljaXBhbnRUeXBlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQmluZGluZ1N0cmVuZ3RoKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUmVxdWVzdFByaW9yaXR5KToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUGFydGljaXBhbnRSZXF1aXJlZCk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkRpc2NyaW1pbmF0b3JUeXBlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuWFBhdGhVc2FnZVR5cGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TdHJ1Y3R1cmVNYXBJbnB1dE1vZGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5JbnN0YW5jZUF2YWlsYWJpbGl0eSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLmlkKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuTGlua2FnZVR5cGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5SZWZlcmVuY2VIYW5kbGluZ1BvbGljeSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLk1lZGljYXRpb25TdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5GaWx0ZXJPcGVyYXRvcik6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLk5hbWluZ1N5c3RlbVR5cGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5SZXNlYXJjaFN0dWR5U3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRXh0ZW5zaW9uQ29udGV4dCk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkZISVJEZWZpbmVkVHlwZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkF1ZGl0RXZlbnRPdXRjb21lKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQWN0aW9uUmVsYXRpb25zaGlwVHlwZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkNvbnN0cmFpbnRTZXZlcml0eSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkV2ZW50Q2FwYWJpbGl0eU1vZGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Db250cmFjdFJlc291cmNlU3RhdHVzQ29kZXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5SZXNlYXJjaFN1YmplY3RTdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5VRElFbnRyeVR5cGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5EZXZpY2VNZXRyaWNDYXRlZ29yeSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlRlc3RSZXBvcnRBY3Rpb25SZXN1bHQpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TdHJ1Y3R1cmVNYXBUcmFuc2Zvcm0pOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5SZXNwb25zZVR5cGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9EZWNpbWFsKHZhbHVlIEZISVIuZGVjaW1hbCk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkFnZ3JlZ2F0aW9uTW9kZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkNhcGFiaWxpdHlTdGF0ZW1lbnRLaW5kKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQWxsZXJneUludG9sZXJhbmNlVmVyaWZpY2F0aW9uU3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRXZlbnRUaW1pbmcpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Hb2FsU3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuU2VhcmNoUGFyYW1UeXBlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuU3lzdGVtUmVzdGZ1bEludGVyYWN0aW9uKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQWN0aW9uR3JvdXBpbmdCZWhhdmlvcik6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlN0cnVjdHVyZU1hcE1vZGVsTW9kZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlRhc2tTdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5BZHZlcnNlRXZlbnRDYXVzYWxpdHkpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TdWJzY3JpcHRpb25DaGFubmVsVHlwZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkdyYXBoQ29tcGFydG1lbnRSdWxlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQXNzZXJ0aW9uRGlyZWN0aW9uVHlwZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkNhcmVQbGFuSW50ZW50KToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuU2xpY2luZ1J1bGVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRXhwbGFuYXRpb25PZkJlbmVmaXRTdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Db25zZW50U3RhdGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5BZHZlcnNlRXZlbnRDYXRlZ29yeSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkxpbmtUeXBlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQWxsZXJneUludG9sZXJhbmNlQ3JpdGljYWxpdHkpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5NZWRpY2F0aW9uUmVxdWVzdFByaW9yaXR5KToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29uY2VwdE1hcEVxdWl2YWxlbmNlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRkhJUkFsbFR5cGVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUHJvcGVydHlSZXByZXNlbnRhdGlvbik6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkF1ZGl0RXZlbnRBY3Rpb24pOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5UcmlnZ2VyVHlwZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlNlYXJjaE1vZGlmaWVyQ29kZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkNvbXBvc2l0aW9uU3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQXBwb2ludG1lbnRTdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5NZXNzYWdlU2lnbmlmaWNhbmNlQ2F0ZWdvcnkpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5FdmVudFN0YXR1cyk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLk9wZXJhdGlvblBhcmFtZXRlclVzZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkxpc3RNb2RlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQWN0aW9uQ29uZGl0aW9uS2luZCk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLk9ic2VydmF0aW9uU3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIucXVhbGl0eVR5cGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5BZG1pbmlzdHJhdGl2ZUdlbmRlcik6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlJlc291cmNlVHlwZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlF1ZXN0aW9ubmFpcmVJdGVtVHlwZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb0Jvb2xlYW4odmFsdWUgRkhJUi5ib29sZWFuKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuU3RydWN0dXJlTWFwR3JvdXBUeXBlTW9kZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkRldmljZU1ldHJpY0NhbGlicmF0aW9uVHlwZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLmNvZGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TdXBwbHlSZXF1ZXN0U3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQWN0aW9uU2VsZWN0aW9uQmVoYXZpb3IpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5FbmNvdW50ZXJMb2NhdGlvblN0YXR1cyk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlN1cHBseURlbGl2ZXJ5U3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRGlhZ25vc3RpY1JlcG9ydFN0YXR1cyk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkZsYWdTdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5DYXJlUGxhblN0YXR1cyk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkNvbmRpdGlvbkNsaW5pY2FsU3RhdHVzQ29kZXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5MaXN0U3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvYmFzZTY0QmluYXJ5KHZhbHVlIEZISVIuYmFzZTY0QmluYXJ5KToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRGV2aWNlVXNlU3RhdGVtZW50U3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQXVkaXRFdmVudEFnZW50TmV0d29ya1R5cGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5BZGRyZXNzVXNlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29uZGl0aW9uYWxEZWxldGVTdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Db250YWN0UG9pbnRVc2UpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5EZXZpY2VNZXRyaWNPcGVyYXRpb25hbFN0YXR1cyk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLk51dHJpdGlvbk9yZGVyU3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIudXJpKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29udHJpYnV0b3JUeXBlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUmVmZXJlbmNlVmVyc2lvblJ1bGVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuVXNlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuSWRlbnRpdHlBc3N1cmFuY2VMZXZlbCk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLk1lYXN1cmVSZXBvcnRTdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5EZXZpY2VNZXRyaWNDb2xvcik6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlNlYXJjaEVudHJ5TW9kZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1RpbWUodmFsdWUgRkhJUi50aW1lKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29uZGl0aW9uYWxSZWFkU3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29uZGl0aW9uVmVyaWZpY2F0aW9uU3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQWxsZXJneUludG9sZXJhbmNlU2V2ZXJpdHkpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5GaW5hbmNpYWxSZXNvdXJjZVN0YXR1c0NvZGVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuT3BlcmF0aW9uS2luZCk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLk9ic2VydmF0aW9uUmVsYXRpb25zaGlwVHlwZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb0ludGVnZXIodmFsdWUgRkhJUi51bnNpZ25lZEludCk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLk5hbWVVc2UpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TdWJzY3JpcHRpb25TdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Eb2N1bWVudFJlZmVyZW5jZVN0YXR1cyk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkxvY2F0aW9uTW9kZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb0ludGVnZXIodmFsdWUgRkhJUi5pbnRlZ2VyKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIucmVwb3NpdG9yeVR5cGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Mb2NhdGlvblN0YXR1cyk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkZISVJTdWJzdGFuY2VTdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Vbmtub3duQ29udGVudENvZGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Ob3RlVHlwZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlRlc3RSZXBvcnRTdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5IVFRQVmVyYik6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkNvZGVTeXN0ZW1Db250ZW50TW9kZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkVwaXNvZGVPZkNhcmVTdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5SZW1pdHRhbmNlT3V0Y29tZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkZISVJEZXZpY2VTdGF0dXMpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Db250YWN0UG9pbnRTeXN0ZW0pOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TbG90U3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUHJvcGVydHlUeXBlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIubWFya2Rvd24pOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5UeXBlRGVyaXZhdGlvblJ1bGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5NZWRpY2F0aW9uU3RhdGVtZW50U3RhdHVzKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuR3VpZGFuY2VSZXNwb25zZVN0YXR1cyk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlF1YW50aXR5Q29tcGFyYXRvcik6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlJlbGF0ZWRBcnRpZmFjdFR5cGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5vaWQpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5NZWFzdXJlUmVwb3J0VHlwZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkFjdGlvblByZWNoZWNrQmVoYXZpb3IpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TYW1wbGVkRGF0YURhdGFUeXBlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuTWVkaWNhdGlvblN0YXRlbWVudFRha2VuKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29tcGFydG1lbnRUeXBlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29tcG9zaXRpb25BdHRlc3RhdGlvbk1vZGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5EZXZpY2VNZXRyaWNDYWxpYnJhdGlvblN0YXRlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuR3JvdXBUeXBlKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuVHlwZVJlc3RmdWxJbnRlcmFjdGlvbik6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkNvZGVTeXN0ZW1IaWVyYXJjaHlNZWFuaW5nKToNCiAgdmFsdWUudmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuVmlzaW9uQmFzZSk6DQogIHZhbHVlLnZhbHVlDQoNCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkJ1bmRsZVR5cGUpOg0KICB2YWx1ZS52YWx1ZQ0KDQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TeXN0ZW1WZXJzaW9uUHJvY2Vzc2luZ01vZGUpOg0KICB2YWx1ZS52YWx1ZQ==" + }, + { + "contentType": "application/elm+xml", + "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxsaWJyYXJ5IHhtbG5zPSJ1cm46aGw3LW9yZzplbG06cjEiIHhtbG5zOnQ9InVybjpobDctb3JnOmVsbS10eXBlczpyMSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6Zmhpcj0iaHR0cDovL2hsNy5vcmcvZmhpciIgeG1sbnM6cWRtNDM9InVybjpoZWFsdGhpdC1nb3Y6cWRtOnY0XzMiIHhtbG5zOnFkbTUzPSJ1cm46aGVhbHRoaXQtZ292OnFkbTp2NV8zIiB4bWxuczphPSJ1cm46aGw3LW9yZzpjcWwtYW5ub3RhdGlvbnM6cjEiPg0KICAgPGlkZW50aWZpZXIgaWQ9IkZISVJIZWxwZXJzIiB2ZXJzaW9uPSIzLjAuMCIvPg0KICAgPHNjaGVtYUlkZW50aWZpZXIgaWQ9InVybjpobDctb3JnOmVsbSIgdmVyc2lvbj0icjEiLz4NCiAgIDx1c2luZ3M+DQogICAgICA8ZGVmIGxvY2FsSWRlbnRpZmllcj0iU3lzdGVtIiB1cmk9InVybjpobDctb3JnOmVsbS10eXBlczpyMSIvPg0KICAgICAgPGRlZiBsb2NhbElkPSIxIiBsb2NhbElkZW50aWZpZXI9IkZISVIiIHVyaT0iaHR0cDovL2hsNy5vcmcvZmhpciIgdmVyc2lvbj0iMy4wLjAiLz4NCiAgIDwvdXNpbmdzPg0KICAgPHN0YXRlbWVudHM+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjE0IiBuYW1lPSJUb0ludGVydmFsIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjE0Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvSW50ZXJ2YWwocGVyaW9kIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5QZXJpb2Q8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjEzIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTMiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz5pZiA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5wZXJpb2Q8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gaXMgbnVsbDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUiPiB0aGVuIG51bGwgJiN4ZDsKICAgIGVsc2UgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjEyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+SW50ZXJ2YWxbPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNiI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnBlcmlvZDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O3N0YXJ0JnF1b3Q7PC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LCA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5wZXJpb2Q8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjEwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7ZW5kJnF1b3Q7PC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjExIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPl08L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTMiIHhzaTp0eXBlPSJJZiI+DQogICAgICAgICAgICA8Y29uZGl0aW9uIGFzVHlwZT0idDpCb29sZWFuIiB4c2k6dHlwZT0iQXMiPg0KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNCIgeHNpOnR5cGU9IklzTnVsbCI+DQogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIzIiBuYW1lPSJwZXJpb2QiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICAgICAgICA8L29wZXJhbmQ+DQogICAgICAgICAgICA8L2NvbmRpdGlvbj4NCiAgICAgICAgICAgIDx0aGVuIHhzaTp0eXBlPSJBcyI+DQogICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI1IiB4c2k6dHlwZT0iTnVsbCIvPg0KICAgICAgICAgICAgICAgPGFzVHlwZVNwZWNpZmllciB4c2k6dHlwZT0iSW50ZXJ2YWxUeXBlU3BlY2lmaWVyIj4NCiAgICAgICAgICAgICAgICAgIDxwb2ludFR5cGUgbmFtZT0idDpEYXRlVGltZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgICAgICAgPC9hc1R5cGVTcGVjaWZpZXI+DQogICAgICAgICAgICA8L3RoZW4+DQogICAgICAgICAgICA8ZWxzZSBsb2NhbElkPSIxMiIgbG93Q2xvc2VkPSJ0cnVlIiBoaWdoQ2xvc2VkPSJ0cnVlIiB4c2k6dHlwZT0iSW50ZXJ2YWwiPg0KICAgICAgICAgICAgICAgPGxvdyBsb2NhbElkPSI4IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNyIgcGF0aD0ic3RhcnQiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjYiIG5hbWU9InBlcmlvZCIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgICAgICAgICAgIDwvc291cmNlPg0KICAgICAgICAgICAgICAgPC9sb3c+DQogICAgICAgICAgICAgICA8aGlnaCBsb2NhbElkPSIxMSIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjEwIiBwYXRoPSJlbmQiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjkiIG5hbWU9InBlcmlvZCIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgICAgICAgICAgIDwvc291cmNlPg0KICAgICAgICAgICAgICAgPC9oaWdoPg0KICAgICAgICAgICAgPC9lbHNlPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0icGVyaW9kIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIyIiBuYW1lPSJmaGlyOlBlcmlvZCIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjI3IiBuYW1lPSJUb1F1YW50aXR5IiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjI3Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvUXVhbnRpdHkocXVhbnRpdHkgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjE1Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5RdWFudGl0eTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMjYiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPmlmIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+cXVhbnRpdHk8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gaXMgbnVsbDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE4Ij4gdGhlbiBudWxsICYjeGQ7CiAgICBlbHNlIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPlN5c3RlbS5RdWFudGl0eSB7IDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU6IDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5xdWFudGl0eTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiwgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz51bml0OiA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+cXVhbnRpdHk8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dW5pdDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiB9PC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjI2IiB4c2k6dHlwZT0iSWYiPg0KICAgICAgICAgICAgPGNvbmRpdGlvbiBhc1R5cGU9InQ6Qm9vbGVhbiIgeHNpOnR5cGU9IkFzIj4NCiAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjE3IiB4c2k6dHlwZT0iSXNOdWxsIj4NCiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjE2IiBuYW1lPSJxdWFudGl0eSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgICAgICAgIDwvY29uZGl0aW9uPg0KICAgICAgICAgICAgPHRoZW4gYXNUeXBlPSJ0OlF1YW50aXR5IiB4c2k6dHlwZT0iQXMiPg0KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMTgiIHhzaTp0eXBlPSJOdWxsIi8+DQogICAgICAgICAgICA8L3RoZW4+DQogICAgICAgICAgICA8ZWxzZSBsb2NhbElkPSIyNSIgY2xhc3NUeXBlPSJ0OlF1YW50aXR5IiB4c2k6dHlwZT0iSW5zdGFuY2UiPg0KICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgICAgICAgPHZhbHVlIGxvY2FsSWQ9IjIxIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMjAiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIxOSIgbmFtZT0icXVhbnRpdHkiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICAgICAgICAgICAgICA8L3NvdXJjZT4NCiAgICAgICAgICAgICAgICAgIDwvdmFsdWU+DQogICAgICAgICAgICAgICA8L2VsZW1lbnQ+DQogICAgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSJ1bml0Ij4NCiAgICAgICAgICAgICAgICAgIDx2YWx1ZSBsb2NhbElkPSIyNCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjIzIiBwYXRoPSJ1bml0IiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIyMiIgbmFtZT0icXVhbnRpdHkiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICAgICAgICAgICAgICA8L3NvdXJjZT4NCiAgICAgICAgICAgICAgICAgIDwvdmFsdWU+DQogICAgICAgICAgICAgICA8L2VsZW1lbnQ+DQogICAgICAgICAgICA8L2Vsc2U+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJxdWFudGl0eSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMTUiIG5hbWU9ImZoaXI6UXVhbnRpdHkiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI0MCIgbmFtZT0iVG9JbnRlcnZhbCIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI0MCI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb0ludGVydmFsKHJhbmdlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIyOCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuUmFuZ2U8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjM5Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzkiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz5pZiA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyOSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnJhbmdlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+IGlzIG51bGw8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMSI+IHRoZW4gbnVsbCAmI3hkOwogICAgZWxzZSA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5JbnRlcnZhbFs8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5Ub1F1YW50aXR5KDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjMyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+cmFuZ2U8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjMzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+bG93PC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4pPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LCA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzciPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5Ub1F1YW50aXR5KDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNiI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM1Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+cmFuZ2U8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+aGlnaDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+KTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPl08L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMzkiIHhzaTp0eXBlPSJJZiI+DQogICAgICAgICAgICA8Y29uZGl0aW9uIGFzVHlwZT0idDpCb29sZWFuIiB4c2k6dHlwZT0iQXMiPg0KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMzAiIHhzaTp0eXBlPSJJc051bGwiPg0KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjkiIG5hbWU9InJhbmdlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgICAgICAgPC9jb25kaXRpb24+DQogICAgICAgICAgICA8dGhlbiB4c2k6dHlwZT0iQXMiPg0KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMzEiIHhzaTp0eXBlPSJOdWxsIi8+DQogICAgICAgICAgICAgICA8YXNUeXBlU3BlY2lmaWVyIHhzaTp0eXBlPSJJbnRlcnZhbFR5cGVTcGVjaWZpZXIiPg0KICAgICAgICAgICAgICAgICAgPHBvaW50VHlwZSBuYW1lPSJ0OlF1YW50aXR5IiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICAgICAgICA8L2FzVHlwZVNwZWNpZmllcj4NCiAgICAgICAgICAgIDwvdGhlbj4NCiAgICAgICAgICAgIDxlbHNlIGxvY2FsSWQ9IjM4IiBsb3dDbG9zZWQ9InRydWUiIGhpZ2hDbG9zZWQ9InRydWUiIHhzaTp0eXBlPSJJbnRlcnZhbCI+DQogICAgICAgICAgICAgICA8bG93IGxvY2FsSWQ9IjM0IiBuYW1lPSJUb1F1YW50aXR5IiB4c2k6dHlwZT0iRnVuY3Rpb25SZWYiPg0KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMzMiIHBhdGg9ImxvdyIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMzIiIG5hbWU9InJhbmdlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgICAgICAgICAgPC9sb3c+DQogICAgICAgICAgICAgICA8aGlnaCBsb2NhbElkPSIzNyIgbmFtZT0iVG9RdWFudGl0eSIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4NCiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjM2IiBwYXRoPSJoaWdoIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIzNSIgbmFtZT0icmFuZ2UiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+DQogICAgICAgICAgICAgICA8L2hpZ2g+DQogICAgICAgICAgICA8L2Vsc2U+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJyYW5nZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMjgiIG5hbWU9ImZoaXI6UmFuZ2UiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI1OSIgbmFtZT0iVG9Db2RlIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjU5Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvQ29kZShjb2RpbmcgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjQxIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5Db2Rpbmc8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjU4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTgiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz5pZiA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0MiI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmNvZGluZzwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiBpcyBudWxsPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDQiPiB0aGVuIG51bGwgJiN4ZDsKICAgIGVsc2UgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU3Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+U3lzdGVtLkNvZGUgeyA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmNvZGU6IDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5jb2Rpbmc8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+Y29kZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiwgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5zeXN0ZW06IDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5jb2Rpbmc8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+c3lzdGVtPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LCA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZlcnNpb246IDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5jb2Rpbmc8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmVyc2lvbjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiwgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5kaXNwbGF5OiA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+Y29kaW5nPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmRpc3BsYXk8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gfTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI1OCIgeHNpOnR5cGU9IklmIj4NCiAgICAgICAgICAgIDxjb25kaXRpb24gYXNUeXBlPSJ0OkJvb2xlYW4iIHhzaTp0eXBlPSJBcyI+DQogICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI0MyIgeHNpOnR5cGU9IklzTnVsbCI+DQogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI0MiIgbmFtZT0iY29kaW5nIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgICAgICAgPC9jb25kaXRpb24+DQogICAgICAgICAgICA8dGhlbiBhc1R5cGU9InQ6Q29kZSIgeHNpOnR5cGU9IkFzIj4NCiAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjQ0IiB4c2k6dHlwZT0iTnVsbCIvPg0KICAgICAgICAgICAgPC90aGVuPg0KICAgICAgICAgICAgPGVsc2UgbG9jYWxJZD0iNTciIGNsYXNzVHlwZT0idDpDb2RlIiB4c2k6dHlwZT0iSW5zdGFuY2UiPg0KICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0iY29kZSI+DQogICAgICAgICAgICAgICAgICA8dmFsdWUgbG9jYWxJZD0iNDciIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI0NiIgcGF0aD0iY29kZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNDUiIG5hbWU9ImNvZGluZyIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgICAgICAgICAgICAgIDwvc291cmNlPg0KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4NCiAgICAgICAgICAgICAgIDwvZWxlbWVudD4NCiAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9InN5c3RlbSI+DQogICAgICAgICAgICAgICAgICA8dmFsdWUgbG9jYWxJZD0iNTAiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI0OSIgcGF0aD0ic3lzdGVtIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI0OCIgbmFtZT0iY29kaW5nIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgICAgICAgICAgICAgPC9zb3VyY2U+DQogICAgICAgICAgICAgICAgICA8L3ZhbHVlPg0KICAgICAgICAgICAgICAgPC9lbGVtZW50Pg0KICAgICAgICAgICAgICAgPGVsZW1lbnQgbmFtZT0idmVyc2lvbiI+DQogICAgICAgICAgICAgICAgICA8dmFsdWUgbG9jYWxJZD0iNTMiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI1MiIgcGF0aD0idmVyc2lvbiIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNTEiIG5hbWU9ImNvZGluZyIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgICAgICAgICAgICAgIDwvc291cmNlPg0KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4NCiAgICAgICAgICAgICAgIDwvZWxlbWVudD4NCiAgICAgICAgICAgICAgIDxlbGVtZW50IG5hbWU9ImRpc3BsYXkiPg0KICAgICAgICAgICAgICAgICAgPHZhbHVlIGxvY2FsSWQ9IjU2IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNTUiIHBhdGg9ImRpc3BsYXkiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjU0IiBuYW1lPSJjb2RpbmciIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICAgICAgICAgICAgICA8L3NvdXJjZT4NCiAgICAgICAgICAgICAgICAgIDwvdmFsdWU+DQogICAgICAgICAgICAgICA8L2VsZW1lbnQ+DQogICAgICAgICAgICA8L2Vsc2U+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJjb2RpbmciPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjQxIiBuYW1lPSJmaGlyOkNvZGluZyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9Ijc1IiBuYW1lPSJUb0NvbmNlcHQiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNzUiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9Db25jZXB0KGNvbmNlcHQgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjYwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5Db2RlYWJsZUNvbmNlcHQ8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijc0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz5pZiA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmNvbmNlcHQ8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gaXMgbnVsbDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjYzIj4gdGhlbiBudWxsICYjeGQ7CiAgICBlbHNlIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPlN5c3RlbS5Db25jZXB0IHsgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5jb2RlczogPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjY5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjY1Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+Y29uY2VwdC5jb2Rpbmc8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiBDPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mI3hkOwogICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjY4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+cmV0dXJuIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPlRvQ29kZSg8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5DPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+KTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiwgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5kaXNwbGF5OiA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjcwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+Y29uY2VwdDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz50ZXh0PC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjcyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+IH08L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNzQiIHhzaTp0eXBlPSJJZiI+DQogICAgICAgICAgICA8Y29uZGl0aW9uIGFzVHlwZT0idDpCb29sZWFuIiB4c2k6dHlwZT0iQXMiPg0KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNjIiIHhzaTp0eXBlPSJJc051bGwiPg0KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNjEiIG5hbWU9ImNvbmNlcHQiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICAgICAgICA8L29wZXJhbmQ+DQogICAgICAgICAgICA8L2NvbmRpdGlvbj4NCiAgICAgICAgICAgIDx0aGVuIGFzVHlwZT0idDpDb25jZXB0IiB4c2k6dHlwZT0iQXMiPg0KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNjMiIHhzaTp0eXBlPSJOdWxsIi8+DQogICAgICAgICAgICA8L3RoZW4+DQogICAgICAgICAgICA8ZWxzZSBsb2NhbElkPSI3MyIgY2xhc3NUeXBlPSJ0OkNvbmNlcHQiIHhzaTp0eXBlPSJJbnN0YW5jZSI+DQogICAgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSJjb2RlcyI+DQogICAgICAgICAgICAgICAgICA8dmFsdWUgbG9jYWxJZD0iNjkiIHhzaTp0eXBlPSJRdWVyeSI+DQogICAgICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjY1IiBhbGlhcz0iQyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI2NCIgcGF0aD0iY29kaW5nIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBuYW1lPSJjb25jZXB0IiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgICAgICAgICAgICAgPC9zb3VyY2U+DQogICAgICAgICAgICAgICAgICAgICA8cmV0dXJuIGxvY2FsSWQ9IjY4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjY3IiBuYW1lPSJUb0NvZGUiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI2NiIgbmFtZT0iQyIgeHNpOnR5cGU9IkFsaWFzUmVmIi8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICAgICAgICAgICAgICA8L3JldHVybj4NCiAgICAgICAgICAgICAgICAgIDwvdmFsdWU+DQogICAgICAgICAgICAgICA8L2VsZW1lbnQ+DQogICAgICAgICAgICAgICA8ZWxlbWVudCBuYW1lPSJkaXNwbGF5Ij4NCiAgICAgICAgICAgICAgICAgIDx2YWx1ZSBsb2NhbElkPSI3MiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjcxIiBwYXRoPSJ0ZXh0IiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI3MCIgbmFtZT0iY29uY2VwdCIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgICAgICAgICAgICAgIDwvc291cmNlPg0KICAgICAgICAgICAgICAgICAgPC92YWx1ZT4NCiAgICAgICAgICAgICAgIDwvZWxlbWVudD4NCiAgICAgICAgICAgIDwvZWxzZT4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9ImNvbmNlcHQiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjYwIiBuYW1lPSJmaGlyOkNvZGVhYmxlQ29uY2VwdCIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9Ijc5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI3OSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNzYiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLnV1aWQ8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijc4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzgiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3NyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3OCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9Ijc4IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNzciIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9Ijc2IiBuYW1lPSJmaGlyOnV1aWQiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI4MyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iODMiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjgwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5UZXN0U2NyaXB0UmVxdWVzdE1ldGhvZENvZGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjgyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjgyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iODEiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjgwIiBuYW1lPSJmaGlyOlRlc3RTY3JpcHRSZXF1ZXN0TWV0aG9kQ29kZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9Ijg3IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI4NyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iODQiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlByb3ZlbmFuY2VFbnRpdHlSb2xlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4NiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg2Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI4NiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9Ijg1IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI4NCIgbmFtZT0iZmhpcjpQcm92ZW5hbmNlRW50aXR5Um9sZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjkxIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI5MSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iODgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlVuaXRzT2ZUaW1lPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI5MCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjkwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI5MCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9Ijg5IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI4OCIgbmFtZT0iZmhpcjpVbml0c09mVGltZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9Ijk1IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI5NSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iOTIiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkFkZHJlc3NUeXBlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI5NCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijk0Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI5NCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjkzIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI5MiIgbmFtZT0iZmhpcjpBZGRyZXNzVHlwZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9Ijk5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI5OSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iOTYiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkFsbGVyZ3lJbnRvbGVyYW5jZUNhdGVnb3J5PC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI5OCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijk4Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI5OCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9Ijk3IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI5NiIgbmFtZT0iZmhpcjpBbGxlcmd5SW50b2xlcmFuY2VDYXRlZ29yeSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjEwMyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMTAzIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxMDAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlNwZWNpbWVuU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxMDIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMDIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMDEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTAyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTAyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMTAxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIxMDAiIG5hbWU9ImZoaXI6U3BlY2ltZW5TdGF0dXMiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIxMDciIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjEwNyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMTA0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5SZXN0ZnVsQ2FwYWJpbGl0eU1vZGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjEwNiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjEwNiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjEwNSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMDYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIxMDYiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIxMDUiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjEwNCIgbmFtZT0iZmhpcjpSZXN0ZnVsQ2FwYWJpbGl0eU1vZGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIxMTEiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjExMSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMTA4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5EZXRlY3RlZElzc3VlU2V2ZXJpdHk8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjExMCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjExMCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjEwOSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMTAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIxMTAiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIxMDkiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjEwOCIgbmFtZT0iZmhpcjpEZXRlY3RlZElzc3VlU2V2ZXJpdHkiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIxMTUiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjExNSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMTEyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5Jc3N1ZVNldmVyaXR5PC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxMTQiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMTQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTE0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTE0IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMTEzIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIxMTIiIG5hbWU9ImZoaXI6SXNzdWVTZXZlcml0eSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjExOSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMTE5Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxMTYiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkNhcmVUZWFtU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxMTgiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMTgiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMTciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTE4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTE4IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMTE3IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIxMTYiIG5hbWU9ImZoaXI6Q2FyZVRlYW1TdGF0dXMiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIxMjMiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjEyMyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMTIwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5EYXRhRWxlbWVudFN0cmluZ2VuY3k8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjEyMiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjEyMiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjEyMSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMjIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIxMjIiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIxMjEiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjEyMCIgbmFtZT0iZmhpcjpEYXRhRWxlbWVudFN0cmluZ2VuY3kiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIxMjciIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjEyNyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMTI0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5WaXNpb25FeWVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxMjYiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMjYiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMjUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTI2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTI2IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMTI1IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIxMjQiIG5hbWU9ImZoaXI6VmlzaW9uRXllcyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjEzMSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMTMxIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxMjgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkVuY291bnRlclN0YXR1czwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMTMwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTMwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTI5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjEzMCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjEzMCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjEyOSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMTI4IiBuYW1lPSJmaGlyOkVuY291bnRlclN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjEzNSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMTM1Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxMzIiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlN0cnVjdHVyZURlZmluaXRpb25LaW5kPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxMzQiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMzQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMzMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTM0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTM0IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMTMzIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIxMzIiIG5hbWU9ImZoaXI6U3RydWN0dXJlRGVmaW5pdGlvbktpbmQiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIxMzkiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjEzOSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMTM2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5QdWJsaWNhdGlvblN0YXR1czwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMTM4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTM4Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTM3Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjEzOCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjEzOCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjEzNyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMTM2IiBuYW1lPSJmaGlyOlB1YmxpY2F0aW9uU3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMTQzIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIxNDMiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjE0MCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQ29uc2VudERhdGFNZWFuaW5nPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxNDIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNDIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNDEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTQyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTQyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMTQxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIxNDAiIG5hbWU9ImZoaXI6Q29uc2VudERhdGFNZWFuaW5nIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMTQ3IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIxNDciPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjE0NCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuU3RydWN0dXJlTWFwU291cmNlTGlzdE1vZGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjE0NiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjE0NiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE0NSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNDYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIxNDYiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIxNDUiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjE0NCIgbmFtZT0iZmhpcjpTdHJ1Y3R1cmVNYXBTb3VyY2VMaXN0TW9kZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjE1MSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMTUxIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxNDgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlJlcXVlc3RTdGF0dXM8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjE1MCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjE1MCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE0OSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNTAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIxNTAiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIxNDkiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjE0OCIgbmFtZT0iZmhpcjpSZXF1ZXN0U3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMTU1IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIxNTUiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjE1MiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuUXVlc3Rpb25uYWlyZVJlc3BvbnNlU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxNTQiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNTQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTU0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTU0IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMTUzIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIxNTIiIG5hbWU9ImZoaXI6UXVlc3Rpb25uYWlyZVJlc3BvbnNlU3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMTU5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIxNTkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjE1NiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuU2VhcmNoQ29tcGFyYXRvcjwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMTU4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTU4Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTU3Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE1OCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjE1OCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjE1NyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMTU2IiBuYW1lPSJmaGlyOlNlYXJjaENvbXBhcmF0b3IiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIxNjMiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjE2MyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMTYwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5DaGFyZ2VJdGVtU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxNjIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNjIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNjEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTYyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTYyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMTYxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIxNjAiIG5hbWU9ImZoaXI6Q2hhcmdlSXRlbVN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjE2NyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMTY3Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxNjQiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkFjdGlvblBhcnRpY2lwYW50VHlwZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMTY2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTY2Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTY1Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE2NiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjE2NiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjE2NSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMTY0IiBuYW1lPSJmaGlyOkFjdGlvblBhcnRpY2lwYW50VHlwZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjE3MSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMTcxIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxNjgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkFsbGVyZ3lJbnRvbGVyYW5jZVR5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjE3MCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjE3MCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE2OSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNzAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIxNzAiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIxNjkiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjE2OCIgbmFtZT0iZmhpcjpBbGxlcmd5SW50b2xlcmFuY2VUeXBlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMTc1IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIxNzUiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjE3MiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuRG9jdW1lbnRSZWxhdGlvbnNoaXBUeXBlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxNzQiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNzQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNzMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTc0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTc0IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMTczIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIxNzIiIG5hbWU9ImZoaXI6RG9jdW1lbnRSZWxhdGlvbnNoaXBUeXBlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMTc5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIxNzkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjE3NiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQWxsZXJneUludG9sZXJhbmNlQ2xpbmljYWxTdGF0dXM8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjE3OCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjE3OCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE3NyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxNzgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIxNzgiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIxNzciIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjE3NiIgbmFtZT0iZmhpcjpBbGxlcmd5SW50b2xlcmFuY2VDbGluaWNhbFN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjE4MyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMTgzIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxODAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkNhcmVQbGFuQWN0aXZpdHlTdGF0dXM8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjE4MiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjE4MiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE4MSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxODIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIxODIiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIxODEiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjE4MCIgbmFtZT0iZmhpcjpDYXJlUGxhbkFjdGl2aXR5U3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMTg3IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIxODciPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjE4NCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQWN0aW9uTGlzdDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMTg2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTg2Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTg1Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE4NiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjE4NiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjE4NSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMTg0IiBuYW1lPSJmaGlyOkFjdGlvbkxpc3QiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIxOTEiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjE5MSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMTg4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5QYXJ0aWNpcGF0aW9uU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxOTAiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIxOTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxODkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTkwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTkwIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMTg5IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIxODgiIG5hbWU9ImZoaXI6UGFydGljaXBhdGlvblN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjE5NSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMTk1Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxOTIiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlRlc3RSZXBvcnRSZXN1bHQ8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjE5NCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjE5NCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE5MyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxOTQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIxOTQiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIxOTMiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjE5MiIgbmFtZT0iZmhpcjpUZXN0UmVwb3J0UmVzdWx0IiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMTk5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIxOTkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjE5NiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQ29uY2VwdE1hcEdyb3VwVW5tYXBwZWRNb2RlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIxOTgiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIxOTgiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxOTciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTk4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMTk4IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMTk3IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIxOTYiIG5hbWU9ImZoaXI6Q29uY2VwdE1hcEdyb3VwVW5tYXBwZWRNb2RlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMjAzIiBuYW1lPSJUb0RhdGVUaW1lIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjIwMyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb0RhdGVUaW1lKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIyMDAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLmluc3RhbnQ8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjIwMiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjIwMiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIwMSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMDIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyMDIiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIyMDEiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjIwMCIgbmFtZT0iZmhpcjppbnN0YW50IiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMjA3IiBuYW1lPSJUb0RhdGVUaW1lIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjIwNyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb0RhdGVUaW1lKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIyMDQiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLmRhdGVUaW1lPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIyMDYiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMDYiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMDUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjA2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMjA2IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMjA1IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIyMDQiIG5hbWU9ImZoaXI6ZGF0ZVRpbWUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIyMTEiIG5hbWU9IlRvRGF0ZSIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIyMTEiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9EYXRlKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIyMDgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLmRhdGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjIxMCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjIxMCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIwOSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMTAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyMTAiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIyMDkiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjIwOCIgbmFtZT0iZmhpcjpkYXRlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMjE1IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIyMTUiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjIxMiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuRG9jdW1lbnRNb2RlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIyMTQiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMTQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjE0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMjE0IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMjEzIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIyMTIiIG5hbWU9ImZoaXI6RG9jdW1lbnRNb2RlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMjE5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIyMTkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjIxNiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQXNzZXJ0aW9uT3BlcmF0b3JUeXBlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIyMTgiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMTgiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMTciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjE4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMjE4IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMjE3IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIyMTYiIG5hbWU9ImZoaXI6QXNzZXJ0aW9uT3BlcmF0b3JUeXBlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMjIzIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIyMjMiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjIyMCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuRGF5c09mV2VlazwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMjIyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjIyIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjIxIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIyMiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjIyMiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjIyMSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMjIwIiBuYW1lPSJmaGlyOkRheXNPZldlZWsiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIyMjciIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjIyNyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMjI0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5Jc3N1ZVR5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjIyNiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjIyNiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIyNSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMjYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyMjYiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIyMjUiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjIyNCIgbmFtZT0iZmhpcjpJc3N1ZVR5cGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIyMzEiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjIzMSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMjI4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5Db250ZW50VHlwZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMjMwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjMwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjI5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIzMCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjIzMCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjIyOSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMjI4IiBuYW1lPSJmaGlyOkNvbnRlbnRUeXBlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMjM1IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIyMzUiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjIzMiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuU3RydWN0dXJlTWFwQ29udGV4dFR5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjIzNCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjIzNCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIzMyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMzQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyMzQiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIyMzMiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjIzMiIgbmFtZT0iZmhpcjpTdHJ1Y3R1cmVNYXBDb250ZXh0VHlwZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjIzOSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMjM5Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIyMzYiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkZhbWlseUhpc3RvcnlTdGF0dXM8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjIzOCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjIzOCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIzNyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMzgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyMzgiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIyMzciIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjIzNiIgbmFtZT0iZmhpcjpGYW1pbHlIaXN0b3J5U3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMjQzIiBuYW1lPSJUb0ludGVnZXIiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMjQzIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvSW50ZWdlcih2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMjQwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5wb3NpdGl2ZUludDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMjQyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjQyIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjQxIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI0MiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjI0MiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjI0MSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMjQwIiBuYW1lPSJmaGlyOnBvc2l0aXZlSW50IiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMjQ3IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIyNDciPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjI0NCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQ2xpbmljYWxJbXByZXNzaW9uU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIyNDYiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNDYiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNDUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjQ2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMjQ2IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMjQ1IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIyNDQiIG5hbWU9ImZoaXI6Q2xpbmljYWxJbXByZXNzaW9uU3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMjUxIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIyNTEiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjI0OCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQXNzZXJ0aW9uUmVzcG9uc2VUeXBlczwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMjUwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjUwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjQ5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI1MCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjI1MCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjI0OSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMjQ4IiBuYW1lPSJmaGlyOkFzc2VydGlvblJlc3BvbnNlVHlwZXMiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIyNTUiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjI1NSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMjUyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5SZXF1ZXN0SW50ZW50PC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIyNTQiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNTQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjU0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMjU0IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMjUzIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIyNTIiIG5hbWU9ImZoaXI6UmVxdWVzdEludGVudCIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjI1OSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMjU5Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIyNTYiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLk5hcnJhdGl2ZVN0YXR1czwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMjU4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjU4Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjU3Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI1OCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjI1OCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjI1NyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMjU2IiBuYW1lPSJmaGlyOk5hcnJhdGl2ZVN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjI2MyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMjYzIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIyNjAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLk1lYXNtbnRQcmluY2lwbGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjI2MiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjI2MiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI2MSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNjIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyNjIiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIyNjEiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjI2MCIgbmFtZT0iZmhpcjpNZWFzbW50UHJpbmNpcGxlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMjY3IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIyNjciPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjI2NCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQ29uc2VudEV4Y2VwdFR5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjI2NiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjI2NiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI2NSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNjYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyNjYiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIyNjUiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjI2NCIgbmFtZT0iZmhpcjpDb25zZW50RXhjZXB0VHlwZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjI3MSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMjcxIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIyNjgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLnN0cmluZzwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMjcwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjcwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjY5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI3MCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjI3MCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjI2OSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMjY4IiBuYW1lPSJmaGlyOnN0cmluZyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjI3NSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMjc1Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIyNzIiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkFjdGlvblJlcXVpcmVkQmVoYXZpb3I8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjI3NCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjI3NCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI3MyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNzQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyNzQiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIyNzMiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjI3MiIgbmFtZT0iZmhpcjpBY3Rpb25SZXF1aXJlZEJlaGF2aW9yIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMjc5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIyNzkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjI3NiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuRW5kcG9pbnRTdGF0dXM8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjI3OCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjI3OCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI3NyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNzgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyNzgiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIyNzciIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjI3NiIgbmFtZT0iZmhpcjpFbmRwb2ludFN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjI4MyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMjgzIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIyODAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkd1aWRlUGFnZUtpbmQ8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjI4MiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjI4MiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI4MSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyODIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyODIiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIyODEiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjI4MCIgbmFtZT0iZmhpcjpHdWlkZVBhZ2VLaW5kIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMjg3IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIyODciPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjI4NCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuR3VpZGVEZXBlbmRlbmN5VHlwZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMjg2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjg2Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjg1Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI4NiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjI4NiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjI4NSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMjg0IiBuYW1lPSJmaGlyOkd1aWRlRGVwZW5kZW5jeVR5cGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIyOTEiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjI5MSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMjg4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5SZXNvdXJjZVZlcnNpb25Qb2xpY3k8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjI5MCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjI5MCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI4OSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyOTAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyOTAiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIyODkiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjI4OCIgbmFtZT0iZmhpcjpSZXNvdXJjZVZlcnNpb25Qb2xpY3kiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIyOTUiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjI5NSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMjkyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5NZWRpY2F0aW9uUmVxdWVzdFN0YXR1czwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMjk0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjk0Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjkzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI5NCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjI5NCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjI5MyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMjkyIiBuYW1lPSJmaGlyOk1lZGljYXRpb25SZXF1ZXN0U3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMjk5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIyOTkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjI5NiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIyOTgiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyOTgiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyOTciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjk4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMjk4IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMjk3IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIyOTYiIG5hbWU9ImZoaXI6TWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uU3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMzAzIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIzMDMiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjMwMCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQWN0aW9uQ2FyZGluYWxpdHlCZWhhdmlvcjwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMzAyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzAyIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzAxIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjMwMiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjMwMiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjMwMSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMzAwIiBuYW1lPSJmaGlyOkFjdGlvbkNhcmRpbmFsaXR5QmVoYXZpb3IiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIzMDciIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjMwNyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMzA0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5NZWRpY2F0aW9uUmVxdWVzdEludGVudDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMzA2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzA2Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzA1Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjMwNiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjMwNiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjMwNSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMzA0IiBuYW1lPSJmaGlyOk1lZGljYXRpb25SZXF1ZXN0SW50ZW50IiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMzExIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIzMTEiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjMwOCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuTmFtaW5nU3lzdGVtSWRlbnRpZmllclR5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjMxMCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjMxMCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjMwOSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMTAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIzMTAiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIzMDkiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjMwOCIgbmFtZT0iZmhpcjpOYW1pbmdTeXN0ZW1JZGVudGlmaWVyVHlwZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjMxNSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMzE1Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzMTIiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkltbXVuaXphdGlvblN0YXR1c0NvZGVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzMTQiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMTQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzE0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMzE0IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMzEzIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIzMTIiIG5hbWU9ImZoaXI6SW1tdW5pemF0aW9uU3RhdHVzQ29kZXMiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIzMTkiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjMxOSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMzE2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5BY2NvdW50U3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzMTgiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMTgiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMTciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzE4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMzE4IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMzE3IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIzMTYiIG5hbWU9ImZoaXI6QWNjb3VudFN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjMyMyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMzIzIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzMjAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLk1lZGljYXRpb25EaXNwZW5zZVN0YXR1czwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMzIyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzIyIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzIxIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjMyMiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjMyMiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjMyMSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMzIwIiBuYW1lPSJmaGlyOk1lZGljYXRpb25EaXNwZW5zZVN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjMyNyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMzI3Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzMjQiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkNvbmZpZGVudGlhbGl0eUNsYXNzaWZpY2F0aW9uPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzMjYiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMjYiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMjUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzI2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMzI2IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMzI1IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIzMjQiIG5hbWU9ImZoaXI6Q29uZmlkZW50aWFsaXR5Q2xhc3NpZmljYXRpb24iIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIzMzEiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjMzMSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMzI4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5JZGVudGlmaWVyVXNlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzMzAiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMzAiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMjkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzMwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMzMwIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMzI5IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIzMjgiIG5hbWU9ImZoaXI6SWRlbnRpZmllclVzZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjMzNSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMzM1Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzMzIiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkRpZ2l0YWxNZWRpYVR5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjMzNCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjMzNCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjMzMyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMzQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIzMzQiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIzMzMiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjMzMiIgbmFtZT0iZmhpcjpEaWdpdGFsTWVkaWFUeXBlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMzM5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIzMzkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjMzNiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuU3RydWN0dXJlTWFwVGFyZ2V0TGlzdE1vZGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjMzOCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjMzOCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjMzNyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMzgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIzMzgiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIzMzciIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjMzNiIgbmFtZT0iZmhpcjpTdHJ1Y3R1cmVNYXBUYXJnZXRMaXN0TW9kZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjM0MyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMzQzIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzNDAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlRlc3RSZXBvcnRQYXJ0aWNpcGFudFR5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjM0MiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjM0MiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM0MSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNDIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIzNDIiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIzNDEiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjM0MCIgbmFtZT0iZmhpcjpUZXN0UmVwb3J0UGFydGljaXBhbnRUeXBlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMzQ3IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIzNDciPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjM0NCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQmluZGluZ1N0cmVuZ3RoPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzNDYiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNDYiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNDUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzQ2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMzQ2IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMzQ1IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIzNDQiIG5hbWU9ImZoaXI6QmluZGluZ1N0cmVuZ3RoIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMzUxIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIzNTEiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjM0OCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuUmVxdWVzdFByaW9yaXR5PC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzNTAiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNDkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzUwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMzUwIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMzQ5IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIzNDgiIG5hbWU9ImZoaXI6UmVxdWVzdFByaW9yaXR5IiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMzU1IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIzNTUiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjM1MiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuUGFydGljaXBhbnRSZXF1aXJlZDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMzU0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzU0Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzUzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM1NCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjM1NCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjM1MyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMzUyIiBuYW1lPSJmaGlyOlBhcnRpY2lwYW50UmVxdWlyZWQiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIzNTkiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjM1OSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMzU2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5EaXNjcmltaW5hdG9yVHlwZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMzU4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzU4Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzU3Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM1OCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjM1OCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjM1NyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMzU2IiBuYW1lPSJmaGlyOkRpc2NyaW1pbmF0b3JUeXBlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMzYzIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIzNjMiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjM2MCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuWFBhdGhVc2FnZVR5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjM2MiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjM2MiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM2MSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNjIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIzNjIiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIzNjEiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjM2MCIgbmFtZT0iZmhpcjpYUGF0aFVzYWdlVHlwZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjM2NyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMzY3Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzNjQiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlN0cnVjdHVyZU1hcElucHV0TW9kZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMzY2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzY2Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzY1Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM2NiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjM2NiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjM2NSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMzY0IiBuYW1lPSJmaGlyOlN0cnVjdHVyZU1hcElucHV0TW9kZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjM3MSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMzcxIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzNjgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkluc3RhbmNlQXZhaWxhYmlsaXR5PC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzNzAiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNzAiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNjkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzcwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMzcwIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMzY5IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIzNjgiIG5hbWU9ImZoaXI6SW5zdGFuY2VBdmFpbGFiaWxpdHkiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIzNzUiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjM3NSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMzcyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5pZDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMzc0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzc0Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzczIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM3NCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjM3NCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjM3MyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iMzcyIiBuYW1lPSJmaGlyOmlkIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iMzc5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSIzNzkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjM3NiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuTGlua2FnZVR5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjM3OCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjM3OCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM3NyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNzgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIzNzgiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIzNzciIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjM3NiIgbmFtZT0iZmhpcjpMaW5rYWdlVHlwZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjM4MyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMzgzIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzODAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlJlZmVyZW5jZUhhbmRsaW5nUG9saWN5PC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzODIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzODIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzODEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzgyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMzgyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMzgxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIzODAiIG5hbWU9ImZoaXI6UmVmZXJlbmNlSGFuZGxpbmdQb2xpY3kiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIzODciIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjM4NyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMzg0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5NZWRpY2F0aW9uU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzODYiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzODYiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzODUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzg2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMzg2IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMzg1IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIzODQiIG5hbWU9ImZoaXI6TWVkaWNhdGlvblN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjM5MSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMzkxIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzODgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkZpbHRlck9wZXJhdG9yPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzOTAiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzOTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzODkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzkwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMzkwIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMzg5IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIzODgiIG5hbWU9ImZoaXI6RmlsdGVyT3BlcmF0b3IiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSIzOTUiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjM5NSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iMzkyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5OYW1pbmdTeXN0ZW1UeXBlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzOTQiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzOTQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzOTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzk0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMzk0IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iMzkzIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSIzOTIiIG5hbWU9ImZoaXI6TmFtaW5nU3lzdGVtVHlwZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjM5OSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iMzk5Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSIzOTYiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlJlc2VhcmNoU3R1ZHlTdGF0dXM8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjM5OCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjM5OCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjM5NyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIzOTgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIzOTgiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIzOTciIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjM5NiIgbmFtZT0iZmhpcjpSZXNlYXJjaFN0dWR5U3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNDAzIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI0MDMiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjQwMCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuRXh0ZW5zaW9uQ29udGV4dDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDAyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDAyIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDAxIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQwMiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjQwMiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjQwMSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNDAwIiBuYW1lPSJmaGlyOkV4dGVuc2lvbkNvbnRleHQiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI0MDciIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjQwNyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDA0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5GSElSRGVmaW5lZFR5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjQwNiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjQwNiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQwNSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0MDYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI0MDYiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI0MDUiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjQwNCIgbmFtZT0iZmhpcjpGSElSRGVmaW5lZFR5cGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI0MTEiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjQxMSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDA4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5BdWRpdEV2ZW50T3V0Y29tZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDEwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDEwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDA5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQxMCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjQxMCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjQwOSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNDA4IiBuYW1lPSJmaGlyOkF1ZGl0RXZlbnRPdXRjb21lIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNDE1IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI0MTUiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjQxMiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQWN0aW9uUmVsYXRpb25zaGlwVHlwZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDE0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDE0Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDEzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQxNCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjQxNCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjQxMyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNDEyIiBuYW1lPSJmaGlyOkFjdGlvblJlbGF0aW9uc2hpcFR5cGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI0MTkiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjQxOSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDE2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5Db25zdHJhaW50U2V2ZXJpdHk8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjQxOCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjQxOCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQxNyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0MTgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI0MTgiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI0MTciIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjQxNiIgbmFtZT0iZmhpcjpDb25zdHJhaW50U2V2ZXJpdHkiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI0MjMiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjQyMyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDIwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5FdmVudENhcGFiaWxpdHlNb2RlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI0MjIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI0MjIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0MjEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDIyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNDIyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNDIxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI0MjAiIG5hbWU9ImZoaXI6RXZlbnRDYXBhYmlsaXR5TW9kZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjQyNyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNDI3Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI0MjQiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkNvbnRyYWN0UmVzb3VyY2VTdGF0dXNDb2RlczwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDI2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDI2Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDI1Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQyNiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjQyNiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjQyNSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNDI0IiBuYW1lPSJmaGlyOkNvbnRyYWN0UmVzb3VyY2VTdGF0dXNDb2RlcyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjQzMSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNDMxIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI0MjgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlJlc2VhcmNoU3ViamVjdFN0YXR1czwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDMwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDMwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDI5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQzMCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjQzMCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjQyOSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNDI4IiBuYW1lPSJmaGlyOlJlc2VhcmNoU3ViamVjdFN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjQzNSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNDM1Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI0MzIiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlVESUVudHJ5VHlwZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDM0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDM0Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDMzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQzNCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjQzNCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjQzMyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNDMyIiBuYW1lPSJmaGlyOlVESUVudHJ5VHlwZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjQzOSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNDM5Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI0MzYiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkRldmljZU1ldHJpY0NhdGVnb3J5PC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI0MzgiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI0MzgiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0MzciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDM4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNDM4IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNDM3IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI0MzYiIG5hbWU9ImZoaXI6RGV2aWNlTWV0cmljQ2F0ZWdvcnkiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI0NDMiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjQ0MyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDQwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5UZXN0UmVwb3J0QWN0aW9uUmVzdWx0PC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI0NDIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NDIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NDEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDQyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNDQyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNDQxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI0NDAiIG5hbWU9ImZoaXI6VGVzdFJlcG9ydEFjdGlvblJlc3VsdCIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjQ0NyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNDQ3Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI0NDQiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlN0cnVjdHVyZU1hcFRyYW5zZm9ybTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDQ2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDQ2Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDQ1Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ0NiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjQ0NiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjQ0NSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNDQ0IiBuYW1lPSJmaGlyOlN0cnVjdHVyZU1hcFRyYW5zZm9ybSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjQ1MSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNDUxIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI0NDgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlJlc3BvbnNlVHlwZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDUwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDUwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDQ5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ1MCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjQ1MCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjQ0OSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNDQ4IiBuYW1lPSJmaGlyOlJlc3BvbnNlVHlwZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjQ1NSIgbmFtZT0iVG9EZWNpbWFsIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjQ1NSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb0RlY2ltYWwodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjQ1MiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuZGVjaW1hbDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDU0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDU0Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDUzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ1NCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjQ1NCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjQ1MyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNDUyIiBuYW1lPSJmaGlyOmRlY2ltYWwiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI0NTkiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjQ1OSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDU2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5BZ2dyZWdhdGlvbk1vZGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjQ1OCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ1OCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ1NyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NTgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI0NTgiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI0NTciIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjQ1NiIgbmFtZT0iZmhpcjpBZ2dyZWdhdGlvbk1vZGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI0NjMiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjQ2MyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDYwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5DYXBhYmlsaXR5U3RhdGVtZW50S2luZDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDYyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDYyIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDYxIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ2MiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjQ2MiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjQ2MSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNDYwIiBuYW1lPSJmaGlyOkNhcGFiaWxpdHlTdGF0ZW1lbnRLaW5kIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNDY3IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI0NjciPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjQ2NCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQWxsZXJneUludG9sZXJhbmNlVmVyaWZpY2F0aW9uU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI0NjYiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NjYiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NjUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDY2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNDY2IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNDY1IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI0NjQiIG5hbWU9ImZoaXI6QWxsZXJneUludG9sZXJhbmNlVmVyaWZpY2F0aW9uU3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNDcxIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI0NzEiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjQ2OCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuRXZlbnRUaW1pbmc8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjQ3MCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ3MCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ2OSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NzAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI0NzAiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI0NjkiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjQ2OCIgbmFtZT0iZmhpcjpFdmVudFRpbWluZyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjQ3NSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNDc1Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI0NzIiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkdvYWxTdGF0dXM8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjQ3NCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ3NCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ3MyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NzQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI0NzQiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI0NzMiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjQ3MiIgbmFtZT0iZmhpcjpHb2FsU3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNDc5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI0NzkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjQ3NiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuU2VhcmNoUGFyYW1UeXBlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI0NzgiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NzgiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NzciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDc4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNDc4IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNDc3IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI0NzYiIG5hbWU9ImZoaXI6U2VhcmNoUGFyYW1UeXBlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNDgzIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI0ODMiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjQ4MCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuU3lzdGVtUmVzdGZ1bEludGVyYWN0aW9uPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI0ODIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI0ODIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0ODEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDgyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNDgyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNDgxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI0ODAiIG5hbWU9ImZoaXI6U3lzdGVtUmVzdGZ1bEludGVyYWN0aW9uIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNDg3IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI0ODciPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjQ4NCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQWN0aW9uR3JvdXBpbmdCZWhhdmlvcjwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDg2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDg2Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDg1Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ4NiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjQ4NiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjQ4NSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNDg0IiBuYW1lPSJmaGlyOkFjdGlvbkdyb3VwaW5nQmVoYXZpb3IiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI0OTEiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjQ5MSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDg4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5TdHJ1Y3R1cmVNYXBNb2RlbE1vZGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjQ5MCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ5MCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ4OSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0OTAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI0OTAiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI0ODkiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjQ4OCIgbmFtZT0iZmhpcjpTdHJ1Y3R1cmVNYXBNb2RlbE1vZGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI0OTUiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjQ5NSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDkyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5UYXNrU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI0OTQiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI0OTQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0OTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDk0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNDk0IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNDkzIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI0OTIiIG5hbWU9ImZoaXI6VGFza1N0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjQ5OSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNDk5Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI0OTYiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkFkdmVyc2VFdmVudENhdXNhbGl0eTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNDk4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDk4Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDk3Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ5OCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjQ5OCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjQ5NyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNDk2IiBuYW1lPSJmaGlyOkFkdmVyc2VFdmVudENhdXNhbGl0eSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjUwMyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNTAzIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI1MDAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlN1YnNjcmlwdGlvbkNoYW5uZWxUeXBlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI1MDIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MDIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MDEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTAyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNTAyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNTAxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI1MDAiIG5hbWU9ImZoaXI6U3Vic2NyaXB0aW9uQ2hhbm5lbFR5cGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI1MDciIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjUwNyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTA0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5HcmFwaENvbXBhcnRtZW50UnVsZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTA2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTA2Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTA1Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUwNiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjUwNiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjUwNSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNTA0IiBuYW1lPSJmaGlyOkdyYXBoQ29tcGFydG1lbnRSdWxlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNTExIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI1MTEiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjUwOCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQXNzZXJ0aW9uRGlyZWN0aW9uVHlwZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTEwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTEwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTA5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUxMCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjUxMCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjUwOSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNTA4IiBuYW1lPSJmaGlyOkFzc2VydGlvbkRpcmVjdGlvblR5cGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI1MTUiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjUxNSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTEyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5DYXJlUGxhbkludGVudDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTE0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTE0Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTEzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUxNCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjUxNCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjUxMyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNTEyIiBuYW1lPSJmaGlyOkNhcmVQbGFuSW50ZW50IiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNTE5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI1MTkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjUxNiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuU2xpY2luZ1J1bGVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI1MTgiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MTgiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MTciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTE4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNTE4IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNTE3IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI1MTYiIG5hbWU9ImZoaXI6U2xpY2luZ1J1bGVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNTIzIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI1MjMiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjUyMCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuRXhwbGFuYXRpb25PZkJlbmVmaXRTdGF0dXM8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjUyMiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjUyMiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUyMSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MjIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI1MjIiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI1MjEiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjUyMCIgbmFtZT0iZmhpcjpFeHBsYW5hdGlvbk9mQmVuZWZpdFN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjUyNyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNTI3Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI1MjQiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkNvbnNlbnRTdGF0ZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTI2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTI2Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTI1Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUyNiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjUyNiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjUyNSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNTI0IiBuYW1lPSJmaGlyOkNvbnNlbnRTdGF0ZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjUzMSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNTMxIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI1MjgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkFkdmVyc2VFdmVudENhdGVnb3J5PC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI1MzAiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MzAiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MjkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTMwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNTMwIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNTI5IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI1MjgiIG5hbWU9ImZoaXI6QWR2ZXJzZUV2ZW50Q2F0ZWdvcnkiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI1MzUiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjUzNSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTMyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5MaW5rVHlwZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTM0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTM0Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTMzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUzNCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjUzNCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjUzMyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNTMyIiBuYW1lPSJmaGlyOkxpbmtUeXBlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNTM5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI1MzkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjUzNiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQWxsZXJneUludG9sZXJhbmNlQ3JpdGljYWxpdHk8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjUzOCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjUzOCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUzNyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1MzgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI1MzgiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI1MzciIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjUzNiIgbmFtZT0iZmhpcjpBbGxlcmd5SW50b2xlcmFuY2VDcml0aWNhbGl0eSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjU0MyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNTQzIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI1NDAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLk1lZGljYXRpb25SZXF1ZXN0UHJpb3JpdHk8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjU0MiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjU0MiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU0MSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NDIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI1NDIiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI1NDEiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjU0MCIgbmFtZT0iZmhpcjpNZWRpY2F0aW9uUmVxdWVzdFByaW9yaXR5IiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNTQ3IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI1NDciPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjU0NCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQ29uY2VwdE1hcEVxdWl2YWxlbmNlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI1NDYiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NDYiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NDUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTQ2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNTQ2IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNTQ1IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI1NDQiIG5hbWU9ImZoaXI6Q29uY2VwdE1hcEVxdWl2YWxlbmNlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNTUxIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI1NTEiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjU0OCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuRkhJUkFsbFR5cGVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI1NTAiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NDkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTUwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNTUwIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNTQ5IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI1NDgiIG5hbWU9ImZoaXI6RkhJUkFsbFR5cGVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNTU1IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI1NTUiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjU1MiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuUHJvcGVydHlSZXByZXNlbnRhdGlvbjwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTU0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTU0Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTUzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU1NCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjU1NCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjU1MyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNTUyIiBuYW1lPSJmaGlyOlByb3BlcnR5UmVwcmVzZW50YXRpb24iIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI1NTkiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjU1OSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTU2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5BdWRpdEV2ZW50QWN0aW9uPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI1NTgiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NTgiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NTciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTU4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNTU4IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNTU3IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI1NTYiIG5hbWU9ImZoaXI6QXVkaXRFdmVudEFjdGlvbiIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjU2MyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNTYzIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI1NjAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlRyaWdnZXJUeXBlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI1NjIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NjIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NjEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTYyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNTYyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNTYxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI1NjAiIG5hbWU9ImZoaXI6VHJpZ2dlclR5cGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI1NjciIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjU2NyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTY0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5TZWFyY2hNb2RpZmllckNvZGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjU2NiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjU2NiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU2NSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NjYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI1NjYiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI1NjUiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjU2NCIgbmFtZT0iZmhpcjpTZWFyY2hNb2RpZmllckNvZGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI1NzEiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjU3MSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTY4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5Db21wb3NpdGlvblN0YXR1czwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTcwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTcwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTY5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU3MCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjU3MCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjU2OSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNTY4IiBuYW1lPSJmaGlyOkNvbXBvc2l0aW9uU3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNTc1IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI1NzUiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjU3MiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQXBwb2ludG1lbnRTdGF0dXM8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjU3NCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjU3NCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU3MyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NzQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI1NzQiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI1NzMiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjU3MiIgbmFtZT0iZmhpcjpBcHBvaW50bWVudFN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjU3OSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNTc5Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI1NzYiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLk1lc3NhZ2VTaWduaWZpY2FuY2VDYXRlZ29yeTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTc4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTc4Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTc3Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU3OCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjU3OCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjU3NyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNTc2IiBuYW1lPSJmaGlyOk1lc3NhZ2VTaWduaWZpY2FuY2VDYXRlZ29yeSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjU4MyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNTgzIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI1ODAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkV2ZW50U3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI1ODIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI1ODIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1ODEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTgyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNTgyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNTgxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI1ODAiIG5hbWU9ImZoaXI6RXZlbnRTdGF0dXMiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI1ODciIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjU4NyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTg0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5PcGVyYXRpb25QYXJhbWV0ZXJVc2U8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjU4NiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjU4NiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU4NSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1ODYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI1ODYiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI1ODUiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjU4NCIgbmFtZT0iZmhpcjpPcGVyYXRpb25QYXJhbWV0ZXJVc2UiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI1OTEiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjU5MSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTg4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5MaXN0TW9kZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTkwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTkwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTg5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU5MCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjU5MCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjU4OSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNTg4IiBuYW1lPSJmaGlyOkxpc3RNb2RlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNTk1IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI1OTUiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjU5MiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQWN0aW9uQ29uZGl0aW9uS2luZDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTk0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTk0Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTkzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU5NCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjU5NCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjU5MyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNTkyIiBuYW1lPSJmaGlyOkFjdGlvbkNvbmRpdGlvbktpbmQiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI1OTkiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjU5OSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTk2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5PYnNlcnZhdGlvblN0YXR1czwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNTk4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTk4Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTk3Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU5OCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjU5OCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjU5NyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNTk2IiBuYW1lPSJmaGlyOk9ic2VydmF0aW9uU3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNjAzIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI2MDMiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjYwMCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIucXVhbGl0eVR5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjYwMiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjYwMiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjYwMSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MDIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI2MDIiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI2MDEiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjYwMCIgbmFtZT0iZmhpcjpxdWFsaXR5VHlwZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjYwNyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNjA3Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2MDQiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkFkbWluaXN0cmF0aXZlR2VuZGVyPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2MDYiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MDYiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MDUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjA2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNjA2IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNjA1IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI2MDQiIG5hbWU9ImZoaXI6QWRtaW5pc3RyYXRpdmVHZW5kZXIiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI2MTEiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjYxMSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNjA4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5SZXNvdXJjZVR5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjYxMCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjYxMCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjYwOSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MTAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI2MTAiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI2MDkiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjYwOCIgbmFtZT0iZmhpcjpSZXNvdXJjZVR5cGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI2MTUiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjYxNSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNjEyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5RdWVzdGlvbm5haXJlSXRlbVR5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjYxNCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjYxNCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjYxMyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MTQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI2MTQiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI2MTMiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjYxMiIgbmFtZT0iZmhpcjpRdWVzdGlvbm5haXJlSXRlbVR5cGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI2MTkiIG5hbWU9IlRvQm9vbGVhbiIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI2MTkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9Cb29sZWFuKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2MTYiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLmJvb2xlYW48L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjYxOCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjYxOCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjYxNyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MTgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI2MTgiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI2MTciIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjYxNiIgbmFtZT0iZmhpcjpib29sZWFuIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNjIzIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI2MjMiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjYyMCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuU3RydWN0dXJlTWFwR3JvdXBUeXBlTW9kZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNjIyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjIyIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjIxIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjYyMiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjYyMiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjYyMSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNjIwIiBuYW1lPSJmaGlyOlN0cnVjdHVyZU1hcEdyb3VwVHlwZU1vZGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI2MjciIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjYyNyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNjI0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5EZXZpY2VNZXRyaWNDYWxpYnJhdGlvblR5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjYyNiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjYyNiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjYyNSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MjYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI2MjYiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI2MjUiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjYyNCIgbmFtZT0iZmhpcjpEZXZpY2VNZXRyaWNDYWxpYnJhdGlvblR5cGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI2MzEiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjYzMSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNjI4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5jb2RlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2MzAiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MzAiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MjkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjMwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNjMwIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNjI5IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI2MjgiIG5hbWU9ImZoaXI6Y29kZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjYzNSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNjM1Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2MzIiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlN1cHBseVJlcXVlc3RTdGF0dXM8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjYzNCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjYzNCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjYzMyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MzQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI2MzQiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI2MzMiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjYzMiIgbmFtZT0iZmhpcjpTdXBwbHlSZXF1ZXN0U3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNjM5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI2MzkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjYzNiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQWN0aW9uU2VsZWN0aW9uQmVoYXZpb3I8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjYzOCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjYzOCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjYzNyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MzgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI2MzgiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI2MzciIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjYzNiIgbmFtZT0iZmhpcjpBY3Rpb25TZWxlY3Rpb25CZWhhdmlvciIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjY0MyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNjQzIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2NDAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkVuY291bnRlckxvY2F0aW9uU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2NDIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NDIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NDEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjQyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNjQyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNjQxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI2NDAiIG5hbWU9ImZoaXI6RW5jb3VudGVyTG9jYXRpb25TdGF0dXMiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI2NDciIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjY0NyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNjQ0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5TdXBwbHlEZWxpdmVyeVN0YXR1czwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNjQ2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjQ2Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjQ1Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjY0NiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjY0NiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjY0NSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNjQ0IiBuYW1lPSJmaGlyOlN1cHBseURlbGl2ZXJ5U3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNjUxIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI2NTEiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjY0OCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuRGlhZ25vc3RpY1JlcG9ydFN0YXR1czwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNjUwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjUwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjQ5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjY1MCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjY1MCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjY0OSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNjQ4IiBuYW1lPSJmaGlyOkRpYWdub3N0aWNSZXBvcnRTdGF0dXMiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI2NTUiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjY1NSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNjUyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5GbGFnU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2NTQiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NTQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjU0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNjU0IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNjUzIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI2NTIiIG5hbWU9ImZoaXI6RmxhZ1N0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjY1OSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNjU5Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2NTYiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkNhcmVQbGFuU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2NTgiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NTgiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NTciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjU4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNjU4IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNjU3IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI2NTYiIG5hbWU9ImZoaXI6Q2FyZVBsYW5TdGF0dXMiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI2NjMiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjY2MyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNjYwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5Db25kaXRpb25DbGluaWNhbFN0YXR1c0NvZGVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2NjIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NjIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NjEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjYyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNjYyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNjYxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI2NjAiIG5hbWU9ImZoaXI6Q29uZGl0aW9uQ2xpbmljYWxTdGF0dXNDb2RlcyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjY2NyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNjY3Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2NjQiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkxpc3RTdGF0dXM8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjY2NiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjY2NiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjY2NSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NjYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI2NjYiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI2NjUiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjY2NCIgbmFtZT0iZmhpcjpMaXN0U3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNjcxIiBuYW1lPSJUb2Jhc2U2NEJpbmFyeSIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI2NzEiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9iYXNlNjRCaW5hcnkodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjY2OCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuYmFzZTY0QmluYXJ5PC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2NzAiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NzAiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NjkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjcwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNjcwIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNjY5IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI2NjgiIG5hbWU9ImZoaXI6YmFzZTY0QmluYXJ5IiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNjc1IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI2NzUiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjY3MiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuRGV2aWNlVXNlU3RhdGVtZW50U3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2NzQiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NzQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NzMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjc0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNjc0IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNjczIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI2NzIiIG5hbWU9ImZoaXI6RGV2aWNlVXNlU3RhdGVtZW50U3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNjc5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI2NzkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjY3NiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQXVkaXRFdmVudEFnZW50TmV0d29ya1R5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjY3OCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjY3OCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjY3NyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NzgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI2NzgiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI2NzciIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjY3NiIgbmFtZT0iZmhpcjpBdWRpdEV2ZW50QWdlbnROZXR3b3JrVHlwZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjY4MyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNjgzIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2ODAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkFkZHJlc3NVc2U8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjY4MiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjY4MiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjY4MSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2ODIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI2ODIiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI2ODEiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjY4MCIgbmFtZT0iZmhpcjpBZGRyZXNzVXNlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNjg3IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI2ODciPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjY4NCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQ29uZGl0aW9uYWxEZWxldGVTdGF0dXM8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjY4NiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjY4NiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjY4NSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2ODYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI2ODYiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI2ODUiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjY4NCIgbmFtZT0iZmhpcjpDb25kaXRpb25hbERlbGV0ZVN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjY5MSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNjkxIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2ODgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkNvbnRhY3RQb2ludFVzZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNjkwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjkwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjg5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjY5MCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjY5MCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjY4OSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNjg4IiBuYW1lPSJmaGlyOkNvbnRhY3RQb2ludFVzZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjY5NSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNjk1Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2OTIiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkRldmljZU1ldHJpY09wZXJhdGlvbmFsU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI2OTQiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI2OTQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2OTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjk0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNjk0IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNjkzIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI2OTIiIG5hbWU9ImZoaXI6RGV2aWNlTWV0cmljT3BlcmF0aW9uYWxTdGF0dXMiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI2OTkiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjY5OSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNjk2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5OdXRyaXRpb25PcmRlclN0YXR1czwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNjk4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjk4Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNjk3Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjY5OCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjY5OCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjY5NyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNjk2IiBuYW1lPSJmaGlyOk51dHJpdGlvbk9yZGVyU3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNzAzIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI3MDMiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjcwMCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIudXJpPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3MDIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MDIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MDEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzAyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNzAyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNzAxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI3MDAiIG5hbWU9ImZoaXI6dXJpIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNzA3IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI3MDciPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjcwNCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQ29udHJpYnV0b3JUeXBlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3MDYiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MDYiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MDUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzA2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNzA2IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNzA1IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI3MDQiIG5hbWU9ImZoaXI6Q29udHJpYnV0b3JUeXBlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNzExIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI3MTEiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjcwOCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuUmVmZXJlbmNlVmVyc2lvblJ1bGVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3MTAiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MDkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzEwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNzEwIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNzA5IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI3MDgiIG5hbWU9ImZoaXI6UmVmZXJlbmNlVmVyc2lvblJ1bGVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNzE1IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI3MTUiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjcxMiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuVXNlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3MTQiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MTQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzE0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNzE0IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNzEzIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI3MTIiIG5hbWU9ImZoaXI6VXNlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNzE5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI3MTkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjcxNiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuSWRlbnRpdHlBc3N1cmFuY2VMZXZlbDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNzE4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzE4Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzE3Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjcxOCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjcxOCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjcxNyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNzE2IiBuYW1lPSJmaGlyOklkZW50aXR5QXNzdXJhbmNlTGV2ZWwiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI3MjMiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjcyMyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNzIwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5NZWFzdXJlUmVwb3J0U3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3MjIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MjIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MjEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzIyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNzIyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNzIxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI3MjAiIG5hbWU9ImZoaXI6TWVhc3VyZVJlcG9ydFN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjcyNyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNzI3Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3MjQiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkRldmljZU1ldHJpY0NvbG9yPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3MjYiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MjYiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MjUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzI2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNzI2IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNzI1IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI3MjQiIG5hbWU9ImZoaXI6RGV2aWNlTWV0cmljQ29sb3IiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI3MzEiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjczMSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNzI4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5TZWFyY2hFbnRyeU1vZGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjczMCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjczMCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjcyOSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MzAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI3MzAiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI3MjkiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjcyOCIgbmFtZT0iZmhpcjpTZWFyY2hFbnRyeU1vZGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI3MzUiIG5hbWU9IlRvVGltZSIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI3MzUiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9UaW1lKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3MzIiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLnRpbWU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjczNCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjczNCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjczMyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MzQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI3MzQiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI3MzMiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjczMiIgbmFtZT0iZmhpcjp0aW1lIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNzM5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI3MzkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjczNiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQ29uZGl0aW9uYWxSZWFkU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3MzgiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MzgiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3MzciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzM4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNzM4IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNzM3IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI3MzYiIG5hbWU9ImZoaXI6Q29uZGl0aW9uYWxSZWFkU3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNzQzIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI3NDMiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijc0MCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQ29uZGl0aW9uVmVyaWZpY2F0aW9uU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3NDIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI3NDIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3NDEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzQyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNzQyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNzQxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI3NDAiIG5hbWU9ImZoaXI6Q29uZGl0aW9uVmVyaWZpY2F0aW9uU3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNzQ3IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI3NDciPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijc0NCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQWxsZXJneUludG9sZXJhbmNlU2V2ZXJpdHk8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijc0NiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc0NiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc0NSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3NDYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI3NDYiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI3NDUiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9Ijc0NCIgbmFtZT0iZmhpcjpBbGxlcmd5SW50b2xlcmFuY2VTZXZlcml0eSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9Ijc1MSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNzUxIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3NDgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkZpbmFuY2lhbFJlc291cmNlU3RhdHVzQ29kZXM8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijc1MCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc1MCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc0OSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3NTAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI3NTAiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI3NDkiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9Ijc0OCIgbmFtZT0iZmhpcjpGaW5hbmNpYWxSZXNvdXJjZVN0YXR1c0NvZGVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNzU1IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI3NTUiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijc1MiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuT3BlcmF0aW9uS2luZDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNzU0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzU0Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzUzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc1NCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9Ijc1NCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9Ijc1MyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNzUyIiBuYW1lPSJmaGlyOk9wZXJhdGlvbktpbmQiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI3NTkiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9Ijc1OSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNzU2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5PYnNlcnZhdGlvblJlbGF0aW9uc2hpcFR5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijc1OCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc1OCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc1NyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3NTgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI3NTgiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI3NTciIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9Ijc1NiIgbmFtZT0iZmhpcjpPYnNlcnZhdGlvblJlbGF0aW9uc2hpcFR5cGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI3NjMiIG5hbWU9IlRvSW50ZWdlciIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI3NjMiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9JbnRlZ2VyKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3NjAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLnVuc2lnbmVkSW50PC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3NjIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI3NjIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3NjEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzYyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNzYyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNzYxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI3NjAiIG5hbWU9ImZoaXI6dW5zaWduZWRJbnQiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI3NjciIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9Ijc2NyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNzY0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5OYW1lVXNlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3NjYiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI3NjYiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3NjUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzY2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNzY2IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNzY1IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI3NjQiIG5hbWU9ImZoaXI6TmFtZVVzZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9Ijc3MSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNzcxIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3NjgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlN1YnNjcmlwdGlvblN0YXR1czwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNzcwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzcwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzY5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc3MCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9Ijc3MCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9Ijc2OSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNzY4IiBuYW1lPSJmaGlyOlN1YnNjcmlwdGlvblN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9Ijc3NSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNzc1Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3NzIiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkRvY3VtZW50UmVmZXJlbmNlU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3NzQiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI3NzQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3NzMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzc0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNzc0IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNzczIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI3NzIiIG5hbWU9ImZoaXI6RG9jdW1lbnRSZWZlcmVuY2VTdGF0dXMiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI3NzkiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9Ijc3OSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNzc2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5Mb2NhdGlvbk1vZGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijc3OCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc3OCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc3NyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3NzgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI3NzgiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI3NzciIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9Ijc3NiIgbmFtZT0iZmhpcjpMb2NhdGlvbk1vZGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI3ODMiIG5hbWU9IlRvSW50ZWdlciIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI3ODMiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9JbnRlZ2VyKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3ODAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLmludGVnZXI8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijc4MiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc4MiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc4MSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3ODIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI3ODIiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI3ODEiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9Ijc4MCIgbmFtZT0iZmhpcjppbnRlZ2VyIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iNzg3IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI3ODciPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijc4NCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIucmVwb3NpdG9yeVR5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijc4NiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc4NiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc4NSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3ODYiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI3ODYiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI3ODUiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9Ijc4NCIgbmFtZT0iZmhpcjpyZXBvc2l0b3J5VHlwZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9Ijc5MSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNzkxIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3ODgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkxvY2F0aW9uU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3OTAiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI3OTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3ODkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzkwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNzkwIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNzg5IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI3ODgiIG5hbWU9ImZoaXI6TG9jYXRpb25TdGF0dXMiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI3OTUiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9Ijc5NSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNzkyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5GSElSU3Vic3RhbmNlU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3OTQiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI3OTQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3OTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzk0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNzk0IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iNzkzIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI3OTIiIG5hbWU9ImZoaXI6RkhJUlN1YnN0YW5jZVN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9Ijc5OSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iNzk5Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI3OTYiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlVua25vd25Db250ZW50Q29kZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iNzk4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzk4Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzk3Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc5OCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9Ijc5OCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9Ijc5NyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iNzk2IiBuYW1lPSJmaGlyOlVua25vd25Db250ZW50Q29kZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjgwMyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iODAzIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4MDAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLk5vdGVUeXBlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4MDIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MDIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MDEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODAyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iODAyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iODAxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI4MDAiIG5hbWU9ImZoaXI6Tm90ZVR5cGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI4MDciIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjgwNyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iODA0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5UZXN0UmVwb3J0U3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4MDYiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MDYiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MDUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODA2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iODA2IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iODA1IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI4MDQiIG5hbWU9ImZoaXI6VGVzdFJlcG9ydFN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjgxMSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iODExIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4MDgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkhUVFBWZXJiPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4MTAiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MTAiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MDkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODEwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iODEwIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iODA5IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI4MDgiIG5hbWU9ImZoaXI6SFRUUFZlcmIiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI4MTUiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjgxNSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iODEyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5Db2RlU3lzdGVtQ29udGVudE1vZGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjgxNCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjgxNCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjgxMyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MTQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI4MTQiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI4MTMiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjgxMiIgbmFtZT0iZmhpcjpDb2RlU3lzdGVtQ29udGVudE1vZGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI4MTkiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjgxOSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iODE2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5FcGlzb2RlT2ZDYXJlU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4MTgiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MTgiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MTciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODE4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iODE4IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iODE3IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI4MTYiIG5hbWU9ImZoaXI6RXBpc29kZU9mQ2FyZVN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjgyMyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iODIzIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4MjAiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlJlbWl0dGFuY2VPdXRjb21lPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4MjIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MjIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MjEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODIyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iODIyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iODIxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI4MjAiIG5hbWU9ImZoaXI6UmVtaXR0YW5jZU91dGNvbWUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI4MjciIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjgyNyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iODI0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5GSElSRGV2aWNlU3RhdHVzPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4MjYiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MjYiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MjUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODI2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iODI2IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iODI1IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI4MjQiIG5hbWU9ImZoaXI6RkhJUkRldmljZVN0YXR1cyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjgzMSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iODMxIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4MjgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkNvbnRhY3RQb2ludFN5c3RlbTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iODMwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODMwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODI5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjgzMCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjgzMCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjgyOSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iODI4IiBuYW1lPSJmaGlyOkNvbnRhY3RQb2ludFN5c3RlbSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjgzNSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iODM1Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4MzIiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlNsb3RTdGF0dXM8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjgzNCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9IjgzNCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjgzMyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MzQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI4MzQiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI4MzMiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjgzMiIgbmFtZT0iZmhpcjpTbG90U3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iODM5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI4MzkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjgzNiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuUHJvcGVydHlUeXBlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4MzgiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MzgiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4MzciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODM4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iODM4IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iODM3IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI4MzYiIG5hbWU9ImZoaXI6UHJvcGVydHlUeXBlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iODQzIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI4NDMiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijg0MCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIubWFya2Rvd248L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijg0MiI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg0MiI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg0MSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4NDIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI4NDIiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI4NDEiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9Ijg0MCIgbmFtZT0iZmhpcjptYXJrZG93biIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9Ijg0NyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iODQ3Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4NDQiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlR5cGVEZXJpdmF0aW9uUnVsZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iODQ2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODQ2Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODQ1Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg0NiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9Ijg0NiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9Ijg0NSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iODQ0IiBuYW1lPSJmaGlyOlR5cGVEZXJpdmF0aW9uUnVsZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9Ijg1MSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iODUxIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4NDgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLk1lZGljYXRpb25TdGF0ZW1lbnRTdGF0dXM8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijg1MCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg1MCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg0OSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4NTAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI4NTAiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI4NDkiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9Ijg0OCIgbmFtZT0iZmhpcjpNZWRpY2F0aW9uU3RhdGVtZW50U3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iODU1IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI4NTUiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijg1MiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuR3VpZGFuY2VSZXNwb25zZVN0YXR1czwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iODU0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODU0Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODUzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg1NCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9Ijg1NCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9Ijg1MyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iODUyIiBuYW1lPSJmaGlyOkd1aWRhbmNlUmVzcG9uc2VTdGF0dXMiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI4NTkiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9Ijg1OSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iODU2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5RdWFudGl0eUNvbXBhcmF0b3I8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijg1OCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg1OCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg1NyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4NTgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI4NTgiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI4NTciIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9Ijg1NiIgbmFtZT0iZmhpcjpRdWFudGl0eUNvbXBhcmF0b3IiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI4NjMiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9Ijg2MyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iODYwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5SZWxhdGVkQXJ0aWZhY3RUeXBlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4NjIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4NjIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4NjEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODYyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iODYyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iODYxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI4NjAiIG5hbWU9ImZoaXI6UmVsYXRlZEFydGlmYWN0VHlwZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9Ijg2NyIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iODY3Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4NjQiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLm9pZDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iODY2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODY2Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODY1Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg2NiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9Ijg2NiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9Ijg2NSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iODY0IiBuYW1lPSJmaGlyOm9pZCIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9Ijg3MSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iODcxIj4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4NjgiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLk1lYXN1cmVSZXBvcnRUeXBlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4NzAiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4NzAiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4NjkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODcwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iODcwIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iODY5IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI4NjgiIG5hbWU9ImZoaXI6TWVhc3VyZVJlcG9ydFR5cGUiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI4NzUiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9Ijg3NSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iODcyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5BY3Rpb25QcmVjaGVja0JlaGF2aW9yPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4NzQiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4NzQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4NzMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODc0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iODc0IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iODczIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI4NzIiIG5hbWU9ImZoaXI6QWN0aW9uUHJlY2hlY2tCZWhhdmlvciIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9Ijg3OSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iODc5Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4NzYiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlNhbXBsZWREYXRhRGF0YVR5cGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijg3OCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg3OCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg3NyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4NzgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI4NzgiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI4NzciIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9Ijg3NiIgbmFtZT0iZmhpcjpTYW1wbGVkRGF0YURhdGFUeXBlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iODgzIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI4ODMiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijg4MCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuTWVkaWNhdGlvblN0YXRlbWVudFRha2VuPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4ODIiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4ODIiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4ODEiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODgyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iODgyIiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iODgxIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI4ODAiIG5hbWU9ImZoaXI6TWVkaWNhdGlvblN0YXRlbWVudFRha2VuIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iODg3IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI4ODciPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijg4NCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQ29tcGFydG1lbnRUeXBlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4ODYiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4ODYiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4ODUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODg2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iODg2IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iODg1IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI4ODQiIG5hbWU9ImZoaXI6Q29tcGFydG1lbnRUeXBlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iODkxIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI4OTEiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijg4OCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuQ29tcG9zaXRpb25BdHRlc3RhdGlvbk1vZGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijg5MCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg5MCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg4OSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4OTAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI4OTAiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI4ODkiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9Ijg4OCIgbmFtZT0iZmhpcjpDb21wb3NpdGlvbkF0dGVzdGF0aW9uTW9kZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9Ijg5NSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iODk1Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4OTIiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLkRldmljZU1ldHJpY0NhbGlicmF0aW9uU3RhdGU8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cz4pOiYjeGQ7CiAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijg5NCI+DQogICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg5NCI+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijg5MyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4OTQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICA8L2Fubm90YXRpb24+DQogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI4OTQiIHBhdGg9InZhbHVlIiB4c2k6dHlwZT0iUHJvcGVydHkiPg0KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI4OTMiIG5hbWU9InZhbHVlIiB4c2k6dHlwZT0iT3BlcmFuZFJlZiIvPg0KICAgICAgICAgPC9leHByZXNzaW9uPg0KICAgICAgICAgPG9wZXJhbmQgbmFtZT0idmFsdWUiPg0KICAgICAgICAgICAgPG9wZXJhbmRUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9Ijg5MiIgbmFtZT0iZmhpcjpEZXZpY2VNZXRyaWNDYWxpYnJhdGlvblN0YXRlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iODk5IiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI4OTkiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9Ijg5NiI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuR3JvdXBUeXBlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI4OTgiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4OTgiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI4OTciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODk4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iODk4IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iODk3IiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI4OTYiIG5hbWU9ImZoaXI6R3JvdXBUeXBlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iOTAzIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI5MDMiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjkwMCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuVHlwZVJlc3RmdWxJbnRlcmFjdGlvbjwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iOTAyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTAyIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTAxIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjkwMiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjkwMiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjkwMSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iOTAwIiBuYW1lPSJmaGlyOlR5cGVSZXN0ZnVsSW50ZXJhY3Rpb24iIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI5MDciIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjkwNyI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iOTA0Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5Db2RlU3lzdGVtSGllcmFyY2h5TWVhbmluZzwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iOTA2Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTA2Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTA1Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjkwNiI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjkwNiIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjkwNSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iOTA0IiBuYW1lPSJmaGlyOkNvZGVTeXN0ZW1IaWVyYXJjaHlNZWFuaW5nIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+DQogICAgICAgICA8L29wZXJhbmQ+DQogICAgICA8L2RlZj4NCiAgICAgIDxkZWYgbG9jYWxJZD0iOTExIiBuYW1lPSJUb1N0cmluZyIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyIgeHNpOnR5cGU9IkZ1bmN0aW9uRGVmIj4NCiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPg0KICAgICAgICAgICAgPGE6cyByPSI5MTEiPg0KICAgICAgICAgICAgICAgPGE6cz5kZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzIHI9IjkwOCI+DQogICAgICAgICAgICAgICAgICA8YTpzPkZISVIuVmlzaW9uQmFzZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iOTEwIj4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTEwIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTA5Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjkxMCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjkxMCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjkwOSIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iOTA4IiBuYW1lPSJmaGlyOlZpc2lvbkJhc2UiIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4NCiAgICAgICAgIDwvb3BlcmFuZD4NCiAgICAgIDwvZGVmPg0KICAgICAgPGRlZiBsb2NhbElkPSI5MTUiIG5hbWU9IlRvU3RyaW5nIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIiB4c2k6dHlwZT0iRnVuY3Rpb25EZWYiPg0KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+DQogICAgICAgICAgICA8YTpzIHI9IjkxNSI+DQogICAgICAgICAgICAgICA8YTpzPmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iOTEyIj4NCiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUi5CdW5kbGVUeXBlPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnM+KTomI3hkOwogIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI5MTQiPg0KICAgICAgICAgICAgICAgICAgPGE6cyByPSI5MTQiPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI5MTMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz52YWx1ZTwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTE0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgPC9hbm5vdGF0aW9uPg0KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iOTE0IiBwYXRoPSJ2YWx1ZSIgeHNpOnR5cGU9IlByb3BlcnR5Ij4NCiAgICAgICAgICAgIDxzb3VyY2UgbG9jYWxJZD0iOTEzIiBuYW1lPSJ2YWx1ZSIgeHNpOnR5cGU9Ik9wZXJhbmRSZWYiLz4NCiAgICAgICAgIDwvZXhwcmVzc2lvbj4NCiAgICAgICAgIDxvcGVyYW5kIG5hbWU9InZhbHVlIj4NCiAgICAgICAgICAgIDxvcGVyYW5kVHlwZVNwZWNpZmllciBsb2NhbElkPSI5MTIiIG5hbWU9ImZoaXI6QnVuZGxlVHlwZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICAgICA8ZGVmIGxvY2FsSWQ9IjkxOSIgbmFtZT0iVG9TdHJpbmciIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiIHhzaTp0eXBlPSJGdW5jdGlvbkRlZiI+DQogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4NCiAgICAgICAgICAgIDxhOnMgcj0iOTE5Ij4NCiAgICAgICAgICAgICAgIDxhOnM+ZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIDwvYTpzPg0KICAgICAgICAgICAgICAgPGE6cyByPSI5MTYiPg0KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSLlN5c3RlbVZlcnNpb25Qcm9jZXNzaW5nTW9kZTwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICAgICA8YTpzPik6JiN4ZDsKICA8L2E6cz4NCiAgICAgICAgICAgICAgIDxhOnMgcj0iOTE4Ij4NCiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTE4Ij4NCiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTE3Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+dmFsdWU8L2E6cz4NCiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjkxOCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPnZhbHVlPC9hOnM+DQogICAgICAgICAgICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgICAgICAgICAgIDwvYTpzPg0KICAgICAgICAgICAgICAgPC9hOnM+DQogICAgICAgICAgICA8L2E6cz4NCiAgICAgICAgIDwvYW5ub3RhdGlvbj4NCiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjkxOCIgcGF0aD0idmFsdWUiIHhzaTp0eXBlPSJQcm9wZXJ0eSI+DQogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjkxNyIgbmFtZT0idmFsdWUiIHhzaTp0eXBlPSJPcGVyYW5kUmVmIi8+DQogICAgICAgICA8L2V4cHJlc3Npb24+DQogICAgICAgICA8b3BlcmFuZCBuYW1lPSJ2YWx1ZSI+DQogICAgICAgICAgICA8b3BlcmFuZFR5cGVTcGVjaWZpZXIgbG9jYWxJZD0iOTE2IiBuYW1lPSJmaGlyOlN5c3RlbVZlcnNpb25Qcm9jZXNzaW5nTW9kZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPg0KICAgICAgICAgPC9vcGVyYW5kPg0KICAgICAgPC9kZWY+DQogICA8L3N0YXRlbWVudHM+DQo8L2xpYnJhcnk+DQo=" + } + ] +} diff --git a/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library/library-fhir-model-definition.json b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library/library-fhir-model-definition.json new file mode 100644 index 00000000000..29f69b1b86a --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/library/library-fhir-model-definition.json @@ -0,0 +1,37 @@ +{ + "resourceType": "Library", + "id": "library-fhir-model-definition", + "text": { + "status": "generated" + }, + "identifier": [ + { + "use": "official", + "value": "FHIR" + } + ], + "version": "3.0.1", + "title": "FHIR Model Definition", + "status": "draft", + "type": { + "coding": [ + { + "code": "model-definition" + } + ] + }, + "date": "2016-07-08", + "copyright": "The HEDIS measure specifications were developed by and are owned by NCQA. The HEDIS measure specifications are not clinical guidelines and do not establish a standard of medical care. NCQA makes no representations, warranties, or endorsement about the quality of any organization or physician that uses or reports performance measures and NCQA has no liability to anyone who relies on such measure specifications. These materials may not be modified by anyone other than NCQA. Anyone desiring to use or reproduce the materials without modification for a non-commercial purpose may do so without obtaining any approval from NCQA. **Any commercial use (including but not limited to vendors using the measure specifications with a product or service, including calculation of measure results) must be approved by NCQA and are subject to a license at the discretion of NCQA**. © 2019 NCQA, all rights reserved.", + "description": "Model definition for the FHIR Model", + "topic": [ + { + "text": "FHIR" + } + ], + "content": [ + { + "contentType": "application/xml", + "url": "http://cqlrepository.org/fhirmodel-modelinfo.xml" + } + ] +} diff --git a/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/measure-asf.json b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/measure-asf.json new file mode 100644 index 00000000000..b03b1a8f23f --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/measure-asf.json @@ -0,0 +1,118 @@ +{ + "resourceType": "Measure", + "id": "measure-asf", + "status": "active", + "experimental": true, + "library": [ + { + "reference": "Library/library-asf-logic" + } + ], + "scoring": { + "coding": [ + { + "code": "proportion" + } + ] + }, + "group": [ + { + "identifier": { + "value": "ASF-cohort" + }, + "population": [ + { + "identifier": { + "value": "initial-population" + }, + "code": { + "coding": [ + { + "code": "initial-population" + } + ] + }, + "criteria": "Initial Population" + }, + { + "identifier": { + "value": "numerator 1" + }, + "code": { + "coding": [ + { + "code": "numerator" + } + ] + }, + "criteria": "Numerator 1" + }, + { + "identifier": { + "value": "denominator 1" + }, + "code": { + "coding": [ + { + "code": "denominator" + } + ] + }, + "criteria": "Denominator 1" + }, + { + "identifier": { + "value": "numerator 2" + }, + "code": { + "coding": [ + { + "code": "numerator" + } + ] + }, + "criteria": "Numerator 2" + }, + { + "identifier": { + "value": "denominator 2" + }, + "code": { + "coding": [ + { + "code": "denominator" + } + ] + }, + "criteria": "Denominator 2" + } + ], + "stratifier": [ + { + "identifier": { + "value": "stratifier 1" + }, + "criteria": "Stratifier 1" + }, + { + "identifier": { + "value": "stratifier 2" + }, + "criteria": "Stratifier 2" + }, + { + "identifier": { + "value": "stratifier 3" + }, + "criteria": "Stratifier 3" + }, + { + "identifier": { + "value": "stratifier 4" + }, + "criteria": "Stratifier 4" + } + ] + } + ] + } diff --git a/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/test-patient-6529-data.json b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/test-patient-6529-data.json new file mode 100644 index 00000000000..aa96a476d49 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/test-patient-6529-data.json @@ -0,0 +1,1078 @@ +{ + "resourceType": "Bundle", + "type": "transaction", + "entry": [ + { + "resource": { + "resourceType": "Practitioner", + "id": "Practitioner-2526", + "identifier": [ + { + "use": "official", + "type": { + "coding": [ + { + "system": "http://hl7.org/fhir/identifier-type", + "code": "SB", + "display": "Social Beneficiary Identifier" + } + ], + "text": "US Social Security Number" + }, + "system": "http://hl7.org/fhir/sid/us-ssn", + "value": "000002526" + }, + { + "use": "official", + "type": { + "coding": [ + { + "system": "http://hl7.org/fhir/v2/0203", + "code": "PRN", + "display": "Provider number" + } + ], + "text": "US National Provider Identifier" + }, + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "999992526" + } + ], + "name": [ + { + "family": "Wilkins", + "given": [ + "James", + "Woodward" + ], + "suffix": [ + "MD" + ] + } + ], + "telecom": [ + { + "system": "phone", + "value": "734-555-6322", + "use": "work" + }, + { + "system": "phone", + "value": "734-555-7293", + "use": "mobile" + } + ], + "address": [ + { + "use": "work", + "type": "postal", + "line": [ + "322 W Atlantic Drive" + ], + "city": "Zeeland", + "district": "Ottawa County", + "state": "MI", + "postalCode": "49464" + } + ], + "gender": "male", + "birthDate": "1988-11-18" + }, + "request": { + "method": "PUT", + "url": "Practitioner/Practitioner-2526" + } + }, + { + "resource": { + "resourceType": "Patient", + "id": "Patient-6529", + "active": true, + "name": [ + { + "family": "Shea", + "given": [ + "Alan", + "Everett" + ], + "suffix": [ + "III" + ] + } + ], + "telecom": [ + { + "system": "phone", + "value": "313-555-0522", + "use": "home" + }, + { + "system": "phone", + "value": "313-555-1474", + "use": "mobile" + } + ], + "gender": "male", + "birthDate": "1962-06-05", + "address": [ + { + "use": "home", + "type": "postal", + "line": [ + "627 S Elm Place" + ], + "city": "Detroit", + "district": "Wayne County", + "state": "MI", + "postalCode": "48238" + } + ] + }, + "request": { + "method": "PUT", + "url": "Patient/Patient-6529" + } + }, + { + "resource": { + "resourceType": "Organization", + "id": "Organization-1105", + "identifier": [ + { + "use": "official", + "system": "http://www.hl7.org/oid/", + "value": "1.2.3.4.1105" + }, + { + "use": "official", + "type": { + "coding": [ + { + "system": "http://hl7.org/fhir/v2/0203", + "code": "TAX", + "display": "Tax ID number" + } + ], + "text": "US Employer Identification Number" + }, + "system": "http://hl7.org/fhir/sid/us-tax", + "value": "000001105" + } + ], + "active": true, + "type": [ + { + "text": "General Practice" + } + ], + "name": "Bayside Medical Group", + "telecom": [ + { + "system": "phone", + "value": "810-555-1514", + "use": "work" + } + ], + "address": [ + { + "line": [ + "616 Peach Street" + ], + "city": "Flint", + "district": "Genesee County", + "state": "MI", + "postalCode": "48503" + } + ] + }, + "request": { + "method": "PUT", + "url": "Organization/Organization-1105" + } + }, + { + "resource": { + "resourceType": "Location", + "id": "Location-1105", + "identifier": [ + { + "use": "official", + "system": "http://www.hl7.org/oid/", + "value": "1.2.3.4.1105" + } + ], + "status": "active", + "name": "Bayside Medical Group", + "mode": "instance", + "telecom": [ + { + "system": "phone", + "value": "(616) 555-2806", + "use": "work" + } + ], + "address": { + "use": "work", + "type": "physical", + "line": [ + "616 Peach Street" + ], + "city": "Flint", + "district": "Genesee County", + "state": "MI", + "postalCode": "48503" + }, + "physicalType": { + "coding": [ + { + "system": "http://hl7.org/fhir/location-physical-type", + "code": "bu", + "display": "Building" + } + ] + }, + "position": { + "longitude": -85.63506928883693, + "latitude": 42.98123440264812 + }, + "managingOrganization": { + "reference": "Organization/Organization-1105", + "display": "Bayside Medical Group" + } + }, + "request": { + "method": "PUT", + "url": "Location/Location-1105" + } + }, + { + "resource": { + "resourceType": "Encounter", + "id": "Encounter-1485", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-encounter" + ] + }, + "status": "finished", + "class": { + "system": "http://hl7.org/fhir/encounter-class", + "code": "outpatient", + "display": "Outpatient" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185349003", + "display": "Wellness Visit" + } + ] + } + ], + "subject": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "participant": [ + { + "period": { + "start": "2003-12-19T00:00:00-05:00", + "end": "2003-12-19T00:00:00-05:00" + }, + "individual": { + "reference": "Practitioner/Practitioner-2526", + "display": "James Woodward Wilkins MD" + } + } + ], + "period": { + "start": "2003-12-19T00:00:00-05:00", + "end": "2003-12-19T00:00:00-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/Location-1105", + "display": "Bayside Medical Group" + } + } + ], + "serviceProvider": { + "reference": "Organization/Organization-1105", + "display": "Bayside Medical Group" + } + }, + "request": { + "method": "PUT", + "url": "Encounter/Encounter-1485" + } + }, + { + "resource": { + "resourceType": "Immunization", + "id": "Immunization-304616", + "status": "completed", + "notGiven": false, + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ] + }, + "patient": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "date": "2003-12-19T00:00:00-05:00", + "primarySource": true, + "location": { + "reference": "Location/Location-1105", + "display": "Bayside Medical Group" + }, + "practitioner": [ + { + "actor": { + "reference": "Practitioner/Practitioner-2526", + "display": "James Woodward Wilkins MD" + } + } + ] + }, + "request": { + "method": "PUT", + "url": "Immunization/Immunization-304616" + } + }, + { + "resource": { + "resourceType": "Procedure", + "id": "Procedure-327162", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "713107002", + "display": "Screening for alcohol abuse (procedure)" + } + ] + }, + "subject": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485", + "display": "Wellness Visit" + }, + "performedPeriod": { + "start": "2003-12-19T00:00:00-05:00", + "end": "2003-12-19T00:00:00-05:00" + }, + "performer": [ + { + "actor": { + "reference": "Practitioner/Practitioner-2526", + "display": "James Woodward Wilkins MD" + } + } + ], + "location": { + "reference": "Location/Location-1105", + "display": "Bayside Medical Group" + } + }, + "request": { + "method": "PUT", + "url": "Procedure/Procedure-327162" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327163", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-observation" + ] + }, + "status": "final", + "code": { + "coding": [ + { + "system": "http://cqframework.info/codesystem/placeholder", + "code": "00005", + "display": "Five or more drinks per day" + } + ] + }, + "subject": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 8.0, + "unit": "score" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327163" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327164", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-observation" + ] + }, + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "75626-2", + "display": "AUDIT-C Total Score (in points)" + } + ] + }, + "subject": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 7.0, + "unit": "score" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327164" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327165", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-observation" + ] + }, + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8480-6", + "display": "Systolic blood pressure" + } + ] + }, + "subject": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 137.7206413335362, + "unit": "mmHg" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327165" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327166", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-observation" + ] + }, + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8462-4", + "display": "Diastolic blood pressure" + } + ] + }, + "subject": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 77.17077243482738, + "unit": "mmHg" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327166" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327167", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-observation" + ] + }, + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8302-2", + "display": "Body Height" + } + ] + }, + "subject": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 176.8, + "unit": "cm" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327167" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327168", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-observation" + ] + }, + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "29463-7", + "display": "Body Weight" + } + ] + }, + "subject": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 79.2350826835658, + "unit": "kg" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327168" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327169", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-observation" + ] + }, + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "39156-5", + "display": "Body Mass Index" + } + ] + }, + "subject": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 25.348542555040144, + "unit": "kg/m2" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327169" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327172", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-observation" + ] + }, + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "55284-4", + "display": "Blood Pressure" + } + ] + }, + "subject": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "valueQuantity": { + "value": 77.17077243482738, + "unit": "mmHg" + }, + "component": [ + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8480-6", + "display": "Systolic Blood Pressure" + } + ] + } + }, + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8462-4", + "display": "Diastolic Blood Pressure" + } + ] + } + } + ] + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327172" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327174", + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8302-2", + "display": "Height" + } + ] + }, + "subject": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 176.8, + "unit": "cm" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327174" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327175", + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "29463-7", + "display": "Weight" + } + ] + }, + "subject": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 79.2350826835658, + "unit": "kg" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327175" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327176", + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "39156-5", + "display": "BMI" + } + ] + }, + "subject": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 25.348542555040144, + "unit": "kg/m2" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327176" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327177", + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8310-5", + "display": "Temperature" + } + ] + }, + "subject": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 37.0, + "unit": "C" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327177" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327178", + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8459-0", + "display": "Systolic Blood Pressure" + } + ] + }, + "subject": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 137.7206413335362, + "unit": "mmHg" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327178" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327179", + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8453-3", + "display": "Diastolic Blood Pressure" + } + ] + }, + "subject": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 77.17077243482738, + "unit": "mmHg" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327179" + } + }, + { + "resource": { + "resourceType": "DiagnosticReport", + "id": "DiagnosticReport-327173", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-diagnosticreport" + ] + }, + "status": "final", + "category": { + "coding": [ + { + "system": "http://hl7.org/fhir/ValueSet/diagnostic-service-sections", + "code": "LAB", + "display": "Laboratory" + } + ] + }, + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8716-3", + "display": "Vital Signs Panel" + } + ] + }, + "subject": { + "reference": "Patient/Patient-6529", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485", + "display": "Wellness Visit" + }, + "effectivePeriod": { + "start": "2003-12-19T00:00:00-05:00", + "end": "2003-12-19T00:00:00-05:00" + }, + "issued": "2003-12-19T00:00:00.000-05:00", + "result": [ + { + "reference": "Observation/Observation-327174", + "display": "Height" + }, + { + "reference": "Observation/Observation-327175", + "display": "Weight" + }, + { + "reference": "Observation/Observation-327176", + "display": "BMI" + }, + { + "reference": "Observation/Observation-327177", + "display": "Temperature" + }, + { + "reference": "Observation/Observation-327178", + "display": "Systolic Blood Pressure" + }, + { + "reference": "Observation/Observation-327179", + "display": "Diastolic Blood Pressure" + } + ] + }, + "request": { + "method": "PUT", + "url": "DiagnosticReport/DiagnosticReport-327173" + } + } + ] +} diff --git a/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/test-patient-9999-x-data.json b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/test-patient-9999-x-data.json new file mode 100644 index 00000000000..56e07ffb946 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/resources/dstu3/hedis-ig/test-patient-9999-x-data.json @@ -0,0 +1,1078 @@ +{ + "resourceType": "Bundle", + "type": "transaction", + "entry": [ + { + "resource": { + "resourceType": "Practitioner", + "id": "Practitioner-2526-x", + "identifier": [ + { + "use": "official", + "type": { + "coding": [ + { + "system": "http://hl7.org/fhir/identifier-type", + "code": "SB", + "display": "Social Beneficiary Identifier" + } + ], + "text": "US Social Security Number" + }, + "system": "http://hl7.org/fhir/sid/us-ssn", + "value": "000002526" + }, + { + "use": "official", + "type": { + "coding": [ + { + "system": "http://hl7.org/fhir/v2/0203", + "code": "PRN", + "display": "Provider number" + } + ], + "text": "US National Provider Identifier" + }, + "system": "http://hl7.org/fhir/sid/us-npi", + "value": "999992526" + } + ], + "name": [ + { + "family": "Wilkins", + "given": [ + "James", + "Woodward" + ], + "suffix": [ + "MD" + ] + } + ], + "telecom": [ + { + "system": "phone", + "value": "734-555-6322", + "use": "work" + }, + { + "system": "phone", + "value": "734-555-7293", + "use": "mobile" + } + ], + "address": [ + { + "use": "work", + "type": "postal", + "line": [ + "322 W Atlantic Drive" + ], + "city": "Zeeland", + "district": "Ottawa County", + "state": "MI", + "postalCode": "49464" + } + ], + "gender": "male", + "birthDate": "1988-11-18" + }, + "request": { + "method": "PUT", + "url": "Practitioner/Practitioner-2526-x" + } + }, + { + "resource": { + "resourceType": "Patient", + "id": "Patient-9999-x", + "active": true, + "name": [ + { + "family": "Shea", + "given": [ + "Alan", + "Everett" + ], + "suffix": [ + "III" + ] + } + ], + "telecom": [ + { + "system": "phone", + "value": "313-555-0522", + "use": "home" + }, + { + "system": "phone", + "value": "313-555-1474", + "use": "mobile" + } + ], + "gender": "male", + "birthDate": "1962-06-05", + "address": [ + { + "use": "home", + "type": "postal", + "line": [ + "627 S Elm Place" + ], + "city": "Detroit", + "district": "Wayne County", + "state": "MI", + "postalCode": "48238" + } + ] + }, + "request": { + "method": "PUT", + "url": "Patient/Patient-9999-x" + } + }, + { + "resource": { + "resourceType": "Organization", + "id": "Organization-1105-x", + "identifier": [ + { + "use": "official", + "system": "http://www.hl7.org/oid/", + "value": "1.2.3.4.1105" + }, + { + "use": "official", + "type": { + "coding": [ + { + "system": "http://hl7.org/fhir/v2/0203", + "code": "TAX", + "display": "Tax ID number" + } + ], + "text": "US Employer Identification Number" + }, + "system": "http://hl7.org/fhir/sid/us-tax", + "value": "000001105" + } + ], + "active": true, + "type": [ + { + "text": "General Practice" + } + ], + "name": "Bayside Medical Group", + "telecom": [ + { + "system": "phone", + "value": "810-555-1514", + "use": "work" + } + ], + "address": [ + { + "line": [ + "616 Peach Street" + ], + "city": "Flint", + "district": "Genesee County", + "state": "MI", + "postalCode": "48503" + } + ] + }, + "request": { + "method": "PUT", + "url": "Organization/Organization-1105-x" + } + }, + { + "resource": { + "resourceType": "Location", + "id": "Location-1105-x", + "identifier": [ + { + "use": "official", + "system": "http://www.hl7.org/oid/", + "value": "1.2.3.4.1105" + } + ], + "status": "active", + "name": "Bayside Medical Group", + "mode": "instance", + "telecom": [ + { + "system": "phone", + "value": "(616) 555-2806", + "use": "work" + } + ], + "address": { + "use": "work", + "type": "physical", + "line": [ + "616 Peach Street" + ], + "city": "Flint", + "district": "Genesee County", + "state": "MI", + "postalCode": "48503" + }, + "physicalType": { + "coding": [ + { + "system": "http://hl7.org/fhir/location-physical-type", + "code": "bu", + "display": "Building" + } + ] + }, + "position": { + "longitude": -85.63506928883693, + "latitude": 42.98123440264812 + }, + "managingOrganization": { + "reference": "Organization/Organization-1105-x", + "display": "Bayside Medical Group" + } + }, + "request": { + "method": "PUT", + "url": "Location/Location-1105-x" + } + }, + { + "resource": { + "resourceType": "Encounter", + "id": "Encounter-1485-x", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-encounter" + ] + }, + "status": "finished", + "class": { + "system": "http://hl7.org/fhir/encounter-class", + "code": "outpatient", + "display": "Outpatient" + }, + "type": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "185349003", + "display": "Wellness Visit" + } + ] + } + ], + "subject": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "participant": [ + { + "period": { + "start": "2003-12-19T00:00:00-05:00", + "end": "2003-12-19T00:00:00-05:00" + }, + "individual": { + "reference": "Practitioner/Practitioner-2526-x", + "display": "James Woodward Wilkins MD" + } + } + ], + "period": { + "start": "2003-12-19T00:00:00-05:00", + "end": "2003-12-19T00:00:00-05:00" + }, + "location": [ + { + "location": { + "reference": "Location/Location-1105-x", + "display": "Bayside Medical Group" + } + } + ], + "serviceProvider": { + "reference": "Organization/Organization-1105-x", + "display": "Bayside Medical Group" + } + }, + "request": { + "method": "PUT", + "url": "Encounter/Encounter-1485-x" + } + }, + { + "resource": { + "resourceType": "Immunization", + "id": "Immunization-304616-x", + "status": "completed", + "notGiven": false, + "vaccineCode": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/cvx", + "code": "140", + "display": "Influenza, seasonal, injectable, preservative free" + } + ] + }, + "patient": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "date": "2003-12-19T00:00:00-05:00", + "primarySource": true, + "location": { + "reference": "Location/Location-1105-x", + "display": "Bayside Medical Group" + }, + "practitioner": [ + { + "actor": { + "reference": "Practitioner/Practitioner-2526-x", + "display": "James Woodward Wilkins MD" + } + } + ] + }, + "request": { + "method": "PUT", + "url": "Immunization/Immunization-304616-x" + } + }, + { + "resource": { + "resourceType": "Procedure", + "id": "Procedure-327162-x", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-procedure" + ] + }, + "status": "completed", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "713107002", + "display": "Screening for alcohol abuse (procedure)" + } + ] + }, + "subject": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485-x", + "display": "Wellness Visit" + }, + "performedPeriod": { + "start": "2003-12-19T00:00:00-05:00", + "end": "2003-12-19T00:00:00-05:00" + }, + "performer": [ + { + "actor": { + "reference": "Practitioner/Practitioner-2526-x", + "display": "James Woodward Wilkins MD" + } + } + ], + "location": { + "reference": "Location/Location-1105-x", + "display": "Bayside Medical Group" + } + }, + "request": { + "method": "PUT", + "url": "Procedure/Procedure-327162-x" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327163-x", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-observation" + ] + }, + "status": "final", + "code": { + "coding": [ + { + "system": "http://cqframework.info/codesystem/placeholder", + "code": "00005", + "display": "Five or more drinks per day" + } + ] + }, + "subject": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485-x", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526-x", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 8.0, + "unit": "score" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327163-x" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327164-x", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-observation" + ] + }, + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "75626-2", + "display": "AUDIT-C Total Score (in points)" + } + ] + }, + "subject": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485-x", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526-x", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 7.0, + "unit": "score" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327164-x" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327165-x", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-observation" + ] + }, + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8480-6", + "display": "Systolic blood pressure" + } + ] + }, + "subject": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485-x", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526-x", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 137.7206413335362, + "unit": "mmHg" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327165-x" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327166-x", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-observation" + ] + }, + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8462-4", + "display": "Diastolic blood pressure" + } + ] + }, + "subject": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485-x", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526-x", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 77.17077243482738, + "unit": "mmHg" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327166-x" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327167-x", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-observation" + ] + }, + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8302-2", + "display": "Body Height" + } + ] + }, + "subject": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485-x", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526-x", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 176.8, + "unit": "cm" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327167-x" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327168-x", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-observation" + ] + }, + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "29463-7", + "display": "Body Weight" + } + ] + }, + "subject": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485-x", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526-x", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 79.2350826835658, + "unit": "kg" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327168-x" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327169-x", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-observation" + ] + }, + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "39156-5", + "display": "Body Mass Index" + } + ] + }, + "subject": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485-x", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526-x", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 25.348542555040144, + "unit": "kg/m2" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327169-x" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327172-x", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-observation" + ] + }, + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "55284-4", + "display": "Blood Pressure" + } + ] + }, + "subject": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485-x", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "valueQuantity": { + "value": 77.17077243482738, + "unit": "mmHg" + }, + "component": [ + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8480-6", + "display": "Systolic Blood Pressure" + } + ] + } + }, + { + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8462-4", + "display": "Diastolic Blood Pressure" + } + ] + } + } + ] + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327172-x" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327174-x", + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8302-2", + "display": "Height" + } + ] + }, + "subject": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485-x", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526-x", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 176.8, + "unit": "cm" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327174-x" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327175-x", + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "29463-7", + "display": "Weight" + } + ] + }, + "subject": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485-x", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526-x", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 79.2350826835658, + "unit": "kg" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327175-x" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327176-x", + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "39156-5", + "display": "BMI" + } + ] + }, + "subject": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485-x", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526-x", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 25.348542555040144, + "unit": "kg/m2" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327176-x" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327177-x", + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8310-5", + "display": "Temperature" + } + ] + }, + "subject": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485-x", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526-x", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 37.0, + "unit": "C" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327177-x" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327178-x", + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8459-0", + "display": "Systolic Blood Pressure" + } + ] + }, + "subject": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485-x", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526-x", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 137.7206413335362, + "unit": "mmHg" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327178-x" + } + }, + { + "resource": { + "resourceType": "Observation", + "id": "Observation-327179-x", + "status": "final", + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8453-3", + "display": "Diastolic Blood Pressure" + } + ] + }, + "subject": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485-x", + "display": "Wellness Visit" + }, + "effectiveDateTime": "2003-12-19T00:00:00-05:00", + "performer": [ + { + "reference": "Practitioner/Practitioner-2526-x", + "display": "James Woodward Wilkins MD" + } + ], + "valueQuantity": { + "value": 77.17077243482738, + "unit": "mmHg" + } + }, + "request": { + "method": "PUT", + "url": "Observation/Observation-327179-x" + } + }, + { + "resource": { + "resourceType": "DiagnosticReport", + "id": "DiagnosticReport-327173-x", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-diagnosticreport" + ] + }, + "status": "final", + "category": { + "coding": [ + { + "system": "http://hl7.org/fhir/ValueSet/diagnostic-service-sections", + "code": "LAB", + "display": "Laboratory" + } + ] + }, + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8716-3", + "display": "Vital Signs Panel" + } + ] + }, + "subject": { + "reference": "Patient/Patient-9999-x", + "display": "Alan Everett Shea III" + }, + "context": { + "reference": "Encounter/Encounter-1485-x", + "display": "Wellness Visit" + }, + "effectivePeriod": { + "start": "2003-12-19T00:00:00-05:00", + "end": "2003-12-19T00:00:00-05:00" + }, + "issued": "2003-12-19T00:00:00.000-05:00", + "result": [ + { + "reference": "Observation/Observation-327174-x", + "display": "Height" + }, + { + "reference": "Observation/Observation-327175-x", + "display": "Weight" + }, + { + "reference": "Observation/Observation-327176-x", + "display": "BMI" + }, + { + "reference": "Observation/Observation-327177-x", + "display": "Temperature" + }, + { + "reference": "Observation/Observation-327178-x", + "display": "Systolic Blood Pressure" + }, + { + "reference": "Observation/Observation-327179-x", + "display": "Diastolic Blood Pressure" + } + ] + }, + "request": { + "method": "PUT", + "url": "DiagnosticReport/DiagnosticReport-327173-x" + } + } + ] +} diff --git a/hapi-fhir-jpaserver-cql/src/test/resources/org/hl7/fhir/ASF_FHIR-1.0.0.cql b/hapi-fhir-jpaserver-cql/src/test/resources/org/hl7/fhir/ASF_FHIR-1.0.0.cql new file mode 100644 index 00000000000..eb5639e0f92 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/resources/org/hl7/fhir/ASF_FHIR-1.0.0.cql @@ -0,0 +1,235 @@ +library ASF_FHIR version '1.0.0' + +/* +Unhealthy Alcohol Use Screening and Follow-up (ASF) +*/ + +using FHIR version '4.0.0' + +include FHIRHelpers version '4.0.0' called FHIRHelpers + +/* +Measure Description +The percentage of members 18 years of age and older who were screened for +unhealthy alcohol use using a standardized tool and, if screened +positive, received appropriate follow-up care. Two rates are reported. +1. Unhealthy Alcohol Use Screening. The percentage of members who had a +systematic screening for unhealthy alcohol use. +2. Counseling or Other Follow-up. The percentage of members who screened +positive for unhealthy alcohol use and received brief counseling or +other follow-up care within 2 months of a positive screening. +*/ + +codesystem "LOINC": 'http://loinc.org' +codesystem "CQFramework": 'http://cqframework.info/codesystem/placeholder' + +// Update + +valueset "Alcohol Counseling and Treatment": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1437' +valueset "Alcohol Screening": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1337' +valueset "Alcohol use disorder": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1339' +valueset "Dementia": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1074' + +code "Alcoholic drinks per drinking day - Reported": '11287-0' from "LOINC" +code "AUDIT Total Score (in points)": '75624-7' from "LOINC" +code "AUDIT-C Total Score (in points)": '75626-2' from "LOINC" + +/* +This library has an explicit parameter which is the product line. +Recognized normal arguments are {'commercial', 'medicaid', 'medicare'}. +If one of these normal arguments is given, the patient will only be +considered to be in the Initial Population if they have an appropriate +continuous enrollment in that kind of medical plan. +If instead a null argument is given, their enrollment status will have no +effect on whether they are considered to be in the Initial Population. +If instead some other argument is given (an unrecognized plan type), +the patient will unconditionally NOT be in the Initial Population. +*/ + +parameter "Product Line" String + +/* +This library has an explicit parameter which is the measurement year. +While the actual parameter's type accepts all intervals, this library +expects it will only be given arguments corresponding exactly to one whole +calendar year, and it will not behave properly otherwise; 2017 for example: +Interval[DateTime(2017,1,1,0,0,0,0), DateTime(2018,1,1,0,0,0,0)) +*/ + +parameter "Measurement Period" Interval + +/* +This library evaluates with respect to exactly 1 candidate patient at a time, +that patient being given by the special context parameter Patient. +*/ + +context Patient + +define "Initial Population": +AgeInYearsAt(start of "Measurement Period") >= 18 + +/* +Exclusions + +define "Denominator Exclusion": +exists ( +[Condition: "Alcohol use disorder"] AlcoholUse +where AlcoholUse.assertedDate during day of Interval[start of "Measurement Period" - 1 year, end of "Measurement Period"] +) +or exists ( +[Condition: "Dementia"] D +where D.assertedDate during day of Interval[start of "Measurement Period", end of "Measurement Period" - 60 days] +) +*/ + +/* +Denominators and Numerators +*/ + +// Unhealthy Alcohol Use Screening + +define "Denominator 1": +// "Initial Population" +true + +// Unhealthy Alcohol Use Screening + +define "Numerator 1": +// "Initial Population" +exists ( "AUDIT-C Assessment" ) +or exists ( "AUDIT Assessment" ) +or ( +"Patient is Male" +and exists ( "Five or more drinks per day Assessment" ) +) +or ( +"Patient is Female" +and ( +exists ( "Four or more drinks per day Assessment" ) +or exists ( "Five or more drinks per day Assessment" ) +) +) +or ( +"Patient is 65 or Over" +and ( +exists ( "Four or more drinks per day Assessment" ) +or exists ( "Five or more drinks per day Assessment" ) +) +) +// Note: The spec doesn't include the over 65 test here but does in dependent N/D 2. + +define "AUDIT-C Assessment": +[Observation: "AUDIT-C Total Score (in points)"] A +where A.status in { 'final', 'amended', 'corrected' } +and A.effective in day of "Measurement Period" +and A.value is not null + +define "AUDIT Assessment": +[Observation: "AUDIT Total Score (in points)"] A +where A.status in { 'final', 'amended', 'corrected' } +and A.effective in day of "Measurement Period" +and A.value is not null + +define "Patient is Male": +Patient.gender = 'male' + +define "Five or more drinks per day Assessment": +[Observation: "Alcoholic drinks per drinking day - Reported"] A +where A.status in { 'final', 'amended', 'corrected' } +and A.effective in day of "Measurement Period" +and A.value >= 5 '{drinks}/d' + +define "Patient is Female": +Patient.gender = 'female' + +define "Patient is 65 or Over": +AgeInYearsAt(start of "Measurement Period")>= 65 + +define "Four or more drinks per day Assessment": +[Observation: "Alcoholic drinks per drinking day - Reported"] A +where A.status in { 'final', 'amended', 'corrected' } +and A.effective in day of "Measurement Period" +and A.value >= 4 '{drinks}/d' + +// Counseling or Other Follow-Up on Positive Screen + +/* +Initial Population +Product lines -- Commercial, Medicaid, Medicare (report each product line separately). +*/ + +define "Denominator 2": +// "Initial Population" +exists "Positive Assessment for Unhealthy Alcohol Use" + +// Counseling or Other Follow-Up on Positive Screen + +define "Numerator 2": +// "Initial Population" +exists ( +"Initial Positive Assessment for Unhealthy Alcohol Use" A +with "Followup After Positive Screen" F +such that +if F is Observation then F.effective 2 months or less on or after day of A.effective +else F.performed."end" 2 months or less on or after day of A.effective +) + +define "Positive Assessment for Unhealthy Alcohol Use": +( +"AUDIT Assessment" A +where A.value >= 8 +) +union ( +"AUDIT-C Assessment" A +where ("Patient is Male" and A.value >= 4) +or ("Patient is Female" and A.value >= 3) +) +union ( +"Five or more drinks per day Assessment" A +where "Patient is Male" +and A.value >= 1 +) +union ( +"Four or more drinks per day Assessment" A +where ("Patient is Female" or "Patient is 65 or Over") +and A.value >= 1 +) + +define "Followup After Positive Screen": +( +[Procedure: "Alcohol Counseling and Treatment"] Proc +where Proc.status = 'completed' +) +union ( +[Observation: "Alcohol Counseling and Treatment"] Obs +where Obs.status in { 'final', 'amended', 'corrected' } +) +union ( +[Procedure: "Alcohol Screening"] Proc +where Proc.status = 'completed' +) +union ( +[Observation: "Alcohol Screening"] Obs +where Obs.status in { 'final', 'amended', 'corrected' } +) + +define "Initial Positive Assessment for Unhealthy Alcohol Use": +{ +First( +"Positive Assessment for Unhealthy Alcohol Use" A +sort by effective.value +) +} + +/* +Stratifiers +*/ + +define "Stratifier 1": +AgeInYearsAt(start of "Measurement Period")in Interval[18, 44] + +define "Stratifier 2": +AgeInYearsAt(start of "Measurement Period")in Interval[45, 64] + +define "Stratifier 3": +AgeInYearsAt(start of "Measurement Period")>= 65 diff --git a/hapi-fhir-jpaserver-cql/src/test/resources/r4/hedis-ig/library-asf-logic.json b/hapi-fhir-jpaserver-cql/src/test/resources/r4/hedis-ig/library-asf-logic.json new file mode 100644 index 00000000000..8b0b183d592 --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/resources/r4/hedis-ig/library-asf-logic.json @@ -0,0 +1,128 @@ +{ + "resourceType": "Library", + "id": "library-asf-logic", + "text": { + "status": "generated", + "div": "
\n \n \n
Id: asf-fhir
Type:
system: http://hl7.org/fhir/codesystem-library-type.html
code: logic-library
Version: 1.0.0
Status: active
Related:

type: depends-on

Resource:
reference: Library/fhirhelpers

Data Requirements:

type: Condition

code filter:
path: code
valueset: http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1339

type: Condition

code filter:
path: code
valueset: http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1074

type: Observation

code filter:
path: code

type: Observation

code filter:
path: code

type: Observation

code filter:
path: code

type: Observation

code filter:
path: code

type: Procedure

code filter:
path: code
valueset: http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1437

type: Observation

code filter:
path: code
valueset: http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1437

type: Procedure

code filter:
path: code
valueset: http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1337

type: Observation

code filter:
path: code
valueset: http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1337

Content: type: text/cql
library ASF_FHIR version '1.0.0'\n\n/*\nUnhealthy Alcohol Use Screening and Follow-up (ASF)\n*/\n\nusing FHIR version '4.0.0'\n\ninclude FHIRHelpers version '4.0.0' called FHIRHelpers\n\n/*\nMeasure Description\nThe percentage of members 18 years of age and older who were screened for\nunhealthy alcohol use using a standardized tool and, if screened\npositive, received appropriate follow-up care. Two rates are reported.\n1. Unhealthy Alcohol Use Screening. The percentage of members who had a\nsystematic screening for unhealthy alcohol use.\n2. Counseling or Other Follow-up. The percentage of members who screened\npositive for unhealthy alcohol use and received brief counseling or\nother follow-up care within 2 months of a positive screening.\n*/\n\ncodesystem \"LOINC\": 'http://loinc.org'\ncodesystem \"CQFramework\": 'http://cqframework.info/codesystem/placeholder'\n\n// Update\n\nvalueset \"Alcohol Counseling and Treatment\": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1437'\nvalueset \"Alcohol Screening\": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1337'\nvalueset \"Alcohol use disorder\": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1339'\nvalueset \"Dementia\": 'http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1074'\n\ncode \"Alcoholic drinks per drinking day - Reported\": '11287-0' from \"LOINC\"\ncode \"AUDIT Total Score (in points)\": '75624-7' from \"LOINC\"\ncode \"AUDIT-C Total Score (in points)\": '75626-2' from \"LOINC\"\n\n/*\nThis library has an explicit parameter which is the product line.\nRecognized normal arguments are {'commercial', 'medicaid', 'medicare'}.\nIf one of these normal arguments is given, the patient will only be\nconsidered to be in the Initial Population if they have an appropriate\ncontinuous enrollment in that kind of medical plan.\nIf instead a null argument is given, their enrollment status will have no\neffect on whether they are considered to be in the Initial Population.\nIf instead some other argument is given (an unrecognized plan type),\nthe patient will unconditionally NOT be in the Initial Population.\n*/\n\nparameter \"Product Line\" String\n\n/*\nThis library has an explicit parameter which is the measurement year.\nWhile the actual parameter's type accepts all intervals, this library\nexpects it will only be given arguments corresponding exactly to one whole\ncalendar year, and it will not behave properly otherwise; 2017 for example:\nInterval[DateTime(2017,1,1,0,0,0,0), DateTime(2018,1,1,0,0,0,0))\n*/\n\nparameter \"Measurement Period\" Interval<DateTime>\n\n/*\nThis library evaluates with respect to exactly 1 candidate patient at a time,\nthat patient being given by the special context parameter Patient.\n*/\n\ncontext Patient\n\ndefine \"Initial Population\":\n\tAgeInYearsAt(start of \"Measurement Period\") >= 18\n\n/*\nExclusions\n*/\n\ndefine \"Denominator Exclusion\":\n  exists (\n    [Condition: \"Alcohol use disorder\"] AlcoholUse\n      where AlcoholUse.clinicalStatus in { 'active', 'recurrence' }\n        and AlcoholUse.assertedDate during day of Interval[start of \"Measurement Period\" - 1 year, end of \"Measurement Period\"]\n\t)\n    or exists (\n      [Condition: \"Dementia\"] D\n        where D.clinicalStatus in { 'active', 'recurrence' }\n          and D.assertedDate during day of Interval[start of \"Measurement Period\", end of \"Measurement Period\" - 60 days]\n    )\n\n/*\nDenominators and Numerators\n*/\n\n// Unhealthy Alcohol Use Screening\n\ndefine \"Denominator 1\":\n  // \"Initial Population\"\n  true\n\n// Unhealthy Alcohol Use Screening\n\ndefine \"Numerator 1\":\n  // \"Initial Population\"\n  exists ( \"AUDIT-C Assessment\" )\n    or exists ( \"AUDIT Assessment\" )\n    or (\n      \"Patient is Male\"\n        and exists ( \"Five or more drinks per day Assessment\" )\n    )\n    or (\n      \"Patient is Female\"\n        and (\n          exists ( \"Four or more drinks per day Assessment\" )\n            or exists ( \"Five or more drinks per day Assessment\" )\n        )\n    )\n    or (\n      \"Patient is 65 or Over\"\n        and (\n          exists ( \"Four or more drinks per day Assessment\" )\n            or exists ( \"Five or more drinks per day Assessment\" )\n        )\n    )\n   // Note: The spec doesn't include the over 65 test here but does in dependent N/D 2.\n\ndefine \"AUDIT-C Assessment\":\n  [Observation: \"AUDIT-C Total Score (in points)\"] A\n    where A.status in { 'final', 'amended', 'corrected' }\n      and A.effective in day of \"Measurement Period\"\n      and A.value is not null\n\ndefine \"AUDIT Assessment\":\n  [Observation: \"AUDIT Total Score (in points)\"] A\n    where A.status in { 'final', 'amended', 'corrected' }\n      and A.effective in day of \"Measurement Period\"\n      and A.value is not null\n\ndefine \"Patient is Male\":\n  Patient.gender = 'male'\n\ndefine \"Five or more drinks per day Assessment\":\n  [Observation: \"Alcoholic drinks per drinking day - Reported\"] A\n    where A.status in { 'final', 'amended', 'corrected' }\n      and A.effective in day of \"Measurement Period\"\n      and A.value >= 5 '{drinks}/d'\n\ndefine \"Patient is Female\":\n  Patient.gender = 'female'\n\ndefine \"Patient is 65 or Over\":\n  AgeInYearsAt(start of \"Measurement Period\")>= 65\n\ndefine \"Four or more drinks per day Assessment\":\n  [Observation: \"Alcoholic drinks per drinking day - Reported\"] A\n    where A.status in { 'final', 'amended', 'corrected' }\n      and A.effective in day of \"Measurement Period\"\n      and A.value >= 4 '{drinks}/d'\n\n// Counseling or Other Follow-Up on Positive Screen\n\n/*\nInitial Population\nProduct lines -- Commercial, Medicaid, Medicare (report each product line separately).\n*/\n\ndefine \"Denominator 2\":\n  // \"Initial Population\"\n  exists \"Positive Assessment for Unhealthy Alcohol Use\"\n\n// Counseling or Other Follow-Up on Positive Screen\n\ndefine \"Numerator 2\":\n  // \"Initial Population\"\n  exists (\n    \"Initial Positive Assessment for Unhealthy Alcohol Use\" A\n      with \"Followup After Positive Screen\" F\n        such that\n          if F is Observation then F.effective 2 months or less on or after day of A.effective\n          else F.performed.\"end\" 2 months or less on or after day of A.effective\n  )\n\ndefine \"Positive Assessment for Unhealthy Alcohol Use\":\n  (\n    \"AUDIT Assessment\" A\n      where A.value >= 8\n  )\n    union (\n      \"AUDIT-C Assessment\" A\n        where (\"Patient is Male\" and A.value >= 4)\n          or (\"Patient is Female\" and A.value >= 3)\n    )\n    union (\n      \"Five or more drinks per day Assessment\" A\n        where \"Patient is Male\"\n          and A.value >= 1\n    )\n    union (\n      \"Four or more drinks per day Assessment\" A\n        where (\"Patient is Female\" or \"Patient is 65 or Over\")\n          and A.value >= 1\n    )\n\ndefine \"Followup After Positive Screen\":\n  (\n    [Procedure: \"Alcohol Counseling and Treatment\"] Proc\n      where Proc.status = 'completed'\n\t)\n    union (\n      [Observation: \"Alcohol Counseling and Treatment\"] Obs\n        where Obs.status in { 'final', 'amended', 'corrected' }\n    )\n    union (\n      [Procedure: \"Alcohol Screening\"] Proc\n        where Proc.status = 'completed'\n    )\n    union (\n      [Observation: \"Alcohol Screening\"] Obs\n        where Obs.status in { 'final', 'amended', 'corrected' }\n    )\n\ndefine \"Initial Positive Assessment for Unhealthy Alcohol Use\":\n  {\n    First(\n      \"Positive Assessment for Unhealthy Alcohol Use\" A\n        sort by effective.value\n    )\n  }\n\n/*\nStratifiers\n*/\n\ndefine \"Stratifier 1\":\n  AgeInYearsAt(start of \"Measurement Period\")in Interval[18, 44]\n\ndefine \"Stratifier 2\":\n  AgeInYearsAt(start of \"Measurement Period\")in Interval[45, 64]\n\ndefine \"Stratifier 3\":\n  AgeInYearsAt(start of \"Measurement Period\")>= 65\n
\n \n \n
\n
" + }, + "url": "http://ncqa.org/fhir/hedis/Library/library-asf-logic", + "identifier": [ + { + "use": "official", + "value": "Library_ASF" + } + ], + "version": "1.0.0", + "name": "ASF_FHIR", + "title": "ASF Logic", + "status": "active", + "experimental": true, + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/library-type", + "code": "logic-library" + } + ] + }, + "date": "2017-05-05", + "publisher": "National Committee for Quality Assurance", + "description": "Unhealthy Alcohol Use Screening and Follow-up (ASF) Logic Library", + "copyright": "The HEDIS measure specifications were developed by and are owned by NCQA. The HEDIS measure specifications are not clinical guidelines and do not establish a standard of medical care. NCQA makes no representations, warranties, or endorsement about the quality of any organization or physician that uses or reports performance measures and NCQA has no liability to anyone who relies on such measure specifications. These materials may not be modified by anyone other than NCQA. Anyone desiring to use or reproduce the materials without modification for a non-commercial purpose may do so without obtaining any approval from NCQA. **Any commercial use (including but not limited to vendors using the measure specifications with a product or service, including calculation of measure results) must be approved by NCQA and are subject to a license at the discretion of NCQA**. © 2019 NCQA, all rights reserved.", + "relatedArtifact": [ + { + "type": "depends-on", + "resource": { + "reference": "Library/library-fhir-helpers" + } + } + ], + "dataRequirement": [ + { + "type": "Condition", + "codeFilter": [ + { + "path": "code", + "valueSetString": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1339" + } + ] + }, + { + "type": "Condition", + "codeFilter": [ + { + "path": "code", + "valueSetString": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1074" + } + ] + }, + { + "type": "Observation", + "codeFilter": [ + { + "path": "code" + } + ] + }, + { + "type": "Observation", + "codeFilter": [ + { + "path": "code" + } + ] + }, + { + "type": "Observation", + "codeFilter": [ + { + "path": "code" + } + ] + }, + { + "type": "Observation", + "codeFilter": [ + { + "path": "code" + } + ] + }, + { + "type": "Procedure", + "codeFilter": [ + { + "path": "code", + "valueSetString": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1437" + } + ] + }, + { + "type": "Observation", + "codeFilter": [ + { + "path": "code", + "valueSetString": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1437" + } + ] + }, + { + "type": "Procedure", + "codeFilter": [ + { + "path": "code", + "valueSetString": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1337" + } + ] + }, + { + "type": "Observation", + "codeFilter": [ + { + "path": "code", + "valueSetString": "http://ncqa.org/hedis/ValueSet/2.16.840.1.113883.3.464.1004.1337" + } + ] + } + ] +} diff --git a/hapi-fhir-jpaserver-cql/src/test/resources/r4/hedis-ig/measure-asf.json b/hapi-fhir-jpaserver-cql/src/test/resources/r4/hedis-ig/measure-asf.json new file mode 100644 index 00000000000..e8c3869818d --- /dev/null +++ b/hapi-fhir-jpaserver-cql/src/test/resources/r4/hedis-ig/measure-asf.json @@ -0,0 +1,116 @@ +{ + "resourceType": "Measure", + "id": "measure-asf", + "status": "active", + "experimental": true, + "library": [ + "http://ncqa.org/fhir/hedis/Library/library-asf-logic" + ], + "scoring": { + "coding": [ + { + "code": "proportion" + } + ] + }, + "group": [ + { + "identifier": { + "value": "ASF-cohort" + }, + "population": [ + { + "identifier": { + "value": "initial-population" + }, + "code": { + "coding": [ + { + "code": "initial-population" + } + ] + }, + "criteria": "Initial Population" + }, + { + "identifier": { + "value": "numerator 1" + }, + "code": { + "coding": [ + { + "code": "numerator" + } + ] + }, + "criteria": "Numerator 1" + }, + { + "identifier": { + "value": "denominator 1" + }, + "code": { + "coding": [ + { + "code": "denominator" + } + ] + }, + "criteria": "Denominator 1" + }, + { + "identifier": { + "value": "numerator 2" + }, + "code": { + "coding": [ + { + "code": "numerator" + } + ] + }, + "criteria": "Numerator 2" + }, + { + "identifier": { + "value": "denominator 2" + }, + "code": { + "coding": [ + { + "code": "denominator" + } + ] + }, + "criteria": "Denominator 2" + } + ], + "stratifier": [ + { + "identifier": { + "value": "stratifier 1" + }, + "criteria": "Stratifier 1" + }, + { + "identifier": { + "value": "stratifier 2" + }, + "criteria": "Stratifier 2" + }, + { + "identifier": { + "value": "stratifier 3" + }, + "criteria": "Stratifier 3" + }, + { + "identifier": { + "value": "stratifier 4" + }, + "criteria": "Stratifier 4" + } + ] + } + ] + } diff --git a/hapi-fhir-jpaserver-model/src/main/java/ca/uhn/fhir/jpa/model/sched/ISchedulerService.java b/hapi-fhir-jpaserver-model/src/main/java/ca/uhn/fhir/jpa/model/sched/ISchedulerService.java index a9e60ddacdb..d4de58c1427 100644 --- a/hapi-fhir-jpaserver-model/src/main/java/ca/uhn/fhir/jpa/model/sched/ISchedulerService.java +++ b/hapi-fhir-jpaserver-model/src/main/java/ca/uhn/fhir/jpa/model/sched/ISchedulerService.java @@ -34,14 +34,14 @@ public interface ISchedulerService { void logStatusForUnitTest(); /** - * Only one instance of this task will fire across the whole cluster (when running in a clustered environment). + * This task will execute locally (and should execute on all nodes of the cluster if there is a cluster) * @param theIntervalMillis How many milliseconds between passes should this job run * @param theJobDefinition The Job to fire */ void scheduleLocalJob(long theIntervalMillis, ScheduledJobDefinition theJobDefinition); /** - * This task will execute locally (and should execute on all nodes of the cluster if there is a cluster) + * Only one instance of this task will fire across the whole cluster (when running in a clustered environment). * @param theIntervalMillis How many milliseconds between passes should this job run * @param theJobDefinition The Job to fire */ diff --git a/hapi-fhir-jpaserver-test-utilities/src/main/java/ca/uhn/fhir/jpa/config/TestJpaDstu3Config.java b/hapi-fhir-jpaserver-test-utilities/src/main/java/ca/uhn/fhir/jpa/config/TestJpaDstu3Config.java new file mode 100644 index 00000000000..0cadb958bbf --- /dev/null +++ b/hapi-fhir-jpaserver-test-utilities/src/main/java/ca/uhn/fhir/jpa/config/TestJpaDstu3Config.java @@ -0,0 +1,146 @@ +package ca.uhn.fhir.jpa.config; + +/*- + * #%L + * HAPI FHIR JPA Server Test Utilities + * %% + * Copyright (C) 2014 - 2020 University Health Network + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.context.FhirContext; +import ca.uhn.fhir.context.support.DefaultProfileValidationSupport; +import ca.uhn.fhir.jpa.binstore.IBinaryStorageSvc; +import ca.uhn.fhir.jpa.binstore.MemoryBinaryStorageSvcImpl; +import ca.uhn.fhir.jpa.search.HapiLuceneAnalysisConfigurer; +import ca.uhn.fhir.jpa.util.CircularQueueCaptureQueriesListener; +import ca.uhn.fhir.jpa.util.CurrentThreadCaptureQueriesListener; +import ca.uhn.fhir.rest.server.interceptor.RequestValidatingInterceptor; +import ca.uhn.fhir.validation.ResultSeverityEnum; +import net.ttddyy.dsproxy.listener.SingleQueryCountHolder; +import net.ttddyy.dsproxy.listener.logging.SLF4JLogLevel; +import net.ttddyy.dsproxy.support.ProxyDataSourceBuilder; +import org.apache.commons.dbcp2.BasicDataSource; +import org.hibernate.dialect.H2Dialect; +import org.hibernate.search.backend.lucene.cfg.LuceneBackendSettings; +import org.hibernate.search.backend.lucene.cfg.LuceneIndexSettings; +import org.hibernate.search.engine.cfg.BackendSettings; +import org.hibernate.search.mapper.orm.cfg.HibernateOrmMapperSettings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.Lazy; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; + +import javax.sql.DataSource; +import java.util.Properties; +import java.util.concurrent.TimeUnit; + +// TODO KBD Can we remove this Class entirely and just use a Generic one (same for TestJpaR4Config)? +@Import(TestJpaConfig.class) +public class TestJpaDstu3Config extends BaseJavaConfigDstu3 { + private static final Logger ourLog = LoggerFactory.getLogger(TestJpaDstu3Config.class); + @Autowired + FhirContext myFhirContext; + + @Bean + public CircularQueueCaptureQueriesListener captureQueriesListener() { + return new CircularQueueCaptureQueriesListener(); + } + + @Bean + public DataSource dataSource() { + BasicDataSource retVal = new BasicDataSource(); + + retVal.setDriver(new org.h2.Driver()); + retVal.setUrl("jdbc:h2:mem:testdb_dstu3"); + retVal.setMaxWaitMillis(10000); + retVal.setUsername(""); + retVal.setPassword(""); + + SLF4JLogLevel level = SLF4JLogLevel.INFO; + DataSource dataSource = ProxyDataSourceBuilder + .create(retVal) +// .logQueryBySlf4j(level, "SQL") + .logSlowQueryBySlf4j(10, TimeUnit.SECONDS) +// .countQuery(new ThreadQueryCountHolder()) +// .beforeQuery(new BlockLargeNumbersOfParamsListener()) + .afterQuery(captureQueriesListener()) + .afterQuery(new CurrentThreadCaptureQueriesListener()) + .countQuery(singleQueryCountHolder()) + .build(); + + return dataSource; + } + + @Bean + public SingleQueryCountHolder singleQueryCountHolder() { + return new SingleQueryCountHolder(); + } + + @Override + @Bean + public LocalContainerEntityManagerFactoryBean entityManagerFactory() { + LocalContainerEntityManagerFactoryBean retVal = super.entityManagerFactory(); + retVal.setPersistenceUnitName("PU_HapiFhirJpaDstu3"); + retVal.setDataSource(dataSource()); + retVal.setJpaProperties(jpaProperties()); + return retVal; + } + + @Bean + public Properties jpaProperties() { + Properties extraProperties = new Properties(); + extraProperties.put("hibernate.format_sql", "false"); + extraProperties.put("hibernate.show_sql", "false"); + extraProperties.put("hibernate.hbm2ddl.auto", "update"); + extraProperties.put("hibernate.dialect", H2Dialect.class.getName()); + + extraProperties.put(BackendSettings.backendKey(BackendSettings.TYPE), "lucene"); + extraProperties.put(BackendSettings.backendKey(LuceneBackendSettings.ANALYSIS_CONFIGURER), HapiLuceneAnalysisConfigurer.class.getName()); + extraProperties.put(BackendSettings.backendKey(LuceneIndexSettings.DIRECTORY_TYPE), "local-heap"); + extraProperties.put(BackendSettings.backendKey(LuceneBackendSettings.LUCENE_VERSION), "LUCENE_CURRENT"); + extraProperties.put(HibernateOrmMapperSettings.ENABLED, "true"); + + return extraProperties; + } + + /** + * Bean which validates incoming requests + */ + @Bean + @Lazy + public RequestValidatingInterceptor requestValidatingInterceptor() { + RequestValidatingInterceptor requestValidator = new RequestValidatingInterceptor(); + requestValidator.setFailOnSeverity(ResultSeverityEnum.ERROR); + requestValidator.setAddResponseHeaderOnSeverity(null); + requestValidator.setAddResponseOutcomeHeaderOnSeverity(ResultSeverityEnum.INFORMATION); + requestValidator.addValidatorModule(instanceValidator()); + + return requestValidator; + } + + @Bean + public IBinaryStorageSvc binaryStorage() { + return new MemoryBinaryStorageSvcImpl(); + } + + @Bean + public DefaultProfileValidationSupport validationSupportChainDstu3() { + return new DefaultProfileValidationSupport(myFhirContext); + } +} diff --git a/hapi-fhir-jpaserver-test-utilities/src/main/java/ca/uhn/fhir/jpa/config/TestJpaR4Config.java b/hapi-fhir-jpaserver-test-utilities/src/main/java/ca/uhn/fhir/jpa/config/TestJpaR4Config.java index a6d1c6c5cc3..1716e099cad 100644 --- a/hapi-fhir-jpaserver-test-utilities/src/main/java/ca/uhn/fhir/jpa/config/TestJpaR4Config.java +++ b/hapi-fhir-jpaserver-test-utilities/src/main/java/ca/uhn/fhir/jpa/config/TestJpaR4Config.java @@ -50,6 +50,7 @@ import javax.sql.DataSource; import java.util.Properties; import java.util.concurrent.TimeUnit; +// TODO KBD Can we remove this Class entirely and just use a Generic one (same for TestJpaDstu3Config)? @Import(TestJpaConfig.class) public class TestJpaR4Config extends BaseJavaConfigR4 { private static final Logger ourLog = LoggerFactory.getLogger(TestJpaR4Config.class); diff --git a/hapi-fhir-jpaserver-test-utilities/src/main/java/ca/uhn/fhir/jpa/test/BaseJpaDstu3Test.java b/hapi-fhir-jpaserver-test-utilities/src/main/java/ca/uhn/fhir/jpa/test/BaseJpaDstu3Test.java new file mode 100644 index 00000000000..90a6301d8ad --- /dev/null +++ b/hapi-fhir-jpaserver-test-utilities/src/main/java/ca/uhn/fhir/jpa/test/BaseJpaDstu3Test.java @@ -0,0 +1,28 @@ +package ca.uhn.fhir.jpa.test; + +/*- + * #%L + * HAPI FHIR JPA Server Test Utilities + * %% + * Copyright (C) 2014 - 2020 University Health Network + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +import ca.uhn.fhir.jpa.config.TestJpaDstu3Config; +import org.springframework.test.context.ContextConfiguration; + +@ContextConfiguration(classes = {TestJpaDstu3Config.class}) +public abstract class BaseJpaDstu3Test extends BaseJpaTest { +} diff --git a/hapi-fhir-validation/src/test/java/org/hl7/fhir/dstu3/hapi/validation/FhirInstanceValidatorDstu3Test.java b/hapi-fhir-validation/src/test/java/org/hl7/fhir/dstu3/hapi/validation/FhirInstanceValidatorDstu3Test.java index e954e526591..a9e7f936754 100644 --- a/hapi-fhir-validation/src/test/java/org/hl7/fhir/dstu3/hapi/validation/FhirInstanceValidatorDstu3Test.java +++ b/hapi-fhir-validation/src/test/java/org/hl7/fhir/dstu3/hapi/validation/FhirInstanceValidatorDstu3Test.java @@ -1327,7 +1327,7 @@ public class FhirInstanceValidatorDstu3Test { ValidationResult results = myVal.validateWithResult(input); List outcome = logResultsAndReturnNonInformationalOnes(results); - assertEquals(1, outcome.size()); + assertEquals(2, outcome.size()); assertThat(outcome.toString(), containsString("value should not start or finish with whitespace")); } diff --git a/hapi-fhir-validation/src/test/java/org/hl7/fhir/r4/validation/CustomResourceGenerationTest.java b/hapi-fhir-validation/src/test/java/org/hl7/fhir/r4/validation/CustomResourceGenerationTest.java index 08ae220db02..fd1ebd79748 100644 --- a/hapi-fhir-validation/src/test/java/org/hl7/fhir/r4/validation/CustomResourceGenerationTest.java +++ b/hapi-fhir-validation/src/test/java/org/hl7/fhir/r4/validation/CustomResourceGenerationTest.java @@ -44,7 +44,7 @@ public class CustomResourceGenerationTest extends BaseTest { assertEquals(3, result.getMessages().size()); assertEquals("Error parsing JSON: the primitive value must be a boolean", result.getMessages().get(0).getMessage()); - assertEquals("This property must be an Array, not a a primitive property", result.getMessages().get(1).getMessage()); + assertEquals("This property must be an Array, not a primitive property", result.getMessages().get(1).getMessage()); assertEquals("Unrecognised property '@id1'", result.getMessages().get(2).getMessage()); } diff --git a/hapi-fhir-validation/src/test/java/org/hl7/fhir/r4/validation/FhirInstanceValidatorR4Test.java b/hapi-fhir-validation/src/test/java/org/hl7/fhir/r4/validation/FhirInstanceValidatorR4Test.java index 53f066dce92..72a3a39fe24 100644 --- a/hapi-fhir-validation/src/test/java/org/hl7/fhir/r4/validation/FhirInstanceValidatorR4Test.java +++ b/hapi-fhir-validation/src/test/java/org/hl7/fhir/r4/validation/FhirInstanceValidatorR4Test.java @@ -369,7 +369,7 @@ public class FhirInstanceValidatorR4Test extends BaseTest { ValidationResult result = val.validateWithResult(operationDefinition); List all = logResultsAndReturnAll(result); assertFalse(result.isSuccessful()); - assertEquals("This property must be an Array, not a a primitive property", all.get(0).getMessage()); + assertEquals("This property must be an Array, not a primitive property", all.get(0).getMessage()); } @Test diff --git a/pom.xml b/pom.xml index 6f291196705..f097bb35bb6 100644 --- a/pom.xml +++ b/pom.xml @@ -701,6 +701,20 @@ janol77 Alejandro Medina + + KevinDougan-SmileCDR + Kevin Dougan + + + jpercival + Jonathan Percival + Alphora + + + brynrhodes + Bryn Rhodes + Alphora + MarcelPa Marcel P @@ -716,7 +730,7 @@ - 5.2.16 + 5.2.20 1.0.3 -Dfile.encoding=UTF-8 -Xmx2048m @@ -740,6 +754,8 @@ 1.7 2.6 3.9 + 1.2 + 1.5.0 10.14.2.0 2.5.1 @@ -795,6 +811,14 @@ 1.0.1 1.13.0 + + + 1.3.1-SNAPSHOT + 1.5.1-SNAPSHOT + 1.1.0-SNAPSHOT + 1.5.2-SNAPSHOT + 5.4.1 @@ -867,10 +891,10 @@ 0.3.1 - io.dogote - json-patch - 1.15 - + io.dogote + json-patch + 1.15 + com.google.errorprone error_prone_core @@ -901,6 +925,11 @@ ph-commons ${ph_commons_version} + + com.jamesmurty.utils + java-xmlbuilder + ${com_jamesmurty_utils_version} + com.squareup.okhttp3 okhttp @@ -1177,12 +1206,12 @@ apache-jena-libs ${jena_version} pom - + - com.github.jsonld-java - jsonld-java - - + com.github.jsonld-java + jsonld-java + + org.apache.lucene @@ -2556,7 +2585,7 @@ true - hapi-fhir-bom + hapi-fhir-bom hapi-deployable-pom hapi-fhir-base hapi-fhir-docs @@ -2582,6 +2611,7 @@ hapi-fhir-structures-r5 hapi-fhir-validation-resources-r5 hapi-fhir-jpaserver-api + hapi-fhir-jpaserver-cql hapi-fhir-jpaserver-model hapi-fhir-jpaserver-searchparam hapi-fhir-jpaserver-subscription