瀏覽代碼

Merge branch 'push-test' of http://192.168.2.236:10080/louhr/push into push-test

kongwz 5 年之前
父節點
當前提交
6a16f92ada
共有 29 個文件被更改,包括 24274 次插入24477 次删除
  1. 1 1
      algorithm/src/main/resources/algorithm.properties
  2. 122 101
      bigdata-web/src/main/java/org/diagbot/bigdata/common/ApplicationCacheUtil.java
  3. 6 3
      bigdata-web/src/main/java/org/diagbot/bigdata/work/ParamsDataProxy.java
  4. 0 0
      bigdata-web/src/main/resources/bigdata_diag_2_dept.dict
  5. 66 3
      bigdata-web/src/main/resources/doc_result_mapping_filter.dict
  6. 0 921
      bigdata-web/src/main/resources/doc_result_mapping_vital.dict
  7. 0 79
      bigdata-web/src/main/resources/kl_result_mapping_standword.dict
  8. 5 1
      common-push/pom.xml
  9. 341 0
      common-push/src/main/java/org/diagbot/common/push/cache/CacheFileManager.java
  10. 2 2
      graph/src/main/java/org/diagbot/graph/jdbc/Neo4jAPI.java
  11. 56 28
      graph/src/main/java/org/diagbot/graph/util/CacheUtil.java
  12. 0 0
      graph/src/main/resources/graph_diag_2_dept.dict
  13. 0 159
      graph/src/main/resources/diagSort.dict
  14. 8 1
      graph/src/main/resources/diagClassify.dict
  15. 21154 21153
      graph/src/main/resources/sexAge.dict
  16. 1137 1140
      graph/src/main/resources/vital.dict
  17. 0 70
      graph/src/main/resources/lexicon.dict
  18. 1 1
      graphdb/src/main/java/org/diagbot/service/impl/KnowledgeServiceImpl.java
  19. 8 10
      nlp/src/main/java/org/diagbot/nlp/feature/extract/CaseToken.java
  20. 2 0
      nlp/src/main/java/org/diagbot/nlp/participle/cfg/DefaultConfig.java
  21. 5 2
      nlp/src/main/java/org/diagbot/nlp/util/NlpCache.java
  22. 23 23
      nlp/src/main/resources/push-tc.dict
  23. 371 391
      nlp/src/main/resources/synonym.dict
  24. 875 380
      nlp/src/main/resources/tc.dict
  25. 48 0
      push-web/src/main/java/org/diagbot/push/controller/CacheFileManagerController.java
  26. 16 0
      push-web/src/main/java/org/diagbot/push/controller/ParticipleController.java
  27. 19 0
      push-web/src/main/java/org/diagbot/push/controller/RelationController.java
  28. 6 6
      push-web/src/main/resources/static/pages/algorithm/list.html
  29. 2 2
      push-web/src/main/resources/static/pages/relation/sample.html

+ 1 - 1
algorithm/src/main/resources/algorithm.properties

@@ -1,6 +1,6 @@
 ################################ model basic url ###################################
 
-#basicPath=E:/git/push/algorithm/src/main/models/model_version_replacement/model
+#basicPath=E:/project/push/algorithm/src/main/models/model_version_replacement/model
 basicPath=/opt/models/dev/models/model_version_replacement/model
 #basicPath=E:/xxx/model_version_replacement/model
 

+ 122 - 101
bigdata-web/src/main/java/org/diagbot/bigdata/common/ApplicationCacheUtil.java

@@ -52,6 +52,10 @@ public class ApplicationCacheUtil {
         return standard_info_type_tree_map;
     }
 
+    /**
+     * 現已無用
+     * @return
+     */
     public static Map<String, String> getDoc_result_mapping_vital_map() {
         if (doc_result_mapping_vital_map == null) {
             Configuration configuration = new DefaultConfig();
@@ -62,131 +66,148 @@ public class ApplicationCacheUtil {
 
     public static Map<String, String> getDoc_result_mapping_diag_map() {
         if (doc_result_mapping_diag_map == null) {
-            Configuration configuration = new DefaultConfig();
-            doc_result_mapping_diag_map = configuration.loadMapDict("doc_result_mapping_diag.dict");
+            createDoc_result_mapping_diag_map();
         }
         return doc_result_mapping_diag_map;
     }
 
-    public static Map<String, Map<String, ResultMappingFilter>> getDoc_result_mapping_filter_map() {
+    public static Map<String, String> createDoc_result_mapping_diag_map() {
         Configuration configuration = new DefaultConfig();
+        doc_result_mapping_diag_map = configuration.loadMapDict("bigdata_diag_2_dept.dict");
+        return doc_result_mapping_diag_map;
+    }
+
+    public static Map<String, Map<String, ResultMappingFilter>> getDoc_result_mapping_filter_map() {
         if (doc_result_mapping_filter_map == null) {
-            List<String> fileContents = configuration.readFileContents("doc_result_mapping_filter.dict");
-            String[] line_string;
-            List<ResultMappingFilter> resultMappingFilters = new ArrayList<>();
-            try {
-                for (int i = 0; i < fileContents.size(); i++) {
-                    line_string = org.apache.commons.lang3.StringUtils.split(fileContents.get(i), "\\|");
-                    if (line_string.length == 5) {
-                        ResultMappingFilter resultMappingFilter = new ResultMappingFilter();
-                        resultMappingFilter.setFeatureName(line_string[0]);
-                        resultMappingFilter.setFeatureType(line_string[1]);
-                        resultMappingFilter.setSex(line_string[2]);
-                        resultMappingFilter.setAgeStart(Integer.parseInt(line_string[3]));
-                        resultMappingFilter.setAgeEnd(Integer.parseInt(line_string[4]));
-                        resultMappingFilters.add(resultMappingFilter);
-                    }
+            createDoc_result_mapping_filter_map();
+        }
+        return doc_result_mapping_filter_map;
+    }
+
+    public static Map<String, Map<String, ResultMappingFilter>> createDoc_result_mapping_filter_map() {
+        Configuration configuration = new DefaultConfig();
+        List<String> fileContents = configuration.readFileContents("bigdata_sex_age_filter.dict");
+        String[] line_string;
+        List<ResultMappingFilter> resultMappingFilters = new ArrayList<>();
+        try {
+            for (int i = 0; i < fileContents.size(); i++) {
+                line_string = org.apache.commons.lang3.StringUtils.split(fileContents.get(i), "\\|");
+                if (line_string.length == 5) {
+                    ResultMappingFilter resultMappingFilter = new ResultMappingFilter();
+                    resultMappingFilter.setFeatureName(line_string[0]);
+                    resultMappingFilter.setFeatureType(line_string[1]);
+                    resultMappingFilter.setSex(line_string[2]);
+                    resultMappingFilter.setAgeStart(Integer.parseInt(line_string[3]));
+                    resultMappingFilter.setAgeEnd(Integer.parseInt(line_string[4]));
+                    resultMappingFilters.add(resultMappingFilter);
                 }
-            } catch (Exception e) {
-                e.printStackTrace();
             }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
 
-            doc_result_mapping_filter_map = new HashMap<>();
-            Map<String, ResultMappingFilter> filterMap = null;
-            for (ResultMappingFilter resultMappingFilter : resultMappingFilters) {
-                filterMap = doc_result_mapping_filter_map.get(resultMappingFilter.getFeatureType());
-                if (filterMap == null) {
-                    filterMap = new HashMap<>();
-                }
-                filterMap.put(resultMappingFilter.getFeatureName(), resultMappingFilter);
-                doc_result_mapping_filter_map.put(resultMappingFilter.getFeatureType(), filterMap);
+        doc_result_mapping_filter_map = new HashMap<>();
+        Map<String, ResultMappingFilter> filterMap = null;
+        for (ResultMappingFilter resultMappingFilter : resultMappingFilters) {
+            filterMap = doc_result_mapping_filter_map.get(resultMappingFilter.getFeatureType());
+            if (filterMap == null) {
+                filterMap = new HashMap<>();
             }
+            filterMap.put(resultMappingFilter.getFeatureName(), resultMappingFilter);
+            doc_result_mapping_filter_map.put(resultMappingFilter.getFeatureType(), filterMap);
         }
         return doc_result_mapping_filter_map;
     }
 
     public static Map<String, List<Map<String, String>>> getKl_result_mapping_standword_map() {
         if (kl_result_mapping_standword_map == null) {
-            kl_result_mapping_standword_map = new HashMap<>();
-            Configuration configuration = new DefaultConfig();
-            List<String> fileContents = configuration.readFileContents("kl_result_mapping_standword.dict");
-            List<Map<String, String>> standWordObjValList = null;
-            Map<String, String> standWordObjVal = null;
-            String operation = ">=|≥|>|大于|>|超过|<=|≤|<|小于|<|少于";
-            try {
-                for (String fileContent : fileContents) {
-                    LexemePath<Lexeme> lexemes = null;
-                    String op = "";
-                    String[] fileContentSplit = null;
-                    //每一个标准词根据大于小于符号切开,不然进行分词时还是会得到原本的标准词
-                    if (fileContent.contains(">") || fileContent.contains("大于")
-                            || fileContent.contains(">") || fileContent.contains("超过")) {
-                        op = ">";
-                        fileContentSplit = fileContent.split(operation);
-                    } else if (fileContent.contains("<") || fileContent.contains("小于")
-                            || fileContent.contains("<") || fileContent.contains("少于")) {
-                        op = "<";
-                        fileContentSplit = fileContent.split(operation);
-                    } else if (fileContent.contains(">=") || fileContent.contains("≥")){
-                        op = ">=";
-                        fileContentSplit = fileContent.split(operation);
-                    } else if (fileContent.contains("<=") || fileContent.contains("≤")) {
-                        op = "<=";
-                        fileContentSplit = fileContent.split(operation);
-                    } else {
-                        continue;
-                    }
-                    LexemePath<Lexeme> lexemeWord = null;
-                    //每一个标准词切开后进行分词
-                    for (String fileContentWords : fileContentSplit) {
-                        lexemeWord = ParticipleUtil.participle(fileContentWords);
-                        if (lexemeWord != null) {
-                            if (null == lexemes) {
-                                lexemes = lexemeWord;
-                            } else {
-                                for (Lexeme lexeme : lexemeWord) {
-                                    lexemes.add(lexeme);
-                                }
+            createKl_result_mapping_standword_map();
+        }
+        return kl_result_mapping_standword_map;
+    }
+
+    public static Map<String, List<Map<String, String>>> createKl_result_mapping_standword_map() {
+        kl_result_mapping_standword_map = new HashMap<>();
+        Configuration configuration = new DefaultConfig();
+        List<String> fileContents = configuration.readFileContents("kl_result_mapping_standword.dict");
+        List<Map<String, String>> standWordObjValList = null;
+        Map<String, String> standWordObjVal = null;
+        String operation = ">=|≥|>|大于|>|超过|<=|≤|<|小于|<|少于";
+        try {
+            for (String fileContent : fileContents) {
+                LexemePath<Lexeme> lexemes = null;
+                String op = "";
+                String[] fileContentSplit = null;
+                //每一个标准词根据大于小于符号切开,不然进行分词时还是会得到原本的标准词
+                if (fileContent.contains(">") || fileContent.contains("大于")
+                        || fileContent.contains(">") || fileContent.contains("超过")) {
+                    op = ">";
+                    fileContentSplit = fileContent.split(operation);
+                } else if (fileContent.contains("<") || fileContent.contains("小于")
+                        || fileContent.contains("<") || fileContent.contains("少于")) {
+                    op = "<";
+                    fileContentSplit = fileContent.split(operation);
+                } else if (fileContent.contains(">=") || fileContent.contains("≥")){
+                    op = ">=";
+                    fileContentSplit = fileContent.split(operation);
+                } else if (fileContent.contains("<=") || fileContent.contains("≤")) {
+                    op = "<=";
+                    fileContentSplit = fileContent.split(operation);
+                } else {
+                    continue;
+                }
+                LexemePath<Lexeme> lexemeWord = null;
+                //每一个标准词切开后进行分词
+                for (String fileContentWords : fileContentSplit) {
+                    lexemeWord = ParticipleUtil.participle(fileContentWords);
+                    if (lexemeWord != null) {
+                        if (null == lexemes) {
+                            lexemes = lexemeWord;
+                        } else {
+                            for (Lexeme lexeme : lexemeWord) {
+                                lexemes.add(lexeme);
                             }
                         }
                     }
-                    String standWordObjKey = "";
-                    standWordObjValList = new ArrayList<>();
-                    standWordObjVal = new HashMap<>();
-                    int i = 0;
-                    for (Lexeme lexeme : lexemes) {
-                        i++;
-                        if (lexeme.getProperty().contains(",")) {
-                            setProterty(lexeme); //如果分词后词性有多个,只选一个(暂时只处理症状,体征)
-                        }
-                        NegativeEnum lexemeNegativeEnum = NegativeEnum.parseOfValue(lexeme.getProperty());
-                        if (lexemeNegativeEnum == NegativeEnum.SYMPTOM || lexemeNegativeEnum == NegativeEnum.CAUSE
-                                || lexemeNegativeEnum == NegativeEnum.VITAL_INDEX) {
-                            if (!kl_result_mapping_standword_map.containsKey(lexeme.getText())) {
-                                kl_result_mapping_standword_map.put(lexeme.getText(), standWordObjValList);
-                            } else {
-                                standWordObjKey = lexeme.getText();
-                            }
-                        } else if (lexemeNegativeEnum == NegativeEnum.DIGITS) {
-                            standWordObjVal.put("value", lexeme.getText());
-                        } else if (lexemeNegativeEnum == NegativeEnum.UNIT
-                                || lexemeNegativeEnum == NegativeEnum.EVENT_TIME) {
-                            standWordObjVal.put("unit", lexeme.getText().toLowerCase());
+                }
+                String standWordObjKey = "";
+                standWordObjValList = new ArrayList<>();
+                standWordObjVal = new HashMap<>();
+                int i = 0;
+                for (Lexeme lexeme : lexemes) {
+                    i++;
+                    if (lexeme.getProperty().contains(",")) {
+                        setProterty(lexeme); //如果分词后词性有多个,只选一个(暂时只处理症状,体征)
+                    }
+                    NegativeEnum lexemeNegativeEnum = NegativeEnum.parseOfValue(lexeme.getProperty());
+                    if (lexemeNegativeEnum == NegativeEnum.SYMPTOM || lexemeNegativeEnum == NegativeEnum.CAUSE
+                            || lexemeNegativeEnum == NegativeEnum.VITAL_INDEX
+                            || lexemeNegativeEnum == NegativeEnum.OTHER
+                            || lexemeNegativeEnum == NegativeEnum.DIAG_STAND) {
+                        if (!kl_result_mapping_standword_map.containsKey(lexeme.getText())) {
+                            kl_result_mapping_standword_map.put(lexeme.getText(), standWordObjValList);
+                        } else {
+                            standWordObjKey = lexeme.getText();
                         }
-                        if (lexemes.size() == i) {
-                            standWordObjVal.put("op", op);
-                            standWordObjVal.put("standword", fileContent);
-                            if (kl_result_mapping_standword_map.containsKey(standWordObjKey)) {
-                                kl_result_mapping_standword_map.get(standWordObjKey).add(standWordObjVal);
-                            } else {
-                                standWordObjValList.add(standWordObjVal);
-                            }
+                    } else if (lexemeNegativeEnum == NegativeEnum.DIGITS) {
+                        standWordObjVal.put("value", lexeme.getText());
+                    } else if (lexemeNegativeEnum == NegativeEnum.UNIT
+                            || lexemeNegativeEnum == NegativeEnum.EVENT_TIME) {
+                        standWordObjVal.put("unit", lexeme.getText().toLowerCase());
+                    }
+                    if (lexemes.size() == i) {
+                        standWordObjVal.put("op", op);
+                        standWordObjVal.put("standword", fileContent);
+                        if (kl_result_mapping_standword_map.containsKey(standWordObjKey)) {
+                            kl_result_mapping_standword_map.get(standWordObjKey).add(standWordObjVal);
+                        } else {
+                            standWordObjValList.add(standWordObjVal);
                         }
                     }
                 }
-            } catch (Exception e) {
-                e.printStackTrace();
             }
+        } catch (Exception e) {
+            e.printStackTrace();
         }
         return kl_result_mapping_standword_map;
     }

+ 6 - 3
bigdata-web/src/main/java/org/diagbot/bigdata/work/ParamsDataProxy.java

@@ -104,7 +104,7 @@ public class ParamsDataProxy {
         }
         if (!StringUtils.isEmpty(searchData.getOther()) || !StringUtils.isEmpty(searchData.getIndications())) {
             //提取其他史等
-            featuresList = fa.start(searchData.getOther() == null ? "" : searchData.getOther() + searchData.getIndications() == null ? "" : searchData.getIndications(), FeatureType.FEATURE);
+            featuresList = fa.start((searchData.getOther() == null ? "" : searchData.getOther()) + (searchData.getIndications() == null ? "" : searchData.getIndications()), FeatureType.FEATURE);
             paramFeatureInit(searchData, featuresList);
         }
         if (!StringUtils.isEmpty(searchData.getPacs())) {
@@ -299,7 +299,7 @@ public class ParamsDataProxy {
             NegativeEnum lexemeNegativeEnum = NegativeEnum.parseOfValue(lexeme.getProperty());
             if (lexemeNegativeEnum == NegativeEnum.VITAL_INDEX || lexemeNegativeEnum == NegativeEnum.SYMPTOM || lexemeNegativeEnum == NegativeEnum.DIGITS
                     || lexemeNegativeEnum == NegativeEnum.EVENT_TIME || lexemeNegativeEnum == NegativeEnum.UNIT
-                    ) {
+                    || lexemeNegativeEnum == NegativeEnum.DIAG_STAND) {
                 feature.add(lexeme);
             }
         }
@@ -321,6 +321,10 @@ public class ParamsDataProxy {
                                 && NegativeEnum.parseOfValue(feature.get(i + 2).getProperty()) == NegativeEnum.UNIT)
                         ||
                         (NegativeEnum.parseOfValue(feature.get(i).getProperty()) == NegativeEnum.SYMPTOM
+                                && NegativeEnum.parseOfValue(feature.get(i + 1).getProperty()) == NegativeEnum.DIGITS
+                                && NegativeEnum.parseOfValue(feature.get(i + 2).getProperty()) == NegativeEnum.EVENT_TIME)
+                        ||
+                        (NegativeEnum.parseOfValue(feature.get(i).getProperty()) == NegativeEnum.DIAG_STAND
                                 && NegativeEnum.parseOfValue(feature.get(i + 1).getProperty()) == NegativeEnum.DIGITS
                                 && NegativeEnum.parseOfValue(feature.get(i + 2).getProperty()) == NegativeEnum.EVENT_TIME)) {
                     featureType.add(feature.get(i).getText() + "\t" + feature.get(i + 1).getText() + "\t"
@@ -379,7 +383,6 @@ public class ParamsDataProxy {
             addStandWords += smallerStandWord;
         }
         sData.setSymptom(sData.getSymptom() + "," + addStandWords);
-        System.out.println(sData.getSymptom());
         return sData;
     }
 

bigdata-web/src/main/resources/doc_result_mapping_diag.dict → bigdata-web/src/main/resources/bigdata_diag_2_dept.dict


+ 66 - 3
bigdata-web/src/main/resources/doc_result_mapping_filter.dict

@@ -10403,7 +10403,7 @@ zPy0KtTBch9th8Ht1pmqxn7fowX0Apo7dNcEzAJx+eWHshcwLFyUXpqv8qW/EV5KSmARnfpRl/s=
 W6lQJuFoy2EWAH6ZPyG6dYSVQdDA9FDakcuwFTbLrVQL9y1U/+E2k/GBY5WQh50G
 W6lQJuFoy2HT87cAxtd7MIbttm6UqjEVkcuwFTbLrVQL9y1U/+E2k/GBY5WQh50G
 W6lQJuFoy2GAq3c59w4ZcnTXBMwCcfnlh7IXMCxclF6ar/KlvxFeSkpgEZ36UZf7
-zPy0KtTBch9th8Ht1pmqxqVYWibrmwqO1jTXJ/U6Okk4qWRiDXo2nEGsdOGgj/Hl
+zPy0KtTBch9th8Ht1pmqxslwSaZTL0el1jTXJ/U6Okk4qWRiDXo2nEGsdOGgj/Hl
 W6lQJuFoy2FWy7ct4lVYKHjDRmx5rV8HOKlkYg16NpxBrHThoI/x5Q==
 9UQdU1VIB/bNxcv5nldS6I5/jSCFbJZiyKOlDzIs7ng4vI4zwdqLcMW9GueaBowJ
 9UQdU1VIB/ZTdcuValOzTfyE7Yj/m5IRGCyWetW9vaYlK3X06ISBhr2DkTG8Vn8OLfj2n/p3fLw=
@@ -21379,7 +21379,7 @@ nWk/dQygg1J+cXBT1sQIMMmAF+2EQbmuEQNTdu29KXR4qi09YuwSoA==
 y4pn/yqRG2WoT3bPzQCBDQtDeDIeSP1npA8RkamQclo=
 A459Icy9orqJzBm5YfTGUkCbw8kxCNmGLKs3fnGbwV4=
 K73Gl71jw5XTBXStyqBjUgtDeDIeSP1npA8RkamQclo=
-rmUbMyMaLv6bYE43p+w2wai8Li9yhurNpA8RkamQclo=
+rmUbMyMaLv7/FZ4pj+KXQcW9GueaBowJ
 7BqtE5Px2lUsqAfaQjnaIuGNt1ZYHmGTEQNTdu29KXR4qi09YuwSoA==
 oNFGDWE7mObAqNbJcsdWR6Q7UFYyd1mZLfj2n/p3fLw=
 qxj6RavfjjhAq/wWJh7HWLsCSYdv45KnGzTWg10znw6ar/KlvxFeSkpgEZ36UZf7
@@ -24271,7 +24271,7 @@ x4uilTVhyM+Q34tqcFUZ7FU2x1UvNSu2LKs3fnGbwV4=
 /GKXpHQmFhmaR1pPYuq8SYkRRAqDB3R2ttoP512dY39BrHThoI/x5Q==
 mZ/sQvQT2Zh/7vAVZWs3PVU2x1UvNSu2LKs3fnGbwV4=
 IHPdczs3Cv06XyDbygVzHqCCIWcWSwEdpA8RkamQclo=
-0gGUhVPoq4Gt2Wi460byoRzbz4bUWXSFny5eK2vcNT54qi09YuwSoA==
+pbMfZ0ig5mQK38nWc4jSHxp2R5vdHjDgttoP512dY39BrHThoI/x5Q==
 uLQrLbFQeci0w52x9eQx420G9jrR1BrMI81kLDg4gFd4qi09YuwSoA==
 QHMhqX1HNHmecDt0ZvqhQ332zdlMOcEz4nNOTCR9msWar/KlvxFeSkpgEZ36UZf7
 EWAvPQ0VvK0E+ao/xTsQ5bUSFoNJzQK6pA8RkamQclo=
@@ -25292,3 +25292,66 @@ eM0CZeWk/0Q8MuG4ta/TPMW9GueaBowJ
 hU2JsvCVd8iVbaq0hPsRvlU2x1UvNSu2LKs3fnGbwV4=
 aH2Pl8NYolGpMiYwptT3qCibZTYEHi63Lfj2n/p3fLw=
 pYF12yPYxOBcb0czTGxsyFU2x1UvNSu2LKs3fnGbwV4=
+2dYI+9yYHTc+03JbZpPE8P9R9iFTMZBjLfj2n/p3fLw=
+nwlsV/FAIa1T2DpH4ZEBpfGBY5WQh50G
+N86LmPSN4HVhN2jFDh022MW9GueaBowJ
+BVnTJGszGHdVBDenYZBoueV4b7eTeo5HLfj2n/p3fLw=
+aD5eU1o4MmO3/pTQV9zBPkRMBpcnoniiLfj2n/p3fLw=
+13MHrUqG1pfcm2hRjY8q9UDeFLm6FOQg2AhujeJjB7mar/KlvxFeSkpgEZ36UZf7
+13MHrUqG1pfcm2hRjY8q9WbBPXNGiu4ceZxKzYs7iUZ4qi09YuwSoA==
+13MHrUqG1pfcm2hRjY8q9aDCFSPAW9Kk9JPgOdbbQp2ar/KlvxFeSkpgEZ36UZf7
+0TLzIWW9EWCaOVrBcPHMP6CCIWcWSwEdpA8RkamQclo=
+QMVof5Z8Tu5/74SsjFK4p8W9GueaBowJ
+MHGig9So1fOQ/pn8ZZh2SMW9GueaBowJ
+pcful9ZLCydcmHb422HiJptFKPVvVZKbLfj2n/p3fLw=
+RNUcWaVHqHcZd1BiYTH+McW9GueaBowJ
+pf50Ivfy0+kBnp9zG0Qi/FU2x1UvNSu2LKs3fnGbwV4=
+APAgduySYIVkSWPk54PCjMW9GueaBowJ
+/2oGRjYR3pvsif9OwgmVDwXhQ5szTyPYpA8RkamQclo=
+iDeqTYcAjfN09vzxviQ3PFWKE+kJMQAhttoP512dY39BrHThoI/x5Q==
+dQG/PKJ7BEe92rbZLJywOcW9GueaBowJ
+Ec3EVvbhwTat1q6RF6QGXFU2x1UvNSu2LKs3fnGbwV4=
+cSE2zFvsX8qKc9YK2sQ6Z1U2x1UvNSu2LKs3fnGbwV4=
+lcqWsZFnYZS9n9t/sip1y1U2x1UvNSu2LKs3fnGbwV4=
+R4Th+OkdPogDzHTY3BGfYFU2x1UvNSu2LKs3fnGbwV4=
+4mt9kbBcvpIKZPvsSIXBksW9GueaBowJ
+ygHckNP4YMBfBcKdClL8BrmS8RD7jLqyLfj2n/p3fLw=
+UoBxr0e3SDzMG+WjKMWDHZiGvzlrt38WLfj2n/p3fLw=
+m0s6Jy08uepbslXWpPrcHcW9GueaBowJ
+j/P6gcnJb0xcb0czTGxsyFU2x1UvNSu2LKs3fnGbwV4=
+xEHYC5PyimPX0RbKyJvnp0tPXbvHUhUapA8RkamQclo=
+iK3yuYNm11v3eHFNL6tIM1U2x1UvNSu2LKs3fnGbwV4=
+Qn6UZstkMh1EPi2yF6UHWfGBY5WQh50G
+b/WI/AkkF2jwIZo7pz1I/y60FqoYrd3tpA8RkamQclo=
+L1LCaflWvS7MqP96I8T0Aotz8gnT8016Lfj2n/p3fLw=
+Szxt9+uTltRnlScNVO/wZsW9GueaBowJ
+qlsOU7DfSJ6On7xAGnZZo8W9GueaBowJ
+0gGUhVPoq4FS2PP/oyx+OvjKFewesK8PpA8RkamQclo=
+DdbE8s9UHxKAZ5+cZipd7LzFFTItJ0kHj5FRm5YPtmV4qi09YuwSoA==
+DdbE8s9UHxKAZ5+cZipd7B8/pFOkUs6LETiEDFewX9F4qi09YuwSoA==
+7Y6DZNY2xGUReV4ojJPyzsW9GueaBowJ
+MUvaf/O4FAoD3j6CW68L8VU2x1UvNSu2LKs3fnGbwV4=
+A8bgvci6e7DHa4dKkvWlNu9f7DCg/y6tLfj2n/p3fLw=
+LuqCxyT5eqkD3j6CW68L8VU2x1UvNSu2LKs3fnGbwV4=
+Z0C+uRrbTgjoUtrS39EMFfW4hrAUwseILfj2n/p3fLw=
+bC0ZMe4WGfV7vn1DIy3YRMosnbifQaEnLfj2n/p3fLw=
+mHMaFW+3mXt78LK1wgFqsvE53lfJIWocLfj2n/p3fLw=
+MUGuchHy9lyY+iTZGWMfA/GBY5WQh50G
+2Y/8uE7uzmOar/KlvxFeSkpgEZ36UZf7
+ETMOU/PBL7AmyEzzYAFEJZzj11qLzuXEpA8RkamQclo=
+1eviNsbwnWw7w2dXBnXn5lU2x1UvNSu2LKs3fnGbwV4=
+pliFNxnJUyOt0Sf5Ma0hnbmS8RD7jLqyLfj2n/p3fLw=
+LJnYp2vy0kN1+1NNBUCp7KbNDcpTSacIpA8RkamQclo=
+u5r9MeKdVQY0J64XKX8XIvGBY5WQh50G
+FA9RU0u9hWbsSOGxFKhvcn5pIN0aZoGBLfj2n/p3fLw=
+W1U8dTgfIZht0BJXIsZpqn5pIN0aZoGBLfj2n/p3fLw=
+LJnYp2vy0kPK/dCKGdxbdfjKFewesK8PpA8RkamQclo=
+SEUkF0YwKHx1+1NNBUCp7KbNDcpTSacIpA8RkamQclo=
+SEUkF0YwKHzK/dCKGdxbdfjKFewesK8PpA8RkamQclo=
+o/LbsWKU6wz62JyfVxB9rfGBY5WQh50G
+H/372TJs4CifRFCdYFYo71U2x1UvNSu2LKs3fnGbwV4=
+ukqENW9NXFefRFCdYFYo71U2x1UvNSu2LKs3fnGbwV4=
+DcyhFpYYxR6ar/KlvxFeSkpgEZ36UZf7
+pbMfZ0ig5mRaOMLupzW8PgIuFtMoFwdopA8RkamQclo=
+NzfXMbp6wmug71GXalubDsW9GueaBowJ
+c8IVTYb8CdPhErPWTsqkQ6Q7UFYyd1mZLfj2n/p3fLw=

+ 0 - 921
bigdata-web/src/main/resources/doc_result_mapping_vital.dict

@@ -1,921 +0,0 @@
-UAhzARPR0Qf10Met8kIgVw==
-+A8u/ahQbqKnd4baFu155g==
-0UKoe8zCXefPulK2WolA3Va5do4bdCEifkRC94tU/To=
-8Tp+XthtGfGQJKtG6RTzExokdeqhF+go
-XktB/ud1IdrPgmIN6ApKBPWxb34fTDWG
-K/Brn7Ib8sRcPaf9LJ+DBQ==
-i7JwU1nco+SBcqYOn/p3qQeOdfp1kXgT
-fg3VEZ4eXv3+GMRwzHLVqvWEPETOYDom
-olBfBBlxWjyM96I3Xs6a7SHud7S4gPqZ
-UkldRKmIA6XTeO8h3KzbE1JJXUSpiAOlSGn9O0wylo0=
-98tZS+rEmlkcMOLS8JGPFnduRH/K+w4XryKysOD+KUY=
-aEFLrAB9hgtXGbeq1ZPeL2hBS6wAfYYLS2Pp6MTDBxE=
-aEFLrAB9hgs/AeD9UyuBxGhBS6wAfYYLrRQRI1ydLs8=
-PyqpOhFEBAIbikqc3Pog+DvfIILEoAZjZbG8KUhskwQ=
-4bf/szkP4tz4Y5lplGxRjiFAweb+TtuRmLHSnXSr1tGD5T4kUWam5Q==
-xhWftWtq9ZvsvE6g9Yp2r8YVn7VravWbLVdWfmPb2YI=
-vxbYaB+VKJBsS5LUKBN7hzX/KtP/8Y1rwcxRug42nho=
-dbb/nqpHFMqECyPJL1H7IcshUneIso8BNOeVZhn/Ac8=
-Pwacc4yn9IubHghofvZJSjX/KtP/8Y1rwcxRug42nho=
-IO1oQEFa/v130m3TyYKftXdbFU4uJZSuBASzRD8CLbY=
-oBu5zVSHPPL8TDhhEAofO5Rsg7fqcFtnc1Zb0Iz+B67MMzixc8eC8A==
-oBu5zVSHPPL8TDhhEAofO6Nl1S8YsDl80Gfgyi0jxbvNSZ28Fqx0gUpgEZ36UZf7
-oBu5zVSHPPK8l8TifqYoZcgiOVobKoiYc1Zb0Iz+B65hBX9kydshYg==
-fOrTNgGFmiYaubfPs72f8quOEBdMUBdd011whlSYrjw=
-fOrTNgGFmiYplc2ZybWmWquOEBdMUBdd011whlSYrjw=
-qoGjKQFnt7YBK2PIIM9+Cwx/w4/vTBWbrTLV+AcRYgGBbwIGZjiRfhVMwnleooJT
-uvaBJAcZFNds2zB4pUp/NLr2gSQHGRTXuhV5lrnssFU=
-cc2O2ErPHjaW9lRUGVrS9EYaw/JfO4JTPEjsemsNdiY=
-Fm6FhlKr8CPYHkRoOFT4ixZuhYZSq/Ajy6dyqOg/k3E=
-ZEPi+GPAF+jugkF1qqDd+WRD4vhjwBfoSNL7p2JKYZg=
-oRqu1B35G5rbxfAeY2EVMK04iybxhohrBpdWO4Fg8Pr3QhuGSiXXyw==
-fuam+naSn9KgX+GpHsWCrg==
-J/ywEOrmnqvShTNi7+4gEK8nK0CULuGtskF4kESh+LM=
-yfAIL5bW83d7CgdhAuXHiUjCWF2zvkE1atKSiOnQI0Y=
-enu6avlk5YpYqoBsat2YbzXZgSUyF/GdvgJU7rpjpfE=
-7+jGLvyUa5/Yh0tep9xrO9DE8mLUkOBnOq4FtKDlq5o=
-6wlgpJFzcf7VbitxfgpQhtwMPiv1ajnLvgJU7rpjpfE=
-Yy+RisEA3WeacctNq0KkK/BTamT/jgXXGjFhHUGm/IA=
-Yy+RisEA3WfFKhCR9/Q+JPBTamT/jgXXGjFhHUGm/IA=
-EDe0NFCJQvZa3IGJc7gruP2/W1+HYjdDBiNf+1YVhVY=
-E4hT7N3ytDvTeO8h3KzbExOIU+zd8rQ7SGn9O0wylo0=
-E4hT7N3ytDvtn/U1rdYHwxOIU+zd8rQ7XVLw9eJaiys=
-E4hT7N3ytDuRMvbsctv8GROIU+zd8rQ7fSzrHtCtCfA=
-0gJJ4eT+QkquUkyijQrbhjwR40iYrlSn
-fFPdqoc78PPpKHShXNtYAEpgEZ36UZf7
-2VnBmYRg5zvda1Ywa4fZE7O+fe4P+8qM
-tFWoa+Fa+E0yY+Up6+gBRL58J9w2rdLWRPSDQg6jxMY=
-+l0W0xn2JisHaKGhyASQJYHYRN+xXxTBvmys7d6QFJk=
-wyAhnI9iC+uMnf5E827xCmBPDGFC9wgfBASzRD8CLbY=
-wyAhnI9iC+s0DUaFzexLGmBPDGFC9wgfBASzRD8CLbY=
-wyAhnI9iC+uELqeRheZkvGBPDGFC9wgfBASzRD8CLbY=
-j1guSEHHCuR4abTVpuzkqxioYo8K988BBiNf+1YVhVY=
-080IZsc81Fk4sUfChItYiA==
-TKNSNdqos1P0w8pIRafPiQ==
-8VitcNoBXAtX23Y1G5a6cQptsZ2H6OWn
-xPUAqLbOBlzRDNKxpCQAA8T1AKi2zgZc9YfRIjL5Ktc=
-QoDu3HV1C6oJz39Bb0uwVTdyV/Mx6XpSbENZYM316MM=
-SObVEgiERlXTQZdx1iZp3UGphsMK03t8
-YUxF9R1PnhFegbyH7wSWLG8pqmcRFp34J9+B79Ksa2kzBXeQmxljDw==
-dFBNHJ7NONdhGDlCTb1US8IDrOT9t+vX
-E15h7WxtCFc2CX7dMYQEh81QHv0WTE4JvgJU7rpjpfE=
-udYnRmH717aOlKx4CS8Z8TSfNvu6TNjQBASzRD8CLbY=
-zymIfQvgoOwD2nyIzKs+lU77OSqWg/c/3VSrUIlGaYE=
-6aKrGF9UZz9KFYkTTsqeykPwVzRAzwRPbHtWBq+Dwak=
-flRnb2S3MMdrSNrsd9xvuA==
-d6/WlpxTwSscJDcSrwbauKVaVePy5OzR7NLBEkDmDJE=
-tIEhYj+TusJEqHLqoaGmFMYLGNp/VSkVWRaTFzIkLGM=
-xtCriKwKEaXzEcoAZ2UDHrMZg+Ol+NGYF8GIy1NJkdE=
-Ct+/ZMeI82X673nxNvyJiu9GLm7YBOP0SJAqyeGLlGQ=
-YKH3VLPNTeyWdV5caABAiNhmyYhFEPDLXiguQ/MHYD0=
-MIqhjxJmusPrfgC7wGdnmKCUMFUcmUqK
-ZQ2LRXszz8kSAbY1DsWadOh//o7r6XxK
-/K+ThajQ/dfvcc6O29A2f4lqS/Mj6xYPn777VwNyqoE=
-wICtK1IUPa6W0zF49pWNSUeYGAroSv6dSJAqyeGLlGQ=
-nW8CI9k62L02mD1TDX+LS51vAiPZOti9DoBDkkMJqoI=
-nW8CI9k62L00aMbD7d8dz17IWQydvrHXW7k4wPhAGm++Peof7PeC6Q==
-DdYJ41tkonZ5XOpeZn4QidIUlWmOeVgv8HwQ4K/4B5ttY1CEpVlMHg==
-Gk8oLdRS3gxpKTjNikKsfLs9F4LyYomyQsjDFyh0etI=
-PFrAddEL4pzX0RbKyJvnpy9SVZGkU2DK+eba7duZR1lioLrTn8ZW2A==
-j23xQ58QAELVzHyFm3niykGyx5t7pL84Oq4FtKDlq5o=
-j23xQ58QAEJ8mBRbsBkfs3wcWqo7FXn4hNYv1+T6BN0=
-cn9SelEe5Hv+ubbNNz+FZtbskd2Q9Eo5Z5WjJulMlEE=
-/j0M5sfgPzLOk52if20mxw==
-fjMCoG0jWP70D9MCaB06J2uHsBqKgYJy
-0gGUhVPoq4G6hnX53NjgLrYC32YgTV1X3uOrqlqKCX0=
-BsWMI/N9HfOzbDHIoU2htbskWOWaLi4uZbG8KUhskwQ=
-KgmO1PFbNMavVNXf3J8ZWGqBMJ+Pk0DbXnwIH8A1QSQ0NfV+EiaCXzgDx8qs11DG
-MuMDNZcg7nZO0EmI9a+k5ncPD33t0ml2syt8HrP/pcSzXBgsQFYzuw==
-Pi3wT64utZrDnUvXZYRoA/Kj9HvbuC+X7NLBEkDmDJE=
-Xpd8xjvI4CCkbrgqDpZu05fAkIv2a/rRSJAqyeGLlGQ=
-AX3Duro2QJ+E/pbB/Jm1/604TgZpNwc1kHp6lXvE8SqxDWcnRW1BHEpgEZ36UZf7
-Z5YtqmbJBKHMbyjLTchoHtBGyCYVBnZyVbBCO8cUTWk=
-PMikm6ZOGyJ1m1inn08K6LbqHMzYOiYtFMZpp0RTvZI=
-PMikm6ZOGyIKsqVBON1zjKHT8+SKZwoVC8at4D0TvJ8Q/Sq4QLi9FQ==
-PMikm6ZOGyJ5h6BaDEZBhqHT8+SKZwoVC8at4D0TvJ8Q/Sq4QLi9FQ==
-8c9eljjNpb61eo7t6oDXmx1uXWlpRJO0fZ1wgfbo+vIkFStuDxoGnffigd5WxBh+
-NhZObOtoJl8pAeTv2wlQLgyGawPO7JWaryKysOD+KUY=
-kjhHUdlPTadHGAO3beL1pDyvysLaX7DZ
-1jVmhx/d4tH6DJeaEF8xKUEPKQo6lUkBZbG8KUhskwQ=
-TtKmAkYb6HnxjtxHyZnIw0EPKQo6lUkBZbG8KUhskwQ=
-3hheyJz3V/34SP0dcD7s71/4tQ0bMmAd+Ej9HXA+7O8I6vTWnQXQRw==
-Lib0vPfLPtxEpmEtu+VPzxksyOBEscR3iy48LWiKVlE=
-ZrU0s36NPVIPX8N7xPjKkL7qvKIC0DC8O8B+JsbxdH8=
-YQQzAAyWvKh2w8q8JxH30SFqPT+S5rzfFWN3xRThYNo=
-qFhKC4xvDKwL5mGLILBHXUiXRFo9Aa23AGxaLY4tP2M=
-joB4IcA83AWNSvebcO4BiL8LeKWpgSGtXSbGJs3iiXG+Peof7PeC6Q==
-1cg7mRlV5xONSvebcO4BiL8LeKWpgSGtSKqx8eVEK7m+Peof7PeC6Q==
-C6UiFAmco8y1FUfOYTyArARi+kgSSDQkhSFrjI+fSRY=
-tFjZ6z0VdLlYqoBsat2YbzXZgSUyF/GdvgJU7rpjpfE=
-JtlQTh+8G26zbDHIoU2htbskWOWaLi4uZbG8KUhskwQ=
-JtlQTh+8G24c6kU7pH5cVbskWOWaLi4uZbG8KUhskwQ=
-MgUw+6QtiyqeKpuD11H1CgRi+kgSSDQkhSFrjI+fSRY=
-b1iz9138JyavVNXf3J8ZWGqBMJ+Pk0DbmhY4VLvdi4U0NfV+EiaCXzgDx8qs11DG
-nY40Ut+RIFoc9nsNL+OXjJ2ONFLfkSBaYl1GqHN1GQA=
-pyxGPw41ncvMbyjLTchoHtBGyCYVBnZyVbBCO8cUTWk=
-DMpn0HNqQvEKsqVBON1zjKHT8+SKZwoVC8at4D0TvJ8Q/Sq4QLi9FQ==
-DMpn0HNqQvF5h6BaDEZBhqHT8+SKZwoVC8at4D0TvJ8Q/Sq4QLi9FQ==
-d1AxPOpo2Cv93JNqsUycwwSLEezwDmWg/drEPLBEyQw=
-A9EjgvwkmHo+03JbZpPE8Hfn1DKk1F/4Dn+yn06ez/M=
-BhsjQLQoO71W2IqCAxB59IlqS/Mj6xYPn777VwNyqoE=
-BYKkcMrlbA8rs5eHoCDZFp3Pvk80g3i5yzLSqBF4Qps=
-C82vb02Df1JjaLTyEAOGq4L7OSgM5NFk
-/UXMNRAbEKsNb1xbo65ynxMlWU6alBDjO8B+JsbxdH8=
-rc1zi+a6JBrTo+B+vTsKY6ZyCMGQDyCDwQCJH/19Ln8=
-iF/Iy08qg25R6LM7+ZWh3vAhhfcEVqY+BASzRD8CLbY=
-OLDqQX03hXI0XKLw+5TFRUwNGO5Ogn8OZqxkL7I2NVI=
-itxCkCgM3e/HR/yXsgqARTWy3QE3h5UCAGxaLY4tP2M=
-LesXilJbw1zU1HHtteHSSaq9hvWLhhkTA1p8C3jFxs8=
-LesXilJbw1xs40O3vb/386q9hvWLhhkTA1p8C3jFxs8=
-8hOYBSoW2rw357iKkbbJNKvmAiJ1O7EFwjQM4EcB0Tlw2tKUH/Mr1g==
-a2qaEgH2uitUKTzJfTzWAak222GTl6gFUiIv/D5WOos=
-krrruYgapLXZllAv/2HVX9L7+fEKZv0KJAzhCMCR95WpdbcStATXpA==
-yj08ZqkH6UHP1nDhegL2lso9PGapB+lBIh9npNstG2I=
-xxZWOqQuI9XdlcvkMNg5KscWVjqkLiPVPA+yLHt86QQ=
-N87pCW+PJ61zb3nyqhq4LeRQWMhHBjWpB451+nWReBM=
-mo9+1qJ1Bj+lczdM8fSw3A==
-YwhAwisuJxnqwH9CZg8yZwTmQu6VtReBZ5WjJulMlEE=
-p8rSijy4S/z9jIKrcZHCAg==
-pq+h4zIgi8NXOVOSA1ZI6p4v2SAHQkIu
-XcJy0D6ZIbnmSSZLxUCJkp4v2SAHQkIu
-8adGIwlWWpyadbJk4GAiXikAN/sCm2Ft0q/AY+ii4C0=
-/hyoJ0OpfoWC/LNm9Hp9WGar/ECPvFUaF+ILpw1ycyXIzRRf893Duw==
-/hyoJ0OpfoVnEHJZIsQM9fdiYTQ1i6WuF+ILpw1ycyVBl8n3844wlw==
-GSlPybW1zPDmSSZLxUCJkp4v2SAHQkIu
-8TGR1QwfnTBpotEfz8I+YLKXV//u3jtcZ5WjJulMlEE=
-SpF2P7OBV2wegz8zIdldwUqRdj+zgVdsNJGmuEyjS8s=
-ZvZZTZ7pziyNqUSxxCASkHzEZm9ZPC4O7NLBEkDmDJE=
-/xXph/WD+DB58snWo/4AUHEVx3SMYWgo+E2a+WrAOSSoUdn6Tyi38Q==
-/xXph/WD+DC+1a2XxvflnXEVx3SMYWgoGPBJmx8X1uqoUdn6Tyi38Q==
-cRXHdIxhaCiPVM7ZLMk1VYRdNR24d3uPFq3wx9naQvdSzlBthODeKA==
-UrlPSgtiaPLJkWf9fy2Raw==
-gPP0pn4Vnj8nXqmtlcEY1T1bJ4IjKcyniy48LWiKVlE=
-9ATztfXQ4YIsHnge8Xnl74nl/1XwI7OU9+KB3lbEGH4=
-4tpRm69RvqsKmD/nTTHWgDnpkgGKkmzg/FRS7OcKkCw=
-RMvBGSygzAh9w+Rjqt54okTLwRksoMwINA4hp0V8TNo=
-kSAhO9CzcUTmrrPnrDrHqx973JVNVnZuy4x6AQXguls=
-ecRd3YmlGXsYMJDHu5JraQ==
-u1c81U2XanhA7GBUVpOV/rIrbOqvt3WS0Zi/2VsQQhM=
-/FLxB86zFvBgoVKxRjTUev2/W1+HYjdDBiNf+1YVhVY=
-+f2HbkfmqV4iJ/UW1nvPJjFb/LPZrxpW/FRS7OcKkCw=
-T5kzYYlVa6JpWOS3AlvTLOkL/m2R6SzxEwsL/uWWMxOlFI1nAKhgow==
-EOBt6VwRTEb4Jqp6Jt1+/Cnc4TyMqf+x
-HcoRQvqpZkoOfkFfjiFYBB3KEUL6qWZKghXYDLDGUjU=
-dPtc1NlBhWCrAYN/GMqzxZ4v2SAHQkIu
-2e7uYOPTI79eqnfOaRKA0g==
-UaSY6fDNqjhveVf/77+GhA==
-TG0ZzSWO3qWlhLmaXm8CGkpgEZ36UZf7
-Nyf0K+tj7F+up+L02Mfh87j+/5/peP/7
-bPRFWaAJ/eQcy9OKY5JeFrsfZbE2TFcHZbG8KUhskwQ=
-hlNWSTif4T6+E+KSh/Q3h/h1FFqRmzitav3bY6gAyDY=
-nrF6JY01jhDbETTC+K3nXQ==
-MRVT8OqakW5fniN8e8zu9WtAsj+g+txU
-CriSCwqltGpIwEzRSy6SDDrAEiAbHvMM
-IQI8TdWPqkb4gXCux2R5Aw1Jk8rT54ZbGjFhHUGm/IA=
-zv2LU12YL5Y7KPGqDyepes79i1NdmC+WVbBCO8cUTWk=
-zv2LU12YL5bb2INQ3k2Ym879i1NdmC+WHJcF65EK1c4=
-JYCkkl3fmOaP+TmIjhZGL4lRyZKaVKmgImsQu9NuQ59w2tKUH/Mr1g==
-nwBxkxtVkmhO2KMxulPDWhMn31WcshlN
-gJ0jLgvDLuR9tEYyqaMIGEyVFcKaJldi
-aS2TcLa0weJe02tnodIhaA==
-koyqxJA/Nmqz3H0lWP6JIv2/W1+HYjdDBiNf+1YVhVY=
-MWb0E7WsWMYwFyi1IaZpA4szgo77Q3CVZbG8KUhskwQ=
-s0UcSmE9+e9YiwxTuBnVjm7shZQ9NQdrIsY3y+RgJaU=
-AikMxc6U6Lq8UGbFh3xJZQ==
-nje2JJx5AaZX6+jq++Ubz87/tACVFJMR/FRS7OcKkCw=
-FIE0JiVOEyCplffU+3Mc1xSBNCYlThMgCs2+9Axdk2g=
-FIE0JiVOEyDXmH31BbEr+BSBNCYlThMgjfksl5blglA=
-FIE0JiVOEyDsK+w2tHRuPBSBNCYlThMgVIz7qr8YKm0=
-FIE0JiVOEyCTrA8NkwfiOBSBNCYlThMgVIz7qr8YKm0=
-FIE0JiVOEyAjGqVvnw0T8xSBNCYlThMgWLZOJ4VLhx8=
-FIE0JiVOEyDO+uyfk2ixBtPkHk6/MjDxcfrBxkpmJ6QrkFqkuiJw6sm32hUS/XIh
-FIE0JiVOEyBzVlvQjP4HrmpILQwZyM3Qp0H5SWh9xSdOLOOxcTbilgxH7TvUCTrr
-1j52Uc5xWCuL6BW7WgsRB2zyzv2IehJ8ZbG8KUhskwQ=
-O2VvNVqML1KvVNXf3J8ZWFLkXbaSuuEWPYlD18L0k/c0NfV+EiaCXzgDx8qs11DG
-14XA9bJFfcVj1OzUC2h7tzvtKcbFvrVzCTLN0w4X8fKCYhVsX1ug1Q==
-p2VzEvdv8akUV6g7W25sghn1AyZOJwhjgW9Ccc2cMbpPDu6bhIEPcA==
-7JE1nvqVpkpBJGQEgM2n1eyRNZ76laZKfds87HbRifg=
-7JE1nvqVpkoc9nsNL+OXjOyRNZ76laZKYl1GqHN1GQA=
-STcJ8c/FcFsa1Psz+IIZS0k3CfHPxXBbbQNtrV52HVQ=
-g99MO8FN1D5MfME/tSkjjpf9MN8+DZPb7KAVG2lPb+RQMMXI0pTedvwLQyzdi7io
-g99MO8FN1D7q5VENJBaBvyNk4TwrzSIw7KAVG2lPb+R1zc4x08XR3/wLQyzdi7io
-g99MO8FN1D56Fddr7hlr8tML2v8oYEmn3VDoV3QsKv7AJN20uiDrtUpgEZ36UZf7
-g99MO8FN1D6gaXRRrB2In9ML2v8oYEmn3VDoV3QsKv7AJN20uiDrtUpgEZ36UZf7
-qMPQaIGrpezlqOQPaBru2Jq53E8FSxJDiKbyU7+plsSzADtSbtsJDRHrOQg9htYx
-qMPQaIGrpezlqOQPaBru2C4J8p2ueG8MiKbyU7+plsR4ezu3JUMN+xHrOQg9htYx
-Y9A+gg9R2s2fQim4e0rjPWPQPoIPUdrN8oScOsjcRZs=
-Y9A+gg9R2s1ushPSH9+/SGPQPoIPUdrNfvqbuOSwODA=
-vryxtT6ncK/qaRWtQGLbON/oJMCdPMlZda0GsrQ3i+bfRvLZZgm1nQ==
-vryxtT6ncK9QXe1IsSYqxV5ZoSCq56ESda0GsrQ3i+bfRvLZZgm1nQ==
-vryxtT6ncK/yfQNxklPMxm6W4E4Zzonz+912MVnBN13vsQP2pokabA==
-vryxtT6ncK/8wmSqbN3Wsi7sSIe/MzKWxKb8XsulpWDOD2fB9G081eecLLWV6SJq
-vryxtT6ncK/8wmSqbN3WsjOesBgPJHVOxKb8XsulpWDOD2fB9G081eecLLWV6SJq
-vryxtT6ncK8lSA0fG714oDI5Q7lS67Aju7QdzsZvwuvsygA4/cwtRg==
-GRzyUl5G+x91m1inn08K6LbqHMzYOiYtCrKlQTjdc4waSQ0ihkOTZA==
-GRzyUl5G+x95h6BaDEZBhqHT8+SKZwoVC8at4D0TvJ8Q/Sq4QLi9FQ==
-DtDdl2Yw9CqGaz4t6B+0hOpDNvv44seC
-CHLNhe40sNobyMLVywzPnWw2ZqTGDA+b
-UueKL3akmJcxYSIr3rZ5HV4bTV5MNJvEZMTIRQftDaD2x6JFBPAbcA==
-UueKL3akmJd58snWo/4AULa/FS+XVNbVHqWQ/oVLEK8=
-UueKL3akmJe+1a2Xxvflnba/FS+XVNbVf2HWawEOSko=
-m7o3vEdJZMRRwKK9rzYzmde5k+9MeidX83dXIoHx4+e8Zr+1ZzgxAUpgEZ36UZf7
-tr8VL5dU1tVUXQGuec+kBLa/FS+XVNbVMWEiK962eR22kqt+Iq8ONg==
-tr8VL5dU1tUxYSIr3rZ5HV4bTV5MNJvEZMTIRQftDaD2x6JFBPAbcA==
-tr8VL5dU1tV58snWo/4AULa/FS+XVNbVHqWQ/oVLEK8=
-tr8VL5dU1tW+1a2Xxvflnba/FS+XVNbVf2HWawEOSko=
-FuGDanOqERWtktBprG3sQznybeZeC7bgZ5WjJulMlEE=
-0u+yQewY64yZkH6M7ZzjRw==
-prfJfRawKQUqCU/+qEBgqLgI5EXUXdvIydVsDztYBYtcy56AEq1wSahR2fpPKLfx
-B++XjWNiwxp2xkUZqwhVVp4v2SAHQkIu
-vXieyS6VHlhCN0YDeNBBtmFhI5ctmLmD
-vXieyS6VHlh/MyisL1m732FhI5ctmLmD
-a2zCNODpNjJHVSyomC3RNp4v2SAHQkIu
-VnrAleiz9BcvlTeGYr4z0GGIHzfa5yuM/FRS7OcKkCw=
-aLicfrOGw4vp1+B3EtTTEWpu4I82OBoR
-PA6vPm9kiUYaHZ7J0lO1gTwOrz5vZIlGAgEpDB+I1Vw=
-PA6vPm9kiUYqqtObA+jC6TwOrz5vZIlGAgEpDB+I1Vw=
-a//0Cgxjos/jQh3nVG2RciXBPH2DKdJv
-bBAbveiPWmKJ/PHXGtzvi4odSpEvESgm
-WmuWJuTwCRsYb+zNYf8YoEpgEZ36UZf7
-Bk/nP68MuaWLcOureSEh6wZP5z+vDLmlg7Q9YeM+5Os=
-v4S90bmdTGGB6Mv+r3oUPb+EvdG5nUxhiGlTuYvwdd0=
-v4S90bmdTGEqqFf1kGpzN7+EvdG5nUxh75dIY3QhG4A=
-uEm+zGdzejuZnF6DuRckiW27nvnjqQYwyzLSqBF4Qps=
-RjlHunEZKP0T7ne662LsTqsq5P4L6Ap+/FRS7OcKkCw=
-YSKAoBxxX2YjAs+T2gxrss9LDbQ33mH7
-w0FcE22waepb0FRV5yj+tWApXEYMyMBPszksQO0S2Jk=
-+AD/rZpYED9L58cEADwJHq8VNz24YO2L
-Q0J/+EnHM3rprHaPoFnSBc9LDbQ33mH7
-GBoXxXTOiUUOLL9kDKY3ChgaF8V0zolF4PUbFHPSm24=
-GBoXxXTOiUWb6DKgZ13YZBgaF8V0zolF4PUbFHPSm24=
-IMHDeNUnTX3QHYMe2/qu5fccs0BDbFoqV2Le1m4XGVw=
-XBz/0WesuX+W5RytCgvxs1jKwedLHULy0FLeKWatmmsM+3+ZxP8wKA==
-IcfqYrsxHcsRR9DGg7KxUt9zwNItyBWhAGxaLY4tP2M=
-oPhDFaqTtcfAvh3kNk3SJC1t13qMSy/k/FRS7OcKkCw=
-t+fc8F7KGD3YP+5g12Xd/TckQ1lM60MxbIFXurBxXlF7arQIk4twhA==
-+9YAgXKwnnDeVrqfQty5mKp1S+3tbEMyXnxmhPdKEuw=
-ZVKesIbC5UDPJ23f127MIBfmfkKXu19EBASzRD8CLbY=
-P1EPh/GVwXTPJ23f127MIBfmfkKXu19EBASzRD8CLbY=
-RV12FyWi2m9NGaQLxDyRVy9Jtri7jcCu
-iUchhe2/rwmo9N+4b9O4Kj7Nn+r5o8/wBiNf+1YVhVY=
-puGqUHg2pdbCcVOxsHJ0vT7Nn+r5o8/wBiNf+1YVhVY=
-Z9ulCaAnj1wqVsD26zR7QY2A+dCHYsY+QsjDFyh0etI=
-V/cwxO1va3QNG8dYx1SrqimeJNcxLvwdfkRC94tU/To=
-tEGfN05J62p7+mtEP+W2zmofQiDAQV1+YEg4WqLcrb0=
-caueP01nutnAYhfhdZc0DIddWEMbjnMV0Zi/2VsQQhM=
-VynNxYGlkQBi1DM1j79KO+Iiw5mWoSM+bkJ8I2Mw5U8=
-BT3BDz5UVQtCIBzPA0Hzjw==
-GxLyab77WIVNVxv1Q9UBH1GAC9Z34mk5RPSDQg6jxMY=
-UtCC9SEz4uw7KPGqDyepelLQgvUhM+LsWDm5Lq8Ayo8=
-UtCC9SEz4uwuhTHXw3/53lLQgvUhM+LsWDm5Lq8Ayo8=
-EQ0++UQ15V6yYb3mwQVJHhENPvlENeVerOW0a497QYM=
-hLQNb8ee7VmTlTng6OND3TuNbdkE2wQkfkRC94tU/To=
-yvOBbTrbEUqK3KXUbQsrtMrzgW062xFKFpcGMsPOjPg=
-L4fv7s2vspT93JNqsUycwy+H7+7Nr7KUpZwvaxMxA0Q=
-vlwcdwZ8FBSYPUdk0/IdWYfMR9GClb5O
-eFhYVPfX+7dw0mETqn25yV53qiy/ifzJOTp3rprBbf0=
-XneqLL+J/MmTlTng6OND3TuNbdkE2wQkfkRC94tU/To=
-Dm0OWrp7Uv2TlTng6OND3TuNbdkE2wQkfkRC94tU/To=
-3vSAWdieYDMI3qYrJnE6eQ==
-+JxKobHWjnEqmP86D2wswNhmyYhFEPDLXiguQ/MHYD0=
-TIsVL5DUBcEqmP86D2wswNhmyYhFEPDLXiguQ/MHYD0=
-TtKrGpFJaX/rxj9pcc7diJ4v2SAHQkIu
-jlWMwTmo4B8Fo94fcHp1+45VjME5qOAfHRufi7Dz8+U=
-B7IoxD+rD6TVlLrDUTFPoAeyKMQ/qw+kv1mdfqrePJM=
-UyDbWxQXOCFyWkMtzNxKjZ4v2SAHQkIu
-mY0AC8tbAB4iVnQcMMKOVtvdiJSj1vI8/FRS7OcKkCw=
-ttuFIQiBSmBR5rYLL1hCP7bbhSEIgUpgkDtcX5PjG7c=
-5pjjlw/5pTHPgzhy5V6T3E7T/M1lPh+AXiguQ/MHYD0=
-gftjwjXII3Ov0CQnXM3WW3jmC05lUniT
-daOC776d72/lK4VJ8PG6El3CctA+mSG57NLBEkDmDJE=
-Qj/P9cC8CL7rmNwu0Gjmqg==
-ZldvwrHIQlaK3KXUbQsrtGZXb8KxyEJWWajxrUJ/4cCUhW8p4wsnQg==
-qKiu4WzYyu4l28Z/OBqUDQjmhlLYngZHYTDxNHZVHIA=
-lTjIckuiCeo/trxkeqgXE5U4yHJLognqmyNEplv0gDs=
-msQg8I9ogkdZtqiGCIo1LZrEIPCPaIJH4Ogsn3YzA8w=
-msQg8I9ogkdRPUvVLndWi3oADwE6jljqUXu0DMuigJjeGliRkMko3A==
-msQg8I9ogkdJ03CaLUlm65rEIPCPaIJHc0JpvX+sz/4=
-PFzyvB8tBgl6AMdku3vLEzxc8rwfLQYJwN+gCQYkCxQ=
-bNUypw8nkn1/lXqO/WRoyX2oh/4BEJQQZbG8KUhskwQ=
-7cZk1APtn1no1TJapS3LWTo0sQbkHpz0XiguQ/MHYD0=
-g2+7gMKiX11kcZfZMtGIzQ==
-MwF+ApR9qK1ueHha3XlU9iOCFug3Kgau
-dJpTex86WAMwlq7FCRR3cHSaU3sfOlgDWBTa+1hjixc=
-KVqkkJ5fXY5iHpImQyttJilapJCeX12OnU/X3u2ChHg=
-GwsdThjKocGlBZ6ez5tswRsLHU4YyqHBnd+j/hoWgPw=
-mvxKCEHginqtqkbLwKwK2WWwW4Oqjd4b
-J6OVmsxN7uhdUU2EqomYE6PFx/R767viv1mdfqrePJM=
-gouVrQMvdA4QnRCbG8EiZIKLla0DL3QO4uW9uAuG3rY=
-JYTCz8oz7zDGhUu07Atsbl50ZywX4LKbpPa7GqMmqRE=
-wnBrmsLm/mpGqTcZNjIJwT2mIYrdhLxA+wj8SNfzdio=
-xXzCHN1kDmvVO6ScbP8HHHoLdSKNitjSyzLSqBF4Qps=
-wCdkMHwxmXmWx18mJMS+bAhiIOXw/dSaFWN3xRThYNo=
-RtVIoGlZdw1iOnxrdZMC1whiIOXw/dSaFWN3xRThYNo=
-aX5xZ6VBA+eYC19sDmZUtT9/g++8U2v1/FRS7OcKkCw=
-7ABKXB9DxjyYC19sDmZUtT9/g++8U2v1/FRS7OcKkCw=
-1P96bReUID3AlU/9MRyvVdLxIpT5xV7I
-wN3A6tAeZF5+VBc1ocwqSpapJhMHdXdQOq4FtKDlq5o=
-pgFI7yYDU1GNg9YQPybpwZ0dczEE04sfloEotSOE/UG9bc1pwK0HZvfigd5WxBh+
-aSU0Z5dz/yw7tq7Zt87ggOaB2/MlSFOr7eP0VGZphgp6QxYuwwH6NA==
-wyPiA7heMwnLm4U9qLQID8Mj4gO4XjMJmyNCWr9DFf8=
-ijDltQ2o6KeBRbqtqzJITR7oHj6ARY4X7eP0VGZphgp6QxYuwwH6NA==
-wINucbldLHd2SQMMSiAfccCDbnG5XSx3O3kAeP3eRNU=
-8G1JVfLQ6HzTDmnqIYP0ncDdwOrQHmReRUHLl/7+aGs=
-8G1JVfLQ6HwRuo+k93q3SPwiM7mwmzc8s4swgMue9cM=
-iVo7nF2TcX9GqTcZNjIJwaTFXWHUVGkFzECi/beW+c2jlnFqmomQFQ==
-/CIzubCbNzzTDmnqIYP0nfwiM7mwmzc8DlOIbaCM4Mg=
-/CIzubCbNzzdspKklvEj0YHAG2SAG1n5loEotSOE/UG9bc1pwK0HZvfigd5WxBh+
-/CIzubCbNzzkzFf+CBlT68dC5MDxoo8i31KXSW07L4ygABg+qYtpiw==
-IQoKziC4bVPIw8jqT7fOToNqLkNStzNN
-iuw4tnsoxt8ttku5wjNpxNWzYFFI7AYP
-DlfA419wTmEI1IvF1HAZjlSLGtVzu3Za
-PmUjDqGidjpGCRFgfNcPC0pgEZ36UZf7
-TyZCs03OO63lSWJyA+jnwZ4v2SAHQkIu
-aghYWkm63ABgJuQ6Kx8gJH6zISq+2dfp
-RODIkd4+490odhzhWNrlBEJVtM7/jdB3
-KWkJUMmP3HYodhzhWNrlBEJVtM7/jdB3
-WAnIapHmV3mB4HQmOR7LsSHud7S4gPqZ
-trHRY+xCSogXYnyZ6ZJKJQ==
-Mbmi/A90nyXsLhhGFT5yEwI5Pku1psKZWGgkX+sK4nA=
-AYZg4FtyP4GtN7b+a7LftuovjntMc3SiOS7F4oME4tTXOtisNdGIdSHud7S4gPqZ
-IXkPFPlOVIclB9lZ/ubIXYMYaUjdQ0MUfkRC94tU/To=
-4e57L86Ihfymsz6ZSPerfTwR40iYrlSn
-OjSxBuQenPSl3Rk1R0TSjxaT5VpKFjCU
-eQHRBFxMDWA7WMf2BIknx+1UK4der6Bh
-qlgeYnp6Gd/HWhpttKQ/A6pYHmJ6ehnf4oWMbMfUFIM=
-s5dYBjMytR65X7ZXj0Uv0rOXWAYzMrUenMquyOOoj8TYzz3r3x3S/g==
-s5dYBjMytR6cyq7I46iPxKGKwqAqdV3aFEW+IMKyBD6qXe+ntv8tgNlUX7DmUMWM
-s5dYBjMytR609CNTmM0EPbOXWAYzMrUe9VqK0pdvuTA=
-OlZQA72ZDZrkbekNMKZ/hBs3GT70ciCU/FRS7OcKkCw=
-sznBlA3nS+ZogDNqJr8XssnxHmZ0xlqrCwE1z6B/Blc=
-sznBlA3nS+ZPW0jcwUQqeZhxXvfDVJr3PK1eq1q1hqg=
-sznBlA3nS+ZCyqr21G8fPphxXvfDVJr3PK1eq1q1hqg=
-ahdHwChX8/YwWU6jaieZ+BSvcdPQaTCEeDLAwfuEhcxSzlBthODeKA==
-ahdHwChX8/YIayJ99X/P3xSvcdPQaTCEeDLAwfuEhcxSzlBthODeKA==
-1yw5jiqncGQgfDHj4VDjengywMH7hIXMUs5QbYTg3ig=
-S40MCyYJDO7z+iX0vzx92S9Jtri7jcCu
-ZUV41LY+hoSZdtCZ3hKGwYKHQrLAKeg6Qo+b5Q3VZwY=
-LAphuzvX0+0+flCDOeksxew9uXjHghAXtHIsU9VS3ZbTdl0SvvSiXQ==
-LAphuzvX0+2k0cJZEj9B9ywKYbs719PtTg0uaio5pVI=
-261M969mfldVSyhHkFpyGOrn2pInliil
-uzrG7v+xI+Q2toyDMjukNoBPclwdJCClQ4kUfjALs6VPRD42R84sWkpgEZ36UZf7
-wxSr1LqU3fHHWhpttKQ/A8MUq9S6lN3x4oWMbMfUFIM=
-3RlDgHP4umsLZexAxlGQQPoE1ewuutCx/FRS7OcKkCw=
-sLtOhy76moLqLN3zrEQ3Gh/bZ5h2VMbzsYXDsix/naKttPD/zSXCrw==
-49KBr5px2JYLZexAxlGQQA/xjwmODKT1/FRS7OcKkCw=
-MEV2TdfjfmzX0RbKyJvnpy9SVZGkU2DK+eba7duZR1lioLrTn8ZW2A==
-POvGieO6dP841qXLnQ314EpgEZ36UZf7
-2NTocBcJ8he8kWtUJg+fl/M7DZlS4NTJkIWqd33DqIQ=
-bQJtjBvartf659mJclaWbZ4v2SAHQkIu
-aDxpJoN/PwrKvVIER3PSH54v2SAHQkIu
-aDxpJoN/PwoVCwQVXbbfVmFhI5ctmLmD
-tGdCVg+4dFz659mJclaWbZ4v2SAHQkIu
-7xlDlQOfCyqCx6R/+34bDA==
-wuAmLXM9TGuieOyycJPd7zVJ7JvToHql
-mChduLRUinAZykcSFRuKfaSYfF1gjMHD/FRS7OcKkCw=
-p04arrU2thNrOBeZqipgpU39yjFwiKfg
-FeoDIuhlezZZmeRVdBNeeO7fWLQO2vAClGL2bvCVjbapdbcStATXpA==
-8uf7LyAYqw2Dy30ukFEkoEJVtM7/jdB3
-mv2uQ4EChG8mfUIF63yPPTJGfdvFIM7qyzLSqBF4Qps=
-uh5/ZXF8ZmlYvrUEe65mMBokdeqhF+go
-AatyJrYwLG6o7Kqva54ZpEjNHMkQfY/4ryKysOD+KUY=
-o3VwBTezHdeW2Bttl0aNLSXBPH2DKdJv
-ukG5s4B4LnwgTj12gis6/liiRIPsjsUx
-Be1T87t+ge6tc5EZVJ1itAXtU/O7foHuHHIaGk0U9zw=
-xrfSbDQIiw6BVtlZvm7IEvu1v7COj+SP
-q3wgm/88Ra/5FA/QNzKqWCHXZvfEP0LOITMjyrs2LzEVvJK+I7rN4EpgEZ36UZf7
-JOdzNgAMU759VZlINNf8oPo5mwMGKOCoXnxmhPdKEuw=
-TW6J2NnKomjRjda4eHSttddwjnWQoZ6JXnxmhPdKEuw=
-UCea6V2V99m8kWtUJg+fl8VQQlmc8cfJ9+KB3lbEGH4=
-ti7QyiW+DvQDnJXyavsBY1pYjy7n4cBmXnxmhPdKEuw=
-neBA0Hg47enJ3jcgMLZ9eVnFrddFwuGJ0Zi/2VsQQhM=
-KuqimFrtBRw9p4AbeKY1QCrqopha7QUcHniTH44xu20=
-KuqimFrtBRwh0Lh+SGRenSrqopha7QUcHniTH44xu20=
-1kYYzeJGLPv9rV/eju6liYCLXzVQoD8/e449tdYe94rKkA4tvo+sye/wnylh3Khh
-1kYYzeJGLPthx5yON3PYAizlA128LJ/Ve449tdYe94rKkA4tvo+sye/wnylh3Khh
-2auQrCxhHIsXxJ/Vgc4ukCDdRMaMynFBZbG8KUhskwQ=
-HLbONjPzahBoL9YvcamSHRy2zjYz82oQgsNZzcOOA/s=
-1AZ/RVvycEl14yxy81WxOgP5E7pSsB8CPH8zC+3Mpsg=
-sEf/UWY8VGJ9pUw7y+s7ng==
-CsgKSGU0iuEJONZCYhlqXJZCaZNUo4ux
-5ZoSjErEXv5q3gx+pOPZFIBxX7BKuFe7X+jl4WO0JoA=
-5ZoSjErEXv7Iu82pc8TOLinOGmZl+yPRF5IjhLtUo+tSzlBthODeKA==
-NJOpP+ZmbbXzovLhx0nRBeihRHJ/6xdnv1mdfqrePJM=
-uFg/Yxg9PLIs1IocUs/TPaITt1ZHvAIZshY2WQ4j1rF8+IQk0DRVeRokdeqhF+go
-uFg/Yxg9PLLAzQwt3CVOC3irTJL/yqb1shY2WQ4j1rFNZLf4EJk1SjfLJpt8Vovi
-uFg/Yxg9PLLKhZHCTwCZCsPS1iEu/AlBshY2WQ4j1rE92OQO7YC795UUf2qRojva
-uFg/Yxg9PLLKhZHCTwCZCkNKL3gSmEdEshY2WQ4j1rE92OQO7YC795UUf2qRojva
-uFg/Yxg9PLLKhZHCTwCZCjNkLr6v/eyYshY2WQ4j1rE92OQO7YC795UUf2qRojva
-uFg/Yxg9PLKQO5aORBE8r6///N9btsABrOI77LvpHbGXjb3OHxwMOA==
-uFg/Yxg9PLIeFZSOHSSEJzzmU+FOUsy47iAp+OLPslE+HhQneOFfyA==
-uFg/Yxg9PLIqAOoyJRKzNNfmCM69+1qR7iAp+OLPslE+HhQneOFfyA==
-StcYgkZmEOHWY8Wkr6uM1krXGIJGZhDhoOkqcB9V0N8S5v0ru/ArLg==
-dn2Qsy3GvOjCG0apwlqyg3L6sTmLiNI/Z5WjJulMlEE=
-UlIz4dzbI0k+Cust/Q8kQUtCzDBB5yC9y4x6AQXguls=
-UlIz4dzbI0nulS3QAH/ZTsoeCQUFs6ThXnxmhPdKEuw=
-UlIz4dzbI0md+6Clu3ULALcXx896jE8quuw0Cza4wiNSNf5GnzWF/A==
-GdeJyUu69/xtN63c6HS/sb0JfccvndSv9YQ8RM5gOiY=
-FpNKk6eB+A4qm2jz9uA02NdHgJZGvhHUv1mdfqrePJM=
-FpNKk6eB+A5YMT49lLPDttdHgJZGvhHUv1mdfqrePJM=
-FpNKk6eB+A4HQ8KBWkE2XddHgJZGvhHUv1mdfqrePJM=
-FpNKk6eB+A5tN63c6HS/sddHgJZGvhHUv1mdfqrePJM=
-3BvyzjY734YXxJ/Vgc4ukCDdRMaMynFBZbG8KUhskwQ=
-mHMaFW+3mXv3Jlr4aUyUxDOG0g8aruds0q/AY+ii4C0=
-6F5GQVOYgys9IXdVF011y04DNDqPz7AJfxeqLNxDZYHQ4oSphgWeJUY7J5N0BR7d
-6F5GQVOYgyu9K39z0IbIS8PS1iEu/AlBfxeqLNxDZYE92OQO7YC795UUf2qRojva
-6F5GQVOYgysA8NoV9br4oa///N9btsABi6os1lwE5oiXjb3OHxwMOA==
-6F5GQVOYgysMsGpX1Cg1tDzmU+FOUsy44U6STSG2x4A+HhQneOFfyA==
-6F5GQVOYgytBVVAuo62O/v+qGUjdpOwqy4x6AQXguls=
-fBxaqjsVefhhS+omi+D74kGyx5t7pL84Oq4FtKDlq5o=
-FnfxNLEkTXjY5SqWtF0fFEGyx5t7pL84Oq4FtKDlq5o=
-ACGQHmpxH3CcWAeClDsRsgAhkB5qcR9wIhDf5xWMPgU=
-5rBML9eUHrTlW7CZ5piJke5H7cZvP3SFFWN3xRThYNo=
-GBtb3Taaxg9+pwopOR2fnswgP7id3TZM9+KB3lbEGH4=
-+PHN7dej9TzoVovvOkpQXRokdeqhF+go
-ab7S4LKSKOlvSJ8UQFpsYA==
-NSl9QaY7V9I54BJ6hAksJIJaywY2UE6j
-F3Ktohq9lLdLfqM7lPsEW7uJAxZ+VzmFPH8zC+3Mpsg=
-GszjdweBRUV8TFxTbDGFTbuJAxZ+VzmFPH8zC+3Mpsg=
-cVfxhpHQZ8tug8Vncn07h89BZ991h47P
-hV16UBMsD0c0XKLw+5TFRTSwX2RDWdyI8ZzcfVB2VOHsptuiVsjlCQ==
-lGlvQ66dwCRsgjKRmXfbNgyliFByaV69oGl0UawdiJ++0EUxnQ9bjA==
-lGlvQ66dwCRJN34P0riyJgyliFByaV69oGl0UawdiJ++0EUxnQ9bjA==
-lGlvQ66dwCS+RwVcBOPepN4vOsaC5jpSx+yHip4tDCs=
-lGlvQ66dwCRCtbgxFokxWd4vOsaC5jpSx+yHip4tDCs=
-lGlvQ66dwCRHXYr3weuURN4vOsaC5jpSx+yHip4tDCs=
-Uxtw2lOJvUUSpsmE+pXSc3Pwy+KsZWIvCboInA27MOu+0EUxnQ9bjA==
-Uxtw2lOJvUUJugicDbsw63Pwy+KsZWIvCboInA27MOu+0EUxnQ9bjA==
-gsvstpxi5j0QeShVOAXsvIEySI459logatKSiOnQI0Y=
-rV08K/rlRWI+03JbZpPE8MoJIGVKasSYuT+g8CF8h5Mv/eVMdVBn/w==
-rV08K/rlRWKfKF+Jhxy5qZhUgnPSviS2QyMd9MNOFhR7arQIk4twhA==
-Xk2LnaFuq2wSJd/f9ZcYADwWXQGY802sSGhygijEmtw=
-4cJtfDTTyElxMzOPB+U8kfOkdlP6PdPdQo+b5Q3VZwY=
-iWZ1+FV1HJJLQRh5YHMuqamZj6my88+nOq4FtKDlq5o=
-hADTwUgIJkT+hOdowE3gQFCWBdGzkfUKOq4FtKDlq5o=
-bO8/SYGWpEhLQRh5YHMuqXp7TuJXo8E7Oq4FtKDlq5o=
-BYPGG+Rke8Y+jIg2vQkoa7AX+eZ3fchDfoknQKAIiqnAllg7+xuCFA==
-Tjxwl195oKsLNefE5aMc4G8mJus6OHtX9+KB3lbEGH4=
-Tjxwl195oKtyQBs4SzkJV1PusJTGcGD01qdb7JDNTneCIzaoG4uSRQ==
-r+MTn2zwgu694y/edwdpYQ==
-ADiRENPsNOo4GvvuG561CfRmfvLAgGBfXnxmhPdKEuw=
-SViNX60fSwbS/Zps/UDMbB4fppeTx8qZ
-O/CWAYqui6Q7KPGqDyepemhh+tTCSjEuwQCJH/19Ln8=
-L9IhEb/cxy11U7fe1tcmGcu36tEpZhZKm2WO/tHZ0jU=
-YkMU4MC4qUuCLbAllbnuGTDAbyuRDAJIFWN3xRThYNo=
-cBJGt2Ntde+CGu5KOktSlvOkdlP6PdPdQo+b5Q3VZwY=
-2Dh9os6pnRNv5IWfa1X155UUf2qRojva
-0OS8yIohSYDPwBECuQH+rd1nfj3QO9QOYTDxNHZVHIA=
-QRCGdQzPmuxHe+PN03uUuwlmC0ceo5xAavxCoFAqPTd9YdnNB0zCd8u6GxFjbkZxipg4n+amT9IUEksYV8b9Bw==
-kaef1hEpFMR0W/ESpQ1sGu0liRe9U4t8
-TX4x7/JdLccihNfD2ACjawerjyqMAg4J
-Aunviy27Tn8s34SjTRKw966AlIFDzvWhGjFhHUGm/IA=
-iO/G5G1J0KSYcs6LIWNqJO/wnylh3Khh
-Fki5XfvlXJzI9y4pfZiyVPIwcwZJlSAS
-Fki5XfvlXJwYYaRc04ct3X8oNwlAHdKQI9MUVCsia+g=
-/QKA3OLaLvA66F6w8up5WYJ2UD35rrQ0Hg0DaMjCGjA=
-/QKA3OLaLvAgtwYCMtpiXoJ2UD35rrQ0Hg0DaMjCGjA=
-/QKA3OLaLvCcA+LqIQuHAMH6Jk3uyles/LABUXlMXu7hbA8mI06pOg==
-fd/6VRnBV+5P+943EeLXROh//o7r6XxK
-lGxgn5LNNN6D+9QS14gqUZ4v2SAHQkIu
-6Z+yTtFW+7Y41qXLnQ314EpgEZ36UZf7
-o3Yp2kkX1LRQOBhU6CoF/1SLGtVzu3Za
-SNzpJ5V8DIFG9wHLavry5FSLGtVzu3Za
-KBoYoWgOW3gLTpl2c6Njyf7jzj4LMMy/O8B+JsbxdH8=
-tIZAvd1sO1TqBSJFbDuEHlSLGtVzu3Za
-tIZAvd1sO1RCU0xtliYc13j9Dfoa+sK0
-tIZAvd1sO1TcL4XcAOq/hHj9Dfoa+sK0
-tIZAvd1sO1SCjLq21t0Vinj9Dfoa+sK0
-PnUtuWrPMZTlW8BV6KpRW8txnDCodPaa
-7RcWrS+7MYzqBSJFbDuEHlSLGtVzu3Za
-7RcWrS+7MYzcL4XcAOq/hHj9Dfoa+sK0
-7RcWrS+7MYyCjLq21t0Vinj9Dfoa+sK0
-jzfGdSVd6Ps41qXLnQ314EpgEZ36UZf7
-/pn8ayRLGgWf+yQM5BR4lOrkLE8qtcy1QsjDFyh0etI=
-plXHn+PONu9gJU3sChLRJKZVx5/jzjbv7N7/2xV+d08=
-pK/ZV/hg2KdulJBr0GmnqRQSRUXh+2TiIsgVq7rVe/ettPD/zSXCrw==
-jQy6B/fSamartelAkCcLxA==
-UNMVVx+jvGOfmVgrAcnbJFDTFVcfo7xjUyZYksNCWbQ=
-UNMVVx+jvGOFOjcqTu37Ff3eSYk2t1EJXSGdquqQozd+MqbEi+b81fwxXbdPc+bf
-ZC16KGZJuzrZtWfwNJeczo6tKGCLLGlRlVTUu8mgFVw=
-Kb8f3stgLWahvBUtkklw+p4v2SAHQkIu
-Nt6VZaeWqZwlU0sSjtAowWEigKAccV9myzLSqBF4Qps=
-y7IJJKVJ5ODjqYT/AZOwkAj/Jbi050YD
-GZjTIHM0jyFhWorWBbaXMb1BiGWHESwJ/FRS7OcKkCw=
-zjzDFaug1aRRJHh4WyRzb848wxWroNWkwQCJH/19Ln8=
-2s+Nci9wvweK3KXUbQsrtNrPjXIvcL8HWajxrUJ/4cCUhW8p4wsnQg==
-f6t9+C9rN/Jbhi2zmm4G1P5N2YG78Dzu
-rf8snXs8QLDnIgbx9PDDNv5N2YG78Dzu
-R2BhqNY8vQsQATZmRblq46N2KdpJF9S0bENZYM316MM=
-XvDAGI3qDZgwjpEfeNUqgD51LblqzzGUV2Le1m4XGVw=
-HCpZai6l9vJzRPNH7lCRyVSLGtVzu3Za
-txN9SZIKbnuSP4SkVgrDKA==
-LZCADMve1wnxrKHitzOWUoHEsAgomIvukA0gc+vlasU=
-LZCADMve1wlTMqTky/PfJurn2pInliil
-LuVm1fSiDVKdsi7Kzdbo3kpgEZ36UZf7
-WWBFaR0HCBnxrKHitzOWUrTUCuqqqRxxXnxmhPdKEuw=
-WWBFaR0HCBl2OlpdyfCl5liiRIPsjsUx
-viVyinHFitKoVI6WKOWvAoHEsAgomIvuXnxmhPdKEuw=
-viVyinHFitJulkN3J4gwoO/wnylh3Khh
-viVyinHFitIL473qOWrZr1iiRIPsjsUx
-viVyinHFitKAmOFSgHo5YliiRIPsjsUx
-viVyinHFitItxImQxx/DDhKXMTR8xPFxLcSJkMcfww544XjV9hm48Q==
-viVyinHFitItxImQxx/DDjJBseYwGCzpLcSJkMcfww5oNJgLqFqd8A==
-viVyinHFitItxImQxx/DDlhUYiCeB6SULcSJkMcfww6L+9785HsDFg==
-viVyinHFitJTQmWRp4fFrMuJ7sAC0UnR16uNWBjA2f8m9xnOFMukZEpgEZ36UZf7
-LShMZBiFgO4DoAhOOP9x2X5UQ5D/IggLNhbUrID5RUk=
-LShMZBiFgO4DoAhOOP9x2XMPG6TR4glKMpNUntF50Jc=
-uFfIsYZDMoYnX3gwhfqBg9ADT7Zo0hIo
-uzaS/w33qmX29x8disyYmGw2Mcq+QlR6Z5WjJulMlEE=
-u+9GWDpvSUou9vVat8fw+8I0LatYOcXivgJU7rpjpfE=
-sQHe+4cHTbgvn9s92Np4Whu8hdYQdIzjdEEwOohE3nc=
-sOt8Hu+fh1do/VvBBU1qybDrfB7vn4dXkSlT2wHlmBI=
-AJyLc7CET6WOD9dWJ6lSc8etsWnN4VwrZ5WjJulMlEE=
-xZglahXE7MEj78DHJA8NosWYJWoVxOzBZ+y/kv4gCvw=
-xZglahXE7MEZWyq2c/MNsiDIcifM8jM1r0IjXeAfgSb2Is59vHXXSoJaywY2UE6j
-xZglahXE7MEo0jrmQ2bxBMWYJWoVxOzB/C2HdvCkOhQ=
-xZglahXE7MHgSMmLjNI3OsWYJWoVxOzB2xPLPHYAdSM=
-xZglahXE7MEKDuc5bnfpw8WYJWoVxOzBNZprEBoBffA=
-6TPnQbtsLB0dY1B2zQ9xuzLObi+zuDyKfkRC94tU/To=
-Oh2o+4fC+FRVsimE0viIhClytftXzCQxZ5WjJulMlEE=
-iKlzB7VL8RS+lTv6h3jYsK2mHY/qYUNHBiNf+1YVhVY=
-6bnNkKG2YAn5NikgNpe4xmSpT1nqbbkJWSSzi4J6D51E387U0mxTku1UrnXbzCzm
-kueTl4vefEj+rRwJYBToYzhYKtcRsKoTOq4FtKDlq5o=
-TWtbGlY8ZG5u3+SHfMJnwq2RNSvzaok7w29zoqutRRY=
-2qQe38JO//xN7kkFFiHwMUXGEwP/iKtFiy48LWiKVlE=
-bBiO127E15he2HoLv/fYZkpgEZ36UZf7
-XDMJzJ+/UuTMfJGYtgmYK8AXvdldNno8
-2VcLrr+4sTebvmg+Q7/qkcI503QdVi5x
-tuoczNg6Ji0KsqVBON1zjKHT8+SKZwoVC8at4D0TvJ8Q/Sq4QLi9FQ==
-IMEemaM1RvCxJaevPQ3KpujHg4EvTVdzxBzbmvsqN8Jsz/XXlsvu0l83gGzFswkg
-IMEemaM1RvB/wd8Okz/znCDBHpmjNUbwJUGj/gHakSQ=
-Z2bitlw0AMa77Ch6/6yyXL+Lk22k7QQG1N8++L0lHAeAwJ0TUDtkVg==
-Mq0bej2JQ6QYxKlkyczqOghiIOXw/dSaFWN3xRThYNo=
-0NB8czuJbawSxbtaceWJ2QhiIOXw/dSaFWN3xRThYNo=
-0NB8czuJbazhS4Udh5P1VQhiIOXw/dSaFWN3xRThYNo=
-0NB8czuJbaztX2SY+nEstwhiIOXw/dSaFWN3xRThYNo=
-TD24z/PUVjOVgcDRshyn5z9/g++8U2v12UrAFkC7Nv2ppG3uOtOdztIBlIVT6KuB51PhmDmHKCY=
-W2oPA9uGqEXziB4rgd6C/CpcvK8fV34A
-ELM2T7Q2Mrcshx0ihPuyKCpcvK8fV34A
-Xn4HnNubANHFZ5D2h4QJfV5+B5zbmwDRn24FiGAmFiI=
-pvOWHs5I2yYTFDGbPOkzAhQz3x5aewl+iy48LWiKVlE=
-4kz1tOHrKCgihFmgZccXS2jmiJmNa7uO
-z9DQgyHTRF3opiWFprmM5rxAiuGz95sSPH8zC+3Mpsg=
-4qHCQsr7lrJbGOfgQgxaYwv2pMwkjIRu
-bDM5FoY6g/Sp4zF9ZeBsnqm+ZG7TsLmCPVW13/ZITYA=
-ePq3GVRQizaYcs6LIWNqJO/wnylh3Khh
-048X8sVpSrAKo/UK9NDHew==
-s9fvPkvw+eMciqQMcQY8JQ==
-+NKyMbGOgywt3sV9KmqDlfjSsjGxjoMsujul2F+yEk8=
-OCmTnwX57zZdxrRugxgho57Ml2laybKnUyFeDwonN69TLScZwx8sEEHIfKsfMVU7
-mq3XPGPu/Ok3Y4XD3zOr/1iiRIPsjsUx
-tuX4CT0GT8uFsFQKjAAlO7Dx3DSRpvmsf4WOYzogwJqaY3XbryMItg==
-oOpib5u9j6oc1dnc6uyT5zJCH6foy6/q
-t2qVur0ado3+X0tAZBhFVQ==
-LBoZcWkncSeev8/fiYiPKnSUq7geItud2Pn74KzoK7PhiZPxIE5Zeg==
-BGd8d09G2S/XKnC5Y43Q0eWb8dISoqFKIOF7cx9ohLI=
-9euU9L7S53HqXwxhu1zSHXZgmXrZ3pEJGjFhHUGm/IA=
-TO0JBQ8mr8RtOGpeBxU3CwadXEd7JuxlXnxmhPdKEuw=
-W9HH6C1O86+fKF+Jhxy5qQ49t5MU+2hM4c0QH3OjMax7arQIk4twhA==
-wZ5h+HPyyDMq2cWjJKyC41eWISsQnjrzGjFhHUGm/IA=
-utpp6b8KHN0aBUOmZY0YYQ==
-qQUPRuAFBRSJrMU2cmkW7I2DE5p7RGOMFWN3xRThYNo=
-UvA2FcpOj2iRUZkq8czGf9gJr2+iOHjL
-IxosIUcZdeOEyx5AvYpxfCMaLCFHGXXjOYYji+pq/ME=
-IxosIUcZdeO+AVOQd4583yMaLCFHGXXjOYYji+pq/ME=
-IxosIUcZdeMqqtObA+jC6SMaLCFHGXXjOYYji+pq/ME=
-7ddpONXhUU7bxfAeY2EVMGTKX8LJ/VRV7NLBEkDmDJE=
-dHiJrsr8DsryiH2sVtn1unR4ia7K/A7Kc89slo2hvmU=
-dHiJrsr8DsrHQpqlKMOY8R6YC2wn3ucaT2qcmGybiCY=
-/fXHRUZqZnQ7YtGuSolXCP31x0VGamZ0mDk7u/hTKrU=
-/fXHRUZqZnQUMF2hv/qTTB1uXWlpRJO0Bky0okqdmowDtX49A/m9tw==
-/fXHRUZqZnQmN2MJv+UzDECh7CVCkSWCBiNf+1YVhVY=
-hszhg2d0j1Nhx5yON3PYAoI2qars2fOxaHj+8CjlyFJZVprAem6Wt+/wnylh3Khh
-9obp3ii+9gVZoeLYrnJWpj/RhrsZrWTYmUyE5cmCTkA=
-Eo6PIRPavzTliNZcRugWYg==
-vBv0+XanS1xL67gEFem8cNYIZ3rZ9S0pB451+nWReBM=
-3Us4hTxwFHWrSdhaNrJdZe0liRe9U4t8
-bwSldk07Wi8TE1XlgZYZ8QerjyqMAg4J
-CUj7FbbVsoEH3C9N7oX5VZ1gRkHPSYy1
-wvcPgLQTFB0pax+G35NMk0na+GXbcIR8
-N5f8jX4xARnE8WR3NGqPdYsYrFYam1UV7NLBEkDmDJE=
-BZ+lrLVxH9eUZPIjJV+ACl2ECUP25wKz
-G/M0W5F4OF9sQWI5Vcg9mr7IR3wDLgEE/FRS7OcKkCw=
-+ZUN1DorLMWYcs6LIWNqJO/wnylh3Khh
-/dPMLQuqprYGU+RHTFl2ZQsfqELUS06K/FRS7OcKkCw=
-OskzQPHGH4k85vKUXEi4KDrJM0Dxxh+JrgMf5hQQvD5KYBGd+lGX+w==
-MHjASV8ic+zC4jrMgbhSiaBUuwPmO47c8rxZHbJEGwE=
-NUJV/LbdsKzHHa6afUtOodaRh58nZRsKfkRC94tU/To=
-c2D1nM8E5uwuYR3T/sMSWnNg9ZzPBObsM3AJne+dIeU=
-isJ5BIeZcFc7YtGuSolXCIrCeQSHmXBXmDk7u/hTKrU=
-isJ5BIeZcFcIAQUSRiFGR/kmzwALSom5u4W15gd/Kz2jd2fK5ZsrQJfZCNVlPAHp
-isJ5BIeZcFdMxZnKSK/BF4rCeQSHmXBX6vb1Z4xOWGM=
-isJ5BIeZcFfC0I1fazT+cYrCeQSHmXBXfGhZIkcmT4o=
-isJ5BIeZcFcnOXeVeAqQQorCeQSHmXBXSaFepBIs6WM=
-dGLjh0lStMEQ+HSz/izK2/orPWkHqNe5js9pUTat+Omi+m7K+KSxhg==
-Zh/FB6c5Xm+B6Mv+r3oUPWYfxQenOV5viGlTuYvwdd0=
-Zh/FB6c5Xm8qqFf1kGpzN2YfxQenOV5v75dIY3QhG4A=
-k/iIJEppkpOQY1i8lHPFkFbwZWJ0MgHsV2Le1m4XGVw=
-EewTKaQ167YgRw9+yNCtjxHsEymkNeu2E0olbfJ1dAM=
-k2GyZh1pFSolsv6n6uho3ctkriYylHczpHp904IlTO0=
-O6Zqq9szOgSq0culTF3KCgY1yLDiPcgwXnxmhPdKEuw=
-kAYShmyNB8o2toyDMjukNo2+4oA2lbORjmo1+hfLt7o=
-ptlalxjKqk41Xk8fp0jcVUWAkKC6Kk69n2eIVN7KHKYmQuY3MTqpqQ==
-lao0n8VzVLocNPUfXQlcmT6TyzO8VbjyP9+JFq5HfFc=
-1Bbx/h9FUeoKGCS7OlZYlm27nvnjqQYwyzLSqBF4Qps=
-dMBKQ3aABJ3kPycQfDWNSsXJIwVBKZD7
-eGz28sziaVnY0lBNz2HA+CWOy9rh9VpD
-REr0NlrDRI6jRaupwwo/oL+bwu15xQJy
-O3Vypet3iOc5HHRmPAOPzTgDx8qs11DG
-3NkxiJb2q0zVkkvyQ7wisDJCH6foy6/q
-iK0sL22sxIk7YtGuSolXCIitLC9trMSJmDk7u/hTKrU=
-iK0sL22sxIkUMF2hv/qTTE+VRhze+UHyEMp9nYeAoRwDtX49A/m9tw==
-iK0sL22sxInaYy8k8DDmO4itLC9trMSJFDBdob/6k0y+Peof7PeC6Q==
-iK0sL22sxIlMxZnKSK/BF4itLC9trMSJ6vb1Z4xOWGM=
-l1y7aaZ0695dc+ot0u5SjIQboUKx3Kuf
-lvXpc+7yoODjKixbmNsx3tlZxLMPZCO0
-5V5dw3VKeFIy62vz76MTA1h07UKwyj31
-rgJD619A79ZO/zVdlBb0acIDrOT9t+vX
-RO8haUpxV+G8gz8z211NiETvIWlKcVfh04W+qQIwtO4=
-T+uUWVe5qsUR0J/koz9KZgY1yLDiPcgwXnxmhPdKEuw=
-9FuIGlHegUkpLBlfM+VVqmUi5ghnqHjxy4x6AQXguls=
-ag2ellMneJGuJDbDkUxjoCdmGp113JI7VfMcTbyjbvU=
-NsvUxkdzWduM+o3iuJvRlOjp9ja+d3H5k+JdVCtLdmKEt9y4GnTMRepDNvv44seC
-Hv9682Y6BdDQy+yL3lHwiOpDNvv44seC
-cltuHzH3MZDEYh6827F4SvATMLR29vCf
-7JwKle4goSNxux++Z8sw50j4/j5lX/Rr/UEVU0CSNh3Tdl0SvvSiXQ==
-7JwKle4goSNPtCxM7FrOp6Psp+AE7zCc/UEVU0CSNh3Tdl0SvvSiXQ==
-srXjQvuhQDKcTk1Q0IYtzCDdRMaMynFBZbG8KUhskwQ=
-g6MkC3Xh8rsIIIZuRQduFwJ+Lzr29efsZ5WjJulMlEE=
-gzO8Cbg97CaA6VtQMrqmLIMzvAm4Pewm/LODAedI9pI=
-vjcgpLlCeU97OTs6DxmTm/ATMLR29vCf
-Cxid6c+FfAgUV6g7W25sgmzdrQi2IgaWV5a8pr5h3LbOGOlfDyLnXQ==
-Cxid6c+FfAh6r+snkWLpdw7b5hv2IWQtV5a8pr5h3LbOGOlfDyLnXQ==
-/aUJ40q0OGGeKpuD11H1Cn5BmYV/xJeEhSFrjI+fSRY=
-fkGZhX/El4Tp3WfLw+xGhbskWOWaLi4uZbG8KUhskwQ=
-IZ8qkaFH5cN2pmZc9dTe6A+TRU4vbE/A0q/AY+ii4C0=
-pETewWDLfxh89EofgPHJVqRE3sFgy38Yc8Q/wD2s+Kc=
-pETewWDLfxiYcs6LIWNqJO/wnylh3Khh
-OW2PVrqNbgtIkRc7oSI9syjDfW57z7HJTZAXpjLML4g=
-B7gyORehHi6JQdonxQKArUyVFcKaJldi
-N3JX8zHpelJjFUiOhYZQMkyVFcKaJldi
-5i4S6xm9ScoXjMlS0JHBf6SYfF1gjMHD/FRS7OcKkCw=
-pb21QUVW5XEa8NC1qmD4gK7tXZiwuBvF
-kwzSjpp0+Rrc3fVvg2+fYMcB1beekSgM
-t4IT8jVQBw/uYWa5czMdKccB1beekSgM
-dhcYKLqt4OQGnZgNruk5KkpgEZ36UZf7
-b8GEeLzwuUqqtlk8nbR2qK7tXZiwuBvF
-b8GEeLzwuUrV97Yfl/d/Vq7tXZiwuBvF
-b8GEeLzwuUotEBmAGZfup67tXZiwuBvF
-eeNtJL9hcqs8xmBeKeZ1l0GphsMK03t8
-B20iTPe8N0VtWzSnJmqc96BRnfTBEUMjOq4FtKDlq5o=
-B20iTPe8N0VNk1rUuCmgA6BRnfTBEUMjOq4FtKDlq5o=
-B20iTPe8N0WflloDZF1DAuaMBXbLV5H/UPeIrhzocK8=
-s3SdyOvWYn6WfboBgIwji8cB1beekSgM
-eL5Nf4Ql6yzaoMNj1/kGvni+TX+EJesscXjWCiUqpSM=
-pGuY+qbSImd/RPmIXExYfbyS0r7ZfWtN
-XXIUiO8imQc/trxkeqgXE11yFIjvIpkHmyNEplv0gDs=
-R4/KpCfRo5sbEf9EZLuYRw==
-QF8oKuglyQyvcM5Bj961HnbA2IbOkarlWRaTFzIkLGM=
-+sW+WE1wWAjgwad/N0MDpUrMh035Nt0sZbG8KUhskwQ=
-LmQx9rHQGTyXOKThZpPw9Bf/v+hc5txNZ5WjJulMlEE=
-SzoBj/z2A1CDYaHRak3xtUs6AY/89gNQxu0J/zeopcE=
-9EYe34NUtGOHLQnydCQ1HBhG1hsoW3XR
-G6D4ijHWBfzq5Tc7UVGvv84Z1G3kVlYw
-E25PowytIsnGM1+JgQ+uoosqN66+ar7W
-M0McykSEBYVrbo2q0+CU75fTBCA1f2zm
-Ty9M3Wc+IH4OfjobXHv2paYIEBHIXkc/
-xPPmcjBj9sP3C0umxFl3mHRxV+8FuY9ukG57ceWMY4U=
-QGYEYgKwm+cApN1lAmxX+ghk3XG7mSDP
-YvewDT/XqBHZCHvUM1kJ5zfLJpt8Vovi
-C/Pm1aFRDLYVUxW22cZ47G1JlWMFiZTK
-76wIiq0Vkxlyt/PYnKvOcud1KEyAJyMj
-lRpFR4STd/5eEbDoOB+ztYNqLkNStzNN
-8wvQmz5NC5vIeyKlqd8H7A==
-vjhE1Tz40ysxHaFFsSYvx4mqP+0M3CRz
-9eeSihWwS75AONSWzrLlzGRo8t+uKG8M7+nagmDiHZbT1An2OOoSsQ==
-N26aGYp7sjBYbyPB0wRZgw==
-9Y5r9+8kA0Pmh9xPRO3hj0pgEZ36UZf7
-hooQo1fvONtqpcDhJXZmqTqCEnMuhs6Q
-k0y9N6jYrm0avSYeDaNtB+GbtcGcH52pBASzRD8CLbY=
-FZcZMCqNgSopLBlfM+VVqnqJappFK0F1eREs/zJbaak=
-w+Cwf4MK0rVqrxiohJdzBcPgsH+DCtK1I9MUVCsia+g=
-wu4NEuCivVTZ1Wk1MmUbX9sKgB0a2Fz1RPSDQg6jxMY=
-wu4NEuCivVSI8Z8uKyCWGZMVV2WEMeGIPH8zC+3Mpsg=
-mHFe98NUmvf1rMlYntta77uJAxZ+VzmFPH8zC+3Mpsg=
-woivEWJHd5scJDcSrwbauKVaVePy5OzR7NLBEkDmDJE=
-VrHhM/eXUB3AGwkh9PwSWXhF+h+HWcPT3o/RqxfFGiQ=
-aMHmdd1v3CFC7AxSOiW44njxR9mVnoQqO8B+JsbxdH8=
-PTCos0DGivBqMNyA0Nk7RpQg/0wqg9ud/FRS7OcKkCw=
-oah/P5G7Vcg78bCbiC4sD0rQ+yAITFwdiy48LWiKVlE=
-nUo1zw2Dbrp/zhKOVw7+YmKSM2ya9iI/Oq4FtKDlq5o=
-D1eDYe7RqTKZriXLtABITWKSM2ya9iI/Oq4FtKDlq5o=
-D1eDYe7RqTI1Y0eFfBedp51KNc8Ng266OJk/rqQgIEs=
-D1eDYe7RqTKs9eVsmkrHJWKSM2ya9iI/Oq4FtKDlq5o=
-9gJL3CBEKfGcWsG4QxQGsDzEUeASewd2d0qc91dUHes=
-NEywGN3DjQFOEQPZwvsQ1ABQUb+Bgor/QsjDFyh0etI=
-0GIGQBI1htx2OlpdyfCl5liiRIPsjsUx
-7Y6DZNY2xGWAmOFSgHo5YliiRIPsjsUx
-P82MQmGg+aeI6yb631mnTz/NjEJhoPmnBJ8cmcL0nAA=
-GTDeQrdjnpqAldj8xWqqDwhiIOXw/dSaFWN3xRThYNo=
-GTDeQrdjnpqD20MKJeWHMQhiIOXw/dSaFWN3xRThYNo=
-0ovWd66vjdVPcyNoKfhVZnxamTrfW29lQsjDFyh0etI=
-S5bx2VAn5nz+SgemEk7wj1pFs/B64BfS7NLBEkDmDJE=
-4Qvrbb1JTp+DokAwFmKECDJisxJklz+7kG57ceWMY4U=
-x22xvkilTFH+SgemEk7wj2rjy25Aijbo7NLBEkDmDJE=
-Vc9imXWIb09bwwyH078vGnEWSnq2x5KjBiNf+1YVhVY=
-O3P6K+AfRNz4uGxH9DBEAhzPmtBWPAmEpHp904IlTO0=
-xRMzRE7B30im8sAY5Loq51In2oc4nlEEYTDxNHZVHIA=
-QI3BKCa5CS2/Qya9rg8cD7ajLddQHsdKOxgqIHpj3G0=
-VibK7zkhwxswfbz/NSCyQThYKtcRsKoTOq4FtKDlq5o=
-HXcKGk7fgWLSKiTeuE4H4KTniY1uzUoc/FRS7OcKkCw=
-UWayH/xluR0utkxKsPQAtL7ECNRmYRRbQo+b5Q3VZwY=
-Cja1N2r7aqyA7UtHcCm9Tgo2tTdq+2qseEU//+lhXY0=
-2bg5JuTZYIZQBmzJ8tu4RG396D8gjF3QgSzpIj+8oBAoZ4KbCDbYK0pgEZ36UZf7
-N+h4/d3ORJyaVvGyytsEaC9Jtri7jcCu
-L5pW2W5e5QP8xoQ3ak3LT+vmIzppKyg+iy48LWiKVlE=
-4j8xGfGBQHU9IdMdHnWhjipcvK8fV34A
-T6Y7lZRwt1YT+IbQu+uxRSpcvK8fV34A
-lTFz8Of++gzSOKoafpm4sLhU4nVuO2EX
-FzAE8+xHpx/yHKYEQ1q4w+d1KEyAJyMj
-FeDKLbBcDlgX4rfunxcKgfr3MA3I8mLHRgiTfkBFZ8IDrXmRmHb6vfwxXbdPc+bf
-XzE3hg5nBlZcAI17ndbKxeh//o7r6XxK
-fwrs39e2sE4Y2Ku7TsnJl7yS0r7ZfWtN
-su18MMk2rGoogb2mTwdheeh//o7r6XxK
-IHGgxsnOnj74cFOldJX9vQ==
-m69a4x/0L74hGqmV/bsQkQ==
-RDxMnTnhMZ8oLcKBJ602oRLKT8eFdzGhwexVzLebpLU=
-RDxMnTnhMZ8YU7xbNSSDfX4AS0mk96sNnw1/iLmAL28=
-yBW5KwCa3QJ6otuBbzxJOamAVvyPHubjhZln3/ysGCz3QhuGSiXXyw==
-zDr9psujcMy2wsyG/qmxMw==
-5sahv3Hloii2wsyG/qmxMw==
-BgAEXxkJI7OsPgVVaeF78yHud7S4gPqZ
-u5kffeqLBwNBjbs1EA0prDCyeMyaTN9t
-7t3O9O9TCuxXuLGhFwb6si9Jtri7jcCu
-y40FjkV6sF55iS/iPkN3imtAsj+g+txU
-W+Y0SwEFQHg1Xk8fp0jcVXRekVIxM5tbn2eIVN7KHKYmQuY3MTqpqQ==
-p5aCK46PH5VMEoJHcGi8tCXBPH2DKdJv
-+QcUSjkdonh/HeogIEXyxwZH0LrR6LVWGjFhHUGm/IA=
-gHsoP2gDJg6nX0VTNq08ZOLSzhaE/nJD/FRS7OcKkCw=
-aFFZlOb6t3rM6RCpC6CG2cCOsDRlr4swgM7iwnSZ3R8=
-r9wYD2Vr4lUZndUdLmj5xjS9CwvPbEfZ
-xEHYC5PyimOe8oZ3Nggmgq6lGFOOAKSXkdvMt65r33jKKPZ9pFrEuNlZxLMPZCO0
-btCstnrCzv2Ycs6LIWNqJO/wnylh3Khh
-d0o0k+rKjZwXIwEO9+g59veux+wDEn+MpHp904IlTO0=
-3vj0d5eXXoTpXqBX+hIoGQ==
-nB5xS01II5FO8U85Gj4LOwkzhrBsqvscH5LkeyCDeABSzlBthODeKA==
-wm6ORELi8z28ZB07nCjE2yXBPH2DKdJv
-zK3IJj4OCNLmDlpRHXRri8ytyCY+DgjSut1rfaYvqA8=
-+lTEQBikGJc8NHGBPM0w3I7FvPCycJGgFWN3xRThYNo=
-vFYVsMh2w7iZGYPZxX4RY40Z5yFJVnbw/FRS7OcKkCw=
-CncrVpe/1q98tYIJXh/PBZRmR5Qp5PuUQsjDFyh0etI=
-ypYq0llNvxtpKTjNikKsfLs9F4LyYomyQsjDFyh0etI=
-yIa+hslafBUcJDcSrwbauKVaVePy5OzR7NLBEkDmDJE=
-sVYW4FT2Yo41Jxddg7LADHhs9vLM4mlZoITwRCmCjgk=
-kPZomRw9tAC3c2kz3Bc5L03NQibaeph3vgJU7rpjpfE=
-Si3i0N+haNhPXflsFsvr6iKdg5VRj7TbgSNeyMS56rD3QhuGSiXXyw==
-xPhLahM0n3/qQFELmxnh1jVJ7JvToHql
-EgDx6oQPndD5t3x6aCFG0ImqP+0M3CRz
-KmLTIUfMRcp1w2u8ylDE22VnWtVEUaGQ
-2dplvxJbc3ij6Ve8sY3ZKhl7hKbqZ5yoZbG8KUhskwQ=
-HJH2CTxTjyKpYj5/A+CA916zwkV6JkCPI9MUVCsia+g=
-0uUyu0EpSXhL3sXFrmYMBP0YtuuI9KIBw29zoqutRRY=
-9w1pqrvigcfwzhuyXPgpTfcNaaq74oHH2pls4MeHQwU=
-SYmOLTsdfpUj8oWCTU7iEJ7c3lp3jhH9y4x6AQXguls=
-SYmOLTsdfpWZbRfC5irvTR20GDvIkJIutAjZncZBtw8dquGb79CGYA==
-SYmOLTsdfpWsD4nFbHYIbwJ+Lzr29efsZ5WjJulMlEE=
-SYmOLTsdfpXXePlE/3BKzqyiN/jR7TPMmY/LFPKvcPE=
-SYmOLTsdfpX3XOFIbBxqj7oV44iLs/DRJxi/WywRaen7t4gfkUmAbQ==
-SYmOLTsdfpX3XOFIbBxqjx20GDvIkJIu9rmwvwUkGBA=
-SYmOLTsdfpU3HXG6RsZlQnYt+Gr3yymHi0LGduDJbfD0AdrdTA5Jww==
-SYmOLTsdfpX58CJptFaKrRUL2pL6I35EEemd6QV5FrU=
-SYmOLTsdfpVHtGiSAgCMlIV48KJ7DccpEemd6QV5FrU=
-SYmOLTsdfpVHtGiSAgCMlFq/HluUNOr1qy5BpyHFcPI=
-bdQZAKU7mrWvw0XTTXtLYhf/v+hc5txNZ5WjJulMlEE=
-AKdEPSBAqhZuTwoK2mH2a1ga+wv/ApQBXnxmhPdKEuw=
-AKdEPSBAqhbAXdPqIko4qx20GDvIkJIu9rmwvwUkGBA=
-AKdEPSBAqhY2toyDMjukNh20GDvIkJIujmo1+hfLt7o=
-BL9NabCnLLqs0nUFBiBjzF2+o2HvHM53y4x6AQXguls=
-4VOzkz9d1ocfTsj2NQbOyehDNLyCNkpkFWN3xRThYNo=
-xFotwv9QCRcOw4yCqX+MJo6EXLgqYvQGV/vUcFFbXo0=
-xFotwv9QCReuJDbDkUxjoMRaLcL/UAkXOxObTyoMKMU=
-xFotwv9QCRdJ03CaLUlm60mJji07HX6VQMYaBnUZrGI=
-xFotwv9QCReeVqIrAdHu+UmJji07HX6V7BTGaIDrp1A=
-DorPguHF9SK1sKJY4w7NX0JVtM7/jdB3
-3p2dj/WUOxtuoBPSZcUkedSWAlQ61gcvZbG8KUhskwQ=
-XsRueZvhAyrWPUA/f8pcgkaN+4aje31E/Bd7i9pCsgJRJIM98GFYu0pgEZ36UZf7
-ueWzwnpHs3ZN9oF7QXV6rPXQJBkouwCz
-ueWzwnpHs3Ysu9VBkLGKtrnls8J6R7N2cFgsszCTAdlKYBGd+lGX+w==
-ueWzwnpHs3ZER7UsowxLiLnls8J6R7N2Csf7VCRrjQJKYBGd+lGX+w==
-yZRpnP+yLjMBc5pOGLp2hw+TRU4vbE/A0q/AY+ii4C0=
-sGclmiZTHKquJDbDkUxjoLBnJZomUxyqOxObTyoMKMU=
-HElPoHkVj76nHplQBbmy2Q==
-FF1vgOU3uYh8q0nZ+MFJyYRJkskAlH5TbENZYM316MM=
-g1jovPf6F1GfKF+Jhxy5qd9UZKK1wa658J71EEn0hjZ7arQIk4twhA==
-qgKo9TnGwm/yzpOzI09r6/b0h4fpZkUmVfMcTbyjbvU=
-qgKo9TnGwm//hMZW754VmKgZn5hKffbZhuqtrnbrsTodquGb79CGYA==
-qgKo9TnGwm9Swug693Oom6gZn5hKffbZhuqtrnbrsTodquGb79CGYA==
-cc5DUa/vIO1f+ZS5hoH2XAY1yLDiPcgwXnxmhPdKEuw=
-cc5DUa/vIO0ym7O+IXIF9t/g+0cktkWSutgQPaT1sQF44XjV9hm48Q==
-cc5DUa/vIO1c7YcDoqIb9e52uFEEx0ou2p3BehHo8nt3OsyeEuipIA==
-cc5DUa/vIO1c7YcDoqIb9XkxXH0Wa3sq2p3BehHo8nt3OsyeEuipIA==
-9vSHh+lmRSa3gVxzeLve8p7c3lp3jhH9y4x6AQXguls=
-9vSHh+lmRSaZbRfC5irvTd7y1AT9VfuktAjZncZBtw8dquGb79CGYA==
-9vSHh+lmRSadw6D02NP08AJ+Lzr29efsZ5WjJulMlEE=
-9vSHh+lmRSb3XOFIbBxqj/Rj12kLWl2dIu0QFU8JDOz7t4gfkUmAbQ==
-9vSHh+lmRSb3XOFIbBxqj97y1AT9Vfuk9rmwvwUkGBA=
-9vSHh+lmRSY3HXG6RsZlQiH2VcNW99XZ2dZjipKP9nf0AdrdTA5Jww==
-9vSHh+lmRSb58CJptFaKrVGqmYkQwrq4Eemd6QV5FrU=
-9vSHh+lmRSZHtGiSAgCMlIsxYZAlX2HLEemd6QV5FrU=
-9vSHh+lmRSZHtGiSAgCMlN7y1AT9Vfukjmo1+hfLt7o=
-vVsbjXwCHtIKYy+Di8EoBaFRBjWThVlFGjFhHUGm/IA=
-HL8rmewPyn/AXdPqIko4q97y1AT9Vfuk9rmwvwUkGBA=
-HL8rmewPyn9s4bvV+I+PQiH2VcNW99XZ2dZjipKP9nf0AdrdTA5Jww==
-HL8rmewPyn82toyDMjukNt7y1AT9Vfukjmo1+hfLt7o=
-SJa+FiJCadBiDdrE2/WSu0iWvhYiQmnQ0l+eOlaueF0=
-SJa+FiJCadBkqxPNk6+V1gp3K1aXv9avecBAl6wmOEY=
-ZSLmCGeoePGoVI6WKOWvApdqWdeVFb0gmW0XwuYq700dquGb79CGYA==
-YhAatOuUXEsERM36DqXPrpdqWdeVFb0g+fAiabRWiq16QxYuwwH6NA==
-C2vJTOY7dZnDZtxspjvHCgY1yLDiPcgwXnxmhPdKEuw=
-l2pZ15UVvSDM5uuhHQNsfZ7c3lp3jhH9y4x6AQXguls=
-l2pZ15UVvSBRJBcBVI9Z8QJ+Lzr29efsZ5WjJulMlEE=
-bqCB8DyBJ44G/lIq/sjpF0rMh035Nt0sZbG8KUhskwQ=
-WeTkv/3IWfI2toyDMjukNt+k12A5nWgAjmo1+hfLt7o=
-mjpPHyZldWWYcs6LIWNqJO/wnylh3Khh
-TCtCfBfidQM7CHoZvwulqB4LEyifMejwnqkOgSHWovOZAzJcI48FiQ==
-RnkjKy7bTuYOw4yCqX+MJo6EXLgqYvQGV/vUcFFbXo0=
-RnkjKy7bTuauJDbDkUxjoEmJji07HX6VVfMcTbyjbvU=
-RnkjKy7bTuZJ03CaLUlm60mJji07HX6VQMYaBnUZrGI=
-RnkjKy7bTubGVWNxVhT6JXYt+Gr3yymHaOu00tCHy/GlY23IbYlIWkpgEZ36UZf7
-RnkjKy7bTuZDsWjNNYM53QqkGfhh8Y5lkwY1q7cPcwodquGb79CGYA==
-RnkjKy7bTubv58U4p6buBAqkGfhh8Y5lkwY1q7cPcwodquGb79CGYA==
-4DIqUKiEs1Luxn+1KvIdVC0HxeN/KSMOQo+b5Q3VZwY=
-/0BAESVH7V1blGnd3NQxHgGRNX35u9t0fkRC94tU/To=
-oov0b3Lhw82OZ16IhTvg5emoofYVr0mL9YQ8RM5gOiY=
-tfsr8XjYgRRwa3pNpPwn9IzBLx1QLwLQryKysOD+KUY=
-tfsr8XjYgRQm8RYMzdJEFwLDs1c1tC4QB451+nWReBM=
-r7X7GnD5BU3WMpFA8dOBpYX6u1JMMNpHZbXb/d9RO60=
-r7X7GnD5BU21j71vs4mKp4X6u1JMMNpHZbXb/d9RO60=
-I0JXTOTz+fGjHzm9DjskOFiiRIPsjsUx
-FxJ0Oakicwj+wFbg6/XQzr6n+6hwVDTG
-FxJ0Oakicwj3XOFIbBxqj5gfUQLcbAt7dEEwOohE3nc=
-lv3LZULpEhezUF//oM+h1J4XDqYBRf1xGjFhHUGm/IA=
-CSnacheNuHCYcs6LIWNqJO/wnylh3Khh
-cV6+Fjiihhu/YQalCQQXpMIDrOT9t+vX
-QQODTbNfOrMg+6JBq+16TC0HxeN/KSMOQo+b5Q3VZwY=
-Xllk80eUBngKjOLsGJCf+J7c3lp3jhH9y4x6AQXguls=
-rOhmvGJJ8u3hovOIbwI2ehf/v+hc5txNZ5WjJulMlEE=
-yW3ljc/B8to2toyDMjukNks/BOP9VEd27+fFOKem7gQmUGMXnyjHjQ==
-PMpKtrNubIRtVusGoLHeVZ7c3lp3jhH9y4x6AQXguls=
-PMpKtrNubIRHtGiSAgCMlFuJybOqVWewjmo1+hfLt7o=
-PMpKtrNubIRHtGiSAgCMlAAMTEK/7VZqjmo1+hfLt7o=
-h9ZGx7VBqWA2toyDMjukNrXb9of22ifVo9kTCBN8xEM=
-h9ZGx7VBqWA2toyDMjukNluJybOqVWewjmo1+hfLt7o=
-h9ZGx7VBqWA2toyDMjukNgAMTEK/7VZqjmo1+hfLt7o=
-ecNXK5cRRiQTedVcW+1ACv5N2YG78Dzu
-wYXj29HL0odUB4CCS3cFFwerjyqMAg4J
-lHzFFybhC1EWW93c5KZ9w4MQSCN50TpDkG57ceWMY4U=
-b0BomW46y9MdlVd++cSv+BlCJACoyHBoyzLSqBF4Qps=
-4C8KZY34/kswWU6jaieZ+JVowK2tONarh3IYrJiu9UE=
-4C8KZY34/ksIayJ99X/P35VowK2tONarh3IYrJiu9UE=
-CMWGTs0XA9l34x2EPsL7JYodSpEvESgm
-Rxg+21wscO8AP3US4S7kQUcYPttcLHDv1HZRdJVS8lM=
-IstZUls4S9AB7eURvyaaxw==
-i/NMkchEuH7/i6rckSvgQp4v2SAHQkIu
-Be6thebZitVDxzjBAaam+g==
-jMVMcG9dB3JvcexlVWyehozFTHBvXQdyntVuU/h7nOk=
-huML/c8cqstc7YcDoqIb9fDrN1sUcSEqR4khd3pw1IM=
-huML/c8cqstc7YcDoqIb9fZbAaI5jCtsR4khd3pw1IM=
-0NnCpHilrJP+wFbg6/XQzhokdeqhF+go
-uX2LMexjtC+DDXqTwV+vs7yS0r7ZfWtN
-tONtmLyh0yQ09jAoo+UY/g==
-QgD8FjDufS1ja1UTEsHAMw==
-OZZwJs35ml5lTbQuD/rI9COCFug3Kgau
-OH1RRKiiSYROOZ4G3K4YYU/+OJPAB/QyGjFhHUGm/IA=
-Vls5PUREgM3IX3iae1RYqkGelkT9y18qZ5WjJulMlEE=
-DYkPG+bCAJ+c3bZSsmP2l5kmUx2ewZUNBASzRD8CLbY=
-DYkPG+bCAJ8OHka04C7s9ZkmUx2ewZUNBASzRD8CLbY=
-DYkPG+bCAJ/ekahJ945tbpkmUx2ewZUNBASzRD8CLbY=
-ZMIu0vQwdoB+AjK4SSMLQuheRkFTmIMrwOJ2qKmDrDPrilGZfSe60Q==
-ZMIu0vQwdoDgSMmLjNI3OuheRkFTmIMrRuyrDs9fNauXjb3OHxwMOA==
-ZMIu0vQwdoAKDuc5bnfpw+heRkFTmIMrvSt/c9CGyEs+HhQneOFfyA==
-B+a0hQZFsZlbmQ6XCbZXzg==
-jE6GI85puZxZxYV+LBmV4Jxow4nWiIDU
-BVsqqvlJD8d2OlpdyfCl5liiRIPsjsUx
-Xl0zOoAehnqoVI6WKOWvAoHEsAgomIvuXnxmhPdKEuw=
-Xl0zOoAehnpulkN3J4gwoO/wnylh3Khh
-Xl0zOoAehnofE6cl3yBuiQHPtLhZsozr
-Xl0zOoAehnoL473qOWrZr1iiRIPsjsUx
-Xl0zOoAehnqAmOFSgHo5YliiRIPsjsUx
-0IZmYHFR3bA20ON2zdVCZNCGZmBxUd2wfMMtSzFRPVw=
-0IZmYHFR3bDYdbULQfpTftCGZmBxUd2wfMMtSzFRPVw=
-Ny3IKPJiJQ7GkmJFm1LJzk/vyjoO9e9+FWN3xRThYNo=
-LYpQ+vNUOQuVBDXfW1knGy2KUPrzVDkLdNLat5Yda+Y=
-LYpQ+vNUOQtYXGQlXLsacC2KUPrzVDkLw13STXW65x0=
-D9UfgAqjRajZA4GTEoiPhg==
-OlPuNjWpEbOKNzISZuy+EjpT7jY1qRGz396jclCk5qI=
-y52OJQbS71yZ2P5KIyjhrPX8LA/dnPjyGjFhHUGm/IA=
-vzvpZekKhuMKlwFXotd07oVRdAqAyKfiOq4FtKDlq5o=
-xCEoOyRVep4MTQiYXM8lr11f6lSbu1qpryKysOD+KUY=
-5LdbDpeR1jsFdKJcEKaDoZ0kB1qH5zU+vgJU7rpjpfE=
-D4mYPp9JKbFyKmguwA/NStXqqaBrqdOOxnOD8nTXLaRSNJgxVvK0/UpgEZ36UZf7
-Fg0mXFNHBeistqXVm6ybrA==

+ 0 - 79
bigdata-web/src/main/resources/kl_result_mapping_standword.dict

@@ -1,79 +0,0 @@
-L1EmrYbiw1OUhT2Mgp9IYw==
-ITtp7xJvm7xN85EE9UKFSw==
-wD/+T2Rb77CRvSo1kXtPNEpgEZ36UZf7
-7Mb9gmlxjvh1F9jmC1k7P883fdy234AQ
-uxw8ICp6pO5wpgcXrQMg2VJhtasX0D86
-L1EmrYbiw1OIbvEPe9JVrA==
-L1EmrYbiw1PkvbIQjSH0ig==
-F8CWtrMTFqpULF2mGv8rXkpgEZ36UZf7
-vs5IhqszS0FV5nxcKLHXX+78A3F5ApoOtoX2nv595w8=
-ITtp7xJvm7yIbvEPe9JVrA==
-MsRMye4Ce1Tzd4Q5WYcI38K6Q4zNu6SzmeHG94k7IE0=
-4TVdgXZNhk6n617WIf7gjXqAFzRaz0s/E+oKnTDMgwM=
-Izz3qmtzr5r2IotS+Hrtgdt5hAoCEWE7
-kDiWMe1LBSn7WUAQirnyfkgPjzQSs0k2rBCI2o7bKak=
-8sjigmd8+cDI/ooGhntbPA==
-srat2SPWwxguIyv673ST2QbfxHf7qINy
-ml/2hklo0UHyOdjBHhpw6PD8KRVpDE2pSmARnfpRl/s=
-0otZcLsmIrh2Hs6rzcTSZXR2BAIQaNSQ
-uxw8ICp6pO7cN+yZQPS235v06pW+h+fV
-L1EmrYbiw1M/B+Rc2AlyxA==
-gnVG/ah+09SgRGW2oBYU+OEPDCWsDtGsSmARnfpRl/s=
-ml/2hklo0UHRmEFsc/9x2xajCnoy4DJaiJbgaKVsTrQ=
-IEYbDrCxln+pW/vODY540MSGO/2qkdhdzzd93LbfgBA=
-AotDretpE0ZBFWHcMGrhB79ZnX6q3jyT
-ml/2hklo0UF7OY2n/wXeGT2+sd4EngoW
-Iif1Jo1fyT++bhIKk0opxubM/HlMOKIR
-k1Gm7uC3txeV4R0r6B0UJw==
-uxw8ICp6pO7cN+yZQPS239cJHQx8ZPvQ
-F8CWtrMTFqoniUaZHKRtDg==
-O42GEYS2XrdrGTzkULBH0kpgEZ36UZf7
-lkGXVn+qv6wGpUvQ4LCbUQbfxHf7qINy
-Z8+G5B4yQAJEwaP0L1YpIsPLHHt4XU0w
-p2ksykmrwo4sihl+rIlDVaVct0+Wq2CHEEF4xA7BbNegwlRNlXVsGDiKp8v4EWLupiYV+OrJ7h95YV9F3XyyBQ==
-4TVdgXZNhk5uKjwx+NAMWfTPF+uOpY+N
-F8CWtrMTFqowgxhDjRXyhEpgEZ36UZf7
-8dihNLZO9dsX36WzpVuRF37u779IPQ1ApHp904IlTO0=
-qFhztcYdBhFSDqcM0GqgiEpgEZ36UZf7
-Dtl+1pXSqsCf7K9ZHfGUKeT5pyumoJAc
-ml/2hklo0UHyOdjBHhpw6LIcBy6P5pyfSmARnfpRl/s=
-M70fhXofuTuHyKDY6fnNSg==
-agwII1gQdty9lYvhKCiqzS8U3XrqgX2Qav3bY6gAyDY=
-kQHtQ28+jmRAgr/8kpwGtkoFpO2Z+GK8mk4WDpuB0fM=
-L1EmrYbiw1MHlWGXOa5WbQ==
-JC9KNSWPlz/yDK/cT4Wye5J2baIy6NOV
-ZXupFoR9xZZjPoDtlfNC/A==
-vs5IhqszS0FV5nxcKLHXX7RwSUIUaOzHYqTxfQMiC+k=
-LIhCJXufKxbf6yFB4KnNr7rtJS+DwsR+
-vs5IhqszS0FV5nxcKLHXX7RwSUIUaOzHHbSHS03vfmM=
-XLKpe1H4VQhm8TLMxgEyXHG+vSuxnv1tO6MyYWiOJ+8=
-SxCOqpR2m2vgqikXUwdVYSLuXWTUWavGdSu4/NSFMh2JDVVDa5aQ2qaDIhnMf3RgNSgeLpxHM1E=
-wYpoUOLxkWFyh8xi1Rb8FaKZXwCRnuzt
-xKjH098+V6WUhT2Mgp9IYw==
-wD/+T2Rb77DCStLw9D5GqEpgEZ36UZf7
-eOtp99ION5Ds8QGp8Y0fbaA/XJb5OMRF
-TTBoaK2XBA4Ul03O+JczYJkRlKkZ9goc
-Gl9t95Qgz7iDmNITYSpk9CnCJ2qqEZhF21nfxGCpJI4=
-deJ9ShdG0Iy3IgDj49Nd+wNeAFNXO6znEuIPRVt0zxrIFF7BEQ9/q5jT4dqI9dL0uKZSIUBrfqA=
-5b10ZecEq03DkIo5s7WKJO+9h847MVcISRS2rAck6VmAbjjMVsD+tagfqsNDuH7D0Zi/2VsQQhM=
-jkwAIBuL8J2rfWt+2fRjEHK76WBBMdTh
-wD/+T2Rb77DRxndKkqpYem2vzYM7pAHX
-JFoPNMqvscDYfrYzhvi2TUpgEZ36UZf7
-o586QSXa3yeSW7t/AXaZIPTPF+uOpY+N
-QuVFY0AsqDePuV7DZypuDJvIFLIFEYbK9AhSgsk0aTOyK9+CPwy73SvTg01va5zFEzbsQLwk3co+DpVh+1RB20pgEZ36UZf7
-8q2ztLDj5WrCOGEPa6tCFpTz+I5xZDsT
-HdMzbFa8esje00No8KDgnw==
-xbaeH6dIBS3RxndKkqpYel0Yre9PRlQPBiNf+1YVhVY=
-JC9KNSWPlz932m7E2QUuLb9PY5/aDDrQ
-KXjWK7CEAInDL9KKIPcR9w==
-Dtl+1pXSqsCdXBQ/c9gkD5Tz+I5xZDsT
-Z8+G5B4yQAJkIniXV51XYQbfxHf7qINy
-OiF4bqXkMEEAhZ46GKERaQ==
-6AdBr9ESXwxuAA4RzKQl7T8g5XqLhLp48PwpFWkMTalKYBGd+lGX+w==
-Q1zDVi3U7rI9l9Q+tlWf4Ee1cgYEdEeI/hgyPNS4IPeyXSyYJNIU/qAb9hNrEulyYTDxNHZVHIA=
-wD/+T2Rb77ANCqoCZftfGUpgEZ36UZf7
-6AdBr9ESXwx67Pnnr+kPStAxGsaAxJuz
-6AdBr9ESXwxuAA4RzKQl7Qx20j9Jd6MvshwHLo/mnJ9KYBGd+lGX+w==
-yE3028GRw4t2DqtTuKPPOg==
-SZ1VckZNWlv6YxRRpZKkEoKBWdL/M3D3
-U3FxTQC11De8fGTn0OiIddGYv9lbEEIT

+ 5 - 1
common-push/pom.xml

@@ -17,13 +17,17 @@
     <url>http://www.example.com</url>
 
     <dependencies>
+        <dependency>
+            <groupId>org.diagbot</groupId>
+            <artifactId>public</artifactId>
+            <version>${project.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.diagbot</groupId>
             <artifactId>graph</artifactId>
             <version>1.0.0</version>
             <scope>compile</scope>
         </dependency>
-
     </dependencies>
 
     <build>

+ 341 - 0
common-push/src/main/java/org/diagbot/common/push/cache/CacheFileManager.java

@@ -0,0 +1,341 @@
+package org.diagbot.common.push.cache;
+
+import org.diagbot.pub.jdbc.MysqlJdbc;
+import org.diagbot.pub.utils.security.EncrypDES;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.*;
+
+/**
+ * Created by louhr on 2019/8/16.
+ */
+public class CacheFileManager {
+    Logger logger = LoggerFactory.getLogger(CacheFileManager.class);
+
+    private String user = "root";
+    private String password = "lantone";
+    private String url = "jdbc:mysql://192.168.2.121:3306/med?useUnicode=true&characterEncoding=UTF-8";
+
+    private String path = "";
+
+    public static void main(String[] args) {
+        CacheFileManager cacheFileManager = new CacheFileManager();
+        String p = cacheFileManager.getClass().getClassLoader().getResource("").getPath();
+        p = p.substring(0, p.indexOf("common-push/"));
+        //自然语言处理
+        cacheFileManager.createNlpCacheFile(p + "nlp/src/main/resources/");
+        //大数据
+        cacheFileManager.createBigDataCacheFile(p + "bigdata-web/src/main/resources/");
+        //图谱
+        cacheFileManager.createGraphCacheFile(p + "graph/src/main/resources/");
+    }
+
+    public CacheFileManager() {
+        String p = this.getClass().getClassLoader().getResource("").getPath();
+        logger.info("cache file path...." + p);
+        path = p;
+    }
+
+    public void createCacheFile() {
+        createNlpCacheFile(path);
+        createGraphCacheFile(path);
+        createBigDataCacheFile(path);
+    }
+
+    public void createNlpCacheFile() {
+        createNlpCacheFile(path);
+    }
+
+    public void createNlpCacheFile(String path) {
+        MysqlJdbc nlpJdbc = new MysqlJdbc(user, password, url);
+        Connection conn = nlpJdbc.connect();
+        Statement st = null;
+        ResultSet rs = null;
+        try {
+            EncrypDES encrypDES = new EncrypDES();
+            //所有词典库 不能用concat_group 大小写不区分
+            String sql = "select l_1.name l_1_name, l_1.type_id type_id, l_2.name l_2_name, l_1.concept_id from kl_library_info l_1\n" +
+                    "                    left join kl_library_info l_2 on l_1.concept_id = l_2.concept_id and l_2.is_concept = 1\n" +
+                    "left join kl_concept kc on l_1.concept_id = kc.id\n" +
+                    "where kc.is_deleted = 'N' ";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            FileWriter fw = new FileWriter(path + "tc.dict");
+
+            Map<String, String> idMap = new HashMap<>(10);
+            Map<String, String> nameMap = new HashMap<>(10);
+            String r1;
+            String r2;
+            String r3;
+            while (rs.next()) {
+                r1 = rs.getString(1);
+                r2 = rs.getString(2);
+                r3 = rs.getString(4);
+                if (idMap.get(r1) == null) {
+                    idMap.put(r1, r2);
+                    nameMap.put(r1, r3);
+                } else if (idMap.get(r1) != null) {
+                    idMap.put(r1, idMap.get(r1) + "," + r2);
+                    nameMap.put(r1, nameMap.get(r1) + "," + r3);
+                }
+            }
+
+            List<Map.Entry<String, String>> libraryList = new ArrayList<Map.Entry<String, String>>(idMap.entrySet());
+            Collections.sort(libraryList, new Comparator<Map.Entry<String, String>>() {
+                public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
+                    return o1.getKey().compareTo(o2.getKey());
+                }
+            });
+            for (Map.Entry<String, String> entry : libraryList) {
+                fw.write(encrypDES.encrytor(entry.getKey() + "|9|"
+                        + entry.getValue() + "|" + nameMap.get(entry.getKey())));
+                fw.write("\n");
+            }
+
+            fw.close();
+
+            sql = "SELECT l_1.name l_1_name, l_2.name l_2_name, l_1.type_id FROM kl_library_info l_1 " +
+                    "left join kl_library_info l_2 on l_1.concept_id = l_2.concept_id and l_2.is_concept = '1' " +
+                    "where l_1.is_concept = '0'";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+
+            fw = new FileWriter(path + "synonym.dict");
+            while (rs.next()) {
+                r1 = rs.getString(1);
+                r2 = rs.getString(2);
+                r3 = rs.getString(3);
+                fw.write(encrypDES.encrytor(r1 + "|" + r2 + "|" + r3));
+                fw.write("\n");
+            }
+            fw.close();
+
+            sql = "SELECT l_1.name l_1_name, l_2.name l_2_name FROM kl_relation r " +
+                    "left join kl_concept c1 on r.start_id = c1.id " +
+                    "left join kl_concept c2 on r.end_id = c2.id " +
+                    "left join kl_library_info l_1 on l_1.id = c1.lib_id " +
+                    "left join kl_library_info l_2 on l_2.id = c2.lib_id where r.relation_id = 3";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+
+            libraryList = rsToMap(rs, false);
+
+            fw = new FileWriter(path + "chronic.dict");
+            for (Map.Entry<String, String> entry : libraryList) {
+                fw.write(encrypDES.encrytor(entry.getKey() + "|" + entry.getValue()));
+                fw.write("\n");
+            }
+            fw.close();
+
+            //推送词典
+            sql = "select k1.lib_name k1_lib_name, k2.lib_name k2_lib_name from kl_relation r " +
+                    "left join kl_concept k1 on k1.id = r.start_id " +
+                    "left join kl_concept k2 on k2.id = r.end_id " +
+                    "where r.relation_id = 19 and k1.is_deleted = 'N' and k2.is_deleted = 'N'";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            libraryList = rsToMap(rs, true);
+
+            fw = new FileWriter(path + "push-tc.dict");
+            for (Map.Entry<String, String> entry : libraryList) {
+                fw.write(encrypDES.encrytor(entry.getKey() + "|" + entry.getValue()));
+                fw.write("\n");
+            }
+            fw.close();
+        } catch (IOException ioe) {
+            ioe.printStackTrace();
+        } catch (SQLException sqle) {
+            sqle.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            nlpJdbc.close(rs, st, conn);
+        }
+    }
+
+    public void createGraphCacheFile() {
+        createGraphCacheFile(path);
+    }
+
+    public void createGraphCacheFile(String path) {
+        MysqlJdbc nlpJdbc = new MysqlJdbc(user, password, url);
+        Connection conn = nlpJdbc.connect();
+        Statement st = null;
+        ResultSet rs = null;
+        try {
+            //疾病I、II类
+            EncrypDES encrypDES = new EncrypDES();//加密对象
+            String sql = "SELECT con.lib_name, dis.classify from kl_disease dis, kl_concept con where dis.concept_id = con.id";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            FileWriter fw = new FileWriter(path + "graph_diag_classify.dict");
+            String  r2 ,r3;
+            while (rs.next()) {
+                r2 = rs.getString(1);//疾病名称
+                r3 = rs.getString(2);//疾病类别
+                fw.write(encrypDES.encrytor(r2+ "|" + r3));
+                fw.write("\n");
+            }
+            fw.close();
+            //性别年龄
+            sql = "SELECT k1.lib_name, k1.lib_type, kcc.sex_type, kcc.min_age, kcc.max_age \n" +
+                    "FROM kl_concept_common kcc, kl_concept k1 \n" +
+                    "where kcc.concept_id = k1.id \n" +
+                    "and k1.lib_type in (18)";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            fw = new FileWriter(path + "graph_sex_age_filter.dict");
+            String r1, r4, r5;
+            while (rs.next()) {
+                r1 = rs.getString(1);//术语名称
+                r2 = rs.getString(3);//sexType 1:男 2:女 3:都可以
+                r3 = rs.getString(4);//min_age
+                r4 = rs.getString(5);//max_age
+                fw.write(encrypDES.encrytor(r1 + "|" + r2 + "|" + r3+ "|" + r4));
+                fw.write("\n");
+            }
+            fw.close();
+            //体征结果转体征指标
+            sql = "SELECT\n" +
+                    "\ti1.lib_name name1,\n" +
+                    "\ti2.lib_name name2 \n" +
+                    "FROM\n" +
+                    "\t`kl_relation` l \n" +
+                    "\tLEFT JOIN kl_concept i1 ON l.start_id = i1.id \n" +
+                    "\tLEFT JOIN kl_concept i2 ON l.end_id = i2.id \n" +
+                    "where l.relation_id=19 AND i1.lib_type=35 AND i2.lib_type=33 AND l.is_deleted='N'";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            fw = new FileWriter(path + "graph_vital_convert.dict");
+            while (rs.next()) {
+                r1 = rs.getString(1);//体征结果
+                r2 = rs.getString(2);//体征指标
+                fw.write(encrypDES.encrytor(r1 + "|" + r2));
+                fw.write("\n");
+            }
+            fw.close();
+            //疾病科室信息
+            sql = "SELECT k1.lib_name diag_name, k2.lib_name dept_name FROM kl_concept_common kcc, kl_concept k1, kl_concept k2 " +
+                    "where kcc.concept_id = k1.id and kcc.dept_id = k2.id " +
+                    "and k1.lib_type = 18 and kcc.dept_id  is not null";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            List<Map.Entry<String, String>> libaryList = rsToMap(rs, true);
+            fw = new FileWriter(path + "graph_diag_2_dept.dict");
+            for (Map.Entry<String, String> entry : libaryList) {
+                fw.write(encrypDES.encrytor(entry.getKey() + "|" + entry.getValue()));
+                fw.write("\n");
+            }
+            fw.close();
+
+            sql = "SELECT g.diag_level1,g.diag_level2,g.diag_level3 FROM `kl_disease_normalize` g ";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            fw = new FileWriter(path + "graph_diag_normalize.dict");
+            while (rs.next()) {
+                r1 = rs.getString(1);
+                r2 = rs.getString(2);
+                r3 = rs.getString(3);
+                fw.write(encrypDES.encrytor(r1+ "|" + r2+ "|" + r3));
+                fw.write("\n");
+            }
+            fw.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            nlpJdbc.close(rs, st, conn);
+        }
+    }
+
+    public void createBigDataCacheFile() {
+        createBigDataCacheFile(path);
+    }
+
+    public void createBigDataCacheFile(String path) {
+        MysqlJdbc nlpJdbc = new MysqlJdbc(user, password, url);
+        Connection conn = nlpJdbc.connect();
+        Statement st = null;
+        ResultSet rs = null;
+        try {
+            EncrypDES encrypDES = new EncrypDES();
+            //疾病科室
+            String sql = "SELECT k1.lib_name diag_name, k2.lib_name dept_name FROM kl_concept_common kcc, kl_concept k1, kl_concept k2 " +
+                    "where kcc.concept_id = k1.id and kcc.dept_id = k2.id " +
+                    "and k1.lib_type = 18 and kcc.dept_id  is not null";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            List<Map.Entry<String, String>> libraryList = rsToMap(rs, true);
+
+            FileWriter fw = new FileWriter(path + "bigdata_diag_2_dept.dict");
+            for (Map.Entry<String, String> entry : libraryList) {
+                fw.write(encrypDES.encrytor(entry.getKey() + "|" + entry.getValue()));
+                fw.write("\n");
+            }
+            fw.close();
+
+            //性别年龄
+            sql = "SELECT k1.lib_name, k1.lib_type, kcc.sex_type, kcc.min_age, kcc.max_age " +
+                    "FROM kl_concept_common kcc, kl_concept k1 " +
+                    "where kcc.concept_id = k1.id " +
+                    "and k1.lib_type in (1, 18)";
+            st = conn.createStatement();
+            rs = st.executeQuery(sql);
+            fw = new FileWriter(path + "bigdata_sex_age_filter.dict");
+
+            String r1, r2, r3, r4, r5;
+            while (rs.next()) {
+                r1 = rs.getString(1);
+                r2 = rs.getString(2);
+                r3 = rs.getString(3);
+                r4 = rs.getString(4);
+                r5 = rs.getString(5);
+                if ("18".equals(r2)) {
+                    r2 = "2";
+                }
+                fw.write(encrypDES.encrytor(r1 + "|" + r2 + "|" + r3 + "|" + r4 + "|" + r5));
+                fw.write("\n");
+            }
+            fw.close();
+        } catch (IOException ioe) {
+            ioe.printStackTrace();
+        } catch (SQLException sqle) {
+            sqle.printStackTrace();
+        }  catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            nlpJdbc.close(rs, st, conn);
+        }
+    }
+
+    private List<Map.Entry<String, String>> rsToMap(ResultSet rs, boolean isJoin) throws SQLException{
+        String r1 = "";
+        String r2 = "";
+        Map<String, String> libraryMap = new HashMap<>(10);
+        while (rs.next()) {
+            r1 = rs.getString(1);
+            r2 = rs.getString(2);
+            if (libraryMap.get(r1) == null) {
+                libraryMap.put(r1, r2);
+            } else if (isJoin && libraryMap.get(r1) != null) {
+                libraryMap.put(r1, libraryMap.get(r1) + "," + r2);
+            }
+        }
+
+        List<Map.Entry<String, String>> libraryList = new ArrayList<Map.Entry<String, String>>(libraryMap.entrySet());
+        Collections.sort(libraryList, new Comparator<Map.Entry<String, String>>() {
+            public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
+                return o1.getKey().compareTo(o2.getKey());
+            }
+        });
+
+        return libraryList;
+    }
+}

+ 2 - 2
graph/src/main/java/org/diagbot/graph/jdbc/Neo4jAPI.java

@@ -2691,7 +2691,7 @@ public class Neo4jAPI {
 
         } catch (Exception ex) {
             ex.printStackTrace();
-            System.out.println("返回带得分需要计算的量表时出了问题!---->getScaleCalc");
+            logger.error("返回带得分需要计算的量表出了问题!---->getScaleCalc2");
         } finally {
             CloseSession(session);
             return scaleStructure;
@@ -2787,7 +2787,7 @@ public class Neo4jAPI {
             }
         } catch (Exception ex) {
             ex.printStackTrace();
-            System.out.println("返回不带得分不需要计算的量表出了问题!---->getScaleNoCalc");
+            logger.error("返回不带得分不需要计算的量表出了问题!---->getScaleNoCalc");
         } finally {
             CloseSession(session);
             return scaleStructure;

+ 56 - 28
graph/src/main/java/org/diagbot/graph/util/CacheUtil.java

@@ -9,7 +9,6 @@ import java.util.List;
 import java.util.Map;
 
 public class CacheUtil {
-    public static Map<String,String> lexionMap=null;
     public static Map<String,Map<String,String>> sexAgeMap=null;
     public static Map<String,String> vitalMap=null;
     public static Map<String,String> disgSortMap=null;
@@ -20,7 +19,14 @@ public class CacheUtil {
 
     //疾病科室,获取缓存
     public static Map<String,String> getDiagDepartCache(){
-        String path = "doc_result_mapping_diag.dict";
+        if (doc_result_mapping_diag_map == null) {
+            createDiagDepartCache();
+        }
+        return doc_result_mapping_diag_map;
+    }
+
+    public static Map<String,String> createDiagDepartCache(){
+        String path = "graph_diag_2_dept.dict";
         Configuration configuration = new DefaultConfig();
         if(doc_result_mapping_diag_map == null){
             doc_result_mapping_diag_map = new HashMap<>();
@@ -35,7 +41,14 @@ public class CacheUtil {
 
     //疾病分级解析,获取缓存
     public static Map<String,Integer> getDiagClassifyJiCache(){
-        String path = "diagClassify.dict";
+        if (diagClassifyJiMap == null) {
+            createDiagClassifyJiCache();
+        }
+        return diagClassifyJiMap;
+    }
+
+    public static Map<String,Integer> createDiagClassifyJiCache(){
+        String path = "graph_diag_normalize.dict";
         Configuration configuration = new DefaultConfig();
         if(diagClassifyJiMap == null){
             diagClassifyJiMap = new HashMap<>();
@@ -65,9 +78,17 @@ public class CacheUtil {
         }
         return diagClassifyJiMap;
     }
+
     //疾病归一解析,获取缓存
     public static Map<String,String> getDiagClassifyCache(){
-        String path = "diagClassify.dict";
+        if (diagClassifyMap == null) {
+            createDiagClassifyCache();
+        }
+        return diagClassifyMap;
+    }
+
+    public static Map<String,String> createDiagClassifyCache(){
+        String path = "graph_diag_normalize.dict";
         Configuration configuration = new DefaultConfig();
         if(diagClassifyMap == null){
             diagClassifyMap = new HashMap<>();
@@ -81,7 +102,7 @@ public class CacheUtil {
                     bigdiagName = splits[1].trim();//疾病大类
                     split = bigdiagName.split("\\、");
                     for (String dis:split
-                         ) {
+                            ) {
                         diagClassifyMap.put(dis, diagName);
                     }
 
@@ -100,36 +121,35 @@ public class CacheUtil {
     }
 
     public static Map<String,String> getDiagSortCache(){
-        String path = "diagSort.dict";
-        Configuration configuration = new DefaultConfig();
         if(disgSortMap == null){
-            disgSortMap = new HashMap<>();
-            List<String> contentList = configuration.readFileContents(path);
-            for (String s:contentList) {
-                String[] splits = s.split("\\|");
-                String diagName = splits[0];
-                String diagType = splits[1];
-                disgSortMap.put(diagName,diagType);
-            }
+            createDiagSortCache();
         }
         return disgSortMap;
     }
-    public static Map<String,String> getLexionCache(){
-        String path = "lexicon.dict";
-        Configuration configuration = new DefaultConfig();
-        if(lexionMap == null){
-            lexionMap = new HashMap<>();
-            List<String> contentList = configuration.readFileContents(path);
-            for (String s:contentList) {
-                String[] splits = s.split("\\|");
-                lexionMap.put(splits[0],splits[1]);
-            }
+    public static Map<String,String> createDiagSortCache(){
+        disgSortMap = new HashMap<>();
 
+        String path = "graph_diag_classify.dict";
+        Configuration configuration = new DefaultConfig();
+        List<String> contentList = configuration.readFileContents(path);
+        for (String s:contentList) {
+            String[] splits = s.split("\\|");
+            String diagName = splits[0];
+            String diagType = splits[1];
+            disgSortMap.put(diagName,diagType);
         }
-        return lexionMap;
+        return disgSortMap;
     }
+
     public static Map<String,Map<String,String>> getSexAgeCache(){
-        String path = "sexAge.dict";
+        if (sexAgeMap == null) {
+            createSexAgeCache();
+        }
+        return sexAgeMap;
+    }
+
+    public static Map<String,Map<String,String>> createSexAgeCache(){
+        String path = "graph_sex_age_filter.dict";
         Configuration configuration = new DefaultConfig();
         if(sexAgeMap == null){
             sexAgeMap = new HashMap<>();
@@ -148,8 +168,16 @@ public class CacheUtil {
         }
         return sexAgeMap;
     }
+
     public static Map<String,String> getVitalCache(){
-        String path = "vital.dict";
+        if (vitalMap == null) {
+            createVitalCache();
+        }
+        return vitalMap;
+    }
+
+    public static Map<String,String> createVitalCache(){
+        String path = "graph_vital_convert.dict";
         Configuration configuration = new DefaultConfig();
         if(vitalMap == null){
             vitalMap = new HashMap<>();

graph/src/main/resources/doc_result_mapping_diag.dict → graph/src/main/resources/graph_diag_2_dept.dict


+ 0 - 159
graph/src/main/resources/diagSort.dict

@@ -69,7 +69,6 @@ E4hT7N3ytDu1bH4gSInujbSy3yYbdHE3QsjDFyh0etI=
 G4j5jFyDtCkSCQzGhDDQ3xFd186JPWIx
 dQt5mgUKF7RGbvA+FxO6Aa6TFu1St0Q+
 bK8Zpab/PptNYls6bckCK0b9mG02yi89
-w4uh9xHmZ7333UOSXmsr6UpgEZ36UZf7
 b8nVx09fy5I4ol1WGH/UY+uB4rqv7sHTQsjDFyh0etI=
 PARbOnEYlB3rgwUip8TSvq6TFu1St0Q+
 go/dWWwGU8ZD55v6CvxK1g==
@@ -122,7 +121,6 @@ udHQ1AK6s0BHbbfugUQuexFNDyQXudPo
 udHQ1AK6s0BHbbfugUQuezWfKD51et5xM88MNA/vQMjPtKrR/HyW6g==
 ZHexhB9C/Zz4F0w18YK/UXNxLrmbdg4ypHp904IlTO0=
 0aA0U9ckmH2kmRvSpkGJU0pgEZ36UZf7
-qBVDKbnPe4AKlwQICYBuZARlNLC4WkMM
 asaad8Q4C6C69RZQsnc3eg==
 FfjvvdggP/1GEF1igpqnMqTO0BUuhgmmpHp904IlTO0=
 c8fipJzZpKFjsD7stN1IVkpgEZ36UZf7
@@ -132,7 +130,6 @@ pNyUesdLMVAQbzZMuyy9fQ==
 P6wUpZ7cEfJjsD7stN1IVkpgEZ36UZf7
 lcvWexuh08kQbzZMuyy9fQ==
 cOvzp9XLrnHPtKrR/HyW6g==
-24DcSkM24Sy550INzsMxI0pgEZ36UZf7
 24DcSkM24SyWrgmkghmdO1Ko6ZZdPmtccOvzp9XLrnEQbzZMuyy9fQ==
 ubdFc9Fjb2PZLxnyiQ/rkkpgEZ36UZf7
 3OUUj3H9vbXc+KxpsRsDrA==
@@ -220,7 +217,6 @@ uCAuXCRbEjO69RZQsnc3eg==
 +Eu7/eJLklcQbzZMuyy9fQ==
 rKBk01Fx9j269RZQsnc3eg==
 HX/6YLaQ1igQbzZMuyy9fQ==
-exVNBGNkzovmV1tSJ5bX/kpgEZ36UZf7
 HzTSi3irigCvmjkAhtg9xlV2rXAZxRtdwIyvNNx82FmIhPyc0rS35Q==
 VgjQjLlxJga69RZQsnc3eg==
 oCdVZ3TjXszsI02ZCbErN66TFu1St0Q+
@@ -303,7 +299,6 @@ IAucFrl7qqxLIGJootoeXm20YNLFrd/2QsjDFyh0etI=
 BKa9L3k9bnKIR37fpmmVAUpgEZ36UZf7
 dyMnqxlKzdOMygbJsihIC0pgEZ36UZf7
 Dme0iKBg4ltD55v6CvxK1g==
-NFJD2ylSPGAT2FYvg8EptOOtyzPBIb3PQsjDFyh0etI=
 gkB282ET6CHZnuNxhT4mNuOtyzPBIb3PQsjDFyh0etI=
 mW7W5BgaP+OyKY5S6qj9y0pgEZ36UZf7
 BPywirVs7BwjgMng2FanCa6TFu1St0Q+
@@ -434,7 +429,6 @@ x9PLCfVsCr/aY475fTCHFK6TFu1St0Q+
 x9PLCfVsCr+UayicXLX+aK6TFu1St0Q+
 oVV0uxz5T6yivb31KYUN5UpgEZ36UZf7
 xQ8n2p9QTXp30QT7blyM3bATS+O+j2ux
-KGYaGfDHL2mQ2aVf04oAuUpgEZ36UZf7
 Cks1i1RgvXc5Ed+Ka07xCkpgEZ36UZf7
 iwZpY5oYT+TOfQYjfoBcgkpgEZ36UZf7
 zC/bIffd/q9utdpwhrdIlK6TFu1St0Q+
@@ -493,7 +487,6 @@ anqc376RwxFrnfoP+wEgV7ATS+O+j2ux
 BWf2VPSq/CBAUyCjrKlDyUpgEZ36UZf7
 PfdaDBocFQixm2LbXcoIDa6TFu1St0Q+
 ZVyEsgcvvqkCxwQXdsGm4QRlNLC4WkMM
-7wQJN9L6tHcQbzZMuyy9fQ==
 +Coj8KXFfRzcONVccNlNVA==
 PmXiFkkqLljCK04zVVZrqh9chXIUgi4lMUxkNOfOKBk=
 /ZBZNOiYzE+2EkinjidSXa6TFu1St0Q+
@@ -540,217 +533,65 @@ qoXyHyshoZMQbzZMuyy9fQ==
 MmnONpzqj5b7W3Ekux8q5C73DbanPF9TRccUPCPq9v2tI0S3/hMLM0pgEZ36UZf7
 VcWnl3ReS/XcONVccNlNVA==
 rHGVkOky9lRkNVRINR3RaK6TFu1St0Q+
-8iRAY6UGp0asSn8lipkRgSEe0u0sni+vQsjDFyh0etI=
-yv1RINJhphm69RZQsnc3eg==
 hlmCVY6Y2sAlYvB1qywZ0w==
 9Mqch0gZ4bO3ZIY+lmc/+RFd186JPWIx
 lx6eh+YkHBXGQf4A1Ut9bKuL51BaHbjJMUxkNOfOKBk=
 d8YButcgSKy/GGpwIprIPQ==
-tLkA0HWKMWjBTiXSG8DU5A==
 G4j5jFyDtCnrgwUip8TSvq6TFu1St0Q+
-7ddpONXhUU5TrTt6Fbm2X66TFu1St0Q+
-+MgAf4yLpQY8TSWUY79gMxFd186JPWIx
-Ngf3L37GaRvPtKrR/HyW6g==
-HSlkVdSEOqy5HHs5qDJVekpgEZ36UZf7
 ib079HkmfIwFhfnjPKd+oa6TFu1St0Q+
 ammVyKzxh8wlYvB1qywZ0w==
 bKuUJ1epVUKAB2gzKtqpWq6TFu1St0Q+
 4kxYBh5F0zLPtKrR/HyW6g==
-By5Q/SU5xir2hPuSHwJFxI/omWU0gKKLgcGpywLGjyk=
-L4guYbOD3yaO4zpxKF2pcUpgEZ36UZf7
 Be1T87t+ge5BZVErSSLMkkpgEZ36UZf7
-Be1T87t+ge5XlrymvmHctmn8RnMo+1iNQsjDFyh0etI=
-Be1T87t+ge5pkJQbsmHa/762YPsz23OTQsjDFyh0etI=
-h3S6VnDguDdD55v6CvxK1g==
 Y0UYF4M6ChLc+KxpsRsDrA==
-p+PT4G88QsGRfyXfMqE5O0pgEZ36UZf7
 +yp7LhPh6/o2wwd3InzQFy4v4ck8itax/Xp6gMoyyMQQbzZMuyy9fQ==
-LAphuzvX0+2kcrqjTBL39q6TFu1St0Q+
 cZht5tTkz8MlYvB1qywZ0w==
 VynNxYGlkQARbt1qFeXe90pgEZ36UZf7
-ms3NmDDAWXmTSCZEw9Bjyq6TFu1St0Q+
 xt3ch79mTxiU1kX+sOaXa66TFu1St0Q+
-tsogkendiar58tUSo2w3wQehUZ8S0w0KpaXovc0uc2MQbzZMuyy9fQ==
 Z6ORYEVTHAZcKrbMkfbHlC2cRMPa25eHMUxkNOfOKBk=
 5yuQig9LutW69RZQsnc3eg==
 ysFI1Rx/lmYlYvB1qywZ0w==
-BmPGbmcgdsK69RZQsnc3eg==
-kfC/iWx/K4spLJFGqVmt30pgEZ36UZf7
 FQUi8oWeKA1rEaB0qwb7ZEpgEZ36UZf7
 95YPV7nX9j8lYvB1qywZ0w==
-yWaySNFE8XgC0uinfuVoYmxnLXyqWaWjq4nk6RWjNaSuOimBYbHarOSNmpdLG25hSmARnfpRl/s=
 6BDZh8XXSw/QW4f4GF4XkEPAqrofHlb1QsjDFyh0etI=
-ZLWYaLTQwFNT00yxoDHMbgh0Xdfz1dmI
 TG2nF5NcrshL/UW/zBqatq6TFu1St0Q+
 Koz74bTKswzPtKrR/HyW6g==
 hgKSS6WIoWEHfJh8pHGbwQ==
-uw03DblMIrbcONVccNlNVA==
-kN7D+ZqtUAcvuW9pCWYbuGlYN0mKKFe+MUxkNOfOKBk=
 P2TLxMjm2PklYvB1qywZ0w==
-kQHtQ28+jmQeXACFhyzR/EToXNOcYRXdMUxkNOfOKBk=
-kQHtQ28+jmSuZouGVKLMvARlNLC4WkMM
-xEUfjPFZ/xZw5Y5BQVzk8EpgEZ36UZf7
-Tp8FZ6IAYDa69RZQsnc3eg==
-y6RwJnkotMFeJ21yxIT3ba6TFu1St0Q+
 I2ROGuDdtN7PtKrR/HyW6g==
-jq1tAOYOLUzmoyKg9rVtm6+zvaDCtmOC
-yKOlDzIs7nh79Bls1yXlHUpgEZ36UZf7
-U2xwEYK0gKK69RZQsnc3eg==
-fG3H/eYATNhSRQKZWsra53QBhj7RcU8iEGY2jgtMMp1iOVqKm1lC/jM3kbRj5FbJ
-hDZPgYg3NGU8pS//ypC4Ea6TFu1St0Q+
 cq6XXjMR3YAlYvB1qywZ0w==
 NhbO6gkLwqjse810KERveLATS+O+j2ux
-01lEYT849pC69RZQsnc3eg==
 d60eywEVz6wsFNs75I9pNUpgEZ36UZf7
 8n8zV92Zv6l9KDxIQfEX1q6TFu1St0Q+
 w0pNO/G/ztklYvB1qywZ0w==
-NUh0oCFJpEFIkRc7oSI9sxj54g9K3MEJMUxkNOfOKBk=
-l7j+4xdzHzaOpn2IcS2BfMlK0pFWqtW2MUxkNOfOKBk=
-1pAXVFN8MM6Y9nqem1MzFUpgEZ36UZf7
 YmFbY+KQ4Y4JJVgL5g3rBrATS+O+j2ux
 Qud0EeTCG2HBJp7imN6w30pgEZ36UZf7
-Jl+v2iIQ3PRN5yGUeKvlYbATS+O+j2ux
-anqc376RwxH63G/Sd+ITwU5N5aNL8Kb/sYTug1WK1UI=
-2n75FC3uwfA9OsdS8GioTA==
-Y4jxzwGsXhhh+6+zPCsGcEpgEZ36UZf7
-pF+/2e5PCdgJTP+5mC6pPLATS+O+j2ux
 de3O9146cmXc+KxpsRsDrA==
-ZcATeY3SOmWeKpuD11H1CrATS+O+j2ux
-tQqyk3JtpQQO7u5UUGMv2g==
-2UBsnltmJt8O0fuuZbNSN7ATS+O+j2ux
-xLCK8OpxvoPp/jdmOjkFz0pgEZ36UZf7
 3nu5sG93VQNYm2pzcr/F6K6TFu1St0Q+
-x1gDU8j+LVoQbzZMuyy9fQ==
 zy+BWp25HIYgXPwNYOJVVEpgEZ36UZf7
-rik2KFw0W9LKk5CmR15tCUpgEZ36UZf7
-iD2zFkoaIYn3jKn9VtRuUUpgEZ36UZf7
 W+uRpV2VRGcYmeMFfkzoqEpgEZ36UZf7
-4/QeAGcSSrGAdZmDqSGbKK6TFu1St0Q+
-caYmDfoAMRXosWPRubTz9g==
 5HgQz9bhZBYtp15Pg4z9+EpgEZ36UZf7
-Zt3PQjNhZt4dh+oZBnL0F0pgEZ36UZf7
-hIcKxvB0qrQGCgxTQavhQXTYlvIzP0QKMUxkNOfOKBk=
-NkCyaqE/ps8KVV36DWVEmkpgEZ36UZf7
-wlNxo/NEgQIQbzZMuyy9fQ==
-xGjxEbbo/tyk/LGvU0BaO3zRjTs5FWKZT9LKSDBjzI0=
-bDPf+nD+hxwE73RpDGKI40pgEZ36UZf7
-hQZYrUVY72S69RZQsnc3eg==
-/ON9/SiyESq69RZQsnc3eg==
-v8vThZRoE6z5Du8sgvEkyUpgEZ36UZf7
-ImwczbJet4gpLJFGqVmt30pgEZ36UZf7
-gJq/yMRPk7ghU63syh3o+wRlNLC4WkMM
-x9PLCfVsCr872pP1HOWsdK6TFu1St0Q+
-6Ng+ofO0rwXMa3DbkDefIUpgEZ36UZf7
-wYNK0Hyz4EGkESnpc13eGEpgEZ36UZf7
-DH2VViKrbzm2+yNbFqeeuK6TFu1St0Q+
-nzpCfqAjtr7g3Myw7p6Prw==
-WaCq4CfQ+yTb4rzpiyZ/C0pgEZ36UZf7
-XN2oP/Cf/byIR37fpmmVAUpgEZ36UZf7
-O9XmBHNPJeYjjdY2e/M+17ps2XBWQXn5QsjDFyh0etI=
 UrVzAjnIcuBxOkPtc5YzsrATS+O+j2ux
 g0zbV1jZvRG46IiBV/Z8b7ATS+O+j2ux
-QoMoisX9FiUpCIXsJjYaMgySnYTRiwEn
-EpkhMubA/KU2uRhwSJ6d+dqvVpaA8iZGI35dkw7g5BTk4h18fP+2zkpgEZ36UZf7
-rgsSZho3pOcQbzZMuyy9fQ==
-qlK1wP+Ppb3c+KxpsRsDrA==
-YYMx7qtuo1ayk0jmTIrtlQ==
-WC5TBTK4DARt2LxFZRpKFhBvNky7LL19
 Nt6VZaeWqZy1QXPpBNd8kSwG0AwB1kzR
-BKa9L3k9bnLYAUGk75ryZK6TFu1St0Q+
 ycU0RK38xbDLdJNqyw1kxK6TFu1St0Q+
-ADGal0YE8X3q1KK8iguWI7ATS+O+j2ux
-G4j5jFyDtCleJ21yxIT3ba6TFu1St0Q+
-XQT3SHWafIA+AOWtZC88XFOlBV102mLpd6G1vctpYVk=
-APlTV8hL/UhD55v6CvxK1g==
 9U2iKDgg7A8Fwc85LPgI0JTAjlN+0rCKQsjDFyh0etI=
 REmCvUYOcA6ivb31KYUN5UpgEZ36UZf7
 IOQii0cLb7Ss+U6SBrCCGj4NnApZbtCrpHp904IlTO0=
 GGRFEPnaZJvp/jdmOjkFz0pgEZ36UZf7
-DPcCVqJqTP2yk0jmTIrtlQ==
-EhN8Yg/+42MhU63syh3o+wRlNLC4WkMM
-ycU0RK38xbAus6y5YmnJ8a6TFu1St0Q+
-NBBXNZCaNE99yZ92+zfrDQehUZ8S0w0KpaXovc0uc2MQbzZMuyy9fQ==
 XXIUiO8imQcnTs9sqqXWpRS4C2VAq+q+sYTug1WK1UI=
-kE9cXidvCFD+T/ECY74DJkpgEZ36UZf7
-gPP0pn4Vnj/v/hYXgto6YEpgEZ36UZf7
-xEHYC5PyimMLNP6gjPbd7qzdaNgRQ3k/QsjDFyh0etI=
 XXIUiO8imQfCgbjpU0Ib6a6TFu1St0Q+
-PnVlCCZAawOE0okSzHdyMg==
-6PWqwSU8wtoChNsaH8SehEpgEZ36UZf7
-wVGfnRNLTd6ckHJOYGTVjUpgEZ36UZf7
-Z/K1TrT35wRsU1ztgVtIuUpgEZ36UZf7
-6gl1PQtSPIRwKWxaQhVjhkpgEZ36UZf7
 r83+pje9TfVhDZurQlhANEpgEZ36UZf7
 1TVDxDeahUPei54lsZmaNkpgEZ36UZf7
-QqZvghyTZW1bnA9om6yqTUpgEZ36UZf7
 sdjtfGRtUulD55v6CvxK1g==
-+J4ENRSK/v0QbzZMuyy9fQ==
-GOs/j0/PHenRfjbPtNijZ2YAKjuUUIzqMUxkNOfOKBk=
-U4b/MQUlb1+5cHNI9bNUK0pgEZ36UZf7
-ZMi5Nqe3WHdbnA9om6yqTUpgEZ36UZf7
-zp7DEq21BTxsfhs2CFD2Nq6TFu1St0Q+
 w0f3DSSJVtQzU67SFkmiOUpgEZ36UZf7
-/LSatlr02UyHVHh44k6OK66TFu1St0Q+
-k0IDo2JFDLgMKLDT5UO58EpgEZ36UZf7
-mjpPHyZldWUKVV36DWVEmkpgEZ36UZf7
-0IZmYHFR3bCD+GOmOS1vb0pgEZ36UZf7
-7AFfCdxoVJZIg9VPXIESctFg2vq7ZIJOQsjDFyh0etI=
-lWtbv6NBWWK7uj6fRZvfAq6TFu1St0Q+
-ukqENW9NXFfz5+adBH/bupGjS9DLEMfDQsjDFyh0etI=
-yUBIpiXiGhsqqtObA+jC6a6TFu1St0Q+
-S/H21W+7xrT8LfyJUw8Qg66TFu1St0Q+
-BmPGbmcgdsLzFy1vvSdUb3RjEyS9gTVe
-kuRVsnRar1ayk0jmTIrtlQ==
-QoMoisX9FiUpCIXsJjYaMl2EZhEkUbbB
-ypYq0llNvxvDvSjELYSSGjUSEzY66ZUkQsjDFyh0etI=
-kMsfiffRfraGOny5ykosGoUXNaoO/BVx4nizU8ePnqM=
-IRtt90VsnuWvMEnx8xG5IkpgEZ36UZf7
-6SsNbr0oX/bjaqiJIciPrGKuktMEkyH2
-feu5o9+E3x01Teioz1asRWmZ459ubdRUYHykN73Wn+M=
-XsRueZvhAyrchbqz0R3o2dP6GEffIpvWQsjDFyh0etI=
-u0G+9wck7g3c+KxpsRsDrA==
-YcHRGNzXD26iXwDjUpDwTEDKk/bXBHJ0
-Y5dft0VB1PK90G9t5BpadWqArIkYA0eZMUxkNOfOKBk=
-LBjLIuMcxdWZpm/H5lv+OEpgEZ36UZf7
-UQx8DfENDTszloZYXxV8DZXnGNL8W2tusYTug1WK1UI=
-6+Di3CtUGFdoBFTju6IXzA==
-d54IL9u9Px8Xk5P89gJ9/kpgEZ36UZf7
 0D2aGEdKA2bUHS2CnvFBDkpgEZ36UZf7
 5+kriP2ZEgUdh+oZBnL0F0pgEZ36UZf7
 megPgZgZatklYvB1qywZ0w==
-nAXGI/L25SwZxzETtMYQQUpgEZ36UZf7
-5sZDUmzYHMTmON+KcZNNZ66TFu1St0Q+
 PHWmi2qt9kYQbzZMuyy9fQ==
 9K+PZ38Hd/1w5Y5BQVzk8EpgEZ36UZf7
-xjBOWYwtJQLNj3osZXWK/8Q6uk/WHcyfgH9y+1z98z4QbzZMuyy9fQ==
-EpkhMubA/KX4RzabTMUs2kpgEZ36UZf7
-Wd+9E2XPGaZxdPMtgdYxUw==
-w0pNO/G/ztlsUxVcnSbq+bATS+O+j2ux
-97Qtij5/dU4QbzZMuyy9fQ==
-SFNNbjNe+G+69RZQsnc3eg==
 P2k5Ue4Lv8yDxbJC8dg0Fa6TFu1St0Q+
-GxXLVwg10cxPWlb/4xs3x0pgEZ36UZf7
 PP6ZmRaZwXkQbzZMuyy9fQ==
 Nt6VZaeWqZzN5z6vOYv1dKWQNOM+Ds+D
-4GdIYYTCuHIjLd5G+EcdiUpgEZ36UZf7
 XsRueZvhAyoSM4JWt9br8q6TFu1St0Q+
-wfTaJKknaGYBXHGhpNz07+OkL5M3TCt9sYTug1WK1UI=
-KrM56b+7SE68GuwHHAe1F66TFu1St0Q+
-GxXLVwg10cz566BhBCpdryqM5g+G294FWodouMqHQLNfPoRRPWV/m78YanAimsg9
-TezaT9xFnR7mp7IaDYZewM+0qtH8fJbq
-YQQoYVTVvbIn+EUqolD7+K6TFu1St0Q+
-cVQry4wyUS4X/P21aNqIKEDKk/bXBHJ0
-36qcpqP+o0tD55v6CvxK1g==
-w2M0Wb/MKy/gTfzonbprqgAp8PPbpEi+bUHUXpSefpk=
-LPekO1Vw5khtd8WtUYdrl/znlgPCB6PWtNskfppU/NJD55v6CvxK1g==
-NJBbvvKkHtda94t2FvAzVK6TFu1St0Q+
-74DGLBbBBVnlQZ/5Ca6Djemquk3AdnJs
-KbKku7ucQ39uoije31Jd6KWz2PnvTBpZIF7qeEkmeBYS1JxwVsjrjRBvNky7LL19
-EpkhMubA/KUBsmPnXzrVPLSy3yYbdHE3pHp904IlTO0=
-vtDo+c8/v9K8I/xD/AcfOw==
-EpkhMubA/KWyxRijLCrWjq6TFu1St0Q+
-8GR+KuRP/IrWo4X+NB2VL4HPvk1suglidD7SSsTO9eReGKOsUZaao0pgEZ36UZf7
-eK6ybtdyXzbosWPRubTz9g==
 8F5Rffa3tXczU67SFkmiOUpgEZ36UZf7
-O+XExVGK6ypsU1ztgVtIuUpgEZ36UZf7
-HMpgmZFP2a26WyYbrmJeDzyh5iKxksd1SmARnfpRl/s=

+ 8 - 1
graph/src/main/resources/diagClassify.dict

@@ -1,4 +1,3 @@
-kQHtQ28+jmQArPJrd/bUjJEB7UNvPo5kaH9Yc7Wy6H+RAe1Dbz6OZHuruyPH85zpkQHtQ28+jmSSecxn6PopWA==
 9K+PZ38Hd/1bK60dslh9jD08xZT/RFfX6nQY8kcF6f6Q3pCfQMdEPfSvj2d/B3f9Tj6O+pMPrIRmq1tUfM7NXEw+ew7Midqlfcmfdvs36w05mxVKRDBSCg==
 csx+mzURhJ9wBHXy23rFCqELYR/Ge6SfJguv40zsenLdteW2LzNMtrg0JQEm9dDbB1G+0rUX/fo=
 bK8Zpab/PptNYls6bckCK2qOH6CihZwfKfesZepD1yCYOEv7G+Opo+vBv5hwZW/eVnsuGILD+YJwkU050adHZc9nrcMQ3QcNfldHWCrTN51y47LOmx/liqE23F9pxjrKlKBI0b+VWyI=
@@ -16,3 +15,11 @@ anqc376RwxF+Tyu5VoFlKqXxSD+f1O2vC5YOy19B3S1HJbFtXbY5u4s87+ChjgP9RyWxbV22ObuxUtK/
 +8iGrGjQRQXLJRvWtAt1iYU809Pr5+wg80e6b34+k3qaoMeR3HYQyn6/oN57/v4WReElQJ+Fc6O3OV7VztniKXRpb7y0gLlK8W4jXgAgFfPwHLNp0tAohzUX4TxTFrGq
 8n8zV92Zv6lIoOZPZs0HwgrZxL5wy5xjD7Bi/O7j4pT7gtDvhBGfLPJ/M1fdmb+pEWTgRjnEzOg=
 u9VShjNiQLYp+RSWAxFgMbvVUoYzYkC2ltZE6uLO1Pi1rPvw0grsulq9P1+cZSODCwy1ps4giW8=
+qvpIupBm2WU5l5OJw2EvIw==
+jryElcwKEMNxLBNTp+QtPZEB7UNvPo5kknnMZ+j6KVg=
+8iRAY6UGp0bV9dVH/8Qm5qIHTB7Ij1fOi35LjiCAO+Q=
+6uJVi7VzfR8sc8AAqY/c+ttrZ3x7ELQoYEOoage28zr0QB6PuRppXg==
+fMSADmyw8MW8FOmzMncHvpQV7Ysdg03qYz4zvER6wEvEtOpasjBcV/RB3GtJVgXci3ZCuM64HWS7PReC8mKJskLIwxcodHrS
+Mpws87qKqdWbZLCftYQH50stTN0x7PKs59Ar4HjN2sZKYBGd+lGX+w==
+CXAPCKJ5Li6sUZOVx33W77qZTYBpQ5d+
+tQqyk3JtpQRXSrv36QVx/9OgcHrFSUCzdK1XVvKzJ0l0Ua+AtfLnbbqZTYBpQ5d+

文件差異過大導致無法顯示
+ 21154 - 21153
graph/src/main/resources/sexAge.dict


文件差異過大導致無法顯示
+ 1137 - 1140
graph/src/main/resources/vital.dict


+ 0 - 70
graph/src/main/resources/lexicon.dict

@@ -1,70 +0,0 @@
-s7W6RG6fbY4F7hCN+9GcDQ==
-BEwho/Vy3FcLGsZzyz/lrA==
-teL+mOFs+P5xK95yiefr1A==
-4WmmlIMFQw5dunQJNQOl9Mwy2IRdVfW7
-9n8MOrfpOzBse1YGr4PBqQ==
-bRdFLLf/QBQiAZd/xjyj2A==
-lSAF5F4PkDDgn5PMcGOHAQ==
-bI3YhExhf0ygnBv7GDMx4itzoMTPCpME
-9zvpXMKfsnfx3IKU2o+7zA==
-+BpdcftYCemAzuLCdJndHw==
-sqLl47cHFtetc3AdSoYwrQ==
-6BWOhrPv7J9Cj5vlDdVnBg==
-BXy7J2Qb4CXZhTO+q7f7Lf7jaz6wvHMH
-mrGmgHlOA2+2LlGVCW+2VQ==
-HkDJvzXre9AZ0B6jFd0rnw==
-BMjsBRH09HZlgTSR49CWoQ==
-K84K5InRTJH+1WlqU+tc90pgEZ36UZf7
-kJHwz4yDQvBKYBGd+lGX+w==
-+/iMWRrE/x++AlTuumOl8Q==
-yMIQPPgAnitefGaE90oS7A==
-DxBSa3FWWI0GI1/7VhWFVg==
-e5AUaAGRyItcJWT47mI/zw==
-TBEKZfNYdDAg4XtzH2iEsg==
-u0ELyb4t2lpWVlgi5Q4bKg==
-qHbaJZG3uf1NbYsDV8prZA==
-s5V0HutCSLYaBuBBF/Rq7rDyYRB1LPgT5opE3Fvtcpc=
-Iq7jb+VkzbVKYBGd+lGX+w==
-OsBp5KngCTRsQ1lgzfXoww==
-pg/hIoBF96D4FgUZuL7Odw==
-7vjnQx+bY41lsbwpSGyTBA==
-OqbB5fi11VfgcQlEe5DD+g==
-mmn7OCfRGCIEBLNEPwIttg==
-SRpf2O8GDiXbwAhKPF9MrZRs+QR/TraH
-lBMjruy+wjFKYBGd+lGX+w==
-ORpbdnw5IPSmtWtITrC/NQ==
-2soIQt/8ypDQGKRoU3BIkA==
-152PZYqH1ltlsbwpSGyTBA==
-cdavJOjogbpWVlgi5Q4bKg==
-LRN4dXCzoSUohhmaI9fLo2quUiUsJ2os/uGB4mDfi8Q=
-jb7cwm2aycBKYBGd+lGX+w==
-752lihMtImRtrXkjKvRwuQ==
-acfDmX94GIOMwEbR9wcFYg==
-QEGtWQkCHzxCj5vlDdVnBg==
-j6O2WShA+6xKYBGd+lGX+w==
-Om054uvU7T/J8AHLUkpbHg==
-cT0V76bKbStXYt7WbhcZXA==
-FbMgeI9IkO5LawQxODdEdpQbfNX9OvEj
-Qx1FtMXVFI1lf8WqY4kn6JQbfNX9OvEj
-4JmXbdcpagMbPUodBoCDFw==
-kjlisLDTfaNO2NL8TalLMg==
-dK/xyBvi7aP5XurM68XXvZQbfNX9OvEj
-WNOryxc9xnKTYO4WfhUMJ5Rs+QR/TraH
-JFdbafCC7S6fvvtXA3KqgQ==
-OefsKaBNTZj74WCSZlzDhQ47c03sgd0T
-qSj+i5YMSUDZKCVbszjsWSmuGyZkv2+0
-E4nTZm/cEARKYBGd+lGX+w==
-bBhhPMkI2shrAzg5abL/Xg==
-vC/g6hg25OE63hTezlzQHg==
-1P1mt9OJzQcORyCgk2k6ew==
-SdxW7VUIlOSW0Ig3/ZQrnQ==
-4AYbwy/G2ny/MOtJaBopwg==
-H8M+KMEP5AQh3ECueWip2w==
-TCyc2GYXyTOvZQhdm1P06w==
-2Sgj895/6q1KYBGd+lGX+w==
-YCDTg/uaEkbXe38IBCUIjQ==
-mFo8rO3m/XWvIrKw4P4pRg==
-ChZ5zGIydShKYBGd+lGX+w==
-eqlnQUtv63pKYBGd+lGX+w==
-4UDrddpEYJzRmL/ZWxBCEw==
-Q4Dnkx8QdKqTYO4WfhUMJ5Rs+QR/TraH

+ 1 - 1
graphdb/src/main/java/org/diagbot/service/impl/KnowledgeServiceImpl.java

@@ -378,7 +378,7 @@ public class KnowledgeServiceImpl implements KnowledgeService {
     @Override
     public Map<String, List<FeatureRate>> getLisPacs(SearchData searchData) {
         String[] featureArray = StringUtils.split(searchData.getFeatureType(), ",");
-        List<String> featureList = Arrays.asList(featureArray);
+        List<String> featureList = Arrays.asList(searchData.getFeatureTypes());
         Map<String, List<FeatureRate>> lisPacsFeature = new HashMap<>();
         String webDiag = searchData.getDiag();
         List<String> webDiagList = null;

+ 8 - 10
nlp/src/main/java/org/diagbot/nlp/feature/extract/CaseToken.java

@@ -100,16 +100,14 @@ public abstract class CaseToken {
             }
         }
         if (!hasFeature) {
-            if (sn < 5) {
-                Map<String, Object> fMap = new HashMap<>(10);
-                fMap.put("feature_name", lexeme.getText());
-                fMap.put("feature_type", featureType);
-                fMap.put("negative", key);
-                fMap.put("sn", String.valueOf(sn++));
-                fMap.put("property", lexeme.getProperty());
-                fMap.put("concept", lexeme.getConcept());
-                featuresList.add(fMap);
-            }
+            Map<String, Object> fMap = new HashMap<>(10);
+            fMap.put("feature_name", lexeme.getText());
+            fMap.put("feature_type", featureType);
+            fMap.put("negative", key);
+            fMap.put("sn", String.valueOf(sn++));
+            fMap.put("property", lexeme.getProperty());
+            fMap.put("concept", lexeme.getConcept());
+            featuresList.add(fMap);
         }
     }
 }

+ 2 - 0
nlp/src/main/java/org/diagbot/nlp/participle/cfg/DefaultConfig.java

@@ -83,6 +83,8 @@ public class DefaultConfig implements Configuration {
         try {
             if (StringUtils.isEmpty(path)) path = DEFAULT_PATH;
             is = this.getClass().getClassLoader().getResourceAsStream(path);
+//            File file = new File(this.getClass().getResource(path).getFile());
+//            is = new FileInputStream(file);
             if (is == null) {
                 throw new RuntimeException(path + ".......文件未找到!!");
             }

+ 5 - 2
nlp/src/main/java/org/diagbot/nlp/util/NlpCache.java

@@ -31,12 +31,12 @@ public class NlpCache {
 
     public static void createSegmentCache() {
         Configuration configuration = new DefaultConfig();
-        segment_cache = configuration.loadMainDict("tc.dict");
+        segment_cache = configuration.loadMainDict( "tc.dict");
     }
 
     public static void createPushCache() {
         Configuration configuration = new DefaultConfig();
-        standard_info_push_map = configuration.loadMapDict("push-tc.dict");
+        standard_info_push_map = configuration.loadMapDict( "push-tc.dict");
     }
 
     public static void createSynonymCache() {
@@ -59,11 +59,13 @@ public class NlpCache {
 
     public static void createClassifyCache() {
         Configuration configuration = new DefaultConfig();
+        String path = configuration.getClass().getClassLoader().getResource("").getPath();
         standard_info_classify_map = configuration.loadMapDict("classify.dict");
     }
 
     public static void createChronicCache() {
         Configuration configuration = new DefaultConfig();
+        String path = configuration.getClass().getClassLoader().getResource("").getPath();
         standard_info_chronic_map = configuration.loadMapDict("chronic.dict");
     }
 
@@ -74,6 +76,7 @@ public class NlpCache {
 
     public static void createPropertyPairCache() {
         Configuration configuration = new DefaultConfig();
+        String path = configuration.getClass().getClassLoader().getResource("").getPath();
         List<String> lines = configuration.readFileContents("relation.dict");
 
         extract_relation_property_pair_map = new HashMap<>();

+ 23 - 23
nlp/src/main/resources/push-tc.dict

@@ -27,10 +27,11 @@ olBfBBlxWjycJfkSrHWjXx7XxndCZTPS
 RwfaZMa+tcIhXzxcl4+Idb9VMd3r2VAj2/BLLbx/+4pXpbNURAoHMosMluUE2o11
 RwfaZMa+tcJkNVRINR3RaEcH2mTGvrXCRf+adBOnJwQ=
 UkldRKmIA6WAwg1Wq5Vn63crFXTS2iAzA8iI/B1bd7NBz9sS2ov5oh5KTBNr3PIC
+UkldRKmIA6UaPwhFqEJmrMX7M3NIrxfraiEsqO85sLgzwSWeiYa9dQ==
 UkldRKmIA6VnDBewcIhcpngRzj1NxjWsI49cPLsdnslNM37bA6HHygFsDcrhWfuKNAbK+74+adtKYBGd+lGX+w==
-UkldRKmIA6XTeO8h3KzbE/1CIPowQycv8DqlBsEDrXmeL9kgB0JCLg==
 rM6axi/XjaYWBU8GO7hsC046DgCgaagT9YQ8RM5gOiY=
 LYzBUSplh3VqKHv9aeUo9RkUk5HkxzuvB451+nWReBM=
+LYzBUSplh3U+qOXat531ucqtUJ0mpJv3
 vQS1yCOfVdikij2yDrKxDe6Qh3TPngC/FWN3xRThYNo=
 +nnls/lOkLPVWstjEKg9e7jn0JrAS1kkryKysOD+KUY=
 bS7l/RK1jZNgshyonVW0t+moofYVr0mL9YQ8RM5gOiY=
@@ -112,7 +113,7 @@ fX2inCV4aRo2inrp+yDvLLPvFObbr4H8B451+nWReBM=
 PfmwFMkSgnaK1zhbluODDTgDx8qs11DG
 M/HvoT4H8rksDNIz63sDMzqrdimkS9GzrUh2he+KdNk=
 tS4IBGYFq54luM2Oe2mKmFjLajL1b5kzLKfEtSxDdD2vsFqAZYBWaQ==
-tS4IBGYFq57pSgcoVE4Lbab0TFIDFrR5LKfEtSxDdD2vsFqAZYBWaQ==
+tS4IBGYFq57pSgcoVE4LbcCbeVHeLFEfLKfEtSxDdD2vsFqAZYBWaQ==
 T25M+lo10YvqFtaQbY6b0jgDx8qs11DG
 KWJC+jP3MmrsHjkUuXPUcdutwFpX2NqsWJR/aEzNaJK6+7a927Mlpw==
 KWJC+jP3MmrYw40ayuCnk78h54ct0pGn/q8HAwDYbMw=
@@ -166,7 +167,8 @@ TAeuC8oKKcArucN2NjKvr0OOPTE6p5v3
 Tdogv7Jugv2K1zhbluODDTgDx8qs11DG
 VcxQmeoIyVR9H7WEhFjtUAnW3C5Wg3qZB1jjWBOdWDE5Rw3NtFh+7A==
 VcxQmeoIyVTUnAlh270+3AM7oB/AV+xgWJR/aEzNaJK6+7a927Mlpw==
-oRqu1B35G5rbxfAeY2EVMMX7M3NIrxfraiEsqO85sLgzwSWeiYa9dQ==
+oRqu1B35G5o4r2XHT1h+EizhO9/sW2ZDEWtLgLSKG1o288pnTvZ0luzSwRJA5gyR
+oRqu1B35G5qbHeo7szvfgg2GQNoJDXDxgymUzeBoiIQSmVi51alVLf1CIPowQycvDG0qAUBoTCWeL9kgB0JCLg==
 0oIJnb71twsZ9j4hcnj5dw==
 XvltMqvZ0rED8lKh69ftvADD7Gn6zRXzatKSiOnQI0Y=
 AWTAoSTdc8bFKhCR9/Q+JH7X50rwxyEViy48LWiKVlE=
@@ -229,7 +231,7 @@ gF3QPZp34YB0Cnu7zg3rWEwEAlMwW4TWaQ8iknc+isabXgLykjqhpQ==
 A5rchc0m68Tbbj8iyg0WWPfrvNk1O06TJVuN0J2NK24=
 +fdIbINFG2E54R3RmIhG3VwoE/Iz9+ln8ykBDurj71SzIoZNbSwKiQ==
 BGL6SBJINCSzbDHIoU2htbskWOWaLi4uZbG8KUhskwQ=
-E4hT7N3ytDvTeO8h3KzbE/1CIPowQycv8DqlBsEDrXmeL9kgB0JCLg==
+E4hT7N3ytDsaPwhFqEJmrMX7M3NIrxfraiEsqO85sLgzwSWeiYa9dQ==
 E4hT7N3ytDtevV6eooplxkjAXydQEyYf32kQDgX44Ia5IbscCkv6s0S6FHPwV2d6
 E4hT7N3ytDuRMvbsctv8GU2kckilPvYvJ3npHh7ywA8=
 sP3baNIBbP5o5mcDrMIXM5aexRmSKyOAn777VwNyqoE=
@@ -369,7 +371,6 @@ LMOMREe6CLzXYl8eOxe0eOf3bxJOe6dS
 21FEZWwAuXd4VtVA2EJzWVFIpO1SKQ8oGVZ4soLkvsjxMWtT7kk4uA==
 yY/+t/uUYeYezPAZR3O6fpcntkx8oz+IOq4FtKDlq5o=
 FVJ6Danz7zv05iCN+nmpsA==
-+xe5CpUw1IYIayJ99X/P37J/FQZxcg3o/2mxBEfNQnM=
 yAs1N414L3aMDOfhS/fJ4g==
 59W1R2nuO4NiEqBrwUf60g==
 bJdd7hGHsxqSpiHNCTvHGcxg2LiwSfHx0Zi/2VsQQhM=
@@ -618,6 +619,7 @@ hJTWPHNwOSXAcvtjdiRQWpAU5GnmxS4yA1p8C3jFxs8=
 7SmXOMjHw4W82j8JYvRvio7EZDbRGh+S4PTHEB/BVKNtY1CEpVlMHg==
 RkUdNfsM27HSIZ2S4eWyLQswdhDImns1ryKysOD+KUY=
 di/lf92orkNtQR1sqAz5AJL5L0pTEc4MDPf2x9M9U8hDUjLgRfYJd7Mihk1tLAqJ
+0e9jJzjD5RO9wQKLGZD07EIHqn6L/+gA/q8HAwDYbMw=
 kb80gvcxzap8cPh5H3HqCH4diksKryCj8euHAclJAyKzIoZNbSwKiQ==
 kb80gvcxzar3vBhNkU59YzZqgIz/f4ngIOF7cx9ohLI=
 AIvTjMd3sKt841qlXVGmBDHm40R9ztCA29PyhLKx2/M=
@@ -636,7 +638,7 @@ R8yxAy9T5+Eq5EFBYU12pAtL5Eok3uWiWRaTFzIkLGM=
 2WHD1DmO54s7ZTIQu2r/3A==
 D5BkMMObp+wL5mGLILBHXZZQX8Skgbf1AGxaLY4tP2M=
 EyqU/EW9b7/dMwuqnRFUGwu83AtfwvRQwLdlewz8HCWzIoZNbSwKiQ==
-HM89DEXwIpbNR2sokIykjPsDs+aLBE4D24QZaZnulHuzIoZNbSwKiQ==
+HM89DEXwIpbNR2sokIykjPsDs+aLBE4DpHp904IlTO0=
 9ON7f+cfbFIiWD+NTcQ07a7xei6OMQavU0LC/8AnQQezIoZNbSwKiQ==
 6ByZH6ejZBR6HE8sMpwENjgDx8qs11DG
 md7FgUY16RRpHAHM1WsmQ83qakX12HuHx2HxBhizdbQ=
@@ -714,6 +716,7 @@ C6UiFAmco8zzPsMGSih9ctLEebb7eZ05H1SR+7PDGTU=
 C6UiFAmco8xuTtegSlfNltLEebb7eZ05H1SR+7PDGTU=
 C6UiFAmco8zjt9gvj0gZAdLEebb7eZ05H1SR+7PDGTU=
 TuGSVxlwRNKYF2Tgr3zBNUpgEZ36UZf7
+MnfivOeWEJsYU7xbNSSDfX4AS0mk96sNWGgkX+sK4nA=
 SJTUzc041vd0JO/NBFpZWnta+BlHs41g7OcTCOGpEhQ=
 UB++3LWUbBdlxfk+Fjr8cCRAkSArWPDFAChUxc1Zoio=
 yregbjAli5gjVPt2N5tn00pgEZ36UZf7
@@ -1000,6 +1003,7 @@ kSBhzNeslY0Gim80mYxZp1dAusfQ4FSIGjFhHUGm/IA=
 l1FS96IkP3l3YPJAFA/h0Q==
 DE7pZV0HcrIHAKOW399UQsiEkif5w7Ir/q8HAwDYbMw=
 DE7pZV0HcrKTjsrYFaiDbjZPBVLDe6xWFreNtoJyFoq6+7a927Mlpw==
+DE7pZV0HcrLKhakr+gkrN3dpNn/X0gcbzugLgdzRhePMRBywog9RW/03uMLuMSSK
 DE7pZV0HcrLCgeHeyn5s2siEkif5w7Ir/q8HAwDYbMw=
 DE7pZV0HcrLc97BEhzokHsiEkif5w7Ir/q8HAwDYbMw=
 TsPvcv3gnZGam9uNjHoBaciEkif5w7Ir/q8HAwDYbMw=
@@ -1131,8 +1135,8 @@ zXN7UFWz47HoX5ogCp3IMxpzF5Gu8W7EOzlGHiOiroWvsFqAZYBWaQ==
 zXN7UFWz47Gy4XKjvUG7z8nmMCUIf53k45dd68uAvZ5KJMpraXADvNXgp+T/6zES
 zXN7UFWz47G0bnYiJzmfSmzpVYz0Oos0OzlGHiOiroWvsFqAZYBWaQ==
 zXN7UFWz47EAve+ENpJj1KR643W73aKxOzlGHiOiroWvsFqAZYBWaQ==
-zXN7UFWz47H/WExCskdiAaOkV7tb9ZLIOzlGHiOiroWvsFqAZYBWaQ==
 zXN7UFWz47HlRy4DpsaxvODcs5iWqdNrOzlGHiOiroWvsFqAZYBWaQ==
+c6UNY9U1NIxLCbY6i7uQFUbOhetaraOrX22hixRRRBw=
 c6UNY9U1NIzLfS5PGDbBIBn/KOr4MFjmZ5WjJulMlEE=
 mAvmI45vfiUgCk21iG9YI/9rOaHJgBfaZbG8KUhskwQ=
 mAvmI45vfiWFkT5//VK/v/mOhHKu3dkEOq4FtKDlq5o=
@@ -1605,7 +1609,6 @@ v4S90bmdTGEqqFf1kGpzN8nSS7FPKNfzXDYoCuF77rs=
 oVV0uxz5T6y55ASlhs7XEcnSS7FPKNfzXDYoCuF77rs=
 qMmIl10EAb1CFGckIRfCZsjtr3b8oYw0WhnOLHtIOY0i6GsYqOa/eQ==
 LDHmY9CxF4eW4vUEgc/vjFzxfdkNX2ptoLlg4+4TkY1k4OSyGWe7y8X7M3NIrxfraiEsqO85sLgzwSWeiYa9dQ==
-LDHmY9CxF4dKOE6iQRaAJflCXsrUxt4QjsdC1Mc5OVTtnQlJXK6cH4Z6/gBieh+YlIVvKeMLJ0I=
 LDHmY9CxF4dKOE6iQRaAJT7v9621ficr3vqLUDNT+hHtnQlJXK6cH4Z6/gBieh+YlIVvKeMLJ0I=
 LDHmY9CxF4e75xBJQ3AG3oCe63E/36Nv32kQDgX44Ia5IbscCkv6s0S6FHPwV2d6
 LDHmY9CxF4fngQF+zzgjMZlPZ5BQfWy73f5xFOgEkWTZ1uHgrtlIM701Dw5DM3Rm90Ibhkol18s=
@@ -1614,8 +1617,7 @@ m77dxTVVhn4O6Ui9EMM/o2EkMSGTUhwrWhnOLHtIOY1krJSJ7APvHQ==
 m77dxTVVhn5hnlf3TZ2VZ38rd04/4iO9elNT+u7Lv/XHwnOh4QrnrUpgEZ36UZf7
 m77dxTVVhn5Ho+tBb+yEizp+TuIAHelCvO/temg+9b8=
 uEm+zGdzejuZnF6DuRckiW27nvnjqQYwZUGUrM6EFsZarS3OPHmNlBkDFDEF5nqI
-RjlHunEZKP0T7ne662LsTqsq5P4L6Ap+/FRS7OcKkCw=
-sBysSN0ZvslTUXjkstSdxwFsDcrhWfuKRU5Mh2Bgbd9KYBGd+lGX+w==
+RjlHunEZKP0T7ne662LsTqsq5P4L6Ap+opMZnluIsotarS3OPHmNlEHRol16I3CH
 mrQsLarKLn8dtC61mpQwxA==
 f0IIhtVP0tY9EtcS5qy2rk+0HfgbM42i32kQDgX44Iay2eWiR3A3rg==
 f0IIhtVP0tbpAUXaWJzMP0mKQQuQ8uypkXS2vYCMEIY=
@@ -1629,6 +1631,7 @@ GqgQYD9jhd9GsAqNnhnTUCYCdMy0fzycBiNf+1YVhVY=
 TPzd3BzerlfCVxlH59kChzTSbCqtQEGVkXS2vYCMEIY=
 vGTRMHlT7dV9d0NcKHMd9TgDx8qs11DG
 uml7dAHhhPhNM37bA6HHygFsDcrhWfuKNAbK+74+adtKYBGd+lGX+w==
+QY8HRySr7Iy5CqOxz3xfQcX7M3NIrxfraiEsqO85sLgzwSWeiYa9dQ==
 7hHMOqKQxsvvI7KZPcwmeZ7M7HpG/M39Zd6ek3iMCyaxIP2O2HY0XUpgEZ36UZf7
 7hHMOqKQxsvvI7KZPcwmeWuYgh2L+C3ENFhro0sIwFyxIP2O2HY0XUpgEZ36UZf7
 iFgq+tSfQTMRR9DGg7KxUilV5SNKcpiRAGxaLY4tP2M=
@@ -2496,7 +2499,7 @@ ZspN/3MJNpJZx1DpPOremjp+TuIAHelCaiEsqO85sLgSnOIeWsmaHQ==
 55V35mSjwlj2cOP5apS8VPRhA8SKpu0P9nDj+WqUvFRVbsQwmcaDOg==
 NjzNjq0emHQgxpjuFWIItG9jx6N5wpQIEWtLgLSKG1oN3sJIAtQssOzSwRJA5gyR
 Ea1wKP55wIBBJxgp/V0FUwnnShbg2FDRaiEsqO85sLgSnOIeWsmaHQ==
-Ea1wKP55wIBBJxgp/V0FU297gaKon4FFTc6/D30UodbtnQlJXK6cH2W1DC/mabkHlIVvKeMLJ0I=
+Ea1wKP55wIBBJxgp/V0FU6DW6dHQYMgNGjrxeeuUyTuK+g6d0LtZ41qtLc48eY2UoykPuw5Y1yE=
 Ea1wKP55wICWHeBoZP38uKSYYgTEh/zVaiEsqO85sLgSnOIeWsmaHQ==
 3ILtAGjsNbUKCbcqBRzYaUbfByG6Sttm6DCQ5I5nj7OCEtjaxV2lFK4eWYTrjK6T
 IB1wf95Xp8sgxpjuFWIItG9jx6N5wpQIEWtLgLSKG1oN3sJIAtQssOzSwRJA5gyR
@@ -2543,7 +2546,6 @@ u+9GWDpvSUqtz9d56rUlCsI503QdVi5x
 pRQvSG4swx7zVD2h4Xnk1g==
 am6mi0e3+dmx5mhrEdvgkf9FTLqPUs8T/FRS7OcKkCw=
 FebRcAE/fk8SCUHQ1MyLLGxWr5eq5YxoZ5WjJulMlEE=
-41X1gwjKRwwXjmg6MsH1sw==
 DY+6ucn6TAR3qBA82Nzce0OOPTE6p5v3
 mQ4O3AWciylg+x0Gyby/lLPvFObbr4H8B451+nWReBM=
 kpvrQRk09gB4PQcWdvLH7PCz5+TnGEsBOV2H9bjVtYg=
@@ -2735,7 +2737,7 @@ GalX2/0vwo9uOnW1bzza2qrHk0o9byPJ+CLPmA1ccPY=
 GalX2/0vwo9sFPLTXAGE/6rHk0o9byPJ+CLPmA1ccPY=
 GalX2/0vwo89T0iNr/Nlm6rHk0o9byPJ+CLPmA1ccPY=
 GalX2/0vwo/n5XbWi7jZqbOcQT2OD2AF/A5dhyaRZVhi3+/2fC3N6Q==
-GalX2/0vwo/8AfzlRMsKDarHk0o9byPJEWuex5tQIeJpDpjDkTP7ZAYjX/tWFYVW
+GalX2/0vwo/8AfzlRMsKDarHk0o9byPJEWuex5tQIeJpDpjDkTP7ZHAVGwy9HPD1g6OlF05hia0GI1/7VhWFVg==
 a2uLSW9rkL3JiovBgBMua49k8+1pbbzC1DJL0Z/lW/Ni3+/2fC3N6Q==
 QUV0SLvhn8MUz5rS2cIO6/uJd3DpNPxvB451+nWReBM=
 fAvCqq32iRFPoQXPGPcW6PO3JEuPMZi4A1p8C3jFxs8=
@@ -2795,7 +2797,6 @@ Szylny1Qdtknt9jrntyzWv2wj6PFLTE7HtVCuogTSCQ=
 7ddpONXhUU44r2XHT1h+EtCCOj3EdQDzZr388ZVzhrxgQzinC9H3vwFsDcrhWfuKh/UqQ9KfOqtKYBGd+lGX+w==
 7ddpONXhUU7BF1wFgXRfytMKqWf6sSQ+DMAfuYJorwSv1S9QGLoyL1qtLc48eY2UoykPuw5Y1yE=
 7ddpONXhUU7BF1wFgXRfytMKqWf6sSQ+gZVzPql2LOGK+g6d0LtZ41qtLc48eY2UoykPuw5Y1yE=
-7ddpONXhUU5s3AGUI6Ug28PZO4GQHK2ATc6/D30UodbtnQlJXK6cH2W1DC/mabkHlIVvKeMLJ0I=
 qJ7cJsG6c/pq0Dl6YtH6bveaDsku/xJJORIlBfs4mLH9n1UW9E7fjXZxll+rG9XW
 qJ7cJsG6c/oLq5HPlw5bfj+3uaK0iz9swC30arIp5iti3+/2fC3N6Q==
 qJ7cJsG6c/odPBI4rIFvVCBRqK3ZiJDzwC30arIp5iti3+/2fC3N6Q==
@@ -2843,7 +2844,6 @@ kmzMoPyp7CCHdWnUtHeRVA==
 obAq2Bngawb4kC/8bj+03TgDx8qs11DG
 c2nhc0EQGOvOGusLuQWkxw==
 s8qsgMb4stA8Ycq7rVC17sgwbO+5tzBXtVS5dZ9BXyE=
-Zh/FB6c5Xm8qqFf1kGpzN8RM58B9KL9J+CLPmA1ccPY=
 rmxr1ubN35M7iNWAuDeeYm/m2yvtUWCRselO3ocz+bYC7U8mFxV2SXZxll+rG9XW
 rmxr1ubN35PDe7j1GWWabq5sa9bmzd+T3AxjFmvhwpI=
 TmdrJ+Pzm7ENmUZ9VlmQr89jiTnzF7ksB451+nWReBM=
@@ -2862,7 +2862,7 @@ KBselXcWfIBX/QfsZiKIzg==
 faTyt4eJKJJkAAsZ14pt/o2WG921W9LEOxgqIHpj3G0=
 zh+yxNdjBUdQBAbMQVNFDFdpciLROtC5n777VwNyqoE=
 ptlalxjKqk41Xk8fp0jcVYGTx2c1ExnYtVS5dZ9BXyE=
-ptlalxjKqk5QgdPGLTCW/dlJZasWCk30XDYoCuF77rs=
+ptlalxjKqk6+HtUt9TJUNWGP/cEmAB0oY4+qAzC0UbI=
 ptlalxjKqk5NUH/IXgtKAMXWaX4xPIY9tVS5dZ9BXyE=
 ptlalxjKqk6xXWaLRG0elRcbmJXzE09CTal85oaGlrti3+/2fC3N6Q==
 IHPdczs3Cv0OjiFZCMQIH4KBWdL/M3D3
@@ -2890,7 +2890,6 @@ B9tE3Kd1HKN2FVEYjB7Q8zgDx8qs11DG
 HVgT/PXpLc+R06ESwVfRnQ==
 kN0EnnpUXEauMNy/T/q5+UpgEZ36UZf7
 rMdqrVZv7EsrfhEt8nTZ9g==
-EhCx9/kQWHypJdZnlbHOk8qtUJ0mpJv3
 D+tfdLhKUGV1u7w/2lfuJKf/VajdNg2L
 D+tfdLhKUGWxGJy16gqo1qf/VajdNg2L
 WH5Yk+VVQ9S4tr0LQSjdmMqtUJ0mpJv3
@@ -2898,7 +2897,7 @@ ROtHs56FpZupJdZnlbHOk8qtUJ0mpJv3
 4olpCXCqvMQMjYluMc8k48qtUJ0mpJv3
 CsDKBKvWfT5bbRy49IYTt8qtUJ0mpJv3
 yBAlgt+1O12PH9XTov2LFMqtUJ0mpJv3
-OWXgXBuFsmYeCfyilvvtHkpgEZ36UZf7
+dMBKQ3aABJ2FTWp79QZZVMqtUJ0mpJv3
 ERbXbxZvj9zbPmlRtahxul9slLa3kKSRiy48LWiKVlE=
 ERbXbxZvj9wK/j8CZZyQGl9slLa3kKSRiy48LWiKVlE=
 VWEz/9FsuzEOV4V3OQ7U5F9slLa3kKSRiy48LWiKVlE=
@@ -3009,6 +3008,7 @@ x8MaX0B3GFmqtlk8nbR2qJn4SyFflNOmGjFhHUGm/IA=
 6oVo0vCUNv3Bu+cSyH2HAC4WoEf83C4cXDYoCuF77rs=
 OW2PVrqNbgtIkRc7oSI9s0XScPMdSYlCtVS5dZ9BXyE=
 5i4S6xm9ScocTScttLEkfMjPdsjefYU+
+5i4S6xm9ScpjxjNESTRTkgQxDfEL/YzVxwl32gyzwrQ=
 rJXrTUmEFUPn78xBmNscahmRgVNuI2GuYt/v9nwtzek=
 4Wm5lBS7Thv8gJz2P9UQBg==
 6FwhU9m4jqmjLlw6uBV9GLZIOoXt8dTAPLDEeB+9LFJnZ1Nzu4rNnKViuayj36sW
@@ -3270,10 +3270,10 @@ vomimJs1Aibe5wYCz9PrCh0AR02N0qTHryKysOD+KUY=
 +b+6rnoi2dkBQ0h9VhmZSD0mrk6zJM28zVnxxIiOuRT+FtqJrdCkOw==
 0pexNpZpFWDm0K2JjRXkUzNuWWI8ZP1NNh5ihIkuBBJKYBGd+lGX+w==
 +toNUZ4f1KG9JGYzuKLI59n1BKQUj3AWn09jHm9FQhU=
-g0zbV1jZvRHKRJ3IiEO6X7LstxGRiX2nDSpMu2eqnX/e09AdZ5BMWfnKC8TK+XUUqlng+sByJCU=
-g0zbV1jZvRFuLpWa4R/pTkK1awf8ITj2DSpMu2eqnX/e09AdZ5BMWfnKC8TK+XUUqlng+sByJCU=
 g0zbV1jZvRENHGz3kc9A6oNM21dY2b0RHLgX7Lhlduk=
 g0zbV1jZvRGBkDItw8pFSoNM21dY2b0RHp+yc9QUjFs=
+vCS9SFBmTxcsF+dG3U5MNK+OyYuJd1WOlrlUg9+v96R3Zc88T6l0hf03uMLuMSSK
+vCS9SFBmTxedsb1tHLoW6K+OyYuJd1WOlrlUg9+v96R3Zc88T6l0hf03uMLuMSSK
 0+IZW+rlen6qkF+7sPRjIDgDx8qs11DG
 mcUbAzct6ncGu3nnzhB7hdCqQrHAG8I6B451+nWReBM=
 su18MMk2rGrHOj3N5N1iQ+yaj8gg7xtQ0Zi/2VsQQhM=
@@ -3365,6 +3365,7 @@ ApmEtMU6smLNX4W7dyv/XAKZhLTFOrJiHMmb9N6xqeI=
 ApmEtMU6smJ4hVm67r0IlqbJ+Q9zv3x5
 jGLfUEE7my1VxrcyS3cww0pgEZ36UZf7
 tdhjaYqFLpRvpRnhbNnBn9N3c0C21SQw0Zi/2VsQQhM=
+A+tVGkWZYiAGCG6QjKDBHGswxPflqwizuQ0hTNbmMnpi3+/2fC3N6Q==
 Z6FI9NC0FvctIG9JYVnk3w==
 hX4JO4ilY+tPEDK2aByXN0bOhetaraOrX22hixRRRBw=
 gOZLe1O7dFShaC9nU4SYCEbOhetaraOrX22hixRRRBw=
@@ -3496,7 +3497,6 @@ X7f5/6c1hQf8kd36tO7FgtcFxgex5lEzpRG3N3i4WePE/N/uZLD4yA==
 wm6ORELi8z2oxXsnTPJBjrMihk1tLAqJ
 sM1X3RNjByMGtBZOKbd/ZChngpsINtgrkBugv1NZm7as5XdJU/RcI7dI+gjZkw2N29PyhLKx2/M=
 xPhLahM0n3/qQFELmxnh1mquLhZ26bbE/PzdaZzvK2pKYBGd+lGX+w==
-4lFXezpkIl+j6Ve8sY3ZKmPArgiGN+TtvgJU7rpjpfE=
 8bdFZ5unPvepYj5/A+CA92PArgiGN+TtvgJU7rpjpfE=
 P2Wg2UfPUZ1L3sXFrmYMBGPArgiGN+TtvgJU7rpjpfE=
 TaRySKU+9i96WKC1tMJp4mPArgiGN+TtvgJU7rpjpfE=
@@ -3505,7 +3505,7 @@ wWyLX1EHEoc58udD8OiJdK0G8MKTcaR11GWarSrUmUgxApjckYqcxEpgEZ36UZf7
 i0dcHtftlVRZi1jad0SKTq1Inu+nAuxWav3bY6gAyDY=
 4CgPGy6SSwn+zBnaEjEHVORQWMhHBjWpB451+nWReBM=
 V8WmK2BLIYoZp9TFNq5Lc3gQVABcyQZYy4x6AQXguls=
-2dplvxJbc3ij6Ve8sY3ZKlp1/J0SIsNSZbG8KUhskwQ=
+2dplvxJbc3ij6Ve8sY3ZKlp1/J0SIsNSk/NcqOK16kCPFwAHcTU48w==
 HJH2CTxTjyKpYj5/A+CA916zwkV6JkCPI9MUVCsia+g=
 0uUyu0EpSXhL3sXFrmYMBP0YtuuI9KIBw29zoqutRRY=
 Eohqgk6k638nWoz0XxR091so5NQaFgHckG57ceWMY4U=
@@ -3529,6 +3529,7 @@ XsRueZvhAyrwfBDgr/gHmwcxszz/nuIIRnQWRwFW37q6+7a927Mlpw==
 XsRueZvhAypJey7tBOLHsC7xMJd4TR16RnQWRwFW37q6+7a927Mlpw==
 ueWzwnpHs3Ysu9VBkLGKtomNQ8mcKCxKI7yCxnTScjzxMWtT7kk4uA==
 Az2U7M6QU8fOwC3N6OckJzgDx8qs11DG
+sGclmiZTHKquJDbDkUxjoJmM9vpTJNSm/q8HAwDYbMw=
 rxOQlNRkqxQM0VNQkwpPrt/DnmnQA+7SB451+nWReBM=
 MJI1yWv8v5pHhboU5dN6AIP9fJ9Imz4IB451+nWReBM=
 bUAnOK8eAaGWeDdwRTBpSemoofYVr0mL9YQ8RM5gOiY=
@@ -3551,7 +3552,6 @@ qgKo9TnGwm8luM2Oe2mKmFjLajL1b5kzLKfEtSxDdD2vsFqAZYBWaQ==
 qgKo9TnGwm8luM2Oe2mKmJ/JLfUaDh8OLKfEtSxDdD2vsFqAZYBWaQ==
 qgKo9TnGwm/pSgcoVE4Lbab0TFIDFrR5LKfEtSxDdD2vsFqAZYBWaQ==
 qgKo9TnGwm/pSgcoVE4LbXVZsMFBY4gmLKfEtSxDdD2vsFqAZYBWaQ==
-qgKo9TnGwm/pSgcoVE4LbaV9mVRnwCQSLKfEtSxDdD2vsFqAZYBWaQ==
 LQ4RQ5c6TvGHAG+z/AJsu9CqQrHAG8I6B451+nWReBM=
 cc5DUa/vIO20bnYiJzmfSr037Tf7S7C0/2mxBEfNQnM=
 t6w+ISmiDJIvB77laEou908j7PTf9QOxiy48LWiKVlE=

文件差異過大導致無法顯示
+ 371 - 391
nlp/src/main/resources/synonym.dict


文件差異過大導致無法顯示
+ 875 - 380
nlp/src/main/resources/tc.dict


+ 48 - 0
push-web/src/main/java/org/diagbot/push/controller/CacheFileManagerController.java

@@ -0,0 +1,48 @@
+package org.diagbot.push.controller;
+
+import org.diagbot.bigdata.common.ApplicationCacheUtil;
+import org.diagbot.common.push.cache.CacheFileManager;
+import org.diagbot.common.work.ResponseData;
+import org.diagbot.graph.util.CacheUtil;
+import org.diagbot.nlp.util.NlpCache;
+import org.diagbot.pub.api.Response;
+import org.diagbot.pub.web.BaseController;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * Created by louhr on 2019/8/16.
+ */
+@Controller
+@RequestMapping("/cache_file_manager")
+public class CacheFileManagerController extends BaseController {
+
+    @RequestMapping(value = "/create_file")
+    @ResponseBody
+    public Response<ResponseData> create(HttpServletRequest request) throws Exception {
+        Response<ResponseData> response = new Response<ResponseData>();
+        CacheFileManager cacheFileManager = new CacheFileManager();
+        cacheFileManager.createCacheFile();
+        //自然语言处理缓存更新
+        NlpCache.createSegmentCache();
+        NlpCache.createPushCache();
+        NlpCache.createClassifyCache();
+        NlpCache.createChronicCache();
+        NlpCache.createPropertyPairCache();
+        //更新图谱缓存
+        CacheUtil.createDiagSortCache();
+        CacheUtil.createSexAgeCache();
+        CacheUtil.createVitalCache();
+        CacheUtil.createDiagClassifyCache();
+        CacheUtil.createDiagClassifyJiCache();
+        CacheUtil.createDiagDepartCache();
+        //更新大数据缓存
+        ApplicationCacheUtil.createDoc_result_mapping_diag_map();
+        ApplicationCacheUtil.createDoc_result_mapping_filter_map();
+        ApplicationCacheUtil.createKl_result_mapping_standword_map();
+        return response;
+    }
+}

+ 16 - 0
push-web/src/main/java/org/diagbot/push/controller/ParticipleController.java

@@ -1,8 +1,13 @@
 package org.diagbot.push.controller;
 
+import org.diagbot.nlp.participle.ParticipleUtil;
+import org.diagbot.pub.api.Response;
 import org.diagbot.pub.web.BaseController;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.io.IOException;
 
 @Controller
 @RequestMapping("/participle")
@@ -14,4 +19,15 @@ public class ParticipleController extends BaseController {
     public String index() {
         return listView;
     }
+
+    @ResponseBody
+    @RequestMapping("/split_and_highlight")
+    public Response splitAndHighlight(String content) throws IOException {
+        Response response = new Response();
+        long start = System.currentTimeMillis();
+        response.setData(ParticipleUtil.participleAndHighlight(content));
+        long end = System.currentTimeMillis();
+        System.out.println("总耗时:........." + (end - start));
+        return response;
+    }
 }

+ 19 - 0
push-web/src/main/java/org/diagbot/push/controller/RelationController.java

@@ -1,8 +1,14 @@
 package org.diagbot.push.controller;
 
+import org.diagbot.nlp.relation.analyze.StructureAnalyze;
+import org.diagbot.nlp.relation.util.OutputInfo;
+import org.diagbot.pub.api.Response;
 import org.diagbot.pub.web.BaseController;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
 
 /**
  * @ClassName org.diagbot.push.controller.RelationController
@@ -26,4 +32,17 @@ public class RelationController extends BaseController {
     public String list() {
         return "/pages/label/list.html";
     }
+
+    @RequestMapping({"/extraction"})
+    @ResponseBody
+    public Response extraction(String content) throws Exception {
+        Response response = new Response();
+        response.start();
+//        RelationAnalyze relationAnalyze = new RelationAnalyze();
+//        List<OutputInfo> outputInfos = relationAnalyze.analyze(content, FeatureType.parse("1"));
+        StructureAnalyze structureAnalyze = new StructureAnalyze();
+        List<OutputInfo> outputInfos = structureAnalyze.extract(content);
+        response.setData(outputInfos);
+        return response;
+    }
 }

+ 6 - 6
push-web/src/main/resources/static/pages/algorithm/list.html

@@ -396,15 +396,15 @@
             $('#diag_list').html("");
             $('#before_combine_diag_list').html("");
             startDiag('/algorithm/page_neural', '#symptom_list', '1', resourceType, '111', '1');
-            startDiag('/algorithm/page_neural', '#vital_list', '3', resourceType, '131', '3');
-            startDiag('/algorithm/page_neural', '#lis_list', '4', resourceType, '141', '4');
-            startDiag('/algorithm/page_neural', '#pacs_list', '5', resourceType, '151', '5');
+            startDiag('/algorithm/page_neural', '#vital_list', '3,2,7', resourceType, '131', '3');
+            startDiag('/algorithm/page_neural', '#lis_list', '4,2,7', resourceType, '141', '4');
+            startDiag('/algorithm/page_neural', '#pacs_list', '5,2,7', resourceType, '151', '5');
 
         } else {
             startDiag('/algorithm/page_neural', '#symptom_list', '1', resourceType, '11', '1');
-            startDiag('/algorithm/page_neural', '#vital_list', '3', resourceType, '31', '3');
-            startDiag('/algorithm/page_neural', '#lis_list', '4', resourceType, '41', '4');
-            startDiag('/algorithm/page_neural', '#pacs_list', '5', resourceType, '51', '5');
+            startDiag('/algorithm/page_neural', '#vital_list', '3,2,7', resourceType, '31', '3');
+            startDiag('/algorithm/page_neural', '#lis_list', '4,2,7', resourceType, '41', '4');
+            startDiag('/algorithm/page_neural', '#pacs_list', '5,2,7', resourceType, '51', '5');
 
             startDiagMapping('/algorithm/page_neural', '#diag_list', '2', resourceType, '21', '2');
             startDiagMapping('/algorithm/page_neural', '#before_combine_diag_list', '2', resourceType, '21', '6');

+ 2 - 2
push-web/src/main/resources/static/pages/relation/sample.html

@@ -343,7 +343,7 @@
                 function _ajax(url) {
                     $.support.cors = true;
                     $.ajax({
-                        url: nlp_web_url + '/participle/split_and_highlight',
+                        url: push_web_url + '/participle/split_and_highlight',
                         data: $("#participle_form").serialize(),
                         dataType: "json",
                         type: "post",
@@ -353,7 +353,7 @@
                     });
 
                     $.ajax({
-                        url: nlp_web_url + url,
+                        url: push_web_url + url,
                         data: $("#participle_form").serialize(),
                         dataType: "json",
                         type: "post",