From dc091b232efa00a6a7143e7dff04ac9254b4db78 Mon Sep 17 00:00:00 2001 From: Oliver Tonnhofer Date: Wed, 23 Mar 2016 17:05:13 +0100 Subject: [PATCH 001/221] fix surface size when rastering rotated SVG symbols fixes #5264 --- mapcairo.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mapcairo.c b/mapcairo.c index 9da189b878..600530b8bb 100644 --- a/mapcairo.c +++ b/mapcairo.c @@ -174,7 +174,7 @@ static cairoFaceCache* getCairoFontFace(cairoCacheData *cache, FT_Face ftface) { cur->options = cairo_font_options_create(); cairo_font_options_set_hint_style(cur->options,CAIRO_HINT_STYLE_NONE); return cur; -} +} #define msCairoSetSourceColor(cr, c) cairo_set_source_rgba((cr),(c)->red/255.0,(c)->green/255.0,(c)->blue/255.0,(c)->alpha/255.0); @@ -1043,8 +1043,7 @@ int msRenderRasterizedSVGSymbol(imageObj *img, double x, double y, symbolObj *sy height = surface_h = symbol->sizey; } if (style->rotation != 0) { - surface_w = MS_NINT(width * 1.415); - surface_h = MS_NINT(height * 1.415); + surface_w = surface_h = MS_NINT(MS_MAX(height, width) * 1.415); } surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, surface_w, surface_h); From 7295312c97eed750dd776b4bb0a1a5a86cae4d88 Mon Sep 17 00:00:00 2001 From: Emanuele Di Giacomo Date: Fri, 25 Mar 2016 17:55:55 +0100 Subject: [PATCH 002/221] Fix #5265 In PostGIS filter, a MS_TOKEN_COMPARISON_EQ followed by a MS_TOKEN_LITERAL_TIME is ignored, because the operator if set with the MS_TOKEN_LITERAL_TIME. --- mappostgis.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mappostgis.c b/mappostgis.c index 650ade0839..e77304dade 100644 --- a/mappostgis.c +++ b/mappostgis.c @@ -3785,6 +3785,7 @@ int msPostGISLayerTranslateFilter(layerObj *layer, expressionObj *filter, char * default: /* by default accept the general token to string conversion */ + if(node->token == MS_TOKEN_COMPARISON_EQ && node->next != NULL && node->next->token == MS_TOKEN_LITERAL_TIME) break; /* skip, handled with the next token */ if(bindingToken == MS_TOKEN_BINDING_TIME && (node->token == MS_TOKEN_COMPARISON_EQ || node->token == MS_TOKEN_COMPARISON_NE)) break; /* skip, handled elsewhere */ native_string = msStringConcatenate(native_string, msExpressionTokenToString(node->token)); From abd34934c6d97a479977e22695681ffcc9c6b3cd Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Tue, 12 Apr 2016 10:19:56 -0300 Subject: [PATCH 003/221] add encoding property to PHP mapscript source --- mapscript/php/layer.c | 100 +++++++++++++++++++++--------------------- 1 file changed, 51 insertions(+), 49 deletions(-) diff --git a/mapscript/php/layer.c b/mapscript/php/layer.c index 0b4a743258..8567bc8e2b 100644 --- a/mapscript/php/layer.c +++ b/mapscript/php/layer.c @@ -271,32 +271,33 @@ PHP_METHOD(layerObj, __get) php_layer = (php_layer_object *) zend_object_store_get_object(zobj TSRMLS_CC); IF_GET_LONG("numclasses", php_layer->layer->numclasses) - else IF_GET_LONG("index", php_layer->layer->index) - else IF_GET_LONG("status", php_layer->layer->status) - else IF_GET_LONG("debug", php_layer->layer->debug) - else IF_GET_STRING("bandsitem", php_layer->layer->bandsitem) - else IF_GET_STRING("classitem", php_layer->layer->classitem) - else IF_GET_STRING("classgroup", php_layer->layer->classgroup) - else IF_GET_STRING("name", php_layer->layer->name) - else IF_GET_STRING("group", php_layer->layer->group) - else IF_GET_STRING("data", php_layer->layer->data) - else IF_GET_LONG("type", php_layer->layer->type) - else IF_GET_LONG("dump", php_layer->layer->dump) - else IF_GET_DOUBLE("tolerance", php_layer->layer->tolerance) - else IF_GET_LONG("toleranceunits", php_layer->layer->toleranceunits) - else IF_GET_LONG("sizeunits", php_layer->layer->sizeunits) - else IF_GET_DOUBLE("symbolscaledenom", php_layer->layer->symbolscaledenom) - else IF_GET_LONG("maxclasses", php_layer->layer->maxclasses) - else IF_GET_DOUBLE("minscaledenom", php_layer->layer->minscaledenom) - else IF_GET_DOUBLE("maxscaledenom", php_layer->layer->maxscaledenom) - else IF_GET_DOUBLE("labelminscaledenom", php_layer->layer->labelminscaledenom) - else IF_GET_DOUBLE("labelmaxscaledenom", php_layer->layer->labelmaxscaledenom) - else IF_GET_DOUBLE("maxgeowidth", php_layer->layer->maxgeowidth) - else IF_GET_DOUBLE("mingeowidth", php_layer->layer->mingeowidth) - else IF_GET_STRING("mask", php_layer->layer->mask) - else IF_GET_LONG("minfeaturesize", php_layer->layer->minfeaturesize) - else IF_GET_LONG("maxfeatures", php_layer->layer->maxfeatures) - else IF_GET_LONG("startindex", php_layer->layer->startindex) + else IF_GET_STRING("encoding", php_layer->layer->encoding) + else IF_GET_LONG("index", php_layer->layer->index) + else IF_GET_LONG("status", php_layer->layer->status) + else IF_GET_LONG("debug", php_layer->layer->debug) + else IF_GET_STRING("bandsitem", php_layer->layer->bandsitem) + else IF_GET_STRING("classitem", php_layer->layer->classitem) + else IF_GET_STRING("classgroup", php_layer->layer->classgroup) + else IF_GET_STRING("name", php_layer->layer->name) + else IF_GET_STRING("group", php_layer->layer->group) + else IF_GET_STRING("data", php_layer->layer->data) + else IF_GET_LONG("type", php_layer->layer->type) + else IF_GET_LONG("dump", php_layer->layer->dump) + else IF_GET_DOUBLE("tolerance", php_layer->layer->tolerance) + else IF_GET_LONG("toleranceunits", php_layer->layer->toleranceunits) + else IF_GET_LONG("sizeunits", php_layer->layer->sizeunits) + else IF_GET_DOUBLE("symbolscaledenom", php_layer->layer->symbolscaledenom) + else IF_GET_LONG("maxclasses", php_layer->layer->maxclasses) + else IF_GET_DOUBLE("minscaledenom", php_layer->layer->minscaledenom) + else IF_GET_DOUBLE("maxscaledenom", php_layer->layer->maxscaledenom) + else IF_GET_DOUBLE("labelminscaledenom", php_layer->layer->labelminscaledenom) + else IF_GET_DOUBLE("labelmaxscaledenom", php_layer->layer->labelmaxscaledenom) + else IF_GET_DOUBLE("maxgeowidth", php_layer->layer->maxgeowidth) + else IF_GET_DOUBLE("mingeowidth", php_layer->layer->mingeowidth) + else IF_GET_STRING("mask", php_layer->layer->mask) + else IF_GET_LONG("minfeaturesize", php_layer->layer->minfeaturesize) + else IF_GET_LONG("maxfeatures", php_layer->layer->maxfeatures) + else IF_GET_LONG("startindex", php_layer->layer->startindex) else IF_GET_LONG("transform", php_layer->layer->transform) else IF_GET_LONG("labelcache", php_layer->layer->labelcache) else IF_GET_LONG("postlabelcache", php_layer->layer->postlabelcache) @@ -354,29 +355,30 @@ PHP_METHOD(layerObj, __set) msSetLayerOpacity(php_layer->layer,Z_LVAL_P(value)); } else IF_SET_LONG("status", php_layer->layer->status, value) - else IF_SET_LONG("debug", php_layer->layer->debug, value) - else IF_SET_STRING("classitem", php_layer->layer->classitem, value) - else IF_SET_STRING("bandsitem", php_layer->layer->bandsitem, value) - else IF_SET_STRING("classgroup", php_layer->layer->classgroup, value) - else IF_SET_STRING("name", php_layer->layer->name, value) - else IF_SET_STRING("group", php_layer->layer->group, value) - else IF_SET_STRING("data", php_layer->layer->data, value) - else IF_SET_LONG("type", php_layer->layer->type, value) - else IF_SET_LONG("dump", php_layer->layer->dump, value) - else IF_SET_DOUBLE("tolerance", php_layer->layer->tolerance, value) - else IF_SET_LONG("toleranceunits", php_layer->layer->toleranceunits, value) - else IF_SET_LONG("sizeunits", php_layer->layer->sizeunits, value) - else IF_SET_DOUBLE("symbolscaledenom", php_layer->layer->symbolscaledenom, value) - else IF_SET_DOUBLE("minscaledenom", php_layer->layer->minscaledenom, value) - else IF_SET_DOUBLE("maxscaledenom", php_layer->layer->maxscaledenom, value) - else IF_SET_LONG("minfeaturesize", php_layer->layer->minfeaturesize, value) - else IF_SET_DOUBLE("labelminscaledenom", php_layer->layer->labelminscaledenom, value) - else IF_SET_DOUBLE("labelmaxscaledenom", php_layer->layer->labelmaxscaledenom, value) - else IF_SET_DOUBLE("maxgeowidth", php_layer->layer->maxgeowidth, value) - else IF_SET_DOUBLE("mingeowidth", php_layer->layer->mingeowidth, value) - else IF_SET_STRING("mask", php_layer->layer->mask, value) - else IF_SET_LONG("maxfeatures", php_layer->layer->maxfeatures, value) - else IF_SET_LONG("startindex", php_layer->layer->startindex, value) + else IF_SET_STRING("encoding", php_layer->layer->encoding, value) + else IF_SET_LONG("debug", php_layer->layer->debug, value) + else IF_SET_STRING("classitem", php_layer->layer->classitem, value) + else IF_SET_STRING("bandsitem", php_layer->layer->bandsitem, value) + else IF_SET_STRING("classgroup", php_layer->layer->classgroup, value) + else IF_SET_STRING("name", php_layer->layer->name, value) + else IF_SET_STRING("group", php_layer->layer->group, value) + else IF_SET_STRING("data", php_layer->layer->data, value) + else IF_SET_LONG("type", php_layer->layer->type, value) + else IF_SET_LONG("dump", php_layer->layer->dump, value) + else IF_SET_DOUBLE("tolerance", php_layer->layer->tolerance, value) + else IF_SET_LONG("toleranceunits", php_layer->layer->toleranceunits, value) + else IF_SET_LONG("sizeunits", php_layer->layer->sizeunits, value) + else IF_SET_DOUBLE("symbolscaledenom", php_layer->layer->symbolscaledenom, value) + else IF_SET_DOUBLE("minscaledenom", php_layer->layer->minscaledenom, value) + else IF_SET_DOUBLE("maxscaledenom", php_layer->layer->maxscaledenom, value) + else IF_SET_LONG("minfeaturesize", php_layer->layer->minfeaturesize, value) + else IF_SET_DOUBLE("labelminscaledenom", php_layer->layer->labelminscaledenom, value) + else IF_SET_DOUBLE("labelmaxscaledenom", php_layer->layer->labelmaxscaledenom, value) + else IF_SET_DOUBLE("maxgeowidth", php_layer->layer->maxgeowidth, value) + else IF_SET_DOUBLE("mingeowidth", php_layer->layer->mingeowidth, value) + else IF_SET_STRING("mask", php_layer->layer->mask, value) + else IF_SET_LONG("maxfeatures", php_layer->layer->maxfeatures, value) + else IF_SET_LONG("startindex", php_layer->layer->startindex, value) else IF_SET_LONG("transform", php_layer->layer->transform, value) else IF_SET_LONG("labelcache", php_layer->layer->labelcache, value) else IF_SET_LONG("postlabelcache", php_layer->layer->postlabelcache, value) From 105877468590e99401d234e1bbac13d7645b77d0 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 15 Apr 2016 17:10:00 +0200 Subject: [PATCH 004/221] WFS/OWS: fix absence of XML escaping in GetCapabilities response We improperly use xmlNewChild() instead of xmlNewTextChild(). The form expects the value to be already XML-escaped, while the later do the escaping. Fix issue reported on https://lists.osgeo.org/pipermail/mapserver-users/2016-April/078832.html --- maplibxml2.c | 7 +- mapogcsos.c | 2 +- mapowscommon.c | 56 ++- mapwfs11.c | 20 +- mapwfs20.c | 6 +- .../wxs/expected/wfs10_test_xml_escaping.xml | 108 ++++++ .../wxs/expected/wfs11_test_xml_escaping.xml | 148 ++++++++ .../wxs/expected/wfs20_test_xml_escaping.xml | 346 ++++++++++++++++++ .../wxs/expected/wms111_test_xml_escaping.xml | 141 +++++++ .../wxs/expected/wms130_test_xml_escaping.xml | 147 ++++++++ msautotest/wxs/ows_test_xml_escaping.map | 109 ++++++ 11 files changed, 1046 insertions(+), 44 deletions(-) create mode 100644 msautotest/wxs/expected/wfs10_test_xml_escaping.xml create mode 100644 msautotest/wxs/expected/wfs11_test_xml_escaping.xml create mode 100644 msautotest/wxs/expected/wfs20_test_xml_escaping.xml create mode 100644 msautotest/wxs/expected/wms111_test_xml_escaping.xml create mode 100644 msautotest/wxs/expected/wms130_test_xml_escaping.xml create mode 100644 msautotest/wxs/ows_test_xml_escaping.map diff --git a/maplibxml2.c b/maplibxml2.c index 7a0c97ca53..cd3fcfa18a 100644 --- a/maplibxml2.c +++ b/maplibxml2.c @@ -58,7 +58,12 @@ void msLibXml2GenerateList(xmlNodePtr psParent, xmlNsPtr psNs, const char *elnam int i = 0; tokens = msStringSplit(values, delim, &n); for (i=0; imetadata), "S", "observedproperty_name"); if (pszValue) - psNode = xmlNewChild(psCompNode, psNsGml, + psNode = xmlNewTextChild(psCompNode, psNsGml, BAD_CAST "name", BAD_CAST pszValue); /* add components */ diff --git a/mapowscommon.c b/mapowscommon.c index 0c86c87025..24609a4a01 100644 --- a/mapowscommon.c +++ b/mapowscommon.c @@ -83,7 +83,7 @@ xmlNodePtr msOWSCommonServiceIdentification(xmlNsPtr psNsOws, mapObj *map, value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "title", validated_language); - psNode = xmlNewChild(psRootNode, psNsOws, BAD_CAST "Title", BAD_CAST value); + psNode = xmlNewTextChild(psRootNode, psNsOws, BAD_CAST "Title", BAD_CAST value); if (!value) { xmlAddSibling(psNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_title\" missing for ows:Title")); @@ -91,7 +91,7 @@ xmlNodePtr msOWSCommonServiceIdentification(xmlNsPtr psNsOws, mapObj *map, value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "abstract", validated_language); - psNode = xmlNewChild(psRootNode, psNsOws, BAD_CAST "Abstract", BAD_CAST value); + psNode = xmlNewTextChild(psRootNode, psNsOws, BAD_CAST "Abstract", BAD_CAST value); if (!value) { xmlAddSibling(psNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_abstract\" was missing for ows:Abstract")); @@ -100,7 +100,7 @@ xmlNodePtr msOWSCommonServiceIdentification(xmlNsPtr psNsOws, mapObj *map, value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "keywordlist", validated_language); if (value) { - psNode = xmlNewChild(psRootNode, psNsOws, BAD_CAST "Keywords", NULL); + psNode = xmlNewTextChild(psRootNode, psNsOws, BAD_CAST "Keywords", NULL); msLibXml2GenerateList(psNode, psNsOws, "Keyword", value, ','); } @@ -108,7 +108,7 @@ xmlNodePtr msOWSCommonServiceIdentification(xmlNsPtr psNsOws, mapObj *map, xmlAddSibling(psNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_keywordlist\" was missing for ows:KeywordList")); } - psNode = xmlNewChild(psRootNode, psNsOws, BAD_CAST "ServiceType", BAD_CAST servicetype); + psNode = xmlNewTextChild(psRootNode, psNsOws, BAD_CAST "ServiceType", BAD_CAST servicetype); xmlNewProp(psNode, BAD_CAST "codeSpace", BAD_CAST MS_OWSCOMMON_OGC_CODESPACE); @@ -116,7 +116,7 @@ xmlNodePtr msOWSCommonServiceIdentification(xmlNsPtr psNsOws, mapObj *map, value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "fees", validated_language); - psNode = xmlNewChild(psRootNode, psNsOws, BAD_CAST "Fees", BAD_CAST value); + psNode = xmlNewTextChild(psRootNode, psNsOws, BAD_CAST "Fees", BAD_CAST value); if (!value) { xmlAddSibling(psNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_fees\" was missing for ows:Fees")); @@ -124,7 +124,7 @@ xmlNodePtr msOWSCommonServiceIdentification(xmlNsPtr psNsOws, mapObj *map, value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "accessconstraints", validated_language); - psNode = xmlNewChild(psRootNode, psNsOws, BAD_CAST "AccessConstraints", BAD_CAST value); + psNode = xmlNewTextChild(psRootNode, psNsOws, BAD_CAST "AccessConstraints", BAD_CAST value); if (!value) { xmlAddSibling(psNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_accessconstraints\" was missing for ows:AccessConstraints")); @@ -169,13 +169,13 @@ xmlNodePtr msOWSCommonServiceProvider(xmlNsPtr psNsOws, xmlNsPtr psNsXLink, value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "contactorganization", validated_language); - psNode = xmlNewChild(psRootNode, psNsOws, BAD_CAST "ProviderName", BAD_CAST value); + psNode = xmlNewTextChild(psRootNode, psNsOws, BAD_CAST "ProviderName", BAD_CAST value); if (!value) { xmlAddSibling(psNode, xmlNewComment(BAD_CAST "WARNING: Mandatory metadata \"ows_contactorganization\" was missing for ows:ProviderName")); } - psNode = xmlNewChild(psRootNode, psNsOws, BAD_CAST "ProviderSite", NULL); + psNode = xmlNewTextChild(psRootNode, psNsOws, BAD_CAST "ProviderSite", NULL); xmlNewNsProp(psNode, psNsXLink, BAD_CAST "type", BAD_CAST "simple"); @@ -187,11 +187,11 @@ xmlNodePtr msOWSCommonServiceProvider(xmlNsPtr psNsOws, xmlNsPtr psNsXLink, xmlAddSibling(psNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_service_onlineresource\" was missing for ows:ProviderSite/@xlink:href")); } - psNode = xmlNewChild(psRootNode, psNsOws, BAD_CAST "ServiceContact", NULL); + psNode = xmlNewTextChild(psRootNode, psNsOws, BAD_CAST "ServiceContact", NULL); value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "contactperson", validated_language); - psSubNode = xmlNewChild(psNode, psNsOws, BAD_CAST "IndividualName", BAD_CAST value); + psSubNode = xmlNewTextChild(psNode, psNsOws, BAD_CAST "IndividualName", BAD_CAST value); if (!value) { xmlAddSibling(psSubNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_contactperson\" was missing for ows:IndividualName")); @@ -199,19 +199,19 @@ xmlNodePtr msOWSCommonServiceProvider(xmlNsPtr psNsOws, xmlNsPtr psNsXLink, value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "contactposition", validated_language); - psSubNode = xmlNewChild(psNode, psNsOws, BAD_CAST "PositionName", BAD_CAST value); + psSubNode = xmlNewTextChild(psNode, psNsOws, BAD_CAST "PositionName", BAD_CAST value); if (!value) { xmlAddSibling(psSubNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_contactposition\" was missing for ows:PositionName")); } - psSubNode = xmlNewChild(psNode, psNsOws, BAD_CAST "ContactInfo", NULL); + psSubNode = xmlNewTextChild(psNode, psNsOws, BAD_CAST "ContactInfo", NULL); - psSubSubNode = xmlNewChild(psSubNode, psNsOws, BAD_CAST "Phone", NULL); + psSubSubNode = xmlNewTextChild(psSubNode, psNsOws, BAD_CAST "Phone", NULL); value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "contactvoicetelephone", validated_language); - psSubSubSubNode = xmlNewChild(psSubSubNode, psNsOws, BAD_CAST "Voice", BAD_CAST value); + psSubSubSubNode = xmlNewTextChild(psSubSubNode, psNsOws, BAD_CAST "Voice", BAD_CAST value); if (!value) { xmlAddSibling(psSubSubSubNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_contactvoicetelephone\" was missing for ows:Voice")); @@ -219,17 +219,17 @@ xmlNodePtr msOWSCommonServiceProvider(xmlNsPtr psNsOws, xmlNsPtr psNsXLink, value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "contactfacsimiletelephone", validated_language); - psSubSubSubNode = xmlNewChild(psSubSubNode, psNsOws, BAD_CAST "Facsimile", BAD_CAST value); + psSubSubSubNode = xmlNewTextChild(psSubSubNode, psNsOws, BAD_CAST "Facsimile", BAD_CAST value); if (!value) { xmlAddSibling(psSubSubSubNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_contactfacsimiletelephone\" was missing for ows:Facsimile")); } - psSubSubNode = xmlNewChild(psSubNode, psNsOws, BAD_CAST "Address", NULL); + psSubSubNode = xmlNewTextChild(psSubNode, psNsOws, BAD_CAST "Address", NULL); value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "address", validated_language); - psSubSubSubNode = xmlNewChild(psSubSubNode, psNsOws, BAD_CAST "DeliveryPoint", BAD_CAST value); + psSubSubSubNode = xmlNewTextChild(psSubSubNode, psNsOws, BAD_CAST "DeliveryPoint", BAD_CAST value); if (!value) { xmlAddSibling(psSubSubSubNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_address\" was missing for ows:DeliveryPoint")); @@ -237,7 +237,7 @@ xmlNodePtr msOWSCommonServiceProvider(xmlNsPtr psNsOws, xmlNsPtr psNsXLink, value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "city", validated_language); - psSubSubSubNode = xmlNewChild(psSubSubNode, psNsOws, BAD_CAST "City", BAD_CAST value); + psSubSubSubNode = xmlNewTextChild(psSubSubNode, psNsOws, BAD_CAST "City", BAD_CAST value); if (!value) { xmlAddSibling(psSubSubSubNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_city\" was missing for ows:City")); @@ -245,7 +245,7 @@ xmlNodePtr msOWSCommonServiceProvider(xmlNsPtr psNsOws, xmlNsPtr psNsXLink, value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "stateorprovince", validated_language); - psSubSubSubNode = xmlNewChild(psSubSubNode, psNsOws, BAD_CAST "AdministrativeArea", BAD_CAST value); + psSubSubSubNode = xmlNewTextChild(psSubSubNode, psNsOws, BAD_CAST "AdministrativeArea", BAD_CAST value); if (!value) { xmlAddSibling(psSubSubSubNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_stateorprovince\" was missing for ows:AdministrativeArea")); @@ -253,7 +253,7 @@ xmlNodePtr msOWSCommonServiceProvider(xmlNsPtr psNsOws, xmlNsPtr psNsXLink, value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "postcode", validated_language); - psSubSubSubNode = xmlNewChild(psSubSubNode, psNsOws, BAD_CAST "PostalCode", BAD_CAST value); + psSubSubSubNode = xmlNewTextChild(psSubSubNode, psNsOws, BAD_CAST "PostalCode", BAD_CAST value); if (!value) { xmlAddSibling(psSubSubSubNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_postcode\" was missing for ows:PostalCode")); @@ -261,7 +261,7 @@ xmlNodePtr msOWSCommonServiceProvider(xmlNsPtr psNsOws, xmlNsPtr psNsXLink, value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "country", validated_language); - psSubSubSubNode = xmlNewChild(psSubSubNode, psNsOws, BAD_CAST "Country", BAD_CAST value); + psSubSubSubNode = xmlNewTextChild(psSubSubNode, psNsOws, BAD_CAST "Country", BAD_CAST value); if (!value) { xmlAddSibling(psSubSubSubNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_country\" was missing for ows:Country")); @@ -269,13 +269,13 @@ xmlNodePtr msOWSCommonServiceProvider(xmlNsPtr psNsOws, xmlNsPtr psNsXLink, value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "contactelectronicmailaddress", validated_language); - psSubSubSubNode = xmlNewChild(psSubSubNode, psNsOws, BAD_CAST "ElectronicMailAddress", BAD_CAST value); + psSubSubSubNode = xmlNewTextChild(psSubSubNode, psNsOws, BAD_CAST "ElectronicMailAddress", BAD_CAST value); if (!value) { xmlAddSibling(psSubSubSubNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_contactelectronicmailaddress\" was missing for ows:ElectronicMailAddress")); } - psSubSubNode = xmlNewChild(psSubNode, psNsOws, BAD_CAST "OnlineResource", NULL); + psSubSubNode = xmlNewTextChild(psSubNode, psNsOws, BAD_CAST "OnlineResource", NULL); xmlNewNsProp(psSubSubNode, psNsXLink, BAD_CAST "type", BAD_CAST "simple"); @@ -289,7 +289,7 @@ xmlNodePtr msOWSCommonServiceProvider(xmlNsPtr psNsOws, xmlNsPtr psNsXLink, value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "hoursofservice", validated_language); - psSubSubNode = xmlNewChild(psSubNode, psNsOws, BAD_CAST "HoursOfService", BAD_CAST value); + psSubSubNode = xmlNewTextChild(psSubNode, psNsOws, BAD_CAST "HoursOfService", BAD_CAST value); if (!value) { xmlAddSibling(psSubSubNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_hoursofservice\" was missing for ows:HoursOfService")); @@ -297,7 +297,7 @@ xmlNodePtr msOWSCommonServiceProvider(xmlNsPtr psNsOws, xmlNsPtr psNsXLink, value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "contactinstructions", validated_language); - psSubSubNode = xmlNewChild(psSubNode, psNsOws, BAD_CAST "ContactInstructions", BAD_CAST value); + psSubSubNode = xmlNewTextChild(psSubNode, psNsOws, BAD_CAST "ContactInstructions", BAD_CAST value); if (!value) { xmlAddSibling(psSubSubNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_contactinstructions\" was missing for ows:ContactInstructions")); @@ -305,7 +305,7 @@ xmlNodePtr msOWSCommonServiceProvider(xmlNsPtr psNsOws, xmlNsPtr psNsXLink, value = msOWSLookupMetadataWithLanguage(&(map->web.metadata), namespaces, "role", validated_language); - psSubNode = xmlNewChild(psNode, psNsOws, BAD_CAST "Role", BAD_CAST value); + psSubNode = xmlNewTextChild(psNode, psNsOws, BAD_CAST "Role", BAD_CAST value); if (!value) { xmlAddSibling(psSubNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"ows_role\" was missing for ows:Role")); @@ -489,9 +489,7 @@ xmlNodePtr msOWSCommonExceptionReport(xmlNsPtr psNsOws, int ows_version, const c } if (ExceptionText != NULL) { - char* errorMessage = msEncodeHTMLEntities(ExceptionText); - xmlNewChild(psMainNode, NULL, BAD_CAST "ExceptionText", BAD_CAST errorMessage); - msFree(errorMessage); + xmlNewTextChild(psMainNode, NULL, BAD_CAST "ExceptionText", BAD_CAST ExceptionText); } free(xsi_schemaLocation); diff --git a/mapwfs11.c b/mapwfs11.c index 20ab1644ea..16077bb228 100644 --- a/mapwfs11.c +++ b/mapwfs11.c @@ -119,10 +119,10 @@ xmlNodePtr msWFSDumpLayer11(mapObj *map, layerObj *lp, xmlNsPtr psNsOws, valueToFree = (char *) msSmallMalloc(sizeof(char*)*n); snprintf(valueToFree, n, "%s%s%s", (value ? value : ""), (value ? ":" : ""), lp->name); - psNode = xmlNewChild(psRootNode, NULL, BAD_CAST "Name", BAD_CAST valueToFree); + psNode = xmlNewTextChild(psRootNode, NULL, BAD_CAST "Name", BAD_CAST valueToFree); msFree(valueToFree); } else { - psNode = xmlNewChild(psRootNode, NULL, BAD_CAST "Name", BAD_CAST lp->name); + psNode = xmlNewTextChild(psRootNode, NULL, BAD_CAST "Name", BAD_CAST lp->name); } if (lp->name && strlen(lp->name) > 0 && @@ -140,12 +140,12 @@ xmlNodePtr msWFSDumpLayer11(mapObj *map, layerObj *lp, xmlNsPtr psNsOws, if (!value) value =(const char*)lp->name; - psNode = xmlNewChild(psRootNode, NULL, BAD_CAST "Title", BAD_CAST value); + psNode = xmlNewTextChild(psRootNode, NULL, BAD_CAST "Title", BAD_CAST value); value = msOWSLookupMetadataWithLanguage(&(lp->metadata), "FO", "abstract", validate_language); if (value) - psNode = xmlNewChild(psRootNode, NULL, BAD_CAST "Abstract", BAD_CAST value); + psNode = xmlNewTextChild(psRootNode, NULL, BAD_CAST "Abstract", BAD_CAST value); @@ -165,15 +165,15 @@ xmlNodePtr msWFSDumpLayer11(mapObj *map, layerObj *lp, xmlNsPtr psNsOws, tokens = msStringSplit(valueToFree, ' ', &n); if (tokens && n > 0) { if( nWFSVersion == OWS_1_1_0 ) - psNode = xmlNewChild(psRootNode, NULL, BAD_CAST "DefaultSRS", BAD_CAST tokens[0]); + psNode = xmlNewTextChild(psRootNode, NULL, BAD_CAST "DefaultSRS", BAD_CAST tokens[0]); else - psNode = xmlNewChild(psRootNode, NULL, BAD_CAST "DefaultCRS", BAD_CAST tokens[0]); + psNode = xmlNewTextChild(psRootNode, NULL, BAD_CAST "DefaultCRS", BAD_CAST tokens[0]); for (i=1; imetadata), "FO", "metadataurl_format"); diff --git a/mapwfs20.c b/mapwfs20.c index 710d4441de..b4402ec073 100644 --- a/mapwfs20.c +++ b/mapwfs20.c @@ -163,7 +163,7 @@ xmlNodePtr msWFSConstraintDefaultValue(xmlNsPtr psNs, xmlNsPtr psNsOws, const ch xmlNewProp(psRootNode, BAD_CAST "name", BAD_CAST name); xmlNewChild(psRootNode, psNsOws, BAD_CAST "NoValues", NULL ); - xmlNewChild(psRootNode, psNsOws, BAD_CAST "DefaultValue", BAD_CAST value); + xmlNewTextChild(psRootNode, psNsOws, BAD_CAST "DefaultValue", BAD_CAST value); return psRootNode; } @@ -334,9 +334,9 @@ static void msWFSAddInspireDSID(mapObj *map, { xmlNodePtr pSDSI = xmlNewNode(psNsInspireDls, BAD_CAST "SpatialDataSetIdentifier"); xmlAddChild(pDlsExtendedCapabilities, pSDSI); - xmlNewChild(pSDSI, psNsInspireCommon, BAD_CAST "Code", BAD_CAST tokensCode[i]); + xmlNewTextChild(pSDSI, psNsInspireCommon, BAD_CAST "Code", BAD_CAST tokensCode[i]); if( ntokensNS > 0 && tokensNS[i][0] != '\0' ) - xmlNewChild(pSDSI, psNsInspireCommon, BAD_CAST "Namespace", BAD_CAST tokensNS[i]); + xmlNewTextChild(pSDSI, psNsInspireCommon, BAD_CAST "Namespace", BAD_CAST tokensNS[i]); } msFreeCharArray(tokensCode, ntokensCode); if( ntokensNS > 0 ) diff --git a/msautotest/wxs/expected/wfs10_test_xml_escaping.xml b/msautotest/wxs/expected/wfs10_test_xml_escaping.xml new file mode 100644 index 0000000000..85554c0fa7 --- /dev/null +++ b/msautotest/wxs/expected/wfs10_test_xml_escaping.xml @@ -0,0 +1,108 @@ + + + + + MapServer WFS + title & title + abstract&abstract + + keyword&keyword + + http://localhost + fees&fees + accessconstraints&accessconstraints + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + province + title&title + abstract&abstract + EPSG:4326 + + http://path/to/metadata_url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/msautotest/wxs/expected/wfs11_test_xml_escaping.xml b/msautotest/wxs/expected/wfs11_test_xml_escaping.xml new file mode 100644 index 0000000000..5cac9ba558 --- /dev/null +++ b/msautotest/wxs/expected/wfs11_test_xml_escaping.xml @@ -0,0 +1,148 @@ + + + + title & title + abstract&abstract + + keyword&keyword + + OGC WFS + 1.1.0 + fees&fees + accessconstraints&accessconstraints + + + contactorganization&contactorganization + + + contactperson&contactperson + contactposition&contactposition + + + contactvoicetelephone&contactvoicetelephone + contactfacsimiletelephone&contactfacsimiletelephone + + + address&address + city&city + stateorprovince&stateorprovince + postcode&postcode + country&country + contactelectronicmailaddress&contactelectronicmailaddress + + + hoursofservice&_hoursofservice + contactinstructions&contactinstructions + + role&role + + + + + + + + + + + + WFS + + + 1.0.0 + 1.1.0 + + + text/xml + + + + + + + + + + + XMLSCHEMA + text/xml; subtype=gml/2.1.2 + text/xml; subtype=gml/3.1.1 + + + + + + + + + + + results + hits + + + text/xml; subtype=gml/3.1.1 + + + + + + Query + + + province + title&title + abstract&abstract + urn:ogc:def:crs:EPSG::4326 + urn:ogc:def:crs:EPSG::4269 + + text/xml; subtype=gml/3.1.1 + + + -66.724329085098 41.770507630784 + -57.721680231574 48.477313848494 + + http://path/to/metadata_url + + + + + + gml:Point + gml:LineString + gml:Polygon + gml:Envelope + + + + + + + + + + + + + + + + + + + LessThan + GreaterThan + LessThanEqualTo + GreaterThanEqualTo + EqualTo + NotEqualTo + Like + Between + + + + + + + + diff --git a/msautotest/wxs/expected/wfs20_test_xml_escaping.xml b/msautotest/wxs/expected/wfs20_test_xml_escaping.xml new file mode 100644 index 0000000000..b9fb3fc32a --- /dev/null +++ b/msautotest/wxs/expected/wfs20_test_xml_escaping.xml @@ -0,0 +1,346 @@ + + + + title & title + abstract&abstract + + keyword&keyword + + WFS + 2.0.0 + fees&fees + accessconstraints&accessconstraints + + + contactorganization&contactorganization + + + contactperson&contactperson + contactposition&contactposition + + + contactvoicetelephone&contactvoicetelephone + contactfacsimiletelephone&contactfacsimiletelephone + + + address&address + city&city + stateorprovince&stateorprovince + postcode&postcode + country&country + contactelectronicmailaddress&contactelectronicmailaddress + + + hoursofservice&_hoursofservice + contactinstructions&contactinstructions + + role&role + + + + + + + + + + + + + 2.0.0 + 1.1.0 + 1.0.0 + + + + + text/xml + + + + + ServiceIdentification + ServiceProvider + OperationsMetadata + FeatureTypeList + Filter_Capabilities + + + + + + + + + + + + + application/gml+xml; version=3.2 + text/xml; subtype=gml/3.2.1 + text/xml; subtype=gml/3.1.1 + text/xml; subtype=gml/2.1.2 + + + + + + + + + + + + + application/gml+xml; version=3.2 + text/xml; subtype=gml/3.2.1 + text/xml; subtype=gml/3.1.1 + text/xml; subtype=gml/2.1.2 + + + + + + + + + + + + + application/gml+xml; version=3.2 + text/xml; subtype=gml/3.2.1 + text/xml; subtype=gml/3.1.1 + text/xml; subtype=gml/2.1.2 + + + + + + + + + + + + + + + + + + + + + + 2.0.0 + 1.1.0 + 1.0.0 + + + + + TRUE + + + + FALSE + + + + FALSE + + + + TRUE + + + + TRUE + + + + FALSE + + + + FALSE + + + + FALSE + + + + TRUE + + + + FALSE + + + + FALSE + + + + FALSE + + + + FALSE + + + + FALSE + + + + FALSE + + + + wfs:Query + wfs:StoredQuery + + + + + + ms:province + title&title + abstract&abstract + urn:ogc:def:crs:EPSG::4326 + urn:ogc:def:crs:EPSG::4269 + + application/gml+xml; version=3.2 + text/xml; subtype=gml/3.2.1 + text/xml; subtype=gml/3.1.1 + text/xml; subtype=gml/2.1.2 + + + -66.724329085098 41.770507630784 + -57.721680231574 48.477313848494 + + + + + + + + + TRUE + + + + TRUE + + + + FALSE + + + + TRUE + + + + TRUE + + + + TRUE + + + + TRUE + + + + FALSE + + + + TRUE + + + + FALSE + + + + FALSE + + + + FALSE + + + + FALSE + + + + TRUE + + + + FALSE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/msautotest/wxs/expected/wms111_test_xml_escaping.xml b/msautotest/wxs/expected/wms111_test_xml_escaping.xml new file mode 100644 index 0000000000..17f33f4afd --- /dev/null +++ b/msautotest/wxs/expected/wms111_test_xml_escaping.xml @@ -0,0 +1,141 @@ + + + ]> + + + + + OGC:WMS + title & title + abstract&abstract + + keyword&keyword + + + + + contactperson&contactperson + contactorganization&contactorganization + + contactposition&contactposition + + addresstype&addresstype +
address&address
+ city&city + stateorprovince&stateorprovince + postcode&postcode + country&country +
+ contactvoicetelephone&contactvoicetelephone + contactfacsimiletelephone&contactfacsimiletelephone + contactelectronicmailaddress&contactelectronicmailaddress +
+ fees&fees + accessconstraints&accessconstraints +
+ + + + + application/vnd.ogc.wms_xml + + + + + + + + + image/png + image/jpeg + image/png; mode=8bit + application/x-pdf + image/svg+xml + image/tiff + application/vnd.google-earth.kml+xml + application/vnd.google-earth.kmz + + + + + + + + + text/plain + application/vnd.ogc.gml + + + + + + + + + text/xml + + + + + + + + + image/png + image/jpeg + image/png; mode=8bit + + + + + + + + + text/xml + + + + + + + + + + application/vnd.ogc.se_xml + application/vnd.ogc.se_inimage + application/vnd.ogc.se_blank + + + + + XML_ESCAPE_TEST + title & title + abstract&abstract + + keyword&keyword + + EPSG:4326 + EPSG:4269 + + + + province + title&title + abstract&abstract + + + + + +
diff --git a/msautotest/wxs/expected/wms130_test_xml_escaping.xml b/msautotest/wxs/expected/wms130_test_xml_escaping.xml new file mode 100644 index 0000000000..ac0ef89d78 --- /dev/null +++ b/msautotest/wxs/expected/wms130_test_xml_escaping.xml @@ -0,0 +1,147 @@ + + + + + WMS + title & title + abstract&abstract + + keyword&keyword + + + + + contactperson&contactperson + contactorganization&contactorganization + + contactposition&contactposition + + addresstype&addresstype +
address&address
+ city&city + stateorprovince&stateorprovince + postcode&postcode + country&country +
+ contactvoicetelephone&contactvoicetelephone + contactfacsimiletelephone&contactfacsimiletelephone + contactelectronicmailaddress&contactelectronicmailaddress +
+ fees&fees + accessconstraints&accessconstraints + 2048 + 2048 +
+ + + + + text/xml + + + + + + + + + image/png + image/jpeg + image/png; mode=8bit + application/x-pdf + image/svg+xml + image/tiff + application/vnd.google-earth.kml+xml + application/vnd.google-earth.kmz + + + + + + + + + text/plain + application/vnd.ogc.gml + + + + + + + + + text/xml + + + + + + + + + image/png + image/jpeg + image/png; mode=8bit + + + + + + + + + text/xml + + + + + + + + + + XML + INIMAGE + BLANK + + + + XML_ESCAPE_TEST + title & title + abstract&abstract + + keyword&keyword + + EPSG:4326 + EPSG:4269 + + -67.5725 + -58.9275 + 42 + 48.5 + + + + province + title&title + abstract&abstract + + -66.7243 + -57.7217 + 41.7705 + 48.4773 + + + + + +
diff --git a/msautotest/wxs/ows_test_xml_escaping.map b/msautotest/wxs/ows_test_xml_escaping.map new file mode 100644 index 0000000000..3ef8a94d19 --- /dev/null +++ b/msautotest/wxs/ows_test_xml_escaping.map @@ -0,0 +1,109 @@ +# +# Test XML escaping +# +# REQUIRES: INPUT=GDAL OUTPUT=PNG SUPPORTS=WFS SUPPORTS=WMS +# +# Capabilities +# RUN_PARMS: wfs10_test_xml_escaping.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetCapabilities" > [RESULT_DEMIME_DEVERSION] +# RUN_PARMS: wfs11_test_xml_escaping.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetCapabilities" > [RESULT_DEMIME_DEVERSION] +# RUN_PARMS: wfs20_test_xml_escaping.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetCapabilities" > [RESULT_DEMIME_DEVERSION] +# RUN_PARMS: wms111_test_xml_escaping.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities" > [RESULT_DEMIME_DEVERSION] +# RUN_PARMS: wms130_test_xml_escaping.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities" > [RESULT_DEMIME_DEVERSION] + +MAP + +NAME XML_ESCAPE_TEST +STATUS ON +SIZE 400 300 +#EXTENT 2018000 -73300 3410396 647400 +EXTENT -67.5725 42 -58.9275 48.5 +UNITS METERS +IMAGECOLOR 255 255 255 +SHAPEPATH ./data +SYMBOLSET etc/symbols.sym +FONTSET etc/fonts.txt + +# +# Start of web interface definition +# +WEB + + IMAGEPATH "/tmp/ms_tmp/" + IMAGEURL "/ms_tmp/" + + METADATA + "ows_updatesequence" "123" + "ows_title" "title & title" + "ows_onlineresource" "http://localhost/path/to/ows_test_xml_escaping?myparam=something&" + "ows_srs" "EPSG:4326 EPSG:4269" + "ows_abstract" "abstract&abstract" + "ows_keywordlist" "keyword&keyword" + "ows_service_onlineresource" "http://localhost" + "ows_fees" "fees&fees" + "ows_accessconstraints" "accessconstraints&accessconstraints" + "ows_addresstype" "addresstype&addresstype" + "ows_address" "address&address" + "ows_city" "city&city" + "ows_stateorprovince" "stateorprovince&stateorprovince" + "ows_postcode" "postcode&postcode" + "ows_country" "country&country" + "ows_contactelectronicmailaddress" "contactelectronicmailaddress&contactelectronicmailaddress" + "ows_contactvoicetelephone" "contactvoicetelephone&contactvoicetelephone" + "ows_contactfacsimiletelephone" "contactfacsimiletelephone&contactfacsimiletelephone" + "ows_contactperson" "contactperson&contactperson" + "ows_contactorganization" "contactorganization&contactorganization" + "ows_contactposition" "contactposition&contactposition" + "ows_hoursofservice" "hoursofservice&_hoursofservice" + "ows_contactinstructions" "contactinstructions&contactinstructions" + "ows_role" "role&role" + "ows_enable_request" "*" + END +END + +PROJECTION + "init=epsg:4326" +# "init=./data/epsg2:42304" +# "init=epsg:42304" +END + + +# +# Start of layer definitions +# + + + +LAYER + NAME province + DATA province + METADATA + "ows_title" "title&title" + "ows_description" "description&description" + "ows_abstract" "abstract&abstract" + "wfs_featureid" "NAME_E" + "wfs_metadataurl_href" "http://path/to/metadata_url" + "wfs_metadataurl_format" "text/xml" # WFS 1.1 only + "wfs_metadataurl_type" "FGDC" # WFS 1.1 only + "wfs_metadataurl_about" "about&about" # WFS 2.0 only + "gml_include_items" "NAME_E" + "gml_default_items" "" + END + TYPE POINT + STATUS ON + PROJECTION + "init=./data/epsg2:42304" +# "init=epsg:42304" + END + + DUMP TRUE + CLASSITEM "Name_e" + + CLASS + NAME "Province" + COLOR 200 255 0 + OUTLINECOLOR 120 120 120 + END +END # Layer + + +END # Map File From 55558b35cd1cb870cb235da24cf0ef9d9a7e9633 Mon Sep 17 00:00:00 2001 From: aabhayas Date: Wed, 29 Apr 2015 13:08:46 +1000 Subject: [PATCH 005/221] =?UTF-8?q?This=20patch=20is=20to=20fix=20the=20is?= =?UTF-8?q?sue=20"GetCapabilities=20request=20is=20extremely=20slow=20when?= =?UTF-8?q?=20=E2=80=9COWS=5FLAYER=5FGROUP=E2=80=9D=20is=20used"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/mapserver/mapserver/issues/5081. Changed the code to create a unique set of groups and then compare them with layer names to avoid multiple passes through layer names. --- mapwms.c | 48 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/mapwms.c b/mapwms.c index 5063f39454..9fafe3f267 100644 --- a/mapwms.c +++ b/mapwms.c @@ -363,9 +363,15 @@ int msWMSApplyTime(mapObj *map, int version, char *time, char *wms_exception_for */ void msWMSPrepareNestedGroups(mapObj* map, int nVersion, char*** nestedGroups, int* numNestedGroups, int* isUsedInNestedGroup) { - int i, j, k; + int i, k; const char* groups; char* errorMsg; + //Create array to hold unique groups + int maxgroups = 2000; + int maxgroupiter = 1; + char** uniqgroups = malloc(maxgroups * sizeof(char*)); + int uniqgroupcount = 0; + for (i = 0; i < map->numlayers; i++) { nestedGroups[i] = NULL; /* default */ @@ -388,24 +394,42 @@ void msWMSPrepareNestedGroups(mapObj* map, int nVersion, char*** nestedGroups, i } else { /* split into subgroups. Start at address + 1 because the first '/' would cause an extra empty group */ nestedGroups[i] = msStringSplit(groups + 1, '/', &numNestedGroups[i]); - /* */ - for (j = 0; j < map->numlayers; j++) { - if (isUsedInNestedGroup[j]) - continue; - - for (k=0; kname && strcasecmp(GET_LAYER(map, j)->name, nestedGroups[i][k]) == 0 ) { - isUsedInNestedGroup[j] = 1; + /* Iterate through the groups and add them to the unique groups array */ + for (k=0; knumlayers; i++) { + for (k=0; kname ,uniqgroups[k]) == 0 ){ + isUsedInNestedGroup[i] = 1; + break; } - } - } + } } } + /* ** Validate that a given dimension is inside the extents defined */ From cc03ceec064a0b2fb07e1f68f5b189dcdb2d67d3 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Fri, 13 May 2016 23:43:34 +0200 Subject: [PATCH 006/221] Fix Cluster Layers Filter Translation (#5205) --- mapcluster.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/mapcluster.c b/mapcluster.c index 9abb4bd607..1871b899d5 100644 --- a/mapcluster.c +++ b/mapcluster.c @@ -1497,6 +1497,52 @@ int msClusterLayerOpen(layerObj *layer) return MS_SUCCESS; } +int msClusterLayerTranslateFilter(layerObj *layer, expressionObj *filter, char *filteritem) +{ + msClusterLayerInfo* layerinfo = layer->layerinfo; + + if (!layerinfo) { + msSetError(MS_MISCERR, "Layer is not open: %s", "msClusterLayerTranslateFilter()", layer->name); + return MS_FAILURE; + } + + return layerinfo->srcLayer.vtable->LayerTranslateFilter(&layerinfo->srcLayer, filter, filteritem); +} + +int msClusterLayerEscapeSQLParam(layerObj *layer, const char* pszString) +{ + msClusterLayerInfo* layerinfo = layer->layerinfo; + + if (!layerinfo) { + msSetError(MS_MISCERR, "Layer is not open: %s", "msClusterLayerEscapeSQLParam()", layer->name); + return MS_FAILURE; + } + + return layerinfo->srcLayer.vtable->LayerEscapeSQLParam(&layerinfo->srcLayer, pszString); +} + +int msClusterLayerGetAutoProjection(layerObj *layer, projectionObj* projection) +{ + msClusterLayerInfo* layerinfo = layer->layerinfo; + + if (!layerinfo) { + msSetError(MS_MISCERR, "Layer is not open: %s", "msClusterLayerGetAutoProjection()", layer->name); + return MS_FAILURE; + } + + return layerinfo->srcLayer.vtable->LayerGetAutoProjection(&layerinfo->srcLayer, projection); +} + +int msClusterLayerGetPaging(layerObj *layer) +{ + return MS_FALSE; +} + +void msClusterLayerEnablePaging(layerObj *layer, int value) +{ + return; +} + void msClusterLayerCopyVirtualTable(layerVTableObj* vtable) { vtable->LayerInitItemInfo = msClusterLayerInitItemInfo; @@ -1514,6 +1560,14 @@ void msClusterLayerCopyVirtualTable(layerVTableObj* vtable) vtable->LayerGetNumFeatures = msClusterLayerGetNumFeatures; vtable->LayerGetAutoStyle = msClusterLayerGetAutoStyle; + vtable->LayerTranslateFilter = msClusterLayerTranslateFilter; + /* vtable->LayerSupportsCommonFilters, use driver implementation */ + vtable->LayerEscapeSQLParam = msClusterLayerEscapeSQLParam; + /* vtable->LayerEscapePropertyName, use driver implementation */ + + vtable->LayerEnablePaging = msClusterLayerEnablePaging; + vtable->LayerGetPaging = msClusterLayerGetPaging; + vtable->LayerGetAutoProjection = msClusterLayerGetAutoProjection; } #ifdef USE_CLUSTER_PLUGIN @@ -1531,8 +1585,7 @@ PluginInitializeVirtualTable(layerVTableObj* vtable, layerObj *layer) #endif -int -msClusterLayerInitializeVirtualTable(layerObj *layer) +int msClusterLayerInitializeVirtualTable(layerObj *layer) { assert(layer != NULL); assert(layer->vtable != NULL); From 8771b597eaee8f4b74afa5844247ed0bb5b86714 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Sun, 24 Apr 2016 16:16:47 +0200 Subject: [PATCH 007/221] Add UTF8 marshaler to MapScript C# (#5275) (cherry picked from commit 7bc388d2360d07fb8165a637417338a68257279d) --- mapscript/csharp/swig_csharp_extensions.i | 50 +++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/mapscript/csharp/swig_csharp_extensions.i b/mapscript/csharp/swig_csharp_extensions.i index 07b8b8dbc1..75f439917d 100644 --- a/mapscript/csharp/swig_csharp_extensions.i +++ b/mapscript/csharp/swig_csharp_extensions.i @@ -33,8 +33,58 @@ %pragma(csharp) imclasscode=%{ static $imclassname() { } + + public class UTF8Marshaler : ICustomMarshaler { + static UTF8Marshaler static_instance; + + public IntPtr MarshalManagedToNative(object managedObj) { + if (managedObj == null) + return IntPtr.Zero; + if (!(managedObj is string)) + throw new MarshalDirectiveException( + "UTF8Marshaler must be used on a string."); + + // not null terminated + byte[] strbuf = System.Text.Encoding.UTF8.GetBytes((string)managedObj); + IntPtr buffer = Marshal.AllocHGlobal(strbuf.Length + 1); + Marshal.Copy(strbuf, 0, buffer, strbuf.Length); + + // write the terminating null + Marshal.WriteByte(buffer, strbuf.Length, 0); + return buffer; + } + + public object MarshalNativeToManaged(IntPtr pNativeData) { + int len = Marshal.PtrToStringAnsi(pNativeData).Length; + byte[] utf8data = new byte[len]; + Marshal.Copy(pNativeData, utf8data, 0, len); + return System.Text.Encoding.UTF8.GetString(utf8data); + } + + public void CleanUpNativeData(IntPtr pNativeData) { + Marshal.FreeHGlobal(pNativeData); + } + + public void CleanUpManagedData(object managedObj) { + } + + public int GetNativeDataSize() { + return -1; + } + + public static ICustomMarshaler GetInstance(string cookie) { + if (static_instance == null) { + return static_instance = new UTF8Marshaler(); + } + return static_instance; + } + } %} +%typemap(imtype, inattributes="[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(UTF8Marshaler))]", + outattributes="[return: MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(UTF8Marshaler))]") + char *, char *&, char[ANY], char[] "string" + %typemap(csout, excode=SWIGEXCODE) SWIGTYPE { /* %typemap(csout, excode=SWIGEXCODE) SWIGTYPE */ $&csclassname ret = new $&csclassname($imcall, true, null);$excode From 5870da474f9d834e734e7a4fe2e49ba89d5165ab Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Thu, 19 May 2016 17:17:50 +0200 Subject: [PATCH 008/221] Fix crash in drawQuery for layers with labelitem (#5281) --- mapdraw.c | 4 ++-- maplabel.c | 7 +++++-- mapserver.h | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/mapdraw.c b/mapdraw.c index 696db350cb..d054f87258 100644 --- a/mapdraw.c +++ b/mapdraw.c @@ -1568,7 +1568,7 @@ int pointLayerDrawShape(mapObj *map, imageObj *image, layerObj *layer, shapeObj } if(MS_DRAW_LABELS(drawmode)) { if (layer->labelcache) { - if (msAddLabelGroup(map, image, layer->index, c, shape, point, -1) != MS_SUCCESS) return (MS_FAILURE); + if (msAddLabelGroup(map, image, layer, c, shape, point, -1) != MS_SUCCESS) return (MS_FAILURE); } else { for (l = 0; l < layer->class[c]->numlabels; l++) if(msGetLabelStatus(map,layer,shape,layer->class[c]->labels[l]) == MS_ON) { @@ -1765,7 +1765,7 @@ int polygonLayerDrawShape(mapObj *map, imageObj *image, layerObj *layer, for (i = 0; i < layer->class[c]->numlabels; i++) if (layer->class[c]->labels[i]->angle != 0) layer->class[c]->labels[i]->angle -= map->gt.rotation_angle; /* TODO: is this correct ??? */ if (layer->labelcache) { - if (msAddLabelGroup(map, image, layer->index, c, anno_shape, &annopnt, + if (msAddLabelGroup(map, image, layer, c, anno_shape, &annopnt, MS_MIN(shape->bounds.maxx - shape->bounds.minx, shape->bounds.maxy - shape->bounds.miny)) != MS_SUCCESS) { return MS_FAILURE; } diff --git a/maplabel.c b/maplabel.c index 87989b7f34..750afe2ee4 100644 --- a/maplabel.c +++ b/maplabel.c @@ -273,7 +273,7 @@ void msPopulateTextSymbolForLabelAndString(textSymbolObj *ts, labelObj *l, char ts->rotation = l->angle * MS_DEG_TO_RAD; } -int msAddLabelGroup(mapObj *map, imageObj *image, int layerindex, int classindex, shapeObj *shape, pointObj *point, double featuresize) +int msAddLabelGroup(mapObj *map, imageObj *image, layerObj* layer, int classindex, shapeObj *shape, pointObj *point, double featuresize) { int l,s, priority; labelCacheSlotObj *cacheslot; @@ -283,8 +283,11 @@ int msAddLabelGroup(mapObj *map, imageObj *image, int layerindex, int classindex classObj *classPtr=NULL; int numtextsymbols = 0; textSymbolObj **textsymbols, *ts; + int layerindex = layer->index; - layerPtr = (GET_LAYER(map, layerindex)); /* set up a few pointers for clarity */ + // We cannot use GET_LAYER here because in drawQuery the drawing may happen + // on a temp layer only. + layerPtr = layer; classPtr = GET_LAYER(map, layerindex)->class[classindex]; if(classPtr->numlabels == 0) return MS_SUCCESS; /* not an error just nothing to do */ diff --git a/mapserver.h b/mapserver.h index 0526c00d20..cf3cd219fa 100644 --- a/mapserver.h +++ b/mapserver.h @@ -2308,7 +2308,7 @@ void msPopulateTextSymbolForLabelAndString(textSymbolObj *ts, labelObj *l, char MS_DLL_EXPORT int WARN_UNUSED msGetStringSize(mapObj *map, labelObj *label, int size, char *string, rectObj *r); MS_DLL_EXPORT int WARN_UNUSED msAddLabel(mapObj *map, imageObj *image, labelObj *label, int layerindex, int classindex, shapeObj *shape, pointObj *point, double featuresize, textSymbolObj *ts); - MS_DLL_EXPORT int WARN_UNUSED msAddLabelGroup(mapObj *map, imageObj *image, int layerindex, int classindex, shapeObj *shape, pointObj *point, double featuresize); + MS_DLL_EXPORT int WARN_UNUSED msAddLabelGroup(mapObj *map, imageObj *image, layerObj *layer, int classindex, shapeObj *shape, pointObj *point, double featuresize); MS_DLL_EXPORT void insertRenderedLabelMember(mapObj *map, labelCacheMemberObj *cachePtr); MS_DLL_EXPORT int msTestLabelCacheCollisions(mapObj *map, labelCacheMemberObj *cachePtr, label_bounds *lb, int current_priority, int current_label); MS_DLL_EXPORT int msTestLabelCacheLeaderCollision(mapObj *map, pointObj *lp1, pointObj *lp2); From f60648efd4f01df5a0bc7218f37e34df4a0f8633 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Thu, 19 May 2016 22:24:47 +0200 Subject: [PATCH 009/221] Fix layer compositer issues (#5283) --- mapdraw.c | 1 + mapfile.c | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) diff --git a/mapdraw.c b/mapdraw.c index d054f87258..789297e6e6 100644 --- a/mapdraw.c +++ b/mapdraw.c @@ -771,6 +771,7 @@ int msDrawLayer(mapObj *map, layerObj *layer, imageObj *image) "msDrawLayer()"); return (MS_FAILURE); } + image_draw->map = map; renderer->startLayer(image_draw,map,layer); } } diff --git a/mapfile.c b/mapfile.c index 244c0d60a6..df47b65ee6 100644 --- a/mapfile.c +++ b/mapfile.c @@ -4695,6 +4695,110 @@ int msUpdateLayerFromString(layerObj *layer, char *string, int url_string) return MS_SUCCESS; } +static void writeCompositingFilter(FILE *stream, int indent, CompositingFilter *filter) { + if(filter) { + writeString(stream, indent, "COMPFILTER", "", filter->filter); + } +} + +static void writeLayerCompositer(FILE *stream, int indent, LayerCompositer *compositor) { + indent++; + while(compositor) { + writeBlockBegin(stream, indent, "COMPOSITE"); + writeCompositingFilter(stream, indent, compositor->filter); + if(compositor->comp_op != MS_COMPOP_SRC_OVER) { + switch(compositor->comp_op) { + case MS_COMPOP_CLEAR: + writeString(stream, indent, "COMPOP", NULL, "clear"); + break; + case MS_COMPOP_COLOR_BURN: + writeString(stream, indent, "COMPOP", NULL, "color-burn"); + break; + case MS_COMPOP_COLOR_DODGE: + writeString(stream, indent, "COMPOP", NULL, "color-dodge"); + break; + case MS_COMPOP_CONTRAST: + writeString(stream, indent, "COMPOP", NULL, "contrast"); + break; + case MS_COMPOP_DARKEN: + writeString(stream, indent, "COMPOP", NULL, "darken"); + break; + case MS_COMPOP_DIFFERENCE: + writeString(stream, indent, "COMPOP", NULL, "difference"); + break; + case MS_COMPOP_DST: + writeString(stream, indent, "COMPOP", NULL, "dst"); + break; + case MS_COMPOP_DST_ATOP: + writeString(stream, indent, "COMPOP", NULL, "dst-atop"); + break; + case MS_COMPOP_DST_IN: + writeString(stream, indent, "COMPOP", NULL, "dst-in"); + break; + case MS_COMPOP_DST_OUT: + writeString(stream, indent, "COMPOP", NULL, "dst-out"); + break; + case MS_COMPOP_DST_OVER: + writeString(stream, indent, "COMPOP", NULL, "dst-over"); + break; + case MS_COMPOP_EXCLUSION: + writeString(stream, indent, "COMPOP", NULL, "exclusion"); + break; + case MS_COMPOP_HARD_LIGHT: + writeString(stream, indent, "COMPOP", NULL, "hard-light"); + break; + case MS_COMPOP_INVERT: + writeString(stream, indent, "COMPOP", NULL, "invert"); + break; + case MS_COMPOP_INVERT_RGB: + writeString(stream, indent, "COMPOP", NULL, "invert-rgb"); + break; + case MS_COMPOP_LIGHTEN: + writeString(stream, indent, "COMPOP", NULL, "lighten"); + break; + case MS_COMPOP_MINUS: + writeString(stream, indent, "COMPOP", NULL, "minus"); + break; + case MS_COMPOP_MULTIPLY: + writeString(stream, indent, "COMPOP", NULL, "multiply"); + break; + case MS_COMPOP_OVERLAY: + writeString(stream, indent, "COMPOP", NULL, "overlay"); + break; + case MS_COMPOP_PLUS: + writeString(stream, indent, "COMPOP", NULL, "plus"); + break; + case MS_COMPOP_SCREEN: + writeString(stream, indent, "COMPOP", NULL, "screen"); + break; + case MS_COMPOP_SOFT_LIGHT: + writeString(stream, indent, "COMPOP", NULL, "soft-light"); + break; + case MS_COMPOP_SRC: + writeString(stream, indent, "COMPOP", NULL, "src"); + break; + case MS_COMPOP_SRC_ATOP: + writeString(stream, indent, "COMPOP", NULL, "src-atop"); + break; + case MS_COMPOP_SRC_IN: + writeString(stream, indent, "COMPOP", NULL, "src-in"); + break; + case MS_COMPOP_SRC_OUT: + writeString(stream, indent, "COMPOP", NULL, "src-out"); + break; + case MS_COMPOP_SRC_OVER: + writeString(stream, indent, "COMPOP", NULL, "src-over"); + break; + case MS_COMPOP_XOR: + writeString(stream, indent, "COMPOP", NULL, "xor"); + break; + } + } + writeNumber(stream,indent,"OPACITY",100,compositor->opacity); + writeBlockEnd(stream,indent,"COMPOSITE"); + compositor = compositor->next; + } +} static void writeLayer(FILE *stream, int indent, layerObj *layer) { int i; @@ -4710,6 +4814,7 @@ static void writeLayer(FILE *stream, int indent, layerObj *layer) writeString(stream, indent, "CLASSGROUP", NULL, layer->classgroup); writeString(stream, indent, "CLASSITEM", NULL, layer->classitem); writeCluster(stream, indent, &(layer->cluster)); + writeLayerCompositer(stream, indent, layer->compositer); writeString(stream, indent, "CONNECTION", NULL, layer->connection); writeKeyword(stream, indent, "CONNECTIONTYPE", layer->connectiontype, 10, MS_OGR, "OGR", MS_POSTGIS, "POSTGIS", MS_WMS, "WMS", MS_ORACLESPATIAL, "ORACLESPATIAL", MS_WFS, "WFS", MS_PLUGIN, "PLUGIN", MS_UNION, "UNION", MS_UVRASTER, "UVRASTER", MS_CONTOUR, "CONTOUR", MS_KERNELDENSITY, "KERNELDENSITY"); writeString(stream, indent, "DATA", NULL, layer->data); From a8d642fded524dc7bc2f620569f2bf9784a2c497 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Fri, 20 May 2016 20:40:16 +0200 Subject: [PATCH 010/221] Add missing implementation to copy composite filter (#5283) --- mapcopy.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mapcopy.c b/mapcopy.c index 30d893dfdf..0d509435fc 100644 --- a/mapcopy.c +++ b/mapcopy.c @@ -925,6 +925,19 @@ int msCopyScaleToken(scaleTokenObj *src, scaleTokenObj *dst) { return MS_SUCCESS; } +int msCopyCompositingFilter(CompositingFilter **pdst, CompositingFilter *src) { + CompositingFilter *dst = NULL; + if(!src) { + *pdst = NULL; + return MS_SUCCESS; + } + if(!dst) { + dst = *pdst = msSmallMalloc(sizeof(CompositingFilter)); + } + dst->filter = msStrdup(src->filter); + return MS_SUCCESS; +} + int msCopyCompositer(LayerCompositer **ldst, LayerCompositer *src) { LayerCompositer *dst = NULL; if(!src) { @@ -942,7 +955,7 @@ int msCopyCompositer(LayerCompositer **ldst, LayerCompositer *src) { dst->comp_op = src->comp_op; dst->opacity = src->opacity; dst->next = NULL; - /* TODO dst->filter */ + msCopyCompositingFilter(&dst->filter, src->filter); src = src->next; } return MS_SUCCESS; From 7e2a8051c83b90064766bb8f580c19daee03101f Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Fri, 20 May 2016 20:41:21 +0200 Subject: [PATCH 011/221] Fix drawQuery issue (#5281) --- maplabel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maplabel.c b/maplabel.c index 750afe2ee4..dffab3ce2a 100644 --- a/maplabel.c +++ b/maplabel.c @@ -288,7 +288,7 @@ int msAddLabelGroup(mapObj *map, imageObj *image, layerObj* layer, int classinde // We cannot use GET_LAYER here because in drawQuery the drawing may happen // on a temp layer only. layerPtr = layer; - classPtr = GET_LAYER(map, layerindex)->class[classindex]; + classPtr = layer->class[classindex]; if(classPtr->numlabels == 0) return MS_SUCCESS; /* not an error just nothing to do */ From 2ccc63abc9ef2954790f23c711ab7c904bc282ac Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Fri, 20 May 2016 22:21:53 +0200 Subject: [PATCH 012/221] Fix queryMap issue when no styles specified just labels (#5281) --- mapdraw.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mapdraw.c b/mapdraw.c index 789297e6e6..784cb4badc 100644 --- a/mapdraw.c +++ b/mapdraw.c @@ -1240,7 +1240,7 @@ int msDrawQueryLayer(mapObj *map, layerObj *layer, imageObj *image) colorbuffer[i] = layer->class[i]->styles[0]->outlinecolor; /* if no color, save the outlinecolor from the BOTTOM style */ layer->class[i]->styles[0]->outlinecolor = map->querymap.color; } - } else { + } else if (layer->class[i]->numstyles > 0) { if(MS_VALID_COLOR(layer->class[i]->styles[layer->class[i]->numstyles-1]->color)) { colorbuffer[i] = layer->class[i]->styles[layer->class[i]->numstyles-1]->color; /* save the color from the TOP style */ layer->class[i]->styles[layer->class[i]->numstyles-1]->color = map->querymap.color; @@ -1248,6 +1248,9 @@ int msDrawQueryLayer(mapObj *map, layerObj *layer, imageObj *image) colorbuffer[i] = layer->class[i]->styles[layer->class[i]->numstyles-1]->outlinecolor; /* if no color, save the outlinecolor from the TOP style */ layer->class[i]->styles[layer->class[i]->numstyles-1]->outlinecolor = map->querymap.color; } + } else if (layer->class[i]->numlabels > 0) { + colorbuffer[i] = layer->class[i]->labels[0]->color; + layer->class[i]->labels[0]->color = map->querymap.color; } mindistancebuffer[i] = -1; /* RFC77 TODO: only using the first label, is that cool? */ @@ -1356,12 +1359,16 @@ int msDrawQueryLayer(mapObj *map, layerObj *layer, imageObj *image) layer->class[i]->styles[0]->color = colorbuffer[i]; else if(MS_VALID_COLOR(layer->class[i]->styles[0]->outlinecolor)) layer->class[i]->styles[0]->outlinecolor = colorbuffer[i]; /* if no color, restore outlinecolor for the BOTTOM style */ - } else { + } else if (layer->class[i]->numstyles > 0) { if(MS_VALID_COLOR(layer->class[i]->styles[layer->class[i]->numstyles-1]->color)) layer->class[i]->styles[layer->class[i]->numstyles-1]->color = colorbuffer[i]; else if(MS_VALID_COLOR(layer->class[i]->styles[layer->class[i]->numstyles-1]->outlinecolor)) layer->class[i]->styles[layer->class[i]->numstyles-1]->outlinecolor = colorbuffer[i]; /* if no color, restore outlinecolor for the TOP style */ } + else if (layer->class[i]->numlabels > 0) { + if(MS_VALID_COLOR(layer->class[i]->labels[0]->color)) + layer->class[i]->labels[0]->color = colorbuffer[i]; + } if(layer->class[i]->numlabels > 0) layer->class[i]->labels[0]->mindistance = mindistancebuffer[i]; /* RFC77 TODO: again, only using the first label, is that cool? */ From f2b03103f8134b1315fcaf83cb13e45c03b5b37c Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Fri, 27 May 2016 14:01:43 +0200 Subject: [PATCH 013/221] Allow to specify empty color in mapscript (#5286) --- mapscript/swiginc/color.i | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapscript/swiginc/color.i b/mapscript/swiginc/color.i index 8b57dba053..2910673dae 100644 --- a/mapscript/swiginc/color.i +++ b/mapscript/swiginc/color.i @@ -42,7 +42,7 @@ /* Check colors */ if (red > 255 || green > 255 || blue > 255 || alpha>255 || - red<0 || green<0 || blue<0 || alpha<0 ) { + red<-1 || green<-1 || blue<-1 || alpha<0 ) { msSetError(MS_MISCERR, "Invalid color", "colorObj()"); return NULL; } From 7121ac7c32642b9c1bf182ef66e2a6324c04ebbe Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Sun, 29 May 2016 16:28:40 +0200 Subject: [PATCH 014/221] Recalculate scale factor in drawLegendIcon from mapscript (#5287) --- mapscript/swiginc/class.i | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mapscript/swiginc/class.i b/mapscript/swiginc/class.i index 425a3cd5a6..8eb0ff7dc2 100644 --- a/mapscript/swiginc/class.i +++ b/mapscript/swiginc/class.i @@ -176,7 +176,14 @@ return (char *) msNextKeyFromHashTable(&(self->metadata), lastkey); } - int drawLegendIcon(mapObj *map, layerObj *layer, int width, int height, imageObj *dstImage, int dstX, int dstY) { + int drawLegendIcon(mapObj *map, layerObj *layer, int width, int height, imageObj *dstImage, int dstX, int dstY) { + if(layer->sizeunits != MS_PIXELS) { + map->cellsize = msAdjustExtent(&(map->extent), map->width, map->height); + layer->scalefactor = (msInchesPerUnit(layer->sizeunits,0)/msInchesPerUnit(map->units,0)) / map->cellsize; + } + else + layer->scalefactor = map->resolution/map->defresolution; + return msDrawLegendIcon(map, layer, self, width, height, dstImage, dstX, dstY, MS_TRUE, NULL); } From 3cf682d17003521213868f1e727d7be7a3263c7e Mon Sep 17 00:00:00 2001 From: Ari Jolma Date: Mon, 18 Apr 2016 11:27:16 +0300 Subject: [PATCH 015/221] OGR: implement expression conversion to Spatialite SQL When serving a Spatialite DB through WFS for example, the WFS filter was only evaluated on MapServer side instead of being evaluated by SQLite + Spatialite functions. --- mapogr.cpp | 1045 ++++++++++++----- msautotest/wxs/data/db.sqlite | Bin 0 -> 141312 bytes .../wxs/expected/wfs_ogr_native_sql_01.xml | 133 +++ .../wxs/expected/wfs_ogr_native_sql_02.xml | 38 + .../wxs/expected/wfs_ogr_native_sql_03.xml | 152 +++ .../wxs/expected/wfs_ogr_native_sql_04.xml | 114 ++ .../wxs/expected/wfs_ogr_native_sql_05.xml | 38 + .../wxs/expected/wfs_ogr_native_sql_06.xml | 38 + .../wxs/expected/wfs_ogr_native_sql_07.xml | 38 + .../wxs/expected/wfs_ogr_native_sql_08.xml | 798 +++++++++++++ .../wxs/expected/wfs_ogr_native_sql_09.xml | 817 +++++++++++++ .../wxs/expected/wfs_ogr_native_sql_10.xml | 266 +++++ .../wxs/expected/wfs_ogr_native_sql_11.xml | 551 +++++++++ .../wxs/expected/wfs_ogr_native_sql_12.xml | 285 +++++ .../wxs/expected/wfs_ogr_native_sql_13.xml | 570 +++++++++ .../wxs/expected/wfs_ogr_native_sql_14.xml | 38 + .../wxs/expected/wfs_ogr_native_sql_15.xml | 190 +++ .../wxs/expected/wfs_ogr_native_sql_16.xml | 57 + .../wxs/expected/wfs_ogr_native_sql_17.xml | 190 +++ .../wxs/expected/wfs_ogr_native_sql_18.xml | 38 + .../wxs/expected/wfs_ogr_native_sql_19.xml | 171 +++ .../wxs/expected/wfs_ogr_native_sql_20.xml | 95 ++ .../wxs/expected/wfs_ogr_native_sql_21.xml | 95 ++ .../wxs/expected/wfs_ogr_native_sql_22.xml | 57 + .../wxs/expected/wfs_ogr_native_sql_23.xml | 57 + .../wxs/expected/wfs_ogr_native_sql_24.xml | 779 ++++++++++++ .../wxs/expected/wfs_ogr_native_sql_25.xml | 16 + .../wxs/expected/wfs_ogr_native_sql_26.xml | 16 + .../wxs/expected/wfs_ogr_native_sql_27.xml | 16 + .../wxs/expected/wfs_ogr_native_sql_28.xml | 57 + .../wxs/expected/wfs_ogr_native_sql_29.xml | 16 + .../wxs/expected/wfs_ogr_native_sql_30.xml | 38 + .../wxs/expected/wfs_ogr_native_sql_31.xml | 304 +++++ .../wxs/expected/wfs_ogr_native_sql_32.xml | 57 + msautotest/wxs/wfs_ogr_native_sql.map | 121 ++ msautotest/wxs/wfs_ogr_no_native_sql.map | 121 ++ 36 files changed, 7123 insertions(+), 289 deletions(-) create mode 100644 msautotest/wxs/data/db.sqlite create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_01.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_02.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_03.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_04.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_05.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_06.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_07.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_08.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_09.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_10.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_11.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_12.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_13.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_14.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_15.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_16.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_17.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_18.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_19.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_20.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_21.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_22.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_23.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_24.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_25.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_26.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_27.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_28.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_29.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_30.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_31.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_32.xml create mode 100644 msautotest/wxs/wfs_ogr_native_sql.map create mode 100644 msautotest/wxs/wfs_ogr_no_native_sql.map diff --git a/mapogr.cpp b/mapogr.cpp index 881250f5f5..ff8f430283 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -46,6 +46,7 @@ #ifdef USE_OGR +// GDAL 1.x API #include "ogr_api.h" typedef struct ms_ogr_file_info_t { @@ -59,7 +60,8 @@ typedef struct ms_ogr_file_info_t { int nTileId; /* applies on the tiles themselves. */ struct ms_ogr_file_info_t *poCurTile; /* exists on tile index, -> tiles */ - rectObj rect; /* set by WhichShapes */ + bool rect_is_defined; + rectObj rect; /* set by TranslateMsExpression (possibly) and WhichShapes */ int last_record_index_read; @@ -1258,6 +1260,7 @@ msOGRFileOpen(layerObj *layer, const char *connection ) psInfo->nTileId = 0; psInfo->poCurTile = NULL; + psInfo->rect_is_defined = false; psInfo->rect.minx = psInfo->rect.maxx = 0; psInfo->rect.miny = psInfo->rect.maxy = 0; psInfo->last_record_index_read = -1; @@ -1348,155 +1351,550 @@ static char *msOGREscapeSQLParam(layerObj *layer, const char *pszString) #ifdef USE_OGR -#if 0 /*left over code from filter translation development */ +// http://www.sqlite.org/lang_expr.html +// http://www.gaia-gis.it/gaia-sins/spatialite-sql-4.3.0.html + +char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node, const char *dialect) { + msOGRFileInfo *info = (msOGRFileInfo *)layer->layerinfo; + tokenListNodeObjPtr n = *node; + if (!n) return NULL; + char *out = NULL; + + switch(n->token) { + case MS_TOKEN_LOGICAL_AND: + out = (char *)msSmallMalloc(10); + sprintf(out, " AND "); + break; + case MS_TOKEN_LOGICAL_OR: + out = (char *)msSmallMalloc(10); + sprintf(out, " OR "); + break; + case MS_TOKEN_LOGICAL_NOT: + out = (char *)msSmallMalloc(10); + sprintf(out, " NOT "); + break; + case MS_TOKEN_LITERAL_NUMBER: + out = (char *)msSmallMalloc(80); + snprintf(out, 80, "%lf", n->tokenval.dblval); + break; + case MS_TOKEN_LITERAL_STRING: { + char *stresc = msOGREscapeSQLParam(layer, n->tokenval.strval); + out = (char *)msSmallMalloc(strlen(stresc)+3); + snprintf(out, 80, "'%s'", stresc); + msFree(stresc); + break; + } + case MS_TOKEN_LITERAL_TIME: + // seems to require METADATA gml_types => auto + out = (char *)msSmallMalloc(80); + if (n->tokenval.tmval.tm_zone) + snprintf(out, 80, "'%d-%02d-%02dT%02d:%02d:%02d%s'", + n->tokenval.tmval.tm_year+1900, n->tokenval.tmval.tm_mon+1, n->tokenval.tmval.tm_mday, + n->tokenval.tmval.tm_hour, n->tokenval.tmval.tm_min, n->tokenval.tmval.tm_sec, + n->tokenval.tmval.tm_zone); + else + snprintf(out, 80, "'%d-%02d-%02dT%02d:%02d:%02d'", + n->tokenval.tmval.tm_year+1900, n->tokenval.tmval.tm_mon+1, n->tokenval.tmval.tm_mday, + n->tokenval.tmval.tm_hour, n->tokenval.tmval.tm_min, n->tokenval.tmval.tm_sec); + break; + case MS_TOKEN_LITERAL_SHAPE: { + // assumed to be in right srs after FLTGetSpatialComparisonCommonExpression + char *wkt = msShapeToWKT(n->tokenval.shpval); + const char *col = OGR_L_GetGeometryColumn(info->hLayer); // which geom field?? + out = (char *)msSmallMalloc(strlen(wkt)+strlen(col)+35); + sprintf(out, "ST_GeomFromText('%s',ST_SRID(\"%s\"))", wkt, col); + msFree(wkt); + break; + } + case MS_TOKEN_LITERAL_BOOLEAN: + out = (char *)msSmallMalloc(10); + sprintf(out, n->tokenval.dblval == 0 ? "FALSE" : "TRUE"); + break; + case MS_TOKEN_COMPARISON_EQ: + out = (char *)msSmallMalloc(10); + sprintf(out, " = "); + break; + case MS_TOKEN_COMPARISON_NE: + out = (char *)msSmallMalloc(10); + sprintf(out, " != "); + break; + case MS_TOKEN_COMPARISON_GT: + out = (char *)msSmallMalloc(10); + sprintf(out, " > "); + break; + case MS_TOKEN_COMPARISON_LT: + out = (char *)msSmallMalloc(10); + sprintf(out, " < "); + break; + case MS_TOKEN_COMPARISON_LE: + out = (char *)msSmallMalloc(10); + sprintf(out, " <= "); + break; + case MS_TOKEN_COMPARISON_GE: + out = (char *)msSmallMalloc(10); + sprintf(out, " >= "); + break; + case MS_TOKEN_COMPARISON_IEQ: + out = (char *)msSmallMalloc(10); + sprintf(out, " = "); + break; + case MS_TOKEN_COMPARISON_IN: + out = (char *)msSmallMalloc(10); + sprintf(out, " IN "); + break; + // the origin may be mapfile (complex regexes, layer->map.query.filter.string == NULL, regex may have //) or + // OGC Filter (simple patterns only, layer->map.query.filter.string != NULL) + case MS_TOKEN_COMPARISON_RE: + case MS_TOKEN_COMPARISON_IRE: + case MS_TOKEN_COMPARISON_LIKE: { + int case_sensitive = n->token == MS_TOKEN_COMPARISON_RE || n->token == MS_TOKEN_COMPARISON_LIKE; + // in PostgreSQL and OGR: LIKE (case sensitive) and ILIKE (case insensitive) + // in SQLite: LIKE (case insensitive) and GLOB (case sensitive) + const char *op = case_sensitive ? "LIKE" : "ILIKE"; + char wild_any = '%'; + char wild_one = '_'; + + if (strcmp(dialect, "SQLite") == 0) { + if (case_sensitive) { + op = "GLOB"; + wild_any = '*'; + wild_one = '?'; + } else { + op = "LIKE"; + } + } + + n = n->next; + if (n->token != MS_TOKEN_LITERAL_STRING) return NULL; + + char *regex = msStrdup(n->tokenval.strval); + int complex_regex = *n->tokenval.strval == '/'; // could be non-complex but that is soo corner case + + // PostgreqSQL has POSIX regexes, SQLite does not by default, OGR does not + if (complex_regex) { + if (strcmp(dialect, "PostgreSQL") != 0) { + msFree(regex); + return NULL; + } + // remove // + regex++; + regex[strlen(regex) - 1] = '\0'; + if (case_sensitive) + op = "~"; + else + op = "~*"; + } + + char *re = (char *) msSmallMalloc(strlen(regex)+3); + size_t i = 0, j = 0; + re[j++] = '\''; + while (i < strlen(regex)) { + char c = regex[i]; + char c_next = regex[i+1]; + + if (c == '.' && c_next == '*') { + i++; + c = wild_any; + } + else if (c == '.') + c = wild_one; + + if (i == 0 && c == '^') { + i++; + continue; + } + + re[j++] = c; + i++; + + } + re[j++] = '\''; + re[j] = '\0'; + + out = (char *)msSmallMalloc(strlen(n->tokenval.strval)+10); + sprintf(out, " %s %s", op, re); + msFree(re); + msFree(regex); + break; + } + case MS_TOKEN_COMPARISON_INTERSECTS: + out = (char *)msSmallMalloc(15); + sprintf(out, "ST_Intersects"); + break; + case MS_TOKEN_COMPARISON_DISJOINT: + out = (char *)msSmallMalloc(15); + sprintf(out, "ST_Disjoint"); + break; + case MS_TOKEN_COMPARISON_TOUCHES: + out = (char *)msSmallMalloc(15); + sprintf(out, "ST_Touches"); + break; + case MS_TOKEN_COMPARISON_OVERLAPS: + out = (char *)msSmallMalloc(15); + sprintf(out, "ST_Overlaps"); + break; + case MS_TOKEN_COMPARISON_CROSSES: + out = (char *)msSmallMalloc(15); + sprintf(out, "ST_Crosses"); + break; + case MS_TOKEN_COMPARISON_WITHIN: + out = (char *)msSmallMalloc(15); + sprintf(out, "ST_Within"); + break; + case MS_TOKEN_COMPARISON_DWITHIN: + out = (char *)msSmallMalloc(15); + sprintf(out, "ST_Distance"); + break; + case MS_TOKEN_COMPARISON_BEYOND: + out = (char *)msSmallMalloc(15); + sprintf(out, "ST_Distance"); + break; + case MS_TOKEN_COMPARISON_CONTAINS: + out = (char *)msSmallMalloc(15); + sprintf(out, "ST_Contains"); + break; + case MS_TOKEN_COMPARISON_EQUALS: + out = (char *)msSmallMalloc(15); + sprintf(out, "ST_Equals"); + break; + case MS_TOKEN_FUNCTION_LENGTH: + out = (char *)msSmallMalloc(15); + sprintf(out, "ST_Length"); + break; + case MS_TOKEN_FUNCTION_AREA: + out = (char *)msSmallMalloc(15); + sprintf(out, "ST_Area"); + break; + case MS_TOKEN_BINDING_DOUBLE: { + char *stresc = msLayerEscapePropertyName(layer, n->tokenval.bindval.item); + out = (char *)msSmallMalloc(strlen(stresc)+30); + const char *type = "float(16)"; + if (strcmp(dialect, "SQLite") == 0) + type = "REAL"; + else if (strcmp(dialect, "PostgreSQL") == 0) + type = "double precision"; + sprintf(out, "CAST(\"%s\" AS %s)", stresc, type); + msFree(stresc); + break; + } + case MS_TOKEN_BINDING_INTEGER: { + char *stresc = msLayerEscapePropertyName(layer, n->tokenval.bindval.item); + out = (char *)msSmallMalloc(strlen(stresc)+20); + sprintf(out, "CAST(\"%s\" AS integer)", stresc); + msFree(stresc); + break; + } + case MS_TOKEN_BINDING_STRING: { + char *stresc = msLayerEscapePropertyName(layer, n->tokenval.bindval.item); + out = (char *)msSmallMalloc(strlen(stresc)+30); + sprintf(out, "CAST(\"%s\" AS text)", stresc); + msFree(stresc); + break; + } + case MS_TOKEN_BINDING_TIME: { + // won't get here unless col is parsed as time and they are not + char *stresc = msLayerEscapePropertyName(layer, n->tokenval.bindval.item); + out = (char *)msSmallMalloc(strlen(stresc)+20); + sprintf(out, "\"%s\"", stresc); + msFree(stresc); + break; + } + case MS_TOKEN_BINDING_SHAPE: { + const char *col = OGR_L_GetGeometryColumn(info->hLayer); // which geom field?? + out = (char *)msSmallMalloc(strlen(col)+10); + sprintf(out, "\"%s\"", col); + break; + } + + // unhandled below until default + + case MS_TOKEN_FUNCTION_TOSTRING: + case MS_TOKEN_FUNCTION_COMMIFY: + case MS_TOKEN_FUNCTION_ROUND: + case MS_TOKEN_FUNCTION_FROMTEXT: + case MS_TOKEN_FUNCTION_BUFFER: + case MS_TOKEN_FUNCTION_DIFFERENCE: + case MS_TOKEN_FUNCTION_SIMPLIFY: + case MS_TOKEN_FUNCTION_SIMPLIFYPT: + case MS_TOKEN_FUNCTION_GENERALIZE: + case MS_TOKEN_FUNCTION_SMOOTHSIA: + case MS_TOKEN_FUNCTION_JAVASCRIPT: + case MS_TOKEN_FUNCTION_UPPER: + case MS_TOKEN_FUNCTION_LOWER: + case MS_TOKEN_FUNCTION_INITCAP: + case MS_TOKEN_FUNCTION_FIRSTCAP: + case MS_TOKEN_BINDING_MAP_CELLSIZE: + case MS_TOKEN_BINDING_DATA_CELLSIZE: + case MS_PARSE_TYPE_BOOLEAN: + case MS_PARSE_TYPE_STRING: + case MS_PARSE_TYPE_SHAPE: + break; + + default: + if (n->token < 128) { + char c = n->token; + out = (char *)msSmallMalloc(2); + sprintf(out, "%c", c); + } + break; + } + + n = n->next; + *node = n; + return out; +} + +bool msOGRIsComparisonToken(int token) { + return + token == MS_TOKEN_COMPARISON_EQ || + token == MS_TOKEN_COMPARISON_NE || + token == MS_TOKEN_COMPARISON_GT || + token == MS_TOKEN_COMPARISON_LT || + token == MS_TOKEN_COMPARISON_LE || + token == MS_TOKEN_COMPARISON_GE || + token == MS_TOKEN_COMPARISON_IEQ; +} + /********************************************************************** * msOGRTranslateMsExpressionToOGRSQL() * - * Tries to translate a mapserver expression to OGR SQL, and also - * try to extract spatial filter + * Tries to translate a mapserver expression to OGR or driver native SQL **********************************************************************/ -static char* msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, - expressionObj* psFilter, - rectObj* psRect) +static int msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, + expressionObj* psFilter, + char *filteritem) { - char* msSQLExpression = NULL; - rectObj sBBOX; - int sBBOXValid = MS_FALSE; - tokenListNodeObjPtr node = NULL; - char *stresc = NULL; - char *snippet = NULL; - const char* strtmpl = NULL; - int bIsIntersectRectangle = MS_FALSE; - - node = psFilter->tokens; - while (node != NULL) { - - switch(node->token) { - - /* literal tokens */ - - case MS_TOKEN_LITERAL_NUMBER: - snippet = (char *) msSmallMalloc(strlen(strtmpl) + 16); - sprintf(snippet, "%lf", node->tokenval.dblval); - msSQLExpression = msStringConcatenate(msSQLExpression, snippet); - msFree(snippet); - break; - case MS_TOKEN_LITERAL_STRING: - stresc = msOGREscapeSQLParam(layer, node->tokenval.strval); - snippet = (char *) msSmallMalloc(strlen(strtmpl) + strlen(stresc)); - sprintf(snippet, "'%s'", stresc); - msSQLExpression = msStringConcatenate(msSQLExpression, snippet); - msFree(snippet); - msFree(stresc); - break; + char *result = NULL; - case MS_TOKEN_BINDING_DOUBLE: - case MS_TOKEN_BINDING_INTEGER: - case MS_TOKEN_BINDING_STRING: - if(node->token == MS_TOKEN_BINDING_STRING || node->next->token == MS_TOKEN_COMPARISON_RE || node->next->token == MS_TOKEN_COMPARISON_IRE) - strtmpl = "CAST(%s AS CHARACTER)"; /* explicit cast necessary for certain operators */ - else - strtmpl = "%s"; - stresc = msLayerEscapePropertyName(layer, node->tokenval.bindval.item); - snippet = (char *) msSmallMalloc(strlen(strtmpl) + strlen(stresc)); - sprintf(snippet, strtmpl, stresc); - msSQLExpression = msStringConcatenate(msSQLExpression, snippet); - msFree(snippet); - msFree(stresc); - break; + msOGRFileInfo *info = (msOGRFileInfo *)layer->layerinfo; - /* spatial comparison tokens */ - case MS_TOKEN_COMPARISON_INTERSECTS: - { - shapeObj* shape; - if(node->next->token != '(') goto cleanup; - if(node->next->next->token != MS_TOKEN_BINDING_SHAPE) goto cleanup; - if(node->next->next->next->token != ',' ) goto cleanup; - if(node->next->next->next->next->token != MS_TOKEN_LITERAL_SHAPE ) goto cleanup; - if(node->next->next->next->next->next->token != ')' ) goto cleanup; - if(node->next->next->next->next->next->next->token != MS_TOKEN_COMPARISON_EQ ) goto cleanup; - if(node->next->next->next->next->next->next->next->token != MS_TOKEN_LITERAL_BOOLEAN ) goto cleanup; - if(node->next->next->next->next->next->next->next->tokenval.dblval != MS_TRUE) goto cleanup; - - shape = node->next->next->next->next->tokenval.shpval; - memcpy(&sBBOX, &(shape->bounds), sizeof(rectObj)); - sBBOXValid = TRUE; - - if( shape->type == MS_SHAPE_POLYGON && - shape->numlines == 1 && - shape->line[0].numpoints == 5 ) - { - if( shape->line[0].point[0].x == shape->line[0].point[1].x && - shape->line[0].point[0].y == shape->line[0].point[3].y && - shape->line[0].point[2].x == shape->line[0].point[3].x && - shape->line[0].point[1].y == shape->line[0].point[2].y && - shape->line[0].point[0].x == shape->line[0].point[4].x && - shape->line[0].point[0].y == shape->line[0].point[4].y ) - { - bIsIntersectRectangle = MS_TRUE; - } - } + // reasons to not produce native string: not simple layer, or an explicit deny + char *do_this = msLayerGetProcessingKey(layer, "NATIVE_SQL"); // default is YES + if ((info->nLayerIndex == -1) || (do_this && strcmp(do_this, "NO") == 0)) { + return MS_SUCCESS; + } - node = node->next->next->next->next->next->next->next; - if( node && node->next && node->next->token == MS_TOKEN_LOGICAL_AND ) - node = node->next; + // GDAL 1.x API + OGRSFDriverH dr = OGR_DS_GetDriver(info->hDS); + const char *name = OGR_Dr_GetName(dr); + const char *dialect = NULL; + if (strcmp(name, "SQLite") == 0) { + bool have_spatialite = false; + + CPLPushErrorHandler(CPLQuietErrorHandler); + + // test for Spatialite support in driver + const char *test_spatialite = "SELECT spatialite_version()"; + OGRLayerH l = OGR_DS_ExecuteSQL(info->hDS, test_spatialite, NULL, NULL); + if (l) { + OGR_DS_ReleaseResultSet(info->hDS, l); + have_spatialite = true; + } - break; + // test for Spatialite enabled db + if (have_spatialite) { + have_spatialite = false; + const char *test_sql = "select 1 from sqlite_master where name = 'geometry_columns' and sql LIKE '%spatial_index_enabled%'"; + OGRLayerH l = OGR_DS_ExecuteSQL(info->hDS, test_sql, NULL, NULL); + if (l) { + if (OGR_L_GetFeatureCount(l, TRUE) == 1) + have_spatialite = true; + OGR_DS_ReleaseResultSet(info->hDS, l); + } } - case MS_TOKEN_COMPARISON_EQ: - case MS_TOKEN_COMPARISON_NE: - case MS_TOKEN_COMPARISON_GT: - case MS_TOKEN_COMPARISON_GE: - case MS_TOKEN_COMPARISON_LT: - case MS_TOKEN_COMPARISON_LE: - case MS_TOKEN_LOGICAL_AND: - case MS_TOKEN_LOGICAL_NOT: - case MS_TOKEN_LOGICAL_OR: - case '(': - case ')': - if( node->token == MS_TOKEN_LOGICAL_AND && node->next && - node->next->token == MS_TOKEN_COMPARISON_INTERSECTS ) - node = node->next; - else - msSQLExpression = msStringConcatenate(msSQLExpression, msExpressionTokenToString(node->token)); - break; + CPLPopErrorHandler(); - default: - goto cleanup; - break; - } + if (have_spatialite) + dialect = "SQLite"; + else + msDebug("msOGRTranslateMsExpressionToOGRSQL: Native SQL not available, no Spatialite support and/or not a Spatialite enabled db\n"); + } else if (strcmp(name, "PostgreSQL") == 0) { + dialect = "PostgreSQL"; + // todo: PostgreSQL not yet tested - node = node->next; - } - - if( !sBBOXValid || bIsIntersectRectangle ) - { - /* We can translate completely the filter as a OGR expression, */ - /* so no need for msEvalExpression() to do more work */ + } // todo: other dialects, for example OGR SQL - if (layer->debug >= MS_DEBUGLEVEL_VVV) - msDebug("msOGRTranslateMsExpressionToOGRSQL: filter can be evaluated completely on OGR side\n"); + // more reasons to not produce native string: not a recognized driver + if (!dialect) { + return MS_SUCCESS; + } - msFree( layer->filter.native_string ); - layer->filter.native_string = msStrdup(msSQLExpression); - } - - if( sBBOXValid ) - { - psRect->minx = MS_MAX(psRect->minx, sBBOX.minx); - psRect->miny = MS_MAX(psRect->miny, sBBOX.miny); - psRect->maxx = MS_MIN(psRect->maxx, sBBOX.maxx); - psRect->maxy = MS_MAX(psRect->maxy, sBBOX.maxy); - } + char *sql = NULL; + + tokenListNodeObjPtr node = psFilter->tokens; + // node may be NULL if layer->filter.string != NULL and layer->filteritem != NULL + // this is simple filter but string is regex + if (node == NULL && layer->filteritem != NULL && layer->filter.string != NULL) { + sql = msStringConcatenate(sql, "\""); + sql = msStringConcatenate(sql, layer->filteritem); + sql = msStringConcatenate(sql, "\""); + if (strcmp(dialect, "PostgreSQL") == 0) { + sql = msStringConcatenate(sql, " ~ "); + } else { + sql = msStringConcatenate(sql, " LIKE "); + } + sql = msStringConcatenate(sql, "'"); + sql = msStringConcatenate(sql, layer->filter.string); + sql = msStringConcatenate(sql, "'"); + } + // test if there is a "top" level intersects (see FLTValidForBBoxFilter) for a bounding box + if (node != NULL) { + int is_top_level_and = 0; + int has_bounding_box = 0; + tokenListNodeObjPtr bounding_box_node = NULL; + tokenListNodeObjPtr x = psFilter->tokens; + int d = 0; + while (x != NULL) { + if (x->token == '(') d++; + if (x->token == ')') d--; + if (x->token == MS_TOKEN_COMPARISON_INTERSECTS && d == 0) { + has_bounding_box = 1; + bounding_box_node = x; + } + if (d == 1) { + if (x->token == MS_TOKEN_COMPARISON_INTERSECTS) + bounding_box_node = x; + else if (x->token == MS_TOKEN_LOGICAL_AND) + is_top_level_and = 1; + } + if (is_top_level_and && bounding_box_node) + has_bounding_box = 1; + x = x->next; + } + if (has_bounding_box) { + x = bounding_box_node; + x = x->next; // skip fct + x = x->next; // skip ( + x = x->next; // skip field name + x = x->next; // skip , + char *a = msOGRGetToken(layer, &x, dialect); + // skip "ST_GeomFromText(' from a + char *wkt = a+17; + OGRGeometryH hSpatialFilter; + OGRErr e = OGR_G_CreateFromWkt(&wkt, NULL, &hSpatialFilter); + msFree(a); + if (e == OGRERR_NONE) { + OGREnvelope env; + OGR_G_GetEnvelope(hSpatialFilter, &env); + info->rect.minx = env.MinX; + info->rect.miny = env.MinY; + info->rect.maxx = env.MaxX; + info->rect.maxy = env.MaxY; + info->rect_is_defined = true; + OGR_G_DestroyGeometry(hSpatialFilter); + } + } + } + while (node != NULL) { + + if (node->next && node->next->token == MS_TOKEN_COMPARISON_IEQ) { + char *left = msOGRGetToken(layer, &node, dialect); + node = node->next; // skip = + char *right = msOGRGetToken(layer, &node, dialect); + sql = msStringConcatenate(sql, "upper("); + sql = msStringConcatenate(sql, left); + sql = msStringConcatenate(sql, ")"); + sql = msStringConcatenate(sql, "="); + sql = msStringConcatenate(sql, "upper("); + sql = msStringConcatenate(sql, right); + sql = msStringConcatenate(sql, ")"); + int ok = left && right; + msFree(left); + msFree(right); + if (!ok) { + goto fail; + } + continue; + } - return msSQLExpression; + switch(node->token) { + case MS_TOKEN_COMPARISON_INTERSECTS: + case MS_TOKEN_COMPARISON_DISJOINT: + case MS_TOKEN_COMPARISON_TOUCHES: + case MS_TOKEN_COMPARISON_OVERLAPS: + case MS_TOKEN_COMPARISON_CROSSES: + case MS_TOKEN_COMPARISON_DWITHIN: + case MS_TOKEN_COMPARISON_BEYOND: + case MS_TOKEN_COMPARISON_WITHIN: + case MS_TOKEN_COMPARISON_CONTAINS: + case MS_TOKEN_COMPARISON_EQUALS:{ + int token = node->token; + char *fct = msOGRGetToken(layer, &node, dialect); + node = node->next; // skip ( + char *a1 = msOGRGetToken(layer, &node, dialect); + node = node->next; // skip , + char *a2 = msOGRGetToken(layer, &node, dialect); + char *a3 = NULL; + if (token == MS_TOKEN_COMPARISON_DWITHIN || token == MS_TOKEN_COMPARISON_BEYOND) { + node = node->next; // skip , + a3 = msOGRGetToken(layer, &node, dialect); + } + node = node->next; // skip ) + char *eq = msOGRGetToken(layer, &node, dialect); + char *rval = msOGRGetToken(layer, &node, dialect); + if (strcmp(eq, " != ") == 0 || strcmp(rval, "FALSE") == 0) { + sql = msStringConcatenate(sql, "NOT "); + } + // FIXME: case rval is more complex + sql = msStringConcatenate(sql, fct); + sql = msStringConcatenate(sql, "("); + sql = msStringConcatenate(sql, a1); + sql = msStringConcatenate(sql, ","); + sql = msStringConcatenate(sql, a2); + if (token == MS_TOKEN_COMPARISON_DWITHIN || token == MS_TOKEN_COMPARISON_BEYOND) { + sql = msStringConcatenate(sql, ")"); + if (token == MS_TOKEN_COMPARISON_DWITHIN) + sql = msStringConcatenate(sql, "<="); + else + sql = msStringConcatenate(sql, ">"); + sql = msStringConcatenate(sql, a3); + } else { + sql = msStringConcatenate(sql, ")"); + } + int ok = fct && a1 && a2 && eq && rval; + if (token == MS_TOKEN_COMPARISON_DWITHIN) { + ok = ok && a3; + } + msFree(fct); + msFree(a1); + msFree(a2); + if (token == MS_TOKEN_COMPARISON_DWITHIN) { + msFree(a3); + } + msFree(eq); + msFree(rval); + if (!ok) { + goto fail; + } + break; + } + default: { + char *token = msOGRGetToken(layer, &node, dialect); + if (!token) { + goto fail; + } + sql = msStringConcatenate(sql, token); + msFree(token); + } + } + } -cleanup: - msFree(msSQLExpression); - return NULL; + // compose the result, it is parsed in msOGRFileWhichShapes + result = msStringConcatenate(result, "dialect="); + result = msStringConcatenate(result, dialect); + result = msStringConcatenate(result, ";sql="); + result = msStringConcatenate(result, sql); + msFree(sql); + + layer->filter.native_string = result; + return MS_SUCCESS; +fail: + // error producing native string + fprintf(stderr, "Note: Error parsing token list, could produce only: %s\n", sql); + msFree(sql); + return MS_FAILURE; } -#endif //0 /********************************************************************** * msOGRFileWhichShapes() @@ -1508,178 +1906,247 @@ static char* msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, **********************************************************************/ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *psInfo) { - if (psInfo == NULL || psInfo->hLayer == NULL) { - msSetError(MS_MISCERR, "Assertion failed: OGR layer not opened!!!", "msOGRFileWhichShapes()"); - return(MS_FAILURE); - } - - char *pszOGRFilter = NULL; - - /* - ** Build the OGR filter from two potential sources: - ** 1) the NATIVE_FILTER processing option - ** 2) a translated MapServer layer->filter (stored in layer->native_string) - */ - if(msLayerGetProcessingKey(layer, "NATIVE_FILTER") != NULL) { - pszOGRFilter = msStringConcatenate(pszOGRFilter, "("); - pszOGRFilter = msStringConcatenate(pszOGRFilter, msLayerGetProcessingKey(layer, "NATIVE_FILTER")); - pszOGRFilter = msStringConcatenate(pszOGRFilter, ")"); - if(layer->filter.native_string) { - pszOGRFilter = msStringConcatenate(pszOGRFilter, "AND ("); - pszOGRFilter = msStringConcatenate(pszOGRFilter, layer->filter.native_string); - pszOGRFilter = msStringConcatenate(pszOGRFilter, ")"); - } - } else if(layer->filter.native_string) { - pszOGRFilter = msStringConcatenate(pszOGRFilter, "("); - pszOGRFilter = msStringConcatenate(pszOGRFilter, layer->filter.native_string); - pszOGRFilter = msStringConcatenate(pszOGRFilter, ")"); - } - - /* apply sortBy */ - if( layer->sortBy.nProperties > 0 ) { - char* strOrderBy; - char* pszLayerDef = NULL; - - strOrderBy = msLayerBuildSQLOrderBy(layer); - - if( psInfo->nLayerIndex == -1 ) { - pszLayerDef = msStrdup(psInfo->pszLayerDef); - if( strcasestr(psInfo->pszLayerDef, " ORDER BY ") == NULL ) - pszLayerDef = msStringConcatenate(pszLayerDef, " ORDER BY "); - else - pszLayerDef = msStringConcatenate(pszLayerDef, ", "); - } else { - const char* pszGeometryColumn; - int i; - pszLayerDef = msStringConcatenate(pszLayerDef, "SELECT "); - for(i = 0; i < layer->numitems; i++) { - if( i > 0 ) - pszLayerDef = msStringConcatenate(pszLayerDef, ", "); - pszLayerDef = msStringConcatenate(pszLayerDef, "\""); - pszLayerDef = msStringConcatenate(pszLayerDef, layer->items[i]); - pszLayerDef = msStringConcatenate(pszLayerDef, "\""); - } - - pszLayerDef = msStringConcatenate(pszLayerDef, ", "); - pszGeometryColumn = OGR_L_GetGeometryColumn(psInfo->hLayer); - if( pszGeometryColumn != NULL && pszGeometryColumn[0] != '\0' ) { - pszLayerDef = msStringConcatenate(pszLayerDef, "\""); - pszLayerDef = msStringConcatenate(pszLayerDef, pszGeometryColumn); - pszLayerDef = msStringConcatenate(pszLayerDef, "\""); - } else { - /* Add ", *" so that we still have an hope to get the geometry */ - pszLayerDef = msStringConcatenate(pszLayerDef, "*"); - } - pszLayerDef = msStringConcatenate(pszLayerDef, " FROM \""); - pszLayerDef = msStringConcatenate(pszLayerDef, OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); - pszLayerDef = msStringConcatenate(pszLayerDef, "\""); - if( pszOGRFilter != NULL ) { - pszLayerDef = msStringConcatenate(pszLayerDef, " WHERE "); - pszLayerDef = msStringConcatenate(pszLayerDef, pszOGRFilter); - msFree(pszOGRFilter); - pszOGRFilter = NULL; - } - pszLayerDef = msStringConcatenate(pszLayerDef, " ORDER BY "); + // rect is from BBOX parameter in query (In lieu of a FEATUREID or FILTER) or mapfile somehow + if (psInfo == NULL || psInfo->hLayer == NULL) { + msSetError(MS_MISCERR, "Assertion failed: OGR layer not opened!!!", "msOGRFileWhichShapes()"); + return(MS_FAILURE); } - pszLayerDef = msStringConcatenate(pszLayerDef, strOrderBy); - msFree(strOrderBy); - strOrderBy = NULL; - - if( layer->debug ) - msDebug("msOGRFileWhichShapes: SQL = %s.\n", pszLayerDef); + // we'll go strictly two possible ways: + // 1) GetLayer + SetFilter + // 2) ExecuteSQL (psInfo->hLayer is an SQL result OR sortBy was requested OR have native_string + // and start from the second + + if (psInfo->nLayerIndex == -1 || layer->sortBy.nProperties > 0 || layer->filter.native_string) { + + char *select = NULL; + + if( psInfo->nLayerIndex == -1 ) { + select = msStrdup(psInfo->pszLayerDef); + /* If nLayerIndex == -1 then the layer is an SQL result ... free it */ + OGR_DS_ReleaseResultSet( psInfo->hDS, psInfo->hLayer ); + } else { + const char* pszGeometryColumn; + int i; + select = msStringConcatenate(select, "SELECT "); + for(i = 0; i < layer->numitems; i++) { + if( i > 0 ) + select = msStringConcatenate(select, ", "); + select = msStringConcatenate(select, "\""); + select = msStringConcatenate(select, layer->items[i]); + select = msStringConcatenate(select, "\""); + } + + select = msStringConcatenate(select, ", "); + pszGeometryColumn = OGR_L_GetGeometryColumn(psInfo->hLayer); + if( pszGeometryColumn != NULL && pszGeometryColumn[0] != '\0' ) { + select = msStringConcatenate(select, "\""); + select = msStringConcatenate(select, pszGeometryColumn); + select = msStringConcatenate(select, "\""); + } else { + /* Add ", *" so that we still have an hope to get the geometry */ + select = msStringConcatenate(select, "*"); + } + select = msStringConcatenate(select, " FROM \""); + select = msStringConcatenate(select, OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); + select = msStringConcatenate(select, "\""); + } - /* If nLayerIndex == -1 then the layer is an SQL result ... free it */ - if( psInfo->nLayerIndex == -1 ) - OGR_DS_ReleaseResultSet( psInfo->hDS, psInfo->hLayer ); - psInfo->nLayerIndex = -1; - - ACQUIRE_OGR_LOCK; - psInfo->hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszLayerDef, NULL, NULL ); - RELEASE_OGR_LOCK; - if( psInfo->hLayer == NULL ) { - msSetError(MS_OGRERR, "ExecuteSQL(%s) failed.\n%s", "msOGRFileWhichShapes()", pszLayerDef, CPLGetLastErrorMsg()); - msFree(pszLayerDef); - msFree(pszOGRFilter); - return MS_FAILURE; - } - msFree(pszLayerDef); - } /* end sort-by */ + char *filter = NULL; + if (msLayerGetProcessingKey(layer, "NATIVE_FILTER") != NULL) { + filter = msStringConcatenate(filter, "("); + filter = msStringConcatenate(filter, msLayerGetProcessingKey(layer, "NATIVE_FILTER")); + filter = msStringConcatenate(filter, ")"); + } + + // native_string = dialect=*;sql=* + // dialect is SQLite or PostGIS + char *dialect = NULL; + + if (layer->filter.native_string) { + dialect = layer->filter.native_string + 8; + if (strncmp(dialect, "SQLite", 6) == 0 || strncmp(dialect, "PostgreSQL", 10) == 0) { + char *sql = strstr(layer->filter.native_string, ";sql=") + 5; + if (*sql == '\0') sql = NULL; + if (sql) { + if (filter) filter = msStringConcatenate(filter, "AND "); + filter = msStringConcatenate(filter, "("); + filter = msStringConcatenate(filter, sql); + filter = msStringConcatenate(filter, ")"); + } + } + } - /* ------------------------------------------------------------------ - * Set Spatial filter... this may result in no features being returned - * if layer does not overlap current view. - * - * __TODO__ We should return MS_DONE if no shape overlaps the selected - * region and matches the layer's FILTER expression, but there is currently - * no _efficient_ way to do that with OGR. - * ------------------------------------------------------------------ */ - ACQUIRE_OGR_LOCK; + /* ------------------------------------------------------------------ + * Set Spatial filter... this may result in no features being returned + * if layer does not overlap current view. + * + * __TODO__ We should return MS_DONE if no shape overlaps the selected + * region and matches the layer's FILTER expression, but there is currently + * no _efficient_ way to do that with OGR. + * ------------------------------------------------------------------ */ + if (psInfo->rect_is_defined) { + rect.minx = MAX(psInfo->rect.minx, rect.minx); + rect.miny = MAX(psInfo->rect.miny, rect.miny); + rect.maxx = MIN(psInfo->rect.maxx, rect.maxx); + rect.maxy = MIN(psInfo->rect.maxy, rect.maxy); + } + psInfo->rect = rect; + + // use spatial index + if (dialect) { + if (strncmp(dialect, "PostgreSQL", 10) == 0) { + if (filter) filter = msStringConcatenate(filter, " AND"); + const char *col = OGR_L_GetGeometryColumn(psInfo->hLayer); // which geom field?? + filter = msStringConcatenate(filter, " ("); + filter = msStringConcatenate(filter, col); + filter = msStringConcatenate(filter, " && ST_MakeEnvelope("); + char *points = (char *)msSmallMalloc(30*2*5); + snprintf(points, 30*4, "%lf,%lf,%lf,%lf", rect.minx, rect.miny, rect.maxx, rect.maxy); + filter = msStringConcatenate(filter, points); + msFree(points); + filter = msStringConcatenate(filter, "))"); + } else if (strncmp(dialect, "SQLite", 6) == 0) { + if (filter) filter = msStringConcatenate(filter, " AND"); + filter = msStringConcatenate(filter, " "); + filter = msStringConcatenate(filter, psInfo->pszLayerDef); // this is table name since native_string + filter = msStringConcatenate(filter, ".ROWID IN (SELECT ROWID FROM SpatialIndex WHERE f_table_name = '"); + filter = msStringConcatenate(filter, psInfo->pszLayerDef); + filter = msStringConcatenate(filter, "' "); + filter = msStringConcatenate(filter, "AND search_frame = GeomFromText('POLYGON(("); + char *points = (char *)msSmallMalloc(30*2*5); + snprintf(points, 30*2*5, "%lf %lf,%lf %lf,%lf %lf,%lf %lf,%lf %lf", rect.minx, rect.miny, rect.maxx, rect.miny, rect.maxx, rect.maxy, rect.minx, rect.maxy, rect.minx, rect.miny); + filter = msStringConcatenate(filter, points); + msFree(points); + filter = msStringConcatenate(filter, "))'))"); + } + } - if (rect.minx == rect.maxx && rect.miny == rect.maxy) { - OGRGeometryH hSpatialFilterPoint = OGR_G_CreateGeometry( wkbPoint ); + /* get sortBy */ + char *sort = NULL; + if( layer->sortBy.nProperties > 0) { + + char *strOrderBy = msLayerBuildSQLOrderBy(layer); + if (strOrderBy) { + if( psInfo->nLayerIndex == -1 ) { + if( strcasestr(psInfo->pszLayerDef, " ORDER BY ") == NULL ) + sort = msStringConcatenate(sort, " ORDER BY "); + else + sort = msStringConcatenate(sort, ", "); + } else { + sort = msStringConcatenate(sort, " ORDER BY "); + } + sort = msStringConcatenate(sort, strOrderBy); + msFree(strOrderBy); + } + } - OGR_G_SetPoint_2D( hSpatialFilterPoint, 0, rect.minx, rect.miny ); - OGR_L_SetSpatialFilter( psInfo->hLayer, hSpatialFilterPoint ); - OGR_G_DestroyGeometry( hSpatialFilterPoint ); - } else if (rect.minx == rect.maxx || rect.miny == rect.maxy) { - OGRGeometryH hSpatialFilterLine = OGR_G_CreateGeometry( wkbLineString ); + // compose SQL + if (filter) { + select = msStringConcatenate(select, " WHERE "); + select = msStringConcatenate(select, filter); + msFree(filter); + } + if (sort) { + select = msStringConcatenate(select, " "); + select = msStringConcatenate(select, sort); + msFree(sort); + } + + if( layer->debug ) + msDebug("msOGRFileWhichShapes: SQL = %s.\n", select); - OGR_G_AddPoint_2D( hSpatialFilterLine, rect.minx, rect.miny ); - OGR_G_AddPoint_2D( hSpatialFilterLine, rect.maxx, rect.maxy ); - OGR_L_SetSpatialFilter( psInfo->hLayer, hSpatialFilterLine ); - OGR_G_DestroyGeometry( hSpatialFilterLine ); - } else { - OGRGeometryH hSpatialFilterPolygon = OGR_G_CreateGeometry( wkbPolygon ); - OGRGeometryH hRing = OGR_G_CreateGeometry( wkbLinearRing ); + ACQUIRE_OGR_LOCK; + psInfo->hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, select, NULL, NULL ); + psInfo->nLayerIndex = -1; + + if( psInfo->hLayer == NULL ) { + RELEASE_OGR_LOCK; + msSetError(MS_OGRERR, "ExecuteSQL(%s) failed.\n%s", "msOGRFileWhichShapes()", select, CPLGetLastErrorMsg()); + msFree(select); + return MS_FAILURE; + } + msFree(select); - OGR_G_AddPoint_2D( hRing, rect.minx, rect.miny); - OGR_G_AddPoint_2D( hRing, rect.maxx, rect.miny); - OGR_G_AddPoint_2D( hRing, rect.maxx, rect.maxy); - OGR_G_AddPoint_2D( hRing, rect.minx, rect.maxy); - OGR_G_AddPoint_2D( hRing, rect.minx, rect.miny); - OGR_G_AddGeometryDirectly( hSpatialFilterPolygon, hRing ); - OGR_L_SetSpatialFilter( psInfo->hLayer, hSpatialFilterPolygon ); - OGR_G_DestroyGeometry( hSpatialFilterPolygon ); - } + } + else { - psInfo->rect = rect; + // case of 1) GetLayer + SetFilter - if (layer->debug >= MS_DEBUGLEVEL_VVV) - msDebug("msOGRFileWhichShapes: Setting spatial filter to %f %f %f %f\n", rect.minx, rect.miny, rect.maxx, rect.maxy ); + char *pszOGRFilter = NULL; + if (msLayerGetProcessingKey(layer, "NATIVE_FILTER") != NULL) { + pszOGRFilter = msStringConcatenate(pszOGRFilter, "("); + pszOGRFilter = msStringConcatenate(pszOGRFilter, msLayerGetProcessingKey(layer, "NATIVE_FILTER")); + pszOGRFilter = msStringConcatenate(pszOGRFilter, ")"); + } - /* ------------------------------------------------------------------ - * Apply an attribute filter if we have one prefixed with a WHERE - * keyword in the filter string. Otherwise, ensure the attribute - * filter is clear. - * ------------------------------------------------------------------ */ - - if( pszOGRFilter != NULL ) { + ACQUIRE_OGR_LOCK; + + if (rect.minx == rect.maxx && rect.miny == rect.maxy) { + OGRGeometryH hSpatialFilterPoint = OGR_G_CreateGeometry( wkbPoint ); + + OGR_G_SetPoint_2D( hSpatialFilterPoint, 0, rect.minx, rect.miny ); + OGR_L_SetSpatialFilter( psInfo->hLayer, hSpatialFilterPoint ); + OGR_G_DestroyGeometry( hSpatialFilterPoint ); + } else if (rect.minx == rect.maxx || rect.miny == rect.maxy) { + OGRGeometryH hSpatialFilterLine = OGR_G_CreateGeometry( wkbLineString ); + + OGR_G_AddPoint_2D( hSpatialFilterLine, rect.minx, rect.miny ); + OGR_G_AddPoint_2D( hSpatialFilterLine, rect.maxx, rect.maxy ); + OGR_L_SetSpatialFilter( psInfo->hLayer, hSpatialFilterLine ); + OGR_G_DestroyGeometry( hSpatialFilterLine ); + } else { + OGRGeometryH hSpatialFilterPolygon = OGR_G_CreateGeometry( wkbPolygon ); + OGRGeometryH hRing = OGR_G_CreateGeometry( wkbLinearRing ); + + OGR_G_AddPoint_2D( hRing, rect.minx, rect.miny); + OGR_G_AddPoint_2D( hRing, rect.maxx, rect.miny); + OGR_G_AddPoint_2D( hRing, rect.maxx, rect.maxy); + OGR_G_AddPoint_2D( hRing, rect.minx, rect.maxy); + OGR_G_AddPoint_2D( hRing, rect.minx, rect.miny); + OGR_G_AddGeometryDirectly( hSpatialFilterPolygon, hRing ); + OGR_L_SetSpatialFilter( psInfo->hLayer, hSpatialFilterPolygon ); + OGR_G_DestroyGeometry( hSpatialFilterPolygon ); + } - if (layer->debug >= MS_DEBUGLEVEL_VVV) - msDebug("msOGRFileWhichShapes: Setting attribute filter to %s\n", pszOGRFilter ); + psInfo->rect = rect; - CPLErrorReset(); - if( OGR_L_SetAttributeFilter( psInfo->hLayer, pszOGRFilter ) != OGRERR_NONE ) { - msSetError(MS_OGRERR, "SetAttributeFilter(%s) failed on layer %s.\n%s", "msOGRFileWhichShapes()", layer->filter.string+6, layer->name?layer->name:"(null)", CPLGetLastErrorMsg() ); - RELEASE_OGR_LOCK; - msFree(pszOGRFilter); - return MS_FAILURE; + if (layer->debug >= MS_DEBUGLEVEL_VVV) + msDebug("msOGRFileWhichShapes: Setting spatial filter to %f %f %f %f\n", rect.minx, rect.miny, rect.maxx, rect.maxy ); + + /* ------------------------------------------------------------------ + * Apply an attribute filter if we have one prefixed with a WHERE + * keyword in the filter string. Otherwise, ensure the attribute + * filter is clear. + * ------------------------------------------------------------------ */ + if( pszOGRFilter != NULL ) { + + if (layer->debug >= MS_DEBUGLEVEL_VVV) + msDebug("msOGRFileWhichShapes: Setting attribute filter to %s\n", pszOGRFilter ); + + CPLErrorReset(); + if( OGR_L_SetAttributeFilter( psInfo->hLayer, pszOGRFilter ) != OGRERR_NONE ) { + msSetError(MS_OGRERR, "SetAttributeFilter(%s) failed on layer %s.\n%s", "msOGRFileWhichShapes()", layer->filter.string+6, layer->name?layer->name:"(null)", CPLGetLastErrorMsg() ); + RELEASE_OGR_LOCK; + msFree(pszOGRFilter); + return MS_FAILURE; + } + msFree(pszOGRFilter); + } else + OGR_L_SetAttributeFilter( psInfo->hLayer, NULL ); + } - msFree(pszOGRFilter); - } else - OGR_L_SetAttributeFilter( psInfo->hLayer, NULL ); - - /* ------------------------------------------------------------------ - * Reset current feature pointer - * ------------------------------------------------------------------ */ - OGR_L_ResetReading( psInfo->hLayer ); - psInfo->last_record_index_read = -1; - - RELEASE_OGR_LOCK; - return MS_SUCCESS; + /* ------------------------------------------------------------------ + * Reset current feature pointer + * ------------------------------------------------------------------ */ + OGR_L_ResetReading( psInfo->hLayer ); + psInfo->last_record_index_read = -1; + + RELEASE_OGR_LOCK; + + return MS_SUCCESS; } /********************************************************************** @@ -3647,7 +4114,7 @@ int msOGRLayerInitializeVirtualTable(layerObj *layer) assert(layer != NULL); assert(layer->vtable != NULL); - /* layer->vtable->LayerTranslateFilter, use default */ + layer->vtable->LayerTranslateFilter = msOGRTranslateMsExpressionToOGRSQL; layer->vtable->LayerSupportsCommonFilters = msOGRLayerSupportsCommonFilters; layer->vtable->LayerInitItemInfo = msOGRLayerInitItemInfo; diff --git a/msautotest/wxs/data/db.sqlite b/msautotest/wxs/data/db.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..79e1457611fea54c912560417c6afd8ade9f2fc9 GIT binary patch literal 141312 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 + + + + 660036.840000,4879402.970000 690357.250000,4892926.890000 + + + + + + + + 660036.840000,4885407.410000 660036.840000,4885407.410000 + + + + + 660036.840000,4885407.410000 + + + Sambuca Pistoiese + 1604 + 1 + 0 + 0 + + + + + + + 672279.270000,4879402.970000 672279.270000,4879402.970000 + + + + + 672279.270000,4879402.970000 + + + Vernio + 5535 + 1 + 0 + 0 + + + + + + + 666989.570000,4892926.890000 666989.570000,4892926.890000 + + + + + 666989.570000,4892926.890000 + + + Camugnano + 2132 + 1 + 0 + 0 + + + + + + + 662773.000000,4891987.410000 662773.000000,4891987.410000 + + + + + 662773.000000,4891987.410000 + + + Castel di Casio + 3174 + 1 + 0 + 0 + + + + + + + 673068.120000,4889949.750000 673068.120000,4889949.750000 + + + + + 673068.120000,4889949.750000 + + + Castiglione dei Pepoli + 6008 + 1 + 0 + 0 + + + + + + + 690357.250000,4888070.830000 690357.250000,4888070.830000 + + + + + 690357.250000,4888070.830000 + + + Firenzuola + 4812 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_02.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_02.xml new file mode 100644 index 0000000000..e5774bf484 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_02.xml @@ -0,0 +1,38 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + 643513.360000,4896928.190000 + + + Fanano + 2910 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_03.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_03.xml new file mode 100644 index 0000000000..8d82f6e06a --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_03.xml @@ -0,0 +1,152 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 643513.360000,4879402.970000 690357.250000,4896928.190000 + + + + + + + + 660036.840000,4885407.410000 660036.840000,4885407.410000 + + + + + 660036.840000,4885407.410000 + + + Sambuca Pistoiese + 1604 + 1 + 0 + 0 + + + + + + + 672279.270000,4879402.970000 672279.270000,4879402.970000 + + + + + 672279.270000,4879402.970000 + + + Vernio + 5535 + 1 + 0 + 0 + + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + 643513.360000,4896928.190000 + + + Fanano + 2910 + 1 + 0 + 0 + + + + + + + 666989.570000,4892926.890000 666989.570000,4892926.890000 + + + + + 666989.570000,4892926.890000 + + + Camugnano + 2132 + 1 + 0 + 0 + + + + + + + 662773.000000,4891987.410000 662773.000000,4891987.410000 + + + + + 662773.000000,4891987.410000 + + + Castel di Casio + 3174 + 1 + 0 + 0 + + + + + + + 673068.120000,4889949.750000 673068.120000,4889949.750000 + + + + + 673068.120000,4889949.750000 + + + Castiglione dei Pepoli + 6008 + 1 + 0 + 0 + + + + + + + 690357.250000,4888070.830000 690357.250000,4888070.830000 + + + + + 690357.250000,4888070.830000 + + + Firenzuola + 4812 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_04.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_04.xml new file mode 100644 index 0000000000..29b9e62172 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_04.xml @@ -0,0 +1,114 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 662773.000000,4879402.970000 690357.250000,4892926.890000 + + + + + + + + 672279.270000,4879402.970000 672279.270000,4879402.970000 + + + + + 672279.270000,4879402.970000 + + + Vernio + 5535 + 1 + 0 + 0 + + + + + + + 666989.570000,4892926.890000 666989.570000,4892926.890000 + + + + + 666989.570000,4892926.890000 + + + Camugnano + 2132 + 1 + 0 + 0 + + + + + + + 662773.000000,4891987.410000 662773.000000,4891987.410000 + + + + + 662773.000000,4891987.410000 + + + Castel di Casio + 3174 + 1 + 0 + 0 + + + + + + + 673068.120000,4889949.750000 673068.120000,4889949.750000 + + + + + 673068.120000,4889949.750000 + + + Castiglione dei Pepoli + 6008 + 1 + 0 + 0 + + + + + + + 690357.250000,4888070.830000 690357.250000,4888070.830000 + + + + + 690357.250000,4888070.830000 + + + Firenzuola + 4812 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_05.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_05.xml new file mode 100644 index 0000000000..e5774bf484 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_05.xml @@ -0,0 +1,38 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + 643513.360000,4896928.190000 + + + Fanano + 2910 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_06.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_06.xml new file mode 100644 index 0000000000..e5774bf484 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_06.xml @@ -0,0 +1,38 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + 643513.360000,4896928.190000 + + + Fanano + 2910 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_07.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_07.xml new file mode 100644 index 0000000000..e5774bf484 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_07.xml @@ -0,0 +1,38 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + 643513.360000,4896928.190000 + + + Fanano + 2910 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_08.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_08.xml new file mode 100644 index 0000000000..87b9d1caba --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_08.xml @@ -0,0 +1,798 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 637137.640000,4865176.120000 710195.300000,4905916.470000 + + + + + + + + 672130.720000,4902785.470000 672130.720000,4902785.470000 + + + + + 672130.720000,4902785.470000 + + + Grizzana Morandi + 3694 + 1 + 0 + 0 + + + + + + + 660036.840000,4885407.410000 660036.840000,4885407.410000 + + + + + 660036.840000,4885407.410000 + + + Sambuca Pistoiese + 1604 + 1 + 0 + 0 + + + + + + + 666678.760000,4876424.900000 666678.760000,4876424.900000 + + + + + 666678.760000,4876424.900000 + + + Cantagallo + 2820 + 1 + 0 + 0 + + + + + + + 656907.120000,4886687.840000 656907.120000,4886687.840000 + + + + + 656907.120000,4886687.840000 + + + Granaglione + 2116 + 1 + 0 + 0 + + + + + + + 663058.320000,4865176.120000 663058.320000,4865176.120000 + + + + + 663058.320000,4865176.120000 + + + Montemurlo + 17502 + 1 + 0 + 0 + + + + + + + 672279.270000,4879402.970000 672279.270000,4879402.970000 + + + + + 672279.270000,4879402.970000 + + + Vernio + 5535 + 1 + 0 + 0 + + + + + + + 637137.640000,4900625.560000 637137.640000,4900625.560000 + + + + + 637137.640000,4900625.560000 + + + Montecreto + 929 + 1 + 0 + 0 + + + + + + + 655146.140000,4903917.010000 655146.140000,4903917.010000 + + + + + 655146.140000,4903917.010000 + + + Montese + 3181 + 1 + 0 + 0 + + + + + + + 641470.510000,4898995.210000 641470.510000,4898995.210000 + + + + + 641470.510000,4898995.210000 + + + Sestola + 2670 + 1 + 0 + 0 + + + + + + + 666989.570000,4892926.890000 666989.570000,4892926.890000 + + + + + 666989.570000,4892926.890000 + + + Camugnano + 2132 + 1 + 0 + 0 + + + + + + + 662773.000000,4891987.410000 662773.000000,4891987.410000 + + + + + 662773.000000,4891987.410000 + + + Castel di Casio + 3174 + 1 + 0 + 0 + + + + + + + 673068.120000,4889949.750000 673068.120000,4889949.750000 + + + + + 673068.120000,4889949.750000 + + + Castiglione dei Pepoli + 6008 + 1 + 0 + 0 + + + + + + + 651437.840000,4891594.120000 651437.840000,4891594.120000 + + + + + 651437.840000,4891594.120000 + + + Lizzano in Belvedere + 2253 + 1 + 0 + 0 + + + + + + + 680854.530000,4905388.460000 680854.530000,4905388.460000 + + + + + 680854.530000,4905388.460000 + + + Monzuno + 5254 + 1 + 0 + 0 + + + + + + + 678374.680000,4898206.120000 678374.680000,4898206.120000 + + + + + 678374.680000,4898206.120000 + + + San Benedetto Val di Sambro + 4375 + 1 + 0 + 0 + + + + + + + 640503.540000,4884416.920000 640503.540000,4884416.920000 + + + + + 640503.540000,4884416.920000 + + + Cutigliano + 1699 + 1 + 0 + 0 + + + + + + + 641450.940000,4876458.530000 641450.940000,4876458.530000 + + + + + 641450.940000,4876458.530000 + + + Piteglio + 1877 + 1 + 0 + 0 + + + + + + + 690357.250000,4888070.830000 690357.250000,4888070.830000 + + + + + 690357.250000,4888070.830000 + + + Firenzuola + 4812 + 1 + 0 + 0 + + + + + + + 710195.300000,4866937.690000 710195.300000,4866937.690000 + + + + + 710195.300000,4866937.690000 + + + San Godenzo + 1187 + 1 + 0 + 0 + + + + + + + 686481.160000,4870207.090000 686481.160000,4870207.090000 + + + + + 686481.160000,4870207.090000 + + + San Piero a Sieve + 3758 + 1 + 0 + 0 + + + + + + + 697335.810000,4867309.060000 697335.810000,4867309.060000 + + + + + 697335.810000,4867309.060000 + + + Vicchio + 7145 + 1 + 0 + 0 + + + + + + + 670374.330000,4868394.460000 670374.330000,4868394.460000 + + + + + 670374.330000,4868394.460000 + + + Vaiano + 9051 + 1 + 0 + 0 + + + + + + + 659557.040000,4904456.570000 659557.040000,4904456.570000 + + + + + 659557.040000,4904456.570000 + + + Castel d'Aiano + 1822 + 1 + 0 + 0 + + + + + + + 700027.210000,4898730.810000 700027.210000,4898730.810000 + + + + + 700027.210000,4898730.810000 + + + Castel del Rio + 1252 + 1 + 0 + 0 + + + + + + + 654456.480000,4895565.290000 654456.480000,4895565.290000 + + + + + 654456.480000,4895565.290000 + + + Gaggio Montano + 4771 + 1 + 0 + 0 + + + + + + + 685837.450000,4904282.990000 685837.450000,4904282.990000 + + + + + 685837.450000,4904282.990000 + + + Loiano + 4158 + 1 + 0 + 0 + + + + + + + 685896.740000,4899660.120000 685896.740000,4899660.120000 + + + + + 685896.740000,4899660.120000 + + + Monghidoro + 3618 + 1 + 0 + 0 + + + + + + + 657705.770000,4891441.560000 657705.770000,4891441.560000 + + + + + 657705.770000,4891441.560000 + + + Porretta Terme + 4646 + 1 + 0 + 0 + + + + + + + 668148.550000,4905427.520000 668148.550000,4905427.520000 + + + + + 668148.550000,4905427.520000 + + + Vergato + 6730 + 1 + 0 + 0 + + + + + + + 642083.400000,4866048.770000 642083.400000,4866048.770000 + + + + + 642083.400000,4866048.770000 + + + Marliana + 2917 + 1 + 0 + 0 + + + + + + + 661896.570000,4866692.430000 661896.570000,4866692.430000 + + + + + 661896.570000,4866692.430000 + + + Montale + 10143 + 1 + 0 + 0 + + + + + + + 643529.070000,4879703.820000 643529.070000,4879703.820000 + + + + + 643529.070000,4879703.820000 + + + San Marcello Pistoiese + 7142 + 1 + 0 + 0 + + + + + + + 679352.610000,4874600.650000 679352.610000,4874600.650000 + + + + + 679352.610000,4874600.650000 + + + Barberino di Mugello + 9531 + 1 + 0 + 0 + + + + + + + 691242.090000,4869675.970000 691242.090000,4869675.970000 + + + + + 691242.090000,4869675.970000 + + + Borgo San Lorenzo + 15825 + 1 + 0 + 0 + + + + + + + 688742.950000,4873672.850000 688742.950000,4873672.850000 + + + + + 688742.950000,4873672.850000 + + + Scarperia + 6778 + 1 + 0 + 0 + + + + + + + 709203.270000,4883473.950000 709203.270000,4883473.950000 + + + + + 709203.270000,4883473.950000 + + + Marradi + 3617 + 1 + 0 + 0 + + + + + + + 703892.440000,4887624.730000 703892.440000,4887624.730000 + + + + + 703892.440000,4887624.730000 + + + Palazzuolo sul Senio + 1301 + 1 + 0 + 0 + + + + + + + 706612.320000,4905916.470000 706612.320000,4905916.470000 + + + + + 706612.320000,4905916.470000 + + + Borgo Tossignano + 3023 + 1 + 0 + 0 + + + + + + + 709517.650000,4900008.460000 709517.650000,4900008.460000 + + + + + 709517.650000,4900008.460000 + + + Casola Valsenio + 2844 + 1 + 0 + 0 + + + + + + + 704327.740000,4903948.540000 704327.740000,4903948.540000 + + + + + 704327.740000,4903948.540000 + + + Fontanelice + 1797 + 1 + 0 + 0 + + + + + + + 653901.530000,4866278.050000 653901.530000,4866278.050000 + + + + + 653901.530000,4866278.050000 + + + Pistoia + 84274 + 1 + 1 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_09.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_09.xml new file mode 100644 index 0000000000..322f96b3a8 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_09.xml @@ -0,0 +1,817 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 637137.640000,4865176.120000 710195.300000,4905916.470000 + + + + + + + + 672130.720000,4902785.470000 672130.720000,4902785.470000 + + + + + 672130.720000,4902785.470000 + + + Grizzana Morandi + 3694 + 1 + 0 + 0 + + + + + + + 660036.840000,4885407.410000 660036.840000,4885407.410000 + + + + + 660036.840000,4885407.410000 + + + Sambuca Pistoiese + 1604 + 1 + 0 + 0 + + + + + + + 666678.760000,4876424.900000 666678.760000,4876424.900000 + + + + + 666678.760000,4876424.900000 + + + Cantagallo + 2820 + 1 + 0 + 0 + + + + + + + 656907.120000,4886687.840000 656907.120000,4886687.840000 + + + + + 656907.120000,4886687.840000 + + + Granaglione + 2116 + 1 + 0 + 0 + + + + + + + 663058.320000,4865176.120000 663058.320000,4865176.120000 + + + + + 663058.320000,4865176.120000 + + + Montemurlo + 17502 + 1 + 0 + 0 + + + + + + + 672279.270000,4879402.970000 672279.270000,4879402.970000 + + + + + 672279.270000,4879402.970000 + + + Vernio + 5535 + 1 + 0 + 0 + + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + 643513.360000,4896928.190000 + + + Fanano + 2910 + 1 + 0 + 0 + + + + + + + 637137.640000,4900625.560000 637137.640000,4900625.560000 + + + + + 637137.640000,4900625.560000 + + + Montecreto + 929 + 1 + 0 + 0 + + + + + + + 655146.140000,4903917.010000 655146.140000,4903917.010000 + + + + + 655146.140000,4903917.010000 + + + Montese + 3181 + 1 + 0 + 0 + + + + + + + 641470.510000,4898995.210000 641470.510000,4898995.210000 + + + + + 641470.510000,4898995.210000 + + + Sestola + 2670 + 1 + 0 + 0 + + + + + + + 666989.570000,4892926.890000 666989.570000,4892926.890000 + + + + + 666989.570000,4892926.890000 + + + Camugnano + 2132 + 1 + 0 + 0 + + + + + + + 662773.000000,4891987.410000 662773.000000,4891987.410000 + + + + + 662773.000000,4891987.410000 + + + Castel di Casio + 3174 + 1 + 0 + 0 + + + + + + + 673068.120000,4889949.750000 673068.120000,4889949.750000 + + + + + 673068.120000,4889949.750000 + + + Castiglione dei Pepoli + 6008 + 1 + 0 + 0 + + + + + + + 651437.840000,4891594.120000 651437.840000,4891594.120000 + + + + + 651437.840000,4891594.120000 + + + Lizzano in Belvedere + 2253 + 1 + 0 + 0 + + + + + + + 680854.530000,4905388.460000 680854.530000,4905388.460000 + + + + + 680854.530000,4905388.460000 + + + Monzuno + 5254 + 1 + 0 + 0 + + + + + + + 678374.680000,4898206.120000 678374.680000,4898206.120000 + + + + + 678374.680000,4898206.120000 + + + San Benedetto Val di Sambro + 4375 + 1 + 0 + 0 + + + + + + + 640503.540000,4884416.920000 640503.540000,4884416.920000 + + + + + 640503.540000,4884416.920000 + + + Cutigliano + 1699 + 1 + 0 + 0 + + + + + + + 641450.940000,4876458.530000 641450.940000,4876458.530000 + + + + + 641450.940000,4876458.530000 + + + Piteglio + 1877 + 1 + 0 + 0 + + + + + + + 690357.250000,4888070.830000 690357.250000,4888070.830000 + + + + + 690357.250000,4888070.830000 + + + Firenzuola + 4812 + 1 + 0 + 0 + + + + + + + 710195.300000,4866937.690000 710195.300000,4866937.690000 + + + + + 710195.300000,4866937.690000 + + + San Godenzo + 1187 + 1 + 0 + 0 + + + + + + + 686481.160000,4870207.090000 686481.160000,4870207.090000 + + + + + 686481.160000,4870207.090000 + + + San Piero a Sieve + 3758 + 1 + 0 + 0 + + + + + + + 697335.810000,4867309.060000 697335.810000,4867309.060000 + + + + + 697335.810000,4867309.060000 + + + Vicchio + 7145 + 1 + 0 + 0 + + + + + + + 670374.330000,4868394.460000 670374.330000,4868394.460000 + + + + + 670374.330000,4868394.460000 + + + Vaiano + 9051 + 1 + 0 + 0 + + + + + + + 659557.040000,4904456.570000 659557.040000,4904456.570000 + + + + + 659557.040000,4904456.570000 + + + Castel d'Aiano + 1822 + 1 + 0 + 0 + + + + + + + 700027.210000,4898730.810000 700027.210000,4898730.810000 + + + + + 700027.210000,4898730.810000 + + + Castel del Rio + 1252 + 1 + 0 + 0 + + + + + + + 654456.480000,4895565.290000 654456.480000,4895565.290000 + + + + + 654456.480000,4895565.290000 + + + Gaggio Montano + 4771 + 1 + 0 + 0 + + + + + + + 685837.450000,4904282.990000 685837.450000,4904282.990000 + + + + + 685837.450000,4904282.990000 + + + Loiano + 4158 + 1 + 0 + 0 + + + + + + + 685896.740000,4899660.120000 685896.740000,4899660.120000 + + + + + 685896.740000,4899660.120000 + + + Monghidoro + 3618 + 1 + 0 + 0 + + + + + + + 657705.770000,4891441.560000 657705.770000,4891441.560000 + + + + + 657705.770000,4891441.560000 + + + Porretta Terme + 4646 + 1 + 0 + 0 + + + + + + + 668148.550000,4905427.520000 668148.550000,4905427.520000 + + + + + 668148.550000,4905427.520000 + + + Vergato + 6730 + 1 + 0 + 0 + + + + + + + 642083.400000,4866048.770000 642083.400000,4866048.770000 + + + + + 642083.400000,4866048.770000 + + + Marliana + 2917 + 1 + 0 + 0 + + + + + + + 661896.570000,4866692.430000 661896.570000,4866692.430000 + + + + + 661896.570000,4866692.430000 + + + Montale + 10143 + 1 + 0 + 0 + + + + + + + 643529.070000,4879703.820000 643529.070000,4879703.820000 + + + + + 643529.070000,4879703.820000 + + + San Marcello Pistoiese + 7142 + 1 + 0 + 0 + + + + + + + 679352.610000,4874600.650000 679352.610000,4874600.650000 + + + + + 679352.610000,4874600.650000 + + + Barberino di Mugello + 9531 + 1 + 0 + 0 + + + + + + + 691242.090000,4869675.970000 691242.090000,4869675.970000 + + + + + 691242.090000,4869675.970000 + + + Borgo San Lorenzo + 15825 + 1 + 0 + 0 + + + + + + + 688742.950000,4873672.850000 688742.950000,4873672.850000 + + + + + 688742.950000,4873672.850000 + + + Scarperia + 6778 + 1 + 0 + 0 + + + + + + + 709203.270000,4883473.950000 709203.270000,4883473.950000 + + + + + 709203.270000,4883473.950000 + + + Marradi + 3617 + 1 + 0 + 0 + + + + + + + 703892.440000,4887624.730000 703892.440000,4887624.730000 + + + + + 703892.440000,4887624.730000 + + + Palazzuolo sul Senio + 1301 + 1 + 0 + 0 + + + + + + + 706612.320000,4905916.470000 706612.320000,4905916.470000 + + + + + 706612.320000,4905916.470000 + + + Borgo Tossignano + 3023 + 1 + 0 + 0 + + + + + + + 709517.650000,4900008.460000 709517.650000,4900008.460000 + + + + + 709517.650000,4900008.460000 + + + Casola Valsenio + 2844 + 1 + 0 + 0 + + + + + + + 704327.740000,4903948.540000 704327.740000,4903948.540000 + + + + + 704327.740000,4903948.540000 + + + Fontanelice + 1797 + 1 + 0 + 0 + + + + + + + 653901.530000,4866278.050000 653901.530000,4866278.050000 + + + + + 653901.530000,4866278.050000 + + + Pistoia + 84274 + 1 + 1 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_10.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_10.xml new file mode 100644 index 0000000000..9cc921258e --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_10.xml @@ -0,0 +1,266 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 641450.940000,4866937.690000 710195.300000,4905427.520000 + + + + + + + + 660036.840000,4885407.410000 660036.840000,4885407.410000 + + + + + 660036.840000,4885407.410000 + + + Sambuca Pistoiese + 1604 + 1 + 0 + 0 + + + + + + + 672279.270000,4879402.970000 672279.270000,4879402.970000 + + + + + 672279.270000,4879402.970000 + + + Vernio + 5535 + 1 + 0 + 0 + + + + + + + 641470.510000,4898995.210000 641470.510000,4898995.210000 + + + + + 641470.510000,4898995.210000 + + + Sestola + 2670 + 1 + 0 + 0 + + + + + + + 678374.680000,4898206.120000 678374.680000,4898206.120000 + + + + + 678374.680000,4898206.120000 + + + San Benedetto Val di Sambro + 4375 + 1 + 0 + 0 + + + + + + + 641450.940000,4876458.530000 641450.940000,4876458.530000 + + + + + 641450.940000,4876458.530000 + + + Piteglio + 1877 + 1 + 0 + 0 + + + + + + + 710195.300000,4866937.690000 710195.300000,4866937.690000 + + + + + 710195.300000,4866937.690000 + + + San Godenzo + 1187 + 1 + 0 + 0 + + + + + + + 686481.160000,4870207.090000 686481.160000,4870207.090000 + + + + + 686481.160000,4870207.090000 + + + San Piero a Sieve + 3758 + 1 + 0 + 0 + + + + + + + 697335.810000,4867309.060000 697335.810000,4867309.060000 + + + + + 697335.810000,4867309.060000 + + + Vicchio + 7145 + 1 + 0 + 0 + + + + + + + 670374.330000,4868394.460000 670374.330000,4868394.460000 + + + + + 670374.330000,4868394.460000 + + + Vaiano + 9051 + 1 + 0 + 0 + + + + + + + 657705.770000,4891441.560000 657705.770000,4891441.560000 + + + + + 657705.770000,4891441.560000 + + + Porretta Terme + 4646 + 1 + 0 + 0 + + + + + + + 668148.550000,4905427.520000 668148.550000,4905427.520000 + + + + + 668148.550000,4905427.520000 + + + Vergato + 6730 + 1 + 0 + 0 + + + + + + + 643529.070000,4879703.820000 643529.070000,4879703.820000 + + + + + 643529.070000,4879703.820000 + + + San Marcello Pistoiese + 7142 + 1 + 0 + 0 + + + + + + + 688742.950000,4873672.850000 688742.950000,4873672.850000 + + + + + 688742.950000,4873672.850000 + + + Scarperia + 6778 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_11.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_11.xml new file mode 100644 index 0000000000..e92ba3a9f1 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_11.xml @@ -0,0 +1,551 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 637137.640000,4865176.120000 709517.650000,4905916.470000 + + + + + + + + 672130.720000,4902785.470000 672130.720000,4902785.470000 + + + + + 672130.720000,4902785.470000 + + + Grizzana Morandi + 3694 + 1 + 0 + 0 + + + + + + + 666678.760000,4876424.900000 666678.760000,4876424.900000 + + + + + 666678.760000,4876424.900000 + + + Cantagallo + 2820 + 1 + 0 + 0 + + + + + + + 656907.120000,4886687.840000 656907.120000,4886687.840000 + + + + + 656907.120000,4886687.840000 + + + Granaglione + 2116 + 1 + 0 + 0 + + + + + + + 663058.320000,4865176.120000 663058.320000,4865176.120000 + + + + + 663058.320000,4865176.120000 + + + Montemurlo + 17502 + 1 + 0 + 0 + + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + 643513.360000,4896928.190000 + + + Fanano + 2910 + 1 + 0 + 0 + + + + + + + 637137.640000,4900625.560000 637137.640000,4900625.560000 + + + + + 637137.640000,4900625.560000 + + + Montecreto + 929 + 1 + 0 + 0 + + + + + + + 655146.140000,4903917.010000 655146.140000,4903917.010000 + + + + + 655146.140000,4903917.010000 + + + Montese + 3181 + 1 + 0 + 0 + + + + + + + 666989.570000,4892926.890000 666989.570000,4892926.890000 + + + + + 666989.570000,4892926.890000 + + + Camugnano + 2132 + 1 + 0 + 0 + + + + + + + 662773.000000,4891987.410000 662773.000000,4891987.410000 + + + + + 662773.000000,4891987.410000 + + + Castel di Casio + 3174 + 1 + 0 + 0 + + + + + + + 673068.120000,4889949.750000 673068.120000,4889949.750000 + + + + + 673068.120000,4889949.750000 + + + Castiglione dei Pepoli + 6008 + 1 + 0 + 0 + + + + + + + 651437.840000,4891594.120000 651437.840000,4891594.120000 + + + + + 651437.840000,4891594.120000 + + + Lizzano in Belvedere + 2253 + 1 + 0 + 0 + + + + + + + 680854.530000,4905388.460000 680854.530000,4905388.460000 + + + + + 680854.530000,4905388.460000 + + + Monzuno + 5254 + 1 + 0 + 0 + + + + + + + 640503.540000,4884416.920000 640503.540000,4884416.920000 + + + + + 640503.540000,4884416.920000 + + + Cutigliano + 1699 + 1 + 0 + 0 + + + + + + + 690357.250000,4888070.830000 690357.250000,4888070.830000 + + + + + 690357.250000,4888070.830000 + + + Firenzuola + 4812 + 1 + 0 + 0 + + + + + + + 659557.040000,4904456.570000 659557.040000,4904456.570000 + + + + + 659557.040000,4904456.570000 + + + Castel d'Aiano + 1822 + 1 + 0 + 0 + + + + + + + 700027.210000,4898730.810000 700027.210000,4898730.810000 + + + + + 700027.210000,4898730.810000 + + + Castel del Rio + 1252 + 1 + 0 + 0 + + + + + + + 654456.480000,4895565.290000 654456.480000,4895565.290000 + + + + + 654456.480000,4895565.290000 + + + Gaggio Montano + 4771 + 1 + 0 + 0 + + + + + + + 685837.450000,4904282.990000 685837.450000,4904282.990000 + + + + + 685837.450000,4904282.990000 + + + Loiano + 4158 + 1 + 0 + 0 + + + + + + + 685896.740000,4899660.120000 685896.740000,4899660.120000 + + + + + 685896.740000,4899660.120000 + + + Monghidoro + 3618 + 1 + 0 + 0 + + + + + + + 642083.400000,4866048.770000 642083.400000,4866048.770000 + + + + + 642083.400000,4866048.770000 + + + Marliana + 2917 + 1 + 0 + 0 + + + + + + + 661896.570000,4866692.430000 661896.570000,4866692.430000 + + + + + 661896.570000,4866692.430000 + + + Montale + 10143 + 1 + 0 + 0 + + + + + + + 679352.610000,4874600.650000 679352.610000,4874600.650000 + + + + + 679352.610000,4874600.650000 + + + Barberino di Mugello + 9531 + 1 + 0 + 0 + + + + + + + 691242.090000,4869675.970000 691242.090000,4869675.970000 + + + + + 691242.090000,4869675.970000 + + + Borgo San Lorenzo + 15825 + 1 + 0 + 0 + + + + + + + 709203.270000,4883473.950000 709203.270000,4883473.950000 + + + + + 709203.270000,4883473.950000 + + + Marradi + 3617 + 1 + 0 + 0 + + + + + + + 703892.440000,4887624.730000 703892.440000,4887624.730000 + + + + + 703892.440000,4887624.730000 + + + Palazzuolo sul Senio + 1301 + 1 + 0 + 0 + + + + + + + 706612.320000,4905916.470000 706612.320000,4905916.470000 + + + + + 706612.320000,4905916.470000 + + + Borgo Tossignano + 3023 + 1 + 0 + 0 + + + + + + + 709517.650000,4900008.460000 709517.650000,4900008.460000 + + + + + 709517.650000,4900008.460000 + + + Casola Valsenio + 2844 + 1 + 0 + 0 + + + + + + + 704327.740000,4903948.540000 704327.740000,4903948.540000 + + + + + 704327.740000,4903948.540000 + + + Fontanelice + 1797 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_12.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_12.xml new file mode 100644 index 0000000000..dd8f6d2f01 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_12.xml @@ -0,0 +1,285 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 641450.940000,4866278.050000 710195.300000,4905427.520000 + + + + + + + + 660036.840000,4885407.410000 660036.840000,4885407.410000 + + + + + 660036.840000,4885407.410000 + + + Sambuca Pistoiese + 1604 + 1 + 0 + 0 + + + + + + + 672279.270000,4879402.970000 672279.270000,4879402.970000 + + + + + 672279.270000,4879402.970000 + + + Vernio + 5535 + 1 + 0 + 0 + + + + + + + 641470.510000,4898995.210000 641470.510000,4898995.210000 + + + + + 641470.510000,4898995.210000 + + + Sestola + 2670 + 1 + 0 + 0 + + + + + + + 678374.680000,4898206.120000 678374.680000,4898206.120000 + + + + + 678374.680000,4898206.120000 + + + San Benedetto Val di Sambro + 4375 + 1 + 0 + 0 + + + + + + + 641450.940000,4876458.530000 641450.940000,4876458.530000 + + + + + 641450.940000,4876458.530000 + + + Piteglio + 1877 + 1 + 0 + 0 + + + + + + + 710195.300000,4866937.690000 710195.300000,4866937.690000 + + + + + 710195.300000,4866937.690000 + + + San Godenzo + 1187 + 1 + 0 + 0 + + + + + + + 686481.160000,4870207.090000 686481.160000,4870207.090000 + + + + + 686481.160000,4870207.090000 + + + San Piero a Sieve + 3758 + 1 + 0 + 0 + + + + + + + 697335.810000,4867309.060000 697335.810000,4867309.060000 + + + + + 697335.810000,4867309.060000 + + + Vicchio + 7145 + 1 + 0 + 0 + + + + + + + 670374.330000,4868394.460000 670374.330000,4868394.460000 + + + + + 670374.330000,4868394.460000 + + + Vaiano + 9051 + 1 + 0 + 0 + + + + + + + 657705.770000,4891441.560000 657705.770000,4891441.560000 + + + + + 657705.770000,4891441.560000 + + + Porretta Terme + 4646 + 1 + 0 + 0 + + + + + + + 668148.550000,4905427.520000 668148.550000,4905427.520000 + + + + + 668148.550000,4905427.520000 + + + Vergato + 6730 + 1 + 0 + 0 + + + + + + + 643529.070000,4879703.820000 643529.070000,4879703.820000 + + + + + 643529.070000,4879703.820000 + + + San Marcello Pistoiese + 7142 + 1 + 0 + 0 + + + + + + + 688742.950000,4873672.850000 688742.950000,4873672.850000 + + + + + 688742.950000,4873672.850000 + + + Scarperia + 6778 + 1 + 0 + 0 + + + + + + + 653901.530000,4866278.050000 653901.530000,4866278.050000 + + + + + 653901.530000,4866278.050000 + + + Pistoia + 84274 + 1 + 1 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_13.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_13.xml new file mode 100644 index 0000000000..9d6d017ff8 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_13.xml @@ -0,0 +1,570 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 637137.640000,4865176.120000 709517.650000,4905916.470000 + + + + + + + + 672130.720000,4902785.470000 672130.720000,4902785.470000 + + + + + 672130.720000,4902785.470000 + + + Grizzana Morandi + 3694 + 1 + 0 + 0 + + + + + + + 666678.760000,4876424.900000 666678.760000,4876424.900000 + + + + + 666678.760000,4876424.900000 + + + Cantagallo + 2820 + 1 + 0 + 0 + + + + + + + 656907.120000,4886687.840000 656907.120000,4886687.840000 + + + + + 656907.120000,4886687.840000 + + + Granaglione + 2116 + 1 + 0 + 0 + + + + + + + 663058.320000,4865176.120000 663058.320000,4865176.120000 + + + + + 663058.320000,4865176.120000 + + + Montemurlo + 17502 + 1 + 0 + 0 + + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + 643513.360000,4896928.190000 + + + Fanano + 2910 + 1 + 0 + 0 + + + + + + + 637137.640000,4900625.560000 637137.640000,4900625.560000 + + + + + 637137.640000,4900625.560000 + + + Montecreto + 929 + 1 + 0 + 0 + + + + + + + 655146.140000,4903917.010000 655146.140000,4903917.010000 + + + + + 655146.140000,4903917.010000 + + + Montese + 3181 + 1 + 0 + 0 + + + + + + + 666989.570000,4892926.890000 666989.570000,4892926.890000 + + + + + 666989.570000,4892926.890000 + + + Camugnano + 2132 + 1 + 0 + 0 + + + + + + + 662773.000000,4891987.410000 662773.000000,4891987.410000 + + + + + 662773.000000,4891987.410000 + + + Castel di Casio + 3174 + 1 + 0 + 0 + + + + + + + 673068.120000,4889949.750000 673068.120000,4889949.750000 + + + + + 673068.120000,4889949.750000 + + + Castiglione dei Pepoli + 6008 + 1 + 0 + 0 + + + + + + + 651437.840000,4891594.120000 651437.840000,4891594.120000 + + + + + 651437.840000,4891594.120000 + + + Lizzano in Belvedere + 2253 + 1 + 0 + 0 + + + + + + + 680854.530000,4905388.460000 680854.530000,4905388.460000 + + + + + 680854.530000,4905388.460000 + + + Monzuno + 5254 + 1 + 0 + 0 + + + + + + + 640503.540000,4884416.920000 640503.540000,4884416.920000 + + + + + 640503.540000,4884416.920000 + + + Cutigliano + 1699 + 1 + 0 + 0 + + + + + + + 690357.250000,4888070.830000 690357.250000,4888070.830000 + + + + + 690357.250000,4888070.830000 + + + Firenzuola + 4812 + 1 + 0 + 0 + + + + + + + 659557.040000,4904456.570000 659557.040000,4904456.570000 + + + + + 659557.040000,4904456.570000 + + + Castel d'Aiano + 1822 + 1 + 0 + 0 + + + + + + + 700027.210000,4898730.810000 700027.210000,4898730.810000 + + + + + 700027.210000,4898730.810000 + + + Castel del Rio + 1252 + 1 + 0 + 0 + + + + + + + 654456.480000,4895565.290000 654456.480000,4895565.290000 + + + + + 654456.480000,4895565.290000 + + + Gaggio Montano + 4771 + 1 + 0 + 0 + + + + + + + 685837.450000,4904282.990000 685837.450000,4904282.990000 + + + + + 685837.450000,4904282.990000 + + + Loiano + 4158 + 1 + 0 + 0 + + + + + + + 685896.740000,4899660.120000 685896.740000,4899660.120000 + + + + + 685896.740000,4899660.120000 + + + Monghidoro + 3618 + 1 + 0 + 0 + + + + + + + 642083.400000,4866048.770000 642083.400000,4866048.770000 + + + + + 642083.400000,4866048.770000 + + + Marliana + 2917 + 1 + 0 + 0 + + + + + + + 661896.570000,4866692.430000 661896.570000,4866692.430000 + + + + + 661896.570000,4866692.430000 + + + Montale + 10143 + 1 + 0 + 0 + + + + + + + 679352.610000,4874600.650000 679352.610000,4874600.650000 + + + + + 679352.610000,4874600.650000 + + + Barberino di Mugello + 9531 + 1 + 0 + 0 + + + + + + + 691242.090000,4869675.970000 691242.090000,4869675.970000 + + + + + 691242.090000,4869675.970000 + + + Borgo San Lorenzo + 15825 + 1 + 0 + 0 + + + + + + + 709203.270000,4883473.950000 709203.270000,4883473.950000 + + + + + 709203.270000,4883473.950000 + + + Marradi + 3617 + 1 + 0 + 0 + + + + + + + 703892.440000,4887624.730000 703892.440000,4887624.730000 + + + + + 703892.440000,4887624.730000 + + + Palazzuolo sul Senio + 1301 + 1 + 0 + 0 + + + + + + + 706612.320000,4905916.470000 706612.320000,4905916.470000 + + + + + 706612.320000,4905916.470000 + + + Borgo Tossignano + 3023 + 1 + 0 + 0 + + + + + + + 709517.650000,4900008.460000 709517.650000,4900008.460000 + + + + + 709517.650000,4900008.460000 + + + Casola Valsenio + 2844 + 1 + 0 + 0 + + + + + + + 704327.740000,4903948.540000 704327.740000,4903948.540000 + + + + + 704327.740000,4903948.540000 + + + Fontanelice + 1797 + 1 + 0 + 0 + + + + + + + 653901.530000,4866278.050000 653901.530000,4866278.050000 + + + + + 653901.530000,4866278.050000 + + + Pistoia + 84274 + 1 + 1 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_14.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_14.xml new file mode 100644 index 0000000000..8128bad4ba --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_14.xml @@ -0,0 +1,38 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 653901.530000,4866278.050000 653901.530000,4866278.050000 + + + + + + + + 653901.530000,4866278.050000 653901.530000,4866278.050000 + + + + + 653901.530000,4866278.050000 + + + Pistoia + 84274 + 1 + 1 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_15.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_15.xml new file mode 100644 index 0000000000..594ad7a3f9 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_15.xml @@ -0,0 +1,190 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 637137.640000,4866937.690000 710195.300000,4904456.570000 + + + + + + + + 660036.840000,4885407.410000 660036.840000,4885407.410000 + + + + + 660036.840000,4885407.410000 + + + Sambuca Pistoiese + 1604 + 1 + 0 + 0 + + + + + + + 637137.640000,4900625.560000 637137.640000,4900625.560000 + + + + + 637137.640000,4900625.560000 + + + Montecreto + 929 + 1 + 0 + 0 + + + + + + + 640503.540000,4884416.920000 640503.540000,4884416.920000 + + + + + 640503.540000,4884416.920000 + + + Cutigliano + 1699 + 1 + 0 + 0 + + + + + + + 641450.940000,4876458.530000 641450.940000,4876458.530000 + + + + + 641450.940000,4876458.530000 + + + Piteglio + 1877 + 1 + 0 + 0 + + + + + + + 710195.300000,4866937.690000 710195.300000,4866937.690000 + + + + + 710195.300000,4866937.690000 + + + San Godenzo + 1187 + 1 + 0 + 0 + + + + + + + 659557.040000,4904456.570000 659557.040000,4904456.570000 + + + + + 659557.040000,4904456.570000 + + + Castel d'Aiano + 1822 + 1 + 0 + 0 + + + + + + + 700027.210000,4898730.810000 700027.210000,4898730.810000 + + + + + 700027.210000,4898730.810000 + + + Castel del Rio + 1252 + 1 + 0 + 0 + + + + + + + 703892.440000,4887624.730000 703892.440000,4887624.730000 + + + + + 703892.440000,4887624.730000 + + + Palazzuolo sul Senio + 1301 + 1 + 0 + 0 + + + + + + + 704327.740000,4903948.540000 704327.740000,4903948.540000 + + + + + 704327.740000,4903948.540000 + + + Fontanelice + 1797 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_16.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_16.xml new file mode 100644 index 0000000000..db58f228c6 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_16.xml @@ -0,0 +1,57 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 653901.530000,4865176.120000 663058.320000,4866278.050000 + + + + + + + + 663058.320000,4865176.120000 663058.320000,4865176.120000 + + + + + 663058.320000,4865176.120000 + + + Montemurlo + 17502 + 1 + 0 + 0 + + + + + + + 653901.530000,4866278.050000 653901.530000,4866278.050000 + + + + + 653901.530000,4866278.050000 + + + Pistoia + 84274 + 1 + 1 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_17.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_17.xml new file mode 100644 index 0000000000..594ad7a3f9 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_17.xml @@ -0,0 +1,190 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 637137.640000,4866937.690000 710195.300000,4904456.570000 + + + + + + + + 660036.840000,4885407.410000 660036.840000,4885407.410000 + + + + + 660036.840000,4885407.410000 + + + Sambuca Pistoiese + 1604 + 1 + 0 + 0 + + + + + + + 637137.640000,4900625.560000 637137.640000,4900625.560000 + + + + + 637137.640000,4900625.560000 + + + Montecreto + 929 + 1 + 0 + 0 + + + + + + + 640503.540000,4884416.920000 640503.540000,4884416.920000 + + + + + 640503.540000,4884416.920000 + + + Cutigliano + 1699 + 1 + 0 + 0 + + + + + + + 641450.940000,4876458.530000 641450.940000,4876458.530000 + + + + + 641450.940000,4876458.530000 + + + Piteglio + 1877 + 1 + 0 + 0 + + + + + + + 710195.300000,4866937.690000 710195.300000,4866937.690000 + + + + + 710195.300000,4866937.690000 + + + San Godenzo + 1187 + 1 + 0 + 0 + + + + + + + 659557.040000,4904456.570000 659557.040000,4904456.570000 + + + + + 659557.040000,4904456.570000 + + + Castel d'Aiano + 1822 + 1 + 0 + 0 + + + + + + + 700027.210000,4898730.810000 700027.210000,4898730.810000 + + + + + 700027.210000,4898730.810000 + + + Castel del Rio + 1252 + 1 + 0 + 0 + + + + + + + 703892.440000,4887624.730000 703892.440000,4887624.730000 + + + + + 703892.440000,4887624.730000 + + + Palazzuolo sul Senio + 1301 + 1 + 0 + 0 + + + + + + + 704327.740000,4903948.540000 704327.740000,4903948.540000 + + + + + 704327.740000,4903948.540000 + + + Fontanelice + 1797 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_18.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_18.xml new file mode 100644 index 0000000000..2ae6dafd46 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_18.xml @@ -0,0 +1,38 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 660036.840000,4885407.410000 660036.840000,4885407.410000 + + + + + + + + 660036.840000,4885407.410000 660036.840000,4885407.410000 + + + + + 660036.840000,4885407.410000 + + + Sambuca Pistoiese + 1604 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_19.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_19.xml new file mode 100644 index 0000000000..268ad66052 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_19.xml @@ -0,0 +1,171 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 640503.540000,4866937.690000 710195.300000,4904456.570000 + + + + + + + + 660036.840000,4885407.410000 660036.840000,4885407.410000 + + + + + 660036.840000,4885407.410000 + + + Sambuca Pistoiese + 1604 + 1 + 0 + 0 + + + + + + + 640503.540000,4884416.920000 640503.540000,4884416.920000 + + + + + 640503.540000,4884416.920000 + + + Cutigliano + 1699 + 1 + 0 + 0 + + + + + + + 641450.940000,4876458.530000 641450.940000,4876458.530000 + + + + + 641450.940000,4876458.530000 + + + Piteglio + 1877 + 1 + 0 + 0 + + + + + + + 710195.300000,4866937.690000 710195.300000,4866937.690000 + + + + + 710195.300000,4866937.690000 + + + San Godenzo + 1187 + 1 + 0 + 0 + + + + + + + 659557.040000,4904456.570000 659557.040000,4904456.570000 + + + + + 659557.040000,4904456.570000 + + + Castel d'Aiano + 1822 + 1 + 0 + 0 + + + + + + + 700027.210000,4898730.810000 700027.210000,4898730.810000 + + + + + 700027.210000,4898730.810000 + + + Castel del Rio + 1252 + 1 + 0 + 0 + + + + + + + 703892.440000,4887624.730000 703892.440000,4887624.730000 + + + + + 703892.440000,4887624.730000 + + + Palazzuolo sul Senio + 1301 + 1 + 0 + 0 + + + + + + + 704327.740000,4903948.540000 704327.740000,4903948.540000 + + + + + 704327.740000,4903948.540000 + + + Fontanelice + 1797 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_20.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_20.xml new file mode 100644 index 0000000000..deb3877809 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_20.xml @@ -0,0 +1,95 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 668148.550000,4867309.060000 697335.810000,4905427.520000 + + + + + + + + 672279.270000,4879402.970000 672279.270000,4879402.970000 + + + + + 672279.270000,4879402.970000 + + + Vernio + 5535 + 1 + 0 + 0 + + + + + + + 697335.810000,4867309.060000 697335.810000,4867309.060000 + + + + + 697335.810000,4867309.060000 + + + Vicchio + 7145 + 1 + 0 + 0 + + + + + + + 670374.330000,4868394.460000 670374.330000,4868394.460000 + + + + + 670374.330000,4868394.460000 + + + Vaiano + 9051 + 1 + 0 + 0 + + + + + + + 668148.550000,4905427.520000 668148.550000,4905427.520000 + + + + + 668148.550000,4905427.520000 + + + Vergato + 6730 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_21.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_21.xml new file mode 100644 index 0000000000..deb3877809 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_21.xml @@ -0,0 +1,95 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 668148.550000,4867309.060000 697335.810000,4905427.520000 + + + + + + + + 672279.270000,4879402.970000 672279.270000,4879402.970000 + + + + + 672279.270000,4879402.970000 + + + Vernio + 5535 + 1 + 0 + 0 + + + + + + + 697335.810000,4867309.060000 697335.810000,4867309.060000 + + + + + 697335.810000,4867309.060000 + + + Vicchio + 7145 + 1 + 0 + 0 + + + + + + + 670374.330000,4868394.460000 670374.330000,4868394.460000 + + + + + 670374.330000,4868394.460000 + + + Vaiano + 9051 + 1 + 0 + 0 + + + + + + + 668148.550000,4905427.520000 668148.550000,4905427.520000 + + + + + 668148.550000,4905427.520000 + + + Vergato + 6730 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_22.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_22.xml new file mode 100644 index 0000000000..1df56b8433 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_22.xml @@ -0,0 +1,57 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 656907.120000,4886687.840000 672130.720000,4902785.470000 + + + + + + + + 672130.720000,4902785.470000 672130.720000,4902785.470000 + + + + + 672130.720000,4902785.470000 + + + Grizzana Morandi + 3694 + 1 + 0 + 0 + + + + + + + 656907.120000,4886687.840000 656907.120000,4886687.840000 + + + + + 656907.120000,4886687.840000 + + + Granaglione + 2116 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_23.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_23.xml new file mode 100644 index 0000000000..33838c3c46 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_23.xml @@ -0,0 +1,57 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 656907.120000,4885407.410000 660036.840000,4886687.840000 + + + + + + + + 660036.840000,4885407.410000 660036.840000,4885407.410000 + + + + + 660036.840000,4885407.410000 + + + Sambuca Pistoiese + 1604 + 1 + 0 + 0 + + + + + + + 656907.120000,4886687.840000 656907.120000,4886687.840000 + + + + + 656907.120000,4886687.840000 + + + Granaglione + 2116 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_24.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_24.xml new file mode 100644 index 0000000000..b5c0b68909 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_24.xml @@ -0,0 +1,779 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 637137.640000,4865176.120000 710195.300000,4905916.470000 + + + + + + + + 672130.720000,4902785.470000 672130.720000,4902785.470000 + + + + + 672130.720000,4902785.470000 + + + Grizzana Morandi + 3694 + 1 + 0 + 0 + + + + + + + 666678.760000,4876424.900000 666678.760000,4876424.900000 + + + + + 666678.760000,4876424.900000 + + + Cantagallo + 2820 + 1 + 0 + 0 + + + + + + + 663058.320000,4865176.120000 663058.320000,4865176.120000 + + + + + 663058.320000,4865176.120000 + + + Montemurlo + 17502 + 1 + 0 + 0 + + + + + + + 672279.270000,4879402.970000 672279.270000,4879402.970000 + + + + + 672279.270000,4879402.970000 + + + Vernio + 5535 + 1 + 0 + 0 + + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + 643513.360000,4896928.190000 + + + Fanano + 2910 + 1 + 0 + 0 + + + + + + + 637137.640000,4900625.560000 637137.640000,4900625.560000 + + + + + 637137.640000,4900625.560000 + + + Montecreto + 929 + 1 + 0 + 0 + + + + + + + 655146.140000,4903917.010000 655146.140000,4903917.010000 + + + + + 655146.140000,4903917.010000 + + + Montese + 3181 + 1 + 0 + 0 + + + + + + + 641470.510000,4898995.210000 641470.510000,4898995.210000 + + + + + 641470.510000,4898995.210000 + + + Sestola + 2670 + 1 + 0 + 0 + + + + + + + 666989.570000,4892926.890000 666989.570000,4892926.890000 + + + + + 666989.570000,4892926.890000 + + + Camugnano + 2132 + 1 + 0 + 0 + + + + + + + 662773.000000,4891987.410000 662773.000000,4891987.410000 + + + + + 662773.000000,4891987.410000 + + + Castel di Casio + 3174 + 1 + 0 + 0 + + + + + + + 673068.120000,4889949.750000 673068.120000,4889949.750000 + + + + + 673068.120000,4889949.750000 + + + Castiglione dei Pepoli + 6008 + 1 + 0 + 0 + + + + + + + 651437.840000,4891594.120000 651437.840000,4891594.120000 + + + + + 651437.840000,4891594.120000 + + + Lizzano in Belvedere + 2253 + 1 + 0 + 0 + + + + + + + 680854.530000,4905388.460000 680854.530000,4905388.460000 + + + + + 680854.530000,4905388.460000 + + + Monzuno + 5254 + 1 + 0 + 0 + + + + + + + 678374.680000,4898206.120000 678374.680000,4898206.120000 + + + + + 678374.680000,4898206.120000 + + + San Benedetto Val di Sambro + 4375 + 1 + 0 + 0 + + + + + + + 640503.540000,4884416.920000 640503.540000,4884416.920000 + + + + + 640503.540000,4884416.920000 + + + Cutigliano + 1699 + 1 + 0 + 0 + + + + + + + 641450.940000,4876458.530000 641450.940000,4876458.530000 + + + + + 641450.940000,4876458.530000 + + + Piteglio + 1877 + 1 + 0 + 0 + + + + + + + 690357.250000,4888070.830000 690357.250000,4888070.830000 + + + + + 690357.250000,4888070.830000 + + + Firenzuola + 4812 + 1 + 0 + 0 + + + + + + + 710195.300000,4866937.690000 710195.300000,4866937.690000 + + + + + 710195.300000,4866937.690000 + + + San Godenzo + 1187 + 1 + 0 + 0 + + + + + + + 686481.160000,4870207.090000 686481.160000,4870207.090000 + + + + + 686481.160000,4870207.090000 + + + San Piero a Sieve + 3758 + 1 + 0 + 0 + + + + + + + 697335.810000,4867309.060000 697335.810000,4867309.060000 + + + + + 697335.810000,4867309.060000 + + + Vicchio + 7145 + 1 + 0 + 0 + + + + + + + 670374.330000,4868394.460000 670374.330000,4868394.460000 + + + + + 670374.330000,4868394.460000 + + + Vaiano + 9051 + 1 + 0 + 0 + + + + + + + 659557.040000,4904456.570000 659557.040000,4904456.570000 + + + + + 659557.040000,4904456.570000 + + + Castel d'Aiano + 1822 + 1 + 0 + 0 + + + + + + + 700027.210000,4898730.810000 700027.210000,4898730.810000 + + + + + 700027.210000,4898730.810000 + + + Castel del Rio + 1252 + 1 + 0 + 0 + + + + + + + 654456.480000,4895565.290000 654456.480000,4895565.290000 + + + + + 654456.480000,4895565.290000 + + + Gaggio Montano + 4771 + 1 + 0 + 0 + + + + + + + 685837.450000,4904282.990000 685837.450000,4904282.990000 + + + + + 685837.450000,4904282.990000 + + + Loiano + 4158 + 1 + 0 + 0 + + + + + + + 685896.740000,4899660.120000 685896.740000,4899660.120000 + + + + + 685896.740000,4899660.120000 + + + Monghidoro + 3618 + 1 + 0 + 0 + + + + + + + 657705.770000,4891441.560000 657705.770000,4891441.560000 + + + + + 657705.770000,4891441.560000 + + + Porretta Terme + 4646 + 1 + 0 + 0 + + + + + + + 668148.550000,4905427.520000 668148.550000,4905427.520000 + + + + + 668148.550000,4905427.520000 + + + Vergato + 6730 + 1 + 0 + 0 + + + + + + + 642083.400000,4866048.770000 642083.400000,4866048.770000 + + + + + 642083.400000,4866048.770000 + + + Marliana + 2917 + 1 + 0 + 0 + + + + + + + 661896.570000,4866692.430000 661896.570000,4866692.430000 + + + + + 661896.570000,4866692.430000 + + + Montale + 10143 + 1 + 0 + 0 + + + + + + + 643529.070000,4879703.820000 643529.070000,4879703.820000 + + + + + 643529.070000,4879703.820000 + + + San Marcello Pistoiese + 7142 + 1 + 0 + 0 + + + + + + + 679352.610000,4874600.650000 679352.610000,4874600.650000 + + + + + 679352.610000,4874600.650000 + + + Barberino di Mugello + 9531 + 1 + 0 + 0 + + + + + + + 691242.090000,4869675.970000 691242.090000,4869675.970000 + + + + + 691242.090000,4869675.970000 + + + Borgo San Lorenzo + 15825 + 1 + 0 + 0 + + + + + + + 688742.950000,4873672.850000 688742.950000,4873672.850000 + + + + + 688742.950000,4873672.850000 + + + Scarperia + 6778 + 1 + 0 + 0 + + + + + + + 709203.270000,4883473.950000 709203.270000,4883473.950000 + + + + + 709203.270000,4883473.950000 + + + Marradi + 3617 + 1 + 0 + 0 + + + + + + + 703892.440000,4887624.730000 703892.440000,4887624.730000 + + + + + 703892.440000,4887624.730000 + + + Palazzuolo sul Senio + 1301 + 1 + 0 + 0 + + + + + + + 706612.320000,4905916.470000 706612.320000,4905916.470000 + + + + + 706612.320000,4905916.470000 + + + Borgo Tossignano + 3023 + 1 + 0 + 0 + + + + + + + 709517.650000,4900008.460000 709517.650000,4900008.460000 + + + + + 709517.650000,4900008.460000 + + + Casola Valsenio + 2844 + 1 + 0 + 0 + + + + + + + 704327.740000,4903948.540000 704327.740000,4903948.540000 + + + + + 704327.740000,4903948.540000 + + + Fontanelice + 1797 + 1 + 0 + 0 + + + + + + + 653901.530000,4866278.050000 653901.530000,4866278.050000 + + + + + 653901.530000,4866278.050000 + + + Pistoia + 84274 + 1 + 1 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_25.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_25.xml new file mode 100644 index 0000000000..71c17c1a3c --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_25.xml @@ -0,0 +1,16 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + missing + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_26.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_26.xml new file mode 100644 index 0000000000..71c17c1a3c --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_26.xml @@ -0,0 +1,16 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + missing + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_27.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_27.xml new file mode 100644 index 0000000000..71c17c1a3c --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_27.xml @@ -0,0 +1,16 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + missing + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_28.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_28.xml new file mode 100644 index 0000000000..33838c3c46 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_28.xml @@ -0,0 +1,57 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 656907.120000,4885407.410000 660036.840000,4886687.840000 + + + + + + + + 660036.840000,4885407.410000 660036.840000,4885407.410000 + + + + + 660036.840000,4885407.410000 + + + Sambuca Pistoiese + 1604 + 1 + 0 + 0 + + + + + + + 656907.120000,4886687.840000 656907.120000,4886687.840000 + + + + + 656907.120000,4886687.840000 + + + Granaglione + 2116 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_29.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_29.xml new file mode 100644 index 0000000000..71c17c1a3c --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_29.xml @@ -0,0 +1,16 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + missing + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_30.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_30.xml new file mode 100644 index 0000000000..f1e4e7e5bb --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_30.xml @@ -0,0 +1,38 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 662773.000000,4891987.410000 662773.000000,4891987.410000 + + + + + + + + 662773.000000,4891987.410000 662773.000000,4891987.410000 + + + + + 662773.000000,4891987.410000 + + + Castel di Casio + 3174 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_31.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_31.xml new file mode 100644 index 0000000000..9dc366bc42 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_31.xml @@ -0,0 +1,304 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 680854.530000,4866937.690000 710195.300000,4905916.470000 + + + + + + + + 680854.530000,4905388.460000 680854.530000,4905388.460000 + + + + + 680854.530000,4905388.460000 + + + Monzuno + 5254 + 1 + 0 + 0 + + + + + + + 690357.250000,4888070.830000 690357.250000,4888070.830000 + + + + + 690357.250000,4888070.830000 + + + Firenzuola + 4812 + 1 + 0 + 0 + + + + + + + 710195.300000,4866937.690000 710195.300000,4866937.690000 + + + + + 710195.300000,4866937.690000 + + + San Godenzo + 1187 + 1 + 0 + 0 + + + + + + + 686481.160000,4870207.090000 686481.160000,4870207.090000 + + + + + 686481.160000,4870207.090000 + + + San Piero a Sieve + 3758 + 1 + 0 + 0 + + + + + + + 697335.810000,4867309.060000 697335.810000,4867309.060000 + + + + + 697335.810000,4867309.060000 + + + Vicchio + 7145 + 1 + 0 + 0 + + + + + + + 700027.210000,4898730.810000 700027.210000,4898730.810000 + + + + + 700027.210000,4898730.810000 + + + Castel del Rio + 1252 + 1 + 0 + 0 + + + + + + + 685837.450000,4904282.990000 685837.450000,4904282.990000 + + + + + 685837.450000,4904282.990000 + + + Loiano + 4158 + 1 + 0 + 0 + + + + + + + 685896.740000,4899660.120000 685896.740000,4899660.120000 + + + + + 685896.740000,4899660.120000 + + + Monghidoro + 3618 + 1 + 0 + 0 + + + + + + + 691242.090000,4869675.970000 691242.090000,4869675.970000 + + + + + 691242.090000,4869675.970000 + + + Borgo San Lorenzo + 15825 + 1 + 0 + 0 + + + + + + + 688742.950000,4873672.850000 688742.950000,4873672.850000 + + + + + 688742.950000,4873672.850000 + + + Scarperia + 6778 + 1 + 0 + 0 + + + + + + + 709203.270000,4883473.950000 709203.270000,4883473.950000 + + + + + 709203.270000,4883473.950000 + + + Marradi + 3617 + 1 + 0 + 0 + + + + + + + 703892.440000,4887624.730000 703892.440000,4887624.730000 + + + + + 703892.440000,4887624.730000 + + + Palazzuolo sul Senio + 1301 + 1 + 0 + 0 + + + + + + + 706612.320000,4905916.470000 706612.320000,4905916.470000 + + + + + 706612.320000,4905916.470000 + + + Borgo Tossignano + 3023 + 1 + 0 + 0 + + + + + + + 709517.650000,4900008.460000 709517.650000,4900008.460000 + + + + + 709517.650000,4900008.460000 + + + Casola Valsenio + 2844 + 1 + 0 + 0 + + + + + + + 704327.740000,4903948.540000 704327.740000,4903948.540000 + + + + + 704327.740000,4903948.540000 + + + Fontanelice + 1797 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_32.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_32.xml new file mode 100644 index 0000000000..33838c3c46 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_32.xml @@ -0,0 +1,57 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 656907.120000,4885407.410000 660036.840000,4886687.840000 + + + + + + + + 660036.840000,4885407.410000 660036.840000,4885407.410000 + + + + + 660036.840000,4885407.410000 + + + Sambuca Pistoiese + 1604 + 1 + 0 + 0 + + + + + + + 656907.120000,4886687.840000 656907.120000,4886687.840000 + + + + + 656907.120000,4886687.840000 + + + Granaglione + 2116 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/wfs_ogr_native_sql.map b/msautotest/wxs/wfs_ogr_native_sql.map new file mode 100644 index 0000000000..7d2b994a22 --- /dev/null +++ b/msautotest/wxs/wfs_ogr_native_sql.map @@ -0,0 +1,121 @@ +# +# Test WFS +# +# REQUIRES: SUPPORTS=WFS INPUT=OGR +# +# simple bbox +# +# RUN_PARMS: wfs_ogr_native_sql_01.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry659159,4877386 696879,4898059" > [RESULT] +# +# and, or, not +# +# RUN_PARMS: wfs_ogr_native_sql_02.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry643159,4877386 696879,4898059nameFanano" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_03.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry659159,4877386 696879,4898059nameFanano" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_04.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry659159,4877386 696879,4898059nameSambuca*" > [RESULT] +# +# = != > < >= <= with string +# +# RUN_PARMS: wfs_ogr_native_sql_05.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namefanano" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_06.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=nameFanano" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_07.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namefanano" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_08.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=nameFanano" > [RESULT] +# +# bug in MS filter: wfs_ogr_native_sql_09.xml should not have Fanano, matchCase="false" is ignored +# +# RUN_PARMS: wfs_ogr_native_sql_09.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namefanano" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_10.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namePistoia" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_11.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namePistoia" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_12.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namePistoia" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_13.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namePistoia" > [RESULT] +# +# = != > < >= <= with number +# +# RUN_PARMS: wfs_ogr_native_sql_14.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=peoples17502" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_15.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=peoples2000" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_16.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=peoples17502" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_17.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=peoples2000" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_18.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=peoples1604" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_19.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=peoples10002001" > [RESULT] +# +# missing comparison tests: time, boolean +# +# PropertyIsLike +# +# RUN_PARMS: wfs_ogr_native_sql_20.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=nameV*o" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_21.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namev*o" > [RESULT] +# +# bug in MS: ? is treated as * in this case: +# +# RUN_PARMS: wfs_ogr_native_sql_22.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=name?r*" > [RESULT] +# +# spatial predicates +# intersects, disjoint, touches, overlaps, crosses, within, contains, equals, beyond, dwithin +# +# RUN_PARMS: wfs_ogr_native_sql_23.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_24.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_25.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_26.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_27.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_28.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_29.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_30.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry662773 4891987.41" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_31.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=20000Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_32.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=1000Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] + +MAP + +NAME WFS_OGR_NATIVE_SQL_TEST +STATUS ON +SIZE 400 300 +EXTENT 6 30 21 50 +UNITS METERS +IMAGECOLOR 255 255 255 + +# +# Start of web interface definition +# + +WEB + + IMAGEPATH "tmp/" + IMAGEURL "/ms_tmp/" + + METADATA + "wfs_title" "Test simple wfs" + "wfs_onlineresource" "http://localhost/path/to/wfs_simple?" + "wfs_srs" "EPSG:32632" + "wfs_enable_request" "*" + END +END + +PROJECTION + "+proj=latlong +datum=WGS84" +END + +# +# Start of layer definitions +# + +LAYER + NAME towns + DATA towns + CONNECTIONTYPE OGR + CONNECTION "./data/db.sqlite" + PROCESSING "NATIVE_SQL=YES" + METADATA + "ows_title" "towns" + "wfs_featureid" "ID" + "gml_include_items" "all" + "gml_types" "auto" + "wfs_getfeature_formatlist" "ogrgml" + END + TYPE POINT + STATUS ON + PROJECTION + "init=epsg:32632" + END + + TEMPLATE "wfs_ogr_native_sql.map" +END # Layer + +END # Map File diff --git a/msautotest/wxs/wfs_ogr_no_native_sql.map b/msautotest/wxs/wfs_ogr_no_native_sql.map new file mode 100644 index 0000000000..cbf7ca83ab --- /dev/null +++ b/msautotest/wxs/wfs_ogr_no_native_sql.map @@ -0,0 +1,121 @@ +# +# Test WFS +# +# REQUIRES: SUPPORTS=WFS INPUT=OGR +# +# simple bbox +# +# RUN_PARMS: wfs_ogr_native_sql_01.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry659159,4877386 696879,4898059" > [RESULT] +# +# and, or, not +# +# RUN_PARMS: wfs_ogr_native_sql_02.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry643159,4877386 696879,4898059nameFanano" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_03.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry659159,4877386 696879,4898059nameFanano" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_04.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry659159,4877386 696879,4898059nameSambuca*" > [RESULT] +# +# = != > < >= <= with string +# +# RUN_PARMS: wfs_ogr_native_sql_05.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namefanano" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_06.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=nameFanano" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_07.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namefanano" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_08.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=nameFanano" > [RESULT] +# +# bug in MS filter: wfs_ogr_native_sql_09.xml should not have Fanano, matchCase="false" is ignored +# +# RUN_PARMS: wfs_ogr_native_sql_09.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namefanano" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_10.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namePistoia" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_11.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namePistoia" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_12.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namePistoia" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_13.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namePistoia" > [RESULT] +# +# = != > < >= <= with number +# +# RUN_PARMS: wfs_ogr_native_sql_14.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=peoples17502" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_15.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=peoples2000" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_16.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=peoples17502" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_17.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=peoples2000" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_18.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=peoples1604" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_19.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=peoples10002001" > [RESULT] +# +# missing comparison tests: time, boolean +# +# PropertyIsLike +# +# RUN_PARMS: wfs_ogr_native_sql_20.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=nameV*o" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_21.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namev*o" > [RESULT] +# +# bug in MS: ? is treated as * in this case: +# +# UN_PARMS: wfs_ogr_native_sql_22.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=name?r*" > [RESULT] +# +# spatial predicates +# intersects, disjoint, touches, overlaps, crosses, within, contains, equals, beyond, dwithin +# +# RUN_PARMS: wfs_ogr_native_sql_23.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_24.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_25.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_26.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_27.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_28.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_29.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_30.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry662773 4891987.41" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_31.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=20000Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] +# RUN_PARMS: wfs_ogr_native_sql_32.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=1000Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] + +MAP + +NAME WFS_OGR_NATIVE_SQL_TEST +STATUS ON +SIZE 400 300 +EXTENT 6 30 21 50 +UNITS METERS +IMAGECOLOR 255 255 255 + +# +# Start of web interface definition +# + +WEB + + IMAGEPATH "tmp/" + IMAGEURL "/ms_tmp/" + + METADATA + "wfs_title" "Test simple wfs" + "wfs_onlineresource" "http://localhost/path/to/wfs_simple?" + "wfs_srs" "EPSG:32632" + "wfs_enable_request" "*" + END +END + +PROJECTION + "+proj=latlong +datum=WGS84" +END + +# +# Start of layer definitions +# + +LAYER + NAME towns + DATA towns + CONNECTIONTYPE OGR + CONNECTION "./data/db.sqlite" + PROCESSING "NATIVE_SQL=NO" + METADATA + "ows_title" "towns" + "wfs_featureid" "ID" + "gml_include_items" "all" + "gml_types" "auto" + "wfs_getfeature_formatlist" "ogrgml" + END + TYPE POINT + STATUS ON + PROJECTION + "init=epsg:32632" + END + + TEMPLATE "wfs_ogr_native_sql.map" +END # Layer + +END # Map File From 0e20de083d7186298fbebbfd764ba721134ce3a0 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 31 May 2016 20:04:10 +0200 Subject: [PATCH 016/221] Follow-up of 3cf682d17003521213868f1e727d7be7a3263c7e: simplify string handling in msOGRGetToken() --- mapogr.cpp | 137 ++++++++++++++++++++++------------------------------- 1 file changed, 57 insertions(+), 80 deletions(-) diff --git a/mapogr.cpp b/mapogr.cpp index ff8f430283..222a559e03 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -1354,46 +1354,48 @@ static char *msOGREscapeSQLParam(layerObj *layer, const char *pszString) // http://www.sqlite.org/lang_expr.html // http://www.gaia-gis.it/gaia-sins/spatialite-sql-4.3.0.html +static char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node, const char *dialect) { msOGRFileInfo *info = (msOGRFileInfo *)layer->layerinfo; tokenListNodeObjPtr n = *node; if (!n) return NULL; char *out = NULL; + size_t nOutSize; switch(n->token) { case MS_TOKEN_LOGICAL_AND: - out = (char *)msSmallMalloc(10); - sprintf(out, " AND "); + out = msStrdup(" AND "); break; case MS_TOKEN_LOGICAL_OR: - out = (char *)msSmallMalloc(10); - sprintf(out, " OR "); + out = msStrdup(" OR "); break; case MS_TOKEN_LOGICAL_NOT: - out = (char *)msSmallMalloc(10); - sprintf(out, " NOT "); + out = msStrdup(" NOT "); break; case MS_TOKEN_LITERAL_NUMBER: - out = (char *)msSmallMalloc(80); - snprintf(out, 80, "%lf", n->tokenval.dblval); + nOutSize = 80; + out = (char *)msSmallMalloc(nOutSize); + snprintf(out, nOutSize, "%lf", n->tokenval.dblval); break; case MS_TOKEN_LITERAL_STRING: { char *stresc = msOGREscapeSQLParam(layer, n->tokenval.strval); - out = (char *)msSmallMalloc(strlen(stresc)+3); - snprintf(out, 80, "'%s'", stresc); + nOutSize = strlen(stresc)+3; + out = (char *)msSmallMalloc(nOutSize); + snprintf(out, nOutSize, "'%s'", stresc); msFree(stresc); break; } case MS_TOKEN_LITERAL_TIME: // seems to require METADATA gml_types => auto - out = (char *)msSmallMalloc(80); + nOutSize = 80; + out = (char *)msSmallMalloc(nOutSize); if (n->tokenval.tmval.tm_zone) - snprintf(out, 80, "'%d-%02d-%02dT%02d:%02d:%02d%s'", + snprintf(out, nOutSize, "'%d-%02d-%02dT%02d:%02d:%02d%s'", n->tokenval.tmval.tm_year+1900, n->tokenval.tmval.tm_mon+1, n->tokenval.tmval.tm_mday, n->tokenval.tmval.tm_hour, n->tokenval.tmval.tm_min, n->tokenval.tmval.tm_sec, n->tokenval.tmval.tm_zone); else - snprintf(out, 80, "'%d-%02d-%02dT%02d:%02d:%02d'", + snprintf(out, nOutSize, "'%d-%02d-%02dT%02d:%02d:%02d'", n->tokenval.tmval.tm_year+1900, n->tokenval.tmval.tm_mon+1, n->tokenval.tmval.tm_mday, n->tokenval.tmval.tm_hour, n->tokenval.tmval.tm_min, n->tokenval.tmval.tm_sec); break; @@ -1401,46 +1403,38 @@ char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node, const char *dial // assumed to be in right srs after FLTGetSpatialComparisonCommonExpression char *wkt = msShapeToWKT(n->tokenval.shpval); const char *col = OGR_L_GetGeometryColumn(info->hLayer); // which geom field?? - out = (char *)msSmallMalloc(strlen(wkt)+strlen(col)+35); - sprintf(out, "ST_GeomFromText('%s',ST_SRID(\"%s\"))", wkt, col); + nOutSize = strlen(wkt)+strlen(col)+35; + out = (char *)msSmallMalloc(nOutSize); + snprintf(out, nOutSize, "ST_GeomFromText('%s',ST_SRID(\"%s\"))", wkt, col); msFree(wkt); break; } case MS_TOKEN_LITERAL_BOOLEAN: - out = (char *)msSmallMalloc(10); - sprintf(out, n->tokenval.dblval == 0 ? "FALSE" : "TRUE"); + out = msStrdup(n->tokenval.dblval == 0 ? "FALSE" : "TRUE"); break; case MS_TOKEN_COMPARISON_EQ: - out = (char *)msSmallMalloc(10); - sprintf(out, " = "); + out = msStrdup(" = "); break; case MS_TOKEN_COMPARISON_NE: - out = (char *)msSmallMalloc(10); - sprintf(out, " != "); + out = msStrdup(" != "); break; case MS_TOKEN_COMPARISON_GT: - out = (char *)msSmallMalloc(10); - sprintf(out, " > "); + out = msStrdup(" > "); break; case MS_TOKEN_COMPARISON_LT: - out = (char *)msSmallMalloc(10); - sprintf(out, " < "); + out = msStrdup(" < "); break; case MS_TOKEN_COMPARISON_LE: - out = (char *)msSmallMalloc(10); - sprintf(out, " <= "); + out = msStrdup(" <= "); break; case MS_TOKEN_COMPARISON_GE: - out = (char *)msSmallMalloc(10); - sprintf(out, " >= "); + out = msStrdup(" >= "); break; case MS_TOKEN_COMPARISON_IEQ: - out = (char *)msSmallMalloc(10); - sprintf(out, " = "); + out = msStrdup(" = "); break; case MS_TOKEN_COMPARISON_IN: - out = (char *)msSmallMalloc(10); - sprintf(out, " IN "); + out = msStrdup(" IN "); break; // the origin may be mapfile (complex regexes, layer->map.query.filter.string == NULL, regex may have //) or // OGC Filter (simple patterns only, layer->map.query.filter.string != NULL) @@ -1511,98 +1505,92 @@ char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node, const char *dial re[j++] = '\''; re[j] = '\0'; - out = (char *)msSmallMalloc(strlen(n->tokenval.strval)+10); - sprintf(out, " %s %s", op, re); + nOutSize = 1 + strlen(op)+ 1 + strlen(re) + 1; + out = (char *)msSmallMalloc(nOutSize); + snprintf(out, nOutSize, " %s %s", op, re); msFree(re); msFree(regex); break; } case MS_TOKEN_COMPARISON_INTERSECTS: - out = (char *)msSmallMalloc(15); - sprintf(out, "ST_Intersects"); + out = msStrdup("ST_Intersects"); break; case MS_TOKEN_COMPARISON_DISJOINT: - out = (char *)msSmallMalloc(15); - sprintf(out, "ST_Disjoint"); + out = msStrdup("ST_Disjoint"); break; case MS_TOKEN_COMPARISON_TOUCHES: - out = (char *)msSmallMalloc(15); - sprintf(out, "ST_Touches"); + out = msStrdup("ST_Touches"); break; case MS_TOKEN_COMPARISON_OVERLAPS: - out = (char *)msSmallMalloc(15); - sprintf(out, "ST_Overlaps"); + out = msStrdup("ST_Overlaps"); break; case MS_TOKEN_COMPARISON_CROSSES: - out = (char *)msSmallMalloc(15); - sprintf(out, "ST_Crosses"); + out = msStrdup("ST_Crosses"); break; case MS_TOKEN_COMPARISON_WITHIN: - out = (char *)msSmallMalloc(15); - sprintf(out, "ST_Within"); + out = msStrdup("ST_Within"); break; case MS_TOKEN_COMPARISON_DWITHIN: - out = (char *)msSmallMalloc(15); - sprintf(out, "ST_Distance"); + out = msStrdup("ST_Distance"); break; case MS_TOKEN_COMPARISON_BEYOND: - out = (char *)msSmallMalloc(15); - sprintf(out, "ST_Distance"); + out = msStrdup("ST_Distance"); break; case MS_TOKEN_COMPARISON_CONTAINS: - out = (char *)msSmallMalloc(15); - sprintf(out, "ST_Contains"); + out = msStrdup("ST_Contains"); break; case MS_TOKEN_COMPARISON_EQUALS: - out = (char *)msSmallMalloc(15); - sprintf(out, "ST_Equals"); + out = msStrdup("ST_Equals"); break; case MS_TOKEN_FUNCTION_LENGTH: - out = (char *)msSmallMalloc(15); - sprintf(out, "ST_Length"); + out = msStrdup("ST_Length"); break; case MS_TOKEN_FUNCTION_AREA: - out = (char *)msSmallMalloc(15); - sprintf(out, "ST_Area"); + out = msStrdup("ST_Area"); break; case MS_TOKEN_BINDING_DOUBLE: { char *stresc = msLayerEscapePropertyName(layer, n->tokenval.bindval.item); - out = (char *)msSmallMalloc(strlen(stresc)+30); + nOutSize = strlen(stresc)+30; + out = (char *)msSmallMalloc(nOutSize); const char *type = "float(16)"; if (strcmp(dialect, "SQLite") == 0) type = "REAL"; else if (strcmp(dialect, "PostgreSQL") == 0) type = "double precision"; - sprintf(out, "CAST(\"%s\" AS %s)", stresc, type); + snprintf(out, nOutSize, "CAST(\"%s\" AS %s)", stresc, type); msFree(stresc); break; } case MS_TOKEN_BINDING_INTEGER: { char *stresc = msLayerEscapePropertyName(layer, n->tokenval.bindval.item); - out = (char *)msSmallMalloc(strlen(stresc)+20); - sprintf(out, "CAST(\"%s\" AS integer)", stresc); + nOutSize = strlen(stresc)+20; + out = (char *)msSmallMalloc(nOutSize); + snprintf(out, nOutSize, "CAST(\"%s\" AS integer)", stresc); msFree(stresc); break; } case MS_TOKEN_BINDING_STRING: { char *stresc = msLayerEscapePropertyName(layer, n->tokenval.bindval.item); - out = (char *)msSmallMalloc(strlen(stresc)+30); - sprintf(out, "CAST(\"%s\" AS text)", stresc); + nOutSize = strlen(stresc)+30; + out = (char *)msSmallMalloc(nOutSize); + snprintf(out, nOutSize, "CAST(\"%s\" AS text)", stresc); msFree(stresc); break; } case MS_TOKEN_BINDING_TIME: { // won't get here unless col is parsed as time and they are not char *stresc = msLayerEscapePropertyName(layer, n->tokenval.bindval.item); - out = (char *)msSmallMalloc(strlen(stresc)+20); - sprintf(out, "\"%s\"", stresc); + nOutSize = strlen(stresc)+10; + out = (char *)msSmallMalloc(nOutSize); + snprintf(out, nOutSize, "\"%s\"", stresc); msFree(stresc); break; } case MS_TOKEN_BINDING_SHAPE: { const char *col = OGR_L_GetGeometryColumn(info->hLayer); // which geom field?? - out = (char *)msSmallMalloc(strlen(col)+10); - sprintf(out, "\"%s\"", col); + nOutSize = strlen(col)+10; + out = (char *)msSmallMalloc(nOutSize); + snprintf(out, nOutSize, "\"%s\"", col); break; } @@ -1644,17 +1632,6 @@ char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node, const char *dial return out; } -bool msOGRIsComparisonToken(int token) { - return - token == MS_TOKEN_COMPARISON_EQ || - token == MS_TOKEN_COMPARISON_NE || - token == MS_TOKEN_COMPARISON_GT || - token == MS_TOKEN_COMPARISON_LT || - token == MS_TOKEN_COMPARISON_LE || - token == MS_TOKEN_COMPARISON_GE || - token == MS_TOKEN_COMPARISON_IEQ; -} - /********************************************************************** * msOGRTranslateMsExpressionToOGRSQL() * From 1f99a9f29fefebb7c0e5f39878061763506f94f1 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 31 May 2016 20:06:07 +0200 Subject: [PATCH 017/221] Follow-up of 3cf682d17003521213868f1e727d7be7a3263c7e: windows build fix --- mapogr.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mapogr.cpp b/mapogr.cpp index 222a559e03..c44f05d54d 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -1389,12 +1389,15 @@ char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node, const char *dial // seems to require METADATA gml_types => auto nOutSize = 80; out = (char *)msSmallMalloc(nOutSize); +#if 0 + // FIXME? or perhaps just remove me. tm_zone is not supported on Windows, and not used anywhere else in the code base if (n->tokenval.tmval.tm_zone) snprintf(out, nOutSize, "'%d-%02d-%02dT%02d:%02d:%02d%s'", n->tokenval.tmval.tm_year+1900, n->tokenval.tmval.tm_mon+1, n->tokenval.tmval.tm_mday, n->tokenval.tmval.tm_hour, n->tokenval.tmval.tm_min, n->tokenval.tmval.tm_sec, n->tokenval.tmval.tm_zone); else +#endif snprintf(out, nOutSize, "'%d-%02d-%02dT%02d:%02d:%02d'", n->tokenval.tmval.tm_year+1900, n->tokenval.tmval.tm_mon+1, n->tokenval.tmval.tm_mday, n->tokenval.tmval.tm_hour, n->tokenval.tmval.tm_min, n->tokenval.tmval.tm_sec); From ee3397f4104d441c11784b2a65eddf6b41f416a3 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 31 May 2016 21:08:34 +0200 Subject: [PATCH 018/221] Follow-up of 3cf682d17003521213868f1e727d7be7a3263c7e: fix memleak in Beyond case --- mapogr.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mapogr.cpp b/mapogr.cpp index c44f05d54d..bdc73cc218 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -1839,9 +1839,7 @@ static int msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, msFree(fct); msFree(a1); msFree(a2); - if (token == MS_TOKEN_COMPARISON_DWITHIN) { - msFree(a3); - } + msFree(a3); msFree(eq); msFree(rval); if (!ok) { From a534114825e7bcbfc5832be2e6880f15291cb9ef Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 31 May 2016 21:08:53 +0200 Subject: [PATCH 019/221] valgrind-suppressions.txt: add suppressions linked to libgdal --- msautotest/valgrind-suppressions.txt | 120 +++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) diff --git a/msautotest/valgrind-suppressions.txt b/msautotest/valgrind-suppressions.txt index f06dcb92ed..b51b18a966 100644 --- a/msautotest/valgrind-suppressions.txt +++ b/msautotest/valgrind-suppressions.txt @@ -93,3 +93,123 @@ fun:pixman_constructor ... } + +{ + + Memcheck:Free + fun:free + obj:/lib/libc-2.11.1.so + obj:/lib/libc-2.11.1.so + fun:_vgnU_freeres + fun:exit + fun:main +} + +{ + + Memcheck:Leak + ... + fun:H5P_init + ... +} + +{ + + Memcheck:Leak + ... + fun:H5D_init + ... +} + +{ + + Memcheck:Leak + ... + fun:H5E_init + ... +} + +{ + + Memcheck:Leak + ... + fun:H5T_init + ... +} + +{ + + Memcheck:Leak + ... + fun:H5L_init + ... +} + +{ + + Memcheck:Leak + fun:malloc + ... + fun:H5FL_reg_malloc + fun:H5E_get_stack + fun:H5E_clear_stack + fun:H5Tcopy + ... +} + +{ + + Memcheck:Leak + fun:calloc + fun:H5TS_cancel_count_inc + fun:H5open + ... +} + + +{ + + Memcheck:Leak + fun:malloc + fun:gmalloc + fun:copyString + fun:_ZN6Object8initNameEPKc + fun:_GLOBAL__I_StructElement.cc +} + +{ + + Memcheck:Leak + fun:malloc + ... + fun:_ZN5mongo3TSPINS_18OwnedPointerVectorISt19basic_ostringstreamIcSt11char_traitsIcESaIcEEEEED1Ev + fun:__cxa_finalize + ... +} + +{ + + Memcheck:Leak + fun:_Znwm + fun:_GLOBAL__I_message_port.cpp + ... +} + +{ + + Memcheck:Leak + ... + fun:_ZN4geos4geom15GeometryFactoryC1Ev + fun:_Z41__static_initialization_and_destruction_0ii + fun:_GLOBAL__I_GeometryFactory.cpp + ... +} + +{ + + Memcheck:Leak + fun:_Znwm + fun:_Z41__static_initialization_and_destruction_0ii + fun:_GLOBAL__I_GeometryFactory.cpp + ... +} From 3dc88f7bf2d05039b7f7b3fc5da0c1db838b39c2 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Fri, 10 Jun 2016 22:04:45 +0200 Subject: [PATCH 020/221] Add support to get raw image data in csharp (#5293) --- mapscript/csharp/CMakeLists.txt | 4 +- mapscript/csharp/Makefile.vc | 3 +- mapscript/csharp/csmodule.i | 26 ++++- mapscript/csharp/examples/drawmapGDIPlus.cs | 97 +++++++++++++++++ mapscript/csharp/examples/drawmapWPF.cs | 109 ++++++++++++++++++++ 5 files changed, 236 insertions(+), 3 deletions(-) create mode 100644 mapscript/csharp/examples/drawmapGDIPlus.cs create mode 100644 mapscript/csharp/examples/drawmapWPF.cs diff --git a/mapscript/csharp/CMakeLists.txt b/mapscript/csharp/CMakeLists.txt index 27a28b99e5..a6a721b633 100644 --- a/mapscript/csharp/CMakeLists.txt +++ b/mapscript/csharp/CMakeLists.txt @@ -50,7 +50,9 @@ ADD_CUSTOM_COMMAND(TARGET csharpmapscript COMMAND ${CSHARP_COMPILER} ${PLATFORM_TARGET} /r:mapscript_csharp.dll /out:HTMLtemplate.exe ${PROJECT_SOURCE_DIR}\\mapscript\\csharp\\examples\\HTMLtemplate.cs COMMAND ${CSHARP_COMPILER} ${PLATFORM_TARGET} /r:mapscript_csharp.dll /out:RFC24.exe ${PROJECT_SOURCE_DIR}\\mapscript\\csharp\\examples\\RFC24.cs COMMAND ${CSHARP_COMPILER} ${PLATFORM_TARGET} /r:mapscript_csharp.dll /r:System.Drawing.dll /out:drawmapDirect.exe ${PROJECT_SOURCE_DIR}\\mapscript\\csharp\\examples\\drawmapDirect.cs - COMMAND ${CSHARP_COMPILER} ${PLATFORM_TARGET} /r:mapscript_csharp.dll /r:System.Drawing.dll /out:drawmapDirectPrint.exe ${PROJECT_SOURCE_DIR}\\mapscript\\csharp\\examples\\drawmapDirectPrint.cs + COMMAND ${CSHARP_COMPILER} ${PLATFORM_TARGET} /r:mapscript_csharp.dll /r:System.Drawing.dll /out:drawmapDirectPrint.exe ${PROJECT_SOURCE_DIR}\\mapscript\\csharp\\examples\\drawmapDirectPrint.cs + COMMAND ${CSHARP_COMPILER} ${PLATFORM_TARGET} /r:mapscript_csharp.dll /r:System.Drawing.dll /out:drawmapGDIPlus.exe ${PROJECT_SOURCE_DIR}\\mapscript\\csharp\\examples\\drawmapGDIPlus.cs + #COMMAND ${CSHARP_COMPILER} ${PLATFORM_TARGET} /lib:C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF /r:mapscript_csharp.dll /r:System.Xaml.dll /r:WindowsBase.dll /r:PresentationCore.dll /out:drawmapWPF.exe ${PROJECT_SOURCE_DIR}\\mapscript\\csharp\\examples\\drawmapWPF.cs COMMENT "Compiling c# source files" ) diff --git a/mapscript/csharp/Makefile.vc b/mapscript/csharp/Makefile.vc index 9fdc747a5b..2297b8889c 100755 --- a/mapscript/csharp/Makefile.vc +++ b/mapscript/csharp/Makefile.vc @@ -95,7 +95,8 @@ $(CSHARP_DLL):: $(CSC) $(CSFLAGS) /r:mapscript_csharp.dll /out:HTMLtemplate.exe examples\HTMLtemplate.cs $(CSC) $(CSFLAGS) /r:mapscript_csharp.dll /out:RFC24.exe examples\RFC24.cs $(CSC) $(CSFLAGS) /r:mapscript_csharp.dll /r:System.Drawing.dll /out:drawmapDirect.exe examples\drawmapDirect.cs - $(CSC) $(CSFLAGS) /r:mapscript_csharp.dll /r:System.Drawing.dll /out:drawmapDirectPrint.exe examples\drawmapDirectPrint.cs + $(CSC) $(CSFLAGS) /r:mapscript_csharp.dll /r:System.Drawing.dll /out:drawmapDirectPrint.exe examples\drawmapDirectPrint.cs + $(CSC) $(CSFLAGS) /r:mapscript_csharp.dll /r:System.Drawing.dll /out:drawmapGDIPlus.exe examples\drawmapGDIPlus.cs test: !IFDEF MONO diff --git a/mapscript/csharp/csmodule.i b/mapscript/csharp/csmodule.i index 3bf2650e9c..f680d2ef26 100644 --- a/mapscript/csharp/csmodule.i +++ b/mapscript/csharp/csmodule.i @@ -241,6 +241,11 @@ static SWIG_CSharpByteArrayHelperCallback SWIG_csharp_bytearray_callback = NULL; %typemap(in) SWIG_CSharpByteArrayHelperCallback %{ $1 = ($1_ltype)$input; %} %typemap(csin) SWIG_CSharpByteArrayHelperCallback "$csinput" +%typemap(imtype) (unsigned char* pixels) "IntPtr" +%typemap(cstype) (unsigned char* pixels) "IntPtr" +%typemap(in) (unsigned char* pixels) %{ $1 = ($1_ltype)$input; %} +%typemap(csin) (unsigned char* pixels) "$csinput" + %csmethodmodifiers getBytes "private"; %ignore imageObj::getBytes(); %extend imageObj @@ -259,7 +264,26 @@ static SWIG_CSharpByteArrayHelperCallback SWIG_csharp_bytearray_callback = NULL; } callback(buffer.data, buffer.size); msFree(buffer.data); - } + } + + int getRawPixels(unsigned char* pixels) { + if (MS_RENDERER_PLUGIN(self->format)) { + rendererVTableObj *renderer = self->format->vtable; + if(renderer->supports_pixel_buffer) { + rasterBufferObj rb; + int status = MS_SUCCESS; + int size = self->width * self->height * 4 * sizeof(unsigned char); + + status = renderer->getRasterBufferHandle(self,&rb); + if(UNLIKELY(status == MS_FAILURE)) { + return MS_FAILURE; + } + memcpy(pixels, rb.data.rgba.pixels, size); + return status; + } + } + return MS_FAILURE; + } } %ignore imageObj::write; diff --git a/mapscript/csharp/examples/drawmapGDIPlus.cs b/mapscript/csharp/examples/drawmapGDIPlus.cs new file mode 100644 index 0000000000..c08ccd2b1a --- /dev/null +++ b/mapscript/csharp/examples/drawmapGDIPlus.cs @@ -0,0 +1,97 @@ +/****************************************************************************** + * $Id$ + * + * Project: MapServer + * Purpose: A C# based mapscript example to draw the map directly onto a GDI+ bitmap. + * Author: Tamas Szekeres, szekerest@gmail.com + * + ****************************************************************************** + * Copyright (c) 1996-2008 Regents of the University of Minnesota. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies of this Software or works derived from this Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + *****************************************************************************/ + +using System; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Imaging; +using OSGeo.MapServer; + +/// +/// A C# based mapscript example to draw the map directly onto a GDI+ bitmap. +/// +class DrawMap +{ + public static void usage() + { + Console.WriteLine("usage: DrawMapGDIPlus {mapfile} {outfile}"); + System.Environment.Exit(-1); + } + + public static void Main(string[] args) + { + Console.WriteLine(""); + if (args.Length < 2) usage(); + + mapObj map = new mapObj(args[0]); + + Console.WriteLine("# Map layers " + map.numlayers + "; Map name = " + map.name); + for (int i = 0; i < map.numlayers; i++) + { + Console.WriteLine("Layer [" + i + "] name: " + map.getLayer(i).name); + } + + try + { + Bitmap mapImage = new Bitmap(map.width, map.height, PixelFormat.Format32bppRgb); + Stopwatch stopwatch = new Stopwatch(); + stopwatch.Start(); + using (imageObj image = map.draw()) + { + BitmapData bitmapData = mapImage.LockBits(new Rectangle(0, 0, image.width, image.height), ImageLockMode.ReadWrite, PixelFormat.Format32bppRgb); + try + { + if (image.getRawPixels(bitmapData.Scan0) == (int)MS_RETURN_VALUE.MS_FAILURE) + { + Console.WriteLine("Unable to get image contents"); + } + } + finally + { + mapImage.UnlockBits(bitmapData); + } + + Console.WriteLine("Rendering time: " + stopwatch.ElapsedMilliseconds + "ms"); + + mapImage.Save(args[1]); + } + } + catch (Exception ex) + { + Console.WriteLine( "\nMessage ---\n{0}", ex.Message ); + Console.WriteLine( + "\nHelpLink ---\n{0}", ex.HelpLink ); + Console.WriteLine( "\nSource ---\n{0}", ex.Source ); + Console.WriteLine( + "\nStackTrace ---\n{0}", ex.StackTrace ); + Console.WriteLine( + "\nTargetSite ---\n{0}", ex.TargetSite ); } + } +} + diff --git a/mapscript/csharp/examples/drawmapWPF.cs b/mapscript/csharp/examples/drawmapWPF.cs new file mode 100644 index 0000000000..2e6e833615 --- /dev/null +++ b/mapscript/csharp/examples/drawmapWPF.cs @@ -0,0 +1,109 @@ +/****************************************************************************** + * $Id$ + * + * Project: MapServer + * Purpose: A C# based mapscript example to draw the map directly onto a WPF image. + * Author: Tamas Szekeres, szekerest@gmail.com + * + ****************************************************************************** + * Copyright (c) 1996-2008 Regents of the University of Minnesota. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies of this Software or works derived from this Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + *****************************************************************************/ + +using System; +using System.IO; +using System.Diagnostics; +using System.Windows; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using OSGeo.MapServer; + +/// +/// A C# based mapscript example to draw the map directly onto a WPF image. +/// +class DrawMap +{ + public static void usage() + { + Console.WriteLine("usage: DrawMapWPF {mapfile} {outfile}"); + System.Environment.Exit(-1); + } + + public static void Main(string[] args) + { + Console.WriteLine(""); + if (args.Length < 2) usage(); + + mapObj map = new mapObj(args[0]); + + Console.WriteLine("# Map layers " + map.numlayers + "; Map name = " + map.name); + for (int i = 0; i < map.numlayers; i++) + { + Console.WriteLine("Layer [" + i + "] name: " + map.getLayer(i).name); + } + + try + { + WriteableBitmap mapImage = new WriteableBitmap(map.width, map.height, 96, 96, PixelFormats.Bgr32, null); + Stopwatch stopwatch = new Stopwatch(); + stopwatch.Start(); + using (imageObj image = map.draw()) + { + // Reserve the back buffer for updates. + mapImage.Lock(); + try + { + if (image.getRawPixels(mapImage.BackBuffer) == (int)MS_RETURN_VALUE.MS_FAILURE) + { + Console.WriteLine("Unable to get image contents"); + } + // Specify the area of the bitmap that changed. + mapImage.AddDirtyRect(new Int32Rect(0, 0, map.width, map.height)); + } + finally + { + // Release the back buffer and make it available for display. + mapImage.Unlock(); + } + + Console.WriteLine("Rendering time: " + stopwatch.ElapsedMilliseconds + "ms"); + + // Save the bitmap into a file. + using (FileStream stream = new FileStream(args[1], FileMode.Create)) + { + PngBitmapEncoder encoder = new PngBitmapEncoder(); + encoder.Frames.Add(BitmapFrame.Create(mapImage)); + encoder.Save(stream); + } + } + } + catch (Exception ex) + { + Console.WriteLine( "\nMessage ---\n{0}", ex.Message ); + Console.WriteLine( + "\nHelpLink ---\n{0}", ex.HelpLink ); + Console.WriteLine( "\nSource ---\n{0}", ex.Source ); + Console.WriteLine( + "\nStackTrace ---\n{0}", ex.StackTrace ); + Console.WriteLine( + "\nTargetSite ---\n{0}", ex.TargetSite ); } + } +} + From a56815ba2e77734a62d2099cd34ba7d4dd5a2db8 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Sat, 11 Jun 2016 15:12:51 +0200 Subject: [PATCH 021/221] Fix compilation error with OGR support disabled --- mapogr.cpp | 488 +++++++++++++++++++++++++++-------------------------- 1 file changed, 250 insertions(+), 238 deletions(-) diff --git a/mapogr.cpp b/mapogr.cpp index bdc73cc218..6648b215e9 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -1635,244 +1635,6 @@ char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node, const char *dial return out; } -/********************************************************************** - * msOGRTranslateMsExpressionToOGRSQL() - * - * Tries to translate a mapserver expression to OGR or driver native SQL - **********************************************************************/ -static int msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, - expressionObj* psFilter, - char *filteritem) -{ - char *result = NULL; - - msOGRFileInfo *info = (msOGRFileInfo *)layer->layerinfo; - - // reasons to not produce native string: not simple layer, or an explicit deny - char *do_this = msLayerGetProcessingKey(layer, "NATIVE_SQL"); // default is YES - if ((info->nLayerIndex == -1) || (do_this && strcmp(do_this, "NO") == 0)) { - return MS_SUCCESS; - } - - // GDAL 1.x API - OGRSFDriverH dr = OGR_DS_GetDriver(info->hDS); - const char *name = OGR_Dr_GetName(dr); - const char *dialect = NULL; - if (strcmp(name, "SQLite") == 0) { - bool have_spatialite = false; - - CPLPushErrorHandler(CPLQuietErrorHandler); - - // test for Spatialite support in driver - const char *test_spatialite = "SELECT spatialite_version()"; - OGRLayerH l = OGR_DS_ExecuteSQL(info->hDS, test_spatialite, NULL, NULL); - if (l) { - OGR_DS_ReleaseResultSet(info->hDS, l); - have_spatialite = true; - } - - // test for Spatialite enabled db - if (have_spatialite) { - have_spatialite = false; - const char *test_sql = "select 1 from sqlite_master where name = 'geometry_columns' and sql LIKE '%spatial_index_enabled%'"; - OGRLayerH l = OGR_DS_ExecuteSQL(info->hDS, test_sql, NULL, NULL); - if (l) { - if (OGR_L_GetFeatureCount(l, TRUE) == 1) - have_spatialite = true; - OGR_DS_ReleaseResultSet(info->hDS, l); - } - } - - CPLPopErrorHandler(); - - if (have_spatialite) - dialect = "SQLite"; - else - msDebug("msOGRTranslateMsExpressionToOGRSQL: Native SQL not available, no Spatialite support and/or not a Spatialite enabled db\n"); - } else if (strcmp(name, "PostgreSQL") == 0) { - dialect = "PostgreSQL"; - // todo: PostgreSQL not yet tested - - } // todo: other dialects, for example OGR SQL - - // more reasons to not produce native string: not a recognized driver - if (!dialect) { - return MS_SUCCESS; - } - - char *sql = NULL; - - tokenListNodeObjPtr node = psFilter->tokens; - // node may be NULL if layer->filter.string != NULL and layer->filteritem != NULL - // this is simple filter but string is regex - if (node == NULL && layer->filteritem != NULL && layer->filter.string != NULL) { - sql = msStringConcatenate(sql, "\""); - sql = msStringConcatenate(sql, layer->filteritem); - sql = msStringConcatenate(sql, "\""); - if (strcmp(dialect, "PostgreSQL") == 0) { - sql = msStringConcatenate(sql, " ~ "); - } else { - sql = msStringConcatenate(sql, " LIKE "); - } - sql = msStringConcatenate(sql, "'"); - sql = msStringConcatenate(sql, layer->filter.string); - sql = msStringConcatenate(sql, "'"); - } - // test if there is a "top" level intersects (see FLTValidForBBoxFilter) for a bounding box - if (node != NULL) { - int is_top_level_and = 0; - int has_bounding_box = 0; - tokenListNodeObjPtr bounding_box_node = NULL; - tokenListNodeObjPtr x = psFilter->tokens; - int d = 0; - while (x != NULL) { - if (x->token == '(') d++; - if (x->token == ')') d--; - if (x->token == MS_TOKEN_COMPARISON_INTERSECTS && d == 0) { - has_bounding_box = 1; - bounding_box_node = x; - } - if (d == 1) { - if (x->token == MS_TOKEN_COMPARISON_INTERSECTS) - bounding_box_node = x; - else if (x->token == MS_TOKEN_LOGICAL_AND) - is_top_level_and = 1; - } - if (is_top_level_and && bounding_box_node) - has_bounding_box = 1; - x = x->next; - } - if (has_bounding_box) { - x = bounding_box_node; - x = x->next; // skip fct - x = x->next; // skip ( - x = x->next; // skip field name - x = x->next; // skip , - char *a = msOGRGetToken(layer, &x, dialect); - // skip "ST_GeomFromText(' from a - char *wkt = a+17; - OGRGeometryH hSpatialFilter; - OGRErr e = OGR_G_CreateFromWkt(&wkt, NULL, &hSpatialFilter); - msFree(a); - if (e == OGRERR_NONE) { - OGREnvelope env; - OGR_G_GetEnvelope(hSpatialFilter, &env); - info->rect.minx = env.MinX; - info->rect.miny = env.MinY; - info->rect.maxx = env.MaxX; - info->rect.maxy = env.MaxY; - info->rect_is_defined = true; - OGR_G_DestroyGeometry(hSpatialFilter); - } - } - } - while (node != NULL) { - - if (node->next && node->next->token == MS_TOKEN_COMPARISON_IEQ) { - char *left = msOGRGetToken(layer, &node, dialect); - node = node->next; // skip = - char *right = msOGRGetToken(layer, &node, dialect); - sql = msStringConcatenate(sql, "upper("); - sql = msStringConcatenate(sql, left); - sql = msStringConcatenate(sql, ")"); - sql = msStringConcatenate(sql, "="); - sql = msStringConcatenate(sql, "upper("); - sql = msStringConcatenate(sql, right); - sql = msStringConcatenate(sql, ")"); - int ok = left && right; - msFree(left); - msFree(right); - if (!ok) { - goto fail; - } - continue; - } - - switch(node->token) { - case MS_TOKEN_COMPARISON_INTERSECTS: - case MS_TOKEN_COMPARISON_DISJOINT: - case MS_TOKEN_COMPARISON_TOUCHES: - case MS_TOKEN_COMPARISON_OVERLAPS: - case MS_TOKEN_COMPARISON_CROSSES: - case MS_TOKEN_COMPARISON_DWITHIN: - case MS_TOKEN_COMPARISON_BEYOND: - case MS_TOKEN_COMPARISON_WITHIN: - case MS_TOKEN_COMPARISON_CONTAINS: - case MS_TOKEN_COMPARISON_EQUALS:{ - int token = node->token; - char *fct = msOGRGetToken(layer, &node, dialect); - node = node->next; // skip ( - char *a1 = msOGRGetToken(layer, &node, dialect); - node = node->next; // skip , - char *a2 = msOGRGetToken(layer, &node, dialect); - char *a3 = NULL; - if (token == MS_TOKEN_COMPARISON_DWITHIN || token == MS_TOKEN_COMPARISON_BEYOND) { - node = node->next; // skip , - a3 = msOGRGetToken(layer, &node, dialect); - } - node = node->next; // skip ) - char *eq = msOGRGetToken(layer, &node, dialect); - char *rval = msOGRGetToken(layer, &node, dialect); - if (strcmp(eq, " != ") == 0 || strcmp(rval, "FALSE") == 0) { - sql = msStringConcatenate(sql, "NOT "); - } - // FIXME: case rval is more complex - sql = msStringConcatenate(sql, fct); - sql = msStringConcatenate(sql, "("); - sql = msStringConcatenate(sql, a1); - sql = msStringConcatenate(sql, ","); - sql = msStringConcatenate(sql, a2); - if (token == MS_TOKEN_COMPARISON_DWITHIN || token == MS_TOKEN_COMPARISON_BEYOND) { - sql = msStringConcatenate(sql, ")"); - if (token == MS_TOKEN_COMPARISON_DWITHIN) - sql = msStringConcatenate(sql, "<="); - else - sql = msStringConcatenate(sql, ">"); - sql = msStringConcatenate(sql, a3); - } else { - sql = msStringConcatenate(sql, ")"); - } - int ok = fct && a1 && a2 && eq && rval; - if (token == MS_TOKEN_COMPARISON_DWITHIN) { - ok = ok && a3; - } - msFree(fct); - msFree(a1); - msFree(a2); - msFree(a3); - msFree(eq); - msFree(rval); - if (!ok) { - goto fail; - } - break; - } - default: { - char *token = msOGRGetToken(layer, &node, dialect); - if (!token) { - goto fail; - } - sql = msStringConcatenate(sql, token); - msFree(token); - } - } - } - - // compose the result, it is parsed in msOGRFileWhichShapes - result = msStringConcatenate(result, "dialect="); - result = msStringConcatenate(result, dialect); - result = msStringConcatenate(result, ";sql="); - result = msStringConcatenate(result, sql); - msFree(sql); - - layer->filter.native_string = result; - return MS_SUCCESS; -fail: - // error producing native string - fprintf(stderr, "Note: Error parsing token list, could produce only: %s\n", sql); - msFree(sql); - return MS_FAILURE; -} /********************************************************************** * msOGRFileWhichShapes() @@ -2615,6 +2377,256 @@ int msOGRFileReadTile( layerObj *layer, msOGRFileInfo *psInfo, * Here comes the REAL stuff... the functions below are called by maplayer.c * ================================================================== */ +/********************************************************************** + * msOGRTranslateMsExpressionToOGRSQL() + * + * Tries to translate a mapserver expression to OGR or driver native SQL + **********************************************************************/ +static int msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, + expressionObj* psFilter, + char *filteritem) +{ +#ifdef USE_OGR + char *result = NULL; + + msOGRFileInfo *info = (msOGRFileInfo *)layer->layerinfo; + + // reasons to not produce native string: not simple layer, or an explicit deny + char *do_this = msLayerGetProcessingKey(layer, "NATIVE_SQL"); // default is YES + if ((info->nLayerIndex == -1) || (do_this && strcmp(do_this, "NO") == 0)) { + return MS_SUCCESS; + } + + // GDAL 1.x API + OGRSFDriverH dr = OGR_DS_GetDriver(info->hDS); + const char *name = OGR_Dr_GetName(dr); + const char *dialect = NULL; + if (strcmp(name, "SQLite") == 0) { + bool have_spatialite = false; + + CPLPushErrorHandler(CPLQuietErrorHandler); + + // test for Spatialite support in driver + const char *test_spatialite = "SELECT spatialite_version()"; + OGRLayerH l = OGR_DS_ExecuteSQL(info->hDS, test_spatialite, NULL, NULL); + if (l) { + OGR_DS_ReleaseResultSet(info->hDS, l); + have_spatialite = true; + } + + // test for Spatialite enabled db + if (have_spatialite) { + have_spatialite = false; + const char *test_sql = "select 1 from sqlite_master where name = 'geometry_columns' and sql LIKE '%spatial_index_enabled%'"; + OGRLayerH l = OGR_DS_ExecuteSQL(info->hDS, test_sql, NULL, NULL); + if (l) { + if (OGR_L_GetFeatureCount(l, TRUE) == 1) + have_spatialite = true; + OGR_DS_ReleaseResultSet(info->hDS, l); + } + } + + CPLPopErrorHandler(); + + if (have_spatialite) + dialect = "SQLite"; + else + msDebug("msOGRTranslateMsExpressionToOGRSQL: Native SQL not available, no Spatialite support and/or not a Spatialite enabled db\n"); + } else if (strcmp(name, "PostgreSQL") == 0) { + dialect = "PostgreSQL"; + // todo: PostgreSQL not yet tested + + } // todo: other dialects, for example OGR SQL + + // more reasons to not produce native string: not a recognized driver + if (!dialect) { + return MS_SUCCESS; + } + + char *sql = NULL; + + tokenListNodeObjPtr node = psFilter->tokens; + // node may be NULL if layer->filter.string != NULL and layer->filteritem != NULL + // this is simple filter but string is regex + if (node == NULL && layer->filteritem != NULL && layer->filter.string != NULL) { + sql = msStringConcatenate(sql, "\""); + sql = msStringConcatenate(sql, layer->filteritem); + sql = msStringConcatenate(sql, "\""); + if (strcmp(dialect, "PostgreSQL") == 0) { + sql = msStringConcatenate(sql, " ~ "); + } else { + sql = msStringConcatenate(sql, " LIKE "); + } + sql = msStringConcatenate(sql, "'"); + sql = msStringConcatenate(sql, layer->filter.string); + sql = msStringConcatenate(sql, "'"); + } + // test if there is a "top" level intersects (see FLTValidForBBoxFilter) for a bounding box + if (node != NULL) { + int is_top_level_and = 0; + int has_bounding_box = 0; + tokenListNodeObjPtr bounding_box_node = NULL; + tokenListNodeObjPtr x = psFilter->tokens; + int d = 0; + while (x != NULL) { + if (x->token == '(') d++; + if (x->token == ')') d--; + if (x->token == MS_TOKEN_COMPARISON_INTERSECTS && d == 0) { + has_bounding_box = 1; + bounding_box_node = x; + } + if (d == 1) { + if (x->token == MS_TOKEN_COMPARISON_INTERSECTS) + bounding_box_node = x; + else if (x->token == MS_TOKEN_LOGICAL_AND) + is_top_level_and = 1; + } + if (is_top_level_and && bounding_box_node) + has_bounding_box = 1; + x = x->next; + } + if (has_bounding_box) { + x = bounding_box_node; + x = x->next; // skip fct + x = x->next; // skip ( + x = x->next; // skip field name + x = x->next; // skip , + char *a = msOGRGetToken(layer, &x, dialect); + // skip "ST_GeomFromText(' from a + char *wkt = a+17; + OGRGeometryH hSpatialFilter; + OGRErr e = OGR_G_CreateFromWkt(&wkt, NULL, &hSpatialFilter); + msFree(a); + if (e == OGRERR_NONE) { + OGREnvelope env; + OGR_G_GetEnvelope(hSpatialFilter, &env); + info->rect.minx = env.MinX; + info->rect.miny = env.MinY; + info->rect.maxx = env.MaxX; + info->rect.maxy = env.MaxY; + info->rect_is_defined = true; + OGR_G_DestroyGeometry(hSpatialFilter); + } + } + } + while (node != NULL) { + + if (node->next && node->next->token == MS_TOKEN_COMPARISON_IEQ) { + char *left = msOGRGetToken(layer, &node, dialect); + node = node->next; // skip = + char *right = msOGRGetToken(layer, &node, dialect); + sql = msStringConcatenate(sql, "upper("); + sql = msStringConcatenate(sql, left); + sql = msStringConcatenate(sql, ")"); + sql = msStringConcatenate(sql, "="); + sql = msStringConcatenate(sql, "upper("); + sql = msStringConcatenate(sql, right); + sql = msStringConcatenate(sql, ")"); + int ok = left && right; + msFree(left); + msFree(right); + if (!ok) { + goto fail; + } + continue; + } + + switch(node->token) { + case MS_TOKEN_COMPARISON_INTERSECTS: + case MS_TOKEN_COMPARISON_DISJOINT: + case MS_TOKEN_COMPARISON_TOUCHES: + case MS_TOKEN_COMPARISON_OVERLAPS: + case MS_TOKEN_COMPARISON_CROSSES: + case MS_TOKEN_COMPARISON_DWITHIN: + case MS_TOKEN_COMPARISON_BEYOND: + case MS_TOKEN_COMPARISON_WITHIN: + case MS_TOKEN_COMPARISON_CONTAINS: + case MS_TOKEN_COMPARISON_EQUALS:{ + int token = node->token; + char *fct = msOGRGetToken(layer, &node, dialect); + node = node->next; // skip ( + char *a1 = msOGRGetToken(layer, &node, dialect); + node = node->next; // skip , + char *a2 = msOGRGetToken(layer, &node, dialect); + char *a3 = NULL; + if (token == MS_TOKEN_COMPARISON_DWITHIN || token == MS_TOKEN_COMPARISON_BEYOND) { + node = node->next; // skip , + a3 = msOGRGetToken(layer, &node, dialect); + } + node = node->next; // skip ) + char *eq = msOGRGetToken(layer, &node, dialect); + char *rval = msOGRGetToken(layer, &node, dialect); + if (strcmp(eq, " != ") == 0 || strcmp(rval, "FALSE") == 0) { + sql = msStringConcatenate(sql, "NOT "); + } + // FIXME: case rval is more complex + sql = msStringConcatenate(sql, fct); + sql = msStringConcatenate(sql, "("); + sql = msStringConcatenate(sql, a1); + sql = msStringConcatenate(sql, ","); + sql = msStringConcatenate(sql, a2); + if (token == MS_TOKEN_COMPARISON_DWITHIN || token == MS_TOKEN_COMPARISON_BEYOND) { + sql = msStringConcatenate(sql, ")"); + if (token == MS_TOKEN_COMPARISON_DWITHIN) + sql = msStringConcatenate(sql, "<="); + else + sql = msStringConcatenate(sql, ">"); + sql = msStringConcatenate(sql, a3); + } else { + sql = msStringConcatenate(sql, ")"); + } + int ok = fct && a1 && a2 && eq && rval; + if (token == MS_TOKEN_COMPARISON_DWITHIN) { + ok = ok && a3; + } + msFree(fct); + msFree(a1); + msFree(a2); + msFree(a3); + msFree(eq); + msFree(rval); + if (!ok) { + goto fail; + } + break; + } + default: { + char *token = msOGRGetToken(layer, &node, dialect); + if (!token) { + goto fail; + } + sql = msStringConcatenate(sql, token); + msFree(token); + } + } + } + + // compose the result, it is parsed in msOGRFileWhichShapes + result = msStringConcatenate(result, "dialect="); + result = msStringConcatenate(result, dialect); + result = msStringConcatenate(result, ";sql="); + result = msStringConcatenate(result, sql); + msFree(sql); + + layer->filter.native_string = result; + return MS_SUCCESS; +fail: + // error producing native string + fprintf(stderr, "Note: Error parsing token list, could produce only: %s\n", sql); + msFree(sql); + return MS_FAILURE; +#else + /* ------------------------------------------------------------------ + * OGR Support not included... + * ------------------------------------------------------------------ */ + + msSetError(MS_MISCERR, "OGR support is not available.", + "msOGRTranslateMsExpressionToOGRSQL()"); + return(MS_FAILURE); + +#endif /* USE_OGR */ +} + /********************************************************************** * msOGRLayerOpen() * From 6c90a32aa9f3711831596f0a2f9a528a54db26bb Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 15 Jun 2016 10:38:20 +0200 Subject: [PATCH 022/221] msClusterLayerEscapeSQLParam(): fix compilation warnings (follow-up of cc03ceec064a0b2fb07e1f68f5b189dcdb2d67d3, #5205) --- mapcluster.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mapcluster.c b/mapcluster.c index 1871b899d5..39d6a5dee7 100644 --- a/mapcluster.c +++ b/mapcluster.c @@ -1509,13 +1509,13 @@ int msClusterLayerTranslateFilter(layerObj *layer, expressionObj *filter, char * return layerinfo->srcLayer.vtable->LayerTranslateFilter(&layerinfo->srcLayer, filter, filteritem); } -int msClusterLayerEscapeSQLParam(layerObj *layer, const char* pszString) +char* msClusterLayerEscapeSQLParam(layerObj *layer, const char* pszString) { msClusterLayerInfo* layerinfo = layer->layerinfo; if (!layerinfo) { msSetError(MS_MISCERR, "Layer is not open: %s", "msClusterLayerEscapeSQLParam()", layer->name); - return MS_FAILURE; + return msStrdup(""); } return layerinfo->srcLayer.vtable->LayerEscapeSQLParam(&layerinfo->srcLayer, pszString); From 9f1ef9510c1b2e38f60c1fab4d7fa8cfca38a554 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 22 Jun 2016 17:01:41 +0200 Subject: [PATCH 023/221] [Filter] Fix slow filter BBOX evaluation with tileindex of shapefile (#5291) On a layer that is a tileindex of shapefiles, a BBOX as WFS XML filter used the slow path of common expression evaluation, which caused all shapefiles to be opened, instead of just the ones intersecting the BBOX. This commit tries to fetch a "top BBOX" filter and use it as the rect passed to msLayerWhichShapes(). --- mapogcfilter.c | 103 +++++++++++++++--- mapogcfilter.h | 1 + mapogcfiltercommon.c | 29 +++-- msautotest/wxs/data/point_2_49.dbf | Bin 0 -> 258 bytes msautotest/wxs/data/point_2_49.shp | Bin 0 -> 128 bytes msautotest/wxs/data/point_2_49.shx | Bin 0 -> 108 bytes msautotest/wxs/data/point_3_50.dbf | Bin 0 -> 258 bytes msautotest/wxs/data/point_3_50.shp | Bin 0 -> 128 bytes msautotest/wxs/data/point_3_50.shx | Bin 0 -> 108 bytes msautotest/wxs/data/shp_tileindex_of_shp.dbf | Bin 0 -> 467 bytes msautotest/wxs/data/shp_tileindex_of_shp.shp | Bin 0 -> 372 bytes msautotest/wxs/data/shp_tileindex_of_shp.shx | Bin 0 -> 116 bytes .../wfs_shp_tileindex_of_shp_bbox_filter.xml | 33 ++++++ msautotest/wxs/wfs_200_allgeoms.map | 2 +- msautotest/wxs/wfs_shp_tileindex_of_shp.map | 86 +++++++++++++++ 15 files changed, 229 insertions(+), 25 deletions(-) create mode 100644 msautotest/wxs/data/point_2_49.dbf create mode 100644 msautotest/wxs/data/point_2_49.shp create mode 100644 msautotest/wxs/data/point_2_49.shx create mode 100644 msautotest/wxs/data/point_3_50.dbf create mode 100644 msautotest/wxs/data/point_3_50.shp create mode 100644 msautotest/wxs/data/point_3_50.shx create mode 100644 msautotest/wxs/data/shp_tileindex_of_shp.dbf create mode 100644 msautotest/wxs/data/shp_tileindex_of_shp.shp create mode 100644 msautotest/wxs/data/shp_tileindex_of_shp.shx create mode 100644 msautotest/wxs/expected/wfs_shp_tileindex_of_shp_bbox_filter.xml create mode 100644 msautotest/wxs/wfs_shp_tileindex_of_shp.map diff --git a/mapogcfilter.c b/mapogcfilter.c index 05f017a34d..8b19a64304 100644 --- a/mapogcfilter.c +++ b/mapogcfilter.c @@ -42,7 +42,9 @@ #include "mapows.h" #include +#if 0 static int FLTHasUniqueTopLevelDuringFilter(FilterEncodingNode *psFilterNode); +#endif int FLTIsNumeric(const char *pszValue) { @@ -569,8 +571,6 @@ int FLTApplySimpleSQLFilter(FilterEncodingNode *psNode, mapObj *map, int iLayerI /************************************************************************/ int FLTIsSimpleFilter(FilterEncodingNode *psNode) { - return MS_FALSE; - if (FLTValidForBBoxFilter(psNode)) { if (FLTNumberOfFilterType(psNode, "DWithin") == 0 && FLTNumberOfFilterType(psNode, "Intersect") == 0 && @@ -614,17 +614,43 @@ int FLTApplyFilterToLayer(FilterEncodingNode *psNode, mapObj *map, int iLayerInd /************************************************************************/ int FLTLayerApplyCondSQLFilterToLayer(FilterEncodingNode *psNode, mapObj *map, int iLayerIndex) { - /* ==================================================================== */ - /* Check here to see if it is a simple filter and if that is */ - /* the case, we are going to use the FILTER element on */ - /* the layer. */ - /* ==================================================================== */ - layerObj* lp = GET_LAYER(map, iLayerIndex); - if (FLTIsSimpleFilter(psNode) && !(lp->connectiontype == MS_OGR && !FLTHasUniqueTopLevelDuringFilter(psNode)) ) { - return FLTApplySimpleSQLFilter(psNode, map, iLayerIndex); + return FLTLayerApplyPlainFilterToLayer(psNode, map, iLayerIndex); +} + + +/************************************************************************/ +/* FLTGetTopBBOX */ +/* */ +/* Return the "top" BBOX if there's a unique one. */ +/************************************************************************/ +static int FLTGetTopBBOXInternal(FilterEncodingNode *psNode, FilterEncodingNode** ppsTopBBOX, int *pnCount) +{ + if (psNode->pszValue && strcasecmp(psNode->pszValue, "BBOX") == 0) { + (*pnCount) ++; + if( *pnCount == 1 ) + { + *ppsTopBBOX = psNode; + return TRUE; + } + *ppsTopBBOX = NULL; + return FALSE; } + else if (psNode->pszValue && strcasecmp(psNode->pszValue, "AND") == 0) { + return FLTGetTopBBOXInternal(psNode->psLeftNode, ppsTopBBOX, pnCount) && + FLTGetTopBBOXInternal(psNode->psRightNode, ppsTopBBOX, pnCount); + } + else + { + return TRUE; + } +} - return FLTLayerApplyPlainFilterToLayer(psNode, map, iLayerIndex); +static FilterEncodingNode* FLTGetTopBBOX(FilterEncodingNode *psNode) +{ + int nCount = 0; + FilterEncodingNode* psTopBBOX = NULL; + FLTGetTopBBOXInternal(psNode, &psTopBBOX, &nCount); + return psTopBBOX; } /************************************************************************/ @@ -637,12 +663,56 @@ int FLTLayerApplyPlainFilterToLayer(FilterEncodingNode *psNode, mapObj *map, { char *pszExpression =NULL; int status =MS_FALSE; + layerObj* lp = GET_LAYER(map, iLayerIndex); - pszExpression = FLTGetCommonExpression(psNode, GET_LAYER(map, iLayerIndex)); - if(map->debug == MS_DEBUGLEVEL_VVV) - msDebug("FLTLayerApplyPlainFilterToLayer(): %s\n", pszExpression); + pszExpression = FLTGetCommonExpression(psNode, lp); if (pszExpression) { - status = FLTApplyFilterToLayerCommonExpression(map, iLayerIndex, pszExpression); + FilterEncodingNode* psTopBBOX; + rectObj rect = map->extent; + + psTopBBOX = FLTGetTopBBOX(psNode); + if( psTopBBOX ) + { + int can_remove_expression = MS_TRUE; + const char* pszEPSG = FLTGetBBOX(psNode, &rect); + if(pszEPSG && map->projection.numargs > 0) { + projectionObj sProjTmp; + msInitProjection(&sProjTmp); + /* Use the non EPSG variant since axis swapping is done in FLTDoAxisSwappingIfNecessary */ + if (msLoadProjectionString(&sProjTmp, pszEPSG) == 0) { + rectObj oldRect = rect; + msProjectRect(&sProjTmp, &map->projection, &rect); + /* If reprojection is involved, do not remove the expression */ + if( rect.minx != oldRect.minx || + rect.miny != oldRect.miny || + rect.maxx != oldRect.maxx || + rect.maxy != oldRect.maxy ) + { + can_remove_expression = MS_FALSE; + } + } + msFreeProjection(&sProjTmp); + } + + /* Small optimization: if the query is just a BBOX, then do a */ + /* msQueryByRect() */ + if( psTopBBOX == psNode && can_remove_expression ) + { + msFree(pszExpression); + pszExpression = NULL; + } + } + + if(map->debug == MS_DEBUGLEVEL_VVV) + { + if( pszExpression ) + msDebug("FLTLayerApplyPlainFilterToLayer(): %s, rect=%f,%f,%f,%f\n", pszExpression, rect.minx, rect.miny, rect.maxx, rect.maxy); + else + msDebug("FLTLayerApplyPlainFilterToLayer(): rect=%f,%f,%f,%f\n", rect.minx, rect.miny, rect.maxx, rect.maxy); + } + + status = FLTApplyFilterToLayerCommonExpressionWithRect(map, iLayerIndex, + pszExpression, rect); msFree(pszExpression); } @@ -1784,6 +1854,7 @@ int FLTValidForBBoxFilter(FilterEncodingNode *psFilterNode) return 0; } +#if 0 static int FLTHasUniqueTopLevelDuringFilter(FilterEncodingNode *psFilterNode) { int nCount = 0; @@ -1809,7 +1880,7 @@ static int FLTHasUniqueTopLevelDuringFilter(FilterEncodingNode *psFilterNode) return 0; } - +#endif int FLTIsLineFilter(FilterEncodingNode *psFilterNode) { diff --git a/mapogcfilter.h b/mapogcfilter.h index 7d7828d364..970d02e5f3 100644 --- a/mapogcfilter.h +++ b/mapogcfilter.h @@ -148,6 +148,7 @@ int FLTCheckInvalidProperty(FilterEncodingNode *psFilterNode, mapObj *map, int i); FilterEncodingNode* FLTSimplify(FilterEncodingNode *psFilterNode, int* pnEvaluation); +int FLTApplyFilterToLayerCommonExpressionWithRect(mapObj *map, int iLayerIndex, const char *pszExpression, rectObj rect); #endif diff --git a/mapogcfiltercommon.c b/mapogcfiltercommon.c index 3105d3ff9b..e21395a62e 100644 --- a/mapogcfiltercommon.c +++ b/mapogcfiltercommon.c @@ -693,6 +693,12 @@ char *FLTGetCommonExpression(FilterEncodingNode *psFilterNode, layerObj *lp) } int FLTApplyFilterToLayerCommonExpression(mapObj *map, int iLayerIndex, const char *pszExpression) +{ + return FLTApplyFilterToLayerCommonExpressionWithRect(map, iLayerIndex, pszExpression, map->extent); +} + +/* rect must be in map->projection */ +int FLTApplyFilterToLayerCommonExpressionWithRect(mapObj *map, int iLayerIndex, const char *pszExpression, rectObj rect) { int retval; int save_startindex; @@ -707,18 +713,25 @@ int FLTApplyFilterToLayerCommonExpression(mapObj *map, int iLayerIndex, const ch map->query.maxfeatures = save_maxfeatures; map->query.only_cache_result_count = save_only_cache_result_count; - map->query.type = MS_QUERY_BY_FILTER; map->query.mode = MS_QUERY_MULTIPLE; - - msInitExpression(&map->query.filter); - map->query.filter.string = msStrdup(pszExpression); - map->query.filter.type = MS_EXPRESSION; /* a logical expression */ map->query.layer = iLayerIndex; - /* TODO: if there is a bbox in the node, get it and set the map extent (projected to map->projection */ - map->query.rect = map->extent; + map->query.rect = rect; - retval = msQueryByFilter(map); + if( pszExpression ) + { + map->query.type = MS_QUERY_BY_FILTER; + msInitExpression(&map->query.filter); + map->query.filter.string = msStrdup(pszExpression); + map->query.filter.type = MS_EXPRESSION; /* a logical expression */ + + retval = msQueryByFilter(map); + } + else + { + map->query.type = MS_QUERY_BY_RECT; + retval = msQueryByRect(map); + } return retval; } diff --git a/msautotest/wxs/data/point_2_49.dbf b/msautotest/wxs/data/point_2_49.dbf new file mode 100644 index 0000000000000000000000000000000000000000..8d68941a5c0fa94aa4c899fa6c794a76352d698a GIT binary patch literal 258 zcmZQBVdH0HU|>jOSO_H1KsW>Jb0Lgy?+};>R(W0pLj~%B0Dn)v5Dg;* K6H8617z_aQ&l*So literal 0 HcmV?d00001 diff --git a/msautotest/wxs/data/point_2_49.shp b/msautotest/wxs/data/point_2_49.shp new file mode 100644 index 0000000000000000000000000000000000000000..3ba5f0caa0e906e2dca2dadf2afabefc7202e732 GIT binary patch literal 128 pcmZQzQ0HR64jf)EGcYhBjOSO_H1KsW>Jb0Lgy?+};>R(W0pBL(V$0Dn)v5DjAm KQv*$^7z_aPf*L{q literal 0 HcmV?d00001 diff --git a/msautotest/wxs/data/point_3_50.shp b/msautotest/wxs/data/point_3_50.shp new file mode 100644 index 0000000000000000000000000000000000000000..6a495ee532c7b39bd8842c80dfd5d0ab7329d6d6 GIT binary patch literal 128 ncmZQzQ0HR64jf)EGcYj1 + + + + 49.00000 2.00000 + 49.00000 2.00000 + + + + + + + 49.00000 2.00000 + 49.00000 2.00000 + + + + + 49.00000 2.00000 + + + + + + diff --git a/msautotest/wxs/wfs_200_allgeoms.map b/msautotest/wxs/wfs_200_allgeoms.map index 0ff350e10f..2e50b8260c 100644 --- a/msautotest/wxs/wfs_200_allgeoms.map +++ b/msautotest/wxs/wfs_200_allgeoms.map @@ -62,7 +62,7 @@ # RUN_PARMS: wfs_200_allgeoms_getfeaturebyid.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&STOREDQUERY_ID=urn:ogc:def:query:OGC-WFS::GetFeatureById&ID=point.1" > [RESULT_DEVERSION] # RUN_PARMS: wfs_200_allgeoms_exception_invalidquery.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&STOREDQUERY_ID=invalidquery" > [RESULT_DEVERSION] # RUN_PARMS: wfs_200_allgeoms_exception_myquery_missing_param.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&STOREDQUERY_ID=myquery" > [RESULT_DEVERSION] -# RUN_PARMS: wfs_200_allgeoms_myquery.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&STOREDQUERY_ID=myquery&LONGMIN=2&LATMIN=49&LONGMAX=2&LATMAX=49" > [RESULT_DEVERSION] +# RUN_PARMS: wfs_200_allgeoms_myquery.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&STOREDQUERY_ID=myquery&LONGMIN=1.99&LATMIN=48.99&LONGMAX=2.01&LATMAX=49.01" > [RESULT_DEVERSION] # RUN_PARMS: wfs_200_allgeoms_post_several_getfeaturebyid.xml [MAPSERV] [POST]point.1multipoint.1[/POST] > [RESULT_DEVERSION] # RUN_PARMS: wfs_200_allgeoms_post_exception_invalidquery.xml [MAPSERV] [POST][/POST] > [RESULT_DEVERSION] diff --git a/msautotest/wxs/wfs_shp_tileindex_of_shp.map b/msautotest/wxs/wfs_shp_tileindex_of_shp.map new file mode 100644 index 0000000000..9f2a3208da --- /dev/null +++ b/msautotest/wxs/wfs_shp_tileindex_of_shp.map @@ -0,0 +1,86 @@ +# +# Test WFS : shapefile tileindex of shapefiles (#5291) +# +# REQUIRES: INPUT=OGR SUPPORTS=WFS +# +# In the logs, point_3_50.shp shouldn't appear +# RUN_PARMS: wfs_shp_tileindex_of_shp_bbox_filter.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&REQUEST=GetFeature&SERVICE=WFS&TYPENAMES=ms:test&VERSION=2.0.0&FILTER=48.9 1.949.1 2.1" > [RESULT_DEVERSION] + +MAP + +NAME WFS_TEST +STATUS ON +SIZE 400 300 +EXTENT 1 48 4 51 +IMAGECOLOR 255 255 255 +SHAPEPATH "data" + +# +# Start of web interface definition +# +WEB + + IMAGEPATH "/tmp/ms_tmp/" + IMAGEURL "/ms_tmp/" + + METADATA + "ows_updatesequence" "123" + "wfs_title" "Test simple wfs" + "wfs_onlineresource" "http://localhost/path/to/wfs_simple?" + "wfs_srs" "EPSG:4326" + "ows_abstract" "Test WFS Abstract" + "ows_keywordlist" "ogc,wfs,gml,om" + "ows_service_onlineresource" "http://localhost" + "ows_fees" "none" + "ows_accessconstraints" "none" + "ows_addresstype" "postal" + "ows_address" "123 SomeRoad Road" + "ows_city" "Toronto" + "ows_stateorprovince" "Ontario" + "ows_postcode" "xxx-xxx" + "ows_country" "Canada" + "ows_contactelectronicmailaddress" "tomkralidis@xxxxxxx.xxx" + "ows_contactvoicetelephone" "+xx-xxx-xxx-xxxx" + "ows_contactfacsimiletelephone" "+xx-xxx-xxx-xxxx" + "ows_contactperson" "Tom Kralidis" + "ows_contactorganization" "MapServer" + "ows_contactposition" "self" + "ows_hoursofservice" "0800h - 1600h EST" + "ows_contactinstructions" "during hours of service" + "ows_role" "staff" + "ows_enable_request" "*" + END +END + +PROJECTION + "init=epsg:4326" +END + + +# +# Start of layer definitions +# + + +LAYER + NAME test + CONNECTIONTYPE OGR + TILEINDEX "shp_tileindex_of_shp.shp" + TILEITEM "LOCATION" + METADATA + "wfs_title" "test" + "wfs_description" "test" + "wfs_featureid" "id" + END + TYPE POINT + STATUS ON + EXTENT 1 48 4 51 + PROJECTION + "init=epsg:4326" + END + + DUMP TRUE +END # Layer + + +END # Map File From 65bb7ecc7870b3ccd2776880706e72c651088e23 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 23 Jun 2016 15:34:30 +0200 Subject: [PATCH 024/221] Credits for implementation of expression conversion to Spatialite SQL. Commits 3cf682d17003521213868f1e727d7be7a3263c7e, 0e20de083d7186298fbebbfd764ba721134ce3a0 and 1f99a9f29fefebb7c0e5f39878061763506f94f1 that implement MapServer expression conversion to Spatialite SQL in OGR provider is a work funded by Tuscany Region (Italy) - SITA (CIG: 6002233F59) and commissioned to Gis3W s.a.s --- mapogr.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/mapogr.cpp b/mapogr.cpp index 6648b215e9..2855483dfe 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -4260,4 +4260,3 @@ char *msOGRShapeToWKT(shapeObj *shape) return NULL; #endif } - From c3a5759dae997c8cfb370b7d1b7cdbb10b1d84de Mon Sep 17 00:00:00 2001 From: Radim Blazek Date: Mon, 27 Jun 2016 16:29:01 +0200 Subject: [PATCH 025/221] fix WMS blank for classified raster with NaN, #5289 --- mapdrawgdal.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mapdrawgdal.c b/mapdrawgdal.c index f90f2acbd6..eb4ca15a5b 100644 --- a/mapdrawgdal.c +++ b/mapdrawgdal.c @@ -1270,6 +1270,9 @@ LoadGDALImages( GDALDatasetH hDS, int band_numbers[4], int band_count, if( bGotNoData && pafRawData[i] == fNoDataValue ) continue; + if( CPLIsNan(pafRawData[i]) ) + continue; + if( !bMinMaxSet ) { dfScaleMin = dfScaleMax = pafRawData[i]; bMinMaxSet = TRUE; @@ -1764,6 +1767,9 @@ msDrawRasterLayerGDAL_16BitClassification( if( bGotNoData && pafRawData[i] == fNoDataValue ) continue; + if( CPLIsNan(pafRawData[i]) ) + continue; + if( !bGotFirstValue ) { fDataMin = fDataMax = pafRawData[i]; bGotFirstValue = TRUE; @@ -1915,6 +1921,9 @@ msDrawRasterLayerGDAL_16BitClassification( continue; } + if( CPLIsNan(fRawValue) ) + continue; + if(SKIP_MASK(j,i)) continue; From b007fdb06871dc95e5b2577c0bd83d16b31459bd Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 2 Jul 2016 01:14:50 +0200 Subject: [PATCH 026/221] msOGRFileWhichShapes(): fix case where there is no items --- mapogr.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mapogr.cpp b/mapogr.cpp index 2855483dfe..542afde9ba 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -1676,8 +1676,8 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps select = msStringConcatenate(select, layer->items[i]); select = msStringConcatenate(select, "\""); } - - select = msStringConcatenate(select, ", "); + if( layer->numitems > 0 ) + select = msStringConcatenate(select, ", "); pszGeometryColumn = OGR_L_GetGeometryColumn(psInfo->hLayer); if( pszGeometryColumn != NULL && pszGeometryColumn[0] != '\0' ) { select = msStringConcatenate(select, "\""); From 5c8f20124f3867d68dee38aa51ebf04d6ee85760 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sun, 3 Jul 2016 01:33:47 +0200 Subject: [PATCH 027/221] [OGR] Fix wrong mapping of field indexes when SQL layer is composed, e.g. with a WMS request on a Spatialite DB. --- mapogr.cpp | 2 + msautotest/wxs/expected/wms_ogr_native.png | Bin 0 -> 2697 bytes msautotest/wxs/wms_ogr_native_sql.map | 64 +++++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 msautotest/wxs/expected/wms_ogr_native.png create mode 100644 msautotest/wxs/wms_ogr_native_sql.map diff --git a/mapogr.cpp b/mapogr.cpp index 542afde9ba..3addf0dd17 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -1809,6 +1809,8 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps } msFree(select); + // Update itemindexes / layer->iteminfo + msOGRLayerInitItemInfo(layer); } else { diff --git a/msautotest/wxs/expected/wms_ogr_native.png b/msautotest/wxs/expected/wms_ogr_native.png new file mode 100644 index 0000000000000000000000000000000000000000..131905c697ded51e44f5b673b7fd5e38e54949a9 GIT binary patch literal 2697 zcmbW3_dna)AIDSGTS98@Q9DM|E@HLBuDwzJXFVS0an9rYexKL#b<(UYjUixuFbD*Kn3^DLfzkUh0Cwb$JpON7l|>xLKrgo^qf2)`ofP+3yOa(?^m78MqfEYP&F5K-+nLa)iY)0W>G?F_j??$CJh+;_XSM=Tdo(c8-2KOygNT*=jL|475V$@ zI3w1~&CSi!)O2a2bwv^$f38iSqoa%Yz9++;#x3uR(9@0BTOgKTWNqy1IDV_j$S|%u zVUd#`^8yvpZaqWt@$qSDYU=9hx*%PmqoO)GJ15E4^_~_L6^)c?HZ%2+{MM*2clT9C zPtO!Te}AZigte82M@3=b{BwxF->fh_Jw56{xrd~bl;6XLm-sYca&jt)igh>~)frD+ z?j-A+bHE<;&NetrlLs<*%5|Uc8_g$TaJcj1U8k63S!~d1k7!FR29rY`8M$L;XNOhZ zTLt1%aPM)EHH>gf+t}O;4GrB6Zos2ZsI%i;r#ffGV`F2l)q`qMAP~sxDCu*50k*L*pz23k10weOo~UD3SPL4B&dRdf|J?0a3J*^| zCC2@jsxr>r+uL&--*;BZaF$-a7@f@EQAj1$*UReao?F>$Z%@}suMOlbuB{DZ3^v-> z*sK!cq2(lv&@Ur>NmqfzxDM0S33VlQ{Ue0hE-xz!zIN>z7z`Ak7*DLWX0K7lVzGis zsAK}+pvh-=WOS4X4DQdZ4<9K~nwy(5FMt7s5x-N}>^tuF;DLwfH9-wl_p~G6?7CBY z)ym3>=Wc^y|8D2@uK_>)`gi_Q3G4Fivk2$qa-%{XMDT`B3EZ{LGBCo>{uZ>ziypsVg5! zN=i^eZH8u*Kf`ESlb)WQ-iitA&?VO^y@Nf6fQy<24rvNHtJ)THbPX14XN2+$7M zVBkwKOjfF!pNRE3nGF3p_GWi~pXG9}-_}HBZ!%fb;Q23^@|O4X39rh_Sy+LjAQdne zOx+-fO#ZjMsR_);DC(vA5(ak?vp zgoMN#?-;`Ew6wHZioJVrt{*;TUso9HPkyC{x3+pKf^TW*r{mL#fYEg#b0u9}U5{xr z)+A;KWVPps`CsB6#Z@eem9NasrEx%0kNzd6AT8>K6BwT^wp_%M=<(XyR-EQI8P|M< z+evUG^4c2e#YUU|X)IJqN^G&Fw$}XBTH*@6cl_4z%;8n<`}av!{#V3i90>#hpr8%7 zO|%3Q>O~e47}VfH=p>t*6%JA;whj)45oJnVf4%r8`#L!-Kl5{z3qvn|?N_n8;zCyC zxk$+KWTOK>@W2sXkyWfly`Q6Vc9Aw{Jfakb`smfnAoM=HXd1T}?Ca7%{I=Lil+fRX&SKh=(F;V6zQl*q zHIo9We|Fz8aov~dMgZAo8y+e;J&g)v5)FhDWM^l;d-rg7nD_=fr;sIOQ4;p+G&pzO z`bRXl%C!3C`=hpwjy>VK+y_;M z`XXdHK}8P`bBMy**b}OBc8XeqimyTa^0Etc=hgw2uy7W*r==wy-rU?gt)XAe;=8!N z_B79uX*VdfZ%uR(faUheG@!|f3X%Bu3kt>TU2vTRiA0)+X#2se^%8Oa{{4*|_C=@u zPR-CS6?yu}2EP45U%z~LJ{Y+@g^4KfO?jCr;fyrS7B(z4@5145fNpA&Cay0mEL3Pv zckp#SzP`r$3NAfypB5I178a_xxw%aQrKF@>g}4La@sC-FshJpr!rt@b)zrd`|H+i*Bsv8%fq zpx2Rvva0H%A2a%eQ}OpKXqosgqpyw2>lh&r$#!OKZS6BPb4yE00Q@@y$_+_2_~F6= z63NEK#;|jId|Y=ni4@X}L;6WCJr^@JHnxQ)sHj2;%FE64<~&1$QPR7sYa;h~`%r#R5?($c+;4_h(;cIi0W zy*tz`N{<8*^!TQ#YD>%kc#U@=dd1ki`bBy=2_>3BbBC?5-VOi+iW>S*y [RESULT_DEMIME] + +MAP + +NAME WMS_OGR_NATIVE_SQL_TEST +STATUS ON +SIZE 400 300 +EXTENT 6 30 21 50 +UNITS METERS +IMAGECOLOR 255 255 255 + +# +# Start of web interface definition +# + +WEB + + IMAGEPATH "tmp/" + IMAGEURL "/ms_tmp/" + + METADATA + "wms_title" "Test simple wms" + "wms_onlineresource" "http://localhost/path/to/wms_simple?" + "wms_srs" "EPSG:32632" + "wms_enable_request" "*" + END +END + +PROJECTION + "+proj=latlong +datum=WGS84" +END + +# +# Start of layer definitions +# + +LAYER + NAME towns + DATA towns + CONNECTIONTYPE OGR + CONNECTION "./data/db.sqlite" + PROCESSING "NATIVE_SQL=YES" + TYPE POINT + STATUS ON + PROJECTION + "init=epsg:32632" + END + CLASS + TEXT '[peoples]' + LABEL + END + END + + TEMPLATE "foo" +END # Layer + +END # Map File From b39fd15c55f32922625e4f5aac5d93eaf94c1401 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sun, 3 Jul 2016 12:26:27 +0200 Subject: [PATCH 028/221] [OGR] Improve performance when DATA of a Spatialite DB is a simple 'SELECT ... FROM tablename' to for example select from multiple geometry columns --- mapogr.cpp | 140 +++++++++++++++--- .../wxs/expected/wms_ogr_native_sql_data.png | Bin 0 -> 2697 bytes msautotest/wxs/wms_ogr_native_sql.map | 21 +++ 3 files changed, 144 insertions(+), 17 deletions(-) create mode 100644 msautotest/wxs/expected/wms_ogr_native_sql_data.png diff --git a/mapogr.cpp b/mapogr.cpp index 3addf0dd17..df0a06256e 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -1652,20 +1652,103 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps return(MS_FAILURE); } + // native_string = dialect=*;sql=* + // dialect is SQLite or PostGIS + const char *dialect = NULL; + if (layer->filter.native_string) { + dialect = layer->filter.native_string + 8; + } + + char *select = NULL; + char* pszTableName = NULL; + bool bIsOKForSQLCompose = true; + + // In the case of a SQLite DB, check that we can identify the + // underlying table + if( psInfo->nLayerIndex == -1 && + dialect != NULL && strncmp(dialect, "SQLite", 6) == 0 ) + { + bIsOKForSQLCompose = false; + + const char* from = strstr( psInfo->pszLayerDef, " from "); + if( from == NULL ) + from = strstr( psInfo->pszLayerDef, " FROM "); + if( from ) + { + const char* pszBeginningOfTable = from + strlen(" FROM "); + const char* pszIter = pszBeginningOfTable; + while( *pszIter && *pszIter != ' ' ) + pszIter ++; + if( strchr(pszIter, ',') == NULL && + strstr(pszIter, " where ") == NULL && strstr(pszIter, " WHERE ") == NULL && + strstr(pszIter, " join ") == NULL && strstr(pszIter, " JOIN ") == NULL && + strstr(pszIter, " order by ") == NULL && strstr(pszIter, " ORDER BY ") == NULL) + { + bIsOKForSQLCompose = true; + pszTableName = msStrdup(pszBeginningOfTable); + pszTableName[pszIter - pszBeginningOfTable] = '\0'; + + char* pszRequest = NULL; + pszRequest = msStringConcatenate(pszRequest, + "SELECT * FROM sqlite_master WHERE type = 'table' AND name = lower('"); + pszRequest = msStringConcatenate(pszRequest, pszTableName); + pszRequest = msStringConcatenate(pszRequest, "')"); + OGRLayerH hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszRequest, NULL, NULL ); + msFree(pszRequest); + + if( hLayer ) + { + OGRFeatureH hFeature = OGR_L_GetNextFeature(hLayer); + bIsOKForSQLCompose = (hFeature != NULL); + if( hFeature ) + OGR_F_Destroy(hFeature); + OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); + } + if( bIsOKForSQLCompose ) + { + select = msStrdup(psInfo->pszLayerDef); + } + } + } + } + else if( dialect != NULL && strncmp(dialect, "SQLite", 6) == 0 ) + { + bIsOKForSQLCompose = false; + + char* pszRequest = NULL; + pszRequest = msStringConcatenate(pszRequest, + "SELECT * FROM sqlite_master WHERE type = 'table' AND name = lower('"); + pszRequest = msStringConcatenate(pszRequest, OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); + pszRequest = msStringConcatenate(pszRequest, "')"); + OGRLayerH hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszRequest, NULL, NULL ); + msFree(pszRequest); + + if( hLayer ) + { + OGRFeatureH hFeature = OGR_L_GetNextFeature(hLayer); + bIsOKForSQLCompose = (hFeature != NULL); + if( hFeature ) + OGR_F_Destroy(hFeature); + OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); + } + if( bIsOKForSQLCompose ) + pszTableName = msStrdup(OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); + } + // we'll go strictly two possible ways: // 1) GetLayer + SetFilter // 2) ExecuteSQL (psInfo->hLayer is an SQL result OR sortBy was requested OR have native_string // and start from the second - if (psInfo->nLayerIndex == -1 || layer->sortBy.nProperties > 0 || layer->filter.native_string) { + if ( bIsOKForSQLCompose && (psInfo->nLayerIndex == -1 || layer->sortBy.nProperties > 0 || layer->filter.native_string) ) { - char *select = NULL; - - if( psInfo->nLayerIndex == -1 ) { + if( psInfo->nLayerIndex == -1 && select == NULL ) { select = msStrdup(psInfo->pszLayerDef); /* If nLayerIndex == -1 then the layer is an SQL result ... free it */ OGR_DS_ReleaseResultSet( psInfo->hDS, psInfo->hLayer ); - } else { + psInfo->hLayer = NULL; + } + else if( select == NULL ) { const char* pszGeometryColumn; int i; select = msStringConcatenate(select, "SELECT "); @@ -1687,9 +1770,19 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps /* Add ", *" so that we still have an hope to get the geometry */ select = msStringConcatenate(select, "*"); } - select = msStringConcatenate(select, " FROM \""); - select = msStringConcatenate(select, OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); - select = msStringConcatenate(select, "\""); + select = msStringConcatenate(select, " FROM "); + if( psInfo->nLayerIndex == -1 ) + { + select = msStringConcatenate(select, "("); + select = msStringConcatenate(select, psInfo->pszLayerDef); + select = msStringConcatenate(select, ") MSSUBSELECT"); + } + else + { + select = msStringConcatenate(select, "\""); + select = msStringConcatenate(select, OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); + select = msStringConcatenate(select, "\""); + } } char *filter = NULL; @@ -1702,10 +1795,8 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps // native_string = dialect=*;sql=* // dialect is SQLite or PostGIS - char *dialect = NULL; - - if (layer->filter.native_string) { - dialect = layer->filter.native_string + 8; + + if (dialect) { if (strncmp(dialect, "SQLite", 6) == 0 || strncmp(dialect, "PostgreSQL", 10) == 0) { char *sql = strstr(layer->filter.native_string, ";sql=") + 5; if (*sql == '\0') sql = NULL; @@ -1750,10 +1841,16 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps } else if (strncmp(dialect, "SQLite", 6) == 0) { if (filter) filter = msStringConcatenate(filter, " AND"); filter = msStringConcatenate(filter, " "); - filter = msStringConcatenate(filter, psInfo->pszLayerDef); // this is table name since native_string + filter = msStringConcatenate(filter, pszTableName); filter = msStringConcatenate(filter, ".ROWID IN (SELECT ROWID FROM SpatialIndex WHERE f_table_name = '"); - filter = msStringConcatenate(filter, psInfo->pszLayerDef); + filter = msStringConcatenate(filter, pszTableName); filter = msStringConcatenate(filter, "' "); + const char* pszGeometryColumn = OGR_L_GetGeometryColumn(psInfo->hLayer); + if( pszGeometryColumn != NULL && pszGeometryColumn[0] != '\0' ) { + filter = msStringConcatenate(filter, "AND f_geometry_column = '"); + filter = msStringConcatenate(filter, pszGeometryColumn); + filter = msStringConcatenate(filter, "' "); + } filter = msStringConcatenate(filter, "AND search_frame = GeomFromText('POLYGON(("); char *points = (char *)msSmallMalloc(30*2*5); snprintf(points, 30*2*5, "%lf %lf,%lf %lf,%lf %lf,%lf %lf,%lf %lf", rect.minx, rect.miny, rect.maxx, rect.miny, rect.maxx, rect.maxy, rect.minx, rect.maxy, rect.minx, rect.miny); @@ -1798,16 +1895,20 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps msDebug("msOGRFileWhichShapes: SQL = %s.\n", select); ACQUIRE_OGR_LOCK; + if( psInfo->nLayerIndex == -1 && psInfo->hLayer != NULL ) + { + OGR_DS_ReleaseResultSet( psInfo->hDS, psInfo->hLayer ); + } psInfo->hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, select, NULL, NULL ); psInfo->nLayerIndex = -1; - + if( psInfo->hLayer == NULL ) { RELEASE_OGR_LOCK; msSetError(MS_OGRERR, "ExecuteSQL(%s) failed.\n%s", "msOGRFileWhichShapes()", select, CPLGetLastErrorMsg()); msFree(select); + msFree(pszTableName); return MS_FAILURE; } - msFree(select); // Update itemindexes / layer->iteminfo msOGRLayerInitItemInfo(layer); @@ -1872,6 +1973,8 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps msSetError(MS_OGRERR, "SetAttributeFilter(%s) failed on layer %s.\n%s", "msOGRFileWhichShapes()", layer->filter.string+6, layer->name?layer->name:"(null)", CPLGetLastErrorMsg() ); RELEASE_OGR_LOCK; msFree(pszOGRFilter); + msFree(pszTableName); + msFree(select); return MS_FAILURE; } msFree(pszOGRFilter); @@ -1880,6 +1983,9 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps } + msFree(pszTableName); + msFree(select); + /* ------------------------------------------------------------------ * Reset current feature pointer * ------------------------------------------------------------------ */ @@ -2395,7 +2501,7 @@ static int msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, // reasons to not produce native string: not simple layer, or an explicit deny char *do_this = msLayerGetProcessingKey(layer, "NATIVE_SQL"); // default is YES - if ((info->nLayerIndex == -1) || (do_this && strcmp(do_this, "NO") == 0)) { + if (do_this && strcmp(do_this, "NO") == 0) { return MS_SUCCESS; } diff --git a/msautotest/wxs/expected/wms_ogr_native_sql_data.png b/msautotest/wxs/expected/wms_ogr_native_sql_data.png new file mode 100644 index 0000000000000000000000000000000000000000..131905c697ded51e44f5b673b7fd5e38e54949a9 GIT binary patch literal 2697 zcmbW3_dna)AIDSGTS98@Q9DM|E@HLBuDwzJXFVS0an9rYexKL#b<(UYjUixuFbD*Kn3^DLfzkUh0Cwb$JpON7l|>xLKrgo^qf2)`ofP+3yOa(?^m78MqfEYP&F5K-+nLa)iY)0W>G?F_j??$CJh+;_XSM=Tdo(c8-2KOygNT*=jL|475V$@ zI3w1~&CSi!)O2a2bwv^$f38iSqoa%Yz9++;#x3uR(9@0BTOgKTWNqy1IDV_j$S|%u zVUd#`^8yvpZaqWt@$qSDYU=9hx*%PmqoO)GJ15E4^_~_L6^)c?HZ%2+{MM*2clT9C zPtO!Te}AZigte82M@3=b{BwxF->fh_Jw56{xrd~bl;6XLm-sYca&jt)igh>~)frD+ z?j-A+bHE<;&NetrlLs<*%5|Uc8_g$TaJcj1U8k63S!~d1k7!FR29rY`8M$L;XNOhZ zTLt1%aPM)EHH>gf+t}O;4GrB6Zos2ZsI%i;r#ffGV`F2l)q`qMAP~sxDCu*50k*L*pz23k10weOo~UD3SPL4B&dRdf|J?0a3J*^| zCC2@jsxr>r+uL&--*;BZaF$-a7@f@EQAj1$*UReao?F>$Z%@}suMOlbuB{DZ3^v-> z*sK!cq2(lv&@Ur>NmqfzxDM0S33VlQ{Ue0hE-xz!zIN>z7z`Ak7*DLWX0K7lVzGis zsAK}+pvh-=WOS4X4DQdZ4<9K~nwy(5FMt7s5x-N}>^tuF;DLwfH9-wl_p~G6?7CBY z)ym3>=Wc^y|8D2@uK_>)`gi_Q3G4Fivk2$qa-%{XMDT`B3EZ{LGBCo>{uZ>ziypsVg5! zN=i^eZH8u*Kf`ESlb)WQ-iitA&?VO^y@Nf6fQy<24rvNHtJ)THbPX14XN2+$7M zVBkwKOjfF!pNRE3nGF3p_GWi~pXG9}-_}HBZ!%fb;Q23^@|O4X39rh_Sy+LjAQdne zOx+-fO#ZjMsR_);DC(vA5(ak?vp zgoMN#?-;`Ew6wHZioJVrt{*;TUso9HPkyC{x3+pKf^TW*r{mL#fYEg#b0u9}U5{xr z)+A;KWVPps`CsB6#Z@eem9NasrEx%0kNzd6AT8>K6BwT^wp_%M=<(XyR-EQI8P|M< z+evUG^4c2e#YUU|X)IJqN^G&Fw$}XBTH*@6cl_4z%;8n<`}av!{#V3i90>#hpr8%7 zO|%3Q>O~e47}VfH=p>t*6%JA;whj)45oJnVf4%r8`#L!-Kl5{z3qvn|?N_n8;zCyC zxk$+KWTOK>@W2sXkyWfly`Q6Vc9Aw{Jfakb`smfnAoM=HXd1T}?Ca7%{I=Lil+fRX&SKh=(F;V6zQl*q zHIo9We|Fz8aov~dMgZAo8y+e;J&g)v5)FhDWM^l;d-rg7nD_=fr;sIOQ4;p+G&pzO z`bRXl%C!3C`=hpwjy>VK+y_;M z`XXdHK}8P`bBMy**b}OBc8XeqimyTa^0Etc=hgw2uy7W*r==wy-rU?gt)XAe;=8!N z_B79uX*VdfZ%uR(faUheG@!|f3X%Bu3kt>TU2vTRiA0)+X#2se^%8Oa{{4*|_C=@u zPR-CS6?yu}2EP45U%z~LJ{Y+@g^4KfO?jCr;fyrS7B(z4@5145fNpA&Cay0mEL3Pv zckp#SzP`r$3NAfypB5I178a_xxw%aQrKF@>g}4La@sC-FshJpr!rt@b)zrd`|H+i*Bsv8%fq zpx2Rvva0H%A2a%eQ}OpKXqosgqpyw2>lh&r$#!OKZS6BPb4yE00Q@@y$_+_2_~F6= z63NEK#;|jId|Y=ni4@X}L;6WCJr^@JHnxQ)sHj2;%FE64<~&1$QPR7sYa;h~`%r#R5?($c+;4_h(;cIi0W zy*tz`N{<8*^!TQ#YD>%kc#U@=dd1ki`bBy=2_>3BbBC?5-VOi+iW>S*y [RESULT_DEMIME] +# RUN_PARMS: wms_ogr_native_sql_data.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WMS&VERSION=1.1.0&REQUEST=GetMap&TYPENAME=towns_sql&FORMAT=image/png&BBOX=659159,4877386,696879,4898059&LAYERS=towns_sql&WIDTH=100&HEIGHT=100&SRS=EPSG:32632" > [RESULT_DEMIME] MAP @@ -61,4 +62,24 @@ LAYER TEMPLATE "foo" END # Layer +LAYER + NAME towns_sql + DATA "SELECT county, geometry, peoples FROM towns" + CONNECTIONTYPE OGR + CONNECTION "./data/db.sqlite" + PROCESSING "NATIVE_SQL=YES" + TYPE POINT + STATUS ON + PROJECTION + "init=epsg:32632" + END + CLASS + TEXT '[peoples]' + LABEL + END + END + + TEMPLATE "foo" +END # Layer + END # Map File From 58ce9c453b67eb2fb73e32dcfb0bb5c025ab0458 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 26 Jul 2016 23:04:56 +0200 Subject: [PATCH 029/221] [OGR] Fix support for Spatialite views --- mapogr.cpp | 104 ++++++++++++++++-- msautotest/wxs/data/db.sqlite | Bin 141312 -> 141312 bytes .../wxs/expected/wfs_ogr_native_sql_33.xml | 38 +++++++ msautotest/wxs/wfs_ogr_native_sql.map | 25 +++++ 4 files changed, 156 insertions(+), 11 deletions(-) create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_33.xml diff --git a/mapogr.cpp b/mapogr.cpp index df0a06256e..9151003e21 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -1660,7 +1660,9 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps } char *select = NULL; - char* pszTableName = NULL; + char* pszSpatialFilterTableName = NULL; + char* pszMainTableName = NULL; + char* pszRowId = NULL; bool bIsOKForSQLCompose = true; // In the case of a SQLite DB, check that we can identify the @@ -1685,13 +1687,14 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps strstr(pszIter, " order by ") == NULL && strstr(pszIter, " ORDER BY ") == NULL) { bIsOKForSQLCompose = true; - pszTableName = msStrdup(pszBeginningOfTable); - pszTableName[pszIter - pszBeginningOfTable] = '\0'; + pszMainTableName = msStrdup(pszBeginningOfTable); + pszMainTableName[pszIter - pszBeginningOfTable] = '\0'; + pszSpatialFilterTableName = msStrdup(pszMainTableName); char* pszRequest = NULL; pszRequest = msStringConcatenate(pszRequest, "SELECT * FROM sqlite_master WHERE type = 'table' AND name = lower('"); - pszRequest = msStringConcatenate(pszRequest, pszTableName); + pszRequest = msStringConcatenate(pszRequest, pszMainTableName); pszRequest = msStringConcatenate(pszRequest, "')"); OGRLayerH hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszRequest, NULL, NULL ); msFree(pszRequest); @@ -1708,6 +1711,32 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps { select = msStrdup(psInfo->pszLayerDef); } + else + { + // Test if it is a spatial view + pszRequest = msStringConcatenate(NULL, + "SELECT f_table_name, view_rowid FROM views_geometry_columns WHERE view_name = lower('"); + pszRequest = msStringConcatenate(pszRequest, pszMainTableName); + pszRequest = msStringConcatenate(pszRequest, "')"); + CPLPushErrorHandler(CPLQuietErrorHandler); + OGRLayerH hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszRequest, NULL, NULL ); + CPLPopErrorHandler(); + msFree(pszRequest); + + if( hLayer ) + { + OGRFeatureH hFeature = OGR_L_GetNextFeature(hLayer); + bIsOKForSQLCompose = (hFeature != NULL); + if( hFeature ) + { + msFree(pszSpatialFilterTableName); + pszSpatialFilterTableName = msStrdup( OGR_F_GetFieldAsString( hFeature, 0 ) ); + pszRowId = msStrdup( OGR_F_GetFieldAsString( hFeature, 1 ) ); + OGR_F_Destroy(hFeature); + } + OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); + } + } } } } @@ -1732,7 +1761,46 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); } if( bIsOKForSQLCompose ) - pszTableName = msStrdup(OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); + { + pszMainTableName = msStrdup(OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); + pszSpatialFilterTableName = msStrdup(pszMainTableName); + } + else + { + // Test if it is a spatial view + pszRequest = msStringConcatenate(NULL, + "SELECT f_table_name, view_rowid FROM views_geometry_columns WHERE view_name = lower('"); + pszRequest = msStringConcatenate(pszRequest, OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); + pszRequest = msStringConcatenate(pszRequest, "')"); + CPLPushErrorHandler(CPLQuietErrorHandler); + OGRLayerH hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszRequest, NULL, NULL ); + CPLPopErrorHandler(); + msFree(pszRequest); + + if( hLayer ) + { + OGRFeatureH hFeature = OGR_L_GetNextFeature(hLayer); + bIsOKForSQLCompose = (hFeature != NULL); + if( hFeature ) + { + pszMainTableName = msStrdup(OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); + pszSpatialFilterTableName = msStrdup( OGR_F_GetFieldAsString( hFeature, 0 ) ); + pszRowId = msStrdup( OGR_F_GetFieldAsString( hFeature, 1 ) ); + OGR_F_Destroy(hFeature); + } + OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); + } + } + } + + // in the case we cannot handle the native string, go back to the client + // side evaluation by unsetting it. + if( !bIsOKForSQLCompose && dialect != NULL && layer->filter.native_string ) + { + msDebug("msOGRFileWhichShapes(): unsetting native_string\n"); + msFree( layer->filter.native_string ); + layer->filter.native_string = NULL; + dialect = NULL; } // we'll go strictly two possible ways: @@ -1841,9 +1909,17 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps } else if (strncmp(dialect, "SQLite", 6) == 0) { if (filter) filter = msStringConcatenate(filter, " AND"); filter = msStringConcatenate(filter, " "); - filter = msStringConcatenate(filter, pszTableName); - filter = msStringConcatenate(filter, ".ROWID IN (SELECT ROWID FROM SpatialIndex WHERE f_table_name = '"); - filter = msStringConcatenate(filter, pszTableName); + filter = msStringConcatenate(filter, pszMainTableName); + filter = msStringConcatenate(filter, "."); + const char* pszFIDColumn = OGR_L_GetFIDColumn(psInfo->hLayer); + if( pszRowId ) + filter = msStringConcatenate(filter, pszRowId); + else if( pszFIDColumn != NULL && pszFIDColumn[0] != '\0' ) + filter = msStringConcatenate(filter, pszFIDColumn); + else + filter = msStringConcatenate(filter, "ROWID"); + filter = msStringConcatenate(filter, " IN (SELECT ROWID FROM SpatialIndex WHERE f_table_name = '"); + filter = msStringConcatenate(filter, pszSpatialFilterTableName); filter = msStringConcatenate(filter, "' "); const char* pszGeometryColumn = OGR_L_GetGeometryColumn(psInfo->hLayer); if( pszGeometryColumn != NULL && pszGeometryColumn[0] != '\0' ) { @@ -1906,7 +1982,9 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps RELEASE_OGR_LOCK; msSetError(MS_OGRERR, "ExecuteSQL(%s) failed.\n%s", "msOGRFileWhichShapes()", select, CPLGetLastErrorMsg()); msFree(select); - msFree(pszTableName); + msFree(pszMainTableName); + msFree(pszSpatialFilterTableName); + msFree(pszRowId); return MS_FAILURE; } @@ -1973,7 +2051,9 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps msSetError(MS_OGRERR, "SetAttributeFilter(%s) failed on layer %s.\n%s", "msOGRFileWhichShapes()", layer->filter.string+6, layer->name?layer->name:"(null)", CPLGetLastErrorMsg() ); RELEASE_OGR_LOCK; msFree(pszOGRFilter); - msFree(pszTableName); + msFree(pszMainTableName); + msFree(pszSpatialFilterTableName); + msFree(pszRowId); msFree(select); return MS_FAILURE; } @@ -1983,7 +2063,9 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps } - msFree(pszTableName); + msFree(pszMainTableName); + msFree(pszSpatialFilterTableName); + msFree(pszRowId); msFree(select); /* ------------------------------------------------------------------ diff --git a/msautotest/wxs/data/db.sqlite b/msautotest/wxs/data/db.sqlite index 79e1457611fea54c912560417c6afd8ade9f2fc9..374f0c7fb7503e0f046a5933338ae614b68f70a2 100644 GIT binary patch delta 224 zcmZp;z|nAlV}i8c6b1%{E+B@1x`{f*tWy|tpD}GrSrE>~$b6N7`RZmtfz!;|nvCp{ zveM$RoVk@{nW^RJsrk97B}J9_>B;eFnJFdt<$1+0u}ufwGYd+htK5{p!m^k}f~A=y zV>wF(;|3lUCT0fa5~hbtu1w58J3ccy**7w>iAqXx#Di>r*aIP*gIpa$TouARUBeY1 gA_|Gc3dN~8smUb@S_)}J`MC;UCv10>V%p6M08p_-x&QzG delta 85 zcmZp;z|nAlV}i8cBnAeCE+B@1+KD>GtdkgYKknR^vLJjj%LFEl&1?z(m^ZV`X=ZJ1 i&)nXg$ymFNi>57?XFTxyLkZ<+8Evd diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_33.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_33.xml new file mode 100644 index 0000000000..0e6557ae65 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_33.xml @@ -0,0 +1,38 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + 643513.360000,4896928.190000 + + + Fanano + 2910 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/wfs_ogr_native_sql.map b/msautotest/wxs/wfs_ogr_native_sql.map index 7d2b994a22..db3e723ec9 100644 --- a/msautotest/wxs/wfs_ogr_native_sql.map +++ b/msautotest/wxs/wfs_ogr_native_sql.map @@ -61,6 +61,9 @@ # RUN_PARMS: wfs_ogr_native_sql_30.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry662773 4891987.41" > [RESULT] # RUN_PARMS: wfs_ogr_native_sql_31.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=20000Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] # RUN_PARMS: wfs_ogr_native_sql_32.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=1000Geometry653627 4881103 653174 4890443 663148 4887813 663330 4879471 653627 4881103" > [RESULT] +# +# Same as wfs_ogr_native_sql_02 on a view +# RUN_PARMS: wfs_ogr_native_sql_33.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=myview&OUTPUTFORMAT=GML2&FILTER=Geometry643159,4877386 696879,4898059nameFanano" > [RESULT] MAP @@ -118,4 +121,26 @@ LAYER TEMPLATE "wfs_ogr_native_sql.map" END # Layer +LAYER + NAME myview + DATA myview + CONNECTIONTYPE OGR + CONNECTION "./data/db.sqlite" + PROCESSING "NATIVE_SQL=YES" + METADATA + "ows_title" "myview" + "wfs_featureid" "ID" + "gml_include_items" "all" + "gml_types" "auto" + "wfs_getfeature_formatlist" "ogrgml" + END + TYPE POINT + STATUS ON + PROJECTION + "init=epsg:32632" + END + + TEMPLATE "wfs_ogr_native_sql.map" +END # Layer + END # Map File From 59650f22552edd30270bfb5d8da86c9ef7acd41f Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Sat, 30 Jul 2016 17:03:46 +0200 Subject: [PATCH 030/221] Add support for DescribeFeatureType with gml_types=auto for the MSSQL driver (#5305) --- mapmssql2008.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 81 insertions(+), 2 deletions(-) diff --git a/mapmssql2008.c b/mapmssql2008.c index 13eb39a23f..82bd9f3b2f 100644 --- a/mapmssql2008.c +++ b/mapmssql2008.c @@ -38,6 +38,7 @@ #include #include "mapserver.h" #include "maptime.h" +#include "mapows.h" #ifdef USE_MSSQL2008 @@ -602,7 +603,7 @@ static int executeSQL(msODBCconn *conn, const char * sql) } /* Get columns name from query results */ -static int columnName(msODBCconn *conn, int index, char *buffer, int bufferLength) +static int columnName(msODBCconn *conn, int index, char *buffer, int bufferLength, layerObj *layer, char pass_field_def) { SQLRETURN rc; @@ -629,6 +630,72 @@ static int columnName(msODBCconn *conn, int index, char *buffer, int bufferLengt strlcpy(buffer, (const char *)columnName, bufferLength); else strlcpy(buffer, (const char *)columnName, SQL_COLUMN_NAME_MAX_LENGTH + 1); + + if (pass_field_def) { + char md_item_name[256]; + char gml_width[32], gml_precision[32]; + const char *gml_type = NULL; + + gml_width[0] = '\0'; + gml_precision[0] = '\0'; + + switch( dataType ) { + case SQL_INTEGER: + case SQL_SMALLINT: + case SQL_TINYINT: + gml_type = "Integer"; + break; + + case SQL_BIGINT: + gml_type = "Long"; + break; + + case SQL_REAL: + case SQL_FLOAT: + case SQL_DOUBLE: + case SQL_DECIMAL: + case SQL_NUMERIC: + gml_type = "Real"; + if( decimalDigits > 0 ) + sprintf( gml_precision, "%d", decimalDigits ); + break; + + case SQL_TYPE_DATE: + case SQL_TYPE_TIME: + case SQL_TYPE_TIMESTAMP: + gml_type = "Date"; + break; + + case SQL_BIT: + gml_type = "Boolean"; + break; + + default: + gml_type = "Character"; + break; + } + + if( columnSize > 0 ) + sprintf( gml_width, "%d", columnSize ); + + snprintf( md_item_name, sizeof(md_item_name), "gml_%s_type", buffer ); + if( msOWSLookupMetadata(&(layer->metadata), "G", "type") == NULL ) + msInsertHashTable(&(layer->metadata), md_item_name, gml_type ); + + snprintf( md_item_name, sizeof(md_item_name), "gml_%s_width", buffer ); + if( strlen(gml_width) > 0 + && msOWSLookupMetadata(&(layer->metadata), "G", "width") == NULL ) + msInsertHashTable(&(layer->metadata), md_item_name, gml_width ); + + snprintf( md_item_name, sizeof(md_item_name), "gml_%s_precision",buffer ); + if( strlen(gml_precision) > 0 + && msOWSLookupMetadata(&(layer->metadata), "G", "precision")==NULL ) + msInsertHashTable(&(layer->metadata), md_item_name, gml_precision ); + + snprintf( md_item_name, sizeof(md_item_name), "gml_%s_nillable",buffer ); + if( nullable > 0 ) + msInsertHashTable(&(layer->metadata), md_item_name, "true" ); + } return 1; } else { setStmntError(conn); @@ -1914,6 +1981,13 @@ int msMSSQL2008LayerGetItems(layerObj *layer) char found_geom = 0; int item_num; SQLSMALLINT cols = 0; + const char *value; + /* + * Pass the field definitions through to the layer metadata in the + * "gml_[item]_{type,width,precision}" set of metadata items for + * defining fields. + */ + char pass_field_def = 0; if(layer->debug) { msDebug("in msMSSQL2008LayerGetItems (find column names)\n"); @@ -1957,10 +2031,15 @@ int msMSSQL2008LayerGetItems(layerObj *layer) found_geom = 0; /* havent found the geom field */ item_num = 0; + /* consider populating the field definitions in metadata */ + if((value = msOWSLookupMetadata(&(layer->metadata), "G", "types")) != NULL + && strcasecmp(value,"auto") == 0 ) + pass_field_def = 1; + for(t = 0; t < cols; t++) { char colBuff[256]; - columnName(layerinfo->conn, t + 1, colBuff, sizeof(colBuff)); + columnName(layerinfo->conn, t + 1, colBuff, sizeof(colBuff), layer, pass_field_def); if(strcmp(colBuff, layerinfo->geom_column) != 0) { /* this isnt the geometry column */ From 375a7aea204eb1eb40327a53592a9e1f9b057ead Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 30 Jul 2016 17:41:27 +0200 Subject: [PATCH 031/221] [OGR] Potential fix for SELECT ... FROM a Spatialite view (probably fix #5218) --- mapogr.cpp | 3 +- .../wxs/expected/wfs_ogr_native_sql_34.xml | 38 ++++++++++ .../wxs/expected/wfs_ogr_native_sql_35.xml | 38 ++++++++++ .../wxs/expected/wfs_ogr_native_sql_36.xml | 38 ++++++++++ msautotest/wxs/wfs_ogr_native_sql.map | 76 +++++++++++++++++++ 5 files changed, 192 insertions(+), 1 deletion(-) create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_34.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_35.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_36.xml diff --git a/mapogr.cpp b/mapogr.cpp index 9151003e21..6bceb5d268 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -1729,6 +1729,7 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps bIsOKForSQLCompose = (hFeature != NULL); if( hFeature ) { + select = msStrdup(psInfo->pszLayerDef); msFree(pszSpatialFilterTableName); pszSpatialFilterTableName = msStrdup( OGR_F_GetFieldAsString( hFeature, 0 ) ); pszRowId = msStrdup( OGR_F_GetFieldAsString( hFeature, 1 ) ); @@ -1797,7 +1798,7 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps // side evaluation by unsetting it. if( !bIsOKForSQLCompose && dialect != NULL && layer->filter.native_string ) { - msDebug("msOGRFileWhichShapes(): unsetting native_string\n"); + msDebug("msOGRFileWhichShapes(): unsetting native_string. Falling back to MapServer only evaluation\n"); msFree( layer->filter.native_string ); layer->filter.native_string = NULL; dialect = NULL; diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_34.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_34.xml new file mode 100644 index 0000000000..08cff05475 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_34.xml @@ -0,0 +1,38 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + 643513.360000,4896928.190000 + + + Fanano + 2910 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_35.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_35.xml new file mode 100644 index 0000000000..bac776f439 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_35.xml @@ -0,0 +1,38 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + 643513.360000,4896928.190000 + + + Fanano + 2910 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_36.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_36.xml new file mode 100644 index 0000000000..5a76adbc80 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_36.xml @@ -0,0 +1,38 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + 643513.360000,4896928.190000 + + + Fanano + 2910 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/wfs_ogr_native_sql.map b/msautotest/wxs/wfs_ogr_native_sql.map index db3e723ec9..3962cbae6f 100644 --- a/msautotest/wxs/wfs_ogr_native_sql.map +++ b/msautotest/wxs/wfs_ogr_native_sql.map @@ -64,6 +64,16 @@ # # Same as wfs_ogr_native_sql_02 on a view # RUN_PARMS: wfs_ogr_native_sql_33.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=myview&OUTPUTFORMAT=GML2&FILTER=Geometry643159,4877386 696879,4898059nameFanano" > [RESULT] +# +# Same as wfs_ogr_native_sql_02 on a "SELECT ... FROM " a table +# RUN_PARMS: wfs_ogr_native_sql_34.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns_select&OUTPUTFORMAT=GML2&FILTER=Geometry643159,4877386 696879,4898059nameFanano" > [RESULT] +# +# Same as wfs_ogr_native_sql_02 on a "SELECT ... FROM " a_view +# RUN_PARMS: wfs_ogr_native_sql_35.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=myview_select&OUTPUTFORMAT=GML2&FILTER=Geometry643159,4877386 696879,4898059nameFanano" > [RESULT] +# +# Same as wfs_ogr_native_sql_02 on a SELECT too complex to be edited, so falling back to client side evaluation +# RUN_PARMS: wfs_ogr_native_sql_36.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=select_too_complex_for_optim&OUTPUTFORMAT=GML2&FILTER=Geometry643159,4877386 696879,4898059nameFanano" > [RESULT] +# MAP @@ -121,6 +131,28 @@ LAYER TEMPLATE "wfs_ogr_native_sql.map" END # Layer +LAYER + NAME towns_select + DATA "SELECT * FROM towns" + CONNECTIONTYPE OGR + CONNECTION "./data/db.sqlite" + PROCESSING "NATIVE_SQL=YES" + METADATA + "ows_title" "towns_select" + "wfs_featureid" "ID" + "gml_include_items" "all" + "gml_types" "auto" + "wfs_getfeature_formatlist" "ogrgml" + END + TYPE POINT + STATUS ON + PROJECTION + "init=epsg:32632" + END + + TEMPLATE "wfs_ogr_native_sql.map" +END # Layer + LAYER NAME myview DATA myview @@ -143,4 +175,48 @@ LAYER TEMPLATE "wfs_ogr_native_sql.map" END # Layer +LAYER + NAME myview_select + DATA "SELECT * FROM myview" + CONNECTIONTYPE OGR + CONNECTION "./data/db.sqlite" + PROCESSING "NATIVE_SQL=YES" + METADATA + "ows_title" "myview_select" + "wfs_featureid" "ID" + "gml_include_items" "all" + "gml_types" "auto" + "wfs_getfeature_formatlist" "ogrgml" + END + TYPE POINT + STATUS ON + PROJECTION + "init=epsg:32632" + END + + TEMPLATE "wfs_ogr_native_sql.map" +END # Layer + +LAYER + NAME select_too_complex_for_optim + DATA "SELECT * FROM towns WHERE 1" + CONNECTIONTYPE OGR + CONNECTION "./data/db.sqlite" + PROCESSING "NATIVE_SQL=YES" + METADATA + "ows_title" "select_too_complex_for_optim" + "wfs_featureid" "ID" + "gml_include_items" "all" + "gml_types" "auto" + "wfs_getfeature_formatlist" "ogrgml" + END + TYPE POINT + STATUS ON + PROJECTION + "init=epsg:32632" + END + + TEMPLATE "wfs_ogr_native_sql.map" +END # Layer + END # Map File From dd336bcfab8ecbaab4974eeb28fbde80309c6b70 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Sat, 6 Aug 2016 22:30:00 +0200 Subject: [PATCH 032/221] MSSQL driver: Get feature attributes as UTF8 strings (#5308) --- mapmssql2008.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/mapmssql2008.c b/mapmssql2008.c index 82bd9f3b2f..29fba51654 100644 --- a/mapmssql2008.c +++ b/mapmssql2008.c @@ -976,7 +976,11 @@ static int prepare_database(layerObj *layer, rectObj rect, char **query_string) char buffer[10000] = ""; for(t = 0; t < layer->numitems; t++) { +#ifdef USE_ICONV + snprintf(buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), "convert(nvarchar(max), [%s]),", layer->items[t]); +#else snprintf(buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), "convert(varchar(max), [%s]),", layer->items[t]); +#endif } if (layerinfo->geometry_format == MSSQLGEOMETRY_NATIVE) @@ -1699,7 +1703,7 @@ int msMSSQL2008LayerGetShapeRandom(layerObj *layer, shapeObj *shape, long *recor if (needLen > 0) { /* allocate the buffer - this will be a null-terminated string so alloc for the null too */ - valueBuffer = (char*) msSmallMalloc( needLen + 1 ); + valueBuffer = (char*) msSmallMalloc( needLen + 2 ); if ( valueBuffer == NULL ) { msSetError( MS_QUERYERR, "Could not allocate value buffer.", "msMSSQL2008LayerGetShapeRandom()" ); return MS_FAILURE; @@ -1714,7 +1718,13 @@ int msMSSQL2008LayerGetShapeRandom(layerObj *layer, shapeObj *shape, long *recor valueBuffer[retLen] = 0; /* null terminate it */ /* Pop the value into the shape's value array */ +#ifdef USE_ICONV + valueBuffer[retLen + 1] = 0; + shape->values[t] = msConvertWideStringToUTF8((wchar_t*)valueBuffer, "UCS-2LE"); + msFree(valueBuffer); +#else shape->values[t] = valueBuffer; +#endif } else /* Copy empty sting for NULL values */ shape->values[t] = msStrdup(""); From 5ef69c9da6f96a37f367210310914dfb3199ac36 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Mon, 29 Aug 2016 12:58:14 +0200 Subject: [PATCH 033/221] Fix travis builds, remove 5.6 until build fix is worked on --- .travis.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index a17e360c40..b5d53b8f53 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: php php: - 5.5 - - 5.6 +# - 5.6 env: global: @@ -51,11 +51,11 @@ before_install: - make -j3 - sudo make install && sudo ldconfig - cd ../.. - - sudo mv /etc/apt/sources.list.d/pgdg-source.list* /tmp - - sudo apt-get remove postgis libpq5 libpq-dev postgresql-9.1-postgis postgresql-9.2-postgis postgresql-9.3-postgis postgresql-9.1 postgresql-9.2 postgresql-9.3 libgdal1 + - sudo mv /etc/apt/sources.list.d/pgdg* /tmp + - sudo apt-get remove postgis libpq5 libpq-dev postgresql-9.1-postgis postgresql-9.1-postgis-2.2-scripts postgresql-9.2-postgis postgresql-9.3-postgis postgresql-9.1 postgresql-9.2 postgresql-9.3 libgdal1 libgdal1-dev libgdal-dev - sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable - sudo apt-get update - - sudo apt-get install bison flex python-lxml libfribidi-dev swig cmake librsvg2-dev colordiff postgis postgresql-9.1 postgresql-9.1-postgis-2.1 postgresql-9.1-postgis-2.1-scripts libpq-dev libpng12-dev libjpeg-dev libgif-dev libgeos-dev libgd2-xpm-dev libfreetype6-dev libfcgi-dev libcurl4-gnutls-dev libcairo2-dev libgdal1-dev libproj-dev libxml2-dev python-dev php5-dev libexempi-dev lcov lftp + - sudo apt-get install bison flex python-lxml libfribidi-dev swig cmake librsvg2-dev colordiff postgis postgresql-9.1 postgresql-9.1-postgis-2.1 postgresql-9.1-postgis-2.1-scripts libpq-dev libpng12-dev libjpeg-dev libgif-dev libgeos-dev libgd2-xpm-dev libfreetype6-dev libfcgi-dev libcurl4-gnutls-dev libcairo2-dev libgdal1-dev libproj-dev libxml2-dev python-dev php5-dev libexempi-dev lcov lftp libgdal-dev libgdal1h - sudo pip install git+git://github.com/tbonfort/cpp-coveralls.git@extensions - cd msautotest - ./create_postgis_test_data.sh From 0152e0436c79d294896401cf8ad010d67fe09bd6 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Sat, 27 Aug 2016 14:12:10 +0200 Subject: [PATCH 034/221] fix compound polygon rendering in postgis (#5012) --- mappostgis.c | 73 ++++++++++++++-------------------------------------- 1 file changed, 19 insertions(+), 54 deletions(-) diff --git a/mappostgis.c b/mappostgis.c index e77304dade..c51df74fe0 100644 --- a/mappostgis.c +++ b/mappostgis.c @@ -766,57 +766,13 @@ int arcCircleCenter(const pointObj *p1, const pointObj *p2, const pointObj *p3, pointObj *center, double *radius) { pointObj c; - double r; - - /* Components of the matrices. */ - double x1sq = p1->x * p1->x; - double x2sq = p2->x * p2->x; - double x3sq = p3->x * p3->x; - double y1sq = p1->y * p1->y; - double y2sq = p2->y * p2->y; - double y3sq = p3->y * p3->y; - double matrix_num_x[9]; - double matrix_num_y[9]; - double matrix_denom[9]; - - /* Intialize matrix_num_x */ - matrix_num_x[0] = x1sq+y1sq; - matrix_num_x[1] = p1->y; - matrix_num_x[2] = 1.0; - matrix_num_x[3] = x2sq+y2sq; - matrix_num_x[4] = p2->y; - matrix_num_x[5] = 1.0; - matrix_num_x[6] = x3sq+y3sq; - matrix_num_x[7] = p3->y; - matrix_num_x[8] = 1.0; - - /* Intialize matrix_num_y */ - matrix_num_y[0] = p1->x; - matrix_num_y[1] = x1sq+y1sq; - matrix_num_y[2] = 1.0; - matrix_num_y[3] = p2->x; - matrix_num_y[4] = x2sq+y2sq; - matrix_num_y[5] = 1.0; - matrix_num_y[6] = p3->x; - matrix_num_y[7] = x3sq+y3sq; - matrix_num_y[8] = 1.0; - - /* Intialize matrix_denom */ - matrix_denom[0] = p1->x; - matrix_denom[1] = p1->y; - matrix_denom[2] = 1.0; - matrix_denom[3] = p2->x; - matrix_denom[4] = p2->y; - matrix_denom[5] = 1.0; - matrix_denom[6] = p3->x; - matrix_denom[7] = p3->y; - matrix_denom[8] = 1.0; + double dx21, dy21, dx31, dy31, h21, h31, d, r; /* Circle is closed, so p2 must be opposite p1 & p3. */ - if ( FP_EQ(p1->x,p3->x) && FP_EQ(p1->y,p3->y) ) { - c.x = (p1->x + p2->x) / 2.0; - c.y = (p1->y + p2->y) / 2.0; - r = sqrt( (p1->x - p2->x) * (p1->x - p2->x) + (p1->y - p2->y) * (p1->y - p2->y) ) / 2.0; + if ((fabs(p1->x - p3->x) < FP_EPSILON) && (fabs(p1->y-p3->y) < FP_EPSILON)) { + c.x = p1->x + (p2->x - p1->x) / 2.0; + c.y = p1->y + (p2->y - p1->y) / 2.0; + r = sqrt(pow(c.x - p1->x, 2.0) + pow(c.y - p1->y, 2.0)); } /* There is no circle here, the points are actually co-linear */ else if ( arcSegmentSide(p1, p3, p2) == FP_COLINEAR ) { @@ -824,13 +780,22 @@ arcCircleCenter(const pointObj *p1, const pointObj *p2, const pointObj *p3, poin } /* Calculate the center and radius. */ else { - double denom = 2.0 * arcDeterminant3x3(matrix_denom); - /* Center components */ - c.x = arcDeterminant3x3(matrix_num_x) / denom; - c.y = arcDeterminant3x3(matrix_num_y) / denom; /* Radius */ - r = sqrt((p1->x-c.x) * (p1->x-c.x) + (p1->y-c.y) * (p1->y-c.y)); + dx21 = p2->x - p1->x; + dy21 = p2->y - p1->y; + dx31 = p3->x - p1->x; + dy31 = p3->y - p1->y; + + h21 = pow(dx21, 2.0) + pow(dy21, 2.0); + h31 = pow(dx31, 2.0) + pow(dy31, 2.0); + + /* 2 * |Cross product|, d<0 means clockwise and d>0 counterclockwise sweeping angle */ + d = 2 * (dx21 * dy31 - dx31 * dy21); + + c.x = p1->x + (h21 * dy31 - h31 * dy21) / d; + c.y = p1->y - (h21 * dx31 - h31 * dx21) / d; + r = sqrt(pow(c.x - p1->x, 2) + pow(c.y - p1->y, 2)); } if ( radius ) *radius = r; From 2a6ad64361b22f01e338d8379f010640a63a153a Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 29 Aug 2016 19:42:50 +0200 Subject: [PATCH 035/221] [OGR] Move all logic to detect if we can use Spatialite dialect to msOGRFileOpen(). No functional change --- mapogr.cpp | 473 ++++++++++++++++++++++++++--------------------------- 1 file changed, 230 insertions(+), 243 deletions(-) diff --git a/mapogr.cpp b/mapogr.cpp index 6bceb5d268..781eac884b 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -65,6 +65,13 @@ typedef struct ms_ogr_file_info_t { int last_record_index_read; + const char* dialect; /* NULL, Spatialite or PostgreSQL */ + char *pszSelect; + char *pszSpatialFilterTableName ; + char *pszMainTableName; + char *pszRowId; + int bIsOKForSQLCompose; + } msOGRFileInfo; static int msOGRLayerIsOpen(layerObj *layer); @@ -1264,6 +1271,193 @@ msOGRFileOpen(layerObj *layer, const char *connection ) psInfo->rect.minx = psInfo->rect.maxx = 0; psInfo->rect.miny = psInfo->rect.maxy = 0; psInfo->last_record_index_read = -1; + psInfo->dialect = NULL; + + // GDAL 1.x API + OGRSFDriverH dr = OGR_DS_GetDriver(hDS); + const char *name = OGR_Dr_GetName(dr); + if (strcmp(name, "SQLite") == 0) { + bool have_spatialite = false; + + CPLPushErrorHandler(CPLQuietErrorHandler); + + // test for Spatialite support in driver + const char *test_spatialite = "SELECT spatialite_version()"; + OGRLayerH l = OGR_DS_ExecuteSQL(hDS, test_spatialite, NULL, NULL); + if (l) { + OGR_DS_ReleaseResultSet(hDS, l); + have_spatialite = true; + } + + // test for Spatialite enabled db + if (have_spatialite) { + have_spatialite = false; + const char *test_sql = "select 1 from sqlite_master where name = 'geometry_columns' and sql LIKE '%spatial_index_enabled%'"; + OGRLayerH l = OGR_DS_ExecuteSQL(hDS, test_sql, NULL, NULL); + if (l) { + if (OGR_L_GetFeatureCount(l, TRUE) == 1) + have_spatialite = true; + OGR_DS_ReleaseResultSet(hDS, l); + } + } + + CPLPopErrorHandler(); + + if (have_spatialite) + psInfo->dialect = "Spatialite"; + else + msDebug("msOGRTranslateMsExpressionToOGRSQL: Native SQL not available, no Spatialite support and/or not a Spatialite enabled db\n"); + } else if (strcmp(name, "PostgreSQL") == 0) { + psInfo->dialect = "PostgreSQL"; + // todo: PostgreSQL not yet tested + + } // todo: other dialects, for example OGR SQL + + + psInfo->pszSelect = NULL; + psInfo->pszSpatialFilterTableName = NULL; + psInfo->pszMainTableName = NULL; + psInfo->pszRowId = NULL; + psInfo->bIsOKForSQLCompose = true; + + // In the case of a SQLite DB, check that we can identify the + // underlying table + if( psInfo->nLayerIndex == -1 && + psInfo->dialect != NULL && EQUAL(psInfo->dialect, "Spatialite") ) + { + psInfo->bIsOKForSQLCompose = false; + + const char* from = strstr( psInfo->pszLayerDef, " from "); + if( from == NULL ) + from = strstr( psInfo->pszLayerDef, " FROM "); + if( from ) + { + const char* pszBeginningOfTable = from + strlen(" FROM "); + const char* pszIter = pszBeginningOfTable; + while( *pszIter && *pszIter != ' ' ) + pszIter ++; + if( strchr(pszIter, ',') == NULL && + strstr(pszIter, " where ") == NULL && strstr(pszIter, " WHERE ") == NULL && + strstr(pszIter, " join ") == NULL && strstr(pszIter, " JOIN ") == NULL && + strstr(pszIter, " order by ") == NULL && strstr(pszIter, " ORDER BY ") == NULL) + { + psInfo->bIsOKForSQLCompose = true; + psInfo->pszMainTableName = msStrdup(pszBeginningOfTable); + psInfo->pszMainTableName[pszIter - pszBeginningOfTable] = '\0'; + psInfo->pszSpatialFilterTableName = msStrdup(psInfo->pszMainTableName); + + char* pszRequest = NULL; + pszRequest = msStringConcatenate(pszRequest, + "SELECT * FROM sqlite_master WHERE type = 'table' AND name = lower('"); + pszRequest = msStringConcatenate(pszRequest, psInfo->pszMainTableName); + pszRequest = msStringConcatenate(pszRequest, "')"); + OGRLayerH hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszRequest, NULL, NULL ); + msFree(pszRequest); + + if( hLayer ) + { + OGRFeatureH hFeature = OGR_L_GetNextFeature(hLayer); + psInfo->bIsOKForSQLCompose = (hFeature != NULL); + if( hFeature ) + OGR_F_Destroy(hFeature); + OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); + } + if( psInfo->bIsOKForSQLCompose ) + { + psInfo->pszSelect = msStrdup(psInfo->pszLayerDef); + } + else + { + // Test if it is a spatial view + pszRequest = msStringConcatenate(NULL, + "SELECT f_table_name, view_rowid FROM views_geometry_columns WHERE view_name = lower('"); + pszRequest = msStringConcatenate(pszRequest, psInfo->pszMainTableName); + pszRequest = msStringConcatenate(pszRequest, "')"); + CPLPushErrorHandler(CPLQuietErrorHandler); + OGRLayerH hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszRequest, NULL, NULL ); + CPLPopErrorHandler(); + msFree(pszRequest); + + if( hLayer ) + { + OGRFeatureH hFeature = OGR_L_GetNextFeature(hLayer); + psInfo->bIsOKForSQLCompose = (hFeature != NULL); + if( hFeature ) + { + psInfo->pszSelect = msStrdup(psInfo->pszLayerDef); + msFree(psInfo->pszSpatialFilterTableName); + psInfo->pszSpatialFilterTableName = msStrdup( OGR_F_GetFieldAsString( hFeature, 0 ) ); + psInfo->pszRowId = msStrdup( OGR_F_GetFieldAsString( hFeature, 1 ) ); + OGR_F_Destroy(hFeature); + } + OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); + } + } + } + } + } + else if( psInfo->dialect != NULL && EQUAL(psInfo->dialect, "Spatialite") ) + { + psInfo->bIsOKForSQLCompose = false; + + char* pszRequest = NULL; + pszRequest = msStringConcatenate(pszRequest, + "SELECT * FROM sqlite_master WHERE type = 'table' AND name = lower('"); + pszRequest = msStringConcatenate(pszRequest, OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); + pszRequest = msStringConcatenate(pszRequest, "')"); + OGRLayerH hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszRequest, NULL, NULL ); + msFree(pszRequest); + + if( hLayer ) + { + OGRFeatureH hFeature = OGR_L_GetNextFeature(hLayer); + psInfo->bIsOKForSQLCompose = (hFeature != NULL); + if( hFeature ) + OGR_F_Destroy(hFeature); + OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); + } + if( psInfo->bIsOKForSQLCompose ) + { + psInfo->pszMainTableName = msStrdup(OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); + psInfo->pszSpatialFilterTableName = msStrdup(psInfo->pszMainTableName); + } + else + { + // Test if it is a spatial view + pszRequest = msStringConcatenate(NULL, + "SELECT f_table_name, view_rowid FROM views_geometry_columns WHERE view_name = lower('"); + pszRequest = msStringConcatenate(pszRequest, OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); + pszRequest = msStringConcatenate(pszRequest, "')"); + CPLPushErrorHandler(CPLQuietErrorHandler); + OGRLayerH hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszRequest, NULL, NULL ); + CPLPopErrorHandler(); + msFree(pszRequest); + + if( hLayer ) + { + OGRFeatureH hFeature = OGR_L_GetNextFeature(hLayer); + psInfo->bIsOKForSQLCompose = (hFeature != NULL); + if( hFeature ) + { + psInfo->pszMainTableName = msStrdup(OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); + psInfo->pszSpatialFilterTableName = msStrdup( OGR_F_GetFieldAsString( hFeature, 0 ) ); + psInfo->pszRowId = msStrdup( OGR_F_GetFieldAsString( hFeature, 1 ) ); + OGR_F_Destroy(hFeature); + } + OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); + } + } + } + + // in the case we cannot handle the native string, go back to the client + // side evaluation by unsetting it. + if( !psInfo->bIsOKForSQLCompose && psInfo->dialect != NULL ) + { + msDebug("msOGRFileOpen(): Falling back to MapServer only evaluation\n"); + psInfo->dialect = NULL; + } + + return psInfo; } @@ -1316,6 +1510,11 @@ static int msOGRFileClose(layerObj *layer, msOGRFileInfo *psInfo ) // Free current tile if there is one. if( psInfo->poCurTile != NULL ) msOGRFileClose( layer, psInfo->poCurTile ); + + msFree(psInfo->pszSelect); + msFree(psInfo->pszSpatialFilterTableName); + msFree(psInfo->pszMainTableName); + msFree(psInfo->pszRowId); CPLFree(psInfo); @@ -1355,7 +1554,7 @@ static char *msOGREscapeSQLParam(layerObj *layer, const char *pszString) // http://www.gaia-gis.it/gaia-sins/spatialite-sql-4.3.0.html static -char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node, const char *dialect) { +char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node) { msOGRFileInfo *info = (msOGRFileInfo *)layer->layerinfo; tokenListNodeObjPtr n = *node; if (!n) return NULL; @@ -1451,7 +1650,7 @@ char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node, const char *dial char wild_any = '%'; char wild_one = '_'; - if (strcmp(dialect, "SQLite") == 0) { + if (EQUAL(info->dialect, "Spatialite")) { if (case_sensitive) { op = "GLOB"; wild_any = '*'; @@ -1467,9 +1666,9 @@ char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node, const char *dial char *regex = msStrdup(n->tokenval.strval); int complex_regex = *n->tokenval.strval == '/'; // could be non-complex but that is soo corner case - // PostgreqSQL has POSIX regexes, SQLite does not by default, OGR does not + // PostgreSQL has POSIX regexes, SQLite does not by default, OGR does not if (complex_regex) { - if (strcmp(dialect, "PostgreSQL") != 0) { + if (!EQUAL(info->dialect, "PostgreSQL")) { msFree(regex); return NULL; } @@ -1556,9 +1755,9 @@ char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node, const char *dial nOutSize = strlen(stresc)+30; out = (char *)msSmallMalloc(nOutSize); const char *type = "float(16)"; - if (strcmp(dialect, "SQLite") == 0) + if (EQUAL(info->dialect, "Spatialite")) type = "REAL"; - else if (strcmp(dialect, "PostgreSQL") == 0) + else if (EQUAL(info->dialect, "PostgreSQL")) type = "double precision"; snprintf(out, nOutSize, "CAST(\"%s\" AS %s)", stresc, type); msFree(stresc); @@ -1652,164 +1851,14 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps return(MS_FAILURE); } - // native_string = dialect=*;sql=* - // dialect is SQLite or PostGIS - const char *dialect = NULL; - if (layer->filter.native_string) { - dialect = layer->filter.native_string + 8; - } - - char *select = NULL; - char* pszSpatialFilterTableName = NULL; - char* pszMainTableName = NULL; - char* pszRowId = NULL; - bool bIsOKForSQLCompose = true; - - // In the case of a SQLite DB, check that we can identify the - // underlying table - if( psInfo->nLayerIndex == -1 && - dialect != NULL && strncmp(dialect, "SQLite", 6) == 0 ) - { - bIsOKForSQLCompose = false; - - const char* from = strstr( psInfo->pszLayerDef, " from "); - if( from == NULL ) - from = strstr( psInfo->pszLayerDef, " FROM "); - if( from ) - { - const char* pszBeginningOfTable = from + strlen(" FROM "); - const char* pszIter = pszBeginningOfTable; - while( *pszIter && *pszIter != ' ' ) - pszIter ++; - if( strchr(pszIter, ',') == NULL && - strstr(pszIter, " where ") == NULL && strstr(pszIter, " WHERE ") == NULL && - strstr(pszIter, " join ") == NULL && strstr(pszIter, " JOIN ") == NULL && - strstr(pszIter, " order by ") == NULL && strstr(pszIter, " ORDER BY ") == NULL) - { - bIsOKForSQLCompose = true; - pszMainTableName = msStrdup(pszBeginningOfTable); - pszMainTableName[pszIter - pszBeginningOfTable] = '\0'; - pszSpatialFilterTableName = msStrdup(pszMainTableName); - - char* pszRequest = NULL; - pszRequest = msStringConcatenate(pszRequest, - "SELECT * FROM sqlite_master WHERE type = 'table' AND name = lower('"); - pszRequest = msStringConcatenate(pszRequest, pszMainTableName); - pszRequest = msStringConcatenate(pszRequest, "')"); - OGRLayerH hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszRequest, NULL, NULL ); - msFree(pszRequest); - - if( hLayer ) - { - OGRFeatureH hFeature = OGR_L_GetNextFeature(hLayer); - bIsOKForSQLCompose = (hFeature != NULL); - if( hFeature ) - OGR_F_Destroy(hFeature); - OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); - } - if( bIsOKForSQLCompose ) - { - select = msStrdup(psInfo->pszLayerDef); - } - else - { - // Test if it is a spatial view - pszRequest = msStringConcatenate(NULL, - "SELECT f_table_name, view_rowid FROM views_geometry_columns WHERE view_name = lower('"); - pszRequest = msStringConcatenate(pszRequest, pszMainTableName); - pszRequest = msStringConcatenate(pszRequest, "')"); - CPLPushErrorHandler(CPLQuietErrorHandler); - OGRLayerH hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszRequest, NULL, NULL ); - CPLPopErrorHandler(); - msFree(pszRequest); - - if( hLayer ) - { - OGRFeatureH hFeature = OGR_L_GetNextFeature(hLayer); - bIsOKForSQLCompose = (hFeature != NULL); - if( hFeature ) - { - select = msStrdup(psInfo->pszLayerDef); - msFree(pszSpatialFilterTableName); - pszSpatialFilterTableName = msStrdup( OGR_F_GetFieldAsString( hFeature, 0 ) ); - pszRowId = msStrdup( OGR_F_GetFieldAsString( hFeature, 1 ) ); - OGR_F_Destroy(hFeature); - } - OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); - } - } - } - } - } - else if( dialect != NULL && strncmp(dialect, "SQLite", 6) == 0 ) - { - bIsOKForSQLCompose = false; - - char* pszRequest = NULL; - pszRequest = msStringConcatenate(pszRequest, - "SELECT * FROM sqlite_master WHERE type = 'table' AND name = lower('"); - pszRequest = msStringConcatenate(pszRequest, OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); - pszRequest = msStringConcatenate(pszRequest, "')"); - OGRLayerH hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszRequest, NULL, NULL ); - msFree(pszRequest); - - if( hLayer ) - { - OGRFeatureH hFeature = OGR_L_GetNextFeature(hLayer); - bIsOKForSQLCompose = (hFeature != NULL); - if( hFeature ) - OGR_F_Destroy(hFeature); - OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); - } - if( bIsOKForSQLCompose ) - { - pszMainTableName = msStrdup(OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); - pszSpatialFilterTableName = msStrdup(pszMainTableName); - } - else - { - // Test if it is a spatial view - pszRequest = msStringConcatenate(NULL, - "SELECT f_table_name, view_rowid FROM views_geometry_columns WHERE view_name = lower('"); - pszRequest = msStringConcatenate(pszRequest, OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); - pszRequest = msStringConcatenate(pszRequest, "')"); - CPLPushErrorHandler(CPLQuietErrorHandler); - OGRLayerH hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszRequest, NULL, NULL ); - CPLPopErrorHandler(); - msFree(pszRequest); - - if( hLayer ) - { - OGRFeatureH hFeature = OGR_L_GetNextFeature(hLayer); - bIsOKForSQLCompose = (hFeature != NULL); - if( hFeature ) - { - pszMainTableName = msStrdup(OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); - pszSpatialFilterTableName = msStrdup( OGR_F_GetFieldAsString( hFeature, 0 ) ); - pszRowId = msStrdup( OGR_F_GetFieldAsString( hFeature, 1 ) ); - OGR_F_Destroy(hFeature); - } - OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); - } - } - } - - // in the case we cannot handle the native string, go back to the client - // side evaluation by unsetting it. - if( !bIsOKForSQLCompose && dialect != NULL && layer->filter.native_string ) - { - msDebug("msOGRFileWhichShapes(): unsetting native_string. Falling back to MapServer only evaluation\n"); - msFree( layer->filter.native_string ); - layer->filter.native_string = NULL; - dialect = NULL; - } + char *select = (psInfo->pszSelect) ? msStrdup(psInfo->pszSelect) : NULL; // we'll go strictly two possible ways: // 1) GetLayer + SetFilter // 2) ExecuteSQL (psInfo->hLayer is an SQL result OR sortBy was requested OR have native_string // and start from the second - if ( bIsOKForSQLCompose && (psInfo->nLayerIndex == -1 || layer->sortBy.nProperties > 0 || layer->filter.native_string) ) { + if ( psInfo->bIsOKForSQLCompose && (psInfo->nLayerIndex == -1 || layer->sortBy.nProperties > 0 || layer->filter.native_string) ) { if( psInfo->nLayerIndex == -1 && select == NULL ) { select = msStrdup(psInfo->pszLayerDef); @@ -1861,13 +1910,10 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps filter = msStringConcatenate(filter, msLayerGetProcessingKey(layer, "NATIVE_FILTER")); filter = msStringConcatenate(filter, ")"); } - - // native_string = dialect=*;sql=* - // dialect is SQLite or PostGIS - if (dialect) { - if (strncmp(dialect, "SQLite", 6) == 0 || strncmp(dialect, "PostgreSQL", 10) == 0) { - char *sql = strstr(layer->filter.native_string, ";sql=") + 5; + if (psInfo->dialect) { + if (EQUAL(psInfo->dialect, "Spatialite") || EQUAL(psInfo->dialect, "PostgreSQL")) { + const char *sql = layer->filter.native_string; if (*sql == '\0') sql = NULL; if (sql) { if (filter) filter = msStringConcatenate(filter, "AND "); @@ -1895,8 +1941,8 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps psInfo->rect = rect; // use spatial index - if (dialect) { - if (strncmp(dialect, "PostgreSQL", 10) == 0) { + if (psInfo->dialect) { + if (EQUAL(psInfo->dialect, "PostgreSQL")) { if (filter) filter = msStringConcatenate(filter, " AND"); const char *col = OGR_L_GetGeometryColumn(psInfo->hLayer); // which geom field?? filter = msStringConcatenate(filter, " ("); @@ -1907,20 +1953,20 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps filter = msStringConcatenate(filter, points); msFree(points); filter = msStringConcatenate(filter, "))"); - } else if (strncmp(dialect, "SQLite", 6) == 0) { + } else if (EQUAL(psInfo->dialect, "Spatialite")) { if (filter) filter = msStringConcatenate(filter, " AND"); filter = msStringConcatenate(filter, " "); - filter = msStringConcatenate(filter, pszMainTableName); + filter = msStringConcatenate(filter, psInfo->pszMainTableName); filter = msStringConcatenate(filter, "."); const char* pszFIDColumn = OGR_L_GetFIDColumn(psInfo->hLayer); - if( pszRowId ) - filter = msStringConcatenate(filter, pszRowId); + if( psInfo->pszRowId ) + filter = msStringConcatenate(filter, psInfo->pszRowId); else if( pszFIDColumn != NULL && pszFIDColumn[0] != '\0' ) filter = msStringConcatenate(filter, pszFIDColumn); else filter = msStringConcatenate(filter, "ROWID"); filter = msStringConcatenate(filter, " IN (SELECT ROWID FROM SpatialIndex WHERE f_table_name = '"); - filter = msStringConcatenate(filter, pszSpatialFilterTableName); + filter = msStringConcatenate(filter, psInfo->pszSpatialFilterTableName); filter = msStringConcatenate(filter, "' "); const char* pszGeometryColumn = OGR_L_GetGeometryColumn(psInfo->hLayer); if( pszGeometryColumn != NULL && pszGeometryColumn[0] != '\0' ) { @@ -1983,9 +2029,6 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps RELEASE_OGR_LOCK; msSetError(MS_OGRERR, "ExecuteSQL(%s) failed.\n%s", "msOGRFileWhichShapes()", select, CPLGetLastErrorMsg()); msFree(select); - msFree(pszMainTableName); - msFree(pszSpatialFilterTableName); - msFree(pszRowId); return MS_FAILURE; } @@ -2052,9 +2095,6 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps msSetError(MS_OGRERR, "SetAttributeFilter(%s) failed on layer %s.\n%s", "msOGRFileWhichShapes()", layer->filter.string+6, layer->name?layer->name:"(null)", CPLGetLastErrorMsg() ); RELEASE_OGR_LOCK; msFree(pszOGRFilter); - msFree(pszMainTableName); - msFree(pszSpatialFilterTableName); - msFree(pszRowId); msFree(select); return MS_FAILURE; } @@ -2064,9 +2104,6 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps } - msFree(pszMainTableName); - msFree(pszSpatialFilterTableName); - msFree(pszRowId); msFree(select); /* ------------------------------------------------------------------ @@ -2578,8 +2615,6 @@ static int msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, char *filteritem) { #ifdef USE_OGR - char *result = NULL; - msOGRFileInfo *info = (msOGRFileInfo *)layer->layerinfo; // reasons to not produce native string: not simple layer, or an explicit deny @@ -2588,49 +2623,8 @@ static int msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, return MS_SUCCESS; } - // GDAL 1.x API - OGRSFDriverH dr = OGR_DS_GetDriver(info->hDS); - const char *name = OGR_Dr_GetName(dr); - const char *dialect = NULL; - if (strcmp(name, "SQLite") == 0) { - bool have_spatialite = false; - - CPLPushErrorHandler(CPLQuietErrorHandler); - - // test for Spatialite support in driver - const char *test_spatialite = "SELECT spatialite_version()"; - OGRLayerH l = OGR_DS_ExecuteSQL(info->hDS, test_spatialite, NULL, NULL); - if (l) { - OGR_DS_ReleaseResultSet(info->hDS, l); - have_spatialite = true; - } - - // test for Spatialite enabled db - if (have_spatialite) { - have_spatialite = false; - const char *test_sql = "select 1 from sqlite_master where name = 'geometry_columns' and sql LIKE '%spatial_index_enabled%'"; - OGRLayerH l = OGR_DS_ExecuteSQL(info->hDS, test_sql, NULL, NULL); - if (l) { - if (OGR_L_GetFeatureCount(l, TRUE) == 1) - have_spatialite = true; - OGR_DS_ReleaseResultSet(info->hDS, l); - } - } - - CPLPopErrorHandler(); - - if (have_spatialite) - dialect = "SQLite"; - else - msDebug("msOGRTranslateMsExpressionToOGRSQL: Native SQL not available, no Spatialite support and/or not a Spatialite enabled db\n"); - } else if (strcmp(name, "PostgreSQL") == 0) { - dialect = "PostgreSQL"; - // todo: PostgreSQL not yet tested - - } // todo: other dialects, for example OGR SQL - // more reasons to not produce native string: not a recognized driver - if (!dialect) { + if (!info->dialect) { return MS_SUCCESS; } @@ -2643,7 +2637,7 @@ static int msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, sql = msStringConcatenate(sql, "\""); sql = msStringConcatenate(sql, layer->filteritem); sql = msStringConcatenate(sql, "\""); - if (strcmp(dialect, "PostgreSQL") == 0) { + if (EQUAL(info->dialect, "PostgreSQL") ) { sql = msStringConcatenate(sql, " ~ "); } else { sql = msStringConcatenate(sql, " LIKE "); @@ -2682,7 +2676,7 @@ static int msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, x = x->next; // skip ( x = x->next; // skip field name x = x->next; // skip , - char *a = msOGRGetToken(layer, &x, dialect); + char *a = msOGRGetToken(layer, &x); // skip "ST_GeomFromText(' from a char *wkt = a+17; OGRGeometryH hSpatialFilter; @@ -2703,9 +2697,9 @@ static int msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, while (node != NULL) { if (node->next && node->next->token == MS_TOKEN_COMPARISON_IEQ) { - char *left = msOGRGetToken(layer, &node, dialect); + char *left = msOGRGetToken(layer, &node); node = node->next; // skip = - char *right = msOGRGetToken(layer, &node, dialect); + char *right = msOGRGetToken(layer, &node); sql = msStringConcatenate(sql, "upper("); sql = msStringConcatenate(sql, left); sql = msStringConcatenate(sql, ")"); @@ -2734,19 +2728,19 @@ static int msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, case MS_TOKEN_COMPARISON_CONTAINS: case MS_TOKEN_COMPARISON_EQUALS:{ int token = node->token; - char *fct = msOGRGetToken(layer, &node, dialect); + char *fct = msOGRGetToken(layer, &node); node = node->next; // skip ( - char *a1 = msOGRGetToken(layer, &node, dialect); + char *a1 = msOGRGetToken(layer, &node); node = node->next; // skip , - char *a2 = msOGRGetToken(layer, &node, dialect); + char *a2 = msOGRGetToken(layer, &node); char *a3 = NULL; if (token == MS_TOKEN_COMPARISON_DWITHIN || token == MS_TOKEN_COMPARISON_BEYOND) { node = node->next; // skip , - a3 = msOGRGetToken(layer, &node, dialect); + a3 = msOGRGetToken(layer, &node); } node = node->next; // skip ) - char *eq = msOGRGetToken(layer, &node, dialect); - char *rval = msOGRGetToken(layer, &node, dialect); + char *eq = msOGRGetToken(layer, &node); + char *rval = msOGRGetToken(layer, &node); if (strcmp(eq, " != ") == 0 || strcmp(rval, "FALSE") == 0) { sql = msStringConcatenate(sql, "NOT "); } @@ -2782,7 +2776,7 @@ static int msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, break; } default: { - char *token = msOGRGetToken(layer, &node, dialect); + char *token = msOGRGetToken(layer, &node); if (!token) { goto fail; } @@ -2792,14 +2786,7 @@ static int msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, } } - // compose the result, it is parsed in msOGRFileWhichShapes - result = msStringConcatenate(result, "dialect="); - result = msStringConcatenate(result, dialect); - result = msStringConcatenate(result, ";sql="); - result = msStringConcatenate(result, sql); - msFree(sql); - - layer->filter.native_string = result; + layer->filter.native_string = sql; return MS_SUCCESS; fail: // error producing native string From 8ae17b3fd59b822f23b9276f7d53e418b8caf63b Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 29 Aug 2016 20:18:22 +0200 Subject: [PATCH 036/221] [OGR] Enable translation for maxfeatures/startindex to SQL LIMIT/OFFSET in Spatialite case --- mapogr.cpp | 80 +++++++++++++++++-- .../wxs/expected/wfs_ogr_native_sql_37.xml | 41 ++++++++++ msautotest/wxs/wfs_ogr_native_sql.map | 2 + 3 files changed, 117 insertions(+), 6 deletions(-) create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_37.xml diff --git a/mapogr.cpp b/mapogr.cpp index 781eac884b..2c4f32ca6f 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -72,6 +72,8 @@ typedef struct ms_ogr_file_info_t { char *pszRowId; int bIsOKForSQLCompose; + int bPaging; + } msOGRFileInfo; static int msOGRLayerIsOpen(layerObj *layer); @@ -1457,7 +1459,7 @@ msOGRFileOpen(layerObj *layer, const char *connection ) psInfo->dialect = NULL; } - + psInfo->bPaging = (psInfo->dialect != NULL); return psInfo; } @@ -1858,7 +1860,10 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps // 2) ExecuteSQL (psInfo->hLayer is an SQL result OR sortBy was requested OR have native_string // and start from the second - if ( psInfo->bIsOKForSQLCompose && (psInfo->nLayerIndex == -1 || layer->sortBy.nProperties > 0 || layer->filter.native_string) ) { + if ( psInfo->bIsOKForSQLCompose && (psInfo->nLayerIndex == -1 || + layer->sortBy.nProperties > 0 || + layer->filter.native_string || + (psInfo->bPaging && layer->maxfeatures > 0)) ) { if( psInfo->nLayerIndex == -1 && select == NULL ) { select = msStrdup(psInfo->pszLayerDef); @@ -1914,8 +1919,7 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps if (psInfo->dialect) { if (EQUAL(psInfo->dialect, "Spatialite") || EQUAL(psInfo->dialect, "PostgreSQL")) { const char *sql = layer->filter.native_string; - if (*sql == '\0') sql = NULL; - if (sql) { + if (sql && *sql != '\0') { if (filter) filter = msStringConcatenate(filter, "AND "); filter = msStringConcatenate(filter, "("); filter = msStringConcatenate(filter, sql); @@ -2013,7 +2017,19 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps select = msStringConcatenate(select, sort); msFree(sort); } - + + if ( psInfo->bPaging && layer->maxfeatures >= 0 ) { + char szLimit[50]; + snprintf(szLimit, sizeof(szLimit), " LIMIT %d", layer->maxfeatures); + select = msStringConcatenate(select, szLimit); + } + + if ( psInfo->bPaging && layer->startindex > 0 ) { + char szOffset[50]; + snprintf(szOffset, sizeof(szOffset), " OFFSET %d", layer->startindex); + select = msStringConcatenate(select, szOffset); + } + if( layer->debug ) msDebug("msOGRFileWhichShapes: SQL = %s.\n", select); @@ -4274,6 +4290,57 @@ static int msOGRLayerSupportsCommonFilters(layerObj *layer) return MS_FALSE; } +static void msOGREnablePaging(layerObj *layer, int value) +{ +#ifdef USE_OGR + msOGRFileInfo *layerinfo = NULL; + + if (layer->debug) { + msDebug("msOGREnablePaging(%d) called.\n", value); + } + if( value < 0 ) + return; + + if(!msOGRLayerIsOpen(layer)) + msOGRLayerOpenVT(layer); + + assert( layer->layerinfo != NULL); + + layerinfo = (msOGRFileInfo *)layer->layerinfo; + layerinfo->bPaging = value; + +#else + msSetError( MS_MISCERR, + "OGR support is not available.", + "msOGREnablePaging()"); +#endif + return; +} + +static int msOGRGetPaging(layerObj *layer) +{ +#ifdef USE_POSTGIS + msOGRFileInfo *layerinfo = NULL; + + if (layer->debug) { + msDebug("msOGRGetPaging called.\n"); + } + + if(!msOGRLayerIsOpen(layer)) + return -1; + + assert( layer->layerinfo != NULL); + + layerinfo = (msOGRFileInfo *)layer->layerinfo; + return layerinfo->bPaging; +#else + msSetError( MS_MISCERR, + "OGR support is not available.", + "msOGREnablePaging()"); + return MS_FAILURE; +#endif +} + /************************************************************************/ /* msOGRLayerInitializeVirtualTable() */ /************************************************************************/ @@ -4305,7 +4372,8 @@ int msOGRLayerInitializeVirtualTable(layerObj *layer) layer->vtable->LayerEscapeSQLParam = msOGREscapeSQLParam; layer->vtable->LayerEscapePropertyName = msOGREscapePropertyName; - + layer->vtable->LayerEnablePaging = msOGREnablePaging; + layer->vtable->LayerGetPaging = msOGRGetPaging; return MS_SUCCESS; } diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_37.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_37.xml new file mode 100644 index 0000000000..f1e2cbabaf --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_37.xml @@ -0,0 +1,41 @@ +Content-Type: text/xml; subtype="gml/3.2.1"; charset=UTF-8 + + + + + + 656907.12000 4886687.84000 + 656907.12000 4886687.84000 + + + + + + + + 656907.12000 4886687.84000 + 656907.12000 4886687.84000 + + + + + 656907.12000 4886687.84000 + + + Granaglione + 2116 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/wfs_ogr_native_sql.map b/msautotest/wxs/wfs_ogr_native_sql.map index 3962cbae6f..0251f6240d 100644 --- a/msautotest/wxs/wfs_ogr_native_sql.map +++ b/msautotest/wxs/wfs_ogr_native_sql.map @@ -74,6 +74,8 @@ # Same as wfs_ogr_native_sql_02 on a SELECT too complex to be edited, so falling back to client side evaluation # RUN_PARMS: wfs_ogr_native_sql_36.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=select_too_complex_for_optim&OUTPUTFORMAT=GML2&FILTER=Geometry643159,4877386 696879,4898059nameFanano" > [RESULT] # +# Test COUNT, STARTINDEX +# RUN_PARMS: wfs_ogr_native_sql_37.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=towns&COUNT=1&STARTINDEX=2" > [RESULT_DEVERSION] MAP From 892deaf5a84e9a619ffc1f6ca2d6ec37dceaab7b Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 29 Aug 2016 20:22:56 +0200 Subject: [PATCH 037/221] [OGR] Fix build when USE_OGR is not defined --- mapogr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapogr.cpp b/mapogr.cpp index 2c4f32ca6f..389379e3a4 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -4319,7 +4319,7 @@ static void msOGREnablePaging(layerObj *layer, int value) static int msOGRGetPaging(layerObj *layer) { -#ifdef USE_POSTGIS +#ifdef USE_OGR msOGRFileInfo *layerinfo = NULL; if (layer->debug) { From e6b66a66e74351e39ddc7d0628df5340aa1ab7b1 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 29 Aug 2016 20:31:52 +0200 Subject: [PATCH 038/221] [OGR] Fix msOGRGetPaging() --- mapogr.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mapogr.cpp b/mapogr.cpp index 389379e3a4..4cddf6e3ec 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -4298,8 +4298,6 @@ static void msOGREnablePaging(layerObj *layer, int value) if (layer->debug) { msDebug("msOGREnablePaging(%d) called.\n", value); } - if( value < 0 ) - return; if(!msOGRLayerIsOpen(layer)) msOGRLayerOpenVT(layer); @@ -4327,7 +4325,7 @@ static int msOGRGetPaging(layerObj *layer) } if(!msOGRLayerIsOpen(layer)) - return -1; + msOGRLayerOpenVT(layer); assert( layer->layerinfo != NULL); From e3ff20af22214696a5c8a2bdae89cc1b280bed1b Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 30 Aug 2016 00:12:14 +0200 Subject: [PATCH 039/221] [OGR] Propagate LIMIT to spatialite spatial filter sub-query, when possible --- mapogr.cpp | 27 ++++++++++++- .../wxs/expected/wfs_ogr_native_sql_37.xml | 14 +++---- .../wxs/expected/wfs_ogr_native_sql_38.xml | 39 +++++++++++++++++++ msautotest/wxs/wfs_ogr_native_sql.map | 1 + 4 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_38.xml diff --git a/mapogr.cpp b/mapogr.cpp index 4cddf6e3ec..ef18ee621c 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -1944,6 +1944,7 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps } psInfo->rect = rect; + bool bOffsetAlreadyAdded = false; // use spatial index if (psInfo->dialect) { if (EQUAL(psInfo->dialect, "PostgreSQL")) { @@ -1983,7 +1984,29 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps snprintf(points, 30*2*5, "%lf %lf,%lf %lf,%lf %lf,%lf %lf,%lf %lf", rect.minx, rect.miny, rect.maxx, rect.miny, rect.maxx, rect.maxy, rect.minx, rect.maxy, rect.minx, rect.miny); filter = msStringConcatenate(filter, points); msFree(points); - filter = msStringConcatenate(filter, "))'))"); + filter = msStringConcatenate(filter, "))')"); + + // We put the limit in the sub-query, only if we don't have a + // order by later. We accept a startindex, provided there's no + // other attribute filter combined + if ( psInfo->bPaging && layer->maxfeatures >= 0 && + (layer->startindex <= 0 || layer->filter.native_string == NULL) && + layer->sortBy.nProperties == 0 ) + { + char szLimit[50]; + snprintf(szLimit, sizeof(szLimit), " LIMIT %d", layer->maxfeatures); + filter = msStringConcatenate(filter, szLimit); + + if( layer->startindex > 0 && layer->filter.native_string == NULL ) + { + bOffsetAlreadyAdded = true; + char szOffset[50]; + snprintf(szOffset, sizeof(szOffset), " OFFSET %d", layer->startindex); + filter = msStringConcatenate(filter, szOffset); + } + } + + filter = msStringConcatenate(filter, ")"); } } @@ -2024,7 +2047,7 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps select = msStringConcatenate(select, szLimit); } - if ( psInfo->bPaging && layer->startindex > 0 ) { + if ( !bOffsetAlreadyAdded && psInfo->bPaging && layer->startindex > 0 ) { char szOffset[50]; snprintf(szOffset, sizeof(szOffset), " OFFSET %d", layer->startindex); select = msStringConcatenate(select, szOffset); diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_37.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_37.xml index f1e2cbabaf..c3f87fceaf 100644 --- a/msautotest/wxs/expected/wfs_ogr_native_sql_37.xml +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_37.xml @@ -12,8 +12,8 @@ Content-Type: text/xml; subtype="gml/3.2.1"; charset=UTF-8 next="http://localhost/path/to/wfs_simple?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=towns&COUNT=1&STARTINDEX=3"> - 656907.12000 4886687.84000 - 656907.12000 4886687.84000 + 641470.51000 4898995.21000 + 641470.51000 4898995.21000 @@ -21,17 +21,17 @@ Content-Type: text/xml; subtype="gml/3.2.1"; charset=UTF-8 - 656907.12000 4886687.84000 - 656907.12000 4886687.84000 + 641470.51000 4898995.21000 + 641470.51000 4898995.21000 - 656907.12000 4886687.84000 + 641470.51000 4898995.21000 - Granaglione - 2116 + Sestola + 2670 1 0 0 diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_38.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_38.xml new file mode 100644 index 0000000000..595b51c57b --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_38.xml @@ -0,0 +1,39 @@ +Content-Type: text/xml; subtype="gml/3.2.1"; charset=UTF-8 + + + + + + 656907.12000 4886687.84000 + 656907.12000 4886687.84000 + + + + + + + + 656907.12000 4886687.84000 + 656907.12000 4886687.84000 + + + + + 656907.12000 4886687.84000 + + + Granaglione + 2116 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/wfs_ogr_native_sql.map b/msautotest/wxs/wfs_ogr_native_sql.map index 0251f6240d..7a89ea79be 100644 --- a/msautotest/wxs/wfs_ogr_native_sql.map +++ b/msautotest/wxs/wfs_ogr_native_sql.map @@ -76,6 +76,7 @@ # # Test COUNT, STARTINDEX # RUN_PARMS: wfs_ogr_native_sql_37.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=towns&COUNT=1&STARTINDEX=2" > [RESULT_DEVERSION] +# RUN_PARMS: wfs_ogr_native_sql_38.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=towns&COUNT=1&FILTER=nameGranaglione" > [RESULT_DEVERSION] MAP From 2f547e17c669b1cc8ef5d42e472988498903a899 Mon Sep 17 00:00:00 2001 From: geographika Date: Fri, 1 Apr 2016 01:03:34 +0200 Subject: [PATCH 040/221] Update comments --- maputfgrid.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/maputfgrid.cpp b/maputfgrid.cpp index fb78332ae7..60bf600512 100644 --- a/maputfgrid.cpp +++ b/maputfgrid.cpp @@ -284,10 +284,10 @@ band_type addToTable(UTFGridRenderer *r, shapeObj *p) /* Simple operation so we don't have unavailable char in the JSON */ utfvalue = encodeForRendering(utfvalue); - /* Datas are added to the table */ + /* Data added to the table */ r->data->table[r->data->counter].datavalues = msEvalTextExpressionJSonEscape(&r->utflayer->utfdata, p); - /* If UTFITEM is set in the mapfiles we add its value to the table */ + /* If UTFITEM is set in the mapfile we add its value to the table */ if(r->useutfitem) r->data->table[r->data->counter].itemvalue = msStrdup(p->values[r->utflayer->utfitemindex]); @@ -463,7 +463,7 @@ int utfgridCleanData(imageObj *img) } /* - * Print the renderer datas as a JSON. + * Print the renderer data as JSON. */ int utfgridSaveImage(imageObj *img, mapObj *map, FILE *fp, outputFormatObj *format) { @@ -483,25 +483,25 @@ int utfgridSaveImage(imageObj *img, mapObj *map, FILE *fp, outputFormatObj *form msIO_fprintf(fp,"{\"grid\":["); - /* Print the buffer, also */ + /* Print the buffer */ for(row=0; rowwidth/renderer->utfresolution; col++) { - /* Get the datas from buffer. */ + /* Get the data from buffer. */ pixelid = renderer->buffer[(row*imgwidth)+col]; *stringptr = pixelid; stringptr++; } - /* Convertion to UTF-8 encoding */ + /* Conversion to UTF-8 encoding */ *stringptr = '\0'; char * utf8; utf8 = msConvertWideStringToUTF8 (string, "UCS-4LE"); @@ -513,7 +513,7 @@ int utfgridSaveImage(imageObj *img, mapObj *map, FILE *fp, outputFormatObj *form msIO_fprintf(fp,"],\"keys\":[\"\""); - /* Prints the key specified */ + /* Print the specified key */ for(i=0;idata->counter;i++) { msIO_fprintf(fp,","); @@ -530,7 +530,7 @@ int utfgridSaveImage(imageObj *img, mapObj *map, FILE *fp, outputFormatObj *form msIO_fprintf(fp,"],\"data\":{"); - /* Print the datas */ + /* Print the data */ if(renderer->useutfdata) { for(i=0;idata->counter;i++) { if(i!=0) @@ -606,7 +606,7 @@ int utfgridEndLayer(imageObj *img, mapObj *map, layerObj *layer) } /* - * Do the table operations on the shapes. Allow multiple type of data to be rendered. + * Do the table operations on the shapes. Allow multiple types of data to be rendered. */ int utfgridStartShape(imageObj *img, shapeObj *shape) { @@ -633,7 +633,7 @@ int utfgridEndShape(imageObj *img, shapeObj *shape) } /* - * Function that render polygons into UTFGrid. + * Function that renders polygons into UTFGrid. */ int utfgridRenderPolygon(imageObj *img, shapeObj *polygonshape, colorObj *color) { @@ -652,8 +652,8 @@ int utfgridRenderPolygon(imageObj *img, shapeObj *polygonshape, colorObj *color) } /* - * Function that render lines into UTFGrid. Starts by looking if the line is a polygon - * outline. Then draw it if it's not. + * Function that renders lines into UTFGrid. Starts by looking if the line is a polygon + * outline, draw it if it's not. */ int utfgridRenderLine(imageObj *img, shapeObj *lineshape, strokeStyleObj *linestyle) { @@ -710,7 +710,7 @@ int utfgridRenderVectorSymbol(imageObj *img, double x, double y, symbolObj *symb } /* - * Function that render Pixmap type symbols into UTFGrid. + * Function that renders Pixmap type symbols into UTFGrid. */ int utfgridRenderPixmapSymbol(imageObj *img, double x, double y, symbolObj *symbol, symbolStyleObj * style) { From 9b8a907eb6bf076b0ab1399a55245662294c0ce1 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 2 Sep 2016 10:40:48 +0200 Subject: [PATCH 041/221] [OGR] Do not install spatial filter on a layer without geometry to avoid a OGR error to be triggered at msOGRFileNextShape() time (typical of a SQLite/Spatialite/GPKG SQL select layer that returns zero records) (#5317) --- mapogr.cpp | 52 ++++++++++--------- .../wxs/expected/wfs_ogr_native_sql_39.xml | 16 ++++++ msautotest/wxs/wfs_ogr_native_sql.map | 25 +++++++++ 3 files changed, 68 insertions(+), 25 deletions(-) create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_39.xml diff --git a/mapogr.cpp b/mapogr.cpp index ef18ee621c..333810c9fb 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -2087,31 +2087,33 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps ACQUIRE_OGR_LOCK; - if (rect.minx == rect.maxx && rect.miny == rect.maxy) { - OGRGeometryH hSpatialFilterPoint = OGR_G_CreateGeometry( wkbPoint ); - - OGR_G_SetPoint_2D( hSpatialFilterPoint, 0, rect.minx, rect.miny ); - OGR_L_SetSpatialFilter( psInfo->hLayer, hSpatialFilterPoint ); - OGR_G_DestroyGeometry( hSpatialFilterPoint ); - } else if (rect.minx == rect.maxx || rect.miny == rect.maxy) { - OGRGeometryH hSpatialFilterLine = OGR_G_CreateGeometry( wkbLineString ); - - OGR_G_AddPoint_2D( hSpatialFilterLine, rect.minx, rect.miny ); - OGR_G_AddPoint_2D( hSpatialFilterLine, rect.maxx, rect.maxy ); - OGR_L_SetSpatialFilter( psInfo->hLayer, hSpatialFilterLine ); - OGR_G_DestroyGeometry( hSpatialFilterLine ); - } else { - OGRGeometryH hSpatialFilterPolygon = OGR_G_CreateGeometry( wkbPolygon ); - OGRGeometryH hRing = OGR_G_CreateGeometry( wkbLinearRing ); - - OGR_G_AddPoint_2D( hRing, rect.minx, rect.miny); - OGR_G_AddPoint_2D( hRing, rect.maxx, rect.miny); - OGR_G_AddPoint_2D( hRing, rect.maxx, rect.maxy); - OGR_G_AddPoint_2D( hRing, rect.minx, rect.maxy); - OGR_G_AddPoint_2D( hRing, rect.minx, rect.miny); - OGR_G_AddGeometryDirectly( hSpatialFilterPolygon, hRing ); - OGR_L_SetSpatialFilter( psInfo->hLayer, hSpatialFilterPolygon ); - OGR_G_DestroyGeometry( hSpatialFilterPolygon ); + if( OGR_L_GetGeomType( psInfo->hLayer ) != wkbNone ) { + if (rect.minx == rect.maxx && rect.miny == rect.maxy) { + OGRGeometryH hSpatialFilterPoint = OGR_G_CreateGeometry( wkbPoint ); + + OGR_G_SetPoint_2D( hSpatialFilterPoint, 0, rect.minx, rect.miny ); + OGR_L_SetSpatialFilter( psInfo->hLayer, hSpatialFilterPoint ); + OGR_G_DestroyGeometry( hSpatialFilterPoint ); + } else if (rect.minx == rect.maxx || rect.miny == rect.maxy) { + OGRGeometryH hSpatialFilterLine = OGR_G_CreateGeometry( wkbLineString ); + + OGR_G_AddPoint_2D( hSpatialFilterLine, rect.minx, rect.miny ); + OGR_G_AddPoint_2D( hSpatialFilterLine, rect.maxx, rect.maxy ); + OGR_L_SetSpatialFilter( psInfo->hLayer, hSpatialFilterLine ); + OGR_G_DestroyGeometry( hSpatialFilterLine ); + } else { + OGRGeometryH hSpatialFilterPolygon = OGR_G_CreateGeometry( wkbPolygon ); + OGRGeometryH hRing = OGR_G_CreateGeometry( wkbLinearRing ); + + OGR_G_AddPoint_2D( hRing, rect.minx, rect.miny); + OGR_G_AddPoint_2D( hRing, rect.maxx, rect.miny); + OGR_G_AddPoint_2D( hRing, rect.maxx, rect.maxy); + OGR_G_AddPoint_2D( hRing, rect.minx, rect.maxy); + OGR_G_AddPoint_2D( hRing, rect.minx, rect.miny); + OGR_G_AddGeometryDirectly( hSpatialFilterPolygon, hRing ); + OGR_L_SetSpatialFilter( psInfo->hLayer, hSpatialFilterPolygon ); + OGR_G_DestroyGeometry( hSpatialFilterPolygon ); + } } psInfo->rect = rect; diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_39.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_39.xml new file mode 100644 index 0000000000..f3b6e9d5ad --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_39.xml @@ -0,0 +1,16 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + missing + + + diff --git a/msautotest/wxs/wfs_ogr_native_sql.map b/msautotest/wxs/wfs_ogr_native_sql.map index 7a89ea79be..5dac5e2356 100644 --- a/msautotest/wxs/wfs_ogr_native_sql.map +++ b/msautotest/wxs/wfs_ogr_native_sql.map @@ -77,6 +77,9 @@ # Test COUNT, STARTINDEX # RUN_PARMS: wfs_ogr_native_sql_37.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=towns&COUNT=1&STARTINDEX=2" > [RESULT_DEVERSION] # RUN_PARMS: wfs_ogr_native_sql_38.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=towns&COUNT=1&FILTER=nameGranaglione" > [RESULT_DEVERSION] +# +# Spatial query on a layer (unoptimized case with a 'SELECT ... FROM ... WHERE' DATA statement) that returns zero features +# RUN_PARMS: wfs_ogr_native_sql_39.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=select_zero_feature&OUTPUTFORMAT=GML2&FILTER=Geometry659159,4877386 696879,4898059" > [RESULT] MAP @@ -222,4 +225,26 @@ LAYER TEMPLATE "wfs_ogr_native_sql.map" END # Layer +LAYER + NAME select_zero_feature + DATA "SELECT * FROM towns WHERE 0" + CONNECTIONTYPE OGR + CONNECTION "./data/db.sqlite" + PROCESSING "NATIVE_SQL=YES" + METADATA + "ows_title" "select_zero_feature" + "wfs_featureid" "ID" + "gml_include_items" "all" + "gml_types" "auto" + "wfs_getfeature_formatlist" "ogrgml" + END + TYPE POINT + STATUS ON + PROJECTION + "init=epsg:32632" + END + + TEMPLATE "wfs_ogr_native_sql.map" +END # Layer + END # Map File From f8e104e59df25e8a96bad8e36ca99539a353aae5 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 8 Sep 2016 11:20:16 +0200 Subject: [PATCH 042/221] msGetInnerList(): fix behaviour for inner ring touching its outer ring (#5299) Currently the behaviour was undefined if the first point of the inner ring touched its outer ring. --- mapprimitive.c | 12 ++++++- msautotest/wxs/data/test5299.csv | 2 ++ msautotest/wxs/expected/wfs_test5299.xml | 45 ++++++++++++++++++++++++ msautotest/wxs/wfs_test5299.map | 41 +++++++++++++++++++++ 4 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 msautotest/wxs/data/test5299.csv create mode 100644 msautotest/wxs/expected/wfs_test5299.xml create mode 100644 msautotest/wxs/wfs_test5299.map diff --git a/mapprimitive.c b/mapprimitive.c index 3d488d86c3..c7cd9826be 100644 --- a/mapprimitive.c +++ b/mapprimitive.c @@ -283,7 +283,17 @@ int *msGetInnerList(shapeObj *shape, int r, int *outerlist) continue; } - list[i] = msPointInPolygon(&(shape->line[i].point[0]), &(shape->line[r])); + /* A valid inner ring may touch its outer ring at most one point. */ + /* In the case the first point matches a vertex of an outer ring, */ + /* msPointInPolygon() might return 0 or 1 (depending on coordinate values, */ + /* see msGetOuterList()), so test a second point if the first test */ + /* returned that the point is not inside the outer ring. */ + /* Fixes #5299 */ + /* Of course all of this assumes that the geometries are indeed valid in */ + /* OGC terms, otherwise all logic of msIsOuterRing(), msGetOuterList(), */ + /* and msGetInnerList() has undefined behaviour. */ + list[i] = msPointInPolygon(&(shape->line[i].point[0]), &(shape->line[r])) || + msPointInPolygon(&(shape->line[i].point[1]), &(shape->line[r])); } return(list); diff --git a/msautotest/wxs/data/test5299.csv b/msautotest/wxs/data/test5299.csv new file mode 100644 index 0000000000..70daad4243 --- /dev/null +++ b/msautotest/wxs/data/test5299.csv @@ -0,0 +1,2 @@ +id,WKT +1,"MULTIPOLYGON(((676881.746 253159.65,676952.5 253142.812,676984.539 253076.568,676992.16 253047.552,676907.575 252978.182,676793.971 252977.057,676763.746 253101.446,676881.746 253159.65),(676881.746 253159.65,676835.762 253108.566,676841.704 253079.649,676870.271 253078.765,676924.143 253120.438,676881.746 253159.65)))" diff --git a/msautotest/wxs/expected/wfs_test5299.xml b/msautotest/wxs/expected/wfs_test5299.xml new file mode 100644 index 0000000000..0741ac202b --- /dev/null +++ b/msautotest/wxs/expected/wfs_test5299.xml @@ -0,0 +1,45 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 676763.746000,252977.057000 676992.160000,253159.650000 + + + + + + + 676763.746000,252977.057000 676992.160000,253159.650000 + + + + + + + + + 676881.746000,253159.650000 676952.500000,253142.812000 676984.539000,253076.568000 676992.160000,253047.552000 676907.575000,252978.182000 676793.971000,252977.057000 676763.746000,253101.446000 676881.746000,253159.650000 + + + + + 676881.746000,253159.650000 676835.762000,253108.566000 676841.704000,253079.649000 676870.271000,253078.765000 676924.143000,253120.438000 676881.746000,253159.650000 + + + + + + + + + + diff --git a/msautotest/wxs/wfs_test5299.map b/msautotest/wxs/wfs_test5299.map new file mode 100644 index 0000000000..7f56958da8 --- /dev/null +++ b/msautotest/wxs/wfs_test5299.map @@ -0,0 +1,41 @@ +# +# Test fix for #5299 +# +# REQUIRES: SUPPORTS=WFS INPUT=OGR +# +# Generate dump to gml2 +# RUN_PARMS: wfs_test5299.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=test5299" > [RESULT] + +MAP + NAME test + EXTENT 0 0 10 10 + SIZE 200 200 + + PROJECTION + "init=epsg:4326" + END + + WEB + METADATA + OWS_ONLINERESOURCE "http://127.0.0.0.1" + OWS_SRS "EPSG:4326" + OWS_ENABLE_REQUEST "*" + END + END + + LAYER + NAME test5299 + TYPE POLYGON + STATUS ON + CONNECTIONTYPE OGR + CONNECTION "data/test5299.csv" + + METADATA + "ows_geomtype" "MultiPolygon" + END + + STYLEITEM "AUTO" + CLASS + END + END +END From a0437f8c3f1356fbb974f824ac7b3695db71d824 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Tue, 13 Sep 2016 13:31:26 +0200 Subject: [PATCH 043/221] fix typo on PERCENTAGES in mapfile writer --- mapfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapfile.c b/mapfile.c index f6994b40cc..ea6b2576a6 100644 --- a/mapfile.c +++ b/mapfile.c @@ -4699,7 +4699,7 @@ static void writeLayer(FILE *stream, int indent, layerObj *layer) writeKeyword(stream, indent, "TRANSFORM", layer->transform, 10, MS_FALSE, "FALSE", MS_UL, "UL", MS_UC, "UC", MS_UR, "UR", MS_CL, "CL", MS_CC, "CC", MS_CR, "CR", MS_LL, "LL", MS_LC, "LC", MS_LR, "LR"); writeNumberOrKeyword(stream, indent, "OPACITY", 100, layer->opacity, (int)layer->opacity, 1, MS_GD_ALPHA, "ALPHA"); writeKeyword(stream, indent, "TYPE", layer->type, 9, MS_LAYER_POINT, "POINT", MS_LAYER_LINE, "LINE", MS_LAYER_POLYGON, "POLYGON", MS_LAYER_RASTER, "RASTER", MS_LAYER_ANNOTATION, "ANNOTATION", MS_LAYER_QUERY, "QUERY", MS_LAYER_CIRCLE, "CIRCLE", MS_LAYER_TILEINDEX, "TILEINDEX", MS_LAYER_CHART, "CHART"); - writeKeyword(stream, indent, "UNITS", layer->units, 9, MS_INCHES, "INCHES", MS_FEET ,"FEET", MS_MILES, "MILES", MS_METERS, "METERS", MS_KILOMETERS, "KILOMETERS", MS_NAUTICALMILES, "NAUTICALMILES", MS_DD, "DD", MS_PIXELS, "PIXELS", MS_PERCENTAGES, "PERCENTATGES"); + writeKeyword(stream, indent, "UNITS", layer->units, 9, MS_INCHES, "INCHES", MS_FEET ,"FEET", MS_MILES, "MILES", MS_METERS, "METERS", MS_KILOMETERS, "KILOMETERS", MS_NAUTICALMILES, "NAUTICALMILES", MS_DD, "DD", MS_PIXELS, "PIXELS", MS_PERCENTAGES, "PERCENTAGES"); writeHashTable(stream, indent, "VALIDATION", &(layer->validation)); /* write potentially multiply occuring objects last */ From 9a7448b5dcc9dd5d251111011fb638cb5d79bb1f Mon Sep 17 00:00:00 2001 From: Bas Couwenberg Date: Tue, 13 Sep 2016 19:43:07 +0200 Subject: [PATCH 044/221] Fix "didnt" typo, replace with "didn't". --- mapmssql2008.c | 4 ++-- mappostgis.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mapmssql2008.c b/mapmssql2008.c index 29fba51654..c01019fe73 100644 --- a/mapmssql2008.c +++ b/mapmssql2008.c @@ -793,7 +793,7 @@ int msMSSQL2008LayerOpen(layerObj *layer) "This error occured when trying to make a connection to the specified SQL server. \n" "
\nMost commonly this is caused by
\n" "(1) incorrect connection string
\n" - "(2) you didnt specify a 'user id=...' in your connection string
\n" + "(2) you didn't specify a 'user id=...' in your connection string
\n" "(3) SQL server isnt running
\n" "(4) TCPIP not enabled for SQL Client or server
\n\n", "msMSSQL2008LayerOpen()", maskeddata, errMess); @@ -2188,7 +2188,7 @@ static int msMSSQL2008LayerParseData(layerObj *layer, char **geom_column_name, c } else { slength = strspn(pos_srid + 12, "-0123456789"); if(!slength) { - msSetError(MS_QUERYERR, DATA_ERROR_MESSAGE, "msMSSQL2008LayerParseData()", "Error parsing MSSQL2008 data variable: You specified 'using SRID=#' but didnt have any numbers!

\n\nMore Help:

\n\n", data); + msSetError(MS_QUERYERR, DATA_ERROR_MESSAGE, "msMSSQL2008LayerParseData()", "Error parsing MSSQL2008 data variable: You specified 'using SRID=#' but didn't have any numbers!

\n\nMore Help:

\n\n", data); msFree(data); return MS_FAILURE; diff --git a/mappostgis.c b/mappostgis.c index e77304dade..353b3ef9a9 100644 --- a/mappostgis.c +++ b/mappostgis.c @@ -1394,7 +1394,7 @@ int msPostGISParseData(layerObj *layer) } else { slength = strspn(pos_srid + 12, "-0123456789"); if (!slength) { - msSetError(MS_QUERYERR, "Error parsing PostGIS DATA variable. You specified 'USING SRID' but didnt have any numbers! %s", "msPostGISParseData()", data); + msSetError(MS_QUERYERR, "Error parsing PostGIS DATA variable. You specified 'USING SRID' but didn't have any numbers! %s", "msPostGISParseData()", data); return MS_FAILURE; } else { layerinfo->srid = (char*) msSmallMalloc(slength + 1); From fd55fd35c9766f80ffe8095e96452166c832b479 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Thu, 15 Sep 2016 17:29:21 +0200 Subject: [PATCH 045/221] fix memory leak on hashTableSubstituteString (#5325) --- mapfile.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mapfile.c b/mapfile.c index 731498a57c..3587148557 100644 --- a/mapfile.c +++ b/mapfile.c @@ -6972,12 +6972,14 @@ int msUpdateMapFromURL(mapObj *map, char *variable, char *string) } static void hashTableSubstituteString(hashTableObj *hash, const char *from, const char *to) { - const char *key, *val; + const char *key, *val, *new_val; key = msFirstKeyFromHashTable(hash); while(key != NULL) { val = msLookupHashTable(hash, key); if(strcasestr(val, from)) { - msInsertHashTable(hash, key, msCaseReplaceSubstring(msStrdup(val), from, to)); + new_val = msCaseReplaceSubstring(msStrdup(val), from, to); + msInsertHashTable(hash, key, new_val); + msFree(new_val); } key = msNextKeyFromHashTable(hash, key); } From 7c85787d35767b1002d11c1da7193d87f0fa2e43 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Thu, 15 Sep 2016 17:33:27 +0200 Subject: [PATCH 046/221] fix const on #5325 --- mapfile.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mapfile.c b/mapfile.c index 3587148557..d8eb95f404 100644 --- a/mapfile.c +++ b/mapfile.c @@ -6972,7 +6972,8 @@ int msUpdateMapFromURL(mapObj *map, char *variable, char *string) } static void hashTableSubstituteString(hashTableObj *hash, const char *from, const char *to) { - const char *key, *val, *new_val; + const char *key, *val; + char *new_val; key = msFirstKeyFromHashTable(hash); while(key != NULL) { val = msLookupHashTable(hash, key); From 81ef223e0480b63a1671377687c37d9d22e4b035 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Thu, 15 Sep 2016 21:35:17 +0200 Subject: [PATCH 047/221] Fix ANCHORPOINT not being written for TRUETYPE and PIXMAP symbols (#5073) --- mapsymbol.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mapsymbol.c b/mapsymbol.c index e8029a1330..edb53bc3e7 100644 --- a/mapsymbol.c +++ b/mapsymbol.c @@ -300,12 +300,18 @@ void writeSymbol(symbolObj *s, FILE *stream) case(MS_SYMBOL_PIXMAP): msIO_fprintf(stream, " TYPE PIXMAP\n"); if(s->imagepath != NULL) msIO_fprintf(stream, " IMAGE \"%s\"\n", s->imagepath); + if(s->anchorpoint_y!=0.5 || s->anchorpoint_x!=0.5) { + msIO_fprintf(stream, " ANCHORPOINT %g %g\n", s->anchorpoint_x, s->anchorpoint_y); + } msIO_fprintf(stream, " TRANSPARENT %d\n", s->transparentcolor); break; case(MS_SYMBOL_TRUETYPE): msIO_fprintf(stream, " TYPE TRUETYPE\n"); if (s->character != NULL) msIO_fprintf(stream, " CHARACTER \"%s\"\n", s->character); if (s->font != NULL) msIO_fprintf(stream, " FONT \"%s\"\n", s->font); + if(s->anchorpoint_y!=0.5 || s->anchorpoint_x!=0.5) { + msIO_fprintf(stream, " ANCHORPOINT %g %g\n", s->anchorpoint_x, s->anchorpoint_y); + } break; default: if(s->type == MS_SYMBOL_ELLIPSE) From 5aa25480a02b8adfbe62ececa416804c0083164a Mon Sep 17 00:00:00 2001 From: Sander Jansen Date: Thu, 15 Sep 2016 12:57:03 -0500 Subject: [PATCH 048/221] Fix forgotten cleanup of searchpoly (#5327) --- hittest.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/hittest.c b/hittest.c index 073442c47c..bec7cb71ff 100644 --- a/hittest.c +++ b/hittest.c @@ -189,10 +189,16 @@ int msHitTestLayer(mapObj *map, layerObj *layer, layer_hittest *hittest) { status = msLayerWhichShapes(layer, searchrect, MS_FALSE); if(status == MS_DONE) { /* no overlap */ +#ifdef USE_GEOS + msFreeShape(&searchpoly); +#endif msLayerClose(layer); hittest->status = 0; return MS_SUCCESS; } else if(status != MS_SUCCESS) { +#ifdef USE_GEOS + msFreeShape(&searchpoly); +#endif msLayerClose(layer); return MS_FAILURE; } @@ -245,6 +251,7 @@ int msHitTestLayer(mapObj *map, layerObj *layer, layer_hittest *hittest) { hittest->status = 1; if(maxfeatures >=0 && featuresdrawn >= maxfeatures) { + msFreeShape(&shape); status = MS_DONE; break; } @@ -258,6 +265,10 @@ int msHitTestLayer(mapObj *map, layerObj *layer, layer_hittest *hittest) { msFreeShape(&shape); } +#ifdef USE_GEOS + msFreeShape(&searchpoly); +#endif + if (classgroup) msFree(classgroup); From dbbb588585fce88ccccdf8c481da8872f6067cdf Mon Sep 17 00:00:00 2001 From: Sander Jansen Date: Thu, 15 Sep 2016 17:29:21 -0500 Subject: [PATCH 049/221] wfs: correctly free GMLGroups/GMLIncludeItems/GMLGeometries for all failures (#5328) --- mapwfs.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mapwfs.c b/mapwfs.c index 68dc8df7be..7f4184911a 100644 --- a/mapwfs.c +++ b/mapwfs.c @@ -4151,6 +4151,7 @@ int msWFSGetPropertyValue(mapObj *map, wfsParamsObj *paramsObj, cgiRequestObj *r if (z == geometryList->numgeometries) { msSetError(MS_WFSERR, "Invalid VALUEREFERENCE %s", "msWFSGetPropertyValue()", paramsObj->pszValueReference); + msFree(pszGMLGroups); msGMLFreeItems(itemList); msGMLFreeGroups(groupList); msGMLFreeGeometries(geometryList); @@ -4219,8 +4220,12 @@ int msWFSGetPropertyValue(mapObj *map, wfsParamsObj *paramsObj, cgiRequestObj *r &maxfeatures, &startindex); status = msWFSAnalyzeBBOX(map, paramsObj, &bbox, &sBBoxSrs); - if( status != 0 ) + if( status != 0 ) { + msFree(pszGMLGroups); + msFree(pszGMLIncludeItems); + msFree(pszGMLGeometries); return status; + } if( iResultTypeHits == 1 ) { From 6f356ce4e1271c4a2d53a9d5a55633de9606a1a8 Mon Sep 17 00:00:00 2001 From: Sander Jansen Date: Thu, 15 Sep 2016 17:31:01 -0500 Subject: [PATCH 050/221] wcs: free memory in msWCSGetCapabilities20 and msWCSGetCoverage20 (#5328) --- mapwcs20.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mapwcs20.c b/mapwcs20.c index 266a07d1b5..5a4caaa94b 100644 --- a/mapwcs20.c +++ b/mapwcs20.c @@ -3338,7 +3338,7 @@ int msWCSGetCapabilities20(mapObj *map, cgiRequestObj *req, /* Report the supported CRSs */ { - char *crs_list; + char *crs_list = NULL; xmlNodePtr crsMetadataNode = xmlNewChild(psExtensionNode, psCrsNs, BAD_CAST "CrsMetadata", NULL); @@ -3347,6 +3347,7 @@ int msWCSGetCapabilities20(mapObj *map, cgiRequestObj *req, "CO", MS_FALSE)) != NULL ) { msLibXml2GenerateList(crsMetadataNode, psCrsNs, "crsSupported", crs_list, ' '); + msFree(crs_list); } else { /* could not determine list of CRSs */ } @@ -4138,11 +4139,13 @@ this request. Check wcs/ows_enable_request settings.", "msWCSGetCoverage20()", p for(i = 0; i < params->numaxes; ++i) { if(params->axes[i]->subset != NULL) { if(params->axes[i]->subset->timeOrScalar == MS_WCS20_TIME_VALUE) { + msWCSClearCoverageMetadata20(&cm); msSetError(MS_WCSERR, "Time values for subsets are not supported. ", "msWCSGetCoverage20()"); return msWCSException(map, "InvalidSubsetting", "subset", params->version); } if(params->axes[i]->subset->operation == MS_WCS20_SLICE) { + msWCSClearCoverageMetadata20(&cm); msSetError(MS_WCSERR, "Subset operation 'slice' is not supported.", "msWCSGetCoverage20()"); return msWCSException(map, "InvalidSubsetting", "subset", params->version); From 2ab4632110ebfa90df8cb2d5e08ae8388cece989 Mon Sep 17 00:00:00 2001 From: Sander Jansen Date: Thu, 15 Sep 2016 17:33:30 -0500 Subject: [PATCH 051/221] mapfile: implement missing cleanup for LayerCompositer (#5328) --- mapfile.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/mapfile.c b/mapfile.c index d8eb95f404..a8a48bf9d7 100644 --- a/mapfile.c +++ b/mapfile.c @@ -3709,6 +3709,22 @@ int initLayerCompositer(LayerCompositer *compositer) { compositer->filter = NULL; return MS_SUCCESS; } + +int freeLayerCompositers(LayerCompositer * item) { + while(item) { + LayerCompositer * next = item->next; + + if (item->filter) { + msFree(item->filter->filter); + msFree(item->filter); + } + msFree(item); + + item=next; + } + return MS_SUCCESS; +} + /* ** Initialize, load and free a single layer structure */ @@ -3978,6 +3994,8 @@ int freeLayer(layerObj *layer) msFree(layer->sortBy.properties[i].item); msFree(layer->sortBy.properties); + freeLayerCompositers(layer->compositer); + return MS_SUCCESS; } @@ -4108,7 +4126,11 @@ int loadLayerCompositer(LayerCompositer *compositer) { case COMPFILTER: compositer->filter = msSmallMalloc(sizeof(CompositingFilter)); initCompositingFilter(compositer->filter); - if(getString(&compositer->filter->filter) == MS_FAILURE) return(MS_FAILURE); + if(getString(&compositer->filter->filter) == MS_FAILURE) { + msFree(compositer->filter); + compositer->filter=NULL; + return(MS_FAILURE); + } break; case COMPOP: { char *compop=NULL; @@ -4172,6 +4194,11 @@ int loadLayerCompositer(LayerCompositer *compositer) { else { msSetError(MS_PARSEERR,"Unknown COMPOP \"%s\"", "loadLayerCompositer()", compop); free(compop); + if (compositer->filter) { + msFree(compositer->filter->filter); + msFree(compositer->filter); + compositer->filter=NULL; + } return MS_FAILURE; } free(compop); @@ -4180,14 +4207,30 @@ int loadLayerCompositer(LayerCompositer *compositer) { case END: return MS_SUCCESS; case OPACITY: - if (getInteger(&(compositer->opacity)) == -1) + if (getInteger(&(compositer->opacity)) == -1) { + if (compositer->filter) { + msFree(compositer->filter->filter); + msFree(compositer->filter); + compositer->filter=NULL; + } return MS_FAILURE; + } if(compositer->opacity<0 || compositer->opacity>100) { + if (compositer->filter) { + msFree(compositer->filter->filter); + msFree(compositer->filter); + compositer->filter=NULL; + } msSetError(MS_PARSEERR,"OPACITY must be between 0 and 100 (line %d)","loadLayerCompositer()",msyylineno); return MS_FAILURE; } break; default: + if (compositer->filter) { + msFree(compositer->filter->filter); + msFree(compositer->filter); + compositer->filter=NULL; + } msSetError(MS_IDENTERR, "Parsing error 2 near (%s):(line %d)", "loadLayerCompositer()", msyystring_buffer, msyylineno ); return(MS_FAILURE); } @@ -4240,7 +4283,10 @@ int loadLayer(layerObj *layer, mapObj *map) case(COMPOSITE): { LayerCompositer *compositer = msSmallMalloc(sizeof(LayerCompositer)); initLayerCompositer(compositer); - if(MS_FAILURE == loadLayerCompositer(compositer)) return -1; + if(MS_FAILURE == loadLayerCompositer(compositer)) { + msFree(compositer); + return -1; + } if(!layer->compositer) { layer->compositer = compositer; } else { From b4f41ccac04ff6272ceffc8ea361c1cf4e8461ac Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Fri, 16 Sep 2016 13:45:19 +0200 Subject: [PATCH 052/221] Add support for the csharp debug builds in cmake --- mapscript/csharp/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mapscript/csharp/CMakeLists.txt b/mapscript/csharp/CMakeLists.txt index a6a721b633..722ff86a29 100644 --- a/mapscript/csharp/CMakeLists.txt +++ b/mapscript/csharp/CMakeLists.txt @@ -21,6 +21,10 @@ if (WIN32) if (MSVC_VERSION GREATER 1500) set(PLATFORM_TARGET ${PLATFORM_TARGET} /define:CLR4) endif (MSVC_VERSION GREATER 1500) + MESSAGE(STATUS "Cmake build type: ${CMAKE_BUILD_TYPE}") + if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + set(PLATFORM_TARGET ${PLATFORM_TARGET} /debug:full) + endif (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") endif(WIN32) MARK_AS_ADVANCED(CSHARP_COMPILER) From bf2ac0d142402229b30a65786a7af68462967aa6 Mon Sep 17 00:00:00 2001 From: Sander Jansen Date: Mon, 19 Sep 2016 15:47:05 -0500 Subject: [PATCH 053/221] fix: return from msComputeKernelDensityDataset if GDALOpenShared fails --- kerneldensity.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kerneldensity.c b/kerneldensity.c index bc65a5061f..93a3a9edce 100644 --- a/kerneldensity.c +++ b/kerneldensity.c @@ -318,6 +318,7 @@ int msComputeKernelDensityDataset(mapObj *map, imageObj *image, layerObj *kernel msSetError(MS_MISCERR,"msComputeKernelDensityDataset()","failed to create in-memory gdal dataset for interpolated data"); status = MS_FAILURE; free(iValues); + return status; } adfGeoTransform[0] = map->extent.minx - map->cellsize * 0.5; /* top left x */ adfGeoTransform[1] = map->cellsize;/* w-e pixel resolution */ From 08204df425a0ddf7fc4c0394c8501f92fc9faa61 Mon Sep 17 00:00:00 2001 From: Sander Jansen Date: Mon, 19 Sep 2016 15:49:08 -0500 Subject: [PATCH 054/221] fix: free pszSLDTmpFile buffer --- mapogcsld.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mapogcsld.c b/mapogcsld.c index 465421d478..8b76ea2ca3 100644 --- a/mapogcsld.c +++ b/mapogcsld.c @@ -106,6 +106,7 @@ int msSLDApplySLDURL(mapObj *map, char *szURL, int iLayer, unlink(pszSLDTmpFile); msSetError(MS_WMSERR, "Could not open SLD %s and save it in a temporary file. Please make sure that the sld url is valid and that the temporary path is set. The temporary path can be defined for example by setting TMPPATH in the map file. Please check the MapServer documentation on temporary path settings.", "msSLDApplySLDURL", szURL); } + msFree(pszSLDTmpFile); if (pszSLDbuf) nStatus = msSLDApplySLD(map, pszSLDbuf, iLayer, pszStyleLayerName, ppszLayerNames); } From 1a98652251392742ec000017e82e4c8f91f720f9 Mon Sep 17 00:00:00 2001 From: Sander Jansen Date: Mon, 19 Sep 2016 15:53:38 -0500 Subject: [PATCH 055/221] Fix various memory leaks in mapwcs20.c - free params->format_options - free various libxml2 allocations - free projections in msWCSGetCoverage20 --- mapwcs20.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/mapwcs20.c b/mapwcs20.c index 5a4caaa94b..0b03893323 100644 --- a/mapwcs20.c +++ b/mapwcs20.c @@ -331,6 +331,7 @@ void msWCSFreeParamsObj20(wcs20ParamsObjPtr params) } msFree(params->axes); CSLDestroy(params->range_subset); + CSLDestroy(params->format_options); msFree(params); } @@ -960,14 +961,17 @@ static int msWCSParseRequest20_XMLGetCoverage( if(NULL == (axis = msWCSFindAxis20(params, axisName))) { if(NULL == (axis = msWCSCreateAxisObj20())) { + xmlFree(axisName); return MS_FAILURE; } axis->name = msStrdup(axisName); msWCSInsertAxisObj20(params, axis); } + xmlFree(axisName); content = (char *)xmlNodeGetContent(child); if(msStringParseInteger(content, &(axis->size)) != MS_SUCCESS) { + xmlFree(content); msSetError(MS_WCSERR, "Value of element 'Size' could not " "be parsed to a valid integer.", "msWCSParseRequest20_XMLGetCoverage()"); @@ -988,11 +992,13 @@ static int msWCSParseRequest20_XMLGetCoverage( if(NULL == (axis = msWCSFindAxis20(params, axisName))) { if(NULL == (axis = msWCSCreateAxisObj20())) { + xmlFree(axisName); return MS_FAILURE; } axis->name = msStrdup(axisName); msWCSInsertAxisObj20(params, axis); } + xmlFree(axisName); axis->resolutionUOM = (char *) xmlGetProp(child, BAD_CAST "uom"); @@ -4127,6 +4133,7 @@ this request. Check wcs/ows_enable_request settings.", "msWCSGetCoverage20()", p msInitProjection(&imageProj); if (msLoadProjectionString(&imageProj, cm.srs) == -1) { + msFreeProjection(&imageProj); msWCSClearCoverageMetadata20(&cm); msSetError(MS_WCSERR, "Error loading CRS %s.", @@ -4139,12 +4146,14 @@ this request. Check wcs/ows_enable_request settings.", "msWCSGetCoverage20()", p for(i = 0; i < params->numaxes; ++i) { if(params->axes[i]->subset != NULL) { if(params->axes[i]->subset->timeOrScalar == MS_WCS20_TIME_VALUE) { + msFreeProjection(&imageProj); msWCSClearCoverageMetadata20(&cm); msSetError(MS_WCSERR, "Time values for subsets are not supported. ", "msWCSGetCoverage20()"); return msWCSException(map, "InvalidSubsetting", "subset", params->version); } if(params->axes[i]->subset->operation == MS_WCS20_SLICE) { + msFreeProjection(&imageProj); msWCSClearCoverageMetadata20(&cm); msSetError(MS_WCSERR, "Subset operation 'slice' is not supported.", "msWCSGetCoverage20()"); @@ -4157,11 +4166,13 @@ this request. Check wcs/ows_enable_request settings.", "msWCSGetCoverage20()", p wcs20AxisObjPtr *axes; axes = msSmallMalloc(sizeof(wcs20AxisObjPtr) * 2); if(msWCSValidateAndFindAxes20(params, axes) == MS_FAILURE) { + msFreeProjection(&imageProj); msWCSClearCoverageMetadata20(&cm); msFree(axes); return msWCSException(map, "InvalidAxisLabel", "subset", params->version); } if(msWCSGetCoverage20_FinalizeParamsObj(params, axes) == MS_FAILURE) { + msFreeProjection(&imageProj); msWCSClearCoverageMetadata20(&cm); msFree(axes); return msWCSException(map, "InvalidParameterValue", "extent", params->version); @@ -4213,6 +4224,8 @@ this request. Check wcs/ows_enable_request settings.", "msWCSGetCoverage20()", p /* if the subsets have a crs given, project the image extent to it */ msInitProjection(&subsetProj); if(msLoadProjectionString(&subsetProj, params->subsetcrs) != MS_SUCCESS) { + msFreeProjection(&subsetProj); + msFreeProjection(&imageProj); msWCSClearCoverageMetadata20(&cm); msSetError(MS_WCSERR, "Error loading CRS %s.", @@ -4339,6 +4352,9 @@ this request. Check wcs/ows_enable_request settings.", "msWCSGetCoverage20()", p params->resolutionX = (bbox.maxx - bbox.minx) / params->width; params->resolutionY = (bbox.maxy - bbox.miny) / params->height; } + else { + msFreeProjection(&outputProj); + } } /* set the bounding box as new map extent */ From cd70b0f4c6bd4b76736333bd02aa7d179f0619b5 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Tue, 20 Sep 2016 12:04:42 +0200 Subject: [PATCH 056/221] Fix position of labelpoly on offsetted labels (#5326) --- mapdraw.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mapdraw.c b/mapdraw.c index 784cb4badc..0a6869fb5f 100644 --- a/mapdraw.c +++ b/mapdraw.c @@ -2386,8 +2386,8 @@ int msDrawOffsettedLabels(imageObj *image, mapObj *map, int priority) #define otest(ox,oy) if((x0+(ox)) >= labelcache->gutter &&\ (y0+(oy)) >= labelcache->gutter &&\ - (x0+(ox)) < image->width + labelcache->gutter &&\ - (y0+(oy)) < image->height + labelcache->gutter) {\ + (x0+(ox)) < image->width - labelcache->gutter &&\ + (y0+(oy)) < image->height - labelcache->gutter) {\ scratch_line.point = scratch_points;\ scratch.poly = &scratch_line; \ offsetAndTest(map,cachePtr,(ox),(oy),priority,l,&scratch); \ @@ -2952,7 +2952,7 @@ int msDrawLabelCache(mapObj *map, imageObj *image) textSymbolPtr->rotation, textSymbolPtr->label->buffer * textSymbolPtr->scalefactor, &metrics_bounds); if(need_labelpoly) get_metrics(&(cachePtr->point), MS_CC, textSymbolPtr->textpath, - marker_offset_x + label_offset_x, marker_offset_y + label_offset_y, + label_offset_x, label_offset_y, textSymbolPtr->rotation, 1, &labelpoly_bounds); } } else { /* explicit position */ @@ -2960,7 +2960,7 @@ int msDrawLabelCache(mapObj *map, imageObj *image) metrics_bounds.poly = &metrics_line; textSymbolPtr->annopoint = get_metrics(&(cachePtr->point), MS_CC, textSymbolPtr->textpath, label_offset_x, label_offset_y, textSymbolPtr->rotation, textSymbolPtr->label->buffer * textSymbolPtr->scalefactor, &metrics_bounds); - if(need_labelpoly) get_metrics(&(cachePtr->point), textSymbolPtr->label->position, textSymbolPtr->textpath, + if(need_labelpoly) get_metrics(&(cachePtr->point), MS_CC, textSymbolPtr->textpath, label_offset_x, label_offset_y, textSymbolPtr->rotation, 1, &labelpoly_bounds); } else { metrics_bounds.poly = &metrics_line; From 370a81c3b870ce82675c545da24f51ed4311b952 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Tue, 20 Sep 2016 12:19:20 +0200 Subject: [PATCH 057/221] Fix position of rendered offsetted labelpnt marker (#5326) --- mapdraw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapdraw.c b/mapdraw.c index 0a6869fb5f..86d97fe196 100644 --- a/mapdraw.c +++ b/mapdraw.c @@ -2511,7 +2511,7 @@ int msDrawOffsettedLabels(imageObj *image, mapObj *map, int priority) /* here's where we draw the label styles */ for(i=0; ilabel->numstyles; i++) { if(ts->label->styles[i]->_geomtransform.type == MS_GEOMTRANSFORM_LABELPOINT) { - retval = msDrawMarkerSymbol(map, image, &(cachePtr->point), ts->label->styles[i], layerPtr->scalefactor); + retval = msDrawMarkerSymbol(map, image, &(labelLeader.line->point[1]), ts->label->styles[i], layerPtr->scalefactor); if(UNLIKELY(retval == MS_FAILURE)) { goto offset_cleanup; } From 83011315f539c8a5bf86550cea0c08e77b563e64 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Tue, 20 Sep 2016 12:35:47 +0200 Subject: [PATCH 058/221] Fix segfault on offsetted labels with multiple styles (#5326) --- mapdraw.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mapdraw.c b/mapdraw.c index 86d97fe196..1ccc0fedad 100644 --- a/mapdraw.c +++ b/mapdraw.c @@ -2269,7 +2269,7 @@ void offsetAndTest(mapObj *map, labelCacheMemberObj *cachePtr, double ox, double } } for(j=0; jlabel->numstyles; j++) { - if(ts->label->styles[i]->_geomtransform.type == MS_GEOMTRANSFORM_LABELPOINT) { + if(ts->label->styles[j]->_geomtransform.type == MS_GEOMTRANSFORM_LABELPOINT) { scratch->poly = scratch_line; offset_label_bounds(ts->style_bounds[j], scratch, ox, oy); status = msTestLabelCacheCollisions(map, cachePtr, scratch, priority, label_idx); @@ -2313,8 +2313,8 @@ void offsetAndTest(mapObj *map, labelCacheMemberObj *cachePtr, double ox, double } if(ts->style_bounds) { for(j=0; jlabel->numstyles; j++) { - if(ts->label->styles[i]->_geomtransform.type == MS_GEOMTRANSFORM_LABELPOINT || - ts->label->styles[i]->_geomtransform.type == MS_GEOMTRANSFORM_LABELPOLY) { + if(ts->label->styles[j]->_geomtransform.type == MS_GEOMTRANSFORM_LABELPOINT || + ts->label->styles[j]->_geomtransform.type == MS_GEOMTRANSFORM_LABELPOLY) { offset_label_bounds(ts->style_bounds[j], ts->style_bounds[j], ox, oy); } } From af86990c48d89a0488ad79517ee87eb8de997280 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Tue, 20 Sep 2016 16:41:53 +0200 Subject: [PATCH 059/221] Add test for offseted complex/multi label (#5326) --- .../renderers/data/DejaVuSansCondensed.ttf | Bin 0 -> 679256 bytes msautotest/renderers/data/fonts.lst | 1 + msautotest/renderers/data/meteo.dbf | Bin 0 -> 29473 bytes msautotest/renderers/data/meteo.prj | 1 + msautotest/renderers/data/meteo.shp | Bin 0 -> 12644 bytes msautotest/renderers/data/meteo.shx | Bin 0 -> 3684 bytes .../expected/multilabel-leader.cairo.png | Bin 0 -> 68375 bytes .../renderers/expected/multilabel-leader.pdf | Bin 0 -> 178736 bytes .../renderers/expected/multilabel-leader.png | Bin 0 -> 68623 bytes .../renderers/expected/multilabel-leader.svg | 706 ++++++++++++++++++ msautotest/renderers/multilabel-leader.map | 525 +++++++++++++ 11 files changed, 1233 insertions(+) create mode 100644 msautotest/renderers/data/DejaVuSansCondensed.ttf create mode 100644 msautotest/renderers/data/meteo.dbf create mode 100644 msautotest/renderers/data/meteo.prj create mode 100644 msautotest/renderers/data/meteo.shp create mode 100644 msautotest/renderers/data/meteo.shx create mode 100644 msautotest/renderers/expected/multilabel-leader.cairo.png create mode 100644 msautotest/renderers/expected/multilabel-leader.pdf create mode 100644 msautotest/renderers/expected/multilabel-leader.png create mode 100644 msautotest/renderers/expected/multilabel-leader.svg create mode 100644 msautotest/renderers/multilabel-leader.map diff --git a/msautotest/renderers/data/DejaVuSansCondensed.ttf b/msautotest/renderers/data/DejaVuSansCondensed.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c9e4acec8cd65b9d2c4d29d7c0572cb5ef970206 GIT binary patch literal 679256 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

M#g{>rWM{KP^NVI`S$E4wWMQDilW5wC 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 AxBvhE literal 0 HcmV?d00001 diff --git a/msautotest/renderers/data/fonts.lst b/msautotest/renderers/data/fonts.lst index 0e6066a87f..c28489eb2d 100644 --- a/msautotest/renderers/data/fonts.lst +++ b/msautotest/renderers/data/fonts.lst @@ -1,2 +1,3 @@ default ../../misc/data/LucidaBrightRegular.ttf cjk VL-Gothic-Regular.ttf +dejavu DejaVuSansCondensed.ttf diff --git a/msautotest/renderers/data/meteo.dbf b/msautotest/renderers/data/meteo.dbf new file mode 100644 index 0000000000000000000000000000000000000000..11990098356c1fc1a33d2e0fc5998bdda083adf5 GIT binary patch literal 29473 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 LPL#U-HKqO!_A5Q= literal 0 HcmV?d00001 diff --git a/msautotest/renderers/data/meteo.shx b/msautotest/renderers/data/meteo.shx new file mode 100644 index 0000000000000000000000000000000000000000..b666ab799ae01cb08554c24f3bf8ca0b9b23eb6a GIT binary patch literal 3684 zcmZwGaYWx~90%~$T5Da`wbojaNv4~m>ypW2lF1}Vmn1EdB*|nl$z+%5GTCL4WHL#T zB$K3@q)U>_WHOm#GMPz|%w+EO^L_nu?D^;Ac^;4F?elq_h=^ZfBYrr}=k1@3h&U74 zYx<`)yP>vu>2lMb|DKHhvGiBn?^89u-7RX!U7Y=Uyt?Rz$N#^W7n+9eDPlS6*uoC> zaDbzn;UYJ<&3&E(o{3^2)0x9Uma>LTY-cz7Il?I}aE)8s<56H_h;SVu zY+xI^*vDZ`aE>e7 zC?+zUIV@x;YuLngcC()&oZU8NUvw4$uSj|R0;A1}H3r=#Lt9-|gJmmMlq&TMXI&bhc zD|wIi`G`+B#Bt7YnQytnFZ>pGIflu+#yl3WoONtr2YWccQOiVIxh7Wa4*cqK&m{alG>8naly5>~N+ZR}znhdIGHu5gpPJm6_y aN+?q}S4s*qna^TYu%4~#WG@Ff7WO~D2NSRW literal 0 HcmV?d00001 diff --git a/msautotest/renderers/expected/multilabel-leader.cairo.png b/msautotest/renderers/expected/multilabel-leader.cairo.png new file mode 100644 index 0000000000000000000000000000000000000000..04805843cb282317b15d68924910821d57e117c2 GIT binary patch literal 68375 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

P03@8Hr^K5YJ!CJO8Dy+wgovXv#If$y2! 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

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

l{ 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 literal 0 HcmV?d00001 diff --git a/msautotest/renderers/expected/multilabel-leader.png b/msautotest/renderers/expected/multilabel-leader.png new file mode 100644 index 0000000000000000000000000000000000000000..04aa8b0d05f17052ba011e5a494059bbf3485748 GIT binary patch literal 68623 zcmXt9Wl+@Z*WO*aySqC?=`I!NPGM0>x};+PDG^ag5u^l>TskC{lx~n_X^=*c5b(X9 zdFRiJUznBs#ktS9>cs2mJR-uU$A>^5L>iCP3?LBbJMd2s7Y2UwY}z{&0%3({s3{u- zWbHr2v(jF;Xs3F@`94pLyq`AJ;60yO@4JAazITEAzu&#%<1#EFJPGI(8?6~K+%msh z!e%#2`StJLa?SG6QKMnQg4^-ubLkv~?aw3f{yD7|*A++e!3T9%ohu(4Pq(zg($Nh! zv7CHza^)6vMW%F@)%H5)!b7p! zw3Yn)FY|Mur@sdUjd&Hfx!VWxQ*N-!Tp!;|m%cDAElTH04%m3?*UoTpwkt`Kes;Q< zEaCdN(VMHzx^)VhC@j?)e0ljP8z*OZ(7EpO-VJ}{l++bODv^dogK)XuK?*UG0trjS zz=iU#lwX>h|DnI*_K}WGKNRXLyykHw^hDD@P3>VkIh}d}w^du#ioL!`7>0=i=iNy5 zQ6hZ=BUhGedh#~sXPH!Y*P8+rEIpx@sRs==6XX{=`Zos)fj0%7*zMvTpG^vS|00oc zcP~;mCE=UN-Mw4>cww5#?;F4Shi80>+C>CypBxqW9^Ui}YF?fe4l#V_>_i*m+O!S~ z8t|p9AkHnrG!+Q6`$Bdnc?zF?zY!i({IGwN^DQr8eSM?<>ShlZ zm-GCvVt*yn#9C<+PA_@*snlg{yx{6-N;oDY^ILg#Ug@Waw$QNjO_r;lFq4TQ?fx1E zzBr|;XwJa98zb58M}PkG*Enwbn}-dCKm4q4d$@DC)S+zlE@fv0&n*6{j{VMFL4_g- z9rzOcsFtPgl3gfP!$&+PvsK{2!qwLfS8!?`d-?qJpKS?Gype?ptlnI``M@W=z_hMYHNtMBegS$%GNCS;GsJgz&va_M`x%Q#F;kWEIWeel#0 zKR-@z?)Uc9Q+&D)l+2&`NN+^%4<5d^E-?Z(eD(B(F`gcxSqm>TDX;xCO(ASObTwIh z*Yru!_Lf{XOK%nZC?y0JPvgbX_3c1vpx)NXspS-}&3C`s{q5t(zC-1OM&T`{(O>4tvBGvNa`UlG#{Y9d8f+=Q#Q~lv!+JJ%!IVo5W1k|8Re~_50VaJnp^iI@vPf8Oi-? z0ZoJHBEf-y=R4!;14pS3+6y7LEJ$X>u*Gsq$-8isdy$uj=oyQa zfO~&wa&dYwxuX>#=jP|;pa^1Sxyzd?9|gGba^=&%VblB%j{1{%B7BjY(!f!hM9VPSV(!#Z~q{uw6S3V&g!jPPpaoEA9zorEsY3bQZWJHOTK|w1A z`|RxOF+>c1wsXSsrF{;v@1CCiG6ub{gekDe_26K+6+X8zZi&Cq*9>Dr$poD_6+BF& zmvA*J(xS@}RYzk`%hY`TE*s>r-kUg@qgV++GRp_Oip|>W(EcRhwzIxJS3~1{iQBdE zRX1lbw4rRn6iaaGD4v4n&;H!{)>aHf40i}BlEU%%^ZPC{Wil^+EjD_oLg9&Y_j_k& z1A5=ksZevtK5a`~8<8ELUzg*FfT{kFZ969@AqN9morUCI*1%5|T( z@^asH1V-MK;?Pi76C-lqe%W$su;EvAN$Xmt_i`xMmGfNnX2sL*v#B^F%u4<{Azd*< z1&@-by|Y|iha~4no|eL>8Ec^!*r*btN^2&b$)54h5ELww2oI0UyPS%W@=J!TeDI&4 z`T6S#DQ*Ei!7|6zApM1g^#lwY;%+KL0lUJDW%p^Jjbfl?+<*1EzJA|#NAJ#wl`+wN zFl`mH88h+29rcZG?Rulv`fQwtk<(PMeuxYt3Nw1hM0(|+dSSXi`g|^QUcu64$X_2~ zhFpX~p;Y`v8TTEDn|(b!J!6TP&~~{VT@`~Ef@jCv+L=SE8(is4P#e41SKAP%X{GhS z&Q8GYMB!q%qWXXLlP%zfHy*X^eI)}vTpM!b9f;_8NT>X%(z-jSr1xg3_ak!M91{gJMlJ7jFL&UzZ`QV_DNF(0(X&M&CTw1fiOq6tSZOWa4AX5< zPoN&7&I>_hO1RNG-&MBXMRw-CL~r@-&w3p#x7OF!JGnRGR6I%LH?Dp3`;VlC3L6$txB2m6-W!@P2HbE^f5C-jxJb0) zVv|qo5~MXlG5ijkuHT1Tn|E++}Pl}r`bny z%*_jFo2ax=-07P7X1Gx2f^&RYi+n6#qfoB(Q8-)XDHojgVur4sE?{0rh>rsWxs2)EPBLoMFn1sZX&}=wUJYm&aqu?oM zL0B>ntgc6we4vOs@IvVHT&3=$`RZZuN%2>QI~f!8ZhlD~txSDe^5lM&(Lslhc4t?MI` zC8p^=kZ>h*ZB3G=JS2L>qTz17-16bc+6j2??P2nN(w{Wp^g%rPZhp1~U%)UhVu=`f zE70emLqjdKwTI#^f5N6qD1~Vssi0lX4i9Amtz*P3g8hvUK&U}BjdRj5#iC4 zlrPMQbF2SCa%<$)!R0TTlvy8}tn+1RzzFo8eE6N5^^=clTyBdQ6HUKmiM#)u8?Zw6 zhChAL{{4kny9$`Ys@Z`c^3))R%C@k7kFO)dWU88N&=17>bDe@W5#d zele20-QeEpb&v^~KqI4Kn4F9Zz1D9~RZ4X4#-g%FQ=&9F@)~`2C;rL!_g1Rj%E`$! z`yDtxb6tG&=!dE9(fw_`9EDJNyFd4~U&7**-q*V?IlH-qZVpfdBBC85?VwY7BcL&$ zY7x%jt9GlM(U6so_Z{;eQ&Us(ez9;l@qofZw-T`zw|eLz=IZ``jt3aB#me&XFB2T$ zj$I)GPJZS*>ed+fEbsFC`J|2M&l-ne!qD5l_wEIV2h;^{K;%ns|6vvVta!?hCN{Wc zPtA`B`{eNA+gpF39RpIRrrj97>B!h*Lc5>#0ZD9FTiC6|L6VRYco=SlqH!nh+wZPj z#&VUF5`D4;xk-?ZQ7(NV81Rnq<=Ph%+J@-olSSGb92_J}GMoqGy(^6;5@H6IYgkhx znf)oGYItgu;s5Ta1WXo@wir(S|5-a5yuMxi253+`ES`d*3ei zDOoTf-J-$0Id9dJ_#PDjGlAkY{Z|ty7KM<2p~`xXi*$?U!H6u+y}IeD=JO4~rW zwt(Ppk3}hf+;XS~N}q>N)>nZ?yE&L{(;9Tnu#91Qe6YW7ahu>r$cci<c?1G``|^_=Xf0bL=18eTOkSc6Ez_mre&AphMvh(vFo| zHh^h(oRD5BoF|83hq|t|9@AKfJa~{Y@MiuUj+tkL`Z%`7^4Y4_p6;%$Ee12c6l?his3K=_Y5fTv z8c>L1%>3XpLxFgfaj$a$o(EQ=P{uzP{e@ zT>Kw6XOE@7-PQ0^+O#LW9`I&Qf)M12A}9E??i{w5@orIg1#KV+dXEQz3 zI=x8RJk+Q`Udlb|9?Mh3lB=q&&J?wU)e2a&924*oGUNO+%6DzrAi?iJU?sW@YBYIo z9yj=GkDS?{Brlo1-FC-QbTu+L`5nw-E%TEg5hkMV!otEtsS>D#V8TDkE&T^l_>@}N z)>4vl;dTsDr}z*<6#FkjUEQQz;$@hrUO@aOTL-vk(4T$2jjcL}&)wZ!<7pYBJG__$ zd8wgru|L-}Vk-}SH_m_lYx+5QZFAGOHRvTwd4h;>JQj3X+kz(OvJ_8+CaA=9v{m~+m ztRE`Nx-Epx>}t7F#rmP7XK)LBGhZm?uG4%iUo(?XZ%p#v!%@Y;b}U&!W1J<90nw1l zvYAawwI}^=-(>W$@*( zEt@3m#^Iq(!R{%90Lya|GdiMhsU^?{l-aRa2*GAI(azdsWozqgPPKKi2n)5~<5KhA z7~7crlx6|Ec$9CTCc;EIe0(fCT90?fBDjJ!Ot}$wn06P3OFM-q8c|<89;4@A5{yM} zK&jnTeK6EK@8hno|46zxS|N$i%p1I{{P>Yhk70CZH7IzN%FJI#NJxn)NQ7QSN~*C@ zNpxt+$VQW(H)aieDM!pqNQuuB1tDPiFyyC<>qE085AXPZux(xI9v&uoYI6@B!Dblx z^5PhA1$#UmEMPS7`_@ScqyBOqg{8JqKUE(NZqkUiRq2WCdTUVbM4 z+Nqi4l05(Mw(!Kk+mu2#`+B}GAu?NJ-D6p+)Iz*QkB#&m^>GKu-QzW^a6J^x+rLmK zUINYftNd6y1vslDnDGNjCo3gxF=dEWRFntei%S4f3(Jg zQxg(T5yelYI4QqI7IEvio}Z1WuR7(R&4dC_0J}p9cxR&tXlUVi@9ZKVxw$m_G!LJC z5I|rFjK?J#6h2uMF;tKAF(c0sF+)PMjCucPgBOUxEu%VyuHo0hNWRk98xk$iiqq-9a(+%umK*j+$qmXovd*3phe=Esk` zdWNd1MukO1)g(8XYwfB0tCm2zYTG7n*{Es>IDw@ZuyTo3`5F}Ku_0Z}?CJZXSJjTN zdh1?HV#^Q|M*YS$=?S5Kw@8J>y7S$K3{x21Vgaov3m*vS+Ee%naU!o z$+*XSr5@W~4=Tq+ErcoR*-^cnKC2W^ zq=gxGRssE7wo~=_-cOv9#eUUT;s|;@;To$CuYPa0`|V%aF3V;0$t^!rzXeaD=JERt z^P1V7?ylJTb+rnK%tRsz7Xw8~aKStpa)f&8Q%g&RP)k)+45t0UvL@DEBnqnh$5yZd z&o1WEMpZE#QsL@a#dtRC9UxaSFZuhXjC3vsQ!WV!HYPheVP7aWqA9Uc#03Qjk2m)B z358U`qbZ29B317$-f?b!uitMrwimnsy_0(Y_lFfbAWt9B_I$G zdJzotve!UkABCBkE_Rfam3^n3+ob04kf*-3b^}NCn>y;dxj@FJPhG~b?5mi) zgr-5~zj_YU+)(ZI7P=w%mYXM7H}n&q)>K-s_eoc+1_y-oA(WOmr_E9vQG;te^hKONB z4GCB@mkeb4nSW#mM z`N3Yrr(hwWGA`%$I*Dz%ip^#9 z9I1N#;}j>A705duE_@XEjUy>u+YE_y@7`Sfj=~}FyMOP>kQGvHfs+Mpr(L~`nN*qn z2qC`DJ`zs_R44AZ(V$#utHJ z7TO^^Cup0-Zg4qMzWFv?KH#{2R79cFZst<`4)-yDEqv(&mm&(MWYmYEs`y#SiTc&W zT6&`ZPC}}%%-W|X|H_420-eGE2NN=U1@+gWg?B71qsoQf#>Jsyt+uK{JZ43g#@-2~ z*};-y6zYNCfmFfzjji zQ< z`Y*GSzQV^`z>0L_A07ub#ebwf$;(Wda@;yN8oxu=C~JWttN}==iS*)6(uK9lAtT~W zW2{zWaoYybj5N>tZF9+MIgx-f^S|L;rCANlk@a_1O{Av_3SxV?*BPxCbjGXROT-{S z`1u@Y9y<=$W^HY45BOg%oZd4buJAh6?w)}eRXF(UrYY2c(COTNk{-))KQ!}BG#^`6a#0@WnwLyTn*J0qIH^++9%Tz4 zm2*?*iWJv7>)w9_o1~rj7mu@4WA699WvM|Vhhxcy`=k2nn_>elFdTSo=vrD^mktgF zU%aS$a6jr41%F)o_++g|g9u&GNymeNRj~^Mt<)~BD- z6HAe8BL?*bs;J^mK=uA45F5|Fyh> zg_61TKkUe3JFeQjDGtC@-2UK$x}N3&mlaUgZ}^qJ5y#}hA(8$M761OslpGV)`9^;- zP~2suq>k_H0jYL;d>l>S%7rd7uW>phwysw*=@G;V=>EX*mPPSyyx`F*LzR);_1K_} zIvm8rCHGAc5IiH}QR>mU*~w$EEL8j<9#g#2GZL|yCXW*73kwP`D(oB`aah`cZj;aU z7$Zu{%`F3;jpmT^RtV0B#G@oPW+EpSOYl)ZSWWouH-P&oG_L$?QTdryM5xknf4(ju zgovCMVnL8bvF!we`Rm)i7r+bX3lgQLb&rf}o#5mQhYDm$dQ(0{Hhj913iK9;K$k>C zy<>P3wP0LsA+9Zqeuw#1D_!`himGad3(6neQ*%@C{{8zDBa6U@CNXhwaWOG535g1W zLj2sXAy=nTKT-ikI63NW7mkbGiuS^4Rfm=6kIhF)&~uQUmtQ(qs=K z0_t6Ujw~*QfCKIHEY}!_WqU82W~qhu*+~h1P2xytnj4HK>X%aT1?|t?Ll}X+1B`<$ zFZK<+p{_2~E7QxQ$JQ9sK@XpNlE`0_U;BK|ZT>+KHXu&+11VmuuSimcc(Z(xGOlR)$%pb>6KW$3l2dZzxKU42Z%J_fZ>u)o-p ztnDC4B|`it`*#!7JAykJewITL9TeZt&=6eW&(VtRds)E8Z)*FV41j6Rqm=;>P*2VS zWC?pZQ_LP;5%y4nj7XN2-XTTs+s(s|c%~IViRO*_hnP$U4u^hzx9qYGkr>vO(SZSc zs?D`Eaz@5Chw{r^T`HCfExs?Lh~5O}_o7P7+z6Ux;l6KjP{%B(J;NZx^ zVOt3nVhb+a3j$oACQ|M*0?0lzO$e+x%JhqomHUP+UAZ30GPa?$1~f7U2`j z`9=Lc^V6_J?<;91 zorjLqT)fp7*l%qjJmlWkk?p|J9Nz2M=hD0~LYNX&gn)*h8f5Z8=iqbg+oXK{{ z7pF@dY**X4$yt4|JqeS}KXuA2FQUjhC{R`w@XEYA{W7zAjS=`0I?$aC@(y zZ>F3{TU$1r_q|!33VDM{n{8JN>n`P<4>%`4S?c(5U?QI9bB95VxrKFywQpcHo=?~F zI(u@;s{NU|ukQmPq5ouFE0RAkgvi{XluMYOhK7e?5|p5IW_EUVWrf9^a=FmF;33g# z>QM79kL$cQQEGZ&@hK6YH+cH{gSjFMH38$Ve_B0uB(Ewl_=a}m5{wV~xBjicD=)p8 z_R*dgQ~h14iE^7XslZLXpu+b2Ulw2$9%&oeKce8V)8L#VZczCcLOrAyzFiBnqK@2{ z`1HA`XI%@?%COgXn-J;@@hR#>{x5d@b22g>7Y7A*LNM zExvDg`j1t+mQe_qdt9_ZLwH#oY^pJ1ugCxlBi>YCx%W&hP1=%DvvaPdR{Pt~de_Or)zFr$&?sA3{wH5O8xt`BW|0@dx+q`45~fCKw?t5kzB^n z&d!deg4_;9oxB-^t-Uo&>AyFV_;9bRtSm0+dt+m9JtSA@Og+t>jEJ!K+4DpSZY{J2 zBkU%I+q75@Di5)yx-)JM3!S~^=(v5~Tzlo+1`#}hKVKfxpxSnrUgm{SgYf<|@NWCY z3*^#7-GOip$guh-q#@G3m)4{`?AE&vNuFO2ZdBH%0Au_ZDhmYh5;DQ1j*f`v)Gi%* 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 literal 0 HcmV?d00001 diff --git a/msautotest/renderers/expected/multilabel-leader.svg b/msautotest/renderers/expected/multilabel-leader.svg new file mode 100644 index 0000000000..b5ea19d5b3 --- /dev/null +++ b/msautotest/renderers/expected/multilabel-leader.svg @@ -0,0 +1,706 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/msautotest/renderers/multilabel-leader.map b/msautotest/renderers/multilabel-leader.map new file mode 100644 index 0000000000..e4b4c48305 --- /dev/null +++ b/msautotest/renderers/multilabel-leader.map @@ -0,0 +1,525 @@ +# RUN_PARMS: multilabel-leader.png [SHP2IMG] -m [MAPFILE] -i png -o [RESULT] +# RUN_PARMS: multilabel-leader.pdf [SHP2IMG] -m [MAPFILE] -i pdf -o [RESULT] +# RUN_PARMS: multilabel-leader.svg [SHP2IMG] -m [MAPFILE] -i svg -o [RESULT] +# RUN_PARMS: multilabel-leader.cairo.png [SHP2IMG] -m [MAPFILE] -i cairopng -o [RESULT] +# +map + +imagetype png +size 400 300 +extent -85 -40 10 30 +web + metadata + "ows_enable_request" "*" + "ows_srs" "EPSG:4326" + "labelcache_map_edge_buffer" "10" + end +end + + +#debug 10 +#config "MS_ERRORFILE" "stderr" +projection + "init=epsg:4326" +end +imagecolor 230 230 230 +fontset "data/fonts.lst" + +symbol + type ellipse + points 1 1 end + name "circle" +end + symbol + name "v10" + type truetype + font "dejavu" + character "➜" + anchorpoint 0.30 0.85 + end + symbol + name "v20" + type truetype + font "dejavu" + character "➝" + anchorpoint 0.30 0.85 + end + symbol + name "v30" + type truetype + font "dejavu" + character "➞" + anchorpoint 0.30 0.85 + end + symbol + name "v40" + type truetype + font "dejavu" + character "➟" + anchorpoint 0.30 0.85 + end + symbol + name "v50" + type truetype + font "dejavu" + character "➠" + anchorpoint 0.30 0.85 + end + symbol + name "v60" + type truetype + font "dejavu" + character "➡" + anchorpoint 0.30 0.85 + end + symbol + name "v70" + type truetype + font "dejavu" + character "➢" + anchorpoint 0.30 0.85 + end + symbol + name "v80" + type truetype + font "dejavu" + character "➣" + anchorpoint 0.30 0.85 + end + symbol + name "v90" + type truetype + font "dejavu" + character "➤" + anchorpoint 0.30 0.85 + end + symbol + name "v100" + type truetype + font "dejavu" + character "➥" + anchorpoint 0.30 0.85 + end + symbol + name "v110" + type truetype + font "dejavu" + character "➦" + anchorpoint 0.30 0.85 + end + symbol + name "v120" + type truetype + font "dejavu" + character "➧" + anchorpoint 0.30 0.85 + end + symbol + name "v130" + type truetype + font "dejavu" + character "➨" + anchorpoint 0.30 0.85 + end + symbol + name "v140" + type truetype + font "dejavu" + character "➩" + anchorpoint 0.30 0.85 + end + symbol + name "n0" + type truetype + font "dejavu" + character "⚐" + end + symbol + name "n1" + type truetype + font "dejavu" + character "⚑" + end + symbol + name "n2" + type truetype + font "dejavu" + character "⚒" + end + symbol + name "n3" + type truetype + font "dejavu" + character "⚓" + end + symbol + name "n4" + type truetype + font "dejavu" + character "⚔" + end + symbol + name "n5" + type truetype + font "dejavu" + character "⚕" + end + symbol + name "n6" + type truetype + font "dejavu" + character "⚖" + end + symbol + name "n7" + type truetype + font "dejavu" + character "⚗" + end + symbol + name "n8" + type truetype + font "dejavu" + character "⚘" + end + symbol + name "n9" + type truetype + font "dejavu" + character "⚙" + end + +layer + type point + status on + name "p2" + group "p1" + data "data/meteo.shp" + class + style + symbol "circle" + outlinecolor 255 0 0 + size 2 + end + end +end + +layer + type point + status on + name "met" + group "p1" + data "data/meteo.shp" + class + leader + maxdistance 50 + gridstep 10 + style + color 255 0 0 + width 4 + end + end + label + partials false + text "[p]" + font "dejavu" + size 7 + type truetype + color 0 0 0 + offset 12 -12 + force group + end + label + expression ([dp]>=0) + text "+[dp]" + font "dejavu" + size 7 + type truetype + color 0 0 0 + offset 12 0 + force group + end + label + expression ([dp]<0) + text "[dp]" + font "dejavu" + size 7 + type truetype + color 0 0 0 + offset 12 0 + force group + end + label + expression ([wspeed] > 0 and [wspeed] <= 10) + style + color 0 0 0 + geomtransform labelpnt + angle [wangle] + symbol "v10" + size 15 + end + force group + end + label + expression ([wspeed] > 10 and [wspeed] <= 20) + style + color 0 0 0 + geomtransform labelpnt + angle [wangle] + symbol "v20" + size 15 + end + force group + end + label + expression ([wspeed] > 20 and [wspeed] <= 30) + style + color 0 0 0 + geomtransform labelpnt + angle [wangle] + symbol "v30" + size 15 + end + force group + end + label + expression ([wspeed] > 30 and [wspeed] <= 40) + style + color 0 0 0 + geomtransform labelpnt + angle [wangle] + symbol "v40" + size 15 + end + force group + end + label + expression ([wspeed] > 40 and [wspeed] <= 50) + style + color 0 0 0 + geomtransform labelpnt + angle [wangle] + symbol "v50" + size 15 + end + force group + end + label + expression ([wspeed] > 50 and [wspeed] <= 60) + style + color 0 0 0 + geomtransform labelpnt + angle [wangle] + symbol "v60" + size 15 + end + force group + end + label + expression ([wspeed] > 60 and [wspeed] <= 70) + style + color 0 0 0 + geomtransform labelpnt + angle [wangle] + symbol "v70" + size 15 + end + force group + end + label + expression ([wspeed] > 70 and [wspeed] <= 80) + style + color 0 0 0 + geomtransform labelpnt + angle [wangle] + symbol "v80" + size 15 + end + force group + end + label + expression ([wspeed] > 80 and [wspeed] <= 90) + style + color 0 0 0 + geomtransform labelpnt + angle [wangle] + symbol "v90" + size 15 + end + force group + end + label + expression ([wspeed] > 90 and [wspeed] <= 100) + style + color 0 0 0 + geomtransform labelpnt + angle [wangle] + symbol "v100" + size 15 + end + force group + end + label + expression ([wspeed] > 100 and [wspeed] <= 110) + style + color 0 0 0 + geomtransform labelpnt + angle [wangle] + symbol "v110" + size 15 + end + force group + end + label + expression ([wspeed] > 110 and [wspeed] <= 120) + style + color 0 0 0 + geomtransform labelpnt + angle [wangle] + symbol "v120" + size 15 + end + force group + end + label + expression ([wspeed] > 120 and [wspeed] <= 130) + style + color 0 0 0 + geomtransform labelpnt + angle [wangle] + symbol "v130" + size 15 + end + force group + end + label + expression ([wspeed] > 130 and [wspeed] <= 140) + style + color 0 0 0 + geomtransform labelpnt + angle [wangle] + symbol "v140" + size 15 + end + force group + end + label + expression ([nebul]=0) + style + color 0 0 0 + symbol "n0" + size 10 + end + force group + end + label + expression ([nebul]=1) + style + color 0 0 0 + symbol "n1" + size 10 + end + force group + end + label + expression ([nebul]=2) + style + color 0 0 0 + symbol "n2" + size 10 + end + force group + end + label + expression ([nebul]=3) + style + color 0 0 0 + symbol "n3" + size 10 + end + force group + end + label + expression ([nebul]=4) + style + color 0 0 0 + symbol "n4" + size 10 + end + force group + end + label + expression ([nebul]=5) + style + color 0 0 0 + symbol "n5" + size 10 + end + force group + end + label + expression ([nebul]=6) + style + color 0 0 0 + symbol "n6" + size 10 + end + force group + end + label + expression ([nebul]=7) + style + color 0 0 0 + symbol "n7" + size 10 + end + force group + end + label + expression ([nebul]=8) + style + color 0 0 0 + symbol "n8" + size 10 + end + force group + end + label + expression ([nebul]=9) + style + color 0 0 0 + symbol "n9" + size 10 + end + force group + end + + label + expression ([temp]<0) + text "-[temp]" + type truetype + font "dejavu" + size 7 + offset -12 -12 + color 0 0 0 + force group + end + label + expression ([temp]>=0) + text "+[temp]" + type truetype + font "dejavu" + size 7 + offset -12 -12 + color 0 0 0 + force group + style + geomtransform labelpoly + outlinecolor 255 0 0 + width 1 + end + end + end +end + +end From 45b3917f8924adc2fa5f3ecfcd5b9455fdab4a55 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Tue, 20 Sep 2016 18:58:30 +0200 Subject: [PATCH 060/221] Fix tests afeter #5264 --- .../renderers/expected/line_marker_svg.png | Bin 13605 -> 13621 bytes msautotest/renderers/expected/point_svg.png | Bin 6881 -> 6906 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/msautotest/renderers/expected/line_marker_svg.png b/msautotest/renderers/expected/line_marker_svg.png index 9dd2794d35e14a688d118d74d6a4db74fd4aa411..04f00adbbe0fc9ca079716b929477f4cc89fefa9 100644 GIT binary patch literal 13621 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 MDJ98jag&h$0TUiMV*mgE literal 13605 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 diff --git a/msautotest/renderers/expected/point_svg.png b/msautotest/renderers/expected/point_svg.png index 24f1753b6e8bf8531639eeb69a2f6f2c592a1820..c22e1c787a881d55403a9a9e9584cd19681244e1 100644 GIT binary patch literal 6906 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 Date: Tue, 20 Sep 2016 14:05:58 -0300 Subject: [PATCH 061/221] add link to tracker, for msautotest --- msautotest/README | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/msautotest/README b/msautotest/README index fe25a807d2..e83faf0958 100644 --- a/msautotest/README +++ b/msautotest/README @@ -2,4 +2,5 @@ See: http://www.mapserver.org/development/tests/autotest.html -Send new tests via MapServer Issue Tracker (component MSAutoTest). +Send new tests via MapServer Issue Tracker at https://github.com/mapserver/mapserver/issues/ +(use the label 'Msautotest'). From 537a312a705b24e3e116ca6691c2de27882da658 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Tue, 20 Sep 2016 19:54:43 +0200 Subject: [PATCH 062/221] simplify multilabel/leader example (#5326) --- .../expected/multilabel-leader.cairo.png | Bin 68375 -> 42027 bytes .../renderers/expected/multilabel-leader.pdf | Bin 178736 -> 46279 bytes .../renderers/expected/multilabel-leader.png | Bin 68623 -> 41979 bytes .../renderers/expected/multilabel-leader.svg | 478 +++--------------- msautotest/renderers/multilabel-leader.map | 48 ++ 5 files changed, 122 insertions(+), 404 deletions(-) diff --git a/msautotest/renderers/expected/multilabel-leader.cairo.png b/msautotest/renderers/expected/multilabel-leader.cairo.png index 04805843cb282317b15d68924910821d57e117c2..e1e20d17d7ea922adb46c0f1ddc84fa97b6aa903 100644 GIT binary patch literal 42027 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 TksFQ*5B@Y&^;AA6*@XQcm_usn literal 68375 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

P03@8Hr^K5YJ!CJO8Dy+wgovXv#If$y2! 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 literal 178736 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

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

l{ 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 diff --git a/msautotest/renderers/expected/multilabel-leader.png b/msautotest/renderers/expected/multilabel-leader.png index 04aa8b0d05f17052ba011e5a494059bbf3485748..f16cc9c872060babaa78f6a39c95e53b19d2347e 100644 GIT binary patch literal 41979 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 Yh6CUD|EFE_hXDRC+D2NnXs77^2eg8|9RL6T literal 68623 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%0Au_ZDhmYh5;DQ1j*f`v)Gi%* zdis2m_0I}a>K_NlYw6ptXb@`*+e07M0WPhFQ{;MX+diIdd&@J5iK(38u53yZ>-4Ft zGx|On>dC@ItUnc*MtwK&C`2H2L4q!Ie|J~IhYU*(fT@kBp9SlQjMC&hZyZm6p$NU! z09FYvr3n-s5uz6peEpd3OL2RZ^vX!K?C-g(Qv+7WU~g{`F#L|ag#-oBn==(p7lwxu z6;4eZAcHDBDp#H-G}d{iUekdXW=@}gB>Fhl7&K$vl>Y8+HB-|D=jjsih3Yl{)JS+( zM=xpg5Q(;VVct?PTu?J>Yin1YI3O^OE3t*WEw_D@nfLdz%*!Xt@D9obj}_}au2|S< zB%T4gc|eD&92tr0&x$26uM(G!;;C{T%RmubvnzrI++I)iz2|dx=V#1EZZJB23J69k zfmz1;>FlH(heViJw%&cN8ppH({k%x&ok_`*?bD^E$*=1{Yu^laV`9!oALKMNNM;wr zcYMQu!T!XD76PxVa_d#}RxZp-wSqeb-U%US!LwJ2(#cU^;(=rMVgPTB)QL+*!oHkr z07uYw3RrK9Tjej!YaECy#m_}-&30~cX#;d&9>_Ynt?S&nguhGQYH!m}Wf z{QUTCINXody?}fa^^wfG{)_+7vK|CX{kJas^w}on~j2WE1fkFi8+@IbF{JtPkqp7Q{ z<@~8&sQTP_wNv$_FJz@r=+Y#qjjTo@~g9E<%HcQPfF{IeuD5)0E zn|iWWPE7HJW29xc2zcT>fBxL|S%gUd4It&$5%C|)%5)Y4$E6v%U|5D-v?e#_drn`n zJ{7?P0;OZ9$jCZy1kp6n+h8t5(E1<_aCypjIvzi8nIU8% zuAiEoreZPz=J~}jwWuh{Mk+?h+Qr4Ccn$%@;P+OqJVbr$Klqo@Kw}j1rn|ltgA(l5X`lZZ;d;_-RC&k7 z%PT61)Gv6bqoX5O#beFLDwb-A2h0y}Ts~yf6ovMBo_cTV1gmz@;1G`ykt4W-1kYu| z=!q%!upwe0Lp8bYx>aK#b*xeGR!qVcwQ&b27@+m(V(2)X7(RZCYrpwQo?-whh!Spr z4xDH=bt?0JKlQFyZhlG7N`U>TeL=N;g9Y_EDPBXwQetWLa`N(|M7|WQ$vjG)pCAGT z9q&~dfla4~ms>+02T}#PhM~>{Fi_-ZDpC(e$4AeZ(1v<&%KyRy2q925 zQ_}cde%O7+f$eZ8c^`3GEcb-{O|HV{6KK6 z`i+n90;v1zXXOfrI~Xze8fjBDzC!W61EZj!OHL&rH~C%`qQ8sq?&#z>7+y3+PQXIH zxq)7?@AIUjkvpt%q_C7I_-tueDgNk3+IA^b8!;l*A$yj;w^l4_A!MJ#+!-+hxsT1A z+-^X?;CK=u0t)+dtZ^Y#KDf;JXRqe;<}of$%;GzWgLb6%<`X;=j2)=CNd*NQIywo- z*7s1IRQK=SXC>xZ2bNT^_0)Yi4pM4AFMt?WTP}mf^VP>OrM`h`V|Kk@2;VcwEZih9 zoCMh(?$J*?zb_|BY07#U(uBAwc)ZL*Pp!ke@f2UhgfUC$U11TmXNBypw&)MzT6@$M~|YQ z#mVSw3H;qx0F_WS1gf7R^fl1 zfTu9z?WOuLB|PF83MQI|@_gOFBGi<)bb=28BT+{Mz_~|2-XbKPU{J@yV$Ls5o?EEK ze3$~3y=FS;%g%>u(N-JxdyHqk8OA!3knph%)=xP9d`OYYc3QadL^Fcccl17p1b!Uj z2jGgY>YJR6eb((R*AbUZL%xLd;K7>RWI1~7{l_W zXH@E9K!>uBABLKkqTKu|#}YudY?54Amc&CDU(0gH-sU1lH~NIFli{7(zF85%ki6 z2GpI<8ItGEFQWih!`QPGW}_v-H3fMSJG%{_xXnod>9L1N+?f(id=s7M9Hj%}2DhM| zY;!!Ydb8FKSlAEwQ7P!{+3(*`wz0%HQB@(dt#@Sy_Br{dXHcLcIh3ov> z;?))a2j5u*^e=CRJwq7uf%-kqih*!q*<%I?lUbRh|4{H&CBHZr#H5)S&&$Qx zktl^KZR5rzCD}ydFO(Pq;3eoz5?3SPvNH^h4&%gIhM*v z5gTjFgFNZ*yO0vcUE!d=f7~oBEn!X>IHZ;VC$7&-v95^BO5!l#5l{^+^(d};sOqXJ z^Lkf0af38OPxr)-7Vq1#C_m-OQ-SCiaG6Cq*-sc|m0nW|J-K4IKJiN%A7JjrU=Gyyb3wCtTxw&}kv7%D53gp4j9ULaEvSLZ zNQU+($!7XQ`U(f>cVJPXb=EJbl)pXNQSQ{JB;!fGLGW32SOjDl$azdFtX7ZcvY!5T zwYV5%U9lux0uf7)=^uFNc(~!%f&q-8%D^Q}h>O!BM~?BB)oUOTCB~&&n!=KhP0)|| zjZ3;Ina4sl`pBfBq_#(WHea`d;BDV(<|uecdc5vE{qlB$?mjMZqQvO^O(ktAL>F!x zGSn=}K%Cj54~>iMHxJre!v%XUsL^wWrEIR zEdgNa)pbTjs<(_cF^Rr9TXI#b1R*E0HTd(EB{|p@sNZA5xl2*(lC84 zRM0s;A3OVt-&-)tnkFGaqyq@QfJ00#?u=ST;q66-px7fm`yVcv)1mVFMZ$O?wH3e{ z2);N>Z8Ut)oZ?a?s^{vddKZ^kSh#t4vOcFCX7&)6>f@<=U-bHhBgI{3$HvD`I7Lp( z-5+N*Nr$8jsYI{YZ(gbTd zu=%M};Lbt7)Oi`#%E80KBTU=*#f$QC8TcS@qOQ)j?=YsA?Sl92cVbgCp4#fM)3 z>lJFg2c6mbSxE<R|8n$2GNDlA>r237yC-#4Rf~ zFM39O+z$$ZNrQ>aANURr5C0?f^vea0Nam|k{IEA1sq+uYD1@J0Z|wb*T=4%~Eu(0O2d}6y zfrBta$&6cR$d0?C>gnkmg}uTcc~|WD2rm`O15=T*2f_3A>w7YBe}s~!8S4%QsVjv) z#BXR*LYLwtUIfZIWL)Q0{i0M`QzP=3Dn*)zjdi`Nd65N@;ztsTP#n53^;=O)5vK38_S^8L@VjTV+S|nTu*cjoD9;Fu_46moU(;J&Kz6Ks zD$WE4yah&}d!X8P*)sIGsT5AT{BM-~2FhU_j# zExgbaLXA5)8#O0CL+pm`jNAEE6l& zeKwx2;;;yY9}ia_vB(Gc0&4_ljoW)Spfkb=(QM?=WZss+`re;`C)(vP@Z#PSKWMDm zG|Xlma5y3vfN}grQk>lb8gEr2{VfvBv=*B-Mu)_e7Y2J%|7|0@`0aodOaI7HZSOL$ z>6UW?padfN2aN$I`H?q1oFGK)I*O-RsQ`?C08iHyn%M=DI_Kdsz18fYH?V)s=GAun zz!Q39<&b(SV1gMKxP*%jd$IH&=vP{Z(4{h5@1&(2IE|VMmiX}!GUOvwY z=0i}=KGk&2y0BXm$nh}9`4Hd}Jk&;4a%Z*E^TgJho zxQ~Ki7F)+yy#r_FdsEZ!$NOJ_nvU{KdxKd~`t9598@l^W-wPJgTrsE*YL&l#(DPRJ zv!kUA@mMrF6OoRM+u!&iaQuqIY{ySuU;pMGF|8;hTUFVQlADcL43@E^t+H>;0KH6qqK?c3VHtUCVkUoEo6C8X-n>J6& z^ZE1VluonSt8zi{<+f1SGIl9Bq03iYpr1G*h!rJK;6cqU3w7o|35rKg>F}D|9v}1e z>}F*^fDU~V+FgE-1&nO_P-WdnpZ{b}Fpa+Y?$eeRiZ@z_+yB}IK_R|_g#;5+xfS1U zY+gB6zFOErylM6-Rj8{g0O3wPi6Jy&0s#0y8)#Mm(*XQj(<=ikBy4?6xB=M_xy6o! zJR!8{DH|Gqvj_Qv4Hgc+6pj;81x!2N$&rgR0x?1$GsdIKONZ`+3-hI>UEs*j$4WO> zayM7*H;nN~#RoJ3rftF&zG?5reNU3e;jK0`+<|}gWyD=R4Cw!w+MlMx`%zxuegC#W zIx!>vE6sx!138i|!<{w2; z{bw@VHYr(>lRrgYSX78%V;H1YO!?#VfvYYmnp zWVK1eLqcpXp8#x+aF>b*$}O#PTcAF()Idd^qE4XpsHEQBUYPR>4a%_4{n;v3N)S{- za?@NK_Ehp3DjxYAjg0-&6*1Luup@nK+7=Qh^$(<_E-g!p_^4T5heK2N1o+0F)#VDNoI@VMH#|u(7U%|SrT&=+KU&dNmg!exev+pLhfMtlxZ62>j z$+uVAImeaIF<&gi+Qx<&M(ruYWvx3tm%%gL>5v75*$idDbXU;Cg3?q1x-hZQ<7U@7 z77dRzskGKU;X+2{hm^Evkr!`hBy$t_`-g)DUQ%A(kV+MXn@jlP(Z|g9lvO;mBBWaA zA|@RMdg8rlf>!!7eD(9=<6Od9C4m=8a_r1P5fP6_h7K<4Y)rlJ&GbqPW&KYBso&O3 zm+G!nLn2i>*Re8rA%bT-iyRx=WSQbF*x}5}S?|`f(DW)g8uJYvB$z4Kf+(UO&c!fF z44!~aV6h&b-+SI`W?}JXck+?)oiv`Zqmswaz%O1Q(jEWps%n%t>Gb_ zxjg4*X^bEItBcYff7Eb1B94icm-dZQXp{1DHH5>bs_nfTM_S}PSq(?5FpaQ0v=cgW zO+kvOLy(Q8jqq>B4?&R0Kki%f0XrcBNzKNDW)N1TAZ$xwMmd-;o(MFZ z()Qf_v!}kHJ&0&wV!z*j%%AZ;@l9%Hy+J0+FwW$*cKE{!3!w=kSHf%wcS<%mt6y(? z@U3I5OpkHlIC@cTxm%l?(P9`P7WJ+g_PON^-s~tCnlkA4VCg$iKyr6xX6A!c6?QTV zB5DLpgqPoHexlN2I!h>Ad2%*e$@tFc-qiBqV%BEa99Rw<3 zK;lE?E9Jl#5|%cHVR~P}TC8ShCLt%iA`b;p38JqE`aM{3=pD^l-rwJUP00tl&+TD! z3Dy?!eSP_pDxTy`C*f0he`wih;3b`g5`^L&GRyqPRgUuXcK9iLT=pO$H(AN^gG)U_ zeLc~^ejk%kPSkLUWDHkkyvsDc#5*G|fGgbQYa^O4e&#-vK?NaLk+nnDK$U-k@RMIB z82Tnw^Qv*UqXVj_OpnV2eTg#*b&gkiLobfch{LaD$+e{ic{p~p5rIMQ!U=Z+*NXp- z?77xDTw4J||bSk9|yx7hG>DJpq z)2VMATykD(-N4LRKAZTNMB2cZb@ehWEiZvOuT=Sf4&L#b-O*ZQjOJ<|b!=;Eq*PhM`}bbo{oBc7oy7ES^zEBGS0mrQC&Sg8NE1?y zCb(E%JLLSL7EkUO!g~*6nF+0O$I725MV$L1X5qI^1`~?hd(sXPs>h)8Fb#pllI5nZ zo|RtA%OQTOYp&M_OMiz;Tp+>f4|fcB4>nvtI1zaq^6^vCx(qyFbjrzi9z>Cbn?QH>#t$nT79>UQ}H zg1X0FCn$8Y5c2{)oS)_BMhmY~1IWxi`KorAH#h(6VKZ$K+OdVW18MS1`mFC~Rn>%M zt&-`kL$N@JKz$-t5Sue0jd}4~kY^9QK7%IknN~24L3v!i31J9I=>cV&wFGR;U|;AH znvKP_r<=C~QiR_I85vRjRj+3x)a!K0g`rerJMW+G%#_QDL>Il%+*x18NGI}F`N8W2 zOwmua&7LIV))~UH>Zq#joeZsXQISo82AZg6y2n6!C1ge6e551wz7yB-21@BJhZF~{ zVBb1`e#a-JU%zUhR5&Ie0`x|GyI3s&X1??JM8dGln1`aA)rPG$_4|)f`FBK*nxe(p zi|tsD%yLQ#A-mI>%O?O-_=bjtsTMKNg`S*sw|m~5jWA{MIl`E78CUmtl-QjfVbry- zNqK@*Ui2)UqNA7k-$LV3iF)4`&qG6-{wlWway*g9Z#zp;Vnn~Ks1Od(nm46Nd2Pc0 z?BHBk4tDm}G$J|)_^Y7=O%KG!oI|qBaX0Cx`&tKGB){r}!tKwEGzEHw6NR}2tuCEr z1hc-Fn?aE1U)4W|DL^AhRo#m8GmEqO<6pYP3JsZZUtJS;E(c4g!*^y z<9`HNwusHWJp$2Z-^2Pb1j(HrvEi7BioVgxTL$ZR7>nt7fH9yW@?CA(PZh#S)S7uf z+>DX77_B6tC1UzE$s7>_a*rPxjV*S`%Oh_tWT-7@BDC_z1ah7?Hd>V4TB1+BB(s%c_$lmx;?f*i?F1T+b zxU_xt;XzPsYSETJ)rDj`>f+<$iz-^k>mN{JQ0z2bkFMZqm_KGTy2O%koPtZJMhWu5_o*+qYTw-L~O7Y}F zux+)M|IufsDc+$D+ujtu<37+%rhya%OhW`mMrI~86$xh^;Y5c>K=f!=tmDqFlF-5p zuvSW^rXu}~P>@?wgAAG$ud$fS-Ya`ol97gc|K$Ri&Hcn zSi8ipZb^KjRaYk`WH|l5EP(clpE}B!dN4sfqsCwGA7Dcfg%>5H0MD}&-b@PzMAHeR z4DcZdMV(i3hU3BrQ8_n&3soEKWZ~Ae#AgLLER!7`LKZi_GEx)h9@#&ep%a$P?nY_r zOlb3R9LIc#ZQ#P(j}avQFNM`mXJy5C|r|iE@=DE;MvY_d|YiR8!Z)*br4n z7vQ(}O>Q2SGMA;#O%975Z#|z0j(|5Rq4JZ^(Lxrr#m{V!W63D5j2(y#YJJ#&4%fjalcx!LMjePp7d;1muXI zX;%?G227VoH6&{d?h@D+nm^_mg zioN^^H>ue6#c>F2K;ly4&dyfHD8a1@2f%Xn>dQ&0d6^8%VyKdBU;;1)eu9*mb!*VK zHfCeN{LReJzdOYk%+@;L5zrmzj?Ci{7zJB=d zJs&BjL5VesA#)Ve-^m_WYD?u9bxcIB7@@4@IR)ERGLqE z`_>I_&j+1h9cB@5hs^;63><0^>n!2Z4%{}$A!3G3ME~vYQN>kp-(ORFu{}yZZH&sy zR)Wr{DTRW}; z(~Nt2cm0Fq$X*CLjR%C3?F4YxIXI$D{Yo=HoW4pJng+Je7J)&KH5MlKyslQSDkY7i zmk^s!fg|+&AKmCZ%z+!T!kho2>8!${-r6WWGjw-%cXu~Phs4k+Ae{<=FtmUQ(jYBJ z;~+>$3@IrgAt{K2)FCBA_%;{cxjYx=InU^S@BOazTkG8eY0fMQ|R8uJ37Xy5iwF%T9IvDV{Ub@ctYr~Y+dDzeqwt9LjvZGmzK_g z-_$)r8EI`}zk|0XaWn-!Fpk5b37mpP6w|GIy9aDU0i^lY7Z>j~sHKNbw`WW*p2}AKC zK=YfMB{xMiH~`q)E0_KiO=A>iSfx+qL2CaNZ8gps4$8&J3C0FZ`R$o42w=FLR^!>$ zuK5L;;J@1WC3-`6ZF!2%W%cq>t;HU^(ORGYqD8BJ4AUghXACbVw(7qZ|3w0SuC@xe z-a9Wv5wjo<43v5!@!a(EZ_Wma(G@LTxyBz|@P})JiBK)caFl zU{I7m_&jW9^7Hsxj)3paeJ9se;|VPK`i|{o>+9^h0}q$odd);~(McpJOvlNV>7H%7C>vEtM?k$z!5kX2GWU3u!8o4Fat%o@7Z$m=Qaj0=Yy@Nz@mW_t(F27^{%T+EIUef=s;->NO?RD-xoJS73@1Y09EBR2L26@ zsbGfKOdycAJ&;&Z!g52}#BZ7j6M{csme65@QVuW;{OD467xX(QikSj2K!86*xsKWb zHzV@pqwx5FXS`lQhvW-UondCuFP;?#fZQcA;@`8}z9n!}Y@sax^J6Mv=gG$eUAs=5 z-^*8{Op(}ly$`PT=KpKg#_S&A@5;2wPbKx|l={ zNCGH#S|YjkFu_Z^B$faqavuHu-pGLt2l^z2iW-fLjg4P#nxQrtr9*~lJ~`lAO+j4( zAU1j+p1|u+t^w5ndbz^ueQ6vx%ULrEq|J{WgG@2-E{E{{Y^4%U&BVTU-JdvJ6pbT- zAHlIgo}GMYT*XBf(8(-4t_8})WYQEco_h^IM*yq&<*4C*Xo?zD<;JdgYG}b6g0*(T zY$#d3HAtQ4m6-g^63Kwnv!6H&6Be^Z&-#(+m zSDs}nVk4aIH5)p!!ZS=gUk{yRTDCJD&$>dg^Bs`a&{7=?{&#}p+e zCOQi8qSc1xuekt{l7xhW_XaSFK|w(d4#h=9Oek6|uMHePPe=n8I8CdT8i~4GUS0;K zoNc*ICZw?N-LBCRZ$^3-IA2DX_TSY~ScHe~jL;nWy-nR)+V0Q64tB25Vu#d#K=X}A z2*h0Xm|A|Z9e9G3WI4DUA3;*LXWSuj-`USkxb9u=k4&3g9pN2g`3gJRG%W-MXD~1+ zbFgQ4p0PipGnizEVjz_h>dDIuRFyeUX`EUG=89%CkV;h7RZ3zTiYo)0yAGF768%|pKVRpmusK=mJtQD9rb9zpN?y4H2VyfFsKh#K?6$kd!H4 zO_`C!-w$ACU=Je9cb>FD3qFIH-$CVq2hBZAdFs;SFQsn5Q;2LcUPq5 zP1N^9WNP)R#^U8*sFj{vf;Jh4?aOzSYnB9F-hgvF`sw~u$8RQ;?1mdk*;4 z2yJUC;4@)w^mCjTd==F;ji3BA(GB20Q(&A)Uw(-j^;#Yky@cngtgZgQh=pKabY4|e zm0Mqtdlh7FO+)+#(w@c~f{Gjh0)j`cundWr8Y%Qo$s9UEH@5cqMFz*{u^?HQnG`Q2 zuigS80*AO-MCfD_JO}yTj2aGLhgvo5)!(YFvxseoS(MkLT@VGA^JPilE_lp5K7Sbe%St}@Zt{yP2TX;_%w z_L)h!31HxEecxx9pLB%YlfTdS>^fSbqM(+o%f!WYllu!bpPJ6_s0bU8hzSfo^?ydc zuy9_nLc6AB9kZ~JHhktUXQu$y_M|#-7ytqwV8t#gDmpWX%u+_aS@H>p0@ilF%lurO z-_<%~7_C!?IJu!t%@aVNM@!Jr`vWDUiF%TU4ik##`1jcswCQhq4b z+wU^)@sXFKEE+#IHE$4jOS&5?mx&@U-r|IPGN#YKm-KXUA}v_Izr>?54G&=f8TZ4x1WtvJp}X8+B^$9XR%t_MPl4(-@#JA=eU5FS4V@vGXJaYV~p@=pFtM zW8acv-;9qF`JFO?95RCg2^aqpq8GzN<*|ccR(-WOWB!5M29@+VObVpaXH0*V;KKNY zr-6J~FD&s%RNTg_aW)l)F%HVJYb8-)=XVrt{mjn}TROMm7<( zFv36`Zwe#Yjzd?G9Q&v5%E*QZN1>wr+vme_s{(fUO`s#`(&f+o{OR@v`@#=WoVV5-q!CN^d-~wPV;CRMJk;?SS zAE^C{%?LBh;j-etsVIJGU50^?z{vDQLkKIZNGUQRp;Uvb7qz?d>-mf#B)Nzs;V0L3 zEimG@+IqF#6SjVuYh&Q*$y_@JC z&3_@vOM}PF`*F3>mAVM z*BDl2W%-;;OP-r2!$NHPLuxjwm6xOMhu)8N;l=_7<W@-6E<$RCg!nEmS0@&f8 zg2PD^gzhM9F`)7!mY4*FtwB5#>^16%7CH{%#g2df9EhvA!E3*xRO3ecWoE=BB<@=x z0A10|v%WWf{8QL~_&a!aLd-4#JdgciK70^TbmeA0+^J;__`j${fp0~x6fMMv{vRt-WA_Z@f7htK5Gz*r(sXDJ5K%tFtv zvD1&!Ca!aHn$3;3zOGENmo8=vRFHq!yi&PX`$0 zS+s5)89|#9Pw_?zH%~ZfaS-S4JZMET%JnjL1RiT~DnQNO3%}-v;>|Jc$Jgzlf1moe zn!ml`hM*uL3;cH-j07!X25YectzxL?+i%R|I)uKqPzUJ#n!+*KCm^1EX+A|+v+u9G zwX4qXE>Z2RH77)?n6%J(Ne#^=_OrAzOmQ_$0QuD&$B7Q0!tbcYDZXMV0@6DjGJ*CX zDi1UtZCcXpZuC*sP{LKHuC2;PG{nR)WfV(&vJyiIV`MIlkacxH1F&28 z`qkiPgs{;WAB;aT@@`<6(RA_$KU%LD8L-OoUl74TpyowVQmJAczQg&!k`yyDq7X8w z{WUH-`@Vw^@e};zqzL#cfE8%D9Ka3f0UbPRA6~yElorUy?XHHrcep^Jwnj?FKJt}vu>di;--49e*}>nn9<&8ubO!0gb zcI$7Ym?{ijeQMyTEstBp)b(_6DXXd)9wO&wUxe6Bj*a0HV77VzNU&q-)6ZGDRQdb~iO&Lq<9%z`K+<)L zIvgBKVZ&)0B^2OUOh%iT;R+YOjeh!-r7tN)VRpu5xg%7<+nbDx%xWCs0X^ge_-u(vPkF@K=@VG`o2>A0$&{BCFf)r6vvR0Y9683Rp2mpF>kb(W3stKy){ z^mbbTU3=1(GKKNEsy&kwyG_^2B1{iZpj3F53VxT7Z@( zMy-j6h!oR;d^+q+tOx*gkIv7_6~qD0rj_e4Be?62GsSKp4W$RaiI^^mRgy54Q!_q- z=s~OZgs%yWagx8~ zj9Gg*1b=ob<^cU{S^5cFOluM1ymnDgEc#0DXfXcDlZ(*cbG;XaEbEu&JZ96-(4e(D zXP{}z!7~U@hXkn1w!;)6c(G~|1|E*LMZ)XZw|FjretyNRVo71>4$x|qFvl=>Gu!V( zM%vT(R|8L@HoPi)(tJUMU29v9ezFCtc6u7@2k*+H@XFB6a}`=Um%T0WAs`rCN^-7` zWSZKp0GlQ9??O4RbhN9$S)d{jG;2oP18l}!>3tlYAwZuhIzvU7&teF%TN*09w4imvw zpIBGt`Fq;;aJi&^GUF`m5Q>9AmyHAWd($N+H)=Cia|sY{1_j)j2kRQw*Vh1SUKroL zDmN@@sy2%f^51Y=Y_%mL>-gho^`3VpqO=(3TA=R4hR1)Zbh1=KA%tcs2ed7r`3!xF z%2dWP*4#}^CD!qzp`qb%&aI(Fx);!fu=@1j{J@32c--C(qODnOzlPobOKCc2(unp^ zbJQq)SxkKKhqd8WLb&B8k4!z(v(J&;9gjMbQp$q&nthiB4bhkbu=-W3M@DKafQ;8# z_P~S89So$U9IYk{nDto7pkn5yki2|E2KQ94yD^+WxlIojWjW{{5r7TdW1G?}z8}6SI$0zYG12oj_D@gg)u?ps!%;fS*+l z@&{DdM%^ZpzU&M|+Z1BSY=Ic5ND!1*2+^@Kpj8k@jTiDLE1#hHxnbjH&hY^?MCVs>bTm?$3eb(F`6mDs>ur z=@yR2InrpYV%7jQ+t+%~z$jH(YU<*O=!H`2({r+!>^imrka-b!5Nnjt2Ot*&mFUw9 z<9*U-ERmu+@JP0muCnWtCCA(Z9bc*jEQW>h!%wZ@8taujyr?6>CrIQav&{ApA!9w}+Vh z`g)5@MG48Y8x9(kDJ!s5W#^k#Scsv z(45-Q(Q!HR5)78D0dZ+6Dbyk`hUkb#0Cibgg_tK5!TO>t(LCRUz@~^gBLpTmOjV5N zD#>UCf4!qXJzqmbd0gR0i~ueIp$Oo;mCsMHFhK=idDa_aE)YimpBM#SJgu6(ju#S} zi$t#n@I45O<)`FCb#ou=?VXCcycl$RD&E5i0Z zm@MGs7e_YpUY`z_@1CA}AYq|Q#{HQO=fyt;8Fe-(^rkG0_QvNGW`ur*R^4{um2R$o z0Q7L-IVX>c`|MK?kAWYyMXj{lb6EzF)2%5D`U@(-a2nbqvhZW=An~Fdvs$?SP$~a zgA>&nK~S%$lZD9*F^Zqh4~wbQGh#e?s8|gOue|(|DaGgMCO==4s3ojTF)2mR&%qQU z05W3mqLS1hYO3)UZm|{X6MRn8f-v)|lT8duZ9p(^T;lPUH8zUPD1Q>b%%DQrgJGqz#)A%94V-_j?w-j`7<+U7 zwsv{{x-W==-m(8)(dpV~Va0uhIbqanFlA*w`KF|+=H;P8jf{14Q&gjk65`{(0tnjt_w+a@@M(FGt&viCAjU1hHW{@U z-!FHfwgeGTmd(Oh1a)tIji4T;RpT8hy-e;Ola>C8rJIJ!aL^wY?Izvdvrd-m7D@aFO0&;JS;mE9qf!C=Jo7h6E__D&RP6X41Ky8FaJLfzp$ z#j5C_p{}m3rS(l~0Hm;1R{miN(Nj_D;Ix%-lskX9`00;^^FtW7)yr$Fc^|zW@fqq3 z{sB3f>wzU}PKWj2Nmh3TTzuG%T0pYbBcrC))*R%~ea_$1eheZPA3hhUZRIj_s;kxX z^uT<2phKdq>LUs>jg}Tuf>6vQK8d`q;TGg5%1pIr%XcQrf6%1g2I}0Kcq(yCd)KxP zSU{*Ew`Oxa8Dyiq-Q$}pEvrmq^v4u!x0=nXyB-UD>IP(8;9q}jIe2T-|(W2<@RW4Jqa-EzTa5{*%|@YK`B!q5=c?3IPw!`+tE-TL~UP&`4# z8PdMDf7m@>aDe$>LD_{^1O*9yU?^AOR;&R5fc0p*h{kmoeZ7QvM$j(*Hu*I+vDkNF zB@+xdc`@1w5NY|ps*qpqqMLffZOu1wSE$Zu$KU_|cdM!17K&@P(-9JVK(P@H^y`U> z?(XljqI#laz8f2_=2P1`ln)YBt9kFYVgrK{J&Qp_;P|K0|IF0LLc&@shwd? zs%gDV(yQ@6K|E6VWbmbZG{%yRag6s@B|BIQ2vSbwE#>p zp!V_%Yi$-pg#|8q`x5d#$FhT2v3y^97piO5GWbQyza96eq?%L|ItO@XOaj^&FgfQy z^T!DB*~eH>rNMoGS^#zc3={3BJ?z3q0ujd&>A_Q`H&5b135{h|0Lc!z9| zB{?Av*mcXfBy5_(6IK?g%yDl9x1@6*qwoeyxU(?H;+!rTse!^i!S^h43r*tOL~P@U0tbzz~F|W_qp~JuA}EE%O^uAUw4_+m@vMndRPJM z+lK@WZ)O1VmqHI7Y-IH>-)N8t9hrR&`dzC1Zj&DTP3qkH{>Faj604C>Fg{yoirK1EDmIM9F3G0FB}j9oGJ(^OLaGKoJU!D{c8rITjuiZ z{%ZPZn71LU21QVJgecSAOlWqS2|}BYP%qg2Yr$Wq0bF__DuHKBE;t1nt#mY3+a00O zeyTz#`guWetkJj0Le)_IwXegbCA}LbW#Zlc-oH2fRH{34doIkm1)gX6Dj|ZLmOpr~ z|5ck0NH}gm6{;b4&IIO6TTD54cjQk4Eb{Bn+@lMC-AJe$Zx`dS8M_u-$F3F#Z}E++ zwYSG{ts-vXr*|EYWwK;3ttZT@JBafAS0F(X&JLp@`a`)W_THrY!{DI($rb}!eI#1z z2Oj>rW5j?cdCUfPgo$-13E3%t6^Qinj=ua@T}^wMK@X6pDGiH=YD+SDt@Ig-ojk5D zDI3aCQ4L*;a*|@*Z*5A^zb#E<@vEk}6m%*S4n4nPDqyCi>N(8u5*{-UA_sM8QBl%g4CIOx-Zgp_;4?TXcg$1F z=KJDoo|HLTQ}xhZ5MF$i8W*QfD0k5&X{IL1=@41no3WPabkkV=D5om)bgO5$g5yRi z2CG|J-~9_-&J`FCluN4ON%b~&Oj*9ZAOdwy_BGMm8Q)l2eOAaDoHm(>h;pgZ6T98M z=0{!hl#XS>%t4FTY>p=Z$MDo~XZPJ`99|})AsZ{uM;o#&D)c`CE~ucd=vk&+KhC2H z7Fz7A;|lJys+I{Kp9zXN)=NH6AzUC@%(bwjM4_-*kw7@y$WT_kx<-;=FD@*cx(YZx zB77H+)mwq&k=GM1JsWVR+a%2DAG0gjqFY`D#7O#Vz5YyLTi)Xkb`^ z`~bSwgVr>k;5zQ`7-|yE7BQS{=o5J)M3IoM>*jAGM+7&WDg1|*BkD23-HiMM#AG0_ zGD`bFnz1L};Uar`dyh0mu=&ZT=HIFN`}sk>b%mb3Z)`jTqYdb*_~7X6;}?&l1Ql^4>-5kr~q zUitvZ;z=?qnH)p+3rtWq$47#@CU+|Vo@hGWn5V;H`~-PAZKzq3zQ8FM$ONF|LK_0g zuQ$$**6j%huGar_>C=U__vhQjYi*~Ipsq)BVk^!Ge&DDo-`<$Xui9Duvu zCl$rIei04k8eqdHMxG{VzPMGV19?b1g~m$EAsg=Q%OBU zv%4%a#w+U^@7ZdK5cHvFPNg!t5Y!^rFXM2yAhN|HM%7tHqp1vh?ng&bwy4qocGOcC z|61I1$}s}WM)lwt`4}1XTEcfV9CU}%!m>cV4+!blion^^3{-aL0;-?8Svz!@B6wi~ zk1A&{x>w48HE@Vt zPge*FZhUA8n@fLKk>TdF0mbWJ=HJiw{8tIxn)qwdspSS15$C@cP6qOF@FEqZKxnYX zk-kbJNT|1O3y9qBvCY(i^ z16;jjQ-dD594{WBa5+uFsNI6r8&^gr=-)ALAWMI{7eo( z=S9UOezX?TC;b>3zOxyHhV@hH;NZYN9bEft%39qqa}2UUFM{bG?MEGLs@nT4on+$b z|LMz3{a|d@ecNo`eQjVMDJkjd>Ix>Zm?DG6UD|$20|T+1#e+os-n#(X0S)Tx%^08h z)r`+^&y}im$VK-2E)JWz_BS^N`p81sOG-*W@IF#d+_aM$t2R5C^7(Ml9iWUzRWm4& z#U4wNUa4a}9~zq(*#$R|kEu>7GGKE6ztt{Z<1?$bp*a{uRDp8zeP>kmiAN1<8nFX| zVmS3Y`s%`qCE81A2qwJPV$zE^42cAV>6K9aGX-wO1|?D?<4F8i+JSS~<5pGt)?5is z%9q0OLhizaR2J?l?Gm@HZsbf*%9mnRIQz3-zY=osYkfvX`Z*Wlo3d$vTJHKFulYl< zBVe-Rw!$#hP;Bo$eGc9mj7)>z$zykjf~Q?REfj!zcn#4tZ#G8=kGygCmb&vUU}0vD=pJkb{_q1MkA!lJyl-wc76 zXM`qh3xbwMQa8D^ca`n&QzY^{AU!)v`6_~fTd{v0JLc|2D?}eSE z@YBObL_{7vQcmOFmj;r5Cfu-= zjuY^0nWO)*M8&()AG+R)QLV&Fw!q|_iR%28v7_^nBOloo z&WJ3Yqjso0o<*a?biu$%cy@iw86STjAh7Tk2M6awb3^k5Z#Hpfvk|#;(7jJQZ%zdF zn(5&eu>AN7gj&g03993!bm@!Fm+1+vx{B&B@O0Y!D}XxDPTc4t2#?hX~T$*b7?6)3R%KV$Mc*xB7CReRAiP&i-O^toS%ah z&jI_%@;X0jUW>yY-AXgq-IcgV2gYNly|H_wP<#HYO$@0+2mtN+#>WNNs=69gOyR~7 zf-HmbN2RXgc^RvC)HC3!_AYh!RiX4d;!e>$*}5w{#mQ+BGR&bjetdZ}q4fFtcXbdm{wE(w`e#4tLj9b| z3`*IiYGfqZct-jTgAr=5#tD`h>fY8Jqa>ocdTlZnGaYRpB(%eg?o@!ztm2*0wP#A#U^(z zl^Q;ZV3R2EifbEQdwk6ox;jNe_z~9jhkkrTaCkGjzpzU*Nh9%=I7`rWgpxx%8(+&g z3TYJK5yFxZamRpe6KxLA&HcW#>y!*KOrrtUZ=yUe-4=*XG_^+6BQZAOR#E`HmP>HC zQY*wTmLvPfE6Nc z+$`qt$sIEjbCuS%_-yAb*m4sG0b-B>#>`qTWo6|k7>3?MGTT%moS@vHaj-Du0HnRf zKvQ>~UjGL``$>7sJV>y99c9TwNeQW)py2Cuk6P%t+e~M$g2NHE(NC`a{_XR`996Sk z|60W^Jp{EMm)q9WWL>e>RPP`pG=GXum(_3V6H4FFcJ=o5-{vFVz@uLD{~o&Z!IIFC zw|5-JszjskCM(K7vnH#Y!M7%8nzO z7o+<8byx6RS9l$!>^n(}u$ zk6c{`^P(SRLerhzg1p!sND=Mv7662pnV&dlV~Qz~ycwCg(ghOpB2VamNj5h(cM17- zhGUF)tMKd$5!MRc!tU5PR5rO|zNaGw!ynNjtPZ7awgLcI@|`JZFy0M>zJezs#+~7I zf;N}+)-7Ds*{Kv7fhZ>sr23p@+Js^FCXh_9X&b->MqdDEXOg2D5+WUcFD#37zm@@M zaS&)LDPc#|b=@+iH6D}P+7>P<@uKnwHpR@2cBkp3H* zA(5?7Kmoo6HHbsvpuQKla_2k0mkr-)#E`=*noJIGt=p?U-~PWn&>;?_6)3 z&|{^QRD$T$@ob?Y=DD`?#Jxn2ZbusTeY>_~2dGCPB^REHlNVM;NrADkec<-(F>D1@MG`(!|gdeG;pRNj=Tk&sM^XdevahXk^h zg}}7*lLV+j9$UZ(c$SMR+U2c1q)Hp$Ns}4VA&DJ~79Q<&+6Vqj^uk9=;aE~qQn0Op z^Mx54E-u;nvbYvT{UWEPrlv?b5dWDy0O^XYL3WGL%94YM=cL)!emv5OFFvm1g*EG7 z1tan(_dXVUiC`N@rrO>+1I5i5PcXE9G39&A?9?>)=dF0q`{scKc$)~S{?O(7qPPiO zt0wN3^4aW_W|s4pnG=|Is>l?>ag<#+oDWrR~H0X?0E#DG}O6H!QZ^yzD)V-`)@C*>Ryo zOC~Uk?3N1TjizsWNl&KCG_-r0r>MO`QNuTU-5yI1dhk@4%XRb#2tl2{5V?g2mf}8( z5hTe#<}QlU;g-4`;8$~3b;df8#D7H}jX>gs^F1;J{Gily0a!oELC#Sd$yHQyQ?X85Egv2I^k$-ZEUj9hQ zSg*T>4SGs^RGpyf!Jh-e`g(AR32jeg-(dY%VW3^?QjR*Vuis(74IFq2+;L`F1paVg zKajyp&LFZDBAr&?3o1PPaThefSpKDmPEvm1lkRL}u!$`DHr^!fz+k+@KApd@NkUp2 zK(21wnx!ckG0O@j+59T?jH)DoDl(OUs8(E9m>|LoP-8DXD#ZQ5_LOn4fSu?tFJlUex1Wdy6#Y^?3 zg2889PwM1@>TP7aiKN?@G8;M~e;uw+O--d_Zf^YZO+>Hr>zLsusNK5%-SF&@4m|)N zRJM21FL>5J`$_78orzA|2p68A!y_u1CJ9m9#y)po57v0*-vjJ+?dky4wKjP2XBu7# zet4-mPL5}#BE++}(5};@{E4MCxUk&8PwqfN4LOPtmVP|#0-W=A-&{Y=t3&j7{MdCf zCjUI(G2OAv7Cb&azWJE}I_|HB@$~(1Uwi+zdh!eX@w_&T>v{spJ^%d7!_umm58OrM zl?3m8{`VhI+Kby>?FSyb{eZU%ulcaU12pCWd7n!kFH$4EsEywi<+$w|bv1n5Soig$ zt^u|RG7~gWkQhF)u|rP7mis#MbBb$eLs`LYBgLz9@Kd*>uIYh z-V_sqCM(L%U#m4=ukrE~AD*hNN)9`=^~;w}4!$>-vJ{ERz6Zn_P?@vH)1tXbBYNS1 zP|Tij)BKN*dQz!lfgo1^j-K&PomZRLznli_#tRids}?9{MqGnNxG1#V!iU2llY9g1 zU6#D0O{DzLXVM!_Md;{&Zm#RB`urms{7X@-HEvnyP{=OrPXfsS-9AwFc84IL2T-3%Jz zKqu?h?=4i55X*^DREzF0l+k1FZAl^YPohGRweN#9nknGz?Bn3achHg2&#?@uhB{`x ze}^yb;myUw4^V)}m*^N31l_?8G|Iu0xo<6CfDZR(-U8MyY{B@Mgm*;)JEFYRpm+M9 zu}M<70q~$zF#a?yE`!TV-e6{lo!BP~s_%|oigQE4X>v%f;1#dK8*2O|yLSTjkT90 z$CdtNTU``!jl+d}Ol<-3=sj}$y$GseYHPh%a|UTYX1OWcEvmKq?vusEkx|eC+K64j ze$u9snLre z+6$+v;Gl6}(azc!)jZ~h@yib}8aq_(#E!o|K38!lbMyhS(B0(*(K#aS&+*Zb0~O1i z73ZK?gKQ?vgQFu^X?SK)vi}#Z#<;@1Fo@iH>3$1G$NwmHxwO$!a8iD?=6FW7v|X`J zc`p_YxO0rYHdB2gNFiXAfth*z(^k2qx)f6Qpl&J~DFB+IwzIc`?{|?L(XK`8{{F4v zjC$*r02V%g$q5|WV^MJ=J$03a1H6Iu}eTrjHj;&hCOi${$L}Jj1 zkH0MS^e}TwW}cbTHy+c^(vO( z9CwLV8i+W%9S+>v?0kqh|n9cq#A>EU(bMHQ2_McfgoZ=n>rcFsx5%y@=Km&BdQJ)uNS8B zf-3e$BXyn20vcRYDH^sxPb4QGJbW}l29Qbc zZD0mHKBZOm7(dy(dim-cV;z}uAg4heJTHxcS)CKdl5lbwY;93R{-bdJxwl70PL4kN z>p1QIECA*3ZsU8t6jHJu_)NEYxji94|JvnMpI`b(LeI{Q9RKVA2d$77@9&6l>8yCx zmY}1H3%j>i{OjP|8Epy&<5%vAtqG;dIaVfdR>C?q>PuSbkgT68AFn7mk#nGQ(0~ev zWPTx7LAy;W%k&4BsB1IgdN&2D;g1AJ7pDR@7KsIoui0R&r<>YA@c1U+ypglQiy)E) zw6a*sxc)L$wui&yuiCRlZn{8)ItZ#>f|Ey_3-;GgB1+2>bng89gUPVJHzpLDxfHzy{|>SW z2^VzG2jB>x*FjNvIqp5b<^1T8nLhbqH$lyCMMTWJIT*?(`Nj$G$zc4j$i$2Iw~ax)HfQj%UbEn|6bvc?Ti!Y zzl|7iXJ+v-8=T|DMv{_|ExmAZc8=-h&yD35aJX*{1FHJ_5yM?59}7#*xA6m)5>;Dt z$9lNHo2|OTA6>TZ^>S+sSc>Wp9Asz<5rJ!~9 z{ZXZk({ZzZSZMlwEFqr2|MtJB_H*5a{_rPBTY@ZbI0#|Sm2Ih65W%Thyy;w>V3{?X z*mcn3s=_ruc>znNVD_=WM>^!Bc)~|l!9S7e*o_WcVeM@+xT+#(F=7!BH_wVn?WSAS zo}(g~NhnCTXy-1c%x?=t}*V?nk9EOE0v|&|wFI;A{^Bw{2 ze(f(hoZ5G{qTy2K5%>aY!a^X&mQfGRFzT#&x7$AkZfA#IDK>dssqkN(d24`W6kFR1Gq?Htr0&Cq z59a0764}`#BtglnK@`ayuUACwNh&Fl|_Rvx;o=`m=4K*T11^p zKoP364M2K;KAxS}_RIO*yUl0Ttw(fmbylFM*Ky+x%)Se$egue2n~&^z*bEngFCDih zI1O&Zq;p;}V!6NWlvtGccx*eL3b{_PUL_Su8-o~G?%I8oA(rn_GePyA zswW3ZqnUV&GNfIOlq=JtLqkNhh>gC4V?{;1ZeLWCgm{yvR0X~mh(*L%f+ZPX+Y=gM z?JAz2NM3%%p5Ew@v$NWQ9G79C9-X}@MjWYwF)4;(7!kQM*!m6P=e@$9&*AyeTF)L1 zSyxV8b?#tkCB_aMJgpxsQ)&naeE@(o?0hE?7zJ=tXWCH7k@Ib0@hNj!+g}Z(ymt$&j#K-~ZQ8t&3C-9RFyR0Gp2~z@3B(!| zfb2jPP8fJ9PNLy!REyqS{2KmmMpL!PXN9&Xwx>+=tC4*Ny`)!;$;6IaI&i5X`c6m7 zb=Toh>6}a7JGQsXwbPQxuT0;?=MPjiADnc+un66$^{+2SD2`sZJ;s}?fbt*ZX})4V zwFI_jd%9$S$ju9xz%6$e9Bhb1R~127wFgz@@z_b=djc$T4UbtLJaU+%eCQ#3!>fub z?);P7PA*LuoMfIVP~xb!EdM93~WIYE8}y4ch)@<+LO2@#(LX#-cve%>L9w~H%yQkaK9I0&S?LJQ4WLM ze^(=8!cMvT|FTXujh%j;3RqvFg`9P1r+sMk+U3GW!BLuG+LpwaTH} zSvw#Iy(|1lpfi>-?%A&H?F~;>miFez@!j>dUvPPW(+90rCLL=vGJ(H-RKt(WJZ3e{ zPfGkZCcb_>@xu}{h=Wq@^mV_6zoL!&jJ_ zpLdV>QIFnp@6}qf7?b}r=g`T3cSm%({AUrN^5A+7JXT#%(QTCiNpW!)wiu+BDTF-9d2sbx>4hT6piTcTt@nyQ|rSY1Eye~D?1Kh&0 zhqO_K#5#y`fSe|npBAFd_Z;uibu%952>6YTE|}HaB$FRM^^<;yd3lY(;;T(C#Klrkd!N7HqoY#))T&bR&FzfLsl;z1CJ*>kw|^R0513>lM$Z2I zn{$B%ToeG$6;^FT>%;d12*gg02AxY6gBscVjy|}AvA~+MQY#<95zWMR5KloKFOD@z2gfh^bA#(k=XLJEwkYj@qhF-?MS`gA zXdHT@LVM?X-7l5aLZaGbthiu1+Kq3j!_FrlH-~7Rwf)ZmF!DhJ_=KM*A%w87K^_|* zBUaW{^2YV2CVIcEH^wt+ySwWiqC7hPo1=yin=*IpvWdqHix{>;Jd>E)K4-_C{#zO{ zGV`Sk#>QB513PS?QO4DV$`sECdQ6lcfsQU9zyTZE^C4u<%s7&1@$j_p#za$36kfJe z{k;Fd{=3@rGi9p<$ltFe{R~KO_^F0f4TKwf6f%yh(!9m{90nsn=ndxAjILHuR)!ll zx)`e$s~Z$5@8SP`&E?nS&^lLA88MiYkN^&x=zXocY+m1Ae#FE^O6afUD&eNaDFrw= z*peh`xbLHfkzUqTR+mw~+dUud%j(|od$bzWFnljK5F_pLgP}?&2>+~qCoU-ohedG% z*>nECEev-XzX|X2WiRsZ9A2KvlJC|BH4&D;8A6xDnxMa%);s<=FUV4`8IVCZ^FQ*f z>Si+!66C{g9MY4DE|jcSV~v3{^B49voekWaHuwaho+iaT>~~G;{N!vq*UHswpWc{3 z_y=tn(gp{kHvi7lYi09ChvSS@OpA~_r?w(xvNF1_gHMIXS)lyi(Z;*EWeJ6L=#{{B zy0yLC%Z4*f)f=G^mz*5j=&=GGZF^|pmNDbjBWJ$DZ-kduxqgSzcl2Dw*%6iI=$va+ z^Ra;PYS=g&6sJgLC+(N46XE*qbwUwn%Z1`Lp_@5GiDQMgGG~tW*2il7ot&GCanPei zU#{mlBIrt@0r#!Ktc3yzB&G8t^DW4tNrt*DleUWe{^3Ad7A%Hi>m;kWs~#P z_}ZUn`aWLxAgrm5p(z|>lef?d!IkciubSJ^OLs5FhWrxi43-YB6)UUX62hG zKwdl&&mgBc(xYcp4Ph5-bhP=Vy*-oq)6ld;cOTc>jA^>vP~U$YH<%=_tovUqz)6N? zqDz&4L8XZ-#;Ux{p9MQ|dm$f%r`Es7LU?!bqn=Z!mROtj7L}E?8+N2sgfw#a4#^7W zt6>g!X5LOhlgB|5NT)2vVBCx@D_faqrsUAXg)LEpG|B>4^nsX|R!eFnVY(<+I=Vog zA7S!-i2(0McXfQ}=~XT%Qz$i~p&MMlnv2AT7cgL{tQSN=#{V_}mFZ$+4Ds=qaTHW& zf4v@*s~q-t8G}?bIr{YlQ2G?=b#)B{@hSek)|GaU{s0OMXFl#dHL9CCN*O?h!R~H5 zknp-%^#CD-beWy_K2!f0P{*AQV`D#O*g}KqY}vy89H050-0dFD7U>B4q0`%&lCNoE#f2EA-<-4^-~=h{O{t%r0>5^6cnAWd z8(iaZ-DTKQYqdBAW0JFkm0KQmVt@umHIniYFGrL0s4crhdPb7@n&zpGawzBFzVLax z)cGtXMovza_1Rc^?MH5$D^_3@XwK&s)6Eyx*th?>Z2R!4 z?6*T0=@hbPgd2zk!5y#eivw(bjapR2}hchgCJhia}ob4(XX|Im0sXCxjxT^Rf;`5Hh)eQe4Xo|%|oLp#t08# z0c{?4M2*pNvIdpx@Y5DolV^%Za%X3&!>76lV~|j8M&U}-lLBKt1Cv&m3VxJsMW8=H zmhGqK?}e2%xd?P{?Glnn6K^Ss5!nxiTFkEuKl^WjC85j^aD4|-T%RN_v_tcE=q^)K zIdwJa5iP*&#wK+e6PKrj$ zjgY2ySpzCIfJ`_W`^o(`3zxJ)TPxS|qFblFL>hXjSk>pnQo9cwzLHyEZukwp zZMM|*7T|PxOOL}uS-?-MOc?x6w%UfnkCfHcvxcbx%f=i`Jc)a;0ho^KH`Xe%C&Xv2 zi2UtWm3y0AeL}m;30*Q70XkG7dIg0!0v6>D=AK^k%`_Seul_k^r;=5(vRVMk!IR=; zmJVZ^CCewWpBukwbw@BLz4!U~VQv2w3mU_cl$>1c$9oP@(G9xE>EV=^2?=50QtcNz zjb%&lcskuY0mv6HzK^6V`qyPq07sIa)BpVh3Kuxu_`GDAsktBn@Ze-PLZalP{DkG@ zi&M+8xfIIHJ)Y!!XYwIg0@1i&>DsrR=)DKF*6sYPh^Ew6ZoI&KRVpGY+56c_B&vq; zA2)^mwmDLcJ|w`(Mu>70XUj-R7ZnOc5QfBxjsHE^ifoAO^4VQg3&KoIc|k^{OX29z zV|4bkrcxY56#2GIVjF^dHc+k}#*52nD)vGvs(U!~KeH+#?m6eO98B>GK&y3iKkt}GC? zQ+9FLglVeQxSEq%OmP)w5jMW*cI|H*{PmWRQ?7yUzM^#t5jiW!vC&b?QzCjn+2B)e z69rXE+^lmgd0tw|-Nhw^Hpd}vrG(Ws1+#`Tr=8{7u5RLv)upK@)Y*K?4O{ebj`64{ zeU#zp=~Q1ZWs)&}k>u8wcFB8g><9Q8hIKOa^;StK#V+@zIUeDy-j}5m^o#xGVa%u?qk;K@9u0?Chr9ac{9k6>FGGoKfl_JZg zdZm5VHY6}c$2CDzFUr71jC#6kD!zsAC8@j3dsLxW{K8`2*Tn@dB{w~N`%^=PdX?3YB0SK0`bkxGh|eFQyaPGiHlLhtDW;o^|Q z;adV@^+cgsBHg6>3Rvt;PEVcAb1*+(zLD_W)UTX+_C7gzWnlOvyZ5g%Frg-!no2T> z&$`?{>3N^JX#BVXiRDxsTBPBByfgV{8#M1WH?oHk0c85VHKbA`Xk&-2a@_qmmyGJ8V+6C@tiH^ID|)r5|={tL^&Z;yR!QA&wG1#Ezs2SqE%O)m?xRG&mr@(pSaa z;lg!t)vG^&y4@Q&yv+IEa|VLY?g(6{Kq}r`Uw3kJ%+}J#A_=PEsh(q5IYri|Bu>pn z;*oML2P#KpxGpf0kPt&?*VqyaFDIioKxtwm72BrR_ z>j~`tN^ea}s8sfw`s;xE-DM4E_xTAa@;x_KD*Pco@B7M%k~UkUG9|i7P#548e&Z@d z;@iTr0N6)%=H9S0JS3MQ?Qc-`zo)SpuB+3Wglk_>!;Kl#qy zZ;i|kUw#sgMh~j!Bq+&g(CG9`gh>GDdTiCUm)RS;MXG}&PUCuV@_V8T8}?_~dKxG7_BL4$Mzc;gx-c-i2X zb7d84c+QZ-;9KFjeEac3fSQT=h_J@8+K{_)8ZD7^J3jt}(|gl5!Bia?v(zDXM7r3? z&0VCuH#4}kT+)oj``d%k>FN3#%+Ip=($SAGnn+?v zy^#wb0fKNlpwIGd<<>%**n`iAhI?B*>NbsjzBUK6rWR((Enaemq6CR zUix`Bz{)X#|}+ zd$ZrKrsd^Ty?F5(qRzjC?WUK4(70{( zIQ(&cKYjw%^q^D}tI?wS7`?^I+Y?F4c{rUA)){$o;%i>PlOhJWQ)o+1V3*J!A;W5s zs}R;w+7y~$?yxP3;O9}px)EOQ{;_H@jY9=Y26(5}UU0%0!M9yn`%qbu=%HZLFE2D} z$lp5l=%d}4qtn$++29E1537l9Rm#2A#FV3<$-{Gdz!|k>A#h3e?dsAsD#U}T`AMrD z04pTev!)W|~c72uh`rz_&6zS`vyN$;H}%S4hKX<_kB1>|rY6l0qE;yq?}s!@wN8JDwzdHk!HOIy4mQspDG5C% zltfw+%q!=a^iFy{OH2%B=kg$+6(XQ-&2`3Isbm+Rjk1YA@JvIfo=GI$zm|}Ohf^UV2pb)-15hT zFYI0F;^J|wQ@#(}H%l!P3qU=u#01q??Ej9ZX7e&RyF-AU@D1abRn9Xk6fVif7x0tY z(VAE`&Q~HuAtSzg`C=hOmPa!Y?(_;?7d_tNYymY#NM!5WF82!z{3^tDb`2@OKs(P` z0;mQnHXj2@iO@6Uw_yV6ff~LbhdZM}s#E{hZuTlHft&RNhs1A2Y_M!SJfGy@AtLdA zS7iF#j+xmL=@I$pnc^d0QbU8Jd+_Vu!=as(UeGU)F4cg;N`Uf#4P{a>QO~4t)Lj9B zcAAB^H@ds6`xXYZQ$1O94)g!~CRgSuCA}7TuM2}gxNWa;S{agFho3aRo}Qj&EIV~0 z?K6U8@;{ZhIbdzwalCCAE_NKSc1Ont6{K=vRc)9rB_S!9q!D8UtVBa;;ST@$`;t^@ zQ?Fbk-TV}kScj9%>(ioE+J#YrtoamziO)iBBfisn3C(yfl(Hcq`_?=3O(ry zmqi(LyY6j$#HKqS{iH;F**Z9on(P)Px-ar7g9MAtibR&G82JoOXeBG+M;KA~WEIxs zdmzg-K+^g6VAEiN&78IaGDM#~`2y#mEKu0#11Y1r);Br_Vz2xc&*K&2?YzP)fJ5oM z+RDU4PvvivWIp6y!M;Ehl^G$dOyNX(<4u=It*QtP@+tNh@gvm`{kD${N|~-y_YNVO z$3p}|Jx@wX)^0dBKv@WMn%+R($1%@EY1_0rLO)a`;M3x%cz9Z553cECCINv7L7eYk6 z0x~k~SgS35N~2HS-qj=5cGam+kIa{-wQTnR@hT?i=EKF&P6D}SYnj@CrGt#)5s`u` zmIsy~pIp9(4(Gad@8j4=t@WSpq(6RckTb>Pn)&{AU->@Ya`)AQ&D-NtxnZoGj87Ve zf3knm8A|>7(%L9<)2AE4EH2J67jL26KJ|$>%&4oa6y=WO1n(Ufcd+yMtE%?F)OxLQ z0dD21M$tT5D_2G#(g!AxgOl8q6@Ap>Kx`}PcrUw&y~btCi^KAXrezpK>{2J=#kZf+ zpgkV`G>WbaS?{%-Yy)5$GHy)7`QOk=gyDv)ZEQF@ImL7_ba_06foz?ZXp|S3lV6y^ z1=0_2b%yY0X~j`9o=y*X8xX@4t2Nk-Q}P z^@ZujS0k>_^MXXWUFwaqVpT<13o`~g&40jz{fvsjaUsk$n9whM0J=~-ROQJ`B>u(o zI!DKhSC1d9^qk3LAo(cewHpONrL)+>1$1c z*Y>o9k&-wXNZIapw(UNoHy`Emc?{jJW|bcSIg;fo*Zz!s*;~PNveuA3TniT+g^ zosLXJ_I!|A^E5YW*lely=6m?}Fj{DoVd#%W=IpJwchMpan|`uxGe6TP4yi6qjbHI2 zu7lm$kvWKMjd+o*%UvDjYudZtE>qFKLMtZgH~nDDzvc1u2_nSP&O0uLi~p|$5H00z z>ot-75Z@7(5<}@H;pK#vGI;C1@76r_bSGpUO;|KRS7w7urI~$NK`F^##!!-F$TC3W zZVdwtx6v{rCTa;9tUC0@)HuEBzLu1fw9IhcUVCyLd~)tg8^OjX=0rkFZ{FeO2@e5^ zN#g`~`#ksF2p9cVW(k5k24eMsNCCB_K4@S<5S#sCAK$!T)k+~*O@z+FwCrmYx+pHw z<56XQ#!9>P=#ZCJ&o#mdjG_SAhBp59GsGv-Qzwgsu9J*mv?+k=q0YhcqS zsS?|%VeMl;L-H2}u=e)$uiL8rSlHOR*7WrBm46n#Jt=zaK8D#fe|+QNSg+x6MoB_F zlIoN@G(?JBkBkLNCgy#4a}ycu@!t)#yBMrM`|j6V2qQdmE=6(BAwIzilYpLDDK`={ z08+K$3cNx%=K2i%KL`$xc;?``z~GXz$&(!5aF}45M->FQNC@Xj!^N-85L+*XI82xqZc0F4l|J-F${Aw3AmEv&qobfA{m+dk3aa_9oCTy zivn6sKC69%K`6)?()6O*3B#p@>OI=O^dthZWH)J(msX8Vs_+G@5@f&Q64Oz5vO6Eb zP-tT4D=gyQ86sC*(Skp4$m^Nuzymh@$~?8Y@82@GHE8*RTt03lo3mPTPKf0rD*=5A z?*;*$50H+fC@DLQc3NaD7|&@+Dp}EB5kLr$xYHx)8dAqeA^S$eh?@ENt=@>|8pOi@ zL=KRHFidlIIM&^W$}FGv*-tA`gQMp8geuxc{V!~+U)acjy|bqCE65iIgMi!JddAe7 z`8~*0%}jZL=nEw^b>!d*a%6azKXFFK;deA%v&io9+H#Q9w-XY0%Q5ty$( z+zR^-63!ukhW%c`r!0`-^s&P5eY@%!sn(ycen)uIF1X6+G;oZWk9ba!o+i->0n5@S zw0b4Ck|!iHz5yRsx|ZJ|I)s#%7<7Z&1@^YDTxn%lS{`fhFs{MaU`1Iim^c5aS*G2E51^H#(%zw|1A5w*G^0P`L86!TF4DLr&T zG9E**h^rL}lv5ziZ;pi6=pRIPnLgp9l97_)N~jmqLeE#w?rQ(vIOW|_eO>t%*a26B zN&gNDy>k`JXE(cQaIu|z&CAyN_1D!^m#E){@9yFo!2^ETYw^UqrPzso&Q)=oa@7=< zhz4VX!Lob0F_N1ab8A-exT0JKG_^DXP+b1i0$13ZGfSyf=hyrqNN%7Hw1; zF9uWoJ=J~y&+Cz8js675X`JS02F3@=M69G;`P!p;x+v1>#_oIlMbK-K?l8c>#I(J= ztyNX4?X46xN%L{BR0&)2_4ev&#!%o?8_EUow3Hkc4*EVSCWa9|z9h{M*KDC&!b7y* zuKf-oNpnJ-!UN+8_~CieyU*U-T8M4HQ#a1e0R=$7L={6S!#s|hCOd&i=@&FwODg;|{Ov^2tUCOL z^%R12+mzTEOs4<;e= zA}q^ame{lxk7LBG?9u;TqPCT8fA5b|UmOUh_uh=nncr78AZU{}tr9k&5Wp#W!QM*H zf z5^(r~kQ0wMDcu4T*Fnp$IT-)TI(&BB#wb~fK>s#1MhRm(8#>F~k(rlAu-qF4lBeS~ zFbv+Xev@^Nm?Oj+F42Aqb3AiPwQ2|@Ekc{%?l@M_HxN>&K3s|TjwHsrENgY)RHP!f z+CeLoeS9j^b*5ZI`YH@>C+v^+(XZ#RJ^kEB!>7<{sK z@Z6K|{l#k~_c4_1V!S9b!sGr9Y8Xl0C(S_PU2dxo;Q#Po)AH)=;;p5No>C>hcrWQ+ z$&Ast$CF)DR2YgCn$pk}t<^d1bK>G}`FYw@?+G5@r4PN4-4!yeOT&+wo9$R8`7253 z_kxt^W|kjqL0^qUnw`2jG!pkYqpn`6j?4+zX^aVS5T=Dlx`H<`8)f`o#$IOt`A6y0 z9b>nEY)p8PcV>cK-YHXAAw@5H5Td$6W4|g3LwiQ(ut~MafHVu(Qo;K(;xbFlB;}Fc z+C@2IF3JI!!;)$HfJ>*+RYL7mn0a}pzMK9HKp*-O_W@~$6&pRreRpxoB+O`8Kyequ znnHBfV`}gPYHHM#pR~aMknGgI11vZy4EMW;-_A0)Gf3#7&G9NFODolnYk+BLMOs>Z zhAjwQ5m|y$@^kjj+=)V~_h5)}AtTd|e(^PgFJGfrK|XtuYqaPuSR57!Bgp;SdSg8P zv+$r3{?yYGk<**;-~j|OjL_Y{179MzxNeX#c5Kf-Hm=lU8Ogd2A?H6_r}#ZuXh)ay7B0rJVjB)Q zIU{Ur$ZKh(M{A#P3R#X}7!-isX2sVV6P-bd@HyA?T1v~vl1w|;?HjQi>Nq34|skZK=yS@N2(#CIokWM>4FlHud3f!f9Z4dLt`aN zRD_qXvl0)zoIlAp2ipAaaeq2pEG4wbh&3bBkepMS83e{g5vCL^gWLtUujTBIce0Vl z7Z4;^lDLa@o#vNtGs!n&8pjkh|2Jp&LBPd4zx=S;XmDbJB8_Vo-|kIAJeEo{WmF=j zLB$Jf)FaN^Lk7xu5_UaNPo|z-VPZVo{Gj$>S<_nC@G%2wl^N8EJr1tNiPCrie)EcB zFoWAAmAw~!grSj@lT#Ak)R+~dwmD`V+!Qtu?5*hQqwhM;Z~U4*VDjN(A`bdpEH_f@ z(y+vk6Z>-C$6Zh0XCwzEAt@k2=|W&y1Psbh1v%Zp8KMnBZ3n|hs+g;Hv`M5cdsXe;W{O7 z@bbNr)F=zLtfc4y@=CeeF7Su3h9rB{m^k36{e?P|40vuj#Kitz;|(jjz5(V1_E zK8`pBZ-R)i%HO?5;7M;eLmNQ1h+w;@moI00oK!R0Xc2T1D-ZP3YQAO`Fv;)q_pLoh zWj*^_^5u&{d+UD-tp??Nishhy-*LkjQ{UNZM^L(|V+rgC2|w_oz|a>8{QQ(E>{h~# zX?jl3lSxP&6cn_h3b92zcx))+K!5*9SDt1f1W_NT6(~BW%mYzRIH6Y!WR?VqS&k+k zRxo1B$f(4cPK}Q*V?qf$zDyae7UxC?1mQY-{Zye|xi)M9<)uF(2j6SkD_2rcQg**i zN=zhvux8b0AKlq0FJQXvcDBZ6kRNx3^ZXHF7bNk$`}cAfek1rAs;hDrb9YP0G`zdkXDuLXcH|eqKNMB<9KU=VP@Ix)G)p z?d{LejvW#fDukYc z?74Y4tgDp(Mae4nw;qD|(WB!Y8{zIGp_4J1ukph!j(&co$4jciGWJQ}ds33$Eff{a0>Vvm$mq{U`fdXG2?49$p|Kh#4`QP=BAo(yN(EcHOEqwe<#1FBXnCUF~OV zy%mcjHigChzNbxXZS}=A8#f<>^|$H~3G$|^ehB+PF$VEv?-KkuHQIa@-dh+AC`izpVTolTFY6*V`mmeMCM zE@k~kIPQPB+?nzD(;eJ)cBE3e{e4!89Z$x8_YVp&%J@`wg(ih}8@Q95YsZppe0uR5 z9TSL8wx(Gx>jQdLA{N?OshN7Ka0HSTZv4GLk)de}?b90NftQ)m8Ie!2r zNPWCrvswch!-xosK_w~YGh8ADM#cy+L%tI@wU^18U4WRn3J`UOg?$2@^0jJw}ZB50}ZLRcO`&B-n?{QD+Y0`Yy zQaApkt6qvlgr!CG(ci-dQf|-_>~!DkQj-M!Ot_|9UU`&-{3es7Y}Gyc`ZA)G5l}*E z>P)MEfRnyQV@?smY80Ju3pH)*Qt^NEJ)1H`)#EWVl$4WD*0B&4#Eb2rshw8(eNuk9 z;a`iH5QR$R+})iUoy>%UK_)fZlvGp^U8QL?M3U$`j376LRK&2Ym5;-|3S7LG9|pYv z!bv}Qr%`@d7qy_+!K=$OCSv_)uH?ZxU%wi^qUzjZ$8&{E=CZLSUu9%5h?8vjBg7L5 z#}F#sR+X2_fhQVn-#I9N@6U;NLwo{{X&{jX4+N4`;1x->g`432QhzBMGMEmfxs zZZ@;+$qm6@0O%U1=Dzar^j*#kFg)FIv9rsgt6x^`V1L~|bpOF%N^(aB>I8b}@E4KI z<;MIF1vH{ftSxmQ@rOioQ4kUHxUSyKq|Og2PlWXWW!l`@s^(!y;KAY%eYhxV zb)!`&@&z7VEDMX7faN9fKfh1-kVc`~N*B)@>`6QgzTn={?8rp6y>*Pg5j*Y_q5ttC zP2KSDaKhqB?=vhctir-VbH%Tq;)EFl0tf;-cj^sS5(hU`i+?UWv3D=Fw=0wVvhy}j z=;~G5v7*0seq8Op=qr$V#SJ>U^lGmNFH8yXuW z`@soUCmSN7sUM`@Zm?;O>B{2qgOuKcugOR{kA#d9Y$>2F0dvdigF&W%FKz?Q;=}_Vv9N~}fovjmaO*qLVjkCWE=}AR9ECb4T&n zz?;o1>z8)n2$C$AW`KlOf7$N=F!_md$44KIRC{`**9CPJ4b8#B zYYE0H$iy22Vd>vW4|tA#g;$v`3!`_(gF;$<5j6^-|c(WPh>Aw)*xb>=#H*Y0afyE$Hbr(<$)zjX`#3i%5p% zzj-uDERKRHNT zR~zj;$jH9#7RYr=YLovp`B3fLOAFs1nr)P`p&thLcM84USTdIRryA5bHe_Q2>oP7A zrSN19f5e&@xi^wAoO=N^1RIaOF*7r7j=`ckPN`OV=L=hpmUI}m-h7c}7Nkk``ZT{& zmBbGi6@Azp zQKQ$(^&B$n$sPl1nTpu9VhJF2Sl6$KAzPVFBQCfW;UbbO)F)cUgicC;O61{O(>J)B zGavwrj{f<<9rMnhe^G?wk`JHdx`7_$>-g!PP`$!D$A>T04;yT|$f#dE_e9Q&_1 zB%UrBWc#0hgZ$#xv4JV|9m^G@8%RmA4$=wpwKB-}0e0?_n?~ex5X8OqEzF$ySf*l; z<_h-?oPg|qFT-{d2DbH@gB|_eH*zW>^RUQ8 zgoP<82#P9C94}*F#56#N8jHM4bhOyY@Q5&3?MDml|zM(#>B>g2nk8Q#)fnFRc0hAyQrKJ6&)3& z7zm-#69-au+=71pgNx;3e3ySIoqR-?T3InOtK<+6jMbMxfr^9?m}TW0Cw%7T*6lw3bs>e$k^&PdD|P2BymEH{^aVZ3y=|`V zNH?gOxuGTkQ50kQ@Jl!Uw#-&uznNrr>(;GFLPh*TRS4C*62-b7!@}RQN(Jbx-eb1X z_WS|P#m>t~sQ;8eGeyw4xbntYw%v&yq^c5P3otNsM#x%9E+Z31-vjFjLFSc&sPGuY z>*ma7;KWp#1@+z|6^_PNxXwKu{3YOYshYb~|}) zp5p5||KcvVdn##rIm@btyph{5l)<=~+gC9pwcVcx|KpNhpO0wqo_TMP+t@(HQ#&nd zh>R>VueVjc{J))6PpNV3ClR^4Ji1SFrMgGp#ZC47`5n%4lK5C`7=ya1>Yb2?9F~jXEbiJkL+6C@1;p8eB|3PvzJf zpnbrfN^3-`v+{`hoT6yN7t0*OBV-_O+u_{o7BAUg=MRXx;yjvb7#2m8Sd&7Nt@hvpM`&EX=&Nl&6*yRU7CdG3$ckO zHav!?E=`NqrjxAR2E5WfD8mt<7q+!Z90H4lx%n6P-8tCXH_x}1hJf+N{pm!Mo!uzx z$SfTsPMMl-kABQ~O_r+xNmpm~qF9@x_6mdy0ut%*D(Q#1sa9(zQIA+OZR2ls7eZWz zK$vna4YbXy=fqRxd06@e-tu1?;xRc-X#@-H9ri^ZlY0Rp2PHv+O~HzKFx+~G`us3I ztOxpOUqZFaGI4A7|FrPz@9c+?i++ZN9X}Qk^vSUcDe1KAe{#QQrs7QKVRS76jz-@MtorTZEpUE}rMmndAoj6X{TTkSJ!y2j;mvzab@~ zBZN8rH+#1#dy@)X>cQ|6WfEbY_nFVEL5_~@GVFP6E1s<7)vN3uR@myzm!aedh}w{U zr!-mmuUt(`m~3gkojlXI;9XbKJi-jxc=aoBW62seQF3i_-B?-u`o;U&Yj>om=%cva zYx{eR-dj+m*q`(*!XSat{r>&7;hms#82+;+UCt@2cLI<29xLNliqHD#IsbRAn>5sRN6eagA|&j@u)b^2UpZ zO%imeolCH{4Fv97H?5NbOeEeOSrr};*46&{Axs-_QHTno-rnBHK^*fs`fz(`y|#h| zgdBWZX>unve*Qr#JumAmALCL`rK{L=2H9%sypr2d`!mfZp7rHqzhG^6x^` zoV6w1Kd>I(G;9Wq)mgv8sdChA-%h2DrcD{Z1#Rz`;j-;gQ~yhsNn2j+<61Rh`P5ET zzrVn9eSvBgD;UrD`4b3;18`b)3PxLNsbVa`?v@N^lai9m+`hffrvIHv`SUeXyux(8 zr>jAmpf)V|wNw&*HL!=Zt8Ej3CS#UD^avSrFGL6{$qrp5SU=f=Cp}3s51yV4Ndtt& z4kaoA8vVY*EoToJqz6RaH8yWg!JNcu+i~o@ByS?IB`PGm+*}&j7|YQZdJ&Qryda!* z)Lv~kh)q{W*{L}Oxw04nh*RGD2E^;i%Vn`FE)`l7(0$%;+|ZJW+#Q!X2?iYDl$tcG z`iU|aJFFY+af4Z#%Rw&$**^XYjTM=VjrF3V!v&H;pEC)HiC?6-hORUj-)8k09~s%c z{NR+R8F;hq+3Q^Gr{a)BL1=;yJ3C?>SrK-VW3|gAC@JnzYq%5;bbfXbujc$p4tS_8 zqKgv>ZXH!gazfHfm$D*u{YnR0XJ;)ft+ZT0ex8miy~;un!VUy>YZx|-ldb18S|gvX z-u}Kurh%FP{%iw8xS>y>2&(h|zARH_;kSyY+b{V);aj4(zy5=ymC z;R>e-E+>M`cN}3NN{L2z{6{yiv=jH(Ruyh(el)zu(6ANL<`ht?4%y z-agEqjjmT2RLtu7Sv?0OmsGg_HY>$Wz0<-JZF8Qz3CFTf7cDa%`J*?Hp950?{{5tR zQ&$0cOMxIWQNX#0pXX2@2*0@Vmwc@sE4Dwa{H<-%@RnO{0vOVpyp$MHr!aG9wD5!C zKc5rb5yaNY*CVyVOcmmJ0mEsA`Wi7YIH7qTen*sYKW(xQ-|q0=SM)C~l-lJEJwK|y z8$8h&R>c@DV*D+8jVgLvB;y2e#r)2JcmRE{Hsj%=tq-}x^iIp~*3;F)9>X5f*QZ+b z7d$4OJsCW@( zi$%hwh$Nwsf8oM0TXUURd*bKBgnn8&#EB|bdng4FFUiS1w9(D;G~>S8|E-#m5S7fP zaDMSwhJ1&w=2tTLTi>jdEQ-5XHrQn`Jf#PVm3Pv~%5o7L90z1rScXvu!>1Y)T;i0J z9Nv|ip-N99!wfqwguFTz9?s^BJxjxMzL)iPl5Bq|_PS$3?x;AhLFAi)+GLf%)of|X zuDz_3rI5cjlzSlGQ38*!xLnK-9cS7nl#G0+UYT;dj|sPgx}QIPKIt+)na&wr=sa+~*4|2Tec#N!a) zD}_e^ZtHh^y2htISMBbN<{7A)>@1_iWrz|Zlo>J0-&r*E9{sj!cGQtE)T+0M5G*SL z6yodYZas9H`v(N@whP#a9tVH6fw`x1pPag#y17(_(@VuXd^K~J2a2J{ zi%e>Rk}5|T#)a$`VFutEOkottS^f9ixcVJyh9LL%)ZYZr+vK@^ATv%2N$4 z^K?3Y@6QUKMJq=W+1=bC;d?Ljs`lHMTwudgS)Be-+bskGdL+g8)8@#E~;LUQC<{bG$ zl+qsMaz#U4O%knV&QlZ#+-0TBoT?Ww~JHJP2Y~}yE9sNYf7o-ZiinZ(W5^83Ay{V!>Hwng;$M_ z0zv)+ZhEuKHowyY_oR~9=dmRr0ZW|G@mE}|n~CC?85Kf;+*ouSX;bies9K1ozON{K z_U(QCNGHHS?$O#iKr<^k%}m7Y-Cw&?i#h!$5ZkZ|o-0Lg_tg7*2*Vu*E6Z`?|_$U^MDs;f!b%B|QSUS=XE{7mCe? zfY=xN!!?@@DVk9T#mHUVxBqajYLefs+sMy(!31LLH@SF%<;`p~3#CIiLx_GG*WaBE zd2A%$a-F~p+&?L@cdVE^Q#ts0@}YBTw$VX^73?posy`c@xCD^rNcBm|9tiM~`D4G3 zs`*UHH0J$7Mnd8ckp?+MAr%i0jAiGFKgGr;+nJL3o5yyWfcW*mmoL`OUb3$ObRQ5q z$LgEHUK3S0`(0sXmVeydNPl7{fmVi&-`nx8&!6?*T^E9h^N1KN-A%vEt0YAlOTh?A zcXjie#Bk$$eB3_V4_B3YlrQ#&z>LJ#qkLd@r)cp&pf2!*xo6<{nWb&;WB<9PC9{S# z)s&ZsbVYe$v0q2Qls7K4zaFe`Z+J|?O==_2l$K64^07$>G_F5)86Hri$X^B!nc0Ff z)~o265l`%DhplZ=VBJbi=i3Qe%ND6kst*E{o25+i+EG!Dcb1hl)uYv~dqs$te&%5$ zOw=n6OESZF@b?&EOm~L}2;Crc5z^DH{d&$>2iANhiPo=iRCZtPcAekriP}x6$MJ3f z-lUwe?pdqEhY6U>4d^zBiSiTZdm>cVw-ul6d}8o+P&fBR4SBI~*i9-n-c3O3v$?zh z&(4gf<9H$s#MfMiYGj~yCdKa;=LlUi+pFQH@=Cbb`1&=5PtD$w;dn#o$u%IizOyk| zA!PU*!pu&NZnIq>tc6mZfu|_8-~&p|=)?7mjaWNAizY66W~#C=)jQ@lfVI~z4O@G@ z)()v>d24WbCY!TD=zFBS)=36vb0coPkN-jD(4=m@DWK8&umsITid3i}a07$+`T6wPz|F~F=B=`6|`P1p|9LF4oYq-J+ekpPtn4+^VBw8Z$;bb17;gl#E`I9ujWDKsDlxN;y6J z83_JO3;p=Doa)VYi_Ww4WLNgO8f@zCKJ9FW7Z5OZXbW5rFp_B^xUG0X*%$^NjQo1l z_i47!1B0mB3`(jcGwp4GM@6{A4JGnA??ZRyoYUo454XI`*i4d$n0*Psc%{pvzxD1X zHQmq9@)SSCABj{zcAoD0<(JwfDOnqx8XV=3B+itH-cc4V5C)X50qWPSuVeUO)4F! z;+k9ms!`c|Dfozm(dHUYe3h`x5)|>k+sz{<6~@>vsFC8&>mep}97-i+P`;fG&6J<+ zaSEv=(A@Er5SWH7YEfK^m!%?ZjPi*7{?z<6Zsum_3{A{+EJ5FNUof|b?R$kBo){S! z863P_V|lZ$Vz;m8KT@Ztdr1fC+}-+cX_a$N+26;8+}F&QWO9zEOE3FN7R%9wCA6JN zyy=QzYq@taX}Vc8CB=+f=tUQ)s@v#2`3Ljj;t+KxVSv+Q^4s&>!Ix(z7aO$d1I{HfzV0A><<6J0vYNwi-1%sYknJA}pA7Y;8P6TZxyMFyb>p7-wToF??N9%#y;+x0%=#`Dan0J&plm85^pj33r+=TI zSK67Qec3PzgkZ*KhC+*%P8Nc`aaUVIRw5#MnR5oSe|Jg7=wR_K9N$?{>Ixb6kM@fw zr-Tu{@>k9qXsszN9643WES?v>ox)7@cM(k0pn0+zoqzq1?Zy#X(bZpME?2JFDRGaG zM7aMw{3#mUGqAvmmKS%GnT&+>heMjM`sEH-M8n>sb9e zt;qdEwEW*6Vivb%p%BcK(mtbf7_5g3!PosBxSn0<@ukr3xMCUqD1MUd@%Z(=9B**) z*^C#uR~z}deQp8O9@Wjtts%QL)t1<@?eVnef3q`14eHi*6+RK3VlqE($IXQ?^14Bp;1bGJledCgK!o7o~#&zRVnyD zt!d)Px1RgFVRt>fyi{H~SWo=eTryo@3M~x<97e!@aOduhD||~tFO+P`Jz>T28wK?4 z){TU8EvNr**Pu%;v2}vjR_XH@#dI~75!{?_&cEn9wM1hN3Mz}&E8Pzfz3VYx9r;Or1rTXFyo#P26j~09*#l=|1CZ1)cx9g}r;UT$c2~)lIk2W#afZJ#? z{$xJEoq)MidK_5F8HkT^^Uxi;;HeVLgWf_a8t@ z%Mw#6%M6UJtv0QtF>k z;QK{FJ6M~q^n*h!OHWLU!Mp3OmV7c#>6bnDWWMkQ#)!23_@T#Rqxm#P^{L2FwZkgo zM6t{vCS@^pdQ*5A;gRQEMq#isqE;T%>Wf!TxbnX$h9{|w@DNL(_Fa?Li31!HzQ>Ef zFoepjVI6zJAzAOg(ERnri_7KjclgJL zQ9Gwfr$ZE``-tIaKl9?7=-4It4P)j5)!T^5QM_L-#S!>xaY^4{X$2cmy|Wv&Gze28 z?GtPWwF=%g!*9~IHxeGLrfoZ)dCBDZ0V)3JhBu#tZ&p zSl^HnSfSsnzMC+;i_dXc&58Xfz&BO@Xq9A)WIcCjvNTboCGdXmdn|4qnMU!A&?1Oa zh(x>+XIEgxxgXvvU$dKV9$zYT9^B>sof9|!`yg7%4)b?AWd3RcV zz?zk)DwE(_AR#Taeg)HqSF5$Ku=*1s(!4273QwTviSmupkr}rV7fG)CJ6Zjp=P#%%#PTcMTfNi(w15 zxA(ekG+;^PhQ`d9AX8}u*;~CKJTG<%;MB@%ri%24q%yi!^$TIx+-SvTB5ey7$85NX zVU?8jHTaXhNSZrY4qti2YZ=X*H*+|mUkj~#?$@=~Q=tt;yQDKHQD}?uh0Y86&I>Xp z99pI@aVT?&8dcw}4||JmFR_ZrW&JSchLYqd1MNCV78>N13`?EwyZoE6|AlpzA*X+| znbpyvhy!u?9CkARBE~ht0zi5~^jcpacNEs8&K5TVJ|&`2V@`tj=?`a%{uqxrG>c|Q z1{wJH{-@A*=C5p9if?#M9+=qi8H?!r&)T6%g)!m%Lo61aqb>2aHi~~g>aMK*OhWWH zzH<6}OsV;M*kwNBMi3KTCgqH0IQQ~nW0STm9!H8xa}nW^4C?W*ye!hB48oO*=PIjeiix67>~;rZIs_Yin<+NjS09l~q}J>r0UbQ|F#8=k zUSbv(3%lSM-FYCazupFB5C^D~SSc{y6M?s`+~x<>v&(8qms{up_1jDv87pdBkjrhP zW%wYI<>i;^dqy=lhAS#MG-}Uh*`>1}K41So=8$h*t1tTFPn_4snyjbK3)Sx^e^!2D zVkh&5ULj~&&1#1Ama39Rd!CfqCqSk?2i%ET$L_9O3u8*TiWGUfIqje6xKv-pD@^vg z38i!F5AQci0+X7Kl0bpQL}Md?YC^^Yzg^yOG0|IiIy)iK|Fu-p7%PCH)%$P&<}z8VJD&^n;FGPY2RJ6 zyaSRB4Wc#sU;xa`CyFK*)4hzxWCm3;;;Mp!y8{!ZzqQ+|I>CG5ER83CLuIK;=ED>j zNjg+umaTDYyofq$4_?sys+GbQauP>>0SSSkEgBw&cST=J>!XbUHl_`!+oI;BzezfT(%BhSHzG&Ud2K2X_7fBH-Xn^&IuS+|nvKBHR|RLRx`L&e z>r!8wcuRU!5bsUN^XVlnx|axsHi~TLG6F+O%2;)Kev@~RxIfPj{ZE-LH2TKYmOs95 zM%GFBN^Xm)-6hWk0?9X;MgFw4)&SnZ`8wZ7g?C_>~jZggHGnj>rQE z*5#YvI#oRrkR(->iQ>Q0{ZgDt<(#ho!`Tjip(~OhKh07IP=7|r6h#DxK!wGfsz_XWz}ASOQ1k;@bLO$ zlxF)Xrwcd1pJ$2Bq|jPZxmxbQ$i?-|viURb4Z$Q$ZEy)7mU%SEljL~$%wE>hSvp!|MNSABU&=`b0Af9w>aarv9v)M#W)1k}c>?yN}&+ zwkgoNm+RC94Ex2!#dFDx&Ad??T!0yIPme;hbIT2WXD zTh^Xp;x`5Cam6;HCzWQym%(Y=z0EK9OnRaK+fsp@5}sWKZ;n!E^-gn;|Q{eupeai^oS7=yTnx#c!C*x!f5fzGEH@<=JtfpF+ zLR6*8H*B2}C;L;4)$54N0fJBOh%k(lwU4~L404n&5HHGlHh(NHFT)8!#4JI3dY}h?KUe@W~?t72C2wUja>+NYKR;s~-HE zXi5MuD{2h{n`2)q!3$8>WL28%$IWOK&KYC=0*TNY)-Iv4(&;aDi++Y*oc@K9;VZ_N zT%`%^GVow6m_g9T^@;*5mbu+>c6LYvS@f{>oo|gkr~6Iz%bNp<%d?~?j?zp6fdQ;P zA$3RDL#c*2@(20%<(K(P@SYSzc(43y)NDCTXdR-;P6Ig~|<#!ruuw zUpbl1OvPa=39!lHn;KfpT87B9U!DRPm@Hge#2ejJ^OdGJjN5nzV=z#is(eSAovuot zJu{%00ba)g5MrXNxg5DzArD4LLdu7mE6rZzUR& z$w*eOidioK{&!LIVk?gSprP4&BDtP|Z|OJ)fLI%_ZE~Zq-eNR=koPy^R@G2i6F%7G ze1@br2{&VUns9e=(EBXyTaoj^TMBHws8!kOD*mmeI<;|Ws~MBjDhEbc)ogL}n%KD) zhThk6*fRLjT0}0;Zm~(&e=A;n_Zi0}15<$~!xeU;YKNOPFbjR0-~Cs&U_4xByKq_H z?J2W{4O19Oip{Wjw$a^@24QHp0Bh@F5sp!*PE}X$4V>TUiFqr5j-3|l|Oue`vdd@FCBXo?phC%eT z55IPI)hptpd$Jzrr8qCI^fDS4bfp^7nlMpxwcNk&rVK&WA(6PILFV)&BA0I8tA1Iu zUkm_--s4?f&Y@N#CXvHeY(x+wI zrI!9Dv}RsQ)0G@8Lm5ll*b;5_w1WS*OqNf?-7Q z>+VZ#ix`i`-MMPnZ_iFfT?}(%jk;L^GD+c*F>1ffy%?&i)8LTX_ulbz-(uf3tSi;- z)~ZG>bB;wKcd1`q&F+4+q8F1`e&ymz82bZ}nmlYd9@bsF3Hzh%zjg6Vf~(%zeBUnr z`t>>cR{3JPjAogB-YYSko{;a79dK6SZQ?!ET-2+c!Eg|J!vjfudRdYoz=%<{-&($z z6@tXIrth{EvT;wLpz@A|BeH$I>FVtq|5CPTKgKPLnH}sML*s^Gy(Ng9bKP5+&atrJ z{+F5e5)W%JUe$f8aW8`Q8Zy~szH0rBKi^YGU>e(bm-u0$55`&QQW#dP|nY3 z=}Lf4D+SsLC{m38DXeS*>JWkmCCNmjHS&{O#}P`*-Cml z8{|`Xp+zk&HZNOzZ2CUuGb+KvY+a!M*FM}i@5}jL$N*L-9YKXGWPx>MTTsQUgarPYln>{}K z;hA)poJT!U?Uhvf@QK~-N-xALK=?@pJ|;W))1z(%faxCfdabiou26R7uYYxhg6ni& zoj1m!{rz<95I^6)j;!+H_Gyc$`fZ#SN*0~sX7}Vkp89I=%JIN5v?F9Vgt|!c@&54+ zHVJb;KtRI&Dhn)jkShI6_>`i-a$sfRi?fy70htT|J?aY}<_bToSH)8TWk$0I%VuEY zXsC7$ggqA&sN8vbxm5g4*U2)FQwzSwTd5eO!EgQEQ913Hgbt85Nwj4j{!0g%&5?Tj z(F?ZXX9m`7L*$K#3dh}x?Sltln#0`xD)J@<670ukYATty#Zfc4?GQ|TQzolVt9v^m zI2a>qqJj1!mShO>a;EXb*V>fVuPu-dj(vG`C53#8t$g`Fe5pU(DO!c~L?fBpQKV6yasi(s?UdW<|(ko9bnap$deBJ@t3H)ryyV$U^l3i2!rEoSa1 zE$7Ie?x(HxpPilI7%fTy)kY;iSNzb;f`_{TY6P&#+ksf=@1w(vApX4wWNLXY zmK!4O3o-x6J=|J&aFAL!e`Dn83im-&-W8?9bD$F3`(?~+nto8+xA7WTli$oFrgL@-p9+pZmVe{J~2`%G%L zKLE>S2dDX(@SeafhlzU$+uhxLF=(5p&77ytZlU{^QLenrcpmH4+9V_a$j!qXll_q& zY@$|UQy(4*)hi?16i5APSoI>tt1XfaImP^v7cFi_P(AY#kPgmFhjfl?IDt~o(9yjw z4yHaLw~4J^?yZ%*JYrCCSgL<&YY^X0FFK@jWykBEQHto+Y%_G+HCy-zg zC?pyuKJ@PJyPuLq!yu58@4x>3T8Tp}E6`gJb(CW&NUB1vx}gwdz}=LC$h^|AYBl#g zT_UZ<9~XNzGzi_884uYfrhUXx+Oj!NBoP%w(EHF_PMg8o`1nhjn=Pd5fObsgTH-%Q1BwO7*;KQPzIaQOT;vF*Y*qlX7fV zkCvUW*UoL?c`sB}$Z!J3EkenoWy!-ct|ocyYd29J~eEGYp7rBm;N4Wtyz%*zMA|NA8V z;(8ee;LP{x;t1%(Rd+(eU?){4Vq)U1*75lBa%z!Xi_gBa1PK?~7VF^4vo6Bu^zsw(*?FnsO;<{t}SZT=g=hZ|jex zz)KVPln;tf6W=+SjLZ?2Aq#E}^uiE`_n4h`0R35y&Qt`o-r?p~ALcc!ap|?*N53jx zzFRF@{)XukVqpP5KUWxg^YP6`V)!3%ic|FiNN&>!HQf}!8(S=AMJ*Y^asPzEk*!SK zRm_Bwb_Ay91D1*#x*Pwttpzz>lwNWJ?l#jT{}Kr=Do{KyCq%v--n*R3>YOXosHkxA zTt;v3rOSb$dx#%aJgwbjb;?mmzl57JV`9vmNil6IY+Vt)j+dHUXyNa6B|Qq9eUF#- zsfq&*##Kbz|D0Wm^Vr2_}TFEtiOM_I}#s<-EFH$WUBlDT+v`ayA4t|>24T92Fln6|AH1G zPUHbnvxd-tRQhInEaQtZpY?H;AvQ2ZrXOa z`wB9=`=PL3f*tUqn~Vm$r+lsxY(vf}%T zkos!0F7ac0ek3}k(c(1C^WW#k@+nL+oJ6FvqaXtAz%2PFSRtV;n+8z=6dJ}3O82&Y z_8Iz|PIr_+4_5O;S^Wi-JAAg zsU*I}epD~C6O?*4gN~qaR9-J2P)0Rd`p$CWdkPBP^`RPT*N;p{r;f0Iz%k87>|Cxr zn)`(#RMtJ^BN%jMjjX7ws?1X085lLCY}qyP6k!?+6oP6C)mm$vhQC%S%Oo@-T71jf zH^(NzkOO|Tv^X++p$^RsJH|LF!*BVgD2<%377_REzAG)TqPS&z2-^-hWpBiV2jOzS zL5^~&fQP!BLQniNA0MBt>ELUywk$Ssrmn?IiE*5b0|#J0jYrKOFVOEWr}8;n&wsII z1#MBec|zp;`wMowD@uOUC~Pb&v9*z(9SU#&vkOy1(9GOltCZ4)(CxQlIav48v9H}f zB@~TN+mVnXf&8*yqfMnXp66Rk6z^pN(1Q2FR^`G^g-8 zTY}^%M)A4m;v@GG^(yZnKbF9tpVa-Tw;#QHJ5!AnD@yXHt5X&M5pj-zG2u9Bd2pEX zQFNhpcXl!r!tM*{uAY2_bpJKY+b7n9q=$*SkRlMJBvbG%Quy>k3kgJ=kjVLOKXDj; z;44VZg<1Q>hJ)-ij-`TZ**%;e64L0>DC|3TxS1bO9Jx^wjbL`dI4YsHdk=n!Xi>I> za#(`w*+TDj3j$x3Z+f!T*Sr~Q>Wxk1+Z;%L5UE*uw-pzX4i&-;)NlZ%Tnp%8C+uN( z8BB3h(|rhw#RF<)yhkgm>+2!kx$cf)M|AK*3Izv`KUy|5e2RL;_~q;;eo5gJU`&DL z5D=7jh;<>5+fOp&D|+fo-U|%jRf?ly%aA5;o5%uZOV`kcG-{vsK6*KQ``O#2Yl7cO zUnBS9U&1w~uP%%qNdOk`f0M{#qbqoeT%ND^%_6G7VWrhjgYb6ze+3NQdd@nHAy&TH zM@jA$_t0D~#&Tt-`DY(+Z%lvPqImXa!4G{)Il+$ip=d-4gVLA(yT`MJ62G=5t&r5# z#LC(SneFjd3b~9NKp$g;8jP{`PZ0vYrx{BCB8Fuzg=J+R(GfV>YyP*;1I*%pIMUFX z6P!<3pv2S16QGEKB|GL?9k5oz=v9+?(}Um-qnIM2a!P?-UD?Ohi05FQxR`xr7Qq)Q zM`Xn3d1(E2`cHFo!p&w!h?@CX0<$Fmgk@oAkqFzdoX=lf9|*c3t9@g+QK);}u~AJA zKaIbOt{wQYHvj#er1WZ%tCn-<{}1v2lS z_U zs3SqNV7V?E%PKT5hkyZl;CIJ^COG&^uIx|R6zOe)tQP5;vddfZ#AZI;X{z__Y4 zCZOFDmN3^CO^826*`su-*}gXfBvV#%TW-I4-O=#;^9Zr>bMP2so|4KCSy~-}gyp>f zwZJ^qf+ZSiCf}m8%4E8%JPwu8Po%a&Ns1yw`Q>ci&xx2UdnsW3{mC!+hZ}CG0nc?X z^k3<(SgaAb{F%Hne0@i_MU2%HXex3PX&;+|941AS>J6m<-zL$RTt)*L);FJ2qcdFg zjcM#13hTjVW7Qo>vi&X4`jAoVc4hW1 z#se?pxGrrMRNDs!ZQTy?UVEyByZUQtut$x*{Q!rI?lR&_mmJqwJd?ebqfYjG(Q_7J zj-#OI&@+xZH~AF&Mqh|C%#}=*xg$Ws0>1mD1DSs&yjs^fsKnBAP`n8^pmrsLMOI{ zKiD(`l%t4R9aTk$^!s&k*6$APi0$W{IU|F}r{DchiQ2DFV~7_9-iWF$$I4x_I!sGp!bWoq!PTxs-m*V1$G^v1OS2g5WDe5rY=Bt z+JvWCt}fjV|FWy+om>6UDh{CMee${scOaoR!xAJ1#!i$Q` ziat*;q;LZHHe}y>YI&aA8b6*|@^M9+0drDG_{pV=mO3<#gp`Dn8Ws&uz zc<#O_t^wiXQzfh2&9D8WZ0B3Pk7yA|PJk%pp}S%PhSubLw@3swFY+R)tX^50coN>- zS9$NUym@sY%47Ke=CVoJZ^)1UZX3SEI}!QySl^pqZ(dH6t|z-2hk=vuX{9>kuIW?LE!TN5 zDTiXB-1h=&TU*22Mgv9B@J*qymjyq)?;kU z4OHdD%5tcm#boP*8_7|GkavRG5?PkUsA7WOeDG@fXF{`3EV@xmIZk{(MMq&7-0{YJhRL@5^AZr+J)c}}P zp4AHx)&o~k;0>|slCS9=!)9gwO+e1w{!5WmsFc?(1a!y&zl*U3?Nh|5e{zO3mW#iE zyVuHd#NYiBq+Z<_4?}9h9T5?c3D1UMaA9k-aNc(H?f4KZtNzVf~!H_l24m0cpwjg?wl($`P-*)ntr^iCqj`; zx=1{53>sUolKuGVYU?9Zxp(1$c^#f=CkFWpRCEYeS67ch$@lh*V|TR54dy^0X)d+v z<+umyex0v^IjI7Qh!oIyN@Y@Ab^1qK{_5J`P(M06oUgZk6fW?^_#sm9nvuxc;-+RL z3&TnvB#p}%D(nV%X(6s(90|TSPEJPDSS@BKPb*nroF6)lIH}jA6*a{5Wczm;X9LZP75`fSN9`(Waj9{r4d>An>PV zZajc!5MHQy1YVjbd;0aPpTkj6HTO83@8>TjY!wO_rjSArhfnkIGPX!Iy!`5`%AOOdi-`zT(66S+k{e& zj)4X&TPd352G=e@_`j6_ikf&>*&dAFKbN$xW8=f+G00AxoGd2Uvb#A^49LaVpFicP zd|5&QQTL1zO&g!yLz$cVaONwbmm0RrlNvoHX3c5A5pCb94>MI->%LwMuj@FBJD+EGGFU~H{j{bam z{E54`5z4`%V9HJ0$6B8HdO94BnyIy+oI%^|OX6l>AP(*kHhP@ly-lHN239ZzZxm%s zr$Ed)6{Gk+)mInt zfl#twxp!l^k30qYKmCEranuu#1M{m}{81<8+{#MKC{(K|l1Yn78xiY`%Hp65mH|JL zuyF@wZ1bV2*ML6;zO<)kLv)qFwG)Wa#zum=|J7;zyLwq|csKlA!6JP7XzL1Lglf^N z;a^%5BkM$FbAIbCOBXt;H)z5zFrY`}*R5A`YEWh@AIvu439x0hiUkHnA|bQ@elj%U zzXxE5XUb+r7Qm$-D~svvA3<2VrM0&vmdZc3w->s-Z9DR_>v#v_bYEwrWV&l8RpelQ z01&kLL^wVwNZwF~*H_sshT`5c$dTR2r{T`HdDz9r<^u7SzWd~a3J=rOKsr|Y$&`qT zoR2JgeR&xy&fL@SLa5}n$XJhQu=2A|FCFRz5|GYY2~gLMonQQ|8vcesY&5!UUZ6^% zOgdF3q5bU@GsZb-|m_{@W)5zcTtWi&A6k~E9c+t|N?W2-Ez`HFN;C*CP|I;1 zec8UIEnNN{@AVKyJo+r+K&w^`|dbT1xXb zjE-|XLPX!c>BZ#sUncWj=g1@otuk1hm{$H^8iAE~IrM)FBR(Tk#_q$sWaB*#o(a-e zYI^hcJw|!~&cKdAECz*)vhT_2XW+AXo=q_Kf%a8LOT$#^7FcM2i0fU%HJw$(*th~r z95I!ZJp$2r_U|->rMP^6hfLzNy>CUiq5Y_&_=RohOHU!M$6Z$M2LjbB+s}@!puS_? zsYbav&Po@bkNP-}iJ z_;>tQTNI7f6}QDY;GmZ6adZRAp3$^088 zw?N%?u=mS;`@usKs_!&&VMxR?aZ^(D1Rfg-n};y>-4nSyevK_jNV@y6#l<6)8ijh$ zU3JaE`BqeZ*X#l2I^sMxbA}et2kN@>3FjWRT1YJ5BE43h!tNfN<5_0eb*_>Q!`rdY;bXbKCa^7Ey9Thv;C9^~*jerd8-lRU>PaoSAhir>QW7C) zlT_;KVo+L$Cue*1+!WQ-zTPq85f+t7+Hs7E-M=bMu2l*@fB)c8J(B6`Pj>uekjxtMR-8N_#;OSG%&pbz}(wCmZ>{N4K9+;n5xGR~C;iOm+;%}lxRO(C)JC7;>qRQ2+| zA8_0kesFnxqew1YG(Y8J6P`kXJ2BqLW{<7f-6LJJX-a${QShr$GMH5ie3h)0eyiCL z2w_t`|KhX`gVIi_>-^*AMRCEw!F>p}RxTUtU@qe)I+Pd&AB}q0 z$dJjF)X=DWRD?Im@;fpUVPiA*g?lr9<}pSfOZKIkfsl>Ez2w*Q zz<*>kIsr;)c8OPnMAt(h@>SbS#W{f2&7Hh{+AojAzIe;P^jogR@(M0W&|w*Dv`?I0 z)X!nWcxWf`~@az38f=Qcpo~nvS0Nfz-pca5O@cw?49~OH{ez&JN z`uDfOyTfjvN7TI?Uik9s6-CRn(0&m?gNQ3kj{wkl_p?i$@VgDFl5Ram9X6@gH7eS6 zk}!2I*1*anq4(v+2u%VlPs50{-!NTMeXEU{BArrY5<;h_$tD6-VVHKc(x6* zo0I~!QQIRN=Qt)czm}{J#Zw>sdfPG9^%W*W4-*_t`Xi)9qj7+bC|Gqp60IFc%oOoB z&QJH@2Y3-Sdn4TwQGjAf)-*qm!m^gL{bGA}cWKI9{d5Avf3TIad;V(uCaz5!G5wM0 zX_t(cEHULO#NR(>qnCS#=Hez#jgMOu;PT4pk8w|@BLzwaV2=iJikUp|z^=5kH@PNG zSoXJ9TPpt~DXK5`j)@!FSjmzZHTgWe&$|8?B%e;QHEBVYA(*@o3~0A+(-K4pLJ&pO zGSL_*1OsKol+z~Jr9*m$A;?x&LI~o+lGC09$n?I#771R>N!*Qz?^^&LGROixu=`{# zHyzD83gQV=zC%6?gjrVd&`rN?6Gqe>UmQ>$xcbX>PzPoFQ@m-==%#jVD&xkCQ1f_y z^QbG*)g+2cr3j?{#@0+KX#H@ZQR|o77kF2-;#1ForNDEuPWleTTj;Ovmya#hsmfDC ze?_)KU=hq%(mC0QrXO%{Dwf`D;ysfsQ{{)=Pp>q?=)UW{J|;ArlDG_xTjcZ204!UR zfqI1V#vO~Xp0lereVSl5W=!O~fFI|)Tuh^E^b&YdcG)A&9;+AZVLaBDmrpr{4u`3` zjLj4E75g04+4k|Oto<2Qi-Jo*wvf)dMhaxR#n>K~y|S4`vNsm6&XoSE4kx=pLWtIo zWe5e}JU8pusy*pcOJmmFZfkwdOC3=l=ym)gC^((;UoFHV=;)5j%{&n-OHAtR#9UnI z3#zFIf{3WX16+GjHq=L!`is@iSC%t;N+;Y0;lI zru@TuQ`0Y0sxC#%9?R(ay@o|Nd!GfpzSm(q+zm~k_GY{q4o8Ou!`wx{D&XA(>sZzk zoS#A8w2db|@prF&kAy|bdL-lhV?k#(n1m|%d8$16tQ|@&QXK6Fwe;IUu!o1DGe3G^slN(MtE;g-K1`+z8j!_HbMTu91-C57IYW_oogN)!kSiD{c5Q zd-}$F5!y{W9@mb-So!gkFy>lpm%rCLM~7 zlWu5s_G+BQHEadr*X47CaWI}i)dvq*%e|;HnHxmfrTd|uXIG>97@7~S?mS_^V#-2{QH7T0o;&= z-g(M{$rq$Hi@F^24@E8!AP4-<_V4l9{hV>%dz->%a%8 zzsEZ_R(+W?sXI>k>h|p1Vxd2a76b#~Rl3mrnt@>pbSvuF@+7#FJP6l5q+rOV#rT_{ zlte$Ej{5=PSA7n<{mD`&J8b!NU<#2XEhms6@{6@D1D49PL@KJAtR9mE&j^$x5Oz{Q zVhw+@x38sV0Q2@boHld1ozIJmo*j<~mFIVd(c9bG`r8Le5NOWPQd@+7doAa0>Gu%xs`d}EAQe^(oYI* zK;MG_x5j+*I(WpM`35aptCY6wW6jTb0?u3W-jn<5pxtc??u((vv0Wl9RDrtlNEp1B z_3M$1xL8=30%FezBnQxeOPbCj9+Hoyl>#(UVS{Da#e9ZNslUMD1=qinywsl9e9O(* zv(K!sb(hQbfX0OsELA{oj-YKwSFYN#vHX|P3KHq?(H2?e>25Sy3F%MlhCpX22D};@ z{G?t(%-;Ey5pTIPFcdkjK9DZ*AP@+g=@#EBPw&%4#h4Yf&ur$gfcrpC!kmM^^BQc% zCr?z@kXj|$gj3Sm#AagHa_x_^{qnp&vygdMzB)Use+eMFff;pISWM^kA>IQav|<1b{|wHz;nW^Xk* z0;*B_}=Lt*51!*I)J=eh+!8J33Z-9O!rfzgwX z*B(mZ?sxbvFB%!oZfF2p=r;nkOly6V#uUKjPU~YF)ldJx%d~Xa_0#?y8_L6T^pRji zO38m(0{MD#9EyaKa8sL_e1UJ+EwI8qd+4V8^F&>ef%pf(K|x93q^U5xma(e2h_zim zK-*f^DfVY0xzMW>$ZYW)xmdU0LrFyiSsU@lIfkBOKstNfL}w?e7&7_SJ7ov zh3zD=HU4+~^@ak>+J~$jI4#_!S6)(X^uu8zheNTB3`yi+3EvO1KeZpuomFENvL%Fm zz$*Of4$6AWesnVZ54?7S@i=Vt1hzkE5oG#yH1qI8v(-cL?)y-rzFk|O+buGqhM#^o oJGa?T4sGaUOLzW%zrpsEsNcc&H^~@WH{h3?l(J-*_$$Bv1F*_K00000 diff --git a/msautotest/renderers/expected/multilabel-leader.svg b/msautotest/renderers/expected/multilabel-leader.svg index b5ea19d5b3..87fa8020b4 100644 --- a/msautotest/renderers/expected/multilabel-leader.svg +++ b/msautotest/renderers/expected/multilabel-leader.svg @@ -263,444 +263,114 @@ + - + - - - - - - + - + - - - - - - + - + + - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/msautotest/renderers/multilabel-leader.map b/msautotest/renderers/multilabel-leader.map index e4b4c48305..2d24a22b49 100644 --- a/msautotest/renderers/multilabel-leader.map +++ b/msautotest/renderers/multilabel-leader.map @@ -29,6 +29,7 @@ symbol type ellipse points 1 1 end name "circle" + filled true end symbol name "v10" @@ -219,6 +220,19 @@ layer width 4 end end + label + partials false + force group + style + geomtransform labelpnt + symbol "circle" + opacity 30 + color 200 200 200 + outlinecolor 0 0 0 + size 60 + end + end + label partials false text "[p]" @@ -258,6 +272,7 @@ layer symbol "v10" size 15 end + force group end label @@ -269,6 +284,7 @@ layer symbol "v20" size 15 end + force group end label @@ -280,6 +296,7 @@ layer symbol "v30" size 15 end + force group end label @@ -291,6 +308,7 @@ layer symbol "v40" size 15 end + force group end label @@ -302,6 +320,7 @@ layer symbol "v50" size 15 end + force group end label @@ -313,6 +332,7 @@ layer symbol "v60" size 15 end + force group end label @@ -324,6 +344,7 @@ layer symbol "v70" size 15 end + force group end label @@ -335,6 +356,7 @@ layer symbol "v80" size 15 end + force group end label @@ -346,6 +368,7 @@ layer symbol "v90" size 15 end + force group end label @@ -357,6 +380,7 @@ layer symbol "v100" size 15 end + force group end label @@ -368,6 +392,7 @@ layer symbol "v110" size 15 end + force group end label @@ -379,6 +404,7 @@ layer symbol "v120" size 15 end + force group end label @@ -390,6 +416,7 @@ layer symbol "v130" size 15 end + force group end label @@ -401,95 +428,116 @@ layer symbol "v140" size 15 end + force group end label expression ([nebul]=0) style + geomtransform labelpnt color 0 0 0 symbol "n0" size 10 + offset -12 0 end force group end label expression ([nebul]=1) style + geomtransform labelpnt color 0 0 0 symbol "n1" size 10 + offset -12 0 end force group end label expression ([nebul]=2) style + geomtransform labelpnt color 0 0 0 symbol "n2" size 10 + offset -12 0 end force group end label expression ([nebul]=3) style + geomtransform labelpnt color 0 0 0 symbol "n3" size 10 + offset -12 0 end force group end label expression ([nebul]=4) style + geomtransform labelpnt color 0 0 0 symbol "n4" size 10 + offset -12 0 end force group end label expression ([nebul]=5) style + geomtransform labelpnt color 0 0 0 symbol "n5" size 10 + offset -12 0 end force group end label expression ([nebul]=6) style + geomtransform labelpnt color 0 0 0 symbol "n6" size 10 + offset -12 0 end force group end label expression ([nebul]=7) style + geomtransform labelpnt color 0 0 0 symbol "n7" size 10 + offset -12 0 end force group end label expression ([nebul]=8) style + geomtransform labelpnt color 0 0 0 symbol "n8" size 10 + offset -12 0 end force group end label expression ([nebul]=9) style + geomtransform labelpnt color 0 0 0 symbol "n9" size 10 + offset -12 0 end force group end From d7b5df7e2e1a2a1af2a302ee6a221381ebd2a67c Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Sat, 27 Aug 2016 13:42:35 +0200 Subject: [PATCH 063/221] Apply legend label offset if set (#5267) --- maplegend.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/maplegend.c b/maplegend.c index 2dcc91b0fc..bb221fd73a 100644 --- a/maplegend.c +++ b/maplegend.c @@ -697,11 +697,13 @@ imageObj *msDrawLegend(mapObj *map, int scale_independent, map_hittest *hittest) pnt.y += cur->height; if(cur->ts.annotext) { - pnt.y -= cur->ts.textpath->bounds.bbox.maxy; - ret = msDrawTextSymbol(map,image,pnt,&cur->ts); + pointObj textPnt = pnt; + textPnt.y -= cur->ts.textpath->bounds.bbox.maxy; + textPnt.y += map->legend.label.offsety; + textPnt.x += map->legend.label.offsetx; + ret = msDrawTextSymbol(map,image,textPnt,&cur->ts); if(UNLIKELY(ret == MS_FAILURE)) goto cleanup; - pnt.y += cur->ts.textpath->bounds.bbox.maxy; freeTextSymbol(&cur->ts); } From e6c480e0c5f536503104a1dcdd19ee584de72894 Mon Sep 17 00:00:00 2001 From: Astrid Emde Date: Wed, 21 Sep 2016 09:15:34 +0200 Subject: [PATCH 064/221] Add test for legend label offset (#5267) --- .../expected/legend_label_offset.cairo.png | Bin 0 -> 19289 bytes .../expected/legend_label_offset.pdf | Bin 0 -> 56629 bytes .../expected/legend_label_offset.png | Bin 0 -> 19280 bytes .../expected/legend_label_offset.svg | 41 ++++++++++++++++++ 4 files changed, 41 insertions(+) create mode 100644 msautotest/renderers/expected/legend_label_offset.cairo.png create mode 100644 msautotest/renderers/expected/legend_label_offset.pdf create mode 100644 msautotest/renderers/expected/legend_label_offset.png create mode 100644 msautotest/renderers/expected/legend_label_offset.svg diff --git a/msautotest/renderers/expected/legend_label_offset.cairo.png b/msautotest/renderers/expected/legend_label_offset.cairo.png new file mode 100644 index 0000000000000000000000000000000000000000..23c3bf83b26ff1bd1250f610a3353c1e7dcb6642 GIT binary patch literal 19289 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 B7Qz4k literal 0 HcmV?d00001 diff --git a/msautotest/renderers/expected/legend_label_offset.png b/msautotest/renderers/expected/legend_label_offset.png new file mode 100644 index 0000000000000000000000000000000000000000..bd70982437ec9b3b1f598f2b290858a6854bd22e GIT binary patch literal 19280 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⪼gK*eNHlV&z=+*alv# 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 literal 0 HcmV?d00001 diff --git a/msautotest/renderers/expected/legend_label_offset.svg b/msautotest/renderers/expected/legend_label_offset.svg new file mode 100644 index 0000000000..f3ff83788f --- /dev/null +++ b/msautotest/renderers/expected/legend_label_offset.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From d7a47e66dfa88f87972ca36f5afd659c0876bcb9 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Sat, 27 Aug 2016 13:27:31 +0200 Subject: [PATCH 065/221] Don't apply layer scalefactor to legend text (#5268) --- maplegend.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maplegend.c b/maplegend.c index bb221fd73a..74dc4903fa 100644 --- a/maplegend.c +++ b/maplegend.c @@ -523,7 +523,7 @@ int msLegendCalcSize(mapObj *map, int scale_independent, int *size_x, int *size_ if(*text) { initTextSymbol(&ts); - msPopulateTextSymbolForLabelAndString(&ts,&map->legend.label,msStrdup(text),lp->scalefactor*resolutionfactor,resolutionfactor, 0); + msPopulateTextSymbolForLabelAndString(&ts,&map->legend.label,msStrdup(text),resolutionfactor,resolutionfactor, 0); if(UNLIKELY(MS_FAILURE == msGetTextSymbolSize(map,&ts,&rect))) { freeTextSymbol(&ts); return MS_FAILURE; @@ -638,7 +638,7 @@ imageObj *msDrawLegend(mapObj *map, int scale_independent, map_hittest *hittest) cur = (legendlabel*) msSmallMalloc(sizeof(legendlabel)); initTextSymbol(&cur->ts); if(*text) { - msPopulateTextSymbolForLabelAndString(&cur->ts,&map->legend.label,msStrdup(text),lp->scalefactor*map->resolution/map->defresolution,map->resolution/map->defresolution, 0); + msPopulateTextSymbolForLabelAndString(&cur->ts,&map->legend.label,msStrdup(text),map->resolution/map->defresolution,map->resolution/map->defresolution, 0); if(UNLIKELY(MS_FAILURE == msComputeTextPath(map,&cur->ts))) { ret = MS_FAILURE; goto cleanup; From 9eb143834d4ff47c402411601f63070daefb45fb Mon Sep 17 00:00:00 2001 From: Astrid Emde Date: Wed, 21 Sep 2016 09:20:32 +0200 Subject: [PATCH 066/221] Add test for legend label with sizeunits set (#5268) --- .../legend_sizeunits_meters.cairo.png | Bin 0 -> 12582 bytes .../expected/legend_sizeunits_meters.pdf | Bin 0 -> 55953 bytes .../expected/legend_sizeunits_meters.png | Bin 0 -> 12659 bytes .../expected/legend_sizeunits_meters.svg | 41 +++ .../renderers/legend_sizeunits_meters.map | 247 ++++++++++++++++++ 5 files changed, 288 insertions(+) create mode 100644 msautotest/renderers/expected/legend_sizeunits_meters.cairo.png create mode 100644 msautotest/renderers/expected/legend_sizeunits_meters.pdf create mode 100644 msautotest/renderers/expected/legend_sizeunits_meters.png create mode 100644 msautotest/renderers/expected/legend_sizeunits_meters.svg create mode 100644 msautotest/renderers/legend_sizeunits_meters.map diff --git a/msautotest/renderers/expected/legend_sizeunits_meters.cairo.png b/msautotest/renderers/expected/legend_sizeunits_meters.cairo.png new file mode 100644 index 0000000000000000000000000000000000000000..673c92c832d523679ec6ab1e113faff23bcefa7e GIT binary patch literal 12582 zcmZ|0byQVRyEiHg(jdL*?vRuQX(T12rBNEBC6pB0bV-K-f|N)%$fmm+HVx99-{hR{ zjQgHD?)_s44A^U|HRpVu=T}B(s3~ASC4c(l$rEfP#g|&(YYw=U(GkJFYeKOsPoB^` zQFfIXmfm*)7GbP@14&nb<;nO(|)N zLQ>>>!!5+8qs5AZsv6tWqjc?lk{8{LeVje7>U!2U?y0FV2NoA*Qcol|`)4wqKTl0S z+lQ)d8zbPRsLN{45{U7q}8u0@9*3!dNqo)zT-+V5G;)F>Q2 z`{%uAw~L};cX3(sxAEg*o#JZS5xU6uqoX5c^-R^%MPg0^FX8I8qs^><#YXQFb;&#T z_FxQba{jH^Kf8(SdTRyL0k=nIQ>FnI3!bnjGPkoG9T8SYmaq$AP_@IHM@J}jdZ(}F z{`}Q+g+=}JR|=ta-LK>VOzN3_mxpf$OAKrF|J5u}iTj-X)G5An8_t#nzx^iYKn|0< zJ?v27ZhA>OGBR>?yuLe}gXC%4;PEQ?e9o!mE4Ace?gqPVNp{utSV1(ofbyWm_wexW zi=}|9xCYMy|J_MWwM>bRK8MR~+CNk=o<5D6^}jota+s}J>AG0-#T|26sQ+MZUy|Sq z{-Q{`;P`arw+(Y-(OO5H$NY3_^T!*WWTsc&+_y(V;?Zy*Qu8ESM$2CN^L2mTP1O5d zl=98+BC?q@UM>YZ4Dddj6v$Pa&d)+?oR&s>%0a zXRa@i-Npen33<4`Iq*JStNVB(2;*)%{FELH55=Z%oU8tNBIY=lE|PB4G`^h$_cgpclCVpJ(Ir-DOZ^OEE_=|Zk8UJkGd#a zZ`YGeHwH7(khbiWnw!!)X)3J;zPw>4gb6v$cc%#*R9f{3o7A~7%G9t-_Ven7e8}WE zT#HxdGOCSt` zN7(NBr$lTomw)abM2F!}&X&A+jw5k@X|ZcQ0C6LeS@Oo^Vc2v@NqufZY{SLl7Db>c zD3u)aIo4u?&5CqOTU~q|4wrRu-5jL+APJ)s^>{`NE%U!xPtMEDJzNnKk+&1ZEvr5K zCh&eoIa9=q$;Da=*AB+}2^^IazWl(HH3l3(!)kkC4=n%tD;v^J1ogbT=HBt!OD!!B zH>nyM7X+%5T(BFVbK@J~iK45;806sYB}mnSneStGyb5*8Xf`vj;zo{k7D`C0rP z-9lTzLQ%%84|wo5cY0x6-vd_pP|}aaiXk#XIzrgbJu(|No{!|Oz^JyZ#zt!pQpC81 zaKx{0hT7Pl?Tm})-`isCXREd^kKp{}pkRfs$evp_p3lDTT~6uEM&9DL;m<&x1_dDx zKSEfg7{waAOHwlGEtcbRWEgB0|8gg;zcp1xO&+uOrxsUjjdbdDm93@;)uF#qJw9QH zQ5~PhUb>G6e&b7>LXEbirKLV@2{&i5`abN59Ir1^ zqup*}K`DpuZO02W5g~dd`XkcN-KnxHF(~XS1v51(=ONg6MjvhmcRA?qi$0S)|F1-- z!k1yzXu=*^&_F&HzwOcQF)=X_gv_g1Etjj9S47aw{?v{upR*loQXZ*jB@V;tDCW@6 zP{+l_H-qRf(6Gm2_*x$BeS34rL1`RhrR z{7zn3MfG-%#XixaYb|TJH|V`>dAMm|)&8Mzf=@3me7rr!3;kG0pG}SB2TF40M5MFA z)c_i};q`ETcXxdTUj~Qbv9dn|!CPCU+~wj>G?>&%-~0~!#sa4|X#0eMAI~>)^lz?) z+GmT_r`K(BFatbQ!2RtihV7r48lfo~Wv})c6%?BOAC!h}sx`-8cDM%8DOX8TfFm#B zv?$hiSE!k1IgcWjui4uz-kTwM0XFt*3?IKGw@t)tBjMoWweP>#KaePDNfXp&tuTwi zSEw+xUi|X&2|g|M4af5d(o(FQrpwhxF+KV16@5#~^NBZ=meN;iDf+5ie}X%!nII*;q=mFXG#efU#90Xd!MwG%=72JcJerq?xMf9Du)p$uAb zIbS0!hWm0aQ&j^{M@x@4zgZ>@$hGfbqY-fg7# zXc=17vVT*p;Lo=m$yG__($R&CA+HKl5hj1;`A%Cuh(W{3s}}^hRnh8S&xark@Yd6D zAxu>C9D(NkezK$o!6PDpv$q1~;_U2PX3~`K5$aufDoPC2X!Pxgn&eaQh7xmy zSR|VEV(As~kuh|58fupO4F_9!#k2VQkVaYoVn`UFU!7k6^kH{W{CX?TwSNo=5wV2b zdVu#G0~$S+Gmk}A6r0Y^Zl%HyO`NSg-Y4c-et)vEvZCtRDw30vJ9ipkB&=F5R~2%< zW@po2n8y*iecudFd-O9@J|GwBDHZc%{ufGgyP|?stB?=@Mor$12p*{G+F}O6W z9G&>WokwT8Q#Tg}Swm0I_@V_TR!~I{mD*EyEdUhszq_WzA@f|78X{9ACF4;DY_M%l zVAZ}o+H5Nqi)?<2G%c$Hx#w4--B= zI^x|#-+DX#GIqojd06n-YcfkTWaMsi`YO;tF~$_=@y$w&>NR+@G)laB@_qQNP%9&XY>!C~`)IhR=Y9g4&bzKCvice|IpK>1*1UD}C@OIS z;?nG<&a}$L;8PgSuP8j#UAmDh_eI2Zej^;^7%UNHtOB?699Lvp8fk%2%=Tfb(%^A$ zA{^HkMj$P&s-!LM+gf7g8X7S;Iai6E2sY)*J@}U-+iCQHuGuBT`NK-DFSae-&dKqB zuLr>Yc8cK^4EqNMLusl2un%R5@9zDqJvKoiSC_bA*hy)Z870MVnJ+bNm@@I@?n0EfDK=Vvh{cl0QBm9u$bY>VSQ8V z3!xVGNieTK*fuI8NK_p)YOe}5hVsrkF4PmTy+-$d!{NJ=zbFU^-S+22022K|#GVAU z6QFQs`J2C;4((?b
_I7Bg=(3S>9g`Q{OCfa(q>KE{ zT$w4-W+tPo5t=h~i((SLzl2xHqv6KA<(~?6fbzbTB1AU^hU~tH0Lu^ z^5rK16jW4D=anea?GB!ApjRQk&R4{DX`FPvYeLn)giH*i39YMtLVYh<4dW#rYD%z+ z)!KSj-o`7DnrYn{h(OA-p~|&uU+hC$+jw5C zpTUBC=y?NReWpJyci>8n*Gv^@Zzk%QRInRQ1v0`&iTfk2o@R8`oDR664wlch-bgRm zsmB@zlp$EzpVMm-7sermwDEii8)L0u`8v4v;mvfp#WRtvz(&&S?d}&FRJtYl z_->K}wrfZU^f6e6i?$1|YH7qo5POi-5L^B&2S=TT*v$9*?`8##cPuH4Ug4*28ZJ|C zhG^mhVo4-1=gwSBnaV%wb>Zgw>)rdi8&L~uCh+zRajmW!sYr@O1*Zh2v%J<$+r@o3${@GsJUh#*3#n4K0IMHHYA zzH!NS`|nG6&Z6H^W`R{B4* zZX5l49t?ooD!pn(YhrCJ$ns}vah$3A4w%I_f+Po3d;d}S+YTR6cSr|sj zpF5)TaWcDO?6X*RmF_PCVv=PFK$N$xoZ*%Ek$i~03Vvrml3`$1Px4Rx-sRvbX4V?G zADWw{hYX&sV^i#1SUVt;>b?o?!9=jr7XxW?O}BGS58jDCwd7`o#-8W7z`KIwc1!{q zUEuOor?5j#lI(+-N-J4BBdIX9xh8f)m93$45p9CrgcV%SbS>2>>qz@BF)(8NtGrJ( zwvwWB#$;8@KcR34GYOCG`rs^{i$1OB$C0q)&1j%+9x8|L~(Jjo1(1Du=Bc9Lak*F0i6w9g2P<(+qaEZW|4q* z6*R1;bY+RSp&|qTEm)C8T$9f6TLDM#`GU?V#&SP&cO!5J%pgzBjMW%4MH1{iCN;l z#PNUg`m-cWbwA`=3dy<@=%S4P4vCjqQz{?8|Z)rSDLo?pCjs-h_4|c6{Q$TfLayOcNT#R-9OvJ8RO9zW( zt4zK23@p=XQU0?#RlWFr8CpLk^Jgn3J(E6L6|z+8@)@%WN_n$WT(+}q<=p=nXp{

j3HiNIj$v4vW@S`(^Mazig() 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 E1DnA%U;qFB literal 0 HcmV?d00001 diff --git a/msautotest/renderers/expected/legend_sizeunits_meters.pdf b/msautotest/renderers/expected/legend_sizeunits_meters.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5a68cbbb9cd4eb09f3b43102f9909fdc54378551 GIT binary patch literal 55953 zcmYhi19V=^_XgS+ZEV|lV>GtW*k(dSWGSD714aWR}UpA>i?!pc0 zW#cBv!;{L;*VE_0ynKWHIVFpD_d;)FHtpbm<^=O6|4qF~_RQ#%egmg6_D??ll$p^y zD^{el7rxZ$@P-75y^43iC%w9rDI1>C)w6?>Dl4)P>$i%!0xO0oHZQ|EMx(~?Axv`_ z4Pz}VCf%pVZ;vLF=UkeUWb`SZG?SDFmoe*VT_^R|eu$>p+*eOaD^(AVnvx+*8*Xde z49%i@Tim{a9J#;dR>w{w9lQzp z=gZ3{?jB#t_~|z;G_vp3?W{&$dF9r3SUhx#9+uPPAlF2WI;6EXAI6i0h3xp1rZOA% z$%5d0$~rt;=JyzV#MN*29-FK0$-wfh^0@vA=yIy<4i@ieV=sI#w6p(RY&wtn>EUH& zi23n48;>Ej$zZ27)sd2*_|`O4oOO5QO0~`-@Op20lh|NIn`)z`UpE=3V9|7|>NCb# zCrdSq$Nk95ZgF3K8#eg+dcfSqnZ(5NTatF;azdhL3cT1lgwA8e)rOKoGTTcjLywq9>F zHcJwjBW-nO`cL`yVrIio-LngzAveAQ-K5@0&UyIOb2!vkhLNm{KS~LO={_^`QN&d) z-X~b5Y45NDonNzbsUvtqPpAxVKT|Xy^s^hJ8_US(_d{e=^a3vRqgzf z^4m(X$kX~P{m5=@Cf!Wu3I754(v#C$NY)oV<@bKNp$E@%QOk(QHJ^<6tt%oHPf!B*U&=3zholwUb2Klxa%SweRninpEa#Khr?-7M2`-mfveR z^U=+anhya*9P7CYDaYxzklIscYaE|3|( z^oFHVU;LTBESH*aVDHKO?TAeIo!53KH&ovE%;kkqcGemLqVkWJw)2E?>-T`=YK7~B z(7cushbGRu!*$r+g^E_o($L*mf4C5f&x_e>L-8b76cIcnyu2~rvk=+s#w7Uyzkd>UEju}DvR zl7+4p=k1Jbmg!Yhy56w`$3)jz3%Y-N9N9Ej_hDP&!T7y3C_%-xcGaaq8Itn^OKBT zzySq;@D+|Sp0b#Z8pnliukNPeDN`Z@7=UN-!(5HkYuMlG>lV>Kt=aT3(2LBf|dLg@xtrJeUvO3 zc|&j&NNgXSOoy{V}+Xc0`KOkqBuFlVj)na$TE;34M7`sNZ+v7FQS}nhdfz;Z#*Aq&Pp3zniT$ff2B@|V6d2m(`(ktNm(v~{N0(~ zC>_3UVKM(S+xm~a#zw2cD6|VM?sgQi?9O^A1p(wy@OyWDBTFwE+%9yQ{Y+|QsWfZa zQWBaZCd7Th@`^gAKvc_@L|$S_zPl~+Tg&s-+*f2RzIO(B^3}8`diTL17HNL-vTr9U z&qZ}pS7E$A<%VW6x+)D5aa{*D_3?TjdqpnSOG-Cj(G(i9+H-pblW06r(HK4{3yHg+ zc^#LqgqD;Wk(cEi#!4_D$5CIS4trl&(D+(Px;Nr>(MU`gt4Xu2u?fsn4lKPZy65-N zywGr-u;D?)DL4suldm0Q>wI>n*5O6DewOUHq7EoZF>D_*vXyhp`1J`y zEt7Vz{WHJRGy0qXBkpfdGUyMNIDYf>pbQP|u;{!S_Y0dG$OCbs$T+Vxh05`*{p#s5 z0Q1JvsF~mDcDh&Jj1ShYc{%7VO_{|S#A)hy+5I5(1-!83ug06;7Mm;9kDpSU#;IfL zx;Pk8H*78Sf&MyBs2r=*x}umCEr`lxe2BUZ$NJmcZA3J#PmfI$H8>z9p<5Uir4=~P z#c!_G+tu6@y)|C4a&kxa(WUQaas+A3NX-~oW>w2g$5HZ;rK2@z{=b%6x7ptXe`O9U z_RI8!LB}X`_4VV=dyoVXrK+b-twLNEDC#Pro#}3{pW1Vr>A}vwGo;>_68W=`;5)7c z7>$;d{79b;)xAqbe_DV_Nj7kTW*9UNIhDjV#Ztw&UQwZ=D7HXaePfXp^Rct(0g>hU z*d2qlq6`{82XDnOKdl9VeW!awUNEc(Q~CA#mRP68&qtRvUR^oDT*;0>|Cp%Odc?0o>;cjMAnnfXVH<8VQC?^NC$xk|aF(>?VW>l|E&!&02aQ*#U`%v@TN>v|& z$7})f_s_YS`A)+hYg2?FiBJd?Hl6DSUp4l{=VSO~FWJyubM~)2`8i(fA;g|zPk+GG zOX*v4nhuu-W{=n5_kM6I?{oXG#U8xQhV;=S)zeUhuE3i0^M)A@ZP_TN@lldKhj7y6 za^ndh6dweRq@s>o2NvMggtp!|W%0AvuH%kpLy^Stbnxnp37z2qlE#!f>l!;uZoa8%7}dR$SN zMD2}rCrO}~m$q-nvfVK8#=u(bQnr&q@)$W+b;m}h$M`$Yo`YU?R)h#V0#{KUlYP^2 zR+k#dvK)peT3ICZGo@)v5{{jgj{N3ib7(sBOqyaho$`?F@1cm`nNmVS)-eP22Iuq_ zT;tEV3<5UXKR%Dg{8k8m8qjjn+AsCF@7<_2XDmvN{+ViIyHq*n^)(wNrT2^8jIpaj z+zWH7?Zd<>7hPNp=?YEy`rl-)k+1BFm{Vb)_6H)^Y+zXhQ#2)#>^>J2XYR@INzwbM zlUH1(0{tdt1$^$!$lipbtO;q#+o*ou8J|Oc3puu~BaoEc<)P!!JxAbKda!>8A=?H} z`U}r%&~zyL_+;qGOrFhnq@Y9DY1HW?ZIPp}p1>^SL5fS-dUO+djN3RM6HxnGCVwI- z8Mj*5z<)UX%79}=etSyTdAH0saH6K1Rc0~XNnxeF)8-Qe_!73!719W~PK_3a+)5C9 z?u#az4FRjJC))ik!H)~NPM#xC{e`Myeisi5Y5UO!Q)4TI!~im{$MYRE@zd?wL>C(W zi!}}1hRUq$>PBs zlutO{7NjKaLonne58xOi?GL%i$_>FE(0aUYk!@2=o;Q9o-3B{PYW7XSI@!vp9|hVZ z4it0TnLbm+TjUe)STQ3aMY^qwA9wf1G5y?GW~_v5yo$iI`ul)vW$eSdF!)Y7=knug zaD!nxiq+rnpC%EG`vF#Y8s!r$6n=J^=1R z!qpth1*3X6lh8BT7DXuMW`^|8^rX)XRZl0DMxp6Rc+GZx9G$TJRF%w(z1_n8l` zrq{8m2tSi3K*G^2GfIwpjl<=I?4l{eeD4W6Tx_*FJ2@X%l%n&f3=MB0Ir=Pd&O))I z#~}CMPJ_3PzRZ+MVTNHWX0h zp@wy938`#`KIWVHEAUZ*qqT(X!kq7MjaiMypA<)V2@Sl1npy4;*e1eJ0)CzSuEP$B zwf*zkB7fpC+D72))az7%^~4B?(bA=t)UM?!uQq@_%|H{TKv4Rmw$fc8=t5X7i;cgL zZxQ+)KYY7Zz7d2BMG%A3zwRPD7_-Uul_j;KetqGiwAR;ytjFJWm8$3AYtR`Zq`ry5 z%>8()*|nLiPljb^G8OAY)x+swcnDZ zv8+i+mamehiGfnJ^vwvO*CF{M0h&)0ja0QEpaM0?*JydM8WBjY1{{=R$x@6^sK-VO z>db=g%ZTr+Q)PEpWHpJK9m&DHonn>09tef-5E-;>K@vWS;qQ<5fkm4KS7cD|SlEZp za-rzjx_{w|{O~y~<;55b3$ZuIoz8=uu4Ar>87OlC8En2$*WYNwXK~0vhFwm&1u^Ta zE-)~>7PdK9AVDH2%My1Z3ONLp{IfUjNa?AvJ%Pmx%C*VA<@U*dZq z^t#Zl6TVZ=te8J7V3TI@nKQ6?X2?(qKsk%4{Cr^+HpQrH7uc&}?96qjvHjQTS+z06 z3lH6KahXmQPt(2s;QUEtZEZcyi~>sixg`aJ17n-a%#CU`vP6clP*bpNhTRbplr~@J zTNnc)iX633gNSHKYs-LwU6UWAW9yu9lONaEO4XcL(0pe&v~m;cNv?4a>xp4PQy@3L zY1Ge^Mwc>zkc6DvPI}(*owbLAI&~-8?r{DtRE9qmMaADpku*VXY7uoXmt}|*)r>O6 z2i`H|3AO_&@tF85&=aTFqkwc`&Vj&4Jmw79rjX|pT@EQa^1cP7GFxNNfAV|nEmDHj zl!7dR>7>8HPwX;Nx&SD<>dqW{iB#d6@BsdI!wy;5JKgD%69sYjzk9M?(M`!FCg=W2 z*)E&dx(fYVE;QTXqK-@Cj*bRxuuv_ox$)FU!bF*kOScFu`1AvHU;_h1*6_OOQ#GhD z_Rr;+I7W|~gd@jm#-}<|I61b#=9Ygl%!T93SyCSm87)GRbmGfOY#GXRc6doXr*q7Rg`-5O3(x7sP*+! zZfw&Nq+xngY&`$aCDe-m{U(5ZHD?LZ*xYmp`7NrnN8`Z5s!AM_UV=1EBx02cYOh*J z{Nft$)=iBT&a~`*VojSZyp81dHA_T$ofRT`^N|96sL>wD0Qyt43sBSaN_Kskq$w=U z6QsGJJPKmH8EF%)k39-z`r6D3looz|Q=uKf3*>(g=vox*Tc$KgU_{0NJvO!0=g|1nHR-+60qh z;8hNQ$!NA>Nq?a_?bBw3lGLJ0nTpc;CS5{6HQ?X_fL3aiG)3ia;5B%P2RYfWpAl(B zN1oD1euX;ih^I}0G>a~vUKTLZ;-XQSf?!>*B)^;>LE6M~Zm54yupsthy|?1ss*EzU zDQ_h>O9F)Y?BZ4jIKy38tTGy`|I&7$UJyHxrcV0<_`uPrN(*;XtU?ObAUq0$CLRSQ zT$;jk4FKK-KS7!wpW_7(A6}zMOM?f9z#;q&gw3%`#fX(Q;ni28r9z2DFG`xio2WqY zbbarvQJwbaPrH)T5MU2CvqS+Z)F;{mPrWHOz&}yCWdN;=e^da>{s+HXLWhzR4|0O^ z2GQ6;!v6n93=7A9q5by^z(FlxI3oc(pxc=ipbDG&hypkeeqFBOt~|^Q;P_or zucTg%7d$?977*Ra37AHBP^^+G{x?CoG*7f3_83*MMD&fEHbFRW8TNmsXqKR(tI)>$ zk|sY>;Y&3yh(#o$O>l|^EX>7Ckao8eFNh`d_(z*Or4U>sKqbK3AESULs_7j{G;DGz zv`19;(iAStvdR>LwPeuq>PSu5%!9$g9F4p!$GQytcBnb*+Dhk`q%sEJ@KQTq?=@1Obua4JBZx2&Ou3UPI zc)5oFJ85|}scmW;&=o;>RS2J+rWte3gFT1)%`0aA?Hvw5-!<$}8S-J5G-*HsDwU&< zN9Yq}f7MkOohXx@6iPUw5@enPi674xrEIniHnJF#I6f)1BPuvn9VW2YQGk57(hUdE zYk~Gy{`_!0QvIupuyqt4ztHU`SOZ@>7D(!ASptKTGv<6wbL`L|y!H12BTi?Iiu}$M z_qd1qLy{zs$xggCStS-@);u7ksW8QnSjRH<%bPQ&zo=QQI&4$Wp;HpKr%jmqxtCRI zzS41C=i)rE1(Bc4bfr<5tDN}k{vVdo>Gr$6(X_C5fqd8=qZxT@+?aC$M5I}*{8}kp z+=cc(zAXaTg!QJ&f7UHYRX^cC%zve=MZ6faD50<;iJ?dBKv7sW4^ioY#fo?rcvi~% zJvHXxKbLAk$eLskI1FpGbkggI!yjm?>PQ(txoo9jt*DEv^=hK6H5pNbc$CV1_@@X@ zlFv;uAykdn9U;la_2mqKAtBf?i{y_e5^asrx5&3j z3Y*HKU6~G&t+2t{M!UaZ}YmPh?F!n>9gzS zMxEQHr?o$u9JNGGQgts9F8s8|hHob;-X?@xDStRR4`W2Yh`ufUFwXl!#%Vi&^21+e zu-bxzfAe-2L1wm4!d7Jo{&LtYjgX5fSwjAE9xwn8gO-`kf!jY#Lf)OT7mBLGu1(?` zhd`I;*){I#c}!d_X>tF4OdQR{c8o`AggjNr3jBV)ge_(?{7wSv-(fbxk^!2|T-FZJ zztxaDt}W8@D3HI)7m|?&zHEl)AkvyPoBL)JW;9WgUb=|H&%l+kA&k9s!?6Xm#hgOo z?*IJLr&4%ygm12_?%gxKv&@A+|0^J6eZA6j>D#I({kIRzS4ecd%aS_#22Q*HQrM(X zCkz8L#A(;IV}7^P3DM@@9A-nXwensSgvK9nyUo0!~W%t#RsQfr>>9TTH$!CAyM>GphD;2Z;|D=^MHIY#YB;V zTDhQl>vsz95>wSiPZlfcR(M9@(t621N26?R4SqJgul@$fp$LZSv&#pMMF~?qWea@Q zUwv8kF?YVWcBatd3B_Am^p222c}1K`q5a^{XJba8^4p14`Bq0oE4EBnRLW>{XQ32^ z;wVeozU9Ko^TVYX!D5;Z@=#WdX3?TLRgKN=v;hh7b;m`5W#fCxYg)vkLVdq)MrlqM z-^`DN=t)bm$>S^qyekVUVbc5?6Hh3PopO~1rp=(4EpCX+O?uJxXlaN}i3~$Efj>0^ znyAp9QTlRbm^9l2Gr(9;X~Flc>ySC&LH!}^h*3A(zCA+`#6R>b7(RQ2vRtu&Zo8Q- z^0VZPGaOS;C>1wawyI3yA4r(2=@d7LMn2Vux)qr+{)~2|h$_|6aG{7wBMcZ@qpmYn z&O+ej!8u)pB^2R^_WhkJH354)2}bi>NY5hI2Xi;0Pk;o1(|l=w_yT_k^~?1noNLDv zE1XluHkCT0+m#Zu+gq3!fm_sJ{WYO>I487;kRB1Ue>*>wQ|wcD%ZFp00TBbIvOc6` z#w=|T-*8*(YKxXwOjLGdqJIkY&}LX6n&Mf2aPx>6ial)MNZ4-lF{ZGPa~6Av3pbeJ zhAEdsp$mfoQHYGS;-+EQd-BbkyWrKNk?}a5 z&MjKR+@A`=dDQfiU!}4%lD20rRUCH#w`(}DIi{aLrLub(cLADg(Oi~9vTGo&pIoY< z3S@y&Gmp>@w>jRU_wd5WMa+9$waR1eJ?Tyg*`oMX{QzgNB6KiRp^b=}Vx>_yco?qH z&BHisT3Mkc?A|vhS6lquV*+s#)iS=K6T{+9q&LRwnAXJKWob&v7qZIsqe6+?oy(zv ze;`-TRG&JX{h-lqGls7uUe}8h6Zn|uZ3>u!y{yBhl(E(2h=sg3cJ|gWVwWSyAF7HPOOmL%(E< zyS>ZmiOS@*Q*w#)vs)A$IQBf zTL{#GR=?8POWu5wr8_pG4R?@)_=pz5w&L&@aqRm6w zD{`PLQ1`Nwg}!#g{1GegdQAV8a<4(>SuJ0Zs_L*bTJWk&{-8gt-bcXuz7Y8!6g@!= z961+~8d(T(r>74}<04Z!UKI({<~>ozYCJbf?)L9|-yp~WaB@-V zLKOUXuaR3mh)6yWM3hm{%En_;Iy8G;V+hL0^vTV zvMT?$3C*A~mzL@@f+i(J{|Pszd(C!KvIx5&FL*X59s{o9CDP=?%#J4Gw^~C=H&Xl5 zCWmtZb{g#Wn^PhYt@hZo94dz&3Vr&BdUmFjElkr4eY#VnJz2cZgIY}Vd;Uv!nQFy3 zFX$_7=3z9Gk5G*_VntjN@9%Ay3t_B1&bbGLY>})|;P+Ma{me?KqnNfLH24IKhR|4& z*pfKt0*G&-KCD|-0#dT{5KzlR&@8#}qD@H^ssx!1{sZ*(Pr2lzPh9zmIEFc(AgZ%r zI`OknKcXet*LaZ3*C8i)!~$*Vl1RziI17_}1vlPrNEEf97Ok$@BKXuN;=J`-LN-wP zbV_V9X;kU%x?D7NdQFk=^&z6wkxC_|^8K~~<0>LNN}>s~5hJ+W67|oU!iTR$8k>~l0w1x=SU!<6H6^UbYl{8`& z-2>H~AhcAXqrxRGW5L=3sOVygIr9+9*-UIw_$Y1mWsWV>us6sYc^QxF1%LQE39#Eh zAUwKzMJ42D*b=Ucnvyn0Aq#=&2db(y&zU7)xOc;BNu~?d(No(dV6?hfB*5kTRxPy4 zfn&eIIqt0<9p!fTTp&kPupJY>m#O+onm2yd8#Pqhve3gCoivtrRuc57AO=&fDQV}%?;w-UA=l?AY?wI&{pYuz8;QN zs4r3uH}iBM@+2kibn|sN)}QAj6U5*&A;wbHDQyZnR!G?w35Uhc>T3d+Qsia5zuRua zn1`CDz7<}oL)pWvwp|$9jBBy-Xe{-tA|U+D(k_qwlIOs z`8X&rEeG{rU8eAOb-~bLj)!_0Rah<3d8%1VK_QuQ;dcdJC#(l$qff5lL1;><0o^(n z?64Q7VTh*J@`kQsi5+O8%WN%*+UmRhS5uh#oysOT!H->ikJX+`Im02&%oOzQ-?RhK(|Q;0D^wF@V*xy`pj z`pJt`BI9}`f<*5+%V$oN9L~NhR7Sa;A;Jb$wmZ2!&m!MN=JP0L7@7QTIa7;Kw!=`F z9@C_O6?F61DW`q_p?YW86cMeaVq#7p0#%fZ>v5xV%9<_*Rze!o8B;mf6IJaPfAM!-T zfrN`Mw)n61JtV{%)`GhLK_8kvthFLbWA8%D{SqT z7hdZH4~|MeUtia(7T{Nj&sR9bX{#5c%r#fkNSFl1H^ysadL242_7Mdjm~9FV+$hdq;UXori@ruhBhgEbjT92kgRSNA?NAr^I0N(aWyj zky_>wh{U-)GlWkv`GY5jSq_QrotaI0k&mcvs0|_%f5|e+vST(@)?h#BNj1piCd2%M z>$#yHxKJmXLj6g>jtUYZDh_Ir+1rVYs$PRx5j(4#KBCd?i)Y)f<{rTr&$AD{a(zan zCsCjrJSmXdys>Npt47U|8-okyhy!;G?QxsKY}tlZ+d-?yOh+3A`aJ=XG>4cJK5zhUg2t(5HuQDTy(@obnu zsKL&k(g|u-%$3%T+oYYnhPL!Pxy4r-?LKOuJ4P+{Ppu?0WM{G6I_6zVXNRY*H)~}P zX49c{CGR6UBf7~}9QIQ3{uWCd^*Ut`Hom(=>L3%)7lI#Ag6(ym^$-Md0KQ6oTO!Tt zsumOXG7JlMHwYWH`NGpUY=G^zM4H-vzC=3XU>)-Vcpp%07$)i1hl%s>S=(fd(HezH zN9YM2J6!#5AgC5imaGQ`LR*x(9uV@<{l8BALBMGD78wJeB@l$FjL<7GF^>zXM3W0uwfPFfNHHKls51fEo-hdW9aP5H4kUx<$vjKl@ zIU9qeSGzG|a{UpsMP~-Pz_mqf4dJX&<|Mv04$CqEW00&-nD|jZp2o=90X~3uAB3#3 zu8c?GN8V|Xa=S>7U#5p6J^)o>@CD&p1St0gbBVOi4rRmKYX}qPED!_^KFt>p0cbx6 z1H?@uS;sIVTB9KTo^S?&?PL@-e%t#$`2GhW5V~!M8VA6$uFNIUNB$m>KRiR2Bv>_E zF8__4-drL@{?w1T-JW>^V79BNzeMWKd1@U%peLCWVp#I*C%lGzKGcSfg0jE|KEQ!~23_75{XDO|%+^nWzYSZIoO%4kpmv#R@F1 zGY;c5;;I%i+KI{HngvEyHLL)t(}8#Z{0UBEfNBgrL2uXxgIkfN7$U9e{m6Okvpwjlv{Bb3q`MSv(+$fK;p0 zeoUbr4TG@kFucZK1;9?wCU+Xlf0V$GG75X_MUf^i&EoOrfdujGc*bl`~nD>sZ5fCMAPmMq^J?oN#|}1w)6bwUHTH~yV?-u4-{Ez z6c>0PhCTiNJxCf1Vfw;SHo}TA0Z_LJ{enfbjzRA6q!4B5f<+l8Y=Je4BJm9Y38SnP zV<|v7%Ij=7ETr4p!~;Gr(F0*h+VC{~7i0fLq_2&^D(*l+C~O3Sc3SbTcphDWQt{$q zjZ*Gt5VrL!?-vp*R%;j*?Cxk37G7f<7Vc&cCP}d$2_oHJ2e8}^0WKiR%7N@DC(wqh z0CG3}7b?z4Ab_*)|EhrBeh>&1sd&n2ALzraBNUNm)CbsqOcEpiU)iwh70VN-789)m zSW?Xb*r5hnBPM8XjS_4MaQ(FxQxQwlAWUP~?zhtfK&ayhKrSHL4|fwt`o9q%(rcD# zF_SL93y7|co&ugmSd$pzurJV(!9XSf1rVUOY&;;F;WZetOua$ zYK>U+rYk^vAT5yo0)>Xhm*=P(bK36)kPdK)W#1PB&KU}Le$|VKQa}c%S_D-6ue9>~ zmptMghGCZ%-Iypi0FMp$|K%OvTJ(K4CY&Kq3*bGB!W34bc8~9TLBbaQ*AP$-(8YZI3t zP(1c+$Qpw^R`InV-#LuJ49JkR`#DEp#dZO5bwxP-{nz*ld5Lr@lt8P0D;4F9)ezn*Z&=~Bo3y3D<0w}5o(EsEN zs2`g#VZu@PHDYUI64od`cL8*x)&|qBrk-@JuVuPNBVaaJ<05g1nKmb`N>M|At>g@;^|02K>0>r9D%#6QA?DZBe=7?{|J zCuOWr`rQEGhI&R}8s%t9q_}$&jlmK?lOHu>jTrJCP&r}#*Fn=LtQ{_?MG@Bj$`YuY zE`CGN->gv}-9qMki5X*fd52~4k-h+2guO=9?)PsGKn-z&?$HINs~sUgHu3NnV=u)h zVaseNpLqBpOaL*X#HoH#g9dtz?`2Fo>CQ^k0zz#|T^^^^OK+&}v}mB)suu zADF`a)t{#)AoZ&zgFr^!_%MhmNBx*MCqNA);)?_sna={;WB@v4+5iX@Wf_NU{dBTM zNzd%Yyh7uv7JG$sAx9C&cO3<+0DkxRSIjps-nRi7={j1YH~|Y8{(pIUt3z&!0#Mk5 z${~2F3T*+H`b2?QzL)`+sWqYpfqA3)7f3jA$iP?xSWF;&((c!5yt)Yip?V?o0>%wQ z0d742<-wh(MvPic{ILvRw=z)Y{1S*8gB{^pBQ^#nW6Q>hn|C_ue?IpwHfzp4f zPTd3)pnsph0PJ^>KLvjE&-R9h1Jph)Ph>q#PpI!4?!)|W0#M0XKV_M;MTC{$ggKSq z1QIlVKi})$^dt|=w&ET@;^2`3Y2L{NK=TWj<)S`mi*B?41@nFoQ?U@JuO{!nV$uGc z0GM`xX&Do!Q791i{g^3w$r9u-QSrdyfl(=Q5176~UxBIQ1*1mHJLdjkXi6`h8CZS| zLvI2lx(BFZtPa4UZQREo%m55u+eABh|Nhk%l*`}R2&5aX5mvBLy@qgt0vq`^`Di-c zZCdpgj)Ox>i2?Wf?(}P%b1ySB)p`&K<;s|C!8o;iwrgQLw*q>Tu+eFhz1WD$c+HjsJWF0Xk-eU~#PYu2l6X*TXE#Si zzMd{l(~J0Z0<+J3oQlWtAjkTF!)2*-Ye{g&ug}CeRkUnSd45_y5&0&~MPkU6_;uE106Z-a4E$#sNlVo%mrOZp#-v)~VZa>eK`CT(eB{-+JA0)$%Je zubPo@2vrQW9bC7ow~(Al5q4~dRO>B9e2AS z?q}4~W&gq^x}Gt=4m{bL!Vkw$+YjnS#P+(CKHl|-Y+3R%)9cZtTLQ8z>h-BU9|cH_gnF@ci(C151w zJ}{g@Q75`Wgb7nlaHo1HsW7tlTbC92O( z`jh&cKiwBQ2+dEBM+Wmr8qiAn%J%}mUvU|C30tp8~;p6lm( z;I|IY;E1fi&C%r7`xk>P5EEPm_{XFxwWEqhQSt z6Ld@F9)ipw-TY&yQnsun%wt+$*=->Bnz2<@SPXY2*8h zqo;0!s!1?ZB1r9S-5{!A)9n>$j4f$MV`EW^8L07;szi}+jv0?IO1Ou$qUZGJbk#7= z5ZOd}BiiY;HKcge9;&43ydjjXR;Yiio+cOQ2aGa!@dG3Vm_{3&6F)huKQ zJK+PksExSS(eTP8XEQlcw7zi4Y6{sBkM-cPfWDtZ_RW6BJ^wDGD)a5p9gG15R$U=I zM}YoApwe6{^W*KM%j-=!_x=C>_YqtC@eJmZSAq2|j>q^K@w@u3UA^~?9q$>MPu?AY zkBC-e*Yxve9}!r*_aHXT*N6rEN4$!zOU`tAs6D!DQoRVQ_d$7J_2TUL)i$zwOxFzI1OM?sabpwip7#oObMjKOw#%EZ6b8 zi>JW=7u7rTif>mB%&#sIfz3UEb_g!EwFE?=~?M?4!qCGcBsFtD zcm7Wh@2oQ*zV@#jZv}x*-lp9v0?InxyLc7MJ9H`_u?qrd1f+)!f&(`&??IkEeVad1 zfo|mzTXy!opM0nHeY>`CfB&_UEZGg}nx6IT$|Ko8M0&y1>8$UlArxxGsRUcC04MHxH|^!({sR;E^6?&|0E`5fiy*Mf*&Ep< zBo_OK*J&TH8cc)q&*y)O*GD`a5~0eAN4(Mx==Y$Lv46G!Tz&BUKk5VUtNsRj#{_34 z&A9G@EFtb=sbd>P%pRi@(y%CD2@t8rdbr7UPij8%>@FR=bw;Xk*}ZHE*>FMsDA7^7 zg_mn!(hoIIWlN`nEGou8tSzz2Bcy4GvWCYW0RICyca6Z+Yki9Z`OAe|{T8X0V&gLm zvEm2#Xa%R=M-XBhmf^|BeHxbU_BYhs_OuKQ3M`~{M1vpdK9J=B5`BLXu4ly*P!z_u zSbdzcn};Ca+ZiSbkkNM`3c2o0L!Hy8mCk14KgE@St3(6Gwti_ME*$<4h7j@J#DYGX zSjVQUnrqau7p4h?QlXpoS{|oXG}XqCda|hH%O!@J2t*P@{X(mrl&5LYPVoO8+2To$ zetmHwoJO5T{IJ}#+?XKjnE$oiKcXhB&01&cL*g1fSsRJ{Qq>5zzCr(GW8(B|A|qF_ z`0$suZQ+_Lc3$Dyt=z-396KmIq)T3=Mk$cw8U7cBsee#kZMLW?3Pm9r`ce0iK zcyuH-WT3PSF<&xL26URRo~*hmPidd%4h7U$a&^`C0wy`^&7m3w2Z6@^AODc&t zJJp}%whEtO8hgLN8h-z+e6MW%X>Vw15-g3l{eLI4=u3{#w)tW9w2*zFTM735JE7%U zOHaSQz_thn`^T@g-i=V&H2lBwSz3MHDNBy<$q;oa249SqAnx%L(O`rh*Bu-soLQ&v z2OygKog7)eESi_iNPPB5xg&<%F^kJ;N{%&LWV9LGFFqe0B!>o@T{9f>BDPO$3;Wuh zpT<0~cU~DzyCM8g0K(s;jjmo6KO(L5Bxwl^FOCvPN`F>wo+O{RzP_@PF=9=Hlk&TU z=hO}|4d(P0!|r$J-N!McNSRe06t}WFUSbpcRS_)fWIIokfv=ii%n1Wl=iF!Y>idZ= zCNDTC01JUM$NP5(SLuWB7Xh}auUSnnyD~EYxs)p}g0lH2Hx{2l#9?Ef{G(EUgIRsS zLQn=lB|nlCch`fdC^uV)>&|`0!LW>{zM_gRi>U@V4}LuuW;!GDP6iFBElO(Jj|CrY zrUkvDK$bLN^l&0i&9!`nKz^iK=F4XIi7mhbt6sjPzxZWuUd32$^~e0ropY&TPFA<* zc_D7(bN0|~^Yt9uJZVn!dczIf(m|y}EfL_1R@Bcpt67l8Kyb=eeOY$1Syf|XjzIKZ zSVVBiaYufK#MY%X=qT~J>@MIw{wf{%0UcCVKo*uV!zo071#XuzGgIrZ6K*SD%qM4K zBwGg7e^vQwfjD&L%P-8n@%XFsD*e2OIqDqWc99wgTSS3*odk@k2gY3ROkW<)5j1mD zCFcazft;$#mG;Bo^`7nU&ELxr`LAS+awKR^NR}gQjXHykk=NaL;#r2^1UAi*^q|shPGNP<0a<2{vMcfWcGI6$qD_CMG zp>7-S0ZE6A3Ee6g*oz=;3T!aAhc~C|`fOf)Ppk6B21QmZV^)|OINN5nRT#?Nz51hw zT3|DWMEl@Rd%D-7x#QkwRN9F5)!w9iT`Hq1qQF|cxcKvevG5e!;^@usIlD^cU(9)1 zCc?57W33a1w3DC3yqo9_6}&?Tr6$AMBo4rPZuxhDrlQfRg3I)#Yhl%C?!SnEy~itZ ztS$31S7t&^Lw2UlXGUOsh1)?FfgZ}+D!Q`;WAzWSuH_hYTId}-HkwjVab6&S&x(@a zpOyRQ+Bu#~@5+S)2dp0czGL|Y_G`m#(1wtOz$ElH({Szs4R!8<{I6pl+i)i*?(L<~+TVhz~bh!JZ45cGs z3gnQ6sAI)S*t)vmM6D6p_vLRAl8MwjMYy|6iEq)xM07Lux=seNf=`Bo_}9+#O9z=v!KEZYU(1 zk&o+OM`O>Al!p~}B$0U9#^2oc>3`AJAQ=BBGcGrnZ#9SG*<|doR91D|I}a1y2wx%i z>?tyJVk$Cu-x=YD^Mwf}-{T1}5uxQ8@LMAJ56t~s8auck8?alHtN+}_vb?G^pX=7| zl{?wlvuS3^32yvH_PR7$`m*6U;hYAXM$7r8Ub*y~UI7{hwmn;cZ2i2>Si%pL39Lx} zZAI!;^Pyf)Y2}I;%GThb{@9Ex``9e6m?8exRnSs$XKYQa-`%Hus$Sz2LSBJjioa^Yk509i@XupQstQ~I~@P^To+GdlUf zHxw^Tt>1Rv+#R0N19oCCD|;H-95Ml zcMA|$+}&M+1QH-nY(6S7SPp~i5lb+8Wp%t$yFr6GNn1wN6jilkHd=xM*wES{$LuJllOdP z@^^pK-)wm?!0==vIR}Hlck7E>Y=pG~{Jf~izze&~-=PSL;ZXPBPzCJxIEpfa6iQlO z-~pFvc;#E`f0cs%>l7Z+x*aRVJ;~p(@WGFX+MjUpu^1<;D>hvXO31OsBP!qG<}N2J zC?4{SW=%gt1>OoT>HPT}V;c;0*^{pObj7W8^U8sagDR3wWXrGi^GrT=;RH8p&*oS; ziRf*;O0T(9=wFL%r7Imaf{XDOa5k0Z2Tg8H?p{rS3HQCIe58^A*rxtUk%MTu$bj*c zyBLWB9Fc*%3AaTP9n~;Au!Xpq|A}WQ;~*XX;5(L0}B-ixEMw_? zR9)Sj?;8h_Y zf3Jfu7yLx%lo4HSsASs{hViRMXDi{zuXUEGQErDh@#1KpdmW6pVz6pZG_7z_DmYcq zB9@7$|K+h-DQ-hOri-4Lr*<*O_s-5_E+VhM&kI>x`b0yENnw7!SDtn_p-fYvNTHrL zqnuYDg~E#yF~NrI8@i2AvZrDd|mO?C$ zqKGEX|D^)>f)Ptr`5THh`+a6%O!^q%P%SlknZ!Mg5AnOGv)k=cAAc*&{sV>lGAN_u zj2+=vijj|&ap*KTm78nB{hrE@Qa(>yqM>n*{;TC`gDLzMjAZ;f5@-3#yiQEHT(T=M zNRZj`oT?`DD^sqN<*dXnV#aEo>Ivr$iw>mDIwh;`#n-Iz`x*J+=#`nP5)adzHH93= zN80@QO~^%tMrZH@gVB%npIukf1d6kr=Un8aOIgxIPQ)@v0PjyaKX|Ib5ZOaDB^wqz1SOK2l3Y|rhC2Q1kO>%dB$E0a>m+M4~1<740A z-6WxE^LEv~B629sEmG?n`R4e_e`>KQXha;)e9>owYsy0(n8_%yD$#j!h zx$mE{K$9>&L*U(H)*a&0I*BQItsDhGwxHuw*3?ytJ{ z#DIw9AUg{P`@n z-s>R-O0Gvk@ww%BBe(fX`P2Q9-wrH@e9Yx^!A9$|@>@a^kFblME2_vY*-Kp6<&mp1 z9_dQCw-8)KNN`KQ(t z4o`Ym2~qqP?mVPHidLx6$?qKA;S_rmX1QV%M+x-?QN{A60k?~K*A82J>_&S&YI3JiB$g3GX_9P&_GrP2RGKcI-J5ePrb0WM= zQj}JH$8A~9&CeO(CcxUlB8e~`wQW*M2H*VS7ncyuLt1MXl}TW2#fXQr5gbv|8|M^U z->boM&1`nq5LFp0A+b3;SRK9kGJ3+yY5}@LgsUSr{vLL?IlPoM)DNGQU!BHvopP`o zX)cFqZcRhdA3lBY6~n_%Ikm_x%v?K>45lii4=Y5Ce#t$?rtY~@H{VdU?yICSr2C01 zuZ}L!(GK`XWB4bAH?3h+#`0$OqKzte|Ed022$`o{A ze)~*N6~h*DIL7Ypi2sc-e)^*_(eE>@#jvb(w0$d&hiWS2+HDyTk-!zlqu%7R4_-#P zxU$wjQBYr!=-mRAx1wf4H0w!kpZR;W@Z};thjZpzm6k%f%jhGSNSc-V3coO!4{GEW zXtj7R^nF!hAvF)w{x?+KKm2Z#H(9=~+L;vMVEuq-MWWK8h7sR?9p^Aj`_xPOs;k(% z8-#NRX?)7hCC1F{>iU+4-wcgK9-46wyUwf*pDYR@nJKt;dY(&n1`2EZM$suvQv96SpWU{nU)?*c_k9G&V{~EuG*U3L0OVRuYE`3 z$6&#E8?i$xua47KzJ?9Cl@zT}r+VskDz6Ea9ATVRx3<{xoSddTR$T{zLOHItTLc0I zpATGq&^qd8TU2pq(s3A61W}E?Dvhv2Sv_#i^f?pbk&4IB$TN+9gG8Af#VB@cQ?eWp zB)bV8R}+t`e-6VC2tvi&>Zu6gi6VdvmhQ;%X~e@${af4xgHAdfhnI;^m*`CW?_nN z-j<-d>g!^ryel*l_&Qc4Hz#=LHa2jg~)TtA4-!jjs?FD~xauTeS`WUop zQ2AW7jkWl;PCU7h=Th;Z*r|I&EQTp=Qv73P&ADR-1~cX5aDsXVy3-@PyU(=I!7J?s zkA1qVL_(#WJC`1|!`&74sw3Yy2SElc$ro&gxW4bBr#9vh&4E`$42S4|M;CNZ(fy?0oM@Z^)`))lkyk2hG)TP%%@T*oVq z3&eUk2pGobzEPPmCf%g{aTN&r%0X|#ptR|vSZZ58Crk`~sYp0^q?AJtOBUV=uA!c_ z(n(NTKH1z-xA>kMQ9C9v1xtz`UT>ANz6bXUMF-w-1hGPz!-l2JfuSL1Ay@f>{qL6k zr~0jH0S*Ou{0*%)ze?wBlH?F>|ee7_v!kdg7$yz7tT$tbAjm^Ys>-45c z2fAaEX?$4=mSzgY@kY2Bo1`Xy5EXpJ{h&7x&}%^uP)b{|6{GagEP+Zd%t)pV4LQ_; z0COot`#pVrcCcQXzdF#~UT0Z-gdyV5Ir;r<+~=DCB1auLI3t4*WvNv|&+NGO+Z*h^ zR%sPY;oBOI@3HB`rZinY&Ckx^QV*v4P#ovAO*noj`Bv1unn)E=e$v56+5-*|pRwn; zTM^J!$Q-mf(e0pbEjcWIm(bzlC-rLEx{d?e;6k@QniTV#y!C}c*vMU+d(xr=?xU(R zhq8a!cq3nQG&XCfT-rAIeyztY3wb*Q-L^#Ld6ePzGn+p~kh$pPy5^C=Nf0?p`+=u& z%JW%O>R)<|ymbsZJiDD8{(<18W|SCArn{4}=c}gEl6^V0S^=*0OjVu*%XPo$^GWOLmyjrg{mB1YPVn2FC5P~zv{8oAscDamH_%qi2 z(#G2LRI@-*)M)~b&H~TFD=oKwVpWSvY_<_u>IrI-nEo>3MqSB+)3Y*ftw)<=6j61O zbq`m&Mb!pF?J7z)+2?4Qex=bh^d}d?RV5HHvsSUKCl%fY3MT0+SXGpBwDxTGl4nsMrI`$)T_?GtH zbx8R?6BE#F5t_cvTNN_NX?lj0;H_fS%+zT&GY(j2t8|w=O8YPfBBc^^7=Q&Sb74m< zO9mp|n7vo#K6hICoke%S9Eh7&2w4y1?Bp>bVV}v$^z>O9!_PY=6bQvIzx-2&dekkw>UsP_|^XSu7ri<_5f`SAk#1BE#aS; z{ZX8C&_v6&EL*r>wb(D)-tIE3o%kqb%gbu(xh?7RWI`&%7rlZ)4%@r-=J3#b;*Kupj>Ip9R@IiX^-Ek+9;I}oSQ(1zT zz&KSQvU%04oPiM+MQ=XdP+JrS{K1&>SlX&4Vk4U>=UM2ba<=sippMT5Aid z@Dt`1XZR3#SA$P>aV($i`JMQbf@Dyk`oo2HG5eSEz9o;uHDTq6S-d^+#+%H7LVTN5 z{y|*)3AGxKAE%^v_8RUQ%~&FJVsT+RGVfAvZ`NdfV!#|;<9tk7Sw%B}P7bHcL>p0< z(c+(BF`1gMme0{RX>?v57QVXRKbhFSOpWnwzs%wbd@%SP$JOw0RyQk7D;unrrTpC> z3*+c-bAOD^NxSB!6#>bM|^*O!dPwSDaa zYR$&9M--;pj|c9Xms|xAbs3Lx?#wqWmpWMq-6{o^BF<=8*6cSea~0$CGK8TW;}I`X z+|1DL&nst^B75|yj|ie)fi{HYKFdBfOn-?i)hoPY34VXHQN6D~c3S$Q!;4n2fov9* zP&gOp8gJAtxIp(n(!Z{VtPao4GdE8S1209T*9TDYbNb^judzYaR9-w+fl$X7xEr1< zo~P+wc@%tco6QX*d0(^LwA@sTBdcBaD0iVg>SU?vRdaz_4xO2Ak|v!jMZ5q;a#M}K z7(i7UnJlcoK;!jp$M~U2HCI91JwWk5f30hl8_2J!G<1-q$QF9~W1y|>!LH%HrHH8z zP+`K*jO11hh_O9Jrq1$~l!&&qJK z?P-Rgs>C=39tEd84kJYalOVe>-!PuC{6{Tw>IWfKsgGBe3^%olU;Y!jU};@^X%x($ zo`GHl*pY^53{0U8OpTjnDMF_X0IisW*+Xb4Qk(gxdm4w=K2A?#i#^FzkT}Kd1LT|b_yMqb z*=_xJS*%XhRQ=yZE|B4mQ2@yeOOYw)Jr@YgG?YtHjD0f!@Yffg|M`k+lW*#1>X+2V zE&px6QDf^X4|UoAv`haHU|W|2!7*?RrTW3ADgcqjj7Nqx=RC)*(f{xZ#MTzJ>;%dm z06YbOzdmVzd!#-NKelB&iW$pfC2;uxoTaR?RLQ1y-`DCLPq z0HeJz83UW9wxvl0$AraEP&IF_AP;ZxxwNF&|H3HOO6f1pO=TD-H_o-3ar3_Pe^k_&*wFgwt6;_~5kp^!!iy8#p)<>4w; zlfNNg}oRsa*JFRlxyBf2*wo=Rr8~@e?#U;?k=brv^4c_>*`U0EK z&Ik)xBOEx47vEkU9Zmby;AlM@a-5|yL|Tm><1hoP8TN~f{Eqc}MUg}uClx&lAK$QH zc|FL_!41Rpl*B0iOD|qKX3v~1RU36nx*m!# z7?s*uLRIV=;VEJJ_G3LWD_D3w}i5 z^e`&X?oAD3K8gqV;IN&*`0#fJj!@R_U@AG~T9Yr$`EQ_pGmV2+Bd#%xTpyj*A{>Fn z_MB09Y0B5(6D_mJnNz~~9ix3&Njff^6}C%r(f4()tBDPrjCsnPkaI$*`shNTgqZen0ZT~FrzSR%odDQQm7Z)M zJMgw0kNu(wD{7ds$5?N<2~Z*?=H?@mNaCQ-Zd*VkLvUh@LtzeBAxzGj4I=p{V<>Bu zVs3U74;NuhY;JRMKhb_3d=lP#;On+4A1u80FpG_veo0_}8wGFgRcOLr)iFn*3eoSZ zIlsMZUXl!ro4{^#z9Du=aFOr{#hIEFnHLn5FuiXDDc;| zxk(Vz=xFzP8vBVThRA5xYpvlr%2c9@J72L^T48&?x_xkm@BN_&7QKYY&plu5G3Bou z>X7-b{Ts_kRYs*GAL+hsD(dH2ToinF9T-~;QCpxP&anBMYp$h$dly6Zj6 z=JoQ$Xj08ZQq2OzVqD0*^X`tk30F*!sFtr>#{hanVur7q>KZyzIAGQQDO+fz<+oKr z*v&^usp}2%p`;c@@bk;KB02)wNreRDU$wwvHt*7P)@?~8qdHp^jULSTvRvKOcJlqU zFm+Y(YRmccKAb!oJ2iw($BD^>^6AD7=fWp;3bMMDo}KHeY1o*`O+87Wy)69fO4>Nw2d9&06)k! zF8$pwyD2B6*!de3dZ7)|sNsyWpK2FR-{%}Nwdn?erXE#hh5ECuiI2HiNg}`StB(0% z_y-hHWl&Yu$4wQRaIG;97wS1nqtdicK3CwNFuPjm+)BIWEq^9b7q<>F7iV@Q^jgo7 z=I^VDUK)}SA7M6cEQ=YF|hz32Ssp-7NvHqxrpRKuZ+_|8q zlq1JVR4C2Df7v|y87wTMjL3|LYM=7^DTbmWi4eZcI%EpY(44-8yV=5KBb}e>HK}$Z zF_^F_Uo4gtG0Lg_iQZyQ`$p2kipGJLxlu+uebu6*-#Q!N$q$mk3}@rb_}ckG_0oBk z^z66%DO_8C0_rDV{_yOkvNkcM=id8E-DODHUGt8n`8VUKx7VWJJ}&Y~E0Z~oeYa|_ zfN*P!5E;)Uvf!a%>=#Xr({uQVG!@1HyRkGCXN^OT;Nx7PY9o$PcQ}mSX)50_+P_QL zIL-xEg^i&p9edGAv6VMBA!qw`SDc6YHNEDNPHQP-Rf!8XJborg9qLOV;4p%JpdErw zmxSrz6~>KcjmXg{)SP^4>^8&Lp`161`b~3mO2;+NEu18nRghScFHfVji3*c9DeFLg z|I8`)X!Fk8M~BJ!f!s`?bo|iar6Iu576rfrG}NCD99R+MZnnJ$I5TA~ebR<>`}+sVoiicR{XL%s!I?n^Ehjdr16 zf}H)!ydB?%sjJSj&?e;BC9P8%IpKs!^BUba9~IV8<>Ky{Kxhsv;W&%imAZH9{zML1 z>eLke&gIPnM~?k8m5&=6b>TxA^8N&GPz126*DF%>gyF!C~b{sr%El# ztr6dS)@md3X&>} z&@LWqmwbLrSd-QH0wH0d&&oTWBeYUa-2r=1;sUQb4wjlX29Y1&GVu>_ERcpuQo2(} zx|USzI%hEL{IQUEpLYQo3(4;55s!lmich?SxM#T&BHzhCNZHHD$@qD@Gi<#{Bxd?; z?|gJ|)MIXxP8-`1kNm@<&Vnp($#^{(1={pDYvx-q^R4wy1)ZQf8W08jf=A0A619S- zVQrN$w)h)oR}#i0YsTJ0U$0CMx=g}F&Gcv(l`dyA^etd&o1^jnC^(nB*NFLpKNIH_!<3zWQM8~fBWrC+qWecsjw-h+WKLZnZeno^sP7M zj&j=YCS$!+8sW6XbU$h?`QT|+73JKb=}3c37dV}J@3Y^SmU+i%LLL7ct$)jXRK$C@ z;bRX7KrDs#k!0{RCrj0D;+-Q>ZoYUEFUdfmOUU>$$aDO1+w!!>54Jr&4@bc<6fLoCfqnwjbf2eLRTE+h!L(8pG zRE(ryQbY^m@=ad$T=yisH-mJ~-MYxvY5Fsgn4pJ91B$rEOq;0;&VnMXg2AY%nW@#; zr(T8Orsp`V6v%xrT&HGb*#rOF51Q$%3ap-JbK(;ZhK!)qc_zf{iSUZhMkY(&qJTM5 zT+9)8`I>owJPo=l0S9fFWjS%Z_Ga2$w%R(Fm9O~kZ6`keR78GGQbhesP(4sJxbI$yx+B=k~P(!WW zG$Iw-r}+&=cd3>rQ91JN1zj_7dC`gQQ4h;*3?}TN>p8vk$|trqomAF&ie75j(a*`y zlpUChQ~2^HP)-n9?c@}h3ji*UD+OjCHF)F-;XoF zIhAc`S?+OO-_ORIldoHp-{Kwz<{h zf_fG{$47+Mg-k0L@2E^e0`XgnIAgjP^3O}VW-ll<6%j89Yrh%)Drox_{fOrlc_@dP z5wP%hE?{ClO=}ZQh%>=rApbE)@`1Hh{M~F^t;dHQfj5lKj&%NrrETAjXcS*(`3(26 zcfs&6g9syeM%{W_l(J|)qyuBdT0!X0xa#u+hUf3o@>I3B-)4-uGuSjPcXrmtqTMX` zZ2o?9m;sS$tQ5#;U6RcDdI~_`mxH>Il)P}mK{qTrON?uukj0xFXM*hJ|5P4t1yBjGTNw@DX4a%E=ot1%oUVePFdz=f?CKhk)Fc3p*fh7)61I{<3 zja@ORAcEL@PlT3QMY;BcbE$1OL^Jl4O29t%qph)vI=saC>jtoMB|;Wre(K({fNM7% zgcMZ0tXX6)Tk1qbWVikAzP!i<9UvgJ`lkSone4&42s0_Aq`hH^Muz3Js0TuJ1ZOx1 z=h%{IjoQ>4;Xkg}2$HOBjHUd-^%pnZu|d;)g9MXoiE}gphHu5tX-`8tVespHp_9Cf zzo`ik)^{)R8_g1G(2Ps_>{B}V*&Ng!F~Gwo%bmVbJ#~J+Kf$^zt-+_wFB~orZ$ox-_%45_YI4}3@5#ZvEs;qsDQbtwCL{^l znW~w_WkM8_%N&uVz}Pen7O#`QnoWXnodyNf!#sk~z64!U9eESDB*-1DTFq-b6;0%J z=9yo;O|xxhZAMOM@v335hu|%1ToHIKr##{V2OU`R%dNf*I2Iu9ZYAf>4wGC`gO9zFBn-GNvcCA^0TYw~Z&tL3+^d}e^SPTw)S0LS8~GuD9sLz=;KkGvk)<{jyhh*C`olm=EB<~n8fPof)WES-0{F5p!`a>n$HoE^r0VHoB!v;Ny zP>5W=hC_!RU?G$f7(0^L$p7YdM*nJ7h+iUj+SGpNXeSt&%!Id5uz zlhVKMmj!Zs0FWpPtZxrOp@sj_doF>hd|ALwAheJH(IO&7<3@PM&|npju^@tMokD~` z9wMxuaZ69b_@pSV5Q(KQdu+A_SfA$j3agz$#4x!P;mwRfWdsi(jV`*xf9_S-A`ZTS z1>CGw99;4k43)b9{O2?jI(&=>NxH#=PW7J>uk^XR`uDRK>9 zv-gY$`MN4>%H;;w(alE^j1qZ?c?@xaSIWc&*^&d)Nhvb>fkLE)5*A`s6$q^X+@7IL z*4ok%5JI4fLPQKj>OT|(3IHUT`TmF1KhJRcbAb)YD!d7Ws(r(X#L68Gg+{{rkkRw~ zn^_EOVO%E@iDkO#v@1#>!tp}B(^o}mNlVmCNlTwH~-VVI?Lg@dNNpL1sK%{T;Ks*-Mdii zb(2!$rGcU-_!uxBY_1KJ&xd~@AcLrXD91$|86^@+V2U5W(>fG-bptFXiue7<^RN=& zVJK!KmbN_L%QDU4;N}msfZ37zkyY%S4*)6j0gZ6-|H%i417{(NSpN>H$Nr{1n+17w1T$aK72*9U? z0)bTukN`I;NCUnHK)~tZ1pp0r=N7I67)2GKKjI4VPajN3j}c5{!V=xrL?AF;?*e`n zEhYvI#Ks1hMgf&3MWE{+1`3h??xO*bR*bSAxl{f>ffIPJ0IRC}kFNkAAr%2&g2hbo z9mx_0F>tpeOeB^U#XlU80Mr3vvjN8bC(Pp$5X{B^F`EccA+X}|kytE8N9-*}*dQX~EanxQ9nZiLwP6E7 z4grh=xZ7}Vt;g_|ZbCW&TKGjyF2RfR;2$I4IyG>|47g6yA3^T+$vqO_2W9?u<*9WF zh;~l@I7~=W`82mQ;{Xz7#)Lvq4gg2_-zbmBghWRG{T4ak(tmfvC`D|TaChJv0q%xP z03;3rj#tS2LsrZrkr4*bzddpWa)kPkE2RKSF(&~!;R1@HN&_1IEBtHW7y`8U2n=5< z%Gv(t2l%Fl6wQDCZK%ybQtd86Ns+{7x@fEpAy5~g89-77+ywaKEN}7#yr?4__sNyi z`*5gBSWtCnuUI735&D^W|Ll^b%^NaoEnvr^HqvAiGYTdI^6ku%s$z$85?Hl&p8`C4 z0S{XN?5>L=6PfV0sl!XB&SEhQ;SL&|YOq8IPB~#8gcd^IqibbhMJF^F;e+Vj;e+mNi3X6n41s}d3?du%;*eT{Y{cycjOYZE!l<1P zf0K?Rf0G4YNy*$hKQ$V;Dcs|sJqcX_@HOxZtU@x9cm>7b@22z{E!F-g%LAN z8Sz#I5gW}($8fOPzvcntDj9&YHo(~kc_1Pd=p3pJR7lc*Y1F^OwyQ=bM2M0ZkaMk|d=rJV@ zfyfvFT%T<2BeO&CLHZ*Do3#d7_#m8&1y$?}BVUw!d{Fe*PhlGNXe>+@b#Old_CUnX zlpXj4^nYU8eYiZi2u|4vImibL1(An{yQ|`Z=HC@TQT`P;9)foy{c6qB0Fz%RlW+Ta z0OH(dQV`~~x&8;8F7BZmM zJeZ2et|I~c*9jg#6=C`XePR0epjx#GX>+5GIp<+d3@wZz@i30q0=lc4_@IkBC|Y!a z&JSwNlN)&mjwsB)kdRY!f)`*DXrK^-NaZpAfNaADMv;v#>R?@2GJMeGQwdaVKV)XN zDL7|`8tq;Z;S%+C+`I^*$j;BLo24m%7!ed<|Md3Ll$}1STWLs-069MBw*~(|1jYjZ zKvgHBND*o9&MrBi*uSYbc>bJE!rP|sa3%EK;rAWA#-*TCNNZbaya-XjmAUMVsURGs z)IAz?#-}7}HiMJo6XVhB5ch32E2WrXGk!9E+%BM8j8)lFG_<`-!MBPk8rOp|wujzN z{FG(#fEMLbUUSo|TF)g!@Q)SLhA7}Y7Y6=VeBR(|~WLH_!6n$#uT`rx3<5~74ZsycFY?c1?c$hX{x7r?)AN8BO zm;+%t^ApZkkGk`qUBb<{%Ej2}+*pZts=Rn#k2`2gy-~~y+e{>5P{kj;B2Fzy)VZKz zGQJ<=$m$q6EGIhrHEToDgYF;}^`PT><4P$%n>PzftS)bURS=QLqFvM8opRXie&Mm- z^=q)#F10pjR6o^%<2g5xp5yBjaxmbXtdCo^=`m59|3+dR;issdc$HeQrKYM5BM~ow zjs`zfP-r76lb=z(jLZcl_(Oy|VOKV`=1#at4g zR45h=+!#b5IjF#*r`V0R`6yjXj%TW2xWm+kd&h(&B_>ZozRBC=6Mj`6UDXul0_oDV zaqHrWKQuG9A3+RTXQ*wx=OWKNsMTrq0@Y{_$orV#b)N7ruqSVAO0M!`760h>20nKQ z`x&Vm1|%kYwvS*j6ie@zs#FW~8umnCn6SD$)99i2GV18;E{Cjzz<#~PdoX9)xkV^V zrk!F`1j{Sp89Aj_vTCzpLVGy&VZh{9#U6q>tR{B?E{$&dFu6Dg^8{~s^$#}U8C}$- zO;(Hr#m?8L>S4oUrm0S97k1!nUN~1_p~6X)ORfb|U$9XXzT%48+s~OCT z-9*b)x>8-Be_y7mU+y-s_>j?KMnz4QELnTjzxn#BFnC~1e+k2wlZaj;%mog-CEb|vz&e2Yff^FqTfpwp%~JE>^%Ze=SapWdCLrK* zbBghb7v;|4)z6z5Iv?7`BPdEr*Wr@ORP@616}$*Eooc)FS)PlzO z3gPHo&JD!SfSWg+BkQj}q5rnbn5eP(X;Uwmvlj%*B(L)j85{lO$0aBtwt6_zxZD3M#^oqQ_UDxz{Z z_GEhBAt)7zxh?7hu^$pWJ}Hp)a&U5)sv98ruHZKCOWvu|eaW6my`=m^7l{57ksJTG zmt|O<+_9>rbkIbCD#Cg&-qEsy0A&zV7k)H#@mhV@w%zsj_44oC9ccaG|9}3Hu0K>4 zIN;f@Ti_{z&kaP%={~k*(wRRc+Vu81=2)9|&`Udl6X7hBCKH0M8|eT-Uf zPo(z;A5*02#t3<7yXQIJ(k+YV6*N0>Mg4L*h&0*5qKaB@ei!x1 zN(o}YC1IjTT9PcSK*mHv#USv0_n-zF6dI0pP}Yici{o1!tBa(19l3s!nD7n z4T+N*ih&xN6H3MOw{VWVX{+!;{C@1#lXh&+PsSz|VKs+_mDs;~#nH@o*K)BdHd3)? zz7U{o(}bE#}voCn9db zAHKc}-@)w5{y^r1`u-@|`m*#I_DjI#U1L0HoxbRP%ns$d+r(>A#?81?l-VzuV-WGn zn$H_=avn{+5@$m$Ia2dA1R04XDe{KwZgb|hlV*2`Zc}E>PCxL8 z{k5SOnPO``BEzH|ZuoPzVS(x3?j}(AP~ukDkVWS4RtocU{R3w0U#d8G98DTqU6&_K zpN}m9WSxgI-&}OhEdZi(;iy>0%^BIG5Jr6puaeIAwjjP?+Qe7J&*AkT;k}J|f>iLc z$KO<}OL?tkbYiv82wjgPAM4A0N`u*cN_~(Tx3lKvVxNr9@KU#Jm?>B2mVKaHD-x)q zEjVg~Up0}p(#M@w4buuqk}Y2e<9-0K|4rki$@!kG?)f)>ENp8mT~c^hZ~{d4Y_8PF z@G%UDMy6|YMqGbp7h2blq6@acRQc9&S9&IMW3TuIbZ~RC6iA)Y%KTJD4r0F<&Jp`G z(%A^>fwSA06l9PQK^K)3?P#M3li)3hnR%*Q#&vYn**;0NrGouE?e~5Yr>@~H0+$lm zpGky%aluUZwVA(q*eQmhqO{8#acJhVn~(;qI5UB#Ow$4`6T+@8ixA+nxo;qfh0GUx zLst^WcX<{xIfO=>SK;jZ199m_i$3E|O{cdrr4^^_XWMTIYunPn~g0axtWKY%YDcdUme8QZOT8n8-AZ%eapQMgfQfZ)5-CvJ(zuQpJ>v-oKvk|cRsLJd7VqS*l8TbH$TfO zgLAUPWzJ{zW2n`|%Gf8N9G!?DTykz&&u5fE&qCNBu(h7B{l0M z`?@yAtjd_*8UBg&>uoy0fUU-udExWS5T|^++fCEfmU=rqxaL@IY2{>2Dg#; z*Dk{XQ|f*zvg2o2ll5Ij2(~zVppi!}k$jk?8afRI<6oLAhq-Ef{{r4PoV**~g%fy+ zVeO-yI+Me`1WuSaBU4G2boh&KR!+e_U2xW|H3;Ev`@)b2Azi~nF>EG*^;;3SRc+pP zmYD6OuaL6JLBC6k8}B}^y&LcLl`T(frmNRRXlQAAyg zb$?%DH&8vBXZbF`wGbN1bP;i5i$?<0jZvnyA(g+pZ0MXnXF%Tq-Z66`MQ5w9S@q zurLnSl@Na)DA9doS;8~v>XLe!0dHL9X!wJ|U$o))DfO`x`bz7(t05ZbDv%hYw403j zY-SiAPD4eUVYpJsD!X`QITkGEZ$e(na51U<)L$7pPU&S%sP~-Dpl_k0-(eMx_QgdZL8k)b(j*f$#sRk#LKrSyR^oY&Qg5u-=%*Scl2t!B-5wcGhn z-W1vM_i^b3p_!IS48-3l8c0Mj7a@9FLl;qR!^4%4Do`4mH!Q4ue*|%g8NP${jvT>?%HtaKvtZ`S=Bd7^OyvQV#88u-)$5br!YcH(~>fM&|(^GOg+*5lJR>VSJcyPvtfL_ zQT3ig(x%Y*Eqk{lvqre2>rvN(<=Xf5NqE60-Xlq`mH6bF@9pMS_7Z049&wd?hOu1>CS}@D1cM+*zQ= z_O^y{Yrfw`f8^Tw=1>({|H#o?e@E3^uZ_`CuP%Kyqx%>!>EM@>yZi+GGxJ{5($b?7 z4Qn*3;~)+ab7A+fT79R(>u<_}!`wr=+yb zWC|oaE`hs-H8}VcOz*H#yS;jXaCLWqPOdp(aF@d*SYl0z*ryQuS%U6G?&q?JZZJeeQJ?~aSSDN6OtH>Ju zhHIibr<# z1$|YXf9a+3k0!-_w3X$RJC8cjSJk&&_#cMIYaD;VH8lvz|7axxmB_Z%;7p3`9bePr z`I2VX(A)*9hI}A|wqyQ{=)2yOp`FWIS+}_Qfwh&Eb#v$-ApUrM+66*qSaO=zH15%~ z(iKX5eYLcH_B`OqPWBjUhNmJY3f4T*x*IFDo}Lu=G+8t_1T-S4RbiSYC&!4gNN?WHtBi7Jy>fOIZ5uz7f$rtBY47~hHxni$1 zNl?_|xhs)heTf7|&L_@Bc8IY|*reJq`u+fpl&>}k#bGHFX`4u?9Ls;};oy+j#f&>; zF~#vF=1qXdR`1|-Es)MmX#t{8OCh1SdUOMS2tu2Kfn`#HM=%%?77Ik%g`s3RQ!ndA z?L_1-*46U!JJ0-k?4p^+W zfkMHuS{#E3May|n5(AY&g`QNx_P>*(heIS1Xvhm>uL3?Whx)M$?Dhbc!+;rBcg!#8 zRc8Q;HEc{r39KyFrtAk7U_%d^F$?KI+;)2c64!ML`W^<{ z=#?v^i~6+Q7xd}Pes2~Op=#>*LQMqB*|VtwJ%svR3>TwnY-sWpK<}8!B-pQoc-I99 z#X*Il&6r?f^7gV7s4gI_U_hIFM->B+m12G6nxz@pr>0cOn#MBI@Ka3ALqs9(uXv0^ zEZ)MQWCjLC&9wYNL%%Nm)Wn0QcJLxx#QwAKf~FU2Vo@oJ(G%JYtADzRjA6=n(m@b& zHEibS|KXR7i96y>((r(%Gm{WP;00|icrZ8k%PLn(_ufFk^*!yW;1bn6iM{+VfwtRty#5Q>1kMJ*i4M>knf&pwm?O;>mWiC%{YVx##Tnb zBCd!DWgxOEQ;GGGMnl6CE8%9uu65cY1V1f>y{1Y>tQ_vVuP%|>y2fv_k zJmdV8p0nQV8HN)hcw)0_;42#WJS2A-`FEF5?rqr^XQW*Q=C5T)k5}%L`FwO2%G)y3 zScnK-l<8x{nFT4c1RMIHtv)h`y}^8?t;tdr?blg2-u+XdoW_8h7%ZEY{>ya7AE+}n zJQf%3*e}kTgmWc+oc9iEw74 z%D{wrw6ZyZQYzO9>*XxUou{_)xe(C~@|e2Z>mu`)%{MA>@8}c-CQvYD81%=>Vsakt&}V*WVmDrMqY zfKv%ig#eF+stzkF`Hbn-;%)SZgAES-b4MdTv6(g*$ZqTT5tGDF(D!U1q8dh2#*!~e zKsi!HnjWPneq~2L1P!~^{Q0tw#!TX#K&H6%&reRTwu_{NZ`xL1kJKMBa_Q1*1`BW_ z;oO{0jjU>C+%y7HztA;{J_xV943!vL$Y<=|>6S@3xBAfXTcJ528c4+N9m-z?gEf@F zkovrt-Z#WG?3ck6p|5C5vM9e(%!KR8>V1;@O!;aiQ}(-j2y^Vh`tE}y8y(5lvJ#G` z>UxM*B|33<+v8N^H|V%U=|VynR5ra=nSQErs406!SzEMW6{~o=*o4R02tI`0!Ism> z*#&=AHx@93V?23gP8g5OC(~%^^Ii;}5T?UGdAduqoZiGXZu;Uo#@mvi^xMvXfZeWh z?d-WSliR<53ypOs({{{+YRuFNK7F6jbUoNuOSiF8)>EeMQp;NEK7?GXnKXMJ+LZXi zn2>bH+GmfiS|B*jl5pvlI(gFj$ld}Xz9@;MJmJ4+_NuBQw3)F@AI4yPMmMN^QGlhG zMVrOLOUC#?l~F9W1yNf2CEHtWy*C~gEU{;zVLd~3l#dgSIJB4=g`0<4>_OUpVja)Y z9`JoaX@95qRLTSej|>ba^zY)YHcdufeE&AH(8L~jQnYKWB)rxW?l{H5*}+GfHkM)I zAU3{6>Fm>o|Dl)8YZR8fXocd6Y?l2oE?Xnraxi>Fh4+NiZSEkhFILu;5BP9}pK-PA z+BAsh!hdqW7HmwJulqUBja8IitxRq3BQ)^**byTARb32Wg{Qvh^RsZu1u9(P`Gey9}yr7h0UN`>yjh^K0@)qZP8T zpJ!Xww67Myl080%GbvYYpg2t|)C3VV;@ra;i}S!wOb#GnZy1-Lbdd#fGWaW`QA3s}{M;Ax!DXRQp>V}I&wNn^Rr$lOD_PsuFJ6C;i!%__G z?}2y27InY3MIQuDnUm@0W#6fAa8rxlain<=hQ_bV;zo(s0G$dYCm%JN=+#trgx)xqcLYE|amRGy}HZ-hyfR7B&IxzO*Dse0>r zrxkI0EFHO{Uc{WnC5cwK^eB7lGzKw@VFK3(OvukBwuCNWBJ#p0TojZ+VQTrLt8BNM zQ0njFd`x9^pVsL#BK@TB$!!*HJrW7RD@_|YGiEh7$gtQSS%Uneq@dc0;Jpjp7sO=C zgr9tr_{gWVa9tIF(}9yYcl;u*g5qn5hY{Lg_8v`jWJ?9zVdu!u5T$st5GH@~+A!?P zxR6LlVT$G)vPDHodu&Qikjc_ZbNG*jppCywj4j?Uu)4$WChv47rA^XwuHjqj(hOz$ z2BY5`u<}jCA1U+OBUfYS#9SpUI6i-{4Jy1|VwSLe$_^YVm?l!{G&>w{^D01*32`UV z&&dyP>Ni~23zqM6>D0RI;wmalKA^XA$A#x^4RRuMch+cOe)nf!os#20R>jAe@AnGD zSL(~{Sw~T+&dVo$CR~~|8WMQEeMZ~Y2uTX6ZmFt)Sr#Vys{PTZt{aaM^mC|Y?{{F6 zWyK#V#3%TolG?38W|gOfb=nt>>{{B1bz0i$`js~% zP1-k^n(S2e!F9^td_>?0N*TItXP@)cKOu^6L)t|~YD^$+9Gq{}&@Js4XgH;0*S;5j z4x|anTfmaNK!ey>k<%)Ln6SrrF~a`WJ**RB8kRV9 zORS!=m^zVRy4v2mdi5pi;xJpclmwsDW^@E&+);Duy<_~AtEqOIdXfmuk@n8@gr7rC zJzNi@AaCs&xtov=ABav?I1*h|Asw_6G2Sf;%|3mD%;Ki)9S;$t%+ zR6E5vYDM?y6+~K4zb4j04N%Rx!=}7d!4r&o;AVS!U=ar}`!PBqP zVx?>=lGvp^2^g*PBw2M*B*j$7C7({3*YrPX7oqcXAGSxx#nJd*B*U~KD}S7Rzv`ar zUZrLpArgW3Xy4KI5fd5rgPgC(=YoZDgmIm z(t^UE3EQwg>rubkub~xp5Rg;!hLxI>yvmv1Z`|8!E_7VvnS@36_Wq%SHq1a4d{>e$ zi^6tZ5LlV;1Xn{D0EH3u6Fny({~-kyD#+2CGMBaxFJMq?^%&`BU6jIBXM0|4ndECC(fNvrPKM7rtvYtRWKS+_vlY7Hvk@Vm>YDVeS{K z`YaI#w_w@KJ9g`fWp)L3@nf-cAKY`O70T1rS^TYF=T#RJ-_Z5VegkiD10ok!+-<4w z-Po(Eyf$1(UAtTmxFxeTVW-j7WCx(TyzgbZH zcfLir1b!!z!h%SQw8DO&xZ%eHiDn&{{N0m>@j&Q*TNh&ye&p=_vo7bF9MMx&jq1M86Uj8qbM2qne4%2;n{A6R$&7}CixrFAQKGnEthmlkq*+SD?HreI zkc|^BL`vseUy0z+?EGW}#CGA~DMi}wPFs8&$t?j4K3coC@;7)y?+1i0@RXnbCiqE5 z{7^6z6~As?rqZTpBytmuT6Y3Z&{SmSBX@e8bt_?`U0x@-^^SODOI%8)B(@d4pDo{U z4V4n|(~fA&$2-w}v!zZIF9`f;s*(L7G1o5yO?ma}(B!u?tv}&s(S2F?Fo$V)S#b~I zzaM|Bp19ubi&@Pprw~(LoPJEtcK$6;P!B&p!=4&ha zTQqW1Eosk}T7SdnWS-zM>M7I{(1tCKts>zLz0yi6_g&6IW0b(VY{CAs%1 zv{5wAKEdtS-q#U62HuVuI@O=LTdZ@h8{gF1*G`j?;^&Dn9Jzm{U3dJFwr{p));HYp$WnWqu}J#BE({DAF+aZNkqS_8`<_>!# zynObhTmSZ(+K8Dmi*1yrTYq)@z~D<-uK5C^#YOgJPN9|kfmZMrC0@VG8l4Zh7b>uD z=GpcbFzwQk$IzYrX!STSrZkp>Hz~!hs6yw&DJbXo=)5{VTk+2rNtLuC)XnJ+^m)q8 z#fkfQw+UO+IG_nR!^}HdYGe_rO2}MEV7qrhD@-i5)Z!w{CS&{lax=$PqP#Ix+c3?I zyg`Z(UccCQ@dgTy3do1_^yNh_6>o6avQn>a5o5fgDzwKc?>&Y;MyxeU3|fL>IK2Hi z&WlRui5Sls^a)9IH3UmUVZ6hWB73W`-hN+1%a6r&3MUVZP|B`5ZKF_jav7XRl<}EG zdfAtU@l)<*l8W>`nQ6=5B~!uo{LRFV#9wn-TnPVCMpPPh+>uRls99=Y&Q=QGk@GW% zSU5NgwYF&&9S$(;&-sluU<^g@_%Ml#7Cw;z>qUwP#b(9VChbZ}x9m#tklBj-g<}x$ zBg6Yi#?!mxuBp1Th6V4iL*3hkTevFB4({bxGAaMa(XG{*Y)!^#`-8rJkj9H;Dmyjt zYNF1BHA9P7YG03pGdHKhvyB0@a&ef8%G?gkW(fXLzvdgtIk4ph#Wmf&Lix!2XNMnR zlti2c`j;t!xO~pf6IdhB_^+tR= z)9)^N@sBU;7VsrAlsknKB-*KrnkcA3Hmm&;G(Y!eH~Ny&jpbb#wG=Q3$j#m*6(9M|ugLVJg%qWH z*l76N9m3)CD1`EW#<4D9+07m>ou?c0Igit~8zWOS&n`&L^S-l`zM5EAbxGnEi)m9w zRJkPmgZ2@D^)y$L>;0PzCv=~wl7(7KFP5&7m2RgucNDzqaoqO+>aNv3`2tUy+W-tH zzf8P2XvNDwf3*fQo{F_k1W;AW!Z9Qxib*VU_vI005Odtl?@ltY)GSAR3)KWFAjg|x z#!t<5xR|l0g1;CmAH-ocg2iwNPdgOc{^0*S2>$Il5z>@TO7)x|82mOxaBAKMjn;y* z`}S+P5S^T=qV!Be8I-Sd_I1bHW~=vOzS%dagX$A`GojTB7 z0p>6{w(w-Wmcfwb5>u}AVYl=wk<2f*y8n1|H1IBhvb>dU$uLb0O+Ng%Lru8y{fU|p zy{wuYD)LG8kGuh@4F)k}Ia#d7qgZ+zQxoemMaa$Znva1S$xkaIqr+EbVfn(riU%UkQlLZTM41@Gmc`X}`|%dLdcXnHye%tAKnHBWM} z^K$`8cN}8lif5(55h0dnV+j`mqRLTO%-$B9!4`OL7vA34+b!=XAp@LyFV&Ur4=yI% zj)rg;ZUKhg$;j8I8U_&SBVRM_;cLx%JF49tv^(;xd1)3CLS3=vz zHC2u~8UfqTWhQ!0|K`68F}>d542U@H!IZ?bhf*2A;c)yG15+8XWjna(_O)iOLH~my={LxAG4p7;fHEhaC%X94|N{ z@8;LFsxgR@h_VuCFyREt0eZ_f{?ebS@+17Wt<%mF+(5_AuzWYp>e$9^(;Wz?ZH}Z~XTe3m=kDpaVf?gAQIrEn^=$-F8~!Y| z4Azn+w`Gw?SD(;H@c9(Uk3!8z5xvR?-5oge#tCL!n>;0Z3-2|hdY|dpxpRJAcy65S z*!8u)D#~`vgW@R8wyKglS99P4Y%x%~%(=rZot1^om-NBUkuCy%Pu7hM!i;k&b$_?k z{aF^%2$&X-nqC&k8{)gv?HW*2Kvl<4Pr# z*RaO;-qldSd%g^+&wI*n<@A1%^Mm&-8Fe;n>9 z%j0*NV}?d&B5Z`h=p9#>a5XxtUiZ;wnP8>CBCj7RY*?1Rh=`VC2kredg)_Wg$X!oc zClxU(DFu3REhqx{^U>PMA(I_#oPGq5+lIfs_Rk4gIn zs!ehjepKtsz9;)|t?985%^&NQIunz`EqY11vonqJz>D%s3|T zM{VrDK2pplR6$lh5C~+53p;!;dHPjNv-C9%hjYTlKrp8>^aPF1rxab?30A=Y+6$O9 zh>OAEo5FX4)b( zjk{cA?AxyI!2jAu^%FnBu(9XAYaH~WW}k8Tg5+-%WjjBW5)mg{Oh?T9#Nf@Q9oZhP ziR|^Y+?763l&T&q6GUfR{qD?~eO5BSf!6b0QL>EnTTUiHe}Xi)_?dg9vD!$F+1_GJ z$7;w==|yw_7Vj)S3Bt!7!XN~E2abz7NxN(S$`V;ka7a98DiqJ%{UM=bxxa>`#4zin zrGz(ryCe9t^3EAp&f9TN?MMV$w3TK#S2bi&{`Nx85}wUo0nO|Qe_6cG?sGUxsHM{^ zW-G0Jv@UcXF+7!GPL%lj;vYft_ z8|3d&R;60QDXA##;Iz#WQui?7r&)KP?%*HrJ=}|A|1!H^8k%N(D=8NF^No8X&{k(o zCon6uF^ui8q#-QiV}z>PU(I$9&VXs_E$%{G$}hNlSi=HqETe)CSjGieaNS}&mO?u_ zUYKSDSE!Le`jnjuc2#JcdBz8jnIR zP*dR-gQyupOMT6OA7OsY@ZRY3e?MbyTS)eWyj-Bs$A+o08C!zlCIpTc!BLpkYCG>6 zR0Cb}>T=(JrQ>xd^S(PSltOezRqynl`z5dHne2!i5^I>z6E+95&G6Ba6#~7b$>Z0x z7$fSLX<7+${0o$C30Qm?nE?sGX&nOKDwaBK>@QEg(rV~fAi z1WoR^cv6ty^b?T=LFgnTv}y;0jGJsyl6=36S#^^B@C%Di`ESNZhoFPCRAJq}KLV?Q_Z|krxZJT^ zZ(u+*VPu%_hktzxYn*ItE2+$->HoWGhK z&50(DL@hpG=(`wMO>cv@$$v=MJB!i(Ko{)(xdan6jm7?VR;s5=i{kO?gIsat#c0lV zc(R7KJEh|9)PGY;)%{y_SbkFNACZw=wQBA@|9LNGmi@Y@b<1-7dywbL8Og?tp+@Il zs@SSS!PuC$*DqwZiNls2E3$;TiMqMAhL$9@hP3ptRn>yA6Z^TtmUAk5jA#GJ`U}IC z3+|eJZk9Lya@Sl=Cf9P;kHVgWx*x3x-`D?693E1Y-qQZ43taFbTz1kN|E;oD`JX84 zRqiPP0-OWCoVMkzi@?`y(h|ouMJD@9u}l^;Op5{KuB)(=u~l(gu`xiIbC!d$XMFQ* z=gHIDtZo@xsuO`XfQjF{2z6Pk3Da{4F>MWbOaL(g1TZ^=GFDL+s7UK2H>*na|7urt z$Q4^v_W$&ixZdnIv}Rp#*JMp|*XY-9vs(R@B7DzdWrY3owM$`j!JGga)wZLlX` z)m=Scu~KZU+}?{5BzIW*HFa2;@m}t~YVYz{>8PW+m$<5H5vE^;-cjdGcrbUT<%Sc= zR{%Z(YNa~~)QqP;bNE0R*VfPh7}@|zvHK1f!&O)b)T8P!o}2ac3*bGsGS?d%>So~5 z0}~*E|GDiy*J%Ly13a&YZ4GZsfrq*l4y%((K9>Tol(>Fu2D~@vMfkp)ZN6CdIS{P9J{|f(ith8opC`3;CKWmgkfVbZZ#xfzd_?5a| zAhcBcNF6SH>7^Jh_RkO=N+kGSM6}Ws_WFe&+%=nRDX+Q1crmqkOSRmrtlgEPZS!qy zPq##EPp2p&Kv0=m?27VlfrDJYJ|nNSB@CZ{GFR8GIKbOL^s9DN_M)RoxoZTbxLNIZ z%Ur|O%mor_{$YhFHfF?2ict3gc=-Zwpd+BbBY&=Krb}TD{1b@$Ua+kphh4_-5JxFD zD>`49>kynNp)N$X%yGzDhfo*QyUg)7r7Yoc0LW9F;|Zw7cPQPVXwF#sFEXxLFBpl=gOSf9}@i4wov*?e%Lun0C&!d0t2W z9;$fC7{>b?Z)>>Vr?gjeXkR}Hyszf3w5MTSu8Ad0xO`bfjB=DZ+{{CAP2MxAOZc7) za7)YSoiOk{Sf{myp9{!gXoQ>9R)pGE{*Ho$371T>O7ceilFZi7;O@p20A|vzx%99s zVLCUNh*^%Up_X6baPzN?g=7HYYJP+W23VXu!43|!5D()u^ zYtIAloX;G#oa~ry1KWu+E%}wXel!PO)dxT>ATrlhWICY>gyLg#uB-D|KaizPrfW-V zw*aDj{vi-ZSHlfk!>njc{R1Gcfjj^gw}ASAdRUgZW_pyk4hN9j*CN6}THz!WN$BfkAzwtf zd(-&0eTP1NVqD>Lt`O*o!*Eb1SO$5L%5M#80CT%P$;hTj9YeP6ug7q&l1e#07mMr^ z9A+|fd}3fLqI`P&9vL+=pC(C3+GWR29gJsN>(-r-3{!{IQ%DgJZL)%Su$#%4hVsPt zimH4c!+bm-hPu`A66aSZRjj_yljfV;HJ#(m_Q0p~BtKga{uxx?;_Wt56-(+qxaE#w z>0?B5CO6*QFBG9zO%#FqaC`War=K^;)I-B3Of9H3sG@W8>7CS4ZVE}NTEt~JhE5$) zmCSxWLaXkOPl0OA8+b(0DhDZKU^i!)+kSpb69My}^sUvR@hZq=2ID)^CiK$PxF&Vd zhP1S7G03Is^!S@@Ol0FdL1!H@E0+s1pOVCD-l<}$rcZanOpu+oCo~s9dX8+X5TY$; zy-NG-o@m5nR*OWwGOZnnAZBHzu0DkM>{AZqY$gS8zsaz*j`C}z*?5r%CBC@CASZSmrWC&@JBNU&?IBRZ+ z7ro$8>9l^5ktpJik2{6A?Q-;TPh`lpR`l}gj-PZAm>#sqKfTNd(w>u%+QWIFH?Gj@ zo^~Z3&==-#GrVg+pETw+iJG725^%j&|Wr*&Xfi zG8tVAeXJJ}q-t-ir6oO0vN+-*qY1Nf%44SgK&HR<RRB;C|ZLIaeHwr5EvqC|vtps4?9VnM$r-q{!N7P`LT z=Gd|hDqpr4rhqgbQT4aDRVZ&?pYZ1KsZebU<3Ra-kEKfy-W*P1&&d~652P?{4PW=x zIGAvBAn@7YC5`MEE0)O`7Tz~+exwj>nz*l*T-SFp7jzimHjjnX`7R^pnf>;2x*J~5 z+y487uGMf6e*4!+$tEL_^RMC`td{Bmv%bI?Ve@9IZr;8h_6$0n? zHRH`vJg4T;aJ-F&c;Kyx=-2E&Fs&~;_T2VH#jV#mIClIV_aq;EV5(YeG4Vma7{DaT zS6f@KZ?re*_4wADTb8DXyD41t_H~J@ar9Ew)HQ4FK^%_o1^Tg(KbSH@zUrt8g=ny2+lzL{7wKX2D2w|O0pTz#=4_dp+ z^Hi;`T`fWx8wW&|Ii!u2%<_#d3EMYfqms3m!@sHps#bBBvX>A=!^`Ynj%P@-bO-FU zYNI!Z2puhZ-&=b zwu+}1M0)FP?c(>1Y;%5NQ)ZfwYqo!Sc#y~Fo7?EiLM~KI7=hWq6-h;EE2pS8rStWZ z-{DvOt{_ju`I)#a_OMp@|2d|wrebo+4}nZ2e8fXNxe(A z63J)k$BA32M60!$mi8veDWU49CDddJ2K(lv>1O>qTa0x3F61g6ChRJns0!yG1i zp{mP3N-VT(o;2@zRkm#H&7ts>auGM#&K19mn+VOz1qMDDh@z6i9BkjgzS}n7l}loW zLLm?wgks))g@LVui83{bzIO*h;ZHN7qV|H>`Lj|QI$b*{a$Nm#`Z4|Rx?HQ}y!U{K zC3{b3_ro_RUZ7xQ%*zkJzYaLdO&4ooK~Q+38Fy3ToQLOdMR--yglg>i+4%7&GY2P6 z9Qy7kp=*WG%bcy;vF-3vQiSd)yzj))XRA?;5C<|0Mu||&r{>tsQh2Nh>d~^XRfW%@ zVc9vpjoDpSp;=*6xBISbN7m5?H(PzErnPtEF++UYYY#2i;;){n@D|od!r=>Cv57%-1Ub9t{JNcr_wD(8m#uQ zH~A!B;_ZEG_eaZqXM|80Q(q;Eq=wab%N00d@q^exiLBip*I@tQQ+QA_yZ6{kzqrrv z_ae!Vw&OOw`0IFG#8)&6iBBxv3dM@$&U46XCpq_8ypqr(NnexnG`~gNp5zN5dnnRm zSc~%dWsLs}?qFbC!sQij&VKuLIV$sE|DqgXtX>7@6o_P4x8rHZuAsmF$n#6HAB7(# z@#l!Cy>4(m##qGnksjLNmTq2|?xTRohT8YfRZ4Uu10UwB)axR|aLI=-5_JfTSs(oL zjE(!Dp0?#b(imp5f+OjN*z7~=1U3p7ljERSV-t$JSEh#Upewfm;;_*Wt+Ae^m!1%% z;PRs0-aOIc-#@V}GD0T$Ja#?eJ~M3> zIJCs;5fd_Fd{trQGsSpEZN8|e!s-5L3XG=PgsWu0*KZ<vcoo0xz7 zq{S&vqT*oNQJ^B{8I0Ny>5#zKY*5@VAiw<|YF}R%xag|;RcNBbfZ5a9Z0 za5O*sBhOgMR2fG7O{W732ceEOjC?QcE^pZd#mDe76^CIWmIz*@!~HGD&JiDJ2T70= zn0>*x{MnrXwSPDK32AY%Mj+vk{UUvN^<)zPv>|H+P45jc?Ij-6mlOtlbb5J)yB zcpcWPOp;0TmOY?pA#79@njcxI{!_F0t9iGSw&{4*;t20XrNRxP+uUbHa~aAogbn>j zE3}KtZ43ug^Xi$aebw@xQP%pFMPWpqdd3})dd{1jZV&Dv&)@S{l@wm`;Y8drCbAZl zFgk~;f_Jrbyp1*{g>Z;G~m{1-(;wL3~3RBrxUm9&`jDcK7WI8adPlhSQ0pNFBB_3 zZwEs;N}0HHk&{=WsWSARxeQQUf8Z4=9bY~nB8{rwG3%?}VYoN58!*2GnRTXCl8o=) z+1dlAnQ%P41z)v%4mRAF&9v7h3`|u`C-C_U;y2M1TQ2k)(ssz;ztg-1@_PzeW^b@t zqwVFL)-3QgbdA#(mTz3>A)y)mwegI~DjA*X^!~v+UOg%*?)u zv46l?j{tT|h7s-itYo#^VaFkh z1Fl#{{k!JNM`hisxLx9W;R7wJ2C_<${kg=;c?g-xIiF4mRQRNJLyAJ_81QAvps}L+ zSW^;I-#M%OywGzrzK=*w#U)f3x&JhL59t#0528VMgHa;P6UFT!gAsoZo3XZJYAO3HGCXS?pENi&95opGiNBz9?ZS z#Xd<2+2?0=xD3DFYrY|Cq7U!z5Re9cg?CZ+2X1BLpl^`quXkz(iRluz z)8l%hc16Npa zugUbaFDtm=70RO!=X{)*{CL__(pr)u&U(Vaar+LGz8D*OBK+6L%Y@dPw7IByYK-ld zGtoY`?Y&T_bZO{^!1khpz(Ztp7gjtW7>|#?;aa;a$iH`Io9k}mf-q~4N zNSQln@uj^nQ_T-OXE}cOdHFBJkesnNN77LrqZ^7E{nK3usGa)nA{#DM`z9b8faKs( z@tfdMeGG8bfPiE*)gT$<(TO?E(OAhJh9c#&!TSc^>1Euy8KeWoO|rq%WPSv%5!=gr zmO8s-Ac}I_c0o502AOkvm1wL0Mn3UTRNDXEPTVX@Sytvq0tCz~hcG1PqZ*xfyM;@& ztJ(J1EEBlsWos-PIubo|=#+ zwqP*z2*sL+_b#TR2B4E(=Er?WgIp zqW_t}KriEgM=)1%K{*tOb`%31tf=Q5itO^zgv{iBQiIg3hJd9up)&kx09{UGfGvQk z_IzBb;lp2mE*WKfK(i4bo48a5!VEGBgE5YwL+nSS$6bJ8x>2#+_7dbBdt3Y>8SG(c z4zNiBgN&OXARP=col(KyeZ&INZ@y{}_I(g86|#8nIn{D9n7S1sI+5hM$<_+TRTFZJ zLp=#xtBnC98(h*!H-zXv+tJ4sop`M!dqs>(bz`alx$fG~Yfwo7ijeT+`{x*q|D5CU zk^~M#dz$S=7(#5eQ-fHLEH)g3fCph9K)n7{36RKB=;%a4XF!1X{U`s90b$meWci6p zrCxUs1GW&YleT1y##%(!S^fXds77N|PAEhtZm>ot0)v_W5U_zk%@*J>*6wOK=I-jU zjP`3ZL%-)R-y6K?dEXDSY_~wU@*jo}(~Cg#qWkyq!1@P=^3jQ%0Jf?Cv_(bH00%Q= zph7FEA-M`+4Wna5aG&SVe?S5cuJO^!R7V34od)E)>i?o~?yCWDF?1QhD-Oq{BGxPd z?F0hvDnV&L2EA!Yr>Z0k_P$z5@>44LADuu*#SfX)2IL(X!(_Z zkh)~Apm@j_WGbHZncaZeX#vLzD<@h~;v5aH(ZHjC6M0AwIRg^eqOn9=G$9U)N0&+r zBGl<}H^4gIOd=W(xw{}-sVs~Xioz#TONSv@AAdE7!{kW$w`8zXGzQ*kbUZHAoS&(_ zAK-Mx?gG&2XQ$IKz*2gVxDZLKBwxzqZ17+Kvp9!DGT;WY?MSdxdU@Jt2$=fcjR^Js zVPbFrCXcH1AHtHsp-qkd+=>yMNWXF`&2TH327W&z_fO}Bm_nk-ehfJD7RY~y-NZ!+ zX!hU4D1a@{)_~NLapVXEDl%RI;y5V)Ma2TjQ`|HmgB4r1;vD^-qruc3?*M0TiE;FM zC4#9TG#U^w^GI;0dkQX9A*UP%He*N%Wg&EnpC&}AFO4la@pmtNYC8}VG8Zp3>x5M* zk9R(z6`XR&5~&nGSnM>S&zCGub-Ed398kP8AQ=cp1t1Pz3rz^-7B((bDL`+uj?sx4 zBJ?r}?Er}-iUMo~&vZqOsPs08RgL+XwjdF~p@hgjxN+Cw^)WzuFf7yLmwNl@@>sI~ind|A_#D3?dr9 zz_Wb-4hos0v9f|x7S*=0!Em$`|GRzrQUDt3PfXU>*F1#5#ic4k1&Ye51W+THhD-H5 zdV}^&`M&4UZ@ zD-a6Mx~qT&7fbczz4sHRf_8vFGxW)wrCc}xc$TL}OPfPmvX0H$1&fjIu$ zB!ev`qFzZ1ex-@G}cS1JV%kVlieMVV#l2RY|fIO_n2N>Cev zOx+fc#8ns!GUQ3%LFHAWo(F&~kCZti`01tp179b-jJFUHgAAA$a9xcBK>42lcadTb zMP`!&L@-UrAk#lB6OCmQrfjkWG#@_@|M$qg571z^172JaR!4sgm;f3FFV!MY)Fuvt zOq(y|5TZ5;p!Bt=1;I)a;?g1U&pp5ZpoBu=3Xn29Eq+cLfeQ0USyWr4E5Z48*01gaFMI2NV!UR44|SKxoV%#Q%Rr z>7lBSn18zrfEU4J_>UPB7SIs&LIF$zf^zf1gcY-j2Sy0RC>^4)z)(^g*dQo?NoY$u zodE0%pSS{DfWi+dhICheORb4}g0}b)D>?yS?*!nWOsE2VmQ@f`>^lN?00)Lj6-T_Z;))^$p8NX#n&c+ridyU#_+??=xi!EZWJ&ymlQ*> z_a4Awlyx+CA4IynAE_Va3SfJ%0zfAO{W@syn0%O02EolR?wxht3lKi|52WotSA(^! zQnk7bU=AML`~m576Cw)sW?AM2hdL72bznirQ7kx|A*mX`@Jkj%;Aw5Zd8y3wGWW1R z{(M%4Sisv!aU`8da|GMy0euQuAb`REOAX0SzULc@ea?IWE-Equnj*^1PUFhn`6$jkbfE~#4Kn`=CTw!H(m z9-qaQ^3AI5(|YuybUOT71pe9X>kcjr_J?_389V9P$Bo~N&f_?g_N-V>?QQQ>X1zV{ ziHv_+h#hxY`Lv!a9?qgsvAh3$A~6i_17C-KecVMgk~#fU$wD6%Rt#(q^plm`DDnjq zo&1I+A4wZAG&~>XGrx`$b@#oLGUVhKVNLZXd^oG$F2bzylOHj#`&@pw81+K{&L*bV zMP33=I6aI`M0RrErw12CH_mcu&=qHNms{_!_rMlfe4}Lc8!tC0*PN||kX6nl>mG-f zS;50e8L3RdbA}IMkqk}u1E@tT;q(?4ifE}=`rDeB&>>!)Fm-gtK+tgUAUo+t7f?LG zNtl^XmQa6r_A%WYr!A$95kb7qSR>LUtRB05*tfj(NXZwGR>|>^alaU+L?xw9&xb~j6>HP6 z)UcEO!U4)FcbxFvUqRpFP~|@mYB)BTZ+RY_-aMp|Q{HXJ=ZufAy%$;cUhv*ZjfMF@ zs%#kK}DwBv% z)-&6)GN14jc{WHY3K5)CFd&LtQlDfhww9BE+YAo>>_#WHz=V_l`z;gK_UMVxB6AUn z$%pQX8u7aJIWg~*01*lN4s(EqVq45Fx$iN*WL{#li(Nof!x%=xFXS(fUwu1VI@zJg zdf$eFj~J2uU=*JPRsAB{UtF%*F*8p54hN5#>`^Oq*GHOtIj2(1gBY^^`NsJAoR{c^ zts-)ms7^uyivzO^St{srz(#guvDj-}zq{L`^*;980JF?F5l^K2_~==n?jpi))N0soXR;l*Eg-&P%v{E!XNc$Gr8v!Ct|NF=Qc6 zAL*pGnAIS{hJxbsa~eF)f?`9bMEMbQQ=P9*lq-JZF*Y5`IU>-}Y8NE%3O?~&t%q-{ ztGMs47Vn08)F1WgiLv@gh>k^%Lv=|1o>9$-6ouRd$Mj4eIwx}QUCuM^Q~>|(Q3=@- zun9t`=}rXqIt9KL`paqmr_@ks;^FP(>MC_|uL11Z@ z^t}6b$`r%LC{82i#xQ;{NSB^Bfu|IfN~QF5SDa%>HYS%%y^By|KXY-(-lRe)jzfg^pU_rSyL)yYg_T`u0zrrtCYDb*y7-voN+$2+10fBAOZd zHe-x^S`cHILPOcIL{f+sMM{W~C1i~((TpXMvWxT^^(x$paX zo$Jgs=X~ek9`&8%)fyU=2s-qt%U^WsOXW_W3~wj&T|Xt-j#Y(Y<#vivN$}P4L8HZA zC@!gvojdfxW?A*jZrW`2VT~!t+ex+hBZ*nQXC8ZD@~R9(OT_LP7<%lS$qQ#ZLj9t^ zWZ7&MxKcYb-#D8i$k(^&wBfJ$>DC`YPzr4F1aNALOez#46wHqc5ZOzd_*{*d?|Br& zwDlKGPlV09Je>Jhvd1s2YR!ODb(B7Mr=7?CxVTC(kM17df`lj8y{ETq-6vk6wOFl4Hu*QqW37mp}UR)kKe$I{CoF3}^FAE9bYBQ- z_ue{188hj8r*T8 zL$&sZAI<{vN%5hsgTN)(HZL%=Z6LsfVT7)s2o_G{0KXTvR!&C*qKk+@Xj%I8Rh0)h zX+RD3iJU8rE%sJc925<3oZ08pDbkpQJ_MHAdtl%`ZK`!kYA%~kMhZE_3^q{&g8_`I z$eSS(Ks|*|CaPeC)rupsZ?^Tz3|I@^A8Cg!qwr#M(glyeXN}|GR{G??Dik@J1M@{z z!A&fg!j8FYi+Y{Sipf0zq|uvs?(=!WPJTTpL=L}s@pU!}CRYHs=++c}Z{f6o4iHA1 z-~^DsVFWnz3-JkR;FXPeL^LTAo+vcwrSIF#!LHu^(@*&%+ioU$~Vm zyF4Go96g>RL@TPv02fl9Zz&JPe~6Edr8M4%r6hlN*-?v|b`#8X)IMjVnp37LY<2mZ za*ni$vLq+}L8rZ`>XYlU)hCx`E4HNGTI(mt>b#Qw@PpDTozB=iZfq%+8D{rJze^+v z6?C?j=9i8Kr6n`lm>Z{h@=loQB!yRHmoO;1!8v?Z}<-m1bT5q)Uo`is3#OH6_6rBPb6&OmYorATHb#c8)VFGyAC_J4x@VY zJ{kZFwmiEk&bR-@*$AszkA#E4_|=59q}L*?%TVoz3`9f*SPtbYtN%x}>w&@v=2gAv!f;TQBsh}ssO=GDBy6R>7DN*TX+|SIDJh>inMVW4h^*^eXfZGKmls}-Z=~ow#xq%iz7}xkzB_r+GWzS+ z?+LDyuH2!?`;W8RM!#>r0C3%SXJ8w>^0r?P3NxQRG=k6+Bm-LgKGe5BZ7ms>5^ zEwlTwV7Y&&(DFEde7~MQKR6=tAElUkRTVokI9RjgPGr@z{cx z+6nyl^F%L)JmL2G*@sIqd~-(eb<%E^msr$lGxg8RL+k3F3|lFWT~;C`5~1V@yq)82jjjBLYaZ9LpQj5-Ucln{orU7HT6}ba>7D^C$dH| z#e>Ky&X^#lbk>|{z;*c(>6#{X)VVywQ$21~^>}(=;9P09;403@LqgSO2Z9y#U2vA@ zV9nW>@5+2B^3jUkl-sqdn7bICb;Z2jY4ne8leik1g)UD=!I}wh+S1#6sgPSgYtm`? z%#F`oDy()9;(|8};LX5mkc;ch#q2#xnROlTdmfTHTGxw@wx?BVsV({5XiU)_$Fa3> zrxpqa>z#Nzl-01Rw{dBe>Z?b~ykZ?JQ?wx7v(#Rj`d#aOOt}y4ZTDHxBV}p zk=LLgj|yNdLnP~+!u7zgtHg+xsjY1%s%E%TpV6-zvnv)Q8+2`8)dAp~EhAmN9t(bT zK7CdbnAw^l2IrvDd+~|ZbPT!q+-~FqFvmEgLNrGH1p?qX?a)LvU_$^PaUYSZ-hRhC znZbVJxGshyc1M)5wVJtQnPA8KT~9@KlFM;+jQ#OYjmU`uy9=P3&JWvK-wN!^1w z&T>zqUOk)Vn3JjH&V?2!U799b$ilI+fH|JWww}5`l~x7sE?5*#Q!?>on_LBa=eeRD z$DRP|Vq^God+o8xnVhrNT(5FgkM_u)5#8}9O9*cAx1~pGDi*&TC@#>-=pNUCjfYoW z1T`J9Hb^i2<18Dt5K8>0?7Tho)ljEjIB4=>%#wUu?2|-kBe#PWL$}IYM#NfUgju$U z<#4GI!#&N?1rFAcd{44?*!#1ry*rA|63;PuW$jON#&}r=IoMktXfAg#9t}8t-N^i- z!uqH7^o>L3nXS52EDCz&@>i}61h!t%Wfp>4J4652QjD!{)lY#8p6Rz;x zbt|@P&BaGT?o{Dal-f`pXRYXQ5#!mTYWMoQGZXr^E5rpat)))eKTcIQ2|K6f|3pCl z6R`MHng?L!krJEyYEhupM|#O6Zyt!*w|k=FOTzrwixM0iw`s>A{S|S{3kIaewY%of zl1Qyg%kkm9pp{n-J>@9JjU?jDiEFFKTF$N7c8L1n;iBp{33$5rTCCXa;pDic^Ted< zS7TcY`+oTLB^`Le{;6u{u7Kv7=teHElB6+M>AfLXX^}^Nn1rN%Ca2%Oo$e~+;y?@? z+3~s68(k@kCip>1;euNwi>F*s%@WX?a2LP`LCdA`gkEG*$^nYmI!JUNER&Gq``jYW zZk*OYkvYKP(I1wwP&YAu%5IVt>)qvarlzGy*L~s*y*Lk@a?w45Ydyp@;7pzsxcabk zW!LS6d1BqXoMCYEd315PHg3KzV4|nx5n(~+N?ul#{TD5k)8V(+-n%n5q!%i-mVZyk zl2;kq;^1FA5lkHY*lCM0Dw5FtFuwZ3md8x7V^gcUx^P+Cfsac~l68_}l6ml{?$LEt zf71$Q*4W1{%QkMg#v@VuzS7frr%s0(3=72UDa5C(joptBP%xG=&alf%?b(z?U*L0u zaHT>NmBYrxqn_g{Sb`Gxcn@i>)HOf!YKyTH2)(5e+qOH?qyaOfvN=qp=_ZITl32u_ zernA*snVQaZFkK_n7}kZtRW^5e8QUQr0zh|%F|(om&_C&bi}Q^ zEnLm>Xb5r5*ky89xiaTvkWj({S#gMI<~7#hwv0YMEdK~O6! z-XG-$(%0Wt{wYKJcNq%yQ)XlUf`gzK6l4F(j568KKpf)H^_n%yB zPcajvi%8Iy1RL!46$J#Ck6xq!8PC@1VSBj;iu3D8$e*F2Z7Z7);GmtgK@tl z^2`5E^e_H)jHq~2KoD*}7AE{J*oc9ja1ZguxZ9c9ZnnSW zvCne9zWbH>Cy$_?)Xcrzf*73lQ?>n@ZSa0-zd6wO&4Cf4a|A3Nq<}$r3#XA^snKNHs?F|D~sa{4E9nkMj0o{N3(;bL_k$+!>Vj2d^y_O91UB{%d%d g1$baV`)&By*B}B4PxzT35~&G?vB}99Tbr=`AGo;>O#lD@ literal 0 HcmV?d00001 diff --git a/msautotest/renderers/expected/legend_sizeunits_meters.png b/msautotest/renderers/expected/legend_sizeunits_meters.png new file mode 100644 index 0000000000000000000000000000000000000000..4e32ab4e06fc1ac88b80be691b090a6f365eee80 GIT binary patch literal 12659 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 literal 0 HcmV?d00001 diff --git a/msautotest/renderers/expected/legend_sizeunits_meters.svg b/msautotest/renderers/expected/legend_sizeunits_meters.svg new file mode 100644 index 0000000000..9d7b9e64c9 --- /dev/null +++ b/msautotest/renderers/expected/legend_sizeunits_meters.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/msautotest/renderers/legend_sizeunits_meters.map b/msautotest/renderers/legend_sizeunits_meters.map new file mode 100644 index 0000000000..7ce5f2ba04 --- /dev/null +++ b/msautotest/renderers/legend_sizeunits_meters.map @@ -0,0 +1,247 @@ +# RUN_PARMS: legend_sizeunits_meters.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&mode=legend&map.imagetype=png" > [RESULT_DEMIME] +# RUN_PARMS: legend_sizeunits_meters.cairo.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&mode=legend&map.imagetype=cairopng" > [RESULT_DEMIME] +# RUN_PARMS: legend_sizeunits_meters.svg [MAPSERV] QUERY_STRING="map=[MAPFILE]&mode=legend&map.imagetype=svg" > [RESULT_DEMIME] +# RUN_PARMS: legend_sizeunits_meters.pdf [MAPSERV] QUERY_STRING="map=[MAPFILE]&mode=legend&map.imagetype=pdf" > [RESULT_DEMIME] + +# +# +# legend support. +# +# REQUIRES: OUTPUT=PNG +# +MAP + +STATUS ON +EXTENT 478300 4762880 481650 4765610 +SIZE 150 100 +shapepath "../misc/data" +IMAGETYPE png +fontset "../misc/fonts.lst" +imagecolor 255 200 0 + +symbol + name "circle" + type ellipse + points 1 1 end + filled true +end + +LEGEND + imagecolor 255 255 255 + label + type truetype + color 0 0 0 + font "default" + size 9 + end +END + +LAYER + NAME "points" + TYPE point + STATUS default + + # Legend MapServer 7.0.1 Label SIZE is ignored when using SIZEUNITS meters + # Legend Label is very small + # https://github.com/mapserver/mapserver/pull/5268 + SIZEUNITS meters + + CLASS + NAME "point text+shape" + style + symbol "circle" + size 10 + color 255 0 0 + outlinecolor 0 0 0 + end + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + END + END + CLASS + NAME "point labelpnt+shape" + style + symbol "circle" + size 10 + color 255 0 0 + outlinecolor 0 0 0 + end + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + style + geomtransform "labelpnt" + symbol "circle" + size 5 + color 200 200 200 + outlinecolor 0 0 0 + end + END + END + CLASS + NAME "point labelpnt only" + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + style + geomtransform "labelpnt" + symbol "circle" + size 5 + color 200 200 200 + outlinecolor 0 0 0 + end + END + END + CLASS + NAME "point text only" + LABEL + type truetype + size 9 + color 255 255 255 + outlinecolor 0 0 0 + outlinewidth 1 + font "default" + END + END +END + +LAYER + NAME lines + TYPE line + STATUS default + CLASS + NAME "line text+shape" + COLOR 255 0 0 + OUTLINECOLOR 0 0 0 + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + END + END + CLASS + NAME "line labelpnt+shape" + COLOR 0 255 0 + OUTLINECOLOR 0 0 0 + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + style + geomtransform "labelpnt" + symbol "circle" + size 5 + color 200 200 200 + outlinecolor 0 0 0 + end + END + END + CLASS + NAME "line labelpnt only" + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + style + geomtransform "labelpnt" + symbol "circle" + size 5 + color 200 200 200 + outlinecolor 0 0 0 + end + END + END + CLASS + NAME "line text only" + LABEL + type truetype + size 9 + color 255 255 255 + outlinecolor 0 0 0 + outlinewidth 1 + font "default" + END + END + CLASS + NAME 'line with outline' + STYLE + color '#4186f0' + width 3 + outlinewidth 1 + outlinecolor '#000000' + END + END +END +LAYER + NAME shppoly + TYPE polygon + STATUS default + CLASS + NAME "poly text+shape" + COLOR 255 0 0 + OUTLINECOLOR 0 0 0 + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + END + END + CLASS + NAME "poly labelpnt+shape" + COLOR 0 255 0 + OUTLINECOLOR 0 0 0 + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + style + geomtransform "labelpnt" + symbol "circle" + size 5 + color 200 200 200 + outlinecolor 0 0 0 + end + END + END + CLASS + NAME "poly labelpnt only" + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + style + geomtransform "labelpnt" + symbol "circle" + size 5 + color 200 200 200 + outlinecolor 0 0 0 + end + END + END + CLASS + NAME "poly text only" + LABEL + type truetype + size 9 + color 255 255 255 + outlinecolor 0 0 0 + outlinewidth 1 + font "default" + END + END +END + +END From 349392793f8a3aa172102e89528369d773d85931 Mon Sep 17 00:00:00 2001 From: Sander Jansen Date: Tue, 20 Sep 2016 19:11:48 -0500 Subject: [PATCH 067/221] Fix memory/locking errors on kerneldensity layers (#5330) - Use GDALClose instead of GDALDereference for temporary in-memory datasets - Properly aquire/release GDAL thread locks --- mapraster.c | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/mapraster.c b/mapraster.c index 740b9af30f..e8ac0f939f 100644 --- a/mapraster.c +++ b/mapraster.c @@ -691,8 +691,10 @@ int msDrawRasterLayerLow(mapObj *map, layerObj *layer, imageObj *image, msAcquireLock( TLOCK_GDAL ); hDS = GDALOpenShared( decrypted_path, GA_ReadOnly ); } else { + msAcquireLock( TLOCK_GDAL ); status = msComputeKernelDensityDataset(map, image, layer, &hDS, &kernel_density_cleanup_ptr); if(status != MS_SUCCESS) { + msReleaseLock( TLOCK_GDAL ); final_status = status; goto cleanup; } @@ -702,6 +704,8 @@ int msDrawRasterLayerLow(mapObj *map, layerObj *layer, imageObj *image, /* Set the projection to the map file projection */ if (msLoadProjectionString(&(layer->projection), mapProjStr) != 0) { + GDALClose( hDS ); + msReleaseLock( TLOCK_GDAL ); msSetError(MS_CGIERR, "Unable to set projection on interpolation layer.", "msDrawRasterLayerLow()"); return(MS_FAILURE); } @@ -745,6 +749,7 @@ int msDrawRasterLayerLow(mapObj *map, layerObj *layer, imageObj *image, if( msDrawRasterLoadProjection(layer, hDS, filename, tilesrsindex, tilesrsname) != MS_SUCCESS ) { + GDALClose( hDS ); msReleaseLock( TLOCK_GDAL ); final_status = MS_FAILURE; break; @@ -792,18 +797,31 @@ int msDrawRasterLayerLow(mapObj *map, layerObj *layer, imageObj *image, ** default to keeping open for single data files, and ** to closing for tile indexes */ - - close_connection = msLayerGetProcessingKey( layer, + if(layer->connectiontype == MS_KERNELDENSITY) { + /* + ** Fix issue #5330 + ** The in-memory kernel density heatmap gdal dataset handle (hDS) gets re-used + ** but the associated rasterband cache doesn't get flushed, which causes old data + ** to be rendered instead of the newly generated imagery. To fix, simply close the + ** the handle and prevent further re-use. + ** Note that instead of this workaround, we could explicitely set + ** CLOSE_CONNECTION=ALWAYS on the kerneldensity layer. + */ + GDALClose( hDS ); + } + else { + close_connection = msLayerGetProcessingKey( layer, "CLOSE_CONNECTION" ); - if( close_connection == NULL && layer->tileindex == NULL ) - close_connection = "DEFER"; + if( close_connection == NULL && layer->tileindex == NULL ) + close_connection = "DEFER"; - if( close_connection != NULL - && strcasecmp(close_connection,"DEFER") == 0 ) { - GDALDereferenceDataset( hDS ); - } else { - GDALClose( hDS ); + if( close_connection != NULL + && strcasecmp(close_connection,"DEFER") == 0 ) { + GDALDereferenceDataset( hDS ); + } else { + GDALClose( hDS ); + } } msReleaseLock( TLOCK_GDAL ); } /* next tile */ From d1ad5264f88b32e5851cd1db1b933c31dc63068e Mon Sep 17 00:00:00 2001 From: Astrid Emde Date: Wed, 21 Sep 2016 15:11:14 +0200 Subject: [PATCH 068/221] Add missing mapfile for #5267 --- msautotest/renderers/legend_label_offset.map | 247 +++++++++++++++++++ 1 file changed, 247 insertions(+) create mode 100644 msautotest/renderers/legend_label_offset.map diff --git a/msautotest/renderers/legend_label_offset.map b/msautotest/renderers/legend_label_offset.map new file mode 100644 index 0000000000..5c7c921f57 --- /dev/null +++ b/msautotest/renderers/legend_label_offset.map @@ -0,0 +1,247 @@ +# RUN_PARMS: legend_label_offset.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&mode=legend&map.imagetype=png" > [RESULT_DEMIME] +# RUN_PARMS: legend_label_offset.cairo.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&mode=legend&map.imagetype=cairopng" > [RESULT_DEMIME] +# RUN_PARMS: legend_label_offset.svg [MAPSERV] QUERY_STRING="map=[MAPFILE]&mode=legend&map.imagetype=svg" > [RESULT_DEMIME] +# RUN_PARMS: legend_label_offset.pdf [MAPSERV] QUERY_STRING="map=[MAPFILE]&mode=legend&map.imagetype=pdf" > [RESULT_DEMIME] + +# +# +# legend support. +# +# REQUIRES: OUTPUT=PNG +# +MAP + +STATUS ON +EXTENT 478300 4762880 481650 4765610 +SIZE 150 100 +shapepath "../misc/data" +IMAGETYPE png +fontset "../misc/fonts.lst" +imagecolor 255 200 0 + +symbol + name "circle" + type ellipse + points 1 1 end + filled true +end + +LEGEND + imagecolor 255 255 255 + KEYSIZE 30 30 + KEYSPACING 5 3 + label + type truetype + color 0 0 0 + font "default" + size 9 + # added OFFSET to position the text in relation to the symbol + # -10 text should be shown some pixel up + # https://github.com/mapserver/mapserver/pull/5267 + OFFSET 0 -10 + end +END + +LAYER + NAME "points" + TYPE point + STATUS default + CLASS + NAME "point text+shape" + style + symbol "circle" + size 10 + color 255 0 0 + outlinecolor 0 0 0 + end + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + END + END + CLASS + NAME "point labelpnt+shape" + style + symbol "circle" + size 10 + color 255 0 0 + outlinecolor 0 0 0 + end + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + style + geomtransform "labelpnt" + symbol "circle" + size 5 + color 200 200 200 + outlinecolor 0 0 0 + end + END + END + CLASS + NAME "point labelpnt only" + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + style + geomtransform "labelpnt" + symbol "circle" + size 5 + color 200 200 200 + outlinecolor 0 0 0 + end + END + END + CLASS + NAME "point text only" + LABEL + type truetype + size 9 + color 255 255 255 + outlinecolor 0 0 0 + outlinewidth 1 + font "default" + END + END +END + +LAYER + NAME lines + TYPE line + STATUS default + CLASS + NAME "line text+shape" + COLOR 255 0 0 + OUTLINECOLOR 0 0 0 + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + END + END + CLASS + NAME "line labelpnt+shape" + COLOR 0 255 0 + OUTLINECOLOR 0 0 0 + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + style + geomtransform "labelpnt" + symbol "circle" + size 5 + color 200 200 200 + outlinecolor 0 0 0 + end + END + END + CLASS + NAME "line labelpnt only" + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + style + geomtransform "labelpnt" + symbol "circle" + size 5 + color 200 200 200 + outlinecolor 0 0 0 + end + END + END + CLASS + NAME "line text only" + LABEL + type truetype + size 9 + color 255 255 255 + outlinecolor 0 0 0 + outlinewidth 1 + font "default" + END + END + CLASS + NAME 'line with outline' + STYLE + color '#4186f0' + width 3 + outlinewidth 1 + outlinecolor '#000000' + END + END +END +LAYER + NAME shppoly + TYPE polygon + STATUS default + CLASS + NAME "poly text+shape" + COLOR 255 0 0 + OUTLINECOLOR 0 0 0 + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + END + END + CLASS + NAME "poly labelpnt+shape" + COLOR 0 255 0 + OUTLINECOLOR 0 0 0 + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + style + geomtransform "labelpnt" + symbol "circle" + size 5 + color 200 200 200 + outlinecolor 0 0 0 + end + END + END + CLASS + NAME "poly labelpnt only" + LABEL + type truetype + size 9 + color 0 0 0 + font "default" + style + geomtransform "labelpnt" + symbol "circle" + size 5 + color 200 200 200 + outlinecolor 0 0 0 + end + END + END + CLASS + NAME "poly text only" + LABEL + type truetype + size 9 + color 255 255 255 + outlinecolor 0 0 0 + outlinewidth 1 + font "default" + END + END +END + +END From 4ea78eb919147924bbf66d426a0bb8000f94c768 Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Wed, 21 Sep 2016 14:57:25 -0300 Subject: [PATCH 069/221] update for 7.0.2 release --- CMakeLists.txt | 2 +- HISTORY.TXT | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3788c1a6f2..1ca64729f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ include(CheckCSourceCompiles) set (MapServer_VERSION_MAJOR 7) set (MapServer_VERSION_MINOR 0) -set (MapServer_VERSION_REVISION 1) +set (MapServer_VERSION_REVISION 2) set (MapServer_VERSION_SUFFIX "") set(TARGET_VERSION_MAJOR ${MapServer_VERSION_MAJOR}) diff --git a/HISTORY.TXT b/HISTORY.TXT index 7ddb075ed4..13d2340487 100644 --- a/HISTORY.TXT +++ b/HISTORY.TXT @@ -8,7 +8,9 @@ next. Developers are strongly encouraged to document their changes and their impacts on the users here. (Please add the most recent changes to the top of the list.) -For a complete change history, please see the Git log comments. +For a complete change history, please see the Git log comments. For more +details about recent point releases, please see the online changelog at: +http://mapserver.org/development/changelog/ 7.0.0 release (2015/07/24) -------------------------- From 6dbbd3b780c1e5f5d42adb9438fc6b8e11a37f0a Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Tue, 4 Oct 2016 11:02:24 +0200 Subject: [PATCH 070/221] Fix timestamp handling in the MSSQL driver (#5334) --- mapmssql2008.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/mapmssql2008.c b/mapmssql2008.c index c01019fe73..859f74d367 100644 --- a/mapmssql2008.c +++ b/mapmssql2008.c @@ -202,6 +202,7 @@ typedef struct ms_MSSQL2008_layer_info_t { char *user_srid; /* zero length = calculate, non-zero means using this value! */ char *index_name; /* hopefully this isn't necessary - but if the optimizer ain't cuttin' it... */ char *sort_spec; /* the sort by specification which should be applied to the generated select statement */ + SQLSMALLINT *itemtypes; /* storing the sql field types for further reference */ msODBCconn * conn; /* Connection to db */ msGeometryParserInfo gpi; /* struct for the geometry parser */ @@ -603,7 +604,7 @@ static int executeSQL(msODBCconn *conn, const char * sql) } /* Get columns name from query results */ -static int columnName(msODBCconn *conn, int index, char *buffer, int bufferLength, layerObj *layer, char pass_field_def) +static int columnName(msODBCconn *conn, int index, char *buffer, int bufferLength, layerObj *layer, char pass_field_def, SQLSMALLINT *itemType) { SQLRETURN rc; @@ -613,6 +614,7 @@ static int columnName(msODBCconn *conn, int index, char *buffer, int bufferLengt SQLULEN columnSize; SQLSMALLINT decimalDigits; SQLSMALLINT nullable; + msMSSQL2008LayerInfo *layerinfo = getMSSQL2008LayerInfo(layer); rc = SQLDescribeCol( conn->hstmt, @@ -631,6 +633,8 @@ static int columnName(msODBCconn *conn, int index, char *buffer, int bufferLengt else strlcpy(buffer, (const char *)columnName, SQL_COLUMN_NAME_MAX_LENGTH + 1); + *itemType = dataType; + if (pass_field_def) { char md_item_name[256]; char gml_width[32], gml_precision[32]; @@ -748,6 +752,7 @@ int msMSSQL2008LayerOpen(layerObj *layer) layerinfo->index_name = NULL; layerinfo->sort_spec = NULL; layerinfo->conn = NULL; + layerinfo->itemtypes = NULL; layerinfo->conn = (msODBCconn *) msConnPoolRequest(layer); @@ -976,11 +981,19 @@ static int prepare_database(layerObj *layer, rectObj rect, char **query_string) char buffer[10000] = ""; for(t = 0; t < layer->numitems; t++) { -#ifdef USE_ICONV + if (layerinfo->itemtypes && (layerinfo->itemtypes[t] == SQL_BINARY || layerinfo->itemtypes[t] == SQL_VARBINARY)) { +#ifdef USE_ICONV + snprintf(buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), "convert(nvarchar(max), convert(varbinary(max),[%s]),2),", layer->items[t]); +#else + snprintf(buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), "convert(varchar(max), convert(varbinary(max),[%s]),2),", layer->items[t]); +#endif + } else { +#ifdef USE_ICONV snprintf(buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), "convert(nvarchar(max), [%s]),", layer->items[t]); #else snprintf(buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), "convert(varchar(max), [%s]),", layer->items[t]); #endif + } } if (layerinfo->geometry_format == MSSQLGEOMETRY_NATIVE) @@ -1202,6 +1215,11 @@ int msMSSQL2008LayerClose(layerObj *layer) layerinfo->geom_table = NULL; } + if(layerinfo->itemtypes) { + msFree(layerinfo->itemtypes); + layerinfo->itemtypes = NULL; + } + setMSSQL2008LayerInfo(layer, NULL); msFree(layerinfo); } @@ -2035,6 +2053,7 @@ int msMSSQL2008LayerGetItems(layerObj *layer) layer->numitems = cols - 1; /* dont include the geometry column */ layer->items = msSmallMalloc(sizeof(char *) * (layer->numitems + 1)); /* +1 in case there is a problem finding goeometry column */ + layerinfo->itemtypes = msSmallMalloc(sizeof(SQLSMALLINT) * (layer->numitems + 1)); /* it will return an error if there is no geometry column found, */ /* so this isnt a problem */ @@ -2048,13 +2067,15 @@ int msMSSQL2008LayerGetItems(layerObj *layer) for(t = 0; t < cols; t++) { char colBuff[256]; + SQLSMALLINT itemType; - columnName(layerinfo->conn, t + 1, colBuff, sizeof(colBuff), layer, pass_field_def); + columnName(layerinfo->conn, t + 1, colBuff, sizeof(colBuff), layer, pass_field_def, &itemType); if(strcmp(colBuff, layerinfo->geom_column) != 0) { /* this isnt the geometry column */ layer->items[item_num] = (char *) msSmallMalloc(strlen(colBuff) + 1); strcpy(layer->items[item_num], colBuff); + layerinfo->itemtypes[item_num] = itemType; item_num++; } else { found_geom = 1; From 51fef1b42017e5392307182621689d453724a4a5 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Wed, 5 Oct 2016 13:54:39 +0200 Subject: [PATCH 071/221] Remove msCleanupOnSignal log messages (#5254) --- mapserv.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mapserv.c b/mapserv.c index 4ba25397c7..5924571d2e 100644 --- a/mapserv.c +++ b/mapserv.c @@ -52,7 +52,9 @@ void msCleanupOnSignal( int nInData ) /* from within the signal handler on Unix. So we force output through */ /* normal stdio functions. */ msIO_installHandlers( NULL, NULL, NULL ); +#ifndef NDEBUG msIO_fprintf( stderr, "In msCleanupOnSignal.\n" ); +#endif msCleanup(); exit(0); } From 4a988fe1a1edf31997a0b84fdedf5756f0775a21 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Wed, 12 Oct 2016 16:42:18 +0200 Subject: [PATCH 072/221] Add c# typemap for setLayerDrawingOrder (#5336) --- mapscript/csharp/csmodule.i | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mapscript/csharp/csmodule.i b/mapscript/csharp/csmodule.i index f680d2ef26..6a9836a7f2 100644 --- a/mapscript/csharp/csmodule.i +++ b/mapscript/csharp/csmodule.i @@ -430,6 +430,12 @@ DllExport void SWIGSTDCALL SWIGRegisterByteArrayCallback_$module(SWIG_CSharpByte %} %typemap(csvarin, excode="") (double pattern[ANY]) %{$excode%} +/* Typemaps for int array */ +%typemap(imtype, out="IntPtr") int *panIndexes "int[]" +%typemap(cstype) int *panIndexes %{int[]%} +%typemap(in) int *panIndexes %{ $1 = ($1_ltype)$input; %} +%typemap(csin) (int *panIndexes) "$csinput" + /* Typemaps for device handle */ %typemap(imtype) (void* device) %{IntPtr%} %typemap(cstype) (void* device) %{IntPtr%} From af77d43d37de16f62b18ec4600d2ed4e3a47751b Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Fri, 14 Oct 2016 18:15:21 -0300 Subject: [PATCH 073/221] update win32 binaries link --- README.WIN32 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.WIN32 b/README.WIN32 index dedf7042c1..a9c8550687 100644 --- a/README.WIN32 +++ b/README.WIN32 @@ -9,7 +9,7 @@ IMPORTANT - READ THIS FIRST: So it is strongly recommended that you use one of the precompiled binaries available on the MapServer site: - http://mapserver.gis.umn.edu/download/current/windows + http://www.mapserver.org/download.html#windows There are precompiled Win32 binaries available for the last stable release and the latest nightly build and they include the most common From b695d28e85f6035d6e28f224461a1d7e75fa84a4 Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Fri, 14 Oct 2016 18:19:32 -0300 Subject: [PATCH 074/221] update copyright --- README | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README b/README index 416d414c90..b8c1926eb0 100644 --- a/README +++ b/README @@ -67,7 +67,8 @@ License :: - Copyright (c) 1996-2007 Regents of the University of Minnesota. + Copyright (c) 2008-2016 Open Source Geospatial Foundation. + Copyright (c) 1996-2008 Regents of the University of Minnesota. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 5b6ccd0f8aa672799351446d6f271015101973bf Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 25 Nov 2016 23:00:56 +0100 Subject: [PATCH 075/221] Filters: add whitespace between and and next part (relates to #5352) A .... results in a ( ..... ANDintersects(....)) mapserver expression. The expression lexer seems to make sense of it though, but this is ugly. --- mapogcfiltercommon.c | 42 +++++++--------- ...r_false_ogr_property_is_equal_and_bbox.xml | 49 +++++++++++++++++++ msautotest/wxs/wfs_filter.map | 4 ++ 3 files changed, 72 insertions(+), 23 deletions(-) create mode 100644 msautotest/wxs/expected/wfs_filter_false_ogr_property_is_equal_and_bbox.xml diff --git a/mapogcfiltercommon.c b/mapogcfiltercommon.c index e21395a62e..74bcb5f0a5 100644 --- a/mapogcfiltercommon.c +++ b/mapogcfiltercommon.c @@ -68,7 +68,7 @@ char *FLTGetIsLikeComparisonCommonExpression(FilterEncodingNode *psFilterNode) /* Use operand with regular expressions. */ /* -------------------------------------------------------------------- */ szBuffer[0] = '\0'; - sprintf(szTmp, "%s", " (\"["); + sprintf(szTmp, "%s", "(\"["); szTmp[4] = '\0'; strlcat(szBuffer, szTmp, bufferSize); @@ -174,9 +174,9 @@ char *FLTGetIsBetweenComparisonCommonExpresssion(FilterEncodingNode *psFilterNod /* -------------------------------------------------------------------- */ /* attribute */ if (bString) - sprintf(szBuffer, "%s", " (\"["); + sprintf(szBuffer, "%s", "(\"["); else - sprintf(szBuffer, "%s", " (["); + sprintf(szBuffer, "%s", "(["); pszExpression = msStringConcatenate(pszExpression, szBuffer); pszExpression = msStringConcatenate(pszExpression, psFilterNode->psLeftNode->pszValue); @@ -288,9 +288,9 @@ char *FLTGetBinaryComparisonCommonExpression(FilterEncodingNode *psFilterNode, l /* attribute */ if (bString) - sprintf(szTmp, "%s", " (\"["); + sprintf(szTmp, "%s", "(\"["); else - sprintf(szTmp, "%s"," (["); + sprintf(szTmp, "%s","(["); pszExpression = msStringConcatenate(pszExpression, szTmp); pszExpression = msStringConcatenate(pszExpression, psFilterNode->psLeftNode->pszValue); @@ -307,19 +307,20 @@ char *FLTGetBinaryComparisonCommonExpression(FilterEncodingNode *psFilterNode, l else sprintf(szTmp, "%s", "="); } else if (strcasecmp(psFilterNode->pszValue, "PropertyIsNotEqualTo") == 0) - sprintf(szTmp, "%s", " != "); + sprintf(szTmp, "%s", "!="); else if (strcasecmp(psFilterNode->pszValue, "PropertyIsLessThan") == 0) - sprintf(szTmp, "%s", " < "); + sprintf(szTmp, "%s", "<"); else if (strcasecmp(psFilterNode->pszValue, "PropertyIsGreaterThan") == 0) - sprintf(szTmp, "%s", " > "); + sprintf(szTmp, "%s", ">"); else if (strcasecmp(psFilterNode->pszValue, "PropertyIsLessThanOrEqualTo") == 0) - sprintf(szTmp, "%s", " <= "); + sprintf(szTmp, "%s", "<="); else if (strcasecmp(psFilterNode->pszValue, "PropertyIsGreaterThanOrEqualTo") == 0) - sprintf(szTmp, "%s", " >= "); + sprintf(szTmp, "%s", ">="); else if (strcasecmp(psFilterNode->pszValue, "PropertyIsLike") == 0) - sprintf(szTmp, "%s", " ~ "); + sprintf(szTmp, "%s", "~"); pszExpression = msStringConcatenate(pszExpression, szTmp); + pszExpression = msStringConcatenate(pszExpression, " "); /* value */ if (bString) { @@ -356,7 +357,6 @@ char *FLTGetLogicalComparisonCommonExpression(FilterEncodingNode *psFilterNode, { char *pszExpression = NULL; char *pszTmp = NULL; - char szBuffer[256]; if (!psFilterNode || !FLTIsLogicalFilterType(psFilterNode->pszValue)) return NULL; @@ -369,17 +369,16 @@ char *FLTGetLogicalComparisonCommonExpression(FilterEncodingNode *psFilterNode, if (!pszTmp) return NULL; - sprintf(szBuffer, "%s", " ("); - pszExpression = msStringConcatenate(pszExpression, szBuffer); + pszExpression = msStringConcatenate(pszExpression, "("); pszExpression = msStringConcatenate(pszExpression, pszTmp); msFree(pszTmp); - sprintf(szBuffer, "%s", " "); - pszExpression = msStringConcatenate(pszExpression, szBuffer); + pszExpression = msStringConcatenate(pszExpression, " "); pszExpression = msStringConcatenate(pszExpression, psFilterNode->pszValue); - sprintf(szBuffer, "%s", " "); + + pszExpression = msStringConcatenate(pszExpression, " "); pszTmp = FLTGetCommonExpression(psFilterNode->psRightNode, lp); if (!pszTmp) { @@ -390,8 +389,7 @@ char *FLTGetLogicalComparisonCommonExpression(FilterEncodingNode *psFilterNode, pszExpression = msStringConcatenate(pszExpression, pszTmp); msFree(pszTmp); - sprintf(szBuffer, "%s", ") "); - pszExpression = msStringConcatenate(pszExpression, szBuffer); + pszExpression = msStringConcatenate(pszExpression, ")"); } /* -------------------------------------------------------------------- */ /* NOT */ @@ -401,14 +399,12 @@ char *FLTGetLogicalComparisonCommonExpression(FilterEncodingNode *psFilterNode, if (!pszTmp) return NULL; - sprintf(szBuffer, "%s", " (NOT "); - pszExpression = msStringConcatenate(pszExpression, szBuffer); + pszExpression = msStringConcatenate(pszExpression, "(NOT "); pszExpression = msStringConcatenate(pszExpression, pszTmp); msFree(pszTmp); - sprintf(szBuffer, "%s", ") "); - pszExpression = msStringConcatenate(pszExpression, szBuffer); + pszExpression = msStringConcatenate(pszExpression, ")"); } return pszExpression; diff --git a/msautotest/wxs/expected/wfs_filter_false_ogr_property_is_equal_and_bbox.xml b/msautotest/wxs/expected/wfs_filter_false_ogr_property_is_equal_and_bbox.xml new file mode 100644 index 0000000000..8dd614faae --- /dev/null +++ b/msautotest/wxs/expected/wfs_filter_false_ogr_property_is_equal_and_bbox.xml @@ -0,0 +1,49 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + -65.816024,44.611049 -65.816024,44.611049 + + + + + + + -65.816024,44.611049 -65.816024,44.611049 + + + + + -65.816024,44.611049 + + + 0.000 + 0.000 + 118 + 2 + CAJOA + Digby + + + + + 12 + 021A12 + 443700 + 654600 + 1203006 + 0 + 2 + + + + diff --git a/msautotest/wxs/wfs_filter.map b/msautotest/wxs/wfs_filter.map index 2abe7b315c..33c3561e6d 100644 --- a/msautotest/wxs/wfs_filter.map +++ b/msautotest/wxs/wfs_filter.map @@ -97,12 +97,16 @@ # Verify 3 AND # RUN_PARMS: wfs_filter_3_and.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=popplace&FILTER=NAMEDigbyNTS50021A12NTS50z021A12" > [RESULT] # + # Verify Not PropertyIsEqualTo # RUN_PARMS: wfs_filter_not_isequalto.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=popplace&FILTER=POP_RANGE4" > [RESULT] # # Verify BBOX Result: Digby # RUN_PARMS: wfs_filter_bbox.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=popplace&FILTER=POINT-65.86,44.56+-65.76,44.68" > [RESULT] # RUN_PARMS: wfs_filter_bbox_no_propertyname.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=popplace&FILTER=-65.86,44.56+-65.76,44.68" > [RESULT] + +# RUN_PARMS: wfs_filter_false_ogr_property_is_equal_and_bbox.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=popplace&FILTER=NAMExxxxxxxREG_CODE12POINT-65.86,44.56+-65.76,44.68" > [RESULT] + # # Verify BBOX Result with epsg in http://www.opengis.net/gml/srs/epsg.xml format: Digby # RUN_PARMS: wfs_filter_bbox_urlepsg.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=popplace&FILTER=POINT272868.16,4938053.09+281261.3,4951109.39" > [RESULT] From 51415f75e5d6abbf162ace0401eaf4ed7552d8a3 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Sun, 27 Nov 2016 21:35:21 +0100 Subject: [PATCH 076/221] Reorder spatial operator arguments for mssql (#5352) --- mapmssql2008.c | 131 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 109 insertions(+), 22 deletions(-) diff --git a/mapmssql2008.c b/mapmssql2008.c index 859f74d367..9be58ba5e5 100644 --- a/mapmssql2008.c +++ b/mapmssql2008.c @@ -2381,7 +2381,10 @@ int process_node(layerObj* layer, expressionObj *filter) break; case ')': filter->native_string = msStringConcatenate(filter->native_string, ")"); - break; + break; + /* argument separator */ + case ',': + break; /* literal tokens */ case MS_TOKEN_LITERAL_BOOLEAN: case MS_TOKEN_LITERAL_NUMBER: @@ -2518,67 +2521,131 @@ int process_node(layerObj* layer, expressionObj *filter) /* spatial comparison tokens */ case MS_TOKEN_COMPARISON_INTERSECTS: + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (!process_node(layer, filter)) + return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; filter->native_string = msStringConcatenate(filter->native_string, ".STIntersects("); - layerinfo->current_node = layerinfo->current_node->next; if (!process_node(layer, filter)) return 0; - filter->native_string = msStringConcatenate(filter->native_string, ")=1"); break; case MS_TOKEN_COMPARISON_DISJOINT: + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (!process_node(layer, filter)) + return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; filter->native_string = msStringConcatenate(filter->native_string, ".STDisjoint("); - layerinfo->current_node = layerinfo->current_node->next; if (!process_node(layer, filter)) return 0; - filter->native_string = msStringConcatenate(filter->native_string, ")=1"); break; case MS_TOKEN_COMPARISON_TOUCHES: + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (!process_node(layer, filter)) + return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; filter->native_string = msStringConcatenate(filter->native_string, ".STTouches("); - layerinfo->current_node = layerinfo->current_node->next; if (!process_node(layer, filter)) return 0; - filter->native_string = msStringConcatenate(filter->native_string, ")=1"); break; case MS_TOKEN_COMPARISON_OVERLAPS: + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (!process_node(layer, filter)) + return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; filter->native_string = msStringConcatenate(filter->native_string, ".STOverlaps("); - layerinfo->current_node = layerinfo->current_node->next; if (!process_node(layer, filter)) return 0; - filter->native_string = msStringConcatenate(filter->native_string, ")=1"); break; case MS_TOKEN_COMPARISON_CROSSES: + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (!process_node(layer, filter)) + return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; filter->native_string = msStringConcatenate(filter->native_string, ".STCrosses("); - layerinfo->current_node = layerinfo->current_node->next; if (!process_node(layer, filter)) return 0; - filter->native_string = msStringConcatenate(filter->native_string, ")=1"); break; case MS_TOKEN_COMPARISON_WITHIN: + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (!process_node(layer, filter)) + return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; filter->native_string = msStringConcatenate(filter->native_string, ".STWithin("); - layerinfo->current_node = layerinfo->current_node->next; if (!process_node(layer, filter)) return 0; - filter->native_string = msStringConcatenate(filter->native_string, ")=1"); break; case MS_TOKEN_COMPARISON_CONTAINS: + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (!process_node(layer, filter)) + return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; filter->native_string = msStringConcatenate(filter->native_string, ".STContains("); - layerinfo->current_node = layerinfo->current_node->next; if (!process_node(layer, filter)) return 0; - filter->native_string = msStringConcatenate(filter->native_string, ")=1"); break; case MS_TOKEN_COMPARISON_EQUALS: + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (!process_node(layer, filter)) + return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; filter->native_string = msStringConcatenate(filter->native_string, ".STEquals("); - layerinfo->current_node = layerinfo->current_node->next; if (!process_node(layer, filter)) return 0; - filter->native_string = msStringConcatenate(filter->native_string, ")=1"); break; case MS_TOKEN_COMPARISON_BEYOND: @@ -2591,24 +2658,44 @@ int process_node(layerObj* layer, expressionObj *filter) /* spatial functions */ case MS_TOKEN_FUNCTION_AREA: - filter->native_string = msStringConcatenate(filter->native_string, ".STArea("); - layerinfo->current_node = layerinfo->current_node->next; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; if (!process_node(layer, filter)) return 0; - filter->native_string = msStringConcatenate(filter->native_string, ")"); + filter->native_string = msStringConcatenate(filter->native_string, ".STArea()"); break; case MS_TOKEN_FUNCTION_BUFFER: + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (!process_node(layer, filter)) + return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; filter->native_string = msStringConcatenate(filter->native_string, ".STBuffer("); - layerinfo->current_node = layerinfo->current_node->next; if (!process_node(layer, filter)) return 0; filter->native_string = msStringConcatenate(filter->native_string, ")"); break; case MS_TOKEN_FUNCTION_DIFFERENCE: + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (!process_node(layer, filter)) + return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; + if (layerinfo->current_node->next) layerinfo->current_node = layerinfo->current_node->next; + else return 0; filter->native_string = msStringConcatenate(filter->native_string, ".STDifference("); - layerinfo->current_node = layerinfo->current_node->next; if (!process_node(layer, filter)) return 0; filter->native_string = msStringConcatenate(filter->native_string, ")"); From 4cb057c7ae2d141ae00c91d15c9a7d3a5fbf23b6 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 26 Nov 2016 16:26:43 +0100 Subject: [PATCH 077/221] Fix segfault on WFS filters with empty literals (PostGIS + Spatialite). Implement PropertyIsNull for those layers (#5347) The PropertyIsNull is handled through a hack that consists in emulating it as a PropertyIsEqualTo "_MAPSERVER_NULL_" comparison. This is only done for PostGIS and Spatialite layers. CREDITS: Funded by: Regione Toscana - Settore Sistema Informativo Territoriale ed Ambientale (CIG: 644544015A) --- mapogcfilter.c | 51 ++++++++++++++++++ mapogcfilter.h | 2 + mapogr.cpp | 39 +++++++++++++- mappostgis.c | 9 +++- mapserver.h | 2 + mapwfs.c | 2 + msautotest/wxs/data/db.sqlite | Bin 141312 -> 157696 bytes ...filter_postgis_property_is_equal_empty.xml | 16 ++++++ ...filter_postgis_property_is_null_result.xml | 51 ++++++++++++++++++ ...r_postgis_property_is_null_zero_result.xml | 15 ++++++ .../wxs/expected/wfs_ogr_native_sql_40.xml | 39 ++++++++++++++ msautotest/wxs/wfs_filter_postgis.map | 5 ++ msautotest/wxs/wfs_ogr_native_sql.map | 25 +++++++++ 13 files changed, 254 insertions(+), 2 deletions(-) create mode 100644 msautotest/wxs/expected/wfs_filter_postgis_property_is_equal_empty.xml create mode 100644 msautotest/wxs/expected/wfs_filter_postgis_property_is_null_result.xml create mode 100644 msautotest/wxs/expected/wfs_filter_postgis_property_is_null_zero_result.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_40.xml diff --git a/mapogcfilter.c b/mapogcfilter.c index 8b19a64304..04d03e4ffd 100644 --- a/mapogcfilter.c +++ b/mapogcfilter.c @@ -3667,6 +3667,57 @@ int FLTCheckInvalidOperand(FilterEncodingNode *psFilterNode) return status; } +/************************************************************************/ +/* FLTProcessPropertyIsNull */ +/* */ +/* HACK for PropertyIsNull processing. PostGIS & Spatialite only */ +/* for now. */ +/************************************************************************/ +int FLTProcessPropertyIsNull(FilterEncodingNode *psFilterNode, + mapObj *map, int i) +{ + int status = MS_SUCCESS; + + if (psFilterNode->eType == FILTER_NODE_TYPE_COMPARISON && + psFilterNode->psLeftNode != NULL && + psFilterNode->psLeftNode->eType == FILTER_NODE_TYPE_PROPERTYNAME && + strcmp(psFilterNode->pszValue, "PropertyIsNull") == 0 && + !FLTIsGMLDefaultProperty(psFilterNode->psLeftNode->pszValue) ) + { + layerObj* lp; + int layerWasOpened; + + lp = GET_LAYER(map, i); + layerWasOpened = msLayerIsOpen(lp); + + /* Horrible HACK to compensate for the lack of null testing in MapServer */ + if( (lp->connectiontype == MS_POSTGIS || + (lp->connectiontype == MS_OGR && msOGRIsSpatialite(lp))) && + strcmp(psFilterNode->pszValue, "PropertyIsNull") == 0 ) + { + msFree(psFilterNode->pszValue); + psFilterNode->pszValue = msStrdup("PropertyIsEqualTo"); + psFilterNode->psRightNode = FLTCreateBinaryCompFilterEncodingNode(); + psFilterNode->psRightNode->eType = FILTER_NODE_TYPE_LITERAL; + psFilterNode->psRightNode->pszValue = msStrdup("_MAPSERVER_NULL_"); + } + + if (!layerWasOpened) /* do not close the layer if it has been opened somewhere else (paging?) */ + msLayerClose(lp); + } + + if (psFilterNode->psLeftNode) + { + status = FLTProcessPropertyIsNull(psFilterNode->psLeftNode, map, i); + if( status == MS_SUCCESS ) + { + if (psFilterNode->psRightNode) + status = FLTProcessPropertyIsNull(psFilterNode->psRightNode, map, i); + } + } + return status; +} + /************************************************************************/ /* FLTCheckInvalidProperty */ /* */ diff --git a/mapogcfilter.h b/mapogcfilter.h index 970d02e5f3..feff2c26cc 100644 --- a/mapogcfilter.h +++ b/mapogcfilter.h @@ -149,6 +149,8 @@ int FLTCheckInvalidProperty(FilterEncodingNode *psFilterNode, FilterEncodingNode* FLTSimplify(FilterEncodingNode *psFilterNode, int* pnEvaluation); int FLTApplyFilterToLayerCommonExpressionWithRect(mapObj *map, int iLayerIndex, const char *pszExpression, rectObj rect); +int FLTProcessPropertyIsNull(FilterEncodingNode *psFilterNode, + mapObj *map, int i); #endif diff --git a/mapogr.cpp b/mapogr.cpp index 333810c9fb..a2bdda114c 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -1531,7 +1531,7 @@ static char *msOGREscapeSQLParam(layerObj *layer, const char *pszString) { #ifdef USE_OGR char* pszEscapedStr =NULL; - if(layer && pszString && strlen(pszString) > 0) { + if(layer && pszString) { char* pszEscapedOGRStr = CPLEscapeString(pszString, strlen(pszString), CPLES_SQL ); pszEscapedStr = msStrdup(pszEscapedOGRStr); @@ -1617,6 +1617,14 @@ char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node) { out = msStrdup(n->tokenval.dblval == 0 ? "FALSE" : "TRUE"); break; case MS_TOKEN_COMPARISON_EQ: + if(n->next != NULL && n->next->token == MS_TOKEN_LITERAL_STRING && + strcmp(n->next->tokenval.strval, "_MAPSERVER_NULL_") == 0 ) + { + out = msStrdup(" IS NULL"); + n = n->next; + break; + } + out = msStrdup(" = "); break; case MS_TOKEN_COMPARISON_NE: @@ -3035,6 +3043,35 @@ static int msOGRLayerIsOpen(layerObj *layer) #endif /* USE_OGR */ } +int msOGRIsSpatialite(layerObj* layer) +{ +#ifdef USE_OGR + msOGRFileInfo *psInfo =(msOGRFileInfo*)layer->layerinfo; + if (psInfo && psInfo->dialect && + EQUAL(psInfo->dialect, "Spatialite") ) + { + // reasons to not produce native string: not simple layer, or an explicit deny + char *do_this = msLayerGetProcessingKey(layer, "NATIVE_SQL"); // default is YES + if (do_this && strcmp(do_this, "NO") == 0) { + return MS_FALSE; + } + return MS_TRUE; + } + + return MS_FALSE; + +#else + /* ------------------------------------------------------------------ + * OGR Support not included... + * ------------------------------------------------------------------ */ + + msSetError(MS_MISCERR, "OGR support is not available.", "msOGRIsSpatialite()"); + return(MS_FALSE); + +#endif /* USE_OGR */ +} + + /********************************************************************** * msOGRLayerWhichShapes() * diff --git a/mappostgis.c b/mappostgis.c index 2bddf9a938..2ee7c46227 100644 --- a/mappostgis.c +++ b/mappostgis.c @@ -3454,7 +3454,7 @@ char *msPostGISEscapeSQLParam(layerObj *layer, const char *pszString) size_t nSrcLen; char* pszEscapedStr =NULL; - if (layer && pszString && strlen(pszString) > 0) { + if (layer && pszString) { if(!msPostGISLayerIsOpen(layer)) msPostGISLayerOpen(layer); @@ -3752,6 +3752,13 @@ int msPostGISLayerTranslateFilter(layerObj *layer, expressionObj *filter, char * if(node->token == MS_TOKEN_COMPARISON_EQ && node->next != NULL && node->next->token == MS_TOKEN_LITERAL_TIME) break; /* skip, handled with the next token */ if(bindingToken == MS_TOKEN_BINDING_TIME && (node->token == MS_TOKEN_COMPARISON_EQ || node->token == MS_TOKEN_COMPARISON_NE)) break; /* skip, handled elsewhere */ + if(node->token == MS_TOKEN_COMPARISON_EQ && node->next != NULL && node->next->token == MS_TOKEN_LITERAL_STRING && + strcmp(node->next->tokenval.strval, "_MAPSERVER_NULL_") == 0 ) + { + native_string = msStringConcatenate(native_string, " IS NULL"); + node = node->next; + break; + } native_string = msStringConcatenate(native_string, msExpressionTokenToString(node->token)); break; diff --git a/mapserver.h b/mapserver.h index cf3cd219fa..a19a83e259 100644 --- a/mapserver.h +++ b/mapserver.h @@ -3130,6 +3130,8 @@ shapeObj *msOffsetCurve(shapeObj *p, double offset); shapeObj *msGEOSOffsetCurve(shapeObj *p, double offset); #endif +int msOGRIsSpatialite(layerObj* layer); + #endif /* SWIG */ #ifdef __cplusplus diff --git a/mapwfs.c b/mapwfs.c index 7f4184911a..3656f17e09 100644 --- a/mapwfs.c +++ b/mapwfs.c @@ -2065,6 +2065,8 @@ static int msWFSRunFilter(mapObj* map, return msWFSException(map, "mapserv", MS_OWS_ERROR_NO_APPLICABLE_CODE, paramsObj->pszVersion); } + FLTProcessPropertyIsNull(psNode, map, lp->index); + /*preparse the filter for gml aliases*/ FLTPreParseFilterForAliasAndGroup(psNode, map, lp->index, "G"); diff --git a/msautotest/wxs/data/db.sqlite b/msautotest/wxs/data/db.sqlite index 374f0c7fb7503e0f046a5933338ae614b68f70a2..3daebb6b2ce0c0f56a4302eb6e4eea514be5477f 100644 GIT binary patch delta 3869 zcmb7HeNYtV8GkI(WXUS>XAS#=&!JG~P#k&Sw#N55CZAbdKJO z+p<2Ux>AQNK9^%Mt+VS=gkD1Q8od;^+kQpMONrU*;W6Q3>WDHlFe1ke4=BTtNLW$_ zrC9WQRSX7jzd;Hh_oh3Cjn`*ZPYU{Rb zuH9B&T~%M-aGv`nD9S4RzgX&M*f8=ro+ z9)zY5y-BA*=+gfVj>d2P-gyB8e27j^9|%;_y%NdvdKw!WS20mrU9)9Vn)6#48V;nb z*Xco3*Kc9(2XPUb2x1Y;tQqvF*)T511Bok$-k?{&vER}4#U#V);kZ@&VmC%{;s0l2 z3>TcVWuP61aJUc6&=}f5L*sT^CC+45UF7W4pE=?qSY|m^B3U&48)oPB?L@0!oi0+y z!W{YXJ6R+n%ZfS>4bd{P8+Cy67aGTgG|ueyd%2fzEGmb?QZyWv2h#i=X!Uor`vcuy zN?T{jzp#rpDwqA@6I^C_T*++a6I`46U3wc&q<&wxhwIn}*KudxevO!&UN1Qz#l%Aq zDa}sWC;Covw|`f_F9dcqwfTjLG;)RTq@ad_124!S_7+D9*th?Q`*WWX$`+$26FNKg z>LP#pX)(!i=&efWZM|Ag>-|e_L-Tw@3s058%J&Q4@jYvzgV6gw?)Yvum(S~>q2jyXyQ&vBZmSsWY=E25%u0rs^U*q680 z!XtN*)*}tY)QD(N*yRL;Hz@6@5|f6ctU>0viG9v4jz^_QnFJ*mg?^>4v%#CV(P8FM zQIfV>)D2k=viCqJw>{G!^h!}hR`V~ioLOC4#!_vA!_kP^a*!PaVqv$5N99R%tx?by zj>xJaaV_kvgeWycn?)rihQ&xkwVGJQr`WfCKjG2S3z3O~hlYcq&?!TNGDMQu!uA7? zrw{XJ)1rF$_;Iixw5wn!Bxft^ZD2V+k6UdE0QJhj;9*&HUuS#gbp!b+1{6>(MO8r* zdSvOSls(CQ2t0+|d4~Tzq9U}aAxSx|nkLw1Ky`NI8vgH=qd*x3{2hN{ZU4c({0;|? zJW1a=<(Q;LZr;Z(0?FBBH{_a!V=|Bc=*$Ur3y9W3HXb!6<=E&$>|xCh^*raKX7l*4 zqUL>*y#bWc{%js?PV%=UAW#Ka5t^jPQ7I%vCGIl24{X-w*72xeLG7tWxR3=NVPA1? z7LUBi)n;)hCPjphEWm%Vn)L#U1IJksE?E%M0caPaK?#!dI2G=X&nX1_6H@()i4m#d z;CX{6Xx|y0*2gnr(wHS)CuMN>^DGg>60e%R?u zn6~>e_1rvRkQTv%>7eFVY@Qon{IE-J4kE-Lm7*J?CK(#e>J_26-Ct%IkbZ1G!Aq&-BN>__{u6YyV=>%LA33w zSz^y|q_Aj(2o%`P(RjMnA8=&rj#ABLcKZFC*1DQj!@CtcXLB5>Oo61FC-v{-5tC`k rR7~crXF4-7=ov)MKoY)1iz0UY?l!Q(-R)M(mh`*Z=7zc@cenon@6E7L delta 369 zcmZvXze_?<6vxkxr@rU2^hu$hE;&e0G}ISrmd2>>Um{$8aqF|FX_ z8wC_vr4?TsH}+a~J3A$pG9mQ&(Sa<|jS)s3_&&}9IXwTtauC%tGdiRYatF90t>tI7 zJBf^=l{807>p|o`a9{BrBglR(oQ{XU11{4iRVjllTm;XyVo%ar$d*;R3+zfO_Q1@5YdR~FqWCVx#G>oJBlkd8(56?lhB zDrY<%tOorXpk`D;iF}@FIkB6fq&PQe`>w6iEaA6^nzShjI-TA|C=fA;f%nOy0 + + + missing + + + diff --git a/msautotest/wxs/expected/wfs_filter_postgis_property_is_null_result.xml b/msautotest/wxs/expected/wfs_filter_postgis_property_is_null_result.xml new file mode 100644 index 0000000000..47f8886b72 --- /dev/null +++ b/msautotest/wxs/expected/wfs_filter_postgis_property_is_null_result.xml @@ -0,0 +1,51 @@ +Content-Type: text/xml; subtype=gml/3.1.1; charset=UTF-8 + + + + + + 46.980843 -64.052355 + 46.980843 -64.052355 + + + + + + + 46.980843 -64.052355 + 46.980843 -64.052355 + + + + + 46.980843 -64.052355 + + + 1 + 0 + 0 + 8 + 1 + BACMK + "Tignish + + + + + 11 + 021I16 + 465700 + 640200 + 0 + 0 + 1 + + + + diff --git a/msautotest/wxs/expected/wfs_filter_postgis_property_is_null_zero_result.xml b/msautotest/wxs/expected/wfs_filter_postgis_property_is_null_zero_result.xml new file mode 100644 index 0000000000..2f19f5cb20 --- /dev/null +++ b/msautotest/wxs/expected/wfs_filter_postgis_property_is_null_zero_result.xml @@ -0,0 +1,15 @@ +Content-Type: text/xml; subtype=gml/3.1.1; charset=UTF-8 + + + + + missing + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_40.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_40.xml new file mode 100644 index 0000000000..cbf4262126 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_40.xml @@ -0,0 +1,39 @@ +Content-Type: text/xml; subtype=gml/3.1.1; charset=UTF-8 + + + + + + 653901.530000 4866278.050000 + 653901.530000 4866278.050000 + + + + + + + + 653901.530000 4866278.050000 + 653901.530000 4866278.050000 + + + + + 653901.530000 4866278.050000 + + + + 84274 + 1 + 1 + 0 + + + + diff --git a/msautotest/wxs/wfs_filter_postgis.map b/msautotest/wxs/wfs_filter_postgis.map index 55027ac8cc..6818d7723c 100644 --- a/msautotest/wxs/wfs_filter_postgis.map +++ b/msautotest/wxs/wfs_filter_postgis.map @@ -11,6 +11,11 @@ # Verify PropertyIsEqualTo with no matching (due to case sensitivity) # RUN_PARMS: wfs_filter_postgis_property_is_equal_no_matching.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=popplace&FILTER=nameDIGBY" > [RESULT] # RUN_PARMS: wfs_filter_postgis_property_is_equal_case_insensitive.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=popplace&FILTER=nameDIGBY" > [RESULT] +# RUN_PARMS: wfs_filter_postgis_property_is_equal_empty.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=popplace&FILTER=name" > [RESULT] + +# RUN_PARMS: wfs_filter_postgis_property_is_null_zero_result.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=popplace&FILTER=name&MAXFEATURES=1" > [RESULT] + +# RUN_PARMS: wfs_filter_postgis_property_is_null_result.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=popplace&FILTER=name_e&MAXFEATURES=1" > [RESULT] # Test quotes in filter # RUN_PARMS: wfs_filter_postgis_property_is_equal_quote1.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=popplace&FILTER=name\"Tignish" > [RESULT] diff --git a/msautotest/wxs/wfs_ogr_native_sql.map b/msautotest/wxs/wfs_ogr_native_sql.map index 5dac5e2356..f35a04cead 100644 --- a/msautotest/wxs/wfs_ogr_native_sql.map +++ b/msautotest/wxs/wfs_ogr_native_sql.map @@ -80,6 +80,9 @@ # # Spatial query on a layer (unoptimized case with a 'SELECT ... FROM ... WHERE' DATA statement) that returns zero features # RUN_PARMS: wfs_ogr_native_sql_39.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=select_zero_feature&OUTPUTFORMAT=GML2&FILTER=Geometry659159,4877386 696879,4898059" > [RESULT] +# +# PropertyIsNull +# RUN_PARMS: wfs_ogr_native_sql_40.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=towns_with_null&FILTER=name" > [RESULT] MAP @@ -137,6 +140,28 @@ LAYER TEMPLATE "wfs_ogr_native_sql.map" END # Layer +LAYER + NAME towns_with_null + DATA towns_with_null + CONNECTIONTYPE OGR + CONNECTION "./data/db.sqlite" + PROCESSING "NATIVE_SQL=YES" + METADATA + "ows_title" "towns" + "wfs_featureid" "ID" + "gml_include_items" "all" + "gml_types" "auto" + "wfs_getfeature_formatlist" "ogrgml" + END + TYPE POINT + STATUS ON + PROJECTION + "init=epsg:32632" + END + + TEMPLATE "wfs_ogr_native_sql.map" +END # Layer + LAYER NAME towns_select DATA "SELECT * FROM towns" From 3d52307cf0033e3275975b668b7138ba1343f28d Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Tue, 29 Nov 2016 12:20:54 +0100 Subject: [PATCH 078/221] Don't return verbose OGR error messages to clients (#5356) --- mapogr.cpp | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/mapogr.cpp b/mapogr.cpp index a2bdda114c..a9450e2bab 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -1177,16 +1177,13 @@ msOGRFileOpen(layerObj *layer, const char *connection ) RELEASE_OGR_LOCK; if( hDS == NULL ) { - if( strlen(CPLGetLastErrorMsg()) == 0 ) - msSetError(MS_OGRERR, + msSetError(MS_OGRERR, "Open failed for OGR connection in layer `%s'. " - "File not found or unsupported format.", + "File not found or unsupported format. Check server logs.", "msOGRFileOpen()", layer->name?layer->name:"(null)" ); - else - msSetError(MS_OGRERR, - "Open failed for OGR connection in layer `%s'.\n%s\n", - "msOGRFileOpen()", + if( strlen(CPLGetLastErrorMsg()) == 0 ) + msDebug("Open failed for OGR connection in layer `%s'.\n%s\n", layer->name?layer->name:"(null)", CPLGetLastErrorMsg() ); CPLFree( pszDSName ); @@ -1214,9 +1211,11 @@ msOGRFileOpen(layerObj *layer, const char *connection ) hLayer = OGR_DS_ExecuteSQL( hDS, pszLayerDef, NULL, NULL ); if( hLayer == NULL ) { msSetError(MS_OGRERR, - "ExecuteSQL(%s) failed.\n%s", - "msOGRFileOpen()", - pszLayerDef, CPLGetLastErrorMsg() ); + "ExecuteSQL() failed. Check server logs.", + "msOGRFileOpen()"); + if( strlen(CPLGetLastErrorMsg()) == 0 ) + msDebug("ExecuteSQL(%s) failed.\n%s\n", + pszLayerDef, CPLGetLastErrorMsg() ); RELEASE_OGR_LOCK; msConnPoolRelease( layer, hDS ); CPLFree( pszLayerDef ); @@ -1248,9 +1247,11 @@ msOGRFileOpen(layerObj *layer, const char *connection ) } if (hLayer == NULL) { - msSetError(MS_OGRERR, "GetLayer(%s) failed for OGR connection `%s'.", + msSetError(MS_OGRERR, "GetLayer(%s) failed for OGR connection. Check logs.", "msOGRFileOpen()", - pszLayerDef, connection ); + pszLayerDef); + msDebug("GetLayer(%s) failed for OGR connection `%s'.\n", + pszLayerDef, connection ); CPLFree( pszLayerDef ); msConnPoolRelease( layer, hDS ); return NULL; @@ -2074,7 +2075,8 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps if( psInfo->hLayer == NULL ) { RELEASE_OGR_LOCK; - msSetError(MS_OGRERR, "ExecuteSQL(%s) failed.\n%s", "msOGRFileWhichShapes()", select, CPLGetLastErrorMsg()); + msSetError(MS_OGRERR, "ExecuteSQL() failed. Check logs.", "msOGRFileWhichShapes()"); + msDebug("ExecuteSQL(%s) failed.\n%s\n", select, CPLGetLastErrorMsg()); msFree(select); return MS_FAILURE; } @@ -2141,7 +2143,8 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps CPLErrorReset(); if( OGR_L_SetAttributeFilter( psInfo->hLayer, pszOGRFilter ) != OGRERR_NONE ) { - msSetError(MS_OGRERR, "SetAttributeFilter(%s) failed on layer %s.\n%s", "msOGRFileWhichShapes()", layer->filter.string+6, layer->name?layer->name:"(null)", CPLGetLastErrorMsg() ); + msSetError(MS_OGRERR, "SetAttributeFilter() failed on layer %s. Check logs.", "msOGRFileWhichShapes()", layer->name?layer->name:"(null)"); + msDebug("SetAttributeFilter(%s) failed on layer %s.\n%s\n", layer->filter.string+6, layer->name?layer->name:"(null)", CPLGetLastErrorMsg() ); RELEASE_OGR_LOCK; msFree(pszOGRFilter); msFree(select); @@ -2359,8 +2362,10 @@ msOGRFileNextShape(layerObj *layer, shapeObj *shape, if( (hFeature = OGR_L_GetNextFeature( psInfo->hLayer )) == NULL ) { psInfo->last_record_index_read = -1; if( CPLGetLastErrorType() == CE_Failure ) { - msSetError(MS_OGRERR, "%s", "msOGRFileNextShape()", - CPLGetLastErrorMsg() ); + msSetError(MS_OGRERR, "OGR GetNextFeature() error'd. Check logs.", + "msOGRFileNextShape()"); + msDebug("msOGRFileNextShape(): %s\n", + CPLGetLastErrorMsg() ); RELEASE_OGR_LOCK; return MS_FAILURE; } else { From 22dc081f1060ca40e0b209e7bb3e9aa0ca8b5ac3 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 1 Dec 2016 16:09:13 +0100 Subject: [PATCH 079/221] OGR Spatialite: avoid useless CAST() in filter, and use join for spatial filtering. SQLite cannot use attribute indexes if the WHERE clause use CAST(foo AS text) instead of foo. Rework the way spatial filtering is done to do a JOIN on the idx_table_geometry virtual table instead of using the SpatialIndex virtual table. This will help the query planner to use an attribute filter first when this is more relevant. CREDITS: Funded by: Regione Toscana - Settore Sistema Informativo Territoriale ed Ambientale (CIG: 644544015A) --- mapogr.cpp | 519 +++++++++--- msautotest/wxs/data/db.sqlite | Bin 157696 -> 157696 bytes .../wxs/expected/wfs_combined_filter.xml | 41 + ...r_native_sql_01_spatial_index_disabled.xml | 133 +++ .../wxs/expected/wfs_ogr_native_sql_37.xml | 14 +- .../wxs/expected/wfs_ogr_native_sql_41.xml | 797 ++++++++++++++++++ msautotest/wxs/wfs_combined_filter.map | 90 ++ msautotest/wxs/wfs_ogr_native_sql.map | 29 + 8 files changed, 1506 insertions(+), 117 deletions(-) create mode 100644 msautotest/wxs/expected/wfs_combined_filter.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_01_spatial_index_disabled.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_41.xml create mode 100644 msautotest/wxs/wfs_combined_filter.map diff --git a/mapogr.cpp b/mapogr.cpp index a9450e2bab..97529a8786 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -67,10 +67,13 @@ typedef struct ms_ogr_file_info_t { const char* dialect; /* NULL, Spatialite or PostgreSQL */ char *pszSelect; - char *pszSpatialFilterTableName ; + char *pszSpatialFilterTableName; + char *pszSpatialFilterGeometryColumn; char *pszMainTableName; char *pszRowId; int bIsOKForSQLCompose; + bool bHasSpatialIndex; // used only for spatialite for now + char* pszTablePrefix; // prefix to qualify field names. used only for spatialite for now when a join is done for spatial filtering. int bPaging; @@ -1080,6 +1083,10 @@ void msOGRInitialize(void) #ifdef USE_OGR +static void msOGRFileOpenSpatialite( layerObj *layer, + const char *pszLayerDef, + msOGRFileInfo *psInfo ); + /********************************************************************** * msOGRFileOpen() * @@ -1309,7 +1316,7 @@ msOGRFileOpen(layerObj *layer, const char *connection ) if (have_spatialite) psInfo->dialect = "Spatialite"; else - msDebug("msOGRTranslateMsExpressionToOGRSQL: Native SQL not available, no Spatialite support and/or not a Spatialite enabled db\n"); + msDebug("msOGRFileOpen: Native SQL not available, no Spatialite support and/or not a Spatialite enabled db\n"); } else if (strcmp(name, "PostgreSQL") == 0) { psInfo->dialect = "PostgreSQL"; // todo: PostgreSQL not yet tested @@ -1319,14 +1326,31 @@ msOGRFileOpen(layerObj *layer, const char *connection ) psInfo->pszSelect = NULL; psInfo->pszSpatialFilterTableName = NULL; + psInfo->pszSpatialFilterGeometryColumn = NULL; psInfo->pszMainTableName = NULL; psInfo->pszRowId = NULL; psInfo->bIsOKForSQLCompose = true; + psInfo->bPaging = false; + psInfo->bHasSpatialIndex = false; + psInfo->pszTablePrefix = NULL; + + if( psInfo->dialect != NULL && EQUAL(psInfo->dialect, "Spatialite") ) + msOGRFileOpenSpatialite(layer, pszLayerDef, psInfo); + + return psInfo; +} +/************************************************************************/ +/* msOGRFileOpenSpatialite() */ +/************************************************************************/ + +static void msOGRFileOpenSpatialite( layerObj *layer, + const char* pszLayerDef, + msOGRFileInfo *psInfo ) +{ // In the case of a SQLite DB, check that we can identify the // underlying table - if( psInfo->nLayerIndex == -1 && - psInfo->dialect != NULL && EQUAL(psInfo->dialect, "Spatialite") ) + if( psInfo->nLayerIndex == -1 ) { psInfo->bIsOKForSQLCompose = false; @@ -1348,6 +1372,7 @@ msOGRFileOpen(layerObj *layer, const char *connection ) psInfo->pszMainTableName = msStrdup(pszBeginningOfTable); psInfo->pszMainTableName[pszIter - pszBeginningOfTable] = '\0'; psInfo->pszSpatialFilterTableName = msStrdup(psInfo->pszMainTableName); + psInfo->pszSpatialFilterGeometryColumn = msStrdup( OGR_L_GetGeometryColumn(psInfo->hLayer) ); char* pszRequest = NULL; pszRequest = msStringConcatenate(pszRequest, @@ -1373,7 +1398,7 @@ msOGRFileOpen(layerObj *layer, const char *connection ) { // Test if it is a spatial view pszRequest = msStringConcatenate(NULL, - "SELECT f_table_name, view_rowid FROM views_geometry_columns WHERE view_name = lower('"); + "SELECT f_table_name, f_geometry_column, view_rowid FROM views_geometry_columns WHERE view_name = lower('"); pszRequest = msStringConcatenate(pszRequest, psInfo->pszMainTableName); pszRequest = msStringConcatenate(pszRequest, "')"); CPLPushErrorHandler(CPLQuietErrorHandler); @@ -1390,7 +1415,9 @@ msOGRFileOpen(layerObj *layer, const char *connection ) psInfo->pszSelect = msStrdup(psInfo->pszLayerDef); msFree(psInfo->pszSpatialFilterTableName); psInfo->pszSpatialFilterTableName = msStrdup( OGR_F_GetFieldAsString( hFeature, 0 ) ); - psInfo->pszRowId = msStrdup( OGR_F_GetFieldAsString( hFeature, 1 ) ); + CPLFree( psInfo->pszSpatialFilterGeometryColumn ); + psInfo->pszSpatialFilterGeometryColumn = msStrdup( OGR_F_GetFieldAsString( hFeature, 1 ) ); + psInfo->pszRowId = msStrdup( OGR_F_GetFieldAsString( hFeature, 2 ) ); OGR_F_Destroy(hFeature); } OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); @@ -1399,7 +1426,7 @@ msOGRFileOpen(layerObj *layer, const char *connection ) } } } - else if( psInfo->dialect != NULL && EQUAL(psInfo->dialect, "Spatialite") ) + else { psInfo->bIsOKForSQLCompose = false; @@ -1423,12 +1450,13 @@ msOGRFileOpen(layerObj *layer, const char *connection ) { psInfo->pszMainTableName = msStrdup(OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); psInfo->pszSpatialFilterTableName = msStrdup(psInfo->pszMainTableName); + psInfo->pszSpatialFilterGeometryColumn = msStrdup( OGR_L_GetGeometryColumn(psInfo->hLayer) ); } else { // Test if it is a spatial view pszRequest = msStringConcatenate(NULL, - "SELECT f_table_name, view_rowid FROM views_geometry_columns WHERE view_name = lower('"); + "SELECT f_table_name, f_geometry_column, view_rowid FROM views_geometry_columns WHERE view_name = lower('"); pszRequest = msStringConcatenate(pszRequest, OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); pszRequest = msStringConcatenate(pszRequest, "')"); CPLPushErrorHandler(CPLQuietErrorHandler); @@ -1444,7 +1472,8 @@ msOGRFileOpen(layerObj *layer, const char *connection ) { psInfo->pszMainTableName = msStrdup(OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); psInfo->pszSpatialFilterTableName = msStrdup( OGR_F_GetFieldAsString( hFeature, 0 ) ); - psInfo->pszRowId = msStrdup( OGR_F_GetFieldAsString( hFeature, 1 ) ); + psInfo->pszSpatialFilterGeometryColumn = msStrdup( OGR_F_GetFieldAsString( hFeature, 1 ) ); + psInfo->pszRowId = msStrdup( OGR_F_GetFieldAsString( hFeature, 2 ) ); OGR_F_Destroy(hFeature); } OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); @@ -1460,9 +1489,90 @@ msOGRFileOpen(layerObj *layer, const char *connection ) psInfo->dialect = NULL; } - psInfo->bPaging = (psInfo->dialect != NULL); + // Check if spatial index has been disabled (testing purposes) + if (msLayerGetProcessingKey(layer, "USE_SPATIAL_INDEX") != NULL && + !CSLTestBoolean(msLayerGetProcessingKey(layer, "USE_SPATIAL_INDEX")) ) + { + msDebug("msOGRFileOpen(): Layer %s has spatial index disabled by processing option\n", + pszLayerDef); + } + // Test if spatial index is available + else if( psInfo->dialect != NULL ) + { + char* pszRequest = NULL; + pszRequest = msStringConcatenate(pszRequest, + "SELECT * FROM sqlite_master WHERE type = 'table' AND name = 'idx_"); + pszRequest = msStringConcatenate(pszRequest, + psInfo->pszSpatialFilterTableName); + pszRequest = msStringConcatenate(pszRequest, "_"); + pszRequest = msStringConcatenate(pszRequest, + OGR_L_GetGeometryColumn(psInfo->hLayer)); + pszRequest = msStringConcatenate(pszRequest, "'"); - return psInfo; + psInfo->bHasSpatialIndex = false; + + OGRLayerH hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszRequest, NULL, NULL ); + if( hLayer ) + { + OGRFeatureH hFeature = OGR_L_GetNextFeature(hLayer); + if( hFeature ) + { + psInfo->bHasSpatialIndex = true; + OGR_F_Destroy(hFeature); + } + OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); + } + msFree(pszRequest); + pszRequest = NULL; + + if( !psInfo->bHasSpatialIndex ) + { + msDebug("msOGRFileOpen(): Layer %s has no spatial index table\n", + pszLayerDef); + } + else + { + pszRequest = msStringConcatenate(pszRequest, + "SELECT * FROM geometry_columns WHERE f_table_name = lower('"); + pszRequest = msStringConcatenate(pszRequest, + psInfo->pszSpatialFilterTableName); + pszRequest = msStringConcatenate(pszRequest, "') AND f_geometry_column = lower('"); + pszRequest = msStringConcatenate(pszRequest, + psInfo->pszSpatialFilterGeometryColumn); + pszRequest = msStringConcatenate(pszRequest, "') AND spatial_index_enabled = 1"); + + psInfo->bHasSpatialIndex = false; + + OGRLayerH hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszRequest, NULL, NULL ); + if( hLayer ) + { + OGRFeatureH hFeature = OGR_L_GetNextFeature(hLayer); + if( hFeature ) + { + psInfo->bHasSpatialIndex = true; + OGR_F_Destroy(hFeature); + } + OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); + } + msFree(pszRequest); + pszRequest = NULL; + + if( !psInfo->bHasSpatialIndex ) + { + msDebug("msOGRFileOpen(): Layer %s has spatial index disabled\n", + pszLayerDef); + } + else + { + msDebug("msOGRFileOpen(): Layer %s has spatial index enabled\n", + pszLayerDef); + + psInfo->pszTablePrefix = msStrdup( psInfo->pszMainTableName ); + } + } + } + + psInfo->bPaging = (psInfo->dialect != NULL); } /************************************************************************/ @@ -1516,8 +1626,10 @@ static int msOGRFileClose(layerObj *layer, msOGRFileInfo *psInfo ) msFree(psInfo->pszSelect); msFree(psInfo->pszSpatialFilterTableName); + msFree(psInfo->pszSpatialFilterGeometryColumn); msFree(psInfo->pszMainTableName); msFree(psInfo->pszRowId); + msFree(psInfo->pszTablePrefix); CPLFree(psInfo); @@ -1556,6 +1668,31 @@ static char *msOGREscapeSQLParam(layerObj *layer, const char *pszString) // http://www.sqlite.org/lang_expr.html // http://www.gaia-gis.it/gaia-sins/spatialite-sql-4.3.0.html +static char* msOGRGetQuotedItem(layerObj* layer, const char* pszItem ) +{ + msOGRFileInfo *psInfo = (msOGRFileInfo *)layer->layerinfo; + char* ret = NULL; + char* escapedItem = msLayerEscapePropertyName(layer, pszItem); + if( psInfo->pszTablePrefix) + { + char* escapedTable = msLayerEscapePropertyName(layer, psInfo->pszTablePrefix); + ret = msStringConcatenate(ret, "\""); + ret = msStringConcatenate(ret, escapedTable); + ret = msStringConcatenate(ret, "\".\""); + ret = msStringConcatenate(ret, escapedItem); + ret = msStringConcatenate(ret, "\""); + msFree(escapedTable); + } + else + { + ret = msStringConcatenate(ret, "\""); + ret = msStringConcatenate(ret, escapedItem); + ret = msStringConcatenate(ret, "\""); + } + msFree(escapedItem); + return ret; +} + static char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node) { msOGRFileInfo *info = (msOGRFileInfo *)layer->layerinfo; @@ -1607,11 +1744,12 @@ char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node) { case MS_TOKEN_LITERAL_SHAPE: { // assumed to be in right srs after FLTGetSpatialComparisonCommonExpression char *wkt = msShapeToWKT(n->tokenval.shpval); - const char *col = OGR_L_GetGeometryColumn(info->hLayer); // which geom field?? - nOutSize = strlen(wkt)+strlen(col)+35; + char *stresc = msOGRGetQuotedItem(layer, OGR_L_GetGeometryColumn(info->hLayer)); // which geom field?? + nOutSize = strlen(wkt)+strlen(stresc)+35; out = (char *)msSmallMalloc(nOutSize); - snprintf(out, nOutSize, "ST_GeomFromText('%s',ST_SRID(\"%s\"))", wkt, col); + snprintf(out, nOutSize, "ST_GeomFromText('%s',ST_SRID(%s))", wkt, stresc); msFree(wkt); + msFree(stresc); break; } case MS_TOKEN_LITERAL_BOOLEAN: @@ -1762,48 +1900,95 @@ char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node) { out = msStrdup("ST_Area"); break; case MS_TOKEN_BINDING_DOUBLE: { - char *stresc = msLayerEscapePropertyName(layer, n->tokenval.bindval.item); - nOutSize = strlen(stresc)+30; + char *stresc = msOGRGetQuotedItem(layer, n->tokenval.bindval.item); + nOutSize = strlen(stresc)+ + 30; out = (char *)msSmallMalloc(nOutSize); - const char *type = "float(16)"; - if (EQUAL(info->dialect, "Spatialite")) - type = "REAL"; - else if (EQUAL(info->dialect, "PostgreSQL")) - type = "double precision"; - snprintf(out, nOutSize, "CAST(\"%s\" AS %s)", stresc, type); + + char md_item_name[256]; + snprintf( md_item_name, sizeof(md_item_name), "gml_%s_type", + n->tokenval.bindval.item ); + const char* type = msLookupHashTable(&(layer->metadata), md_item_name); + // Do not cast if the variable is of the appropriate type as it can + // prevent using database indexes, such as for SQlite + if( type != NULL && (EQUAL(type, "Integer") || + EQUAL(type, "Long") || + EQUAL(type, "Real")) ) + { + snprintf(out, nOutSize, "%s", stresc); + } + else + { + const char *SQLtype = "float(16)"; + if (EQUAL(info->dialect, "Spatialite")) + SQLtype = "REAL"; + else if (EQUAL(info->dialect, "PostgreSQL")) + SQLtype = "double precision"; + snprintf(out, nOutSize, "CAST(%s AS %s)", stresc, SQLtype); + } msFree(stresc); break; } case MS_TOKEN_BINDING_INTEGER: { - char *stresc = msLayerEscapePropertyName(layer, n->tokenval.bindval.item); - nOutSize = strlen(stresc)+20; + char *stresc = msOGRGetQuotedItem(layer, n->tokenval.bindval.item); + nOutSize = strlen(stresc)+ 20; out = (char *)msSmallMalloc(nOutSize); - snprintf(out, nOutSize, "CAST(\"%s\" AS integer)", stresc); + + char md_item_name[256]; + snprintf( md_item_name, sizeof(md_item_name), "gml_%s_type", + n->tokenval.bindval.item ); + const char* type = msLookupHashTable(&(layer->metadata), md_item_name); + // Do not cast if the variable is of the appropriate type as it can + // prevent using database indexes, such as for SQlite + if( type != NULL && (EQUAL(type, "Integer") || + EQUAL(type, "Long") || + EQUAL(type, "Real")) ) + { + snprintf(out, nOutSize, "%s", stresc); + } + else + { + snprintf(out, nOutSize, "CAST(%s AS integer)", stresc); + } msFree(stresc); break; } case MS_TOKEN_BINDING_STRING: { - char *stresc = msLayerEscapePropertyName(layer, n->tokenval.bindval.item); - nOutSize = strlen(stresc)+30; + char *stresc = msOGRGetQuotedItem(layer, n->tokenval.bindval.item); + nOutSize = strlen(stresc) + 30; out = (char *)msSmallMalloc(nOutSize); - snprintf(out, nOutSize, "CAST(\"%s\" AS text)", stresc); + + char md_item_name[256]; + snprintf( md_item_name, sizeof(md_item_name), "gml_%s_type", + n->tokenval.bindval.item ); + const char* type = msLookupHashTable(&(layer->metadata), md_item_name); + // Do not cast if the variable is of the appropriate type as it can + // prevent using database indexes, such as for SQlite + if( type != NULL && EQUAL(type, "Character") ) + { + snprintf(out, nOutSize, "%s", stresc); + } + else + { + snprintf(out, nOutSize, "CAST(%s AS text)", stresc); + } msFree(stresc); break; } case MS_TOKEN_BINDING_TIME: { // won't get here unless col is parsed as time and they are not - char *stresc = msLayerEscapePropertyName(layer, n->tokenval.bindval.item); - nOutSize = strlen(stresc)+10; + char *stresc = msOGRGetQuotedItem(layer, n->tokenval.bindval.item); + nOutSize = strlen(stresc)+ 10; out = (char *)msSmallMalloc(nOutSize); - snprintf(out, nOutSize, "\"%s\"", stresc); + snprintf(out, nOutSize, "%s", stresc); msFree(stresc); break; } case MS_TOKEN_BINDING_SHAPE: { - const char *col = OGR_L_GetGeometryColumn(info->hLayer); // which geom field?? - nOutSize = strlen(col)+10; + char *stresc = msOGRGetQuotedItem(layer, OGR_L_GetGeometryColumn(info->hLayer)); // which geom field?? + nOutSize = strlen(stresc)+ 10; out = (char *)msSmallMalloc(nOutSize); - snprintf(out, nOutSize, "\"%s\"", col); + snprintf(out, nOutSize, "%s", stresc); + msFree(stresc); break; } @@ -1845,6 +2030,50 @@ char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node) { return out; } +/* + * msOGRLayerBuildSQLOrderBy() + * + * Returns the content of a SQL ORDER BY clause from the sortBy member of + * the layer. The string does not contain the "ORDER BY" keywords itself. + */ +static char* msOGRLayerBuildSQLOrderBy(layerObj *layer, msOGRFileInfo *psInfo) +{ + char* strOrderBy = NULL; + if( layer->sortBy.nProperties > 0 ) { + int i; + for(i=0;isortBy.nProperties;i++) { + if( i > 0 ) + strOrderBy = msStringConcatenate(strOrderBy, ", "); + char* escapedItem = msLayerEscapePropertyName(layer, layer->sortBy.properties[i].item); + if( psInfo->pszTablePrefix) + { + char* escapedTable = msLayerEscapePropertyName(layer, psInfo->pszTablePrefix); + strOrderBy = msStringConcatenate(strOrderBy, "\""); + strOrderBy = msStringConcatenate(strOrderBy, escapedTable); + strOrderBy = msStringConcatenate(strOrderBy, "\".\""); + strOrderBy = msStringConcatenate(strOrderBy, escapedItem); + strOrderBy = msStringConcatenate(strOrderBy, "\""); + msFree(escapedTable); + } + else + { +#if GDAL_VERSION_MAJOR < 2 + // Old GDAL don't like quoted identifiers in ORDER BY + strOrderBy = msStringConcatenate(strOrderBy, + layer->sortBy.properties[i].item); +#else + strOrderBy = msStringConcatenate(strOrderBy, "\""); + strOrderBy = msStringConcatenate(strOrderBy, escapedItem); + strOrderBy = msStringConcatenate(strOrderBy, "\""); +#endif + } + msFree(escapedItem); + if( layer->sortBy.properties[i].sortOrder == SORT_DESC ) + strOrderBy = msStringConcatenate(strOrderBy, " DESC"); + } + } + return strOrderBy; +} /********************************************************************** * msOGRFileWhichShapes() @@ -1887,19 +2116,43 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps for(i = 0; i < layer->numitems; i++) { if( i > 0 ) select = msStringConcatenate(select, ", "); - select = msStringConcatenate(select, "\""); - select = msStringConcatenate(select, layer->items[i]); - select = msStringConcatenate(select, "\""); + char* escaped = msOGRGetQuotedItem(layer, layer->items[i]); + select = msStringConcatenate(select, escaped); + msFree(escaped); + if( psInfo->pszTablePrefix ) + { + select = msStringConcatenate(select, " AS \""); + escaped = msLayerEscapePropertyName(layer, layer->items[i]); + select = msStringConcatenate(select, escaped); + msFree(escaped); + select = msStringConcatenate(select, "\""); + } } if( layer->numitems > 0 ) select = msStringConcatenate(select, ", "); pszGeometryColumn = OGR_L_GetGeometryColumn(psInfo->hLayer); if( pszGeometryColumn != NULL && pszGeometryColumn[0] != '\0' ) { - select = msStringConcatenate(select, "\""); - select = msStringConcatenate(select, pszGeometryColumn); - select = msStringConcatenate(select, "\""); + char* escaped = msOGRGetQuotedItem(layer, pszGeometryColumn); + select = msStringConcatenate(select, escaped); + msFree(escaped); + if( psInfo->pszTablePrefix ) + { + select = msStringConcatenate(select, " AS \""); + escaped = msLayerEscapePropertyName(layer, pszGeometryColumn); + select = msStringConcatenate(select, escaped); + msFree(escaped); + select = msStringConcatenate(select, "\""); + } } else { /* Add ", *" so that we still have an hope to get the geometry */ + if( psInfo->pszTablePrefix ) + { + select = msStringConcatenate(select, "\""); + char* escaped = msLayerEscapePropertyName(layer, psInfo->pszTablePrefix); + select = msStringConcatenate(select, escaped); + msFree(escaped); + select = msStringConcatenate(select, "\"."); + } select = msStringConcatenate(select, "*"); } select = msStringConcatenate(select, " FROM "); @@ -1912,31 +2165,20 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps else { select = msStringConcatenate(select, "\""); - select = msStringConcatenate(select, OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); + char* escaped = msLayerEscapePropertyName(layer, OGR_FD_GetName(OGR_L_GetLayerDefn(psInfo->hLayer))); + select = msStringConcatenate(select, escaped); + msFree(escaped); select = msStringConcatenate(select, "\""); } } char *filter = NULL; - if (msLayerGetProcessingKey(layer, "NATIVE_FILTER") != NULL) { filter = msStringConcatenate(filter, "("); filter = msStringConcatenate(filter, msLayerGetProcessingKey(layer, "NATIVE_FILTER")); filter = msStringConcatenate(filter, ")"); } - if (psInfo->dialect) { - if (EQUAL(psInfo->dialect, "Spatialite") || EQUAL(psInfo->dialect, "PostgreSQL")) { - const char *sql = layer->filter.native_string; - if (sql && *sql != '\0') { - if (filter) filter = msStringConcatenate(filter, "AND "); - filter = msStringConcatenate(filter, "("); - filter = msStringConcatenate(filter, sql); - filter = msStringConcatenate(filter, ")"); - } - } - } - /* ------------------------------------------------------------------ * Set Spatial filter... this may result in no features being returned * if layer does not overlap current view. @@ -1953,69 +2195,96 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps } psInfo->rect = rect; + bool bSpatialiteAddOrderByFID = false; + + if( psInfo->dialect && EQUAL(psInfo->dialect, "Spatialite") && + psInfo->pszMainTableName != NULL && psInfo->bHasSpatialIndex ) + { + select = msStringConcatenate(select, " JOIN "); + + char szSpatialIndexName[256]; + snprintf( szSpatialIndexName, sizeof(szSpatialIndexName), + "idx_%s_%s", + psInfo->pszSpatialFilterTableName, + psInfo->pszSpatialFilterGeometryColumn ); + char* pszEscapedSpatialIndexName = msLayerEscapePropertyName( + layer, szSpatialIndexName); + select = msStringConcatenate(select, "\""); + select = msStringConcatenate(select, pszEscapedSpatialIndexName); + msFree(pszEscapedSpatialIndexName); + select = msStringConcatenate(select, "\" ms_spat_idx ON \""); + char* pszEscapedMainTableName = msLayerEscapePropertyName( + layer, psInfo->pszMainTableName); + select = msStringConcatenate(select, pszEscapedMainTableName); + msFree(pszEscapedMainTableName); + select = msStringConcatenate(select, "\"."); + if( psInfo->pszRowId ) + { + char* pszEscapedRowId = msLayerEscapePropertyName( + layer, psInfo->pszRowId); + select = msStringConcatenate(select, "\""); + select = msStringConcatenate(select, pszEscapedRowId); + select = msStringConcatenate(select, "\""); + msFree(pszEscapedRowId); + } + else + select = msStringConcatenate(select, "ROWID"); + select = msStringConcatenate(select, " = ms_spat_idx.pkid AND "); + + char szCond[256]; + snprintf(szCond, sizeof(szCond), + "ms_spat_idx.xmin <= %.15g AND ms_spat_idx.xmax >= %.15g AND " + "ms_spat_idx.ymin <= %.15g AND ms_spat_idx.ymax >= %.15g", + rect.maxx, rect.minx, rect.maxy, rect.miny); + select = msStringConcatenate(select, szCond); + + bSpatialiteAddOrderByFID = true; + } + + if (psInfo->dialect) { + if (EQUAL(psInfo->dialect, "Spatialite") || EQUAL(psInfo->dialect, "PostgreSQL")) { + const char *sql = layer->filter.native_string; + if (sql && *sql != '\0') { + if (filter) filter = msStringConcatenate(filter, "AND "); + filter = msStringConcatenate(filter, "("); + filter = msStringConcatenate(filter, sql); + filter = msStringConcatenate(filter, ")"); + } + } + } + bool bOffsetAlreadyAdded = false; // use spatial index if (psInfo->dialect) { if (EQUAL(psInfo->dialect, "PostgreSQL")) { if (filter) filter = msStringConcatenate(filter, " AND"); const char *col = OGR_L_GetGeometryColumn(psInfo->hLayer); // which geom field?? - filter = msStringConcatenate(filter, " ("); - filter = msStringConcatenate(filter, col); - filter = msStringConcatenate(filter, " && ST_MakeEnvelope("); + filter = msStringConcatenate(filter, " (\""); + char* escaped = msLayerEscapePropertyName(layer, col); + filter = msStringConcatenate(filter, escaped); + msFree(escaped); + filter = msStringConcatenate(filter, "\" && ST_MakeEnvelope("); char *points = (char *)msSmallMalloc(30*2*5); snprintf(points, 30*4, "%lf,%lf,%lf,%lf", rect.minx, rect.miny, rect.maxx, rect.maxy); filter = msStringConcatenate(filter, points); msFree(points); filter = msStringConcatenate(filter, "))"); - } else if (EQUAL(psInfo->dialect, "Spatialite")) { + } + else if( psInfo->dialect && EQUAL(psInfo->dialect, "Spatialite") && + psInfo->pszMainTableName != NULL && !psInfo->bHasSpatialIndex ) + { if (filter) filter = msStringConcatenate(filter, " AND"); - filter = msStringConcatenate(filter, " "); - filter = msStringConcatenate(filter, psInfo->pszMainTableName); - filter = msStringConcatenate(filter, "."); - const char* pszFIDColumn = OGR_L_GetFIDColumn(psInfo->hLayer); - if( psInfo->pszRowId ) - filter = msStringConcatenate(filter, psInfo->pszRowId); - else if( pszFIDColumn != NULL && pszFIDColumn[0] != '\0' ) - filter = msStringConcatenate(filter, pszFIDColumn); - else - filter = msStringConcatenate(filter, "ROWID"); - filter = msStringConcatenate(filter, " IN (SELECT ROWID FROM SpatialIndex WHERE f_table_name = '"); - filter = msStringConcatenate(filter, psInfo->pszSpatialFilterTableName); - filter = msStringConcatenate(filter, "' "); - const char* pszGeometryColumn = OGR_L_GetGeometryColumn(psInfo->hLayer); - if( pszGeometryColumn != NULL && pszGeometryColumn[0] != '\0' ) { - filter = msStringConcatenate(filter, "AND f_geometry_column = '"); - filter = msStringConcatenate(filter, pszGeometryColumn); - filter = msStringConcatenate(filter, "' "); - } - filter = msStringConcatenate(filter, "AND search_frame = GeomFromText('POLYGON(("); + const char *col = OGR_L_GetGeometryColumn(psInfo->hLayer); // which geom field?? + filter = msStringConcatenate(filter, " MbrIntersects(\""); + char* escaped = msLayerEscapePropertyName(layer, col); + filter = msStringConcatenate(filter, escaped); + msFree(escaped); + filter = msStringConcatenate(filter, "\", BuildMbr("); char *points = (char *)msSmallMalloc(30*2*5); - snprintf(points, 30*2*5, "%lf %lf,%lf %lf,%lf %lf,%lf %lf,%lf %lf", rect.minx, rect.miny, rect.maxx, rect.miny, rect.maxx, rect.maxy, rect.minx, rect.maxy, rect.minx, rect.miny); + snprintf(points, 30*4, "%lf,%lf,%lf,%lf", rect.minx, rect.miny, rect.maxx, rect.maxy); filter = msStringConcatenate(filter, points); msFree(points); - filter = msStringConcatenate(filter, "))')"); - - // We put the limit in the sub-query, only if we don't have a - // order by later. We accept a startindex, provided there's no - // other attribute filter combined - if ( psInfo->bPaging && layer->maxfeatures >= 0 && - (layer->startindex <= 0 || layer->filter.native_string == NULL) && - layer->sortBy.nProperties == 0 ) - { - char szLimit[50]; - snprintf(szLimit, sizeof(szLimit), " LIMIT %d", layer->maxfeatures); - filter = msStringConcatenate(filter, szLimit); - - if( layer->startindex > 0 && layer->filter.native_string == NULL ) - { - bOffsetAlreadyAdded = true; - char szOffset[50]; - snprintf(szOffset, sizeof(szOffset), " OFFSET %d", layer->startindex); - filter = msStringConcatenate(filter, szOffset); - } - } - - filter = msStringConcatenate(filter, ")"); + filter = msStringConcatenate(filter, "))"); } } @@ -2023,7 +2292,7 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps char *sort = NULL; if( layer->sortBy.nProperties > 0) { - char *strOrderBy = msLayerBuildSQLOrderBy(layer); + char *strOrderBy = msOGRLayerBuildSQLOrderBy(layer, psInfo); if (strOrderBy) { if( psInfo->nLayerIndex == -1 ) { if( strcasestr(psInfo->pszLayerDef, " ORDER BY ") == NULL ) @@ -2038,6 +2307,31 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps } } + if( bSpatialiteAddOrderByFID ) + { + if( sort == NULL ) + sort = msStringConcatenate(NULL, " ORDER BY "); + else + sort = msStringConcatenate(sort, ", "); + char* pszEscapedMainTableName = msLayerEscapePropertyName( + layer, psInfo->pszMainTableName); + sort = msStringConcatenate(sort, "\""); + sort = msStringConcatenate(sort, pszEscapedMainTableName); + sort = msStringConcatenate(sort, "\"."); + msFree(pszEscapedMainTableName); + if( psInfo->pszRowId ) + { + char* pszEscapedRowId = msLayerEscapePropertyName( + layer, psInfo->pszRowId); + sort = msStringConcatenate(sort, "\""); + sort = msStringConcatenate(sort, pszEscapedRowId); + sort = msStringConcatenate(sort, "\""); + msFree(pszEscapedRowId); + } + else + sort = msStringConcatenate(sort, "ROWID"); + } + // compose SQL if (filter) { select = msStringConcatenate(select, " WHERE "); @@ -4329,15 +4623,20 @@ char *msOGREscapePropertyName(layerObj *layer, const char *pszString) { #ifdef USE_OGR char* pszEscapedStr =NULL; - int i =0; if(layer && pszString && strlen(pszString) > 0) { - unsigned char ch; - for(i=0; (ch = ((unsigned char*)pszString)[i]) != '\0'; i++) { - if ( !(isalnum(ch) || ch == '_' || ch > 127) ) { - return msStrdup("invalid_property_name"); - } + pszEscapedStr = (char*) msSmallMalloc( strlen(pszString) * 2 + 1 ); + int j = 0; + for( int i = 0; pszString[i] != '\0'; ++i ) + { + if( pszString[i] == '"' ) + { + pszEscapedStr[j++] = '"'; + pszEscapedStr[j++] = '"'; + } + else + pszEscapedStr[j++] = pszString[i]; } - pszEscapedStr = msStrdup(pszString); + pszEscapedStr[j] = 0; } return pszEscapedStr; #else diff --git a/msautotest/wxs/data/db.sqlite b/msautotest/wxs/data/db.sqlite index 3daebb6b2ce0c0f56a4302eb6e4eea514be5477f..cf763a153e4042d62928686aee08b47e3d7e9a69 100644 GIT binary patch delta 909 zcmb7CJ#W)c6t!!C@C2wr4DImbCAO4UapTX@AfeO=K}n1fOQ>Be%Xy6~{E_Cp(qwWZ zBo-DBTPG%V!~lPQx#_>i%0J-639&;XB<}ErbI!f@+@m+0vC|p*VUNE0xL><-MU{U2 z_}c$`|K1LBLosva=G(&uKbgmmb{L68=YfN;i(v>OjGQ1Iyq)iUpYPK9v%55PO;OjM zh&XvC(kxZ23h&$O-a%PXOVUB9EZLHLC`*TOMN~BPbQ`WJ>M0t!*mnaTLr`lqduGe5 z*?P fkS3oCGX22hOBCvEez&w~hknbXtXi)a1o delta 54 zcmV-60LlM=&n+a diff --git a/msautotest/wxs/expected/wfs_combined_filter.xml b/msautotest/wxs/expected/wfs_combined_filter.xml new file mode 100644 index 0000000000..671c6f93d4 --- /dev/null +++ b/msautotest/wxs/expected/wfs_combined_filter.xml @@ -0,0 +1,41 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 2442115.250000,245881.250000 2446614.500000,262496.843750 + + + + + + + 2442115.250000,245881.250000 2446614.500000,262496.843750 + + + + + 2442115.250000,262496.843750 2442339.750000,261851.750000 2446590.500000,249634.640625 2446614.500000,245881.250000 + + + 754 + 785 + 0 + 0 + 17371.988 + 1523 + 67 + Trans-Canada Highway + route Transcanadienne + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_01_spatial_index_disabled.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_01_spatial_index_disabled.xml new file mode 100644 index 0000000000..f43af8e2b2 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_01_spatial_index_disabled.xml @@ -0,0 +1,133 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 660036.840000,4879402.970000 690357.250000,4892926.890000 + + + + + + + + 660036.840000,4885407.410000 660036.840000,4885407.410000 + + + + + 660036.840000,4885407.410000 + + + Sambuca Pistoiese + 1604 + 1 + 0 + 0 + + + + + + + 672279.270000,4879402.970000 672279.270000,4879402.970000 + + + + + 672279.270000,4879402.970000 + + + Vernio + 5535 + 1 + 0 + 0 + + + + + + + 666989.570000,4892926.890000 666989.570000,4892926.890000 + + + + + 666989.570000,4892926.890000 + + + Camugnano + 2132 + 1 + 0 + 0 + + + + + + + 662773.000000,4891987.410000 662773.000000,4891987.410000 + + + + + 662773.000000,4891987.410000 + + + Castel di Casio + 3174 + 1 + 0 + 0 + + + + + + + 673068.120000,4889949.750000 673068.120000,4889949.750000 + + + + + 673068.120000,4889949.750000 + + + Castiglione dei Pepoli + 6008 + 1 + 0 + 0 + + + + + + + 690357.250000,4888070.830000 690357.250000,4888070.830000 + + + + + 690357.250000,4888070.830000 + + + Firenzuola + 4812 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_37.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_37.xml index c3f87fceaf..f1e2cbabaf 100644 --- a/msautotest/wxs/expected/wfs_ogr_native_sql_37.xml +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_37.xml @@ -12,8 +12,8 @@ Content-Type: text/xml; subtype="gml/3.2.1"; charset=UTF-8 next="http://localhost/path/to/wfs_simple?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=towns&COUNT=1&STARTINDEX=3"> - 641470.51000 4898995.21000 - 641470.51000 4898995.21000 + 656907.12000 4886687.84000 + 656907.12000 4886687.84000 @@ -21,17 +21,17 @@ Content-Type: text/xml; subtype="gml/3.2.1"; charset=UTF-8 - 641470.51000 4898995.21000 - 641470.51000 4898995.21000 + 656907.12000 4886687.84000 + 656907.12000 4886687.84000 - 641470.51000 4898995.21000 + 656907.12000 4886687.84000 - Sestola - 2670 + Granaglione + 2116 1 0 0 diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_41.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_41.xml new file mode 100644 index 0000000000..53226d4adf --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_41.xml @@ -0,0 +1,797 @@ +Content-Type: text/xml; subtype=gml/2.1.2; charset=UTF-8 + + + + + + 637137.64000,4865176.12000 710195.30000,4905916.47000 + + + + + + + + 679352.61000,4874600.65000 679352.61000,4874600.65000 + + + + + 679352.61000,4874600.65000 + + + Barberino di Mugello + 9531 + 1 + 0 + 0 + + + + + + + 691242.09000,4869675.97000 691242.09000,4869675.97000 + + + + + 691242.09000,4869675.97000 + + + Borgo San Lorenzo + 15825 + 1 + 0 + 0 + + + + + + + 706612.32000,4905916.47000 706612.32000,4905916.47000 + + + + + 706612.32000,4905916.47000 + + + Borgo Tossignano + 3023 + 1 + 0 + 0 + + + + + + + 666989.57000,4892926.89000 666989.57000,4892926.89000 + + + + + 666989.57000,4892926.89000 + + + Camugnano + 2132 + 1 + 0 + 0 + + + + + + + 666678.76000,4876424.90000 666678.76000,4876424.90000 + + + + + 666678.76000,4876424.90000 + + + Cantagallo + 2820 + 1 + 0 + 0 + + + + + + + 709517.65000,4900008.46000 709517.65000,4900008.46000 + + + + + 709517.65000,4900008.46000 + + + Casola Valsenio + 2844 + 1 + 0 + 0 + + + + + + + 659557.04000,4904456.57000 659557.04000,4904456.57000 + + + + + 659557.04000,4904456.57000 + + + Castel d'Aiano + 1822 + 1 + 0 + 0 + + + + + + + 700027.21000,4898730.81000 700027.21000,4898730.81000 + + + + + 700027.21000,4898730.81000 + + + Castel del Rio + 1252 + 1 + 0 + 0 + + + + + + + 662773.00000,4891987.41000 662773.00000,4891987.41000 + + + + + 662773.00000,4891987.41000 + + + Castel di Casio + 3174 + 1 + 0 + 0 + + + + + + + 673068.12000,4889949.75000 673068.12000,4889949.75000 + + + + + 673068.12000,4889949.75000 + + + Castiglione dei Pepoli + 6008 + 1 + 0 + 0 + + + + + + + 640503.54000,4884416.92000 640503.54000,4884416.92000 + + + + + 640503.54000,4884416.92000 + + + Cutigliano + 1699 + 1 + 0 + 0 + + + + + + + 690357.25000,4888070.83000 690357.25000,4888070.83000 + + + + + 690357.25000,4888070.83000 + + + Firenzuola + 4812 + 1 + 0 + 0 + + + + + + + 704327.74000,4903948.54000 704327.74000,4903948.54000 + + + + + 704327.74000,4903948.54000 + + + Fontanelice + 1797 + 1 + 0 + 0 + + + + + + + 654456.48000,4895565.29000 654456.48000,4895565.29000 + + + + + 654456.48000,4895565.29000 + + + Gaggio Montano + 4771 + 1 + 0 + 0 + + + + + + + 656907.12000,4886687.84000 656907.12000,4886687.84000 + + + + + 656907.12000,4886687.84000 + + + Granaglione + 2116 + 1 + 0 + 0 + + + + + + + 672130.72000,4902785.47000 672130.72000,4902785.47000 + + + + + 672130.72000,4902785.47000 + + + Grizzana Morandi + 3694 + 1 + 0 + 0 + + + + + + + 651437.84000,4891594.12000 651437.84000,4891594.12000 + + + + + 651437.84000,4891594.12000 + + + Lizzano in Belvedere + 2253 + 1 + 0 + 0 + + + + + + + 685837.45000,4904282.99000 685837.45000,4904282.99000 + + + + + 685837.45000,4904282.99000 + + + Loiano + 4158 + 1 + 0 + 0 + + + + + + + 642083.40000,4866048.77000 642083.40000,4866048.77000 + + + + + 642083.40000,4866048.77000 + + + Marliana + 2917 + 1 + 0 + 0 + + + + + + + 709203.27000,4883473.95000 709203.27000,4883473.95000 + + + + + 709203.27000,4883473.95000 + + + Marradi + 3617 + 1 + 0 + 0 + + + + + + + 685896.74000,4899660.12000 685896.74000,4899660.12000 + + + + + 685896.74000,4899660.12000 + + + Monghidoro + 3618 + 1 + 0 + 0 + + + + + + + 661896.57000,4866692.43000 661896.57000,4866692.43000 + + + + + 661896.57000,4866692.43000 + + + Montale + 10143 + 1 + 0 + 0 + + + + + + + 637137.64000,4900625.56000 637137.64000,4900625.56000 + + + + + 637137.64000,4900625.56000 + + + Montecreto + 929 + 1 + 0 + 0 + + + + + + + 663058.32000,4865176.12000 663058.32000,4865176.12000 + + + + + 663058.32000,4865176.12000 + + + Montemurlo + 17502 + 1 + 0 + 0 + + + + + + + 655146.14000,4903917.01000 655146.14000,4903917.01000 + + + + + 655146.14000,4903917.01000 + + + Montese + 3181 + 1 + 0 + 0 + + + + + + + 680854.53000,4905388.46000 680854.53000,4905388.46000 + + + + + 680854.53000,4905388.46000 + + + Monzuno + 5254 + 1 + 0 + 0 + + + + + + + 703892.44000,4887624.73000 703892.44000,4887624.73000 + + + + + 703892.44000,4887624.73000 + + + Palazzuolo sul Senio + 1301 + 1 + 0 + 0 + + + + + + + 653901.53000,4866278.05000 653901.53000,4866278.05000 + + + + + 653901.53000,4866278.05000 + + + Pistoia + 84274 + 1 + 1 + 0 + + + + + + + 641450.94000,4876458.53000 641450.94000,4876458.53000 + + + + + 641450.94000,4876458.53000 + + + Piteglio + 1877 + 1 + 0 + 0 + + + + + + + 657705.77000,4891441.56000 657705.77000,4891441.56000 + + + + + 657705.77000,4891441.56000 + + + Porretta Terme + 4646 + 1 + 0 + 0 + + + + + + + 660036.84000,4885407.41000 660036.84000,4885407.41000 + + + + + 660036.84000,4885407.41000 + + + Sambuca Pistoiese + 1604 + 1 + 0 + 0 + + + + + + + 678374.68000,4898206.12000 678374.68000,4898206.12000 + + + + + 678374.68000,4898206.12000 + + + San Benedetto Val di Sambro + 4375 + 1 + 0 + 0 + + + + + + + 710195.30000,4866937.69000 710195.30000,4866937.69000 + + + + + 710195.30000,4866937.69000 + + + San Godenzo + 1187 + 1 + 0 + 0 + + + + + + + 643529.07000,4879703.82000 643529.07000,4879703.82000 + + + + + 643529.07000,4879703.82000 + + + San Marcello Pistoiese + 7142 + 1 + 0 + 0 + + + + + + + 686481.16000,4870207.09000 686481.16000,4870207.09000 + + + + + 686481.16000,4870207.09000 + + + San Piero a Sieve + 3758 + 1 + 0 + 0 + + + + + + + 688742.95000,4873672.85000 688742.95000,4873672.85000 + + + + + 688742.95000,4873672.85000 + + + Scarperia + 6778 + 1 + 0 + 0 + + + + + + + 641470.51000,4898995.21000 641470.51000,4898995.21000 + + + + + 641470.51000,4898995.21000 + + + Sestola + 2670 + 1 + 0 + 0 + + + + + + + 670374.33000,4868394.46000 670374.33000,4868394.46000 + + + + + 670374.33000,4868394.46000 + + + Vaiano + 9051 + 1 + 0 + 0 + + + + + + + 668148.55000,4905427.52000 668148.55000,4905427.52000 + + + + + 668148.55000,4905427.52000 + + + Vergato + 6730 + 1 + 0 + 0 + + + + + + + 672279.27000,4879402.97000 672279.27000,4879402.97000 + + + + + 672279.27000,4879402.97000 + + + Vernio + 5535 + 1 + 0 + 0 + + + + + + + 697335.81000,4867309.06000 697335.81000,4867309.06000 + + + + + 697335.81000,4867309.06000 + + + Vicchio + 7145 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/wfs_combined_filter.map b/msautotest/wxs/wfs_combined_filter.map new file mode 100644 index 0000000000..4311014835 --- /dev/null +++ b/msautotest/wxs/wfs_combined_filter.map @@ -0,0 +1,90 @@ +# +# Test WFS +# +# REQUIRES: SUPPORTS=WFS INPUT=OGR + +# RUN_PARMS: wfs_combined_filter.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=road&FILTER=F_CODE67" > [RESULT] + +MAP + +NAME WFS_COMBINED_FILTER_TEST +STATUS ON +SIZE 400 300 +EXTENT -67.5725 42 -58.9275 48.5 +UNITS METERS +IMAGECOLOR 255 255 255 +SHAPEPATH ./data + +# +# Start of web interface definition +# +WEB + + IMAGEPATH "tmp/" + IMAGEURL "/ms_tmp/" + + METADATA + "ows_updatesequence" "123" + "wfs_title" "Test simple wfs" + "wfs_onlineresource" "http://localhost/path/to/wfs_simple?" +# "wfs_srs" "EPSG:4326 EPSG:4269 EPSG:3978 EPSG:27700" + "wms_title" "Test simple wms" + "wms_onlineresource" "http://localhost/path/to/wms_simple?" + "wms_srs" "EPSG:4269 EPSG:4326 EPSG:3978" + "ows_abstract" "Test WFS Abstract" + "ows_keywordlist" "ogc,wfs,gml,om" + "ows_service_onlineresource" "http://localhost" + "ows_fees" "none" + "ows_accessconstraints" "none" + "ows_addresstype" "postal" + "ows_address" "123 SomeRoad Road" + "ows_city" "Toronto" + "ows_stateorprovince" "Ontario" + "ows_postcode" "xxx-xxx" + "ows_country" "Canada" + "ows_contactelectronicmailaddress" "tomkralidis@xxxxxxx.xxx" + "ows_contactvoicetelephone" "+xx-xxx-xxx-xxxx" + "ows_contactfacsimiletelephone" "+xx-xxx-xxx-xxxx" + "ows_contactperson" "Tom Kralidis" + "ows_contactorganization" "MapServer" + "ows_contactposition" "self" + "ows_hoursofservice" "0800h - 1600h EST" + "ows_contactinstructions" "during hours of service" + "ows_role" "staff" + "wms_feature_info_mime_type" "text/csv" + "ows_enable_request" "*" + END +END + +PROJECTION + "+proj=latlong +datum=WGS84" +END + + +# +# Start of layer definitions +# + +LAYER + NAME road + DATA road + FILTER ([FNODE_] = 754) + METADATA + "ows_title" "road" + "ows_description" "road" + "wfs_featureid" "ROAD_ID" + "gml_include_items" "all" + "gml_exclude_items" "ROAD_" + "gml_types" "auto" + END + TYPE LINE + STATUS ON + PROJECTION + "init=epsg:3978" + END + + TEMPLATE "wfs_ogr.map" + DUMP TRUE +END # Layer + +END # Map File diff --git a/msautotest/wxs/wfs_ogr_native_sql.map b/msautotest/wxs/wfs_ogr_native_sql.map index f35a04cead..0073ece2da 100644 --- a/msautotest/wxs/wfs_ogr_native_sql.map +++ b/msautotest/wxs/wfs_ogr_native_sql.map @@ -6,6 +6,9 @@ # simple bbox # # RUN_PARMS: wfs_ogr_native_sql_01.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=Geometry659159,4877386 696879,4898059" > [RESULT] + +# RUN_PARMS: wfs_ogr_native_sql_01_spatial_index_disabled.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns_spatial_index_disabled&OUTPUTFORMAT=GML2&FILTER=Geometry659159,4877386 696879,4898059" > [RESULT] + # # and, or, not # @@ -84,6 +87,9 @@ # PropertyIsNull # RUN_PARMS: wfs_ogr_native_sql_40.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=towns_with_null&FILTER=name" > [RESULT] +# SortBy +# RUN_PARMS: wfs_ogr_native_sql_41.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=towns&OUTPUTFORMAT=GML2&FILTER=nameFanano&SORTBY=name" > [RESULT_DEVERSION] + MAP NAME WFS_OGR_NATIVE_SQL_TEST @@ -140,6 +146,29 @@ LAYER TEMPLATE "wfs_ogr_native_sql.map" END # Layer +LAYER + NAME towns_spatial_index_disabled + DATA towns + CONNECTIONTYPE OGR + CONNECTION "./data/db.sqlite" + PROCESSING "NATIVE_SQL=YES" + PROCESSING "USE_SPATIAL_INDEX=NO" + METADATA + "ows_title" "towns_spatial_index_disabled" + "wfs_featureid" "ID" + "gml_include_items" "all" + "gml_types" "auto" + "wfs_getfeature_formatlist" "ogrgml" + END + TYPE POINT + STATUS ON + PROJECTION + "init=epsg:32632" + END + + TEMPLATE "wfs_ogr_native_sql.map" +END # Layer + LAYER NAME towns_with_null DATA towns_with_null From 1e8266bd20e6c568a439b0b3ea7405d2217fb699 Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Thu, 1 Dec 2016 14:21:24 -0400 Subject: [PATCH 080/221] change default max mapsize to 4096 (fixes #5349) --- mapserver.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapserver.h b/mapserver.h index a19a83e259..042403eb0d 100644 --- a/mapserver.h +++ b/mapserver.h @@ -259,7 +259,7 @@ extern "C" { #define MS_URL_LENGTH 1024 #define MS_MAXPATHLEN 1024 -#define MS_MAXIMAGESIZE_DEFAULT 2048 +#define MS_MAXIMAGESIZE_DEFAULT 4096 #define MS_MAXPROJARGS 20 #define MS_MAXJOINS 20 From 2934c6e18774cdfcd2f9f05f1453744058bc4120 Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Thu, 1 Dec 2016 16:34:09 -0400 Subject: [PATCH 081/221] add msautotest script for windows --- msautotest/create_postgis_test_data.bat | 49 +++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 msautotest/create_postgis_test_data.bat diff --git a/msautotest/create_postgis_test_data.bat b/msautotest/create_postgis_test_data.bat new file mode 100644 index 0000000000..7f6256cb8f --- /dev/null +++ b/msautotest/create_postgis_test_data.bat @@ -0,0 +1,49 @@ +REM Load PostgreSQL/PostGIS data for msautotest, on windows + +SET PGPASSWORD=postgres +set PG-PORT=5433 + +psql -c "drop database if exists msautotest" -U postgres -p %PG-PORT% +psql -c "create database msautotest" -U postgres -p %PG-PORT% +psql -c "create extension postgis" -d msautotest -U postgres -p %PG-PORT% +shp2pgsql -g the_geom query/data/bdry_counpy2.shp bdry_counpy2 | psql -U postgres -d msautotest -p %PG-PORT% +shp2pgsql -g the_geom -s 3978 wxs/data/popplace.shp popplace | psql -U postgres -d msautotest -p %PG-PORT% +shp2pgsql -g the_geom -s 3978 wxs/data/province.shp province | psql -U postgres -d msautotest -p %PG-PORT% +shp2pgsql -g the_geom -s 3978 wxs/data/road.shp road| psql -d msautotest -U postgres -p %PG-PORT% +shp2pgsql -s 4326 -g the_geom wxs/data/pattern1.shp pattern1 | psql -d msautotest -U postgres -p %PG-PORT% +shp2pgsql -s 4326 -g the_geom wxs/data/pattern2.shp pattern2 | psql -d msautotest -U postgres -p %PG-PORT% +shp2pgsql -s 4326 -g the_geom wxs/data/pattern3.shp pattern3 | psql -d msautotest -U postgres -p %PG-PORT% +shp2pgsql -s 4326 -g the_geom wxs/data/pattern4.shp pattern4 | psql -d msautotest -U postgres -p %PG-PORT% +shp2pgsql -s 4326 -g the_geom wxs/data/pattern5.shp pattern5 | psql -d msautotest -U postgres -p %PG-PORT% +shp2pgsql -s 4326 -g the_geom wxs/data/pattern6.shp pattern6 | psql -d msautotest -U postgres -p %PG-PORT% +shp2pgsql -s 4326 -g the_geom wxs/data/pattern7.shp pattern7 | psql -d msautotest -U postgres -p %PG-PORT% +shp2pgsql -s 4326 -g the_geom wxs/data/pattern8.shp pattern8 | psql -d msautotest -U postgres -p %PG-PORT% +shp2pgsql -s 4326 -g the_geom wxs/data/pattern9.shp pattern9 | psql -d msautotest -U postgres -p %PG-PORT% +shp2pgsql -s 4326 -g the_geom wxs/data/pattern10.shp pattern10 | psql -d msautotest -U postgres -p %PG-PORT% +shp2pgsql -s 4326 -g the_geom wxs/data/pattern11.shp pattern11 | psql -d msautotest -U postgres -p %PG-PORT% +shp2pgsql -s 4326 -g the_geom wxs/data/pattern12.shp pattern12 | psql -d msautotest -U postgres -p %PG-PORT% +shp2pgsql -s 4326 -g the_geom wxs/data/pattern13.shp pattern13 | psql -d msautotest -U postgres -p %PG-PORT% +shp2pgsql -s 4326 -g the_geom wxs/data/pattern14.shp pattern14 | psql -d msautotest -U postgres -p %PG-PORT% +shp2pgsql -s 4326 -g the_geom wxs/data/pattern15.shp pattern15 | psql -d msautotest -U postgres -p %PG-PORT% + +psql -U postgres -d msautotest -p %PG-PORT% -c "alter TABLE pattern1 RENAME COLUMN time to time_str; alter TABLE pattern1 ADD COLUMN time timestamp without time zone; update pattern1 set time = to_timestamp(time_str,'YYYYMMDD');" +psql -U postgres -d msautotest -p %PG-PORT% -c "alter TABLE pattern2 RENAME COLUMN time to time_str; alter TABLE pattern2 ADD COLUMN time timestamp without time zone; update pattern2 set time = to_timestamp(time_str,'YYYY-MM-DD\"T\"HH24:MI:SS\"Z\"');" +psql -U postgres -d msautotest -p %PG-PORT% -c "alter TABLE pattern3 RENAME COLUMN time to time_str; alter TABLE pattern3 ADD COLUMN time timestamp without time zone; update pattern3 set time = to_timestamp(time_str,'YYYY-MM-DD\"T\"HH24:MI:SS');" +psql -U postgres -d msautotest -p %PG-PORT% -c "alter TABLE pattern4 RENAME COLUMN time to time_str; alter TABLE pattern4 ADD COLUMN time timestamp without time zone; update pattern4 set time = to_timestamp(time_str,'YYYY-MM-DD HH24:MI:SS');" +psql -U postgres -d msautotest -p %PG-PORT% -c "alter TABLE pattern5 RENAME COLUMN time to time_str; alter TABLE pattern5 ADD COLUMN time timestamp without time zone; update pattern5 set time = to_timestamp(time_str,'YYYY-MM-DD\"T\"HH24:MI');" +psql -U postgres -d msautotest -p %PG-PORT% -c "alter TABLE pattern6 RENAME COLUMN time to time_str; alter TABLE pattern6 ADD COLUMN time timestamp without time zone; update pattern6 set time = to_timestamp(time_str,'YYYY-MM-DD HH24:MI');" +psql -U postgres -d msautotest -p %PG-PORT% -c "alter TABLE pattern7 RENAME COLUMN time to time_str; alter TABLE pattern7 ADD COLUMN time timestamp without time zone; update pattern7 set time = to_timestamp(time_str,'YYYY-MM-DD\"T\"HH24');" +psql -U postgres -d msautotest -p %PG-PORT% -c "alter TABLE pattern8 RENAME COLUMN time to time_str; alter TABLE pattern8 ADD COLUMN time timestamp without time zone; update pattern8 set time = to_timestamp(time_str,'YYYY-MM-DD HH24');" +psql -U postgres -d msautotest -p %PG-PORT% -c "alter TABLE pattern9 RENAME COLUMN time to time_str; alter TABLE pattern9 ADD COLUMN time timestamp without time zone; update pattern9 set time = to_timestamp(time_str,'YYYY-MM-DD');" +psql -U postgres -d msautotest -p %PG-PORT% -c "alter TABLE pattern10 RENAME COLUMN time to time_str; alter TABLE pattern10 ADD COLUMN time timestamp without time zone; update pattern10 set time = to_timestamp(time_str,'YYYY-MM');" +psql -U postgres -d msautotest -p %PG-PORT% -c "alter TABLE pattern11 RENAME COLUMN time to time_str; alter TABLE pattern11 ADD COLUMN time timestamp without time zone; update pattern11 set time = to_timestamp(time_str,'YYYY');" +psql -U postgres -d msautotest -p %PG-PORT% -c "alter TABLE pattern12 RENAME COLUMN time to time_str; alter TABLE pattern12 ADD COLUMN time time without time zone; update pattern12 set time = to_timestamp(time_str,'\"T\"HH24:MI:SSZ')::time;" +psql -U postgres -d msautotest -p %PG-PORT% -c "alter TABLE pattern13 RENAME COLUMN time to time_str; alter TABLE pattern13 ADD COLUMN time time without time zone; update pattern13 set time = to_timestamp(time_str,'THH24:MI:SS')::time;" +psql -U postgres -d msautotest -p %PG-PORT% -c "alter TABLE pattern14 RENAME COLUMN time to time_str; alter TABLE pattern14 ADD COLUMN time timestamp without time zone; update pattern14 set time = to_timestamp(time_str,'YYYY-MM-DD HH24:MI:SSZ');" +psql -U postgres -d msautotest -p %PG-PORT% -c "alter TABLE pattern15 RENAME COLUMN time to time_str; alter TABLE pattern15 ADD COLUMN time timestamp without time zone; update pattern15 set time = to_timestamp(time_str,'YYYY-MM-DDZ');" +psql -U postgres -d msautotest -p %PG-PORT% -c "CREATE TABLE point3d (ID SERIAL); SELECT AddGeometryColumn('public', 'point3d', 'the_geom', 27700, 'POINT', 3); INSERT INTO point3d (the_geom) VALUES (GeomFromEWKT('SRID=27700;POINT(1 2 3)'));" +psql -U postgres -d msautotest -p %PG-PORT% -c "CREATE TABLE multipoint3d (ID SERIAL); SELECT AddGeometryColumn('public', 'multipoint3d', 'the_geom', 27700, 'MULTIPOINT', 3); INSERT INTO multipoint3d (the_geom) VALUES (GeomFromEWKT('SRID=27700;MULTIPOINT(1 2 3,4 5 6)'));" +psql -U postgres -d msautotest -p %PG-PORT% -c "CREATE TABLE linestring3d (ID SERIAL); SELECT AddGeometryColumn('public', 'linestring3d', 'the_geom', 27700, 'LINESTRING', 3); INSERT INTO linestring3d (the_geom) VALUES (GeomFromEWKT('SRID=27700;LINESTRING(1 2 3,4 5 6)'));" +psql -U postgres -d msautotest -p %PG-PORT% -c "CREATE TABLE multilinestring3d (ID SERIAL); SELECT AddGeometryColumn('public', 'multilinestring3d', 'the_geom', 27700, 'MULTILINESTRING', 3); INSERT INTO multilinestring3d (the_geom) VALUES (GeomFromEWKT('SRID=27700;MULTILINESTRING((1 2 3,4 5 6),(7 8 9,10 11 12))'));" +psql -U postgres -d msautotest -p %PG-PORT% -c "CREATE TABLE polygon3d (ID SERIAL); SELECT AddGeometryColumn('public', 'polygon3d', 'the_geom', 27700, 'POLYGON', 3); INSERT INTO polygon3d (the_geom) VALUES (GeomFromEWKT('SRID=27700;POLYGON((0 0 1,10 0 2,10 10 3,0 10 4,0 0 1))')); INSERT INTO polygon3d (the_geom) VALUES (GeomFromEWKT('SRID=27700;POLYGON((0 0 1,10 0 2,10 10 3,0 10 4,0 0 1),(1 1 2,1 9 3,9 9 4,9 1 5,1 1 2))'));" +psql -U postgres -d msautotest -p %PG-PORT% -c "CREATE TABLE multipolygon3d (ID SERIAL); SELECT AddGeometryColumn('public', 'multipolygon3d', 'the_geom', 27700, 'MULTIPOLYGON', 3); INSERT INTO multipolygon3d (the_geom) VALUES (GeomFromEWKT('SRID=27700;MULTIPOLYGON(((0 0 1,10 0 2,10 10 3,0 10 4,0 0 1),(1 1 2,1 9 3,9 9 4,9 1 5,1 1 2)),((10 10 0,10 20 1,20 20 2,20 10 3,10 10 0)))'));" From b7d1654c148c6d1071fe62391b5fbdbd98cb1cdd Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Thu, 1 Dec 2016 18:08:56 -0400 Subject: [PATCH 082/221] update msautotest for new maxsize (issue #5439) --- msautotest/misc/expected/runtime_sub_test_caps.xml | 4 ++-- msautotest/wxs/expected/ows_all_wms_capabilities.xml | 4 ++-- msautotest/wxs/expected/ows_all_wms_capabilities_post.xml | 4 ++-- msautotest/wxs/expected/ows_wms_capabilities.xml | 4 ++-- msautotest/wxs/expected/wms130_test_xml_escaping.xml | 4 ++-- msautotest/wxs/expected/wms_cap130.xml | 4 ++-- msautotest/wxs/expected/wms_cap130_postgis.xml | 4 ++-- msautotest/wxs/expected/wms_cap_latestversion.xml | 4 ++-- msautotest/wxs/expected/wms_cap_latestversion_postgis.xml | 4 ++-- msautotest/wxs/expected/wms_dimension_cap130.xml | 4 ++-- msautotest/wxs/expected/wms_empty_cap130.xml | 4 ++-- msautotest/wxs/expected/wms_empty_cap_latestversion.xml | 4 ++-- msautotest/wxs/expected/wms_inspire_scenario1_cap130.xml | 4 ++-- .../wxs/expected/wms_inspire_scenario1_cap130_eng.xml | 4 ++-- .../wxs/expected/wms_inspire_scenario1_cap130_ger.xml | 8 ++++---- msautotest/wxs/expected/wms_inspire_scenario2_cap130.xml | 4 ++-- .../wxs/expected/wms_inspire_scenario2_cap130_eng.xml | 4 ++-- .../wxs/expected/wms_inspire_scenario2_cap130_ger.xml | 8 ++++---- msautotest/wxs/expected/wms_time_cap130.xml | 4 ++-- .../wxs/expected/wms_time_cap130_postgis_postgis.xml | 4 ++-- 20 files changed, 44 insertions(+), 44 deletions(-) diff --git a/msautotest/misc/expected/runtime_sub_test_caps.xml b/msautotest/misc/expected/runtime_sub_test_caps.xml index a97cd44cb3..8e1f4c2acd 100644 --- a/msautotest/misc/expected/runtime_sub_test_caps.xml +++ b/msautotest/misc/expected/runtime_sub_test_caps.xml @@ -10,8 +10,8 @@ Content-Type: text/xml; charset=UTF-8 - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/ows_all_wms_capabilities.xml b/msautotest/wxs/expected/ows_all_wms_capabilities.xml index b47eaa53a6..9ae538b498 100644 --- a/msautotest/wxs/expected/ows_all_wms_capabilities.xml +++ b/msautotest/wxs/expected/ows_all_wms_capabilities.xml @@ -35,8 +35,8 @@ Content-Type: text/xml; charset=UTF-8 none none - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/ows_all_wms_capabilities_post.xml b/msautotest/wxs/expected/ows_all_wms_capabilities_post.xml index b47eaa53a6..9ae538b498 100644 --- a/msautotest/wxs/expected/ows_all_wms_capabilities_post.xml +++ b/msautotest/wxs/expected/ows_all_wms_capabilities_post.xml @@ -35,8 +35,8 @@ Content-Type: text/xml; charset=UTF-8 none none - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/ows_wms_capabilities.xml b/msautotest/wxs/expected/ows_wms_capabilities.xml index 94f19ea695..4fb89dc247 100644 --- a/msautotest/wxs/expected/ows_wms_capabilities.xml +++ b/msautotest/wxs/expected/ows_wms_capabilities.xml @@ -10,8 +10,8 @@ Content-Type: text/xml; charset=UTF-8 - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/wms130_test_xml_escaping.xml b/msautotest/wxs/expected/wms130_test_xml_escaping.xml index ac0ef89d78..80629757df 100644 --- a/msautotest/wxs/expected/wms130_test_xml_escaping.xml +++ b/msautotest/wxs/expected/wms130_test_xml_escaping.xml @@ -29,8 +29,8 @@ fees&fees accessconstraints&accessconstraints - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/wms_cap130.xml b/msautotest/wxs/expected/wms_cap130.xml index d3a6bcb741..beb6d4d0c9 100644 --- a/msautotest/wxs/expected/wms_cap130.xml +++ b/msautotest/wxs/expected/wms_cap130.xml @@ -33,8 +33,8 @@ Content-Type: text/xml; charset=UTF-8 None None 1 - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/wms_cap130_postgis.xml b/msautotest/wxs/expected/wms_cap130_postgis.xml index d3a6bcb741..beb6d4d0c9 100644 --- a/msautotest/wxs/expected/wms_cap130_postgis.xml +++ b/msautotest/wxs/expected/wms_cap130_postgis.xml @@ -33,8 +33,8 @@ Content-Type: text/xml; charset=UTF-8 None None 1 - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/wms_cap_latestversion.xml b/msautotest/wxs/expected/wms_cap_latestversion.xml index d3a6bcb741..beb6d4d0c9 100644 --- a/msautotest/wxs/expected/wms_cap_latestversion.xml +++ b/msautotest/wxs/expected/wms_cap_latestversion.xml @@ -33,8 +33,8 @@ Content-Type: text/xml; charset=UTF-8 None None 1 - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/wms_cap_latestversion_postgis.xml b/msautotest/wxs/expected/wms_cap_latestversion_postgis.xml index d3a6bcb741..beb6d4d0c9 100644 --- a/msautotest/wxs/expected/wms_cap_latestversion_postgis.xml +++ b/msautotest/wxs/expected/wms_cap_latestversion_postgis.xml @@ -33,8 +33,8 @@ Content-Type: text/xml; charset=UTF-8 None None 1 - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/wms_dimension_cap130.xml b/msautotest/wxs/expected/wms_dimension_cap130.xml index 13864d7044..4b3319a47d 100644 --- a/msautotest/wxs/expected/wms_dimension_cap130.xml +++ b/msautotest/wxs/expected/wms_dimension_cap130.xml @@ -10,8 +10,8 @@ Content-Type: text/xml; charset=UTF-8 - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/wms_empty_cap130.xml b/msautotest/wxs/expected/wms_empty_cap130.xml index 2e12eaf6c1..6902f3d60e 100644 --- a/msautotest/wxs/expected/wms_empty_cap130.xml +++ b/msautotest/wxs/expected/wms_empty_cap130.xml @@ -7,8 +7,8 @@ - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/wms_empty_cap_latestversion.xml b/msautotest/wxs/expected/wms_empty_cap_latestversion.xml index 2e12eaf6c1..6902f3d60e 100644 --- a/msautotest/wxs/expected/wms_empty_cap_latestversion.xml +++ b/msautotest/wxs/expected/wms_empty_cap_latestversion.xml @@ -7,8 +7,8 @@ - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/wms_inspire_scenario1_cap130.xml b/msautotest/wxs/expected/wms_inspire_scenario1_cap130.xml index dc571bd190..b653444de0 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario1_cap130.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario1_cap130.xml @@ -29,8 +29,8 @@ conditions unknown None - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/wms_inspire_scenario1_cap130_eng.xml b/msautotest/wxs/expected/wms_inspire_scenario1_cap130_eng.xml index dc571bd190..b653444de0 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario1_cap130_eng.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario1_cap130_eng.xml @@ -29,8 +29,8 @@ conditions unknown None - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml b/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml index bb2a59272b..15277cae90 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml @@ -29,8 +29,8 @@ conditions unknown None - 2048 - 2048 + 4096 + 4096 @@ -89,7 +89,7 @@ TN.RoadTransportNetwork.RoadArea - Verkehrsnetze: Stra฿enflไche + Verkehrsnetze: Stra๏ฟฝenfl๏ฟฝche myroadareaabstractger myroadareakeyword1 @@ -124,7 +124,7 @@ TN.RoadTransportNetwork.RoadLink - Verkehrsnetze: Stra฿ensegment + Verkehrsnetze: Stra๏ฟฝensegment myroadlinklayerabstractger myroadlinklayerkeyword1 diff --git a/msautotest/wxs/expected/wms_inspire_scenario2_cap130.xml b/msautotest/wxs/expected/wms_inspire_scenario2_cap130.xml index 8a208b5080..f1789f5774 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario2_cap130.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario2_cap130.xml @@ -29,8 +29,8 @@ conditions unknown None - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/wms_inspire_scenario2_cap130_eng.xml b/msautotest/wxs/expected/wms_inspire_scenario2_cap130_eng.xml index 8a208b5080..f1789f5774 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario2_cap130_eng.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario2_cap130_eng.xml @@ -29,8 +29,8 @@ conditions unknown None - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml b/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml index e2f352dd67..1619313ba6 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml @@ -29,8 +29,8 @@ conditions unknown None - 2048 - 2048 + 4096 + 4096 @@ -108,7 +108,7 @@ TN.RoadTransportNetwork.RoadArea - Verkehrsnetze: Stra฿enflไche + Verkehrsnetze: Stra๏ฟฝenfl๏ฟฝche myroadareaabstractger myroadareakeyword1 @@ -139,7 +139,7 @@ TN.RoadTransportNetwork.RoadLink - Verkehrsnetze: Stra฿ensegment + Verkehrsnetze: Stra๏ฟฝensegment myroadlinklayerabstractger myroadlinklayerkeyword1 diff --git a/msautotest/wxs/expected/wms_time_cap130.xml b/msautotest/wxs/expected/wms_time_cap130.xml index cf79553e3e..b891651250 100644 --- a/msautotest/wxs/expected/wms_time_cap130.xml +++ b/msautotest/wxs/expected/wms_time_cap130.xml @@ -10,8 +10,8 @@ Content-Type: text/xml; charset=UTF-8 none - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/wms_time_cap130_postgis_postgis.xml b/msautotest/wxs/expected/wms_time_cap130_postgis_postgis.xml index cf79553e3e..b891651250 100644 --- a/msautotest/wxs/expected/wms_time_cap130_postgis_postgis.xml +++ b/msautotest/wxs/expected/wms_time_cap130_postgis_postgis.xml @@ -10,8 +10,8 @@ Content-Type: text/xml; charset=UTF-8 none - 2048 - 2048 + 4096 + 4096 From bfa784cb0ea9eb78ea29bd9ab1561b3b187ff884 Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Thu, 1 Dec 2016 18:22:36 -0400 Subject: [PATCH 083/221] fix encoding of msautotest files --- msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml | 4 ++-- msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml b/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml index 15277cae90..f8771c8f6d 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml @@ -89,7 +89,7 @@ TN.RoadTransportNetwork.RoadArea - Verkehrsnetze: Stra๏ฟฝenfl๏ฟฝche + Verkehrsnetze: StraรŸenflรคche myroadareaabstractger myroadareakeyword1 @@ -124,7 +124,7 @@ TN.RoadTransportNetwork.RoadLink - Verkehrsnetze: Stra๏ฟฝensegment + Verkehrsnetze: StraรŸensegment myroadlinklayerabstractger myroadlinklayerkeyword1 diff --git a/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml b/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml index 1619313ba6..0a06b2b9e4 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml @@ -108,7 +108,7 @@ TN.RoadTransportNetwork.RoadArea - Verkehrsnetze: Stra๏ฟฝenfl๏ฟฝche + Verkehrsnetze: StraรŸenflรคche myroadareaabstractger myroadareakeyword1 @@ -139,7 +139,7 @@ TN.RoadTransportNetwork.RoadLink - Verkehrsnetze: Stra๏ฟฝensegment + Verkehrsnetze: StraรŸensegment myroadlinklayerabstractger myroadlinklayerkeyword1 From 3ace1e11742e9e3900b468df0a0a32958ed3abbb Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Thu, 1 Dec 2016 18:55:13 -0400 Subject: [PATCH 084/221] revert to original files --- .../wxs/expected/wms_inspire_scenario1_cap130_ger.xml | 8 ++++---- .../wxs/expected/wms_inspire_scenario2_cap130_ger.xml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml b/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml index f8771c8f6d..bb2a59272b 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml @@ -29,8 +29,8 @@ conditions unknown None - 4096 - 4096 + 2048 + 2048 @@ -89,7 +89,7 @@ TN.RoadTransportNetwork.RoadArea - Verkehrsnetze: StraรŸenflรคche + Verkehrsnetze: Stra฿enflไche myroadareaabstractger myroadareakeyword1 @@ -124,7 +124,7 @@ TN.RoadTransportNetwork.RoadLink - Verkehrsnetze: StraรŸensegment + Verkehrsnetze: Stra฿ensegment myroadlinklayerabstractger myroadlinklayerkeyword1 diff --git a/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml b/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml index 0a06b2b9e4..e2f352dd67 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml @@ -29,8 +29,8 @@ conditions unknown None - 4096 - 4096 + 2048 + 2048 @@ -108,7 +108,7 @@ TN.RoadTransportNetwork.RoadArea - Verkehrsnetze: StraรŸenflรคche + Verkehrsnetze: Stra฿enflไche myroadareaabstractger myroadareakeyword1 @@ -139,7 +139,7 @@ TN.RoadTransportNetwork.RoadLink - Verkehrsnetze: StraรŸensegment + Verkehrsnetze: Stra฿ensegment myroadlinklayerabstractger myroadlinklayerkeyword1 From 829eef93e6fa910c8d72788000a360568ec61cb1 Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Thu, 1 Dec 2016 19:00:01 -0400 Subject: [PATCH 085/221] repair encoding of msautotest files --- msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml | 4 ++-- msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml b/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml index bb2a59272b..51083c4ce9 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml @@ -29,8 +29,8 @@ conditions unknown None - 2048 - 2048 + 4096 + 4096 diff --git a/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml b/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml index e2f352dd67..f83017717f 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml @@ -29,8 +29,8 @@ conditions unknown None - 2048 - 2048 + 4096 + 4096 From 45037eb0601e2f48ae548e2cd28b29b429644870 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 1 Dec 2016 20:29:06 +0100 Subject: [PATCH 086/221] OGR: add a "wfs_use_default_extent_for_getfeature" "yes" LAYER.METADATA When this is defined and a WFS request has no BBOX filter, do not use the MAP.EXTENT as a default BBX filter, which can hurt performance and is useless if MAP.EXTENT covers the whole layer. CREDITS: Funded by: Regione Toscana - Settore Sistema Informativo Territoriale ed Ambientale (CIG: 644544015A) --- mapogcfilter.c | 14 ++++++- mapogr.cpp | 12 ++++-- mapquery.c | 4 +- mapserver.h | 4 +- mapwfs.c | 12 +++++- ..._disable_default_extent_for_getfeature.xml | 38 +++++++++++++++++++ .../wxs/expected/wfs_ogr_native_sql_42.xml | 38 +++++++++++++++++++ msautotest/wxs/wfs_ogr_native_sql.map | 28 ++++++++++++++ 8 files changed, 141 insertions(+), 9 deletions(-) create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_06_disable_default_extent_for_getfeature.xml create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_42.xml diff --git a/mapogcfilter.c b/mapogcfilter.c index 04d03e4ffd..0c226e180b 100644 --- a/mapogcfilter.c +++ b/mapogcfilter.c @@ -667,9 +667,19 @@ int FLTLayerApplyPlainFilterToLayer(FilterEncodingNode *psNode, mapObj *map, pszExpression = FLTGetCommonExpression(psNode, lp); if (pszExpression) { + const char* pszUseDefaultExtent; FilterEncodingNode* psTopBBOX; rectObj rect = map->extent; + pszUseDefaultExtent = msOWSLookupMetadata(&(lp->metadata), "F", + "use_default_extent_for_getfeature"); + if( pszUseDefaultExtent && CSLTestBoolean(pszUseDefaultExtent) && + lp->connectiontype == MS_OGR ) + { + const rectObj rectInvalid = MS_INIT_INVALID_RECT; + rect = rectInvalid; + } + psTopBBOX = FLTGetTopBBOX(psNode); if( psTopBBOX ) { @@ -706,9 +716,9 @@ int FLTLayerApplyPlainFilterToLayer(FilterEncodingNode *psNode, mapObj *map, if(map->debug == MS_DEBUGLEVEL_VVV) { if( pszExpression ) - msDebug("FLTLayerApplyPlainFilterToLayer(): %s, rect=%f,%f,%f,%f\n", pszExpression, rect.minx, rect.miny, rect.maxx, rect.maxy); + msDebug("FLTLayerApplyPlainFilterToLayer(): %s, rect=%.15g,%.15g,%.15g,%.15g\n", pszExpression, rect.minx, rect.miny, rect.maxx, rect.maxy); else - msDebug("FLTLayerApplyPlainFilterToLayer(): rect=%f,%f,%f,%f\n", rect.minx, rect.miny, rect.maxx, rect.maxy); + msDebug("FLTLayerApplyPlainFilterToLayer(): rect=%.15g,%.15g,%.15g,%.15g\n", rect.minx, rect.miny, rect.maxx, rect.maxy); } status = FLTApplyFilterToLayerCommonExpressionWithRect(map, iLayerIndex, diff --git a/mapogr.cpp b/mapogr.cpp index 97529a8786..45c54d0100 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -2092,6 +2092,8 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps } char *select = (psInfo->pszSelect) ? msStrdup(psInfo->pszSelect) : NULL; + const rectObj rectInvalid = MS_INIT_INVALID_RECT; + bool bIsValidRect = memcmp(&rect, &rectInvalid, sizeof(rect)) != 0; // we'll go strictly two possible ways: // 1) GetLayer + SetFilter @@ -2192,13 +2194,15 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps rect.miny = MAX(psInfo->rect.miny, rect.miny); rect.maxx = MIN(psInfo->rect.maxx, rect.maxx); rect.maxy = MIN(psInfo->rect.maxy, rect.maxy); + bIsValidRect = true; } psInfo->rect = rect; bool bSpatialiteAddOrderByFID = false; if( psInfo->dialect && EQUAL(psInfo->dialect, "Spatialite") && - psInfo->pszMainTableName != NULL && psInfo->bHasSpatialIndex ) + psInfo->pszMainTableName != NULL && psInfo->bHasSpatialIndex && + bIsValidRect ) { select = msStringConcatenate(select, " JOIN "); @@ -2255,7 +2259,7 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps bool bOffsetAlreadyAdded = false; // use spatial index - if (psInfo->dialect) { + if (psInfo->dialect && bIsValidRect ) { if (EQUAL(psInfo->dialect, "PostgreSQL")) { if (filter) filter = msStringConcatenate(filter, " AND"); const char *col = OGR_L_GetGeometryColumn(psInfo->hLayer); // which geom field?? @@ -2391,7 +2395,7 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps ACQUIRE_OGR_LOCK; - if( OGR_L_GetGeomType( psInfo->hLayer ) != wkbNone ) { + if( OGR_L_GetGeomType( psInfo->hLayer ) != wkbNone && bIsValidRect ) { if (rect.minx == rect.maxx && rect.miny == rect.maxy) { OGRGeometryH hSpatialFilterPoint = OGR_G_CreateGeometry( wkbPoint ); @@ -2423,7 +2427,7 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps psInfo->rect = rect; if (layer->debug >= MS_DEBUGLEVEL_VVV) - msDebug("msOGRFileWhichShapes: Setting spatial filter to %f %f %f %f\n", rect.minx, rect.miny, rect.maxx, rect.maxy ); + msDebug("msOGRFileWhichShapes: Setting spatial filter to %.15g %.15g %.15g %.15g\n", rect.minx, rect.miny, rect.maxx, rect.maxy ); /* ------------------------------------------------------------------ * Apply an attribute filter if we have one prefixed with a WHERE diff --git a/mapquery.c b/mapquery.c index a94ccb16e1..968354a514 100644 --- a/mapquery.c +++ b/mapquery.c @@ -670,6 +670,7 @@ int msQueryByFilter(mapObj *map) expressionObj old_filter; rectObj search_rect; + const rectObj invalid_rect = MS_INIT_INVALID_RECT; shapeObj shape; @@ -761,9 +762,10 @@ int msQueryByFilter(mapObj *map) if(status != MS_SUCCESS) goto query_error; search_rect = map->query.rect; + #ifdef USE_PROJ lp->project = msProjectionsDiffer(&(lp->projection), &(map->projection)); - if(lp->project) + if(lp->project && memcmp( &search_rect, &invalid_rect, sizeof(search_rect) ) != 0 ) msProjectRect(&(map->projection), &(lp->projection), &search_rect); /* project the searchrect to source coords */ #endif diff --git a/mapserver.h b/mapserver.h index 042403eb0d..e756d9a349 100644 --- a/mapserver.h +++ b/mapserver.h @@ -474,7 +474,9 @@ extern "C" { #define MS_IS_VALID_ARRAY_INDEX(index, size) ((index<0 || index>=size)?MS_FALSE:MS_TRUE) #define MS_CONVERT_UNIT(src_unit, dst_unit, value) (value * msInchesPerUnit(src_unit,0) / msInchesPerUnit(dst_unit,0)) - + +#define MS_INIT_INVALID_RECT { -1e300, -1e300, 1e300, 1e300 } + #endif /* General enumerated types - needed by scripts */ diff --git a/mapwfs.c b/mapwfs.c index 3656f17e09..bac3f218de 100644 --- a/mapwfs.c +++ b/mapwfs.c @@ -37,6 +37,7 @@ /* There is a dependency to GDAL/OGR for the GML driver and MiniXML parser */ #include "cpl_minixml.h" #include "cpl_conv.h" +#include "cpl_string.h" #include "mapogcfilter.h" #include "mapowscommon.h" @@ -2138,6 +2139,7 @@ static int msWFSRunBasicGetFeature(mapObj* map, const char *pszMapSRS=NULL, *pszLayerSRS=NULL; rectObj ext; int status; + const char* pszUseDefaultExtent; map->query.type = MS_QUERY_BY_RECT; /* setup the query */ map->query.mode = MS_QUERY_MULTIPLE; @@ -2149,7 +2151,15 @@ static int msWFSRunBasicGetFeature(mapObj* map, if(!paramsObj->pszSrs) pszMapSRS = msOWSGetEPSGProj(&(map->projection), &(map->web.metadata), "FO", MS_TRUE); - if (msOWSGetLayerExtent(map, lp, "FO", &ext) == MS_SUCCESS) { + pszUseDefaultExtent = msOWSLookupMetadata(&(lp->metadata), "F", + "use_default_extent_for_getfeature"); + if( pszUseDefaultExtent && CSLTestBoolean(pszUseDefaultExtent) && + lp->connectiontype == MS_OGR ) + { + const rectObj rectInvalid = MS_INIT_INVALID_RECT; + map->query.rect = rectInvalid; + } + else if (msOWSGetLayerExtent(map, lp, "FO", &ext) == MS_SUCCESS) { /* For a single point layer, to avoid numerical precision issues */ /* when reprojection is involved */ diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_06_disable_default_extent_for_getfeature.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_06_disable_default_extent_for_getfeature.xml new file mode 100644 index 0000000000..0528913985 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_06_disable_default_extent_for_getfeature.xml @@ -0,0 +1,38 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + + + + 643513.360000,4896928.190000 643513.360000,4896928.190000 + + + + + 643513.360000,4896928.190000 + + + Fanano + 2910 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_42.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_42.xml new file mode 100644 index 0000000000..6bbe411da3 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_42.xml @@ -0,0 +1,38 @@ +Content-Type: text/xml; subtype=gml/2.1.2; charset=UTF-8 + + + + + + 672130.72000,4902785.47000 672130.72000,4902785.47000 + + + + + + + + 672130.72000,4902785.47000 672130.72000,4902785.47000 + + + + + 672130.72000,4902785.47000 + + + Grizzana Morandi + 3694 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/wfs_ogr_native_sql.map b/msautotest/wxs/wfs_ogr_native_sql.map index 0073ece2da..3b9969177d 100644 --- a/msautotest/wxs/wfs_ogr_native_sql.map +++ b/msautotest/wxs/wfs_ogr_native_sql.map @@ -20,6 +20,9 @@ # # RUN_PARMS: wfs_ogr_native_sql_05.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namefanano" > [RESULT] # RUN_PARMS: wfs_ogr_native_sql_06.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=nameFanano" > [RESULT] + +# RUN_PARMS: wfs_ogr_native_sql_06_disable_default_extent_for_getfeature.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns_disable_default_extent_for_getfeature&OUTPUTFORMAT=GML2&FILTER=nameFanano" > [RESULT] + # RUN_PARMS: wfs_ogr_native_sql_07.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=namefanano" > [RESULT] # RUN_PARMS: wfs_ogr_native_sql_08.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=towns&OUTPUTFORMAT=GML2&FILTER=nameFanano" > [RESULT] # @@ -90,6 +93,8 @@ # SortBy # RUN_PARMS: wfs_ogr_native_sql_41.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=towns&OUTPUTFORMAT=GML2&FILTER=nameFanano&SORTBY=name" > [RESULT_DEVERSION] +# RUN_PARMS: wfs_ogr_native_sql_42.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAME=towns_disable_default_extent_for_getfeature&OUTPUTFORMAT=GML2&COUNT=1" > [RESULT_DEVERSION] + MAP NAME WFS_OGR_NATIVE_SQL_TEST @@ -146,6 +151,29 @@ LAYER TEMPLATE "wfs_ogr_native_sql.map" END # Layer +LAYER + NAME towns_disable_default_extent_for_getfeature + DATA towns + CONNECTIONTYPE OGR + CONNECTION "./data/db.sqlite" + PROCESSING "NATIVE_SQL=YES" + METADATA + "ows_title" "towns_disable_default_extent_for_getfeature" + "wfs_featureid" "ID" + "gml_include_items" "all" + "gml_types" "auto" + "wfs_getfeature_formatlist" "ogrgml" + "wfs_use_default_extent_for_getfeature" "yes" + END + TYPE POINT + STATUS ON + PROJECTION + "init=epsg:32632" + END + + TEMPLATE "wfs_ogr_native_sql.map" +END # Layer + LAYER NAME towns_spatial_index_disabled DATA towns From 491397c126ebec3e8a97f5c91e018546cc168fcf Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sun, 4 Dec 2016 00:55:58 +0100 Subject: [PATCH 087/221] OGR Spatialite: do not be case sensitive if DATA is a SELECT ... FROM table_name --- mapogr.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mapogr.cpp b/mapogr.cpp index 45c54d0100..07ef04bbbe 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -1376,7 +1376,7 @@ static void msOGRFileOpenSpatialite( layerObj *layer, char* pszRequest = NULL; pszRequest = msStringConcatenate(pszRequest, - "SELECT * FROM sqlite_master WHERE type = 'table' AND name = lower('"); + "SELECT name FROM sqlite_master WHERE type = 'table' AND name = lower('"); pszRequest = msStringConcatenate(pszRequest, psInfo->pszMainTableName); pszRequest = msStringConcatenate(pszRequest, "')"); OGRLayerH hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszRequest, NULL, NULL ); @@ -1387,7 +1387,13 @@ static void msOGRFileOpenSpatialite( layerObj *layer, OGRFeatureH hFeature = OGR_L_GetNextFeature(hLayer); psInfo->bIsOKForSQLCompose = (hFeature != NULL); if( hFeature ) + { + msFree(psInfo->pszMainTableName); + msFree(psInfo->pszSpatialFilterTableName); + psInfo->pszMainTableName = msStrdup( OGR_F_GetFieldAsString( hFeature, 0) ); + psInfo->pszSpatialFilterTableName = msStrdup( psInfo->pszMainTableName ); OGR_F_Destroy(hFeature); + } OGR_DS_ReleaseResultSet( psInfo->hDS, hLayer ); } if( psInfo->bIsOKForSQLCompose ) @@ -1510,6 +1516,7 @@ static void msOGRFileOpenSpatialite( layerObj *layer, pszRequest = msStringConcatenate(pszRequest, "'"); psInfo->bHasSpatialIndex = false; + //msDebug("msOGRFileOpen(): %s", pszRequest); OGRLayerH hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, pszRequest, NULL, NULL ); if( hLayer ) From 022d24bd34196b6dca67053fb797a6980210bc54 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Thu, 1 Dec 2016 18:59:05 +0100 Subject: [PATCH 088/221] Backport #4928 and #5356 --- mapogr.cpp | 52 ++++++++++++++++++++++++++++------------------------ mappostgis.c | 4 ++-- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/mapogr.cpp b/mapogr.cpp index 1961f7a438..d3952ea312 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -1118,18 +1118,15 @@ msOGRFileOpen(layerObj *layer, const char *connection ) RELEASE_OGR_LOCK; if( hDS == NULL ) { - if( strlen(CPLGetLastErrorMsg()) == 0 ) - msSetError(MS_OGRERR, - "Open failed for OGR connection in layer `%s'. " - "File not found or unsupported format.", - "msOGRFileOpen()", - layer->name?layer->name:"(null)" ); - else - msSetError(MS_OGRERR, - "Open failed for OGR connection in layer `%s'.\n%s\n", - "msOGRFileOpen()", - layer->name?layer->name:"(null)", - CPLGetLastErrorMsg() ); + msSetError(MS_OGRERR, + "Open failed for OGR connection in layer `%s'. " + "Check logs.", + "msOGRFileOpen()", + layer->name?layer->name:"(null)" ); + if( strlen(CPLGetLastErrorMsg()) != 0 ) + msDebug("Open failed for OGR connection in layer `%s'.\n%s\n", + layer->name?layer->name:"(null)", + CPLGetLastErrorMsg() ); CPLFree( pszDSName ); CPLFree( pszLayerDef ); return NULL; @@ -1154,10 +1151,13 @@ msOGRFileOpen(layerObj *layer, const char *connection ) ACQUIRE_OGR_LOCK; hLayer = OGR_DS_ExecuteSQL( hDS, pszLayerDef, NULL, NULL ); if( hLayer == NULL ) { - msSetError(MS_OGRERR, - "ExecuteSQL(%s) failed.\n%s", - "msOGRFileOpen()", - pszLayerDef, CPLGetLastErrorMsg() ); + msSetError(MS_OGRERR, + "ExecuteSQL(%s) failed. Check logs", + "msOGRFileOpen()", + pszLayerDef); + msDebug( + "ExecuteSQL(%s) failed.\n%s", + pszLayerDef, CPLGetLastErrorMsg() ); RELEASE_OGR_LOCK; msConnPoolRelease( layer, hDS ); CPLFree( pszLayerDef ); @@ -1189,9 +1189,11 @@ msOGRFileOpen(layerObj *layer, const char *connection ) } if (hLayer == NULL) { - msSetError(MS_OGRERR, "GetLayer(%s) failed for OGR connection `%s'.", - "msOGRFileOpen()", - pszLayerDef, connection ); + msSetError(MS_OGRERR, "GetLayer(%s) failed for OGR connection. Check logs.", + "msOGRFileOpen()", + pszLayerDef); + msDebug("GetLayer(%s) failed for OGR connection `%s'.", + pszLayerDef, connection ); CPLFree( pszLayerDef ); msConnPoolRelease( layer, hDS ); return NULL; @@ -1353,10 +1355,12 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, if( OGR_L_SetAttributeFilter( psInfo->hLayer, layer->filter.string+6 ) != OGRERR_NONE ) { msSetError(MS_OGRERR, - "SetAttributeFilter(%s) failed on layer %s.\n%s", + "SetAttributeFilter(%s) failed on layer %s.", "msOGRFileWhichShapes()", - layer->filter.string+6, layer->name?layer->name:"(null)", - CPLGetLastErrorMsg() ); + layer->filter.string+6, layer->name?layer->name:"(null)"); + msDebug("SetAttributeFilter(%s) failed on layer %s.\n%s", + layer->filter.string+6, layer->name?layer->name:"(null)", + CPLGetLastErrorMsg() ); RELEASE_OGR_LOCK; return MS_FAILURE; } @@ -1559,8 +1563,8 @@ msOGRFileNextShape(layerObj *layer, shapeObj *shape, if( (hFeature = OGR_L_GetNextFeature( psInfo->hLayer )) == NULL ) { psInfo->last_record_index_read = -1; if( CPLGetLastErrorType() == CE_Failure ) { - msSetError(MS_OGRERR, "%s", "msOGRFileNextShape()", - CPLGetLastErrorMsg() ); + msSetError(MS_OGRERR, "OGR error. check logs", "msOGRFileNextShape()"); + msDebug("msOGRFileNextShape() error: %s", CPLGetLastErrorMsg() ); RELEASE_OGR_LOCK; return MS_FAILURE; } else { diff --git a/mappostgis.c b/mappostgis.c index 7aa3149c9b..0cf4eee322 100644 --- a/mappostgis.c +++ b/mappostgis.c @@ -2309,7 +2309,8 @@ int msPostGISLayerOpen(layerObj *layer) } } - msSetError(MS_QUERYERR, "Database connection failed (%s) with connect string '%s'\nIs the database running? Is it allowing connections? Does the specified user exist? Is the password valid? Is the database on the standard port?", "msPostGISLayerOpen()", PQerrorMessage(layerinfo->pgconn), maskeddata); + msDebug("Database connection failed (%s) with connect string '%s'\nIs the database running? Is it allowing connections? Does the specified user exist? Is the password valid? Is the database on the standard port?.\n", PQerrorMessage(layerinfo->pgconn), maskeddata); + msSetError(MS_QUERYERR, "Database connection failed.\nIs the database running? Is it allowing connections? Does the specified user exist? Is the password valid? Is the database on the standard port?", "msPostGISLayerOpen()"); if(layerinfo->pgconn) PQfinish(layerinfo->pgconn); free(maskeddata); @@ -2336,7 +2337,6 @@ int msPostGISLayerOpen(layerObj *layer) * times there will be a leak... */ return MS_FAILURE; } - } } From e9d06071b534a8658ee1e5498f945b9995a125df Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Mon, 29 Aug 2016 12:58:14 +0200 Subject: [PATCH 089/221] 7-0 backport: Fix travis builds, remove 5.6 until build fix is worked on --- .travis.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index d1d295814e..34c8d6ffb0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: php php: - 5.5 - - 5.6 +# - 5.6 env: global: @@ -42,11 +42,11 @@ compiler: - clang before_install: - - sudo mv /etc/apt/sources.list.d/pgdg-source.list* /tmp - - sudo apt-get remove postgis libpq5 libpq-dev postgresql-9.1-postgis postgresql-9.2-postgis postgresql-9.3-postgis postgresql-9.1 postgresql-9.2 postgresql-9.3 libgdal1 + - sudo mv /etc/apt/sources.list.d/pgdg* /tmp + - sudo apt-get remove postgis libpq5 libpq-dev postgresql-9.1-postgis postgresql-9.1-postgis-2.2-scripts postgresql-9.2-postgis postgresql-9.3-postgis postgresql-9.1 postgresql-9.2 postgresql-9.3 libgdal1 libgdal1-dev libgdal-dev - sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable - sudo apt-get update - - sudo apt-get install bison flex swig cmake librsvg2-dev colordiff postgis postgresql-9.1 postgresql-9.1-postgis-2.1 postgresql-9.1-postgis-2.1-scripts libpq-dev libpng12-dev libjpeg-dev libgif-dev libgeos-dev libgd2-xpm-dev libfreetype6-dev libfcgi-dev libcurl4-gnutls-dev libcairo2-dev libgdal1-dev libproj-dev libxml2-dev python-dev php5-dev libexempi-dev lcov lftp + - sudo apt-get install bison flex python-lxml libfribidi-dev swig cmake librsvg2-dev colordiff postgis postgresql-9.1 postgresql-9.1-postgis-2.1 postgresql-9.1-postgis-2.1-scripts libpq-dev libpng12-dev libjpeg-dev libgif-dev libgeos-dev libgd2-xpm-dev libfreetype6-dev libfcgi-dev libcurl4-gnutls-dev libcairo2-dev libgdal1-dev libproj-dev libxml2-dev python-dev php5-dev libexempi-dev lcov lftp libgdal-dev libgdal1h - sudo pip install git+git://github.com/tbonfort/cpp-coveralls.git@extensions - cd msautotest - ./create_postgis_test_data.sh From d5cc5840683bded229dbc2cc7d534db6d1e1f386 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Fri, 2 Sep 2016 17:22:19 +0200 Subject: [PATCH 090/221] Fix build issue with php >= 5.6.25 (#5318) --- .travis.yml | 2 +- mapscript/php/error.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b5d53b8f53..5d1403fe5d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: php php: - 5.5 -# - 5.6 + - 5.6 env: global: diff --git a/mapscript/php/error.c b/mapscript/php/error.c index a13de647f3..2e96eea27b 100644 --- a/mapscript/php/error.c +++ b/mapscript/php/error.c @@ -31,6 +31,17 @@ #include "php_mapscript.h" +#if PHP_VERSION_ID >= 50625 +#undef ZVAL_STRING +#define ZVAL_STRING(z, s, duplicate) do { \ + const char *__s=(s); \ + zval *__z = (z); \ + Z_STRLEN_P(__z) = strlen(__s); \ + Z_STRVAL_P(__z) = (duplicate?estrndup(__s, Z_STRLEN_P(__z)):(char*)__s);\ + Z_TYPE_P(__z) = IS_STRING; \ +} while (0) +#endif + zend_class_entry *mapscript_ce_error; ZEND_BEGIN_ARG_INFO_EX(error___get_args, 0, 0, 1) From 82ec23b2336087df94bfe41f04bec4dfb5102c2f Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Wed, 19 Oct 2016 16:32:47 +0200 Subject: [PATCH 091/221] Fix glyph orientation when switching from cairo to AGG (#5338) --- fontcache.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fontcache.c b/fontcache.c index a6eace565f..bc19c0eba7 100644 --- a/fontcache.c +++ b/fontcache.c @@ -273,11 +273,17 @@ outline_element* msGetGlyphOutline(face_element *face, glyph_element *glyph) { key.glyph = glyph; UT_HASH_FIND(hh,face->outline_cache,&key, sizeof(outline_element_key),oc); if(!oc) { + FT_Matrix matrix; + FT_Vector pen; FT_Error error; oc = msSmallMalloc(sizeof(outline_element)); if(MS_NINT(glyph->key.size * 96.0/72.0) != face->face->size->metrics.x_ppem) { FT_Set_Pixel_Sizes(face->face,0,MS_NINT(glyph->key.size * 96/72.0)); } + matrix.xx = matrix.yy = 0x10000L; + matrix.xy = matrix.yx = 0x00000L; + pen.x = pen.y = 0; + FT_Set_Transform(face->face, &matrix, &pen); error = FT_Load_Glyph(face->face,glyph->key.codepoint,FT_LOAD_DEFAULT/*|FT_LOAD_IGNORE_TRANSFORM*/|FT_LOAD_NO_HINTING|FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); if(error) { msSetError(MS_MISCERR, "unable to load glyph %ud for font \"%s\"", "msGetGlyphByIndex()",glyph->key.codepoint, face->font); From 93cc1edab40ed0e32c46beb3a22e881c08f00952 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Wed, 12 Oct 2016 15:31:00 +0200 Subject: [PATCH 092/221] Allow FEATURE->ITEMS to be set by URL (#5335) --- maplexer.c | 2387 ++++++++++++++++++++++++++-------------------------- maplexer.l | 2 +- 2 files changed, 1211 insertions(+), 1178 deletions(-) diff --git a/maplexer.c b/maplexer.c index ef6aa22967..63c7fa2c83 100644 --- a/maplexer.c +++ b/maplexer.c @@ -1,6 +1,6 @@ -#line 2 "/Users/tbonfort/dev/mapserver/maplexer.c" +#line 2 "/home/tbonfort/dev/mapserver/maplexer.c" -#line 4 "/Users/tbonfort/dev/mapserver/maplexer.c" +#line 4 "/home/tbonfort/dev/mapserver/maplexer.c" #define YY_INT_ALIGNED short int @@ -27,8 +27,8 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 0 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -66,7 +66,6 @@ typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; -typedef uint64_t flex_uint64_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; @@ -74,7 +73,6 @@ typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN @@ -105,6 +103,8 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif +#endif /* ! C99 */ + #endif /* ! FLEXINT_H */ #ifdef __cplusplus @@ -161,7 +161,15 @@ typedef unsigned int flex_uint32_t; /* Size of default input buffer. */ #ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else #define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -187,6 +195,7 @@ extern FILE *msyyin, *msyyout; #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) + #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ @@ -221,7 +230,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - yy_size_t yy_n_chars; + int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -291,7 +300,7 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* yy_hold_char holds the character lost when msyytext is formed. */ static char yy_hold_char; -static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +static int yy_n_chars; /* number of characters read into yy_ch_buf */ yy_size_t msyyleng; /* Points to current character in buffer. */ @@ -363,11 +372,17 @@ extern int msyylineno; int msyylineno = 1; extern char *msyytext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif #define yytext_ptr msyytext static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); +#if defined(__GNUC__) && __GNUC__ >= 3 +__attribute__((__noreturn__)) +#endif static void yy_fatal_error (yyconst char msg[] ); /* Done after the current pattern has been matched and before the @@ -375,7 +390,7 @@ static void yy_fatal_error (yyconst char msg[] ); */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ - msyyleng = (yy_size_t) (yy_cp - yy_bp); \ + msyyleng = (size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; @@ -614,7 +629,7 @@ static yyconst flex_int16_t yy_accept[2005] = 341, 341, 176, 0 } ; -static yyconst flex_int32_t yy_ec[256] = +static yyconst YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, @@ -646,7 +661,7 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[89] = +static yyconst YY_CHAR yy_meta[89] = { 0, 1, 1, 2, 1, 3, 1, 4, 1, 1, 5, 1, 1, 1, 1, 6, 7, 7, 7, 7, 3, @@ -659,231 +674,231 @@ static yyconst flex_int32_t yy_meta[89] = 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[2025] = +static yyconst flex_uint16_t yy_base[2025] = { 0, 0, 0, 86, 172, 260, 0, 348, 0, 89, 93, - 97, 99, 1016, 4555, 115, 4555, 4555, 0, 944, 115, + 97, 99, 936, 4574, 115, 4574, 4574, 0, 922, 115, 119, 436, 151, 127, 430, 499, 162, 428, 504, 511, 173, 424, 54, 83, 560, 561, 428, 612, 620, 80, - 444, 667, 622, 676, 449, 725, 0, 900, 864, 852, - 4555, 4555, 4555, 98, 116, 126, 145, 173, 456, 195, + 444, 667, 622, 676, 449, 725, 0, 863, 824, 815, + 4574, 4574, 4574, 98, 116, 126, 145, 173, 456, 195, 183, 182, 442, 564, 437, 442, 453, 528, 179, 562, - 502, 730, 576, 669, 676, 509, 501, 629, 516, 745, - 559, 514, 735, 774, 580, 785, 781, 781, 613, 4555, - 254, 549, 878, 847, 883, 840, 595, 704, 823, 861, - - 646, 812, 714, 732, 789, 789, 554, 830, 817, 565, - 685, 835, 837, 827, 680, 838, 839, 723, 738, 871, - 51, 741, 768, 4555, 4555, 723, 771, 757, 0, 762, - 804, 874, 884, 0, 708, 678, 896, 900, 0, 902, - 917, 657, 961, 806, 921, 927, 824, 953, 836, 950, - 850, 917, 874, 957, 0, 880, 898, 886, 933, 957, - 0, 944, 952, 0, 972, 966, 963, 967, 980, 977, - 965, 1012, 974, 1028, 987, 1022, 1000, 1000, 1003, 1030, - 1041, 1015, 1037, 1027, 1040, 1071, 1040, 1039, 1033, 1040, - 1075, 0, 1091, 1039, 0, 1047, 0, 1083, 1074, 1100, - - 1043, 1038, 1083, 1101, 1084, 1085, 1105, 1115, 1116, 1098, - 1131, 1119, 1122, 1118, 1131, 1144, 1145, 1150, 1143, 1183, - 1154, 1144, 1165, 1160, 1173, 1193, 1176, 1157, 1179, 1172, - 1168, 1180, 1201, 1203, 1186, 1215, 1185, 0, 0, 1209, - 0, 1216, 1209, 1216, 1231, 1237, 1221, 1237, 1222, 1224, - 1243, 619, 4555, 586, 584, 524, 1244, 1251, 1251, 1240, - 1260, 1260, 1256, 1248, 1251, 1263, 1270, 1268, 1251, 1253, - 1278, 1271, 1279, 530, 1306, 4555, 1299, 1281, 1285, 1284, - 1267, 1284, 1301, 1301, 1306, 1302, 1316, 1308, 1323, 1329, - 1300, 1331, 1333, 1320, 1329, 1321, 1337, 0, 1326, 1342, - - 1328, 1327, 1349, 1337, 1343, 1364, 1340, 1366, 1362, 1363, - 1372, 1369, 1364, 1377, 4555, 503, 4555, 497, 1398, 1409, - 1405, 1429, 1431, 1437, 4555, 4555, 4555, 4555, 1384, 1403, - 1384, 1405, 1417, 1398, 1416, 1428, 1417, 1431, 1428, 1432, - 1434, 4555, 1440, 1428, 1437, 1429, 4555, 1434, 4555, 1450, - 1435, 1444, 1443, 1444, 1438, 1448, 1450, 403, 1470, 1471, - 1468, 4555, 397, 199, 4555, 4555, 245, 4555, 238, 0, - 4555, 4555, 4555, 1509, 1517, 154, 559, 813, 1466, 0, - 1515, 1526, 915, 932, 1477, 1484, 1481, 1483, 1507, 1504, - 1514, 1522, 1522, 1524, 1517, 1508, 1526, 1513, 1514, 1517, - - 1533, 1518, 1519, 1524, 1524, 1535, 0, 1541, 1522, 1559, - 1522, 1532, 1543, 1548, 1534, 1561, 0, 1563, 1563, 1577, - 1568, 1568, 1569, 1578, 1580, 1573, 1574, 1592, 1583, 0, - 1584, 1585, 1580, 1597, 1581, 1600, 1600, 1597, 1603, 1603, - 1609, 1596, 1612, 1609, 1624, 1625, 1631, 1628, 1639, 1642, - 1639, 1647, 1650, 1635, 1651, 1652, 0, 0, 1647, 1648, - 1690, 1653, 1671, 1659, 1662, 1744, 1668, 1657, 1667, 1695, - 1681, 1701, 1698, 1693, 0, 226, 1713, 1715, 1722, 1703, - 1704, 1706, 1726, 1749, 1728, 1725, 1758, 1752, 1743, 1765, - 1753, 1766, 1754, 1773, 1771, 1785, 1783, 1770, 1781, 1789, - - 1786, 1789, 1802, 1804, 1794, 1805, 1808, 1803, 1815, 1798, - 1809, 0, 1821, 1812, 1809, 1806, 1824, 1805, 1821, 1829, - 1821, 1835, 1832, 1835, 1830, 1844, 1841, 1849, 1839, 0, - 0, 1842, 0, 0, 1847, 4555, 1857, 1853, 1856, 1870, - 1870, 1873, 1875, 1877, 4555, 1873, 1867, 1881, 1872, 1876, - 1886, 1880, 1881, 1876, 4555, 142, 4555, 1878, 1883, 1885, - 1901, 1903, 1902, 1890, 1892, 1908, 1912, 1916, 1915, 1920, - 1926, 1913, 1924, 1919, 1934, 1926, 1933, 1940, 1940, 1945, - 1932, 1944, 1930, 135, 768, 128, 181, 1048, 1163, 1964, - 1962, 1180, 1665, 1960, 1949, 1960, 1959, 1954, 1958, 1976, - - 1973, 1964, 1984, 1967, 1968, 1975, 1984, 1970, 1986, 1992, - 1987, 1991, 4555, 1980, 1985, 1985, 1987, 1984, 2003, 2002, - 2004, 2002, 2014, 2007, 2010, 462, 610, 1670, 4555, 1683, - 1724, 2012, 2013, 2026, 2024, 2044, 158, 2039, 2028, 2036, - 2027, 2049, 2032, 2047, 0, 2048, 2054, 2044, 2039, 2040, - 2043, 2057, 2055, 2061, 2052, 2052, 2062, 2050, 2068, 2080, - 0, 2072, 2086, 2068, 2092, 2088, 2102, 2094, 2104, 2089, - 0, 2106, 2107, 2098, 2095, 2110, 2112, 2117, 0, 2100, - 2102, 2114, 2106, 2110, 2120, 2124, 2110, 2126, 2127, 2112, - 2110, 2126, 2118, 2128, 0, 2145, 2139, 2159, 2142, 2146, - - 2164, 2155, 2153, 2167, 0, 2159, 2174, 2169, 0, 2158, - 2164, 2171, 2177, 2180, 2173, 2183, 2168, 2188, 2187, 2184, - 2173, 2191, 2178, 2179, 2192, 2196, 2202, 2211, 2225, 2226, - 2218, 2228, 2232, 2229, 2227, 2219, 2229, 2227, 0, 2233, - 0, 2243, 2241, 2227, 2240, 2240, 2245, 2234, 2244, 2248, - 2253, 2254, 2248, 2270, 2265, 2256, 2261, 2275, 2272, 2286, - 2276, 2290, 2291, 2272, 2294, 2295, 2283, 2288, 2284, 2305, - 2299, 2297, 2291, 2308, 2309, 2312, 2301, 2312, 2306, 2307, - 2299, 2309, 2304, 2312, 2331, 2323, 2336, 2342, 0, 2346, - 0, 2339, 2338, 2338, 2345, 2340, 0, 2347, 2343, 2362, - - 2346, 2349, 2366, 2366, 2358, 2366, 0, 2371, 2358, 2373, - 2365, 2375, 2369, 2364, 2369, 2379, 2370, 2380, 2388, 2398, - 4555, 2401, 2397, 2398, 2399, 2401, 0, 2406, 0, 2416, - 2404, 2414, 2412, 2420, 2415, 2408, 0, 2415, 2420, 0, - 4555, 2440, 2443, 4555, 2419, 2435, 2432, 2441, 2424, 2439, - 2430, 2438, 2445, 2455, 2442, 2445, 2448, 2464, 2450, 2450, - 2450, 2460, 2467, 2476, 2469, 2462, 2465, 2476, 4555, 2467, - 2477, 2489, 2465, 2473, 4555, 0, 2474, 0, 2502, 2492, - 0, 2487, 2497, 0, 2506, 2492, 2514, 2504, 2506, 2522, - 0, 2521, 2520, 2523, 2512, 2522, 2524, 2525, 2530, 2520, - - 2541, 2543, 0, 2533, 2527, 2529, 2529, 0, 0, 2540, - 0, 2532, 2546, 0, 2534, 2550, 2549, 2545, 2564, 2552, - 0, 2561, 2566, 0, 2583, 2567, 0, 0, 2570, 2584, - 2589, 2571, 2587, 0, 2592, 2582, 0, 2583, 2602, 2581, - 2607, 2606, 2640, 0, 2599, 0, 2596, 2612, 2627, 2614, - 2612, 2628, 2608, 2629, 2649, 2636, 2632, 2640, 2650, 2655, - 2631, 2662, 2652, 2662, 2654, 2667, 2650, 0, 2645, 2668, - 2648, 2654, 2674, 2661, 2658, 2676, 2690, 2666, 2691, 2681, - 2701, 0, 2692, 0, 2707, 2699, 2692, 2693, 2699, 2695, - 2711, 2703, 2698, 2718, 2719, 2708, 2713, 2709, 2713, 2716, - - 2712, 2717, 2718, 2725, 2757, 2736, 2729, 2721, 2749, 2761, - 2744, 2736, 2750, 2742, 2761, 2752, 2755, 2755, 0, 0, - 2775, 2758, 2757, 2765, 2777, 2783, 2775, 0, 2785, 2772, - 2783, 2781, 0, 2793, 2795, 2814, 2781, 0, 2799, 2823, - 2795, 2789, 0, 0, 2795, 2811, 2797, 2817, 2813, 2817, - 0, 4555, 4555, 2817, 2817, 2835, 4555, 4555, 2836, 2838, - 2829, 2838, 2823, 2848, 4555, 2835, 4555, 2845, 0, 2833, - 2853, 2835, 2871, 2860, 2843, 2852, 2875, 2873, 2860, 2873, - 2881, 2886, 2876, 2887, 2888, 2879, 4555, 2896, 2895, 2900, - 2901, 2884, 2901, 2897, 4555, 2905, 4555, 2903, 2905, 2905, - - 2910, 4555, 2902, 2888, 2920, 2919, 2903, 2906, 2929, 2924, - 2920, 2929, 0, 2936, 0, 0, 2931, 0, 2934, 2933, - 2938, 2957, 2947, 0, 2951, 0, 2941, 2944, 2943, 2950, - 2945, 2951, 0, 2962, 2954, 2955, 2966, 0, 2971, 0, - 2968, 0, 2958, 0, 2964, 2979, 2960, 2980, 0, 0, - 2971, 2973, 2999, 2980, 2977, 2985, 0, 2999, 3001, 3013, - 3014, 3014, 3013, 3016, 3019, 3003, 3023, 3010, 3006, 3027, - 3022, 0, 0, 3023, 3014, 3028, 3019, 3020, 3021, 3021, - 3022, 3020, 3042, 3041, 3032, 3050, 3058, 3060, 3049, 3046, - 0, 3055, 0, 3060, 3058, 3061, 3062, 3063, 3061, 3080, - - 3079, 3075, 3083, 3085, 3074, 3071, 3080, 3097, 0, 0, - 3094, 150, 3075, 3082, 3097, 3097, 3079, 3093, 3095, 3090, - 0, 0, 0, 0, 3106, 3110, 3110, 3107, 3122, 3126, - 3117, 3119, 3119, 3127, 3143, 3125, 0, 3132, 0, 3125, - 3144, 3144, 3130, 3150, 3147, 3138, 3149, 3168, 3159, 0, - 0, 3152, 0, 0, 3142, 3144, 3144, 3145, 3162, 3162, - 3153, 3160, 3171, 3187, 3177, 3174, 3198, 3187, 3196, 3184, - 0, 0, 3191, 4555, 3192, 3183, 4555, 3189, 3209, 3197, - 3192, 3212, 3213, 3190, 0, 3196, 4555, 4555, 3197, 3209, - 3205, 3220, 3212, 3213, 4555, 3227, 3205, 3221, 3218, 3231, - - 3230, 4555, 3233, 3244, 3232, 3238, 3242, 4555, 3259, 3258, - 88, 3251, 3259, 3268, 3249, 3266, 3253, 3258, 3269, 3260, - 3271, 0, 3263, 3258, 3264, 3276, 0, 3266, 3282, 0, - 3278, 0, 3284, 3286, 3281, 0, 3278, 0, 3294, 3297, - 3300, 3297, 3302, 3314, 3299, 3322, 3308, 3313, 0, 3321, - 3327, 3319, 3327, 3328, 0, 3325, 3330, 3333, 3319, 3333, - 3315, 3326, 3329, 3332, 0, 3334, 3342, 0, 3343, 3352, - 3336, 3349, 3342, 3352, 3361, 3369, 0, 3366, 3364, 3372, - 3380, 3380, 0, 3377, 3386, 3369, 3383, 3375, 3374, 3390, - 0, 3387, 3385, 3390, 3394, 3388, 0, 3395, 0, 3385, - - 3399, 3394, 3432, 3394, 0, 3414, 3413, 0, 3422, 0, - 3418, 3433, 3417, 3434, 3439, 3431, 3436, 3449, 3452, 3451, - 3448, 3439, 3450, 3442, 3447, 3451, 3459, 3449, 3461, 3451, - 3452, 3470, 3493, 3472, 3473, 3479, 3484, 0, 3496, 3482, - 3486, 3500, 3502, 0, 0, 3491, 3501, 3499, 3501, 3498, - 3507, 3501, 3515, 3510, 3502, 3503, 3551, 3519, 4555, 3506, - 4555, 3512, 3512, 4555, 3517, 3514, 3528, 4555, 3540, 3537, - 3539, 3534, 3551, 3554, 4555, 3557, 3559, 4555, 3558, 3554, - 3553, 3559, 3562, 0, 3558, 3560, 3558, 3567, 3574, 3577, - 3578, 3572, 3589, 3590, 3575, 0, 3584, 3591, 3603, 3595, - - 3597, 3612, 0, 3604, 3615, 3613, 3610, 3618, 0, 3623, - 3623, 3610, 3617, 0, 3618, 3615, 3626, 3622, 3624, 3619, - 3621, 3620, 3624, 3630, 3618, 3619, 3635, 3638, 3653, 3636, - 3653, 3666, 3666, 3655, 3677, 0, 0, 0, 3653, 3667, - 3664, 3679, 3662, 3677, 3682, 3668, 3690, 0, 0, 3680, - 3693, 3681, 3695, 3682, 3690, 3682, 3701, 3688, 3710, 3683, - 3698, 0, 3698, 3687, 0, 3701, 3708, 0, 3715, 3717, - 3726, 0, 3727, 3736, 3723, 3725, 0, 3730, 0, 3731, - 3742, 0, 3736, 3726, 3745, 3736, 3743, 3756, 3738, 3743, - 0, 3737, 0, 3757, 3751, 3760, 0, 0, 0, 3751, - - 3746, 3753, 3764, 3758, 4555, 3775, 3766, 4555, 3777, 0, - 4555, 3782, 4555, 4555, 4555, 3765, 3774, 3785, 4555, 3786, - 3802, 4555, 3794, 3795, 3791, 3794, 0, 3805, 0, 3797, - 0, 3798, 0, 3810, 3799, 0, 3804, 3801, 0, 3800, - 3807, 0, 3813, 3818, 3822, 0, 3811, 0, 0, 3821, - 0, 3815, 0, 0, 3816, 3835, 3824, 3839, 3846, 0, - 3850, 3851, 3846, 3843, 3862, 3859, 3860, 3864, 3863, 3849, - 3869, 0, 3855, 3867, 3867, 3857, 3874, 3877, 3876, 3862, - 3882, 0, 3883, 3880, 3870, 3882, 3878, 3888, 3877, 3892, - 3901, 3893, 3906, 3903, 3892, 3903, 3898, 3899, 3913, 3922, - - 3924, 3918, 3928, 3925, 3919, 3933, 0, 0, 3923, 3919, - 3927, 3929, 3929, 3929, 3940, 0, 0, 0, 3938, 0, - 3950, 0, 3931, 0, 3939, 3940, 3935, 3941, 4555, 3952, - 4555, 3953, 3954, 3966, 3972, 3959, 3959, 3960, 4555, 3975, - 3972, 3968, 0, 3986, 3991, 0, 0, 0, 3973, 3980, - 3986, 0, 0, 3981, 3985, 0, 3983, 0, 3996, 0, - 0, 0, 3986, 4006, 4011, 3995, 4013, 3991, 0, 0, - 4011, 3998, 4013, 4016, 4028, 4016, 4028, 4028, 0, 4030, - 4020, 4032, 4029, 4028, 4045, 4045, 4039, 4028, 0, 4045, - 4040, 4036, 4056, 4047, 4047, 4046, 4048, 4056, 4064, 4072, - - 4056, 4056, 0, 4076, 0, 0, 4058, 0, 4078, 0, - 0, 0, 4065, 0, 4085, 4071, 4078, 4091, 0, 4086, - 4555, 4555, 4555, 4077, 4555, 4555, 4555, 4555, 4555, 4083, - 4095, 0, 4086, 4083, 4088, 0, 4100, 4102, 4099, 4093, - 4099, 0, 4108, 4115, 4124, 4110, 4112, 0, 0, 0, - 0, 4122, 4122, 4133, 0, 0, 4130, 0, 0, 4125, - 4136, 0, 4138, 0, 4144, 4134, 4145, 4134, 4148, 4138, - 4148, 4150, 4154, 0, 4149, 0, 0, 4162, 0, 4152, - 0, 4169, 4155, 4168, 4153, 0, 4164, 4555, 4171, 4163, - 4169, 0, 4166, 4177, 0, 4180, 0, 4173, 4194, 4196, - - 4183, 0, 4194, 4198, 4194, 0, 4188, 4202, 0, 4197, - 4205, 0, 0, 0, 4200, 0, 4193, 4195, 4209, 4213, - 4218, 4224, 4223, 4226, 4215, 0, 4223, 4213, 4235, 4226, - 4238, 0, 0, 0, 4240, 4247, 0, 4227, 4243, 0, - 4255, 0, 0, 0, 4246, 4258, 4260, 4262, 0, 4264, - 4268, 4262, 4259, 4259, 4555, 4274, 64, 4262, 0, 4276, - 4278, 4280, 4282, 0, 4267, 0, 0, 4286, 0, 0, - 4275, 4279, 0, 56, 4555, 0, 4281, 4283, 0, 0, - 4285, 4286, 4289, 0, 4555, 4290, 4291, 4309, 4303, 0, - 4304, 4309, 4320, 4310, 0, 0, 4312, 4311, 4319, 0, - - 4319, 4317, 0, 4555, 4389, 4398, 4407, 4416, 4425, 4429, - 4436, 4445, 4454, 4457, 4466, 4475, 4484, 4493, 4502, 4511, - 4518, 4527, 4536, 4545 + 502, 730, 576, 669, 676, 509, 501, 726, 516, 748, + 559, 514, 738, 777, 580, 773, 792, 782, 613, 4574, + 254, 549, 865, 825, 857, 787, 595, 810, 825, 804, + + 646, 800, 723, 795, 793, 813, 554, 836, 814, 565, + 641, 843, 844, 822, 628, 842, 842, 670, 686, 868, + 51, 696, 757, 4574, 4574, 718, 748, 741, 0, 747, + 749, 882, 723, 0, 720, 678, 878, 900, 0, 903, + 924, 657, 962, 816, 927, 933, 861, 954, 858, 924, + 878, 950, 887, 959, 0, 890, 905, 936, 954, 959, + 0, 944, 947, 0, 974, 968, 965, 969, 998, 1012, + 964, 1012, 975, 1028, 1005, 1022, 1004, 1014, 1020, 1037, + 1040, 1019, 1041, 1031, 1043, 1073, 1047, 1044, 1060, 1044, + 1077, 0, 1093, 1043, 0, 1051, 0, 1087, 1092, 1078, + + 1089, 1085, 1125, 1100, 1111, 1101, 1115, 1138, 1139, 1121, + 1139, 1134, 1129, 1129, 1134, 1147, 1148, 1153, 1146, 1186, + 1157, 1147, 1172, 1164, 1178, 1187, 1179, 1160, 1205, 1201, + 1196, 1212, 1202, 1205, 1204, 1234, 1202, 0, 0, 1211, + 0, 1215, 1204, 1215, 1225, 1236, 1222, 1238, 1234, 1241, + 1261, 619, 4574, 586, 584, 524, 1256, 1263, 1259, 1247, + 1267, 1275, 1263, 1255, 1260, 1271, 1273, 1277, 1254, 1256, + 1281, 1274, 1282, 530, 1292, 4574, 1310, 1286, 1296, 1291, + 1284, 1310, 1316, 1315, 1306, 1313, 1325, 1312, 1328, 1342, + 1307, 1331, 1332, 1321, 1330, 1322, 1338, 0, 1326, 1347, + + 1334, 1335, 1369, 1350, 1349, 1366, 1353, 1379, 1368, 1371, + 1374, 1375, 1368, 1382, 4574, 503, 4574, 497, 1408, 1428, + 1411, 1436, 1434, 1445, 4574, 4574, 4574, 4574, 1410, 1429, + 1410, 1432, 1429, 1431, 1442, 1440, 1429, 1439, 1434, 1438, + 1440, 4574, 1447, 1433, 1443, 1435, 4574, 1439, 4574, 1455, + 1441, 1450, 1453, 1457, 1450, 1456, 1455, 403, 1494, 1495, + 1489, 4574, 397, 199, 4574, 4574, 245, 4574, 238, 0, + 4574, 4574, 4574, 1505, 1520, 154, 559, 755, 1495, 0, + 1524, 1541, 988, 1166, 1501, 1505, 1502, 1502, 1512, 1507, + 1514, 1526, 1526, 1530, 1525, 1517, 1536, 1523, 1526, 1529, + + 1546, 1531, 1532, 1539, 1539, 1552, 0, 1556, 1538, 1566, + 1541, 1548, 1559, 1565, 1555, 1561, 0, 1564, 1565, 1582, + 1572, 1572, 1573, 1584, 1588, 1582, 1585, 1606, 1595, 0, + 1598, 1598, 1593, 1612, 1596, 1617, 1617, 1616, 1619, 1620, + 1624, 1610, 1629, 1624, 1624, 1627, 1636, 1631, 1644, 1646, + 1642, 1653, 1658, 1644, 1661, 1662, 0, 0, 1659, 1660, + 1702, 1665, 1687, 1674, 1676, 1756, 1677, 1667, 1679, 1694, + 1680, 1702, 1702, 1697, 0, 226, 1717, 1721, 1738, 1710, + 1713, 1716, 1738, 1756, 1736, 1735, 1765, 1762, 1755, 1774, + 1755, 1771, 1763, 1781, 1778, 1794, 1793, 1782, 1790, 1803, + + 1798, 1804, 1814, 1816, 1806, 1816, 1819, 1813, 1826, 1808, + 1818, 0, 1829, 1821, 1819, 1817, 1833, 1814, 1828, 1836, + 1830, 1844, 1841, 1843, 1837, 1856, 1848, 1864, 1847, 0, + 0, 1854, 0, 0, 1862, 4574, 1869, 1863, 1866, 1881, + 1880, 1884, 1885, 1887, 4574, 1883, 1876, 1890, 1882, 1887, + 1895, 1889, 1888, 1883, 4574, 142, 4574, 1887, 1892, 1894, + 1909, 1910, 1909, 1899, 1902, 1920, 1921, 1930, 1927, 1935, + 1938, 1925, 1935, 1930, 1944, 1937, 1943, 1950, 1950, 1954, + 1941, 1954, 1941, 135, 878, 128, 181, 1404, 1406, 1967, + 1973, 1695, 1998, 1969, 1958, 1970, 1968, 1964, 1970, 1985, + + 1985, 1976, 1996, 1979, 1980, 1987, 1997, 1985, 2001, 2007, + 2002, 2005, 4574, 1993, 1999, 1998, 2001, 1997, 2015, 2014, + 2016, 2015, 2005, 2022, 2031, 462, 610, 2062, 4574, 2066, + 2069, 2010, 2020, 2038, 2026, 2052, 158, 2052, 2048, 2056, + 2048, 2070, 2053, 2068, 0, 2070, 2075, 2066, 2060, 2060, + 2063, 2076, 2074, 2080, 2071, 2071, 2081, 2071, 2088, 2089, + 0, 2080, 2093, 2075, 2101, 2090, 2110, 2107, 2124, 2109, + 0, 2127, 2128, 2119, 2116, 2132, 2133, 2139, 0, 2121, + 2122, 2134, 2125, 2129, 2139, 2143, 2129, 2145, 2146, 2132, + 2130, 2146, 2138, 2138, 0, 2153, 2146, 2161, 2149, 2155, + + 2178, 2176, 2174, 2189, 0, 2181, 2193, 2192, 0, 2181, + 2185, 2193, 2199, 2200, 2192, 2202, 2187, 2208, 2205, 2203, + 2192, 2211, 2198, 2199, 2199, 2202, 2206, 2215, 2227, 2234, + 2231, 2248, 2253, 2249, 2248, 2240, 2250, 2249, 0, 2255, + 0, 2264, 2262, 2246, 2259, 2257, 2263, 2252, 2263, 2268, + 2273, 2274, 2268, 2280, 2273, 2263, 2268, 2284, 2274, 2308, + 2283, 2302, 2311, 2293, 2314, 2316, 2305, 2309, 2306, 2326, + 2319, 2317, 2310, 2327, 2328, 2331, 2320, 2331, 2325, 2327, + 2319, 2329, 2324, 2322, 2339, 2330, 2343, 2365, 0, 2344, + 0, 2351, 2351, 2359, 2366, 2362, 0, 2369, 2366, 2385, + + 2368, 2370, 2386, 2386, 2377, 2385, 0, 2390, 2377, 2392, + 2384, 2394, 2389, 2384, 2389, 2399, 2380, 2388, 2395, 2405, + 4574, 2410, 2399, 2406, 2412, 2421, 0, 2426, 0, 2437, + 2425, 2435, 2433, 2442, 2436, 2430, 0, 2436, 2440, 0, + 4574, 2458, 2462, 4574, 2441, 2454, 2451, 2460, 2444, 2459, + 2450, 2458, 2455, 2463, 2449, 2452, 2459, 2477, 2466, 2466, + 2467, 2470, 2477, 2489, 2489, 2482, 2486, 2497, 4574, 2488, + 2498, 2511, 2480, 2497, 4574, 0, 2496, 0, 2516, 2509, + 0, 2504, 2514, 0, 2524, 2511, 2523, 2511, 2512, 2528, + 0, 2529, 2532, 2537, 2528, 2538, 2547, 2542, 2547, 2530, + + 2554, 2556, 0, 2552, 2548, 2550, 2550, 0, 0, 2562, + 0, 2555, 2556, 0, 2561, 2579, 2566, 2562, 2582, 2571, + 0, 2570, 2573, 0, 2589, 2573, 0, 0, 2578, 2596, + 2622, 2584, 2605, 0, 2612, 2607, 0, 2605, 2625, 2602, + 2629, 2626, 2662, 0, 2619, 0, 2618, 2637, 2644, 2631, + 2629, 2648, 2628, 2634, 2653, 2640, 2638, 2649, 2674, 2680, + 2661, 2686, 2677, 2687, 2679, 2692, 2676, 0, 2672, 2695, + 2676, 2682, 2702, 2689, 2685, 2693, 2707, 2683, 2711, 2701, + 2711, 0, 2700, 0, 2714, 2708, 2705, 2707, 2715, 2713, + 2732, 2727, 2722, 2742, 2748, 2732, 2738, 2734, 2738, 2741, + + 2738, 2744, 2745, 2753, 2757, 2762, 2756, 2748, 2766, 2764, + 2762, 2758, 2773, 2765, 2773, 2767, 2771, 2771, 0, 0, + 2801, 2775, 2776, 2788, 2806, 2807, 2800, 0, 2810, 2797, + 2808, 2807, 0, 2821, 2823, 2811, 2809, 0, 2827, 2823, + 2825, 2808, 0, 0, 2817, 2833, 2820, 2840, 2825, 2831, + 0, 4574, 4574, 2832, 2834, 2854, 4574, 4574, 2857, 2862, + 2853, 2862, 2852, 2874, 4574, 2861, 4574, 2872, 0, 2858, + 2880, 2862, 2877, 2886, 2870, 2878, 2890, 2889, 2876, 2893, + 2891, 2896, 2884, 2894, 2897, 2892, 4574, 2910, 2911, 2918, + 2922, 2908, 2925, 2921, 4574, 2934, 4574, 2927, 2930, 2930, + + 2935, 4574, 2927, 2582, 2945, 2944, 2929, 2926, 2942, 2937, + 2933, 2943, 0, 2950, 0, 0, 2937, 0, 2943, 2942, + 2945, 2963, 2953, 0, 2959, 0, 2955, 2960, 2961, 2971, + 2969, 2975, 0, 2986, 2983, 2979, 2991, 0, 2996, 0, + 2993, 0, 2983, 0, 2989, 3004, 2986, 3003, 0, 0, + 2995, 2996, 3012, 2993, 2990, 2999, 0, 3013, 3007, 3022, + 3023, 3021, 3019, 3022, 3027, 3017, 3039, 3028, 3027, 3050, + 3047, 0, 0, 3047, 3044, 3053, 3044, 3045, 3046, 3046, + 3047, 3046, 3065, 3065, 3055, 3063, 3071, 3073, 3063, 3060, + 0, 3061, 0, 3069, 3067, 3068, 3068, 3069, 3069, 3094, + + 3095, 3093, 3104, 3109, 3098, 3095, 3109, 3121, 0, 0, + 3119, 150, 3100, 3107, 3122, 3122, 3104, 3119, 3118, 3114, + 0, 0, 0, 0, 3129, 3123, 3123, 3120, 3136, 3140, + 3123, 3128, 3128, 3134, 3149, 3131, 0, 3140, 0, 3139, + 3160, 3162, 3151, 3174, 3171, 3162, 3178, 3181, 3185, 0, + 0, 3178, 0, 0, 3168, 3170, 3170, 3171, 3189, 3189, + 3177, 3183, 3184, 3200, 3191, 3188, 3204, 3196, 3205, 3191, + 0, 0, 3197, 4574, 3198, 3191, 4574, 3203, 3225, 3215, + 3213, 3236, 3237, 3214, 0, 3225, 4574, 4574, 3221, 3234, + 3230, 3245, 3237, 3238, 4574, 3252, 3231, 3244, 3242, 3254, + + 3243, 4574, 3246, 3257, 3246, 3252, 3248, 4574, 3270, 3266, + 88, 3257, 3265, 3274, 3257, 3280, 3269, 3276, 3295, 3286, + 3302, 0, 3294, 3290, 3291, 3303, 0, 3293, 3307, 0, + 3303, 0, 3310, 3309, 3305, 0, 3301, 0, 3307, 3310, + 3313, 3310, 3315, 3324, 3309, 3329, 3317, 3322, 0, 3328, + 3333, 3325, 3335, 3342, 0, 3341, 3348, 3359, 3345, 3364, + 3346, 3358, 3356, 3359, 0, 3361, 3367, 0, 3368, 3378, + 3359, 3373, 3365, 3365, 3374, 3382, 0, 3379, 3377, 3382, + 3390, 3387, 0, 3386, 3395, 3376, 3389, 3381, 3382, 3404, + 0, 3403, 3403, 3416, 3420, 3419, 0, 3419, 0, 3419, + + 3434, 3421, 3439, 3419, 0, 3438, 3438, 0, 3431, 0, + 3428, 3443, 3424, 3441, 3442, 3435, 3443, 3455, 3458, 3459, + 3462, 3455, 3468, 3468, 3473, 3482, 3490, 3481, 3488, 3478, + 3479, 3495, 3498, 3499, 3498, 3502, 3496, 0, 3507, 3493, + 3494, 3508, 3509, 0, 0, 3497, 3507, 3507, 3508, 3505, + 3513, 3507, 3523, 3524, 3518, 3521, 3546, 3550, 4574, 3537, + 4574, 3544, 3539, 4574, 3544, 3542, 3554, 4574, 3563, 3559, + 3550, 3546, 3563, 3566, 4574, 3569, 3566, 4574, 3566, 3561, + 3558, 3567, 3569, 0, 3565, 3566, 3564, 3575, 3594, 3605, + 3606, 3602, 3613, 3615, 3600, 0, 3607, 3609, 3619, 3605, + + 3607, 3622, 0, 3613, 3624, 3622, 3619, 3628, 0, 3633, + 3630, 3617, 3623, 0, 3624, 3621, 3632, 3630, 3631, 3626, + 3627, 3626, 3632, 3650, 3646, 3647, 3665, 3662, 3678, 3661, + 3676, 3684, 3682, 3665, 3687, 0, 0, 0, 3663, 3676, + 3673, 3688, 3671, 3687, 3692, 3675, 3697, 0, 0, 3686, + 3699, 3687, 3701, 3690, 3697, 3689, 3707, 3694, 3733, 3691, + 3716, 0, 3728, 3725, 0, 3728, 3734, 0, 3733, 3733, + 3736, 0, 3737, 3746, 3732, 3734, 0, 3739, 0, 3740, + 3752, 0, 3746, 3733, 3752, 3742, 3749, 3762, 3744, 3751, + 0, 3744, 0, 3764, 3757, 3766, 0, 0, 0, 3759, + + 3766, 3781, 3792, 3788, 4574, 3799, 3791, 4574, 3802, 0, + 4574, 3805, 4574, 4574, 4574, 3783, 3790, 3795, 4574, 3796, + 3812, 4574, 3802, 3803, 3802, 3803, 0, 3815, 0, 3807, + 0, 3805, 0, 3817, 3805, 0, 3810, 3807, 0, 3806, + 3815, 0, 3817, 3824, 3830, 0, 3831, 0, 0, 3849, + 0, 3843, 0, 0, 3843, 3856, 3846, 3861, 3867, 0, + 3866, 3867, 3862, 3859, 3872, 3869, 3870, 3873, 3872, 3858, + 3878, 0, 3865, 3877, 3874, 3864, 3880, 3883, 3882, 3868, + 3890, 0, 3887, 3886, 3878, 3902, 3906, 3916, 3904, 3913, + 3923, 3915, 3927, 3919, 3908, 3919, 3914, 3909, 3923, 3932, + + 3933, 3927, 3937, 3934, 3929, 3943, 0, 0, 3930, 3926, + 3933, 3935, 3935, 3935, 3948, 0, 0, 0, 3942, 0, + 3956, 0, 3939, 0, 3959, 3968, 3963, 3968, 4574, 3973, + 4574, 3975, 3976, 3987, 3988, 3975, 3975, 3976, 4574, 3986, + 3978, 3979, 0, 3997, 4000, 0, 0, 0, 3982, 3989, + 3996, 0, 0, 3991, 3993, 0, 3989, 0, 4001, 0, + 0, 0, 3991, 4011, 4015, 4001, 4021, 4011, 0, 0, + 4033, 4025, 4037, 4034, 4047, 4035, 4047, 4047, 0, 4049, + 4036, 4048, 4045, 4044, 4055, 4055, 4049, 4037, 0, 4054, + 4049, 4045, 4066, 4057, 4055, 4052, 4053, 4061, 4069, 4076, + + 4062, 4064, 0, 4096, 0, 0, 4080, 0, 4105, 0, + 0, 0, 4089, 0, 4103, 4090, 4097, 4110, 0, 4105, + 4574, 4574, 4574, 4096, 4574, 4574, 4574, 4574, 4574, 4098, + 4111, 0, 4103, 4099, 4096, 0, 4107, 4109, 4106, 4100, + 4106, 0, 4117, 4120, 4128, 4114, 4116, 0, 0, 0, + 0, 4122, 4128, 4141, 0, 0, 4149, 0, 0, 4144, + 4157, 0, 4163, 0, 4168, 4152, 4163, 4152, 4166, 4157, + 4167, 4169, 4170, 0, 4165, 0, 0, 4178, 0, 4168, + 0, 4179, 4164, 4176, 4161, 0, 4172, 4574, 4179, 4165, + 4180, 0, 4179, 4182, 0, 4184, 0, 4173, 4200, 4215, + + 4202, 0, 4215, 4218, 4217, 0, 4205, 4219, 0, 4214, + 4222, 0, 0, 0, 4217, 0, 4211, 4212, 4225, 4228, + 4233, 4239, 4238, 4239, 4225, 0, 4232, 4221, 4252, 4233, + 4244, 0, 0, 0, 4249, 4250, 0, 4232, 4247, 0, + 4255, 0, 0, 0, 4252, 4277, 4278, 4281, 0, 4282, + 4287, 4279, 4276, 4276, 4574, 4291, 64, 4279, 0, 4294, + 4295, 4296, 4297, 0, 4282, 0, 0, 4301, 0, 0, + 4290, 4292, 0, 56, 4574, 0, 4293, 4294, 0, 0, + 4295, 4295, 4298, 0, 4574, 4297, 4300, 4312, 4307, 0, + 4308, 4309, 4326, 4329, 0, 0, 4330, 4330, 4337, 0, + + 4336, 4336, 0, 4574, 4408, 4417, 4426, 4435, 4444, 4448, + 4455, 4464, 4473, 4476, 4485, 4494, 4503, 4512, 4521, 4530, + 4537, 4546, 4555, 4564 } ; static yyconst flex_int16_t yy_def[2025] = @@ -1113,7 +1128,7 @@ static yyconst flex_int16_t yy_def[2025] = 2004, 2004, 2004, 2004 } ; -static yyconst flex_int16_t yy_nxt[4644] = +static yyconst flex_uint16_t yy_nxt[4663] = { 0, 14, 15, 16, 15, 15, 14, 17, 18, 14, 17, 19, 14, 14, 14, 20, 21, 22, 23, 23, 14, @@ -1187,448 +1202,450 @@ static yyconst flex_int16_t yy_nxt[4644] = 281, 197, 343, 164, 282, 201, 149, 270, 305, 202, 205, 206, 221, 212, 248, 232, 249, 213, 207, 233, 208, 214, 209, 234, 215, 210, 211, 216, 326, 235, - 217, 627, 236, 875, 289, 290, 255, 327, 255, 237, + 217, 627, 236, 875, 344, 351, 255, 327, 255, 237, 253, 205, 206, 379, 212, 248, 232, 249, 213, 207, 233, 208, 214, 209, 234, 215, 210, 211, 216, 136, - 235, 217, 223, 236, 224, 289, 290, 225, 226, 173, - - 237, 238, 227, 174, 283, 284, 228, 286, 344, 229, - 239, 230, 240, 287, 231, 285, 241, 351, 242, 136, - 243, 321, 321, 223, 133, 224, 133, 133, 225, 226, - 173, 322, 238, 227, 174, 283, 284, 228, 286, 344, - 229, 239, 230, 240, 287, 231, 285, 241, 351, 242, - 329, 243, 246, 247, 330, 155, 248, 156, 249, 331, - 250, 356, 322, 297, 279, 251, 368, 280, 292, 357, - 161, 298, 293, 208, 841, 332, 139, 368, 299, 300, - 366, 329, 139, 246, 247, 330, 155, 248, 156, 249, - 331, 250, 356, 371, 297, 279, 251, 301, 280, 292, - - 357, 161, 298, 293, 208, 302, 332, 139, 310, 299, - 300, 303, 311, 139, 304, 306, 307, 314, 312, 585, - 335, 313, 349, 139, 371, 139, 333, 308, 301, 334, - 378, 378, 309, 328, 336, 372, 302, 380, 323, 310, - 320, 320, 303, 311, 341, 304, 306, 307, 314, 312, - 324, 335, 313, 338, 139, 385, 139, 333, 308, 342, - 334, 339, 345, 309, 315, 336, 372, 349, 380, 352, - 340, 350, 346, 353, 348, 341, 354, 347, 390, 355, - 373, 324, 325, 373, 338, 133, 385, 133, 133, 318, - 342, 317, 339, 345, 393, 315, 316, 359, 349, 315, - - 352, 340, 350, 346, 353, 348, 360, 354, 347, 390, - 355, 396, 361, 374, 374, 145, 399, 138, 138, 140, - 140, 400, 362, 375, 373, 393, 401, 146, 359, 141, - 376, 377, 384, 384, 378, 378, 256, 360, 381, 381, - 383, 383, 396, 361, 384, 384, 255, 399, 382, 384, - 384, 253, 400, 394, 375, 136, 402, 401, 146, 395, - 141, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 391, 403, 144, 386, 382, - 142, 142, 387, 142, 394, 397, 392, 402, 407, 388, - 395, 404, 405, 406, 408, 389, 409, 411, 412, 398, - - 410, 413, 416, 417, 414, 418, 391, 403, 421, 386, - 142, 142, 142, 387, 142, 2004, 397, 392, 415, 407, - 388, 424, 404, 405, 406, 408, 389, 409, 411, 412, - 398, 410, 413, 416, 417, 414, 418, 429, 430, 421, - 431, 142, 142, 142, 142, 142, 142, 142, 142, 415, - 419, 422, 424, 432, 420, 423, 425, 436, 426, 427, - 437, 438, 428, 439, 433, 589, 589, 444, 429, 430, - 445, 431, 434, 446, 448, 456, 457, 468, 435, 469, - 447, 419, 422, 2004, 432, 420, 423, 425, 436, 426, - 427, 437, 438, 428, 439, 433, 440, 441, 444, 449, - - 462, 445, 442, 434, 446, 448, 456, 457, 468, 435, - 469, 447, 474, 443, 453, 450, 463, 451, 470, 454, - 455, 458, 452, 459, 460, 475, 471, 440, 441, 461, - 449, 462, 476, 442, 464, 465, 466, 472, 477, 478, - 479, 473, 467, 474, 443, 453, 450, 463, 451, 470, - 454, 455, 458, 452, 459, 460, 475, 471, 480, 481, - 461, 482, 483, 476, 484, 464, 465, 466, 472, 477, - 478, 479, 473, 467, 485, 486, 489, 491, 487, 492, - 589, 589, 490, 500, 493, 488, 2004, 501, 502, 480, - 481, 2004, 482, 483, 503, 484, 504, 593, 593, 508, - - 509, 512, 510, 513, 514, 485, 486, 489, 491, 487, - 492, 494, 495, 490, 500, 493, 488, 496, 501, 502, - 520, 497, 498, 524, 499, 503, 511, 504, 505, 506, - 508, 509, 512, 510, 513, 514, 515, 517, 521, 518, - 525, 507, 494, 495, 526, 519, 522, 516, 496, 527, - 528, 520, 497, 498, 524, 499, 529, 511, 523, 505, - 506, 530, 531, 532, 533, 534, 535, 515, 517, 521, - 518, 525, 507, 537, 538, 526, 519, 522, 516, 539, - 527, 528, 540, 541, 542, 544, 545, 529, 546, 523, - 547, 550, 530, 531, 532, 533, 534, 535, 548, 551, - - 552, 553, 554, 555, 537, 538, 391, 543, 558, 561, - 539, 549, 562, 540, 541, 542, 544, 545, 559, 546, - 560, 547, 550, 275, 275, 414, 2004, 417, 387, 548, - 551, 552, 553, 554, 555, 388, 564, 391, 543, 558, - 561, 389, 549, 562, 419, 435, 566, 569, 563, 559, - 425, 560, 565, 427, 567, 570, 414, 276, 417, 387, - 442, 454, 571, 464, 471, 572, 388, 564, 573, 574, - 482, 568, 389, 575, 490, 419, 435, 566, 569, 563, - 576, 425, 498, 565, 427, 567, 570, 578, 579, 510, - 577, 442, 454, 571, 464, 471, 572, 580, 581, 573, - - 574, 482, 568, 520, 575, 490, 517, 582, 583, 516, - 317, 576, 2004, 498, 519, 321, 321, 2004, 578, 579, - 510, 577, 321, 321, 323, 322, 320, 320, 580, 581, - 594, 595, 322, 596, 520, 599, 324, 517, 582, 583, - 516, 317, 588, 588, 600, 519, 589, 589, 590, 590, - 592, 592, 597, 598, 593, 593, 322, 601, 591, 602, - 603, 594, 595, 322, 596, 604, 599, 324, 605, 606, - 607, 608, 610, 611, 612, 600, 613, 614, 615, 616, - 617, 620, 609, 597, 598, 618, 621, 619, 601, 591, - 602, 603, 622, 623, 624, 2004, 604, 629, 625, 605, - - 606, 607, 608, 610, 611, 612, 632, 613, 614, 615, - 616, 617, 620, 609, 633, 634, 618, 621, 619, 362, - 635, 362, 362, 622, 623, 624, 374, 374, 629, 625, - 376, 376, 381, 381, 628, 628, 375, 632, 636, 630, - 630, 637, 382, 631, 631, 633, 634, 638, 639, 640, - 641, 635, 642, 643, 644, 645, 646, 647, 648, 649, - 650, 651, 652, 653, 656, 657, 660, 375, 2004, 636, - 661, 654, 637, 382, 662, 663, 664, 655, 638, 639, - 640, 641, 658, 642, 643, 644, 645, 646, 647, 648, - 649, 650, 651, 652, 653, 656, 657, 660, 665, 659, - - 666, 661, 654, 667, 668, 662, 663, 664, 655, 669, - 670, 671, 672, 658, 674, 675, 676, 677, 679, 680, - 673, 681, 682, 683, 684, 685, 686, 678, 687, 665, - 659, 666, 688, 689, 667, 668, 691, 690, 692, 693, - 669, 670, 671, 672, 694, 674, 675, 676, 677, 679, - 680, 673, 681, 682, 683, 684, 685, 686, 678, 687, - 695, 696, 697, 688, 689, 699, 700, 691, 690, 692, - 693, 701, 698, 702, 703, 694, 704, 705, 706, 707, - 708, 709, 593, 593, 721, 2004, 724, 628, 628, 725, - 2004, 695, 696, 697, 722, 736, 699, 700, 723, 737, - - 631, 631, 701, 698, 702, 703, 738, 704, 705, 706, - 707, 708, 709, 710, 711, 721, 712, 724, 713, 714, - 725, 715, 739, 740, 716, 722, 736, 717, 741, 723, - 737, 718, 719, 742, 743, 720, 2004, 738, 745, 2004, - 746, 631, 631, 749, 710, 711, 750, 712, 751, 713, - 714, 752, 715, 739, 740, 716, 747, 755, 717, 741, - 748, 756, 718, 719, 742, 743, 720, 726, 727, 745, - 728, 746, 729, 730, 749, 731, 753, 750, 732, 751, - 761, 757, 752, 759, 754, 733, 734, 747, 755, 735, - 762, 748, 756, 764, 760, 765, 766, 763, 726, 727, - - 767, 728, 768, 729, 730, 758, 731, 753, 769, 732, - 770, 761, 757, 771, 759, 754, 733, 734, 772, 773, - 735, 762, 774, 775, 764, 760, 765, 766, 763, 776, - 777, 767, 779, 768, 780, 781, 758, 782, 783, 769, - 784, 770, 778, 785, 771, 786, 787, 788, 789, 772, - 773, 790, 791, 774, 775, 792, 793, 794, 795, 796, - 776, 777, 797, 779, 802, 780, 781, 798, 782, 783, - 800, 784, 799, 778, 785, 801, 786, 787, 788, 789, - 803, 805, 790, 791, 806, 807, 792, 793, 794, 795, - 796, 808, 804, 797, 809, 802, 810, 811, 798, 812, - - 813, 800, 814, 799, 815, 816, 801, 817, 818, 819, - 820, 803, 805, 821, 822, 806, 807, 823, 824, 825, - 826, 654, 808, 804, 827, 809, 658, 810, 811, 828, - 812, 813, 673, 814, 829, 815, 816, 830, 817, 818, - 819, 820, 689, 831, 821, 822, 697, 833, 823, 824, - 825, 826, 654, 723, 834, 827, 832, 658, 747, 835, - 828, 753, 836, 673, 759, 829, 777, 837, 830, 838, - 839, 840, 799, 689, 831, 842, 842, 697, 833, 843, - 843, 590, 590, 844, 723, 834, 845, 832, 846, 747, - 835, 591, 753, 836, 847, 759, 848, 777, 837, 849, - - 838, 839, 840, 799, 850, 851, 852, 853, 854, 855, - 856, 857, 858, 859, 844, 860, 861, 845, 862, 846, - 863, 864, 591, 865, 866, 847, 867, 848, 868, 869, - 849, 870, 871, 874, 2004, 850, 851, 852, 853, 854, - 855, 856, 857, 858, 859, 873, 860, 861, 876, 862, - 877, 863, 864, 878, 865, 866, 872, 867, 362, 868, - 869, 362, 870, 871, 874, 362, 879, 880, 882, 883, - 884, 885, 886, 887, 888, 889, 873, 890, 892, 876, - 893, 877, 894, 895, 878, 896, 898, 872, 899, 900, - 901, 903, 902, 904, 897, 905, 891, 879, 880, 882, - - 883, 884, 885, 886, 887, 888, 889, 906, 890, 892, - 907, 893, 908, 894, 895, 909, 896, 898, 910, 899, - 900, 901, 903, 902, 904, 897, 905, 891, 911, 912, - 913, 914, 915, 916, 917, 918, 919, 920, 906, 921, - 922, 907, 923, 908, 924, 925, 909, 926, 927, 910, - 928, 929, 930, 931, 932, 933, 934, 935, 936, 911, - 912, 913, 914, 915, 916, 917, 918, 919, 920, 937, - 921, 922, 938, 923, 939, 924, 925, 942, 926, 927, - 943, 928, 929, 930, 931, 932, 933, 934, 935, 936, - 940, 944, 945, 946, 947, 948, 951, 941, 952, 949, - - 937, 953, 954, 938, 955, 939, 950, 956, 942, 957, - 958, 943, 959, 960, 963, 964, 965, 966, 967, 961, - 968, 940, 944, 945, 946, 947, 948, 951, 941, 952, - 949, 962, 953, 954, 969, 955, 970, 950, 956, 971, - 957, 958, 972, 959, 960, 963, 964, 965, 966, 967, - 961, 968, 973, 974, 975, 976, 980, 977, 981, 982, - 983, 984, 962, 978, 985, 969, 986, 970, 987, 989, - 971, 990, 988, 972, 991, 979, 992, 993, 994, 995, - 996, 997, 998, 973, 974, 975, 976, 980, 977, 981, - 982, 983, 984, 999, 978, 985, 1000, 986, 1001, 987, - - 989, 1002, 990, 988, 1003, 991, 979, 992, 993, 994, - 995, 996, 997, 998, 1004, 1005, 1007, 1008, 1009, 1010, - 1006, 1011, 1012, 1013, 999, 1014, 1015, 1000, 1016, 1001, - 1017, 1018, 1002, 1019, 1020, 1003, 1021, 1022, 1023, 1024, - 1025, 1026, 1027, 1028, 1029, 1004, 1005, 1007, 1008, 1009, - 1010, 1006, 1011, 1012, 1013, 1030, 1014, 1015, 1031, 1016, - 1032, 1017, 1018, 1033, 1019, 1020, 1038, 1021, 1022, 1023, - 1024, 1025, 1026, 1027, 1028, 1029, 1034, 1036, 1039, 1040, - 1035, 1041, 1042, 1043, 1044, 1045, 1030, 1037, 1046, 1031, - 1047, 1032, 1048, 1049, 1033, 1050, 1051, 1038, 1052, 1053, - - 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1034, 1036, 1039, - 1040, 1035, 1041, 1042, 1043, 1044, 1045, 1061, 1037, 1046, - 1062, 1047, 1063, 1048, 1049, 1064, 1050, 1051, 1065, 1052, - 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1066, 1067, - 1068, 1069, 1070, 1071, 1072, 940, 1073, 987, 1061, 1074, - 1075, 1062, 1076, 1063, 1077, 1078, 1064, 843, 843, 1065, - 843, 843, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1066, - 1067, 1068, 1069, 1070, 1071, 1072, 940, 1073, 987, 1086, - 1074, 1075, 1087, 1076, 1088, 1077, 1078, 1089, 1090, 1091, - 1092, 1093, 1094, 1079, 1080, 1081, 1082, 1083, 1084, 1085, - - 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 2004, - 1086, 1106, 1104, 1087, 1107, 1088, 362, 1105, 1089, 1090, - 1091, 1092, 1093, 1094, 362, 1108, 1109, 1110, 1111, 1112, - 1113, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, - 362, 1114, 1106, 1104, 1115, 1107, 1116, 1117, 1118, 1119, - 1121, 1120, 1122, 1123, 1126, 1127, 1108, 1109, 1110, 1111, - 1112, 1113, 1124, 1128, 1129, 1125, 1130, 1131, 1132, 1133, - 1134, 1135, 1114, 1136, 1139, 1115, 1140, 1116, 1117, 1118, - 1119, 1121, 1120, 1122, 1123, 1126, 1127, 1137, 1138, 1141, - 1142, 1143, 1144, 1124, 1128, 1129, 1125, 1130, 1131, 1132, - - 1133, 1134, 1135, 1145, 1136, 1139, 1146, 1140, 1147, 1148, - 1149, 1150, 1157, 1158, 1151, 1159, 1160, 1162, 1137, 1138, - 1141, 1142, 1143, 1144, 1152, 1163, 1161, 1153, 1154, 1164, - 1165, 1155, 1156, 1166, 1145, 1172, 1173, 1146, 1174, 1147, - 1148, 1149, 1150, 1157, 1158, 1151, 1159, 1160, 1162, 2004, - 1175, 1176, 1177, 1178, 1179, 1152, 1163, 1161, 1153, 1154, - 1164, 1165, 1155, 1156, 1166, 1167, 1172, 1173, 1168, 1174, - 1180, 1169, 1181, 1182, 1183, 1170, 1184, 1185, 1186, 1187, - 1171, 1175, 1176, 1177, 1178, 1179, 1188, 1189, 1190, 1191, - 1192, 1193, 1194, 1195, 1196, 1197, 1167, 1198, 1199, 1168, - - 1200, 1180, 1169, 1181, 1182, 1183, 1170, 1184, 1185, 1186, - 1187, 1171, 1201, 1202, 1203, 1204, 1205, 1188, 1189, 1190, - 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1206, 1198, 1199, - 1207, 1200, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, - 1216, 1217, 1218, 1201, 1202, 1203, 1204, 1205, 1219, 1220, - 1221, 1222, 1223, 1224, 1225, 1226, 1227, 2004, 1206, 1230, - 1231, 1207, 1232, 1208, 1209, 1210, 1211, 1212, 1213, 1214, - 1215, 1216, 1217, 1218, 1233, 1236, 1237, 1238, 1239, 1219, - 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1234, - 1230, 1231, 1240, 1232, 1241, 1242, 1235, 1229, 1243, 1244, - - 1247, 1245, 1248, 1249, 1250, 1233, 1236, 1237, 1238, 1239, - 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1246, 1258, 1228, - 1234, 1261, 1262, 1240, 1265, 1241, 1242, 1235, 1229, 1243, - 1244, 1247, 1245, 1248, 1249, 1250, 1266, 1267, 1268, 1269, - 1270, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1246, 1258, - 1259, 1263, 1261, 1262, 1271, 1265, 1260, 1272, 1273, 1274, - 1275, 1264, 1277, 1278, 1279, 1280, 1281, 1266, 1267, 1268, - 1269, 1270, 1282, 1283, 1119, 1138, 1120, 1276, 1151, 1161, - 2004, 1259, 1263, 1284, 1224, 1271, 1285, 1260, 1272, 1273, - 1274, 1275, 1264, 1277, 1278, 1279, 1280, 1281, 1286, 1287, - - 1288, 1289, 1169, 1282, 1283, 1119, 1138, 1120, 1276, 1151, - 1161, 1171, 1290, 1291, 1284, 1224, 1292, 1285, 1293, 1294, - 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1286, - 1287, 1288, 1289, 1169, 1304, 1305, 1306, 1307, 1308, 362, - 1309, 1312, 1171, 1290, 1291, 1310, 1311, 1292, 1313, 1293, - 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, - 1314, 1315, 1316, 1317, 1318, 1304, 1305, 1306, 1307, 1308, - 362, 362, 1312, 1319, 1320, 1321, 1310, 1311, 1322, 1313, - 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, - 1333, 1314, 1315, 1316, 1317, 1318, 1334, 1335, 1336, 1337, - - 1338, 1339, 1340, 1341, 1319, 1320, 1321, 1342, 1343, 1322, - 1344, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, - 1332, 1333, 1345, 1346, 1347, 1348, 1349, 1334, 1335, 1336, - 1337, 1338, 1339, 1340, 1341, 1350, 1351, 1352, 1342, 1343, - 1353, 1344, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1363, - 1361, 1364, 1365, 1345, 1346, 1347, 1348, 1349, 1362, 1366, - 1367, 1368, 1369, 1370, 1371, 1372, 1350, 1351, 1352, 1373, - 1374, 1353, 1375, 1354, 1355, 1356, 1357, 1358, 1359, 1360, - 1363, 1361, 1364, 1365, 1376, 1377, 1378, 1379, 1380, 1362, - 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1381, 1382, 1383, - - 1373, 1374, 1384, 1375, 1385, 1386, 1387, 1388, 1389, 1390, - 1391, 1392, 1393, 1394, 1395, 1376, 1377, 1378, 1379, 1380, - 1396, 1397, 1399, 1400, 1401, 1402, 1403, 1404, 1381, 1382, - 1383, 1405, 1406, 1384, 1407, 1385, 1386, 1387, 1388, 1389, - 1390, 1391, 1392, 1393, 1394, 1395, 1408, 1409, 1410, 1411, - 1412, 1396, 1397, 1399, 1400, 1401, 1402, 1403, 1404, 1413, - 1414, 1415, 1405, 1406, 1416, 1407, 1417, 1418, 1419, 1420, - 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1408, 1409, 1410, - 1411, 1412, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, - 1413, 1414, 1415, 1428, 1438, 1416, 1439, 1417, 1418, 1419, - - 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1440, 1429, - 1441, 1442, 1443, 1430, 1431, 1432, 1433, 1434, 1435, 1436, - 1437, 1444, 1445, 1446, 1428, 1438, 1447, 1439, 1448, 1449, - 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1440, - 1429, 1441, 1442, 1443, 1459, 1460, 1461, 1462, 1463, 1464, - 1465, 1466, 1444, 1445, 1446, 1467, 1468, 1447, 1469, 1448, - 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, - 1470, 1471, 1472, 1473, 1474, 1459, 1460, 1461, 1462, 1463, - 1464, 1465, 1466, 1475, 1476, 1477, 1467, 1468, 1479, 1469, - 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, - - 1490, 1470, 1471, 1472, 1473, 1474, 1491, 1492, 1493, 362, - 362, 1494, 1495, 1496, 1475, 1476, 1477, 1497, 1498, 1479, - 1499, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, - 1489, 1490, 1500, 1501, 1502, 1503, 1504, 1491, 1492, 1493, - 1505, 1506, 1494, 1495, 1496, 1507, 1508, 1509, 1497, 1498, - 1510, 1499, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, - 1519, 1520, 1521, 1500, 1501, 1502, 1503, 1504, 1522, 1523, - 1524, 1505, 1506, 1525, 1526, 1527, 1507, 1508, 1509, 1528, - 1529, 1510, 1530, 1511, 1512, 1513, 1514, 1515, 1516, 1517, - 1518, 1519, 1520, 1521, 1531, 1532, 1533, 1534, 1535, 1522, - - 1523, 1524, 1536, 1537, 1525, 1526, 1527, 1538, 1539, 1540, - 1528, 1529, 1541, 1530, 1542, 1543, 1544, 1545, 1546, 1547, - 1548, 1549, 1550, 1553, 1554, 1531, 1532, 1533, 1534, 1535, - 1551, 1556, 1552, 1536, 1537, 1562, 2004, 1563, 1538, 1539, - 1540, 1564, 2004, 1541, 1555, 1542, 1543, 1544, 1545, 1546, - 1547, 1548, 1549, 1550, 1553, 1554, 1557, 1558, 1565, 1566, - 1567, 1551, 1556, 1552, 1568, 1569, 1562, 1559, 1563, 1560, - 1570, 1571, 1564, 1561, 1572, 1555, 1573, 1574, 1575, 1576, - 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1557, 1558, 1565, - 1566, 1567, 1584, 1585, 1586, 1568, 1569, 1587, 1559, 1590, - - 1560, 1570, 1571, 1591, 1561, 1572, 1592, 1573, 1574, 1575, - 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1588, 1593, - 1589, 1594, 1595, 1584, 1585, 1586, 1596, 1597, 1587, 1598, - 1590, 1599, 1600, 1601, 1591, 1602, 1603, 1592, 1604, 1605, - 1606, 1607, 1608, 1609, 2004, 2004, 1610, 1611, 1612, 1588, - 1593, 1589, 1594, 1595, 1613, 1614, 1615, 1596, 1597, 1616, - 1598, 2004, 1599, 1600, 1601, 1617, 1602, 1603, 1618, 1604, - 1605, 1606, 1607, 1608, 1609, 1557, 1558, 1610, 1611, 1612, - 1619, 1620, 1621, 1622, 1623, 1613, 1614, 1615, 1560, 1625, - 1616, 1626, 1561, 1624, 1627, 1628, 1617, 1629, 1630, 1618, - - 1631, 1632, 1633, 1634, 1635, 1636, 1557, 1558, 362, 1637, - 362, 1619, 1620, 1621, 1622, 1623, 1638, 1639, 1640, 1560, - 1625, 1641, 1626, 1561, 1624, 1627, 1628, 1642, 1629, 1630, - 1643, 1631, 1632, 1633, 1634, 1635, 1636, 1644, 1645, 1646, - 1637, 1647, 1648, 1649, 1650, 1651, 1652, 1638, 1639, 1640, - 1653, 1654, 1641, 1655, 1656, 1657, 1658, 1659, 1642, 1660, - 1661, 1643, 1662, 1663, 1664, 1665, 1666, 1667, 1644, 1645, - 1646, 1668, 1647, 1648, 1649, 1650, 1651, 1652, 1669, 1670, - 1671, 1653, 1654, 1672, 1655, 1656, 1657, 1658, 1659, 1673, - 1660, 1661, 1674, 1662, 1663, 1664, 1665, 1666, 1667, 1675, - - 1676, 1677, 1668, 1678, 1679, 1680, 1681, 1682, 1683, 1669, - 1670, 1671, 1684, 1685, 1672, 1686, 1687, 1688, 1689, 1690, - 1673, 1691, 1692, 1674, 1693, 1694, 1697, 1700, 1701, 1698, - 1675, 1676, 1677, 1695, 1678, 1679, 1680, 1681, 1682, 1683, - 1702, 1696, 1703, 1684, 1685, 1699, 1686, 1687, 1688, 1689, - 1690, 1704, 1691, 1692, 1705, 1693, 1694, 1697, 1700, 1701, - 1698, 1706, 1707, 1708, 1695, 1709, 1710, 1711, 1712, 1713, - 1714, 1702, 1696, 1703, 1715, 1716, 1699, 1717, 1718, 1719, - 1720, 1721, 1704, 1722, 1723, 1705, 1724, 1725, 1726, 1727, - 1728, 1729, 1706, 1707, 1708, 1730, 1709, 1710, 1711, 1712, - - 1713, 1714, 1731, 1732, 1733, 1715, 1716, 1734, 1717, 1718, - 1719, 1720, 1721, 1735, 1722, 1723, 1736, 1724, 1725, 1726, - 1727, 1728, 1729, 1737, 1738, 1739, 1730, 1742, 1740, 1741, - 1743, 1744, 1745, 1731, 1732, 1733, 1746, 1747, 1734, 1748, - 1749, 1750, 1751, 1752, 1735, 362, 362, 1736, 1753, 1754, - 1755, 1756, 1757, 1758, 1737, 1738, 1739, 1759, 1742, 1740, - 1741, 1743, 1744, 1745, 1760, 1761, 1762, 1746, 1747, 1763, - 1748, 1749, 1750, 1751, 1752, 1764, 1765, 1766, 1767, 1753, - 1754, 1755, 1756, 1757, 1758, 1768, 1769, 1770, 1759, 1771, - 1772, 1773, 1774, 1775, 1776, 1760, 1761, 1762, 1777, 1778, - - 1763, 1779, 1780, 1781, 1782, 1783, 1764, 1765, 1766, 1767, - 1784, 1785, 1786, 1787, 1788, 1789, 1768, 1769, 1770, 1790, - 1771, 1772, 1773, 1774, 1775, 1776, 1791, 1792, 1793, 1777, - 1778, 1794, 1779, 1780, 1781, 1782, 1783, 1795, 1796, 1797, - 1798, 1784, 1785, 1786, 1787, 1788, 1789, 1799, 1800, 1801, - 1790, 1802, 1803, 1804, 1805, 1806, 1807, 1791, 1792, 1793, - 1808, 1809, 1794, 1810, 1811, 1812, 1813, 1814, 1795, 1796, - 1797, 1798, 1815, 1816, 1817, 1818, 1819, 1820, 1799, 1800, - 1801, 1821, 1802, 1803, 1804, 1805, 1806, 1807, 1822, 1823, - 1824, 1808, 1809, 1825, 1810, 1811, 1812, 1813, 1814, 1826, - - 1827, 1828, 1829, 1815, 1816, 1817, 1818, 1819, 1820, 1830, - 1832, 1833, 1821, 1831, 1834, 1835, 1836, 1837, 1838, 1822, - 1823, 1824, 1839, 362, 1825, 1840, 362, 1841, 1842, 1843, - 1826, 1827, 1828, 1829, 1844, 1845, 1846, 1847, 1848, 1849, - 1830, 1832, 1833, 1850, 1831, 1834, 1835, 1836, 1837, 1838, - 1851, 1852, 1853, 1839, 1854, 1855, 1840, 1856, 1841, 1842, - 1843, 1857, 1858, 1859, 1860, 1844, 1845, 1846, 1847, 1848, - 1849, 1861, 1862, 1863, 1850, 1864, 1865, 1866, 1867, 1868, - 1869, 1851, 1852, 1853, 1870, 1854, 1855, 1871, 1856, 1872, - 1873, 1874, 1857, 1858, 1859, 1860, 1875, 1876, 1877, 1878, - - 1879, 1880, 1861, 1862, 1863, 1881, 1864, 1865, 1866, 1867, - 1868, 1869, 1882, 1883, 1884, 1870, 1885, 1887, 1871, 1888, - 1872, 1873, 1874, 1891, 1889, 1892, 1890, 1875, 1876, 1877, - 1878, 1879, 1880, 1886, 362, 1893, 1881, 1894, 1895, 1896, - 1897, 1898, 1899, 1882, 1883, 1884, 362, 1885, 1887, 1900, - 1888, 1901, 1902, 1903, 1891, 1889, 1892, 1890, 1904, 1905, - 1906, 1907, 1908, 1909, 1886, 1910, 1893, 1911, 1894, 1895, - 1896, 1897, 1898, 1899, 1912, 1913, 1914, 1915, 1916, 1917, - 1900, 1918, 1901, 1902, 1903, 1919, 1920, 1921, 1922, 1904, - 1905, 1906, 1907, 1908, 1909, 1923, 1910, 1924, 1911, 1925, - - 1926, 1927, 1928, 1930, 1931, 1912, 1913, 1914, 1915, 1916, - 1917, 1929, 1918, 1932, 362, 1933, 1919, 1920, 1921, 1922, - 1934, 1935, 362, 1936, 1937, 1938, 1923, 1939, 1924, 1940, - 1925, 1926, 1927, 1928, 1930, 1931, 1941, 1942, 1943, 1944, - 1945, 1946, 1929, 1947, 1932, 1948, 1933, 1949, 1950, 1951, - 1952, 1934, 1935, 1953, 1936, 1937, 1938, 1954, 1939, 1955, - 1940, 1956, 1957, 1958, 362, 1959, 1960, 1941, 1942, 1943, - 1944, 1945, 1946, 1961, 1947, 1962, 1948, 1963, 1949, 1950, - 1951, 1952, 1964, 1965, 1953, 1966, 362, 1967, 1954, 1968, - 1955, 1969, 1956, 1957, 1958, 1970, 1959, 1960, 1971, 1972, - - 1973, 1974, 1976, 1977, 1961, 1978, 1962, 1979, 1963, 1980, - 1981, 1982, 1983, 1964, 1965, 1984, 1966, 1986, 1967, 1987, - 1968, 1988, 1969, 1989, 1990, 362, 1970, 1991, 1992, 1971, - 1972, 1973, 1974, 1976, 1977, 1993, 1978, 1994, 1979, 1995, - 1980, 1981, 1982, 1983, 1996, 1997, 1984, 1998, 1986, 1999, - 1987, 2000, 1988, 2001, 1989, 1990, 2002, 2003, 1991, 1992, - 2004, 2004, 2004, 2004, 2004, 2004, 1993, 2004, 1994, 2004, - 1995, 2004, 2004, 2004, 2004, 1996, 1997, 2004, 1998, 2004, - 1999, 2004, 2000, 2004, 2001, 2004, 2004, 2002, 2003, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 134, 2004, 134, 134, - 134, 134, 134, 134, 134, 135, 2004, 135, 135, 135, - 135, 135, 135, 135, 139, 139, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 252, 252, 252, 252, 252, - 252, 252, 252, 252, 254, 2004, 254, 254, 254, 254, - 254, 254, 254, 274, 2004, 274, 358, 358, 358, 358, - 358, 358, 358, 358, 358, 363, 363, 363, 363, 363, - 363, 363, 363, 363, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 369, 369, 369, 369, 369, 369, 369, - - 369, 369, 370, 370, 370, 2004, 2004, 370, 370, 2004, - 370, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 556, 2004, 2004, 556, 556, 2004, 556, 584, 584, 584, - 2004, 584, 584, 584, 584, 584, 586, 586, 586, 586, - 2004, 586, 586, 586, 586, 626, 626, 626, 626, 626, - 626, 626, 626, 626, 13, 2004, 2004, 2004, 2004, 2004, + 235, 217, 223, 236, 224, 344, 351, 225, 226, 173, + + 237, 238, 227, 174, 283, 284, 228, 286, 356, 229, + 239, 230, 240, 287, 231, 285, 241, 357, 242, 133, + 243, 133, 133, 223, 133, 224, 133, 133, 225, 226, + 173, 136, 238, 227, 174, 283, 284, 228, 286, 356, + 229, 239, 230, 240, 287, 231, 285, 241, 357, 242, + 368, 243, 246, 247, 368, 155, 248, 156, 249, 329, + 250, 289, 290, 330, 279, 251, 297, 280, 187, 366, + 161, 292, 378, 378, 298, 293, 208, 349, 371, 139, + 372, 299, 300, 246, 247, 139, 155, 248, 156, 249, + 329, 250, 289, 290, 330, 279, 251, 297, 280, 187, + + 301, 161, 292, 306, 307, 298, 293, 208, 302, 371, + 139, 372, 299, 300, 303, 308, 139, 304, 314, 310, + 309, 328, 331, 311, 139, 325, 139, 321, 321, 312, + 333, 301, 313, 334, 306, 307, 318, 322, 332, 302, + 323, 341, 320, 320, 335, 303, 308, 380, 304, 314, + 310, 309, 324, 331, 311, 139, 342, 139, 336, 338, + 312, 333, 349, 313, 334, 317, 350, 339, 322, 332, + 345, 315, 341, 352, 316, 335, 340, 353, 380, 354, + 346, 348, 355, 324, 841, 347, 315, 342, 373, 336, + 338, 373, 385, 349, 359, 374, 374, 350, 339, 256, + + 390, 345, 315, 360, 352, 375, 255, 340, 353, 361, + 354, 346, 348, 355, 253, 145, 347, 138, 138, 362, + 140, 140, 393, 385, 396, 359, 399, 146, 400, 585, + 141, 390, 373, 136, 360, 2004, 375, 376, 377, 2004, + 361, 378, 378, 2004, 381, 381, 383, 383, 2004, 391, + 384, 384, 2004, 393, 382, 396, 2004, 399, 146, 400, + 392, 141, 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 401, 402, 144, 386, + 391, 142, 142, 387, 142, 382, 394, 397, 407, 408, + 388, 392, 395, 404, 405, 406, 389, 403, 409, 411, + + 412, 398, 410, 413, 418, 384, 384, 401, 402, 421, + 386, 142, 142, 142, 387, 142, 2004, 394, 397, 407, + 408, 388, 414, 395, 404, 405, 406, 389, 403, 409, + 411, 412, 398, 410, 413, 418, 415, 416, 417, 424, + 421, 429, 142, 142, 142, 142, 142, 142, 142, 142, + 419, 422, 430, 414, 420, 423, 425, 431, 426, 427, + 432, 436, 428, 433, 437, 438, 439, 415, 416, 417, + 424, 434, 429, 2004, 444, 445, 2004, 435, 448, 456, + 457, 419, 422, 430, 2004, 420, 423, 425, 431, 426, + 427, 432, 436, 428, 433, 437, 438, 439, 440, 441, + + 446, 449, 434, 2004, 442, 444, 445, 447, 435, 448, + 456, 457, 464, 465, 466, 443, 453, 450, 462, 451, + 467, 454, 455, 468, 452, 458, 469, 459, 460, 440, + 441, 446, 449, 461, 463, 442, 472, 2004, 447, 474, + 473, 475, 476, 464, 465, 466, 443, 453, 450, 462, + 451, 467, 454, 455, 468, 452, 458, 469, 459, 460, + 470, 477, 478, 479, 461, 463, 480, 472, 471, 483, + 474, 473, 475, 476, 481, 484, 482, 485, 486, 489, + 491, 487, 492, 384, 384, 490, 500, 493, 488, 2004, + 501, 470, 477, 478, 479, 502, 2004, 480, 503, 471, + + 483, 504, 508, 509, 2004, 481, 484, 482, 485, 486, + 489, 491, 487, 492, 494, 495, 490, 500, 493, 488, + 496, 501, 505, 506, 497, 498, 502, 499, 510, 503, + 512, 513, 504, 508, 509, 507, 514, 515, 520, 517, + 524, 518, 525, 526, 527, 494, 495, 519, 516, 528, + 529, 496, 511, 505, 506, 497, 498, 521, 499, 510, + 530, 512, 513, 531, 532, 522, 507, 514, 515, 520, + 517, 524, 518, 525, 526, 527, 533, 523, 519, 516, + 528, 529, 534, 511, 535, 537, 538, 539, 521, 540, + 541, 530, 544, 545, 531, 532, 522, 546, 547, 542, + + 550, 548, 551, 552, 553, 554, 555, 533, 523, 275, + 275, 391, 2004, 534, 549, 535, 537, 538, 539, 558, + 540, 541, 543, 544, 545, 559, 561, 560, 546, 547, + 542, 550, 548, 551, 552, 553, 554, 555, 562, 387, + 414, 417, 391, 276, 419, 549, 388, 564, 563, 435, + 558, 566, 389, 543, 569, 570, 559, 561, 560, 425, + 454, 565, 427, 571, 464, 471, 572, 567, 573, 562, + 387, 414, 417, 442, 574, 419, 482, 388, 564, 563, + 435, 575, 566, 389, 568, 569, 570, 490, 498, 578, + 425, 454, 565, 427, 571, 464, 471, 572, 567, 573, + + 576, 579, 510, 580, 442, 574, 581, 482, 517, 520, + 577, 582, 575, 583, 2004, 568, 519, 516, 490, 498, + 578, 589, 589, 589, 589, 321, 321, 2004, 321, 321, + 2004, 576, 579, 510, 580, 322, 317, 581, 322, 517, + 520, 577, 582, 323, 583, 320, 320, 519, 516, 588, + 588, 590, 590, 589, 589, 324, 594, 595, 592, 592, + 596, 591, 593, 593, 597, 598, 322, 317, 599, 322, + 600, 602, 603, 604, 605, 606, 607, 610, 608, 611, + 612, 613, 614, 601, 615, 616, 324, 594, 595, 609, + 617, 596, 591, 620, 621, 597, 598, 622, 618, 599, + + 619, 600, 602, 603, 604, 605, 606, 607, 610, 608, + 611, 612, 613, 614, 601, 615, 616, 623, 624, 625, + 609, 617, 374, 374, 620, 621, 629, 2004, 622, 618, + 632, 619, 375, 376, 376, 633, 634, 628, 628, 635, + 362, 381, 381, 636, 637, 362, 362, 638, 623, 624, + 625, 382, 639, 640, 630, 630, 641, 629, 631, 631, + 642, 632, 643, 375, 644, 645, 633, 634, 646, 647, + 635, 648, 649, 650, 636, 637, 651, 652, 638, 656, + 653, 657, 382, 639, 640, 660, 661, 641, 654, 658, + 662, 642, 663, 643, 655, 644, 645, 664, 665, 646, + + 647, 666, 648, 649, 650, 667, 659, 651, 652, 668, + 656, 653, 657, 669, 670, 671, 660, 661, 672, 654, + 658, 662, 674, 663, 675, 655, 673, 676, 664, 665, + 679, 677, 666, 680, 681, 682, 667, 659, 683, 684, + 668, 678, 685, 686, 669, 670, 671, 687, 688, 672, + 689, 691, 692, 674, 690, 675, 693, 673, 676, 694, + 695, 679, 677, 696, 680, 681, 682, 697, 699, 683, + 684, 700, 678, 685, 686, 701, 702, 698, 687, 688, + 703, 689, 691, 692, 704, 690, 705, 693, 706, 707, + 694, 695, 708, 709, 696, 2004, 721, 2004, 697, 699, + + 2004, 724, 700, 725, 736, 2004, 701, 702, 698, 737, + 722, 703, 593, 593, 723, 704, 2004, 705, 738, 706, + 707, 739, 740, 708, 709, 710, 711, 721, 712, 741, + 713, 714, 724, 715, 725, 736, 716, 742, 743, 717, + 737, 722, 745, 718, 719, 723, 746, 720, 2004, 738, + 749, 2004, 739, 740, 2004, 750, 710, 711, 751, 712, + 741, 713, 714, 752, 715, 755, 2004, 716, 742, 743, + 717, 756, 747, 745, 718, 719, 748, 746, 720, 726, + 727, 749, 728, 753, 729, 730, 750, 731, 757, 751, + 732, 754, 761, 759, 752, 764, 755, 733, 734, 762, + + 765, 735, 756, 747, 760, 766, 763, 748, 767, 768, + 726, 727, 758, 728, 753, 729, 730, 769, 731, 757, + 770, 732, 754, 761, 759, 771, 764, 772, 733, 734, + 762, 765, 735, 773, 774, 760, 766, 763, 775, 767, + 768, 776, 777, 758, 779, 780, 781, 782, 769, 783, + 784, 770, 785, 786, 778, 787, 771, 788, 772, 789, + 790, 791, 792, 793, 773, 774, 794, 795, 796, 775, + 797, 802, 776, 777, 798, 779, 780, 781, 782, 799, + 783, 784, 800, 785, 786, 778, 787, 801, 788, 805, + 789, 790, 791, 792, 793, 803, 806, 794, 795, 796, + + 807, 797, 802, 808, 809, 798, 810, 804, 811, 812, + 799, 813, 814, 800, 815, 816, 817, 818, 801, 819, + 805, 820, 821, 822, 823, 824, 803, 806, 825, 826, + 654, 807, 827, 658, 808, 809, 828, 810, 804, 811, + 812, 673, 813, 814, 829, 815, 816, 817, 818, 830, + 819, 689, 820, 821, 822, 823, 824, 831, 697, 825, + 826, 654, 833, 827, 658, 723, 834, 828, 832, 747, + 835, 753, 673, 836, 759, 829, 777, 837, 838, 839, + 830, 840, 689, 799, 590, 590, 842, 842, 831, 697, + 843, 843, 844, 833, 591, 845, 723, 834, 846, 832, + + 747, 835, 753, 847, 836, 759, 848, 777, 837, 838, + 839, 849, 840, 850, 799, 593, 593, 851, 852, 853, + 854, 855, 856, 844, 857, 591, 845, 858, 859, 846, + 860, 861, 862, 863, 847, 864, 865, 848, 866, 867, + 868, 869, 849, 870, 850, 871, 876, 872, 851, 852, + 853, 854, 855, 856, 874, 857, 362, 877, 858, 859, + 873, 860, 861, 862, 863, 878, 864, 865, 879, 866, + 867, 868, 869, 362, 870, 880, 871, 876, 872, 628, + 628, 882, 362, 631, 631, 874, 631, 631, 877, 883, + 884, 873, 885, 886, 887, 888, 878, 889, 890, 879, + + 892, 893, 894, 895, 896, 898, 880, 899, 900, 901, + 903, 902, 882, 897, 904, 905, 906, 891, 907, 908, + 883, 884, 909, 885, 886, 887, 888, 910, 889, 890, + 911, 892, 893, 894, 895, 896, 898, 912, 899, 900, + 901, 903, 902, 913, 897, 904, 905, 906, 891, 907, + 908, 914, 915, 909, 916, 917, 918, 919, 910, 920, + 921, 911, 922, 923, 924, 925, 926, 927, 912, 928, + 929, 930, 931, 932, 913, 933, 934, 935, 936, 937, + 938, 939, 914, 915, 942, 916, 917, 918, 919, 943, + 920, 921, 940, 922, 923, 924, 925, 926, 927, 941, + + 928, 929, 930, 931, 932, 944, 933, 934, 935, 936, + 937, 938, 939, 945, 946, 942, 947, 948, 949, 951, + 943, 952, 953, 940, 954, 950, 955, 956, 957, 958, + 941, 959, 963, 960, 964, 965, 944, 966, 967, 961, + 968, 969, 970, 971, 945, 946, 972, 947, 948, 949, + 951, 962, 952, 953, 973, 954, 950, 955, 956, 957, + 958, 974, 959, 963, 960, 964, 965, 975, 966, 967, + 961, 968, 969, 970, 971, 976, 980, 972, 977, 981, + 982, 983, 962, 984, 978, 973, 985, 986, 989, 987, + 990, 991, 974, 988, 992, 993, 979, 994, 975, 995, + + 996, 997, 998, 999, 1000, 1001, 976, 980, 1002, 977, + 981, 982, 983, 1003, 984, 978, 1004, 985, 986, 989, + 987, 990, 991, 1007, 988, 992, 993, 979, 994, 1008, + 995, 996, 997, 998, 999, 1000, 1001, 1005, 1009, 1002, + 1010, 1011, 1006, 1012, 1003, 1013, 1014, 1004, 1015, 1016, + 1017, 1018, 1019, 1020, 1007, 1021, 1022, 1023, 1024, 1025, + 1008, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1005, 1009, + 1033, 1010, 1011, 1006, 1012, 1036, 1013, 1014, 1038, 1015, + 1016, 1017, 1018, 1019, 1020, 1037, 1021, 1022, 1023, 1024, + 1025, 1039, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1034, + + 1040, 1033, 1041, 1035, 1042, 1043, 1036, 1044, 1045, 1038, + 1046, 1047, 1048, 1049, 1050, 1051, 1037, 1052, 1053, 1054, + 1055, 1056, 1039, 1057, 1058, 1059, 1060, 1061, 1062, 1063, + 1034, 1040, 1064, 1041, 1035, 1042, 1043, 1065, 1044, 1045, + 1066, 1046, 1047, 1048, 1049, 1050, 1051, 1067, 1052, 1053, + 1054, 1055, 1056, 1068, 1057, 1058, 1059, 1060, 1061, 1062, + 1063, 1069, 1070, 1064, 1071, 1072, 940, 1073, 1065, 987, + 1074, 1066, 1075, 1076, 1077, 843, 843, 1078, 1067, 843, + 843, 1079, 1080, 1081, 1068, 1082, 1083, 1084, 1085, 1086, + 1087, 1088, 1069, 1070, 1089, 1071, 1072, 940, 1073, 1090, + + 987, 1074, 1091, 1075, 1076, 1077, 1092, 1093, 1078, 1094, + 1095, 1096, 1079, 1080, 1081, 1097, 1082, 1083, 1084, 1085, + 1086, 1087, 1088, 1098, 1099, 1089, 1100, 1101, 1102, 1103, + 1090, 362, 1105, 1091, 1104, 1106, 1107, 1092, 1093, 1108, + 1094, 1095, 1096, 1109, 1110, 1111, 1097, 1112, 362, 1113, + 1114, 1115, 1116, 1117, 1098, 1099, 1118, 1100, 1101, 1102, + 1103, 1119, 362, 1120, 1121, 1104, 1106, 1107, 1122, 1123, + 1108, 1126, 1127, 1128, 1109, 1110, 1111, 1129, 1112, 1130, + 1113, 1114, 1115, 1116, 1117, 1124, 1131, 1118, 1125, 1132, + 1133, 1134, 1119, 1135, 1120, 1121, 1136, 1137, 1138, 1122, + + 1123, 1139, 1126, 1127, 1128, 1140, 1141, 1142, 1129, 1143, + 1130, 1144, 1145, 1146, 1147, 1148, 1124, 1131, 1149, 1125, + 1132, 1133, 1134, 1150, 1135, 1157, 2004, 1136, 1137, 1138, + 2004, 1158, 1139, 362, 1309, 1159, 1140, 1141, 1142, 1162, + 1143, 1160, 1144, 1145, 1146, 1147, 1148, 1151, 1163, 1149, + 1164, 1161, 1165, 1166, 1150, 1172, 1157, 1152, 1173, 2004, + 1153, 1154, 1158, 1174, 1155, 1156, 1159, 1175, 1176, 1177, + 1162, 2004, 1160, 1178, 1179, 1180, 1181, 1182, 1151, 1163, + 1183, 1164, 1161, 1165, 1166, 1184, 1172, 1167, 1152, 1173, + 1168, 1153, 1154, 1169, 1174, 1155, 1156, 1170, 1175, 1176, + + 1177, 1185, 1171, 1186, 1178, 1179, 1180, 1181, 1182, 1187, + 1188, 1183, 1189, 1190, 1191, 1192, 1184, 1193, 1167, 1194, + 1195, 1168, 1196, 1197, 1169, 1198, 1199, 1200, 1170, 1201, + 1202, 1203, 1185, 1171, 1186, 1204, 1205, 1206, 1207, 1208, + 1187, 1188, 1209, 1189, 1190, 1191, 1192, 1210, 1193, 1211, + 1194, 1195, 1212, 1196, 1197, 1213, 1198, 1199, 1200, 1214, + 1201, 1202, 1203, 1215, 1216, 1217, 1204, 1205, 1206, 1207, + 1208, 1218, 1219, 1209, 1220, 1221, 1222, 1223, 1210, 1224, + 1211, 1225, 1226, 1212, 1227, 1230, 1213, 1231, 1228, 1232, + 1214, 1233, 1234, 1236, 1215, 1216, 1217, 1229, 1237, 1235, + + 1238, 1239, 1218, 1219, 1240, 1220, 1221, 1222, 1223, 1241, + 1224, 1242, 1225, 1226, 1243, 1227, 1230, 1247, 1231, 1228, + 1232, 1248, 1233, 1234, 1236, 1244, 1249, 1245, 1229, 1237, + 1235, 1238, 1239, 1250, 1251, 1240, 1252, 1253, 1254, 1255, + 1241, 1256, 1242, 1246, 1257, 1243, 1258, 1259, 1247, 1261, + 1262, 1263, 1248, 1260, 1265, 1266, 1244, 1249, 1245, 1267, + 1268, 1264, 1269, 1270, 1250, 1251, 1271, 1252, 1253, 1254, + 1255, 1272, 1256, 1273, 1246, 1257, 1274, 1258, 1259, 1275, + 1261, 1262, 1263, 1277, 1260, 1265, 1266, 1278, 1279, 1280, + 1267, 1268, 1264, 1269, 1270, 1281, 1276, 1271, 1282, 1283, + + 1138, 1119, 1272, 1120, 1273, 1151, 1161, 1274, 1169, 1284, + 1275, 1224, 1285, 1286, 1277, 1287, 1288, 1171, 1278, 1279, + 1280, 1289, 1290, 1291, 1292, 1293, 1281, 1276, 1294, 1282, + 1283, 1138, 1119, 1295, 1120, 1296, 1151, 1161, 1297, 1169, + 1284, 1298, 1224, 1285, 1286, 1299, 1287, 1288, 1171, 1300, + 1301, 1302, 1289, 1290, 1291, 1292, 1293, 1303, 1304, 1294, + 1305, 1306, 1307, 1308, 1295, 2004, 1296, 1312, 1313, 1297, + 1310, 1311, 1298, 1314, 1315, 1316, 1299, 1317, 1318, 1319, + 1300, 1301, 1302, 1320, 1321, 1322, 1323, 1324, 1303, 1304, + 1325, 1305, 1306, 1307, 1308, 362, 362, 1326, 1312, 1313, + + 1327, 1310, 1311, 1328, 1314, 1315, 1316, 1329, 1317, 1318, + 1319, 1330, 1331, 1332, 1320, 1321, 1322, 1323, 1324, 1333, + 1334, 1325, 1335, 1336, 1337, 1338, 1339, 1340, 1326, 1341, + 1342, 1327, 1343, 1344, 1328, 1345, 1346, 1347, 1329, 1348, + 1349, 1350, 1330, 1331, 1332, 1351, 1352, 1353, 1354, 1355, + 1333, 1334, 1356, 1335, 1336, 1337, 1338, 1339, 1340, 1357, + 1341, 1342, 1358, 1343, 1344, 1359, 1345, 1346, 1347, 1360, + 1348, 1349, 1350, 1361, 1363, 1364, 1351, 1352, 1353, 1354, + 1355, 1362, 1365, 1356, 1366, 1367, 1368, 1369, 1370, 1371, + 1357, 1372, 1373, 1358, 1374, 1375, 1359, 1376, 1377, 1378, + + 1360, 1379, 1380, 1381, 1361, 1363, 1364, 1382, 1383, 1384, + 1385, 1386, 1362, 1365, 1387, 1366, 1367, 1368, 1369, 1370, + 1371, 1388, 1372, 1373, 1389, 1374, 1375, 1390, 1376, 1377, + 1378, 1391, 1379, 1380, 1381, 1392, 1393, 1394, 1382, 1383, + 1384, 1385, 1386, 1395, 1396, 1387, 1397, 1399, 1400, 1401, + 1402, 1403, 1388, 1404, 1405, 1389, 1406, 1407, 1390, 1408, + 1409, 1410, 1391, 1411, 1412, 1413, 1392, 1393, 1394, 1414, + 1415, 1416, 1417, 1418, 1395, 1396, 1419, 1397, 1399, 1400, + 1401, 1402, 1403, 1420, 1404, 1405, 1421, 1406, 1407, 1422, + 1408, 1409, 1410, 1423, 1411, 1412, 1413, 1424, 1425, 1426, + + 1414, 1415, 1416, 1417, 1418, 1427, 1428, 1419, 1430, 1431, + 1432, 1433, 1434, 1435, 1420, 1436, 1437, 1421, 1438, 1439, + 1422, 1440, 1429, 1441, 1423, 1442, 1443, 1444, 1424, 1425, + 1426, 1445, 1446, 1447, 1448, 1449, 1427, 1428, 1450, 1430, + 1431, 1432, 1433, 1434, 1435, 1451, 1436, 1437, 1452, 1438, + 1439, 1453, 1440, 1429, 1441, 1454, 1442, 1443, 1444, 1455, + 1456, 1457, 1445, 1446, 1447, 1448, 1449, 1458, 1459, 1450, + 1460, 1461, 1462, 1463, 1464, 1465, 1451, 1466, 1467, 1452, + 1468, 1469, 1453, 1470, 1471, 1472, 1454, 1473, 1474, 1475, + 1455, 1456, 1457, 1477, 1479, 1476, 1480, 1481, 1458, 1459, + + 1482, 1460, 1461, 1462, 1463, 1464, 1465, 1483, 1466, 1467, + 1484, 1468, 1469, 1485, 1470, 1471, 1472, 362, 1473, 1474, + 1475, 362, 1486, 1487, 1477, 1479, 1476, 1480, 1481, 1488, + 1489, 1482, 1490, 1491, 1492, 1493, 1494, 1495, 1483, 1496, + 1497, 1484, 1498, 1499, 1485, 1500, 1501, 1502, 1503, 1504, + 1505, 1506, 1507, 1486, 1487, 1508, 1509, 1510, 1511, 1512, + 1488, 1489, 1513, 1490, 1491, 1492, 1493, 1494, 1495, 1514, + 1496, 1497, 1515, 1498, 1499, 1516, 1500, 1501, 1502, 1503, + 1504, 1505, 1506, 1507, 1517, 1518, 1508, 1509, 1510, 1511, + 1512, 1519, 1520, 1513, 1521, 1522, 1523, 1524, 1525, 1526, + + 1514, 1527, 1528, 1515, 1529, 1530, 1516, 1531, 1532, 1533, + 1534, 1535, 1536, 1537, 1538, 1517, 1518, 1539, 1540, 1541, + 1542, 1543, 1519, 1520, 1544, 1521, 1522, 1523, 1524, 1525, + 1526, 1545, 1527, 1528, 1546, 1529, 1530, 1547, 1531, 1532, + 1533, 1534, 1535, 1536, 1537, 1538, 1548, 1549, 1539, 1540, + 1541, 1542, 1543, 1550, 1551, 1544, 1552, 1553, 1556, 1554, + 1562, 1563, 1545, 1557, 1558, 1546, 1564, 1565, 1547, 1566, + 1567, 1568, 1569, 1570, 1559, 1571, 1560, 1548, 1549, 1555, + 1561, 1572, 1573, 1574, 1550, 1551, 1575, 1552, 1553, 1556, + 1554, 1562, 1563, 1576, 1557, 1558, 1577, 1564, 1565, 1578, + + 1566, 1567, 1568, 1569, 1570, 1559, 1571, 1560, 1579, 1580, + 1555, 1561, 1572, 1573, 1574, 1581, 1582, 1575, 1583, 1584, + 1585, 1586, 1587, 1588, 1576, 1589, 1590, 1577, 1591, 1592, + 1578, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1579, + 1580, 1601, 1602, 1603, 1604, 1605, 1581, 1582, 1606, 1583, + 1584, 1585, 1586, 1587, 1588, 1607, 1589, 1590, 1608, 1591, + 1592, 1609, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, + 1557, 1558, 1601, 1602, 1603, 1604, 1605, 1610, 1611, 1606, + 1612, 1613, 1614, 1560, 1615, 1616, 1607, 1561, 1617, 1608, + 1618, 1619, 1609, 1620, 1621, 1622, 1623, 1625, 1626, 1627, + + 1624, 1557, 1558, 1628, 1629, 1630, 1631, 1632, 1610, 1611, + 1633, 1612, 1613, 1614, 1560, 1615, 1616, 362, 1561, 1617, + 362, 1618, 1619, 1634, 1620, 1621, 1622, 1623, 1625, 1626, + 1627, 1624, 1635, 1636, 1628, 1629, 1630, 1631, 1632, 1637, + 1638, 1633, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, + 1647, 1648, 1649, 1650, 1634, 1651, 1652, 1653, 1654, 1655, + 1656, 1657, 1658, 1635, 1636, 1659, 1660, 1661, 1662, 1663, + 1637, 1638, 1664, 1639, 1640, 1641, 1642, 1643, 1644, 1645, + 1646, 1647, 1648, 1649, 1650, 1665, 1651, 1652, 1653, 1654, + 1655, 1656, 1657, 1658, 1666, 1667, 1659, 1660, 1661, 1662, + + 1663, 1668, 1669, 1664, 1670, 1671, 1672, 1673, 1674, 1675, + 1676, 1677, 1678, 1679, 1680, 1681, 1665, 1682, 1683, 1684, + 1685, 1686, 1687, 1688, 1689, 1666, 1667, 1690, 1691, 1692, + 1693, 1694, 1668, 1669, 1697, 1670, 1671, 1672, 1673, 1674, + 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1698, 1682, 1683, + 1684, 1685, 1686, 1687, 1688, 1689, 1695, 1700, 1690, 1691, + 1692, 1693, 1694, 1699, 1696, 1697, 1701, 1702, 1703, 1704, + 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1698, 1713, + 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1695, 1700, 1721, + 1722, 1723, 1724, 1725, 1699, 1696, 1726, 1701, 1702, 1703, + + 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1727, + 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1728, 1729, + 1721, 1722, 1723, 1724, 1725, 1730, 1731, 1726, 1732, 1733, + 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, + 1727, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1728, + 1729, 1752, 1753, 362, 362, 1754, 1730, 1731, 1755, 1732, + 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, + 1743, 1756, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, + 1757, 1758, 1752, 1753, 1759, 1760, 1754, 1761, 1762, 1755, + 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, + + 1773, 1774, 1756, 1775, 1776, 1777, 1778, 1779, 1780, 1781, + 1782, 1757, 1758, 1783, 1784, 1759, 1760, 1785, 1761, 1762, + 1786, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, + 1772, 1773, 1774, 1787, 1775, 1776, 1777, 1778, 1779, 1780, + 1781, 1782, 1788, 1789, 1783, 1784, 1790, 1791, 1785, 1792, + 1793, 1786, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, + 1802, 1803, 1804, 1805, 1787, 1806, 1807, 1808, 1809, 1810, + 1811, 1812, 1813, 1788, 1789, 1814, 1815, 1790, 1791, 1816, + 1792, 1793, 1817, 1794, 1795, 1796, 1797, 1798, 1799, 1800, + 1801, 1802, 1803, 1804, 1805, 1818, 1806, 1807, 1808, 1809, + + 1810, 1811, 1812, 1813, 1819, 1820, 1814, 1815, 1821, 1822, + 1816, 1823, 1824, 1817, 1825, 1826, 1827, 1828, 1829, 1831, + 1830, 1832, 1833, 1834, 1835, 1836, 1818, 1837, 1838, 362, + 1839, 1840, 1841, 1842, 1843, 1819, 1820, 362, 1844, 1821, + 1822, 1845, 1823, 1824, 1846, 1825, 1826, 1827, 1828, 1829, + 1831, 1830, 1832, 1833, 1834, 1835, 1836, 1847, 1837, 1838, + 1848, 1839, 1840, 1841, 1842, 1843, 1849, 1850, 1851, 1844, + 1852, 1853, 1845, 1854, 1855, 1846, 1856, 1857, 1858, 1859, + 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1847, 1868, + 1869, 1848, 1870, 1871, 1872, 1873, 1874, 1849, 1850, 1851, + + 1875, 1852, 1853, 1876, 1854, 1855, 1877, 1856, 1857, 1858, + 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1878, + 1868, 1869, 1879, 1870, 1871, 1872, 1873, 1874, 1880, 1881, + 1882, 1875, 1883, 1884, 1876, 1885, 1887, 1877, 1888, 1889, + 1891, 1892, 1890, 1893, 1894, 1895, 1896, 1897, 1898, 362, + 1878, 1899, 1886, 1879, 1900, 1901, 1902, 1903, 1904, 1880, + 1881, 1882, 362, 1883, 1884, 1905, 1885, 1887, 1906, 1888, + 1889, 1891, 1892, 1890, 1893, 1894, 1895, 1896, 1897, 1898, + 1907, 1908, 1899, 1886, 1909, 1900, 1901, 1902, 1903, 1904, + 1910, 1911, 1912, 1913, 1914, 1915, 1905, 1916, 1917, 1906, + + 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, + 1928, 1907, 1908, 1929, 1930, 1909, 362, 1931, 1932, 1933, + 1934, 1910, 1911, 1912, 1913, 1914, 1915, 1935, 1916, 1917, + 362, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, + 1927, 1928, 1936, 1937, 1929, 1930, 1938, 1939, 1931, 1932, + 1933, 1934, 1940, 1941, 1942, 1943, 1944, 1945, 1935, 1946, + 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, + 1958, 1959, 362, 1936, 1937, 1960, 1961, 1938, 1939, 1957, + 1962, 1963, 1964, 1940, 1941, 1942, 1943, 1944, 1945, 1965, + 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, + + 1956, 1958, 1959, 362, 1966, 1967, 1960, 1961, 1968, 1969, + 1957, 1962, 1963, 1964, 1970, 1971, 1972, 1973, 1974, 1976, + 1965, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1986, + 1987, 1988, 1989, 1990, 1991, 1966, 1967, 1992, 1993, 1968, + 1969, 1994, 362, 1995, 1996, 1970, 1971, 1972, 1973, 1974, + 1976, 1997, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, + 1986, 1987, 1988, 1989, 1990, 1991, 1998, 1999, 1992, 1993, + 2000, 2001, 1994, 2002, 1995, 1996, 2003, 2004, 2004, 2004, + 2004, 2004, 1997, 2004, 2004, 2004, 2004, 2004, 2004, 2004, + 2004, 2004, 2004, 2004, 2004, 2004, 2004, 1998, 1999, 2004, + + 2004, 2000, 2001, 2004, 2002, 2004, 2004, 2003, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 125, 125, 125, + 125, 125, 125, 125, 125, 125, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 134, 2004, 134, 134, 134, + 134, 134, 134, 134, 135, 2004, 135, 135, 135, 135, + 135, 135, 135, 139, 139, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 254, 2004, 254, 254, 254, 254, 254, + 254, 254, 274, 2004, 274, 358, 358, 358, 358, 358, + 358, 358, 358, 358, 363, 363, 363, 363, 363, 363, + + 363, 363, 363, 367, 367, 367, 367, 367, 367, 367, + 367, 367, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 370, 370, 370, 2004, 2004, 370, 370, 2004, 370, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 556, + 2004, 2004, 556, 556, 2004, 556, 584, 584, 584, 2004, + 584, 584, 584, 584, 584, 586, 586, 586, 586, 2004, + 586, 586, 586, 586, 626, 626, 626, 626, 626, 626, + 626, 626, 626, 13, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, + 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, - 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, - 2004, 2004, 2004 + 2004, 2004 } ; -static yyconst flex_int16_t yy_chk[4644] = +static yyconst flex_int16_t yy_chk[4663] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1702,445 +1719,447 @@ static yyconst flex_int16_t yy_chk[4644] = 73, 35, 110, 73, 73, 36, 70, 64, 85, 36, 38, 38, 85, 39, 89, 43, 89, 39, 38, 43, 38, 39, 38, 43, 39, 38, 38, 39, 101, 43, - 39, 627, 43, 627, 78, 78, 255, 101, 254, 43, + 39, 627, 43, 627, 111, 115, 255, 101, 254, 43, 252, 38, 38, 142, 39, 89, 43, 89, 39, 38, 43, 38, 39, 38, 43, 39, 38, 38, 39, 136, - 43, 39, 42, 43, 42, 78, 78, 42, 42, 75, - - 43, 44, 42, 75, 74, 74, 42, 75, 111, 42, - 44, 42, 44, 75, 42, 74, 44, 115, 44, 135, - 44, 98, 98, 42, 126, 42, 126, 126, 42, 42, - 75, 98, 44, 42, 75, 74, 74, 42, 75, 111, - 42, 44, 42, 44, 75, 42, 74, 44, 115, 44, - 103, 44, 46, 46, 103, 72, 46, 72, 46, 104, - 46, 118, 98, 83, 72, 46, 128, 72, 80, 119, - 72, 83, 80, 83, 585, 104, 80, 127, 83, 83, - 123, 103, 80, 46, 46, 103, 72, 46, 72, 46, - 104, 46, 118, 130, 83, 72, 46, 84, 72, 80, - - 119, 72, 83, 80, 83, 84, 104, 80, 87, 83, - 83, 84, 87, 80, 84, 86, 86, 88, 87, 585, - 106, 87, 122, 88, 130, 88, 105, 86, 84, 105, - 378, 378, 86, 102, 106, 131, 84, 144, 99, 87, - 99, 99, 84, 87, 109, 84, 86, 86, 88, 87, - 99, 106, 87, 108, 88, 147, 88, 105, 86, 109, - 105, 108, 112, 86, 113, 106, 131, 114, 144, 116, - 108, 114, 112, 116, 113, 109, 117, 112, 149, 117, - 132, 99, 100, 132, 108, 133, 147, 133, 133, 96, - 109, 95, 108, 112, 151, 113, 94, 120, 114, 93, - - 116, 108, 114, 112, 116, 113, 120, 117, 112, 149, - 117, 153, 120, 137, 137, 138, 156, 138, 138, 140, - 140, 157, 120, 137, 132, 151, 158, 138, 120, 140, - 141, 141, 383, 383, 141, 141, 50, 120, 145, 145, - 146, 146, 153, 120, 146, 146, 49, 156, 145, 384, - 384, 48, 157, 152, 137, 19, 159, 158, 138, 152, - 140, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 150, 159, 143, 148, 145, - 143, 143, 148, 143, 152, 154, 150, 159, 162, 148, - 152, 160, 160, 160, 163, 148, 165, 166, 167, 154, - - 165, 168, 170, 170, 169, 171, 150, 159, 173, 148, - 143, 143, 143, 148, 143, 13, 154, 150, 169, 162, - 148, 175, 160, 160, 160, 163, 148, 165, 166, 167, - 154, 165, 168, 170, 170, 169, 171, 177, 178, 173, - 179, 143, 143, 143, 143, 143, 143, 143, 143, 169, - 172, 174, 175, 180, 172, 174, 176, 182, 176, 176, - 183, 184, 176, 185, 181, 588, 588, 187, 177, 178, - 188, 179, 181, 189, 190, 194, 196, 201, 181, 202, - 189, 172, 174, 0, 180, 172, 174, 176, 182, 176, - 176, 183, 184, 176, 185, 181, 186, 186, 187, 191, - - 199, 188, 186, 181, 189, 190, 194, 196, 201, 181, - 202, 189, 205, 186, 193, 191, 199, 191, 203, 193, - 193, 198, 191, 198, 198, 206, 203, 186, 186, 198, - 191, 199, 207, 186, 200, 200, 200, 204, 208, 209, - 210, 204, 200, 205, 186, 193, 191, 199, 191, 203, - 193, 193, 198, 191, 198, 198, 206, 203, 211, 212, - 198, 212, 213, 207, 214, 200, 200, 200, 204, 208, - 209, 210, 204, 200, 215, 216, 217, 218, 216, 219, - 589, 589, 217, 221, 219, 216, 0, 222, 223, 211, - 212, 0, 212, 213, 224, 214, 225, 592, 592, 227, - - 228, 230, 229, 231, 232, 215, 216, 217, 218, 216, - 219, 220, 220, 217, 221, 219, 216, 220, 222, 223, - 235, 220, 220, 237, 220, 224, 229, 225, 226, 226, - 227, 228, 230, 229, 231, 232, 233, 234, 236, 234, - 240, 226, 220, 220, 242, 234, 236, 233, 220, 243, - 244, 235, 220, 220, 237, 220, 245, 229, 236, 226, - 226, 246, 247, 248, 249, 250, 251, 233, 234, 236, - 234, 240, 226, 257, 258, 242, 234, 236, 233, 259, - 243, 244, 260, 261, 262, 263, 264, 245, 265, 236, - 266, 268, 246, 247, 248, 249, 250, 251, 267, 269, - - 270, 271, 272, 273, 257, 258, 278, 262, 279, 281, - 259, 267, 282, 260, 261, 262, 263, 264, 280, 265, - 280, 266, 268, 275, 275, 283, 0, 284, 277, 267, - 269, 270, 271, 272, 273, 277, 286, 278, 262, 279, - 281, 277, 267, 282, 285, 288, 289, 291, 285, 280, - 287, 280, 287, 287, 290, 292, 283, 275, 284, 277, - 290, 293, 294, 295, 296, 297, 277, 286, 299, 300, - 301, 290, 277, 302, 304, 285, 288, 289, 291, 285, - 303, 287, 305, 287, 287, 290, 292, 306, 307, 308, - 303, 290, 293, 294, 295, 296, 297, 309, 310, 299, - - 300, 301, 290, 312, 302, 304, 311, 313, 314, 310, - 329, 303, 0, 305, 311, 319, 319, 0, 306, 307, - 308, 303, 321, 321, 320, 319, 320, 320, 309, 310, - 330, 331, 321, 332, 312, 334, 320, 311, 313, 314, - 310, 329, 322, 322, 335, 311, 322, 322, 323, 323, - 324, 324, 333, 333, 324, 324, 319, 335, 323, 336, - 337, 330, 331, 321, 332, 338, 334, 320, 339, 340, - 341, 343, 344, 345, 346, 335, 348, 350, 351, 352, - 353, 355, 343, 333, 333, 354, 356, 354, 335, 323, - 336, 337, 357, 359, 360, 0, 338, 379, 361, 339, - - 340, 341, 343, 344, 345, 346, 385, 348, 350, 351, - 352, 353, 355, 343, 386, 387, 354, 356, 354, 361, - 388, 359, 360, 357, 359, 360, 374, 374, 379, 361, - 375, 375, 381, 381, 375, 375, 374, 385, 389, 382, - 382, 390, 381, 382, 382, 386, 387, 391, 392, 393, - 394, 388, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 408, 409, 411, 374, 0, 389, - 412, 406, 390, 381, 413, 414, 415, 406, 391, 392, - 393, 394, 410, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 408, 409, 411, 416, 410, - - 418, 412, 406, 419, 420, 413, 414, 415, 406, 421, - 422, 423, 424, 410, 425, 426, 427, 428, 429, 431, - 424, 432, 433, 434, 435, 436, 437, 428, 438, 416, - 410, 418, 439, 440, 419, 420, 441, 440, 442, 443, - 421, 422, 423, 424, 444, 425, 426, 427, 428, 429, - 431, 424, 432, 433, 434, 435, 436, 437, 428, 438, - 445, 446, 447, 439, 440, 448, 449, 441, 440, 442, - 443, 450, 447, 451, 452, 444, 453, 454, 455, 456, - 459, 460, 593, 593, 462, 0, 464, 628, 628, 465, - 0, 445, 446, 447, 463, 467, 448, 449, 463, 468, - - 630, 630, 450, 447, 451, 452, 469, 453, 454, 455, - 456, 459, 460, 461, 461, 462, 461, 464, 461, 461, - 465, 461, 470, 471, 461, 463, 467, 461, 472, 463, - 468, 461, 461, 473, 474, 461, 0, 469, 477, 0, - 478, 631, 631, 480, 461, 461, 481, 461, 482, 461, - 461, 483, 461, 470, 471, 461, 479, 485, 461, 472, - 479, 486, 461, 461, 473, 474, 461, 466, 466, 477, - 466, 478, 466, 466, 480, 466, 484, 481, 466, 482, - 489, 487, 483, 488, 484, 466, 466, 479, 485, 466, - 490, 479, 486, 491, 488, 492, 493, 490, 466, 466, - - 494, 466, 495, 466, 466, 487, 466, 484, 496, 466, - 497, 489, 487, 498, 488, 484, 466, 466, 499, 500, - 466, 490, 501, 502, 491, 488, 492, 493, 490, 503, - 504, 494, 505, 495, 506, 507, 487, 508, 509, 496, - 510, 497, 504, 511, 498, 513, 514, 515, 516, 499, - 500, 517, 518, 501, 502, 519, 520, 521, 522, 523, - 503, 504, 524, 505, 527, 506, 507, 525, 508, 509, - 526, 510, 525, 504, 511, 526, 513, 514, 515, 516, - 528, 529, 517, 518, 532, 535, 519, 520, 521, 522, - 523, 537, 528, 524, 538, 527, 539, 540, 525, 541, - - 542, 526, 543, 525, 544, 546, 526, 547, 548, 549, - 550, 528, 529, 551, 552, 532, 535, 553, 554, 558, - 559, 560, 537, 528, 561, 538, 562, 539, 540, 563, - 541, 542, 564, 543, 565, 544, 546, 566, 547, 548, - 549, 550, 567, 568, 551, 552, 569, 570, 553, 554, - 558, 559, 560, 571, 572, 561, 569, 562, 573, 574, - 563, 575, 576, 564, 577, 565, 578, 579, 566, 580, - 581, 582, 583, 567, 568, 591, 591, 569, 570, 591, - 591, 590, 590, 594, 571, 572, 595, 569, 596, 573, - 574, 590, 575, 576, 597, 577, 598, 578, 579, 599, - - 580, 581, 582, 583, 600, 601, 602, 603, 604, 605, - 606, 607, 608, 609, 594, 610, 611, 595, 612, 596, - 614, 615, 590, 616, 617, 597, 618, 598, 619, 620, - 599, 621, 622, 625, 0, 600, 601, 602, 603, 604, - 605, 606, 607, 608, 609, 624, 610, 611, 632, 612, - 633, 614, 615, 634, 616, 617, 623, 618, 624, 619, - 620, 625, 621, 622, 625, 623, 635, 636, 638, 639, - 640, 641, 642, 643, 644, 646, 624, 647, 648, 632, - 649, 633, 650, 651, 634, 652, 653, 623, 654, 655, - 656, 657, 656, 658, 652, 659, 647, 635, 636, 638, - - 639, 640, 641, 642, 643, 644, 646, 660, 647, 648, - 662, 649, 663, 650, 651, 664, 652, 653, 665, 654, - 655, 656, 657, 656, 658, 652, 659, 647, 666, 667, - 668, 669, 670, 672, 673, 674, 675, 676, 660, 677, - 678, 662, 680, 663, 681, 682, 664, 683, 684, 665, - 685, 686, 687, 688, 689, 690, 691, 692, 693, 666, - 667, 668, 669, 670, 672, 673, 674, 675, 676, 694, - 677, 678, 696, 680, 697, 681, 682, 699, 683, 684, - 700, 685, 686, 687, 688, 689, 690, 691, 692, 693, - 698, 701, 702, 703, 704, 706, 708, 698, 710, 707, - - 694, 711, 712, 696, 713, 697, 707, 714, 699, 715, - 716, 700, 717, 718, 719, 720, 721, 722, 723, 718, - 724, 698, 701, 702, 703, 704, 706, 708, 698, 710, - 707, 718, 711, 712, 725, 713, 726, 707, 714, 727, - 715, 716, 728, 717, 718, 719, 720, 721, 722, 723, - 718, 724, 729, 730, 731, 732, 734, 733, 735, 736, - 737, 738, 718, 733, 740, 725, 742, 726, 743, 744, - 727, 745, 743, 728, 746, 733, 747, 748, 749, 750, - 751, 752, 753, 729, 730, 731, 732, 734, 733, 735, - 736, 737, 738, 754, 733, 740, 755, 742, 756, 743, - - 744, 757, 745, 743, 758, 746, 733, 747, 748, 749, - 750, 751, 752, 753, 759, 760, 761, 762, 763, 764, - 760, 765, 766, 767, 754, 768, 769, 755, 770, 756, - 771, 772, 757, 773, 774, 758, 775, 776, 777, 778, - 779, 780, 781, 782, 783, 759, 760, 761, 762, 763, - 764, 760, 765, 766, 767, 784, 768, 769, 785, 770, - 786, 771, 772, 787, 773, 774, 792, 775, 776, 777, - 778, 779, 780, 781, 782, 783, 788, 790, 793, 794, - 788, 795, 796, 798, 799, 800, 784, 790, 801, 785, - 802, 786, 803, 804, 787, 805, 806, 792, 808, 809, - - 810, 811, 812, 813, 814, 815, 816, 788, 790, 793, - 794, 788, 795, 796, 798, 799, 800, 817, 790, 801, - 818, 802, 819, 803, 804, 820, 805, 806, 822, 808, - 809, 810, 811, 812, 813, 814, 815, 816, 823, 824, - 825, 826, 828, 830, 831, 832, 833, 834, 817, 835, - 836, 818, 838, 819, 839, 845, 820, 842, 842, 822, - 843, 843, 846, 847, 848, 849, 850, 851, 852, 823, - 824, 825, 826, 828, 830, 831, 832, 833, 834, 853, - 835, 836, 854, 838, 855, 839, 845, 856, 857, 858, - 859, 860, 861, 846, 847, 848, 849, 850, 851, 852, - - 862, 863, 864, 865, 866, 867, 868, 870, 871, 0, - 853, 874, 872, 854, 877, 855, 873, 873, 856, 857, - 858, 859, 860, 861, 874, 879, 880, 882, 883, 885, - 886, 862, 863, 864, 865, 866, 867, 868, 870, 871, - 872, 887, 874, 872, 888, 877, 889, 890, 892, 893, - 894, 893, 895, 896, 898, 899, 879, 880, 882, 883, - 885, 886, 897, 900, 901, 897, 902, 904, 905, 906, - 907, 910, 887, 912, 915, 888, 916, 889, 890, 892, - 893, 894, 893, 895, 896, 898, 899, 913, 913, 917, - 918, 919, 920, 897, 900, 901, 897, 902, 904, 905, - - 906, 907, 910, 922, 912, 915, 923, 916, 925, 926, - 929, 930, 932, 933, 931, 935, 936, 938, 913, 913, - 917, 918, 919, 920, 931, 939, 936, 931, 931, 940, - 941, 931, 931, 942, 922, 945, 947, 923, 948, 925, - 926, 929, 930, 932, 933, 931, 935, 936, 938, 0, - 949, 950, 951, 952, 953, 931, 939, 936, 931, 931, - 940, 941, 931, 931, 942, 943, 945, 947, 943, 948, - 954, 943, 955, 956, 957, 943, 958, 959, 960, 961, - 943, 949, 950, 951, 952, 953, 962, 963, 964, 965, - 966, 967, 969, 970, 971, 972, 943, 973, 974, 943, - - 975, 954, 943, 955, 956, 957, 943, 958, 959, 960, - 961, 943, 976, 977, 978, 979, 980, 962, 963, 964, - 965, 966, 967, 969, 970, 971, 972, 981, 973, 974, - 983, 975, 985, 986, 987, 988, 989, 990, 991, 992, - 993, 994, 995, 976, 977, 978, 979, 980, 996, 997, - 998, 999, 1000, 1001, 1002, 1003, 1004, 0, 981, 1006, - 1007, 983, 1008, 985, 986, 987, 988, 989, 990, 991, - 992, 993, 994, 995, 1009, 1011, 1012, 1013, 1014, 996, - 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1010, - 1006, 1007, 1015, 1008, 1016, 1017, 1010, 1005, 1018, 1021, - - 1022, 1021, 1023, 1024, 1025, 1009, 1011, 1012, 1013, 1014, - 1026, 1027, 1029, 1030, 1031, 1032, 1034, 1021, 1035, 1005, - 1010, 1037, 1039, 1015, 1041, 1016, 1017, 1010, 1005, 1018, - 1021, 1022, 1021, 1023, 1024, 1025, 1042, 1045, 1046, 1047, - 1048, 1026, 1027, 1029, 1030, 1031, 1032, 1034, 1021, 1035, - 1036, 1040, 1037, 1039, 1049, 1041, 1036, 1050, 1054, 1055, - 1056, 1040, 1059, 1060, 1061, 1062, 1063, 1042, 1045, 1046, - 1047, 1048, 1064, 1066, 1068, 1070, 1068, 1056, 1071, 1072, - 0, 1036, 1040, 1074, 1075, 1049, 1076, 1036, 1050, 1054, - 1055, 1056, 1040, 1059, 1060, 1061, 1062, 1063, 1077, 1078, - - 1079, 1080, 1073, 1064, 1066, 1068, 1070, 1068, 1056, 1071, - 1072, 1073, 1081, 1082, 1074, 1075, 1083, 1076, 1084, 1085, - 1086, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1096, 1077, - 1078, 1079, 1080, 1073, 1098, 1099, 1100, 1101, 1103, 1104, - 1104, 1107, 1073, 1081, 1082, 1105, 1106, 1083, 1108, 1084, - 1085, 1086, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1096, - 1109, 1110, 1111, 1112, 1114, 1098, 1099, 1100, 1101, 1103, - 1106, 1105, 1107, 1117, 1119, 1120, 1105, 1106, 1121, 1108, - 1122, 1123, 1125, 1127, 1128, 1129, 1130, 1131, 1132, 1134, - 1135, 1109, 1110, 1111, 1112, 1114, 1136, 1137, 1139, 1141, - - 1143, 1145, 1146, 1147, 1117, 1119, 1120, 1148, 1151, 1121, - 1152, 1122, 1123, 1125, 1127, 1128, 1129, 1130, 1131, 1132, - 1134, 1135, 1153, 1154, 1155, 1156, 1158, 1136, 1137, 1139, - 1141, 1143, 1145, 1146, 1147, 1159, 1160, 1161, 1148, 1151, - 1162, 1152, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1171, - 1170, 1174, 1175, 1153, 1154, 1155, 1156, 1158, 1170, 1176, - 1177, 1178, 1179, 1180, 1181, 1182, 1159, 1160, 1161, 1183, - 1184, 1162, 1185, 1163, 1164, 1165, 1166, 1167, 1168, 1169, - 1171, 1170, 1174, 1175, 1186, 1187, 1188, 1189, 1190, 1170, - 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1192, 1194, 1195, - - 1183, 1184, 1196, 1185, 1197, 1198, 1199, 1200, 1201, 1202, - 1203, 1204, 1205, 1206, 1207, 1186, 1187, 1188, 1189, 1190, - 1208, 1211, 1213, 1214, 1215, 1216, 1217, 1218, 1192, 1194, - 1195, 1219, 1220, 1196, 1225, 1197, 1198, 1199, 1200, 1201, - 1202, 1203, 1204, 1205, 1206, 1207, 1226, 1227, 1228, 1229, - 1230, 1208, 1211, 1213, 1214, 1215, 1216, 1217, 1218, 1231, - 1232, 1233, 1219, 1220, 1234, 1225, 1235, 1236, 1238, 1240, - 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1226, 1227, 1228, - 1229, 1230, 1249, 1252, 1255, 1256, 1257, 1258, 1259, 1260, - 1231, 1232, 1233, 1248, 1261, 1234, 1262, 1235, 1236, 1238, - - 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1263, 1248, - 1264, 1265, 1266, 1249, 1252, 1255, 1256, 1257, 1258, 1259, - 1260, 1267, 1268, 1269, 1248, 1261, 1270, 1262, 1273, 1275, - 1276, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1286, 1263, - 1248, 1264, 1265, 1266, 1289, 1290, 1291, 1292, 1293, 1294, - 1296, 1297, 1267, 1268, 1269, 1298, 1299, 1270, 1300, 1273, - 1275, 1276, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1286, - 1301, 1303, 1304, 1305, 1306, 1289, 1290, 1291, 1292, 1293, - 1294, 1296, 1297, 1307, 1309, 1310, 1298, 1299, 1312, 1300, - 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1323, - - 1324, 1301, 1303, 1304, 1305, 1306, 1325, 1326, 1328, 1310, - 1309, 1329, 1331, 1333, 1307, 1309, 1310, 1334, 1335, 1312, - 1337, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, - 1323, 1324, 1339, 1340, 1341, 1342, 1343, 1325, 1326, 1328, - 1344, 1345, 1329, 1331, 1333, 1346, 1347, 1348, 1334, 1335, - 1350, 1337, 1351, 1352, 1353, 1354, 1356, 1357, 1358, 1359, - 1360, 1361, 1362, 1339, 1340, 1341, 1342, 1343, 1363, 1364, - 1366, 1344, 1345, 1367, 1369, 1370, 1346, 1347, 1348, 1371, - 1372, 1350, 1373, 1351, 1352, 1353, 1354, 1356, 1357, 1358, - 1359, 1360, 1361, 1362, 1374, 1375, 1376, 1378, 1379, 1363, - - 1364, 1366, 1380, 1381, 1367, 1369, 1370, 1382, 1384, 1385, - 1371, 1372, 1386, 1373, 1387, 1388, 1389, 1390, 1392, 1393, - 1394, 1395, 1396, 1400, 1401, 1374, 1375, 1376, 1378, 1379, - 1398, 1402, 1398, 1380, 1381, 1404, 0, 1406, 1382, 1384, - 1385, 1407, 0, 1386, 1401, 1387, 1388, 1389, 1390, 1392, - 1393, 1394, 1395, 1396, 1400, 1401, 1403, 1403, 1409, 1411, - 1412, 1398, 1402, 1398, 1413, 1414, 1404, 1403, 1406, 1403, - 1415, 1416, 1407, 1403, 1417, 1401, 1418, 1419, 1420, 1421, - 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1403, 1403, 1409, - 1411, 1412, 1429, 1430, 1431, 1413, 1414, 1432, 1403, 1434, - - 1403, 1415, 1416, 1435, 1403, 1417, 1436, 1418, 1419, 1420, - 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1433, 1437, - 1433, 1439, 1440, 1429, 1430, 1431, 1441, 1442, 1432, 1443, - 1434, 1446, 1447, 1448, 1435, 1449, 1450, 1436, 1451, 1452, - 1453, 1454, 1455, 1456, 0, 0, 1458, 1460, 1462, 1433, - 1437, 1433, 1439, 1440, 1463, 1465, 1466, 1441, 1442, 1467, - 1443, 0, 1446, 1447, 1448, 1469, 1449, 1450, 1470, 1451, - 1452, 1453, 1454, 1455, 1456, 1457, 1457, 1458, 1460, 1462, - 1471, 1472, 1473, 1474, 1476, 1463, 1465, 1466, 1457, 1479, - 1467, 1480, 1457, 1477, 1481, 1482, 1469, 1483, 1485, 1470, - - 1486, 1487, 1488, 1489, 1490, 1491, 1457, 1457, 1476, 1492, - 1477, 1471, 1472, 1473, 1474, 1476, 1493, 1494, 1495, 1457, - 1479, 1497, 1480, 1457, 1477, 1481, 1482, 1498, 1483, 1485, - 1499, 1486, 1487, 1488, 1489, 1490, 1491, 1500, 1501, 1502, - 1492, 1504, 1505, 1506, 1507, 1508, 1510, 1493, 1494, 1495, - 1511, 1512, 1497, 1513, 1515, 1516, 1517, 1518, 1498, 1519, - 1520, 1499, 1521, 1522, 1523, 1524, 1525, 1526, 1500, 1501, - 1502, 1527, 1504, 1505, 1506, 1507, 1508, 1510, 1528, 1529, - 1530, 1511, 1512, 1531, 1513, 1515, 1516, 1517, 1518, 1532, - 1519, 1520, 1533, 1521, 1522, 1523, 1524, 1525, 1526, 1534, - - 1535, 1539, 1527, 1540, 1541, 1542, 1543, 1544, 1545, 1528, - 1529, 1530, 1546, 1547, 1531, 1550, 1551, 1552, 1553, 1554, - 1532, 1555, 1556, 1533, 1557, 1558, 1560, 1563, 1564, 1561, - 1534, 1535, 1539, 1559, 1540, 1541, 1542, 1543, 1544, 1545, - 1566, 1559, 1567, 1546, 1547, 1561, 1550, 1551, 1552, 1553, - 1554, 1569, 1555, 1556, 1570, 1557, 1558, 1560, 1563, 1564, - 1561, 1571, 1573, 1574, 1559, 1575, 1576, 1578, 1580, 1581, - 1583, 1566, 1559, 1567, 1584, 1585, 1561, 1586, 1587, 1588, - 1589, 1590, 1569, 1592, 1594, 1570, 1595, 1596, 1600, 1601, - 1602, 1603, 1571, 1573, 1574, 1604, 1575, 1576, 1578, 1580, - - 1581, 1583, 1606, 1607, 1609, 1584, 1585, 1612, 1586, 1587, - 1588, 1589, 1590, 1616, 1592, 1594, 1617, 1595, 1596, 1600, - 1601, 1602, 1603, 1618, 1620, 1621, 1604, 1625, 1623, 1624, - 1626, 1628, 1630, 1606, 1607, 1609, 1632, 1634, 1612, 1635, - 1637, 1638, 1640, 1641, 1616, 1623, 1624, 1617, 1643, 1644, - 1645, 1647, 1650, 1652, 1618, 1620, 1621, 1655, 1625, 1623, - 1624, 1626, 1628, 1630, 1656, 1657, 1658, 1632, 1634, 1659, - 1635, 1637, 1638, 1640, 1641, 1661, 1662, 1663, 1664, 1643, - 1644, 1645, 1647, 1650, 1652, 1665, 1666, 1667, 1655, 1668, - 1669, 1670, 1671, 1673, 1674, 1656, 1657, 1658, 1675, 1676, - - 1659, 1677, 1678, 1679, 1680, 1681, 1661, 1662, 1663, 1664, - 1683, 1684, 1685, 1686, 1687, 1688, 1665, 1666, 1667, 1689, - 1668, 1669, 1670, 1671, 1673, 1674, 1690, 1691, 1692, 1675, - 1676, 1693, 1677, 1678, 1679, 1680, 1681, 1694, 1695, 1696, - 1697, 1683, 1684, 1685, 1686, 1687, 1688, 1698, 1699, 1700, - 1689, 1701, 1702, 1703, 1704, 1705, 1706, 1690, 1691, 1692, - 1709, 1710, 1693, 1711, 1712, 1713, 1714, 1715, 1694, 1695, - 1696, 1697, 1719, 1721, 1723, 1725, 1726, 1727, 1698, 1699, - 1700, 1728, 1701, 1702, 1703, 1704, 1705, 1706, 1730, 1732, - 1733, 1709, 1710, 1734, 1711, 1712, 1713, 1714, 1715, 1735, - - 1736, 1737, 1738, 1719, 1721, 1723, 1725, 1726, 1727, 1740, - 1742, 1744, 1728, 1741, 1745, 1749, 1750, 1751, 1754, 1730, - 1732, 1733, 1755, 1741, 1734, 1757, 1740, 1759, 1763, 1764, - 1735, 1736, 1737, 1738, 1765, 1766, 1767, 1768, 1771, 1772, - 1740, 1742, 1744, 1773, 1741, 1745, 1749, 1750, 1751, 1754, - 1774, 1775, 1776, 1755, 1777, 1778, 1757, 1780, 1759, 1763, - 1764, 1781, 1782, 1783, 1784, 1765, 1766, 1767, 1768, 1771, - 1772, 1785, 1786, 1787, 1773, 1788, 1790, 1791, 1792, 1793, - 1794, 1774, 1775, 1776, 1795, 1777, 1778, 1796, 1780, 1797, - 1798, 1799, 1781, 1782, 1783, 1784, 1800, 1801, 1802, 1804, - - 1807, 1809, 1785, 1786, 1787, 1813, 1788, 1790, 1791, 1792, - 1793, 1794, 1815, 1816, 1817, 1795, 1818, 1820, 1796, 1824, - 1797, 1798, 1799, 1833, 1830, 1834, 1831, 1800, 1801, 1802, - 1804, 1807, 1809, 1818, 1830, 1835, 1813, 1837, 1838, 1839, - 1840, 1841, 1843, 1815, 1816, 1817, 1831, 1818, 1820, 1844, - 1824, 1845, 1846, 1847, 1833, 1830, 1834, 1831, 1852, 1853, - 1854, 1857, 1860, 1861, 1818, 1863, 1835, 1865, 1837, 1838, - 1839, 1840, 1841, 1843, 1866, 1867, 1868, 1869, 1870, 1871, - 1844, 1872, 1845, 1846, 1847, 1873, 1875, 1878, 1880, 1852, - 1853, 1854, 1857, 1860, 1861, 1882, 1863, 1883, 1865, 1884, - - 1885, 1887, 1889, 1891, 1893, 1866, 1867, 1868, 1869, 1870, - 1871, 1890, 1872, 1894, 1890, 1896, 1873, 1875, 1878, 1880, - 1898, 1899, 1889, 1900, 1901, 1903, 1882, 1904, 1883, 1905, - 1884, 1885, 1887, 1889, 1891, 1893, 1907, 1908, 1910, 1911, - 1915, 1917, 1890, 1918, 1894, 1919, 1896, 1920, 1921, 1922, - 1923, 1898, 1899, 1924, 1900, 1901, 1903, 1925, 1904, 1927, - 1905, 1928, 1929, 1930, 1928, 1931, 1935, 1907, 1908, 1910, - 1911, 1915, 1917, 1936, 1918, 1938, 1919, 1939, 1920, 1921, - 1922, 1923, 1941, 1945, 1924, 1946, 1929, 1947, 1925, 1948, - 1927, 1950, 1928, 1929, 1930, 1951, 1931, 1935, 1952, 1953, - - 1954, 1956, 1958, 1960, 1936, 1961, 1938, 1962, 1939, 1963, - 1965, 1968, 1971, 1941, 1945, 1972, 1946, 1977, 1947, 1978, - 1948, 1981, 1950, 1982, 1983, 1956, 1951, 1986, 1987, 1952, - 1953, 1954, 1956, 1958, 1960, 1988, 1961, 1989, 1962, 1991, - 1963, 1965, 1968, 1971, 1992, 1993, 1972, 1994, 1977, 1997, - 1978, 1998, 1981, 1999, 1982, 1983, 2001, 2002, 1986, 1987, - 0, 0, 0, 0, 0, 0, 1988, 0, 1989, 0, - 1991, 0, 0, 0, 0, 1992, 1993, 0, 1994, 0, - 1997, 0, 1998, 0, 1999, 0, 0, 2001, 2002, 2005, - 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2006, 2006, - - 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2007, 2007, 2007, - 2007, 2007, 2007, 2007, 2007, 2007, 2008, 0, 2008, 2008, - 2008, 2008, 2008, 2008, 2008, 2009, 0, 2009, 2009, 2009, - 2009, 2009, 2009, 2009, 2010, 2010, 2011, 2011, 2011, 2011, - 2011, 2011, 2011, 2011, 2011, 2012, 2012, 2012, 2012, 2012, - 2012, 2012, 2012, 2012, 2013, 0, 2013, 2013, 2013, 2013, - 2013, 2013, 2013, 2014, 0, 2014, 2015, 2015, 2015, 2015, - 2015, 2015, 2015, 2015, 2015, 2016, 2016, 2016, 2016, 2016, - 2016, 2016, 2016, 2016, 2017, 2017, 2017, 2017, 2017, 2017, - 2017, 2017, 2017, 2018, 2018, 2018, 2018, 2018, 2018, 2018, - - 2018, 2018, 2019, 2019, 2019, 0, 0, 2019, 2019, 0, - 2019, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, - 2021, 0, 0, 2021, 2021, 0, 2021, 2022, 2022, 2022, - 0, 2022, 2022, 2022, 2022, 2022, 2023, 2023, 2023, 2023, - 0, 2023, 2023, 2023, 2023, 2024, 2024, 2024, 2024, 2024, - 2024, 2024, 2024, 2024, 2004, 2004, 2004, 2004, 2004, 2004, + 43, 39, 42, 43, 42, 111, 115, 42, 42, 75, + + 43, 44, 42, 75, 74, 74, 42, 75, 118, 42, + 44, 42, 44, 75, 42, 74, 44, 119, 44, 126, + 44, 126, 126, 42, 133, 42, 133, 133, 42, 42, + 75, 135, 44, 42, 75, 74, 74, 42, 75, 118, + 42, 44, 42, 44, 75, 42, 74, 44, 119, 44, + 128, 44, 46, 46, 127, 72, 46, 72, 46, 103, + 46, 78, 78, 103, 72, 46, 83, 72, 78, 123, + 72, 80, 378, 378, 83, 80, 83, 122, 130, 80, + 131, 83, 83, 46, 46, 80, 72, 46, 72, 46, + 103, 46, 78, 78, 103, 72, 46, 83, 72, 78, + + 84, 72, 80, 86, 86, 83, 80, 83, 84, 130, + 80, 131, 83, 83, 84, 86, 80, 84, 88, 87, + 86, 102, 104, 87, 88, 100, 88, 98, 98, 87, + 105, 84, 87, 105, 86, 86, 96, 98, 104, 84, + 99, 109, 99, 99, 106, 84, 86, 144, 84, 88, + 87, 86, 99, 104, 87, 88, 109, 88, 106, 108, + 87, 105, 114, 87, 105, 95, 114, 108, 98, 104, + 112, 113, 109, 116, 94, 106, 108, 116, 144, 117, + 112, 113, 117, 99, 585, 112, 93, 109, 132, 106, + 108, 132, 147, 114, 120, 137, 137, 114, 108, 50, + + 149, 112, 113, 120, 116, 137, 49, 108, 116, 120, + 117, 112, 113, 117, 48, 138, 112, 138, 138, 120, + 140, 140, 151, 147, 153, 120, 156, 138, 157, 585, + 140, 149, 132, 19, 120, 13, 137, 141, 141, 0, + 120, 141, 141, 0, 145, 145, 146, 146, 0, 150, + 146, 146, 0, 151, 145, 153, 0, 156, 138, 157, + 150, 140, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 158, 159, 143, 148, + 150, 143, 143, 148, 143, 145, 152, 154, 162, 163, + 148, 150, 152, 160, 160, 160, 148, 159, 165, 166, + + 167, 154, 165, 168, 171, 383, 383, 158, 159, 173, + 148, 143, 143, 143, 148, 143, 0, 152, 154, 162, + 163, 148, 169, 152, 160, 160, 160, 148, 159, 165, + 166, 167, 154, 165, 168, 171, 169, 170, 170, 175, + 173, 177, 143, 143, 143, 143, 143, 143, 143, 143, + 172, 174, 178, 169, 172, 174, 176, 179, 176, 176, + 180, 182, 176, 181, 183, 184, 185, 169, 170, 170, + 175, 181, 177, 0, 187, 188, 0, 181, 190, 194, + 196, 172, 174, 178, 0, 172, 174, 176, 179, 176, + 176, 180, 182, 176, 181, 183, 184, 185, 186, 186, + + 189, 191, 181, 0, 186, 187, 188, 189, 181, 190, + 194, 196, 200, 200, 200, 186, 193, 191, 199, 191, + 200, 193, 193, 201, 191, 198, 202, 198, 198, 186, + 186, 189, 191, 198, 199, 186, 204, 0, 189, 205, + 204, 206, 207, 200, 200, 200, 186, 193, 191, 199, + 191, 200, 193, 193, 201, 191, 198, 202, 198, 198, + 203, 208, 209, 210, 198, 199, 211, 204, 203, 213, + 205, 204, 206, 207, 212, 214, 212, 215, 216, 217, + 218, 216, 219, 384, 384, 217, 221, 219, 216, 0, + 222, 203, 208, 209, 210, 223, 0, 211, 224, 203, + + 213, 225, 227, 228, 0, 212, 214, 212, 215, 216, + 217, 218, 216, 219, 220, 220, 217, 221, 219, 216, + 220, 222, 226, 226, 220, 220, 223, 220, 229, 224, + 230, 231, 225, 227, 228, 226, 232, 233, 235, 234, + 237, 234, 240, 242, 243, 220, 220, 234, 233, 244, + 245, 220, 229, 226, 226, 220, 220, 236, 220, 229, + 246, 230, 231, 247, 248, 236, 226, 232, 233, 235, + 234, 237, 234, 240, 242, 243, 249, 236, 234, 233, + 244, 245, 250, 229, 251, 257, 258, 259, 236, 260, + 261, 246, 263, 264, 247, 248, 236, 265, 266, 262, + + 268, 267, 269, 270, 271, 272, 273, 249, 236, 275, + 275, 278, 0, 250, 267, 251, 257, 258, 259, 279, + 260, 261, 262, 263, 264, 280, 281, 280, 265, 266, + 262, 268, 267, 269, 270, 271, 272, 273, 282, 277, + 283, 284, 278, 275, 285, 267, 277, 286, 285, 288, + 279, 289, 277, 262, 291, 292, 280, 281, 280, 287, + 293, 287, 287, 294, 295, 296, 297, 290, 299, 282, + 277, 283, 284, 290, 300, 285, 301, 277, 286, 285, + 288, 302, 289, 277, 290, 291, 292, 304, 305, 306, + 287, 293, 287, 287, 294, 295, 296, 297, 290, 299, + + 303, 307, 308, 309, 290, 300, 310, 301, 311, 312, + 303, 313, 302, 314, 0, 290, 311, 310, 304, 305, + 306, 588, 588, 589, 589, 319, 319, 0, 321, 321, + 0, 303, 307, 308, 309, 319, 329, 310, 321, 311, + 312, 303, 313, 320, 314, 320, 320, 311, 310, 322, + 322, 323, 323, 322, 322, 320, 330, 331, 324, 324, + 332, 323, 324, 324, 333, 333, 319, 329, 334, 321, + 335, 336, 337, 338, 339, 340, 341, 344, 343, 345, + 346, 348, 350, 335, 351, 352, 320, 330, 331, 343, + 353, 332, 323, 355, 356, 333, 333, 357, 354, 334, + + 354, 335, 336, 337, 338, 339, 340, 341, 344, 343, + 345, 346, 348, 350, 335, 351, 352, 359, 360, 361, + 343, 353, 374, 374, 355, 356, 379, 0, 357, 354, + 385, 354, 374, 375, 375, 386, 387, 375, 375, 388, + 361, 381, 381, 389, 390, 359, 360, 391, 359, 360, + 361, 381, 392, 393, 382, 382, 394, 379, 382, 382, + 395, 385, 396, 374, 397, 398, 386, 387, 399, 400, + 388, 401, 402, 403, 389, 390, 404, 405, 391, 408, + 406, 409, 381, 392, 393, 411, 412, 394, 406, 410, + 413, 395, 414, 396, 406, 397, 398, 415, 416, 399, + + 400, 418, 401, 402, 403, 419, 410, 404, 405, 420, + 408, 406, 409, 421, 422, 423, 411, 412, 424, 406, + 410, 413, 425, 414, 426, 406, 424, 427, 415, 416, + 429, 428, 418, 431, 432, 433, 419, 410, 434, 435, + 420, 428, 436, 437, 421, 422, 423, 438, 439, 424, + 440, 441, 442, 425, 440, 426, 443, 424, 427, 444, + 445, 429, 428, 446, 431, 432, 433, 447, 448, 434, + 435, 449, 428, 436, 437, 450, 451, 447, 438, 439, + 452, 440, 441, 442, 453, 440, 454, 443, 455, 456, + 444, 445, 459, 460, 446, 0, 462, 0, 447, 448, + + 0, 464, 449, 465, 467, 0, 450, 451, 447, 468, + 463, 452, 592, 592, 463, 453, 0, 454, 469, 455, + 456, 470, 471, 459, 460, 461, 461, 462, 461, 472, + 461, 461, 464, 461, 465, 467, 461, 473, 474, 461, + 468, 463, 477, 461, 461, 463, 478, 461, 0, 469, + 480, 0, 470, 471, 0, 481, 461, 461, 482, 461, + 472, 461, 461, 483, 461, 485, 0, 461, 473, 474, + 461, 486, 479, 477, 461, 461, 479, 478, 461, 466, + 466, 480, 466, 484, 466, 466, 481, 466, 487, 482, + 466, 484, 489, 488, 483, 491, 485, 466, 466, 490, + + 492, 466, 486, 479, 488, 493, 490, 479, 494, 495, + 466, 466, 487, 466, 484, 466, 466, 496, 466, 487, + 497, 466, 484, 489, 488, 498, 491, 499, 466, 466, + 490, 492, 466, 500, 501, 488, 493, 490, 502, 494, + 495, 503, 504, 487, 505, 506, 507, 508, 496, 509, + 510, 497, 511, 513, 504, 514, 498, 515, 499, 516, + 517, 518, 519, 520, 500, 501, 521, 522, 523, 502, + 524, 527, 503, 504, 525, 505, 506, 507, 508, 525, + 509, 510, 526, 511, 513, 504, 514, 526, 515, 529, + 516, 517, 518, 519, 520, 528, 532, 521, 522, 523, + + 535, 524, 527, 537, 538, 525, 539, 528, 540, 541, + 525, 542, 543, 526, 544, 546, 547, 548, 526, 549, + 529, 550, 551, 552, 553, 554, 528, 532, 558, 559, + 560, 535, 561, 562, 537, 538, 563, 539, 528, 540, + 541, 564, 542, 543, 565, 544, 546, 547, 548, 566, + 549, 567, 550, 551, 552, 553, 554, 568, 569, 558, + 559, 560, 570, 561, 562, 571, 572, 563, 569, 573, + 574, 575, 564, 576, 577, 565, 578, 579, 580, 581, + 566, 582, 567, 583, 590, 590, 591, 591, 568, 569, + 591, 591, 594, 570, 590, 595, 571, 572, 596, 569, + + 573, 574, 575, 597, 576, 577, 598, 578, 579, 580, + 581, 599, 582, 600, 583, 593, 593, 601, 602, 603, + 604, 605, 606, 594, 607, 590, 595, 608, 609, 596, + 610, 611, 612, 614, 597, 615, 616, 598, 617, 618, + 619, 620, 599, 621, 600, 622, 632, 623, 601, 602, + 603, 604, 605, 606, 625, 607, 623, 633, 608, 609, + 624, 610, 611, 612, 614, 634, 615, 616, 635, 617, + 618, 619, 620, 624, 621, 636, 622, 632, 623, 628, + 628, 638, 625, 630, 630, 625, 631, 631, 633, 639, + 640, 624, 641, 642, 643, 644, 634, 646, 647, 635, + + 648, 649, 650, 651, 652, 653, 636, 654, 655, 656, + 657, 656, 638, 652, 658, 659, 660, 647, 662, 663, + 639, 640, 664, 641, 642, 643, 644, 665, 646, 647, + 666, 648, 649, 650, 651, 652, 653, 667, 654, 655, + 656, 657, 656, 668, 652, 658, 659, 660, 647, 662, + 663, 669, 670, 664, 672, 673, 674, 675, 665, 676, + 677, 666, 678, 680, 681, 682, 683, 684, 667, 685, + 686, 687, 688, 689, 668, 690, 691, 692, 693, 694, + 696, 697, 669, 670, 699, 672, 673, 674, 675, 700, + 676, 677, 698, 678, 680, 681, 682, 683, 684, 698, + + 685, 686, 687, 688, 689, 701, 690, 691, 692, 693, + 694, 696, 697, 702, 703, 699, 704, 706, 707, 708, + 700, 710, 711, 698, 712, 707, 713, 714, 715, 716, + 698, 717, 719, 718, 720, 721, 701, 722, 723, 718, + 724, 725, 726, 727, 702, 703, 728, 704, 706, 707, + 708, 718, 710, 711, 729, 712, 707, 713, 714, 715, + 716, 730, 717, 719, 718, 720, 721, 731, 722, 723, + 718, 724, 725, 726, 727, 732, 734, 728, 733, 735, + 736, 737, 718, 738, 733, 729, 740, 742, 744, 743, + 745, 746, 730, 743, 747, 748, 733, 749, 731, 750, + + 751, 752, 753, 754, 755, 756, 732, 734, 757, 733, + 735, 736, 737, 758, 738, 733, 759, 740, 742, 744, + 743, 745, 746, 761, 743, 747, 748, 733, 749, 762, + 750, 751, 752, 753, 754, 755, 756, 760, 763, 757, + 764, 765, 760, 766, 758, 767, 768, 759, 769, 770, + 771, 772, 773, 774, 761, 775, 776, 777, 778, 779, + 762, 780, 781, 782, 783, 784, 785, 786, 760, 763, + 787, 764, 765, 760, 766, 790, 767, 768, 792, 769, + 770, 771, 772, 773, 774, 790, 775, 776, 777, 778, + 779, 793, 780, 781, 782, 783, 784, 785, 786, 788, + + 794, 787, 795, 788, 796, 798, 790, 799, 800, 792, + 801, 802, 803, 804, 805, 806, 790, 808, 809, 810, + 811, 812, 793, 813, 814, 815, 816, 817, 818, 819, + 788, 794, 820, 795, 788, 796, 798, 822, 799, 800, + 823, 801, 802, 803, 804, 805, 806, 824, 808, 809, + 810, 811, 812, 825, 813, 814, 815, 816, 817, 818, + 819, 826, 828, 820, 830, 831, 832, 833, 822, 834, + 835, 823, 836, 838, 839, 842, 842, 845, 824, 843, + 843, 846, 847, 848, 825, 849, 850, 851, 852, 853, + 854, 855, 826, 828, 856, 830, 831, 832, 833, 857, + + 834, 835, 858, 836, 838, 839, 859, 860, 845, 861, + 862, 863, 846, 847, 848, 864, 849, 850, 851, 852, + 853, 854, 855, 865, 866, 856, 867, 868, 870, 871, + 857, 873, 873, 858, 872, 874, 877, 859, 860, 879, + 861, 862, 863, 880, 882, 883, 864, 885, 874, 886, + 887, 888, 889, 890, 865, 866, 892, 867, 868, 870, + 871, 893, 872, 893, 894, 872, 874, 877, 895, 896, + 879, 898, 899, 900, 880, 882, 883, 901, 885, 902, + 886, 887, 888, 889, 890, 897, 904, 892, 897, 905, + 906, 907, 893, 910, 893, 894, 912, 913, 913, 895, + + 896, 915, 898, 899, 900, 916, 917, 918, 901, 919, + 902, 920, 922, 923, 925, 926, 897, 904, 929, 897, + 905, 906, 907, 930, 910, 932, 0, 912, 913, 913, + 0, 933, 915, 1104, 1104, 935, 916, 917, 918, 938, + 919, 936, 920, 922, 923, 925, 926, 931, 939, 929, + 940, 936, 941, 942, 930, 945, 932, 931, 947, 0, + 931, 931, 933, 948, 931, 931, 935, 949, 950, 951, + 938, 0, 936, 952, 953, 954, 955, 956, 931, 939, + 957, 940, 936, 941, 942, 958, 945, 943, 931, 947, + 943, 931, 931, 943, 948, 931, 931, 943, 949, 950, + + 951, 959, 943, 960, 952, 953, 954, 955, 956, 961, + 962, 957, 963, 964, 965, 966, 958, 967, 943, 969, + 970, 943, 971, 972, 943, 973, 974, 975, 943, 976, + 977, 978, 959, 943, 960, 979, 980, 981, 983, 985, + 961, 962, 986, 963, 964, 965, 966, 987, 967, 988, + 969, 970, 989, 971, 972, 990, 973, 974, 975, 991, + 976, 977, 978, 992, 993, 994, 979, 980, 981, 983, + 985, 995, 996, 986, 997, 998, 999, 1000, 987, 1001, + 988, 1002, 1003, 989, 1004, 1006, 990, 1007, 1005, 1008, + 991, 1009, 1010, 1011, 992, 993, 994, 1005, 1012, 1010, + + 1013, 1014, 995, 996, 1015, 997, 998, 999, 1000, 1016, + 1001, 1017, 1002, 1003, 1018, 1004, 1006, 1022, 1007, 1005, + 1008, 1023, 1009, 1010, 1011, 1021, 1024, 1021, 1005, 1012, + 1010, 1013, 1014, 1025, 1026, 1015, 1027, 1029, 1030, 1031, + 1016, 1032, 1017, 1021, 1034, 1018, 1035, 1036, 1022, 1037, + 1039, 1040, 1023, 1036, 1041, 1042, 1021, 1024, 1021, 1045, + 1046, 1040, 1047, 1048, 1025, 1026, 1049, 1027, 1029, 1030, + 1031, 1050, 1032, 1054, 1021, 1034, 1055, 1035, 1036, 1056, + 1037, 1039, 1040, 1059, 1036, 1041, 1042, 1060, 1061, 1062, + 1045, 1046, 1040, 1047, 1048, 1063, 1056, 1049, 1064, 1066, + + 1070, 1068, 1050, 1068, 1054, 1071, 1072, 1055, 1073, 1074, + 1056, 1075, 1076, 1077, 1059, 1078, 1079, 1073, 1060, 1061, + 1062, 1080, 1081, 1082, 1083, 1084, 1063, 1056, 1085, 1064, + 1066, 1070, 1068, 1086, 1068, 1088, 1071, 1072, 1089, 1073, + 1074, 1090, 1075, 1076, 1077, 1091, 1078, 1079, 1073, 1092, + 1093, 1094, 1080, 1081, 1082, 1083, 1084, 1096, 1098, 1085, + 1099, 1100, 1101, 1103, 1086, 0, 1088, 1107, 1108, 1089, + 1105, 1106, 1090, 1109, 1110, 1111, 1091, 1112, 1114, 1117, + 1092, 1093, 1094, 1119, 1120, 1121, 1122, 1123, 1096, 1098, + 1125, 1099, 1100, 1101, 1103, 1106, 1105, 1127, 1107, 1108, + + 1128, 1105, 1106, 1129, 1109, 1110, 1111, 1130, 1112, 1114, + 1117, 1131, 1132, 1134, 1119, 1120, 1121, 1122, 1123, 1135, + 1136, 1125, 1137, 1139, 1141, 1143, 1145, 1146, 1127, 1147, + 1148, 1128, 1151, 1152, 1129, 1153, 1154, 1155, 1130, 1156, + 1158, 1159, 1131, 1132, 1134, 1160, 1161, 1162, 1163, 1164, + 1135, 1136, 1165, 1137, 1139, 1141, 1143, 1145, 1146, 1166, + 1147, 1148, 1167, 1151, 1152, 1168, 1153, 1154, 1155, 1169, + 1156, 1158, 1159, 1170, 1171, 1174, 1160, 1161, 1162, 1163, + 1164, 1170, 1175, 1165, 1176, 1177, 1178, 1179, 1180, 1181, + 1166, 1182, 1183, 1167, 1184, 1185, 1168, 1186, 1187, 1188, + + 1169, 1189, 1190, 1192, 1170, 1171, 1174, 1194, 1195, 1196, + 1197, 1198, 1170, 1175, 1199, 1176, 1177, 1178, 1179, 1180, + 1181, 1200, 1182, 1183, 1201, 1184, 1185, 1202, 1186, 1187, + 1188, 1203, 1189, 1190, 1192, 1204, 1205, 1206, 1194, 1195, + 1196, 1197, 1198, 1207, 1208, 1199, 1211, 1213, 1214, 1215, + 1216, 1217, 1200, 1218, 1219, 1201, 1220, 1225, 1202, 1226, + 1227, 1228, 1203, 1229, 1230, 1231, 1204, 1205, 1206, 1232, + 1233, 1234, 1235, 1236, 1207, 1208, 1238, 1211, 1213, 1214, + 1215, 1216, 1217, 1240, 1218, 1219, 1241, 1220, 1225, 1242, + 1226, 1227, 1228, 1243, 1229, 1230, 1231, 1244, 1245, 1246, + + 1232, 1233, 1234, 1235, 1236, 1247, 1248, 1238, 1249, 1252, + 1255, 1256, 1257, 1258, 1240, 1259, 1260, 1241, 1261, 1262, + 1242, 1263, 1248, 1264, 1243, 1265, 1266, 1267, 1244, 1245, + 1246, 1268, 1269, 1270, 1273, 1275, 1247, 1248, 1276, 1249, + 1252, 1255, 1256, 1257, 1258, 1278, 1259, 1260, 1279, 1261, + 1262, 1280, 1263, 1248, 1264, 1281, 1265, 1266, 1267, 1282, + 1283, 1284, 1268, 1269, 1270, 1273, 1275, 1286, 1289, 1276, + 1290, 1291, 1292, 1293, 1294, 1296, 1278, 1297, 1298, 1279, + 1299, 1300, 1280, 1301, 1303, 1304, 1281, 1305, 1306, 1307, + 1282, 1283, 1284, 1310, 1312, 1309, 1313, 1314, 1286, 1289, + + 1315, 1290, 1291, 1292, 1293, 1294, 1296, 1316, 1297, 1298, + 1317, 1299, 1300, 1318, 1301, 1303, 1304, 1310, 1305, 1306, + 1307, 1309, 1319, 1320, 1310, 1312, 1309, 1313, 1314, 1321, + 1323, 1315, 1324, 1325, 1326, 1328, 1329, 1331, 1316, 1333, + 1334, 1317, 1335, 1337, 1318, 1339, 1340, 1341, 1342, 1343, + 1344, 1345, 1346, 1319, 1320, 1347, 1348, 1350, 1351, 1352, + 1321, 1323, 1353, 1324, 1325, 1326, 1328, 1329, 1331, 1354, + 1333, 1334, 1356, 1335, 1337, 1357, 1339, 1340, 1341, 1342, + 1343, 1344, 1345, 1346, 1358, 1359, 1347, 1348, 1350, 1351, + 1352, 1360, 1361, 1353, 1362, 1363, 1364, 1366, 1367, 1369, + + 1354, 1370, 1371, 1356, 1372, 1373, 1357, 1374, 1375, 1376, + 1378, 1379, 1380, 1381, 1382, 1358, 1359, 1384, 1385, 1386, + 1387, 1388, 1360, 1361, 1389, 1362, 1363, 1364, 1366, 1367, + 1369, 1390, 1370, 1371, 1392, 1372, 1373, 1393, 1374, 1375, + 1376, 1378, 1379, 1380, 1381, 1382, 1394, 1395, 1384, 1385, + 1386, 1387, 1388, 1396, 1398, 1389, 1398, 1400, 1402, 1401, + 1404, 1406, 1390, 1403, 1403, 1392, 1407, 1409, 1393, 1411, + 1412, 1413, 1414, 1415, 1403, 1416, 1403, 1394, 1395, 1401, + 1403, 1417, 1418, 1419, 1396, 1398, 1420, 1398, 1400, 1402, + 1401, 1404, 1406, 1421, 1403, 1403, 1422, 1407, 1409, 1423, + + 1411, 1412, 1413, 1414, 1415, 1403, 1416, 1403, 1424, 1425, + 1401, 1403, 1417, 1418, 1419, 1426, 1427, 1420, 1428, 1429, + 1430, 1431, 1432, 1433, 1421, 1433, 1434, 1422, 1435, 1436, + 1423, 1437, 1439, 1440, 1441, 1442, 1443, 1446, 1447, 1424, + 1425, 1448, 1449, 1450, 1451, 1452, 1426, 1427, 1453, 1428, + 1429, 1430, 1431, 1432, 1433, 1454, 1433, 1434, 1455, 1435, + 1436, 1456, 1437, 1439, 1440, 1441, 1442, 1443, 1446, 1447, + 1457, 1457, 1448, 1449, 1450, 1451, 1452, 1458, 1460, 1453, + 1462, 1463, 1465, 1457, 1466, 1467, 1454, 1457, 1469, 1455, + 1470, 1471, 1456, 1472, 1473, 1474, 1476, 1479, 1480, 1481, + + 1477, 1457, 1457, 1482, 1483, 1485, 1486, 1487, 1458, 1460, + 1488, 1462, 1463, 1465, 1457, 1466, 1467, 1477, 1457, 1469, + 1476, 1470, 1471, 1489, 1472, 1473, 1474, 1476, 1479, 1480, + 1481, 1477, 1490, 1491, 1482, 1483, 1485, 1486, 1487, 1492, + 1493, 1488, 1494, 1495, 1497, 1498, 1499, 1500, 1501, 1502, + 1504, 1505, 1506, 1507, 1489, 1508, 1510, 1511, 1512, 1513, + 1515, 1516, 1517, 1490, 1491, 1518, 1519, 1520, 1521, 1522, + 1492, 1493, 1523, 1494, 1495, 1497, 1498, 1499, 1500, 1501, + 1502, 1504, 1505, 1506, 1507, 1524, 1508, 1510, 1511, 1512, + 1513, 1515, 1516, 1517, 1525, 1526, 1518, 1519, 1520, 1521, + + 1522, 1527, 1528, 1523, 1529, 1530, 1531, 1532, 1533, 1534, + 1535, 1539, 1540, 1541, 1542, 1543, 1524, 1544, 1545, 1546, + 1547, 1550, 1551, 1552, 1553, 1525, 1526, 1554, 1555, 1556, + 1557, 1558, 1527, 1528, 1560, 1529, 1530, 1531, 1532, 1533, + 1534, 1535, 1539, 1540, 1541, 1542, 1543, 1561, 1544, 1545, + 1546, 1547, 1550, 1551, 1552, 1553, 1559, 1563, 1554, 1555, + 1556, 1557, 1558, 1561, 1559, 1560, 1564, 1566, 1567, 1569, + 1570, 1571, 1573, 1574, 1575, 1576, 1578, 1580, 1561, 1581, + 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1559, 1563, 1590, + 1592, 1594, 1595, 1596, 1561, 1559, 1600, 1564, 1566, 1567, + + 1569, 1570, 1571, 1573, 1574, 1575, 1576, 1578, 1580, 1601, + 1581, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1602, 1603, + 1590, 1592, 1594, 1595, 1596, 1604, 1606, 1600, 1607, 1609, + 1612, 1616, 1617, 1618, 1620, 1621, 1623, 1624, 1625, 1626, + 1601, 1628, 1630, 1632, 1634, 1635, 1637, 1638, 1640, 1602, + 1603, 1641, 1643, 1623, 1624, 1644, 1604, 1606, 1645, 1607, + 1609, 1612, 1616, 1617, 1618, 1620, 1621, 1623, 1624, 1625, + 1626, 1647, 1628, 1630, 1632, 1634, 1635, 1637, 1638, 1640, + 1650, 1652, 1641, 1643, 1655, 1656, 1644, 1657, 1658, 1645, + 1659, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, + + 1670, 1671, 1647, 1673, 1674, 1675, 1676, 1677, 1678, 1679, + 1680, 1650, 1652, 1681, 1683, 1655, 1656, 1684, 1657, 1658, + 1685, 1659, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, + 1669, 1670, 1671, 1686, 1673, 1674, 1675, 1676, 1677, 1678, + 1679, 1680, 1687, 1688, 1681, 1683, 1689, 1690, 1684, 1691, + 1692, 1685, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, + 1701, 1702, 1703, 1704, 1686, 1705, 1706, 1709, 1710, 1711, + 1712, 1713, 1714, 1687, 1688, 1715, 1719, 1689, 1690, 1721, + 1691, 1692, 1723, 1693, 1694, 1695, 1696, 1697, 1698, 1699, + 1700, 1701, 1702, 1703, 1704, 1725, 1705, 1706, 1709, 1710, + + 1711, 1712, 1713, 1714, 1726, 1727, 1715, 1719, 1728, 1730, + 1721, 1732, 1733, 1723, 1734, 1735, 1736, 1737, 1738, 1741, + 1740, 1742, 1744, 1745, 1749, 1750, 1725, 1751, 1754, 1741, + 1755, 1757, 1759, 1763, 1764, 1726, 1727, 1740, 1765, 1728, + 1730, 1766, 1732, 1733, 1767, 1734, 1735, 1736, 1737, 1738, + 1741, 1740, 1742, 1744, 1745, 1749, 1750, 1768, 1751, 1754, + 1771, 1755, 1757, 1759, 1763, 1764, 1772, 1773, 1774, 1765, + 1775, 1776, 1766, 1777, 1778, 1767, 1780, 1781, 1782, 1783, + 1784, 1785, 1786, 1787, 1788, 1790, 1791, 1792, 1768, 1793, + 1794, 1771, 1795, 1796, 1797, 1798, 1799, 1772, 1773, 1774, + + 1800, 1775, 1776, 1801, 1777, 1778, 1802, 1780, 1781, 1782, + 1783, 1784, 1785, 1786, 1787, 1788, 1790, 1791, 1792, 1804, + 1793, 1794, 1807, 1795, 1796, 1797, 1798, 1799, 1809, 1813, + 1815, 1800, 1816, 1817, 1801, 1818, 1820, 1802, 1824, 1830, + 1833, 1834, 1831, 1835, 1837, 1838, 1839, 1840, 1841, 1830, + 1804, 1843, 1818, 1807, 1844, 1845, 1846, 1847, 1852, 1809, + 1813, 1815, 1831, 1816, 1817, 1853, 1818, 1820, 1854, 1824, + 1830, 1833, 1834, 1831, 1835, 1837, 1838, 1839, 1840, 1841, + 1857, 1860, 1843, 1818, 1861, 1844, 1845, 1846, 1847, 1852, + 1863, 1865, 1866, 1867, 1868, 1869, 1853, 1870, 1871, 1854, + + 1872, 1873, 1875, 1878, 1880, 1882, 1883, 1884, 1885, 1887, + 1889, 1857, 1860, 1890, 1891, 1861, 1890, 1893, 1894, 1896, + 1898, 1863, 1865, 1866, 1867, 1868, 1869, 1899, 1870, 1871, + 1889, 1872, 1873, 1875, 1878, 1880, 1882, 1883, 1884, 1885, + 1887, 1889, 1900, 1901, 1890, 1891, 1903, 1904, 1893, 1894, + 1896, 1898, 1905, 1907, 1908, 1910, 1911, 1915, 1899, 1917, + 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1927, 1928, + 1930, 1931, 1928, 1900, 1901, 1935, 1936, 1903, 1904, 1929, + 1938, 1939, 1941, 1905, 1907, 1908, 1910, 1911, 1915, 1945, + 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1927, + + 1928, 1930, 1931, 1929, 1946, 1947, 1935, 1936, 1948, 1950, + 1929, 1938, 1939, 1941, 1951, 1952, 1953, 1954, 1956, 1958, + 1945, 1960, 1961, 1962, 1963, 1965, 1968, 1971, 1972, 1977, + 1978, 1981, 1982, 1983, 1986, 1946, 1947, 1987, 1988, 1948, + 1950, 1989, 1956, 1991, 1992, 1951, 1952, 1953, 1954, 1956, + 1958, 1993, 1960, 1961, 1962, 1963, 1965, 1968, 1971, 1972, + 1977, 1978, 1981, 1982, 1983, 1986, 1994, 1997, 1987, 1988, + 1998, 1999, 1989, 2001, 1991, 1992, 2002, 0, 0, 0, + 0, 0, 1993, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1994, 1997, 0, + + 0, 1998, 1999, 0, 2001, 0, 0, 2002, 2005, 2005, + 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2006, 2006, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2007, 2007, 2007, 2007, + 2007, 2007, 2007, 2007, 2007, 2008, 0, 2008, 2008, 2008, + 2008, 2008, 2008, 2008, 2009, 0, 2009, 2009, 2009, 2009, + 2009, 2009, 2009, 2010, 2010, 2011, 2011, 2011, 2011, 2011, + 2011, 2011, 2011, 2011, 2012, 2012, 2012, 2012, 2012, 2012, + 2012, 2012, 2012, 2013, 0, 2013, 2013, 2013, 2013, 2013, + 2013, 2013, 2014, 0, 2014, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2016, 2016, 2016, 2016, 2016, 2016, + + 2016, 2016, 2016, 2017, 2017, 2017, 2017, 2017, 2017, 2017, + 2017, 2017, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, + 2018, 2019, 2019, 2019, 0, 0, 2019, 2019, 0, 2019, + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2021, + 0, 0, 2021, 2021, 0, 2021, 2022, 2022, 2022, 0, + 2022, 2022, 2022, 2022, 2022, 2023, 2023, 2023, 2023, 0, + 2023, 2023, 2023, 2023, 2024, 2024, 2024, 2024, 2024, 2024, + 2024, 2024, 2024, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, + 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, - 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, - 2004, 2004, 2004 + 2004, 2004 } ; static yy_state_type yy_last_accepting_state; @@ -2241,7 +2260,7 @@ char path[MS_MAXPATHLEN]; -#line 2245 "/Users/tbonfort/dev/mapserver/maplexer.c" +#line 2264 "/home/tbonfort/dev/mapserver/maplexer.c" #define INITIAL 0 #define URL_VARIABLE 1 @@ -2271,11 +2290,11 @@ void msyyset_extra (YY_EXTRA_TYPE user_defined ); FILE *msyyget_in (void ); -void msyyset_in (FILE * in_str ); +void msyyset_in (FILE * _in_str ); FILE *msyyget_out (void ); -void msyyset_out (FILE * out_str ); +void msyyset_out (FILE * _out_str ); yy_size_t msyyget_leng (void ); @@ -2283,7 +2302,7 @@ char *msyyget_text (void ); int msyyget_lineno (void ); -void msyyset_lineno (int line_number ); +void msyyset_lineno (int _line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. @@ -2297,8 +2316,12 @@ extern int msyywrap (void ); #endif #endif +#ifndef YY_NO_UNPUT + static void yyunput (int c,char *buf_ptr ); +#endif + #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif @@ -2319,7 +2342,12 @@ static int input (void ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else #define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -2327,7 +2355,7 @@ static int input (void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO fwrite( msyytext, msyyleng, 1, msyyout ) +#define ECHO do { if (fwrite( msyytext, msyyleng, 1, msyyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -2338,7 +2366,7 @@ static int input (void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - yy_size_t n; \ + size_t n; \ for ( n = 0; n < max_size && \ (c = getc( msyyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -2406,7 +2434,7 @@ extern int msyylex (void); /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK break; +#define YY_BREAK /*LINTED*/break; #endif #define YY_RULE_SETUP \ @@ -2416,10 +2444,37 @@ extern int msyylex (void); */ YY_DECL { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! msyyin ) + msyyin = stdin; + + if ( ! msyyout ) + msyyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + msyyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + msyy_create_buffer(msyyin,YY_BUF_SIZE ); + } + + msyy_load_buffer_state( ); + } + + { #line 87 "maplexer.l" if (msyystring_buffer == NULL) @@ -2494,35 +2549,9 @@ YY_DECL break; } -#line 2498 "/Users/tbonfort/dev/mapserver/maplexer.c" - - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! msyyin ) - msyyin = stdin; - - if ( ! msyyout ) - msyyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - msyyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - msyy_create_buffer(msyyin,YY_BUF_SIZE ); - } - - msyy_load_buffer_state( ); - } +#line 2553 "/home/tbonfort/dev/mapserver/maplexer.c" - while ( 1 ) /* loops until end-of-file is reached */ + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); @@ -2538,7 +2567,7 @@ YY_DECL yy_match: do { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -2553,7 +2582,7 @@ YY_DECL yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 4555 ); + while ( yy_base[yy_current_state] != 4574 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4526,7 +4555,7 @@ YY_RULE_SETUP #line 744 "maplexer.l" ECHO; YY_BREAK -#line 4530 "/Users/tbonfort/dev/mapserver/maplexer.c" +#line 4559 "/home/tbonfort/dev/mapserver/maplexer.c" case YY_STATE_EOF(URL_VARIABLE): case YY_STATE_EOF(URL_STRING): case YY_STATE_EOF(EXPRESSION_STRING): @@ -4661,6 +4690,7 @@ case YY_STATE_EOF(MSSTRING): "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ + } /* end of user's declarations */ } /* end of msyylex */ /* yy_get_next_buffer - try to read in a new buffer @@ -4672,9 +4702,9 @@ case YY_STATE_EOF(MSSTRING): */ static int yy_get_next_buffer (void) { - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); - register int number_to_move, i; + char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char *source = (yytext_ptr); + yy_size_t number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) @@ -4703,7 +4733,7 @@ static int yy_get_next_buffer (void) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -4723,7 +4753,7 @@ static int yy_get_next_buffer (void) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); @@ -4785,9 +4815,9 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) msyyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); @@ -4806,14 +4836,14 @@ static int yy_get_next_buffer (void) static yy_state_type yy_get_previous_state (void) { - register yy_state_type yy_current_state; - register char *yy_cp; + yy_state_type yy_current_state; + char *yy_cp; yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 88); + YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 88); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -4838,10 +4868,10 @@ static int yy_get_next_buffer (void) */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { - register int yy_is_jam; - register char *yy_cp = (yy_c_buf_p); + int yy_is_jam; + char *yy_cp = (yy_c_buf_p); - register YY_CHAR yy_c = 88; + YY_CHAR yy_c = 88; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -4856,12 +4886,14 @@ static int yy_get_next_buffer (void) yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 2004); - return yy_is_jam ? 0 : yy_current_state; + return yy_is_jam ? 0 : yy_current_state; } - static void yyunput (int c, register char * yy_bp ) +#ifndef YY_NO_UNPUT + + static void yyunput (int c, char * yy_bp ) { - register char *yy_cp; + char *yy_cp; yy_cp = (yy_c_buf_p); @@ -4871,10 +4903,10 @@ static int yy_get_next_buffer (void) if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ - register yy_size_t number_to_move = (yy_n_chars) + 2; - register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + yy_size_t number_to_move = (yy_n_chars) + 2; + char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - register char *source = + char *source = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) @@ -4896,6 +4928,8 @@ static int yy_get_next_buffer (void) (yy_c_buf_p) = yy_cp; } +#endif + #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) @@ -4944,7 +4978,7 @@ static int yy_get_next_buffer (void) case EOB_ACT_END_OF_FILE: { if ( msyywrap( ) ) - return 0; + return EOF; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; @@ -5045,7 +5079,7 @@ static void msyy_load_buffer_state (void) if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in msyy_create_buffer()" ); - b->yy_buf_size = size; + b->yy_buf_size = (yy_size_t)size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. @@ -5080,10 +5114,6 @@ static void msyy_load_buffer_state (void) msyyfree((void *) b ); } -#ifndef __cplusplus -extern int isatty (int ); -#endif /* __cplusplus */ - /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a msyyrestart() or at EOF. @@ -5204,7 +5234,7 @@ static void msyyensure_buffer_stack (void) * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ - num_to_alloc = 1; + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ (yy_buffer_stack) = (struct yy_buffer_state**)msyyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); @@ -5221,7 +5251,7 @@ static void msyyensure_buffer_stack (void) if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; + yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)msyyrealloc @@ -5288,8 +5318,8 @@ YY_BUFFER_STATE msyy_scan_string (yyconst char * yystr ) /** Setup the input buffer state to scan the given bytes. The next call to msyylex() will * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ @@ -5297,7 +5327,8 @@ YY_BUFFER_STATE msyy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_le { YY_BUFFER_STATE b; char *buf; - yy_size_t n, i; + yy_size_t n; + yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; @@ -5328,7 +5359,7 @@ YY_BUFFER_STATE msyy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_le static void yy_fatal_error (yyconst char* msg ) { - (void) fprintf( stderr, "%s\n", msg ); + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -5394,29 +5425,29 @@ char *msyyget_text (void) } /** Set the current line number. - * @param line_number + * @param _line_number line number * */ -void msyyset_lineno (int line_number ) +void msyyset_lineno (int _line_number ) { - msyylineno = line_number; + msyylineno = _line_number; } /** Set the input stream. This does not discard the current * input buffer. - * @param in_str A readable stream. + * @param _in_str A readable stream. * * @see msyy_switch_to_buffer */ -void msyyset_in (FILE * in_str ) +void msyyset_in (FILE * _in_str ) { - msyyin = in_str ; + msyyin = _in_str ; } -void msyyset_out (FILE * out_str ) +void msyyset_out (FILE * _out_str ) { - msyyout = out_str ; + msyyout = _out_str ; } int msyyget_debug (void) @@ -5424,9 +5455,9 @@ int msyyget_debug (void) return msyy_flex_debug; } -void msyyset_debug (int bdebug ) +void msyyset_debug (int _bdebug ) { - msyy_flex_debug = bdebug ; + msyy_flex_debug = _bdebug ; } static int yy_init_globals (void) @@ -5486,7 +5517,8 @@ int msyylex_destroy (void) #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { - register int i; + + int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } @@ -5495,7 +5527,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s ) { - register int n; + int n; for ( n = 0; s[n]; ++n ) ; @@ -5505,11 +5537,12 @@ static int yy_flex_strlen (yyconst char * s ) void *msyyalloc (yy_size_t size ) { - return (void *) malloc( size ); + return (void *) malloc( size ); } void *msyyrealloc (void * ptr, yy_size_t size ) { + /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter @@ -5522,7 +5555,7 @@ void *msyyrealloc (void * ptr, yy_size_t size ) void msyyfree (void * ptr ) { - free( (char *) ptr ); /* see msyyrealloc() for (char *) cast */ + free( (char *) ptr ); /* see msyyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" diff --git a/maplexer.l b/maplexer.l index ba7d7407c6..0a89173ab3 100644 --- a/maplexer.l +++ b/maplexer.l @@ -354,7 +354,7 @@ char path[MS_MAXPATHLEN]; partials { MS_LEXER_RETURN_TOKEN(PARTIALS); } pattern { MS_LEXER_RETURN_TOKEN(PATTERN); } points { MS_LEXER_RETURN_TOKEN(POINTS); } -items { MS_LEXER_RETURN_TOKEN(ITEMS); } +items { MS_LEXER_RETURN_TOKEN(ITEMS); } position { MS_LEXER_RETURN_TOKEN(POSITION); } postlabelcache { MS_LEXER_RETURN_TOKEN(POSTLABELCACHE); } priority { MS_LEXER_RETURN_TOKEN(PRIORITY); } From 2ab0dc0187b0a89560d5ce88c1e1208a3def6108 Mon Sep 17 00:00:00 2001 From: geographika Date: Sun, 30 Oct 2016 21:12:14 +0100 Subject: [PATCH 093/221] Fix utfgrid text encoding to work with Windows (#5342) --- maputfgrid.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/maputfgrid.cpp b/maputfgrid.cpp index 60bf600512..5ccb657bbf 100644 --- a/maputfgrid.cpp +++ b/maputfgrid.cpp @@ -504,7 +504,13 @@ int utfgridSaveImage(imageObj *img, mapObj *map, FILE *fp, outputFormatObj *form /* Conversion to UTF-8 encoding */ *stringptr = '\0'; char * utf8; - utf8 = msConvertWideStringToUTF8 (string, "UCS-4LE"); +#if defined(_WIN32) && !defined(__CYGWIN__) + const char* encoding = "UCS-2LE"; +#else + const char* encoding = "UCS-4LE"; +#endif + + utf8 = msConvertWideStringToUTF8(string, encoding); msIO_fprintf(fp,"%s", utf8); msFree(utf8); msFree(string); From bcf7e7ef350abe8649b4ca1834d163912c3f5fc2 Mon Sep 17 00:00:00 2001 From: Alexander Gabriel Date: Mon, 7 Nov 2016 22:08:00 +0100 Subject: [PATCH 094/221] Fix LNK2019 build error on windows (#5346) Fixes error in maphttp.c.obj LNK2019 unresolved external symbol "__imp__select@20" in function "_msHTTPExecuteRequests" --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1ca64729f2..32e3d8835d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -857,7 +857,7 @@ ms_link_libraries( ${CMAKE_DL_LIBS} m ) endif(UNIX) if (WIN32) -ms_link_libraries( ${MS_EXTERNAL_LIBS}) +ms_link_libraries( ${MS_EXTERNAL_LIBS} ws2_32.lib) endif (WIN32) configure_file ( From 2f240de9ac97c1e7cc3253541b590a45271a334d Mon Sep 17 00:00:00 2001 From: Alexander Gabriel Date: Mon, 7 Nov 2016 22:17:46 +0100 Subject: [PATCH 095/221] Fix variable declaration compilation error on Windows (#5346) --- mapscript/php/owsrequest.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mapscript/php/owsrequest.c b/mapscript/php/owsrequest.c index c28c953373..11d9996090 100644 --- a/mapscript/php/owsrequest.c +++ b/mapscript/php/owsrequest.c @@ -195,6 +195,8 @@ PHP_METHOD(OWSRequestObj, loadParams) #if PHP_VERSION_ID >= 50600 php_stream *s = php_stream_temp_new(); php_stream *input = php_stream_open_wrapper("php://input", "r", 0, NULL); + char *raw_post_data = NULL; + long raw_post_data_length = 0; /* php://input does not support stat */ php_stream_copy_to_stream_ex(input, s, -1, NULL); @@ -202,9 +204,6 @@ PHP_METHOD(OWSRequestObj, loadParams) php_stream_rewind(s); - char *raw_post_data = NULL; - long raw_post_data_length = 0; - raw_post_data_length = php_stream_copy_to_mem(s, raw_post_data, -1, 0); cgirequestObj_loadParams(php_owsrequest->cgirequest, owsrequest_getenv, From 54d645c18d0293f7e5821e9d740542408083f955 Mon Sep 17 00:00:00 2001 From: Alexander Gabriel Date: Mon, 7 Nov 2016 23:43:52 +0100 Subject: [PATCH 096/221] fix issues when compiling PHP-MapScript with VS2012 Express (#5346) --- cmake/FindPHP5.cmake | 29 +++++++++++++++++++---------- mapscript/php/CMakeLists.txt | 10 +++++++++- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/cmake/FindPHP5.cmake b/cmake/FindPHP5.cmake index eeca42cbe1..92261b87e3 100644 --- a/cmake/FindPHP5.cmake +++ b/cmake/FindPHP5.cmake @@ -17,22 +17,31 @@ SET(PHP5_POSSIBLE_INCLUDE_PATHS /usr/include/php /usr/local/include/php /usr/local/apache/php + ${PHP5_INCLUDES} ) SET(PHP5_POSSIBLE_LIB_PATHS /usr/lib +if(WIN32) + ${PHP5_INCLUDES}/Release_TS +endif(WIN32) ) -#FIND_PATH(PHP5_FOUND_INCLUDE_PATH main/php.h -# ${PHP5_POSSIBLE_INCLUDE_PATHS}) -# -#IF(PHP5_FOUND_INCLUDE_PATH) -# SET(php5_paths "${PHP5_POSSIBLE_INCLUDE_PATHS}") -# FOREACH(php5_path Zend main TSRM) -# SET(php5_paths ${php5_paths} "${PHP5_FOUND_INCLUDE_PATH}/${php5_path}") -# ENDFOREACH(php5_path Zend main TSRM) -# SET(PHP5_INCLUDE_PATH "${php5_paths}" INTERNAL "PHP5 include paths") -#ENDIF(PHP5_FOUND_INCLUDE_PATH) +find_library(PHP5_LIBRARY + NAMES php5ts.lib + PATHS /sw /opt/local ${PHP5_INCLUDES}/Release_TS +) + +FIND_PATH(PHP5_FOUND_INCLUDE_PATH main/php.h + ${PHP5_POSSIBLE_INCLUDE_PATHS}) + +IF(PHP5_FOUND_INCLUDE_PATH) + SET(php5_paths "${PHP5_POSSIBLE_INCLUDE_PATHS}") + FOREACH(php5_path Zend main TSRM) + SET(php5_paths ${php5_paths} "${PHP5_FOUND_INCLUDE_PATH}/${php5_path}") + ENDFOREACH(php5_path Zend main TSRM) + SET(PHP5_INCLUDE_PATH "${php5_paths}" INTERNAL "PHP5 include paths") +ENDIF(PHP5_FOUND_INCLUDE_PATH) FIND_PROGRAM(PHP5_EXECUTABLE NAMES php5 php diff --git a/mapscript/php/CMakeLists.txt b/mapscript/php/CMakeLists.txt index 89092cca0f..c4c952bf13 100644 --- a/mapscript/php/CMakeLists.txt +++ b/mapscript/php/CMakeLists.txt @@ -1,5 +1,9 @@ FIND_PACKAGE(PHP5 REQUIRED) -INCLUDE_DIRECTORIES(${PHP5_INCLUDES}) +INCLUDE_DIRECTORIES(${PHP5_INCLUDE_PATH}) + +if(WIN32) +add_definitions(/DZEND_WIN32 /DPHP_WIN32 /DPHP5 /DZTS /DZEND_DEBUG=0 -DWIN32 -D_WIN32 -D_USE_32BIT_TIME_T -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE) +ENDIF(WIN32) IF(APPLE) if(XCODE) @@ -25,7 +29,11 @@ add_library(php_mapscript MODULE ) +if(WIN32) +target_link_libraries(php_mapscript ${MAPSERVER_LIBMAPSERVER} ${PHP5_LIBRARY}) +ELSE(WIN32) target_link_libraries(php_mapscript ${MAPSERVER_LIBMAPSERVER}) +ENDIF(WIN32) set_target_properties(php_mapscript PROPERTIES PREFIX "") install(TARGETS php_mapscript DESTINATION ${PHP5_EXTENSION_DIR}) From 14ce31235fe9400275114666673ab7013006663c Mon Sep 17 00:00:00 2001 From: Alexander Gabriel Date: Wed, 9 Nov 2016 00:02:22 +0100 Subject: [PATCH 097/221] cmake/FindICONV.cmake did not find iconv on windows (#5346) --- cmake/FindICONV.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/FindICONV.cmake b/cmake/FindICONV.cmake index fe83fd3c10..2e36b644ef 100644 --- a/cmake/FindICONV.cmake +++ b/cmake/FindICONV.cmake @@ -48,7 +48,7 @@ if(WIN32) find_file(ICONV_DLL NAMES ${ICONV_DLL_NAMES} PATHS ENV PATH - NO_DEFAULT_PATH) + ${ICONV_INCLUDE_DIR}/../bin) find_file(ICONV_DLL_HELP NAMES ${ICONV_DLL_NAMES} PATHS ENV PATH From 7413952a17f826926066fa46dbc2c784117c5068 Mon Sep 17 00:00:00 2001 From: Martin Kofahl Date: Wed, 30 Sep 2015 20:56:43 +0200 Subject: [PATCH 098/221] Free expression tokens, which may store an index to an iteminfo, when iteminfo is freed. (#5161) --- maplayer.c | 29 ++++++++++++++++++++++------- mapserver.h | 1 + 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/maplayer.c b/maplayer.c index 5d6b279991..c0b721d846 100644 --- a/maplayer.c +++ b/maplayer.c @@ -65,6 +65,13 @@ void msLayerFreeItemInfo(layerObj *layer) return; } layer->vtable->LayerFreeItemInfo(layer); + + /* + * Layer expressions with attribute binding hold a numeric index pointing + * to an iteminfo (node->tokenval.bindval.index). If iteminfo changes, + * an expression may be no longer valid. (#5161) + */ + msLayerFreeExpressions(layer); } int msLayerRestoreFromScaletokens(layerObj *layer) @@ -415,8 +422,6 @@ int msLayerGetShape(layerObj *layer, shapeObj *shape, resultObj *record) */ void msLayerClose(layerObj *layer) { - int i,j,k; - /* no need for items once the layer is closed */ msLayerFreeItemInfo(layer); if(layer->items) { @@ -426,6 +431,21 @@ void msLayerClose(layerObj *layer) } /* clear out items used as part of expressions (bug #2702) -- what about the layer filter? */ + msLayerFreeExpressions(layer); + + if (layer->vtable) { + layer->vtable->LayerClose(layer); + } + msLayerRestoreFromScaletokens(layer); +} + +/* +** Clear out items used as part of expressions. +*/ +void msLayerFreeExpressions(layerObj *layer) +{ + int i,j,k; + msFreeExpressionTokens(&(layer->filter)); msFreeExpressionTokens(&(layer->cluster.group)); msFreeExpressionTokens(&(layer->cluster.filter)); @@ -439,11 +459,6 @@ void msLayerClose(layerObj *layer) msFreeExpressionTokens(&(layer->class[i]->labels[k]->text)); } } - - if (layer->vtable) { - layer->vtable->LayerClose(layer); - } - msLayerRestoreFromScaletokens(layer); } /* diff --git a/mapserver.h b/mapserver.h index e756d9a349..905dec92a1 100644 --- a/mapserver.h +++ b/mapserver.h @@ -2412,6 +2412,7 @@ void msPopulateTextSymbolForLabelAndString(textSymbolObj *ts, labelObj *l, char MS_DLL_EXPORT int msClusterLayerOpen(layerObj *layer); /* in mapcluster.c */ MS_DLL_EXPORT int msLayerIsOpen(layerObj *layer); MS_DLL_EXPORT void msLayerClose(layerObj *layer); + MS_DLL_EXPORT void msLayerFreeExpressions(layerObj *layer); MS_DLL_EXPORT int msLayerWhichShapes(layerObj *layer, rectObj rect, int isQuery); MS_DLL_EXPORT int msLayerGetItemIndex(layerObj *layer, char *item); MS_DLL_EXPORT int msLayerWhichItems(layerObj *layer, int get_all, const char *metadata); From 3392ca15f3aee0806b8ca0cae056e3c9bbc704a9 Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Mon, 5 Dec 2016 20:11:47 +0100 Subject: [PATCH 099/221] update for 6.4.4 release --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d443d5dbb2..d7c637a949 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ include(CheckCSourceCompiles) set (MapServer_VERSION_MAJOR 6) set (MapServer_VERSION_MINOR 4) -set (MapServer_VERSION_REVISION 3) +set (MapServer_VERSION_REVISION 4) set (MapServer_VERSION_SUFFIX "") set(TARGET_VERSION_MAJOR ${MapServer_VERSION_MAJOR}) From 0f9ece882a48a286f933a17aa40880073df93aac Mon Sep 17 00:00:00 2001 From: Thomas Bonfort Date: Mon, 5 Dec 2016 20:16:43 +0100 Subject: [PATCH 100/221] update for 7.0.3 release --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 32e3d8835d..0e1b8fde38 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ include(CheckCSourceCompiles) set (MapServer_VERSION_MAJOR 7) set (MapServer_VERSION_MINOR 0) -set (MapServer_VERSION_REVISION 2) +set (MapServer_VERSION_REVISION 3) set (MapServer_VERSION_SUFFIX "") set(TARGET_VERSION_MAJOR ${MapServer_VERSION_MAJOR}) From 153471013be25562ebb3d83f17b7312834e3a4fd Mon Sep 17 00:00:00 2001 From: Alexander Gabriel Date: Wed, 7 Dec 2016 11:02:50 +0100 Subject: [PATCH 101/221] Update README.WIN32 for Mapserver and PHP/MapScript (#5357) --- README.WIN32 | 127 +++++++++++++++++++++++++------------ mapscript/php/README.WIN32 | 96 ++++++++++------------------ 2 files changed, 119 insertions(+), 104 deletions(-) diff --git a/README.WIN32 b/README.WIN32 index a9c8550687..d7d760f641 100644 --- a/README.WIN32 +++ b/README.WIN32 @@ -22,40 +22,108 @@ IMPORTANT - READ THIS FIRST: -------------------------------------------------------------------- -For the developers using MSVC++, a NMAKE makefile (Makefile.vc + nmake.opt) -to build the MapServer library and executable programs is included with -the distribution. +The easyest way to build Mapserver on Windows on your own is to use the +build-system from http://gisinternals.com/. +GISInternals provide a complete set of sources and dependencies and even +makefiles for the full version of Visual Studio (not Express oder Community). +You don't have to download and compile them all by your own. + +If you are not using full version of Visual Studio you can not use the makefiles +from GISInternals but you can still use the downloads to make your life easier. + +Building with the full version of Visual Studio is easy. +Download the SDK for you version and follow the readme inside the packages. + +This Readme will cover the compilation with Visual Studio 2012 Express on +Windows with CMake and the GISInternals-Packages for the following reasons: + - not everybody wants to buy Visual Studio and there is no reason to force + you to buy it just tu build Mapserver on Windows + - CMake is the configuration-system for Linux. Why should you use something + else which needs to be maintainerd? + - as of today, PHP-Mapscript is not suppored for PHP-7. PHP-5.6 is build + with VC11. To make PHP-Mapscript compatible with the downloadable + PHP-Version you need to build with VC11 wich is Visual Studio 2012. + - GISInternals Downloads contain most dependencies. it's way easier + +If you want to compile Mapserver with any other version of Visual Studio you +can for sure use this documentation as help but maybe, some things here won't +work for you. -To build the package using the Makefile.vc and NMAKE: +-------------------------------------------------------------------- + Prerequisites +-------------------------------------------------------------------- + +To build Mapserver on Windows with Visual Studio 2012 Express you need +Visual Studio 2012 Express installed. +Install CMake (https://cmake.org/) and add CMake bin-directory to your PATH +environment variable. You can even to this after opening VS2012 x86 Native +Tools Command Prompt by entering: + set PATH=%PATH%;"C:\Program Files\CMake\bin" +... if CMake is installed to "C:\Program Files\CMake" ;) - - Edit nmake.opt to select (or deselect) optional components of - the MapServer. Please read the notes below about each component - before you move ahead with the compilation. +-------------------------------------------------------------------- + Downloading dependencies +-------------------------------------------------------------------- - - Open a DOS prompt window +For our first build, we will use stable releases to build mapserver. +Download MSVC 2012 win32 Packages for GDAL-2.1.2 and Mapserver-7.0.2 from http://gisinternals.com/release.php. +We need "Compiled binaries in a single .zip package", "GDAL and MapServer sources" and "Compiled libraries and headers". +Download the MSVC 2012 win32 Developement Kit from http://gisinternals.com/sdk.php. +Extract everything to C:\dev\work\release-1700-gdal-2-1-2-mapserver-7-0-2. +There should be the directories inside now: bin, doc, gdal, include, lib, regex-0.12, relase-1700, ... +After you got this done, feel free to use other packages which fit your needs better. - - Run the VCVARS32.BAT script to initialize the VC++ environment - variables. VCVARS32.BAT is automatically generated by the MSVC++ - install procedure and should be located in the BIN sub-directory of - your MSVC++ installation. +-------------------------------------------------------------------- + Mapserver-sources +-------------------------------------------------------------------- - - Then start the build with: - nmake /f Makefile.vc +Download at least Mapserver-7.0.3 or current 7.0-Branch from github +and extract or clone from github to C:\dev\work\mapserver. -This will create "mapserv.exe" (the main MapServer CGI program), the -other command-line utilities, "mapserver.lib" and "libmap.dll" that is -used by theMapScript modules. +-------------------------------------------------------------------- + Building Mapserver +-------------------------------------------------------------------- +After downloading and extracting everything, to build Mapserver, follow this steps: +1. Open VS2012 x86 Native Tools Command Prompt (i'm german, hope it is translated +correctly). +2. Add CMake-bin to your PATH: + set PATH=%PATH%;"C:\Program Files\CMake\bin" +3. Create build-Directory: + mkdir C:\dev\work\mapserver\build + cd C:\dev\work\mapserver\build +4. Configure: + cmake .. -G "NMake Makefiles" -DBUILD_SHARED_LIBS=1 -DCMAKE_BUILD_TYPE=Release -Wno-dev + cmake .. -DCMAKE_PREFIX_PATH=C:\dev\work\release-1700-gdal-2-1-2-mapserver-7-0-2;C:\dev\work\release-1700-gdal-2-1-2-mapserver-7-0-2\bin;C:\dev\work\release-1700-gdal-2-1-2-mapserver-7-0-2\lib;C:\dev\work\release-1700-gdal-2-1-2-mapserver-7-0-2\include + cmake .. -DREGEX_DIR=C:\dev\work\release-1700-gdal-2-1-2-mapserver-7-0-2\regex-0.12 + cmake .. -DWITH_POSTGIS=0 -DWITH_SOS=1 -DWITH_KML=1 + cmake .. -DWITH_CLIENT_WMS=1 -DWITH_CLIENT_WFS=1 + cmake .. -DWITH_THREAD_SAFETY=1 -DWITH_FCGI=1 + cmake .. -DWITH_CAIRO=1 -DCAIRO_LIBRARY=C:\dev\work\release-1700-gdal-2-1-2-mapserver-7-0-2\lib\cairo.lib + cmake .. -DWITH_SVGCAIRO=1 -DSVGCAIRO_LIBRARY=C:\dev\work\release-1700-gdal-2-1-2-mapserver-7-0-2\lib\libsvg-cairo.lib + cmake .. -DSVG_LIBRARY=1 -DSVG_LIBRARY=C:\dev\work\release-1700-gdal-2-1-2-mapserver-7-0-2\lib\libsvg.lib +5. build + nmake + +Thats it. +You can use all CMake parameters and options as you are used from CMake to fit mapserver to your needs from here. +Enjoy! -------------------------------------------------------------------- MapScript -------------------------------------------------------------------- To compile the various versions of MapScript (Perl, PHP, etc) first compile -the main mapserver directory and then see the README files in the -mapscript/perl, mapscript/php3 or mapscript/python directory for specific +the main mapserver directory and then see the README files in the +mapscript/perl, mapscript/php or mapscript/python directory for specific instructions. +-------------------------------------------------------------------- + Dependencies Part 2 +-------------------------------------------------------------------- + +The following sections descripe how to get mapserver dependencies when not +downloading GISInternals packages. -------------------------------------------------------------------- GD library @@ -168,27 +236,6 @@ instructions. with the PNG support, make sure that the libpng that you use in mapserver is the same as the one used in GDAL. ------------------------------------------------------------- - Notes on PDF suuport ------------------------------------------------------------- - -The PDF support allows the output of a map file as a PDF file. - -To be able to build mapserver with the PDF support, you need to download -and build a PDF library from www.pdflib.com (http://www.pdflib.com/pdflib/download/index.html). -The best option is to download the zip file containing the source code and build it. Please refer to the docs inside the zip for informations on how to build the library. Here are some quick notes that can help in building mapserver with PDF : - - 1) Build the PDF lib - - - open the project PDFLib.dsw - - build the project pdflib_dll - - after a sucessful build, you should have a pdflib.lib and pdblib.dll under the - pdflib directory - - copy the pdflib.dll under your system directory (ex : c:/winnt/system32) - - 2) Build mapserver with PDF - - - uncomment in the nmake.opt the flags related to PDF $Id$ diff --git a/mapscript/php/README.WIN32 b/mapscript/php/README.WIN32 index 374419383b..9da74518cd 100644 --- a/mapscript/php/README.WIN32 +++ b/mapscript/php/README.WIN32 @@ -1,95 +1,63 @@ PHP/MapScript Mapserver Module ============================== --------------------------------------------------------------------- -IMPORTANT - READ THIS FIRST: - - The Win32 build process is not very friendly for unexperienced users. - So it is strongly recommended that you use one of the precompiled - versions of php_mapscript.dll available on DM Solutions Group's web site: - http://www2.dmsolutions.ca/mapserver/dl/ - - If for some reason you still decide to compile Win32 binaries yourself, - then don't do it unless you really know what you're doing... and - hopefully the rest of this file contains some hints that may help - you. Good Luck! --------------------------------------------------------------------- - -This file contains informations specific to building the PHP/MapScript -extension on Windows using MSVC++ 6.0. +This README covers building PHP-Mapscript on Windows with Visual Studio 2012 Express for PHP-5.6 x86 Thread-Safe. -See also the file README for more general information about the -PHP/MapScript extension. +If you already built Mapserver with instructions from ../../README.WIN32, you are only a few steps away from PHP-Mapscript. +If not, first build Mapserver as descriped in ../../README.WIN32. - -------------------------- -Step 1: Build the PHP.LIB import library -======= - - *** PHP3 *** - Before you can build the 'php3_mapscript.dll' extension, you need the - PHP.LIB import library. To build PHP.LIB, you will have to download the - php_3.0.14.tar.gz source code, and follow the instructions in the - README.WIN32 file in there to build php.exe with MSVC++ 6.0. - - - Extract php_3.0.14.tar.gz to your HD - - Read the php_3.0.14\README.WIN32 file. - - Open php_3.0.14\win32\php3.dsw using MSVC++ 6.0 - - Start building php.exe, this will also create PHP.LIB - - *** PHP4.0.4 (and more recent versions) *** - The PHP 4.0.4 win32 binaries (php-4.0.4-Win32.zip) distributed on - http://www.php.net/ include the necessary php4ts.lib import library, - so it is not necessary to build the PHP4 source in this case: - - Extract php-4.0.4.tar.gz (this will create a php-4.0.4 source tree) - - Extract php-4.0.4-Win32.zip and configure PHP4 on your server as per - the instructions in the file install.txt included in the zip file. - - mkdir php-4.0.4\lib (i.e. 'mkdir lib' in the root of the source tree) - - Copy php4ts.lib (from php-4.0.4-Win32.zip) to php-4.0.4\lib - - Continue with the rest of the instructions below. +-------------------------------------------------------------------- +Step 1: Build PHP +-------------------------------------------------------------------- -Step 2: Build PHP3_MAPSCRIPT.DLL/PHP_MAPSCRIPT.DLL -======= +Build PHP-5.6 x86 Thread-Safe with Visual Studio 2012 Express as descriped here: https://wiki.php.net/internals/windows/stepbystepbuild +Extract the PHP-SDK to C:\dev\work\php-sdk to be able to use the commands, used here. -Review the mapscript\php3\makefile.vc and make any modifications required -for your configuration. Make sure PHP_SOURCE_DIR points to where you -installed the PHP source tree in step 1 above. +PHP sources and compiled binaries should be in C:\dev\work\php-sdk\phpdev\vc11\x86\php-5.6.28-src now. -Then to compile PHP3_MAPSCRIPT.DLL/PHP_MAPSCRIPT.DLL: - - Open a DOS prompt window - - Run the VCVARS32.BAT script to initialize the VC++ environment - variables. VCVARS32.BAT is automatically generated by the MSVC++ - install procedure and should be located in the BIN sub-directory of - your MSVC++ installation. - - Then start the build with: - nmake /f makefile.vc +-------------------------------------------------------------------- +Step 2: Build PHP-Mapscript +-------------------------------------------------------------------- -This will create the "PHP3_MAPSCRIPT.DLL" for PHP3, or "PHP_MAPSCRIPT.DLL" -for PHP4. +After step 5 of ../../README.WIN32 you have an open VS2012 x86 Native Tools Shell in build-Directory in your Mapserver sources (C:\dev\work\mapserver\build). +If not, open VS2012 x86 Native Tools Shell, add cmake to your PATH (see ../../README.WIN32) and "cd C:\dev\work\mapserver\build". +1. Tell CMake to build Mapscript by entering: + cmake .. -DWITH_PHP=1 -DPHP5_EXTENSION_DIR=C:\dev\builds\php-5.6.28-Win32-VC11-x86_mapscript\ext -DPHP5_INCLUDES=C:\dev\work\php-sdk\phpdev\vc11\x86\php-5.6.28-src +2. build: + nmake +-------------------------------------------------------------------- Step 3: Install PHP3_MAPSCRIPT.DLL/PHP_MAPSCRIPT.DLL -======= +-------------------------------------------------------------------- -PHP3_MAPSCRIPT.DLL is a regular PHP module, you should copy it to the same -directory as the other PHP3_*.DLL modules that came with PHP. +PHP_MAPSCRIPT.DLL is a regular PHP module, you should copy it to the same +directory as the other PHP_*.DLL modules that came with PHP. Then the module can be loaded in one of 2 ways: - - Adding a "extension=php3_mapscript.dll" line to the PHP3.INI file will + - Adding a "extension=php_mapscript.dll" line to the PHP3.INI file will load it automatically for every PHP page. - The other possibility is to load the module only when needed using the following PHP call: - dl("php3_mapscript.dll"); // for the PHP3 module - or dl("php_mapscript.dll"); // for the PHP4 module You can test that the module is properly loaded by executing the phpinfo() command in a PHP page... the "MapScript" extension should be included in the list of extensions in the phpinfo() report. +-------------------------------------------------------------------- +Maybe Step 4: Troubleshooting +-------------------------------------------------------------------- + +If you have any problems, getting PHP-MapScript running, add it to php.ini and try to start php from command line. It may tell you, what is missing. +PHP-MapScript has the same dependencies as Mapserver itself so you may need to add paths to the dependencies and libmap.dll/mapserver.dll to you systems PATH environment variable. +If this all does not help, use tools like SysInternals Process Monitor (https://technet.microsoft.com/de-de/sysinternals/processmonitor.aspx) or Dependency Walker (http://www.dependencywalker.com/) to find, what is missing. +Open php_mapscript.dll with Dependency Walker to see missing dependencies. + -------------------------- $Id$ From bbfa86661216c370fa5e4860ca4d4a9efcbc3a7e Mon Sep 17 00:00:00 2001 From: David Shorthouse Date: Tue, 13 Dec 2016 09:39:35 -0500 Subject: [PATCH 102/221] Repeat transformation if extent is extreme Repeat transformation for a rectangle interior to the output requested region. If the latter results in a more extreme y extent, then extend extents in source layer projection to southern/northing bounds and entire x extent. This fix resolves issue #4864. --- mapresample.c | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/mapresample.c b/mapresample.c index 7107bcbc55..9d69568754 100644 --- a/mapresample.c +++ b/mapresample.c @@ -1240,14 +1240,47 @@ int msResampleGDALToMap( mapObj *map, layerObj *layer, imageObj *image, /* -------------------------------------------------------------------- */ if( CSLFetchBoolean( layer->processing, "LOAD_WHOLE_IMAGE", FALSE ) ) bSuccess = FALSE; - else + else { bSuccess = msTransformMapToSource( nDstXSize, nDstYSize, adfDstGeoTransform, &(map->projection), nSrcXSize, nSrcYSize,adfInvSrcGeoTransform, &(layer->projection), &sSrcExtent, FALSE ); - + if (bSuccess) { + /* -------------------------------------------------------------------- */ + /* Repeat transformation for a rectangle interior to the output */ + /* requested region. If the latter results in a more extreme y */ + /* extent, then extend extents in source layer projection to */ + /* southern/northing bounds and entire x extent. */ + /* -------------------------------------------------------------------- */ + memcpy( &sOrigSrcExtent, &sSrcExtent, sizeof(sSrcExtent) ); + adfDstGeoTransform[0] = adfDstGeoTransform[0] + adfDstGeoTransform[1]; + adfDstGeoTransform[3] = adfDstGeoTransform[3] + adfDstGeoTransform[5]; + bSuccess = + msTransformMapToSource( nDstXSize-2, nDstYSize-2, adfDstGeoTransform, + &(map->projection), + nSrcXSize, nSrcYSize,adfInvSrcGeoTransform, + &(layer->projection), + &sSrcExtent, FALSE ); + /* Reset this array to its original value! */ + memcpy( adfDstGeoTransform, map->gt.geotransform, sizeof(double)*6 ); + + if (bSuccess) { + if (sSrcExtent.maxy > sOrigSrcExtent.maxy || sSrcExtent.miny < sOrigSrcExtent.miny) { + msDebug( "msTransformMapToSource(): extending bounds.\n"); + sOrigSrcExtent.minx = 0; + sOrigSrcExtent.maxx = nSrcXSize; + if (sSrcExtent.maxy > sOrigSrcExtent.maxy) + sOrigSrcExtent.maxy = nSrcYSize; + if (sSrcExtent.miny < sOrigSrcExtent.miny) + sOrigSrcExtent.miny = 0; + } + } + memcpy( &sSrcExtent, &sOrigSrcExtent, sizeof(sOrigSrcExtent) ); + bSuccess = TRUE; + } + } /* -------------------------------------------------------------------- */ /* If the transformation failed, it is likely that we have such */ /* broad extents that the projection transformation failed at */ From 6beab5e455fd4d0c4292bd5cf77655617a1dae2f Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 19 Dec 2016 23:14:52 +0100 Subject: [PATCH 103/221] WFS: fix taking into account of wfs_use_default_extent_for_getfeature. Logic added in 7.0.3 was inverted... --- mapogcfilter.c | 2 +- mapogr.cpp | 8 +++++--- mapwfs.c | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/mapogcfilter.c b/mapogcfilter.c index 0c226e180b..03c26d67bb 100644 --- a/mapogcfilter.c +++ b/mapogcfilter.c @@ -673,7 +673,7 @@ int FLTLayerApplyPlainFilterToLayer(FilterEncodingNode *psNode, mapObj *map, pszUseDefaultExtent = msOWSLookupMetadata(&(lp->metadata), "F", "use_default_extent_for_getfeature"); - if( pszUseDefaultExtent && CSLTestBoolean(pszUseDefaultExtent) && + if( pszUseDefaultExtent && !CSLTestBoolean(pszUseDefaultExtent) && lp->connectiontype == MS_OGR ) { const rectObj rectInvalid = MS_INIT_INVALID_RECT; diff --git a/mapogr.cpp b/mapogr.cpp index 07ef04bbbe..7ca5090f7f 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -2429,13 +2429,15 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps OGR_L_SetSpatialFilter( psInfo->hLayer, hSpatialFilterPolygon ); OGR_G_DestroyGeometry( hSpatialFilterPolygon ); } + + if (layer->debug >= MS_DEBUGLEVEL_VVV) + { + msDebug("msOGRFileWhichShapes: Setting spatial filter to %.15g %.15g %.15g %.15g\n", rect.minx, rect.miny, rect.maxx, rect.maxy ); + } } psInfo->rect = rect; - if (layer->debug >= MS_DEBUGLEVEL_VVV) - msDebug("msOGRFileWhichShapes: Setting spatial filter to %.15g %.15g %.15g %.15g\n", rect.minx, rect.miny, rect.maxx, rect.maxy ); - /* ------------------------------------------------------------------ * Apply an attribute filter if we have one prefixed with a WHERE * keyword in the filter string. Otherwise, ensure the attribute diff --git a/mapwfs.c b/mapwfs.c index bac3f218de..40517885be 100644 --- a/mapwfs.c +++ b/mapwfs.c @@ -2153,7 +2153,7 @@ static int msWFSRunBasicGetFeature(mapObj* map, pszUseDefaultExtent = msOWSLookupMetadata(&(lp->metadata), "F", "use_default_extent_for_getfeature"); - if( pszUseDefaultExtent && CSLTestBoolean(pszUseDefaultExtent) && + if( pszUseDefaultExtent && !CSLTestBoolean(pszUseDefaultExtent) && lp->connectiontype == MS_OGR ) { const rectObj rectInvalid = MS_INIT_INVALID_RECT; From d50ff645a67d092ceaa599f4a53dc84eaa0945e5 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 19 Dec 2016 23:57:11 +0100 Subject: [PATCH 104/221] Fix wfs_ogr_native_sql.map to take into account inverted logic fixed by 6beab5e455fd4d0c4292bd5cf77655617a1dae2f --- msautotest/wxs/wfs_ogr_native_sql.map | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/msautotest/wxs/wfs_ogr_native_sql.map b/msautotest/wxs/wfs_ogr_native_sql.map index 3b9969177d..769725fb5f 100644 --- a/msautotest/wxs/wfs_ogr_native_sql.map +++ b/msautotest/wxs/wfs_ogr_native_sql.map @@ -163,7 +163,7 @@ LAYER "gml_include_items" "all" "gml_types" "auto" "wfs_getfeature_formatlist" "ogrgml" - "wfs_use_default_extent_for_getfeature" "yes" + "wfs_use_default_extent_for_getfeature" "no" END TYPE POINT STATUS ON From b5c02b4c6c485126d414cd0c4fffd05b2c28d25d Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 22 Dec 2016 10:14:02 +0100 Subject: [PATCH 105/221] WFS: avoid 'eating' the last character of WFS 2.0 stored queries stored in an external file --- mapwfs20.c | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/mapwfs20.c b/mapwfs20.c index b4402ec073..50da8443e6 100644 --- a/mapwfs20.c +++ b/mapwfs20.c @@ -824,15 +824,44 @@ static char* msWFSGetStoredQuery(mapObj *map, const char* pszURN) FILE* f = fopen(value, "rb"); if( f != NULL ) { - char* pszBuffer = (char*) msSmallMalloc(32000); - int nread = fread(pszBuffer, 1, 32000-1, f); - fclose(f); - if( nread > 0 ) + char* pszBuffer; + int nread; + long length; + + fseek(f, 0, SEEK_END); + length = ftell(f); + if( length > 1000000 ) + { + msSetError(MS_WFSERR, "%s: too big (%ld bytes > 1000000)", + "msWFSGetStoredQuery()", value, length); + fclose(f); + } + else { - pszBuffer[nread-1] = '\0'; - return pszBuffer; + fseek(f, 0, SEEK_SET); + pszBuffer = (char*) malloc((int)length + 1); + if( pszBuffer == NULL ) + { + msSetError(MS_WFSERR, "Cannot allocate %d bytes to read %s", + "msWFSGetStoredQuery()", + (int)length + 1, value); + fclose(f); + } + else + { + nread = (int)fread(pszBuffer, 1, length, f); + fclose(f); + if( nread == length ) + { + pszBuffer[nread] = '\0'; + return pszBuffer; + } + msSetError(MS_WFSERR, "Could only read %d bytes / %d of %s", + "msWFSGetStoredQuery()", + nread, (int)length, value); + msFree(pszBuffer); + } } - msFree(pszBuffer); } else { From 722716c49de2399f54b275ab31437f0e8c92cd63 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 2 Jan 2017 18:37:54 +0100 Subject: [PATCH 106/221] msTransformMapToSource(): fix behaviour at lon_wrap +/- 180 deg This fixes an issue when drawing a raster whose extent is e.g. [0,360] with a projection with +lon_wrap=180. Before this fix, when drawing the extent [-180,180], there was a gap around lon=0 due to the discontinuity during the computation of the source coordinates. --- mapresample.c | 101 ++++++++++++++++++++++ msautotest/gdal/data/lon_wrap_180.asc | 25 ++++++ msautotest/gdal/data/lon_wrap_180.prj | 1 + msautotest/gdal/expected/lon_wrap_180.png | Bin 0 -> 109 bytes 4 files changed, 127 insertions(+) create mode 100644 msautotest/gdal/data/lon_wrap_180.asc create mode 100644 msautotest/gdal/data/lon_wrap_180.prj create mode 100644 msautotest/gdal/expected/lon_wrap_180.png diff --git a/mapresample.c b/mapresample.c index 7107bcbc55..c1a98b2d25 100644 --- a/mapresample.c +++ b/mapresample.c @@ -1123,6 +1123,107 @@ static int msTransformMapToSource( int nDstXSize, int nDstYSize, } } + /* -------------------------------------------------------------------- */ + /* Deal with discontinuities related to lon_wrap=XXX in source */ + /* projection. In that case we must check if the points at */ + /* lon_wrap +/- 180deg are in the output raster. */ + /* -------------------------------------------------------------------- */ + if( bOutInit && pj_is_latlong(psSrcProj->proj) ) + { + int bHasLonWrap = MS_FALSE; + double dfLonWrap = 0; + for( i = 0; i < psSrcProj->numargs; i++ ) + { + if( strncmp(psSrcProj->args[i], "lon_wrap=", + strlen("lon_wrap=")) == 0 ) + { + bHasLonWrap = MS_TRUE; + dfLonWrap = atof( psSrcProj->args[i] + strlen("lon_wrap=") ); + break; + } + } + + if( bHasLonWrap ) + { + double x2[2], y2[2], z2[2]; + int nCountY = 0; + double dfY = 0.0; + double dfXMinOut = 0.0; + double dfYMinOut = 0.0; + double dfXMaxOut = 0.0; + double dfYMaxOut = 0.0; + + /* Find out average y coordinate in src projection */ + for( i = 0; i < nSamples; i++ ) { + if( y[i] != HUGE_VAL ) { + dfY += y[i]; + nCountY ++; + } + } + dfY /= nCountY; + + /* Compute bounds of output raster */ + for( i = 0; i < 4; i ++ ) + { + double dfX = adfDstGeoTransform[0] + + ((i == 1 || i == 2) ? nDstXSize : 0) * adfDstGeoTransform[1] + + ((i == 1 || i == 3 ) ? nDstYSize : 0) * adfDstGeoTransform[2]; + double dfY = adfDstGeoTransform[3] + + ((i == 1 || i == 2) ? nDstXSize : 0) * adfDstGeoTransform[4] + + ((i == 1 || i == 3 ) ? nDstYSize : 0) * adfDstGeoTransform[5]; + if( i == 0 || dfX < dfXMinOut ) dfXMinOut = dfX; + if( i == 0 || dfY < dfYMinOut ) dfYMinOut = dfY; + if( i == 0 || dfX > dfXMaxOut ) dfXMaxOut = dfX; + if( i == 0 || dfY > dfYMaxOut ) dfYMaxOut = dfY; + } + + x2[0] = dfLonWrap-180+1e-7; + y2[0] = dfY; + z2[0] = 0.0; + + x2[1] = dfLonWrap+180-1e-7; + y2[1] = dfY; + z2[1] = 0.0; + + msAcquireLock( TLOCK_PROJ ); + pj_transform( psSrcProj->proj, psDstProj->proj, + 2, 1, x2, y2, z2 ); + msReleaseLock( TLOCK_PROJ ); + + if( x2[0] >= dfXMinOut && x2[0] <= dfXMaxOut && + y2[0] >= dfYMinOut && y2[0] <= dfYMaxOut ) + { + double x_out = adfInvSrcGeoTransform[0] + + (dfLonWrap-180)*adfInvSrcGeoTransform[1] + + dfY*adfInvSrcGeoTransform[2]; + double y_out = adfInvSrcGeoTransform[3] + + (dfLonWrap-180)*adfInvSrcGeoTransform[4] + + dfY*adfInvSrcGeoTransform[5]; + + psSrcExtent->minx = MS_MIN(psSrcExtent->minx, x_out); + psSrcExtent->maxx = MS_MAX(psSrcExtent->maxx, x_out); + psSrcExtent->miny = MS_MIN(psSrcExtent->miny, y_out); + psSrcExtent->maxy = MS_MAX(psSrcExtent->maxy, y_out); + } + + if( x2[1] >= dfXMinOut && x2[1] <= dfXMaxOut && + x2[1] >= dfYMinOut && y2[1] <= dfYMaxOut ) + { + double x_out = adfInvSrcGeoTransform[0] + + (dfLonWrap+180)*adfInvSrcGeoTransform[1] + + dfY*adfInvSrcGeoTransform[2]; + double y_out = adfInvSrcGeoTransform[3] + + (dfLonWrap+180)*adfInvSrcGeoTransform[4] + + dfY*adfInvSrcGeoTransform[5]; + + psSrcExtent->minx = MS_MIN(psSrcExtent->minx, x_out); + psSrcExtent->maxx = MS_MAX(psSrcExtent->maxx, x_out); + psSrcExtent->miny = MS_MIN(psSrcExtent->miny, y_out); + psSrcExtent->maxy = MS_MAX(psSrcExtent->maxy, y_out); + } + } + } + if( !bOutInit ) return MS_FALSE; diff --git a/msautotest/gdal/data/lon_wrap_180.asc b/msautotest/gdal/data/lon_wrap_180.asc new file mode 100644 index 0000000000..fa82f27009 --- /dev/null +++ b/msautotest/gdal/data/lon_wrap_180.asc @@ -0,0 +1,25 @@ +ncols 40 +nrows 20 +xllcorner -0.1 +yllcorner -90.000000000000 +cellsize 9.000000000000 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 + 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 127 diff --git a/msautotest/gdal/data/lon_wrap_180.prj b/msautotest/gdal/data/lon_wrap_180.prj new file mode 100644 index 0000000000..a30c00a55d --- /dev/null +++ b/msautotest/gdal/data/lon_wrap_180.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file diff --git a/msautotest/gdal/expected/lon_wrap_180.png b/msautotest/gdal/expected/lon_wrap_180.png new file mode 100644 index 0000000000000000000000000000000000000000..e5f7b5063855573921e2640ee0c7e9fb1dd5def0 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^8bB< Date: Wed, 4 Jan 2017 16:17:20 +0100 Subject: [PATCH 107/221] Fix cluster with WMS dimension issue (#5364) --- mapcluster.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mapcluster.c b/mapcluster.c index 39d6a5dee7..46b6844371 100644 --- a/mapcluster.c +++ b/mapcluster.c @@ -1440,7 +1440,12 @@ int msClusterLayerOpen(layerObj *layer) return MS_FAILURE; if (layer->layerinfo) - return MS_SUCCESS; /* already open */ + { + if (layer->vtable->LayerOpen != msClusterLayerOpen) + msLayerClose(layer); + else + return MS_SUCCESS; /* already open */ + } layerinfo = msClusterInitialize(layer); From 940ae5e26f3898e56abf28bb7aaeaaf0e7d56a92 Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Wed, 4 Jan 2017 13:42:26 -0400 Subject: [PATCH 108/221] update copyright date --- README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README b/README index b8c1926eb0..e7bf2462c4 100644 --- a/README +++ b/README @@ -67,7 +67,7 @@ License :: - Copyright (c) 2008-2016 Open Source Geospatial Foundation. + Copyright (c) 2008-2017 Open Source Geospatial Foundation. Copyright (c) 1996-2008 Regents of the University of Minnesota. Permission is hereby granted, free of charge, to any person obtaining a copy From 7dc87fe671930f5e191a0c3dbff4b0c75b44149a Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Thu, 5 Jan 2017 11:53:56 +0100 Subject: [PATCH 109/221] Fix cluster filter propagation to the source layer (#5364) --- mapcluster.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mapcluster.c b/mapcluster.c index 46b6844371..daf972afbb 100644 --- a/mapcluster.c +++ b/mapcluster.c @@ -1511,7 +1511,10 @@ int msClusterLayerTranslateFilter(layerObj *layer, expressionObj *filter, char * return MS_FAILURE; } - return layerinfo->srcLayer.vtable->LayerTranslateFilter(&layerinfo->srcLayer, filter, filteritem); + if (layerinfo->srcLayer.filter.type == MS_EXPRESSION && layerinfo->srcLayer.filter.tokens == NULL) + msTokenizeExpression(&(layerinfo->srcLayer.filter), layer->items, &(layer->numitems)); + + return layerinfo->srcLayer.vtable->LayerTranslateFilter(&layerinfo->srcLayer, &layerinfo->srcLayer.filter, filteritem); } char* msClusterLayerEscapeSQLParam(layerObj *layer, const char* pszString) From ea7d4a006dc174534262d7f8fe3ce48636a9f27f Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 5 Jan 2017 13:29:40 +0100 Subject: [PATCH 110/221] Add missing test mapfile Should have gone with 722716c49de2399f54b275ab31437f0e8c92cd63 --- msautotest/gdal/lon_wrap_180.map | 36 ++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 msautotest/gdal/lon_wrap_180.map diff --git a/msautotest/gdal/lon_wrap_180.map b/msautotest/gdal/lon_wrap_180.map new file mode 100644 index 0000000000..c09e6fb4b4 --- /dev/null +++ b/msautotest/gdal/lon_wrap_180.map @@ -0,0 +1,36 @@ +# Test behaviour with a projection with lon_wrap=180 + +MAP + +NAME TEST +STATUS ON +SIZE 40 20 +EXTENT -180 -89.9999 180 90 +IMAGECOLOR 0 0 0 + + PROJECTION + "init=epsg:4326" + END + +OUTPUTFORMAT + NAME "png" + DRIVER AGG/PNG + MIMETYPE "image/png" + IMAGEMODE RGBA + EXTENSION "png" +END + +LAYER + NAME test + TYPE RASTER + STATUS default + DATA "data/lon_wrap_180.asc" + PROJECTION + "proj=longlat" + "datum=WGS84" + "lon_wrap=180" + "no_defs" + END +END + +END # of map file From 19d77c52467d445e678a291aaf0265f49c4e2176 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 5 Jan 2017 13:34:01 +0100 Subject: [PATCH 111/221] Legend: draw icon for raster gradient classes (#1305) --- maplegend.c | 67 +++++++++++++++++- .../expected/legend_raster_gradient.png | Bin 0 -> 153 bytes .../renderers/legend_raster_gradient.map | 38 ++++++++++ 3 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 msautotest/renderers/expected/legend_raster_gradient.png create mode 100644 msautotest/renderers/legend_raster_gradient.map diff --git a/maplegend.c b/maplegend.c index 74dc4903fa..b02f12ceca 100644 --- a/maplegend.c +++ b/maplegend.c @@ -35,6 +35,54 @@ #define VMARGIN 5 /* margin at top and bottom of legend graphic */ #define HMARGIN 5 /* margin at left and right of legend graphic */ + +static int msDrawGradientSymbol(rendererVTableObj* renderer, + imageObj* image_draw, + double x_center, + double y_center, + int width, + int height, + styleObj* style) +{ + int i, j; + unsigned char *r,*g,*b,*a; + symbolObj symbol; + rasterBufferObj* rb; + symbolStyleObj symbolStyle; + int ret; + + initSymbol(&symbol); + rb = (rasterBufferObj*)calloc(1,sizeof(rasterBufferObj)); + symbol.pixmap_buffer = rb; + rb->type = MS_BUFFER_BYTE_RGBA; + rb->width = width; + rb->height = height; + rb->data.rgba.row_step = rb->width * 4; + rb->data.rgba.pixel_step = 4; + rb->data.rgba.pixels = (unsigned char*)malloc( + rb->width*rb->height*4*sizeof(unsigned char)); + b = rb->data.rgba.b = &rb->data.rgba.pixels[0]; + g = rb->data.rgba.g = &rb->data.rgba.pixels[1]; + r = rb->data.rgba.r = &rb->data.rgba.pixels[2]; + a = rb->data.rgba.a = &rb->data.rgba.pixels[3]; + for( j = 0; j < rb->height; j++ ) + { + for( i = 0; i < rb->width; i++ ) + { + msValueToRange(style, style->minvalue + + (double)i / rb->width * (style->maxvalue - style->minvalue), MS_COLORSPACE_RGB); + b[4*(j * rb->width + i)] = style->color.blue; + g[4*(j * rb->width + i)] = style->color.green; + r[4*(j * rb->width + i)] = style->color.red; + a[4*(j * rb->width + i)] = style->color.alpha; + } + } + INIT_SYMBOL_STYLE(symbolStyle); + ret = renderer->renderPixmapSymbol(image_draw, x_center, y_center, &symbol, &symbolStyle); + msFreeSymbol(&symbol); + return ret; +} + /* * generic function for drawing a legend icon. (added for bug #2348) * renderer specific drawing functions shouldn't be called directly, but through @@ -262,8 +310,22 @@ int msDrawLegendIcon(mapObj *map, layerObj *lp, classObj *theclass, if (theclass->styles[i]->_geomtransform.type == MS_GEOMTRANSFORM_NONE || theclass->styles[i]->_geomtransform.type == MS_GEOMTRANSFORM_LABELPOINT || theclass->styles[i]->_geomtransform.type == MS_GEOMTRANSFORM_LABELPOLY) { - ret = msDrawShadeSymbol(map, image_draw, &box, theclass->styles[i], lp->scalefactor * image_draw->resolutionfactor); - if(UNLIKELY(ret == MS_FAILURE)) goto legend_icon_cleanup; + + if (MS_VALID_COLOR(theclass->styles[i]->mincolor)) + { + ret = msDrawGradientSymbol(renderer, + image_draw, + dstX + width / 2., + dstY + height / 2.0, + width - 2 * polygon_contraction, + height - 2 * polygon_contraction, + theclass->styles[i]); + } + else + { + ret = msDrawShadeSymbol(map, image_draw, &box, theclass->styles[i], lp->scalefactor * image_draw->resolutionfactor); + } + if(UNLIKELY(ret == MS_FAILURE)) goto legend_icon_cleanup; } else { ret = msDrawTransformedShape(map, image_draw, &box, @@ -394,7 +456,6 @@ int msDrawLegendIcon(mapObj *map, layerObj *lp, classObj *theclass, return ret; } - imageObj *msCreateLegendIcon(mapObj* map, layerObj* lp, classObj* class, int width, int height, int scale_independant) { imageObj *image; diff --git a/msautotest/renderers/expected/legend_raster_gradient.png b/msautotest/renderers/expected/legend_raster_gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..d19ec0ef60b7fc9341dfcc13d1449add245decfd GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^%0Mi_!2~2bjtENwsRU0K#}JRsumIcmcyPzi37&yDF&6i=_dbz+Khj>+hb}@Lm`njxgN@xNA Ds&G2N literal 0 HcmV?d00001 diff --git a/msautotest/renderers/legend_raster_gradient.map b/msautotest/renderers/legend_raster_gradient.map new file mode 100644 index 0000000000..f84f282f76 --- /dev/null +++ b/msautotest/renderers/legend_raster_gradient.map @@ -0,0 +1,38 @@ +# RUN_PARMS: legend_raster_gradient.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&mode=legend&map.imagetype=png" > [RESULT_DEMIME] + +MAP + +NAME TEST +STATUS ON +SIZE 200 150 +EXTENT 0.5 0.5 399.5 299.5 +IMAGECOLOR 255 255 0 + +IMAGETYPE png24_t + +OUTPUTFORMAT + NAME png24_t + DRIVER "GDAL/PNG" + IMAGEMODE RGBA + TRANSPARENT ON +END + +LAYER + NAME rgb + TYPE raster + STATUS default + DATA ../gdal/data/rgba.tif + PROCESSING "BANDS=1,2,3" + + CLASS + NAME "" + EXPRESSION ([pixel] >= 0.01 AND [pixel] < 0.05) + STYLE + COLORRANGE 0 0 0 255 255 255 + DATARANGE 0.01 0.05 + END + END + +END + +END # of map file From adf3383e52a91ded988b80a4b296a88c6bdf941c Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 5 Jan 2017 18:07:46 +0100 Subject: [PATCH 112/221] Optimize msDrawRasterGDAL_16BitClassification() runtime. The creation of buckets takes a significant time when they are many, and many classes as well. When iterating over buckets, a faster strategy is to reuse first the last used class index. --- mapdrawgdal.c | 21 +++++++++++++++++-- mapraster.c | 58 +++++++++++++++++++++++++++++++++++---------------- mapserver.h | 1 + 3 files changed, 60 insertions(+), 20 deletions(-) diff --git a/mapdrawgdal.c b/mapdrawgdal.c index eb4ca15a5b..b76928a98c 100644 --- a/mapdrawgdal.c +++ b/mapdrawgdal.c @@ -32,7 +32,7 @@ #include "mapserver.h" #include "mapresample.h" #include "mapthread.h" - +#include "maptime.h" extern int InvGeoTransform( double *gt_in, double *gt_out ); @@ -1717,6 +1717,9 @@ msDrawRasterLayerGDAL_16BitClassification( unsigned char *rb_cmap[4]; CPLErr eErr; rasterBufferObj *mask_rb = NULL; + int lastC; + struct mstimeval starttime, endtime; + if(layer->mask) { int ret; layerObj *maskLayer = GET_LAYER(map, msGetLayerIndex(map,layer->mask)); @@ -1875,6 +1878,12 @@ msDrawRasterLayerGDAL_16BitClassification( rb_cmap[2] = (unsigned char *) msSmallCalloc(1,nBucketCount); rb_cmap[3] = (unsigned char *) msSmallCalloc(1,nBucketCount); + + if(layer->debug >= MS_DEBUGLEVEL_TUNING) { + msGettimeofday(&starttime, NULL); + } + + lastC = -1; for(i=0; i < nBucketCount; i++) { double dfOriginalValue; @@ -1882,7 +1891,8 @@ msDrawRasterLayerGDAL_16BitClassification( dfOriginalValue = (i+0.5) / dfScaleRatio + dfScaleMin; - c = msGetClass_FloatRGB(layer, (float) dfOriginalValue, -1, -1, -1); + c = msGetClass_FloatRGB_WithFirstClassToTry(layer, (float) dfOriginalValue, -1, -1, -1, lastC); + lastC = c; if( c != -1 ) { int s; @@ -1904,6 +1914,13 @@ msDrawRasterLayerGDAL_16BitClassification( } } + if(layer->debug >= MS_DEBUGLEVEL_TUNING) { + msGettimeofday(&endtime, NULL); + msDebug("msDrawRasterGDAL_16BitClassification() bucket creation time: %.3fs\n", + (endtime.tv_sec+endtime.tv_usec/1.0e6)- + (starttime.tv_sec+starttime.tv_usec/1.0e6) ); + } + /* ==================================================================== */ /* Now process the data, applying to the working imageObj. */ /* ==================================================================== */ diff --git a/mapraster.c b/mapraster.c index e8ac0f939f..1fd5bea3ea 100644 --- a/mapraster.c +++ b/mapraster.c @@ -60,7 +60,7 @@ extern parseResultObj yypresult; /* result of parsing, true/false */ /* msGetClass_String() */ /************************************************************************/ -static int msGetClass_String( layerObj *layer, colorObj *color, const char *pixel_value ) +static int msGetClass_String( layerObj *layer, colorObj *color, const char *pixel_value, int firstClassToTry ) { int i; @@ -80,9 +80,18 @@ static int msGetClass_String( layerObj *layer, colorObj *color, const char *pixe /* Setup values list for expressions. */ /* -------------------------------------------------------------------- */ numitems = 4; - sprintf( red_value, "%d", color->red ); - sprintf( green_value, "%d", color->green ); - sprintf( blue_value, "%d", color->blue ); + if( color->red == -1 && color->green == -1 && color->blue == -1 ) + { + strcpy(red_value, "-1"); + strcpy(green_value, "-1"); + strcpy(blue_value, "-1"); + } + else + { + sprintf( red_value, "%d", color->red ); + sprintf( green_value, "%d", color->green ); + sprintf( blue_value, "%d", color->blue ); + } item_values[0] = (char *)pixel_value; item_values[1] = red_value; @@ -92,18 +101,24 @@ static int msGetClass_String( layerObj *layer, colorObj *color, const char *pixe /* -------------------------------------------------------------------- */ /* Loop over classes till we find a match. */ /* -------------------------------------------------------------------- */ - for(i=0; inumclasses; i++) { + for(i= (firstClassToTry < 0 ) ? 0 : -1; inumclasses; i++) { + + int idx = i; + if( i < 0 ) + idx = firstClassToTry; + else if( i == firstClassToTry ) + continue; /* check for correct classgroup, if set */ - if ( layer->class[i]->group && layer->classgroup && - strcasecmp(layer->class[i]->group, layer->classgroup) != 0 ) + if ( layer->class[idx]->group && layer->classgroup && + strcasecmp(layer->class[idx]->group, layer->classgroup) != 0 ) continue; /* Empty expression - always matches */ - if (layer->class[i]->expression.string == NULL) + if (layer->class[idx]->expression.string == NULL) return(i); - switch(layer->class[i]->expression.type) { + switch(layer->class[idx]->expression.type) { /* -------------------------------------------------------------------- */ /* Simple string match */ @@ -114,22 +129,22 @@ static int msGetClass_String( layerObj *layer, colorObj *color, const char *pixe while( *tmpstr1 == ' ' ) tmpstr1++; - if(strcmp(layer->class[i]->expression.string, tmpstr1) == 0) return(i); /* matched */ + if(strcmp(layer->class[idx]->expression.string, tmpstr1) == 0) return(idx); /* matched */ break; /* -------------------------------------------------------------------- */ /* Regular expression. Rarely used for raster. */ /* -------------------------------------------------------------------- */ case(MS_REGEX): - if(!layer->class[i]->expression.compiled) { - if(ms_regcomp(&(layer->class[i]->expression.regex), layer->class[i]->expression.string, MS_REG_EXTENDED|MS_REG_NOSUB) != 0) { /* compile the expression */ + if(!layer->class[idx]->expression.compiled) { + if(ms_regcomp(&(layer->class[idx]->expression.regex), layer->class[idx]->expression.string, MS_REG_EXTENDED|MS_REG_NOSUB) != 0) { /* compile the expression */ msSetError(MS_REGEXERR, "Invalid regular expression.", "msGetClass()"); return(-1); } - layer->class[i]->expression.compiled = MS_TRUE; + layer->class[idx]->expression.compiled = MS_TRUE; } - if(ms_regexec(&(layer->class[i]->expression.regex), pixel_value, 0, NULL, 0) == 0) return(i); /* got a match */ + if(ms_regexec(&(layer->class[idx]->expression.regex), pixel_value, 0, NULL, 0) == 0) return(idx); /* got a match */ break; /* -------------------------------------------------------------------- */ @@ -139,7 +154,7 @@ static int msGetClass_String( layerObj *layer, colorObj *color, const char *pixe int status; parseObj p; shapeObj dummy_shape; - expressionObj *expression = &(layer->class[i]->expression); + expressionObj *expression = &(layer->class[idx]->expression); dummy_shape.numvalues = numitems; dummy_shape.values = item_values; @@ -160,7 +175,7 @@ static int msGetClass_String( layerObj *layer, colorObj *color, const char *pixe } if( p.result.intval ) - return i; + return idx; break; } } @@ -179,7 +194,7 @@ int msGetClass(layerObj *layer, colorObj *color, int colormap_index) snprintf( pixel_value, sizeof(pixel_value), "%d", colormap_index ); - return msGetClass_String( layer, color, pixel_value ); + return msGetClass_String( layer, color, pixel_value, -1 ); } /************************************************************************/ @@ -190,6 +205,13 @@ int msGetClass(layerObj *layer, colorObj *color, int colormap_index) /************************************************************************/ int msGetClass_FloatRGB(layerObj *layer, float fValue, int red, int green, int blue ) +{ + return msGetClass_FloatRGB_WithFirstClassToTry( + layer, fValue, red, green, blue, -1); +} + + +int msGetClass_FloatRGB_WithFirstClassToTry(layerObj *layer, float fValue, int red, int green, int blue, int firstClassToTry ) { char pixel_value[100]; colorObj color; @@ -200,7 +222,7 @@ int msGetClass_FloatRGB(layerObj *layer, float fValue, int red, int green, int b snprintf( pixel_value, sizeof(pixel_value), "%18g", fValue ); - return msGetClass_String( layer, &color, pixel_value ); + return msGetClass_String( layer, &color, pixel_value, firstClassToTry ); } #if defined(USE_GDAL) diff --git a/mapserver.h b/mapserver.h index 905dec92a1..32182fa0a4 100644 --- a/mapserver.h +++ b/mapserver.h @@ -2589,6 +2589,7 @@ void msPopulateTextSymbolForLabelAndString(textSymbolObj *ts, labelObj *l, char MS_DLL_EXPORT int msGetClass(layerObj *layer, colorObj *color, int colormap_index); MS_DLL_EXPORT int msGetClass_FloatRGB(layerObj *layer, float fValue, int red, int green, int blue ); + int msGetClass_FloatRGB_WithFirstClassToTry(layerObj *layer, float fValue, int red, int green, int blue, int firstClassToTry ); /* in mapdrawgdal.c */ MS_DLL_EXPORT int msDrawRasterLayerGDAL(mapObj *map, layerObj *layer, imageObj *image, rasterBufferObj *rb, void *hDSVoid ); From 93e3eb28b49b508dd610af2fde118f04e2177f13 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 5 Jan 2017 18:10:01 +0100 Subject: [PATCH 113/221] mend --- mapdrawgdal.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mapdrawgdal.c b/mapdrawgdal.c index b76928a98c..72836c9238 100644 --- a/mapdrawgdal.c +++ b/mapdrawgdal.c @@ -1891,6 +1891,9 @@ msDrawRasterLayerGDAL_16BitClassification( dfOriginalValue = (i+0.5) / dfScaleRatio + dfScaleMin; + /* The creation of buckets takes a significant time when they are many, and many classes + as well. When iterating over buckets, a faster strategy is to reuse first the last used + class index. */ c = msGetClass_FloatRGB_WithFirstClassToTry(layer, (float) dfOriginalValue, -1, -1, -1, lastC); lastC = c; if( c != -1 ) { From 60fd6deb237f3e5f246c4f34a9832f140bdc6e7e Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 9 Jan 2017 15:20:00 +0100 Subject: [PATCH 114/221] For GPKG datasources with Spatialite support, translate mapserver expressions to SQL --- mapogr.cpp | 126 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 105 insertions(+), 21 deletions(-) diff --git a/mapogr.cpp b/mapogr.cpp index 7ca5090f7f..7012f66766 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -504,6 +504,9 @@ int msOGRGeometryToShape(OGRGeometryH hGeometry, shapeObj *psShape, // Special field index codes for handling text string and angle coming from // OGR style strings. + +#define MSOGR_FID_INDEX -99 + #define MSOGR_LABELNUMITEMS 21 #define MSOGR_LABELFONTNAMENAME "OGR:LabelFont" #define MSOGR_LABELFONTNAMEINDEX -100 @@ -602,6 +605,9 @@ static char **msOGRGetValues(layerObj *layer, OGRFeatureH hFeature) if (itemindexes[i] >= 0) { // Extract regular attributes values[i] = msStrdup(OGR_F_GetFieldAsString( hFeature, itemindexes[i])); + } else if (itemindexes[i] == MSOGR_FID_INDEX ) { + values[i] = msStrdup(CPLSPrintf(CPL_FRMT_GIB, + (GIntBig) OGR_F_GetFID(hFeature))); } else { // Handle special OGR attributes coming from StyleString if (!hStyleMgr) { @@ -1283,6 +1289,16 @@ msOGRFileOpen(layerObj *layer, const char *connection ) psInfo->last_record_index_read = -1; psInfo->dialect = NULL; + psInfo->pszSelect = NULL; + psInfo->pszSpatialFilterTableName = NULL; + psInfo->pszSpatialFilterGeometryColumn = NULL; + psInfo->pszMainTableName = NULL; + psInfo->pszRowId = NULL; + psInfo->bIsOKForSQLCompose = true; + psInfo->bPaging = false; + psInfo->bHasSpatialIndex = false; + psInfo->pszTablePrefix = NULL; + // GDAL 1.x API OGRSFDriverH dr = OGR_DS_GetDriver(hDS); const char *name = OGR_Dr_GetName(dr); @@ -1321,18 +1337,60 @@ msOGRFileOpen(layerObj *layer, const char *connection ) psInfo->dialect = "PostgreSQL"; // todo: PostgreSQL not yet tested - } // todo: other dialects, for example OGR SQL + } else if (strcmp(name, "GPKG") == 0 && nLayerIndex >= 0 && + atoi(GDALVersionInfo("VERSION_NUM")) >= 2000000) { + bool has_rtree = false; + const char* test_rtree = + CPLSPrintf("SELECT 1 FROM sqlite_master WHERE name = 'rtree_%s_%s'", + OGR_L_GetName(hLayer), OGR_L_GetGeometryColumn(hLayer)); + OGRLayerH l = OGR_DS_ExecuteSQL(hDS, test_rtree, NULL, NULL); + if( l ) + { + if( OGR_L_GetFeatureCount(l, TRUE) == 1 ) + { + has_rtree = true; + } + OGR_DS_ReleaseResultSet(hDS, l); + } + if( has_rtree ) + { + bool have_gpkg_spatialite = false; - psInfo->pszSelect = NULL; - psInfo->pszSpatialFilterTableName = NULL; - psInfo->pszSpatialFilterGeometryColumn = NULL; - psInfo->pszMainTableName = NULL; - psInfo->pszRowId = NULL; - psInfo->bIsOKForSQLCompose = true; - psInfo->bPaging = false; - psInfo->bHasSpatialIndex = false; - psInfo->pszTablePrefix = NULL; + CPLPushErrorHandler(CPLQuietErrorHandler); + + // test for Spatialite >= 4.3 support in driver + const char *test_spatialite = "SELECT spatialite_version()"; + l = OGR_DS_ExecuteSQL(hDS, test_spatialite, NULL, NULL); + if (l) { + OGRFeatureH hFeat = OGR_L_GetNextFeature(l); + if( hFeat ) + { + const char* pszVersion = OGR_F_GetFieldAsString(hFeat, 0); + have_gpkg_spatialite = atof(pszVersion) >= 4.3; + OGR_F_Destroy(hFeat); + } + OGR_DS_ReleaseResultSet(hDS, l); + } + CPLPopErrorHandler(); + + if( have_gpkg_spatialite ) + { + psInfo->pszMainTableName = msStrdup( OGR_L_GetName(hLayer) ); + psInfo->pszSpatialFilterTableName = msStrdup( OGR_L_GetName(hLayer) ); + psInfo->pszSpatialFilterGeometryColumn = msStrdup( OGR_L_GetGeometryColumn(hLayer) ); + psInfo->dialect = "GPKG"; + psInfo->bPaging = true; + psInfo->bHasSpatialIndex = true; + } + else + msDebug("msOGRFileOpen: Spatialite support in GPKG not enabled\n"); + } + else + { + msDebug("msOGRFileOpen: RTree index not available\n"); + } + } if( psInfo->dialect != NULL && EQUAL(psInfo->dialect, "Spatialite") ) msOGRFileOpenSpatialite(layer, pszLayerDef, psInfo); @@ -1806,7 +1864,7 @@ char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node) { char wild_any = '%'; char wild_one = '_'; - if (EQUAL(info->dialect, "Spatialite")) { + if (EQUAL(info->dialect, "Spatialite") || EQUAL(info->dialect, "GPKG")) { if (case_sensitive) { op = "GLOB"; wild_any = '*'; @@ -1926,7 +1984,7 @@ char *msOGRGetToken(layerObj* layer, tokenListNodeObjPtr *node) { else { const char *SQLtype = "float(16)"; - if (EQUAL(info->dialect, "Spatialite")) + if (EQUAL(info->dialect, "Spatialite") || EQUAL(info->dialect, "GPKG")) SQLtype = "REAL"; else if (EQUAL(info->dialect, "PostgreSQL")) SQLtype = "double precision"; @@ -2205,17 +2263,19 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps } psInfo->rect = rect; - bool bSpatialiteAddOrderByFID = false; + bool bSpatialiteOrGPKGAddOrderByFID = false; - if( psInfo->dialect && EQUAL(psInfo->dialect, "Spatialite") && - psInfo->pszMainTableName != NULL && psInfo->bHasSpatialIndex && + if( psInfo->dialect && psInfo->pszMainTableName != NULL && + ( (EQUAL(psInfo->dialect, "Spatialite") && psInfo->bHasSpatialIndex) + || EQUAL(psInfo->dialect, "GPKG") ) && bIsValidRect ) { select = msStringConcatenate(select, " JOIN "); char szSpatialIndexName[256]; snprintf( szSpatialIndexName, sizeof(szSpatialIndexName), - "idx_%s_%s", + "%s_%s_%s", + EQUAL(psInfo->dialect, "Spatialite") ? "idx" : "rtree", psInfo->pszSpatialFilterTableName, psInfo->pszSpatialFilterGeometryColumn ); char* pszEscapedSpatialIndexName = msLayerEscapePropertyName( @@ -2240,20 +2300,35 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps } else select = msStringConcatenate(select, "ROWID"); - select = msStringConcatenate(select, " = ms_spat_idx.pkid AND "); + if( EQUAL(psInfo->dialect, "Spatialite") ) + select = msStringConcatenate(select, " = ms_spat_idx.pkid AND "); + else + select = msStringConcatenate(select, " = ms_spat_idx.id AND "); char szCond[256]; - snprintf(szCond, sizeof(szCond), + if( EQUAL(psInfo->dialect, "Spatialite") ) + { + snprintf(szCond, sizeof(szCond), "ms_spat_idx.xmin <= %.15g AND ms_spat_idx.xmax >= %.15g AND " "ms_spat_idx.ymin <= %.15g AND ms_spat_idx.ymax >= %.15g", rect.maxx, rect.minx, rect.maxy, rect.miny); + } + else + { + snprintf(szCond, sizeof(szCond), + "ms_spat_idx.minx <= %.15g AND ms_spat_idx.maxx >= %.15g AND " + "ms_spat_idx.miny <= %.15g AND ms_spat_idx.maxy >= %.15g", + rect.maxx, rect.minx, rect.maxy, rect.miny); + } select = msStringConcatenate(select, szCond); - bSpatialiteAddOrderByFID = true; + bSpatialiteOrGPKGAddOrderByFID = true; } if (psInfo->dialect) { - if (EQUAL(psInfo->dialect, "Spatialite") || EQUAL(psInfo->dialect, "PostgreSQL")) { + if (EQUAL(psInfo->dialect, "Spatialite") || + EQUAL(psInfo->dialect, "GPKG") || + EQUAL(psInfo->dialect, "PostgreSQL")) { const char *sql = layer->filter.native_string; if (sql && *sql != '\0') { if (filter) filter = msStringConcatenate(filter, "AND "); @@ -2318,7 +2393,7 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps } } - if( bSpatialiteAddOrderByFID ) + if( bSpatialiteOrGPKGAddOrderByFID ) { if( sort == NULL ) sort = msStringConcatenate(NULL, " ORDER BY "); @@ -3577,7 +3652,16 @@ static int msOGRLayerInitItemInfo(layerObj *layer) itemindexes[i] = MSOGR_SYMBOLPARAMINDEX + atoi(layer->items[i] + MSOGR_SYMBOLPARAMNAMELEN); else + { itemindexes[i] = OGR_FD_GetFieldIndex( hDefn, layer->items[i] ); + if( itemindexes[i] == -1 ) + { + if( EQUAL( layer->items[i], OGR_L_GetFIDColumn( psInfo->hLayer ) ) ) + { + itemindexes[i] = MSOGR_FID_INDEX; + } + } + } if(itemindexes[i] == -1) { msSetError(MS_OGRERR, "Invalid Field name: %s", From 1c059c35f750b3c6644719d27fa0bd95ae6e5762 Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Fri, 13 Jan 2017 10:41:36 -0400 Subject: [PATCH 115/221] prevent path/connection details returned if path too long, patch from EvenR (fixes #5368) --- mapstring.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mapstring.c b/mapstring.c index 122f4cd0f3..24d8c31410 100644 --- a/mapstring.c +++ b/mapstring.c @@ -728,8 +728,9 @@ char *msBuildPath(char *pszReturnPath, const char *abs_path, const char *path) abslen = strlen(abs_path); if((pathlen + abslen + 2) > MS_MAXPATHLEN) { - msSetError(MS_IOERR, "(%s%s): path is too long", "msBuildPath()", - abs_path, path); + msSetError(MS_IOERR, "Path is too long. Check server logs.", + "msBuildPath()"); + msDebug("msBuildPath(): (%s%s): path is too long.\n", abs_path, path); return NULL; } From e52a436c0e1c5e9f7ef13428dba83194a800f4df Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Mon, 16 Jan 2017 11:42:59 -0400 Subject: [PATCH 116/221] security fix (patch by EvenR) --- mapogcfilter.c | 2 ++ mapogcfiltercommon.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/mapogcfilter.c b/mapogcfilter.c index 03c26d67bb..7da559a15e 100644 --- a/mapogcfilter.c +++ b/mapogcfilter.c @@ -3004,6 +3004,8 @@ char *FLTGetIsLikeComparisonExpression(FilterEncodingNode *psFilterNode) pszValue = psFilterNode->psRightNode->pszValue; nLength = strlen(pszValue); + if( 1 + 2 * nLength + 1 + 1 >= sizeof(szTmp) ) + return NULL; iTmp =0; if (nLength > 0 && pszValue[0] != pszWild[0] && diff --git a/mapogcfiltercommon.c b/mapogcfiltercommon.c index 74bcb5f0a5..600ab09248 100644 --- a/mapogcfiltercommon.c +++ b/mapogcfiltercommon.c @@ -88,6 +88,8 @@ char *FLTGetIsLikeComparisonCommonExpression(FilterEncodingNode *psFilterNode) pszValue = psFilterNode->psRightNode->pszValue; nLength = strlen(pszValue); + if( 1 + 2 * nLength + 1 + 1 >= sizeof(szTmp) ) + return NULL; iTmp =0; if (nLength > 0 && pszValue[0] != pszWild[0] && pszValue[0] != pszSingle[0] && pszValue[0] != pszEscape[0]) { From b4bc015a9fcbb9a42d1922733a03a76311f622b6 Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Mon, 16 Jan 2017 12:02:20 -0400 Subject: [PATCH 117/221] update for 7.0.4 release --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0e1b8fde38..3e7304ef42 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ include(CheckCSourceCompiles) set (MapServer_VERSION_MAJOR 7) set (MapServer_VERSION_MINOR 0) -set (MapServer_VERSION_REVISION 3) +set (MapServer_VERSION_REVISION 4) set (MapServer_VERSION_SUFFIX "") set(TARGET_VERSION_MAJOR ${MapServer_VERSION_MAJOR}) From 8fd1c73d75cd66caa2a04a2da5a7d0390b4b9dd6 Mon Sep 17 00:00:00 2001 From: Bas Couwenberg Date: Mon, 16 Jan 2017 22:39:53 +0100 Subject: [PATCH 118/221] Use include paths from php-config when include path not found. Fixes build failure with PHP 5 PPA packages. --- cmake/FindPHP5.cmake | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cmake/FindPHP5.cmake b/cmake/FindPHP5.cmake index 92261b87e3..4b77f44e72 100644 --- a/cmake/FindPHP5.cmake +++ b/cmake/FindPHP5.cmake @@ -86,6 +86,10 @@ IF(PHP5_CONFIG_EXECUTABLE) MESSAGE(STATUS ${PHP5_MAIN_INCLUDE_DIR}) + IF(NOT PHP5_INCLUDE_PATH) + set(PHP5_INCLUDE_PATH ${PHP5_INCLUDES}) + ENDIF(NOT PHP5_INCLUDE_PATH) + IF(PHP5_VERSION LESS 5) MESSAGE(FATAL_ERROR "PHP version is not 5 or later") ENDIF(PHP5_VERSION LESS 5) From 10fe3d78c3f3a3e2cbc64ede7c091a60f11a4e22 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 17 Jan 2017 10:20:25 +0100 Subject: [PATCH 119/221] Add msIO_getAndStripStdoutBufferMimeHeaders to deal with all MIME headers. Currently if one wants to use mapscript, one cannot easily strip off all MIME headers, which can be an issue if setting the "ows_http_max_age" metadata, which emits a Cache-Control MIME header in WMS output. --- mapio.c | 120 +++++++++++++++++++++++++++++ mapio.h | 4 +- mapscript/python/pymodule.i | 40 ++++++++++ mapscript/swiginc/msio.i | 5 ++ msautotest/mspython/test_mapio.map | 35 +++++++++ msautotest/mspython/test_mapio.py | 92 ++++++++++++++++++++++ 6 files changed, 295 insertions(+), 1 deletion(-) create mode 100644 msautotest/mspython/test_mapio.map create mode 100755 msautotest/mspython/test_mapio.py diff --git a/mapio.c b/mapio.c index 7077e8d034..10bbe49df8 100644 --- a/mapio.c +++ b/mapio.c @@ -757,6 +757,126 @@ void msIO_installStdinFromBuffer() &group->stderr_context ); } +/************************************************************************/ +/* msIO_getAndStripStdoutBufferMimeHeaders() */ +/* */ +/************************************************************************/ + +hashTableObj* msIO_getAndStripStdoutBufferMimeHeaders() +{ + /* -------------------------------------------------------------------- */ + /* Find stdout buffer. */ + /* -------------------------------------------------------------------- */ + msIOContext *ctx = msIO_getHandler( (FILE *) "stdout" ); + msIOBuffer *buf; + int start_of_mime_header, current_pos; + hashTableObj* hashTable; + + if( ctx == NULL || ctx->write_channel == MS_FALSE + || strcmp(ctx->label,"buffer") != 0 ) { + msSetError( MS_MISCERR, "Can't identify msIO buffer.", + "msIO_getAndStripStdoutBufferMimeHeaders" ); + return NULL; + } + + buf = (msIOBuffer *) ctx->cbData; + + hashTable = msCreateHashTable(); + + /* -------------------------------------------------------------------- */ + /* Loop over all headers. */ + /* -------------------------------------------------------------------- */ + current_pos = 0; + while( TRUE ) { + int pos_of_column = -1; + char* key, *value; + + start_of_mime_header = current_pos; + while( current_pos < buf->data_offset ) + { + if( buf->data[current_pos] == '\r' ) + { + if( current_pos + 1 == buf->data_offset || + buf->data[current_pos + 1] != '\n' ) + { + pos_of_column = -1; + break; + } + break; + } + if( buf->data[current_pos] == ':' ) + { + pos_of_column = current_pos; + if( current_pos + 1 == buf->data_offset || + buf->data[current_pos + 1] != ' ' ) + { + pos_of_column = -1; + break; + } + } + current_pos++; + } + + if( pos_of_column < 0 || current_pos == buf->data_offset ) { + msSetError( MS_MISCERR, "Corrupt mime headers.", + "msIO_getAndStripStdoutBufferMimeHeaders" ); + msFreeHashTable(hashTable); + return NULL; + } + + key = (char*) malloc( pos_of_column - start_of_mime_header + 1 ); + memcpy( key, buf->data+start_of_mime_header, pos_of_column - start_of_mime_header); + key[pos_of_column - start_of_mime_header] = '\0'; + + value = (char*) malloc( current_pos - (pos_of_column+2) + 1 ); + memcpy( value, buf->data+pos_of_column+2, current_pos - (pos_of_column+2)); + value[current_pos - (pos_of_column+2)] = '\0'; + + msInsertHashTable( hashTable, key, value ); + + msFree( key ); + msFree( value ); + + /* -------------------------------------------------------------------- */ + /* Go to next line. */ + /* -------------------------------------------------------------------- */ + current_pos += 2; + if( current_pos == buf->data_offset ) + { + msSetError( MS_MISCERR, "Corrupt mime headers.", + "msIO_getAndStripStdoutBufferMimeHeaders" ); + msFreeHashTable(hashTable); + return NULL; + } + + /* If next line is a '\r', this is the end of mime headers. */ + if( buf->data[current_pos] == '\r' ) + { + current_pos ++; + if( current_pos == buf->data_offset || + buf->data[current_pos] != '\n' ) + { + msSetError( MS_MISCERR, "Corrupt mime headers.", + "msIO_getAndStripStdoutBufferMimeHeaders" ); + msFreeHashTable(hashTable); + return NULL; + } + current_pos ++; + break; + } + } + + /* -------------------------------------------------------------------- */ + /* Move data to front of buffer, and reset length. */ + /* -------------------------------------------------------------------- */ + memmove( buf->data, buf->data+current_pos, + buf->data_offset - current_pos ); + buf->data[buf->data_offset - current_pos] = '\0'; + buf->data_offset -= current_pos; + + return hashTable; +} + /************************************************************************/ /* msIO_stripStdoutBufferContentType() */ /* */ diff --git a/mapio.h b/mapio.h index f339839d61..cc676be870 100644 --- a/mapio.h +++ b/mapio.h @@ -37,6 +37,7 @@ */ #include +#include "maphash.h" #ifdef __cplusplus extern "C" { @@ -105,7 +106,8 @@ extern "C" { void MS_DLL_EXPORT msIO_Cleanup(void); char MS_DLL_EXPORT *msIO_stripStdoutBufferContentType(void); void MS_DLL_EXPORT msIO_stripStdoutBufferContentHeaders(void); - + hashTableObj MS_DLL_EXPORT *msIO_getAndStripStdoutBufferMimeHeaders(void); + msIOContext *msIO_pushStdoutToBufferAndGetOldContext(void); void msIO_restoreOldStdoutContext(msIOContext *context_to_restore); diff --git a/mapscript/python/pymodule.i b/mapscript/python/pymodule.i index 08b7a6dd9c..76b68ee65f 100644 --- a/mapscript/python/pymodule.i +++ b/mapscript/python/pymodule.i @@ -102,6 +102,46 @@ CreateTupleFromDoubleArray( double *first, unsigned int size ) { $result = t_output_helper($result,r); } + +/* + * Typemap hashTableObj* -> dict + */ +%typemap(out) hashTableObj* +{ + /* %typemap(out) hashTableObj* */ + const char* key; + hashTableObj *hashTable = $1; + $result = PyDict_New(); + key = msFirstKeyFromHashTable(hashTable); + while( key ) + { + const char* val = msLookupHashTable(hashTable, key); + if( val ) + { +#if PY_VERSION_HEX >= 0x03000000 + PyObject *py_key = PyUnicode_FromString(key); + PyObject *py_val = PyUnicode_FromString(val); +#else + PyObject *py_key = PyString_FromString(key); + PyObject *py_val = PyString_FromString(val); +#endif + + PyDict_SetItem($result, py_key, py_val ); + Py_DECREF(py_key); + Py_DECREF(py_val); + } + key = msNextKeyFromHashTable(hashTable, key); + } +} + +%typemap(freearg) hashTableObj* +{ + /* %typemap(freearg) hashTableObj* */ + msFreeHashTable( $1 ); +} + + + /************************************************************************** * MapServer Errors and Python Exceptions ************************************************************************** diff --git a/mapscript/swiginc/msio.i b/mapscript/swiginc/msio.i index 45fe745fb5..3cee64de94 100644 --- a/mapscript/swiginc/msio.i +++ b/mapscript/swiginc/msio.i @@ -45,6 +45,11 @@ void msIO_stripStdoutBufferContentHeaders(void); const char *msIO_getStdoutBufferString(void); gdBuffer msIO_getStdoutBufferBytes(void); +#ifdef SWIGPYTHON +%newobject msIO_getAndStripStdoutBufferMimeHeaders; +hashTableObj* msIO_getAndStripStdoutBufferMimeHeaders(void); +#endif + %{ const char *msIO_getStdoutBufferString() { diff --git a/msautotest/mspython/test_mapio.map b/msautotest/mspython/test_mapio.map new file mode 100644 index 0000000000..d25adb98e4 --- /dev/null +++ b/msautotest/mspython/test_mapio.map @@ -0,0 +1,35 @@ +# REQUIRES: INPUT=GDAL OUTPUT=PNG SUPPORTS=WMS +# +MAP +NAME TEST +STATUS ON +SIZE 80 40 +EXTENT -180 -90 180 90 + +PROJECTION + "init=epsg:4326" +END + +OUTPUTFORMAT + NAME png24_t + DRIVER "GDAL/PNG" + IMAGEMODE RGBA +END + +WEB + METADATA + "ows_enable_request" "*" + "wms_srs" "EPSG:4326" + "ows_http_max_age" "86400" + END +END + +LAYER + NAME grey + TYPE raster + STATUS default + DATA ../gdal/data/grey.tif +END + + +END # of map file diff --git a/msautotest/mspython/test_mapio.py b/msautotest/mspython/test_mapio.py new file mode 100755 index 0000000000..ed26b663aa --- /dev/null +++ b/msautotest/mspython/test_mapio.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +############################################################################### +# $Id$ +# +# Project: MapServer +# Purpose: Regression test for mapio +# Author: Even Rouault +# +############################################################################### +# Copyright (c) 2017, Even Rouault, +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +############################################################################### + +import sys +import string + +sys.path.append( '../pymod' ) +import pmstestlib + +import mapscript +import os + +############################################################################### +# + +def test_msIO_getAndStripStdoutBufferMimeHeaders(): + + if string.find(mapscript.msGetVersion(),'INPUT=GDAL') == -1: + return 'skip' + if string.find(mapscript.msGetVersion(),'SUPPORTS=WMS') == -1: + return 'skip' + + map = mapscript.mapObj('test_mapio.map') + request = mapscript.OWSRequest() + mapscript.msIO_installStdoutToBuffer() + request.loadParamsFromURL('service=WMS&version=1.1.1&request=GetMap&layers=grey&srs=EPSG:4326&bbox=-180,-90,180,90&format=image/png&width=80&height=40') + status = map.OWSDispatch(request) + if status != 0: + pmstestlib.post_reason( 'wrong OWSDispatch status' ) + return 'fail' + headers = mapscript.msIO_getAndStripStdoutBufferMimeHeaders() + if headers is None: + pmstestlib.post_reason( 'headers is None' ) + return 'fail' + if 'Content-Type' not in headers or headers['Content-Type'] != 'image/png': + pmstestlib.post_reason( 'wrong Content-Type' ) + print(headers) + return 'fail' + if 'Cache-Control' not in headers or headers['Cache-Control'] != 'max-age=86400': + pmstestlib.post_reason( 'wrong Cache-Control' ) + print(headers) + return 'fail' + + result = mapscript.msIO_getStdoutBufferBytes() + if result is None or result[1:4] != 'PNG': + pmstestlib.post_reason( 'wrong data' ) + return 'fail' + + return 'success' + +test_list = [ + test_msIO_getAndStripStdoutBufferMimeHeaders, + None ] + +if __name__ == '__main__': + + pmstestlib.setup_run( 'test_mapio' ) + + pmstestlib.run_tests( test_list ) + + pmstestlib.summarize() + + mapscript.msCleanup() + From bbe23e8c0b9cce174dc3ff313e3e5d3560c1e62b Mon Sep 17 00:00:00 2001 From: Pierre Mauduit Date: Tue, 17 Jan 2017 10:26:03 +0100 Subject: [PATCH 120/221] oracle - fixing memory handling error If the memory area pointed by table_name is too small, it is resized multiplying its size by 2. But if this occurs, the tgt variable used in the "for" loop continues to point on a memory area which might have become invalid (because the realloc could have moved the memory somewhere else, depending on how the OS manages the memory). To fix this, in my understanding, the tgt pointer should be readjusted to the new location pointed by table_name. Running valgrind without my patch (sources based on the 7.0.1 version, but the maporaclespatial.c is identical to master): ==1908== Invalid write of size 1 ==1908== at 0x4E81FEF: msSplitData (in /usr/lib/x86_64-linux-gnu/libmapserver.so.7.0.1) Tests: runtime tested in a docker composition Note: valgrinds continues to indicate some errors related to this msSplitData() method: ==1945== 32,000 bytes in 1 blocks are definitely lost in loss record 264 of 268 ==1945== at 0x4C2AF2E: realloc (vg_replace_malloc.c:692) ==1945== by 0x4EBDF4B: msSplitData (maporaclespatial.c:404) ==1945== by 0x4EC90E0: msOracleSpatialLayerTranslateFilter (maporaclespatial.c:3499) I wonder if in the context of msOracleSpatialLayerTranslateFilter(), the pointers are still valid when they are actually freed at the end of the method. --- maporaclespatial.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/maporaclespatial.c b/maporaclespatial.c index afc679c516..b43c1c087e 100644 --- a/maporaclespatial.c +++ b/maporaclespatial.c @@ -399,8 +399,10 @@ static int msSplitData( char *data, char **geometry_column_name, char **table_na break; /* stop on spaces */ /* double the size of the table_name array if necessary */ if (i == table_name_size) { + size_t tgt_offset = tgt - *table_name; table_name_size *= 2; *table_name = (char *) realloc(*table_name,sizeof(char *) * table_name_size); + tgt = *table_name + tgt_offset; } *tgt = *src; } From 026847b1c962cdd666d28cfbe38ac40fff54ffbb Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 17 Jan 2017 15:46:08 +0100 Subject: [PATCH 121/221] msResampleGDALToMap(): fix issue that cause line pattern in image mosaic (#1715) --- mapresample.c | 12 + msautotest/gdal/expected/average_rgb.png | Bin 159 -> 158 bytes msautotest/gdal/expected/average_rgb_plug.png | Bin 159 -> 158 bytes msautotest/gdal/expected/wmsclient_3543.png | Bin 24426 -> 24825 bytes .../misc/expected/runtime_sub_test012.png | Bin 309 -> 309 bytes .../misc/expected/runtime_sub_test013.png | Bin 270 -> 272 bytes .../renderers/expected/average_rgb.cairo.png | Bin 159 -> 158 bytes msautotest/renderers/expected/average_rgb.pdf | Bin 1391 -> 1390 bytes msautotest/renderers/expected/average_rgb.png | Bin 159 -> 158 bytes msautotest/renderers/expected/average_rgb.svg | 2 +- .../expected/rgb_overlay_res.cairo.png | Bin 1488 -> 1427 bytes .../renderers/expected/rgb_overlay_res.pdf | Bin 5540 -> 5544 bytes .../renderers/expected/rgb_overlay_res.png | Bin 1488 -> 1427 bytes .../renderers/expected/rgb_overlay_res.svg | 2 +- .../expected/rgb_overlay_res_to8bit.cairo.png | Bin 1488 -> 1427 bytes .../expected/rgb_overlay_res_to8bit.pdf | Bin 5540 -> 5544 bytes .../expected/rgb_overlay_res_to8bit.png | Bin 1488 -> 1427 bytes .../expected/rgb_overlay_res_to8bit.svg | 2 +- .../rgb_overlay_res_to8bit_dithered.cairo.png | Bin 1488 -> 1427 bytes .../rgb_overlay_res_to8bit_dithered.pdf | Bin 5540 -> 5544 bytes .../rgb_overlay_res_to8bit_dithered.png | Bin 1488 -> 1427 bytes .../rgb_overlay_res_to8bit_dithered.svg | 2 +- .../expected/rgba_overlay_res.cairo.png | Bin 2348 -> 2289 bytes .../renderers/expected/rgba_overlay_res.pdf | Bin 5825 -> 5823 bytes .../renderers/expected/rgba_overlay_res.png | Bin 2348 -> 2289 bytes .../renderers/expected/rgba_overlay_res.svg | 2 +- .../renderers/expected/uvraster.cairo.png | Bin 52062 -> 51909 bytes msautotest/renderers/expected/uvraster.pdf | Bin 11397 -> 11469 bytes msautotest/renderers/expected/uvraster.png | Bin 51963 -> 51856 bytes msautotest/renderers/expected/uvraster.svg | 968 +++++++++--------- .../expected/uvraster_reproj.cairo.png | Bin 50500 -> 49966 bytes .../renderers/expected/uvraster_reproj.pdf | Bin 10623 -> 10653 bytes .../renderers/expected/uvraster_reproj.png | Bin 51182 -> 50636 bytes .../renderers/expected/uvraster_reproj.svg | 968 +++++++++--------- .../wxs/expected/wcs11_post_getcov_gdpng8.dat | Bin 954 -> 958 bytes .../expected/wcs11_post_getcov_grd_4326.dat | 2 +- .../expected/wcs11_post_getcov_grd_wgs84.dat | 2 +- .../wxs/expected/wcs_getcov_grd_11_4326.dat | 2 +- .../wxs/expected/wcs_getcov_grd_11_wgs84.dat | 2 +- .../wxs/expected/wcs_getcov_png8_11.dat | Bin 954 -> 958 bytes 40 files changed, 989 insertions(+), 977 deletions(-) diff --git a/mapresample.c b/mapresample.c index c1a98b2d25..e9ed74c8a5 100644 --- a/mapresample.c +++ b/mapresample.c @@ -1509,6 +1509,18 @@ int msResampleGDALToMap( mapObj *map, layerObj *layer, imageObj *image, adfSrcGeoTransform[4] *= (sDummyMap.cellsize / dfNominalCellSize); adfSrcGeoTransform[5] *= (sDummyMap.cellsize / dfNominalCellSize); + /* In the non-rotated case, make sure that the geotransform exactly */ + /* matches the sSrcExtent, even if that generates non-square pixels (#1715) */ + /* The rotated case should ideally be dealt with, but not for now... */ + if( adfSrcGeoTransform[2] == 0 && adfSrcGeoTransform[4] == 0 && + adfSrcGeoTransform[5] < 0 ) + { + adfSrcGeoTransform[1] = (sSrcExtent.maxx - sSrcExtent.minx) * + dfNominalCellSize / nLoadImgXSize; + adfSrcGeoTransform[5] = -(sSrcExtent.maxy - sSrcExtent.miny) * + dfNominalCellSize / nLoadImgYSize; + } + papszAlteredProcessing = CSLDuplicate( layer->processing ); papszAlteredProcessing = CSLSetNameValue( papszAlteredProcessing, "RAW_WINDOW", diff --git a/msautotest/gdal/expected/average_rgb.png b/msautotest/gdal/expected/average_rgb.png index b23e7d06cd1170bdf5298b8688a1491345550419..672997817f70554b57c1ccaea5c9c0ba4cc0a95e 100644 GIT binary patch delta 129 zcmV-{0Dk|U0iFSnBzk2@L_t&-m1E%g#y}7;sNI4h^;?W^1Q&!L2A?fZlyNOG|6V>2 zrC$k!3qlY>VLue*pMxsOKOG7egdm3LSq#&FD3hW5I8;%^;n3+|5g-Xc40~J%BZi0a jgb~9(M#6~UKM@E3+75Hi2 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

|B*uDpx~R39qbE<))z!2#)Yg_3 zx7U?EywUyjSkE8s4~%qG-5qT2ZLS1wHrJGZH7+T-c)8$0X-RQeSy^dmX-!Q{XItaL zv4QWuy#AN(?*91A?H|6r3Fy1~1NTSTM!RdPigSz3A1y6D55Bsivw3j%+UV$TLw{Xk zTVrcmQ+-QgRcmuuS9j&WQ2prjwrl;(jZHNtj-T1H`&i+HW*+P-6_}Zj%7%(x0|(te zgERnQG86O^uzM9euZMjs5)d&)52UDk@8wnrquTn)3_t z&R@tqcyND7N%7#|;PDf=b&VY*<$pCtPoAl%t?%vaE-x!yzixG7U1jcxBcFq<*3&uI z+5Y97+if+~!@XVQB?VxQ)>RjuKDqDc!JP%?k5v|5Xsjw}sIJI6liS(SeXZ{n1W^Rf zjUaqT;;E$5iMhxaqGhu@ghG`_>^pY%o3VRe6kRF1SahkSwY|6R+Q7g-SAS=FU3FP) zMKRdEU@@AiiU76Om-Mz)^>^3z_cr!*)pxd5bu^X_bvA!~qyJWK%Y)&rTfGhU2AjwF z8+%)>^tO~X)f9HMRi8R_sP9^Ddv{M~-#|%aZA~@37^V3IyWe}~y$vgm?0Nsxp^paCe?`&R{`T6>ZuWim`RMoGj{W$jPyg~S4}SQ=*mn;G0W1Kjz<4?u zFZXp+bhT8pG?n#sHTL$kwYD|X)>pN4w08A$w{^5v)l`>NlvmW$R)5sg7njzY&b_=a zd&9}oRbYDq{THk?i>blT@m>Rvkn$xF6#@J4U?s-&L%3?7s#vQc0simFV7if{?+<_e z``S0R{`KGgHhgWQzPje8KY#zHZ@>Qft1keG8ycINTiSZA4c@%-Y470Rxq^b-dq2KV zbn#Mg(TP(>3kvf9Pk%1XKLNH{dC{q+s)DjhXG)7s@7uX0KlgA&$wk1Q+nQ@ii!UBI zxVPX!ZvOc*yLN8dyLS(`fwr#By!?wh_k6tdgKckZes}xsk3ah4;Dw^%Gxly0r8MxXp*wZr5(=gQ4Fx*{#qqlybtzxLVrmeQHx2>$9@_cLk<@(Bt zH5CO-byu3}%YUwRHv!y%+wALZ0YU`)R&CXly4s3@{B!5>PF=cu5j>vHJALZ-fuj7} z!i#6}a*v%qd-T-tPY!*u15i=kv4XQlE?qc)jkUJ`005jxL_t(memS?|Qf_(C88EiN z?uM&vwWEEl0MLLs8Y^qd3d=9$oj-M`vZV0R#oQ~G&VE;wUn;v&2&l5`GML_)vI|uu zdG!^AZT02l#f1QKl~>A}YnoFN=j6;^;q9ThIr3RmSxa$Y&5mvRbm}l0Dxkl=zFuF? zxn6_g_4VBAH8@^h&%IuQoquDU(dZ>gX8t}-0S}W8HlTwdA$Bw00000NkvXX Hu0mjfeb`87 delta 24125 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 kO4O1 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 M07*qoM6N<$g0xVt8~^|S diff --git a/msautotest/misc/expected/runtime_sub_test012.png b/msautotest/misc/expected/runtime_sub_test012.png index 5a765a23c794b4f0e30a02c157f13541adf8e6af..6c815558db70237965b92e98bbdc165201ca4320 100644 GIT binary patch delta 256 zcmdnWw3TUsZT%nTC`Gol*;|}=mMzb0m3YJV&^hmTEAzRR4;z?Gpn{I*7XGF0R1->`afZiKNgAa+aK3q)Q(|uM z5z*;!ZHw$`Rum{RF6QRj@#xa&fXhw%Q`f5{l$?|UslBCL`ElW_r7S(`ZanPr)<1lt zre;MZBje)iZ6L)4>a6mw-iEHV6X;^!dfpglb7G{(T7koE^-+p#ch>=(?7kN0gK9q2XfYGU^U2*AUh+l{grR^bLbmnnaTzVNYr{hC8+Xxt) zd)O71UWSq$e5hyx0iz4|yW-NzP}hVHm9HjXbm<;fTzVNg%X#sk+NA`HuH4~@OE1IZ zTzsf`J^`a^x47cc%P=nqADYx8+p@|L59;mL#HE*EMFg!7!zMpkA%?xqv_cHWEop@q zF6q$@Rp?CVc02izBcBMg;>F$jKnmbkM zu1ze-W?in4E9+SyrUI2b+}-r=%ljAn`F0#^ TTaLYuV*mnAS3j3^P6K;Y@>=d#Wzp$Py-KykMK diff --git a/msautotest/renderers/expected/average_rgb.cairo.png b/msautotest/renderers/expected/average_rgb.cairo.png index b23e7d06cd1170bdf5298b8688a1491345550419..672997817f70554b57c1ccaea5c9c0ba4cc0a95e 100644 GIT binary patch delta 129 zcmV-{0Dk|U0iFSnBzk2@L_t&-m1E%g#y}7;sNI4h^;?W^1Q&!L2A?fZlyNOG|6V>2 zrC$k!3qlY>VLue*pMxsOKOG7egdm3LSq#&FD3hW5I8;%^;n3+|5g-Xc40~J%BZi0a jgb~9(M#6~UKM@E3+75Hio@?37vn7r_hMTqawhZkNZ2r6(oR>yEGZvWJB(cbOQ3w!2776zvB;`5U&nB^Ev zHit7SGcp=Yu4XCMG*mDE0fjsTE-=Huz|zPZUChwH)MT`Qiyns~tMCGi|1~N9_SOhk33G|JEYP$J z2q}|Uwd_%WMvOpH*)HdcX7=B58D$in9A^VcS9`TwlutYK!k#&ig@OH9@teu!%yNvT zo5Pru85xZySFx098YvinfI^-E7nosSU}2 zrC$k!3qlY>VLue*pMxsOKOG7egdm3LSq#&FD3hW5I8;%^;n3+|5g-Xc40~J%BZi0a jgb~9(M#6~UKM@E3+75Hi - + diff --git a/msautotest/renderers/expected/rgb_overlay_res.cairo.png b/msautotest/renderers/expected/rgb_overlay_res.cairo.png index 751ca484b27935ef78677ac29a322e9d2849de08..f067a7fef792b996fae1e7b9eb39e75fc36a7e2a 100644 GIT binary patch literal 1427 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 Th3RBJQ9lj~E>%@me>W}w5)FH< delta 1334 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 - + diff --git a/msautotest/renderers/expected/rgb_overlay_res_to8bit.cairo.png b/msautotest/renderers/expected/rgb_overlay_res_to8bit.cairo.png index 751ca484b27935ef78677ac29a322e9d2849de08..f067a7fef792b996fae1e7b9eb39e75fc36a7e2a 100644 GIT binary patch literal 1427 zcmbW1jZ@NR9Kb2^B{XfPoj2WOOBQRE<{5U0;(XZ(Q*@E(G)460nl!302WIH9Q#Z5R zVZOgydpS)}VL95;rFZN!$%t(Xz4XMEOd>RdM?dJiTu2?VEfMqKm>VT*aP@FuhHwR?*+``|*6 zn9P9pcaH>p&C^Hw8Sp}4WIm7mAm{d1*wqygTV-8ch!~;`-q z3e>k#I)S5 zpJcZn%v@^ge4@BN*x*@KprW-`x&_*E=-%T6lEfW8CzppWzS-@kJD4J>RAz9Fzb(%E zgt~RNvD^AZ(hC}yBj=4e?$em?`}Rv4u^PPCAt|TQ9{E_mmhnoIC(d&|U_Yo(^jn=+ z+KNf*-jhj!vrH8&SIm5Ic_}r+zg86DPcm5y3D~@hK)eKdTNpOfPT}v^P#2z_XHku0 zweVv*Ba6t5e`Z-6lIIs6xYP8HM~|Olb%|LVY@vzo^YAb;4-Yf)v9KU0Bt>+S5nfZo z7pIQuJ?YaGQLS={F=69+5h{&q%V7``7nTtarJ&}ty zuxXe6Si_%@&=q`4wT`%jm8PC?LJZbz0?s%iN_8Ye3C|fd!y(=l#2a?OufDHSQbB3Ds9Wz_HRyF1O(D-*&c6aaD zY<`w9t$tOwl@^*zcK(!X!RGPAH2qtNp`5}81m{S0oziO1QGGM*s;`*#(i7wWD=BvWJAn#VrR;W!GR`%`%5LbXtgexg zkCuHxQ`^qSw8^QD)fUFWf!bDC#=geC`cpM*ip`REBFCe=^w{i}o?3LQGcJMS+pHaL zT^aXZ?YVo@Q617^U6#OJA%Am{6L!Km>Pt@NWluXXZT8)WN%5T7@pDg2+s;QKZpy*t z*o|C|;{#gxVfQzOy*t0%R-CSO)>BWMbck8Hx-s}i1iRfx#IlV}lCf;6opypveTz-<7IWRaf5&j+ji-1>49FSr_B1z1`rO{5t96=A zD(H{9=hb*EU2n={r=XUHQDlLU7t2t?|0Ac2WUt&`5IPD#}yvlo5U;d) z=a(wPE??zr#n+m5qRJJwR8`=uUW#?V^YK%#d@;-m5d#gsoq0zk-7lgR9LfsuYyM2s zZq74B!VklxbNJEf;0EH0F9&0xdTbqyR0nS_8mVO&9QKSS7F-+ND&@zU{ZHuR!}YB% zm6q4tn|msekDq9be0!?xkgug1hQ;J#iRN<2Jj+!|h^Nd0TzddzSyBuEbAy3(1;FRI zD2-vk1YB1D=VpKgDR6liXp#eGM}cdFz$F84qXRgv0vgK@`R84s9H|W|WT>8iUalJk zImrRZ(rOsv1~-rwbRd610eKHJIX?*U`Y#}J9Fd$rc?HQ<`v}~M{$#7`uac4j*^NX_ zEh$eNxBLG+q%35Ic`JL%N+>JtOo8xruScb}yXW!3%IazrnXTGNg7cWlUXFq$EwCv}*VLPtnp-{ly?N!% zi-z~-`=0IXgKMcLLl2Q!*4O^avx<0`u(Ww9Ul=Y%2p&0fsnYJpjEfTzletp!Qi@B8 zQWJAQto)=bE<+;)0|gL6K|#UTz+!R;-;4VD@2Zo_Zl-xpQt}9jvZ#LXaJum<9=eJ6`uXW#lanGCA*Vo5=j``pf*Z)ihuc+1oS*gz( z5?*!L1Bq4l8xvm5iU$(Aj2#TF{!~|(@#+(^fY03uDUM}%|HSG!mhGCy)U@*UJ|K}7 z&v5X{-1&?LL%vT2Dt^o&;Pcgnk0p3-A5iH1VxZ7-4xo@N4@>Z0KA_P5W(Nb)2Mhu} zym$Cnf}6iF9=!5kFHk6jA1HK}mnHac8BplMT%b@=`^uuF`p=wu@8qqDdD;ClVDYw@ zTH(Kv>g}$)Si9`h)O|DfOTVi_8SmYpjQ{KqhUqig;HO^kXWFYWx*_J+e(HlVww(;w zc}e{9!g)6mASNf@Hws<%wMzxJ7`U279)|)_dX=+0izbb+%*>(n^WSPDxM2Vy~RLQd>sFJNGAWG8op{7`JLzTR%fhsXS z4^i^$JkXSSkV9FEp=uuHK-5H;oQ9|oI}bHR)flSeWeHS?*;$B^Y5q{hhz3KIJWYWr zF@*+AT-8O0+G{rXkT6=`V-E2_efWH+_UrQ*n^v072PT8B{=jr}>^LyZymfC($ohQP z!QksVU{rto#|$JM)&hx-wm{-#tb@VUQWF86TxnL8;M?v%U44Q;p<)XGpSMzMEWx|m zfkN{XfkNd5Kp|-smf+v)K%quP2ZPcL_5wb#uj<)Zg4=%s#U|PT#kQCO#a;sqJ6;VG z>XZWtZL${dsjXuN5|toUtu~M-<^~ew!a$-Pn3Vrk*aC?=oE*#Qc8URs-N2N6E{>BW zxIPY;cI#ugSc3n@0F&(hSPqup=ZzVExO6{gZ#l630@Hpc?#X9`q$VE_QegXFznO2R z`{egR@=RtXn+1eb7?~`MCYy;QGn!1EB~or{s9*pB3V8}#V1|K-g_$LWn5C&Xx|pef Th3RBJQ9lj~E>%@me>W}w5)FH< delta 1334 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 - + diff --git a/msautotest/renderers/expected/rgb_overlay_res_to8bit_dithered.cairo.png b/msautotest/renderers/expected/rgb_overlay_res_to8bit_dithered.cairo.png index 751ca484b27935ef78677ac29a322e9d2849de08..f067a7fef792b996fae1e7b9eb39e75fc36a7e2a 100644 GIT binary patch literal 1427 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 Th3RBJQ9lj~E>%@me>W}w5)FH< delta 1334 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 - + diff --git a/msautotest/renderers/expected/rgba_overlay_res.cairo.png b/msautotest/renderers/expected/rgba_overlay_res.cairo.png index 3b3d957a3b6f9e1ebccc5eb5388a53868e38f169..4b4723824e09ecf70313bfd25e9e5ac125240442 100644 GIT binary patch literal 2289 zcmb_eiC0s17S1?!j8GOSi|m9=0oeqGMGAt1oy0zYB0D5hfdc^p1QLjqMG6w5NeGBQ z4lT>Dg+-B;CDBHLfXEP5sgeo>L@_o6R1jhE-ZwtbFsFqWQ zIYG`Twk2cwioTY-JyN-@9T<5N6ihM8d4fm3SiFtG^v3rO?aJXgh_b0ChFVPJ&1T1lQbKMn8G!eRm@e? zHjM_+tnD5W9=dMX=PLT{P=dlt1~?k@VY89C){a)e{pvO!ex0WR1+^>d1~=N}H#Oe4 z*NvkOn~v1>FrDI8QrfWL31fdJvA4bgX$jK|KRK~E;1gFAIFU`A+}zZrr8d@lIy3X> zieA1$OJ@ZTkM9c(4g1Bjr#Fi}>2kEJ#BY=OE@znlN-LdY)0?<}QS1C&-?`a7w*>8r zHzo0BGdZ7daQ7d0rt^KFp~7&Bq}5h>N&M64-;5T4QZdDTrx+|gm0lpwHm?Jca9vn` zKaFdWpymRB{7wxltunphSJ%-6Og-@(Dp$pY8L5|<;w*3P+TSN}jQ0tF}pl%e@{LD@n0FlnTGZ~2$SZ6{yT2%Qt?Rfz}CR}Aq+*(GM zk#A$2yHhS0E}fC=AUiJ&SIzkCws9OmxEzzUqCb?G{D2*|?xH8rk~r$^QT)!5*-2E( zdh{|mih40mb`ng{`f-far4)HReL(%V$KW8EmcHO`sx$8 z;{!Bnil`qM>SRTD&+;VekViR7iZ9=GJEa)wZ=*2A6ud`A?WlsJW>m7#HN;r2{{2c}%t)6i?o2i@?+f!Ia^)LMqJ?c%$gTkyz z#F8_K&LGA1C_DahlqVQ$qjyq;?HlRf&Mu(>=s#l4(JOl*hn=hkc%2w}-J>BB^|mAV zXZ2gu*rlB;u4i#IN+~P3vv3JRuPvftIliFgjc0}?AJ>9_Km2JD97F#C?dZhgiElk3 z5%3z1kQK|aPVVJf$nmnnk{dUiQv_REX#Z=Bj^gQF-ln0`|FW*H8X7FGRvFC1p4d8i zZjp|1zQ4ua_`N;2&)ew>ixVrF69(eNs1@&H=V_@_O&T?IgwjYTIC%n-=EI6x5I?c6 zKU5f$b~Q~VJVfGqEqJZ5j#V8{W3E$HAH=kN)LB*jxxEtSuOR>WowdLuCB{)$u2ZDD z=j7uw)O)ed)Ky3!lP8ODnAoQ$Wj?nze{W) z1qs)853U;GUKJ3&spj}O>a?j-(n^jI(Z?*7vN6Pz5Q3}c=Z5llO)l=z=7hsv`$_|I zJ62M`&ASM}kb(B14lBTgKXRH%+qU>H6RLx@t>@2JeO8&^;33UTaQ@%K@_2LP@1-KA z`lwQ0rI(dPv!C*AcmZ4&D+w}r4R06GkJpb@i3`KQAvGuE?_-62(%P?P1NMC_W9fj? zm`o$ z*A6Wa{rmnE9f8k0a#2TfRdN}aB<`0Csx2GS7mvvn$TmRBwwpvsrD%u@rBdFA^!9xU z9d$)^1XAER=iM-iWTD0uwU>^hTDUye3#)-H$8%kS{e;B*p0sCCQUa&h{h1O|%vKHG z#&)fUMUP+dGTR4xZOhV(*=x{t3%hSf896~-(gMUsP zp*2k>KxRS{e&0g=^(^r~`!yc1z7l*|P}#RY!wK_+Wu%5Q_(F(Zx(-IG6{ZvA{x&-h zQ)L2`!WV#Nn+q~vvJ(pp!Y!AS!15#CKn0E5!LzpSptD4E2)+$KAp;6XG9L~haOTFK zwr-peXb7qhzE>7v?%#sa$fh83jujP5bMZ%jKV@hGDR8ZF14&)E(4$Yz zG63^F5j7x_0af`#mVy3>LqRFq>kWs&A+)ieuDEE(T#iJ7W%f9^AmJ{_5zL^VcMeCZ m{CXft@5G;9{9nw#9_(JQ{K$)dF9Rg6GB6(`%7g75o%p literal 2348 zcmbtW`#;nBAKw?><5K7-cPpV3ArBpPc3h5IHe-b0*r6kr9wVj>DPrL;NsP7Swv^_w zx#n`nWsx|;kz&>d7s!YH@yY5}FV*lmwt=34 z;%Et5q1yNTlz#RF#?N|r*_tmq+Np9&IKfTLx@z}P_%BCp-S^Zvm~S14V7m5u+a)Ip zgyQ`X`PRca5f#=se4&W%aC%tT=8X}CYW2)+&zO*Tla9y`dUp<7y0n6Q*_?LEFay@GWNu!a)1f-K z$>sa;c`?$pQt#3a^9K=kmMepkFn*hDI7SuIC4?Mi95>I;rN?)4;#WzX${I(6rh#$Q z?M-ow0bv-+X?)$S-@jh;>*;pdfY;24D$ZE5W~ipu%jLPNRy=ckA0zbEN9Y>2HdLdY`^id%<2vEcb?{D zw@?-{b_iY|v@l**0(X`>9~@Qx4yA4zgiuf7qIm6B#?K&UnPzQg9>)Tkk2hOUsPVx@ z(@9(eFY%OrsdQ)iwq6t;lE;Wp=3;ZZYd?!oXU@RNCkyl(mI=;UlROQ@uyQD4zi4sPJ%waNCCHycm&5~ z%v5te6&BE zG0LkmCFOFr^(>bhF1zOb?X$bc?`%91P7Gu zNHNDIes@92BJV`6i!K%3%}mzqniCE$FSNX+nU1+I9=#ZT8CVEhLhf*G-d>q#LU>+k$w5_CRW#L?k|y%ap!`Q`QyEyWjmwPKmckm! z?rrndE$jp1?FU%HG;yTnuk59?h>Hoqszi1TDUoBt+GD`CK2E1Mp(L@5ByFZYKUJrz zA55etWbeqm6=kg-)JQw2%LGL`e6p~}`}199qF!?}#{6`@#m(Tc?B zZsNJT(BL_MQ(k!64p|;s)o;rheAz|bsZYZ$;Kg)0fqIY-DwZ#z_Coyjq9ENB8W_-j41SJ=9DAryGHj4UrWs;~7b^<}7a+ zXPuPJcBt&B@~RjAuBF4FLfn_-}G#RLSg8whVql>oDe1EzrW!#Q_gBf0JcOrU}NfT0QydVslr${0Piqe zBp_*?15eg`1C08dxEF|^Z>Ir3`5YW)9DB*v1nzRW*8r7ie(tsU%Dr{BFWp-aM}`6HrsbC`#fQ&9R+ ze_irrYuGF8dOO}OT75TWedtx{t}Owk&=FcOydY91=8e40t&!MD{{=yi?r66rmtQjf E2kNSfh5!Hn diff --git a/msautotest/renderers/expected/rgba_overlay_res.pdf b/msautotest/renderers/expected/rgba_overlay_res.pdf index e0fb9808a29ea3894e8bb7fb22ca20dceb97fd3d..6f7ab98a057f28fc2cdaad552ea076693686823a 100644 GIT binary patch delta 1377 zcmZXQe^8Tk9LHHIBgUSYFt#Ipb%=MNz%yavM;je*44MgxQF?NVY`CtO43wFm@F2>S zvd!R$ixzO`a&B-)38by~VH}WkxQY!f+(5KYrZRrY4{`K;*!TL!@7?oyKKJ>2pV#}d z-3;#zZ=_+8oo zR-B3y;9C)NOL3dYu@i4ZxOhDh;9_r*&|#yL!t( zP>eeCi;3Vp_CP=A&{xUYM*fWJzQ}JnqSekny~J;_wW>$8f~Mzzsf;zHp8@$PK)mcN z`!@c`T>Go+Oa|tdBAe3`&f7!j;I%S5gqYLB*KF_X%X&+^s?z4&5r$Ywnze!YYWqsZ zm2iEP@$t^oPL7t3+2{7Ei?ss#d6jy#QDFa#s$RV$Xd3^jVOYzzH!0MsT7j&Gp?1HT zqB2_!`%{x@%y&(^7QV{-g^Ameq%!|eQ^sO{k|LZ6>)P)xTb^tD>)lh|$C^Jslz6#$ z`NINz)t)ngeY1V{gd?TfvW({=eLpigweXUjhLyX9F`W!J{MQDDN95$1tM@AVE>53_ z(ihTmb|H$9M^Jk5eQKDvk5QRyTRQ4Wwx4Fe92zgkr7HgCN2rpRHoH^}`+Zz9zfN?+ zi6LxhBHaD)8oYj^2*%7FgHG>BDA;iuaRu+y&|M}C7jDNs#D^mL0u;4>3`J8SD2mcS zku-fngjFUFYT!;99?SJR*&iiA)ATYl{agS|D-vj;^h1-c8m`1!%!U8O)BwC>O7L@S zd0;Ic&ML@o7HOj~MOdqq!W6aIs7#UE`Z9nGVTv49Po`*3p1abpB;Tww(By7P!-dvO zN<&5~NolwoLXyb-_UNfSkl>H%-tz+enq<(jYy~YI6V(lSy`(gBYyvGY23q4ZRL5D^ zqBN*V+$1uQyr*{5N-rF`zd_M|H;wfxo^Ud^wU*##)r5g8mQ*)s@Bt zp*p`iq<(YPF)+lkdurqJIUl?o5D!GoSZ`FPZU;7PxSPc8kb*BA27vWjWh{mNcm24< zI|8?R`?}Y;{W{-Vgj0N8BXQcoeL_hj7A~SoNGN`temr4!OfX8E;JjeZjRIw}qF?Oo Zj^ey!P08SU{s)c>iunKl delta 1374 zcmZXSdrVVT9LFgSah)xjylM+83P=KiWejL}j^KE$mO?=$3@DPAScLH^7!ZpiPB&hG zJKm!5u-wW9Sy<6jR=};7phAM&A*?be2pb>|fevB=>|8kid2{o*-~7(`ea`RR++OE? z=X(^1`gk}^_)(FDY?qmN^!wXqPB>JA*zJc31POU<2a0ESm4)6DU#AVkR{HHKdv-`n z>Z6C@`ZsSYIzLQgixVxCnTtvns|*5J09R-6f_S!uz#PE#uuP{&#|Z4Fej*JLP|0)& ziu556*NOyNV$F91stJ@4aA;dudUBdK`SM0S0b>GF#G&N`B*e*g_Q3%ufk?Z=AUy<7 zgKBP$Fb&aA>JbXn*r;Iq*Cu#y1I#-YoV2P@7=#L7+pgij~i0E>n3<7hfBJU&`RHbBv+=c zt*Tdb%Nv$Hz7%kIT8jg#6pCq7N5Ro{iM94o8C|Ts+k&N_6{0uk_=cmXHEkgqUm{CD z`0WiUGj)$VyT=x-d|n#0F;y1p(iHUI{$#{zFcEJQx3;r5i1$(!CY@6cSx=+UhZ#9L9rbC0b_Dblo0Dn%N zUUZ~MF4 zRy8H$d!pIqiKnPqObypYbVXq?Z&fq=Dt z_(7KWVA0QzCFLDCR3c+C4NGK5QjuQrV$F5XFVYio8F_Hfnjm!tbY1ob4KFQ0 z>7hOrmCx*}Rg5!OQWv=%78UF!{pH&Drm*xOsRWmn?XPIb?hLFT#V!{{vAdmzV$m diff --git a/msautotest/renderers/expected/rgba_overlay_res.png b/msautotest/renderers/expected/rgba_overlay_res.png index 3b3d957a3b6f9e1ebccc5eb5388a53868e38f169..4b4723824e09ecf70313bfd25e9e5ac125240442 100644 GIT binary patch literal 2289 zcmb_eiC0s17S1?!j8GOSi|m9=0oeqGMGAt1oy0zYB0D5hfdc^p1QLjqMG6w5NeGBQ z4lT>Dg+-B;CDBHLfXEP5sgeo>L@_o6R1jhE-ZwtbFsFqWQ zIYG`Twk2cwioTY-JyN-@9T<5N6ihM8d4fm3SiFtG^v3rO?aJXgh_b0ChFVPJ&1T1lQbKMn8G!eRm@e? zHjM_+tnD5W9=dMX=PLT{P=dlt1~?k@VY89C){a)e{pvO!ex0WR1+^>d1~=N}H#Oe4 z*NvkOn~v1>FrDI8QrfWL31fdJvA4bgX$jK|KRK~E;1gFAIFU`A+}zZrr8d@lIy3X> zieA1$OJ@ZTkM9c(4g1Bjr#Fi}>2kEJ#BY=OE@znlN-LdY)0?<}QS1C&-?`a7w*>8r zHzo0BGdZ7daQ7d0rt^KFp~7&Bq}5h>N&M64-;5T4QZdDTrx+|gm0lpwHm?Jca9vn` zKaFdWpymRB{7wxltunphSJ%-6Og-@(Dp$pY8L5|<;w*3P+TSN}jQ0tF}pl%e@{LD@n0FlnTGZ~2$SZ6{yT2%Qt?Rfz}CR}Aq+*(GM zk#A$2yHhS0E}fC=AUiJ&SIzkCws9OmxEzzUqCb?G{D2*|?xH8rk~r$^QT)!5*-2E( zdh{|mih40mb`ng{`f-far4)HReL(%V$KW8EmcHO`sx$8 z;{!Bnil`qM>SRTD&+;VekViR7iZ9=GJEa)wZ=*2A6ud`A?WlsJW>m7#HN;r2{{2c}%t)6i?o2i@?+f!Ia^)LMqJ?c%$gTkyz z#F8_K&LGA1C_DahlqVQ$qjyq;?HlRf&Mu(>=s#l4(JOl*hn=hkc%2w}-J>BB^|mAV zXZ2gu*rlB;u4i#IN+~P3vv3JRuPvftIliFgjc0}?AJ>9_Km2JD97F#C?dZhgiElk3 z5%3z1kQK|aPVVJf$nmnnk{dUiQv_REX#Z=Bj^gQF-ln0`|FW*H8X7FGRvFC1p4d8i zZjp|1zQ4ua_`N;2&)ew>ixVrF69(eNs1@&H=V_@_O&T?IgwjYTIC%n-=EI6x5I?c6 zKU5f$b~Q~VJVfGqEqJZ5j#V8{W3E$HAH=kN)LB*jxxEtSuOR>WowdLuCB{)$u2ZDD z=j7uw)O)ed)Ky3!lP8ODnAoQ$Wj?nze{W) z1qs)853U;GUKJ3&spj}O>a?j-(n^jI(Z?*7vN6Pz5Q3}c=Z5llO)l=z=7hsv`$_|I zJ62M`&ASM}kb(B14lBTgKXRH%+qU>H6RLx@t>@2JeO8&^;33UTaQ@%K@_2LP@1-KA z`lwQ0rI(dPv!C*AcmZ4&D+w}r4R06GkJpb@i3`KQAvGuE?_-62(%P?P1NMC_W9fj? zm`o$ z*A6Wa{rmnE9f8k0a#2TfRdN}aB<`0Csx2GS7mvvn$TmRBwwpvsrD%u@rBdFA^!9xU z9d$)^1XAER=iM-iWTD0uwU>^hTDUye3#)-H$8%kS{e;B*p0sCCQUa&h{h1O|%vKHG z#&)fUMUP+dGTR4xZOhV(*=x{t3%hSf896~-(gMUsP zp*2k>KxRS{e&0g=^(^r~`!yc1z7l*|P}#RY!wK_+Wu%5Q_(F(Zx(-IG6{ZvA{x&-h zQ)L2`!WV#Nn+q~vvJ(pp!Y!AS!15#CKn0E5!LzpSptD4E2)+$KAp;6XG9L~haOTFK zwr-peXb7qhzE>7v?%#sa$fh83jujP5bMZ%jKV@hGDR8ZF14&)E(4$Yz zG63^F5j7x_0af`#mVy3>LqRFq>kWs&A+)ieuDEE(T#iJ7W%f9^AmJ{_5zL^VcMeCZ m{CXft@5G;9{9nw#9_(JQ{K$)dF9Rg6GB6(`%7g75o%p literal 2348 zcmbtW`#;nBAKw?><5K7-cPpV3ArBpPc3h5IHe-b0*r6kr9wVj>DPrL;NsP7Swv^_w zx#n`nWsx|;kz&>d7s!YH@yY5}FV*lmwt=34 z;%Et5q1yNTlz#RF#?N|r*_tmq+Np9&IKfTLx@z}P_%BCp-S^Zvm~S14V7m5u+a)Ip zgyQ`X`PRca5f#=se4&W%aC%tT=8X}CYW2)+&zO*Tla9y`dUp<7y0n6Q*_?LEFay@GWNu!a)1f-K z$>sa;c`?$pQt#3a^9K=kmMepkFn*hDI7SuIC4?Mi95>I;rN?)4;#WzX${I(6rh#$Q z?M-ow0bv-+X?)$S-@jh;>*;pdfY;24D$ZE5W~ipu%jLPNRy=ckA0zbEN9Y>2HdLdY`^id%<2vEcb?{D zw@?-{b_iY|v@l**0(X`>9~@Qx4yA4zgiuf7qIm6B#?K&UnPzQg9>)Tkk2hOUsPVx@ z(@9(eFY%OrsdQ)iwq6t;lE;Wp=3;ZZYd?!oXU@RNCkyl(mI=;UlROQ@uyQD4zi4sPJ%waNCCHycm&5~ z%v5te6&BE zG0LkmCFOFr^(>bhF1zOb?X$bc?`%91P7Gu zNHNDIes@92BJV`6i!K%3%}mzqniCE$FSNX+nU1+I9=#ZT8CVEhLhf*G-d>q#LU>+k$w5_CRW#L?k|y%ap!`Q`QyEyWjmwPKmckm! z?rrndE$jp1?FU%HG;yTnuk59?h>Hoqszi1TDUoBt+GD`CK2E1Mp(L@5ByFZYKUJrz zA55etWbeqm6=kg-)JQw2%LGL`e6p~}`}199qF!?}#{6`@#m(Tc?B zZsNJT(BL_MQ(k!64p|;s)o;rheAz|bsZYZ$;Kg)0fqIY-DwZ#z_Coyjq9ENB8W_-j41SJ=9DAryGHj4UrWs;~7b^<}7a+ zXPuPJcBt&B@~RjAuBF4FLfn_-}G#RLSg8whVql>oDe1EzrW!#Q_gBf0JcOrU}NfT0QydVslr${0Piqe zBp_*?15eg`1C08dxEF|^Z>Ir3`5YW)9DB*v1nzRW*8r7ie(tsU%Dr{BFWp-aM}`6HrsbC`#fQ&9R+ ze_irrYuGF8dOO}OT75TWedtx{t}Owk&=FcOydY91=8e40t&!MD{{=yi?r66rmtQjf E2kNSfh5!Hn diff --git a/msautotest/renderers/expected/rgba_overlay_res.svg b/msautotest/renderers/expected/rgba_overlay_res.svg index dc852c6189..3c63832f9a 100644 --- a/msautotest/renderers/expected/rgba_overlay_res.svg +++ b/msautotest/renderers/expected/rgba_overlay_res.svg @@ -2,7 +2,7 @@ - + diff --git a/msautotest/renderers/expected/uvraster.cairo.png b/msautotest/renderers/expected/uvraster.cairo.png index f905fed8f9d4d8e7839db4dac9c171db103a27ba..5366bacd8c754504079a2ede6b372fbd33d190fe 100644 GIT binary patch literal 51909 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 literal 52062 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

cifIoJ-6mHgMz42Lyr%!*_1GM#zAmA-(Tt&^z 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 diff --git a/msautotest/renderers/expected/uvraster.pdf b/msautotest/renderers/expected/uvraster.pdf index b81a314a753eb2f6dd176f6a0df8b543dd3bec73..3406bc05715842e317887eceecc3bbff252d8c24 100644 GIT binary patch delta 10749 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

Ea%PDZ<8lIl37OBUh!9&np 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

cyi~8|H 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 diff --git a/msautotest/renderers/expected/uvraster.svg b/msautotest/renderers/expected/uvraster.svg index bb7a0ec928..5d8b0c91fa 100644 --- a/msautotest/renderers/expected/uvraster.svg +++ b/msautotest/renderers/expected/uvraster.svg @@ -2,532 +2,532 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/msautotest/renderers/expected/uvraster_reproj.cairo.png b/msautotest/renderers/expected/uvraster_reproj.cairo.png index cd7f01526676ea7919430f9870e437d66a4670ee..c676acb70d7139786ad8060b2698932f931eebed 100644 GIT binary patch literal 49966 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 literal 50500 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

`lBbh6FG@#d*es+bOJ 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 diff --git a/msautotest/renderers/expected/uvraster_reproj.pdf b/msautotest/renderers/expected/uvraster_reproj.pdf index 4db4f1f839fa4a43a9c381facd2fe048f7969017..5ff9147f90aa035171e834934c6bf38670da0624 100644 GIT binary patch delta 9920 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

<{;pUA8YpH}^;$>(@ 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 diff --git a/msautotest/renderers/expected/uvraster_reproj.png b/msautotest/renderers/expected/uvraster_reproj.png index a25f648e9ec37e301cb4a83d09de0ce90ad59530..7a622ca5327be4bd23b3e0947e7269b9689328c9 100644 GIT binary patch literal 50636 zcmc$_^M52!+w~jU6WhsTVoo%1$F}W>HL-0>Y}=SP6FceHwr!lA`+lB(;QgF)-XCjs z)voI9s@m6gt#ySf$cZB(;3I&6fgwvuh$?}BK?Z?=f#1PFfJRQ@ok1Iwx#FHtLiyUB(DZ`~5elA3OPdddITaoKs%{>aU^In|J}xm(h9de*t9ciR52akwTU3`Z7(CakpodRg@A zx|U>zl2UmIRq)@SWAAK3Nv3PM*R$!;lmmt^ixg-yE^4IvQ);og-lf7tq!xlI{cB>S zmg)LJ8SDV< z(Wozcd(6>w()T4&%(u8dS#EME|KF2MS8AIt8f9=wN@1S2Y@Vg_ zs^;NRflf6XJ^?J4DT&qbc44&)>#mcE#2y*f^(fPIDq+Sf0PP^r20EF3)^fA#>cjbp z>)CX(Q_0y%kG(u2O=Uz5CS?zP*-kfp)@@ObT2@boxK5)VkfMRJJ_aidPX+c1= z5*9Afbk-!n!ZiVg)MnQ~4d-N5Mfu~N*)nVEH6Vwqa}T54+iq@n=;-Mho590kRjvAu z@MuzeI!BQREFP~K6XjAD5dm>{IFLcxWJgp)9wX5A1E|GDb=3?1#bh#5)c1$achN(d zoZQTZ|E}JpVC(&$DM(ERX$S47MB}(;#l%Mp2q4cPN#?D#o7q{!6=qOfc??z zP|2cscG-toS4Wrle0$4yre*y_#Krn>d^!`v-mm_nI5MSfpS>yj_rHPr?~nWIZVZ4N zU_p_A(DP1YVYk1lKVq|Ol`C-OS_rn1s-If4R9*jmc0@{HlzcRE4|8Q&(Rm9bJSs1bDVJS|_ouUV zJo|~xm(`C3^=7gN=G9>53$iB*(MTMH-I{SN8(zwedlDzSZEr&)tfmpJUqozT-(Ov> zfTp-M^HQHMrdT{nU7c!u&G*YucrOeIvKe<%7d*mk^~h`R`Jc1$_fxpwe`aAxh7+h3 z&LN^~4#qtWz=GL-ruyJ8|6<-k+nM5{c)sqjpkHdX zNxY*ij{);z`pc-MV9+}Zy&DyV&`Rw{XQ?uS8T8yWd^cX21;*!FRe|$$8@) zw4(7P50p6Jc6Om5ISl-$3lW*3Ebshbcko>B=W5YO1M}^+kqD2la^zE({Nm_!8Ff8U=|JphzsiSusar!RiMn$_Vx3{^?anVI)es<8cXKj+mb7Xnnu| z&hWdqUyGe)d_&VlCMaKbJy+q1BC5!6QtMm+e|HpijwN1soXEK6*fTg<*FNvM2GEfa zVJQOh=~A{60fNs6?epdC$a#Z+R_jYNJV?ZL4r`BdY`Q|cWhL(D^m0A^rbx{YD}Qdx z`M-1A)(a93PBK~olEC{As*s!QSaNUhWc>=Yafr6%O&^fa@Repvi%gP5+T(zwb z&jLSF5puuP+~wHe;&Uq<667P3*Xs+s7d1XfM*$8eS*Du2xt%2tM|*>nnVchV7PAa0 zU4vTfy5|!Ey1eJHMIqS<_Ymo@Ha!uC1_~t|AJ_F}B@&6j5iUiI*sxZZO;eXMY$KK* zrG7W=!WAq0tWeKj!ABmQc)fhY7Yh&OKy?W53RyAx^tpA_Rd6=4X?I6=Wtr3WwRxYV zwBJ1W>^O(?aiR=hmojKWKAz@+LQ71F6DK%X0EbZ9(EO>&F7 z^%3m*h?B*Y-#~2O}xg7fzj&>u5GX=%AHP!b}n-eJkm@zz=>TfQ`g6gb=z7r%5=U zYCYfZoFIsX`Euy_33EQlJAtSGdxtN{Vz;3Z^lKo3IvUVm9&77PF8{PLFb8Y@D?;bU z-OuwvF{Ro28`#cGwK(9QVWAtcjDc=P>A{;rV+7Y{I^l} zLiWyi+HbkgPCFrBN?l$Fz`^K1<`d>$_6fQY*ecl!T1V$eVD>2S`oDyj@Sz8lVcXlnq}cYvk5Qa(*^Ab z8aqlPiN>GHZ;SIpZn&H{h)7%!x~1o;$p8lpB_YS$u+!R z2R)p>o4;KTov*myexLU3f&Abboz9DY{hJMQZbZ;8`K#%Yl<&E)YG!3SMZaVFu6eZ* zM>i}jEE5Q*n}PJ)hj#JV?!9?fZL6##b|{1rGW&QFWC-}a*tr%mZe*`+dNOCSA3Yn_ zD)++m(wF~Jb3Fp3zSqGv^5q4ioHv7{EbJTLbUyNU$E@Zq&rkZ9F1Dmf(|Beld}J`X zE!K!oLJ#Ul<#O1p{?jKPmU34%WAAbEex)Z@$OEyLUIKL>;@SCjob8@tBmmk)VE3Y3 zm0WwEW!iZ~mP>Oj@8>jWvF;w~s`(vg+2%F3*NP$3N`z84aMx&6Y7yo~b$Z@cE3dJ5 zI8RJwxDRQ&tmX>}C~|9!>r{$>X`IZeN_Fz1+4QW51@^d3%9Yjp>UB~uMJ6al-tm00 zx52fdb!1N>wBLs&^`YLm z466Wmwpqi3C#pS_p&t7Kqx&Kg4ieVma*+KeZrt&D`+YWyW3xHe>2|11X9SCJ2yw$N zFH&{J+ehjGe}R$?bo6mfK6n_~4`Tj1NcwEe5LRj$n(-AdMoqtU@v84R?>B3McbZ5+gn@ z4JP70^Tx+BFLIA-t^OATop(w~LpAMkZLY|N4Jlv!waRsQEpssD?Rqu``sqoN7OOJu z97aQl>zjlSwe@|gVsMDYH$BE87;p+>En23W&th0xFyvTsp;j6t)im=~kXq&_AC?*= zV;Rx8FFV!cTk1_4uEmltjqZlg88)-LlWz9!zx(vT?5e?Yj|fQt7R2$pUTygqLqFgS ztVc?ZvVRHdW0dRbGYM#P{>F`rA)X^qr*yh5c7W<>z zGxR~~dLn~@Z2fo0?ZI;W{!E2>y=R*S#NM9qrCyfi<3snk{-mTF6bi}0R8EVX-CH2# z$N(+faWVr(v}^|UksUti9;NY(2|p&vnHxr1ZV>WW!;uKqBd;FNu4D z&0J|*&R!4r?+xt+dsd% z-I9ormB9Ri2*(H(k4B$&F5DR6->5&PFV|t-s&UCEcLo2^Pzf=(@9zffmaQL!VsIlC z3Q-usaCM-n*iZnRY!52fC<*N!T?N7X7meWHks}oUgIgH*|KSrjGD`OUVv(@Ke-8%n z)pYKE;0BH?Pv}3ug(fT<`2W>J5=KAQ@gKgJ82ryw#N>Ftnp_#Uzq@?Z(^;s5f3;-& zFG<0XS(*(XSgvak{}QY>iI+*+8~tYb{*s$x`010zt=#4u-?EvELbP`T%q8ie{hu%A z!2L@B5S`$*5icC9;@5VbZf&wVNJ?yQZ?zt5GbfSlqlJKzJS(Ssn#MMkq7P%Z&iX$G z`VjKdW$}y{$Bv|#Q_tqgfe3QBV>$ocuKRbn>VCH8UZ#^*rT(wHC<1e!ho3@Jf^x>^ z2jVNdgx}dJ&FR8OZ!oK60umlMzo%3N=S;5uTqzmWH><8PU2WHMgx9a|WHcD^{QDG8 zK-*TaW}61WDIEGNM%nu5Si zCMtspr6|0DcKy`Z_KO?tV_JotWJ`Uu%D8ln{f^tlLX@cW_W92EuUWi+3UydR%q2;O+ zP97i6N?je!=jAt4V3|0YYpyTHj^|A`YfdwT;e+y?Q_PMgtnI&|wC#S=sTMk!Kc91P zdoB6Fk5|^zZ`KN3{1Nea`8s_|m2@p9ABh=17;U=DdWxOLQX8h{#j^YzhoRhIo=!Yw zIFs9h1T*j~%}7P3ncH5l-gLI-yIr=6_K-vkuGlk&eeS3Nd(zjzCgAArn-%NyzS_d| zXu?WZ3q(wW_t#UT&d)Bb&;1nV^q!YAe(eGF69RcNj|a`=R%N!KmwUQ_tqVk)a&4Im z>Mzv8M?icX7~}+>cZ|;FDD$3M3TbXSa5@HjXTp0DR-SP~7ItfD5-&77CpdbF+}zJQ zWs)htW4yG%T|q24HV~gf%6D3`U5yK=Hk+w!SR7%^yCvr8?HQk+W%7vC3=g%|&5mcn z5byD%$nN_fkVLNin3|!8T27^1I_1P^W$AnWEfR5Mjb5AU6rXZzl%g&7Ew5{(dqJs9 z9F2kzS+S@a-g_`Lz;`G*Q7jUPU;xbZIG=ng0MQH3uEwy={_<+q2T+C1+&K> z2)y+B$#0oJUG?@nuXeGmuvkZ{^o<{B)h&=V(U~X?`m}Iz$Dag;T`0 z3Q9TNqVxRl=>S}Q2h=@Wb|{yt&R%6)&|w}w^`W}Jf=iN!MBkrU%;t$us8zQDJnp8? z$#xBdx78DAtbKhyb%#3SN$f}rJ8gB}aiRh>0gcWxw&yEtPTLwFteDBkn1OIa3utJV zJ!Efbc)mHV?skZC?|uf@F_Mw|9a88s;L|OjlD6WjBNPGA?Y1l25sHFD=>xN1T%bK> zLkXG2MjU+_8x1m4{cx?J2aIBg+|1f{b4vf$`l zyHm}2I)}2RGc;m3tT1EAD-=oj zqA})5qbxx*B`^eSpHyRFL&E>=F4gCDB9$LhK@lO(!Gv35&|@F5siXKjX6aG6A!yOE zdA8VsWW2&-DWbjL<5>;>cV5#k2knw?7aRGr8=mqtK+g~yEF!NZtsa>STp~6A*VjBc zQYJvm9PGfZaD6JjhoJ83-E2I6?-9)QQ4D(Tw_ZX=hWfE<6of|15DZn7x1v+Hq?h}9 zII!R!$vUAZF93oW*UhfB`McYxbXj!0I?-7NNrS%-{36%hOqcs9oruJ!(+wpt&ugu1 zhbE(_#j?`Px3OUBbp`28vIPidD;!xwQ7|(kLTJ5hqVPGqT(<4|*c_p0V&*K98qZ-u zxHigeYPnL^xYOoeRgV+p%MAvUf^?HYhLwtc;DibRH21kXB5gIqC*Sg)09(?T?zbwi z-!tqT@Ri`oiSBR|r^0lDpx+4J#t(BAz0ii(7g*1zOCe{#6TX}Y$F<5Ul_%Mvu9^YK zbu}M1FNt79$tptiOLw-kruYxB{;J*6s^Reje~|kbREcE(RBBYmMqL1Rm>A&O5Vw(F z0fM^CKlxBap?>Y5N1wxOg$F51Bra4nHPrGN_+1dVPbvW&_olCQj&PMp>6-0wl44Spkv59>|Kp_qr|$^t`5vuEytaZb7otau6QAdFYLyImWUX-J^Y zR&Vxz5~;T9Fyc0gj59;Y42kFAg1Ac+lt5*1ojkHkql-1@$Sx6cf>!5kM4h?ipbMag zoBS0nnsJwL25-wKGvcD;EGd92do9B?#|IzpYavUZ=S_pzNI~qNGkrgb3h5V5f00^l&NLQb1aRP&A8aIH`EuUkq7~mm+C+9| z(-9wnh2kADO6=tQ@jOzA^VMi0lSyM-!wy*9=;6{wjaD8<5#ap-C;I zv=>62!Q?4=yVv{YK?X7j?^6Kn3Ggr1TJF6-{n^bv_IVrm)0$Hgf|xhKxVH7_0+kD= zxg7GPz1=F)LasHg%;wo~W5d+KP2XT}CLsEaLC+yr%J+y8?ry%~%l)nGI=kFtD*BO& zMrt5J(3#wGj8~7ow^02<75iE;e|yJu$TIZrbll(qUYb_9z+1z5^=fuA-%(6{ikO^+ zZ4))kZoTyuTV0U0tUI0-vrfStrfjC`<#2KWHL^-Pc|WbOnmBFVTw^RASk&~Z?n0E@ z3WqjVlg@xp_2uRCW?ntSmvyEGw95WmFNz$LE%Xf<&KKLi8S4zxF9r zk>E!_Xhfq2E^SU-2Q`vh8NANin`x2s^4dX2L~9MxuzU&t)cX(Kx94T}`hZJHdHWSDub&ABH|oAhUbOwWghT2%v8J-pgs{)b&{d0O|BEp49x!zRT|I$LoAuu0(Z*5)0uUGwyd|L!$F<-kywej)Nc4V8JjQ|8wT6nwkj<^LhZ!sk@HjeI;1$sz6(Q3XL36Bmpduza?nYDYsJlQ*o> zzOa#@T{l2G+WvZRi%RAFs^x*t1dC#kSL^dW@_EkAoh*PMpd%4}=uz4(;Be9Ep{JSa zhYbe0iE}XFl&-%xS_MF(5OI39={fzJ5mkPIM77}7DvGGHmH?6#Hd+?E)(~6b_Iw=0 zQ@oU)_J@0XYg44?WQ-c3)nInCBvWVPk0lR^Gww$#2vhFjLS*_Qc)27*nur8`1Aa36 z`&(1)a=n;*r5v=TyhO3o`8QvuI=3}kyj zG$FWEy1Z#HVyf>;#%-$7Uq#@^@KX9h@2?sG$o!J1(y5 z{*93ZQPQ;H7Qy_puHeYP6Am_IS}?ibPxvWwC>%_QYjakR0)FP@ytcs|ym)g~dy%a#`sa>YDa?vd?Bb7Yoy6L@g6$(PmX)tLA-Ggif- z;O@_47-SVLsGJeAiJ6Jkt%1?EXI4ACX~64aih0iOg({cQy6J%Jmd%bCwl<+upDX{f zRr4{Ak2fnSC$o_h`HK!^5CdB+%;_%qyqlb;tY`6iEhSru!@?r%`GCa8KxU3ENblX~ z5t&TSY8}_KHOEMVO`4n}so%~K0-rh!;SRunH(b*2a79tBpbTnRlYJ?XsYJp*jxDw~ zua_U6mcDc$r?j{BT_-I;`)Hr0c5!Uz-JeJr`~Gcq&-1oN*liv%lfn|MBq z{YM~uY^+kZy|6p}*P-C;jA5qy9>eqM z73;#m2_HUF#8u!v&tjfhHQ5MvqCHoPI;F}FGt&4OMhtW+|hIDetzAsapaHw&=N z{%1Xggu|^mgrT&@;`x-l5LpGZN|d=s2jB{HTPpKQ-KK_63j5knS~{0_dopBA32d5| zp3VV%4Nui>UF8Ko-jvnR2HoF1)-hs;VUL85*hIB=M=*pSDWYK7<=PL4bHazSb*=M4 zkX?pWhS?0x$1`XmvC9TjE7)y~u}T^}XJwVzn*mr9F4S}9e;nG55oc==3uwQ)ozDcY zt(e6QmH#N}?yM1&%YL zM&R{Al`){%>v^xNguPZi&4{{}R3Lv)5T#d`QGdf4Wu!s`_Lg8<;$<34I{C=2pz-NJ zJ8R-QIlN_&>DZkeF4-a~5uNeiQ7#$B_uEL=r55>iwdS9!+Kaj+?xRnx-_=;Cak6ZH z!UKT$@*nG>8=`ug8C7vF@xDMe`ed%nDDK`A{c3FjfNNKLuJ4N^wd~Auu$^&rR@=JE z*2_JI&kCiD5oQ~kn{An@^e57DfNJ#7@$fXY>|Gx63qSeIqW&0F3MB~spvgJRpzo`V z=WLMiDYeiHM$wb9c46fE*bC~#Yxn_K5630PTnJ^b?vKM1KYHPiIY@{{7HRR<2H?WN zam|B{EoP_Nb=yx$J))Yee*1_>{E}$7w&pEykD|U%8IHHlz|m8AK0kmvPye|QvPMc_)N3;}6LFbfU@+s7G~3mJC}Bp;9g zZ_y3}+%rpm$zM*d50i?*Na;3?)_2qGM_Y1 zmljEdp+Ni;Uz%@P5P{2@+WqD!HDt40cknwZUj8<*i_*?yXash_<4FaJ3x+edv;E;@ zn?J&ADHH}&Hn(kN@|R(muJ%A%5mn^KTEtWPsDA%rP`bdnT9Ti8{a3*X$FDe8T|^G$ zGNls+Op{D%uG6eK%lEoe|(Q8z{8Lw^(U)BaVgmBX%M>&lpd*Hra54|v#>1_tZ{W@j9 z`+M4^On;@V&Bew)A(yamtw z-M!wuy+XZ$*RYhOds3~yu4uavlra)Bp;QONr{mtM=uQdL$S-%aqQnWgL`e=z-TfAq z6Nv)7{6*wT98>GbnvMR*W^EFE&mFiUusfQs14SgvadzO_)&SRaHW_Ac zd)XSrdEJNOKs{}53Y!s(bxilC?Lukvv>2k)70C6!9TbLwk%Ar`9^Uu!YEk6BxWz4L z%g8#s)(M{bh%-2k%h(SZCE|y%R9l2{p~e&CJzn*yw5F%P_+W>C3~sjTsX+jLr~Iqc z*4f%)461~*u@w2o5=B2UWDU?7(#appw&t8TNZvnhI!4dMc;^PW;nN+&f)+Jd>-#nTqEOtIQ||DD>*uE^x&)AH{ZXmUz9JI^_}FZpVKP)t&TumPyj(5i4sjw1;p$qQL->0Gcxv2EA^ zOdsC`?vvbS9sGvmQ*(Qd9#&OzVPVvG`4C#s@X;A?u=BS%mmfaodp$ttNGykT08;0mPnPL6~q_Cg24M8ZprS5ArHBx7CO}$NQ zS%7o{(vY74jTl!rioGxC$m}fa`e0wu6Dl<+l)Xl%+G@ZVHd<;fzAyRAQzzwJEHW(< z@cy-bT;B*oe)s$Bvguu}tZ0#ELBcE;+@43YgKLDT^mQRm>HP(O^bNGqwVnr}o|uvC z4c{-G2BQYW-cBv@kgiztg$zawg6~g8;kC(c%|u5jIA47g?(}F=3>&o?$Ng>f@TD;aS1jPJV-aH=0Sn=R*FDUL*UgH# zspXp-96XrH1JH2qxTMdA6huQb2w(e;!qD3+(X%+~&E^AlL8j4V_o6f>C^3kVFA$IZ zHslP74`!B9;uP4d0`#0|bu{E1SDR*2T7|h~DS|Rh{^(PQ#%*iDf*iC@8mTB0f?_u+ z@ff5XMgg)tmA>cB?-m0Q!SA#n+>#@ed9(EphLilg-A7^6=zd#E5)29x!b5>vI!ZK7 zn}{%Ak#wIA=D*8A1JO!c?r@6yWx*HFw&FjBFJPx`=q`onAH@B4J6{O$U4;Wgav0G6 zrl2jB``s7X2Z{xPCcyq5OY8r#(f5DIcwf#onZ{Damg;62N|1=~A7(S7Kn|PJp;XQf zrS7hds{kZI+y}@s|Nr`vmS&5LnjIRTau&o<`0R0`zl&t>TDM_F(v(?EXIxh-L51Vn ztKAZ6`rqeEf#*{uJPxUq=HD$F39pwaZ_gAIQOPv1QFvdDZbAOv=NkpD+vveWy=zsa zR*|nUTm*2g=MMp_=|mu^)JBKn2$fQ8u8zxZ9p6q67p*yjt~tdf(UPI^k(!Q;?#4=g zejHSlAYg-Wi{Wz0(5WSXXktnr1%;^4PCwfAN?x>w-;;iY-%*rKCGK%Eg{eE~vOC3L z*JK3aoAm_9p4zXdVehZe{LE&l5I(T(bQl2&1vww}+XSdr2x_-qjdziuZI_&vvkx-Ne#{{g19T9C5ab*fgk z%N^DUg8%L)WpUh#8&6B*2m8nh|AL$@D-%Whj8qyd%B?(vS6q|e@Hq+1y7d?!c4`K?Y{koRgUrCv67t89N!QFoSn-7ocU7-7$f$W z*DQw+K)!W#JWY1oaszS(fGT;0JbBeLMG}~QvzMq;mG1SBmJPt$)Neg+ri_HE=US(n z`ca{b`kBKf{&2zZlM!Fk-rV3ilxt%;x(FIkC4JRw5Ge=P^<>ogsONspVL2nJdSlm} zRwL;1Jh0i6YsT0nanU9{nv$Z`1WK^>O`@`>v^9p*Gib|vEUAF-yjTu-Zl}#9o{ayH zFl!>6gQJ07@8@D!9JLX2bj#*KqK7o-&u7$_4fj)~_FOB@F*2&}!}18Y=&`;JHz5fvjmKw8>g8zh}1F~FYe zb-EDJB5jC2*70*$Mdom<jTbI!M7+5wLn;LAD@G9rH((@ zj>3&;M)P#nr( zo|~wIU^zLaFkz8e7)fN%gZHbC-R+s;FZnPaqz`4(^%~!wu=b8bAZsxa`5ojQ8x|1#55k)5+p zRe?7^JS+&80xYhBN#|O;!($%)hHL((@s+Yv$|lO4-M$0#SYtCd-(F_9B}Dg4a8)qY zDMFvGSJWX15V~ejc};SE*y@)jMd2FC;0mD{PCT5I`KY!xuP~@jZZcv+@S#QUIm|Ni zc>Q_13OoUYTbe2d{Q5vP?BEz<826LgOy`#l*Q$$J*URb*6WcY5If)<7qCeggBCw=& zG4(vkK3ax~h)H=;7-kW{a9cj!IUJ2L<2k3%ON5RGxwV2Z0pQ6oE}^uY4h3%??d9Mq zH|uR>>#+iI_1X<)G6f)X4NSZ^j{+qJ4!a+-(*p_rzPTRdE`pKzh9b|B3lt6TUc?p4 zCe~}T`E!@Jm97Hy$2o}2PE`1dqBk@Jh5eQOIeb2K6L z7e!F18W8<=3T@aaRn(#XCG zjzvn(RHvzVcH`C3*^Blmb9S_Ftrku%s}39O1V#2BK6x*37%@G~KhuSZVDXqXIHPCh zEuHTZiQ=Cd2FT0~Myv(Ze!regbATW~+U&#SVg&A%h(&ruwJ}USQ?J#iF)*~wDh83h zzNCwU1?mZ5i@Uo6#q=Vf5l`Ip$zOTu&Va4;-6R;g0csUD9b}j2{r>f2 zxLz)F#O_D{!(#gE$iS}Xi^)*V!<+2ecdj5)qgeo?yjCS5Ny@H95U&)K2X1cnO%SS8 zYvgUOCK4!dz9HToi0K)!=>0Tc-u;PU2u`nw(TnBsi?z4nl7j!Gw90d5YfGr=x>)8~ ztp|ACajPPb<^dyflq*CBZLr84=(8IgmZ#I|%rv32fBsWxGQG%WU*~I|mg_5A%F{ON z?QIMXF(N`%uwehodL4yPzHU3^EQmIm2L1*{6Wtn?<&XCu1ki{NA!A}OE9ME;j|AT_ z>1xTFsny8MG2X!DFV`Bju?5jaI1DC=hFWmN_Z28C^_@md7e{;DMqh~M_ln}BvD*GI zJ4?&ImMIUGBExWcc?&eT}vk7rjLN>P#WK8SgxvV@Tq4&AN~t;fBs=fO+yL0H9) z$_938{LNrltims}fvl$NtysMW1Z?ldm@3lQCANEC`r?}vWb&<(uPF5;iu^X| zU@icFk2kGF@7Jo3crd{ce~w5GrrMNdU4`Sk6F6d(;T&)5X)dmqcr%ulyV(tw`yR-_ z4RYZhg2Cw&;wN9ZYZs#*FBcKoU99<|{LoN|D+q3YXB$ zF~-?=CPiU^p5?PSKZqS0oXh0TsA=mU?7HG3Go zCq8`gnvVR9%eC)HQqsGg&)7I75C5~MxMxTKH1cxPB2EW$s44$(v(OTlEzt^q z`j(8kJa3!vAoJ`WTwyDHDY#&A;=Pseu892aeolqdfJjV5Dvv4t?T&81fA_Q6i2(XT z-k*j{WWYYAk%3qVl(nQo*NzhQQ!7QgONsc`Ehao%Ci;`5&5ooy<-dnjI`VaAWdC>C zg8#%V|9?(Q{vU$We=?kug94w!{o#&R21`>ypzj-p1V3;j*3;1M&Je_V#?U8+-G7s8p8^3XFlOcLYcgg(x#L z1>Z_NhCo>90>I5Uo8!D{0=JVWdj9?}nfFU7m&Z|@Oj{E4Cqa}s!yXg`;9dfF)^lI07 z?J@k9#th@Z(uTY)tqu*fs)YMf(^XDnU-4LcP8?*uH;^RaxiSZ(7(_u7_t5~KaCY2QD^_*b(c{`Po zCo-{8h|5px^D5istSAJQW4);ddU18VNc|S7P~$P5$dGO@1Ifdn_~7=taA{n_)Pt2! z3l<$EB2GH{VF2*}t4AMl8|FE%sequBP=oc1TUCfe5`nMSz}Ei6M7y+7RDFZp$cH+^eb6wo5w&RKs> zLYI9rmjks8e$`ep=BFFKSaMqyyr7Fr0 z2H?^~L&8SA%YY1bRm)2-W^4v63zXiIKTkWUtxqqfO@&+_?z8gxwT~68vOi|s<++Eh zn=Pl+uLSD;niy!Z9-GXfKHmu)f**b=IbBF&cZ+fkS6p4ivNYM~$YnqwO!epuae8~H zFl;B_l1irkIM_-z>ts#`btyKb%p84wm;+1uPz4HECnfd;DT#E-T1||UOjQM6uvWmsQlSivykd@Mo&Xz%~ePwDBwJ3Ux zwAqT7S`t4?`{P2X4R37>pJKjft{ZlX-Qq~tKDLCG_lt()QoEb= z54mG(WP+6$SQH7Y%kImj*QZ^fpLUg6SWcz4d%$-~>3y_8r@2y?d4dAwZK_>g80+uVY3@e!v9y;xYD&xiXwi<$qS z0a-zu-=y^%?S_u|L^%P5a!Gm};^IoX`lb4KR)y#JwbOVoj#QOay-_fDK^U=giq(Dy zRA2&RFHbUXh?uR$n`i-K7O|Vlb%yA5wlP}Kf5YstG@QWC>Q_lLTCR7zooI7KDxX8OHoqy!&X0hyi=`7lELA2ROzWERgstlEs zpAme!tMy!5!{p5iE-`)d4yh^{yW7RwEK=01y8cKg33XaXY?iwj>uegEbT9%8XLeSF zuJ2o33Ps*0NPZ>uz7nd}dxd!!V^pS*d2IPg*oml~#wmLaqDB7-xh%?di_$VL*%bOR z9G+PsnOZ*de2}By5JLB|muLb2ZpnQmYIiinsvLqI#EuEF%`X*{Kb%TAp1r?Wn-Vys z=E;YxY_Tf3HRmto2(Jps$ z$}c~|Lu(eQC@A2?11u{k?)YB{;de^?*%;+@F^0NTi;U zi?NsI8c0APfkJB@gb@i?eR_?hi_=Yuqfgf%FL=Q;OoeBpA^2mXDkd>7)_8x1;3wl$ zfdJ{0MMPrzZ1NFzc)Bq8uW@Q8+9~)Y3$@ZVrtDbd*JxV-fbOf`5+B36Xg}+Mk8Jkv4GO z%TDy!lALOs!Yh5M-aig6tl*9%;-9U^&q%wQH92lLgkloQ_2~~Yb(b-uekSn0{d~lx zemeKv3jP+(Fw$IiQD>b!-arT@@3$v2{JaX3v%MpC#7|}@#^uIZevDoF-z-1`p$Kwb zNa;Q<|EHH~1nuC=-#n2I@2GhN$rmYDQMSGKU7qvcV@?}qjNQ~e1una4oB;jvigmzJByBv%a;dJne@>k}J!e`j@OekF zmtpsirho}HeOla{Uzf`V*wwG>ell8T6*NuARm`+$=xIghpKm<`TOUjr<7{1G%~xd^eEwg|UkAA%FpG%ZxOuY4 zJ;^Rem(p&mlAewV2(}cOT}}#J$)HK|^8Han5J24&aRC-Mf9jMCJ>(MkkWsY*B5!10aV_ z0-Xqt!hjQKI!?cXHAv`mjvM{)N2<|G$}4c1rOi5}I)>Y6u7(+SzIy6IMpvrQm%&j1 zP?WfZ5<`kmH4&T(rQK3=Ame)h`L^^SdYSyIsb<2OVg5D?GO~Tq*T&b~F;zGF98nq& zA>1Xs*KCgC11)-(*Zkl?TrNn6CsJrF`C0aK(l z1(T9v-nM*&onxGJe-7}mWFFT`@YnSi-RuKKmg=tiEs8${pak7fLnYUCie*n+E?=@L zc+Qix*=Gs#S5h4?uN+>&g6`jLVP1~FDKby4c=AcwmPv09sE&0@sfLXRYW^DffAusCI9T}ZSqrKLX& z-l7pOB1xHc#Tz^y;jcU4gyrz#WR?FP>fWj?j<$=|4esvl5(p67-66O;A-FrFad(H{ z?(PsgxVyW%J3)8l{nq*i>tvsC(M4U=)kQzg9CM6&n!1%2ymIuXnpx`m+$pWwSkB87 zl39w>9}+9@C&?JK{xyAbtXUokuH&8$43*hRHA8RB-U6eNyAv?a6=@y(7@-G|!A!E6 zMyfY)AYYU6)2q*+bJl1S_3TgOqRI?@l@f}y-Ka3*|C}k{yUtrta@jd6d&&uAS!Xa`o>@w-0ctxIRKQL_uppOy!i&dh27Ol^pJ^9hHk{`+0C*`C z5CC6@0bT38ddHb+UZ8jF>Gj~fQEm6BaVF0(4y}Qg+M@{p$K2gweX%}b3YQXRbI!(C z=iPD5_kgS`Lqkp*c$-Dv3^7VliN%U(D}~S1WqV^5y8$KtYD&2A?f_L&pxO=eftal` zc}}Z8RN;EuoP?78uQXNepQ?t?YZ&s-C~~o46-@oF+RSLjeOtc+l7p95_I>6})}ZeH z{XTXH7b_pR-b^-?C2kSg#uG2(e}{k3M9oK@Ejk{b=5eup^Zc*8jlZs?mLQ^5kbihN z{ja)(4eP1(Q6pMw)I*-My z#D=$yO!6=KD#i8VY2)R(Qu(^>u~f%(m)4gQWmq1hn1-MAShJrxqD^orjl`GR7Q@&3 zBY>)g`!K_Ofy7%Aif1?nXt1`q4qvRdt|K$8G%I`@WcvV_SRgog>79ctJRbrzA?GF% z>P0Ido#wX_2nmP-k5IRV$-usJnieP^1{X{*aOd=YePLFcZd^QB$fSx*@@l4>p5PKq z<7`eZb30Sa%$#8}Hp&*jJ}2g4e|$_7tHIthRKU-MA7zu+V8m|snoQ?? zeY8R$tRZk3f|~$h1Nw0~O5EvDBBlOUFFgn#si)&&kZh%!ogVURu~q+XoAhl|wDI2# z_>O4R*74BH;ad?K7prFX+$?mWAtNn^BkOLmNpwI4g2(LFTuO*~rSj(d?`sJlSee9L z#N{j{lXTPUvJL=@;+aLKtyd@mpn>WF#9*}aa$j%6yut|C-F69*6Z~lJujG9~$v8<+ zm}6Y=xTIRR-L7UxTS_A;;EZ56fWU+-#|GXuat`&vR`|xyRhC<3bVi#+z9e&OmE%mk*DMZY3&_F?z&gQ^}j<9=}9i`Q03G|oU%yVGrH6B(* z;zSKDII^%v*#WJm**$YDz;!=KS_0^JyuZ%Y^lQ56G%qYWCzB6!Lzmzw+W!b^aZTq; z9!{A5OLq62$3TF=#TvCzI5Rj*f|IF}Yvy!TVX;!!LzpD!VkBurE3k>n2s6fy<}y$C{aU+Z^V9EHH9gWQ33aq~`U$?tps% zPVyGkQO@iaA?fGun10eQLN@JOsQOaWLiIvQ3D|Ner`%9ET-Tpk39#4Co z=2ziz*gbFF#S8jUr7Zr7k==9-N|3|bXOc%&p;q9HEzUg&nz_{|s8j6q{YAP3z7#*T zS1K_QBCpG;*5QX7uGD~gil!uGi3Xi&&AkK3Z}6S1hx6wdXg=!;T_P~|kLJyyi)8Z{ z{$KB`Om{dP5}VB6a%p1FkkJ=bM{$y>-2`B_5hVBHoWn)L{ZkgjRH+_!O1B>3t4*cx zuFcS70f2w={xo6Zpj2gWU6kqw{2SVvS|2=CtcXfRNIHIK8 z4#?5kfK1y=Z2J+rw_(HjqQPUW$IE%^OMFhf_-el@kH@*K$Fl`Vo7-Bh2#s)?)EFuw zuCXfnG^hI_*c6E0Cc@%~WFoINeNK@eQwCTr zmsNWEt*ZM^Z=i6@>!i5k3jR*eQchQBm33r@AF=g0&y{|zmJ{Nw(oNk;IPQd+`$R6^ zAYSbCkZL;4{6iI|^$})`{;#5xluOuGqrkLaSz%XBt0Iu#K5HLNkUS7sOo|yKpokSG z1x@kZq4D2q_9Ym8yK)bLr_u>T-HE`anzMrGa}HcN@~V5>P?`R8eg5rk-K`w35IE=e zlfquRdnfWw>jY?`*hU7p6nsOB&{A%sA8caShJa>5;1P7%7CByG9%kgTnW4 z8I+I`pAKyZq&&GO6z8P8MU`fbJOWZIDz-t~>s;U%%Y0yOA%;F?7(+}~y$wMjIijZVb9WEVtfa<#@#3j-@>55hWl|Pei))+f{43Fz zi?aJ-vVp{z5gi1O!KV8&@&+)=-i-{`qm=LP@p5&!do@~>AU>Y0>YT4GYJ181wxb9r zM58b>7}9mUTZV1!sbrPi>bZ*HC+Irw)!!C_5v9vLeo%5+Pmzfyqea&k^A*;u-W)!r zjmC-6sm)OI-TD0nn|+$x9Ym_IidiSHQ_YO+TnjvLc=wEI6?`kODi%jrH+(p+u7(|e z6}*dG@C(lPcrq{)iI)hKd=Np7c$je5B_I8?%qWX}FE6D`QQT~g*7u0V+VJY1Yu+X= zI@hbX;bu@5*ZQbGpLpE6P8?xN;$6b%4;R29YAxP3I4N1JBCi}re!>QuI0yxe-656A zK5ftken&*%>tNsS=Twuz-*#b7>24a8;-4LPLHbi{Rs7tK@4SUEGNfCO#XSTU`F4~^ zdK4w>_T@6c2B|eADZrxH3R_hx7D}apJp4ZK z6xKDaf7)b@ucQl&jgP2n2j1murcmuS;bMy6MXWgJalw%s#JkyuU=u|c@ci?y8Ih|PGW5Mf ze*Fi=A|oZ!0P6a6RPPhY^`AldJG3IjvhNwWH)x4pV?woI!*F#VJt^(_hM(}sCqnS2 zNJ&v4;wWY(isZ_i*WbYRVBK@fl5xoAxnTQK+y-Z-9*>TBs}2PjxA=|_g4fTP$l-Rv zJmS!J;D~JrD*yoyXn`DVP6{r9Q#?;B<;SG82n8ki`-ziG8=}eYvtd@5yPTNQtAEL& z(DQ2Cfab1ZaM~0>SU^)ir9+#I^=E#<4L_38!WEJKwkJnD6sEd6aIqe@tMxbI?_;8tQ&7xXcBk!oH8Wtq|3js2D;-R zNSO@DdLP#q(j|$dIRcjJt*|Va+J6^#rWY%cb=X0Gg|w$4$Kq=@D0U+S@w=3n`V@F? zf^b=Y#?f6lj>N_Fu3si-Ac`QJb1;&iWMN8@;&M`WFQ*;?rffqzR<~Y4Biznsu_|ir z1R$UMuCKQ<+L@KVl1C)DiONTiO}uJ_HJ#XiQW?WDMgC4J?;8*sGSl3^m*pYPza+)| z+q30?>Z$q{B5uyU3lIhHgL38dUTvc60BoQVSD$#01)Xo*3|-NtQH}DN4apvrY_%IB zT&6p{a`5M%n33Pa830yY4wH`1X}(aVfL^|3?4^!SG^xjUMkyI@&12hQWyF|uCJ$Y{ z&zqW^9Srx%F@)_g+{9E-fB3Q4aco!|8U~@z81EX2ODHQBiBARZ?~85IQssk7{n1)h zbxntGof6SQa*UP7&GhE|?q%8_h=SK6{pq}>jT`4bs=ziOow{>XXetO6T>Z0(1d^U> zs`nM_P4AtA9^Y2U@oZbC5O@*4e$Wjy9=L2WW0QeC=X0h~ADS`v=A<*wh_@v2aPMr| zTD>`#N9P!-1~bM~_B#B7?)7paEE>z|Z%eL|V~;XZ^%CuwK&>4B{gA{Ksw5dOk?JJk z6YpODA>{{$q58h^@;e7f5$Ry0aMiuh>hwnPuMNeG;Wz9rp=-_+S}KBDC#HU~OpW&h z&Ps@eev&>pIN;MyL~aJLi=HYQEr%!AMQYS?;mJ;;NwXtU=omCBYO9o*K>n~(A=|wQ zh+H&z2a)bfxGWyy_@EwSc`9=zYJvqd0b zaHAX}@pS?^H5q;H<>$*N3OqvIE@aG6$5ZtVUoM-p&VXQ+1~vK)Wxd9-_g~<@O_S)T zt9AcrEyUFFkbW9Z zDjK@~^ci`iCcDLC*wvBr|^F}I~38U~FfL9vL){{f+lFb)^l)k<=ze_@Cy|HqRGgzVYqz}s@e zKt<>J|C=7v#}sSMyB%gPP(Z2`i*C)PhC-n6I+}LJ={vQRAhc7>b6iS5T|lYx9SsGKJ6i zi``13Mjn)=9eS2Y}?T^wN@8a3&u2fETa|ia%J)Nx5Zx;Mln>f1-9#ks}~&_9CjRb6HsCH$I8{NfEYcN3Y@*(dYz7l=O}3>k$5%7PjA-ap>J(2 z1pVz^qisO}9MHc22fccwwO$Vy4UA;W$isOn9E(R2G5g)AnVSO{``HSW&s(9HFTgn3 z>Ym9D>HOpC4(>+8GnZ!p7pG6*+lghRl7j}oxVwgA5LXG<@S13wsNtyzShePh>ei(n<>oCX^H>f zn;(l_2Jk*V6u{c{CMuud(6H-uOJdjD^VeLGB{n39@RW;15~zIbubwprNysuAD2FL?zQ5xTdQ_dfIVg#8d&C8 zJ@O@3X(C6oKIA}(E6nP%xzXJ8&;YaawQcIU}p_HbM5l}tQq*2Z1r~6 zY?xQ64i7SIGdFLP=|@<0dU@b6iy$-xz>I755ek=&rxgx@)h5E1H3OvRC;|)?=ck%4 z+LXXPQ_PhgF!vhY7&Gt_i6$G^-iRBz?~WwRv^e!)tBb`DZ^SSeQ8rsMn@&Sb#Lym8 zb<1ZO|GhCzqLt}`LKs`Ux4$cqzW{j9sb!i82n-ulde8z=-FYR7!u{i0-8}0@b!v)) z0DQ~o`C(Q1hh{^`J(0;B0zK3yYLSvU5&`yb4#3Lh9Am+Th02!@w*;CDcP`|s^#`(D z-p`-@c_J-7{o)%jq(LPUgsu6IuAxNRk)$E`9Zptv}M$ z52bODq;5QAi38mhRZQqDV)tOKRgA+ddccNmhu(D^+{u_~`g##5vPup|X3KMkCU3Q& z+vVN-J)p8G@5#xA+lA)W=GAstBkMwSLicYh+MJmhyG>Ftz6PdX+hvvy*3-mdXjHZ1 zjXwWMfI|0Kg$=veGHH*vbN+j$XRBoT&;d^$qv;1w=uHex1DXe7tCQK@Ccs@^C#=+( zU78?tTy6ik!aKMYLNekD)$ z)!B5VML|U*9)B|#jE*B1&{U^Yfq37C9U=v=m{9sV`W;?vt=Z`*?@zsbw?ruRKqz3I zrxhcTP0SOQhi%3Lvm8v-*B)h#Ap*zD_morcHTKIT!1W~nTm_cymxLG{t^jo1$=Ghg zLUUre*h#~{rt?pL-ceN?#r(Wpn^fmj$JuhiH&I8;c>;IDNScL}3aw#iz6AmC0BBJ0 zzI*5k_-uDTT8hWLOcAsqGBRHHh6XS^;D0j$^0)`i$ekUx$5P9-x1^_g=EArDG+i8R zPwaJnOc2s|AXUga`H0~%jZvOxNWo{nbnMT0`JArSA}?|71$u34)k5^7-6(`5wYbXF zw(A9CWy(}VX1btK;_CtmW6^EycyIw<>97qJx6JOp_kz<0fE(_EWgQ(dQ?FL!-q!gt zRuN72>kIJ~>uhoHY%Gk_`EWv`WOToR!1M~I@2uHUP^aA*m(k;H4EqL@Q$M(Ej4`WG z;7H=pv@1=snSxi!(QuHr$j?~pq+s8Dc&kLz0BDP^4&|^0MRN7t2-vn^W}034jYWqx zHHkp!#UI|Y685ol?YGu<1r%Pd+hbp528i5Jd<#Al5YSoafG6|3UO(!(IxYQ3-wQh@d>MVvkPl1l0$`RPQB21gWSxk_~% zAG%VDwc|P4@;yi$!89LVJ)$-?2^cd*i#R=BMhWU z%u{e4^7ToU2YKO__UWw_+5tQ|1np55$3wOpH#;w@jW~=6kA_8qYP>#D*h|etz@sHX z$fwy4P55U$OQ>8))L=}8dnJ|CsyhsyTF=CDWus^?^v7B*%E`Pei1ZcDCxE8Op&(kS z**tE+-)5D1HOEDNS13AzP1?oHb5UV8;QMcWi>2WlT(2?yHRNU3XxMBa*gqA9Nlli8 z+4AO#@`Yx_@;o~0t;Z_eN_jtQodLCovr0*UBBu`=0g((^6sR*V;C&u5)6C~+k0*>q zpq&6pk>r&-U5t3592Q*(vV4BiKvytq#CJ)wU}EuV{>KJjH(5-L9TAlCPwxG3+*FwHpH#?ra{9Wu#8?xXxq)g1&EjkhA6h*4w?YR2H+-aD?=Z z>~ytS{V|8*V;%wqvw>6~tQuY&NxW-7Z@TamxzK-Kv^(F@Ugg|<*TFSY^N(C zBHYc034x_l3kB6Cz^jPHdtFVtL{3gt8A!^2E(05i?oV1ts*FCvKt}rW7bN@k$YID z7~ZQn`DCW~SOd{f-J8Nr`7d%=U$pGVy_!s;_C&R0CltLy(HlynY#_NqV~oDX z<7W}QEw3U6C1~cADCw3sEDZ@tGyDi5^Od>%ugTDi@uWrI=^Df28Z*~`_3gpjbSa0Y_AAt zzgcev-bi>1d8d3l8kFkTV6HE${3cTUEdW)a{w!3{f<-OG5&J2>JWs%jPVmBMQEyn6 z-0}X4!p<&H$NoC)Oq~hz1_zk=Jdf0%{7MQ$DO78{w*i;g>nhE6_I3YDY z2g{OFVXj$#5}bn%CF*hjiSW0O=jarG?znzM!U_~9`&651E)&)#{#lK z8YP_D-c@6j@E$EdaNdxL{*zB&vOkilLkdNI^1goGC6o!+>XoP`^Y{KQf(m(B*gIUOx2MV}kcA8P=7r)-{G0Q8n6p4Fn&EOy= z*s!fsi8k?UPMgJMCU_J|jV;${Veb#UnYBrQ+Zb}8*X=d{a&+oV8hU;iIQ53pAE6h8 z(MJ4{;j~9!A{U=0+Y{59(1ZORDdg`RctQAg#N0Zo60jSvY#AW$5pCNzANp?w@YbnJ z+N;2t>f@&KE}lFFF$|%Z+dfGf7u(0&9!6-0$)mw=aU0q&-@E`gOm{ve2frh4>N#w!N z1T@vbrVtLnOYk9Z22nK;u0hz*jEGA6R!dLSo;JtVgN01Sd>En$y)mTZl0|BA>EX7b z87zx2If0bgjoGnw&yAY87z|6%|py{eQ%O8^o7dXrq*my=o(*^f}_){!I)iN@(wTLkJQ zN*GuEi2m>}B`-eXv#C(xc(JuKejQBQ6%!5u1BnI-OVYYuTb;Qfv6~dm+ds5I^{-5h zwl~m+wU3=hp8T)4uq#e;?)!1RJ3y-?zTG>8K&=xz6Q4}UuEwI^YI|>;hF!4_*=%iU zRLZo7(z#w>4ueldV8UKgOgsNwG$8o=cW?M4QN=j=a?t?7%HyeMgRvotpFx^j6`8Ll zI^SITXyWs43q)TcySNj=$P=IdReRcW=u>qmphG>8P+2 z`$g>;l3976_D5lrwQYh}?10-NHL6u16CdtZA!_8aJD5PTP!u~hWLv8vMFL5ziw%ax zbA~_jFL{xcnC{BIHE@I4m|MZwHR;s9aX7kOwA9V8Eg?7h`26|tVLl96g;{ZpFWm0- zk3MU(r2NHk7{S`F=QgYdH#PDG(2SWdw%b*T6@!E*84MU1VB|`ywN&7L+@DMh{R-+v zCgF7rY#!|Hw%z!`zdy!mL%6pC;V3Bm0W@p_79r18k}An~?$Wf6&7h(Q%wC-lP%`U8 zKD!)|_RLL0&(95vx#TEvOHH)8AdIW2Rh`+T#Rz7t*V7~f;If)4)^%QQ1+a)noB>E< zcj-TpB*UoSH||zCNO$}a8zB255iTMGI-5~!yuT0fdA>%z`10Lk<*J_;3KVmVi56r{ za_d#T4&G`ueN#u(lD#GMxfdywh%ye3GFN1ff^J8=>cbE{Kg^5xcC6%u{?2=8?1Unz z?n^-=pj)w6fk*5;K=Q>6!~CuHVbkMccp+Ly^az9O3&dZrsKn<%Q?0(M^}A4J*gp=v zW6Xm?^88NWkQ>}T2LVn5n}e^LYCNToFS!(j{)%&)lv7-S`>3yWL#(g^0+dkN`#7i4 zBZrp$pXA-8PQ3+mL_*r$d7yu|g7t*t`DJc3PrNP=qUE$mjs;na{qn~!`f%eHUBvWV zp*uW|F&`zQyOP{}=4Z-RXrwh-#NX6g**SJxCMV6n86vtO4 z3I3TGV}7KaJ0L?)HNRfMEa(^KlkRD zJPyHzo9+}fo0Fs-k0Tc9`=cSFQw^o(EU5ASn}4>)?0S(Hv_8pCQ%nj~D47fXW71pj z+1#vHDw?SLqRT+S?DkObwQ(ts>%ZXvQu_N_-M%<6u9w94uJ>8k4F0cgV|B)1krTfd z$DMvi(TV5zkCspRi`%-Us%FX{MAwn@7laMEi3Nzk!E%k5gWLicy(UEWm)Vp1~y z=Pv*YWSQ-HEN;gE{$e2+W#RuOs*QbhF5!95oX$_6ZefHcD@FL9P8~@lJ6D)oMyIBm z91uJAzp)0)!&Q1G%VzW8SXHCKQsMub+m=GJgpdt8EdGCzd8lUpFMp7-v_FdFai4M_ zgC*Ftb59XeiDesqdLiRRlqmiscC{ZB7;oUU+WdxHONUmp(!P1)@v z4qjRIlqjUz-fk|VNVih%I&(; zvc1c)eDv3y6L@aFB?)%%oU^f;MxOS>&HZ??S1VIZMDL$1is}Fty7#_|<2j+N)u}7c zZl1_G&OlaJC&&B#Xv=OEjnAdXZbK)${d_tfMkC|a_GH9vm!&nE&RKrFtJdavlBA*9 zAAZseGarm($^iXuZeMDFGzOjmodzT3^pETiV&!y>R0fEhop3D6J*oTsWXloE`X(vG zxe~PE#tgTtmFCIdd%ZT*+XHeT{#mc*rJ8hJ%?7E4{$C8hv!EP5k!jMp+q7!@mE53{ zYn|`}m7HDk;VkYvh96YowyEZ}@tJ}&4tvu>frtyWMmzyfhchNu8tdSG+*|%!sEGRr zGh64uYwD}_?l2B<=deW_AeyTpG6>iK>;W@WpD+Zj7>C^2T(Lg3^|u$bV)=K?`yq;f^8W<^Tm=m9XALwe#cm;jvz{F3`Y6K@((3~@Xi zXR{AWqa+9c;>m0LZ29DRaDG2I!Ys^cqNhN?x5197mJq}i185sOZ+BOc6`Io(+$ANQ zUM5%bi|+DVWH95Kg^>0{Q3SFC!4=J44L%kPST4Vt4P_W-4=3z;9G6!q%O*qHA!lmD zNcIVsjFv$m_&1vqhby7eZh93Hd#QF@2NUkBHv?>DJFqTZRXg?wKi3Gl?y10<|Z_9H#)%&7sGm!F`YCH zbG`y^z7zpdkwFK)w#1JHAPJ_<18~};&lEb;jBVclJ4NdSkIQb<$;0aWx?4oKu)XBC znMDp|uhHFM_I`ev=?35ZDAP`(&2zFY+}$$pEumi7XJNZ)I!x;*=GnP7yH6z>&KaUG ziEoa3x>&yHt-|jy;#=|ne)LO{_?T0*u`HuHk;u^MSb6#LWlMUDfU@8#DLof3JY?5B z`fI%goYp0Y&rtJi3jzOeLS~s$g!=96AunSv1}U|`yQcofX|-rBTF1VQs-Wu|el3hTVwiHtAX ztH`#4{m!2zlTxmqtrqLl1K1!V;V15APp06CD=uDcmM4ExOM%GJCh*@4W(YLi1EWL` z5)^NWcbZHBdo7adcl&s;`_vWl)pt|)=BsPPm~OKTLE0Y?nKW}Xm%lf4Ei?#kByrHs zz*gU6H7ELL10vs?6@yyJ`vC8G^P`UU48Ga_(Q<~;y2Q%^P9!cLL@T}Jku=rf{i;M+ z&GEb)k|)sd2zoiUmU{+bl043_-zKr7j;@v8UU=z!>6@&T?oUVC^51Qc5%YI*xR0Bh zw}W!kA>|URmRi}_maIV;GcfJ6kv)S|+9qq*k7vqew0 zivl*!SG{#0-g=56sn5XlLynr0Nk73HA8};uUU3RW$hHuoO(-}%-4L9}STEuD?aOK8 z7%2lcTTqVuBr&&K9_T($O}i?C>*0(&H!@7A&lFalVOVLs#_}lCv~RT2t8i2tKKfvs zDn{$~*P(qJDP|bt#3NWDR+}`>vm|>2_7tO(>(r@)} zL3D%S+By@C#qv`6V%O#h_JuzjN&qGfM<09~dc$;vav7%H+iRh>s%7_F@#Cn;e1_F* zM3<1q5tt*^ss3_Kll=|%X@XY)ThO>kt|ufXwg35WDGkn*|C6`RjWM3cj6~ckBJP$! zji0ZTxfUHh2f2VT`nUG`Up_?skEEkPrU*TSW~Sq`@FBz{5kVk7A-282Ya?^U-NDgL zal2qug8ofXxM)=}Er>Ttb=hMWCfNJg-?h%8jCy-XWVCVquMg>LUVAX*8nS9aw1iEF zZfj%)<(kaP*ikWQo{Ce&pK+M5<-%ye+kOm$!ix#`V&d%}c7XdKWx`wD^rDCw^gZ_J z+2a1q@acqAm*O$_5N3|G*kUJxR5EpTG_c*`fAVY0bh}*m}ZBth-0aG2RP{E0G#4*)U4=XmiYT9g*pru+J zd@X(zM$t>RhYpQ(6~e?}&L0h_QwyNPTjSD#lU5zz?j+(Lw~ym&ixR0RMHV~Oyct-cOy8`q)x zF#8-aBtt&T6}SNg69mH$RCYNfyeGJ(6|YYGLb@VM zDU3<3CZ0*UC5#e9TnUI!=%rM$dA}@=33q~U_BKPRMskYAwgTk+gI|t|m1S*K!()3; z2H>ZF<@yYDV>UveMBj5ttG-|~_j_(P8K~b&B@x3!VxU4&D}IgvUZplK^eNKV+I-}x zvG#|_X-Aer#B1Ns^tR7-Bw|!yHxH)ZH;<$kj!!P;&*oO`$njAZ>%F2iz+BaUh8&I9 z;A60Q?c>>RB|k4&3k#*|%rKofm&V^|FTeZgJe|=0O{=5u< zmf(vp^#`$iW!1;Uvf-2fD1F za^l;8QSG)2IEm@7hA#g}$qKlWq+IbW!mZ@@C()uBH2vJBj_rZpDDb{%l8qFjnO}vC zF4EY)TX>H#=T;k3q=2r)ulJ?ljucLn_YjJBk2!Y&czmtLz-7SeVzK&Nr;RN-`L`8 zp?bdNnr{8x<2L@~2@O{y{SS(WN?vnsxroWbDGf8?CZZ8?s?6F?%gq3AG0Scp+u??y zK%r7WgOI045{QooI~kIeY*P{UFGCVk13QL3l(IEY%E+8+Bbl29u-P2^@ygs zz1(5@a*)oVkDgx1|77@ekRexte7H18pv3N(r%Ecee zKW0cNPlErXpEv{>_^_LhGuo?wo=(~>D_p;ucQSRtHX4UA#(l!;T94Zd5 z;w~gng7=i?#|%aX3*qOXh_HjcrIN>$Sg3TN-w?Y?anW+oFA=fJ1ZQ8>NwFu)agbAp zY}8MN(~W<*nnY#Y82iosQGpXIQ3dJyIE5f8_tmTQ2>z12111~G;?qp9SiOA+Ioy zI#CBEl`y{$Mc#3KGpSPVp%`<{Vf&n-V4-ZeRdo`D-bhk{mZOv!Uko344|8167z=7O zP4<_+M}PdtH@90n>6tnvf*)YqKK+D;gDtf@N@Qs#D!2lOC`;*fPk6N$B4AO2B4ZNF zSB2y_0i3p9>bMxje;?167k+pM;NY7)*$4EBhd?3W&UEt%K!5(_R&h*Uor1n!;`4S7 zu`Hh42u`X_R*^SOqtyq5%4Xu~3E{3t@@9|QCl2;6uRL1QDFmCR3NXOzplJ|saCB;i zz!2pu^9>edvU{hkv>(n#FTUgB0j>i@M10KK+ZuOlR!5hng5HE<6 zx#X=rXw_g^5$z|xAfelL^Q{IO0+x^>gk1mX90dq_nWjlR@rVq5-Y>P6?W}7DQ%zq! ziHD}}m@Ce094_(Zl&d$k_UIKV5ci*l156ZvpV@wXJ1NeRrWszP>Ml*c(yGC5WN~y3 zn;>OxHV$Bhob8w(k>(g6dC&zm&jc~Qw$rfrHMV8NMT^>dgcD|>-WxLBM?zjMwYog5 z$L;6esO&8mdQucv-k+4dTtrwFs+FZ^dj}Y*j6OdcYJwj4#_}vXs#={6zg_Z(M2J9_ zv=N9jvXg?{^Fg$x-_p}hm!Qv|1mTPfP-6(8SZvlA`epcr8XCh?23(V3YD1IY%ZN-; z@181TnA>#=kx#voS+UG?$@8l<;P{i?z-VZ=lY)~Y{!Hg>^cjF@+{#vxrH~L~KoqZN zsIMcmKy;+pQz~^naS{sI$cK2nmduE-&+^$gStUQA7#3>qc)fn2t8umQxFH!viaeNP z8vTO0a=Ms2j}U>wYmW_!2t49-=06#6->Dq&gmwp5*g|a$ow%s%H}(Fn7XVe8Fm6&7 z@*Z_75Ki4KVJkxPoJ^I}Bs?QehUop3b;3`#dDGT7g%Bx6{W;pOImcutNj5R|Z}=!< zf>Sz)yO45U8aowTgC*4{$JF=1$l*J0C@+7kx=cfj98*a5F1s$dFuuc&ccxVM&x%4I zv8`ONOrj2gqI-uJ_cO$3@F7_K3X`8hq7cV*%?rEcTqlv7Xw@jh(1$KAS} zP$tLCvhdECdxY*eHo3Xw{(c=c$QPSf;*wC!(<%j57ZQZ^m|c4eeOp;WeuoV}6r z>r>z}3fcI9GKf+qB$E^X!f73dIC6qet4si9615qa3&85x7M=D|Sgz~NPN;qqz)vf8 zf$izi|7vCw2deshC_kN(FEOlsbTAH)@L8v62)4QUUgSla_wx9UpJHz?xD)$vB%xs+ z>@sY5$nzb81L#+;TAXsi&s!1tMkAELM)gnn*ZBV~r5|3)`uZr}kyXuFie82KbP?AS z+jG|sf=U7Cxx=9Fq<{)aj1U#(~4ER=wbJ$;SHw!IQB)&ID3U2{l?#xL)B7c zrOd}MR){QzEH0(ztwjUb=rR=MA@(m?@y9Pf`{mE-pgzJ{WjY{VJ)Kk{5b*?>>V+WH zgUXUkXQ_Xl0$h!<5FNWl5VBQxK2B4-D*2QJ2!*l}m;_p>TbxbIE-3IL7|kg#))0UU ztLKt6&jrxaWZ@bg0`XOKGkupN!Ztq=PG@w&;Q&$$A)P49?;5(_8$Y4?gYb;HyjfuV zu{UaR=fMH+MPxnvYf(DkmsASMA1P@0abNW4wD64-j%OU7&P$XA82&Myr^uE!?*1Ou zeYRg|ID20?TXtB0aK0oK;)a{9(8Y7f1k2j=Y1a0|qBqWa%?;_1g*rot*7xyxRpaDb z+j6huAcF%0YYMGKnH%vCGkSCpLdUC|466f#SOd@PR!vH`TBl+{!yWdT;_N0%eg+0- zw1!7bV#4({4c7s_E1{>ot)XINstLse%)TlhBEIJUFmT5wJQVUJsz${eDUk33@ilWr z9vHPWn;9nr%Fw9@5u?lQcAEm|q;G=g`_mUD}O1k&+^KZ6<*FtqX-$rqT_MwRZGF1pS{tT043$eiDe$E>}g8PTBg+p5fy_cOqQzH2*G5^Kgnxt=5QE3YbcLIupBw9JsjE zjeO>Mj=v$E$P1qF7Mf~TJmTdo9Bz82) z=%j}%@(pl@W(3B}m5aeK&Qek`{`b1|YLPs*c&1bIsUxaURv3l}iQ3!qKjE70pK$Fk z*t|J10TQ_ZAL_K6+uEWftNkZjXE-kERmlp4ia(q==z)tUBLh-$sLK1ZED_gMD=Lsv z&-lL+djH@4P_^7L>jDRe+<5=4eJAl^eSRpe3IRaIO$-I&zHNtWg`=VBG`BK>kp&v3 zh=!=1ubcoyvmZoN1mK7NcTC4Fa-+AGJ=HJ=5`GC5y)KSFfLj2vJ}1+X^MD2(Bj^g; zMOX)E^?qQAeVMruyS-sf&@eQhjLsD5;gF{#DxU<#CW60juULtP9gGfsNkfev94^Bp z;*?)AA5ZhcrY;x4=*vVmzAtE}<;@lN=mSv)jnyK( zUu%C)(^tVZeAO~K(^M;o#VpcbS`=5Z1SGSoUgebMdp$srkB@(St>-yNi3JqyuC7yX zG?CCBb#xN+s;Hc4f?YDQ2n~Fx#s}Zj+TDkWtM$+8D1o6j#o52$g{7-nWzIJ*>%IoY z&K3NSRLc?449jxQ14L>$>0gX$0WfXMaCj`K#Rce0+RDZWk7sdDnw)^*&x*(rfYM2E$GRojD zVbf%yJri^D0#o;=^DT$L5!W-a$Rk&mT_>4ts&V8>(}imEFjQoL1uVR-B`=qc^h!Wq zS({-XSM=nxdj4~9=y4W*Wg5^z=mV~5p#smfh;swiK8&U3;r!%gG~W|+xuK3wW0U^8 zhoM%HBG{0_v2~#mh(s`#_}TKwp7^_zvVQ=Kc*4Hi7IT@}ZCk`hQsuAjGn87w1#+8? z5o)u5*}8XCT!iaezUS#$E*?2Z5_)jHs9TWQ?h|{;_YuSKATjd zb*bf?;^Rj7NRo;q34?fJEgL>nwHojQuqEeK$;*lbHv$O00TikJXyZMT>5S zHvhHQl5MWY4L2~y+GGd-WE_%o!KU*q3w5L0U*(i3_Z#>kFxF@Qa400D2*|tJd5s5n zVE&d^GC)iK`hs!&AUmxN5FrNDwN|I@0@I4Fa^25*O~6He-18G-?vs9(shrC=`-~{C zIT5{-gTMfu<^1SyM`XU!fY_X;8(A%?r@Psc+QB&plp&#cInL5>EGnL4dYU#ZnIvVJ z%mRJ)?k8d^=LesUB(&PDcb4CTo}<{@?B;joKw`N}9N~UJr_56A=c)B&@K`(U`TARMoC!$X zs9RBb9BvlaX-pF$i7rbE`(c?r(@$d9Ow%e!zH2mzRLf?7;*(#hy?D@V8Z5t}OP}Y- zxoCGm5sUv%13>c^Zg>V&TpOqbQyJMzsK!@8h=`u-db1DPUW#4dyp56S- z?{^)A6F6U{>D^o;Bu<$GrW%M7%s#*P8vNofcP=DvosJgf6XJ_8!n1XA%*qpiRMsfb zF?I15(}%#h<-Irh$%gDNd5VqE*T%dDN!aa_s;5vc4hap z1q|o)HmmF3pPQEUn?Eb3^5lt5Cb|kI2I716=Ja*mrv&P?O#fiB*j3mHRxeexZDT$q z?Y&2X(pLVKGL!RqOaSc=vM5xObqsXY_YZQ3NUT(39?O(Nu?y zIZ>C#t?2P%jxf@|QQD7{rAy>(>cvV_QlUwbUG&PGFONaUMT<27W64rcAMT`Z8Gkfh zo$u#u=@e_S&3B1Zy6?3pT!o+@meUhRj=l4~%S4eD4f1?x5u7sHaXJWfGJ;;kSUGLe zsf?QTY=>~OJ0<{=xmh|_=B;3&Zc!pwL5zpTF=6A7=Xgchp)r7A0VSHAkc=8pw&(p+ zG|X=6ki3EwI^5SwwhO3lLeOMq&rg~V*D%dBA8&YF8&wWFg}jOhSIR}fb-=Fh7Z0Rq zA-qh?doahMwx^Y98^>{ac<4g!cyYBi8B>oIBDARnnX8gTS`cL9vW^%w0e%Ae0I-hJ zsv54PS6$2y&0?;Wju-Z6 zQg1voGWHB{cykoJ8JakyM8<)2<=I}=Gep3hASN}}+vdKoHj~Oj{`Qt5Wnr-j2w_!!pQIu_^Pj=>p0hpfho4QZWE-GhBJ5KLyI} z&KEOYdD>C4f%bu&2I_FJ*;Mvq$cr#PnmeGt8VO>@aHi>oTTpq zW`q1YTqtb+ZGNYh+!I9jl+V2fhR9FipsIs4MW`xciA9_G>sjmAM0sWeDus|3is!Xj zKgin4#v{N~b34-i$k!J>I6i5h`}avE=RA3-7WS)hz?|r%c*x|cxT*ewk>S&4m*1IF zu~m#x(h)JA#Aq~ucsoA%b|~OeJZ(_x$J5oM+WhQOW?ja=)lj_w)5Q1bwlBcSJzK3& z%$wtdjMpE>9;mp-%-Jztie`(T%wrVlL$A)6{$ z${lSPWSK9!W3166f`#z|nc~*-;V@!k&dk5s{FD~!D_|nruO%R5UM5*4mClbjDMnbxT?UFf(`JBPl7f??fZWKyu%Nu?#d>>AifezMmKr~9U%1P|#V)M~hY zD^JNAhM)EMz!vla|7&5r6lLN+=2UK9u!RoI{1&ZL7wfFNk*_li*E(0X7QA}+H`SO< zU8!Auea`&`WvQnw_^@j?V73t8Xvo7^ZLBIh)O+Y3AO=IYOtGgyBji!aDkCXkO0u^W zb1U=kyFa?EDC0B6;jcYLDGUVN(&{sqo#)jOrgZx;)u8{3M)X1W-g zt_!F{Vr1IsoeslnS?2y9Mbz9$IwLKnH1r7E8Tj3C*m0ze*LL{7_|Ho^vZ0E(#=!-j zqWS$Wn+ZWnx?QHqW?g7l)JWffaS%mKGQx1gdrDcomAvIF44#O~6kGpu)n9ijk;c6# zh_6e{2(xdd)c(c&2?3x2hM^0xGpo{L)5#UK5?hi1hYt?_tJ4=HOW`xjxzfaFWZtYT zgKcPYgf>5F7{XD&r&JylP*GL2QV9CtuL%v03>(H8s_*+Ja1H=tlzd^j$2xJh@W~%N zSJ}6sPmS2t9L{?vIpNWh0*Nv4?inMbXd`1&igo$J5WZ0%;}7o1#(hJn@%>=m?)w3S zlp>0Ja9vpRZFu!ka{~_g0hjEjl;4o{%{_%`adK`{PYg0J($>4cQhU zfK*mIM|J@3jXuI;KX1IqxzJ;I_ieK{T$y_LCV;?`FG4I=i(eJtShI=uN_-0G4Qo(; zNa^0SxS8m5Rl`1AOVff!hV+K-_>A(Hd=jxY0)|uE4(=2vY(Wnh3iujCM$D}s@VMEt zDT|ql)$m3&D#@~Lh1O>@icdmF_pPCh(4 zY4*{S_lEczBb=dc&E)s^@0`u(%!bW0WX>nDTV|b3Tb?bXPyBpCl#-vi(N_rks?;B} z6u9R4S#${xMoXPXvI~{rU^x0ysIhX4WMj!8SsX%?Z7Ff>lSK~>h5O)8H5CyKpBKJFP0=I^E(>{&Ec}n!c*F~-=m66%a#fwl1{zlN)_uia_FLI zL|4VG$V zzues)7+v-!rLu9b7PAp#d65SbX@a>eu$7BERgU|c!`0D<*dKJ04iA{}60*D=$K7rA z%ENJuBiE5x`>jrQ)8#LTgg!4qWO=Vs>7AuFx*fjflKxkhFF0}0Z6InCm~}y|uzmhb zsrO?lVYI&c7Q@w(FJvYL-dxLi_SJ#0xVxd z!KBIgdDZcx;RdZ#+82Plsx>mjo((~D*Nl9>QZO~u)OhHcx21ZNh}oZuv+z1W-+J2J zP~{C8FC8=Eg6{uJy zSgIY^;kFBbwnh?N+ZS7PShl;t0ufuZHq9(6Ev-87k5a#Y7 ztCeaRy4~(KzE9D>KDE@ShS#$wJQOBzaXH4$nr_DQ?O0pBXB;1f*1b>z{X)i1!f}s0 z4W>Z(a5m20d7lzl%HuXk*3+wVZ*QVfZ|8Omx>YJJ=ELj5AO*B96vQ9#qHfn#5pZlz zw;;19C4Z)r11R!sE2hU=hgw_Kx5mIR^7qr4&swe1l+`MeN_98y9n$!h)lBo%fE!y1 zH6B+b3DN}pl}7thksu_y8-^riOIu+UiUL$%-Q)EW;d(w@W!@@o4K>@CR*W{EGE#w+ z_%;wnafq*LG{!fO3LyXY=-Ml>(!ts*LHLaga8|ntvHil&^c;5pzNj$>mXr&$6mGy} zCU$|9taq?hmA+@diwy|)`bheo6@rJ<(N)%|Oi{(!YFx;a$cyD2PJWZTj`U8>oYziEIvbNR2Ysv5b#H%p+0yRO27OzB^3Y}>P5~f%dkou@u0p&db&uVen8B))c zq7Wik*Q5yo$Y`HX{@cdXA4zl3DUI(vl@@B#z-j#X%m4Y;$D5!UgZ)XH!Lz@qU)bDd z)NBStUUi2Iu;FOPr@Wx`!?GrZ_J`|(y=-w~z+~k%1}w@rb|B=%^|@Zp#9$D!b!rg^ zJJ_OpWPd-S9z_M z3R7+DUtOvcQLq1XI#HB-h?P_2QnrjB33kF3m~v%Sshn&?f#u~@`3vL;{@;~)fjq!f z_a9O8|HX}Ih{xNeR}~Q)i&66A@QIbCndJtwBT~K`fK{+wIcR^yH;BogQFDh+jHIgV z3|fp3E;-*GDXSF~(xq2hCu77ph{DMuP`IUjrUR{Cs`z^OHccb7D}W`LD|Zk|1=hc{ zAF;*k>E)9PA))`%A&KLgy7!8;4yIKkF>elxXHMd13O^83c-$-y1A3@YsN3bVd0xTJ zko8i~zm@ulT43LmjlgAVwE77Qv-ODpS9ZRcg%B;IeY|YG{HqT{K?1S6S<-@0j~611 z&kSn5We!0BwX;8hV3WJFajL012)u;xAJUJd~%%U zmBwgDA_xOGUwiwHBAp4jcK5)t-1unf&jN=W0tG>P#2eivb-^3W{-s*;uib%vfiPaA zo&gaZmY;nd`Y_Nw@^j&M>W^!xU?Lz4ygugUPvNx$$>{SfN%w~%ZB6{c zi53snp#*RD+gj7#+m0q9pO|$DW2tnLsiM!X=NNsS^KC3mbw^m+0{aZlLHinNb_KBj zeaNq0UbP7us~#%}ei(6uFw|0YR?6U;0a}`j#$!KK$3Iuf)_dA&#CDHj>yO|-uGq^b zn8Uat52xnY)OVBxfU{Gud7S0l7P{6l;20g+Z__N+Ub`&4EiM1zGWr;u&ZU#zV3=S;SHcOb` zKjpNUhMzvGnUhM)R3uvhXR90m(a;IdN4{loIETKT93O!5vK38J%w?$*2Jkj(Pl(s8r< zEY0iGkEyno%qL&R_8NbELi!k&91|X04qxOPbZz|RAA0Z*3$=tw`Qx({NgwSnt7UO} zV&Kh-8G<%2Dch}Dukp`qf!(9yx{s{KCR@rryiiU*&h|LssqOhwvL0cnDRQ3)Nz(Ds zj^hlk1N9v$2_w-z+1~weQ5HEF`6>$>En>p*pb~G=z0AwqrnT{H8c!7{dVV&c$#i1C}pV^$qWskAy;w44Eu zJt$bQ9R_{9ku>W9fxws?7z!zFDlfU*L4{d8-+Tk{<+Y^83s za(k9at4)X#%d-bJ)1AxRN}U?OWAARO#s(W6xL4_+tAXbOizbW92#1M&!+DNHUUHCx z(}s!cD&41;Fo@ps(YoThz#y8}V|atUPmK`^EP;TgMTVP$ofd|;GrOr#A<(Y$2K7sS zp=L7*E;Sq!0)l9wK_sKvCQiG@8REe-+v+pFa{@Y8;i7aNw6#2sv^Qy z?7zz-9nAFn1kUIq=MZgw!(cO!O?-o0?H27x4FPuoK?`V-K`5VR0z#;^6TbZ%GEal9 ze3KPEr%_&Imd?LDu8g`*boT1_dh`xgc%izfnHu+?%3?4<8TajA0Tc+g$S;nsLcy1y zjQ}kxmyzjcEfmJ)I5VVs0O*cDI$cfZ_k&JCX^>PL(9X8|is>{a^!Do)@IDOdarm2G zq61wQFUS@??jHr?GgoW9m++Ajyw#9$j1WbKq$1ntFBFEbeFQziR{)O2v@YMYgmke6 zdFC>TB4;mme7QUCcle^M|)HvP>%SG$tLZ2jGU6YF>7pMImK z^FA`#woYi?nGzjmDq>IA1eR5=@eJSaG`4m6YKPgkrT|d7K+O*tZ3v|#Uz@^ndD z$@SM-+rQ`^(FJ2j$QigJ{*<2j6Jlq;OnxdtOZRatJ!RV2IJzrUzt5e~(MJ*P& zKIKO;uWF_k&@vdNk4^i-UEdcCaD1@d_C?j)0!)%toK7lvsu+*di~nq0xx$#sRL(6> zcxb>B?Ya~B)2^Au0y6yqM)n;9DxpkdwfR@I!k1?c`jxu^mfPB>^CpZZx8QcH)+i`0RIS?B}V5f;d`VE?VHo&5opi=d=BM& zo;sk$6Bplfn$*zx-qPRo_=V@Vx;#uQ$mkhEAJSa*;vc2-9 zicPNwIf<&(IICFOP`LL)NW)JxLA$TfXQi&XRIY;CRcwbO{0fmMfFz%pY=L4|If^Z026$w8SApMzl^B${hFIJ+7MpWi<7%w^~IS=y$$q5`x|4fzZ`OH^<_Z z`JU)0jb%=_O!|VOiF9uf{Ws7Vk#Ne151H(O| z_!xf%^E|uq{{FT%eisYNi(+B5CG~Stn&$_b_;Qdb{>=9T=#xgh7A53pPs7u}C{J?i z(-w^zG7oPEL=--fv@c!TqOoTHsWnP~{)zCZos(3Rht%^kkD@@#^TYm{uw2ALA;|&R z2*@(M&{VHNxl_N(7om_``JrsA|jJS6gM zyZU5~Lhvg{)8>QMwdFxwz?77m(tSTA*37Y%>FZF~csTf00#B~3MzUyfoC@5S|BZo5I_wdauV@&9KnPt4N zlD*S`Otsikw)bYKqAxoDOK&GAq7`0Mqz$*4EYroliB!!^d@HRh21f#S{H7?6Fx215$+I`>l%0WS9Va3}C^eKM>rvD+rOYn5bd2EUi+?=&rcd+sYOeP-e){tOyHVlu_|f9|b}d_|=oW{Wafmw>?!)ht zuteT|K}Qxp^hk}vIYma|NU)&FcCT=Gx!*~acjVd{XJ?Sgj5({-F4k;SN0TjA(6_Q# zR^Io(x(@w462>)MBBar##o=)sk>)GnFBD^@Ts$IayQgqgz8BtVsnL?>YDX}N@@}~^ zJ*)1J3vO-WJ{A@kiUSjw7=BokQOo4Us$wbkyLHn+oA^S^{Ewx+48JPvI+hI#p?~|} zQ=={;UKBBIeNDKKpe zd|Ttsu~RCYYasRDKe`;ME9Wk_)yO3pQR2#xEDBPQ(_A`QJ0ES9DDsH5T*XD0Y4QuB z{co8`ZQ)H2e*?V69C}h#MVpsu?Qmu4l5TsUC=Fa`mB|2vOb?$jWSuz z_U{T=eU-uiqwRsxk8uQS2MpAE%0pk{^O=6b>wt<2=}GwvIFxczoG1uhmy)XmmelKC zluN&;L}TR=WRe_{m>9_D+hgB!LtI&>E3&zKy4Cj?2sxP^m_DU5>_Mt{yx*-oF1)fW zgwH&mWtiXghoUT)_0h1OH@Y&bKo+#P{6U1^9tg)HYnhrmzLWQH$Pi)_inls5W%L%y z&t!c&A=l$17IskhpMk9!9~K1(EfUVFmUZch!59-Pg?r{OHn2<{*jnSq`1Xmf%Miy} zK6U-7lo3XKXOne#}rS? zpSX?tGhmoN#x8*CSKzBKT_WgK)E- z7x|-WcQ!17=RMyG=fs$K7SQzTNw!e6NboU(k^+;A#((4_WZS zjy*~Ss86smZfr>ErPW?vsJiLJz8)_Y*e7z?_52-)i*c1U$6>&l->?9w(4SO7q9#=> z`&1sstSqYgyBFPQ2zN(SXmUW+qK559G@QoevQ4677|oH*N(#qIL^L*%_WO1@qHKZk zFicx&Lpf8dnK_tno<7qa0Dd7pWUq?Um4l+9tPU6U4ibG#G2+xFrN zOo|8;>OctWW&qR{;$rQY!U8*?3?+vM+!8iWh(Z0-j!rxfW3`PR-DFrnN`1J*&cyQ>Or+vD) zomT-h?^UoYtF%q$JK?D@0_p-#BL}8l)y)t9Z2cc6|1)o5K_~2aobpz!Hr6yg+L!`k zUjckiK0y+b^6gp~m$m)tixdVYcU8Njy3&aDfl9JWO`gOq@L*}q@4B8C7(ihHF~TR> zK~oPf&xPXw{!SwxCIm`A(}1)oB|K=GvvwaNz23_bT*7g9pT`%wcZv%qfGd`w`P6IchFzBp1*oF^IN@Tc|S#M1?NgXFm%xop)F-+nh2 zC~G#HabyBgY9FZzEOO!g6iG68g%n6Jva3vs=+aeTk@B67QM4D@^xxYQBjF;sEtR!# znSIBIOP#Nl6}*h-m&g_g1Mi}K(UyOeS~^0&l>~srAGUsS4isL?a9Jt6w+Ka%WV4ua zR!0$&0j1s%QKTe%YCS>oxU;az;aQKVL-1vSQVaI_@pSZ6FeUeSDLHB3-saSEAIQjT@i4w^ z+|3Bbs{zF|+x_LwQ@|9R^ugn3t&GoEl`fr_1v&>XCTqWoBFKI?!OG@$DXg_t+n-c! zMNgX>kLjv5KiK@9ZMD&`gGU8o$a^t_Y?PcA6U9FRUS(r6zN2LQ!p$CWg{{5p8R3^7 zl{+d~t|v`n3Cv`I?swSNp7#>|OGfJ=1QBO$<{^FBZcJKPplg`5dEJ1HfTAFTAJkQ+ zn{~H(%^b`?{#)#gwEr|<*LVLLE$w6l`tC{7`$=u`P}3nvqdPBmKzkk-Br6F0wjF0n zR080O2sl0`Q`vI(v^G9J(B}cy3xkeQ*6s4vt@5}C-VaXMoV>BClDfrrC0Z4f)xW22 zMN%6VbsOz-yR*TnhoqEVHVg|3oLg_Y_xzwMm2qS(o*wKQr57sW*zj3PTVI5Jtm!vv zMj?k?^N$IW4WIUblBBi<5TiF6?VHRk1a`||Hf2jSmy>D@h`6m+rL-2t}$9VjKzp%VpN(bY-kTO>bhRxjy-;^ z{XqP6BC9tUrkmX;l(QC4hoT8n{3UY0^UDH4pz+j(l^J!P7T&R++v7o_=y%krB zCS|ttW%~S#*c6)wiSpvpZ;9EV|2$7`GC}q+B zj7-cpLJ+rTaw)RgGHUr#MwY~g`_GRM2((QT_uPi7Q6%j6>e*7SJJqHSFj06!oJu-% z!OxS`KIcDpr`q^#CZw5vN*Q!LQdSTD$ONlg+;-ij!ZD%vhnKdO`0L8MP5C5E#t%_{ z*G1LJ(l{wnH?*JyVVax{wI@3+|ArBZDlXKH1UIO{k+qmA7I?CzH@|pqNnJ-Kk5jr! zjHeKaFD{p7{vhR>j_Z+G{}Yqm<^J?w@#KC_S zM|U+dr)zp3fZFXso&I=3aBmm4geU_(vMgGZv1+#>0>_I3>K(wA;skNmZSY9p|G7+$ zLPw_c*wMcEugh8xr5rikCu8E~^|Ou4+v9m<>O0JRx`6qGYEE~@N`c49AtN!yKEKam zrtH{seC4fPO&@+`LZospag{8U*GTr7o3qpBa`a9&5Lr#rJMHJPe}bKxZmJ73b?~rU z=LSp%i}e*3aTWOS9Xxe8Fd2Fy$!_5G9swt8m97r>uA3OWsG;^7y)BWo8l!u@s|_Vl zu&&fs6!(gb%oQ^zU_H!3nRUsOV-kEFyXX}NXz5v7uNuS1rplCGW~mt}2W|l``|SHWs58)o;@luGz8$zfO_!;l5$VoRQ2%QK1UiUhXy{V~MIF)=C z3*)f0-1baZs8+B1xF@T_$v8Cp`>iwP`w~d}vbo8t!(_%*+k%Np(hW=oMzU(nV>Q~!YyB*B(v=oR+(Tt zWQ1b5CAFk=m?OJk$H~(Rh#}?eXs*WAfZ$8xQQh23$_%fCO`H%!!Wu$FWQfB|)G6~w z(o*1gcgBvH|LyJxq3D#%!IM;#DG{hH$tB&sxxM({$QZP}yb zn(^MtG+R6*Ef_2)`3+ZVBXzlCN?2-fdt0Fixb z*DIN)X}vfNASu>H8 zD@FX2h*}?QV#7o;A2B=m+^>!nD4Qst;ZR~o>`SysTE%tU3z*Vn9O1HT1l+rKtHz8% z@lPnJE$9Ob<5ATVrWd@*B{}l2?=d&1oQxGrnK0>?3;iyYdIOw?6 z`fV%A$)ooEkQNr`c=vh?b{9(fJF-KDn0x0H=(;$>g9y1KBvl4 zs|@{dalb^#CP~`^BQ;5LqGE|o2+812)4@z;QAqtQf=QdbA=aKeD&s&0KaWW%)M8c-50btG{_0 z3lV)m81d5@yRYfRHiRDI7KrXeZYPahPlNgw=CVBLv)OBbZy7C_w

V^zwb8`R$?s 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“IG>%(TXOusyjF38MIm2S;cc# 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 diff --git a/msautotest/renderers/expected/uvraster_reproj.svg b/msautotest/renderers/expected/uvraster_reproj.svg index 79e495b074..9c03cc63b9 100644 --- a/msautotest/renderers/expected/uvraster_reproj.svg +++ b/msautotest/renderers/expected/uvraster_reproj.svg @@ -2,489 +2,489 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/msautotest/wxs/expected/wcs11_post_getcov_gdpng8.dat b/msautotest/wxs/expected/wcs11_post_getcov_gdpng8.dat index f07fa5820adf3bd3670e2962f37979e2c19b4f5c..2655644e89266f6dcd2ff3f3d68a091d7a5aa245 100644 GIT binary patch delta 203 zcmV;+05t!)2fhce`~rW@&d&Gu_qDaP-rnA=t*zG9*2TrerKP2uoSa%(TL1t5Yinzi zl$3jWdt+l`goK2QjEr-0a}xL*Hvj+t0d!JMQvg8b*k%9#09Z*xK~xBtRf|ai!axke z425=Rlw{y<-74kgb^<}MRMZy0^z;@_02C`qbSgv7r{r9ntqYhR?eZM2 z5rBOy55J$dfwx($X3a5=vF=zA)z1%9=LLip`-rk&?oUN^`#l^*?rKSJ>|5{pFl$4Zf zYioOZdyI^XgoK1+V`Fo3bH)l8ga7~l0d!JMQvg8b*k%9#08~jtK~xBtRgFm!!$1rI zaU92B-1; zv;~ac$jzV6dVp&T-X-?dUzdMXlLYf&Rsi(?0000Rlw{y<-74kgb^<}MRMZy0^z;@_02C`qbSgv7r{r9ntqYhR?eZM2 z5rBOy55J$dfwx($X3a5=vF=zA)z1%9=LLip`-rk&?oUN^`#l^*?rKSJ>|5{pFl$4Zf zYioOZdyI^XgoK1+V`Fo3bH)l8ga7~l0d!JMQvg8b*k%9#08~jtK~xBtRgFm!!$1rI zaU92B-1; zv;~ac$jzV6dVp&T-X-?dUzdMXlLYf&Rsi(?0000 Date: Tue, 17 Jan 2017 11:49:14 +0100 Subject: [PATCH 122/221] msResampleGDALToMap(): fix inappropriate cellsize computation when loading (well beyond) full source raster. --- mapresample.c | 7 ++- msautotest/wxs/data/polar_stereo.tif | Bin 0 -> 34268 bytes msautotest/wxs/expected/wms_polar_stereo.png | Bin 0 -> 10035 bytes msautotest/wxs/wms_polar_stereo.map | 48 +++++++++++++++++++ 4 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 msautotest/wxs/data/polar_stereo.tif create mode 100644 msautotest/wxs/expected/wms_polar_stereo.png create mode 100644 msautotest/wxs/wms_polar_stereo.map diff --git a/mapresample.c b/mapresample.c index e9ed74c8a5..b5cd44fc7b 100644 --- a/mapresample.c +++ b/mapresample.c @@ -1471,7 +1471,12 @@ int msResampleGDALToMap( mapObj *map, layerObj *layer, imageObj *image, sqrt(adfSrcGeoTransform[1] * adfSrcGeoTransform[1] + adfSrcGeoTransform[2] * adfSrcGeoTransform[2]); - if( (sOrigSrcExtent.maxx - sOrigSrcExtent.minx) > dfOversampleRatio * nDstXSize + /* Check first that the requested extent is not greater than the source */ + /* raster. This might be the case for example if asking to visualize */ + /* -180,-89,180,90 in EPSG:4326 from a raster in Arctic Polar Stereographic */ + if( !(sOrigSrcExtent.minx <= -nSrcXSize && sOrigSrcExtent.miny <= -nSrcYSize && + sOrigSrcExtent.maxx >= 2 * nSrcXSize && sOrigSrcExtent.maxy >= 2 * nSrcYSize) + && (sOrigSrcExtent.maxx - sOrigSrcExtent.minx) > dfOversampleRatio * nDstXSize && !CSLFetchBoolean( layer->processing, "LOAD_FULL_RES_IMAGE", FALSE )) sDummyMap.cellsize = (dfNominalCellSize * (sOrigSrcExtent.maxx - sOrigSrcExtent.minx)) diff --git a/msautotest/wxs/data/polar_stereo.tif b/msautotest/wxs/data/polar_stereo.tif new file mode 100644 index 0000000000000000000000000000000000000000..db3599c1777005393bc972dee27ea0f22b3edb5a GIT binary patch literal 34268 zcmZs?by!@x7cM-wYjJlk?(Pg)Tn2Y{w^B-Rx8hbDibE;x?ruek4el;?&bjA)&+m^f z^UQu%vXe|^WzU+dl{fP8OaMdx0DuJmK*0c@AQBkzhWbyQgvikU$^X=X`5zhnKlz_F zSWvJ4cnDrW-njo$j`yET4JpU}ug)q&Ci$N_BL5?6{Ev(tf(n3v)J2ATz}Ii6|MpJ> zk!!+X0J@NJb%tyO-NulBE?qTUjVe9DP?B-!_{P}E-y)8W$R!WAZ_a5=?H1z z>16NZ?ClgFRd4hbRcDBLa>0S~|I zT&)g1t*&1E89aM?+XkY4@ai9l{n(p;iLM&|vUsA0yD^76b_0dRb|-lt@^f&Nco zkHRWIpmI+`*$LGzRjSlc9@)wTD|dcKlkl-qH-BcB9y`_g^77)Us)AxPOM4nY5z$qV z>Gc^Qe(X5tgR9Y1kWYZ!XB+PNMt2WCFF!v&H;;&&LxN=P@4fi=2M70Mn0x@g`-x`V zD`;>~5YFME6{?3Nt#%=UH^($X`}6il-3DGpV}w+%rDc(&h}A4%P(Z>%UeS=T=&(vW zeXUz^!?#djvKmdgwDLx}=;B_d8W&A1|1WcYt13{Qj){nmi1mrHGC_HscX3J+-{|SX z^E!MM`3W*(C)oh>?OpB~A3m7RjS+{_TbI()56MC1{@LH(e>y9ngke%Gzb4}O=x84e zdLZc@A*JJ8^l&tgOHu@1#wMVsQexD4j%zNL&T_Z({V`cA@QzUNL5n2((+D+3`iiXw zNB9)}@E&rgf;l_LLA!EY-w^C3$T6L{YVtu?Ka*HLx5@i9R_R-B^4|_N!K2F75-1#6 z*4-I5SkUDIH=^ICmaeY0hPF0u7sR5PNn_JsAcrnRM<7hqy*`U?*ZW&|Jk9#*>bH_` zJ9oI~z56~|qFCv^?uzsqRSpYs+j0BGJ5*Oyz@Xe&i-l zxvG5=e8Y&1=Mz(hO6lC*r6xR+eTe6qiH5s|yS~5Nee}$Ti;Y{Ed;Y??Eirjc3=4~? zZR4-{-*ti=9pU9IUCmw1ZEY~Ys_~!H$Yq0dCDeU7+S_Gf@qt}|_s%x0fozPx$1zN} zX~Zb-v`dB5@QgBFu>U1c}%$&7W8GfJ5 zp#X~vZVQ54zt6>0HI|eMyXokZN}`(g-VA()p?XD}&N;2}SB-JS$|@)WPeRhTQmn9j zLxelo5bdDY>q`x)U|R%19_x1|hL*>EXyITz7MzH0>aLNJ8r5@$du|E1OE867 zOHRXSNxP>cNyeIIAf9^hEeYG!w!FfCo^8&CMxhoZzZ^zmUVpE$qN)-`JN+YKV~~$W zV^?Kq)2O-Yyl0~aT8y$vs5Mm?Z54Sg2|2l>t&_9!J2Z09GeX(>S99o=nf_qe0N;?u zFh1wcl%WqUM{i24F}4EuC;&8NWo6Wx=A%Z1ow@OB0|T-|*}&}YV>@NLGQ#MUfKSEI z1G7o$8IqAd^EwTvKk{UKjKEQt->baQTAW`*2r(fRR|Br&!}LjYh>(7E4qZU`Tz)+; z{P3WOc(U}ev-s9?`8GLux4*wA!YJDwtBZjihk3-2SygI1olt!yvDqG(`1xL>KO7fM zm12Nqzz;LU3P;@9S~B^Axd_iBw!o)^B=HFapQH>qCFQ+6oEZk6@-H7*%r0f92w0f3 z^g?BwS=g3F=e0lR!qd<vwrCA+^5WoJu=6UqA1v}o+IbF>~0}%Q2cts5`X%RG<4zOfW0k49eQaW_tuCo9S;6@C?53}(mcR}wwwD)S8u=1znFR6Yj*q*r@xwujCF!lHM z%P&Nuo9-;E~vamw^!v|5FzbKi&I31_9K^2nj{NFvZYy_E=7X4uiXt@!+-_1UH1W~ z8{GQGsTqN+lc*o5Xp3Mq?;Z^m4Fj#+2hU?gNn1xNzko0}E~dvOCz8dvD#ok1nH$#r zMfvoVOELf0UspOR_-jRY84S5|m!y{8{gd$#4rCH3WxOdpn`=p}2(_ax`j;P;A9m+& zP@zc=os!Zj2*>+VSkzxaUQYg?2H=TuH7CehrUJJqQy9lQ_mL}c;mbChyrAhk^lMSj zOA+{k>#I8{bvOSk&WNxJ3kxs5w-4x<*6|B3c%tPWQb6Y*f10Xxl712*vTtXtsTtjz z{v%pn+xf_46LSLq77&w?N=tHCFY(P^qrRExr?F%-vyI|gM zqsR1NI_m;G$fROqac`~SIVwSV=SG!8in z#g~$;5md9JucxJjCR$L}$%^@f2yXiBpaUi(tvCR3bK?G5Xr^}9g_1eVPiAl>j*P^IbC0CzOV0m zzPq=_fmsI`lb#(P+Bn)*JEK0aR4W8IE)6daPm6C}e`n&#%g)Tq$w*91e&N2hwc`yP z$BCd}*V#RC6N$n45~5XHQICD0Dvt5B)d5z>m>hL}0ggD+)Dvnp7+=KEDQn=Y{AP(y z%zuNAUs#YgF1VV-OUuSX70Rn{M$^=L&D6HWnLN)B6ut~tj&+=mHEAd5J>tI#APHkE zIzK&bTjSGx4vfy&+@$S5ST{I!vOBH7(ALq`@v&n{F|zjL@{lJ$nEGmzmMs?_bi+?g zE6OZ#X$zf)N?hKkNvBc9V`c0Kv5KCt*0_-0k8bgTzhCo#hAwT6r#U%OnIat1 zVcP5p`G+RXa^9c1b*n#c>QTwG=ve<`C$OyNjGeRO(E0ts7Bgs4WE%!no>}b z2TqMmcJJ*aGJ53xmPW_5^MJR5Df>(DeSaS>rVa_bf;bCru7+_A1?tiV>1Vdz=YKpk zbZlx$^-7kd+rNHrpi5;@_ifyx%WC?mTRaQ?DOx&Wa?vC{M3iS_AXO9|;Sog1$8A8T$PYXc+bzp z#mG#}h7ez>UJhMuP`(H6#59Fp| zWThgS3$fnCZnamx?0#MYh=$>@7qxXBDJty5t*2YjeV+uCG-Dd-;4>T64E6Lk5#yGA zrpn6*Td6@sD-0x${B%I>SXNcDo4eSxBq7W*F43;s-ER$xJ4?J202%`~`a%|N7ea5F z(&%+`@GpKp>CEfH~SZvms!q| zcT-{-A1t6FBZs&K)LSIYJ^KI>TDm&=8gL!>gE45iyp?Dr6=NZ1vRdqR03k$0TaCb~ zC8WaPy;}rmQ6D}n?8F2qHX!vhqAg=N91UmP7smM`CI>%HdCG7G+ELtMzrxj>BO*dW zUBk^)0Z|aha8*}Mah%Z$O~y6$Nj(O)^NkL?LADw@odG3|e^8is;ojV6;M@p`0i~8? z(}!6qP83{OWbQy4D7dK$$0=CNF*Z^WMYA>g9ZLuX(Ne*B7tI~s_!Z9N&!nUsqslhG zRdM2)d|o#)Zt7Yz-t$~xKG6}Y9yQdS47%j8eT zP5Q8&9E@1g&ZY5n5>;a>KKxY!kk{BKZIayO@FxM^4ZlFFZuTA zi7Cu4(AW2sIKQr#3?5as74gkxc6P&&13boJRVi;gYNlA^l^i9{Mq?@R@*<(GE=d-z zoR4k$&`#pivgRz8;FqIPxiDbF9i{HdkvH_$6^^Q|NE3Zcxka{;FTMLAUCAnW!J$rQ zT_w6&iE-c6M_Bf0ZvN&48aq~N{G)|yOZE>c_}Ct7oHPbyD%#XxExSL1QJK}-;K#kD zQ$q(sAt4a~A^+Q>y}d`p6Oh-f(c&@l!>uzTa#5R*K8HGRV`aJ@804KiWxVHnWaFk4 z!9P%fY?u+2i*+v}iA?)eDQ!iG^oeS#-iD~7&uRJ?4ZaX6)TneJr5xuf3F2UjGnmvZ z8+3}Zq%z{TK|Bvu1W!+Z1Gg0EF}Gc6iZN{dje&ua5n1Zg2P9t>yzn6_cU^9#kiG+# zelt_i=pMSXtkIOGjQ}wH1Q0#)=2dy0R2F^xW@KMM0$T)`@QJt`EC3RU5n9rrC7KGxdy{x36;dqhh}!hmf&P zL}-MIYbk^purdcLH~rRCHRv~MXlXYqP-Vc5492Bn!>OAD@YWd6nc=(flkiq1WM|}I z=4HwkVasa@CXcXKsE*K3rRo7`F&RAs)hL+$;$3lnWRvZ4S3DN-50{fepg*+m`f4$t zTGw}XOA8Gb9F%hd_$xj3qJ1*`<;a7MBo{q=I?>6iagAvouMUU`9VZ{97}!g*gG}g} z5;JZA4}|%eNs*6h+f+svtct8xt~(sQg&QJF!Wxf}O~L5^wN*TtpL8qRQIRrbBEf^l zNq}l6E8zsf1;evXcj)!^0HQW@ zGr|`mO%_jyxocx;k>$169Q9^Q29~Yk%DT0glkt<@t1I=QX4zC(YPD-u!p7|I-ga*I zw4{`YVP&ca54_4A%;XQpvf>rmk`j`kl6*{f3Q?5z;%YVuwMA*-M@;6HAUa(35s0^y zAW=AHn{pB^U+x24@CDd?@b~f|fP|GzOsp%Pf{pp(M*+$+S9Lo(sF@vSa`cZse>ypw z_F{L&JFp3&P|Y?hyFO#H*RXNS8&}T0zOIYJ;AC+e&H}(~jj$nBPGrwGbbs_zrbfo- z_e-rUtY!#&LmS66p=py@xOA)Vaz-3l=obd?(LxeEAbkAi$;k|BTu8T^Am6n;3l$rTGF*gye9SoNL zlq>9avGhso`6T*VK;g#1#wuT3ZEgLpy4b~wzUTNq8wclOI`qJq<7j&e)S5T3!*}Sj zwWrTM*`67ZI?1-*2amJCTnp=VdY0uU-&klYrqTjd?gKZylK{aqu&_mca3v(L^qO!i zl1X7TVO@<@L^`{q7>#vm8{^JjS(5%(AoXH z)a52YeF!9LhPWzvAL$BbEb3OXS<{A&F+!;mZCJ=^s+4IAI9o=XW-C*XBQ;}OTcEE@ zlYnt3>@hOs6;v8v52nyblj+KGT-xFRxlTck!|848I7#aop(P%E9-*$<#@0F{@~3TT z{`lr!znZkCQ=W80 zPV%DNsxT@2bK1liQa{lw+U;$*CU(K#k3<(tprMLC)VxXKssUN^ z5;>}z*(InyL+O#5E_%Ia4nWUZkXRXyIIP(Tq^a0;FHgly)dDCK%vRWPD`@%Jf-jxX z$pw8bwi1!?WKOD1NeFT}#kzjiqZehxPtzmJ(tpBaN)QdaI$BVKzU67}c=XOk#1+Q^ zbADlkq>oSsCpR=M8$_q_<?CWM7k=yMr5dDXL>0gkQ6U<(xx6RDMOZDeC9B_dV{77=s2!-pZIY3awfgc{&X~F-&sUhaNL!VISW|~nv8$AJV=Xu{96n^D23R(% zlz0R(K{dsOzOo7>92JzYmrCEunos|c$XhQ`gQAaYj0drE?MRqydsy{CQE0D;eU zr|&SWEpf0&sUDtiNHaS-!i}scH1&4CMF&OI*W^&iUrn|6DBQY%XO!Z*^hbba5Lr8hW_3@wNq$%MXS(;7vdoPF2)(n z>tv{?V0^6ymTT4mEsJRcKfyLo?sM8`GBvV6Jlw;>nZI%v%6{-g-H&hULME@xRf;%G>?O<)oyb^6CdHwm8=N1XIozzADugcE zLkGJavAD$;X_=$ZG)%N8Rn*rSkRyyF6&=aW_b@*RxF^F8)cf7hH_=eoUNvtmapDr zvoR^_k4w#uD^G8ABmb;-5RNe-;`J$LSDVG3ND?~(-^o-rJD#ZzsU^EcdVC{Iwa%O(JI#6fIkts~QE|!cLF+nLt zF4ip9isXnHGUL!=sU;+Wlf6A`9^n2pedgFI$jc$n@Vg#9=G$kg*$xS~+0&f$gDK*S)OOACyAJIjk zdo3a@&iJ_<$S(J;Cnj0~6gvfyD`RDkk4!bUKkDOq=dXjBjGVej0BT>qYG6jMg(^}gc6Q(PwXcCH9bFDc&96O$DkTG^wEE9)cW0uX zH&ABZ;HA5>Y*fib7=g15){yZ+Gd^8h{tXvPfTr`qqNV)|ggxAmG?gvwHW>^aq{dJd=5LGWMRRg4g5mqcnWouInj~nB(@%S_p)-GRSQ@>cOSaQNW=|DJ2)cR6nr#y{`J ze&FQ}5A^H9rFVY3TGFcX#%-(!mmx^pN>EJB0-l2O@cjH#aBcqvKE$&iUy{7m=4YI$ zp?zn^tHnWNKxdsO;ay>Nn$jS3K|V3};@`X9!d~7KWGDrw+ptniYb;iXDC}isMsTld z&fR3uaWg9l20s$Y=ShAEZDB~8lj%(FUxBo?dOqhVJI^!H{?;8g=U5R=oyoL2Y3FG9 z-QL;?Vn_Ol^Qc5Am>+Qi4GW%tJhDL#+e74U_#Vd`b{lf>ys9uK2ok-D2PpX;7`Ra} zHh%j(8f;i76{%AOaf4?ocouVVUZfY#!II@+~#h0?5bqMSvtDtp`0!xJ0Fu=Ioo zdhA1DnR_7n;WYwGu*vkfr+>TXgA6;4WS6T1pmFV^AKD~aWl?Ivn*tLnljTKDPlQ6% z#n7u@)u@Bop}|Pm5N`DZ4{hH}f^oTbYZWLm;!{nv)s;&sqxTtWft)=?giEKS2OHMa zeFqNuw{CBUaxdr3#qUAQCY(0Ck=@ZGVE|eMK~8R$)6tg6yyF> z|GXt^?qFmrD5QdDm+Ym=2SMIzw#htM5pZAWD#y%2M(}Fw`AJwyZW;{_v$BohJGF|k z$KV=Pd~R&qKLnrsAcULdJKucAy1^(SK0JVRYeYcia5*ANh>I1MZ(}w1?eg|#g{xF> zZPqV!aT77j?MH_|mP!fHk$Slx<_}mUhMt3~-v*ecRoX6w^e1+;vw*?{yI^x3+n;{f zdLTW&lZ#+;+C7$n9`J2z2U(MBrFMA=Qz|QgLUUtivg6s}Pch8;)ef>~mC~dOidU)p z+JUvHm?;Sd@qEQG=E}-pdot0_zb`R8yb-?L4_q(RY<9dqT!weO%05}3B#MUN@6Z5e zQdqHi+pIbA+s*sQHCK!rlNPLq5GpPCS;B*MqYBm7@Yn+NhWDw}EG>3$^WyVpg zIWzW^i0&H0T4C$Fp2anh#^&u(>_XL92h=c=MsO5D6^a*a<}a$$dgyuny7AB@Bl57! za?Gj~09pF`6POz>_%z)zl#01BLPnH$)9go^-~!OCmksj}hklT?t>p88P6{0EES_&y z9%*4)Yd^I{eVytXGGU+katn9D{_W~4)#HAI7phe*iV3-h`CBTL>JRU8g&zu563Cvgo(&*PdBgobBIAtiic3 z7LmFX8fBif;~-_c1}*UdHCRY|I)A~=)2|TA0w23jskAxMV5ZeVgKlm)r4f!L(S!-Z zjXZpB>dXUf=fJPE25oAx(2rt>eji75Ca14(2=NBoa8QF7|M=UPqfJPtD^XH-gC^U< z(Gu&m3=dJ&OaY5wneoe=q3F`gMv}eK(qc1@)g0JEn-vA&E3e}8!Ic!eWLpOIB3B&{ zaTLlI_k*i1K^RQ6ZhzXyGQWjU?1qi@*hf1keP_-{8f+96Fnh=Jm29kJ0k=?&RgKt8 zf`gLv)$K<{_U%>+^UfAVvYRKf5s$Zk&HE2rTP4GA2M73g5`H?`lyErEZ*zt?#70;} zT zCgDaa(LhZ9nE~WstS_Cu_iHIs(>YbAr}S{Mu?V3#9-+Uj0n{H)*gtrmi%XzXt+^L$ z3%N`M*ejY#iRjv>QmLU({xDUqlRgorDw-*9g5936O+*D-sOph@>i>K34LeeSK|`|p zKyll7q(vPmnsTeo6Xfw>yEf|tJ$lBWLCAqMO$?_-d9gI>>NL&oIXn#B8L~9;>^vR^ zN0<8f$(<`JPi@dcKfe6=^XCP7)(Gc9&CRDhv|hvqtk^gxe*JkBAu!6Wwds?B3l)dt z%Au&85d|s4-FK97o+@r=;o9_U+?%`946G2X=yp+676_A~Sy)l_BM=XnaeyM`(0BAo zah_l@V41tHgEipIiA^pdN(Ovp-AcFPP3>i>+_6Wct6VMP$|5mQw({__;nFt@1_~qb zOzg86fXPW(1^9j3eJngIJbZ2zb6f#A8KIxN$urS6@)^cLzrmU&07929uHY)bYxkl1 zp#1X2dF+ry?GLyWAM3HOSam>O&3$G2U( zeKlDhwjus3LPQ)rP85`_q11lcS!ZyTR0y9ldR$Cg+(v8Q!P$d|&3eW&S3^S?c7ywL zuOcP|a(;ZSL*b&#BjURM*ic(ubsMo=m1f#qr3FL zGzGH#33o8yfw}455>2Z`^Zkt^OtDHoYQF^(K*P?RyY-^1fAfXuk=*c<=x+)+Pe&sn zDV!O#^~fOkxTQe5T_ITAdAMfo5MyN2o3CzbAgaS~+tQsBm}tVCQDI*ey*mYQISkLw z-(yqCz`HlQ^Yh%xFE`_XlD;#sFeh7|BE|~SB0hw|r_X!}dcW0?ZfR&(YLiwDzLwbj zjL&dyMnNl?icI7aV05WQltz!)Q@Vrzz{dLysB6S5l1^U| z5BaJVMQFhIO%E_&3YR+X@KqrFoy< z#PZ{L$$w(gek_}Lg`01eu9uS%Oo)z(9_@Uq z`28bE0hb^Uy%5SRgbzE`#{iA=fc4g(Wfr9MAC-1U!|yd=AA7R&7SN`{onhKqx|75Y# z5IoAJb79TMvc0pV&@ia9}3UMO^a)5klg%Bka~vJ@VRVAaBekfvT1 zW*6iZb%j#)UBMWMO2&cW;-UD4nI>!6maqX%f^jN>dz0>CSHW3QYc?-WRA+AKYSHU)xE(_1@ip&h>!m>1n)!PGO z&Eybj)fgLO%!{uXn1!YOwCmI|8Noiwuo?;koUJzLzj-`54t7>1e|Mi$E}9)>g3s!sZQw>X##}tdbgjdT>i@veWyoy4v?WaY!7W#X+Jr$XJso1a z=K9@Iv!{C4iIOMG8VGO)XmL~Q6nIhxhNPhl7`BH=yj&QK*>jJD{Sz6$-CL?XmS=IB zou2ln=$iLrNgD&S9u2PvKG_ejsW&iRKFel9Mop-dOfVNXJ5<{xN`VRwq?E(9LPi;X zSf1!SL!rN>=d4>TTdJBNHjpTmcT6cqvy03&?qi@-8;z?kFXmBdp~Z~*F;pz!VT>0) zWbT!!Io{)nr#Lxd$|NdZxa&sf!88dF&@dVu*wEmsBbuQm^=uA)&1T>O7N(kn z*!vYKW-!Ex+;x&weVVBLh)(@OMW+v@J}>d}~D4L6w>#To&sp zBS7ir63~?lV@Nr_$K7`o&ynUXhb_{(WwjnB)&%l`I124^uqp?oINpU^;1rV%cBB$44C2vaY%>j#eR1zG5arbZ#ueC>%^>TQSqsWf}*vl zNUT?c?DwbhpttKFKw^N^z)?)#uNmTzqM{$}wmNf)IA{SQTEf8q>~* zB{XGT?_RR4k{KCgo+ORv1MB@rNcIq9OQHSxn)L5vScFczo6 z+(OXPRG0}0cvqg3ViH#a3p~`IFOHn5SQ3Vkge7Q4+9Xyv$=n8wZ)Rty9 z7S_l~2oOW%zPM2=Z_cf+&k>`_4bqqFG`MGko?NXy4L%Lt^~}s%f-CvR#bEY~KR@oJ zLFOqQ9UT*VHi-_s-a>1ructT33UvrwZ7YaNOpflst@W&!tz9Tvg$vtRw;GEMY& zrQwfeb%Z2!;uP4?a8!x96{_~0f*nMEBOfTlvigd+bfFPX?zKc=^>;S3UW%{W`zK~;+uyekvA6=C~#)lRBS&6N!eg~bJ(zgoe1 z-a$5yMREXB;v|ce&Qh+J@!Fq18!PK#f-OF;*O2Kzn_Sp?9EryN0^uijVSGJ1-$| zp(>rJq7+Pit5wOvR1T#2u1biV`$hTSA~ao<0Y|Y28#${d^+EvE#?S?aH+5{sML-E& zrz{~t(=Sy!>XP3e7qd?~pa4jR$Bs<4&gOTs(DhPqktLTxe@}j}n+P@tR;5T~z9mSN zwTi@%M29huw^=-{;w_b+f@;D=ZfW>c-C5FF(mHR9RC8(YUI+EWEKj^M_i{1*%7! z#F(XqtZ7ljoCVT!i|G@1rE^Z)Hp*VcdX5^3{@!9XM1)yUrJT{sW8$s9-U0&ctg@w< zvU5#c1}%2ELa}-!ZMtMZ5(=(cq$Y(<gAe@sdOC*)v5~L ze*O@Kf893ZPRre0XB&Qh;}Av?HLlp>VhkvjHk)2kGKydOxs-Y8RS0szyrxapjES^B zF7B}l{iT!jlhs(pQN!N)69qRvw;)!Q{FHTCu!ke5lC8b<`@_x?40K0pfbZuh8WG`T zvF^%yt8^!)>c5?B>7aB&0|Nu-X(c~8Q9{x~7A?~N+_1VUNqquglc$r4!Gs`F1 z{&49W)nG(^XY43%I6`dAi|dKg*T2^~=Ps%S>P3fd_$n9FI7IngkS%2Kv4IW1lO<)c zQa@dof2Dz72co%#Jd4s!IkU4v4f9|gj)+=ukJhkeW z$yZJP=@o7`GCD!okd7&WWA}jI0TL+Dh@z2-o3@Os}tF?iUT@rJx0;?m4|`oAAO z?8OJYPF3opv9TpUSlQ0!?=XgjGKDxd2I<*R@$?5=4P15Q!2GJ7(t#V~U*hI9WtHWQ z4i429xO{0^wpHlihSofX%5;UGa$bQP^ymePS^FOT1yHDZxwl_??oJYR4e17iw}grE zdsmnUoE7vM{(gV%P5#H<;Nlxo0@FkKADj9k2i~?hJB~hGH51v`b#U#moekQA99OH)Z@$R%Kz%wuQ!<4TQ1D~DkUl&`&-}m z;INgb+6Z4dw&%9`kkNjLL;HH-0 zd_%{Z(XUhYhr8f7dW~T})ts~e9sI|mMm=t1L9)s+gGdldVjYUEWXu4KYbbV8SAAV2 z8v!y#JmlCLeG(Y;K><&Ud8*k91ATJi{q**BVWBe3dPvUabjK7^2Zst~7$cuu(b<8I zG)mN-oW$W)Xq`x@guP7xy09Y_!umY@Y-}57uJ0c`sAgdB=Z~(2fden$Pu9{ojT2W1 zvqoJK^y%3+X}9Gn?PxWG)8YhXcFMc~mUi!hPwzKD?~mKw-frZZuSe*0K*j`xQ^EMP z-h51?P#pMJHa;N|s}K@UPJ(`d@$k+JSePnRrI!F&RIYoEu?a09j)K4oBYcR?oC`An zFYUXNst)fj)6CA#?@!1;)9+;KUf`gRucteMZQq3PkNA=m(D>k1?b@xH<$iKQjy5UZ z@M%6~L9gHLd49^WV}?BP&hoDEavE~sn>t#@w;)3&jK=u217_Bb*DVsJ-gQH!O}ePE zB${-1$oxuIujiew2k*B*XQG{X&ksHKIMAWMMTHbEm}G?l4MZBj*vap<+atC#B!Upy z*6`Fv8g_mh>{!`U95n(G!4QP1n0AKcb?g&jLekiYqJ8n%VwQ^a)TXNSzP`EWr6qvh z?a>a-;~5$lUv(IDx}?lYE$b_|Hy|S}tQFMe=eOEMPaTpdp4wHwRgZaoV&j0Uy~JE( z^+{e&$6ZeD`~p~3zv$@6Pm1m=Utap-$Il->`wv`O*Hua5GgW~K*1d?3q~4E0rudu~ zHS8JN`Tgwf?QQTWtmG~CEwLQdCaS`lu(&Apv?C-Wt;QJUhzI#=xJ_>WR4AQH66AE` zGT;Z*luR2az>H>|oB;Jx>=6AAF7wD@-S^(fJL!Xlr`)ho_|O&8nxAKfXkMYzg;K%! zQ#)Qb{(&2#6%|Jn>c*~-OV)6DiN{o`0$-3}=l>uW2VO69eEk!^w6_rm9YU)5>wR$AlYVoFQ<-do(= zWZbZ{aE9bwTl-zW>*L_!#wGZe&l&TO2j~~@uoLEi-!gMoRm83Yg}Ya%L?m^vOgSFf)^QA#THvqs032jEwY*G|%v4fGT*y zMXPS?@Yp?8X^8Hxd9sE%bzdKhRpq+fb!(tgTIKTb?H5{KVUvD3>T!}(1D2hubS1Z* zS0Rk9XX=~@i`hrv>X;JVQEsbb=)WkGmyDXok*X{vTtH3Ex(FZ@o-hN;IK6sQ#N%!N zcBJgr*=mQ=>R-J$-mMDunIU~MNG=;VtIOIZd~g!+teccq z4%3H_6vNSkmv&g8KDo7tkfkj+G-RT&8*?+TsmmMe^o4tO2KD}xQsjgS7#5L@l*W*k z2$r|tREk6LHJ}TbED8B46MFL_`{hL#y__NsBu+KAjLNI1yS}<`#_TRwb@sIXYYX$s zk6A-qP?$|)Q^)}7ich;(rqZ~Q%#WOHaXmOx|K|0hyQPJNc}*NC zZpmAeK;&|R()|V-ZiSiT=X)Mb#GMZf+%AZSuq2VmluofJJ3Y_gQ*Sv z*MazGq-7QW9Zo`-gOi@SwX;iYSC0m?kS&d1TzFxYef?=iU*X@m=t}QAv39uul!N~R z3PJV03bvTzzo&-%{oQ?}DH<|3Da@Gc$`X*yWftIJt)d-h@9^aKx^rHr!l2 zJTe*`o0yu8CuY;QprFO!@#*>H^}8Ps=)1RX-@d^o%*|T5e{;~f2Bgo?ltBp@@*uiY zS;#IdEA0R#7i4P5p$D_09i9~!h7M~ue^mms}bU9pZuN&;Jq`9-b zx!!Mdx+`mIq0S)G8B_{^fJdiM^6p_8xr7Uyh(LLKOpGavYNOL`QYvJylBu;?4J-yq z*m_~@lf$1u*q~FXL^_A>Z0hWR4Q+U&wSN@UoQlO0xaTe+%Z2y{g1&n5;q%82fcg%~ z7wqU1ccU+)2m81op+?0mX$`p&T1{8rS#4}=A~!odIsH56%bn!NOe_}5BqtJy_!RVL zxZF2B@Ao=gO%BV`wwC_>o}Px%;;P!#rlyw4a<{{x2Q%XFVX729HfTXBE(bsbLXil= zq$(w>-DMSaw_b}DKLd0$tO7cvQms-eq*8?(W71g+uAri$yAQud0m=y+GdVk(LN~mt z>)^NtM<-_h`thevA3x%xZ(m=(I!6QM@HPs9{~|+zvyNL59(=)+vdgQ>uo7%-?;ach z=-C%g*!DJt6EpGjTx>R#9E&B#r^DU7v1~Bx8c5B|_ILJ%BZHxq^5*V9PfvGOOI?}I zWzneR0v^P6W|0PZ6zql%m>7mG4t1(xy|=u~<#8L$u#UnOZ!()rdIYRfE94rvl*Q(9 zC8n+pucf#k3aozLkfL*eTAYuIyforzxdtf#*L`> zbs2t1u?q2VduQ+P`0VsXQ0URi%gdK*gX!f=dTu^F8=szM2E6ViRsQ@PhWBG zaA0IC@@%MoWH{L0-{0L_=l5CkY6ZsQQE3#S3QAXu5}{Be#>7$;#9^1Ytg^No5|zzr zg<)*9*c}$L$!IWWbxO5HC6mE0vUXSu)^4<*MG)vDkS1nk)4;iyg?G7scm$lUuHSw7 z=`)bxefkEC(qlMBH;c>xnyGk1+J^F7UtdSCU`y!IbbS*BEi69(diI6$)vL>`iS@O) z#A13flbTJ;jZY*d5~-!cdUigYh(z{6B7@<9zK*B$RUWHeE#sp5Yo=1I zlu9I+P$0r25QkuaHQ1dMPs^(-%PQP<6nY#km)8o*xKXdunRE)d1cH;fvmrD%5CTqc z+wcf<=rk%_n4yps)^N`SE4q69{)eA_{BKeirQo6`C%0E+sD{xJzH{5D_*4ZGf&=}z zhpPV+K+jNr0w=6M=dclF(hI3uRen_ZYQuE{j}9VuQ~hM-_?0GB6vp(QL80N~_DO>uPKK#SkF9#SpA~zS0t}-K;fO zOj4~virL!-L%{(Yb98iUw4uLk41ENXLW_46T^Q{iyf^_+@S>k@Nk4o5P*}j>t)C)N zWJ!lFQ1RZxL0H?+h1u=d+JzMzd>iLH$Lkh>zJw=~T3n4UBompXWMY0Mvy_=mXP&Qa zF3iuRrs9d2vC!D~_}FMguZf6{YA?F00K1ySuhI80vQV1BetAZtq|R%utl)GYd;A=n5Ok z?)dEG)tmR9{|umr^yA0(Z?DlEFPzicixoWM-^4*w!01~0=AbKZ^ufj{Ub#3Y4tlx0 zf3UT%I6jZ^*V5wh;#_JxyP92HPOoHUlZm->VgklMBpL}14~7GQq5h6aC|)VXsq&VuQ5AR-sCKngbb7wcChc~3RAs=9Gad&nhRvjGP zRPIgT-hjS3INIFH&d$utFQrmT%gd{ai{YiUOga`zX2vFGQ|a{d&`@9`G7ugd4u=Lu z!u_=s9;-$og5_GR*Fxyim{4HS>MTyD%TroeTM1LC>SDlhw+``&o zDm|NAh^JP^1M_ps%QK1O_-J}Qo{5Dby}_Z@-o9{0b4y=jqOY}~vdpDd2zf#bGJp~E zgo$Zzn$0%1*HckdTVGvU+uqvR-r3vR1Jk#yrMa!T#$R4uQCeK;DQykZI(4w;+Upyu z{WYzP<+TIRDRc)2>1}mm=Kvh{;^nKW*C6N*KmP6azx){o{fLj!SEvj@)|;K}1^S%r z;O6Y(qZR+{AR0V9}0Fw#-pK*)|v{hRVfyTWn!rrjt$}gOiqW_>n*RUt*x!Af7;On(I?Q?7wGTl z>S%9$>aX!vRQbJ?{!pLKYV_G$R%@lduBOskRv(Ju*F`ALZ|)u;K9=J@-q7CtE;PP=qx|DKRZ?_3}&;r zLSZ1COjnAPsi~>SiLnAta;mJRa%n}1CuALG34xP!o{qSCJ8ypfkAM63zyIy;-?aaD z<=TzwZ9jEfx%Sho_MYzU9-GbS3)39S&=k$EB#uS#pv}?O= zn{90!H|;%PK}}@(3xh+Wwfe-}nfnh`*EhGewjb{8KR$l`^yK*H@xj5t!=3HT^(KJA zSy^6MTmVu4nlssEXJ-F!;7{l8FZ_uUK$}e!M9k~z?P$C5&42vuKmYTaYu|qV-L)Tn{PEW9TkV}49UYxL zc84Q?3yR2bEYAxZMUh0P&(>%6hdejBRBzw4>uukD-*)TPPdD$-PCF-SNd#IR8=siE zH#@($vc9>!`)Kd+(b4gb%|Aal5O>;SGjyLDk~$6M`fQ9K(toL4uBq?oIHE_uPVi`rrQo$bWqg8nt(J-nrA=(`WMpqXZ*q znx<=tq$sMy^9)Ia-GQh-5a_reVSV3s{qWtDA3M6cNXh9H;u=(Ley}`R8HdV+?pj_0 z(1&{mM^9foe|GZZ2?9m6izG#7&6E^K5f&=z`IaC!V8jATSf(c*@#s&Nfy1(xHea1+VodU$;D{5h&!Abq_5Xm@8Dfv&HAB}G^W_bcXolMx-n z*#ccPK{wXdSC-b+X6}{XsV0m0LA_WSFV^bS5d=CkGLX>Ys%oSXEI~0MrN|5=@Cx`* z*yFJE-sxz+cIA6;qITc}P?skd#t24`Rivn{YnqW%Wf2Z5a2(Gu(O?%2zSIs?ey5j> zN8KS@OJ)a(rQwQcMe_?wD{JdW(8otlp1yctkpk%6L(_Q8gGiTvbOGsy@DS#Oo``d4 zX=&-tobZ6)hnpMCrK!SjWjI^TkZpM$6;C&z~e`;UNhb7Nz36MkXn z(`6uCL|h9kSgUFmk)TU|0<{`+ePd&JZGCfdW^Aa|7)gwY#s2ib*xiYVYNIhSG*&GS zWU_^HZa~pgPLgPvjWal{(7Y~lkzhFDb-SH5o2{qU?sR#5{vgyR%?T!`ibORMsia|O znkoY*LlIcm9ijdHTU{L;HiuVFXK7AFl{+|sIH%`K&h4FtkM<9a0QB_i1&|`=eSEO@ z@ZrwZ77U(E(|y5^9sp|VEL^naVoOk~a91uc5$DFzN^@&-W_+?bTInC+q^waGnV6ht zG-~CckuvyGE|<*Y5-DBccu^1~Ll?NDrYI86@?$cah#;XM0Cyw-Zlh`}GRWlk;3#G6MCbxF4It8FZ`J9*} z^10#hM!j0Ejt+ti50^9PR5F!LiJ~fVv>~u@MN%b6ltfXY2%N-mk{}2iWdmN|K~Elr zEzD1-c0~hFAl3A^Eb=1H5aA$A`uw(z9-B9!gV`3~Iris^o!w8}X$%iBvib0sX0N-*9g_t>b3}9kO z1ZwDpu7J!E7sVJR918Y!_S*eI76=DRr9#29qQ*T`xa(WHdk27d@(koWJ3WWjsp&|^ z2PWw@oD0$x>e40OMQ<+uArB!;RJWUE*>9~cP1Q?dRc%1wM>R2(E>BI@t7GMX!NGjG zU)9uvp~Q2X%*&b_=M*58K~f#CBn}Qk(-dSTmVk-L5Tpsp^DtrbWICNp8Q@5I9LgCg z0B5LZ*wfkVa{2oUfH_ni9v&KkuuyAE&o3^mZR|YUM}7-(p1pc?_UeKZBt@hk>7Pge z)x!H)u76CoP0OV>OhMs*Z!bWL4wdB$sl+i^Pvl1@CMHJ)hcelulFp{%ngT&hV8yts z=_I&|={2%M6C4YXmSaeQqTwA&ku*h;G{b=GDU${h4Wk_eEW8f)0Z8C zQ>nnKTCKnkotlBl1x5EPLC?<5U%!3-`qhP|Cr=J7=iS*cNjF+~(8~F%e^IjeS5Bnp zHcF8zbM;y|D<)(t#wv+^(HkgdIU<$GXHtd&J(*Bb*<4bQAq{FYBSkTqj>TepkYHJk zCMbfyqTx_D0_lfjI9h~h1miK6PQ?x6y-5%jW+~J=N%N$y*WKj_>XllpHa-sP1bnVH zCZR=_0d)Hj8Z6Hd=&M)nfD=H^z>=PwpoQ(xC8_DX%@*thZ|nV6Mhg>hZf==B1u<}X zyo^T_C&T!aoSO7QG!>JHe5OBZq+}UpzN(}Qi6`-BOyv~lOO}*MeRww7rKe=yOv zP*i~IcY1dI>h+sCZFn zP?W?&67474H{G(vLCvKzX)V#8&{SPX6bec|RQG%1>A`Tr%zESyO2)V0So!1U-gyoB&i5iC_^~MB&d`Ljm+9fWCeA z`uyCK^d%yNVTwo*ss(x>>1wM_SJs+eZT1gm)3PEs2(&hy>sP!^zu=9rG97U_oIL~^ z)>8eMLO!Xb<2g;`Q@kuer$KTsXjn_36lpSsMKL(BP#_v3$S?_}qZp|i%#M7Dw~DJgUSGw7bTI+rW2yXNHl!U zMSW4yABa+{lCBR-OioTs-L-a>)uy>{!*oH}@7ye1i`44W7f4djv=toS*SFf#EZ?=Y z^~>{D%CDTT(N5o=ZwzO6KBAK$#^>pCyF;P&jyqv4YIg@IE(4{QNv3j1O%}j-2%1+@ zGR4u15R00E;?Ynz941&4`#B?*&K1k~j1Ki~sCp8+TqdEbagIw5=T!oSdf;#x@^I$v^j(t^t;@?z7%Y(GQCN7< z>d^NeJ^<-kIB#CRJhjsOu|@i*WlGy9{GuBsSXg(qHZLeI=(aE4Y+Hgho6F#_+K6a`WVt9<3^L86LTeBYVxlavqN3|OQ5NROV4UMgA{=8VTB=M;&&|%v-M8+s);1qL z2Fhm;6_A{7EY8oLK7DwP&b!y(MrIZ?gTvmQS-)`h4uJCU;UT&cMb{AKklp$UdWnlb zkteUMPGoCyrIe~LE_;vD9}Rmw!JfA37}nbxV-zI=$&XiA6&5sDPrzCEh~FP&uz&~0 zoB^-T1uJP7O`1fXyL_0jIG8Habw zSh4e!w3RV7HkzyVs_DX9xvWP+&O6?&E?>mm(H*$jgGZb(k{4Bik+K<0(^EW41{uh{ zVVsIlQBN2P2E&1{FBT)CL~N`wHkco(Rr5qF4tcpYR&7jfh)aveb%~hFz*JBkI@C; zF*--qIW$cfS{I$27HLadbM%^9``Xf7d1|7ht8~oU;|PR2wmXjQ>riHKLvrFg8x;-M z*bGIJC{QpK@`oJmV94bNhC^5=gyDez!557|2u2D-4rUm-G;0_`5ZYmP(c&p4qw>5c z!^(=bo806KvRf4UVBYPTyBS)xU%oE}-$KYsl50Z8AydwYKR;sv@# zGGWnq^2ECNwRjIv{i2v?HLxY_1#@f4tglTC-d~(9ru&0_m)+%Z`<#89eeG=?4%efs zug_+8*tujnsVOW2D;wttcsvfLFK8#dK^zPEy#b2JNUSbH{AU?FQ=iJ|sxA+f%9WI% z840$c@(j;07{<~9WUJEjEV`^V|D$DhAFXCER#23GYj!8n^XFf_eEIUr&!0Xa)OU#V z?VC5}r|7&eZ&;ooUZn1mWAr+crERY6KFsOv zcJ=n&ve`qTXrn@XVXrF`4kR>2#X=FBrZA7oVGH^F-f&+CvVAa2i7`@AIFf}x%<{#F zYFZF@T<5vLvZlwS(HhUP=zfWZoWZG@J~cD9@BrP)Z}03u>Vsb$ae|(xJAo27TcE%V zmh=wA2OveRWU-!Fg?w^iife+Jn(mut@2fTMT9e4C-}SWz^^xIXwm^98PN&P^@`i6a z`uh4@B#*P0&(Fhx=Jq;NE$GBh+zVkaPTanzEERJYI5X}8~L zb0qaB6~tmZ%TRdC;qiJL4iDDr16nK;RO4Qn2?cS6!?1ua8iNT#K(&e)$5VpWp)u_yd|V zKnfw>L_Ia{lUk%to|w(rGT=i?*gfl5IjR*K*A}uyCRfAkwm!SFx6k4Cx@{e{KxZGz z@fsVBhB3?^z#<`k1af{T9D%)s#-u3kgtCpsC`f{!CShKSNnE@#HIYyyFdtb|G_F(| zl~h@jaEcRHMFCeEuiu?RoA&0;{-N2QXBXqstXovIzy1C@;{1Y~_w#47QBfpBISDfU zSqrtLD$*2Qmkw+uh=YqNHg~&SYZusBn@cFUTq$O=dA)X<-R1GxyB$5w-gee!%Vv00 zA~B3)LZPTP62L%95R{UVH+{Gdk^+Gf1c~l;Ika92vRa+Gm(TlW0v^&Fzi~@T$DRLpq z6^dXHEbIvqHd{z)_i{cThO;a|(gbJ^k(d(&MNduMtr?J|6iHMQ#mcA_S9MKSc_E(A zjLcXeJ5X6bPW13Gl&$5rZ&0d5g8pol?eD+;{=feRn-$0Vc${6C`CD3RlE?qQndxU{ z`swLAz1$>5#a#q9WD^jOMGys1k>#)o2q+@%C?W{5j-`m~U*@lnp z?X6O&2vNwR$U$VYnM`_fGnGohM{;8$5s&&+QZ+}!YU-?Rr`I(wn%mj!bB2uCG}7 zdA%L%x`sMtV{2tkM{6^W+tR?LceA_e>YGJUMW>iA=CV6Gx zX{)SP1dvj-tXH8@_VuZiDvdiZIWYii2yak3IH=R>hjb%DTBCz7*=(**$g{ArzLCo9 z?886w@c0CCe*B0)FR!kyuRjCl-RI9Y*VorqmltJJ3iK2bib;=9kfgh0Mo}QpLIIKH zNzin9GlgN38}V3VKrZZ8G&D3dHaFD^na#`wF~7a7mEY6JtE!dB`=n}7SC2w0<_IKQ zZd)5$%BXK-GMGHROezyg#WJ}OOV9ZcsCz^Z7l)`r#4a8`6&qj~I+&W{bsW zwAd{+r`P8TPcE&-H?zgP!{cL&d3p+*pD0e0(c8PbyW7veia}BNQpJ0Ab_%77b6N&{ zAuWRzZ~+$(XaG}SlK8NWBRD!cnTMQoX( zx35nq<#7aJHKV?%ql3lb3KVj=yhq%t=+lmvjHAFf2%*(`eBLpG(L82^&&DyM$z-zF zTrS(V+wSss1A*zeNHmcyY#*FJ!=Y@RoqYgG#CeT4Ki}Qm-`^ut1d4(zUb1vim%b~L z;^KYD>GsYxYSR+n7Jmgz!ylBLOsP-~o6NvOSS`cDBM_s8F_VQL ztT+htf9y`DcQQ2N_fL8zrvP+%c5Zb&y>)Q>9(N{+^K*bfoL7kR?*7Y{dtANHq?cD^ zRr-Wl^gSj8(BorDd{Oc4AyD8%soi-2MWRcArcXd#^GhrI5p;fZjoxHbis%ZjF zOLKkWpBt;Wj7C}&t>@qVz*ZQCf9DIOTD?@s=5f2&0>yw#rBtf=wMMfAkSr#PWo#5t znt{yju-hFjm&4(7IL604{@~2w>{M_n5S*F}OiqXAB5TR5!*^#06H*0#E)dN1&2^dc z0fF8j?S&lQAPN2ndU{Hc{si590mW5J)-Gfel`RRnnMx!q#!;V-%hJ4gTiw#kX{e;t zvf7vp)s4)?y4t!1+M62ot3UqM(LX@zQ?#ihef<)#K-eQw4D|PF2B26?P`3^{VFXIU zm=Q7vgf7>(YuxP~hrgbQz*KN%ekB~54o*)8Cntj;$Y^xEc=R4+^ZfGa;-zYDu;AX` ze|dPgr$}$mHxcROITj-nr>D4hU*_o^Zc-GxB=Q!XGmuhTwdr&Qa+^wq?FN^1L`Z-0 zy7F~pW!3Adit0vIE4!V^WK>pHG3qKCdD6f9rMpjCEl|?sVxy{yFOn;@Lt{oLSM%s7 zVYfj7K~*7{P{CG2Iqvp&JYJ92=lA&ofvM2!;__TL7@V02O$9^Y`K6WBc<}@jh*VmP ziGUzbLUBeZJ;H%OFOVFe0OLSvFY45??(UMD7!<@8J^&OTarI`h@G>TTY6|bvl zl@-nO>c++nP80XHKUOq1*Vk6I3T6M%#Fezv_sV2FogFNZU~t52CZPZ9gvDxcI;>{Y zp#=1%%LS=)LwEyzXvQEE>(tcL%-m8mwiuq7o|&5s1MKX=N-TZ&@e*6Ss~b#$tM>L5 zcj&{z!y`&-Ij1*e(DRo$bBd=7=?0M#1XlD3zTi27s<)8K0ALO&Zw9sN#^jiJM5*R; z4V~51^}P*^^ok}rqqefLvZ8`f17cK9Q~l>}uU=JDRj}m(NpGJ>(q|w*R-Hgd*leIY zR;$?r-vIf6l0}$qk1q%vITM1WoDKr$;&LQ5KNFgr4bOx^bBil$@!ZM975w`_W^btq zEpw8fUr^lRjNbe+C{Ae^6z3F^?jMlAWV7x7D7JxlG-I;RuIc!sUN7Yf_MrU?)wY9gj*VMH!f3M@v1+->*cLhh<%kS&cY6eE2IiWLcgc%YGsCFB)CKR&E z4Q=U#oPz#@WkVU`W7o1yIORO)3=jRvZ<`(7`mZR&Lt7|TAne^a*G`5HJ|5S9KM&w94jY zdQ&S)z-P5FsydmhSAYEjU&O0_^R~8yGuS_%9UdMv0wNkI$P!pARshAr1RB#9@Os=H zaP^^?*_r83Fc=K@gQ2! z+@`;f{$i0xKX^zvUsz~RucE06116tE2?a5Z7vrIG2xY>?N#wbR~KRn;+=&Ad)F zqk~!B*w)Uj`rkkO_ix-r`rAfElcaBC%tRQWF+qgP$oYU*fRc4Mp*JUdps*AEi2w|c znJ{po_6&u?kioU}bTYEMyb@iFu0%kHQtAD(>-#$rvuyYZqsJ2?dQU z4Hd8d{9pg`*SFP8OeR+|YA^vBVHz6)lWsC1p9fRaHSTeH{on@t5L45k+3;+53QTQq zZhn4oF}k{zO|3;%fHx6eTa6`B>Fn|4JxNj~y(d54Q=DbeTPl$7USE>Fmt0LxalFTC z+cBW7!j`(4R}4;DM`t~wxv90KtG$E6lM0xP zHI?;M)s^&?mQJ2n0-gXcZDw%mVIDWySPuMd0=*dD*%Gd+uZfgiFtJ3l|Sw7wGE zOeZ#?(MUWQhuBDMW=rqy9-p3{pg3PZ@5`JdB?5iK#ajl2lu`zt+`&(gbs%$k^0JNN zc0IruEfsTUz+}mkrjh}hW5KpyXy-DUT7_&Lo5f)<+BnQkP8V-*Knw$wR!6I7Y+;JI zGL^z;GFu%mJq@sufD&2oEJ_DZ@{I?x^9 zw4mL~47-;dniFA8Kz~jmp`D(cg_8A62507$S63pdt4q<9m6c=`G8>JqCpXin%}lP4 z+yC_V{Po+n=SK<;@`zOy^F2M5s~3}&H#W-fqIdy4rKSwF`M-c7&#;X^GwCc9>Ex=% zIW<0|Rr0xFfr!g$?W}HvV09^FLa|IJ?Ccb9SsfirZjVB(P(wN$HjCM41TiuZPK*gt z)9VX|r{>Y*SX@|~4+W=}7gu7jXfzguu@Xra;*s!TEEY?_@5|)!TiZuBPtV`J1Ly-8 zWJ>}xyn2FyhVML4pg7gkltH@;igVzkGKxv5g$7?8C{VBrB~-baSd8G+<_65W#qn{2 zUed*u%4OW1c1Cl17qgWm(uhP|N+nOMkV#ogX^&dnujxm7Cm384+NaF`>V!>t0$gn% z99mjhTwYpUT8Yfh%toS-^^L@OY%QJw^~ok9D|7MW`bIjNNapjU{MP%sr|0hgifEq5 zAd?4xPhY+~;%`%ugvaR}Zc}_l0!_kAO2!!}zSNG273t`JbVndYS=d~1BxpK0I~Sau za1x`^wjRDtD(s+Fyk)jQsdf))gq=#cfGtswp9dzTMS-vIRM^V8Ea z^y=5I&%jJ&^vlB|MUFTz>OIw`*JzWwxw*O^-91&or!PzD2_`){#O?@67raqAog?pL znbhX2Jv8mH8HP1&a*0Y%ORKG^ZfR)j;;L0biCiw|l_(@)l}w`@9#r%VgLMZ9GGPmE zb-G}FdV`bx`B*Hn9)mnCEku^WAU?Tl0^g*P>CM&k_0;B4DwR&9^ZE4VMm|?Kxq0~Z z}il+K|Q z99h8h!jv!M4On&UT)DEBTUAx@_qqy3Ri#8J8&D`jN(Fp2Xp~yLPNfj*h7BgG%?hvp zj06{!>hRoDBAMD)kFQ3SBhj_Bwbcz6)oBodR35gZ*lKhmlSn22H=Rqz;@O?uv(Hyg z|M>A801+kPd_q0>K$@bbU!$x?WkI_6>5xeAeep=;Mm;*BwwawR@eWO$)tD^l*uW4L#~K?AiyT)3Bu*Go4M@j zdOnx+ww+b;_xdK5NTpRv1l_%=!4boNYK+k9`?Wfg$zg*<6bX_U_7ac>jQbX0m01|vdR3`-qHEz`>(h~QJ_X8Ckn-hLCdt18X;0j zc**nq1!V;>XgQ&{Pfv~y_sP8tui*Heox{?bo+eCoug~7k?t-mT(%RnMR?QT!dR2;c zZl`c?XmoI7aB$eD*XuMx!xq?9tOP!KA<%JeaB6OLaXMbi)ESX9dAjP@- zPA;>V&X%w{$>s|gfG%$DzdOIW!wG#R19-~md?Nq*`S~X(xyIc8OelFNBeylOMav1r zFHgvAW}n=}QKN#rCzaPv3|QTh1kusW=ddL`_52zxyS0O@?G_3-V$dMNsAE(lkAnbOt)oU`0f```)n{|Um!fGa2t#;S=I4s(piRHvvvanl1Mg$CdBAWxF zxxIsLHwAQeEN!7ifeJ!$pUEG8M4+VTA~4beVNR-;kv)9Iq~(Od9#h7op2<*0L5dTC zG)maygKMD94*TdRh)?(E>63G0aLnxrI)?g3Bs#TNEmQTXZ0Z52bXa4a@DStfadhjm zn}>~~x-pBvY`4SWjgBd3J@deT2`?w|hv>N$+KAHmLTP(zdv|+puegmIXC6wYR07H^ z{I(Xi&#u3IN1)%zrHY*pb`BUFIKTgFUJCV=9-e z09wo#2%XRFm?cCSbzs=kuT|KLCPkloK&u1m?(mFTJ>d4NR)fKyC+tQezAX?0+Cx!z zd{Yb2or6QX9u*4kGm)p>-#geV?dyU}SIw>Z(W z1v6nEGmKa)BO?TiQ72%7h`H=mn`dTv6FuxaM7uqbI?&vm1EhNUyZbw(-9iyRFMxca zcL09x&hFJc6z>lTl3!_#fq>z9;W1IHjM-BQL645|nbeKS5y|hm=ybm#p6M z?Y@W}CuZDwz02uySiBRCfRC`dT*Q!RT!UKmy500RuMf zmMpn~dk4eLU1U4Y{wD?}3MbOf*UU9DcjhyQ>2&<`JRXm5JP)6T!@*$C?{zyJMUf@3 z)uhqFA>wb%21LDHtJNyyM~G6f_;7!BcYAYlb9?hku$fp-Si{>)Mw`p7*D*$&hBImz zn}hS(4Gy!(YO&fmCu2R+7>%F5XpK69#b7WQje3)lVZEW$w?D;dtzN5EsulS6OQpv$ zjnX~brEpUy+!k(cN@e){{R6sjQJgMUtL0)2IFr$Axm+$#EaBpMz1eKg_2~pbP9_J` zry-ysP=$cDj+77*p#{<=kfMhH(lSDY8^YahZf|drKE`Y^ns~-(<9$A@k#TEvHkM^= z7Kf9yTD3M4gwy%SsQF?veEO)>>U1WP*=VvD>?-~<@P~RDySr)AoNI8khF{*1d#&h?QH=*?q3<6VGT|@>u@`rHdlbxF`UiqwOiqW z*UK|DgUMvD>$L{$=d(}$^ZCn}_DpNC7)?5x)8%selNaA_%e6Yr8bk`}g1A-ShR?QC zt5l`(eI}&+9;EIm zC?*v}NkT8U*lIQDgFsXwz{`cb-jb3jsnY9KR2=5NW^H;a!Y6EUrYoPLgr~+rB-e|U@rZgN4A>ZU~ z4}EV-h5I{HI*+{tr0#SKO0IA$*OYU&+o_yW&=fGA4~o*<#h^z?k(N@sElDDgw~6bt zNmUH`DEXz1-R;W~ig*E8TOj<1n ztk>(bM!n8%=7XX5xeD3@Qp5_JwK_aOyWQ>#K(h%-x&b_8S5ZLGy9cP9Mvvs{68P2_ zas%%>6fg7Hd`>_o@EVOzQx{=lNnWpM&QhJAn#oi^cnLwchE-V=Uy7B5tlw$YN>ogn}&W^+JApxfc2@oF@?R@}S&Do!)FWTMTBqR_oB4 zEEY5BFAlSZW&GiAD);>X>QTh$)WoSnJk*ILhv20&$4E6Z@cU^EgFzWyrK zkVfd%4QvpQ!A-ED_KlL*vtBlz&Sr$HkW8iG$@m2rl#g{- zSkB1m%?^jj$TB8_(O@u|ZH&js*>1Vx<#!7gTy zzUWyMu~C=+N3`X(EGwOEfA9ndfT}i0LOQ0xNYVh=&w4QhtR>XzYPA7S6clu- z`Y!0Hk{;(kStfOQ3`s?mTFrVLPl8BRoWi6!OPIBEm*O1hZ2mHvj777V&}AwY_ShJn zVVtZTMkFWaa9Cgxbh0e(3xwO}iL{k8jPf4*UfuJ(XB`wro@GMxvO$Lz? zP!x|>5o)-cv z5LASFcYw1cDVoQpZGPZDd~Fc-5a9(F*g6`F#8bh#i66>;t{=yXOx&D_zL zBrl$K2gl?+Xi9r1v>0qjEjk}H8Z{~_9>P`5$MXp9yZH4xpHH4=A%SCF*2eP=&S)|^ ztTvm&;)2=1AMggk{!l0s2*nf0ME3HgP(nRZhT#kZZ7UrS)e@3(u1-BCpqLar{A|8} zAqbIfkkY7=BF_CDD>|Pa)0eQ~Nf1_;r@=rS8xSc*rGY>XzinYoDk}9~9KcyFUIhF? zvC*u2yZo9FGTx8}tQE4?4AVWsaBiEOv3Qe#U?dg~g`x@IOy_?V?rPAp+r56TC%2Uz zJO+BY*__Hm`PTS-gGzCM0A`CN8uqp)@q#e-FPqs8jTmz}98C{qgpHR%VzzP)o5SjX(hLVeVW`h! zDsy>z2ZFYm%Ah~!g8>akYU`vHq^2y^j1(m<-1T;M5*sut?02vG&2%u8DJa?2P>e=Y zQS3&2O4^~KQdlY~ej}VsG?8LZYQW`3vO-ph3HJPFqtR;oyv}5DsgRS`SoB&wEO8v9 zFk=B>tybRS4+g<+Q`uA||D*6wYc{K*@-%?42L>UeixSz8%82K9 zWW3ACa*o<;kAlw76sVG_iaz58g96nl85|TsdJ1~7upJGFs*2XP$BYonqi%njNF<`+ zl-+9A+Rr{{4F;GF?5vHma}GP>}P{VcNDwj6rOq1=|S!F0Rdi0wLw84!Bt7gaD)fJ;gC!X07{l{nI^ELPW9qp3~rJw zoGw%+s77hh`KG<9AjPCP4T8rIcvvDkA_pnah9ZH?&h5Xg|#l>9- z))ui>mtfrKKOZp<{)0qZZ;qe{@Ri2PZj9;-I$yVsA00aHup^Z^_{2f=qZ3XdDQK!n z+Et)ochpKfl8Q%ADk*@fwTd`v-xH}s5eD*lF68!j0v;FVVQpvs_1~~)J9Jjg#<|hH z8UeS>=W>@{zZYt4Fd_vWb9byQX16gWmn$9)hvKfFH<`PdScOU#gzDI)EVP>$w%LaLT2#l+H< zt28RbRLuRSSTASd@klft@%ed|<4mK6mxZx2K6ikP39%&SjtjZV>xYIcOP#*d?8{Hb z5omQD8Jqj|J{?XmzVw9+Z)&vng7))olPf)_4|;$K#G0$#FP}Z%bd*lXa}d1 zYFj071;DwmkSN!x<#a3=PbUSB)u}a@GzKf<@wibJ@MlG`};fi@qCGf3VJMoIgj}}Iw{mX zNnJ{+R_edHOhe6FYE2E=Tr2frHj|1y0&oR(n3N!dyqwOchk4%V^|<`OkkcRF1MztF zx=?Mk+MS*(D&0YEFkPK zq_jNP5naR&s;Z;|f_kXcBPoRiN$J@=B~`m?qh1icUJL2Sb+rzEUrmFev6z=T)3HXY zD-idG!ag4x^2Ghg%diSE$Dq zpd&B*^}bW2+I+Q|FNvmeyve8wDh$1&zdVU}Z|`5EhlK`_B2X-3<9M)-S+7$0bUvK; z0R`A>__8fca3LAwZSZog$g_S=%k^NBcy)6ug(tyR8l*Qcs%9?&^o4U zwhqVKcj;742&aqaz_fCiNoCTWV9ew&+IiL&3`XKYI+_)-*+@KJxVx#;BqoQM=(czcJ}?)7iX_csvv^&Rixz&2l=jt*10i61*EAtk6}eo%MR_F*Z< zt(4Ygi=Ho0(t73mO5mgCb+idI&a=6T^K2xl`RIfN#uE&uGnovmp=hYTxcXf!DPl_* kz&$6c<8(j0G*(TDrTIln_`#S-O@Ek&>01XX|SPQIX^c+Y3x9~8YcQzU6F*Gz5G%YpdSAqG* z1#g?)IGDzLQ-tWqXt7X!A>hd=Zla@#MyC|7lqxeuykVRr!!*MnhbrNfXo8(t@i)0h zWuk4OK}u-6tPuv3`=dnh;L~m*ilVNW{O+~KU#mJSlJ~R?@7=tmZbK@*&Db3Yy&pwEVwm8_|H70~s{GEv>E(-W4z1tV)trVV z$JJ{5nR)yvnRs(jrg;3dhvA>O=aV|~yKl=Zb<9Z*IoNEELi+#BTmHAIY4@;~wkG53 zU42U`>nZD(k5UvnaLWzly+_403e~R*%GCat?e>55#g6_-hndl0%U?+uCh@cwG`mJZZhU`botjv>R8tMyGVQK5Xxi zFYh5&w!!E%XnQ!NhHzsgdl}?Dpi{U-SNT*$T--wvEw%9AI@i4O; z>}K_4AnA9*)W8AZ(afK%49k4K*LBvs7^#YtSC8FP6Su&OMj=U8OytyXWHMw+U&;^G z=JZAW1~p(@J@e-UU+5R|3dT#Mr2hV4O6lK+4!bPBw`DxB6ny6uL#8wu?&R)krYrUk zvo_CAj6OXClPui|PceFyU6QMnK5&cUW%c~+i~)nvec#W=>&N?D-mvf=e+8xdxfL_0>fDy}hq}_@ zVQRFrC67r?{VoYKlA~<2-US4Sc9qO3fd3(-v>;$vi`tIM zG_B$_1G+J>?Zyx?fG=?&?PKi()2y?~EU!AZBtieY?b8NIBg9v9;-}Nl1}9amkh|Len9Lq9VZ+)Hv9Py_bop&YX}@tro8Ky}=Bc7*R?R0nl+O zefdH$$fzlpUfoT*0J-rWuUi(Z`me} zv1L8%QHb*R`(Bbdvd70W2(IaOKST3mlzzG5(fL(s9BJl`UtmG`CD8Q?ehQB#yyjlj zhm@~Vx&*l4B_2B3fW%Wqr&dSTqi>8Ic#{%Ieq8iiZk#NFF+k**aJ(#k3A+>9YNj(o4l?W21T@1^>i=lyuZJ)q zBH#b>nXRWzp%vb80zTQ!a^=Aq7ECSO+csk@sZ)4FT6}8VTb72OU?x|D>imA=-%vTx@3?A<7lpAct|v)@*?`F%-TrgzO5M;vdHNN-HWJ)QHlEzB9T0 zxwzpPt616&Ry#xI=6Mi?NKpe2SyH1jD!3+G6Ql$EV9k))fiSE{dF7vnXx4dVwj^(0Q=4d$~J>I{@m zFm~uNVz!>roAUiby9TtP`^IA{uz2*t5qz!ki;t*Q ze_@L9SK{aIuDFGzd1x8KFR`4p$c;%8c*#G3HQTmf&_s$^?OgmZI=6+G&8aAG5y+~q#IIX^7tn4G3fNL=1y)S*bSrKA` z{u+lCXQ^DMh%kTEv?Dlo;xk$Xd+G%ixTxQSs7jxuu0A3v(!&FffxWJ7yZb1 zTb&QH8DNj%Y5~p$PZkXGUi%8{IhM&sG|9=vgdT@i;);#U^))p~!RlnVCKfo@9eA}e zoDC||M1yJ!RLzd;IZ_Svc6xbUe_iaC zkpf$kC0?UxtPrxjJrg)xc_g>;3x*4dEHq<|Q%A!=wcdV|8tL>XYVwJl;1D$#&&WLx zz?=+3MVl_pWcN)7q0LHi{j12?)+3q8m#G{v6+j1v$G@3Er?~#zCeQ1X~n!po!xY90i%fXeC z6w}j+|AlN9Ltnq!$)4<`lhC*ss5ej_&8(hgTj1KjGd-v~|5V+f2rUx9==G47+9rWo zL}HgmI`Fj~8<_rL+cba0_gm4jdLtot9KCb~>vLehJ@0axH`lGLZj+3bp&`_CoCj7; z$tntup2ej>r%A(L{2^1mh(0tep?l`j?hfCuJ)ZF+5CMtSV$&;GxlXlB6{+QvZMed) zZQ#@`Be57G7f`-s7Pa+dk)J~)?Yhjs6JC!QJr2Bn0=k75^+;@8wE?~)xb(O99UAKp z?+P+{u!^c5Ve)~3DRO(c>~x~gyv%-zIvDN4-Y3lDz3_DEGuH%4w55H%u3>EZZ^Sj9 zz`3E@bS-kZeNYa{uhJq!`)q>I40DW2B00$Hc8SMLZqu^SDWBS^29gQoMJh;xJDJ-u zNk6YJri~S?u5&(&iHdMK@p2PzrHChL;`HJO_sU&VwH9aOD6I^YY}+b%o34h%hf$RT zj37aK9kApOdHsv+{6I`Xr&_|v7O2{9U&IeW=}h?ai7Yi(C_x?g8eQ{%L+n0>>cpS3 zh*t>fV_jZ?I6lR)JL)d*ViNR%qE!umlyXCK#86WV5G$#0dP8+(F0w~U@>+^Tblb*P z3L%`(P%)ajCHw`gBxe{NoQK^@XnuSAay?L75D*<~$NDi4!sOvX(-a zK7MI&8s>rhHch4&`Lf;>b3#m~`rp^exuy`?B?FJETXS32_LcUL<1edvV&W2R@h!6y z%;rl-Y(r1q;gj5)?!6$!T~7&`*TTbi?9P4zhK^Z+Uuq+y5HPx%+x?o13TPPP*w@FMK0J_oo%Y8b)8{w8T;-ch)V07u^FFYJv2qfsW_=UUp~Dv+I!c%Cmu4kC5B zgp+gw_Crj>s8@!1pJs>HC`+=(Hg)EKAFIuO(L4^}95$>H*3gU*E=6I?xfID=XFV4w zeV7cu?rb23=EV@7?0Q+z@HMs%gtg&U6YO45MGH75^F@mmI(Q=FI3!M{Otu2EmG0QKV$26Jy;}i=I^q-Q%MbMPo#4iE5mPXvm$H zbCjH=Hqlh9&dcPAM7#4Q?`otasJ{j^hOikxz4*KpdFBor{!}~6$^7njI(K2<*46$T zy3WTRMS=osl9FW|56@Dd>#Wv69Kn?-R0R; zC@!Jdj$Aq!9voSfN$2Z+M8Hi!ve*}PC(duYw}fAT1p%c0Ng&*I*;XnySCO_KO%qRq zkMy3&)g@gz`3lliH`O>BBW^S|28xstQE#Wje}>do&T$a+w0&8%@n~xnw2QO#ihS*ndCA{vk=*3K57Q$?I~o1W>U*Q@V~$kM*$f21p= zFyT3~lw__)37t>e!u};+tv?%EF@cscJlwDsu>tUN*f{=@`KZU`9%4t|S zWs%j+ctc-46V!KX#xlsH^ofwod@Z0`6~_GxkBy8F5Xos4R|bi6{;X-sY?+rz{AA>u z+rAA!8_jb1^+1-ll)vZ2GlGr!OZ+PzOBg$YpZZ2W1y$_f<>9o&!wZ=rYu>EO^*eZULmwQ@*RBV)C(?&Ht zTf3-p?dGv)+Abmm5-x=4GGz-JocdAcqIF7Q4&oI*E)U?M5<$e3pxcpP2!Y zPC!nE5 z+IQElx^ZG|?vlOSWi4|IUwBcvvCXw$JxOTz;bmw3$HMU#Z` z(uzvoe5yMW_60Bw>C10PptLCH^!N@|jS!7<11*z3N@4v0h5Zdg$?O$JNfC59=+)5? zv}?rY%J^4nI4sPZ#R-sIOiOJik7aUWu0K1(I$jJex5&xWXP;Rhc(TK-8EB`X8b`7- z#v%Dd4Pff>Ee2BqLSmBj@fTB?CTY@QIJI2**n_S3jxstRa3dm|Q;ZTA<77-dRGWf6 zxHnsdWSiuom*61}EIs4W&)=(*R5aQML$P{~dpr3!=H==+r1j+*{=EZn2xGJ8FYg9A z9@#C@f5k;XHwhCKqopqgNMtA9O7$f@U0$IvBO0c?M;LKUTB_~z4b)@*6=+CN2oAaA zRoLl&Hr6jmWNA~0h>0a;*tNvAUs!du{OZkHXjEg$RqIIqeHX#m8%Z5}W07^c8ON+o zHD>k$9tVQ;a;$Gori$A9l$v9W1K7^dh*B3`k85ReDN|+huhX1O$*xSnF=~X~_((wj zqK-sqHkp6NktlpkWDdG+Dnm==3Q&+or{W3y$e?gb&y9%O-kaZtA3iL#q&T`P^Ws+2 zaT5OQVUr_f>vU(l`SbA$(ME|Fe?k1_^dz5xXP+Oj)%}Jyb!@|iQHxFCM3z3zQp(?Z zq)xi<$+eQ|=?&}ywvDK>^a&Mse5_Az8Ffa+R&HT&^u030AKcG?qkAVO<-b2i+v4#4 zuvwD1oD_X`gr@SPN%9H6K%B(qziSJ;a8()}Hy!`iYk(t=;cWMfuc3qd{g5A=zm zJAI$LN99cDhhN9Dr=Af5Q?VECI48Z+t)N$E%ZE;)*{_!F#wdNO`!cx8Ti1fzDhPw# zO&qkaz8IZc^%g2+CF{*crSnSo%ADalqD74a&uS{OB#6X+9O3me7)S$u08}WUTmGPI ze^Ns+e2`TK-;<$_AyK5s;KUi3Lw+Ah-K6l*E=G0^G5Zk|trpSU1x4!CVLvSqo<)`4 zUn0%lU5rI`R0H6+np~(&do8T&TY!T}R``kApcUSq-c2b2u=h0Jm*G$VaO68pZzOkD zq8h95IkTur&fW&iYyQ|Wu;p^C{gM$5h>`5|+?+ zA9s3q;tV4wu|O}d9#6k1YNAv2HVn+B6P_#NZg*Qv7llprjYoX7d45I=~w${Lf} zA{|uLXCLMtBsGZJU&4n(ahjZoy**jIzx=cQT+{`EJ0y5c-bAgT*1uJHf9tH=DA~Ex zZXf<#4H=)W&)zc@u-?3ur?AG4V;BIapLp?QI*e!7mZia#6RxOp+mxtg)8L~rQdlNI zH)BL`@wY)wP{J*qd|X0&o8P}^GX!j+<&@4Dnbvt4Ola<4+h+^H)IJLNkYs@yMkTlM zqa0Cm2Yvj(<2u9Z71CKVOp}10;01x!RScun^)OlRuXle63Iw;NN0rT1O|)_S{tA++ zYxHgEQlh6~E3MjpV5-%jyBGpKf+p7A1-0=KD&`iGDr42u<+4*7LCXx2I9!c-g=IP_qs_= zqi({!_3PsPqi={!jTX4NxmV+j8nrcvSP>g|-oe}KJo<(;Z-5?x2||{5>^BrbOXfNi za=L4n{0*7X>aZbK0F?)ds?xCXh&kM^7JL#t{8+M)VA@6)O-At)^1)h;UHid>QmU~Yf7`xfo#OE1B!HhLR+qGi*>^CWEZ`!% z;7KRV70~4LeK8GJQh~D=3F_YL?%!56Qh~C&EXe zG2>;|?4Y28O39`wB5f+cw8{%xVpGmf2hK8iU&YNw7D#m|A%pl-bYd@_Gbm}Pm8}c^ z+rqfED=8Wg_6&oOWAmp&(u=c&E(}da%~<>%+Ff+Y05KcMR5!E97fL3P4hy(TjkYu( zhd*uX=kY&--1)`EJfvy#e(?P3D$a1&{;q9pDoja`x%_ZE!;7hW1h3CR5J6$5r(^Za$@M5lk&f@i(!Hht4(Y46xXYgq_3*hT* zsG>*QWoGlfR+I!=Ve*$Y96yCMF1$?JRPCS?{hR1X_Xr=)g)JQoXDQxiC$E{&Xr=-Z z3?t?RJCC;Dg!Y#Vcgq`0%uF5CqoTN>u1s1BBfy4Aa9rtYL|C3=5Y%otF+KCzv@#Q)o610|QdGx{0q(UiY+jm;a=d??lDhO5geZ4dF~X_vG&4eScs;75zcnfyj2rdYD{tSYfa=hrBHljH450BC{<|} zLBofj5OG#~xkpoh7sBxqq!u!00U+2lGta%9yPgauBP9{O&Qa_0 zBbQ3!FNwVHe59CpS7?qLHCiGCSxxYB68o^+!3%;WPR9Ln>s@p%02!damgnL5#;A@Tly%_3m23$XApNml>@O-Vun z(QvBOpDAyy@iNR72jFgt__oU3$1+;Q1t|g>Tq6(TU#UrKxL|Aa$dV=sDK3ETfnJuR zlFVh0^yU>2AU!YILSxSa#j~n447O(Ga#L=}+$2Sr zCHpxze49FGRn?k6QIXBD)=JrSMGxc#E9C30Gv%Rs7#KB+VHB$W7e(G_%Mr_arKXep zei(w&ofspdeCFpg``ilQ(?X^E5d$xY$T#ARpDVB4T8~lMhvOOo^!}F@8ufwdWp`A}DYJqr!Q=3p?$3^sw{$WZ*=}&h4(`)Z+np3r$|? zsOkIu`t2`uk0G3y3%xw$+4-;Fl@%Qar$w&$DzbNMOQ@|3FaubgDGaGx>`_An3 z=8Cfve!cN~`#koYBJQ>cv9fY>Tc@3;3e#8!nb0URXtTqX2qo)>Dpgu|N&ZRq?b?4l z9nbUv{((2m<#ny92?pg~S0K~&#Q5FRo8aRi^1Z&A@EIIQa^7HWcM?tw+0ljfrSWQs z@A9~dNnhAG@TVx@n_T?vB$xOe!CwAotzOVmUu8P+9fx9fqlIzOog;vMBv*+*^lnDO zV22WM1v)#}-$##m?xImN5i_33k1=7Ftk#nk%y>4#hIY{su5>6WCN9^O=}aAEsvM0F zEcQq0zmzT6YkT1DKhe-|PX6~7z!?ysGyOLLmuc^cQBRyLgr5h4WS3QU-gaDtHWK)> z@$d1}X`I{6IP)25mk zT{|$Nn8z8jIF2c3@7WoJ{Z7|}CsOLb`{@=rKk6bW5aA{N^XmPWIraY{;>%7Lh21^9 z17~W@8v)6^$z{9u*-v*vB;Tqx41g9`4!E)SZe2vr@C`>OO_t*d{aI?qg#W{=#2;IVM&!j+cwFZ2Nb`Jg7D<_FJu zvVT~Fv9Q`AQ6~})`=1IBojpp^`Dw$fX@1xCR<_2Ec$)KQ0az|R^aH8ULJ%A zpV~X+`fDHtXS3lXzA9T1+ebF~jBM2xnzK^=+7*EAxm(`rF>KwJiceR@FXgZO$lfd5 z|IXAc;(1W!B#?^aTI94$H5u{&AV{r4b445ypMrYEmDh+R4Ryl7y=+ze10d1oG?Vm| zY(jn#ogQ5=YKL0LKOQyyXNCotk-JP@#CD|=#VHTQr%NqO->@_VDyOt*WMBbEUQ%&| zmzDmpJmcpeq1Phz4WLK|3lDW81aD5I1HV@!HvQ0FFPyJfxSUZGveYdKK50h?5<+Nf zfR>PW|6%8Za8Zo>qTt@>EeDNYJA_~Z&rwPNf{MQ(VTwAv(D%EUb?9|F+XtrNw-0Nd zbMz7FB|T^TgwqC{+jR9XMPKF?;J! z#|)lb=gV&O&x2DPp`N?atQ!6G?0KWZosZTnR#5`w(du&Sz5Ts|I;Ui0;=wntMRa~( zLQl;eOUSpE$+>-{?-*dn_NlJ{bl!t+*WPjWUI1QIoNBv*uq=fnN)3p0Av9v6bH*v9 z)y|?={Y_{|Vo5;OY~>LaDY@(zG_0%>0z@)GLeJ*4L5yAZ{cfI`>I`~6eE;eROq}uN z-40cf>1|LC-kiw$Ruc>sqSOW|y(%Tg4@`z1=-J*;^{5M;!j)UZ-z8=Nl2=7x-OmGD zPqAmz*x~eJ|1q6jj_gCEfUzK7f}v`bfT8HpkB;xF?Y>CC$9I37bGBdgrOI!p9$jAl zw8k~B3_ASU3da?9MUz={Q?K3DtvFS4HMkC%za07>Op_PR`cs~4$I^~AT3xABmzqlCoI?h2pn#+Z#QGA3gCA;9@ zut6v%@Z(7sxui0t8x^i)wSsPcy)6JjZGCTMHgy}}J{Sc(xK$1;dJ~oQ4GwIcsvnOn z(}6A)m`B7TY}yv5QJ-(u-z%1%cHc75B40YjC#QXchE6-|C(@iyWvi{^Om--^% [RESULT_DEMIME] + +MAP + +NAME TEST +STATUS ON +SIZE 200 200 +EXTENT -180 -89 180 90 +IMAGECOLOR 0 0 0 + +PROJECTION + "init=epsg:4326" +END + +IMAGETYPE png8_t + +OUTPUTFORMAT + NAME png8_t + DRIVER "GD/PNG" + IMAGEMODE PC256 + TRANSPARENT OFF +END + +WEB + METADATA + "ows_enable_request" "*" + "wms_srs" "EPSG:4326" + END +END + +LAYER + NAME test + TYPE raster + STATUS default + DATA data/polar_stereo.tif + PROJECTION + AUTO + END +END +END # of map file + From f53fd782ccbe04033d4088047615f08968dcede0 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 13 Jan 2017 09:25:55 +0100 Subject: [PATCH 123/221] [OGR] Translate as much as possible MapServer expressions to OGR SQL attribute and spatial filters This should restore the level of performance to what is was in MapServer 6.4 --- mapogr.cpp | 825 ++++++++++++++++++++++++--- msautotest/valgrind-suppressions.txt | 8 + 2 files changed, 759 insertions(+), 74 deletions(-) diff --git a/mapogr.cpp b/mapogr.cpp index 7012f66766..5460c33b68 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -33,6 +33,8 @@ #include "mapproject.h" #include "mapthread.h" #include "mapows.h" +#include +#include #if defined(USE_OGR) || defined(USE_GDAL) # include "gdal_version.h" @@ -77,6 +79,8 @@ typedef struct ms_ogr_file_info_t { int bPaging; + char* pszWHERE; + } msOGRFileInfo; static int msOGRLayerIsOpen(layerObj *layer); @@ -1298,6 +1302,7 @@ msOGRFileOpen(layerObj *layer, const char *connection ) psInfo->bPaging = false; psInfo->bHasSpatialIndex = false; psInfo->pszTablePrefix = NULL; + psInfo->pszWHERE = NULL; // GDAL 1.x API OGRSFDriverH dr = OGR_DS_GetDriver(hDS); @@ -1695,6 +1700,7 @@ static int msOGRFileClose(layerObj *layer, msOGRFileInfo *psInfo ) msFree(psInfo->pszMainTableName); msFree(psInfo->pszRowId); msFree(psInfo->pszTablePrefix); + msFree(psInfo->pszWHERE); CPLFree(psInfo); @@ -2170,6 +2176,9 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps layer->filter.native_string || (psInfo->bPaging && layer->maxfeatures > 0)) ) { + const bool bHasGeometry = + OGR_L_GetGeomType( psInfo->hLayer ) != wkbNone; + if( psInfo->nLayerIndex == -1 && select == NULL ) { select = msStrdup(psInfo->pszLayerDef); /* If nLayerIndex == -1 then the layer is an SQL result ... free it */ @@ -2325,18 +2334,23 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps bSpatialiteOrGPKGAddOrderByFID = true; } - if (psInfo->dialect) { - if (EQUAL(psInfo->dialect, "Spatialite") || - EQUAL(psInfo->dialect, "GPKG") || - EQUAL(psInfo->dialect, "PostgreSQL")) { - const char *sql = layer->filter.native_string; - if (sql && *sql != '\0') { - if (filter) filter = msStringConcatenate(filter, "AND "); - filter = msStringConcatenate(filter, "("); - filter = msStringConcatenate(filter, sql); - filter = msStringConcatenate(filter, ")"); - } - } + const char *sql = layer->filter.native_string; + if (psInfo->dialect && sql && *sql != '\0' && + (EQUAL(psInfo->dialect, "Spatialite") || + EQUAL(psInfo->dialect, "GPKG") || + EQUAL(psInfo->dialect, "PostgreSQL")) ) + { + if (filter) filter = msStringConcatenate(filter, " AND "); + filter = msStringConcatenate(filter, "("); + filter = msStringConcatenate(filter, sql); + filter = msStringConcatenate(filter, ")"); + } + else if( psInfo->pszWHERE ) + { + if (filter) filter = msStringConcatenate(filter, " AND "); + filter = msStringConcatenate(filter, "("); + filter = msStringConcatenate(filter, psInfo->pszWHERE); + filter = msStringConcatenate(filter, ")"); } bool bOffsetAlreadyAdded = false; @@ -2450,8 +2464,40 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps { OGR_DS_ReleaseResultSet( psInfo->hDS, psInfo->hLayer ); } - psInfo->hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, select, NULL, NULL ); + + OGRGeometryH hGeom = NULL; + if( psInfo->dialect == NULL && + bHasGeometry && bIsValidRect ) { + if (rect.minx == rect.maxx && rect.miny == rect.maxy) { + hGeom = OGR_G_CreateGeometry( wkbPoint ); + OGR_G_SetPoint_2D( hGeom, 0, rect.minx, rect.miny ); + } else if (rect.minx == rect.maxx || rect.miny == rect.maxy) { + hGeom = OGR_G_CreateGeometry( wkbLineString ); + OGR_G_AddPoint_2D( hGeom, rect.minx, rect.miny ); + OGR_G_AddPoint_2D( hGeom, rect.maxx, rect.maxy ); + } else { + hGeom = OGR_G_CreateGeometry( wkbPolygon ); + OGRGeometryH hRing = OGR_G_CreateGeometry( wkbLinearRing ); + + OGR_G_AddPoint_2D( hRing, rect.minx, rect.miny); + OGR_G_AddPoint_2D( hRing, rect.maxx, rect.miny); + OGR_G_AddPoint_2D( hRing, rect.maxx, rect.maxy); + OGR_G_AddPoint_2D( hRing, rect.minx, rect.maxy); + OGR_G_AddPoint_2D( hRing, rect.minx, rect.miny); + OGR_G_AddGeometryDirectly( hGeom, hRing ); + } + + if (layer->debug >= MS_DEBUGLEVEL_VVV) + { + msDebug("msOGRFileWhichShapes: Setting spatial filter to %.15g %.15g %.15g %.15g\n", + rect.minx, rect.miny, rect.maxx, rect.maxy ); + } + } + + psInfo->hLayer = OGR_DS_ExecuteSQL( psInfo->hDS, select, hGeom, NULL ); psInfo->nLayerIndex = -1; + if( hGeom != NULL ) + OGR_G_DestroyGeometry(hGeom); if( psInfo->hLayer == NULL ) { RELEASE_OGR_LOCK; @@ -2475,6 +2521,20 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps pszOGRFilter = msStringConcatenate(pszOGRFilter, ")"); } + if( psInfo->pszWHERE ) + { + if( pszOGRFilter ) + { + pszOGRFilter = msStringConcatenate(pszOGRFilter, " AND ("); + pszOGRFilter = msStringConcatenate(pszOGRFilter, psInfo->pszWHERE); + pszOGRFilter = msStringConcatenate(pszOGRFilter, ")"); + } + else + { + pszOGRFilter = msStringConcatenate(pszOGRFilter, psInfo->pszWHERE); + } + } + ACQUIRE_OGR_LOCK; if( OGR_L_GetGeomType( psInfo->hLayer ) != wkbNone && bIsValidRect ) { @@ -2525,12 +2585,7 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps CPLErrorReset(); if( OGR_L_SetAttributeFilter( psInfo->hLayer, pszOGRFilter ) != OGRERR_NONE ) { - msSetError(MS_OGRERR, "SetAttributeFilter() failed on layer %s. Check logs.", "msOGRFileWhichShapes()", layer->name?layer->name:"(null)"); - msDebug("SetAttributeFilter(%s) failed on layer %s.\n%s\n", layer->filter.string+6, layer->name?layer->name:"(null)", CPLGetLastErrorMsg() ); - RELEASE_OGR_LOCK; - msFree(pszOGRFilter); - msFree(select); - return MS_FAILURE; + msDebug("SetAttributeFilter(%s) failed on layer %s.\n%s\n", pszOGRFilter, layer->name?layer->name:"(null)", CPLGetLastErrorMsg() ); } msFree(pszOGRFilter); } else @@ -3035,6 +3090,613 @@ int msOGRFileReadTile( layerObj *layer, msOGRFileInfo *psInfo, return MS_SUCCESS; } +/************************************************************************/ +/* msExprNode */ +/************************************************************************/ + +class msExprNode +{ + public: + std::vector m_aoChildren; + int m_nToken; + std::string m_osVal; + double m_dfVal; + struct tm m_tmVal; + + msExprNode() : m_nToken(0), m_dfVal(0.0) {} + ~msExprNode(); +}; + +msExprNode::~msExprNode() +{ + for(size_t i=0;i aoStackOp, aoStackVal; + while( node != NULL ) + { + if( node->token == '(' ) + { + msExprNode* subExpr = BuildExprTree(node->next, &node, + nParenthesisLevel + 1); + if( subExpr == NULL ) + { + goto fail; + } + aoStackVal.push_back(subExpr); + continue; + } + else if( node->token == ')' ) + { + if( nParenthesisLevel > 0 ) + { + break; + } + goto fail; + } + else if( node->token == '+' || + node->token == '-' || + node->token == '*' || + node->token == '/' || + node->token == '%' || + node->token == MS_TOKEN_LOGICAL_NOT || + node->token == MS_TOKEN_LOGICAL_AND || + node->token == MS_TOKEN_LOGICAL_OR || + node->token == MS_TOKEN_COMPARISON_GE || + node->token == MS_TOKEN_COMPARISON_GT || + node->token == MS_TOKEN_COMPARISON_LE || + node->token == MS_TOKEN_COMPARISON_LT || + node->token == MS_TOKEN_COMPARISON_EQ || + node->token == MS_TOKEN_COMPARISON_IEQ || + node->token == MS_TOKEN_COMPARISON_LIKE || + node->token == MS_TOKEN_COMPARISON_NE || + node->token == MS_TOKEN_COMPARISON_RE || + node->token == MS_TOKEN_COMPARISON_IRE || + node->token == MS_TOKEN_COMPARISON_IN ) + { + while( !aoStackOp.empty() && + exprGetPriority(node->token) <= + exprGetPriority(aoStackOp.back()->m_nToken)) + { + msExprNode* val1 = NULL; + msExprNode* val2 = NULL; + msExprNode* newNode = NULL; + if (aoStackOp.back()->m_nToken != MS_TOKEN_LOGICAL_NOT) + { + if( aoStackVal.empty() ) + goto fail; + val2 = aoStackVal.back(); + aoStackVal.pop_back(); + } + if( aoStackVal.empty() ) + goto fail; + val1 = aoStackVal.back(); + aoStackVal.pop_back(); + + newNode = new msExprNode; + newNode->m_nToken = aoStackOp.back()->m_nToken; + newNode->m_aoChildren.push_back(val1); + if( val2 ) + newNode->m_aoChildren.push_back(val2); + aoStackVal.push_back(newNode); + delete aoStackOp.back(); + aoStackOp.pop_back(); + } + + msExprNode* newNode = new msExprNode; + newNode->m_nToken = node->token; + aoStackOp.push_back(newNode); + } + else if( node->token == ',' ) + { + } + else if( node->token == MS_TOKEN_COMPARISON_INTERSECTS || + node->token == MS_TOKEN_COMPARISON_DISJOINT || + node->token == MS_TOKEN_COMPARISON_TOUCHES || + node->token == MS_TOKEN_COMPARISON_OVERLAPS || + node->token == MS_TOKEN_COMPARISON_CROSSES || + node->token == MS_TOKEN_COMPARISON_DWITHIN || + node->token == MS_TOKEN_COMPARISON_BEYOND || + node->token == MS_TOKEN_COMPARISON_WITHIN || + node->token == MS_TOKEN_COMPARISON_CONTAINS || + node->token == MS_TOKEN_COMPARISON_EQUALS || + node->token == MS_TOKEN_FUNCTION_LENGTH || + node->token == MS_TOKEN_FUNCTION_TOSTRING || + node->token == MS_TOKEN_FUNCTION_COMMIFY || + node->token == MS_TOKEN_FUNCTION_AREA || + node->token == MS_TOKEN_FUNCTION_ROUND || + node->token == MS_TOKEN_FUNCTION_FROMTEXT || + node->token == MS_TOKEN_FUNCTION_BUFFER || + node->token == MS_TOKEN_FUNCTION_DIFFERENCE || + node->token == MS_TOKEN_FUNCTION_SIMPLIFY || + node->token == MS_TOKEN_FUNCTION_SIMPLIFYPT || + node->token == MS_TOKEN_FUNCTION_GENERALIZE || + node->token == MS_TOKEN_FUNCTION_SMOOTHSIA || + node->token == MS_TOKEN_FUNCTION_JAVASCRIPT || + node->token == MS_TOKEN_FUNCTION_UPPER || + node->token == MS_TOKEN_FUNCTION_LOWER || + node->token == MS_TOKEN_FUNCTION_INITCAP || + node->token == MS_TOKEN_FUNCTION_FIRSTCAP ) + { + if( node->next && node->next->token == '(' ) + { + msExprNode* subExpr = BuildExprTree(node->next->next, &node, + nParenthesisLevel + 1); + if( subExpr == NULL ) + { + goto fail; + } + msExprNode* newNode = new msExprNode; + newNode->m_nToken = node->token; + if( subExpr->m_nToken == 0 ) + { + newNode->m_aoChildren = subExpr->m_aoChildren; + subExpr->m_aoChildren.clear(); + delete subExpr; + } + else + { + newNode->m_aoChildren.push_back(subExpr); + } + aoStackVal.push_back(newNode); + continue; + } + else + goto fail; + } + else if( node->token == MS_TOKEN_LITERAL_NUMBER || + node->token == MS_TOKEN_LITERAL_BOOLEAN ) + { + msExprNode* newNode = new msExprNode; + newNode->m_nToken = node->token; + newNode->m_dfVal = node->tokenval.dblval; + aoStackVal.push_back(newNode); + } + else if( node->token == MS_TOKEN_LITERAL_STRING ) + { + msExprNode* newNode = new msExprNode; + newNode->m_nToken = node->token; + newNode->m_osVal = node->tokenval.strval; + aoStackVal.push_back(newNode); + } + else if( node->token == MS_TOKEN_LITERAL_TIME ) + { + msExprNode* newNode = new msExprNode; + newNode->m_nToken = node->token; + newNode->m_tmVal = node->tokenval.tmval; + aoStackVal.push_back(newNode); + } + else if( node->token == MS_TOKEN_LITERAL_SHAPE ) + { + msExprNode* newNode = new msExprNode; + newNode->m_nToken = node->token; + char *wkt = msShapeToWKT(node->tokenval.shpval); + newNode->m_osVal = wkt; + msFree(wkt); + aoStackVal.push_back(newNode); + } + else if( node->token == MS_TOKEN_BINDING_DOUBLE || + node->token == MS_TOKEN_BINDING_INTEGER || + node->token == MS_TOKEN_BINDING_STRING || + node->token == MS_TOKEN_BINDING_TIME ) + { + msExprNode* newNode = new msExprNode; + newNode->m_nToken = node->token; + newNode->m_osVal = node->tokenval.bindval.item; + aoStackVal.push_back(newNode); + } + else + { + msExprNode* newNode = new msExprNode; + newNode->m_nToken = node->token; + aoStackVal.push_back(newNode); + } + + node = node->next; + } + + while( !aoStackOp.empty() ) + { + msExprNode* val1 = NULL; + msExprNode* val2 = NULL; + msExprNode* newNode = NULL; + if (aoStackOp.back()->m_nToken != MS_TOKEN_LOGICAL_NOT) + { + if( aoStackVal.empty() ) + goto fail; + val2 = aoStackVal.back(); + aoStackVal.pop_back(); + } + if( aoStackVal.empty() ) + goto fail; + val1 = aoStackVal.back(); + aoStackVal.pop_back(); + + newNode = new msExprNode; + newNode->m_nToken = aoStackOp.back()->m_nToken; + newNode->m_aoChildren.push_back(val1); + if( val2 ) + newNode->m_aoChildren.push_back(val2); + aoStackVal.push_back(newNode); + delete aoStackOp.back(); + aoStackOp.pop_back(); + } + + if( aoStackVal.size() == 1 ) + poRet = aoStackVal.back(); + else if( aoStackVal.size() > 1 ) + { + poRet = new msExprNode; + poRet->m_aoChildren = aoStackVal; + } + + if( pNodeNext ) + *pNodeNext = node ? node->next : NULL; + + return poRet; + +fail: + for( size_t i=0; im_nToken == MS_TOKEN_COMPARISON_INTERSECTS && + expr->m_aoChildren.size() == 2 && + expr->m_aoChildren[1]->m_nToken == MS_TOKEN_LITERAL_SHAPE ) + { + if( info->rect_is_defined ) + { + // Several intersects... + *pSpatialFilterNode = NULL; + info->rect_is_defined = MS_FALSE; + return MS_FALSE; + } + OGRGeometryH hSpatialFilter = NULL; + char* wkt = const_cast(expr->m_aoChildren[1]->m_osVal.c_str()); + OGRErr e = OGR_G_CreateFromWkt(&wkt, NULL, &hSpatialFilter); + if (e == OGRERR_NONE) { + OGREnvelope env; + OGR_G_GetEnvelope(hSpatialFilter, &env); + info->rect.minx = env.MinX; + info->rect.miny = env.MinY; + info->rect.maxx = env.MaxX; + info->rect.maxy = env.MaxY; + info->rect_is_defined = true; + *pSpatialFilterNode = expr; + OGR_G_DestroyGeometry(hSpatialFilter); + return MS_TRUE; + } + return MS_FALSE; + } + + if( expr->m_nToken == MS_TOKEN_LOGICAL_AND && + expr->m_aoChildren.size() == 2 ) + { + return msOGRExtractTopSpatialFilter(info, expr->m_aoChildren[0], + pSpatialFilterNode) && + msOGRExtractTopSpatialFilter(info, expr->m_aoChildren[1], + pSpatialFilterNode); + } + + return MS_TRUE; +} + +/********************************************************************** + * msOGRTranslatePartialMSExpressionToOGRSQL() + * + * Tries to partially translate a mapserver expression to SQL + **********************************************************************/ + +static std::string msOGRGetTokenText(int nToken) +{ + switch( nToken ) + { + case '*': + case '+': + case '-': + case '/': + case '%': + return std::string(1, static_cast(nToken)); + + case MS_TOKEN_COMPARISON_GE: return ">="; + case MS_TOKEN_COMPARISON_GT: return ">"; + case MS_TOKEN_COMPARISON_LE: return "<="; + case MS_TOKEN_COMPARISON_LT: return "<"; + case MS_TOKEN_COMPARISON_EQ: return "="; + case MS_TOKEN_COMPARISON_NE: return "!="; + case MS_TOKEN_COMPARISON_LIKE: return "LIKE"; + + default: + return std::string(); + } +} + +static std::string msOGRTranslatePartialInternal(layerObj* layer, + const msExprNode* expr, + const msExprNode* spatialFilterNode, + bool& bPartialFilter) +{ + switch( expr->m_nToken ) + { + case MS_TOKEN_LOGICAL_NOT: + { + std::string osTmp(msOGRTranslatePartialInternal( + layer, expr->m_aoChildren[0], spatialFilterNode, bPartialFilter )); + if( osTmp.empty() ) + return std::string(); + return "(NOT " + osTmp + ")"; + } + + case MS_TOKEN_LOGICAL_AND: + { + // We can deal with partially translated children + std::string osTmp1(msOGRTranslatePartialInternal( + layer, expr->m_aoChildren[0], spatialFilterNode, bPartialFilter )); + std::string osTmp2(msOGRTranslatePartialInternal( + layer, expr->m_aoChildren[1], spatialFilterNode, bPartialFilter )); + if( !osTmp1.empty() && !osTmp2.empty() ) + { + return "(" + osTmp1 + " AND " + osTmp2 + ")"; + } + else if( !osTmp1.empty() ) + return osTmp1; + else + return osTmp2; + } + + case MS_TOKEN_LOGICAL_OR: + { + // We can NOT deal with partially translated children + std::string osTmp1(msOGRTranslatePartialInternal( + layer, expr->m_aoChildren[0], spatialFilterNode, bPartialFilter )); + std::string osTmp2(msOGRTranslatePartialInternal( + layer, expr->m_aoChildren[1], spatialFilterNode, bPartialFilter )); + if( !osTmp1.empty() && !osTmp2.empty() ) + { + return "(" + osTmp1 + " OR " + osTmp2 + ")"; + } + else + return std::string(); + } + + case '*': + case '+': + case '-': + case '/': + case '%': + case MS_TOKEN_COMPARISON_GE: + case MS_TOKEN_COMPARISON_GT: + case MS_TOKEN_COMPARISON_LE: + case MS_TOKEN_COMPARISON_LT: + case MS_TOKEN_COMPARISON_EQ: + case MS_TOKEN_COMPARISON_NE: + { + std::string osTmp1(msOGRTranslatePartialInternal( + layer, expr->m_aoChildren[0], spatialFilterNode, bPartialFilter )); + std::string osTmp2(msOGRTranslatePartialInternal( + layer, expr->m_aoChildren[1], spatialFilterNode, bPartialFilter )); + if( !osTmp1.empty() && !osTmp2.empty() ) + { + if( expr->m_nToken == MS_TOKEN_COMPARISON_EQ && + osTmp2 == "'_MAPSERVER_NULL_'" ) + { + return "(" + osTmp1 + " IS NULL )"; + } + if( expr->m_aoChildren[1]->m_nToken == MS_TOKEN_LITERAL_STRING ) + { + char md_item_name[256]; + snprintf( md_item_name, sizeof(md_item_name), "gml_%s_type", + expr->m_aoChildren[0]->m_osVal.c_str() ); + const char* type = + msLookupHashTable(&(layer->metadata), md_item_name); + // Cast if needed (or unsure) + if( type == NULL || !EQUAL(type, "Character") ) + { + osTmp1 = "CAST(" + osTmp1 + " AS CHARACTER(4096))"; + } + } + return "(" + osTmp1 + " " + msOGRGetTokenText(expr->m_nToken) + + " " + osTmp2 + ")"; + } + else + return std::string(); + } + + case MS_TOKEN_COMPARISON_RE: + { + std::string osTmp1(msOGRTranslatePartialInternal( + layer, expr->m_aoChildren[0], spatialFilterNode, bPartialFilter )); + if( expr->m_aoChildren[1]->m_nToken != MS_TOKEN_LITERAL_STRING ) + { + return std::string(); + } + std::string osRE("'"); + const size_t nSize = expr->m_aoChildren[1]->m_osVal.size(); + bool bHasUsedEscape = false; + for( size_t i=0; im_aoChildren[1]->m_osVal[i] == '^' ) + continue; + if( expr->m_aoChildren[1]->m_osVal[i] == '.' ) + { + if( i+1m_aoChildren[1]->m_osVal[i+1] == '*' ) + { + osRE += "%"; + i++; + } + else + { + osRE += "_"; + } + } + else if( expr->m_aoChildren[1]->m_osVal[i] == '\\' && + i+1m_aoChildren[1]->m_osVal[i+1]; + i++; + } + else if( expr->m_aoChildren[1]->m_osVal[i] == 'X' || + expr->m_aoChildren[1]->m_osVal[i] == '%' || + expr->m_aoChildren[1]->m_osVal[i] == '_' ) + { + bHasUsedEscape = true; + osRE += 'X'; + osRE += expr->m_aoChildren[1]->m_osVal[i]; + } + else + { + osRE += expr->m_aoChildren[1]->m_osVal[i]; + } + } + osRE += "'"; + char md_item_name[256]; + snprintf( md_item_name, sizeof(md_item_name), "gml_%s_type", + expr->m_aoChildren[0]->m_osVal.c_str() ); + const char* type = + msLookupHashTable(&(layer->metadata), md_item_name); + // Cast if needed (or unsure) + if( type == NULL || !EQUAL(type, "Character") ) + { + osTmp1 = "CAST(" + osTmp1 + " AS CHARACTER(4096))"; + } + std::string osRet( "(" + osTmp1 + " LIKE " + osRE ); + if( bHasUsedEscape ) + osRet += " ESCAPE 'X'"; + osRet += ")"; + return osRet; + } + + case MS_TOKEN_COMPARISON_IN: + { + std::string osTmp1(msOGRTranslatePartialInternal( + layer, expr->m_aoChildren[0], spatialFilterNode, bPartialFilter )); + std::string osRet = "(" + osTmp1 + " IN ("; + for( size_t i=0; i< expr->m_aoChildren[1]->m_aoChildren.size(); ++i ) + { + if( i > 0 ) + osRet += ", "; + osRet += msOGRTranslatePartialInternal( + layer, expr->m_aoChildren[1]->m_aoChildren[i], + spatialFilterNode, bPartialFilter ); + } + osRet += ")"; + return osRet; + } + + case MS_TOKEN_LITERAL_NUMBER: + case MS_TOKEN_LITERAL_BOOLEAN: + { + return std::string(CPLSPrintf("%.18g", expr->m_dfVal)); + } + + case MS_TOKEN_LITERAL_STRING: + { + char *stresc = msOGREscapeSQLParam(layer, expr->m_osVal.c_str()); + std::string osRet("'" + std::string(stresc) + "'"); + msFree(stresc); + return osRet; + } + + case MS_TOKEN_LITERAL_TIME: + { +#ifdef notdef + // Breaks tests in msautotest/wxs/wfs_time_ogr.map + return std::string(CPLSPrintf("'%04d/%02d/%02d %02d:%02d:%02d'", + expr->m_tmVal.tm_year+1900, + expr->m_tmVal.tm_mon+1, + expr->m_tmVal.tm_mday, + expr->m_tmVal.tm_hour, + expr->m_tmVal.tm_min, + expr->m_tmVal.tm_sec)); +#endif + return std::string(); + } + + case MS_TOKEN_BINDING_DOUBLE: + case MS_TOKEN_BINDING_INTEGER: + case MS_TOKEN_BINDING_STRING: + case MS_TOKEN_BINDING_TIME: + { + char* pszTmp = msOGRGetQuotedItem(layer, expr->m_osVal.c_str()); + std::string osRet(pszTmp); + msFree(pszTmp); + return osRet; + } + + case MS_TOKEN_COMPARISON_INTERSECTS: + { + if( expr != spatialFilterNode ) + bPartialFilter = true; + return std::string(); + } + + default: + { + bPartialFilter = true; + return std::string(); + } + } +} + #endif /* def USE_OGR */ /* ================================================================== @@ -3053,25 +3715,61 @@ static int msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, #ifdef USE_OGR msOGRFileInfo *info = (msOGRFileInfo *)layer->layerinfo; + msFree(layer->filter.native_string); + layer->filter.native_string = NULL; + + msFree(info->pszWHERE); + info->pszWHERE = NULL; + // reasons to not produce native string: not simple layer, or an explicit deny char *do_this = msLayerGetProcessingKey(layer, "NATIVE_SQL"); // default is YES if (do_this && strcmp(do_this, "NO") == 0) { return MS_SUCCESS; } + tokenListNodeObjPtr node = psFilter->tokens; + msExprNode* expr = BuildExprTree(node, NULL, 0); + info->rect_is_defined = MS_FALSE; + const msExprNode* spatialFilterNode = NULL; + if( expr ) + msOGRExtractTopSpatialFilter( info, expr, &spatialFilterNode ); + // more reasons to not produce native string: not a recognized driver - if (!info->dialect) { + if (!info->dialect) + { + // in which case we might still want to try to get a partial WHERE clause + if( filteritem == NULL && expr ) + { + bool bPartialFilter = false; + std::string osSQL( msOGRTranslatePartialInternal(layer, expr, + spatialFilterNode, + bPartialFilter) ); + if( !osSQL.empty() ) + { + info->pszWHERE = msStrdup(osSQL.c_str()); + if( bPartialFilter ) + { + msDebug("Full filter has only been partially " + "translated to OGR filter %s\n", + info->pszWHERE); + } + } + else if( bPartialFilter ) + { + msDebug("Filter could not be translated to OGR filter\n"); + } + } + delete expr; return MS_SUCCESS; } char *sql = NULL; - tokenListNodeObjPtr node = psFilter->tokens; - // node may be NULL if layer->filter.string != NULL and layer->filteritem != NULL + // node may be NULL if layer->filter.string != NULL and filteritem != NULL // this is simple filter but string is regex - if (node == NULL && layer->filteritem != NULL && layer->filter.string != NULL) { + if (node == NULL && filteritem != NULL && layer->filter.string != NULL) { sql = msStringConcatenate(sql, "\""); - sql = msStringConcatenate(sql, layer->filteritem); + sql = msStringConcatenate(sql, filteritem); sql = msStringConcatenate(sql, "\""); if (EQUAL(info->dialect, "PostgreSQL") ) { sql = msStringConcatenate(sql, " ~ "); @@ -3082,54 +3780,7 @@ static int msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, sql = msStringConcatenate(sql, layer->filter.string); sql = msStringConcatenate(sql, "'"); } - // test if there is a "top" level intersects (see FLTValidForBBoxFilter) for a bounding box - if (node != NULL) { - int is_top_level_and = 0; - int has_bounding_box = 0; - tokenListNodeObjPtr bounding_box_node = NULL; - tokenListNodeObjPtr x = psFilter->tokens; - int d = 0; - while (x != NULL) { - if (x->token == '(') d++; - if (x->token == ')') d--; - if (x->token == MS_TOKEN_COMPARISON_INTERSECTS && d == 0) { - has_bounding_box = 1; - bounding_box_node = x; - } - if (d == 1) { - if (x->token == MS_TOKEN_COMPARISON_INTERSECTS) - bounding_box_node = x; - else if (x->token == MS_TOKEN_LOGICAL_AND) - is_top_level_and = 1; - } - if (is_top_level_and && bounding_box_node) - has_bounding_box = 1; - x = x->next; - } - if (has_bounding_box) { - x = bounding_box_node; - x = x->next; // skip fct - x = x->next; // skip ( - x = x->next; // skip field name - x = x->next; // skip , - char *a = msOGRGetToken(layer, &x); - // skip "ST_GeomFromText(' from a - char *wkt = a+17; - OGRGeometryH hSpatialFilter; - OGRErr e = OGR_G_CreateFromWkt(&wkt, NULL, &hSpatialFilter); - msFree(a); - if (e == OGRERR_NONE) { - OGREnvelope env; - OGR_G_GetEnvelope(hSpatialFilter, &env); - info->rect.minx = env.MinX; - info->rect.miny = env.MinY; - info->rect.maxx = env.MaxX; - info->rect.maxy = env.MaxY; - info->rect_is_defined = true; - OGR_G_DestroyGeometry(hSpatialFilter); - } - } - } + while (node != NULL) { if (node->next && node->next->token == MS_TOKEN_COMPARISON_IEQ) { @@ -3223,12 +3874,38 @@ static int msOGRTranslateMsExpressionToOGRSQL(layerObj* layer, } layer->filter.native_string = sql; + delete expr; return MS_SUCCESS; fail: // error producing native string - fprintf(stderr, "Note: Error parsing token list, could produce only: %s\n", sql); + msDebug("Note: Error parsing token list, could produce only: %s. Trying in partial mode\n", sql); msFree(sql); - return MS_FAILURE; + + // in which case we might still want to try to get a partial WHERE clause + if( expr ) + { + bool bPartialFilter = false; + std::string osSQL( msOGRTranslatePartialInternal(layer, expr, + spatialFilterNode, + bPartialFilter) ); + if( !osSQL.empty() ) + { + info->pszWHERE = msStrdup(osSQL.c_str()); + if( bPartialFilter ) + { + msDebug("Full filter has only been partially " + "translated to OGR filter %s\n", + info->pszWHERE); + } + } + else if( bPartialFilter ) + { + msDebug("Filter could not be translated to OGR filter\n"); + } + } + delete expr; + + return MS_SUCCESS; #else /* ------------------------------------------------------------------ * OGR Support not included... diff --git a/msautotest/valgrind-suppressions.txt b/msautotest/valgrind-suppressions.txt index b51b18a966..f268589918 100644 --- a/msautotest/valgrind-suppressions.txt +++ b/msautotest/valgrind-suppressions.txt @@ -213,3 +213,11 @@ fun:_GLOBAL__I_GeometryFactory.cpp ... } + +{ + + Memcheck:Leak + fun:malloc + fun:OS_LibInit + ... +} From e075ccbd022bd44fdb31bdf2c9d563383c96cc7d Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Mon, 23 Jan 2017 23:07:04 +0100 Subject: [PATCH 124/221] Fix Character type handling in WMS dimension filters (#5374) --- mapogcfilter.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mapogcfilter.c b/mapogcfilter.c index 7da559a15e..f4a6dfef9a 100644 --- a/mapogcfilter.c +++ b/mapogcfilter.c @@ -164,7 +164,8 @@ char *FLTGetExpressionForValuesRanges(layerObj *lp, const char *item, const char if (paszElements && numelements > 0) { if (forcecharcter) bIscharacter = MS_TRUE; - bIscharacter= !FLTIsNumeric(paszElements[0]); + else + bIscharacter= !FLTIsNumeric(paszElements[0]); pszTmpExpression = msStringConcatenate(pszTmpExpression, "("); for (i=0; i Date: Sun, 20 Mar 2016 07:20:54 +0100 Subject: [PATCH 125/221] Oracle Spatial: Include mapows.h (#5373) mapserver crashed on windows with an Oracle layer (using Oracle plugin) and "gml_types" "auto" This was caused by using msOWSLookupMetadata without a prototype Missing prototype gave following warning during a windows build: Warning 13 warning C4013: 'msOWSLookupMetadata' undefined; assuming extern returning int C:\dev\mapserver-bentley\mapserver\maporaclespatial.c 2949 1 msplugin_oracle --- maporaclespatial.c | 1 + 1 file changed, 1 insertion(+) diff --git a/maporaclespatial.c b/maporaclespatial.c index b43c1c087e..2f44ebcfbc 100644 --- a/maporaclespatial.c +++ b/maporaclespatial.c @@ -38,6 +38,7 @@ #include "mapserver.h" #include "maptime.h" +#include "mapows.h" #include From 3e8c9c8e52b3beaab454afab6d71ef1f3bdf06cd Mon Sep 17 00:00:00 2001 From: Martin Icking Date: Fri, 18 Mar 2016 18:58:51 +0100 Subject: [PATCH 126/221] Removed bug that caused MapServer only to use the Oracle TranslateFilter method at the first call e.g. in an FCGI environment unlike all other vtable assignments the msOracleSpatialLayerTranslateFilter was set to layer->vtable and not to vtable --- maporaclespatial.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maporaclespatial.c b/maporaclespatial.c index 2f44ebcfbc..3ea3383bef 100644 --- a/maporaclespatial.c +++ b/maporaclespatial.c @@ -3956,7 +3956,7 @@ PluginInitializeVirtualTable(layerVTableObj* vtable, layerObj *layer) assert(layer != NULL); assert(vtable != NULL); - layer->vtable->LayerTranslateFilter = msOracleSpatialLayerTranslateFilter; + vtable->LayerTranslateFilter = msOracleSpatialLayerTranslateFilter; vtable->LayerInitItemInfo = msOracleSpatialLayerInitItemInfo; From 57fa73c40a696321fd0810a3bef4d7e502c6b5ca Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Sat, 11 Feb 2017 18:52:04 +0100 Subject: [PATCH 127/221] Adding csharp build to appveyor script --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 62b072fa26..53aad8d6eb 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -47,7 +47,7 @@ build_script: - if "%platform%" == "x64" SET PYTHON_EXECUTABLE=c:\python27-x64\python.exe - mkdir build - cd build - - cmake -G "%VS_FULL%" .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=%SDK_PREFIX% -DFREETYPE_INCLUDE_DIR_freetype2=%SDK_INC%\freetype -DFREETYPE_INCLUDE_DIR_ft2build=%SDK_INC%\freetype -DFREETYPE_LIBRARY=%SDK_LIB%\freetype2411.lib -DZLIB_INCLUDE_DIR=%SDK_INC% -DZLIB_LIBRARY=%SDK_LIB%\zlib.lib -DPNG_PNG_INCLUDE_DIR=%SDK_INC% -DPNG_LIBRARY=%SDK_LIB%\libpng.lib -DPNG_LIBRARIES=%SDK_LIB%\libpng.lib -DJPEG_INCLUDE_DIR=%SDK_INC% -DJPEG_LIBRARY=%SDK_LIB%\libjpeg.lib -DWITH_PROJ=1 -DPROJ_INCLUDE_DIR=%SDK_INC% -DPROJ_LIBRARY=%SDK_LIB%\proj_i.lib -DFRIBIDI_INCLUDE_DIR=%SDK_INC% -DFRIBIDI_LIBRARY=%SDK_LIB%\fribidi.lib -DHARFBUZZ_INCLUDE_DIR=%SDK_INC%\harfbuzz -DHARFBUZZ_LIBRARY=%SDK_LIB%\harfbuzz.lib -DICONV_INCLUDE_DIR=%SDK_INC% -DICONV_LIBRARY=%SDK_LIB%\iconv.lib -DICONV_DLL=%SDK_BIN%\iconv.dll -DCAIRO_INCLUDE_DIR=%SDK_INC% -DCAIRO_LIBRARY=%SDK_LIB%\cairo.lib -DFCGI_INCLUDE_DIR=%SDK_INC% -DFCGI_LIBRARY=%SDK_LIB%\libfcgi.lib -DGEOS_INCLUDE_DIR=%SDK_INC% -DGEOS_LIBRARY=%SDK_LIB%\geos_c.lib -DPOSTGRESQL_INCLUDE_DIR=%SDK_INC% -DPOSTGRESQL_LIBRARY=%SDK_LIB%\libpqdll.lib -DGDAL_INCLUDE_DIR=%SDK_INC% -DGDAL_LIBRARY=%SDK_LIB%\gdal_i.lib -DLIBXML2_INCLUDE_DIR=%SDK_INC%\libxml -DLIBXML2_LIBRARIES=%SDK_LIB%\libxml2.lib -DGIF_INCLUDE_DIR=%SDK_INC% -DGIF_LIBRARY=%SDK_LIB%\giflib.lib -DWITH_CURL=1 -DCURL_INCLUDE_DIR=%SDK_INC% -DCURL_LIBRARY=%SDK_LIB%\libcurl_imp.lib -DMS_EXTERNAL_LIBS=wsock32.lib -DWITH_SOS=1 -DWITH_CLIENT_WFS=1 -DWITH_CLIENT_WMS=1 -DSVG_INCLUDE_DIR=%SDK_INC% -DSVG_LIBRARY=%SDK_LIB%\libsvg.lib -DSVGCAIRO_INCLUDE_DIR=%SDK_INC% -DSVGCAIRO_LIBRARY=%SDK_LIB%\libsvg-cairo.lib -DWITH_SVGCAIRO=1 -DREGEX_DIR=%REGEX_DIR% -DWITH_POINT_Z_M=1 -DWITH_KML=1 -DWITH_THREAD_SAFETY=1 -DSWIG_EXECUTABLE=%SWIG_EXECUTABLE% -DWITH_PYTHON=1 -DPYTHON_EXECUTABLE=%PYTHON_EXECUTABLE% + - cmake -G "%VS_FULL%" .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=%SDK_PREFIX% -DFREETYPE_INCLUDE_DIR_freetype2=%SDK_INC%\freetype -DFREETYPE_INCLUDE_DIR_ft2build=%SDK_INC%\freetype -DFREETYPE_LIBRARY=%SDK_LIB%\freetype2411.lib -DZLIB_INCLUDE_DIR=%SDK_INC% -DZLIB_LIBRARY=%SDK_LIB%\zlib.lib -DPNG_PNG_INCLUDE_DIR=%SDK_INC% -DPNG_LIBRARY=%SDK_LIB%\libpng.lib -DPNG_LIBRARIES=%SDK_LIB%\libpng.lib -DJPEG_INCLUDE_DIR=%SDK_INC% -DJPEG_LIBRARY=%SDK_LIB%\libjpeg.lib -DWITH_PROJ=1 -DPROJ_INCLUDE_DIR=%SDK_INC% -DPROJ_LIBRARY=%SDK_LIB%\proj_i.lib -DFRIBIDI_INCLUDE_DIR=%SDK_INC% -DFRIBIDI_LIBRARY=%SDK_LIB%\fribidi.lib -DHARFBUZZ_INCLUDE_DIR=%SDK_INC%\harfbuzz -DHARFBUZZ_LIBRARY=%SDK_LIB%\harfbuzz.lib -DICONV_INCLUDE_DIR=%SDK_INC% -DICONV_LIBRARY=%SDK_LIB%\iconv.lib -DICONV_DLL=%SDK_BIN%\iconv.dll -DCAIRO_INCLUDE_DIR=%SDK_INC% -DCAIRO_LIBRARY=%SDK_LIB%\cairo.lib -DFCGI_INCLUDE_DIR=%SDK_INC% -DFCGI_LIBRARY=%SDK_LIB%\libfcgi.lib -DGEOS_INCLUDE_DIR=%SDK_INC% -DGEOS_LIBRARY=%SDK_LIB%\geos_c.lib -DPOSTGRESQL_INCLUDE_DIR=%SDK_INC% -DPOSTGRESQL_LIBRARY=%SDK_LIB%\libpqdll.lib -DGDAL_INCLUDE_DIR=%SDK_INC% -DGDAL_LIBRARY=%SDK_LIB%\gdal_i.lib -DLIBXML2_INCLUDE_DIR=%SDK_INC%\libxml -DLIBXML2_LIBRARIES=%SDK_LIB%\libxml2.lib -DGIF_INCLUDE_DIR=%SDK_INC% -DGIF_LIBRARY=%SDK_LIB%\giflib.lib -DWITH_CURL=1 -DCURL_INCLUDE_DIR=%SDK_INC% -DCURL_LIBRARY=%SDK_LIB%\libcurl_imp.lib -DMS_EXTERNAL_LIBS=wsock32.lib -DWITH_SOS=1 -DWITH_CLIENT_WFS=1 -DWITH_CLIENT_WMS=1 -DSVG_INCLUDE_DIR=%SDK_INC% -DSVG_LIBRARY=%SDK_LIB%\libsvg.lib -DSVGCAIRO_INCLUDE_DIR=%SDK_INC% -DSVGCAIRO_LIBRARY=%SDK_LIB%\libsvg-cairo.lib -DWITH_SVGCAIRO=1 -DREGEX_DIR=%REGEX_DIR% -DWITH_POINT_Z_M=1 -DWITH_KML=1 -DWITH_THREAD_SAFETY=1 -DSWIG_EXECUTABLE=%SWIG_EXECUTABLE% -DWITH_PYTHON=1 -DPYTHON_EXECUTABLE=%PYTHON_EXECUTABLE% -DWITH_CSHARP=1 - cmake --build . --config Release test_script: From 132695864b27bb6fced9a866f35365f445889a00 Mon Sep 17 00:00:00 2001 From: Landry Breuil Date: Thu, 9 Feb 2017 08:34:53 +0100 Subject: [PATCH 128/221] Declare nLayerOrder where it's used. (#5387) If LAYERS is specified multiple times in the query string, nLayerOrder isnt reset to 0, and this leads to memory corruption/double-free's upon exit. --- mapwms.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapwms.c b/mapwms.c index 6dc4ebfe4c..1b0910926b 100644 --- a/mapwms.c +++ b/mapwms.c @@ -791,7 +791,6 @@ int msWMSLoadGetMapParams(mapObj *map, int nVersion, const char *wms_request, owsRequestObj *ows_request) { int i, adjust_extent = MS_FALSE, nonsquare_enabled = MS_FALSE; - int nLayerOrder = 0; int transparent = MS_NOOVERRIDE; int bbox_pixel_is_point = MS_FALSE; outputFormatObj *format = NULL; @@ -870,6 +869,7 @@ int msWMSLoadGetMapParams(mapObj *map, int nVersion, if (strcasecmp(names[i], "LAYERS") == 0) { int j, k, iLayer, *layerOrder; + int nLayerOrder = 0; char ***nestedGroups = NULL; int *numNestedGroups = NULL; int *isUsedInNestedGroup = NULL; From 094c6f50ee96b4c141115e7e4918b76bc1623d42 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 20 Feb 2017 16:05:35 +0100 Subject: [PATCH 129/221] .travis.yml: fix for upstream GDAL packaging changes --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 5d1403fe5d..d84d6f8a5c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -52,7 +52,7 @@ before_install: - sudo make install && sudo ldconfig - cd ../.. - sudo mv /etc/apt/sources.list.d/pgdg* /tmp - - sudo apt-get remove postgis libpq5 libpq-dev postgresql-9.1-postgis postgresql-9.1-postgis-2.2-scripts postgresql-9.2-postgis postgresql-9.3-postgis postgresql-9.1 postgresql-9.2 postgresql-9.3 libgdal1 libgdal1-dev libgdal-dev + - sudo apt-get remove postgis libpq5 libpq-dev postgresql-9.1-postgis postgresql-9.1-postgis-2.2-scripts postgresql-9.2-postgis postgresql-9.3-postgis postgresql-9.1 postgresql-9.2 postgresql-9.3 - sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable - sudo apt-get update - sudo apt-get install bison flex python-lxml libfribidi-dev swig cmake librsvg2-dev colordiff postgis postgresql-9.1 postgresql-9.1-postgis-2.1 postgresql-9.1-postgis-2.1-scripts libpq-dev libpng12-dev libjpeg-dev libgif-dev libgeos-dev libgd2-xpm-dev libfreetype6-dev libfcgi-dev libcurl4-gnutls-dev libcairo2-dev libgdal1-dev libproj-dev libxml2-dev python-dev php5-dev libexempi-dev lcov lftp libgdal-dev libgdal1h From fc36c0aa8b0277ae10770a6c959ad25927c5306b Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 20 Feb 2017 15:58:47 +0100 Subject: [PATCH 130/221] GRID layer: fix label positionning when requesting WGS84 graticule in EPSG:3857 This clamps labels in the validity area of EPSG:3857, even if the eastings of the BBOX exceed 20037508. --- mapgraticule.c | 131 ++++++++++++++++-- ...3857_non_square_pixels_beyond_validity.png | Bin 0 -> 26525 bytes ..._to_3857_square_pixels_beyond_validity.png | Bin 0 -> 26412 bytes ..._to_3857_square_pixels_within_validity.png | Bin 0 -> 36465 bytes msautotest/wxs/wms_grid_reproj_to_3857.map | 75 ++++++++++ 5 files changed, 195 insertions(+), 11 deletions(-) create mode 100644 msautotest/wxs/expected/wms_grid_reproj_to_3857_non_square_pixels_beyond_validity.png create mode 100644 msautotest/wxs/expected/wms_grid_reproj_to_3857_square_pixels_beyond_validity.png create mode 100644 msautotest/wxs/expected/wms_grid_reproj_to_3857_square_pixels_within_validity.png create mode 100644 msautotest/wxs/wms_grid_reproj_to_3857.map diff --git a/mapgraticule.c b/mapgraticule.c index 688b45b3f9..eab39f8470 100644 --- a/mapgraticule.c +++ b/mapgraticule.c @@ -187,6 +187,19 @@ int msGraticuleLayerWhichShapes(layerObj *layer, rectObj rect, int isQuery) * These lines will be used when generating labels to get correct placement at arc/rect edge intersections. */ rectMapCoordinates = layer->map->extent; +#ifdef USE_PROJ + layer->project = msProjectionsDiffer(&(layer->projection), &(layer->map->projection)); + if( layer->project && + strstr(layer->map->projection.args[0], "epsg:3857") && + pj_is_latlong(layer->projection.proj) ) + { + if( rectMapCoordinates.minx < -20037508) + rectMapCoordinates.minx = -20037508; + if( rectMapCoordinates.maxx > 20037508 ) + rectMapCoordinates.maxx = 20037508; + } +#endif + msFree(pInfo->pboundinglines); pInfo->pboundinglines = (lineObj *) msSmallMalloc( sizeof( lineObj ) * 4 ); msFree(pInfo->pboundingpoints); @@ -205,7 +218,6 @@ int msGraticuleLayerWhichShapes(layerObj *layer, rectObj rect, int isQuery) pInfo->pboundinglines[0].point[1].y = rectMapCoordinates.maxy; #ifdef USE_PROJ - layer->project = msProjectionsDiffer(&(layer->projection), &(layer->map->projection)); if(layer->project) msProjectLine(&layer->map->projection, &layer->projection, &pInfo->pboundinglines[0]); #endif @@ -287,7 +299,7 @@ int msGraticuleLayerNextShape(layerObj *layer, shapeObj *shape) case 0: if(!pInfo->blabelaxes) { /* Bottom */ pInfo->ilabelstate++; - shape->numlines = 0; + msFreeShape(shape); return MS_SUCCESS; } @@ -306,7 +318,11 @@ int msGraticuleLayerNextShape(layerObj *layer, shapeObj *shape) _FormatLabel( layer, shape, shape->line->point[0].x ); if(_AdjustLabelPosition( layer, shape, posBottom ) != MS_SUCCESS) - return MS_FAILURE; + { + msFreeShape(shape); + pInfo->ilabelstate++; + return MS_SUCCESS; + } pInfo->ilabelstate++; return MS_SUCCESS; @@ -314,7 +330,7 @@ int msGraticuleLayerNextShape(layerObj *layer, shapeObj *shape) case 1: if(!pInfo->blabelaxes) { /* Top */ pInfo->ilabelstate++; - shape->numlines = 0; + msFreeShape(shape); return MS_SUCCESS; } @@ -333,7 +349,11 @@ int msGraticuleLayerNextShape(layerObj *layer, shapeObj *shape) _FormatLabel( layer, shape, shape->line->point[0].x ); if(_AdjustLabelPosition( layer, shape, posTop ) != MS_SUCCESS) - return MS_FAILURE; + { + msFreeShape(shape); + pInfo->ilabelstate++; + return MS_SUCCESS; + } pInfo->ilabelstate++; return MS_SUCCESS; @@ -372,7 +392,7 @@ int msGraticuleLayerNextShape(layerObj *layer, shapeObj *shape) case 0: if(!pInfo->blabelaxes) { /* Left side */ pInfo->ilabelstate++; - shape->numlines = 0; + msFreeShape(shape); return MS_SUCCESS; } @@ -391,7 +411,11 @@ int msGraticuleLayerNextShape(layerObj *layer, shapeObj *shape) _FormatLabel( layer, shape, shape->line->point[0].y ); if(_AdjustLabelPosition( layer, shape, posLeft ) != MS_SUCCESS) - return MS_FAILURE; + { + msFreeShape(shape); + pInfo->ilabelstate++; + return MS_SUCCESS; + } pInfo->ilabelstate++; return MS_SUCCESS; @@ -399,7 +423,7 @@ int msGraticuleLayerNextShape(layerObj *layer, shapeObj *shape) case 1: if(!pInfo->blabelaxes) { /* Right side */ pInfo->ilabelstate++; - shape->numlines = 0; + msFreeShape(shape); return MS_SUCCESS; } @@ -418,7 +442,11 @@ int msGraticuleLayerNextShape(layerObj *layer, shapeObj *shape) _FormatLabel( layer, shape, shape->line->point[0].y ); if(_AdjustLabelPosition( layer, shape, posRight ) != MS_SUCCESS) - return MS_FAILURE; + { + msFreeShape(shape); + pInfo->ilabelstate++; + return MS_SUCCESS; + } pInfo->ilabelstate++; return MS_SUCCESS; @@ -1039,7 +1067,20 @@ static int _AdjustLabelPosition( layerObj *pLayer, shapeObj *pShape, msGraticule #ifdef USE_PROJ if(pLayer->project) + { msProjectShape( &pLayer->projection, &pLayer->map->projection, pShape ); + + /* Poor man detection of reprojection failure */ + if( pj_is_latlong(pLayer->projection.proj) != + pj_is_latlong(pLayer->map->projection.proj) ) + { + if( ptPoint.x == pShape->line->point[0].x && + ptPoint.y == pShape->line->point[0].y ) + { + return MS_FAILURE; + } + } + } #endif if(pLayer->transform) { @@ -1067,8 +1108,8 @@ static int _AdjustLabelPosition( layerObj *pLayer, shapeObj *pShape, msGraticule pShape->line->point[0].y = fabs(rectLabel.maxy - rectLabel.miny) * 2 + 5; break; case posLeft: - pShape->line->point[1].x = 0; - pShape->line->point[0].x = fabs(rectLabel.maxx - rectLabel.minx) * 2 + 5; + pShape->line->point[0].x = 0; + pShape->line->point[1].x = fabs(rectLabel.maxx - rectLabel.minx) * 2 + 5; break; case posRight: pShape->line->point[1].x = pLayer->map->width; @@ -1081,7 +1122,75 @@ static int _AdjustLabelPosition( layerObj *pLayer, shapeObj *pShape, msGraticule #ifdef USE_PROJ if(pLayer->project) + { + /* Clamp coordinates into the validity area of the projection, in the */ + /* particular case of EPSG:3857 (WebMercator) to longlat reprojection */ + if( strstr(pLayer->map->projection.args[0], "epsg:3857") && + pj_is_latlong(pLayer->projection.proj) ) + { + if( !pLayer->map->projection.gt.need_geotransform && + ePosition == posLeft && pShape->line->point[0].x < -20037508) + { + pShape->line->point[1].x = -20037508 + (pShape->line->point[1].x - + pShape->line->point[0].x); + pShape->line->point[0].x = -20037508; + } + else if( pLayer->map->projection.gt.need_geotransform && + ePosition == posLeft && + pLayer->map->projection.gt.geotransform[0] + + pShape->line->point[0].x * + pLayer->map->projection.gt.geotransform[1] + + pShape->line->point[0].y * + pLayer->map->projection.gt.geotransform[2] < -20037508) + { + double y_tmp; + double width = pShape->line->point[1].x - pShape->line->point[0].x; + + y_tmp = pLayer->map->projection.gt.geotransform[3] + + pShape->line->point[0].x * + pLayer->map->projection.gt.geotransform[4] + + pShape->line->point[0].y * + pLayer->map->projection.gt.geotransform[5]; + pShape->line->point[0].x = + pLayer->map->projection.gt.invgeotransform[0] + + -20037508 * pLayer->map->projection.gt.invgeotransform[1] + + y_tmp * pLayer->map->projection.gt.invgeotransform[2]; + pShape->line->point[1].x = pShape->line->point[0].x + width; + } + + if( !pLayer->map->projection.gt.need_geotransform && + ePosition == posRight && pShape->line->point[1].x > 20037508) + { + pShape->line->point[0].x = 20037508 - (pShape->line->point[1].x - + pShape->line->point[0].x); + pShape->line->point[1].x = 20037508; + } + else if( pLayer->map->projection.gt.need_geotransform && + ePosition == posRight && + pLayer->map->projection.gt.geotransform[0] + + pShape->line->point[1].x * + pLayer->map->projection.gt.geotransform[1] + + pShape->line->point[1].y * + pLayer->map->projection.gt.geotransform[2] > 20037508) + { + double y_tmp; + double width = pShape->line->point[1].x - pShape->line->point[0].x; + + y_tmp = pLayer->map->projection.gt.geotransform[3] + + pShape->line->point[1].x * + pLayer->map->projection.gt.geotransform[4] + + pShape->line->point[1].y * + pLayer->map->projection.gt.geotransform[5]; + pShape->line->point[1].x = + pLayer->map->projection.gt.invgeotransform[0] + + 20037508 * pLayer->map->projection.gt.invgeotransform[1] + + y_tmp * pLayer->map->projection.gt.invgeotransform[2]; + pShape->line->point[0].x = pShape->line->point[1].x - width; + } + } + msProjectShape( &pLayer->map->projection, &pLayer->projection, pShape ); + } #endif switch( ePosition ) { diff --git a/msautotest/wxs/expected/wms_grid_reproj_to_3857_non_square_pixels_beyond_validity.png b/msautotest/wxs/expected/wms_grid_reproj_to_3857_non_square_pixels_beyond_validity.png new file mode 100644 index 0000000000000000000000000000000000000000..1966daf6239b4f4ce21ad63155fb081b5138b4bc GIT binary patch literal 26525 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 literal 0 HcmV?d00001 diff --git a/msautotest/wxs/expected/wms_grid_reproj_to_3857_square_pixels_beyond_validity.png b/msautotest/wxs/expected/wms_grid_reproj_to_3857_square_pixels_beyond_validity.png new file mode 100644 index 0000000000000000000000000000000000000000..bca97786e833609038d8386f3ed093282313959e GIT binary patch literal 26412 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 S`QARk-wk66qsrgzNBl3uJu4Uh literal 0 HcmV?d00001 diff --git a/msautotest/wxs/wms_grid_reproj_to_3857.map b/msautotest/wxs/wms_grid_reproj_to_3857.map new file mode 100644 index 0000000000..0ae96122ba --- /dev/null +++ b/msautotest/wxs/wms_grid_reproj_to_3857.map @@ -0,0 +1,75 @@ +# +# Test WMS +# +# REQUIRES: INPUT=GDAL OUTPUT=PNG SUPPORTS=WMS +# +# Check that labels are in the left and right +# +# RUN_PARMS: wms_grid_reproj_to_3857_square_pixels_within_validity.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=false&LAYERS=grid4326&CRS=EPSG:3857&STYLES=&WIDTH=2000&HEIGHT=1500&BBOX=-20000000,-15000000,20000000,15000000" > [RESULT_DEMIME] +# +# RUN_PARMS: wms_grid_reproj_to_3857_square_pixels_beyond_validity.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=false&LAYERS=grid4326&CRS=EPSG:3857&STYLES=&WIDTH=2036&HEIGHT=739&BBOX=-39996745.16861447,-14460662.759102784,39683659.10075838,14460662.759102784" > [RESULT_DEMIME] +# +# RUN_PARMS: wms_grid_reproj_to_3857_non_square_pixels_beyond_validity.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=false&LAYERS=grid4326&CRS=EPSG:3857&STYLES=&WIDTH=2036&HEIGHT=735&BBOX=-39996745.16861447,-14460662.759102784,39683659.10075838,14460662.759102784" > [RESULT_DEMIME] +# + +MAP + NAME WMS_GRID_TEST + EXTENT -180 -90 180 90 + UNITS DD + FONTSET "../misc/fonts.lst" + + WEB + METADATA + wms_enable_request "*" + END + END + + PROJECTION + "init=epsg:4326" + END + + OUTPUTFORMAT + NAME GDPNG + DRIVER "GD/PNG" + MIMETYPE "image/png" + EXTENSION "png" + END + + LAYER + NAME "grid4326" + + METADATA + "wms_srs" "EPSG:4326 EPSG:3857" + "wms_extent" "-180 -90 180 90" + END + + TYPE LINE + + CLASS + NAME "Graticule" + COLOR 255 153 0 + LABEL + COLOR 0 0 0 + FONT lucida + TYPE truetype + SIZE 8 + POSITION AUTO + PARTIALS FALSE + BUFFER 5 + OUTLINECOLOR 255 255 255 + END + END + + PROJECTION + "init=epsg:4326" + END + + GRID + LABELFORMAT 'DDMMSS' # nice if a projected SRS used + MININTERVAL 30 + MAXINTERVAL 30 + END + + END # Layer + +END From f125a134011b9ff3842a5a99d3592b02e82cec41 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Mon, 20 Feb 2017 22:32:10 +0100 Subject: [PATCH 131/221] Legend icon for label layers should not rotate (#5391) --- maplegend.c | 1 + 1 file changed, 1 insertion(+) diff --git a/maplegend.c b/maplegend.c index b02f12ceca..4c2d377352 100644 --- a/maplegend.c +++ b/maplegend.c @@ -387,6 +387,7 @@ int msDrawLegendIcon(mapObj *map, layerObj *lp, classObj *theclass, initTextSymbol(&ts); msPopulateTextSymbolForLabelAndString(&ts,theclass->labels[0],msStrdup("Az"),lp->scalefactor*image_draw->resolutionfactor,image_draw->resolutionfactor, duplicate_always); ts.label->size = height - 1; + ts.rotation = 0; ret = msComputeTextPath(map,&ts); if(UNLIKELY(ret == MS_FAILURE)) goto legend_icon_cleanup; textstartpt = get_metrics(&marker,MS_CC,ts.textpath,0,0,0,0,NULL); From e85f8e39b5fa2931cab42ec84758771103c90700 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Tue, 21 Feb 2017 20:28:44 +0100 Subject: [PATCH 132/221] Fix crash if the prj cannot be opened (#5395) --- mapshape.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapshape.c b/mapshape.c index f1f71a5c29..0daf7b96d4 100644 --- a/mapshape.c +++ b/mapshape.c @@ -2624,8 +2624,8 @@ int msSHPLayerOpen(layerObj *layer) } OSRDestroySpatialReference(hSRS); } + fclose(fp); } - fclose(fp); if( bOK != MS_TRUE ) { From f1857d439eaf6de59f6df3219828ff0116fd7ed8 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Tue, 21 Feb 2017 20:52:53 +0100 Subject: [PATCH 133/221] Fix memory leaks (#5397) --- mapdraw.c | 1 + maphash.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/mapdraw.c b/mapdraw.c index 1ccc0fedad..9fdacdabf9 100644 --- a/mapdraw.c +++ b/mapdraw.c @@ -55,6 +55,7 @@ imageObj *msPrepareImage(mapObj *map, int allow_nonsquare) return(NULL); } + msFreeLabelCache(&(map->labelcache)); msInitLabelCache(&(map->labelcache)); /* this clears any previously allocated cache */ /* clear any previously created mask layer images */ diff --git a/maphash.c b/maphash.c index c54860223c..1c27cc8c63 100644 --- a/maphash.c +++ b/maphash.c @@ -187,10 +187,14 @@ int msRemoveHashTable(hashTableObj *table, const char *key) status = MS_SUCCESS; if (prev_tp) { prev_tp->next = tp->next; + msFree(tp->key); + msFree(tp->data); free(tp); break; } else { table->items[hash(key)] = tp->next; + msFree(tp->key); + msFree(tp->data); free(tp); break; } From 4c2aeb4bbd229723d8ea67c337cf02350575b2ae Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 22 Feb 2017 22:34:32 +0100 Subject: [PATCH 134/221] msTransformMapToSource(), msNearestRasterResampler(), msBilinearRasterResampler(): fixes for lon_wrap=180 Complementary fix to 722716c49de2399f54b275ab31437f0e8c92cd63 for various combinations of request extent and source raster dimension. --- mapresample.c | 60 +++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 14 deletions(-) diff --git a/mapresample.c b/mapresample.c index b5cd44fc7b..b158b84705 100644 --- a/mapresample.c +++ b/mapresample.c @@ -83,7 +83,8 @@ msNearestRasterResampler( imageObj *psSrcImage, rasterBufferObj *src_rb, imageObj *psDstImage, rasterBufferObj *dst_rb, int *panCMap, SimpleTransformer pfnTransform, void *pCBData, - int debug, rasterBufferObj *mask_rb ) + int debug, rasterBufferObj *mask_rb, + int bWrapAtLeftRight ) { double *x, *y; @@ -122,6 +123,9 @@ msNearestRasterResampler( imageObj *psSrcImage, rasterBufferObj *src_rb, nSrcX = (int) x[nDstX]; nSrcY = (int) y[nDstX]; + if( bWrapAtLeftRight && nSrcX >= nSrcXSize && nSrcX < 2 * nSrcXSize ) + nSrcX -= nSrcXSize; + /* * We test the original floating point values to * avoid errors related to asymmetric rounding around zero. @@ -302,7 +306,8 @@ msBilinearRasterResampler( imageObj *psSrcImage, rasterBufferObj *src_rb, imageObj *psDstImage, rasterBufferObj *dst_rb, int *panCMap, SimpleTransformer pfnTransform, void *pCBData, - int debug, rasterBufferObj *mask_rb ) + int debug, rasterBufferObj *mask_rb, + int bWrapAtLeftRight ) { double *x, *y; @@ -359,31 +364,32 @@ msBilinearRasterResampler( imageObj *psSrcImage, rasterBufferObj *src_rb, dfRatioY2 = y[nDstX] - nSrcY; /* If we are right off the source, skip this pixel */ - if( nSrcX2 < 0 || nSrcX >= nSrcXSize + if( nSrcX2 < 0 || (!bWrapAtLeftRight && nSrcX >= nSrcXSize) || nSrcY2 < 0 || nSrcY >= nSrcYSize ) continue; /* Trim in stuff one pixel off the edge */ nSrcX = MS_MAX(nSrcX,0); nSrcY = MS_MAX(nSrcY,0); - nSrcX2 = MS_MIN(nSrcX2,nSrcXSize-1); + if( !bWrapAtLeftRight ) + nSrcX2 = MS_MIN(nSrcX2,nSrcXSize-1); nSrcY2 = MS_MIN(nSrcY2,nSrcYSize-1); memset( padfPixelSum, 0, sizeof(double) * bandCount); - msSourceSample( psSrcImage, src_rb, nSrcX, nSrcY, padfPixelSum, + msSourceSample( psSrcImage, src_rb, nSrcX % nSrcXSize, nSrcY, padfPixelSum, (1.0 - dfRatioX2) * (1.0 - dfRatioY2), &dfWeightSum ); - msSourceSample( psSrcImage, src_rb, nSrcX2, nSrcY, padfPixelSum, + msSourceSample( psSrcImage, src_rb, nSrcX2 % nSrcXSize, nSrcY, padfPixelSum, (dfRatioX2) * (1.0 - dfRatioY2), &dfWeightSum ); - msSourceSample( psSrcImage, src_rb, nSrcX, nSrcY2, padfPixelSum, + msSourceSample( psSrcImage, src_rb, nSrcX % nSrcXSize, nSrcY2, padfPixelSum, (1.0 - dfRatioX2) * (dfRatioY2), &dfWeightSum ); - msSourceSample( psSrcImage, src_rb, nSrcX2, nSrcY2, padfPixelSum, + msSourceSample( psSrcImage, src_rb, nSrcX2 % nSrcXSize, nSrcY2, padfPixelSum, (dfRatioX2) * (dfRatioY2), &dfWeightSum ); @@ -1200,8 +1206,17 @@ static int msTransformMapToSource( int nDstXSize, int nDstYSize, + (dfLonWrap-180)*adfInvSrcGeoTransform[4] + dfY*adfInvSrcGeoTransform[5]; - psSrcExtent->minx = MS_MIN(psSrcExtent->minx, x_out); - psSrcExtent->maxx = MS_MAX(psSrcExtent->maxx, x_out); + /* Does the raster cover a whole 360 deg range ? */ + if( nSrcXSize == (int)(adfInvSrcGeoTransform[1] * 360 + 0.5) ) + { + psSrcExtent->minx = 0; + psSrcExtent->maxx = nSrcXSize; + } + else + { + psSrcExtent->minx = MS_MIN(psSrcExtent->minx, x_out); + psSrcExtent->maxx = MS_MAX(psSrcExtent->maxx, x_out); + } psSrcExtent->miny = MS_MIN(psSrcExtent->miny, y_out); psSrcExtent->maxy = MS_MAX(psSrcExtent->maxy, y_out); } @@ -1216,8 +1231,17 @@ static int msTransformMapToSource( int nDstXSize, int nDstYSize, + (dfLonWrap+180)*adfInvSrcGeoTransform[4] + dfY*adfInvSrcGeoTransform[5]; - psSrcExtent->minx = MS_MIN(psSrcExtent->minx, x_out); - psSrcExtent->maxx = MS_MAX(psSrcExtent->maxx, x_out); + /* Does the raster cover a whole 360 deg range ? */ + if( nSrcXSize == (int)(adfInvSrcGeoTransform[1] * 360 + 0.5) ) + { + psSrcExtent->minx = 0; + psSrcExtent->maxx = nSrcXSize; + } + else + { + psSrcExtent->minx = MS_MIN(psSrcExtent->minx, x_out); + psSrcExtent->maxx = MS_MAX(psSrcExtent->maxx, x_out); + } psSrcExtent->miny = MS_MIN(psSrcExtent->miny, y_out); psSrcExtent->maxy = MS_MAX(psSrcExtent->maxy, y_out); } @@ -1282,6 +1306,7 @@ int msResampleGDALToMap( mapObj *map, layerObj *layer, imageObj *image, double dfOversampleRatio; rasterBufferObj src_rb, *psrc_rb = NULL, *mask_rb = NULL; int bAddPixelMargin = MS_TRUE; + int bWrapAtLeftRight = MS_FALSE; const char *resampleMode = CSLFetchNameValue( layer->processing, @@ -1646,6 +1671,13 @@ int msResampleGDALToMap( mapObj *map, layerObj *layer, imageObj *image, /* -------------------------------------------------------------------- */ pACBData = msInitApproxTransformer( msProjTransformer, pTCBData, 0.333 ); + if( pj_is_latlong(layer->projection.proj) ) + { + /* Does the raster cover a whole 360 deg range ? */ + if( nSrcXSize == (int)(adfInvSrcGeoTransform[1] * 360 + 0.5) ) + bWrapAtLeftRight = MS_TRUE; + } + /* -------------------------------------------------------------------- */ /* Perform the resampling. */ /* -------------------------------------------------------------------- */ @@ -1658,12 +1690,12 @@ int msResampleGDALToMap( mapObj *map, layerObj *layer, imageObj *image, result = msBilinearRasterResampler( srcImage, psrc_rb, image, rb, anCMap, msApproxTransformer, pACBData, - layer->debug, mask_rb ); + layer->debug, mask_rb, bWrapAtLeftRight ); else result = msNearestRasterResampler( srcImage, psrc_rb, image, rb, anCMap, msApproxTransformer, pACBData, - layer->debug, mask_rb ); + layer->debug, mask_rb, bWrapAtLeftRight ); /* -------------------------------------------------------------------- */ /* cleanup */ From 14243fa9c605bd497d5a8aa6c725cf98045ff9f8 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 23 Feb 2017 20:08:27 +0100 Subject: [PATCH 135/221] msProjectRect(): fix when reprojecting from north polar stereographic to WGS84. --- mapproject.c | 34 +++++ .../wms_north_polar_stereo_extent.xml | 142 ++++++++++++++++++ .../wxs/wms_north_polar_stereo_extent.map | 88 +++++++++++ 3 files changed, 264 insertions(+) create mode 100644 msautotest/wxs/expected/wms_north_polar_stereo_extent.xml create mode 100644 msautotest/wxs/wms_north_polar_stereo_extent.map diff --git a/mapproject.c b/mapproject.c index 1a10390be0..c90cc5446f 100644 --- a/mapproject.c +++ b/mapproject.c @@ -954,6 +954,40 @@ int msProjectRect(projectionObj *in, projectionObj *out, rectObj *rect) char *over = "+over"; int ret; projectionObj in_over,out_over,*inp,*outp; + +#if USE_PROJ + /* Detect projecting from north polar stereographic to longlat */ + if( in && !in->gt.need_geotransform && + out && !out->gt.need_geotransform && + !pj_is_latlong(in->proj) && pj_is_latlong(out->proj) ) + { + pointObj p; + p.x = 0.0; + p.y = 0.0; + if( msProjectPoint(in, out, &p) == MS_SUCCESS && + fabs(p.y - 90) < 1e-8 ) + { + /* Is the pole in the rectangle ? */ + if( 0 >= rect->minx && 0 >= rect->miny && + 0 <= rect->maxx && 0 <= rect->maxy ) + { + if( msProjectRectAsPolygon(in, out, rect ) == MS_SUCCESS ) + { + rect->minx = -180.0; + rect->maxx = 180.0; + rect->maxy = 90.0; + return MS_SUCCESS; + } + } + /* Are we sure the dateline is not enclosed ? */ + else if( rect->maxy < 0 || rect->maxx < 0 || rect->minx > 0 ) + { + return msProjectRectAsPolygon(in, out, rect ); + } + } + } +#endif + /* * Issue #4892: When projecting a rectangle we do not want proj to wrap resulting * coordinates around the dateline, as in practice a requested bounding box of diff --git a/msautotest/wxs/expected/wms_north_polar_stereo_extent.xml b/msautotest/wxs/expected/wms_north_polar_stereo_extent.xml new file mode 100644 index 0000000000..581b6ab02b --- /dev/null +++ b/msautotest/wxs/expected/wms_north_polar_stereo_extent.xml @@ -0,0 +1,142 @@ +Content-Type: text/xml; charset=UTF-8 + + + + + + WMS + Test simple wms + + ogc + wms + mapserver + + + + + Tom Kralidis + MapServer + + self + + postal +

123 SomeRoad Road
+ Toronto + Ontario + xxx-xxx + Canada + + +xx-xxx-xxx-xxxx + +xx-xxx-xxx-xxxx + tomkralidis@xxxxxxx.xxx + + None + None + 4096 + 4096 + + + + + + text/xml + + + + + + + + + image/png + image/jpeg + image/png; mode=8bit + application/x-pdf + image/svg+xml + image/tiff + application/vnd.google-earth.kml+xml + application/vnd.google-earth.kmz + + + + + + + + + text/plain + application/vnd.ogc.gml + + + + + + + + + text/xml + + + + + + + + + image/png + image/jpeg + image/png; mode=8bit + + + + + + + + + text/xml + + + + + + + + + + XML + INIMAGE + BLANK + + + + WMS_TEST + Test simple wms + WMS_TEST + + ogc + wms + mapserver + + EPSG:4326 + + -180 + 180 + -90 + 90 + + + + fake + fake + + -152.996 + -43.8099 + 27.6287 + 69.9699 + + + + + diff --git a/msautotest/wxs/wms_north_polar_stereo_extent.map b/msautotest/wxs/wms_north_polar_stereo_extent.map new file mode 100644 index 0000000000..44238f9e25 --- /dev/null +++ b/msautotest/wxs/wms_north_polar_stereo_extent.map @@ -0,0 +1,88 @@ +# +# Test WMS +# +# REQUIRES: INPUT=GDAL OUTPUT=PNG SUPPORTS=WMS +# +# +# Test Ex_GeographicBoundingBox in Capabilities +# RUN_PARMS: wms_north_polar_stereo_extent.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities" > [RESULT_DEVERSION] +# + +MAP + + NAME WMS_TEST + + EXTENT -180 -90 180 90 + SIZE 500 300 + PROJECTION + "init=epsg:4326" + END + +UNITS DD + +# +# Start of web interface definition +# +WEB + + IMAGEPATH "/tmp/ms_tmp/" + IMAGEURL "/ms_tmp/" + + METADATA + "wms_title" "Test simple wms" + "wms_onlineresource" "http://localhost/path/to/wms_simple?" + "wms_srs" "EPSG:4326" + "ows_schemas_location" "http://schemas.opengis.net" + "ows_keywordlist" "ogc,wms,mapserver" + "ows_service_onlineresource" "http://www.mapserver.org/" + "ows_fees" "None" + "ows_accessconstraints" "None" + "ows_addresstype" "postal" + "ows_address" "123 SomeRoad Road" + "ows_city" "Toronto" + "ows_stateorprovince" "Ontario" + "ows_postcode" "xxx-xxx" + "ows_country" "Canada" + "ows_contactelectronicmailaddress" "tomkralidis@xxxxxxx.xxx" + "ows_contactvoicetelephone" "+xx-xxx-xxx-xxxx" + "ows_contactfacsimiletelephone" "+xx-xxx-xxx-xxxx" + "ows_contactperson" "Tom Kralidis" + "ows_contactorganization" "MapServer" + "ows_contactposition" "self" + + "ows_enable_request" "*" + END +END + +# +# Start of layer definitions +# + +LAYER + NAME fake + DATA fake + TEMPLATE "ttt" + METADATA + "wms_title" "fake" + "wms_description" "fake" + "ows_extent" "-2099127.494 -5739388.521 4340872.506 -2099388.521" + END + TYPE LINE + STATUS ON + PROJECTION + "proj=stere" + "lat_0=90" + "lat_ts=60" + "lon_0=252" + "k=90" + "x_0=0" + "y_0=0" + "a=6371229" + "b=6371229" + "units=m" + "no_defs" + END + +END # Layer + +END # Map File From 761a73a5f4fcdccc5914519f786d22e24ac5a7b5 Mon Sep 17 00:00:00 2001 From: Steve Lime Date: Wed, 1 Mar 2017 20:43:20 -0600 Subject: [PATCH 136/221] Allow paging for msQueryByFilter(). --- mapquery.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mapquery.c b/mapquery.c index 184b83b082..5b8f222c30 100644 --- a/mapquery.c +++ b/mapquery.c @@ -672,6 +672,7 @@ int msQueryByFilter(mapObj *map) rectObj search_rect; shapeObj shape; + int paging; int nclasses = 0; int *classgroup = NULL; @@ -731,12 +732,14 @@ int msQueryByFilter(mapObj *map) if((lp->mingeowidth > 0) && ((map->extent.maxx - map->extent.minx) < lp->mingeowidth)) continue; } + paging = msLayerGetPaging(lp); msLayerClose(lp); /* reset */ status = msLayerOpen(lp); if(status != MS_SUCCESS) goto query_error; + msLayerEnablePaging(lp, paging); /* disable driver paging */ - msLayerEnablePaging(lp, MS_FALSE); + // msLayerEnablePaging(lp, MS_FALSE); old_filteritem = lp->filteritem; /* cache the existing filter/filteritem */ msInitExpression(&old_filter); @@ -816,7 +819,7 @@ int msQueryByFilter(mapObj *map) #endif /* Should we skip this feature? */ - if (!msLayerGetPaging(lp) && map->query.startindex > 1) { + if (!paging && map->query.startindex > 1) { --map->query.startindex; msFreeShape(&shape); continue; From 3d9f71ae4812efc9144546911e649bd3b03c8347 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sun, 5 Mar 2017 20:40:24 +0100 Subject: [PATCH 137/221] msResampleGDALToMap(): amend e0a3448f3f42d20a0d271709c8629a5b40d13951 to fix regression of #5402 --- mapresample.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mapresample.c b/mapresample.c index b158b84705..3a30d86209 100644 --- a/mapresample.c +++ b/mapresample.c @@ -1496,11 +1496,11 @@ int msResampleGDALToMap( mapObj *map, layerObj *layer, imageObj *image, sqrt(adfSrcGeoTransform[1] * adfSrcGeoTransform[1] + adfSrcGeoTransform[2] * adfSrcGeoTransform[2]); - /* Check first that the requested extent is not greater than the source */ + /* Check first that the requested extent is not well beyond than the source */ /* raster. This might be the case for example if asking to visualize */ /* -180,-89,180,90 in EPSG:4326 from a raster in Arctic Polar Stereographic */ - if( !(sOrigSrcExtent.minx <= -nSrcXSize && sOrigSrcExtent.miny <= -nSrcYSize && - sOrigSrcExtent.maxx >= 2 * nSrcXSize && sOrigSrcExtent.maxy >= 2 * nSrcYSize) + if( !(sOrigSrcExtent.minx <= -4 * nSrcXSize && sOrigSrcExtent.miny <= -4 * nSrcYSize && + sOrigSrcExtent.maxx >= 5 * nSrcXSize && sOrigSrcExtent.maxy >= 5 * nSrcYSize) && (sOrigSrcExtent.maxx - sOrigSrcExtent.minx) > dfOversampleRatio * nDstXSize && !CSLFetchBoolean( layer->processing, "LOAD_FULL_RES_IMAGE", FALSE )) sDummyMap.cellsize = From bd9ff630f5f02dfa4f908eeba7a391f39f4fd9b8 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sun, 5 Mar 2017 23:05:35 +0100 Subject: [PATCH 138/221] msResampleGDALToMap(): restrict full size acquisition in weird reprojection cases to raster of 'modest' size (#5402) --- mapresample.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mapresample.c b/mapresample.c index 3a30d86209..b0fa1c1adf 100644 --- a/mapresample.c +++ b/mapresample.c @@ -1499,8 +1499,12 @@ int msResampleGDALToMap( mapObj *map, layerObj *layer, imageObj *image, /* Check first that the requested extent is not well beyond than the source */ /* raster. This might be the case for example if asking to visualize */ /* -180,-89,180,90 in EPSG:4326 from a raster in Arctic Polar Stereographic */ + /* But restrict that to rasters of modest size, otherwise we may end up */ + /* requesting very large dimensions in other legit reprojection cases */ + /* See https://github.com/mapserver/mapserver/issues/5402 */ if( !(sOrigSrcExtent.minx <= -4 * nSrcXSize && sOrigSrcExtent.miny <= -4 * nSrcYSize && - sOrigSrcExtent.maxx >= 5 * nSrcXSize && sOrigSrcExtent.maxy >= 5 * nSrcYSize) + sOrigSrcExtent.maxx >= 5 * nSrcXSize && sOrigSrcExtent.maxy >= 5 * nSrcYSize && + nSrcXSize < 4000 && nSrcYSize < 4000) && (sOrigSrcExtent.maxx - sOrigSrcExtent.minx) > dfOversampleRatio * nDstXSize && !CSLFetchBoolean( layer->processing, "LOAD_FULL_RES_IMAGE", FALSE )) sDummyMap.cellsize = From 48de40e61fdb56c677a9071f1b8eb5c110452601 Mon Sep 17 00:00:00 2001 From: Sergey Morev Date: Sun, 26 Mar 2017 13:12:50 +0300 Subject: [PATCH 139/221] Forming the tag in the sld-file from the SYMBOL type MS_SYMBOL_SVG Previously, the subtree of the tag from the SYMBOL type MS_SYMBOL_SVG was not generated in the sld-file. Fixed formatting error in snprintf. --- mapogcsld.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mapogcsld.c b/mapogcsld.c index 8b76ea2ca3..26122e30d0 100644 --- a/mapogcsld.c +++ b/mapogcsld.c @@ -3418,7 +3418,7 @@ char *msSLDGetGraphicSLD(styleObj *psStyle, layerObj *psLayer, } } else bGenerateDefaultSymbol =1; - } else if (psSymbol->type == MS_SYMBOL_PIXMAP) { + } else if (psSymbol->type == MS_SYMBOL_PIXMAP || psSymbol->type == MS_SYMBOL_SVG) { if (psSymbol->name) { pszURL = msLookupHashTable(&(psLayer->metadata), "WMS_SLD_SYMBOL_URL"); if (!pszURL) @@ -3455,8 +3455,8 @@ char *msSLDGetGraphicSLD(styleObj *psStyle, layerObj *psLayer, snprintf(szTmp, sizeof(szTmp), "<%sFormat>image/png\n", sNameSpace, sNameSpace); } else - snprintf(szTmp, sizeof(szTmp), "<%sFormat>%s\n", "image/gif", - sNameSpace, sNameSpace); + snprintf(szTmp, sizeof(szTmp), "<%sFormat>%s\n", sNameSpace, + (psSymbol->type ==MS_SYMBOL_SVG)?"image/svg+xml":"image/gif",sNameSpace); pszSLD = msStringConcatenate(pszSLD, szTmp); From b814f93cda0bf9b9b8ed7f32626803519d3d1571 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 27 Mar 2017 19:47:39 +0200 Subject: [PATCH 140/221] [PostGIS] Format literal number in filter as integer when possible to avoid performance issues --- mappostgis.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mappostgis.c b/mappostgis.c index 4bec985967..cc4edf8bba 100644 --- a/mappostgis.c +++ b/mappostgis.c @@ -3636,9 +3636,13 @@ int msPostGISLayerTranslateFilter(layerObj *layer, expressionObj *filter, char * native_string = msStringConcatenate(native_string, "FALSE"); break; case MS_TOKEN_LITERAL_NUMBER: - strtmpl = "%lf"; - snippet = (char *) msSmallMalloc(strlen(strtmpl) + 16); - sprintf(snippet, strtmpl, node->tokenval.dblval); + snippet = (char *) msSmallMalloc(32); + if( node->tokenval.dblval >= INT_MIN && + node->tokenval.dblval <= INT_MAX && + node->tokenval.dblval == (int)node->tokenval.dblval ) + sprintf(snippet, "%d", (int)node->tokenval.dblval); + else + sprintf(snippet, "%.18g", node->tokenval.dblval); native_string = msStringConcatenate(native_string, snippet); msFree(snippet); break; From 1aea33ab9a725dadf2358270570f3bf6b52d3b07 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 30 Mar 2017 18:57:46 +0200 Subject: [PATCH 141/221] Shape tileindex: fix issues (crash and invalid result) related with interactiosn between msTiledSHPNextShape() and msTiledSHPGetShape() --- mapshape.c | 19 ++++- ... wfs_ogr_tileindex_of_shp_bbox_filter.xml} | 0 ...wfs_shape_tileindex_of_shp_bbox_filter.xml | 33 +++++++ ...f_shp.map => wfs_ogr_tileindex_of_shp.map} | 2 +- msautotest/wxs/wfs_shape_tileindex_of_shp.map | 85 +++++++++++++++++++ 5 files changed, 136 insertions(+), 3 deletions(-) rename msautotest/wxs/expected/{wfs_shp_tileindex_of_shp_bbox_filter.xml => wfs_ogr_tileindex_of_shp_bbox_filter.xml} (100%) create mode 100644 msautotest/wxs/expected/wfs_shape_tileindex_of_shp_bbox_filter.xml rename msautotest/wxs/{wfs_shp_tileindex_of_shp.map => wfs_ogr_tileindex_of_shp.map} (96%) create mode 100644 msautotest/wxs/wfs_shape_tileindex_of_shp.map diff --git a/mapshape.c b/mapshape.c index 0daf7b96d4..7b720200f6 100644 --- a/mapshape.c +++ b/mapshape.c @@ -1934,6 +1934,10 @@ int msTiledSHPOpenFile(layerObj *layer) msTiledSHPLayerInfo *tSHP=NULL; + if (layer->layerinfo != NULL) { + return MS_SUCCESS; // Nothing to do... layer is already opened + } + if ( msCheckParentPointer(layer->map,"map")==MS_FAILURE ) return MS_FAILURE; @@ -2206,6 +2210,7 @@ int msTiledSHPNextShape(layerObj *layer, shapeObj *shape) continue; } else if(status != MS_SUCCESS) { msShapefileClose(tSHP->shpfile); + tSHP->tileshpfile->lastshape = -1; return(MS_FAILURE); } @@ -2214,7 +2219,10 @@ int msTiledSHPNextShape(layerObj *layer, shapeObj *shape) break; } - if(status == MS_DONE) return(MS_DONE); /* no more tiles */ + if(status == MS_DONE) { + tSHP->tileshpfile->lastshape = -1; + return(MS_DONE); /* no more tiles */ + } else { msFreeShape(&tshape); continue; /* we've got shapes */ @@ -2248,6 +2256,7 @@ int msTiledSHPNextShape(layerObj *layer, shapeObj *shape) continue; } else if(status != MS_SUCCESS) { msShapefileClose(tSHP->shpfile); + tSHP->tileshpfile->lastshape = -1; return(MS_FAILURE); } @@ -2256,7 +2265,10 @@ int msTiledSHPNextShape(layerObj *layer, shapeObj *shape) } } /* end for loop */ - if(i == tSHP->tileshpfile->numshapes) return(MS_DONE); /* no more tiles */ + if(i == tSHP->tileshpfile->numshapes) { + tSHP->tileshpfile->lastshape = -1; + return(MS_DONE); /* no more tiles */ + } else continue; /* we've got shapes */ } } @@ -2304,6 +2316,8 @@ int msTiledSHPGetShape(layerObj *layer, shapeObj *shape, resultObj *record) return(MS_FAILURE); } + msTileIndexAbsoluteDir(tiFileAbsDir, layer); + if((tileindex < 0) || (tileindex >= tSHP->tileshpfile->numshapes)) return(MS_FAILURE); /* invalid tile id */ if(tileindex != tSHP->tileshpfile->lastshape) { /* correct tile is not currenly open so open the correct tile */ @@ -2332,6 +2346,7 @@ int msTiledSHPGetShape(layerObj *layer, shapeObj *shape, resultObj *record) msSHPReadShape(tSHP->shpfile->hSHP, shapeindex, shape); tSHP->shpfile->lastshape = shapeindex; + tSHP->tileshpfile->lastshape = tileindex; if(layer->numitems > 0 && layer->iteminfo) { shape->numvalues = layer->numitems; diff --git a/msautotest/wxs/expected/wfs_shp_tileindex_of_shp_bbox_filter.xml b/msautotest/wxs/expected/wfs_ogr_tileindex_of_shp_bbox_filter.xml similarity index 100% rename from msautotest/wxs/expected/wfs_shp_tileindex_of_shp_bbox_filter.xml rename to msautotest/wxs/expected/wfs_ogr_tileindex_of_shp_bbox_filter.xml diff --git a/msautotest/wxs/expected/wfs_shape_tileindex_of_shp_bbox_filter.xml b/msautotest/wxs/expected/wfs_shape_tileindex_of_shp_bbox_filter.xml new file mode 100644 index 0000000000..6f0f1d98da --- /dev/null +++ b/msautotest/wxs/expected/wfs_shape_tileindex_of_shp_bbox_filter.xml @@ -0,0 +1,33 @@ +Content-Type: text/xml; subtype="gml/3.2.1"; charset=UTF-8 + + + + + + 49.00000 2.00000 + 49.00000 2.00000 + + + + + + + 49.00000 2.00000 + 49.00000 2.00000 + + + + + 49.00000 2.00000 + + + + + + diff --git a/msautotest/wxs/wfs_shp_tileindex_of_shp.map b/msautotest/wxs/wfs_ogr_tileindex_of_shp.map similarity index 96% rename from msautotest/wxs/wfs_shp_tileindex_of_shp.map rename to msautotest/wxs/wfs_ogr_tileindex_of_shp.map index 9f2a3208da..57775a835e 100644 --- a/msautotest/wxs/wfs_shp_tileindex_of_shp.map +++ b/msautotest/wxs/wfs_ogr_tileindex_of_shp.map @@ -4,7 +4,7 @@ # REQUIRES: INPUT=OGR SUPPORTS=WFS # # In the logs, point_3_50.shp shouldn't appear -# RUN_PARMS: wfs_shp_tileindex_of_shp_bbox_filter.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&REQUEST=GetFeature&SERVICE=WFS&TYPENAMES=ms:test&VERSION=2.0.0&FILTER=48.9 1.949.1 2.1" > [RESULT_DEVERSION] +# RUN_PARMS: wfs_ogr_tileindex_of_shp_bbox_filter.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&REQUEST=GetFeature&SERVICE=WFS&TYPENAMES=ms:test&VERSION=2.0.0&FILTER=48.9 1.949.1 2.1" > [RESULT_DEVERSION] MAP diff --git a/msautotest/wxs/wfs_shape_tileindex_of_shp.map b/msautotest/wxs/wfs_shape_tileindex_of_shp.map new file mode 100644 index 0000000000..46378949fb --- /dev/null +++ b/msautotest/wxs/wfs_shape_tileindex_of_shp.map @@ -0,0 +1,85 @@ +# +# Test WFS : shapefile tileindex of shapefiles (#5291) +# +# REQUIRES: INPUT=OGR SUPPORTS=WFS +# +# In the logs, point_3_50.shp shouldn't appear +# RUN_PARMS: wfs_shape_tileindex_of_shp_bbox_filter.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&REQUEST=GetFeature&SERVICE=WFS&TYPENAMES=ms:test&VERSION=2.0.0&FILTER=48.9 1.949.1 2.1" > [RESULT_DEVERSION] + +MAP + +NAME WFS_TEST +STATUS ON +SIZE 400 300 +EXTENT 1 48 4 51 +IMAGECOLOR 255 255 255 +SHAPEPATH "data" + +# +# Start of web interface definition +# +WEB + + IMAGEPATH "/tmp/ms_tmp/" + IMAGEURL "/ms_tmp/" + + METADATA + "ows_updatesequence" "123" + "wfs_title" "Test simple wfs" + "wfs_onlineresource" "http://localhost/path/to/wfs_simple?" + "wfs_srs" "EPSG:4326" + "ows_abstract" "Test WFS Abstract" + "ows_keywordlist" "ogc,wfs,gml,om" + "ows_service_onlineresource" "http://localhost" + "ows_fees" "none" + "ows_accessconstraints" "none" + "ows_addresstype" "postal" + "ows_address" "123 SomeRoad Road" + "ows_city" "Toronto" + "ows_stateorprovince" "Ontario" + "ows_postcode" "xxx-xxx" + "ows_country" "Canada" + "ows_contactelectronicmailaddress" "tomkralidis@xxxxxxx.xxx" + "ows_contactvoicetelephone" "+xx-xxx-xxx-xxxx" + "ows_contactfacsimiletelephone" "+xx-xxx-xxx-xxxx" + "ows_contactperson" "Tom Kralidis" + "ows_contactorganization" "MapServer" + "ows_contactposition" "self" + "ows_hoursofservice" "0800h - 1600h EST" + "ows_contactinstructions" "during hours of service" + "ows_role" "staff" + "ows_enable_request" "*" + END +END + +PROJECTION + "init=epsg:4326" +END + + +# +# Start of layer definitions +# + + +LAYER + NAME test + TILEINDEX "shp_tileindex_of_shp.shp" + TILEITEM "LOCATION" + METADATA + "wfs_title" "test" + "wfs_description" "test" + "wfs_featureid" "id" + END + TYPE POINT + STATUS ON + EXTENT 1 48 4 51 + PROJECTION + "init=epsg:4326" + END + + DUMP TRUE +END # Layer + + +END # Map File From 208bb3a10fccdc9c1bdab175915072270abb1b45 Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Tue, 9 May 2017 16:57:49 -0300 Subject: [PATCH 142/221] update for 7.0.5 release --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3e7304ef42..25bc2d19cf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ include(CheckCSourceCompiles) set (MapServer_VERSION_MAJOR 7) set (MapServer_VERSION_MINOR 0) -set (MapServer_VERSION_REVISION 4) +set (MapServer_VERSION_REVISION 5) set (MapServer_VERSION_SUFFIX "") set(TARGET_VERSION_MAJOR ${MapServer_VERSION_MAJOR}) From c5497982fd97cf2eba84eb5af11f19c1cf3cad7f Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Wed, 10 May 2017 22:12:16 +0200 Subject: [PATCH 143/221] Restore error reporting for invalid attribute filters (#5427) --- mapogr.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mapogr.cpp b/mapogr.cpp index 5460c33b68..6796fd8842 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -2585,7 +2585,12 @@ static int msOGRFileWhichShapes(layerObj *layer, rectObj rect, msOGRFileInfo *ps CPLErrorReset(); if( OGR_L_SetAttributeFilter( psInfo->hLayer, pszOGRFilter ) != OGRERR_NONE ) { + msSetError(MS_OGRERR, "SetAttributeFilter() failed on layer %s. Check logs.", "msOGRFileWhichShapes()", layer->name?layer->name:"(null)"); msDebug("SetAttributeFilter(%s) failed on layer %s.\n%s\n", pszOGRFilter, layer->name?layer->name:"(null)", CPLGetLastErrorMsg() ); + RELEASE_OGR_LOCK; + msFree(pszOGRFilter); + msFree(select); + return MS_FAILURE; } msFree(pszOGRFilter); } else From d644c8405e32987915c8fef8f757d4892fbccde3 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Fri, 12 May 2017 00:28:27 +0200 Subject: [PATCH 144/221] Add mssql support for PropertyIsLike (#5428) --- mapmssql2008.c | 88 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 84 insertions(+), 4 deletions(-) diff --git a/mapmssql2008.c b/mapmssql2008.c index 9be58ba5e5..7e95d21192 100644 --- a/mapmssql2008.c +++ b/mapmssql2008.c @@ -2463,7 +2463,11 @@ int process_node(layerObj* layer, expressionObj *filter) case MS_TOKEN_BINDING_DOUBLE: case MS_TOKEN_BINDING_INTEGER: case MS_TOKEN_BINDING_STRING: - strtmpl = "%s"; + if(layerinfo->current_node->next->token == MS_TOKEN_COMPARISON_IRE) + strtmpl = "LOWER(%s)"; + else + strtmpl = "%s"; + stresc = msMSSQL2008LayerEscapePropertyName(layer, layerinfo->current_node->tokenval.bindval.item); snippet = (char *) msSmallMalloc(strlen(strtmpl) + strlen(stresc)); sprintf(snippet, strtmpl, stresc); @@ -2486,9 +2490,85 @@ int process_node(layerObj* layer, expressionObj *filter) case MS_TOKEN_COMPARISON_IN: filter->native_string = msStringConcatenate(filter->native_string, " IN "); break; - case MS_TOKEN_COMPARISON_LIKE: - filter->native_string = msStringConcatenate(filter->native_string, " LIKE "); - break; + case MS_TOKEN_COMPARISON_RE: + case MS_TOKEN_COMPARISON_IRE: + case MS_TOKEN_COMPARISON_LIKE: { + /* process regexp */ + size_t i = 0, j = 0; + char c; + char c_next; + int bCaseInsensitive = (layerinfo->current_node->token == MS_TOKEN_COMPARISON_IRE); + int nEscapeLen = 0; + if (bCaseInsensitive) + filter->native_string = msStringConcatenate(filter->native_string, " LIKE LOWER("); + else + filter->native_string = msStringConcatenate(filter->native_string, " LIKE "); + + layerinfo->current_node = layerinfo->current_node->next; + if (layerinfo->current_node->token != MS_TOKEN_LITERAL_STRING) return 0; + + strtmpl = msStrdup(layerinfo->current_node->tokenval.strval); + if (strtmpl[0] == '/') { + stresc = strtmpl + 1; + strtmpl[strlen(strtmpl) - 1] = '\0'; + } + else if (strtmpl[0] == '^') + stresc = strtmpl + 1; + else + stresc = strtmpl; + + while (*stresc) { + c = stresc[i]; + if (c == '%' || c == '_' || c == '[' || c == ']' || c == '^') { + nEscapeLen++; + } + stresc++; + } + snippet = (char *)msSmallMalloc(strlen(strtmpl) + nEscapeLen + 3); + snippet[j++] = '\''; + while (i < strlen(strtmpl)) { + c = strtmpl[i]; + c_next = strtmpl[i+1]; + + if (i == 0 && c == '^') { + i++; + continue; + } + + if (c == '\\') { + i++; + c = c_next; + } + + if (c == '%' || c == '_' || c == '[' || c == ']' || c == '^') { + snippet[j++] = '\\'; + } + + if (c == '.' && c_next == '*') { + i++; + c = '%'; + } + else if (c == '.') + c = '_'; + + + snippet[j++] = c; + i++; + } + snippet[j++] = '\''; + snippet[j] = '\0'; + + filter->native_string = msStringConcatenate(filter->native_string, snippet); + msFree(strtmpl); + msFree(snippet); + + if (bCaseInsensitive) + filter->native_string = msStringConcatenate(filter->native_string, ")"); + + if (nEscapeLen > 0) + filter->native_string = msStringConcatenate(filter->native_string, " ESCAPE '\\'"); + } + break; case MS_TOKEN_COMPARISON_EQ: filter->native_string = msStringConcatenate(filter->native_string, " = "); break; From f495c4874f5cd7985f7002af1e71fd62c01cff9f Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Tue, 30 May 2017 11:23:24 +0200 Subject: [PATCH 145/221] Fix rendering label shadow (#5438) --- maplabel.c | 1 + maprendering.c | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/maplabel.c b/maplabel.c index dffab3ce2a..76be835156 100644 --- a/maplabel.c +++ b/maplabel.c @@ -217,6 +217,7 @@ void msCopyTextPath(textPathObj *dst, textPathObj *src) { if(src->bounds.poly) { dst->bounds.poly = msSmallMalloc(sizeof(lineObj)); dst->bounds.poly->numpoints = src->bounds.poly->numpoints; + dst->bounds.poly->point = msSmallMalloc(src->bounds.poly->numpoints * sizeof(pointObj)); for(i=0; ibounds.poly->numpoints; i++) { dst->bounds.poly->point[i] = src->bounds.poly->point[i]; } diff --git a/maprendering.c b/maprendering.c index 7ee3692691..b32716cd18 100644 --- a/maprendering.c +++ b/maprendering.c @@ -996,6 +996,7 @@ int msDrawTextSymbol(mapObj *map, imageObj *image, pointObj labelPnt, textSymbol colorObj *c = NULL, *oc = NULL; int ow; assert(ts->textpath); + if(!renderer->renderGlyphs) return MS_FAILURE; if(!ts->textpath->absolute) { int g; @@ -1019,12 +1020,44 @@ int msDrawTextSymbol(mapObj *map, imageObj *image, pointObj labelPnt, textSymbol } } } + + if(MS_VALID_COLOR(ts->label->shadowcolor)) { + textSymbolObj *ts_shadow; + int g; + double ox, oy; + double cosa,sina; + if(ts->rotation != 0) { + cosa = cos(ts->rotation); + sina = sin(ts->rotation); + ox = ts->scalefactor * (cosa * ts->label->shadowsizex + + sina * ts->label->shadowsizey); + oy = ts->scalefactor * (-sina * ts->label->shadowsizex + + cosa * ts->label->shadowsizey); + } + else { + ox = ts->scalefactor * ts->label->shadowsizex; + oy = ts->scalefactor * ts->label->shadowsizey; + } + + ts_shadow = msSmallMalloc(sizeof(textSymbolObj)); + initTextSymbol(ts_shadow); + msCopyTextSymbol(ts_shadow,ts); + + for(g=0;gtextpath->numglyphs;g++) { + ts_shadow->textpath->glyphs[g].pnt.x += ox; + ts_shadow->textpath->glyphs[g].pnt.y += oy; + } + + renderer->renderGlyphs(image,ts_shadow->textpath,&ts->label->shadowcolor,NULL,0); + freeTextSymbol(ts_shadow); + msFree(ts_shadow); + } + if(MS_VALID_COLOR(ts->label->color)) c = &ts->label->color; if(MS_VALID_COLOR(ts->label->outlinecolor)) oc = &ts->label->outlinecolor; ow = MS_NINT((double)ts->label->outlinewidth * ((double)ts->textpath->glyph_size / (double)ts->label->size)); - if(!renderer->renderGlyphs) return MS_FAILURE; return renderer->renderGlyphs(image,ts->textpath,c,oc,ow); } From 70cbb553e1a25e7341be76e505a62169c36ad9b6 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Wed, 31 May 2017 12:23:39 +0200 Subject: [PATCH 146/221] Suppress geos error in offsetcurve and fall back to the original behavior (#5442) --- maputil.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/maputil.c b/maputil.c index 4c720d09a7..d6f23d200d 100644 --- a/maputil.c +++ b/maputil.c @@ -1759,6 +1759,8 @@ shapeObj *msOffsetCurve(shapeObj *p, double offset) if that is the case.*/ if(ret) return ret; + /* clear error raised by geos in this case */ + msResetErrorList(); #endif /* ** For offset corner point calculation 1/sin() is used From 3e262f4ca736516bf303b7c9389ffbf89a5be430 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 14 Jun 2017 12:45:56 +0200 Subject: [PATCH 147/221] msResampleGDALToMap(): restrict fix done for #1715, to avoid regressions like #5445 https://github.com/mapserver/mapserver/commit/026847b1c962cdd666d28cfbe38ac40fff54ffbb introduced a post correction of the source geotransform so that it matches the sSrcExtent exactly. However the condition for this to make sense is that the initial geotransform has square pixels. --- mapresample.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mapresample.c b/mapresample.c index b0fa1c1adf..1179ab41e1 100644 --- a/mapresample.c +++ b/mapresample.c @@ -1547,7 +1547,12 @@ int msResampleGDALToMap( mapObj *map, layerObj *layer, imageObj *image, /* matches the sSrcExtent, even if that generates non-square pixels (#1715) */ /* The rotated case should ideally be dealt with, but not for now... */ if( adfSrcGeoTransform[2] == 0 && adfSrcGeoTransform[4] == 0 && - adfSrcGeoTransform[5] < 0 ) + adfSrcGeoTransform[5] < 0 && + /* But do that only if the pixels were square before, otherwise */ + /* this is going to mess with source rasters whose pixels aren't at */ + /* all square (#5445) */ + fabs(fabs(adfSrcGeoTransform[1]) - fabs(adfSrcGeoTransform[5])) < + 0.01 * fabs(adfSrcGeoTransform[1]) ) { adfSrcGeoTransform[1] = (sSrcExtent.maxx - sSrcExtent.minx) * dfNominalCellSize / nLoadImgXSize; From 6763da71d0b9016adbecf3e4e0772005f10ce5dd Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 14 Jun 2017 13:11:47 +0200 Subject: [PATCH 148/221] msautotest: add test for fix for https://github.com/mapserver/mapserver/issues/5445 --- msautotest/wxs/data/ticket5445.tif | Bin 0 -> 2934 bytes .../wms_src_non_square_pixel_ticket5445.png | Bin 0 -> 161 bytes .../wms_src_non_square_pixel_ticket5445.map | 85 ++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 msautotest/wxs/data/ticket5445.tif create mode 100644 msautotest/wxs/expected/wms_src_non_square_pixel_ticket5445.png create mode 100644 msautotest/wxs/wms_src_non_square_pixel_ticket5445.map diff --git a/msautotest/wxs/data/ticket5445.tif b/msautotest/wxs/data/ticket5445.tif new file mode 100644 index 0000000000000000000000000000000000000000..33cfa58cea364f21fd6250f676b1d64838816d71 GIT binary patch literal 2934 zcmeIzPe_w-9LMqR^K8wvmSE6YvEpGun1@yoAu*SxDGPNnMMKDVbQ6mGk*6Uc7R!Z$ z0*MYCB0?lQ6cp=F&>@rt2>#~6M9aMcr+~>%_Y-XMo%Z3gKe>{SUlR(e2B-dUPj{Vh->LajmbfpKwZA8OV+F xba4!+nDh3aAtR7?Xu((iT=x70KqiGij+rZzf$`pRx%(i4JYD@<);T3K0RR%C8C?JX literal 0 HcmV?d00001 diff --git a/msautotest/wxs/wms_src_non_square_pixel_ticket5445.map b/msautotest/wxs/wms_src_non_square_pixel_ticket5445.map new file mode 100644 index 0000000000..40a18bcf06 --- /dev/null +++ b/msautotest/wxs/wms_src_non_square_pixel_ticket5445.map @@ -0,0 +1,85 @@ +# +# Test WMS +# +# REQUIRES: INPUT=GDAL OUTPUT=PNG SUPPORTS=WMS +# +# RUN_PARMS: wms_src_non_square_pixel_ticket5445.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&BBOX=-7.21916,48.40401621621622,-3.4696399999999996,50.43078378378378&SERVICE=WMS&REQUEST=GetMap&FORMAT=image/png&styles=&layers=continent&width=1000&height=541&srs=EPSG:4326&EXCEPTIONS=application/vnd.ogc.se_inimage&TRANSPARENT=TRUE&VERSION=1.1.1" > [RESULT_DEMIME] + + +MAP + +NAME WMS_TEST +STATUS ON +SIZE 400 300 +UNITS DD +IMAGECOLOR 255 255 255 +SHAPEPATH ./data + +EXTENT -803633.215155169 6142218.69849575 -386238.558035974 6488409.59450128 +PROJECTION + "init=epsg:3395" +END + +OUTPUTFORMAT + NAME GDPNG + DRIVER "GD/PNG" + MIMETYPE "image/png" + EXTENSION "png" +END + +# +# Start of web interface definition +# +WEB + + IMAGEPATH "/tmp/ms_tmp/" + IMAGEURL "/ms_tmp/" + + METADATA + "ows_updatesequence" "123" + "wms_title" "Test simple wms" + "wms_onlineresource" "http://localhost/path/to/wms_simple?" + "wms_srs" "EPSG:42304 EPSG:42101 EPSG:4269 EPSG:4326" + "ows_schemas_location" "http://schemas.opengis.net" + "ows_keywordlist" "ogc,wms,mapserver" + "ows_service_onlineresource" "http://www.mapserver.org/" + "ows_fees" "None" + "ows_accessconstraints" "None" + "ows_addresstype" "postal" + "ows_address" "123 SomeRoad Road" + "ows_city" "Toronto" + "ows_stateorprovince" "Ontario" + "ows_postcode" "xxx-xxx" + "ows_country" "Canada" + "ows_contactelectronicmailaddress" "tomkralidis@xxxxxxx.xxx" + "ows_contactvoicetelephone" "+xx-xxx-xxx-xxxx" + "ows_contactfacsimiletelephone" "+xx-xxx-xxx-xxxx" + "ows_contactperson" "Tom Kralidis" + "ows_contactorganization" "MapServer" + "ows_contactposition" "self" + + "ows_rootlayer_title" "My Layers" + "ows_rootlayer_abstract" "These are my layers" + "ows_rootlayer_keywordlist" "layers,list" + "ows_layerlimit" "1" + "ows_enable_request" "*" + "wms_getmap_formatlist" "image/png,image/png; mode=24bit,image/jpeg,image/gif,image/png; mode=8bit,image/tiff" + END +END + + +# +# Start of layer definitions +# + +LAYER + NAME "continent" + PROJECTION + "init=epsg:3395" + END + TYPE RASTER + + DATA "ticket5445.tif" +END + +END # Map File From 1df03be1bbb3343f78e582ca04eb929e34f3a32c Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sun, 18 Jun 2017 22:19:28 +0200 Subject: [PATCH 149/221] WFS: complementary fix for "wfs_use_default_extent_for_getfeature" "yes" layers Currently when doing a GetFeature request without filter and BBOX, but with SRSNAME, a dummy bounding box is reprojected, making the result of the request invalid. Complementary fix for 45037eb0601e2f48ae548e2cd28b29b429644870 --- mapquery.c | 4 +- .../wxs/expected/wfs_ogr_native_sql_43.xml | 38 +++++++++++++++++++ msautotest/wxs/wfs_ogr_native_sql.map | 3 +- 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 msautotest/wxs/expected/wfs_ogr_native_sql_43.xml diff --git a/mapquery.c b/mapquery.c index df0b2ee66f..a0766911d6 100644 --- a/mapquery.c +++ b/mapquery.c @@ -881,6 +881,7 @@ int msQueryByRect(mapObj *map) char status; shapeObj shape, searchshape; rectObj searchrect, searchrectInMapProj; + const rectObj invalid_rect = MS_INIT_INVALID_RECT; double layer_tolerance = 0, tolerance = 0; int paging; @@ -982,7 +983,8 @@ int msQueryByRect(mapObj *map) #ifdef USE_PROJ lp->project = msProjectionsDiffer(&(lp->projection), &(map->projection)); - if(lp->project) + if(lp->project && + memcmp( &searchrect, &invalid_rect, sizeof(searchrect) ) != 0 ) msProjectRect(&(map->projection), &(lp->projection), &searchrect); /* project the searchrect to source coords */ #endif diff --git a/msautotest/wxs/expected/wfs_ogr_native_sql_43.xml b/msautotest/wxs/expected/wfs_ogr_native_sql_43.xml new file mode 100644 index 0000000000..68a819bed4 --- /dev/null +++ b/msautotest/wxs/expected/wfs_ogr_native_sql_43.xml @@ -0,0 +1,38 @@ +Content-Type: text/xml; subtype=gml/2.1.2; charset=UTF-8 + + + + + + 44.25795,11.15631 44.25795,11.15631 + + + + + + + + 44.25795,11.15631 44.25795,11.15631 + + + + + 44.25795,11.15631 + + + Grizzana Morandi + 3694 + 1 + 0 + 0 + + + + diff --git a/msautotest/wxs/wfs_ogr_native_sql.map b/msautotest/wxs/wfs_ogr_native_sql.map index 769725fb5f..016cd0c449 100644 --- a/msautotest/wxs/wfs_ogr_native_sql.map +++ b/msautotest/wxs/wfs_ogr_native_sql.map @@ -94,6 +94,7 @@ # RUN_PARMS: wfs_ogr_native_sql_41.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=towns&OUTPUTFORMAT=GML2&FILTER=nameFanano&SORTBY=name" > [RESULT_DEVERSION] # RUN_PARMS: wfs_ogr_native_sql_42.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAME=towns_disable_default_extent_for_getfeature&OUTPUTFORMAT=GML2&COUNT=1" > [RESULT_DEVERSION] +# RUN_PARMS: wfs_ogr_native_sql_43.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAME=towns_disable_default_extent_for_getfeature&OUTPUTFORMAT=GML2&COUNT=1&SRSNAME=EPSG:4326" > [RESULT_DEVERSION] MAP @@ -116,7 +117,7 @@ WEB METADATA "wfs_title" "Test simple wfs" "wfs_onlineresource" "http://localhost/path/to/wfs_simple?" - "wfs_srs" "EPSG:32632" + "wfs_srs" "EPSG:32632 EPSG:4326" "wfs_enable_request" "*" END END From aae74ff2abed3f2f8fe1f76c9b4bbccf15023dc1 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 19 Jun 2017 12:27:11 +0200 Subject: [PATCH 150/221] [OGR] Correctly extract BBOX from a Intersects() filter. Complementary fix to f53fd782 --- mapogr.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/mapogr.cpp b/mapogr.cpp index 6796fd8842..9bf0af64cb 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -3268,6 +3268,7 @@ static msExprNode* BuildExprTree(tokenListNodeObjPtr node, { if( node->next && node->next->token == '(' ) { + int node_token = node->token; msExprNode* subExpr = BuildExprTree(node->next->next, &node, nParenthesisLevel + 1); if( subExpr == NULL ) @@ -3275,7 +3276,7 @@ static msExprNode* BuildExprTree(tokenListNodeObjPtr node, goto fail; } msExprNode* newNode = new msExprNode; - newNode->m_nToken = node->token; + newNode->m_nToken = node_token; if( subExpr->m_nToken == 0 ) { newNode->m_aoChildren = subExpr->m_aoChildren; @@ -3393,6 +3394,8 @@ static msExprNode* BuildExprTree(tokenListNodeObjPtr node, /********************************************************************** * msOGRExtractTopSpatialFilter() + * + * Recognize expressions like "Intersects([shape], wkt) == TRUE [AND ....]" **********************************************************************/ static int msOGRExtractTopSpatialFilter( msOGRFileInfo *info, const msExprNode* expr, @@ -3401,6 +3404,15 @@ static int msOGRExtractTopSpatialFilter( msOGRFileInfo *info, if( expr == NULL ) return MS_FALSE; + if( expr->m_nToken == MS_TOKEN_COMPARISON_EQ && + expr->m_aoChildren.size() == 2 && + expr->m_aoChildren[1]->m_nToken == MS_TOKEN_LITERAL_BOOLEAN && + expr->m_aoChildren[1]->m_dfVal == 1.0 ) + { + return msOGRExtractTopSpatialFilter(info, expr->m_aoChildren[0], + pSpatialFilterNode); + } + if( expr->m_nToken == MS_TOKEN_COMPARISON_INTERSECTS && expr->m_aoChildren.size() == 2 && expr->m_aoChildren[1]->m_nToken == MS_TOKEN_LITERAL_SHAPE ) From 89810ed81ce3414010a45e13a59c93b2fedecbe0 Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Wed, 21 Jun 2017 14:48:24 -0300 Subject: [PATCH 151/221] update for 7.0.6 release --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 25bc2d19cf..d8373aeb3f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ include(CheckCSourceCompiles) set (MapServer_VERSION_MAJOR 7) set (MapServer_VERSION_MINOR 0) -set (MapServer_VERSION_REVISION 5) +set (MapServer_VERSION_REVISION 6) set (MapServer_VERSION_SUFFIX "") set(TARGET_VERSION_MAJOR ${MapServer_VERSION_MAJOR}) From 8f475c6f2619204b2cbece7a6fbd2913aeb49f23 Mon Sep 17 00:00:00 2001 From: Martin Icking Date: Sat, 18 Jun 2016 08:50:51 +0200 Subject: [PATCH 152/221] this fix allows to have an out-of-source build on any location - previously it was assumed that the mapscript csharp sources had a fixed path relative to the build --- mapscript/csharp/CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mapscript/csharp/CMakeLists.txt b/mapscript/csharp/CMakeLists.txt index 722ff86a29..848d018b35 100644 --- a/mapscript/csharp/CMakeLists.txt +++ b/mapscript/csharp/CMakeLists.txt @@ -44,8 +44,10 @@ SWIG_LINK_LIBRARIES(csharpmapscript ${MAPSERVER_LIBMAPSERVER}) ADD_CUSTOM_COMMAND(TARGET csharpmapscript WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} POST_BUILD - COMMAND copy /Y ..\\..\\..\\mapscript\\csharp\\mapscript.snk - COMMAND ${CSHARP_COMPILER} ${PLATFORM_TARGET} /t:library /out:mapscript_csharp.dll ${KEYFILE_SPEC} *.cs ${PROJECT_SOURCE_DIR}\\mapscript\\csharp\\config\\AssemblyInfo.cs + COMMAND set MAPSCRIPT_SNK=${PROJECT_SOURCE_DIR}\\mapscript\\csharp\\mapscript.snk + COMMAND set MAPSCRIPT_SNK=%MAPSCRIPT_SNK:/=\\% + COMMAND copy /Y %MAPSCRIPT_SNK% + COMMAND ${CSHARP_COMPILER} ${PLATFORM_TARGET} /t:library /out:mapscript_csharp.dll ${KEYFILE_SPEC} *.cs ${PROJECT_SOURCE_DIR}\\mapscript\\csharp\\config\\AssemblyInfo.cs COMMAND ${CSHARP_COMPILER} ${PLATFORM_TARGET} /r:mapscript_csharp.dll /out:shpdump.exe ${PROJECT_SOURCE_DIR}\\mapscript\\csharp\\examples\\shpdump.cs COMMAND ${CSHARP_COMPILER} ${PLATFORM_TARGET} /r:mapscript_csharp.dll /out:drawmap.exe ${PROJECT_SOURCE_DIR}\\mapscript\\csharp\\examples\\drawmap.cs COMMAND ${CSHARP_COMPILER} ${PLATFORM_TARGET} /r:mapscript_csharp.dll /out:shapeinfo.exe ${PROJECT_SOURCE_DIR}\\mapscript\\csharp\\examples\\shapeinfo.cs From d7abbc6eb3261b100797f3ad6ea81679f8c1ad5f Mon Sep 17 00:00:00 2001 From: "Martin.Icking" Date: Tue, 31 Jan 2017 18:12:54 +0100 Subject: [PATCH 153/221] Allow for build path name with spaces --- mapscript/csharp/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapscript/csharp/CMakeLists.txt b/mapscript/csharp/CMakeLists.txt index 848d018b35..b2792f4a86 100644 --- a/mapscript/csharp/CMakeLists.txt +++ b/mapscript/csharp/CMakeLists.txt @@ -46,7 +46,7 @@ ADD_CUSTOM_COMMAND(TARGET csharpmapscript POST_BUILD COMMAND set MAPSCRIPT_SNK=${PROJECT_SOURCE_DIR}\\mapscript\\csharp\\mapscript.snk COMMAND set MAPSCRIPT_SNK=%MAPSCRIPT_SNK:/=\\% - COMMAND copy /Y %MAPSCRIPT_SNK% + COMMAND copy /Y \"%MAPSCRIPT_SNK%\" COMMAND ${CSHARP_COMPILER} ${PLATFORM_TARGET} /t:library /out:mapscript_csharp.dll ${KEYFILE_SPEC} *.cs ${PROJECT_SOURCE_DIR}\\mapscript\\csharp\\config\\AssemblyInfo.cs COMMAND ${CSHARP_COMPILER} ${PLATFORM_TARGET} /r:mapscript_csharp.dll /out:shpdump.exe ${PROJECT_SOURCE_DIR}\\mapscript\\csharp\\examples\\shpdump.cs COMMAND ${CSHARP_COMPILER} ${PLATFORM_TARGET} /r:mapscript_csharp.dll /out:drawmap.exe ${PROJECT_SOURCE_DIR}\\mapscript\\csharp\\examples\\drawmap.cs From c08e349300283ee39bba8955045d4b6cf6b3419f Mon Sep 17 00:00:00 2001 From: "Martin.Icking" Date: Mon, 3 Apr 2017 13:02:41 +0200 Subject: [PATCH 154/221] Enabled WFS sortby for Oracle plugin, quoted sortby parameter to enable non-capitalized column names --- maplayer.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/maplayer.c b/maplayer.c index c0b721d846..e5b14d7f6b 100644 --- a/maplayer.c +++ b/maplayer.c @@ -1564,7 +1564,7 @@ int msLayerApplyPlainFilterToLayer(FilterEncodingNode *psNode, mapObj *map, int int msLayerSupportsSorting(layerObj *layer) { if (layer && ( - (layer->connectiontype == MS_OGR) || (layer->connectiontype == MS_POSTGIS) || (layer->connectiontype == MS_ORACLESPATIAL) + (layer->connectiontype == MS_OGR) || (layer->connectiontype == MS_POSTGIS) || (layer->connectiontype == MS_ORACLESPATIAL) || ((layer->connectiontype == MS_PLUGIN) && (strstr(layer->plugin_library,"msplugin_oracle") != NULL)) ) ) return MS_TRUE; @@ -1604,7 +1604,8 @@ char* msLayerBuildSQLOrderBy(layerObj *layer) if( layer->sortBy.nProperties > 0 ) { int i; for(i=0;isortBy.nProperties;i++) { - char* escaped = msLayerEscapePropertyName(layer, layer->sortBy.properties[i].item); + char* escaped = msSmallMalloc(strlen(layer->sortBy.properties[i].item) + 3); + sprintf(escaped, "\"%s\"", layer->sortBy.properties[i].item); if( i > 0 ) strOrderBy = msStringConcatenate(strOrderBy, ", "); strOrderBy = msStringConcatenate(strOrderBy, escaped); From 608a118d407223fa33b20c1ff7a431596c2e2e46 Mon Sep 17 00:00:00 2001 From: Martin Icking Date: Fri, 18 Mar 2016 19:01:35 +0100 Subject: [PATCH 155/221] Allow using double quoted aliases for Oracle column aliases Adding double quotes to the columns of the mapserver generated outer query safely allows using double quoted column aliases in the data statement --- maporaclespatial.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maporaclespatial.c b/maporaclespatial.c index 2f44ebcfbc..2d4b6ee56c 100644 --- a/maporaclespatial.c +++ b/maporaclespatial.c @@ -2019,7 +2019,7 @@ int msOracleSpatialLayerWhichShapes( layerObj *layer, rectObj rect, int isQuery) /* define SQL query */ for( i=0; i < layer->numitems; ++i ) { - snprintf( query_str + strlen(query_str), sizeof(query_str)-strlen(query_str), "%s, ", layer->items[i] ); + snprintf( query_str + strlen(query_str), sizeof(query_str)-strlen(query_str), "\"%s\", ", layer->items[i] ); } /*we add the uniqueid if it was not part of the current item list*/ From d5f89a3353854b0f6a8eda0758d99e74372fdf9f Mon Sep 17 00:00:00 2001 From: "Martin.Icking" Date: Thu, 29 Jun 2017 17:31:58 +0200 Subject: [PATCH 156/221] Enclose the sortby property in double quotes by putting the result of msLayerEscapePropertyName into double quotes --- maplayer.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/maplayer.c b/maplayer.c index e5b14d7f6b..8ff0151e4d 100644 --- a/maplayer.c +++ b/maplayer.c @@ -1604,9 +1604,19 @@ char* msLayerBuildSQLOrderBy(layerObj *layer) if( layer->sortBy.nProperties > 0 ) { int i; for(i=0;isortBy.nProperties;i++) { - char* escaped = msSmallMalloc(strlen(layer->sortBy.properties[i].item) + 3); - sprintf(escaped, "\"%s\"", layer->sortBy.properties[i].item); - if( i > 0 ) + char* escaped = msLayerEscapePropertyName(layer, layer->sortBy.properties[i].item); + //Enclose property name in double quotes (if it isn't yet) to ensure that mixed case property names are supported + if (escaped[0] != '"') + { + size_t propertyLen = strlen(escaped); + escaped = msSmallRealloc(escaped, propertyLen + 3); + memmove(escaped + 1, escaped, propertyLen); + escaped[0] = '\"'; + escaped[propertyLen+1] = '\"'; + escaped[propertyLen + 2] = 0; + + } + if (i > 0) strOrderBy = msStringConcatenate(strOrderBy, ", "); strOrderBy = msStringConcatenate(strOrderBy, escaped); if( layer->sortBy.properties[i].sortOrder == SORT_DESC ) From be21bcf37b47bfce77d011ec6abef15d495926a5 Mon Sep 17 00:00:00 2001 From: "Martin.Icking" Date: Fri, 7 Jul 2017 10:30:30 +0200 Subject: [PATCH 157/221] Fix error to support Oracle compound elements for GTYPE 2007 (multipolygon) and not only for GTYPE 2003 (polygon) --- maporaclespatial.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maporaclespatial.c b/maporaclespatial.c index 2f44ebcfbc..3605c80818 100644 --- a/maporaclespatial.c +++ b/maporaclespatial.c @@ -1707,7 +1707,7 @@ static int osGetOrdinates(msOracleSpatialDataHandler *dthand, msOracleSpatialHan } /* end of not-null-object if */ if (compound_type){ - if(gtype == 2003) + if (gtype == 2003 || gtype == 2007) shape->type = MS_SHAPE_POLYGON; msFreeShape(&newshape); } From 2c1e5c50791cac205cfbeed0e1fa98bb421f5c5c Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 3 Aug 2017 17:29:15 +0200 Subject: [PATCH 158/221] OGR output: fix "ESRI Shapefile" output with FORMATOPTION "STORAGE=memory" --- mapogroutput.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/mapogroutput.c b/mapogroutput.c index c105fdfd09..0c1def249f 100644 --- a/mapogroutput.c +++ b/mapogroutput.c @@ -767,6 +767,7 @@ int msOGRWriteFromQuery( mapObj *map, outputFormatObj *format, int sendheaders ) /* Create a subdirectory to handle this request. */ /* -------------------------------------------------------------------- */ if( !EQUAL(storage,"stream") ) { + const char* dir_to_create; if (strlen(base_dir) > 0) request_dir = msTmpFile(map, NULL, base_dir, "" ); else @@ -775,11 +776,19 @@ int msOGRWriteFromQuery( mapObj *map, outputFormatObj *format, int sendheaders ) if( request_dir[strlen(request_dir)-1] == '.' ) request_dir[strlen(request_dir)-1] = '\0'; - if( VSIMkdir( request_dir, 0777 ) != 0 ) { + dir_to_create = request_dir; + /* Workaround issue in GDAL versions released at this time : + * GDAL issue fixed per https://trac.osgeo.org/gdal/ticket/6991 */ + if( EQUAL(storage,"memory") && EQUAL(format->driver+4, "ESRI Shapefile") ) + { + dir_to_create = base_dir; + } + + if( VSIMkdir( dir_to_create, 0777 ) != 0 ) { msSetError( MS_MISCERR, "Attempt to create directory '%s' failed.", "msOGRWriteFromQuery()", - request_dir ); + dir_to_create ); return MS_FAILURE; } } else From 8a5e0f3bcea89ca7045e8673e99f4fa6cf69eef5 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Mon, 14 Aug 2017 16:34:29 +0200 Subject: [PATCH 159/221] Fix potential memory corruption caused by freeSVGCache (#5471) --- mapcairo.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mapcairo.c b/mapcairo.c index 600530b8bb..1595abc304 100644 --- a/mapcairo.c +++ b/mapcairo.c @@ -907,6 +907,7 @@ void freeSVGCache(symbolObj *s) { free(cache->pixmap_buffer); } msFree(s->renderer_cache); + s->renderer_cache = NULL; #endif } From 870e027dfbfa0fa26240e46fe8c18f244dbb2945 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Mon, 14 Aug 2017 22:46:48 +0200 Subject: [PATCH 160/221] Quick and dirty fix for issue #5470 --- mapserver.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/mapserver.h b/mapserver.h index 32182fa0a4..df7eeb9c64 100644 --- a/mapserver.h +++ b/mapserver.h @@ -1123,6 +1123,16 @@ extern "C" { labelLeaderObj *leader; }; + +#ifdef SWIG +#ifdef __cplusplus +extern "C" { +#endif +typedef struct labelObj labelObj; +#ifdef __cplusplus +} +#endif +#endif #ifndef SWIG /* lightweight structure containing information to render a labelObj */ From 6c0969733c13b214dace9490bbdc898791077185 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Sun, 3 Sep 2017 23:37:09 +0200 Subject: [PATCH 161/221] Fix MSVC2015+ builds (#5274) --- mapregex.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapregex.c b/mapregex.c index 00eac84e49..6a8a74fa6b 100644 --- a/mapregex.c +++ b/mapregex.c @@ -45,7 +45,7 @@ /*Need to specify this so that mapregex.h doesn't defined constants and doesn't #define away our ms_*/ -#if defined(_WIN32) && !defined(__CYGWIN__) +#if defined(_WIN32) && !defined(__CYGWIN__) && _MSC_VER < 1900 #define off_t long #endif From fc830fa4d8fbaa1b399998a6b38f41eb0c3f10cd Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 20 Sep 2017 22:19:38 +0200 Subject: [PATCH 162/221] .travis.ym: force precise distribution --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index d84d6f8a5c..8dea1c96a4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,4 @@ +dist: precise language: php php: - 5.5 From f96f9d7884f713d56b7c78501edb97ec376edd91 Mon Sep 17 00:00:00 2001 From: Seth G Date: Tue, 26 Sep 2017 13:36:36 +0200 Subject: [PATCH 163/221] MINSCALE and MAXSCALE are both deprecated --- msautotest/gdal/heat.map | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/msautotest/gdal/heat.map b/msautotest/gdal/heat.map index fb3afec038..b29280a59f 100644 --- a/msautotest/gdal/heat.map +++ b/msautotest/gdal/heat.map @@ -92,26 +92,26 @@ layer type POINT data "data/pnts.shp" CLASS - MAXSCALE 255000000 + MAXSCALEDENOM 255000000 STYLE SIZE [VAL] END END CLASS - MAXSCALE 265000000 + MAXSCALEDENOM 265000000 STYLE SIZE 0.1 END END CLASS - MAXSCALE 275000000 + MAXSCALEDENOM 275000000 EXPRESSION ([VAL]>1) STYLE SIZE 1 END END CLASS - MAXSCALE 275000000 + MAXSCALEDENOM 275000000 STYLE SIZE 2 END From 08780c2659cb645e3b32a9dc69579d0a122c1cfe Mon Sep 17 00:00:00 2001 From: Bernard Date: Wed, 27 Sep 2017 21:55:17 +0200 Subject: [PATCH 164/221] #5483 - add copy autoangle in msCopyStyle --- mapcopy.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mapcopy.c b/mapcopy.c index 0d509435fc..406d91ab44 100644 --- a/mapcopy.c +++ b/mapcopy.c @@ -500,6 +500,7 @@ int msCopyStyle(styleObj *dst, styleObj *src) MS_COPYSTELEM(offsetx); MS_COPYSTELEM(offsety); MS_COPYSTELEM(angle); + MS_COPYSTELEM(autoangle); MS_COPYSTELEM(minvalue); MS_COPYSTELEM(maxvalue); MS_COPYSTELEM(opacity); From a3a481a1d83e1f6749c77172c300902cd5778ed0 Mon Sep 17 00:00:00 2001 From: sethg Date: Sun, 9 Jul 2017 21:21:04 +0200 Subject: [PATCH 165/221] Change file encoding to UTF-8 --- msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml | 4 ++-- msautotest/wxs/expected/wms_inspire_scenario2_cap111_ger.xml | 4 ++-- msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml | 4 ++-- msautotest/wxs/wms_inspire_scenario1.map | 4 ++-- msautotest/wxs/wms_inspire_scenario2.map | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml b/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml index 51083c4ce9..f8771c8f6d 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml @@ -89,7 +89,7 @@ TN.RoadTransportNetwork.RoadArea - Verkehrsnetze: Stra฿enflไche + Verkehrsnetze: StraรŸenflรคche myroadareaabstractger myroadareakeyword1 @@ -124,7 +124,7 @@ TN.RoadTransportNetwork.RoadLink - Verkehrsnetze: Stra฿ensegment + Verkehrsnetze: StraรŸensegment myroadlinklayerabstractger myroadlinklayerkeyword1 diff --git a/msautotest/wxs/expected/wms_inspire_scenario2_cap111_ger.xml b/msautotest/wxs/expected/wms_inspire_scenario2_cap111_ger.xml index 3598be3aa3..a142a45994 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario2_cap111_ger.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario2_cap111_ger.xml @@ -112,7 +112,7 @@ TN.RoadTransportNetwork.RoadArea - Verkehrsnetze: Stra฿enflไche + Verkehrsnetze: StraรŸenflรคche myroadareaabstractger myroadareakeyword1 @@ -138,7 +138,7 @@ TN.RoadTransportNetwork.RoadLink - Verkehrsnetze: Stra฿ensegment + Verkehrsnetze: StraรŸensegment myroadlinklayerabstractger myroadlinklayerkeyword1 diff --git a/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml b/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml index f83017717f..0a06b2b9e4 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml @@ -108,7 +108,7 @@ TN.RoadTransportNetwork.RoadArea - Verkehrsnetze: Stra฿enflไche + Verkehrsnetze: StraรŸenflรคche myroadareaabstractger myroadareakeyword1 @@ -139,7 +139,7 @@ TN.RoadTransportNetwork.RoadLink - Verkehrsnetze: Stra฿ensegment + Verkehrsnetze: StraรŸensegment myroadlinklayerabstractger myroadlinklayerkeyword1 diff --git a/msautotest/wxs/wms_inspire_scenario1.map b/msautotest/wxs/wms_inspire_scenario1.map index 67cc48d0db..2bcdf05cfb 100644 --- a/msautotest/wxs/wms_inspire_scenario1.map +++ b/msautotest/wxs/wms_inspire_scenario1.map @@ -101,7 +101,7 @@ WEB "wms_contactorganization" "MapServer" #responsible organisation "wms_contactposition" "owner" #responsible organisation, value according "INSPIRE Metadata Regulation" (part D6) "wms_rootlayer_title.eng" "Transport networks: Road Area" - "wms_rootlayer_title.ger" "Verkehrsnetze: Stra฿enflไche" + "wms_rootlayer_title.ger" "Verkehrsnetze: StraรŸenflรคche" "wms_rootlayer_abstract" "myroadarealayerabstract" #to test fallback "wms_rootlayer_abstract.ger" "myroadareaabstractger" "wms_rootlayer_keywordlist" "myroadareakeyword1,myroadareakeyword2" @@ -133,7 +133,7 @@ LAYER DATA "road_%language%" METADATA "wms_title.eng" "Transport networks: Road Link" - "wms_title.ger" "Verkehrsnetze: Stra฿ensegment" + "wms_title.ger" "Verkehrsnetze: StraรŸensegment" "wms_abstract" "myroadlinklayerabstract" #to test fallback "wms_abstract.ger" "myroadlinklayerabstractger" "wms_keywordlist" "myroadlinklayerkeyword1,myroadlinklayerkeyword2" diff --git a/msautotest/wxs/wms_inspire_scenario2.map b/msautotest/wxs/wms_inspire_scenario2.map index 7ba5b99408..f891edb8ed 100644 --- a/msautotest/wxs/wms_inspire_scenario2.map +++ b/msautotest/wxs/wms_inspire_scenario2.map @@ -112,7 +112,7 @@ WEB "wms_contactorganization" "MapServer" #responsible organisation "wms_contactposition" "owner" #responsible organisation, value according "INSPIRE Metadata Regulation" (part D6) "wms_rootlayer_title.eng" "Transport networks: Road Area" - "wms_rootlayer_title.ger" "Verkehrsnetze: Stra฿enflไche" + "wms_rootlayer_title.ger" "Verkehrsnetze: StraรŸenflรคche" "wms_rootlayer_abstract" "myroadarealayerabstract" #to test fallback "wms_rootlayer_abstract.ger" "myroadareaabstractger" "wms_rootlayer_keywordlist" "myroadareakeyword1,myroadareakeyword2" @@ -140,7 +140,7 @@ LAYER DATA "road_%language%" METADATA "wms_title.eng" "Transport networks: Road Link" - "wms_title.ger" "Verkehrsnetze: Stra฿ensegment" + "wms_title.ger" "Verkehrsnetze: StraรŸensegment" "wms_abstract" "myroadlinklayerabstract" #to test fallback "wms_abstract.ger" "myroadlinklayerabstractger" "wms_keywordlist" "myroadlinklayerkeyword1,myroadlinklayerkeyword2" From 7887b8d6ff51b7b918b747be57e696955a560083 Mon Sep 17 00:00:00 2001 From: Seth G Date: Sun, 1 Oct 2017 13:12:43 +0200 Subject: [PATCH 166/221] DEBUG 10 is an invalid value --- msautotest/misc/scaletoken.map | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/msautotest/misc/scaletoken.map b/msautotest/misc/scaletoken.map index 9819092777..033e91deda 100644 --- a/msautotest/misc/scaletoken.map +++ b/msautotest/misc/scaletoken.map @@ -23,7 +23,7 @@ MAP LAYER NAME 'layer1' STATUS ON - DEBUG 10 + DEBUG 1 SCALETOKEN NAME "%shpfile%" VALUES From d78096d069e757b6889b3e51f8b48fac00c2cc61 Mon Sep 17 00:00:00 2001 From: Seth G Date: Sun, 1 Oct 2017 13:23:15 +0200 Subject: [PATCH 167/221] Update scaletoken.map --- msautotest/misc/scaletoken.map | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/msautotest/misc/scaletoken.map b/msautotest/misc/scaletoken.map index 033e91deda..60296620ec 100644 --- a/msautotest/misc/scaletoken.map +++ b/msautotest/misc/scaletoken.map @@ -17,7 +17,7 @@ MAP SHAPEPATH "." IMAGETYPE PNG - #DEBUG 10 + #DEBUG 1 #CONFIG "MS_ERRORFILE" "stderr" LAYER @@ -41,7 +41,7 @@ MAP LAYER NAME 'layer2' STATUS ON - DEBUG 10 + DEBUG 1 DATA "data/shppoly/poly.shp" SCALETOKEN NAME "%filter%" @@ -60,7 +60,7 @@ MAP LAYER NAME 'layer3' STATUS ON - DEBUG 10 + DEBUG 1 DATA "data/shppoly/poly.shp" SCALETOKEN NAME "%filteritem%" From 35b82b93fe26e3b11d1e3cdefe11638bfda2966f Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 12 Oct 2017 12:27:18 +0200 Subject: [PATCH 168/221] msDrawTextSymbol(): fix compiler warning about unused return value --- maprendering.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/maprendering.c b/maprendering.c index b32716cd18..4af4887bcd 100644 --- a/maprendering.c +++ b/maprendering.c @@ -1026,6 +1026,7 @@ int msDrawTextSymbol(mapObj *map, imageObj *image, pointObj labelPnt, textSymbol int g; double ox, oy; double cosa,sina; + int ret; if(ts->rotation != 0) { cosa = cos(ts->rotation); sina = sin(ts->rotation); @@ -1048,9 +1049,11 @@ int msDrawTextSymbol(mapObj *map, imageObj *image, pointObj labelPnt, textSymbol ts_shadow->textpath->glyphs[g].pnt.y += oy; } - renderer->renderGlyphs(image,ts_shadow->textpath,&ts->label->shadowcolor,NULL,0); + ret = renderer->renderGlyphs(image,ts_shadow->textpath,&ts->label->shadowcolor,NULL,0); freeTextSymbol(ts_shadow); msFree(ts_shadow); + if( ret != MS_SUCCESS ) + return ret; } if(MS_VALID_COLOR(ts->label->color)) From 226d19a6fe68ac1e0f19cc3a593841e3da54ce22 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 12 Oct 2017 13:44:33 +0200 Subject: [PATCH 169/221] msDrawMap(): optimize pre-processing of WMS/WFS layers Currently we use msLayerIsVisible() to determine how many potential WMS/WFS layers there are. But this is a costly operation. Rather test the connectiontype, and defer testing msLayerIsVisible() as late as possible. --- mapdraw.c | 32 ++++++++++++++++++++++---------- maphttp.c | 5 ----- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/mapdraw.c b/mapdraw.c index 9fdacdabf9..01848199ea 100644 --- a/mapdraw.c +++ b/mapdraw.c @@ -220,7 +220,8 @@ imageObj *msDrawMap(mapObj *map, int querymap) #if defined(USE_WMS_LYR) || defined(USE_WFS_LYR) enum MS_CONNECTION_TYPE lastconnectiontype; httpRequestObj *pasOWSReqInfo=NULL; - int numOWSLayers=0, numOWSRequests=0; + int numOWSLayers=0; + int numOWSRequests=0; wmsParamsObj sLastWMSParams; #endif @@ -256,30 +257,43 @@ imageObj *msDrawMap(mapObj *map, int querymap) */ numOWSLayers=0; for(i=0; inumlayers; i++) { - if(map->layerorder[i] != -1 && - msLayerIsVisible(map, GET_LAYER(map,map->layerorder[i]))) + if(map->layerorder[i] == -1 ) + continue; + + lp = GET_LAYER(map,map->layerorder[i]); + if( lp->connectiontype != MS_WMS && + lp->connectiontype != MS_WFS ) { + continue; + } numOWSLayers++; } - if (numOWSLayers > 0) { + /* Alloc and init pasOWSReqInfo... */ - pasOWSReqInfo = (httpRequestObj *)malloc((numOWSLayers+1)*sizeof(httpRequestObj)); + pasOWSReqInfo = (httpRequestObj *)malloc(numOWSLayers*sizeof(httpRequestObj)); if (pasOWSReqInfo == NULL) { msSetError(MS_MEMERR, "Allocation of httpRequestObj failed.", "msDrawMap()"); return NULL; } - msHTTPInitRequestObj(pasOWSReqInfo, numOWSLayers+1); + msHTTPInitRequestObj(pasOWSReqInfo, numOWSLayers); msInitWmsParamsObj(&sLastWMSParams); /* Pre-download all WMS/WFS layers in parallel before starting to draw map */ lastconnectiontype = MS_SHAPEFILE; - for(i=0; numOWSLayers && inumlayers; i++) { - if(map->layerorder[i] == -1 || !msLayerIsVisible(map, GET_LAYER(map,map->layerorder[i]))) + for(i=0; inumlayers; i++) { + if(map->layerorder[i] == -1 ) continue; lp = GET_LAYER(map,map->layerorder[i]); + if( lp->connectiontype != MS_WMS && + lp->connectiontype != MS_WFS ) { + continue; + } + + if( !msLayerIsVisible(map, lp) ) + continue; #ifdef USE_WMS_LYR if(lp->connectiontype == MS_WMS) { @@ -306,9 +320,7 @@ imageObj *msDrawMap(mapObj *map, int querymap) lastconnectiontype = lp->connectiontype; } -#ifdef USE_WMS_LYR msFreeWmsParamsObj(&sLastWMSParams); -#endif } /* if numOWSLayers > 0 */ if(numOWSRequests && msOWSExecuteRequests(pasOWSReqInfo, numOWSRequests, map, MS_TRUE) == MS_FAILURE) { diff --git a/maphttp.c b/maphttp.c index e7a18011b8..98329d4d23 100644 --- a/maphttp.c +++ b/maphttp.c @@ -113,11 +113,6 @@ void msHTTPCleanup() * Should be called on a new array of httpRequestObj to initialize them * for use with msHTTPExecuteRequest(), etc. * - * Note that users of this module should always allocate and init one - * more instance of httpRequestObj in their array than what they plan to - * use because the terminate_handler() needs the last entry in the array - * to have reqObj->request == NULL - * **********************************************************************/ void msHTTPInitRequestObj(httpRequestObj *pasReqInfo, int numRequests) { From 6a5cad3dbc10e2cafd95269402a92fda34d01385 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 12 Oct 2017 14:39:28 +0200 Subject: [PATCH 170/221] msLayerIsVisible(): speed it up by doing layer vs map scale comparisons before extent comparison --- mapdraw.c | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/mapdraw.c b/mapdraw.c index 01848199ea..41ac8903dd 100644 --- a/mapdraw.c +++ b/mapdraw.c @@ -594,17 +594,8 @@ int msLayerIsVisible(mapObj *map, layerObj *layer) if(layer->type == MS_LAYER_QUERY || layer->type == MS_LAYER_TILEINDEX) return(MS_FALSE); if((layer->status != MS_ON) && (layer->status != MS_DEFAULT)) return(MS_FALSE); - /* Only return MS_FALSE if it is definitely false. Sometimes it will return MS_UNKNOWN, which we - ** consider true, for this use case (it might be visible, try and draw it, see what happens). */ - if ( msExtentsOverlap(map, layer) == MS_FALSE ) { - if( layer->debug >= MS_DEBUGLEVEL_V ) { - msDebug("msLayerIsVisible(): Skipping layer (%s) because LAYER.EXTENT does not intersect MAP.EXTENT\n", layer->name); - } - return(MS_FALSE); - } - - if(msEvalContext(map, layer, layer->requires) == MS_FALSE) return(MS_FALSE); - + /* Do comparisons of layer scale vs map scale now, since msExtentsOverlap() */ + /* can be slow */ if(map->scaledenom > 0) { /* layer scale boundaries should be checked first */ @@ -614,13 +605,27 @@ int msLayerIsVisible(mapObj *map, layerObj *layer) } return(MS_FALSE); } - if((layer->minscaledenom > 0) && (map->scaledenom <= layer->minscaledenom)) { + if(/*(layer->minscaledenom > 0) &&*/ (map->scaledenom <= layer->minscaledenom)) { if( layer->debug >= MS_DEBUGLEVEL_V ) { msDebug("msLayerIsVisible(): Skipping layer (%s) because LAYER.MINSCALE is too large for this MAP scale\n", layer->name); } return(MS_FALSE); } - + } + + /* Only return MS_FALSE if it is definitely false. Sometimes it will return MS_UNKNOWN, which we + ** consider true, for this use case (it might be visible, try and draw it, see what happens). */ + if ( msExtentsOverlap(map, layer) == MS_FALSE ) { + if( layer->debug >= MS_DEBUGLEVEL_V ) { + msDebug("msLayerIsVisible(): Skipping layer (%s) because LAYER.EXTENT does not intersect MAP.EXTENT\n", layer->name); + } + return(MS_FALSE); + } + + if(msEvalContext(map, layer, layer->requires) == MS_FALSE) return(MS_FALSE); + + if(map->scaledenom > 0) { + /* now check class scale boundaries (all layers *must* pass these tests) */ if(layer->numclasses > 0) { for(i=0; inumclasses; i++) { From 8501873362d8db024221869eb4a9bacef1c04690 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 12 Oct 2017 13:15:57 +0200 Subject: [PATCH 171/221] msExtentsOverlap(): optimize when layer and map projections are the same We can avoid costly reprojection to lon/lat --- maputil.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/maputil.c b/maputil.c index d6f23d200d..9a7da7b29e 100644 --- a/maputil.c +++ b/maputil.c @@ -2260,6 +2260,14 @@ int msExtentsOverlap(mapObj *map, layerObj *layer) if( ! (layer->projection.numargs > 0) ) return msRectOverlap( &(map->extent), &(layer->extent) ); + /* In the case where map and layer projections are identical, and the */ + /* bounding boxes don't cross the dateline, do simple rectangle comparison */ + if( map->extent.minx < map->extent.maxx && + layer->extent.minx < layer->extent.maxx && + !msProjectionsDiffer(&(map->projection), &(layer->projection)) ) { + return msRectOverlap( &(map->extent), &(layer->extent) ); + } + /* We need to transform our rectangles for comparison, ** so we will work with copies and leave the originals intact. */ MS_COPYRECT(&map_extent, &(map->extent) ); From 581ec9fcdd42c88348277d1a35a9f48ebfd382bc Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 12 Oct 2017 15:39:18 +0200 Subject: [PATCH 172/221] msProjectionsDiffer(): restrict attempts normalization with proj.4 --- mapproject.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mapproject.c b/mapproject.c index c90cc5446f..605e2f4256 100644 --- a/mapproject.c +++ b/mapproject.c @@ -1132,7 +1132,11 @@ int msProjectionsDiffer( projectionObj *proj1, projectionObj *proj2 ) int ret; ret = msProjectionsDifferInternal(proj1, proj2); - if( ret ) + if( ret && + /* to speed up things, do normalization only if one proj is */ + /* likely of the form init=epsg:XXX and the other proj=XXX datum=YYY... */ + ( (proj1->numargs == 1 && proj2->numargs > 1) || + (proj1->numargs > 1 && proj2->numargs == 1) ) ) { projectionObj* p1normalized; projectionObj* p2normalized; From 04d3a61493dd3842ffcb54acd79cb30a1ebb048b Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 17 Oct 2017 21:09:37 +0200 Subject: [PATCH 173/221] JPEG output: add compatibility with libjpeg-turbo 1.5.2 (https://github.com/libjpeg-turbo/libjpeg-turbo/issues/162) --- mapimageio.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/mapimageio.c b/mapimageio.c index 95feda23d3..df896c56a0 100644 --- a/mapimageio.c +++ b/mapimageio.c @@ -206,11 +206,16 @@ int saveAsJPEG(mapObj *map, rasterBufferObj *rb, streamInfo *info, cinfo.optimize_coding = TRUE; if( arithmetic || optimized ) { - if (map == NULL || msGetConfigOption(map, "JPEGMEM") == NULL) { - /* If the user doesn't provide a value for JPEGMEM, we want to be sure */ - /* that at least the image size will be used before creating the temporary file */ - cinfo.mem->max_memory_to_use = - MS_MAX(cinfo.mem->max_memory_to_use, cinfo.input_components * rb->width * rb->height); + /* libjpeg turbo 1.5.2 honours max_memory_to_use, but has no backing */ + /* store implementation, so better not set max_memory_to_use ourselves. */ + /* See https://github.com/libjpeg-turbo/libjpeg-turbo/issues/162 */ + if( cinfo.mem->max_memory_to_use > 0 ) { + if (map == NULL || msGetConfigOption(map, "JPEGMEM") == NULL) { + /* If the user doesn't provide a value for JPEGMEM, we want to be sure */ + /* that at least the image size will be used before creating the temporary file */ + cinfo.mem->max_memory_to_use = + MS_MAX(cinfo.mem->max_memory_to_use, cinfo.input_components * rb->width * rb->height); + } } } From 7ca0c1c7d2ceef9c7376e7bc532e7131e0aeda4b Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 23 Oct 2017 15:15:27 +0200 Subject: [PATCH 174/221] WFS client layer: fix wrong BBOX argument in WFS 1.1 with EPSG code with non-axis inversion (patch by richie21, fixes #5496) --- mapwfslayer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapwfslayer.c b/mapwfslayer.c index fe6560ee10..4a30955bb4 100644 --- a/mapwfslayer.c +++ b/mapwfslayer.c @@ -445,7 +445,7 @@ static char *msBuildWFSLayerGetURL(mapObj *map, layerObj *lp, rectObj *bbox, } else { snprintf(pszURL + strlen(pszURL), bufferSize - strlen(pszURL), "&BBOX=%.15g,%.15g,%.15g,%.15g,%s&SRSNAME=%s", - bbox->minx, bbox->miny, bbox->maxy, bbox->maxy, + bbox->minx, bbox->miny, bbox->maxx, bbox->maxy, projUrn, projUrn); } } else { From 38f3cae73d6ad55a3d16786441a065275f3335b4 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Mon, 23 Oct 2017 20:34:59 +0200 Subject: [PATCH 175/221] Fix kerneldensity layer not to loose connection type on reopen (#5497) --- maplayer.c | 10 ++++++++-- maprasterquery.c | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/maplayer.c b/maplayer.c index 8ff0151e4d..5834924c1a 100644 --- a/maplayer.c +++ b/maplayer.c @@ -229,7 +229,8 @@ int msLayerOpen(layerObj *layer) if(layer->tileindex && layer->connectiontype == MS_SHAPEFILE) layer->connectiontype = MS_TILED_SHAPEFILE; - if(layer->type == MS_LAYER_RASTER && layer->connectiontype != MS_WMS) + if(layer->type == MS_LAYER_RASTER && layer->connectiontype != MS_WMS + && layer->connectiontype != MS_KERNELDENSITY) layer->connectiontype = MS_RASTER; if ( ! layer->vtable) { @@ -1891,7 +1892,8 @@ int msInitializeVirtualTable(layerObj *layer) if(layer->tileindex && layer->connectiontype == MS_SHAPEFILE) layer->connectiontype = MS_TILED_SHAPEFILE; - if(layer->type == MS_LAYER_RASTER && layer->connectiontype != MS_WMS) + if(layer->type == MS_LAYER_RASTER && layer->connectiontype != MS_WMS + && layer->connectiontype != MS_KERNELDENSITY) layer->connectiontype = MS_RASTER; switch(layer->connectiontype) { @@ -1914,6 +1916,10 @@ int msInitializeVirtualTable(layerObj *layer) /* WMS should be treated as a raster layer */ return(msRASTERLayerInitializeVirtualTable(layer)); break; + case(MS_KERNELDENSITY): + /* KERNELDENSITY should be treated as a raster layer */ + return(msRASTERLayerInitializeVirtualTable(layer)); + break; case(MS_ORACLESPATIAL): return(msOracleSpatialLayerInitializeVirtualTable(layer)); break; diff --git a/maprasterquery.c b/maprasterquery.c index b6556be0ed..ccf1528931 100644 --- a/maprasterquery.c +++ b/maprasterquery.c @@ -193,7 +193,7 @@ static void msRasterLayerInfoInitialize( layerObj *layer ) /* We need to do this or the layer->layerinfo will be interpreted */ /* as shapefile access info because the default connectiontype is */ /* MS_SHAPEFILE. */ - if (layer->connectiontype != MS_WMS) + if (layer->connectiontype != MS_WMS && layer->connectiontype != MS_KERNELDENSITY) layer->connectiontype = MS_RASTER; rlinfo->query_result_hard_max = 1000000; From 91fafe426c00c348c068be7deb35cd45d1fe262d Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 31 Oct 2017 22:16:27 +0100 Subject: [PATCH 176/221] msSLDApplySLD(): fix wrong index use (patch by wdc-rsat, fixes #5505) --- mapogcsld.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapogcsld.c b/mapogcsld.c index 26122e30d0..00afe03e8c 100644 --- a/mapogcsld.c +++ b/mapogcsld.c @@ -329,7 +329,7 @@ int msSLDApplySLD(mapObj *map, char *psSLDXML, int iLayer, char *pszStyleLayerNa /* opacity for sld raster */ if (GET_LAYER(map, i)->type == MS_LAYER_RASTER && - pasLayers[i].compositer && pasLayers[j].compositer->opacity != 100) + pasLayers[j].compositer && pasLayers[j].compositer->opacity != 100) msSetLayerOpacity(GET_LAYER(map, i), pasLayers[j].compositer->opacity); /* mark as auto-generate SLD */ From 4f7520631f03d1347dadf529db6da55c2ea57186 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 31 Oct 2017 22:42:53 +0100 Subject: [PATCH 177/221] WCS 1.1 GetCoverage response: honour EPSG axis order for GridOrigin and GridOffsets (#5504) F.3.4 2D simple grid (urn:ogc:def:method:WCS:1.1:2dSimpleGrid) of https://portal.opengeospatial.org/files/07-067r2 makes it clear that EPSG axis order should be followed, in the note of EXAMPLE 1 at page 88 '''(in this case, degrees of latitude and longitude, in that order).''' --- mapwcs11.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/mapwcs11.c b/mapwcs11.c index 8dbe94829a..708d7606de 100644 --- a/mapwcs11.c +++ b/mapwcs11.c @@ -720,6 +720,18 @@ msWCSDescribeCoverage_CoverageDescription11( /* -------------------------------------------------------------------- */ { char format_buf[500]; + projectionObj proj; + double x0 = cm.geotransform[0]+cm.geotransform[1]/2+cm.geotransform[2]/2; + double y0 = cm.geotransform[3]+cm.geotransform[4]/2+cm.geotransform[5]/2; + double resx = cm.geotransform[1]; + double resy = cm.geotransform[5]; + + msInitProjection( &proj ); + if( msLoadProjectionString( &proj, cm.srs_urn ) == 0 ) { + msAxisNormalizePoints( &proj, 1, &x0, &y0 ); + msAxisNormalizePoints( &proj, 1, &resx, &resy ); + } + msFreeProjection( &proj ); psGridCRS = xmlNewChild( psSD, NULL, BAD_CAST "GridCRS", NULL ); @@ -728,13 +740,10 @@ msWCSDescribeCoverage_CoverageDescription11( xmlNewChild( psGridCRS, NULL, BAD_CAST "GridType", BAD_CAST "urn:ogc:def:method:WCS:1.1:2dSimpleGrid" ); - sprintf( format_buf, "%.15g %.15g", - cm.geotransform[0]+cm.geotransform[1]/2+cm.geotransform[2]/2, - cm.geotransform[3]+cm.geotransform[4]/2+cm.geotransform[5]/2); + sprintf( format_buf, "%.15g %.15g", x0, y0 ); xmlNewChild( psGridCRS, NULL, BAD_CAST "GridOrigin", BAD_CAST format_buf ); - sprintf( format_buf, "%.15g %.15g", - cm.geotransform[1], cm.geotransform[5] ); + sprintf( format_buf, "%.15g %.15g", resx, resy ); xmlNewChild( psGridCRS, NULL, BAD_CAST "GridOffsets", BAD_CAST format_buf ); xmlNewChild( psGridCRS, NULL, BAD_CAST "GridCS", From c7a1e517d5dd2dd80901008e9860cd589f1685a1 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 31 Oct 2017 22:54:58 +0100 Subject: [PATCH 178/221] msSOSGetCapabilities(): use proper layer when generating the gml:name from sos_offering_name metadata (patch by wdc-rsat, fixes #5506) --- mapogcsos.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mapogcsos.c b/mapogcsos.c index 8563e50348..5ee9babd21 100644 --- a/mapogcsos.c +++ b/mapogcsos.c @@ -1340,6 +1340,8 @@ int msSOSGetCapabilities(mapObj *map, sosParamsObj *sosparams, cgiRequestObj *re break; } + lp = (GET_LAYER(map, j)); + /*description*/ value = msOWSLookupMetadata(&(lp->metadata), "S", "offering_description"); @@ -1349,7 +1351,6 @@ int msSOSGetCapabilities(mapObj *map, sosParamsObj *sosparams, cgiRequestObj *re xmlAddSibling(psNode, xmlNewComment(BAD_CAST "WARNING: Optional metadata \"sos_offering_description\" missing for gml:description")); /*name*/ - lp = (GET_LAYER(map, j)); /*first layer*/ value = msOWSLookupMetadata(&(lp->metadata), "S", "offering_name"); if (value) psNode = xmlNewChild(psOfferingNode, psNsGml, BAD_CAST "name", BAD_CAST value); From f9f59dc3384c74a1ca607af9a2fa84a95d9b5e9e Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 1 Nov 2017 11:06:19 +0100 Subject: [PATCH 179/221] Correcting commit message of 4f7520631f03d1347dadf529db6da55c2ea57186: 'WCS 1.1 DescribeCoverage response: honour EPSG axis order for GridOrigin and GridOffsets (#5504)' --- mapwcs11.c | 1 - 1 file changed, 1 deletion(-) diff --git a/mapwcs11.c b/mapwcs11.c index 708d7606de..8bfd60fe9e 100644 --- a/mapwcs11.c +++ b/mapwcs11.c @@ -735,7 +735,6 @@ msWCSDescribeCoverage_CoverageDescription11( psGridCRS = xmlNewChild( psSD, NULL, BAD_CAST "GridCRS", NULL ); - xmlNewChild( psGridCRS, NULL, BAD_CAST "GridBaseCRS", BAD_CAST cm.srs_urn ); xmlNewChild( psGridCRS, NULL, BAD_CAST "GridType", BAD_CAST "urn:ogc:def:method:WCS:1.1:2dSimpleGrid" ); From 8f85f8db46e65a3a4e8d3ec245ea90a56b6d794c Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 2 Nov 2017 18:10:46 +0100 Subject: [PATCH 180/221] UVRaster: support layers with lon_wrap=180 projection (#5502) --- mapproject.c | 63 ++++++++++++--- mapproject.h | 2 + mapresample.c | 12 +-- mapuvraster.c | 57 ++++++++++++-- msautotest/wxs/data/uvraster_lonwrap180.tif | Bin 0 -> 9561 bytes ...uvraster_lonwrap180_accross_hemisphere.png | Bin 0 -> 33924 bytes ...ms_uvraster_lonwrap180_east_hemisphere.png | Bin 0 -> 41502 bytes ...ms_uvraster_lonwrap180_west_hemisphere.png | Bin 0 -> 41205 bytes .../wms_uvraster_lonwrap180_whole_world.png | Bin 0 -> 102304 bytes msautotest/wxs/wms_uvraster_lonwrap180.map | 74 ++++++++++++++++++ 10 files changed, 178 insertions(+), 30 deletions(-) create mode 100644 msautotest/wxs/data/uvraster_lonwrap180.tif create mode 100644 msautotest/wxs/expected/wms_uvraster_lonwrap180_accross_hemisphere.png create mode 100644 msautotest/wxs/expected/wms_uvraster_lonwrap180_east_hemisphere.png create mode 100644 msautotest/wxs/expected/wms_uvraster_lonwrap180_west_hemisphere.png create mode 100644 msautotest/wxs/expected/wms_uvraster_lonwrap180_whole_world.png create mode 100644 msautotest/wxs/wms_uvraster_lonwrap180.map diff --git a/mapproject.c b/mapproject.c index 605e2f4256..8ceeac4c2a 100644 --- a/mapproject.c +++ b/mapproject.c @@ -942,6 +942,32 @@ msProjectRectAsPolygon(projectionObj *in, projectionObj *out, #endif } +/************************************************************************/ +/* msProjectHasLonWrap() */ +/************************************************************************/ + +int msProjectHasLonWrap(projectionObj *in, double* pdfLonWrap) +{ + int i; + if( pdfLonWrap ) + *pdfLonWrap = 0; +#if USE_PROJ + if( !pj_is_latlong(in->proj) ) + return MS_FALSE; +#endif + for( i = 0; i < in->numargs; i++ ) + { + if( strncmp(in->args[i], "lon_wrap=", + strlen("lon_wrap=")) == 0 ) + { + if( pdfLonWrap ) + *pdfLonWrap = atof(in->args[i] + strlen("lon_wrap=")); + return MS_TRUE; + } + } + return MS_FALSE; +} + /************************************************************************/ /* msProjectRect() */ /************************************************************************/ @@ -954,6 +980,7 @@ int msProjectRect(projectionObj *in, projectionObj *out, rectObj *rect) char *over = "+over"; int ret; projectionObj in_over,out_over,*inp,*outp; + double dfLonWrap = 0.0; #if USE_PROJ /* Detect projecting from north polar stereographic to longlat */ @@ -988,6 +1015,14 @@ int msProjectRect(projectionObj *in, projectionObj *out, rectObj *rect) } #endif + if(in && msProjectHasLonWrap(in, &dfLonWrap) && dfLonWrap == 180.0) { + inp = in; + outp = out; + if( rect->maxx > 180.0 ) { + rect->minx = -180.0; + rect->maxx = 180.0; + } + } /* * Issue #4892: When projecting a rectangle we do not want proj to wrap resulting * coordinates around the dateline, as in practice a requested bounding box of @@ -997,19 +1032,21 @@ int msProjectRect(projectionObj *in, projectionObj *out, rectObj *rect) * To enforce this, we clone the input projections and add the "+over" proj * parameter in order to disable dateline wrapping. */ - if(out) { - msInitProjection(&out_over); - msCopyProjectionExtended(&out_over,out,&over,1); - outp = &out_over; - } else { - outp = out; - } - if(in) { - msInitProjection(&in_over); - msCopyProjectionExtended(&in_over,in,&over,1); - inp = &in_over; - } else { - inp = in; + else { + if(out) { + msInitProjection(&out_over); + msCopyProjectionExtended(&out_over,out,&over,1); + outp = &out_over; + } else { + outp = out; + } + if(in) { + msInitProjection(&in_over); + msCopyProjectionExtended(&in_over,in,&over,1); + inp = &in_over; + } else { + inp = in; + } } ret = msProjectRectAsPolygon(inp,outp, rect ); if(in) diff --git a/mapproject.h b/mapproject.h index 4204cc4389..c2966776ee 100644 --- a/mapproject.h +++ b/mapproject.h @@ -108,6 +108,8 @@ extern "C" { /*utility functions */ MS_DLL_EXPORT int GetMapserverUnitUsingProj(projectionObj *psProj); + + int msProjectHasLonWrap(projectionObj *in, double* pdfLonWrap); #endif #ifdef __cplusplus diff --git a/mapresample.c b/mapresample.c index 1179ab41e1..0dd1871df2 100644 --- a/mapresample.c +++ b/mapresample.c @@ -1136,18 +1136,8 @@ static int msTransformMapToSource( int nDstXSize, int nDstYSize, /* -------------------------------------------------------------------- */ if( bOutInit && pj_is_latlong(psSrcProj->proj) ) { - int bHasLonWrap = MS_FALSE; double dfLonWrap = 0; - for( i = 0; i < psSrcProj->numargs; i++ ) - { - if( strncmp(psSrcProj->args[i], "lon_wrap=", - strlen("lon_wrap=")) == 0 ) - { - bHasLonWrap = MS_TRUE; - dfLonWrap = atof( psSrcProj->args[i] + strlen("lon_wrap=") ); - break; - } - } + int bHasLonWrap = msProjectHasLonWrap(psSrcProj, &dfLonWrap); if( bHasLonWrap ) { diff --git a/mapuvraster.c b/mapuvraster.c index 52d92a52f2..31b6a62739 100644 --- a/mapuvraster.c +++ b/mapuvraster.c @@ -345,7 +345,8 @@ int msUVRASTERLayerWhichShapes(layerObj *layer, rectObj rect, int isQuery) int width, height, u_src_off, v_src_off, i, x, y; char **alteredProcessing = NULL, *saved_layer_mask; char **savedProcessing = NULL; - + int bHasLonWrap = MS_FALSE; + double dfLonWrap = 0.0; if (layer->debug) msDebug("Entering msUVRASTERLayerWhichShapes().\n"); @@ -389,10 +390,6 @@ int msUVRASTERLayerWhichShapes(layerObj *layer, rectObj rect, int isQuery) map_cellsize = MS_MAX(MS_CELLSIZE(rect.minx, rect.maxx,layer->map->width), MS_CELLSIZE(rect.miny,rect.maxy,layer->map->height)); map_tmp->cellsize = map_cellsize*spacing; - - if (layer->debug) - msDebug("msUVRASTERLayerWhichShapes(): width: %d, height: %d, cellsize: %g\n", - width, height, map_tmp->cellsize); /* Initialize our dummy map */ MS_INIT_COLOR(map_tmp->imagecolor, 255,255,255,255); @@ -419,7 +416,55 @@ int msUVRASTERLayerWhichShapes(layerObj *layer, rectObj rect, int isQuery) map_tmp->extent.maxy = map_tmp->extent.miny+((height-1)*map_tmp->cellsize); map_tmp->gt.rotation_angle = 0.0; - msCopyProjection(&map_tmp->projection, &layer->projection); + /* Custom msCopyProjection() that removes lon_wrap parameter */ + { +#ifdef USE_PROJ + int i; + + map_tmp->projection.numargs = 0; + map_tmp->projection.gt = layer->projection.gt; + map_tmp->projection.automatic = layer->projection.automatic; + + for (i = 0; i < layer->projection.numargs; i++) { + if( strncmp(layer->projection.args[i], "lon_wrap=", + strlen("lon_wrap=")) == 0 ) { + bHasLonWrap = MS_TRUE; + dfLonWrap = atof( layer->projection.args[i] + strlen("lon_wrap=") ); + } + else { + map_tmp->projection.args[map_tmp->projection.numargs ++] = + msStrdup(layer->projection.args[i]); + } + } + if (map_tmp->projection.numargs != 0) { + msProcessProjection(&(map_tmp->projection)); + } +#endif + map_tmp->projection.wellknownprojection = layer->projection.wellknownprojection; + } + + if( bHasLonWrap && dfLonWrap == 180.0) { + if( map_tmp->extent.minx >= 180 ) { + /* Request on the right half of the shifted raster (= western hemisphere) */ + map_tmp->extent.minx -= 360; + map_tmp->extent.maxx -= 360; + } + else if( map_tmp->extent.maxx >= 180.0 ) { + /* Request spanning on the 2 hemispheres => drawing whole planet */ + /* Take only into account vertical resolution, as horizontal one */ + /* will be unreliable (assuming square pixels...) */ + map_cellsize = MS_CELLSIZE(rect.miny,rect.maxy,layer->map->height); + map_tmp->cellsize = map_cellsize*spacing; + + width = 360.0 / map_tmp->cellsize; + map_tmp->extent.minx = -180.0+(0.5*map_tmp->cellsize); + map_tmp->extent.maxx = 180.0-(0.5*map_tmp->cellsize); + } + } + + if (layer->debug) + msDebug("msUVRASTERLayerWhichShapes(): width: %d, height: %d, cellsize: %g\n", + width, height, map_tmp->cellsize); if (layer->debug == 5) msDebug("msUVRASTERLayerWhichShapes(): extent: %g %g %g %g\n", diff --git a/msautotest/wxs/data/uvraster_lonwrap180.tif b/msautotest/wxs/data/uvraster_lonwrap180.tif new file mode 100644 index 0000000000000000000000000000000000000000..5e47c9891bae235da149e2f3ede1fd8a3c261694 GIT binary patch literal 9561 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 ZBNkxi6^~VZ^-SO2j_*{MoQI_K{{fw$qw@d& literal 0 HcmV?d00001 diff --git a/msautotest/wxs/expected/wms_uvraster_lonwrap180_accross_hemisphere.png b/msautotest/wxs/expected/wms_uvraster_lonwrap180_accross_hemisphere.png new file mode 100644 index 0000000000000000000000000000000000000000..d082ee65cd51e8c0a8ba43f98270cd23151f057f GIT binary patch literal 33924 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 literal 0 HcmV?d00001 diff --git a/msautotest/wxs/expected/wms_uvraster_lonwrap180_east_hemisphere.png b/msautotest/wxs/expected/wms_uvraster_lonwrap180_east_hemisphere.png new file mode 100644 index 0000000000000000000000000000000000000000..9948c50b665788b89bf389a46e625e3217df146b GIT binary patch literal 41502 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�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 Y8^`cs+O`*%0}_(rdo|g5X^XJ`1H!VyMF0Q* literal 0 HcmV?d00001 diff --git a/msautotest/wxs/expected/wms_uvraster_lonwrap180_west_hemisphere.png b/msautotest/wxs/expected/wms_uvraster_lonwrap180_west_hemisphere.png new file mode 100644 index 0000000000000000000000000000000000000000..907a51dbe8e5612698bcf36c0b00b88ad8a69201 GIT binary patch literal 41205 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 P@}H*KOVv7MyU70oCRof#x}&|tw` z26=g&w|3S34f{)XRd-ciRp%vZ^>MBhrJ?o#ABPGD007`Cew5P$08sY;02EIw%$Fx_ z06joaPFmYH>#!5JVl!ee(d9&=hdg+V|E>{EM|A9*{0pL;1=JPXKPhHu}9V6XPo7%3) z&gKGQ|KV4B-{u2hE7YRrXRczZUyUli9X{FhPKv%ui1L0jy#|E+i9QetV%E79?NlzuHxM`^M8FZ)_Yc# zL>_y;sqF^Q=&b46nysK*o@T4j>){kf zC*6tBXg4Xvz~|h73(Dv%jvw3)%Sl}^sB_+;&%M`X@Us7&Cvh&svY)4`Plhr#d$M~V zA&*U|e_WnLDIz*QJljNXeOJ8?zOY$)tWb4@n%GYVCPOb=cCXh2dx8a=K(_~9t&TI7p_-{JzGBCsbdq&?63UWswKI65$6zaedVT?mHKxR(8uK3 zks6I=y8Qld3*~Hbz-;KkXew39-EAF!LsPS}S?h4tj5=hr)I^d!8F2`{ZgR?zGC)3u zdaOyRNqxOH@D_)=a+jp8*LmE>r+q+PityyV_A)WBMX7C>xpPq>rG1rm3N>9q2cmnn z@5a}`Mca3SR?t%i&XV)$x=kW?1L)$9=0D@QX0f^c++Ue~Q4*v62T~22d}!BE^0*1k zbg$8S8*83>=m;>Io;=F;Hm0yJ<|4UWRz3Y9P7&4lE4SqJWKO5>(@InKs04N0B=bSI z*m%=>nvPfqEr-aAE!qaEhh_oT(-eLf)Brw?fPMOg=3(lVWt*#W?S~QK&&GWzf101m z+Jp9_bE?w(W1SMi<s>2djMCc1YV&j zqAKjc1wD?U(Mgd==v(8Xzmxy+HCES!Vp_cilAsp%Rx+gl7X<`fPQBYCqDzW?3)|~n zoBjKIfj8TqwHme&>Nm5QhG9+mOlS4%Zbn*Skrr^|OM7{}FxJ}3bc5tG@3wJBLjgzR zm71^7eGb7jU8ZGr%@%(n{^4aUerI+y)Skzz7QFVa@prmcHDpDF_$qR^_68jDDSu}s zf8T;B==FOmus!xMO=xOA;3s-~_E0ys6E*BA-rQJNfRwW|>cTUxiK~m_{ulk{vh|($ zJ~tCJ|CYIrIfTweBH+K^$im@oj>w=^5S)?OccJD4%WyYk-H!4S(13T(8xtaJvbO)g z5o}?n=8t?FlSBFo97$Qe1uj>G)!0t9fA$f5u5fA|l$h@WN|ZX`(d$H?btEV=`4M*> zZ`Jww)Hsw{t>lS>?~9kJzjAz@M9pCV=MA7SPNM^1)yPr{kMY*5fkr*EH9rmP&?6F? z=-tIv-O^dYv3VHHB({m>xr;a5cDc$`t`F_45LW-llSJbDx zBgp$m)H18DUwy{X!vPW4eQW_T8x4CA_C1jwG`yOlcS2%wh%X9V{9Ofhj_d;gfxE$H zq<^k7Z=uC`MCxOC%C?l3W+04E0@W;79Ybm7Yh=VWZJEW=$5XnLquVD7eGp zBBo)okww4-Mn1*yxU|Ku|dOnYkK>9unGs9RFDhd$NAWHkNlb4$A- z=p4eZ;HPR_K2P3gdkli;Ehk$8*{$GbXVdtOu)D;yp|%K4zH9T_?&7j!U+$*V&1aTw zIt%xs8=EcEMmXMbO%006o_~xqSoD(8P*9GJ_Ul*v2H~T%ZWKr&mwk!Xh)sUp5Q%Y8uswzn9cxPs3AlQ^2gT$GYP!I2#?X9p z{L0sPd;kSX_Ho^>9{ojeV4f8s!i*G8G<{omuJFw1EEE6Z8t-zRel+#&22nGR&wnYT(o`Hsc~om&AR=q)pQ5jMdV5G9L0^)lE3{ROIP5`@xPPG^t7 z?E-m^EN9Od{b-vwL6)}Sd5JwVrVlMJM3-{O9G_LK)G+R=wV`_{DXHB2tL!~bi7-fT z;D2D}Q_5Uy_+gAP6%r?g467c(9iq-G;N$wGCmdhA7Tp)Dc8pVEU@T-Fcznf(+{iI| z_D;_tF`ON|h$jcL2b=V%G_? zVX((Xa`d@{ob;apIzH&G6IcA~8=YmGtXQO}GHllov#WOK+mw-;Lj)cd4Fb z{i>YwL{|Lb-tmt=U}s8$NJ8wY_#zDVwGXa}6}{6r#_4qiP(|T){&K8&>Z?A+{#X^e zi}g<&t3ECb@Zx+4*cCibh`7hAL|u}olBbHNRw8UNFB7+)KUmj|220P_YVGc=mxt`c z6*K{-!uY5N6Yvf5CD6^7i5y8+^tTB8Z6jw`(4JIxKCNi*c2)aj*iifR74URt9WZ=m zN|$LVT^eSp?}C%98GS?xAIyPY-A@T;Y8O@Jv+o#F|p4n_qeL zi)CKL4-5?e%BHm=f_<&J1ZS9B6t>=i!7{Bc@WSLik z4zVNDu70-zeo;PYM>)7Pr{&y_L$~o>z zbj)H>R-l-@fX^zV63mQey4<<5#isaY;U#VO-$RcfRAQYcJF_=>=NiRHsDbjhzD-*d z;SR0EjC5M#+qmAv{bkgwqU>oy_-l;bQVK z{bU`iU$8;-SjIIZtUB;~;_)-)cccHY{@qlRY8`BlAv3aK44TP{x}K7f;+0uYPV^q+ zfI!TW>qN$Qjc&1_S}`No{Ckx`WB1r_{`Rh_Gs~4x50$dDy#tGgs ze}3V98S)18U%!#rpYydqfo}KTxKJ$hLV&OA39T*{-MT zdNFSw_g}#5g!1tGBA?4Tbwk&AaE#=T?b02Q>3OrYZr`86FE*B9#9)@};=a}9pvtIl zXdWri5@D(QJ?UjV0dR(Cbp7m31?b03itPmkv;<+q-DGpTafdrRE^mvduuYgF{;ye3 zkJ;^O1*3-9p+r3;k@o$C%H0H$=EvSWpr#3KJS2OEKQ0w9G$|C>gj!?A0I_fa$OS!6 zaiOp}f?%WBkNCwoA-_><`U1Uw5HIy*@LfqY^kCU9%bjwfoC)>L3z7^ew5-A!mTP$^ z!XC)Vw!6AZj(%yMf^dI8)&gB1IPsV86a7I{WQ-GCVvO41{s&FuMp6TKa)y`6i%Qox zBc5reNEe9@g*&1Snd1}SwBX7uM`T|s8PNCh)zHR~ocSDjRpmlpK@VoC?NTPIS7(3k z6ZsD&I~G>#`K{0&dOk}>PeO{$CyqXgR2TXS3kqd%v?X=YI-KOR(d+8TY5LM1mZp8O zpH;6G8`2Q>B;%Glf2!+V>lL#?+cP)vhh}Heg%HHbT7G{Y2iq8>X=Nn4)UkPQMT+81A5nG1A7S=%qWRq*(HuiM&=hV;I zlSWK-V|RHpw}S8B2V=_SYHi2$$%{a|k_cIQ8E22&Vu6KmzBb%$j>q?F*Mk>Rv%aqR zg_3wX2|I<+DmpZ#8BHN{QQIu7Ca1O&wX*`*M7=$J)m-<0R1j|jn`-YjxBuGz2!gGkk-Ge`Ml+#@_Z+fczyGGA_5KhXNwWc(%9qS zEuI^_uJ`+QDKJ^TzIa6}Qd=@o)MG^YFPoxh5aH#f0QF~K_= zf(Vj^{iBV27GQ@e4A!~5Nt`40p?fG|5I2*IZ1P$3yMI-wAwn5ou7p*UhyO8K+NqYs z_B-*MrAv2NNQ_8MoAb1=77(Ft5ND+oPO%jPGIvwEeU z$4l*9J9Kxuo#g1107I6qL*sC{2ONpvpV(*!ekQK)d%7)jJ564#ef`QZovS~%)FVeG z<>MK0`hkbRco^YMc;_MOpRiO92#5={@Aj`G&JezV*@)Vx{r5w}LgF;x3kZF4%NUY4-=6NuvO1@u9)-r)$0+}v_}vcIEg>O1JXZAGruHo5Y8WO z7XPI48^7%;jU8GgB-Q$v?3l`(|IGII$qOtqphROd6@vzA#JArPM9KZ51ieQRLHGnI zH9j)(G{GzI2WFC|r;;>4%sQq+iN)iKuJOYE(#b7J5IF!%uM6(#MCjvE z1?-%pXXsfMP9!ONL*W7*(kSc-@&8fL5X3(|{Z8z9C?h94?)zw>E&q_Fy*Z2(R}}O< z9JZ_~_eFt5(JaYdpnRMmP6sDrI<46|TM-c9dsD@Q%aOIMAtvKE%Dm4C8cw)R7xXD(~frs@!7&yW$Nm<2nK@e{;+ zWIH%nPV-MCy!>EH+QVnEOxQ+@!4-Rbf@`isY};+&k)KV7Sq3CaD#3}Vtn!oE5TH^I z=dV=kf|;&`V~fB2y+Kd=_dH1G>jy2gLW2S7L+W;|*n&~kka!Dm68QN%nZ@1r1u9v- zB5d+v!HrlwNr7H1AGwak?>G_TpKlG+f=L(y0wXOvM*ni4q#6#>%&)yOew~1Y=cLaY zs!ziF_GT0icO`;hAhUxXw@a;0Bali!?2l~rcXyAaDmf$p$BeD!9ggwz3uTW~ve>4{ zGhW+9lez}3X9S~C&m68CC!U+#1gCCjXiyO5vj>LsUpEYkK1+qlqBh#7OMPD|ddCLu z4Ohh_3q}Z!6slqR=VZ^Qd*Zsc-BiF{_WBnrE((xSTPB1yLo7D;9f<5$%W_zn;GUKn zzw)&qLqk_7V0p(_oJdb;&ZfY;HW7PA1et}uA$3rLpLa00Tvv~V@A#S^W8XxG_(0!i z@}G0@`wvTli;11jToZb>!8lXR?I|-GlWtf;*-MXu@Bh;Q3=Pt7qrsReRGFY`k6oV35d{heUW82r{evqkx^{;8M61^Z+VM&Awa_A86@rq6^WcT zW&4eO^}P&#ZU=x?-FmOQ?&2Sw-YE{(4* z>GYXjVHs4;8OoX$&)nk5*V}<9X`Px%9bsf3LO>BQ7bJoHN9p{7{x7T54#&v>MH!I< z@9IfB^3avbRKDRqHp{s223ynD3kUieqL`*k8M=&~30h7(==76?dKQLRd0wQZYP>qN z%gQ3Xn3cgq(`HG6I)^aGwciKjcE7TxbmB$(f98+?DaS;oZf(QCFJaX&DPM*Fo<@Dmv7H3agi^E^OmTPU?-ji>wH`RYn;qcFpfi zfYIE$t>V05evQ$;=jaj$BOppcbm!wVT>B$|o?*=JW)TMY=XRaLR?YzeIDHZUUd!5F zT^B3NT%J2rys&nf`?abS3E~s)Ft}}IjAvBmCdTr@Ox}t{ck!5nV7rQ$iQmFdFUiloPPHO=r$PBi)9N${}JKH zaq0dEo4{T#_y2zbvKEC7DqGy+qdc}ZmGC?E)+P*ZoJ&ik+VwKUqiM)`67TMGy`m9_ zHIk=Mk7t7_xME zVZ)tS>G~IMW0uoEDTqJ4y7;@FW(O;#0it=m6+@77Z<73MylWd8*^C3!J!lLUIw87T zwd1eP!^nqzi3=q+K*C$P>Xt~8VW;RTvp11~A|X|1ZO4@xRAnoWfIVH^+|0#5opLpK z9EBbO7Zk1Ho7M)9bm_MQOa{9*PW&G(G-KEN@W8DzvAK_n|hZNX5yG31a|dm zH4*)qeC$w+Mo;k=pr7nk2?;9u9~LE!Nm1Kz1AedZ-LuP-0a7LyVGNt)b)UM^4@^4x z;#;s%`6%BqmTN#y+-`m3Pxt@|3L5&75;XUhBw?j$6v;j?fYS~7!e?zYd&8k6Z!6)c zhxPvKS9&-I!U&+GN8=qmjoy|UViTIi*SX~U81k!k3v+lhxN{QX|1qkyA)MS>4*Co5 z?e*=r41=b-ON(|VHOIy+ZpOE422;tVqJIPMEK@IFV7ak)MjDjdTV>cw@U`H24zy|c zxE{@Yb1MM!8xkjm=cb_Qns9Q@dvX=3>!+uG!rUprH5DHZL!DZe>(k&0qBMYbV}`Yt%Mrd~}JFHiB4O zP~ya!dHKBXY--!C)$TAe8lQwZJ}lC)fnX4kG~)@+;h2=`7e%7lfiwOMt&Y!%Ci)8^ z(gpz)1R&0?@~9J03w7F1q>dsTJw237SjY6zTDK$F&lO+J%pp6;EfXR8$suh&Z&2MT!&bQnsSov6!x~X z;DZWt_*#k6*!paHN7EwNB+8%B6g`%iVKstHSR^NJMnlRgB7?U(#U?WR|AVQwdh-|? zf57s&0h^&b8=Gv2+@%@P5p=05bQu8!tNz4}zg)Eg-TM97>2VqZw^T^(>ZcFcSKHwh zh`Bn|U*EB^grm;_nyT?REW5&zeYHj!8fzb+XJC(kRgGd^8bMy>P0Z;$#t+OiRG%Dw z*8F^6Gy7nT@K4z}z0{<@0P^m;oTzYcC5Ps=pz_(NnsWhKLI-k8^51_~C=#(g$JVj8 zz$Ow!uik`dGM@LPB2YIeS%tnN*|%6B(0IA=L_v1J7B5HxN<08jV%jaUMl5>&*z4QQ z@IJ-Jq;d3lVr|$@g4u@H5dZ9v$jf@fW`0btD&WcyQKbyLKDrD!TiLwYikoJ=5CzCC zXm81yNOKOU=h7Vy9)W|G@B;v4MQA0f4#og1R z{c|AQMsg zWINa;HkT9*Nv8mnJVT-oASLl6X@< zKQ)b&GX{x$6NXhq$uEVMBt62L`W3{|1eu~EG$J`p0Oxu2(ZZg3pEuNkaj7g|7=O9l zc)e(kzbm7XJ$g8~iO2fvY@WgeC#{Vd$3UhvzP@T4BVI=!&&{;$&ovl~C|SNREQ_ww zbv!e*vvsjJ>9=t{n%t(94|e^cJY_R@`KXST@tn=@#mM5*xjRx`M!p+C@=3q9P>14N z`|8ga4aZg4%F9oh(u_C1o4jfZ-|d}ueLuieR*lC&ZxiGCenZ5?$ESaqGvJn1sJ!r9 zI{|NixWxm78J$#_Xq-3_3!mRm;!ms3R=wozM-;#peoMOH1&I(xgUO|Zs({qQ8vi;P zLapU=n4ZSKrDgxFum3gPIhCx z>&z?P|6aUn1?_0A5!mz#)dKNjKH}4fr?fS9kL+G+)K6)D>(iO~YO zsJ_ucujRgnJ$R~`)RLpBzmp}v<$z53{@y}`v|@YUf6b1#XJjx$C{PnG?9|{d1&`D{ zuYqPhDnZM%*8SwCFv*r_m11^Ft5<|~blbc@8~Q{&DD}vqTLXA8g)$#V(05)mmEr|L zo@MQGqvoDX_MfF?Qvc7ruD7*gxU&q>@*ICC&*}A!HRc2|%9l94A-PU#E-5K9brW7v zF4xw-5%UEjt>R$>5U0rN@#h=12yIK7(m^7z^xk7ggYC;kTCMsv`@p!TU=GQVC({sC zCto9k&{WEw$sYF1KK1+1^kJ81R}-d9Wfiz=H^Kjw zYV%lKJDhSaI^QG78~zXg55D5@-36aXeOx$vJW^a+vX%3?#G=KbTl4hPtd2Ky;k`zo zsmLbu?Jma)Xtb_bgq-mO?^>yf0XdCXxxjGsgpz{pj2Lqg9kSKn$Is?&@@9-vsq+6b zIeO$c{IZRBZDD*Ch}`qDOX;XOfT=>|efL^jAPX7S1p8E zMwaI0?FyMQ?5^Bd;3qvY^xHH9Ns^_`R;68%pdP)rc3_-;THp> zA>S~I1T!EaKSr}Nkp^vsgbI4V!xNu2c&%_dPB5hR-ThPB)-yAA;`N{T$VZ(_PidL| z2^Qm^OXPs>FOIK^X8}f++Yg2`FX;fu&_)4I^r6SEvWMCr?fIN-pU@>wmmJCJ!?6l; zaRXFmDXf2K2KJ~yKmGwhv}q|?zCYQ5B*IH4Kd({4VFMZ8abHtZ67P({e1F^?vnkx- z?}&HE#eq;>KoAz_^6g-xv?TFvIYS&uDka^2DHUH3|MfNXB+c0Z@x`tqiA8QK{3TP$ z$_%i-t_k+GZA$8^w&Z7q%yWw=PsB~;iRBUAU^DcXtgpQNiqSZ+ducPX>R*qd``4J5Q=7NH$_%xI>`vFaD663G10|Y#59CYV5^Wp0(PI;JL+wL%m10M7^zaY|L#bGDzTQo_ zPA}}~>B2*=5fv_|-ZZ{({Rj`Qv0FPa9i{Y4vrIQKn};c^o!_*nV4S*mt))Z|r-mar z$$lS|!-$7kQHNA+zOa9nYko%-_-!pk)74CH{f}h!19Rj*X zGZD3wM~_Q|B`@rL)s`^3L<=-JZ0~$gC=Y(^hjJk=jcdI{Hv3nONA8f3V&yk%z-l7W&~P#hL`RXzWv%^Aj5qhj zZ_3GyWZD+JC+l~%y!}K@T!T6$1sbnOOTeK|O>DN+=C`&sFm(FOU~O7hI_)^&9tPyV z<<(Jj_}nY*_hsXho=2_?N36kHA~#>Mw`X+pSaMJ>$+|9!>T?fSK-{_>o?u#Hh{z12 z1b@z2_Xo!-hYQDYNx(Z~1a;y+VFg0KdyZkV$vSSLWLLT^0--k?3VD(j=BTd+WhfGW znyA^2hi40cg(SZ-AihyTjLyM-LUZzz%hzX|y=o+xmNp5p z9C9hNz7(43glGVTDUpA2acF!pN3V{vNa>>dPAAV4QHKoUDO54{;zOEOlh`Yddw&|x z*jMY8x~^*!MPmOUqy5=)rfYOx7RZz*OH@>(ONZx_-QaBhCOQ4cA`n0B^S?B1WcHT5 zs|q{Flh@I!%eS2M)|nZ7L&liN4SF}MY5-DtKk!r;H-S(2&riX&tv}~IZz9qZ16>B|%E~N`9T+enk z0g-1}qW|bWaowV1wWuT-$uEP zV=NQG zpN~>`h!mtg`rw~oEp8h53QTVA{w#x=I4w%wQb+*ANd2ix#3Hxt+m#A}7g8OGywGo^ z)A9Ms0U!z1kF%Y(qX9i|p{e-K${_Bt0g{UjA0wpk_J60QMe3OrRFBR~w!d(&e`>x&A#ZVzMdfRAkooxAFi%zEAbpYo33x{R7+==w zK9qdz`V-l%4%)b4FWq^fyl3pJPd#fu>lqyT52`x6AF}J0>>O0B1|IbpsuuuIh*~Fb18!7csZjF^?sgg!MlRcjxK2MF)!z9OgDq0}`5g5>4y(yc zGlF+m-Z@Y7KH_QAlSl8g?ow7m-`nJV@A2KXX8d(D`5W_r`MyCpNFe-MleH5Y27jB3 z{9-yvKpw~Vl!zV2TlS5E&9qaO=O5}jx^+|3{3oa!SiHPDZq>{XF@ETsBh zoapwb#s8Lv`b}@rlOVMLLk=SHK`O9+cBDThi4bI`s?~6k6894@RfaHc17+DQ!5b1J zDF_V#SZQR&NOVLVxC#Hb-9bxZe>ITIJ!GWMzLGI|v=NB)q+0$W(yoPs5;{JhaiOKV zIt=qmI}6}HI(iN@M6c6xpzdn|-e{IQFCof0e{Y`0uE!^NmQ8FF;e1gVk`$e-A%@^( z)~f$Hfblq2`E#%PLj##`HL@{Rf$W4bx;^|2V1)q#vDoqdg|Yw{V;c2H>`xdJxAYXl zPk}Bx^-@G>RL|3Z;IYnx)-T*-kWV`BOO(JLPcorwlfR2#RdSaWirfU4!~{iJA(uJA z892TSqe&fKTBFTgIgHvWGK^l^={8ICMYpp3{wE5PpDDT&3I7>A;9JevgW>Q&vHBd8 zJZ^`3g|IYk*P*>KL1lEf84=LBvy}l?s>1itK$oAiuLquhw7if#iWMc-I)`!|D&5rS=yzbKVrs6!8Jqh+s5`A*YGd8w&(`hoiI>0UK_vf59EKBcyNSA-_nXkXHQmgPbj z_tc_U;1`K;#ZjX400v52X~Gs!>IsbVO)v)Dd<302mnZiv6e`T_NU6v{M(1FpSEATGP8SO98m)rHLE9D%JyLF+eG92s& zMQj3V4ZePo@#_RM&ZP@d!n*SQ)1Ub#WcIMzk^;g))MLnJbW7Q44kcX4H9(b$Vq#($ zru{dgy0p)N++nYL>rA9+4m7I;*-k^-?#Ho`aJzobJax3Qq0P(SdPyBzYpInjlG2eF z(s%wvYt{KlIn$VHcIsQrJ5V1WzNDtx`*jIJdA((nZ{Q`d?04gLtDJ6G2{(PQE6Jfd zsQO#x=-E{)sZlJ}Z!>y+*gs5Kz(%s2bG4M+03g!~nQrNH55TxBIlQm9f631J{tets zT9Tm7*E%(WocWaZSRy5rNYz1D?KkoRw&5=Ip~tQEO>sE61Z$rAZg!GB2|<=*TQM-# zVVa_a9P~;2Ed@xWyQTl6Bb;0b%1tJ`i=OGCZc2OAr@WLDBsOK)f~K6eyyV#8o3fcF zc^}52A%qd@>+sQJIL?eY1-_iSHjnQ070UML9h#1*VqiqDPXvRYQn{2YE`6Z>`4{b> ze8a-V?Fdb=I&7~m8AS^nod8L*IN@23Ev@Cj%(SSf06I#z>ya>-Oo@cRR%GgD!+Ii4 zxFWG;@Q*T;{F704ss;m>Uu)V|-(gdTYP#3)n7E~^xCifysC$U#I`vutOk3^jF>{n$ zS!`P}dN2x;rBDfH<{@^o5J$6zJZyg4SP`wvqX_>(6xF*Jr}k7x7xZGKU(m8V-2-8} zI$~1!?2RkN?(4%g{e1MK5bRFsL%w3*n;Y1~q!1A>U)tecyC>lVxHmCZy+9HF%mznS z1`VNRgm_j3B}b$Ai0sTsL{xHLy{pZ7CicZfR#6@ik z-HP(`bNQt38y$7UA83r{!n<;-qJX})EZ12ff#TeQn&SyOGO29I?(B*sut+6~NOx`+ z1Df^ksc{s;w~m97#7B&F#-VBtl4j(T0p6ThOw7walD1$up{jS;ka?!9F_dKe}c+s_a@r$A=I1ux_ zakz};h+=br%nu2RT2Ow9A#l&jzYwDwvQouIq5xN+Xev3TOH?o}qOgvI3Fd2M(}(4_ zaHv^VypE1%+bI}M{SOwI)XVZ|g9nq>2%E;mbIikBdE%;$+1Ih%2O{4310~gX>R{+F zDG=&M>T5sK&HyPi^QP-JAeHxy2PnrUxe4M#1-Vy}x#%iU-=GLEO89|!YMuI^J{LNppVl!XL0!LLb> z%7XLfS4EZLON#=Cq`W1a#F{FI?KUK;t|RrpU<8mHY}i-K;?pwrchU(fREGzb{^Se@^&6+>yB+&g;{5!;an^NOPw>696PQUoHi2%Jn2;Cw_NqIo(RUeD22)OjPfI$$k2lsxxhnKdh57xD*5$2LLpH#GaZ$$00%hyFYhraiBwfp@jLgDh@n=<6X$yRjfo ztdl_h6=e}YvL+cRG(F1<-U5&sc26@njuayDh9ZKK!NqNSe1LetairYoBT#YB^wmiy zx%f^2>ROQ=3KdD2M0j`VJ@GZW^UHX=wH`QaR;QA&OfAYgr(`C^U+VEG8G-ci^T-pI6JvizmpG($FefjGOm3iQ9x`x zr?|0wpXO=y(T+#O;N0Tj&rvt4#5lUWR01R309>pyI%9V6tvAdsK=;@YfeE}GbtrTX zM&msgwzRXC2H@n>y7&lT%QYXpz`Fx1`}rp9mh^0sTW7&g0*r8MiYPyWOq|p&nK`)Y zF#UiUPnWu%^F{IXOm?B@<3OZvO&GDK>GGOO?r-MsZ5sO96>N**I&myV&k!AwF$_aD zRh^V8pT9OmR`0Qdurkz(;TVNk)Y_77FdqZlnr+(2fuN=RR&WzVTDj|b2u-o77H0Md z#CXN*uG;#ST-{>t%y#H3i(W_W@W2$swgZFR?k1E)b3H9H8jXrMcq=v|kkF9Gxc$rU z2*C(wt#A(G_Xc@bq-6SjK5lwTj;Al+wp$k~3D1nXub)pz`gp{UroX-&R#+~;f`VR$ z9jZoyMnqCbmI2r1RAO~jXSem)(tN7f> z9ZFMsJ!BLH#h@Y=RjP-E`AeJQ5515_Gsm zu7;IsGA>wn%~u+PM!|3SBLs?CGQ)>z$|=4wpNs|nU&0Gxis%}`m1y{!^F70QeOIi1!r%0+SxD)4q=KkoY z@pI(XW7n@??641f!o^A@oD>xA_DO;p`CQ?bl!s{ttbZ&^K3pH+2eRO{e6uska$FV( z*&n^;_^}T1ymoTxt`)5{gAi|~v%vE)XIzBn0VJK+bPF9`m4hnh`{vY7Z@ zj8F!e>2Ty1#w@k&r!AIC8`n(?{!xU*!Hq@2I?wGoK1c%{Of)6nRn@GGTwh?K6hR_M z)C!OIS6kzwS~@iH+TWZ$4$+_ix4&BU9-ge}c6f9WTXh|s2#fr;%fFg#!Phm0i~dGF zQ^W7*g2f&LHZgU7oImELdpWZKjlcQdY~4|!6Yb_wd#IYfkD^n&SEAw3ti6**1XY%~ zbNB)Rc9~O-dkxs1(S}b#8(2nH$lN!xP@z-xcZ_DAp&{&}-4@jzW*Fk_4 zBlWAxz*PTxW^2DBUJ2P$>f!L`+n4?)m)%Xk$BB=lyHramy!@@y7(J3}9)zjwGkKj?Q?baLcU6&;A_IL*7^`SWtayxIOcvm|R#=8GW%X4%75A%zyITSFT zVmy>K{1dJlx65U6`U59qywxb=Nze=twVRJvEOMBw3O?xz2z+&OBBj8@Xc+qrc?Jqw z)x`YMS3j^l5b6H+MYE!06cn@L>XpaAJ9ee|g$mBx5Aydmu>m}fg>maBo^V3xwlYF$gf)md1 z#wG@HZc?yM(Z;V(=r^xVhJN!&5bz33J-645yi`XvQ2MOfGq{RZ*-?PtF9Ry3{hF!A zFzin{!(o6HIfcQ0KHr9+`xlIC_toD~K0jjBhQljJl^Ff6^POWgK3cn*iZeUYBf`G< z&`n7F`)Y zc|#}E?*^p2^r2pdiVbkrT@heC5^f(0PJS*F-*Y_>=%r$~*EyI3ZU_y4HYH|m4KMHr z^vpIehb}xCOcGpQ98mHxyV1N{Q5j5#JQ__c{ZZ5c2rJ?GW-E9ey;2UF#^*P)C+J1v zm)^$GD19ufuzGj5zcR9zkH3#zqW^iTW+mJugf>KX7BklSNPcj=JiLH^eqmS0lbs9< zta?ZIn>&eZKzjdk3i^$T&RYyOKxiaPzAU`9TM~PaFvct!i2@S16;Yz|bOzhD#E)Tj z)U7>7?cs)`=AbZ4{jIkCtx9_92exdxJe~Y_6}1DGwE&xU#lEt%raE~%u@7}DLMA** zg~T-;ytGi_Nra43azYTPec~?cCX1a~C%_qbF5K&7c0NL&YxhxkqNYgAyZ6fhSaJ(K zzMm_(#^+qO0N+_5xlYRzFxNs!Q<{JG8&C_JS1v)uuEs67>c8OO*R6^Avwq;AuNX>i z96AMbrk{o{7 z{+vjv!0Z~=q;1}CBsA&~(Jf0|-YGo%lK>;|mkEbJLsaWYC^p(h2g&mN=mEEA-)E*E z0xVv9Bg09`#ON{dn_NCuH<6w*@yf`q?>NirF7^v_7nvex+%tkyD9C%^a&!&Mv9 z;6YTlhQgc5?q-`ca{p`kz$WEyKWfi+O=h-F6wW3O?sWwJJZe%F)*i3E_pOET_4wx0 zIM;|j6yvo;wX{g_9Zei4y2oEP>p1EFGpRnoW;8ybPcBu?W}!ky!6RZKZ*_{P<-vL5r}^VM+9V;~N& zVW8xEO`Q+prudq3$irg7ckXXVUp-_^GUOncM!b5w8RljdXBA_!G4e6!$JbHbKHySd z6YIdrmgY}?;rc-u^bMi&Cu;W{G%00u4c{ru6VpFs16>OTV+U*-0+_+{Q{A&o;q4KY zEKzScT-(Romjz;!OmpWrrmCna|dF?;k zzZn+$CHc!fl=t;UJ%i!Wp+FH|sr;aqXXWcT61?Ka$-5-Ki$N_?UiJ{V`54xZm*Y`8 z(ghw0q)Zt)hKZinjOI?p6N-GX?|F!T+lsZCvb_Eu}LwRpw9W3Tgpp)_`bse2;Y<@nB|Y-^iI6;Gy- zB5;DV`wJ1KQl((}O{!Jd%KNdlM)gvD8%}U!>Ud$1uly_Awc6zT^u;xAO$hV<7K7c< zVl98)z|O*U!@f4msF@VVDwvFZf2E*0ix8dNpts2u%;i1|sydhb@MAUkkK zF1<1P^vCucGvaY?yWclS-x}N1A(B`{Yh7pyJ_E%3#2t;nOq&UVP@ zQPw=rx>zt)(Hzf--gPbp^e?-YnukEfs5EEhdc!1-T1EgB*aU9U95DT?_=+gWcdla)wl{dm0! zj_Qj)i@|p--y>N!NN87?d}@e=eeW!ufrD6afiq2-dXEl%3N4%FWHHjG(Qx%+6r!ET zvAUo2AUU`wVK4T0BPL~Xu#Css`?`MvFg3Rcb@+yjUa{D%Ie=C1-0bEl3SMs6cq>Kdr(rHq^f$@ozYcaN@iK@dmTBTeGjSNy|8R37FXogPy0GDW~}h`k$kp>2TrW@FUIZ+p=E+81_OAu zsd-jmB@(H3Z>sr)Y;-@Q04AzGwKUu!taj+WW3_N*Wm3!BZF)e%zjdX)M&Cv`DLiO6 zRtDTV60#A}v)a!87!A$GlOl5Vh>qr69wn-}a$VJm2)%H%K^?NRk84XwK>kihaKPb& z5wH?vlSKDShm_%v39>i+rZdVfAW{Bj0)~#!qZhDvVIzR7W>WQyyAht(IYf|gMF4UA z(hidfJs0(P5wGAX2_0$LxQzT?d0Cqe6V#`8v^1N`4Wq+c>uG3HiIvl^*;5G?(X(tC z8o>VtKtaF0>2qpvzL-jH7y=v=Bed})mnl=+ZT9-IJhvK^17yl6mGT{6!Eu>`;Q~G| zySNNs0@JuI(9LG1SR++nrvnfL`ac_QUb0d)!o+JlzdJCv8cAJ@1;WB|565I-ibOE6 ze&yD8bC?4_f4Ic)f{^=%2C&8uGGNt!Z(zSFfN`{aF3r_?HLd7~Io1kI5-3DnFXlxp zXgi>`_^PIOFb<4oRF}mltFD#;1C8Lz`b|407lHobER~r0OV@eSfb}U^BL)QfG-*X{ zVIDFWt34c>w88Ts=+b2ev;gjz=nv?%CVt7sfwP1=5HudN0s9y@G)yuSH&P*jIH1xo zwJ;1#tB?Y6?;HoP=KI3>WJl+1-~)yJ%LI+hQZNAm*~}K_RsVGI`S!B ziD&=6CcC02H3&0_An0FO2h<$AM;y16UWSIb!l{8*SCjLBrkf4Kb8ZO^0Hg9Zl`ym8 z2$Z^yqB(nWsVSN+BClslg9KP8JRu>=ztaH-(d0H9KPth&zU*e`(o|}WgJkXP+5b@5 zmz@dxw1CjWmlA7gBKCFXxt-rQKyb*l&h0E<_sG{hnzCyl4xcU+S5+M+psUQiJcm)& zm=<tt$nEXp)5;0VufK%sE+=BUnoyKf08-vf|0M z0<~37d7b8#?p!)L$I5Ti5flql;TyT$p`@=YxOj{T~ z;Dw5;Mn7wU$F@HU)}NhepHVS`ELmTi>b|rvdO(IY@JvmFb6BzA0$8dP1#q7s`&BYP zbw>gEqffw_qA4!AQ_V%(Lz52u^QMHUB#6=hBn>cZaN#IrmLTaM${87GEWYpNx=%Qu z`Pik^**nL-c}IY$x`3dy=bY|gpZ(wqUV;aKf^aW^b`|(?{UVv(^Y;({OB}nE^aFnA zh{DHMEWZ6qd@GrH>r+f2xo1i66a=PmWGdjAQ|jIYK@xMpb^d&b?<<1Y+&Ruok=4SE z0nA+TcXn-e%Qhc-fW2mM?6t8_NSDoiAT8pqNLQVUgS9k3U%$Aq zy2FYz=)4EF&P&PN0V}IGgT>nKCj6{~9n!klt%{2Lm2FcX&LlrUs?uzoWO3>f9Fponc+Vv#b-ppB9kcUP=n_KXVANaSqvm#PQg$k z@FOR+oe#arpKQLE%a=<7NF1PmiNHC#1W!{29oa5KKNc7E<0pa`9Gr^-F&m;UD>Ut> zEi>Z%hvko=8Nf7Z`|&=6;ZbHdk=m-dqBD`c?XV0wGcU~*>su65y|aQ5wG~P&ro^>F zGw6K(38L*Y+B=0+Ge0qkJ7{MGBXZ^=mZ}6#%b-X5(lY2Npl?+)m;^)%ew>;^tj)n} zC-e@nxHEG4?1Sz5fdW@i7MJbCpr?FbS$6kXJB9;F8DU0bKktoy1Kd+eh%Wr0rSN3& z{j{WC4#tH+ho)KdqhG>YBKS%WgKjPkXaYrF)?~c@4AFL7lbpN~VDW&aKK3~T9pe== zvj2aeiO-)87T1g7^2ru9w-AW8W10pUkOLr~xqjCDl-UU>@}E zHx%XEwC~tAa-1)veq&9&t3e>3&E7Xk=+@n1`cr9&`X` zN>1E@eeajV+C(dPr=VrfqkZ|n8FZ$qJx()sO@voi?V-#nZNCK^aj+e}EW}{-TC?mHPb+`MqA{llp@Qj$`Cp65oxX&0e?RY`Y63F8l6%Qf*RT=jabbzaA~Y)09Cc zj)CF|C4sM_ z4Xu5*5f$oS87k<%nnA~SGz@01vMz15xDUzgj{|KbQP2uAT+wxHjE0l|E+;T`NLO0Q zV0)EB?`&8}6xC`Mf|hE&k6<)0H;YOy(Vc-oXCH3Py#pci1kZ%dPyLm*S}kF zzcpd7``apso))4h;7cH6)G>Gn^u!s|x&}hQCih!O|62w<+LsTMK_@ML)9W`f2<{W& zeHlz!>@tR=2YkoH#jdD6aj=M9kY&#$0rHs1tHB(*qB+iW#VAW9JL%oSd38zu-6VK; zdL?*r7<63J-uou)^BgqINH2#xrA|V3<;Lx2Z%Hj9GzuZcn%}<<83vrT4Vw1Js!v0O zH0YOkRRqtQzBYvdLoy{2HS*61JnKtcX9B+8Q^}yeBpAT#A|4RT#CWpPSK@*ZIQmWc z!2S9kYufAuLSdid;g$o}0Gu6MKnQ$tm!AFmp{`H%|6lNNbgKa3&r3na8^>J;fc4(F zhs2QrBiuVun*78#)eJg)`r#V(lBp_=o`bX9uQEb?7?%ac3@xQc{C||&CxBzn*{63> zSsajQNNPpx?~CgK)Vg$;t9!5qJiPamWG-+Fy6c&d{fKvx)**Y?Z@G6GRz0>qZ_^YVVoKeCDw8DwY0IET`|^P@ z=%BliJ-^027eGhjX}3h{W~f66hDV9KB%5%YIkVLz5au>c%Ct=vT8g z$u>MY1%uwL81Cl+;I`(&ll z$n$R7RP%iZ;!hgS`e^@ug~oy;g_)9jqh-*eefdBcbSI$I?3L#+CvLCUpI7-fkQ!36 z?~RBT!&s3fb1R~fjqf45%t{5nVt?KunKeb*_oXIY0?p-;$=KpQ&OEoOWbw!*A#kWu z*7=ahpub!=r;q!W0F&9H_|7sd4lszZelZQ%+{n9M_Xx~K>*hoH-Vw)ntdjMrHaHOy zslf4=rk#WlG3Zx|x!gM!M<89}t+_bZmjU6dmzh$}_T$e3d*ic^;GqSVM9RMJrUta& zT-m>FB^1IPW^JU+a{e@04Q)Vx%Jz%RWYE9YU`|fJ95i9jiRYo1X55H?WPX1-gLI*B zK2&_ah(RY_xV#*;Ubv(c;JK5Qx*`UhIFc?e0XMT7bN317Yo}n)iQ}sR$Fd0)+k>__ z=6VVtSf0DYx|}V>eqVz%UWz-mltK6KoVHfDp=7o{vs>@>d68J->;iQygC6b62g;!1 zj6(q}`MtWwclm^cwRFFcaX);EVAycuU+VmFSXkwgrZSPgqijFF&hG|hcF_h>?n#i2 zjWYNLeH1u0)g8DHXc_cw#hAd4?OJ(Ql=E_z^r4%ugcQt`{cM(^{adNx1T@K=T!Z8E zy7}lJa=qw1|6CWkWB9gquk1_=I{I#e^^14u76n`CF78&fN&doq z?}?gq+33?twLTU}g2(6g5YGIQAPooIwlZvfZXF+2d8 zrrrp(#oC&z-wbN5*)5EOoQ&`9HAAdz@pYDWWO zi@E?ISQgBXeby)D^`z9?0N`I7yCkvMQuE>f)#+kFNJ@)9E$%LSekk6(!2WG__y%Gh z)r{fe-ukSPbJ(vcvVFSFOo_2_EGLP+JPtw7J~L7-J8(mQc^5wG&|V503o%Cf^H}sJ z)epRb)iVE9GU&GL0UXmlnzaEiGf414l0nyGUcO?VAKNz5aLL%G2SFOzw$z?AHJLUr z|F~#P#L@;PG%g{GYQ^$F4L49?3zF4iRkU~s*Ca;d;E!+jR=RR&)8;j@D2cT83E zvN*_zMH5NSdQ~xDnDMh!)!9byf1LPv$1yIZ+Hh{Ee{qr7P~dB%NR%g!tIrTbJeek z3gWX}QnbXcuxxSMCi-%P`z#f^06xfl5B!l_Q*S)KUo)P+@cOb&jAvh-!B5qk!GGi7 zm?`>luKP@5y~VsC-KcGMv!f%CeR2Z({}1;6ubC=w%2MusxQDL8-VeETc{K8ey&P+~ zFTI1gtaD9~favZJ6K5(PwtG@pUF^Gl+kWS<&|r|GHT7O2(rtyFIt?8C@S>M6$8mAa zd;p-;?~6b_UdY#LOOJzbFrrGT*Qd>zsCsNpFpwb}+6)4O6^`XJFa>xAt@U;H4^Z>P?oWuktCg5a%^xpw=kF6C#RS;=b7U^4eS zV=$JdaA00jiUYcM-cf_&J#9fSY6FK7IuOrM8XOKt?+%aPTBD^cSWDuX))rUZ(4)#rrQzB(?%;rRAG? zRpz}fdu=D`1eYK<2Hix`EY<-vlbgMcJcY?kr4r+XdPQPlH%-ugE(RoU(O^xZOg$$x zq5{WrrKOWC-fs~H1eGfgNuJZbTe+A#Df+X)KKEMOhidZ5N`Gl_0DhcmOReY+Vw#XT zvlz22Je_!d(n8_@8k@xW%+Lh+z+7%3776S%jj+Rg{#;@_D#kh`xY*CG?JBhAxD@(T z5XycRF=xsu$<=h!$E&rn#EId z>5|uvdx&Ehc$B)koyigwC*~nqKgI#Q1RhP`P^E6Q-}_NwzdfYMjKi!|L5nNaN0X!@ zl;ur~=S!OLn1p*F=&bS#ek`G_URF|Nn0)1gzy+^}Q{mn^QNx$|0E;!-UkUypw=Y|O zg^JXv&;p%+iD99Aj?2-$GoLfuWQH`@IM5m#m@E_UgM)TMdufm<8H(&R4N?mNpeeA= zg{1`=$W+27zXxU-n#>%+#LLV@A#XO7=@A(z-sPn@J=LDt(92?)qB;qeIN*Y@CNQ_x zX$~NO1a8PTAA~a}k2#{JO~8C*GAhq*sDh^74dA##J09-YA#Jby+Z!o24j=F?26tT@ z8Bmy@8o~7#s?|V7^phDl zhTMki-(JfpVq*d>MW!k&^-(Pjx{D4eK}<${g>I$o-6O>8gZAetnaIdNvGlsB(iNTp z#tW_UyY2&-iWkIY+bgFJ^z)QH=#3^;qxDMx zOf4mWgAQ<@dzt2)7#a)|($yFqZE^RdNXenC<3W4~HqqyWAfRN}k9qAOOb3 zXNp01b1Qk0==PG50qP_mg5jKIe(+_KFLDoz#u+qbkZRw=o za-Zl+mP?lp;JZpKG!n*P-;WIFLw7AVf0jm{66#xAoV!XU27XhHuo)42)xtI)qww_{ z!Tu4lm7P$(p)+4gLQzj5XXLAU$TTj2k=3j+=ioDg2M*}=I(8(T))$r;+qPf zU*S^jl?O@~V_!1^t3*jwfE@uKSk}eq?Cd}*kWgLAsHFzeRI9wVx%BO(FT8AE?`Sma7@u(;uC#PMXQ zVg=Sc;@E(A!V(;?isUN&B+zf%@qgKV=PhIa7&vH53)=mjsiLv7f=7IS8PDRFKT7RE z3tLU~Pr|&`1dpjwBHcLxvpQU>Zfc0*C&1A}O72%hs2&<6K|y~?%+TWkblq82LIWI- zL0MK5l+(fv1-zW^&oT4+0ObLg*(T>0$_i7t++_#bI-r(zAqx1F;t2HXPjN4f3g6E= z(8_li;>#Mef3z-ss}5kLv3MRVsmSVp^-SI=DGuqt`J?9~HV6T%o=q*CbWK@W;&?3f!Dpl~pA8S-C+*toX`e4*eM&SK(75%h zv{y*+xPKE(6^LU~?X1h3(gerO1PHuCnzv0=YQ=p@OpRVTu`TCVn>A@?2Bxz7Yeyq< z1J=h4z?6G5e^<+7{8=szXc1vG1s%zCx%0tG)w>`2@{74RAdLDrO0=suE9}d`xfz^x zR)CcWnq8(){eG!p2eD}0e%ozbffX2gjP&SB_SrqxHN^p9sn8yHfUm@r7BL3A2a(oy zPsCQ0^aU`2d;QaPEPM5!u1JYMAj0_(J1gv6(C?&tg$+q4dYpm9~(KlUl@TkZpsT4 znX2Z;R=;y3e#mLh>WT+9nTv7sw>2WcL8(Fpu`ptNlDYOnFlL2{E*E>YI7vuTFrvOm zVG!~qVmw(IeVNYLY;kRGVIsn4L!9axo$X z{TgwQ_o!<_3(X;=etHg&qKQnw!csFFw8794H0cL3SeykdWD`8h-h}Kx(?)eU8oHLNra z#le^`=;w&`$7|a%e(M>wJ2JQL0MeAZ?Ogt2NqfNdVDODdZ&-S+cR~hTGPJd+5g8|O z`luC5W@K z<;1b5)ISyGNaGdGC=FJUU_?=^5_f?T2Hl9FX9(15nij4ExIVK)UzRq#00Iog38U)s zR6r9Ax}*UJDr?f0abVEg7-EdRIpgXOU{ds3;M79<%C$aUR_TqW}LWiGP$$KDh1eojW z%mlX0(LRoUsrmkCQ%YJId`U9j+O66#^-@7)Jf(XP=5=i#v z+z`&XHO8eIV7{`V)+Z`Amls8UUTebejEF&(8kK!w-|baG=R7$VBuAEYjSB}jY53M9C0{bLM=W^4ol-4xi(Y;eqA{jD{=RfeQx@zJt#^9P2c$1CjpD@bH|g zS^TMB&_frf_x_n!Tz9e4yJw^K!aOxK550;pm98$EpfSstPZ0iqCh(LT96pSQLBCWS=rY+*eD$VNx zIPUW^HEXXkNYwgd|-j3`$PoCGQ$EE{C$0hX<>fVqap_g zC7X|?E6l@K?>a3yGaalHc%E|v8~Z}TEPy$Zeep}T=cE`M5rck_IE1R;7!c^l+`fi+ zV6l>AlG&EPLOicaJWi8OCjRnRdj`4P8QCkBV||=Is$Ii>6~hDKBeiDk(y-_4U$dW! z?f1Ts8V}qtj0m~|v*QFw79UerH8mortHgDzNfsBn?>sNsPdfK3oExca!dxlN@uXy6 z@Ovu55p%h(5^Y{|3KX1YZ43;GVhKF=#lDO4SxBn~OuX{EX5g7#=kn5&LGM<=m|W)~ z_lI#|&;$EEDuji=hzh*Kab@-8q~nh~3!<8T2#6o>f`MK}RHCz_Gvw`@<~e^t63W&gjbkzLLyc zBVy2x6Jt7B(+)IT(rLDb`{+JoKw+JsL&WbsKepFe)mBi z56+jit%D{EI)L;_GRE(c0hwvG7zMTgtWr&ABrKdU_aeCZ1=i<6WF6pIt4dl!&=EKu zOMLhDn~cZezKNEnA_m>j%9KXFDTB_r{i49J&S~#p1xX3GK8y>4jy?+KB&Zl%|@*i#NfqmaSemiJvH0?xR8Zqbq2pzHUm@Ps7 z+W@A_hBR_zDw~cGRv)(6$o<>Zj0ZGW(&gB9!5B9j&;7K(j5UKkQN_u;CGdb2-;cG| zrh6L~2AvG{fRzT!8_qb+rzUF@OTfPvTNh1D3#RIwlUUoibvU3v3NiX(o@*6E0Ia7N z!xrmam+re796KR{eu|jOLvq?v0FUx?5TKx(Q}$&n7<34qVhqC??*zblEfs))J-h2b zBS=QJ(Xn7maOkN4dKL^)ia|i@wCHek2X zUVp03%6Ov9I{tmvI!&=x1#VX<71DQq%V$~!gIdYd#(gv9SC2B$$UAPobG&^XFoB>z zf$N4;U+5S3R;2B6O+YZslCMQJn>ujRh~P}GAGg+w;p5)=tP=14GS~RisQ^c~Y}oI7 zf(-2p@qUzT{yc){v>KU->S8}PafzvN$A>Hw9?|`E4GwDKgBL2!cvrz(ldxPB>x;JP zBuv*ODB;)yRRzyKhWd3||A zv^~>(mU7|47(E=P2^@3WXE|{Pw%vVlo%!=oEe=|c-V4o(?a${lI9LMy*2vs$o=~`% z;5#^jM!3*|lcs6*=WP%!jh2-GIKj(ZTeKlI&;5*?veF0E8_Q)i?fx#cHtfd_QaErx z4K?-> z-ke^NdM`9#lDQAySeT=oAE+0xB+o!K)sQSL!SiMrf-8I80p*ZMxD9#Xt!>$EI*_zYozffn%=Ls^E<; z=586SjRC$a)er8qq}z?gN(aWhmk{DeQ>MlC7jdl4twRANK}eYap)5w;kdRjoL->8FXlMAYJC9 zHNvHtFx4mBTqY__@lfE9cYtauT9U|}6eBL0HL~A1F|j@~G{PjZYnVVPFydID^*41u zrugLuzLzyPz>LJ!rcSUFcy>vw(bqLNs09vc&FtT=QTF4ru{rM7WXtJ`LM!6^3pD0= znU_}J=;ve^p->lOF0hxgiEL-fS^QhJe^hIh#^nM_UhMqTU1B`L(O~v|gNmX!QykBo zO$sTQZD|&NzwWz?X$cCW9M9gGcY{5;9j_x3D#_+)MSBHaw z3)vkp#^BfHpg(fp`_pQ<>xM-ma?h`2BG}a9! zaCkH}2JM{2EPCvVO2LFc&e+<5@4`Kx>5Bu>$%U~#rP`)=3-EOs8jIll#2PQtqzZ-7 z#?VhZvOeFSCOoI@nZZ3-jyg9Yz)NEd2 z0{O1Faciw4I3P4r27T-`euN}&vjXe0IEOKaSpqbdpbuQ%YhniwPhAB}2J=2{0-01e zFSXfa04Z}c=jf(792BBbe)VtF(FT|YO=SvIO64IR6zdcb}_X2=D4CZ14g^JG4v24Vw zo+iW6*{xh8!9WJx!?c&E325L=mG$SN+P*Lkc_@##Iuk~>N`v>E(0ZXH@r!DeO z2iicT5a9B~=4!e&G|wZgBuqhzz4=iWlj>G^lmC-#f3C0P)M|K{_VHbBjlsD6an3lp z6=Qv~IDkc|)f_&Y9S|XCcws_>Mgb|sv{nwR56ofxD&xsz_IY74^8x{Y$b-?wenF{h zn8k5P<_NnO4+L!xD_kh>JxAZbY-kx$e2>0?yW6oGZ7SbvT(IYB+8U96AHtos{|=;P z#{Pb5=^22Q4LQUujaX?YWRo_wAO=%O^C7^B zHJ)E$>15i>FB{KP4o#x=PNW;hLt@WnTO}aqi1ExW6aqi#YkWlYNATH)wi9&0J_l+Q5TK*zf0MmN%ig3nCyR3xiADtf+260q?GqG1 z0>`4<0${1?M)a?8aPS`dsp!ikIXEOf%qQ=SUk0rKPX@Qfx(Wv{l zGXNMt4Ft837ef}EP_{m)9_=5mgK5{f7I|67K z9$e;52(&*RE>Rv(GxHd6yit-BAO;LZ{allZxJ{v36_@+XepP{3eK{jQY;xQAiTbYZ z2tX#|3de*tajOJSL321QjrZoXWop3X?91IH76tmF-%cDW>io`AK+ESM;>ylo6awzK z-^dBT9Vei|z;N$pXZY~_(ZR%(2=y2%*BCmkRE+$W3^|qTvHq%8x-2}9^AD=n-A+ZG}rd$0T@$>JJl!v7Hm6?-?7gZ z`!$92Qb0G+tu$YoD$)l(Rj=*OJ~^4xJRHBk*qq%E6OxnAW2~TGl^UPvOs=8w^;#HV zp`zJ7p1RaWK0xaMb9(8a8x`QNGV8-?Q&3D{oWY2^@LIDRe8a(LnQaxlt}b~$4qX$i zE})6V7jUQg3pL7EZPD(0!QNlYGYQYXdv-J zlPpZ7z|@h(n~&M0xXfq@75#%)pJa`eNIw>dwNcmI7%K<_>z!DNYbqIZ=EJ?od-sB- znQTgdzTwNgzN|0NK#nU&LaWsrfDnlNu`$Olnf{?ivF-d)%LG%qJy}u#_2&h~fkB7) zxRjY4h1H5QWxDtNWVR&@fXNYKs;x3R&JbYG@6xpES6auS;QyT+`l4u)ozv^IZRxsk zoqgWc7Fmmd5qY(9V*&#B22!sMm0Q>0m@ep&It{LaF=No*@NtxAoSOnHG-5v1l+w8| zV$dHE`=tK<>R0Oeu`+4GML|r)>!pjc9U1gm6Gtc^eMtoID1d<!#{ZpED@L7cA z%D(?wx%&7hZ!XE}tp)gbY5m1mLVh5Z zEi}L-?;Rn7K1=jR<%49~oh9DCsi_u0g4T5=z?^IvwJ#wEO;a4ufaSK4hdC#GSU@W} zPjj(Rdw#uSm`p}6GP5eI6Ybw>5^NL$ocB?zcS?Xjh6zm&H7@R4AG~p3&=Gqg+V|_m zK@H;5UYpsaX$*T++ORpI56hZlqmhNvOrpRG0Ba1lL(Lg!8c+{GJNI4+2vPT>zRzlu z?}|3lbNqLi@=v9GO?|IlRsFmh3_+>O8{D3}d;PHze_07k899*uToXVT%Bu}ie-n2X z2*rZY`DO!L1NqoX=%W!8pG(|s#*9H9D4bNce_VYDQx!}6?5G%ZBT|%>X5bqm2K_|Q zk8WLqv&BnMwC3W_CI!RL#77p=0}hrp(8YfD2GO@<>D?G?M+W_mHSHjj7^e8~`fz{U z<%XbAT!eL63MXmy6-7xVDs9Fh(U)Y!Pylnu9|>Rjl!k!<-|~=#1g<^MbkvQTeMDLB zz3ckrgAs)uau^n-Pns0#tBQMI5w5xN66z}|se0}23|wNXw5ci)p$;u7<~_AvKuAGE zL-}=iso!Do911_rlq;6~-m`dTm z+!CLWh4LUob8%i{`NAbbLR>e50-8ZHwD&rg5<%m>UDt-=y)e+9iBe?&{NV+z$4l@4 z&<`J1iS^R3+PXI{>Pn~%#*9IiKJ`%rAo-7{MBle$PYUg;9RGaDpO(}RAfB;c(CvG_ zA#hw&*YUpJz-zeCJ|{aShl?;9(op~h3KiUIszNHq+V6Y~gMoVoh=?Q3P8za5U)B&? z_~eQ{EhP(LALiXC=V!j^vl5sgZO_R%63L+r`OWdVtKU<3fZJ%rGa}*9T7#ycnf@Trl zV?mzJ)z9wMJ`M!7W%dUd*9tweQPHrlBf^W-!iS4VVN| zRRG=>`)Gps-0k0v;CJRoCNOZ`HsgEtITadK$0RrnGR~1C{uDMsRUDrIZGbDCM-R^A zo>jYNj1hxAU^VI26a<1Bp%E4ye{OtXkZB~(QS@P`LS9aFJReXrMD(dw^X^bpz2#8u zK!|r11!TtH{2UsLI04aJYPj^Z!D;~pz1B~eF*LDVPIfesC5&kFMX_6M~DhWQenPHH4KenSN8{WnUqMZ7NBIgbfeR>Avy; z0u;`^W?rGG7Wi)0v?G&#d7wY9${=Tr)dF!C(si^nEv^v-2upJ2TO2)JG9q0hF73ybBsDuH*VBgPax<=8F zH38GViIkc4a6qfD*e4p$h}0bf`b-aG<|y%%9|s1#TM0P#iheBfO`TF>8Di=KbNimW zERg~$)fX~@uL?X@){K3qgs}filAsu7LLtsaee<@I9wXyf?h{P=|H+V080q7{KFp0g z519E^?eUaF)qav_JrB8ghOMWsF~M3ndC*@-|q5L zf7;*AP^`}apGk(W?O*m_&Xj9>xf5vY&(&J3)wnR|pos#6@7oG4A4XKv7we4p5cxv4R;&`(B zts^*&7k&9*E{-u{&@U6?iTX;zDnoicDc9B;%d1cQ)Z^pOKPe>_GsIYdg{Dd`QzKvS`bZcRJNKBZ4m={rmmaOv-j-(6cIK zl4x!eeK`kn*slr;oF(2jq#@Hj7T=dseF4+!e}A$fOux<2)?f4sxOA(_XJtu0Y`dF# z+cc)Nmrn!-nDjjq>(eOMhYZg8s%5Fx(k-&wsSx~ z_8a88!6e(~q@42zfl1(axl5h^KYL0)Xxr{dF`gt(62Wn}=u37Yh%sZ(2jb>5?z2!t z*>;y2FEwJ~4EHszV-UtgJ5!Q7d|ViG&w^md0bTa@pPCwtd;rIVUGH)P69+9b zgxZv5Mc}9ntQ{8y9hNV-Kf%~Rdkwl!=hMrokXO{q$8DOv7-4lGO?itnV92#31PJyM z?;f(!NWggQ{C}GJMYZn?{p4vKJ)8R@nBuh-0t8O}s;7+hAJ>t$VgDnh0w z`k`{0!M!f;qJC8y;7I$-(^@~xa6n|Xl^(91Vhktc;utdqU0MWGbOb<+`o(pOI=-Xq z%Rs!3i|v3bmo{hpxG?D5iVqqPyt9M*L3r%|zMmqx&RmJZh6zKE5wx~E92ePVhN=9f zS0ok){&2^q0-~tR2oky!1KO>u0-x$vm7n$%?_I~g?^@@xiE+B`+IBArJV$^a;L&C( zfbcZU17-A*X!FR`<&cMXc1iGb*OFX@|);%KE!$XhN(w<#?%?<*bY}*rY*_z6%zbP@E^|&zQB?LSe2Q5G=#e5>o*yrFDqK#c} z{_mkDO7ia*pFk4GsYJTu>N_?R~tPRUr|uc7%OyF(RjJpidhh^h#W;#<&Za z|Hn-vUd8KEF#ZABMXZCVVh)0S*xo+*glz9sfx~=AmyV;{XDMRsSAheQC~(YhpXC&e zFd{W4E)p`wDh309Duza6k?`>KH39W3X&+qUej->6XB>0|ZjLyM;@xjUFa?7MCcLf> z5aK~gZM$>qv$STP3<%mdn{aU=vwsBX!D}^p7O@!vCGRm0Q0Q>a9x1;6e7~v`xuXbuWQz^&101~k_$ zJ#1fF!(pOI1TZ7g4>e17D4U|RF^d6B<}r#QoISQR8W+_)zu6q+n9;_ z9P^z@HbCXqE~GyP3ml6bU8++CZr)a58T9RKu`dqdXS<~Cb&M6vH7a)+5l>-%zt6V+ z5$?K31Z)A;(rV6tZ=1k@G1~wlE5*y zzpb*Usv0%<*$IIM^bRqccV|^>rGz>&GP%hE-~$PREQE1)D%D`O(!%{N7pr0g$Y<>d?wCRew*jU2*1oe5t-NTYu*q4Qxc&erWnMsn~_hL zE(Sx)sQufkS{wj*Zah5Ga`5mh%S&V(h>q43h^4iMa&Uv-;1bXTcaf3%bYx6Rpox-g zAT-68B(Loisr8}O?(rHN3+uEQu=d&ST|(tUkXg#9FbrU(lUX5L8q;#O5(tN47udee z>U3VsoNU%!J`O;aI8Q?wG@j?HHD?L)BDL723Yb4VWF6}!1Y>{C=LP|Se*ORKy?K;g z#dR;*>#h88|9mTJy{tQBB@XKk-v9t007*naRJqB$$+~&=dbx??Bz9taeVxRy9bY>E z8;lKRvJC`muno4sAM*@CAP@!##5{@_G1Ee_7$uMxBoK&}#2|r$KtgEzs_)ysKD%1g z`>U!`Q+J>4KEJijlDhk={Z-Ye;a9u%;E)v+IfU1?r!8`};m{b85ti3`>o}(0uMe@$ z=NmVxIh!&}NKN!tj(>-kVDL`x!nN>|9*uNAXN-BtIVaR;8qJM4o~l z03S$Scikj+YkcjvJ@3}EXMVp&iOFk<^$=*t*j(pB1yfm7GLZca()vkM*{~pE{iBHXT(Oi0nDphlCcnE+qb|uWPIC@v7Me9 zpvm&dp)v<}-p#8aSDifWt+#@za$@YcMUa59L5Txfv#Z7O#rmj^MQR%f=xw+YT0y*e$k1S?crT3Qto zC!J-zXOv%ry(LBln+9zW^?)`J5w#8vnbYhD>l$xcUAam~{y{c{jxpA(VOKqU(Gz-6 zKR%@a&%t@FvUo2c@#t~m?~(CRG<{`Q8_gFlR@{n9kl-%C-QBH)7I$}d*8suYDbfPP zifeHXQrsz0+$m7t=KbG$Kjq0LyE8j8*_@x8GqG`)&l&BdJYF)=cka;WQz6v-)Jic7 znOHuD86yFC5pA0F`muzwdTho^VyC@Y9k*5;u`>gazLc@RV(!Ox#Qh&L>8?-uhrjboF4xRqG-n|Rl_Z9{Nr zBKTs&T6_f2q6NReueUFKvUE&PD(;`wBW}kQi;JKlzct4kgn|mj|Dk-WSX_H=TWfv- zAIb#va8pM>Pl{~hie$5^-+#xYjnZoh8yQ!kH1DRBRS)sH?3nri z47VJK2I%P>4e7Y!tyZxt9AYsi=|+ReFO#IyrJK6l+rK%!kb2;H=6LP+3+W>F=BWVo z=$Op1k?}Jgy9~N<5>viT#!>3(ZN}#G44}+pnRH@Px(e2OLsZE6Gs`=B@uc%}6+zcq zSZur>zBX(w7Qz^Qf=TMZtAsj zwx;BKc0G0<+k3NgGnUZ&cf?XeyuX)c0+&v?1ayef*hb@lB&zpY-ggcgPcz%O$czbzKzMb9nOI0!kzqIWiFe0J4&FySsdacdWT5qb#8~IBA3*NdMZH9kD3OF3!~RhkNs4 zqroC+Wb8_M+M~g}zDGJDT{)7E%f)wn)4~3m^pa3Z8Q;<Q={vry0AYAy|5{&r!W1d)o@k}>c!o2(mD;86OzRwb%~Bv`nB!Dm0W&gg`Y~c};$i^lBZU!64_DZcDbj1%m zOnpklLNR&Rn#MX#W_KwZ)Se&8%_Yr9`7wi(Kc~CT^k|JeJN+)^J~siapmfXyL2~p? zRy`+_VY%W}yX8+ZKVt(t68ushcY;bnN@%pknUYzs(|EpFz^#q`aBe>NyKGfkb8;sc zLFK;w`pTPJnW%{{08d?-DIC22K;5VJ(`VPdhGLR$m;EK1ii!e zt;3c{6$2gN4E|UC%m%)LZR_yy!Vyph^QHWD?8O~pa&)46br->L0A1wGxKF_?c+2~Ba&NJ079*cNkQ`a>vkUms}YC4Nw{xZzu zACA@*AZ&+&AOCd?W?UYdCw&hjf~I>Rn%B3Ih-@FAw;BiuAk_E;a59v}U;w%;-EC9|wNz8D-&_1~|#O#9>!2(qM`blb68%777YhHYgmpDBnDX51dG%)1EFD_k!LZ z(d|`MgF>A%KGHi-S$=-A>4aYy8$oD8D}L(AwoioLCvhg${>kZ3FZLv|=0f$| z!_!IBRe83=QE(kz^Y8FGridYF)#+80nf1{+@1+RFT_T>egxMN?# zx9C)WN%H=s!U=^}im0zLPbaf85V`Zu;eiARYGHYGM5kBCBkS^QTuhSKu?;hhG=gAC z={L&plh>jop8^I%Nj5>zoh5yPmM!0nf8n-K*3{TiC4Bon+Rup3oHPA0M~@%k?a(Fn zU(xn~DA(rs5cmbEq`_^a=E_&zrGIsF=AeK)F6ldSv1LZN=fphHOg9pm^C9^Y1kI33 zMZm5$jE=_M*d#glI5f_bQl%KjmR&uIm5W3#E&Ig~ku|B&^j5`HIs(sho-wj}t?$A+ z=rsJNw;AJpe$B|dX!X!CqIbreF>kXYnh93VqD0Gr*+Oc#za3h836mPab{TN-3sqLS zgq|7cgG)^2kO+2S$r)l^J8%gdK_4k5fWQBh%~fBNt5y69G*VWs2FU;N;td{26b@uR z>YQQu!BK?}7cV(J^c;uIx>^fT%xk$-vS`(^MVGp`w?@yS)J~$EUH^1lZi1c`R*a)- zw%d~H729sLL$Hx-r;ttX?0P@lQ=*g*lrSsDB6YZqO|CO}%lntb=y`8)#;s4_gwGhM z0B1#|z%cqEV^>F0t+NilM1g`kQLa3EA>|4D0o90tQ3oN9Jb-qLAO; zzF3&3hwO`qCQJ0bf3IWS>%+@!j6|^s{ZcCGN>Tpt)(*HY*_e*nk2V60yy)$-4bfM*QH}b@@O4ukv{wBOF@y+zdKP&RlpLF5 zyt{22TYN#gIkTR9-S#78N6_J=N|0@a==CSoGOzr^0cuA7Fp*9LtS?HDkzmFX*izZR z`RFc`+m!p{$5SeNEO3BCQ8L!X2@$)P#EX%Zox^N!l3VPa5=+L9$ul_?Q^@_|}307k4 zQ(~g`A$-r0P;De*3`n2qb7wN78T9|BlT0MkUT1B(RNi@RAJ=Y zb=(tvT*|ge!KZton|j1f!FK45CtsV*fMiQQt5oPp#9z)kWoLB?0y65P*JiR4HZu7z1vKf_>D{VXO2HQ2y_s%y;L0^H&7MPwqMgCngk4 z-uPk(NA2OqA(%uyzDW+CP`AFKPOc1U5-*j_btx#8kXBx2w9xm4oG*?GdvUtto|EtZ zICi?ANMxK`x*`CWmcEfG9Jk#13=BL{brt`h_hFK;e$k@f z&b#DV4eF(Z9+?Cp|06j%GT@2-l1`#@6Ai zvUi|wGpO7pcCZy%NPpZg??VfIJXu*<+NrOZXma0)=wMY@v%7W`50b2;hj1u zVs53cdhxFnACUaMddx>q*cW3IA(lUFXh<9R<(y&(!<-aK!d7vJ<8DC=$m!;!x4%2s~|se8cY(FcQl zj_o3wm<1Vo+p6^e?lZ|YE)^rnB@B$8N^2P??o;HZ5p8i6m1?jA;Ub$Et$BVe z-SC~QsLrSYc>f-%QIl5y)VlD8U$LIHOCqD$rH3zJTbyOZL*9F`$`=Jpvl08REmvcE z6MydU`SKy!6}5Afoc`X3q=CwZcF#*ijeBVy{l%xt#830X&sVWh7vhBtUf!tUCh+_G zY2qN106Nvv^pyUExmUg0oFKxym&Nxwl&oSzsMfp;Oh`1&*L8UA+Ne*xvHTl3)O!xn z^7?qP*w+$E^Zf%Ku@54V+Eq#G*_syJD$S6BWOLnYyJaS5tSdwtJd74uyq~mbKwwd) zAyM6XV)!#sVn!{;w!is!)51yIjh*UwsFL#>6GOvZAETQpfi}Xiv@e~BuVM=y3zY`( z5-ve>z;9L5v@Ae4w(H`WQ|7%1 zw)^zWRhpN3v0=k#Hir51#qUAL(;zNv-!ZGMEfm8Bu+UGnnH`FFOf|5y%P`%aiffz> z@iic*FNLroP|u^^@yQ$EwK`mn zUZKU~^cRwE|K1X0EN2g=@j%GM)x*!_!Y?wh@)ReDH5iUJ+`(K#R;Dq!;nR0(+dO`D zBvMoj#0zIZaEH-?#+3PhpoTK_{;}Dw#zgxBj2XFcMKTY6rIB99OF4Xo#<^-K^oKLm zCu`yI{}RMdUwfXrRtPPp?JcPE=DjPej%0V;(6Nb_=L#49Sps=FF0vTk`=pR+uJ!$W zEB@_G6#w&NY|owZ^qw4)Z~67vk$zHz?FGbM&+$FJ1Axko)=UFLOBbYkvM7A5`31c! z1hMO}O~C=;AGl zU~&E{s_#ub+~nmsk<8I}0`s>wnEsiwH^z*ie_dNvGGI&l6WiGr4BXog*I!>?^E|An zuwXU%fX3kIB^qW?T|`*_eTl{Pk>4#rCAw?Ky#yBYbX2`C}mrEmHzP2KHjx)mkH;26rV%=;>o4w)V1K4 z;Kl2;hVGHdfwYA5Mi70VR$5(xh|E72pR53xQC#U3%TKxRN$P_wF*i+NO9Ok7H>x=ARJPv{#tmd?}r9vPX#` z{L*8ZX3VHSnq*x1Pjb{8t3Gl4Q(nHNjre9Lhfg>8=XE1oc2&*bnQW1db2sTOZo4gF z;FC?TS{X9~2NmDO;5&~vie2uWWZb)uEq$F=n<~|1-cDY17A|BiDs&Uq(Y8@N=VFl1 z{EDVkVGQ4sOUq@wJ{4C|2{bG<3TM^TFi_pkdAPW*-})kN#*xaAUb-g&@ip#M}AXlYW%=7Ps)WmGG*`j7$ZTFP+7mR}sgnVvhbw31Veptxmv?dDu_37c? zmb5<|qjfGh@=-Vm664LMy9a7zvEMolz6Hf#;@ff_bewP{d(qI@krR~E1>eby_Xl!4 zS@!%rpSax$?6KCAwCFaKTNRQX_TWm4Vg@xvMBk!G?h~O2v9^U|DF_YUNI$05TGSWE zjPGbB!D@SX{b~Q84i}21uEE5u6&$odsPr*%wNcD#2hC5)odar^Rm>_h+Y_u1Bu>SG z!kKoqWWsY?delDX)o58;@bOtLL}KQl8=!LkgN&4OxMF_@d7EbB_BqYTN?5kbkLL9! z--iaj!3D%zpOI{w9*QGf#(f70_xr?@0gMfuQZ zH>9WJ)p}TA*kbmitpYLQp>feN!>76Tx64Qg*PS}0pX-U7k|16oN9+`=pvAT0y?9g| zpS-?(iRf@(1^eHgI{N&tz?(@DKl}2uqmqI^##y1VGrIBT;)l%S*I>2Dha2(h9=YjG z;J%;HDRv^ZWrDI(J z*+_i$+8@6SE5i5g7QzV7^^RtQ+h=%_0lM4j&w5wiE0^p(`du5uaU+|f3hhjHkIXkn zRp1NKw+j;@3h`$OtQCFIIOV2;+Lk3*ga~XJNCqU`+>Yr0xx4)OTkJ0z(4rRx80K}p z-|^3*c=zO=vk-TVdb6VFWes?`GI8ctWyChV7dcmz)ETid30+Y?rK#=*WmabMka{tb zTDwVSH{0HR%xj;=WU&UrIUelK5ups-#CT6Nec1fXDxzrz3i!tWzGGtX{D!7RBlT+j zbIQ%Y;g(etR&^y~Z!MBo?CdIr&tvJ3clLX1ns|A`TSWu!mIGn?o8q}!jw&xzdk2F8&q=@nyX#aVHzeV=yr zna=!TG}x)ls8Mc3>%O{vvf1?~UcxRR)2>@Tsdqr<)`NyJj4!rtlpIHe3G`9cvb~(= zWH+B1skkH7sVpFjk-2=!%s%1cl&6fL4djr|8^0(UQO|{?IjPbx+dty~f>LGI|Nee` zFE%4hF5@1YM2@ZcvqJ_k=KGqZ-Mmi8)=a{kVICmUOFb4q>A~qo6wNi`gskw%pD_19 zDZR?}q9U)kZF_EV!Onutm(uu;(CArB+Q_F-2O}~TCZ^-#eu0l-*37q^A|ifQJr^-z zK8~64_vCKExxZGD8^0&3@rZDK5qtSnf;s(f2I>JqRhSIO)U?7QED)uPi?3%8Q5?^r z-T$ZPwyeKq!Gp*18}oT9NY=D3^F zbL!A-HSI43N>p|S^>%n;*;$_5go#p732riZ%+vy-S?j{WorqZ{G&f)9?7F)NV;~ z+**2@E;pjacjntvDcZ!gf2vM3lr|CLzk9=$wGK*`#Vrpu2^ae=*44JNEZ7?^CT(_9 zb(Mw!Km^4El9VSlz*|u6A+>Ti?j^bTpz+%Pkfp6mEv!&RPVUyDTO{hmK#|MGB#Bj6 zUU@DQu1(>0?@t7t@hOt9I0l)u7)1I@MDAXSDNCkp(@m_hS}wVjKQ@iA}ALl0{8>4ATOoQo!Y6^Ei_Kc7Qs{E_C95nVftpS{dW&5;?;t5y)3~X{i&ZE+fy^q`1RYz-8dFpV_Es!h2ak7|!Y6yO% zmVBWkHEnUAPWD#$=+# zxJy*iww)Hlg5<8K(*O3eUCr4UBs|LzH<5Y;H}AM-t4k67nSnE74<_V9lYL@_Tbw~h zFMyny68oJ&NvpzZq~wfNb2ZVE&<65=lkj4~ujs|~B6>>Y@N+Y{cPAb=ISs`ZqRG#M zIbm-Ma>&>M_8Qln^Cv3H{Q=K1Y&K45>9T^7eL_47NO3RBOCFy~orU?b-|U*YlOcla zJqLtU=P0)4d^<}FN!JY=L(J+CA`g_fr}-WA`QMIma%d}=Lxaej5!@N5Yhq8 z_l%NtZ38^lOZP|nog|#oEO3PJPWRq5rPF%+=7kUZ*1~befMt4kr#FjTaR1cD_OOEX zO-vxg9>W@e@r9(*gP7~c!wEGH0TcV<=p=3*GI)THB0fZBH&I1$!YMLfjZsbqt1@Y7O*FKZk;xd70Hv6_typtapMxR*EOeurJX2nKd{;xs>wxI8 ze`>a!EgiCqWPwyw4Jq~^8@r}&aL0p57&nO6<4b@@FUVRk_!cM7Qn>^o_D`yw%}7C> zk}n;p3Y8%4}~#8EG!MtI`^FEX`;}0W?CI368Ir}J<{%Bh; zZL9`sw#GayB}($%K`~p$oB#aS6k#+^v%^>h4sF~o?$nV>g#Kh(KVlDGV#3me_B7GG zfZdS#k+_0E1}bU$zmY7KiyB+tPX~(E$!A0pF z`U`gVTq?_ zp5`E)CpLRKAlR~uGz!a4$9+m8B^^usv`1*PUlOAAlA9XFs<jOl8Q1}i1aTn#hUT$Y#KH!gSI)XaiWWp%X%h^NFxLrzDg0a4w0h$*`lC#9va54 zxB)nN>NFun6qCDKV}hmsxiPK$ZKwJaVksx*PGjrUU~@dc@#4h1w5Ozm(14S%X^i8-_n-!-?>m(4%@Y?faxEx&xA19`@)l)<~8l_o>IOwhN~n1BW%-)e60J7T#(Q9b1~EKOo_FCAQVk#UV01d zr;)JYQ_o)!-p3EqsoZEqePhfq#ZCFcxn0oeO9`!)gV8Xn06K0p`lEG5F26_n|F{Tn z$C!!^s<8T{bo8~8e>IGyz$sYQfvuLlgJ8kL7Z=N(y^<+09eIcAIoEoV$+`3g3_PLD zI~R~PS_gNC^F9*8f6NB&_;31{Vvm5#aFPlb710nie7;G)ipaA7_V22h|26+cRZZKR zB=mOx?+jH6QwpW!?(T&$LkQ=EVwvijS`p$9X)OLT(IUY!>};9o`rVq|?-#8QMbvdr z{b?ES1^on1>wGx-;ip$)%B@L5sn5sW$?B99X3n0ar3WgI6>ny-LtlUL@uRPr$R>9h zH6g4>{}}Kn@QcTjF7U`O>!X^`kqnp}m*5X06fQieUPXdU68hZ*?P&o%ac`^A?IuVs zhd$c5s?)A3*uU#!QFIV$*Wyg=;VxZk{@}`0KWdxMQ<2 zS9XX7*0L#8Sdid-YsY=|0mbd33eWR>V78vkc$-l!tyFbC|MtZ3_&`>1T?lTKRN&#i zWuJ&Olr6O+N{fT6^C$;+|6u8NoP8NgVi=dH8JCiT8J`nyK^jmcmNFe1zS+T{XzYSQ zA(##@Q%u4CPlNubEyuPa4ptA%YfNZ{N!d3 z$;!fm|NoejUv?CK7kYcY0`wPGe)oB^{iub((JCL{0D=M-H(ZZ3=bPVNhsEq<{|NeE-_hN(Sx0JJGRZ>_|O^uaJ9@PSX0Qc)aE=Q+41b; z8K>c{+5_(n{s!~+@-GQ~ckn7QSQV|t0GqC3jQd$7&Qi;_G)Yb1|9T70&GLR{gB7@65Jx+({Su6lmgImgQ_j|^G=&T+JCzP~} zW=!ah!_wMT69bhEu+(+aJ=3NH=<>2V`A61ecJ6hQsL$+`A*dBIMQ9y-&<1Pb6Yz zU~#?7Jwk^Nu@B={4;muUxr!cA=e1+y`D1^mAXgd}IlX8fmtp>%UPG|G@q3-25#$!J z(poKWLVbs72;b?w?w-2-=XNsUhqC?4r{*L0B4rZ`^A~CRucj;kq!Xjp-Z8YvyZS%s zBd9Lq{$D6b!rEu1yH@s18twU$?zZp#=XMuPii@XaTP+O1o^8vV<0822_;e@hroEwS zy{#1s(twu#8-v;+*j|W)-S@q-*iYln=u=ACbPNjkq)PHz(46KUx#MWu5mo%(#%wtH z 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 HctG;MY2+4+ literal 0 HcmV?d00001 diff --git a/msautotest/wxs/wms_uvraster_lonwrap180.map b/msautotest/wxs/wms_uvraster_lonwrap180.map new file mode 100644 index 0000000000..9f278ee8e0 --- /dev/null +++ b/msautotest/wxs/wms_uvraster_lonwrap180.map @@ -0,0 +1,74 @@ +# +# Test WMS +# +# REQUIRES: INPUT=GDAL OUTPUT=PNG SUPPORTS=WMS +# +# RUN_PARMS: wms_uvraster_lonwrap180_whole_world.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=-90,-180,90,180&CRS=EPSG:4326&WIDTH=744&HEIGHT=372&LAYERS=test&STYLES=&FORMAT=image/png&DPI=120&MAP_RESOLUTION=120&TRANSPARENT=TRUE" > [RESULT_DEMIME] +# +# RUN_PARMS: wms_uvraster_lonwrap180_west_hemisphere.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=-90,-180,90,0&CRS=EPSG:4326&WIDTH=372&HEIGHT=372&LAYERS=test&STYLES=&FORMAT=image/png&DPI=120&MAP_RESOLUTION=120&TRANSPARENT=TRUE" > [RESULT_DEMIME] +# +# RUN_PARMS: wms_uvraster_lonwrap180_east_hemisphere.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=-90,0,90,180&CRS=EPSG:4326&WIDTH=372&HEIGHT=372&LAYERS=test&STYLES=&FORMAT=image/png&DPI=120&MAP_RESOLUTION=120&TRANSPARENT=TRUE" > [RESULT_DEMIME] +# +# RUN_PARMS: wms_uvraster_lonwrap180_accross_hemisphere.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=-90,-90,90,90&CRS=EPSG:4326&WIDTH=372&HEIGHT=372&LAYERS=test&STYLES=&FORMAT=image/png&DPI=120&MAP_RESOLUTION=120&TRANSPARENT=TRUE" > [RESULT_DEMIME] + +MAP + NAME uvraster_lonwrap + EXTENT -180 -90 180 90 + MAXSIZE 4096 + SIZE 500 300 + SHAPEPATH ./data + + PROJECTION + "init=epsg:4326" + END + + SYMBOL + NAME "arrow" + FILLED TRUE + POINTS + 1.2 0 + 1.2 6 + 3 6 + 0 10 + -3 6 + -1.2 6 + -1.2 0 + 1.2 0 + END + END + + WEB + METADATA + "ows_enable_request" "*" + END + END + + LAYER + DATA "uvraster_lonwrap180.tif" + NAME "test" + TYPE POINT + CONNECTIONTYPE uvraster + + EXTENT 0 -80.1 360 89.9 + + PROCESSING "BANDS=1,2" + PROCESSING "UV_SPACING=17" + + PROJECTION + "proj=longlat" + "a=6371229" + "b=6371229" + "lon_wrap=180" + END + + CLASS + STYLE + SYMBOL "arrow" + COLOR 255 0 0 + ANGLE [uv_angle] + SIZE 10 + END + END + + END +END From 1ee7e0e87125fb1f94ec382a8bd71d2c09c56ea4 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 3 Nov 2017 14:55:33 +0100 Subject: [PATCH 181/221] Fix regression introduced by latest commit 8f85f8db46e65a3a4e8d3ec245ea90a56b6d794c (#5502) --- mapproject.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mapproject.c b/mapproject.c index 8ceeac4c2a..f192693c1b 100644 --- a/mapproject.c +++ b/mapproject.c @@ -979,6 +979,8 @@ int msProjectRect(projectionObj *in, projectionObj *out, rectObj *rect) #else char *over = "+over"; int ret; + int bFreeInOver = MS_FALSE; + int bFreeOutOver = MS_FALSE; projectionObj in_over,out_over,*inp,*outp; double dfLonWrap = 0.0; @@ -1034,6 +1036,7 @@ int msProjectRect(projectionObj *in, projectionObj *out, rectObj *rect) */ else { if(out) { + bFreeOutOver = MS_TRUE; msInitProjection(&out_over); msCopyProjectionExtended(&out_over,out,&over,1); outp = &out_over; @@ -1041,6 +1044,7 @@ int msProjectRect(projectionObj *in, projectionObj *out, rectObj *rect) outp = out; } if(in) { + bFreeInOver = MS_TRUE; msInitProjection(&in_over); msCopyProjectionExtended(&in_over,in,&over,1); inp = &in_over; @@ -1049,9 +1053,9 @@ int msProjectRect(projectionObj *in, projectionObj *out, rectObj *rect) } } ret = msProjectRectAsPolygon(inp,outp, rect ); - if(in) + if(bFreeInOver) msFreeProjection(&in_over); - if(out) + if(bFreeOutOver) msFreeProjection(&out_over); return ret; #endif From 2a990dc46f13ed8b965f0d83cde7df7da17b831f Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 3 Nov 2017 15:21:55 +0100 Subject: [PATCH 182/221] UVRaster: fix reprojection issue of map extent to layer projection (fixes #5501) --- mapdraw.c | 96 +++++++++++++++++- mapproject.c | 2 +- mapuvraster.c | 2 + .../data/wms_uvraster_map_reprojection.tif | Bin 0 -> 200220 bytes ...reprojection_extent_intersecting_layer.png | Bin 0 -> 11580 bytes ..._reprojection_extent_larger_than_layer.png | Bin 0 -> 16843 bytes ...reprojection_extent_smaller_than_layer.png | Bin 0 -> 12803 bytes .../wxs/wms_uvraster_map_reprojection.map | 77 ++++++++++++++ 8 files changed, 174 insertions(+), 3 deletions(-) create mode 100644 msautotest/wxs/data/wms_uvraster_map_reprojection.tif create mode 100644 msautotest/wxs/expected/wms_uvraster_map_reprojection_extent_intersecting_layer.png create mode 100644 msautotest/wxs/expected/wms_uvraster_map_reprojection_extent_larger_than_layer.png create mode 100644 msautotest/wxs/expected/wms_uvraster_map_reprojection_extent_smaller_than_layer.png create mode 100644 msautotest/wxs/wms_uvraster_map_reprojection.map diff --git a/mapdraw.c b/mapdraw.c index 41ac8903dd..a064a53807 100644 --- a/mapdraw.c +++ b/mapdraw.c @@ -956,8 +956,100 @@ int msDrawVectorLayer(mapObj *map, layerObj *layer, imageObj *image) if(layer->transform == MS_TRUE) { searchrect = map->extent; #ifdef USE_PROJ - if((map->projection.numargs > 0) && (layer->projection.numargs > 0)) - msProjectRect(&map->projection, &layer->projection, &searchrect); /* project the searchrect to source coords */ + if((map->projection.numargs > 0) && (layer->projection.numargs > 0)) { + int bDone = MS_FALSE; + + /* For UVRaster, it is important that the searchrect is not too large */ + /* to avoid insufficient intermediate raster resolution, which could */ + /* happen if we use the default code path, given potential reprojection */ + /* issues when using a map extent that is not in the validity area of */ + /* the layer projection. */ + if( layer->connectiontype == MS_UVRASTER && + !layer->projection.gt.need_geotransform && + !(pj_is_latlong(map->projection.proj) && + pj_is_latlong(layer->projection.proj)) ) { + rectObj layer_ori_extent; + + if( msLayerGetExtent(layer, &layer_ori_extent) == MS_SUCCESS ) { + projectionObj map_proj; + + double map_extent_minx = map->extent.minx; + double map_extent_miny = map->extent.miny; + double map_extent_maxx = map->extent.maxx; + double map_extent_maxy = map->extent.maxy; + rectObj layer_extent = layer_ori_extent; + + /* Create a variant of map->projection without geotransform for */ + /* conveniency */ + msInitProjection(&map_proj); + msCopyProjection(&map_proj, &map->projection); + map_proj.gt.need_geotransform = MS_FALSE; + if( map->projection.gt.need_geotransform ) { + map_extent_minx = map->projection.gt.geotransform[0] + + map->projection.gt.geotransform[1] * map->extent.minx + + map->projection.gt.geotransform[2] * map->extent.miny; + map_extent_miny = map->projection.gt.geotransform[3] + + map->projection.gt.geotransform[4] * map->extent.minx + + map->projection.gt.geotransform[5] * map->extent.miny; + map_extent_maxx = map->projection.gt.geotransform[0] + + map->projection.gt.geotransform[1] * map->extent.maxx + + map->projection.gt.geotransform[2] * map->extent.maxy; + map_extent_maxy = map->projection.gt.geotransform[3] + + map->projection.gt.geotransform[4] * map->extent.maxx + + map->projection.gt.geotransform[5] * map->extent.maxy; + } + + /* Reproject layer extent to map projection */ + msProjectRect(&layer->projection, &map_proj, &layer_extent); + + if( layer_extent.minx <= map_extent_minx && + layer_extent.miny <= map_extent_miny && + layer_extent.maxx >= map_extent_maxx && + layer_extent.maxy >= map_extent_maxy ) { + /* do nothing special if area to map is inside layer extent */ + } + else { + if( layer_extent.minx >= map_extent_minx && + layer_extent.maxx <= map_extent_maxx && + layer_extent.miny >= map_extent_miny && + layer_extent.maxy <= map_extent_maxy ) { + /* if the area to map is larger than the layer extent, then */ + /* use full layer extent and add some margin to reflect the */ + /* proportion of the useful area over the requested bbox */ + double extra_x = + (map_extent_maxx - map_extent_minx) / + (layer_extent.maxx - layer_extent.minx) * + (layer_ori_extent.maxx - layer_ori_extent.minx); + double extra_y = + (map_extent_maxy - map_extent_miny) / + (layer_extent.maxy - layer_extent.miny) * + (layer_ori_extent.maxy - layer_ori_extent.miny); + searchrect.minx = layer_ori_extent.minx - extra_x / 2; + searchrect.maxx = layer_ori_extent.maxx + extra_x / 2; + searchrect.miny = layer_ori_extent.miny - extra_y / 2; + searchrect.maxy = layer_ori_extent.maxy + extra_y / 2; + } + else + { + /* otherwise clip the map extent with the reprojected layer */ + /* extent */ + searchrect.minx = MAX( map_extent_minx, layer_extent.minx ); + searchrect.maxx = MIN( map_extent_maxx, layer_extent.maxx ); + searchrect.miny = MAX( map_extent_miny, layer_extent.miny ); + searchrect.maxy = MIN( map_extent_maxy, layer_extent.maxy ); + /* and reproject into the layer projection */ + msProjectRect(&map_proj, &layer->projection, &searchrect); + } + bDone = MS_TRUE; + } + + msFreeProjection(&map_proj); + } + } + + if( !bDone ) + msProjectRect(&map->projection, &layer->projection, &searchrect); /* project the searchrect to source coords */ + } #endif } else { searchrect.minx = searchrect.miny = 0; diff --git a/mapproject.c b/mapproject.c index f192693c1b..61c5ddbd87 100644 --- a/mapproject.c +++ b/mapproject.c @@ -930,7 +930,7 @@ msProjectRectAsPolygon(projectionObj *in, projectionObj *out, /* logic. */ /* -------------------------------------------------------------------- */ if( out && pj_is_latlong(out->proj) && in && !pj_is_latlong(in->proj) - && rect->maxx - rect->minx > 360.0 ) { + && rect->maxx - rect->minx > 360.0 && !out->gt.need_geotransform ) { rect->maxx = 180; rect->minx = -180; } diff --git a/mapuvraster.c b/mapuvraster.c index 31b6a62739..9d44f00595 100644 --- a/mapuvraster.c +++ b/mapuvraster.c @@ -698,6 +698,8 @@ int msUVRASTERLayerGetExtent(layerObj *layer, rectObj *extent) msTryBuildPath3(szPath, map->mappath, map->shapepath, layer->data); decrypted_path = msDecryptStringTokens( map, szPath ); + GDALAllRegister(); + msAcquireLock( TLOCK_GDAL ); if( decrypted_path ) { hDS = GDALOpen(decrypted_path, GA_ReadOnly ); diff --git a/msautotest/wxs/data/wms_uvraster_map_reprojection.tif b/msautotest/wxs/data/wms_uvraster_map_reprojection.tif new file mode 100644 index 0000000000000000000000000000000000000000..a6fcd941c3935c502be2acd3cce82e6a2a0d8222 GIT binary patch literal 200220 zcmce-2V7H4*XX+wM380!6$EJlQl$h0q)CSmT0lC2)X+=lO+_pqy-BZ02)!d9BB)4{ z7J64|D5CTta5uisx#xTDIp;gS``xnRpS5O~HG5{yT2t6jO^pX22LON;03aj)1k`XO zp!$z44(d=)hl2U!;D_X&{4iig8Eq<5b#42N(F#T0ko+B;MsF3;5?|?gL>IZ62K7D--3GiORB#; zQKbQZikDEp3(S87>QC~az$7UExR3$BQ&0z0KpiZ9b}@nty97cH(h1%m14JLh3B(4( z7UVt%4CJf<17L%4K+qrxAaD>35EhV!ASwS~36|9XN&5$HP@dKO4TKcD7a7PHs8@q5 zfT)0JE)WioYaq8k)IiSKb`gXfLA%tq%QyLK?0 z3}OXB3vwG|9emC$Aju#VAod_3Aa_6nK^Q=2K&U`&f$)OtfsV=w%9|idpuP=40qRU3 zd>}?3#URZfXLTlmJOjalbb-7BIUD~akS&mUkW>&H$Xk%-AiW?AVEY0=j6l{vgus5> z_@`eYpgc=kgVcf8fEa)vLC*TD0dnR8J|M~fF0AR=g0LEPa z;JXI^G?S~fthW$=KOF+(W`X7NAV3@z0-y^afJ!L@NUnqc3AGTQy8*m!GXxO& z1OX1(AV5qf1lalp0m%9x0Pi3KxG@3&#>OCk+av^Foq+(aze51>c?cl52mvgXA%Oo1 z1bDRu*7XwtRQ`ehQ=1TA5Db=`T?laL00QhCf^Gf-rcWTi6$liNA%OzPq)^OA{S7Fv3kGC67-(hSM48JD1xz@hzz!I!>0n^O1fak>Flb+j zK!F@FD8M8M1-zx9z~cu{AYKUy6sbXh0t6J8(18L};3Vs23kWx{6pn5C|nrJvJ6kOJ_GHFjtUG#*5#|)!EI} z#l{8A;%dv{gL1KEF>$`@X(n~|%=~{^kCKMc|4@&a>DA84p4{x4b!6aQyu{@1Nl zR6;7~s%h(~Y5m*auz0whxtO($rb`u#t6w-B3*_x~H-4c7DU zzv|tf?SIX?LBs#LcZ0^DXaE1{-QXSnAA9#%9sf7I8#MW^c=vy6?SIv~h1mYT^=_%V z|2~%k65w@qrU0*3pXB~c{!RSPf3&Xj8euJUTHKbDRR?eIfqSEWU1z7Bzo#;AXLqK9 zho`?1damN-+3D--r~?5`Lm=c8FP*>y^q=(kzcPxQ{Gap%^75Au@XSN;SDpu`|4Q&E zMD;Iw=s%L=ue=DH`zyKGFHoJ?fji{Ck_4dqE6)M6eY&S+}{+7>%Zia zhyRj)Gyl&Ya!Uxqvwr?J`S%xIE@z9Nb)bp@l0_5LSfp7LTwOh^Q7)Ef8y2LW=h-@m z0#`u~G&l>{dbm2XoUNBEwkRi?Kt)TmmosSL<>Kh#>f;iq-r+V`10h-2U%(IgFEEGQa%}bx~ zCsLSL#>+P?wJUxI>%)zaB|LvfmC19Gxcx% z=uUo|^QU3jeOATzH9zucsi9*Ddfg{XI=X4dU;X^KLzKj0$xidKXvs$x%mNC}@%g-G zmQrzHPWI~fRS~FR68rjCkYEAjjv%3T%g$9|{6V5XY4D4xn6vo>qi3h1Iz+u#q`ab% zjehjpM0?l=jbC9+mo6Cw93%%ET<4#P+R3&V9g%kRGufgDIXaZLm}_9A&rxNnxH24b zPD`uS(qz*(w62=c zP~dp_N})~~qUVkO5+UH_^qAh-3%JdLyXVWQ$#?o9C&xzFYi8#0i@ahxp=uFu1D4+& zO1Sg84%~O`(%zXr^D^5QNm_bdBGZ&!zW**igNim~@EYB<_tl zftogY4+NgB1lDV zeBAPb;WMNTMKsiZqplvm*#C7Y*pAWpuvBZKim-=0QLFSd+wnLugJ1ieQb`8)c3|>+ z$blb@vC}$|d@jH#N=nwviQr_*>C)lmHH(E^ax9g+;kAi+f8%3wms(cPN~#ts*U0Bw z{q+cclHz(4{CA^W+FszH6XA^?j*mmj>lZgBp-FeDZ$S>58TQ?|AqxTzaC^pe-l}*9 zz~@+F5)5|*NYmo1K4W8Ew8eS*yK&FsDn?=1q1jZ>;TAm!>k2l>OHK~ETxm3#{3Rc= zlP0czEHmjaCTRZ9FoCA2+ZvNjq@blmQR#@o*@3aVq5KxA4Lix?@eYg~=kbMq^?Cb7 zu+=CL8xRtZcwt6sx5~E{yD`!<(beMRi4FLnWA4ar-}tjevS8D#o%MdAam0Lq+v&O! zk6L7GF^v8f{-@edz6id{K*4jxW0Bx1{5<3+YHt#!(%YgamqyXxU$ZmxotS^~f?4w6 zFxJjabX+emHJQ47x%;u!xXJvRnxSZd*H~&+YUtGO&e{5QBZJNEkF?H=W-FnFZSe>* zcUQkK%2vvox3jg$7%6uc*LozG+cB6+TX1h;(OAOtc0)=JZs0sBY3dVi4*dH~QwCO1 z&GZzRdRRv4wghiYq)PIK#Ke>IH`UQvjmyo3*x)_`Em~Z|;D+G^$K7q7XHg<-8(ziPD`v>2as$#oa+#FI93Giq6t0SNb~HRUxn7 zIq_8;c=op<6ynj!%_GfZ_E(h#0U4G%{TId8*fDzQyb2YaI)Q2*+gbA7P%vLrNo>z- zznt?$f${U>&g=t@pc|{&4T#~EsV`J5mRToU;)RMdmz@P~XH{B0ACBkf()-a}_E;>w zJec96`015s(>M!>KL5$^CP!u&kqW1*Ud50M$(F9hOUlMJH6lIoo;T*+ygU~;FS;K} znMuM_Trn)pgccsNCTsc7bHllMSX{K2Qs!{peGbKaK9~70=hljz5!V~F22Oc%T zAy;#ped{5m%C_B|-}H02(cGE8A*VfWt!OS>b)-}Xd`&5xgp~b$Mfz(bx95zS35m#v z+Y8EY7ZJHcdZC`!jiKOU*N`D|>EK7B^KRTmqD^}VOo>^!#F^7d*qlHi6G?^vLWL2R zQM)fd#+=^dK#>`TWhnhpjNh&lSAWfcdSe{CM^J%*q=_6#nK{PKZ!lu%d^fJDO zY9{rJwAzu#hWq1)I~hZJkEE4E6$lB^HMgDeJ^P1j{EP;9*8JPBgn2nY}X2&wzJjM0*{`W5suq1|%*Urs_I(Ce?uszT=j5UM`fBnbZ@H(r7%V=NF*57NHUo8 z_74d-dK#QlW5?E0ad3ZSOW-$yQDd^gI%%IMAfCdmR*O2}q423`-C~tFn8J8nSqHLI zzeQKDTD4GnY?A%L z#N#^1O!}G^SE&Sd%|nFEQ6bUZ!JuZF79GvhMkN|n&KarYGJUYfZM0IrJXE&tbpb}o z^R&hyTkwm?dkVgtZ@PRY2T}a$48JsAFrHrP6E%}6@g%dOFs9JwX1w}J5zhSc!Cuq@ z-FQA1dOpOBT3BHBKvBL=YGGy_|IkF?c4M7E#CH6I>z<6{#@SvWB5swFN{$-(yK?XJ zbob#Ei;osu>)o2EnqIb*J)3S$uQcbKk6d5;xDKCv5^rGgHu~H7G)}z~YitG!!Qa*D zXf$Y|bmLLr?w12cKG~6H13QdD(dHV%lCCBr#jre4`#gRY@m7T=7P&D_!qWFiNc`n6 z^4(6B9|^jmf1U?en0hpRet%9(JLZ(a*nXpwGPpUl@J+GE1j?#sB&JN*$-T&jvorCF z^9+sU^(&VtiTO1<>!fs|kV+RZ!Q~4hVa=D$Y4I<=c}ZUVarYy$&%0OlAMFLNWn2V9 z-n(uts+!#i_O!udT=c!G?}+cW=Tzj_HCBr&w==9?-bUobE=DMh9)G{M7fN=^dnv{F z^Nj-3-F%H#DK|6&IrnEZ1wW0fuU`@QVIgOwkW<-RU3D1biC{im+}{fM^J#y(^Y|fc z+7D}_PrQZWkFd&}t=oHI&Rhd_U3|SRpKbQ%uEU*+wA}P(c*}ODB(J;9G5UzDA0t}W zNT00e_6R1BNfcd1<&SSW47OmeXL(N-$m~SRG~HVnz{dT4<3ECVVb>5-B;xm?#4ZyL(p@QA7yAD|1e7Ad@J2=|L>UtU_$EpkBq&{s0nsnW`+!qZnStR5FM z#%@f&&^{cm=~w%Q3S3)#%$(HUE+SQwz25yQcrO0hS$%xSi7@qQoa*(B61rq{r3m5p znrZ{so!SBylZ(|Hr|;xTb%TOiV}lAQ*ZgWR%N4^7Dy48C%im56ukzp=fo~E14X|R< zhHZO}wCYhk{hvhx8)&e%CEF#xiC#yM;+VW-F|(s;thvZ-75yug{C9`(o;DM>vfe*C z48`}i8%+oN_SgC=PS%)3OE3r7qiecf1Vo1oI}`P?Rez$yA`OaUq_(7;$EDX1*VB4r zf+~p(ni;%=I_FfTLdhhtb(L@T_8TUHyd;m%HiW*h>f!VfhV`JsT7$%x5CWCV!cvoB zK;fza7l+uDo7XOD+oYY0GEbJM)CyiNXs_W<#((@$@ZqOKLvTa1^24W0iZTn5H7sKM zoR~aQKXvDn&-sn~79Q3E+NP49=LdeR4TK?>HC7hry()+^g2a0b33CMV!=8Ogwr_0j zz=;o&u?W7oC95Y@yqvB;Wj?86mGw80I8V_u|C zk0j-_bRS5K0h0#q{(3=#bs;*5EkkXho=HC7q1?f~e_3#R)1FlwL)0x)KK8anHpE|2;2zjmW@->D%y+0azaan~F7J0;JT=x2vrKtQ6OuQc?>%cVH{YIJr-`xaLXZ4Xv!@G=wIs$p#hq zG8$#ve#Z*`2A7^+;^oWa7y8<=^fUKo`2!L0UEF#7FR7qo`vr=HO&#AYSaSp`wl!`?@_oVk@|BFP-QiI? zjKOG-z~jZ?3RZaXTheOZUdF@58auXM@BWlNqDFp8qifi$TB9{gnXXmu7jU-PaLyJo zF+(_|K6n_Fv<;i#e|j(CI{zTrBS8tmZi-CVK`d^PF$NH+{iMUx$6CuD%-bF+TEkH?_=6rA_G(}zX5x+n!k*!` zu9)a|GC|9oSF-7y81u!h^lP5_zi2MM=9WE;GCGabiPuBl-ex5$=p5LkB#Ro0rR7oM zP~k;XO~s#hSy44QaEV&xcFJhe{gii#o3(`A61L zI_H5w4@31}GUh7hJl~Rv#GWj25~m1Hm&z?y(e9L02$HNArG5K{baHs%rhOqx-*NTvE~dY(rZ4l21qz417RRAZWnr=S zS)IokmbS{I@zZ+zeOGwf>%ll|;KtnZq467zJaDF;VJ%;4+1JgMU^Y@rC?4O2pfDV} z{!!Et%?=D9YR|U9o*Bg`8$XYdnk9>UakUHUMA)PgwZ z*Ou>hZcyG;E~>op`ErcBYQONanKu2@T$U)dTnY8VZ?`$*uf@qcCZ^^KCbs|ZRzfa+ zi@U9MH5M(2=};AZhA~L`b$_hrVB37x!S(n#LM`uEU-H-B9;6!5n9V<%sG-Yks_E%% zT+dxKsjk>M>ahIvs>vUT5Eg-OnOpq{3%Fvws_J=6X%%ea>AQ`bKlv{Yh|h45*soHF zFzGqeyUzp_#SCF&khDTZnPlkzdXab;(VU#&oiq)%r6{cD-WPjD>Lw}(d!#C^#aGiK zzFvbgUuOVcOg=7pu5^p^kw6z*!KhnoO=oHHakrOvgm#+wqAur(^8PI0wOA1?^lFYjyoJG2MWOMA7hH8Ye$u+Rz~Uw)M%! zXI_haTy4^i<`rb>*~xwCZXDr9W8lQkPZv7tGsK%zm??V|eqY5?6LO6KjvTH3&`MAy z+{`0h)*{5=%(d;YMA-%6)q5XS8>dCW51-=L5fWM(*Zuq@M3hq5KJ^8BX8{#|5KLP=wInx~{(4@}Y@W1=-$~+cu|Ly9~czRmrbCvB9?H6$4THPq& z8Bnx?n7x4|9zm}Z0@a;}UVS;rW%7?#m3g& z$#lSBj!pOsXOOc;Bz6 zvGrm0wVd7WwV#sSsJcNWCL|mq`(IU#)0^sUxAPg&?H~f)``Hhq3!{c?Xr-0HIuhdA z13FpR8oHfH%pYWb~{ z?=4x)wjutVsF)SrRFN-OFW(-Sn%saJ{YsmC+K4gl3{NqeI(LIECYQm3e5;pYi8zNI z-)fQQkZ@VO8oaJ@o|^kMdQFFhk<9OTJeAY<4(cn`vx1nZHTMxW_8@qH5Zm9guSe}v z*dnNPv&PGw1087W?B9cH6f@KCAMwdRbke4=4&laiW$tv7nR>(s+z7k+%Uj98y;5Gt zVO`!Bm4xpVh#bPSCUuRCE&APW{!OHh|M_ma4?BeU^#Vze_#w?)O;$$mKy`L>dPx;8!!nYf%a8^O;&B zLntdkJu)rIiGgzlzj~6Sr8Q2w`LJvsy)nM$dy+iNr#oNSdLHYvm33*>`>4A}V{0W~+h_}IqS3Zw)a+(i`5whd&f=P|~TMw6d zK6K5y+&Uc1e^r+Dew6z?a5Bhjqmw7h!$y}3Me>6;c`Caf|7I|z&t?!>9? z^>^rdFOAb)m=;}2zLmQD5o0;0`}uPl=IN;Qh@{quXuPiJI==VS%;kuwy|bWteYWDs z@w+hWoyz*~%0b;n-D{^f38m&-Of#d`{AZnyIv{jZO$YpJt|_YLOjpGk>E-8oDEjFV zwX(^xo&OXq8}x@Iyr0jNE}wLp{1qw^d4E&)XeugIkU3*RlYafp-BFq)Gji6)&l&nf zSik4a@>^aYywms2(4kkItQB=l9KB4Q_2^OS#e|w&He1LCi+AK0^^iY_s|`x4q1jVH zvSh)+jkCv$?fG^kd)t4U+osks>-9VDN2tmTM11`i2#`=zt6L=9iKZ?ayP$rX5f~JB zLT^*-C1anF_7_l9z#~5X9uJgcexWNOm$@v&)jKMe&L8)7`H}TM~{-5xs#c z*JZpe9-_ron9^z?*Q=!wKPZFztqDOEFnhBJjlxY4Ev>8|2OptUwfwq4Cx&oDhP$to zI*KaP&`osDMv_noMM_4RH&m;}lG!FafG1ayVBkg{r?XNMQk-~98Lmhw2<(*iWKQP~ zV48U|*9%9Y?V58oE_4RM7w~ucoxMBroKS=@TovMIVJ_<7g4g8d+L@;Nag-6EcfZ*~ zRKFTR-EAA*rX}Uh8|9nP#nbWjSV*^3gp``$m8;;V-Y$~k=mq4ST2_>DlNkGui5-D* z3prL;BqqIw-(GGsC0Qf9!E%+k+A7iSDDL8UtB_XlY6u#~NDi~j_tlZB+13f_TIX$6 zRs{LZqXvRalgx}&*{l08r9Sva^@AlE4dwU}w7^bhC|9!N({A#q#OE`11GK%~L#tn_ zX8L@Tj)!k@rYTz@r;WTb#ctTd?^fy5L@Eq>W@W;D`E!xV+{ABPrmN%R$(+Qd;6>&M zKXj1In_@v8OnI(POe;FqtlYRws!tc;Vu>=+HAI8`?aOK7Dz-SmiS1Oaskq+2)v1NR z?O!IY&)NhJhnJll9v=;-Apz1<-A}m>FI&lN$rVS*cH~M~A_PPqzDuyV@zs?v9)4T_ zH=#M~$j?)`F2iKH;)QKM@7}Tdezmjq>TQzT?y0 zDQdNBIp&8;-I8`AlR6XQ;|A^g-IafsEy)i*aR|I_j}*S1T)zK>zqZ8bItybHpH{L@ zUf22)zV#)Z-moD5A{VXW7ttZDZ+{9N?DIeIQ9ajkb@L~QG8;L=tK|#xVM4UJs^YUE zv2Xd_t+_zX zSN*A1YU($BIVO7~((z8NQB%-&W)Rg#nG>~hKFcj-kT`OOzDa~J=<39eJ|lT4^MzI< zHsP@4GHu7T&a8LOB0sJUJZzAsG`cIL7-A=#ociPAs71eEniPt@PxQcmVON%JagR&$ z$5h>tYgjGGBrRvkT^pZjyiJ;9#uih5Wir?Ya+aRB}bArYzp?~MCAEbbvt51W5$kcJIP zrocCNj$kakiKG!UR9fdA>z=FD5Ft(FMX_Z3L`fKJQCZtgX-hhrX|mBJBv2aEGO2F7J%=q?V z5u9>dp}~SsB$IJ0u{mzcKKY8p5?lOmB*^@}8VKO+yOqa();U{^PL z1WF3v^oC~P!y@xYN!eKgrhG`mC8inI_hHa_Sal{!%7~-ds&}3L93zbyqntkk zb5ajrYTT33xwPin<6es^+A;dlfulmkt(OWpc>erh(gPU{&YHf>mHiSXman7s4pXva zTADMz;|h|=E#8RUdG{>i!HbQ0=jY7#JHKC%d1@I+>GG*Ps?kP6@PTW0kCV1e+PKyz z=XlE&UFSOv->VZWBo`T~sXh>&((STnWycQH=)81Y=340|v0@G~WplQ89v~h0>{9pB zGVL(j%cyK+xs#yDyAnF$q90c*_Qcx+D*BaMR2s6w?~5`O_vmEv_L@s#iB)zNRNn8cb$#UYp#M1B9{L<^V`evscly~8%rw4bkPSKa9YZV29i4@7E zk|N^?6>q*blqi(WPRtTS@`5p1>zz0UBB7($yPU`rAKZpDkdgLW?TasG8G{YHOE@0~ zCw;|o`tvdJdA3j0#6=C|sbMipKQ`lX-a#CEE}!1i-v+6+(Y>r|V8#>w{w?i8&UNWS z#{ov07{p<~zKdhfi0_`DG#y|c$k&s8lD^iTr&}4Cu*pdYucRNiB`?tMAyhK$)(4SL zcui`P-}}5EE{QSZJndj%6swVcueWp&r&NDlKm)QG5w{`M+N- zsGAULS|zABIh67F+YsV2rbY5H574#5JedstOKcTO2j)&Iyf3BkIhhb;|F`oL@v&oA zA?h#K9|PX}>WE^ERI`<))`#Gpeq6!LMeWgA0|v^gifFa zok<#hmok?kK`Obe;Of)UroHi~c=1d2Z(|A(`^8KqCc|x`WFnYg9m9|GuDP0$tJi-k zQ&~QG)g`y7dRzXhay;UN0SOQE^(#efbNUlF!$-jd*DLRAmSZo|AE~U0Y=582vRXHC zJbJRRPik3BY6^KcWYPe6Fw5I>pX$%8U(-jxWd&$kSlc=RYRU!e;Gnb+?(TYDEvG*% zH{)M4k{}gxuHv%TKF8#Fjb;o-mBTaBZki^K+P(FF!p~1nP@CuKX*M`GS8=2bJH5|QNJJ6+poT7I+AW> z4@csSTyVAyNTX-QGPtnGnO;->EX2{RNNvbibsrUv22bD$QvjW_@e%88>6LG|(t(DQ za@1$NQ74fDSRFF2A16{ZJx8F+%N#{766z7ITf}axU!}U;VtQ$2HD2?j75>*noCK+c+-`#K`-+8<94E+ z{)9l#$^Fj2)qxh=0CrF~!oUZX9CvRbe^y$nBzW06EqIvByp|hF!hHdyX}0}QH0$JZ z;q^e{kboBKSLG(*ESE^*2rIvJ8fW7YzgfZ$U94tpN@uk5%Ea6H`GId?QJ%>HzO*+G z>HdE=@FsjP!W#nCf zKW}Xb9#SbS;S&=2zo{pF3g)>iYP)~aPpT+b+Nt01Z{M@puToDt{~^+IWf@tET6bEw zQa(r7(i0hPf9aFUSliL4DFa#F^g5we*{qKET5EOVO`=GjN*Xu<>^OlkV=t7Fd9O3g z0+m=A=TkTQ`l&r$j32r5lfw0e2E*>Nrg_~u1@oDOH{H_UO3Q%rBw7)S{*di|ebRmw zI%7!_;4bhocz!uOoxXPa+S8Vv{0!S$#Q~fZp6@SFqDic}qp1Xk#Y5ZDVqPuw`?~nb zwJP5qpNho0p~PwWJ0bNPQ6}+wIqwVkfjsy1KlI1P-ZKF~ zf0_eIvyC_MOPyx%S`45yH5Op2XX4Ys{)&FWIq(&{vxR+<;rIlztep*TU>QVjyPVL?)L=x%RE0#h6mh?K-k$<^@wo@IH@`z(VJKv;~S0>w^3z{oIYJ^XfhY#kdvOfpSjtIby*n5(~3Y;jOtM^SVrgT zNeHW(7zW$8Ek>lQ@Fv>!1&&+Da?51A zv*dp&M!HZKQ=m%-N83ld(y50%D<;35CTaAY+SExt#mO+wE^8e7?nYEn?;Vw@3yAyi zWg?@4#etIRXtEFkblT#`LihIape<6~fi%)K`TWYQM5U*Bh%K8Swj>Vd!axVM`O3!l zcF`6gL+4RBp5CmX7PUZ^l{v93nq}_(r>3QsoF{k_b+6E{rev7esnc)6!88T!Mr7&8 z<|>x9X7#li=+CPud+LqXmkrnuj~vT~p*y}bbI7chXI%{eS`qdge>Zhed4g0g+nKrEvQ{thKNvz41WRQAaNn5z~DHG$} zl$Pul_9&8fw2nQ{$?)p!FB_Ge?=&-p3x5Ynq^SrhvD@igLC?9#G?6!otTWtmS&HO- zQq<{~bE{l1R((K6`KDE5m6~OdvAF$vey+mm5dreMItvLGHD7Cr>v5@4{PZKadZ zK5OCetes!&fxiItgYZs8$ci=ACiUe9+LNP~l89S(JZAOi-c`=j>fQP}z_&k&>S2tesl7V4u_}eDuj@v%z5lDh7^u=B-bzXu=a5Tm zC%}_-xyx_uXKiguJ&j4qG2CAh^F3SzSt#8qd=JR5QbHv#uxm<+1rlrOV z4grDo{+6=K_~FP>sZ6cFTD}~gNZ1rPB2? zzt6SZeU{Sv#>^fz6yth)$Ke9r1__Dya4Bm1^%2`&JYvNaIO}Qb6rSzt z(fKOeqA!2tBgw(CMTzvEnq1X5sOT0%cTgwwg}jm^!I;N6huC+2*=VD0`j&9!mDF1# z@DV?rs|$aAJ0@b;v~aMYN7=-TTVBV`rIX3t%>fSxPjRuBFzmPwYpaQFCvx-Wy()Az zK5Y*Zi7DhFej2z~(u8ARUg?o=T0@Fc%?l{I(W zRJPb}Mie9&)o+tBh09diX4aOp^8=F$(7AAYp- zvkL4YU z`P3-oN7$xzg&F3HMhC$k*%UUd$i~LJM<^+Ey8WAlm6nT4;*4GWVp7y;^uBMZzpKm^Ss+<)Cvj3QfR$|i3-jU>(}Q* zGtI5=!VVpT(tE@^{RzQjqxLIgutb*uvk}Abjb1)3R1WtBv9|G`d^=nxy^=yL^oMxH z^tZ~riEmX2X8xLk^vJS>Lc2;r!RVDcvWiwtom$Q-{ND6-JNKOO@Sn{Zyf-O&?ENDm zr=y&i0lx0plyYme9x`_+Fk27rNerm%ai?qp0m<`QPEV@@W=Js*f7ic@$f9b4_opHSYa4-|vrEHwrid zqakw~&EX|KdW)w=YZM#dbk0kf<86?3FQr`lv!uZXz1!1>sQYB*}J!Dr_8WS5j9=+}#%0d-J{r!{6UP#kT=JU|=2{JZE{fknL z{F)Cu=0#m5Dz&e+mZCX6S>K)KS%0R%$hB{taQfW$q`c-!vsg9*zVL*Lk(yQB@leW` zIGLXa@k_W3zB$n-l446-8rdc_@8r4u{3SYOLD)-Mgki9N&Okin`ZKJ=i{6Q({4;r2&(2#T>c+U@r0KY*bk9&&1=b#`|7J5q zi$;(*k-qSL;F{V5)1{tLuZOC6jE45|PPSN3fdY z4}yNhpIKJ})(Es)k?Q$S@AG%u(<>I29a80OZ{xU^xaY_CMWi1ftsVSQueBv%m9gA0 zudw-K=_&qM`HsHhS*c0b!#J!}k~)4__Llk89RWCI`uvMm20h)EjTpje3;OgdP(qQ> ze_+?fKV7DEr{opdqfHu4*)K=4bza?JgdaVeI8C!ZrSGbQH=*sIj)xGf+ix-~iw}cOdWA)T8X?g1BRDSf}E`*ul zbsyvs8FjLjh?Mr7euuOOgWu><8m3CxxB_A6%(w#o?je+LsMuyeM0MWo8@#>0Eq)`+ ze?5+N3vu|`(k(6(x5i=Q9AcL#(3M~sKV`Kdo!awZ6;Zz^BZL!rell3HN`KX>zuH^j zG3r>kp>MkfI^9Pr1DypyU^xtE@k?!%g4M=&$98 zjrE zogWLuUJdhZ{gBQ>R3^&yDc`k-+xbcQ-e93A2j_g~5qv2`MfSyUqF)yu*>gtaO+mk^ zUwZZ>F#GaWcC_f*)g)a0twFyHUuF|{{!rbh0>_OwQNo+rfqp$1o>8?|NwhL+k3*1h zFS+dI5_)v|vOYjh(>{i=Uo7b_caShW*ve_}H_mW?mEe+vQiuH--u13sW8%QLg5O)( zNlKPcsXi9eAizG92zh<&WDrwFb|K+#S{`-iags_IsPqAt3$zM6%B|Mo-G&ue>Sy8q|JO}5SRv;vY*j?32$PJcPnEzX^klC zUw;0KOl1`^8^0?b^guP$kb-9TH4d49izb0dw-VU9FBc*mVl((Nqs|?vt`zN{-sBYf z@UT0iVW9@>@?L7l!{LQFQugPQ%+cg(3&vTM+gOx-I%d78F%7G=veFS5S4a?ptJw2= z?YeR`%=G1l@rWv4o_H8;G1Ed$RetkTsf+%*!yr3U8-b1uf$~!K2{_JVLKG!nuYfPa z|L|tk?gh-q5!A56{aYLRT~@r1T7NL?sEGz@$f-OO_+5(hqv!g0b0!A0p_UsOsML}C zKVdN;A%tqYo#EjXgls&nIZlCe>dfaZc!#op{~N_qZ6jp*q1+4lBnS*~$gtF${~BK@ z{;LIbD8kA(ki$4``GmebdeBIC?cikGC*S6B#JRyY{Z(SOtg0UhRDU{`AM2@Tc&$sP+|E;q{87}`OD3)1 zcQ}+U5EQMRUkjHHvHRZjozS4^>NwhPLC#n&|FYzBiV%58do&Oedp!O@QFS4vFV;{Y zYkB0wb~BAE*)n_VII1cW$T&TA|NZmkn_L^hrlQX@)^a(L=7VorQE|tR;%yoPj-FH| zaqOI4YT?|S%`9)og>Yn+)8QZ@(o%-B7#^xcJqp_+KHMhGRU-VdhIN;{#1?|a)z@xi zW!7>F7sfrG=hZLPgkCdHEREsWW((M`G)QV`o)Rl*D*$()G+!HCg(#-6(v5xQS;}dd zzgedPHtl3B4Xa4|GKlnPJ!5)Ide>@dn}1BhMynT)QV)`xC^RF*5HH-m;YLiy$1{f0 zC2f%_gv-gB%FcIbO~k%APJi#q4=UAvxnb%iHpFv}_~29iK$&9a{Q+2ig_djDwa1f~ zWamRanV>xc=j9+tTf%UDyscI>>W%KJ-BF0bkV^xO#9`+}p-hrT#l{uB-A+sLvOStl$G*X0A48wYRn9odc zfzwNct`hZAr{zA(%zH-6=2=6vtg}lN&6kU$JU{2pTqx25oVK2XDOLxZ?oG|BkjFe3 zeCT7cWwueRe_3rmpRgSvFHub*)+a=!VLc{DFA~b#qdGe0-uPkKcxydshGS|en7Pq* zPV938e#I{_dzIr|=Au?&i1O;TeK}9(6`9AavnUy{JRyh&-o$ndJX!s+98_<;c|71(@bOyqam>9jwx3S~e({%c zH*r<;=rTOcCE;GxdanIbh*d53VeWkKC+nq<)1r3)*%5cvKOQ8cv9$#{M9Uz(?}{u` zSSgAkvud3R&9wGXe>gQ5XcDm3#<15Mb(>Jgye~zxRVjoN(F472{n!`W-@k&dD#y^= zPR7_i%QVeFY@g7ePV%h^yd}k_kglD_lbfHhidh}lVT{{H%=V?>eClM6`Ld{A72J{I zn2j2gj-k)ZpPlal3X1L=%W>V1xjG)tw1jLHYucvse$U;&NjHq^!2X$!Z!Rr*ZIU+7 z;P(o8C5R!z!8@xVx`z8wTCN3Qp5S2r=sV#9_#Mt+0r2}0WpzZMtX&Bgdb`B+vht=y z{jgu2&PZ!q?f_;Qi>Z|qqYHExSVn+thC8sW-1q01|L zJ|Q(_$NdWpEZ$0*zune2QvA8M_1-AHKIILtF)^2UBv$sxiS?3|F8B`H_)bN*{`fnJ zx|7~ZN7)`v8L1oURc%A=Pd>T(kVfW3G`*sa2!lo8@@~UXK=e0}VCI^-+?fw~j5Y5@ zP8?XCMyOUS(CDhx54#&o8JtARwg=IwX8F>7Uw*`V(Nu^!6Iwqdn64kq^Yo#n6qRyl zaKbwJ&)CdGeB<4{YC$%?*3YpmTh+9pQd?!xL7wU=_bl({0mhjC+j>?KsISphc);o|IyxbWo|fO45#~Q{-Ay zP6iSEC{=W-tm!JuXk{(kSn_(!aU~PkVF&0t&bH8X|?GnzNH&8f2#-FZrn% z6$ia};u^j={!ILEp6`9<*KDwVhP|fL&p*LTX2_|A1u9+^HB~&e1Iv;E(P!LJIBD=w z@l2Oc%e4)FLHMwjVQoKXp7YHK*vL(X-nk+zt zSYo_+dL?Kjd3~!(Q1TZDUdWVf3%I)#wh#-yu$g3V{36z3!{WK~QQ)t6UG=YR1TO1Q z;?AfcmRMWrF28|()os62@GOHkkhnoE;YJMy&(8FZML zkn69r0UnJCl{K_gMp=*l)t>WrJ3p0R^Ci_>v~E^eK6>l)%%<+0wsOse07qT=Or;!E z{3SUwxhqnkA$ghvgqkf%v`j#t1+#`5;!)(5P*cH{NO5kYKPTuCR%k!~_d!*6k5LQ0 z8`a2BQ|se-=PbnWBVUy_#l}x9%mt9txfFY);^E_{i~?<;rIenRm)FyC6g)`q zQ9!bdav(1mRKzyk!1yb}HGLx-FE97AG~Q`(B1r+V56I?DJNv#yu#pIZLbvb(Y*0*^;M3SHU{c$6~5j7gsrr(aknQA%V7SP zpcPskQhpuEh{eFk<5|>~C_dT_!Z(z0r5eO4F)HOP3K<_!m|OTkWg+upLN#L6l%uXC zUz`DbZ;>#{VZw^j8Py{`Uz#2mAq;}83HG<*4<#wMc0TkM;Ii`v|XWVS-x37_=$#Ci6ibSTvIpXe1x?hmOs_Iw- zfLC?&tjf!~Zmr79Djl&;;D*2_ixlMmP$d7tA!T8 zu!5%djC?}#%PSnd<>@T}WCww)3fO`CS@K_828H9JE-C;J+HBLHER06>7C zv|?QQXP!M2J|J-!FqvD~PCHYVOOcRsx1I`166%1T(G+n(epN=3A1=1bp7 z_3Vr(p>mO+WglDrLtRTEjQ+`6V1+75g9Ix7S@9z{^g^Fdp%TRhGWrhjW&qiWtMtDG zTBw3=9MW^Qw3WZMMZ=!hH02VDPefLZFYU-Th#3&5z4>?Go&oo)c-NaSDMUP=YMaIm znhby%nzwy;pE~s)>O}p|stA{N9Bv=l=7O5z<6bt-Im0(q>vE;NnCYFNJnxTkS(L(( z2nq!#n7YIv+;xz}v*~I(JcU#DA@7FV&qW@0#wl}eBuTst-VR|b{+h@FQw#6 zpM|0tD;@)nMpnN}YU+w!|CB7Jr7G$)(eR1P-g3O3S%6#7LA;zBLPN^buk(}aPnirU zO$^Y~9wAwL`H5>T$%J$mlX_`Tr2m=7ZbsEgcJ>6&IJNSpan|~}5KAc`2Wq#*-s=-1 zi_CVkRP&ZS7g4N5U{J7zA+|TIQo5|t`6+0Brw;_Lh_lQNVa#xKG1aXkSh>m(uQ9JE zjOuw`RFrimW3e`Uq_GqRkE5h)owtNuXp73AB(nNbUjeWq;C!Ga+$GkX7tkL^uF-Jh z?;Y3TXtMe#-yOOQRW;Mzw%eaOFvFfCBIrORLz|I=I^1e<}sai zGyLuLtwl_RtgS3+tqB|oC(9}91)JeY4ezO1WOd8e5lW@q1&dEa%+4re<)TFx%nAp= z+3|v($vHq0Dp*R={-=Ma#}_01R--GDD#=lRVgKiAj^*^o;>+gHl^Wx0nAy7@*}vFT z3X2;qh1?%Ms<v%@VpJ+U(teRv+OmE#kk_ zDy(7E{`Mbe&gHq!?^F^sFyf9sDc(Hr_ds2NIvsms0ib3uB!}7ws};9QvkG$V)Lyn$n`Uuo0=7z45c=n^L%e5 z>rT-%d4O+t`j@u)L_KprgLpfu^mi^LMpK_&l@Omfe4CclLeTa^d-{?38w)FQN<~|< zyCe9o>QAkkQ{eO_)n>`8-Y!=z-jnroPEG$K=E?s6L+k*W}Mzv z0!%JnO{Qz9&QF~;76xMRqJ$}ZHvqOoBM-oyk0tV; zqPkmp)>j@`{TCGp=NB)9zh{~qSw`Oz=44iie*}B#q?;DvasgGab=0YwUl>r&CW~Hk z10B31tk?$$#xxLTyho?S+upYU>EZ@S=GC9npz2vXz)!Z{147`RZxQHXe3|HF3)(Sq zQ*BNlwYHSSPscv-p^ro2z*oDkO}@@uv6q2n8k8d7zD+47V`iV$MS!-s!+}a+gBqS3 zqZ-TXIq0vRkHVDTVZ@OQU=06l;}2K}ycXTL+4_KzXAmtQYM}2;%|})Y6lRLhsDejl zmMTi)Hvyxm_9x^xYS{zjdF;fEu~L~obh~pxNsBTYTDh^^YK__@B$H$;yTmn(r zw3#a31!M-E-d5Xp8}MUIT;n8ZXuO1wn~#e2i2nJ6Yr4)dF6RD<|F}y<%J^vy(bId@ zSz6F(6Sd{1$JcIg6DKl4``yz!P96TmaJM}zaU^*}%tyn_e>6-8kq98~^dE7$ob@_M zGXl;rU^J8VmL%@qwOw*tIiMx zAK0pVkt1%~cWy^cO3Zw8*)#CTft-j%p}w=xK6eRo zvp$LkED~5_(`83^9ce>cWvgt5uT}Zwm_2US^!rDT(D!)b$zFv>xlZl1?Pj;PiIG7n7`z+gqsgEWB8I>k^c7i+`1anFgz~<>9ekj1`CB zc=i9L7`P%ARPq-(Tl*F3Rt=UKJfH?r4C@4h!z;rQC_!(43tGU~le3IWsUZ}1u3!Nk z1$0$HwG4Get#ql=*nEibcj8#Zoa#G*%@uQ`gEb5I1YO&_H8l>%y9YiI+wTD$#e}iAFQ`**X8c z3ZrNkdela>KX$QH0;V$m5rBlEPwg=!bq;uzdhp067mK`V6>47(LlLGkPBI_ibO>SN zo=j)y;|3$KA*-BbLhDas`4H|MU~qnR4!RTk)=QaA+yE-o1wMZc9N9z=mT8?LLl8zL z>~TS`@hzC72(|_i!&W5clSOs&FK8WqMNm7+(Ze`GkwE-Qy<8zv4jPmPP!-4jXY?%-Jt|Iiu9eLX5D92Hpz1<2Ly-r_s&KY>%cpu4qp&| zj`P37@tr0MXX{qi@uO<%7<*MSIT|1v&6mJX;Jc%0bDN(njCosCT-@u#UVchC z{giOn_loqNde@-zN}1@5bzAW#i@uo|r{gqmllf_Xe`hVhL?a%t7(`2+LAiX6z8f;t zP}dW$OW?~VzQ3WX@-)V#DMUAS`MpY8 zFq|Dk293uA8f~C2A+~1q@){K?sIOcw$5)Vk^%OOt!m+?+h;>T-s!FJuBn{h_MTr@K zc79-l4|#IjXfVst;J6qcB@-#TB=3;4jLL$IF?y7+lvH9Dq98i|LW$-LH@H;GTSEvE zl0&8vlUMaDB9e|};O2eZV~1DOW{X(ib{z^2be`if;IAoX-NA>>M~yzoGVDRASW@j6?)Prk_(AISoGS_R(P$Y>g;Sl z8vDQ+tB{vFjxaP$t^7eXGHud@JWoI+LA*=J{jc~Ct-OXGIHW8HWcV!Y@JTVhv!Lr+ zf=(K?AsG!UuFSI!pu1n73v*)st;bvb3eC!dN{BEbS~!s9J6Do#Tpq20#q90+CkB-k zv3--|@&z+H=KD2Ky-Bz!-;x3<9@O%$h|Tdf8{Wp^REzzmhCWIEWY;>Qn$L zoBKZEE<&K}M^%z>SGWq*TGRf>jK%ui5KTC;2BJS%3EtR|ej;l#lQM34lABy0bc^v_iRon* z0bNHnQSL^xjGpNdy^qHaUKoS+6rCrED1#lB{QST*q@S6Kh2l^Jow3?s&GRKIPUDJ zxFl&Da&?V;hZ90J|JMOy`e6EjFOz~?+1f-g8DK}7_N>unn{j^b$7S*8cP;!c+-*7J z!1_g{os?Y@`UIvSW=6sxDku>xF)iQB%dY%14RS@Ec?x23W^@UjVa9-RI47qeS3Xj+&etyXiR|opB&CV$!W0eDKThbEW8%N# zJgDUZR_k$kL08T3026`m3QHPf<~(Yw!ei)1Tlte)g72`{RnOTU*Zxo&q7V+XicVB6 z9=DD7y!Qg{|=PPW3TRoSqsJ zu?TQahNG$_u^fqk6#_*wgMX0Hx`ktYYkB?Y^K!2Z1iWjbbdsR!IFcq5Dx-}kR~DbM z7rZj>hM!c@d_6rx5-!3Z&~a^G6wE_WcQZnlh+4GaCL4ap-IKZ2Lcv{*+l3kbg;64f zEwYO8HPf}B!~7e^Y4@D?vGJ+0kNWMC*3g}Q{q>a?3q?Q5RWz5;kG&{pfdX{0*;NiD z3PN?~{RPXTvU^dj3^q8xsPB1Q*0un@n7jsVQ61XXV>&8{fR^Q1NWNus*kcNp(PQ#Lx>2n=(Oxs1{lfxG#mW71k)-?bx~axjwDo z+=qaB)hETTLC15TZNkKPLe|lP2g`>PqTF&J zTUAO|m#trWd&KM5? z^A1%ej0g9+i-S~A^(rw6-cfinQtz&p)$$)M|1fm6^UeOuSCRW-d*Gkt?sDcadPeLT zEu{Bftcys_dvs0MbhPEo!-G3~nw^XM6VmEt@aV=hI+shU1z#uGk>@oYWrVs8=}35> z9%=#2&u~7wqEVLerd=}iFVF7D(QLE3xUyd!=8{ji#I~EKy94}?;!GtiX;dnBZ6?KN zfIo_{$+78+aFx(3wFHrFgk54E5+_v1P{}-yEQHuY2K!p?2eC46`c)~@izTg{6p=A! zaSLzVKIx7^Z!|BxJx?P~?zjbn%MCxbjCXPG6R`>=K#7O9^W~Y3kVGTNNSCu1+RHN`mm6?~$G z!6o?nUhyjtJNN3Cb+5jMtSlUc%$)OYtyBcNm$5uw-|cO@hI(XiRg#=He=AqB*3IhE z4i+|~V30*0kITixNZ_vkciFJg`C&*g?@vAaM#76?wr>f5Y3f^pG(eH8AIR#L7T@41 zK(G;Q7SG`d`ZmpbVwMKzmF2?407HwbARwZ@H}Q8D;h`>DGkA$!>e$&%DQBn-@tpj6 zrs5;Q7X>Li#tb?6ljVZDInDyQiboSsg4GohDQ5^8>$o(E{T3odW~TS)YO&Z>_l=`x`yQXWt|K=4Wl5?e|A~JEx%Kg89r9#K%A!q zLw5EE2kP3ZuN1O;t+I7hZbH$}wKspGA}lA7O||7>XKP#AJSv50`S*o%W2)9ScGfq{ zY3}RjpM`7U`+>oKWjEP1#3_CvD86_?he^&4UqWIFE+IEM$(z)41b^U!y|xzA*DM@M zw38v6X`?)LsV`We@yDiAapCnn(Ofk$nv=}*0JUXG4{Ze+w$GU6cC;RK^nKBj`u6$o`nB`p(P7iCUE z4+7JE@G}^9>u0RUhJ675&vc5P7kWXn45rG5A{|d%YXFql&cZQoYcb z&VyJRSVC3zRR?4ThFyo+j^NQ-)U%Jor#E{gOm}PI_gJrcUT6F-YQ{g3kmY{1j{x=` z0_+D=UVfln1;Y2M=hJ|bg7UqJI3mh^&C=wLT~o6fPa4*t^)doK&j6OYl%Do!u%yu( zk|P>@P+0)n*TO+L#L@&{JDRg~J0h)5(pE_yI`-)VeSX>ped(n<^Y7l?1xrlSDT7w1 z(PP_OuFq%FYV&JGqOtVS5@lJ-O2yz@zU(`5W)sn_P0Qx#zzzPbt(d(&O@Wca}|NxJqQ zoL5&kn_xoDJ(6f~`?&QZ=k9cA(oWWyv14AKP#;wmX!v*c_dlEb)M*>J_qT~zN=5_E zzpjjpjkHw{NtNl94ju^ry>5Qx$F0Q(k3aLLE2@sa>TKp!&S&@gDp;b~NbtTz<9$i- z2Wy;8Y94;WBCE+vED&bQJ^T1$5xC{wH%tSSl>7*eKuoVdx>6)TEPn9?Yfq0MP{WF| zeL&_q1l4IMfcl(Y*wgoOzOj ztFph^sGjCf!zDT*?THS6&?{>*^+lf)-{!BqHOXonsyy(t&B#TUE@`puCuyrMtYx0B zv3t9MqpTZmcQj_Nwg7J=6bzah(_MXms6nKDQY~|mr*{I}sa;d`N}&kV@cl2-G&M2s z`{1Y`ML&e)P{!ytNJ+rTx$)pNAH~`;=R%}oxO10X&})lxU*3nw2FbbI>ALj8Cicep z;pG+pL(2?%oSrG}shL1L9eyL9d_< zA#kAEo>Pi=b4B<7n(HRS$UoUP>g_|VX9ol5*UKEH&jq6P0iGN}`{$8m zQ89fx8m4G^CB3X4klD(!ry#Ihgf|6qaJIR>5Y1t=k;Dn1zGuclT9o^v*M+^fqP?uV z448?D`at^9j!kS|^dE}3wnP3U8fz-G$~1;QVakrOe8SF?YnzTsiRozQPv8_p-Pl~*)3&A)#3otdAI+m0@4+l{paEZ_$#j3%)M1P>Q+ z!_Jd|3nq(0bA${rj50oXKx>NCD$cC{nZuXYhO$53U7@g(l)-DNIs=5I?~1I7%G5xc z2cu3CT^fWlAN;Hu)LpI&N~K(MGiuGVzzz^+Om=+pQ%`au!Cytx#K-iBvN}^u^q-%q zm3N*6dWz?hihm7c2worhKBGWTL&9tOiDH)ivkSAMs(gauuIvQ0jk7P+VSFqy>DLJU zjj{JTYJJzyt8OP{6Mb(_vc?f)cEBYx`7$1xdAnl$mtP(XlpWDPsshI zcl%e)5qUSjFR9>>x~RHu3uqZu_X&hO)-R#d^M->&4ja5s&$C`r!i_K}td8=jvowL% zOrI(pI2&S(*Wf5#q@O{pf(Q)o8p(KJg7Z516p%h<#y(b^`QSUw#AU(*L%X#jjgkOa zi@(?bTyBPwObe@pq;X3_-M1Ed3Fobe*8Sk!j(Slw)C-l}mV!_8BRJ04aAe@fbA!|B zeSS8{Hmk*{{-$H&qHN?LJF#}whiGhqV2ns35?Cu=a}ks48sY|jGeJSVnPB4VDTV|J@nu%|!!Ak^_>6aTs7 zXC4$l2v~ahZ@imCjJlgNno;ukPKv!cpTtRsBG&s)I`Ob3WAxTHnCK&0HZ=eH=b0o{ zC~NL(W@eCu;nksM5r{M!5(8_=9|)gqUE7bDQKt`&|FgvD68j1NZ$*HMls#A=6bEoS zoE)#k1uRsRs?dyDB5U8FdA8bX1$8iu&&okN%b*w^>7*KRAK~n4?8TD@OaJV1B?r_q z;a{{x7bhXc@dAciGY_Z-AZ1=l^V7A#@jof@NU|(Ufu|Tiu;EGa278@ITMma&VLlgc zlI-tGOwaR{; z1-crTjxVP1?A2Ex*!H-wK)~j-k#(W+;M0olIq1f+;Dy~YIy@kSN!|*$es#5_ zyN$8YA%=Lmfer_J6Lgp=0oMIf=#*3tIttR5!}9-uDnuEfOJ6EC^ZEtdU^Hxr{!=CE!COZgUDipxA3iNpKIw+*bGWg1Y?E)6lSXLQjN;rS$OYiC{64dJ7lda zl;S9RXbU|!J*xsRbmazOF!ZV)eBc8wt)aJ4y`%H3tQ&hqJ*BZ!Su9&i0827P?efSKk`^>(G~Xn zGucrGhF-a3nNq8~@_dEQtc4%I3!~Mq*liwNI6+XXo8#u+<2)+=6lQ1Fp=6z^>N=Cw zQe1%|dEvUG!jH(+z7GF_8(YGVH=CY@XjZ2YjrKT&Wfu-7$&`OekiJs;Ly4Yy(^ji; z8Wo5?Tr{)li~?$yszz_dp2z;-y3)@&8?jY*Q*J$bdPWVrJK>BMrmhbGQUw~f5BgM{2YPnwYj|j z?_QX6(qKi)YSdS<DXSvXDS+XAaujvuWT895)HI6PpazXNog=JgPtG)<4W-$k#RZ&W&KE)HQ|!~UcOpyYKJ`<4 zV*2jO+36Yi5d5{zE7M;1MFsDPCX~plNa+vq4_ID3(F#qvQ6RJNF)2g#7us>t zI0bp(l2x7Htb6jUmh++XA*oN7gT_h)c*>kx26bu!s;i1#WV4AJgxw(g{WWm?rPquUD*M7sWNA=Oey3s!sZt(V(zGph(GQ8jFH|Xfh0D8i8 z&jWsItA!0YpKRaI+gGEaC3*Wg5u5d1l7ksVgVAhqkae3las3qLnz$wehar<0?Cm0~Q6 zGzv`}PtL5Y``NG-q~)ma&fwq{ zW8U_4Ah#qOk=4=PqEIBHCZ-O;D~IJ4izGf3U|oH__}c!5AVWAfQn3z|6cRgR*e(%F zjUxXJu6{XQ60J+$Lf=C_;XeAFDFjXd;w-z+iG+BY|6nyqmd`3;?pIG&+&R~#^pH)m zU5vZ^SkpGt=VOl(CMo@Hlz*pWhPL)1D8ou?2!)k(Ma!<2RZE=cbKSU6D6d~aMyT2* z8f%*K;ZLk(83bAqLNb2ruIoMEDF&?GC^1D6hsoTLPyrYa-5JuWZ2aVdiSRdB{*iFu zqAF%zB$mg&)YrXZ6ulDFXG4CB6iJo`LDg!*S*Q#%Mx2NLZmc@q9`s~!+Mr4amq=S+vPasz^Z?1)`R0`V+`%z zAFaVDjOO)QKI$*KYLs*LH?wj@7e4+d=?{Wb*msrZogp91`n zVbp1Ep#wKk-Td2exE@07(e@!3?MauYR9O8<$h*G_zpEBJXZlcm$s(H)undVuU zE?LOE#QHQuAz!icOkv(6qo?=8Pq;+ZGXa3xAbll3X)*3OkV4B6vI2>P>m}x)5B$4} zBtHJq@s+-8OHb-ysT}7&b5vvI=>NP@y2B2AmKF3uSDDZYODGq8H($}Cq!;bTG#<$n zGqa|H=voo8^0pOuK9H`TbfD;3Hc^YTJ+1%pc5FQrVFulaE6tYJ^}`1GSe+1?Bdmsf zMlx<%q42vHel7_GRQbp!92J8hG(UZ?s|@(Ncph3<42HU0#mtv&^Pp(QA-KYBe`@1YB8cVJ)_O-%~%=@DN@t>vCAX&=!BaJVb zP}WE7r7j3uJ_H47a|F;mCW;xZXV;HF-&)E z4E{d8kGtJ>6+aobiwE$;CC16e63!WD!N9Q2&wa-jIFBhf!F}}EQ0=Vb=h6H0_;*j= zWvB{KNHU|HhOx5ey(9YwpD7u>KlUj9!mgj-pM<8(VUsA9V~3@<%@ExBQmaOZZ$w!% zzGx1AIx-*9#aJ#(_Fc~VBHn8t^_V%a_Nr1;u%)oKCR733^drzoux}|n0QyH1g3^R-<_$JsQ#`j)w^n(Yinj9UQRSG?D?R`9SoE( z6AZPbC{yf2%+G0vr58TuL zi-J1=Yp7Y+BEs0CpSygJ{{WQ?1o0ab>);OnMo^tCpcWjJ@5tAT3n~WtpK^c$J>y!- zNw2mES=2LK@4M+gTLsUP?ZE`Ol3$h2u0i=|oDAn&IqYma5Nm=GVfK+s>3U+1Pb_B{ z>kCX&tBCr?kS#d^^TJ&?9D9*X>O3kciMT4lS+bd_M2Cc3tRn-0KA7xvMmELzsxG{K z;NaU=EgapR0hDVs%i7Oq6fc8qQQN4z>cWz{w=acyh3veaq#uL=6F^DWSFTu+0>Oe} z8Wu6$`gG@rm>Etc!t~sQ!hkhB-p%n^a*x)?e#HB_t^{YHeZSo#AVnoRTPK3yoR^_wLS>TT#!$SJ%wQns@VdG<$xw{fq72rAO2{RaPf-kIy)ivOn)AkSdIE?&aigzjRercL8A_ z8ut#BXYoKx!uh7h>lN)g;E(`XJK85a5)95px=?bT$#43)w`Ynxgpvk$*+t=#gxLoe zX5+wv`K=4MTEJ{-%Lz`YZ?EiQ#hx1RU&S8QK+x@8Ip;oi8GzF2HhwBIty;OSdOl+A zOX3_kvMPJ`^uDNC^7hI76F(fkC~pOCGdG3C_quCl=Iypvu zl^0MbHI%S^DiTK#%qxSB9dF8ytFFjb;7ICgt)Uw@wf+Ss?XBijksso=QL?Y#OHln2 zu#XtQ*?fofdWDir%#wOiI^MOi8H<8>S1+-T-WiXa>ootY*PRE@JUpyyk1e9O+<{?V zI>56moai#b;@y|10K;r@Y72Akfw*BcP8DWV-o z;BEd;SYYKd7#r6HFOt=(})HDUw{@uv}wI|*g@~rdT_n@2030N z`40r>WYuanjwPdbjvjau+XR? zf8jRs=Xm^eRwFPCo|OZU*6<`M-&Y=YVS6C9zIhG;WnRcfAUV8s3+E@%5h-bt#(rFvn5k!(OD2t14H&clOCrR4OA)^l1Vm z?~e~-HIEeU(85^fn#1x5#(w0~Sha-UA2D-X-2#lt~`@s($VgMe?((#R6WSN)}}U zT2-U&)b)G8B?XAB6UDMwAg=ZxAT)P@^D&}w%QIsrH7Ys%F&J+Y=CaP&qaGem?w);5 zf(vG{csxe3{=8j&{xx*!h}NH~8MEzM_K%Tv;y*a6N=MT(v?X>XVKkCaI;zUHA`xk6 zCNx@CV}@4*53wBY(zRdU8-Jro4SO;Ajh6Z4GfCcdsxVJtu|~ z%cB}nI3A1+SpLGqmCg%`r;*I z3EqLAKaynVK!jb-w_?X`N&GZ;|F9O<}x&n7xVR% z=gv-}>?3{g-eCEP;$*K*Kn_roH`Nyq2UJ8gMC@2UGv`=e)cJ4W`NZL9bWuM;g$jXU zWJXouxo;cbqlMTCieGTQfqX6z+1(KOMQG2;VD=KtP&FwjA$j{lWvK>2lh$Zpj*=g( zGNW%{LK3fU_e~J*@7NW0oe(NBpaIG8zzFP7 zHJLSrCq{7p`ivoc_Pc$^&t;Sv5c!<0#=g$FvQXl}c^T#1mQq`Y$DW_`D}-+O(#ooz zOoJ2zDRw)Dxrcx3)R$kMgzL9wA4arw`fHK=M8a!8BYUS82D)=+)^w-c4)6Xu#u3`{ zNYKdF5tx-7v?p&LskNI!Xem|mx+OM`y1&uP%H8&z)Yj^bPw`BEVZkM3Gnmdkk}b~t z-OM11h47Dyp z7t8T#$p!nym-fR2zq*=03bakTVmzeRX8}!BJOLPPJHI|WI(ZuIf19&Dl=@-qRip1? zXMbG$jN=8U+TLH9rrZCqz7D@@yr(_Uxk|eVyiyd$yJVm<&8&K{vRAxf0u^!t*49Sf=1wXJ@@}P<)kGK+aJF38 zbPxh@9wm#)Db7->iY4>)Te#HE{Xbjo{qI=Be`p+h98sg6Iu5M29CFovx>=k^?< zM>2CpgChN8VUMB7iIM2F>k-{-WA<-F)cI|W))pn@GfV}nHwuizNUKv>aCVuEfI~Q; zB+Dxjd=FW5LN1rW%&W5opihebU-(G%ael`89nF;1Nw|V@_kmPG^4e2|23Mn|Nw{6| z*?e8)OW)l}1A#U~HBkS}zmy;a16K%ecp6se3}Mh(MA!*;?9IkF;qe|sEt7u!w%Lm) z!I~lemwasSN!I{xao%$mseo~D;7gma^CFF9?4}wD0Nc;rx;mh~P0-$v*xxuvO1MAH zxC^Kg&75<^6?B`&dy|y>%(sy|`v$C^`rt?0E}eaQHVuEA5l(fHshux^=_nzUwt_gb z0|!nPD2$A6+08N-3f9!*)?L+Sq|h-FD$j|yIHJ;2dIX0y>8~|%g)q(BGEUJJd99rY zqx0RW-65^9F9zO=@GD94R~{ptTH?@dCj0NjDJ4K<>&yh`s1>;iqyqO8-ay;I;PPx0X_X8K;3kn>sf>_ETl58#V*Kv{Qdl`@;@8RnSpzISKbh z6|=FEj8khN-ee2f*e{(E`O)g{P<3_`=+bR2?%N+S(E(yc{)3SSm;Yd7jQbUaYQnz< zL~ZeH_q6Kn_7F1xtD>ROt@cTcFGd@K5n(oA8=fR)T~JpAXqx`|t!W$QBQC8{~&=h(Hde+9RYo?ICXzMI4oWzCmZrkKRPNxni? z56rUHmQX$QQI}rgpPl*nzO^Qeg}WFt;{N5Lb|YUEvNU0j1bFcQDc!y#jN5vZm%V9& z%T*PDwl-I^K&CX2?nO)E^KpBOoV0l9+zPrO)^pro2jR8wLgkK{bvr==%g)*tA4%j0 zmKC3nDwU8He}DSBTkvmp3%%IFSfInSG?zkGX?tc))B_1nnz7n1C7M4fj!|&Pz%VNwU##DmvY}jXM-UP8Eb&f&Im^pVs!? zo2Ya4^pj4Q_{`ZS+E{jT+Pa%~g&5kAe|lT~u_``)V_vJxCSqeNr%au0es&<$sgKOJ z@Vc3nK}BA4-ASfTVlg#UXYUDBtMwd9Lqj*DDj}25J~!-)6bGVB{J9R2odfnG#;$gXnsU3D-)PEVaB};wlPXKtSM}?1{-!{{YDF9=R&x` zFbB9H-_dx*a{pfPzS$T#W!IQFNAA@O>_8Z!C~Q2B3OBp2UEert zzSBgkd9--g?POnO_6hpS#1AbQo`k>MY`63?2cVBUvvbleK zP>*<6tasYI5IOR(n^hebe!fzM)oYfAWM^%=Cd}leUR_c27GYR2)eyI9Le(`$a-ojDy?`WAYttEg_O^P z_*1*%2t{ps#wdp7OZ<=DaI~Lsmqlx>dwgX-ku7#5kFf4&JWAh=S!&9il+cg8%c5Ds z48n>AKktknNZ69HdP|8v_m8$Mb=!BzBUeItjog<_LW+`^9IEg^bt{kNFR5N!Gg(%f zm~g-GduLxsMf$4(NM{Y_@K_}dW$>PV&tdNoZte7t|UV} zx!n#?`Y@8i5sWREq*}6#ijnLs7L1Wx&{NnuY5?j$z*ovun+i>GWC4@%5*`>(fnkkH z=LgMfq8*P*^i1Kpoe!-Yw5jqCRiTmqben>&vZl9YCA||qx3ZgMa@#{LPPD~i^rspZ zsQG?4GC96%0>uzX)*SV5>bT*witQAlVaDqyp>S)k^SVbj<93i-N+%N_m|Y7MF}5=fTW97qk{x%y0sN|9Kb#Fb9drjB>fyv-fmF4evcG& zkR{5XoY~RcqL7(tQ>sGNLXg`a&R01WDy4UkE}uCpKlFt}=?zz+$F)bdpP+qHwLMCm zwMNTfJN^+A<~_b-Kz}Iq7}1>D^7!?^6Y;boSAYEs;rYcS(00 zzN*^P$d--(1fTJ3FrDo^N1;NmZ8LP9Qr`4$%65KR$c;KP!yVgt-ecl182k zS~Iluyk#;j`XIuG9eDpqxsbUXKW}tnztw4|0(LX#l3-?bKM=i05F9CzsVxo@(sm6v z;=P^ZK3%@KDA6zl1WN>8tqJa1ff-$7`AgeClHAF|U(3GagM_aoL*0~?nfP$w4LF+p%zuR9+ZpI^+`J0 zv?tCWI-%_9ipd7=oQrvX`!8wZg3bW|%A~fcrqkkR&ly*+O$o*TqGU|{_b!}HMnK#L1fga$wkP=Ll+P&u{!-odTu?&tkDjF^RuB`2o%Kb} zL7Ho;AsgWMqOmB@v2SaxEw&4_P&82UJy!dc&{)qo8Q)7x#fE2zP?K1GNP17abKUMN zC*Gu_!+>`C_pQZ|o+%~h)601{)_xhvtGCk13TtH>A(+BP(N+>Exz}&M zIO&$o{rn|$X8AkXGPB%AR*Adk{-Y;I>{qseC&_Bue)j>tGVd>&c?ngovI5RHuP6Oi zLk}}f*ybLJ&bpZ~SU&e=gP$kqH(<$(j$ewM3M*ItHo#@?! ziEd3`O#)6-crZRgl3m_Qp-g7PV*i_jX?HT?80^9qkqWf6I3638ij;S6f6Sa)#V=J|D z|KX{i;9wK%<9hMDRs$+kQk(2P1=;Fl5 zVLIY>R&EX5!D=0n{EQ6aRdlqaCj6d2B`X}2=#X1IhfPO9yt5$8Fw-Ix5P~{65+ZD# z#GW|1nPT}pheB;QcBRQw#nZ-5p+l~g=Iy-0bi~GjR34eSvj=>2mZpcmZM#w`xyie=Nw1@f3uzTf>)Z>Wu z$tvpr&(Yq8pKMnjfye<1>HR>YAw>U?@h)5cug=0ISc_)iuQRLEckgRS@hvz!{W-+7`x~us`QCfBqj0ei~26rB;wEoB6u-@3y`E zMNi~tJByyV7&hoMFtV8z4`#OlKZs^Nj-DgXzcj=1N-{0M7{eDBnM(g#fgiT z?#&oe;Wz*`_Ny^E&aa=^lE;w&kGd{yzO46U3`^JJ(o}68;24axT;p!;1jaPrB(92W zVuE?z3e;!2YnPPA~1TiA<97M{N^9 zbi&&HYyrqyq~vCLZR$CimFTf|`cVOwfKyZ4wqT7?@Qq_I84FDSiTU%3F<<43{A%8l zn8-g^Ff3g4j)J7O`(}%r11lowL(fN0DL5}%@8NFF)5q!Te}$pZ)`0b2J2eE(@Q`uD zu>PAe@1*2+lVlNGB=qc+`paMnz_<*<_bLlAM32>lC@(+6 z!r)5H_!de4Fkec6(rP{9>nK-Gc;(Bz-*`7O+9mGOVx!9VL^0cjTVzcd1`Qq>f5Im2@N$+70%Ly7kX5(M1S_4>FFUJ}l z*B3QFRIXg~^l4 z4!?=6@({wmIw#sWWPcS8f z`a|KLe{X;9`AA6>h-NlUmzyk%X>#+?d<~J9ZZ2Q(P?seSHMMlLIs;)dpL=&z-2MmK62 z@=nxsn^&Drn+^%0)65 z>25z^HJi;?+MeVq{~=yaD)nmnxV%7OZ4(lV9ut!HbqY>D&3@!9?|~LHR|nKBAVrv- zVEl6#k8tY1`4Lpf89I=}%xeu?DP|M%0`$bodwy?r1qVrz-#G7|)ElE7O&PMyfZ7e?$be!A36);Cjzq*R&+>jWv5adB=sfJ%~O9KwqGRw`r5sx4jjxWfy_X% zeO$sT>uRalWaLtLF7%Z-bD}2|6hHQU+Ils>kdo1dH0?(&>BiMiyPE<8gUG7 zcLA)ta^tBv-0(Og{=2L!D(q&R*8d9Xeo_D;p4OLz#bFSgNG-xvNqGyHjw*JC$Bupa zC~Me-uNP^ho9%$=3~=k(KgK!;&Ck}RZYE5Hj*gKoMK}C=nROjOjyc^dvkL^Wu2gIqlF25NE-;&+}>o$D`*mF?+%_T zwhjFZ@+<^;;?m7MyAcz*jS_CWBS+CL_z(_}$D>HkT3$O;;tYxqPB4idS888%u>j~D z!Gb+V%&fjL>?{+MLQ)bu!z1qC+vh;EqMOm?1g47+0%Z2>NEC4-bNjksH(Ofwr%&ck zp|v}djlLz<*R(Ge+_1ltdB0HD7wxmJuxS_zziAKmVxj9=>|72W%kjRA2|mR6weO(v zXTg)5c^(f7t`9!*9&v|&lv!L(BI$!6X+g5YJ;e(sF;CuMv%XZi!dZYl0(34EnPDrbuc4@9y=VbfQ2?{>um zR>g*}@$guNNh=mW%Xy5y<6S1@Mk3dq5<}z1PD!7$lhm}FUX%QMCT~Mcsh`TtX;nm{ z;+QX|;Pu+O;Kwsr9D|ecMY~H{qrmusr`1_2QCACgoCVF_S;SQAJ5If7lJiMKa!w_8 zBEQEpy_ewd(NN0TWsuGg?Ki%sqHMhK5*JN!L9_o)D*IND z@vq|L$>oBc7ULIXk85U%N3h7HCnTZ)NW#K_&RP-8@u!9S%8PXxneOTo z#2yIe26S^e>Y_ZErXwa|_$i->%Ge|xY+IfBNb>1adz7=R+%9`3p1?Ig(uov*RRdYq!W4b1spiHS6y_}nHzPTqq=YAq?O3I z3vl&Mni;#ONNZtj-)_I2+4siH3&uF7G(VIxy;{z1;$N18{WH6)nHY#`k0_isf6q!V z5gir}IMv$K>-wAaSKYL{wl6$%l3d&txbE9#3;v3chONvIN*%acrSiX3?5(hq8#CVu zb`pnS1W@+aq~ak>)KA1Nz?(D_{PAWDt37-2lK$d}$N$ET|Ag@hcE5AhZg0Jj&*MP4 zHon})5BGX8aZGQwOwKTZJpthw+2b>vghM|#9{i&w#rgN40!pF-{)CASmHF&WhCE8Q zV*5zi_u}g1&BnOwHouj3Xx<00N_pD-&+@92n74#>3{ z?S}V#)|)CI_)+cUH%TUbuk?ASOcif`Zi^4^?BiC*mVgA71vMLyuIqZli)yZJ%<)5k z8h|&MAe#qf`=K`e4Y$B;%z@E@&w`>jiOM?dXJ@>Pdk@i!Gz>sXWx#{V1f_m zEQ3m1v7_vKHLnT{yAfwfMuiiheK~wt1a1KB8tT1js=|b8_e(5a9EhQ(CTvnoT)IRx zUPc4`Oq%OB`Xin4sD3wxS7UvrYjbkgn!MbxC9`e^^&fnQj$wwwQD+U2R*X=G9%W0m zzV}z%q?{1eN>`4RfW6TE`aF=#^q8>fFI-jP)FmC`LvdxF|B{kRzO$)tCsl*fg4AXB zkhDQzj}4vWGamimBbgvLQk6@=mjv@=jF`YnekeEWY_9`RF;iRN;=~Wj>LCY|*I@gK zZ~KuIERwL}s%RRPM4G_}8Q%@UJ^~V)Ij&$tj}c4fRzPPeF?VZayuugRX9;r4N7t)C3maDxGU! z^Hs4V`mgssd@fVC!>~@%6cZ^tN2F!kai613f$jC=`D^5UuS zl!~9f9l|$qcdB{HUj(B3`~6>%=`xEy<0w&jumn_-u3Zmnb@AQveyv4KztAa^M`UC( zl5u)d;1_hKUDA;?;q8Gm&F}rrqm#;GmfnlR&_nc}-weXtfbY1q--6RZ8gY&tIvRo= zVZ+kacXEUTnLTMI&1{@#4NY)jY{t(rsEz0aY)1x_)V({qqTZeqFf_&8bbz=M)E@m8 zTRYWOZD82atk@$!|L)-155Q8GZ1~<=1C_I%slv~K?$s0iC~uRA`FE~F^Tw|i<(asU zI6~2{3A)n#N*}2Yo4_f;+<;eJ1n?+g*Jc%%oBaVgYfArzQl54vvY-ZC21s*&8Kxuv ziSrOk@!q|-96FPu8-sTNA3D8DC$ZAI-y9|~UERhu6h)^_lEA}4!S-0Apn&>y=`7Eb z5VxQODs_u@cW%&m545B(l%apAB;=1HK%VYF>f#qEho;e|VBKHs*+q5(Fpyj!W(6Dp zfva$hmp?m}Fn_Qw zJiHI_IH*aE3fwJ8V(C?<|3lX;J#W6&H-PSS*f&7hC^ABWi`H_WNtbvt`}FN?+liX< zhd_JmnM{qLIbqOEL=C9Bk?DJ0qx-@}rrIWe9tz00_Ob}gZJ(G%ymP^-x*yNF&Lr#x zWeYqAn(228Fh2^~R>m~(u9W?oGrAchx;CuE9=l*|BFV-fWv@SLlQW#>_# z`Td~OgT)$0hH2Mf7w$L;K-VH+vQB4z^kQE_OJ;u-jUwxHT(|1`rV*WR^D9XJ{e3?= zm#hcv=e+#Dwwp@rN%GI%^*)E3jNC6hNEj^wLqq=Hr${TR>Aw@xwWV6;O5QUr%v1nx zj02R-wPXW8KZww$FyQNw!3PP3yy&CeyxQ6-Z~+FNLFRua*MKU5_~7+^L%!1|J6Kiu zcKHycuF#X!PLJ(B6CqYHb-aV;!PwN=xVWzZZ?ngj84jd=9a`RAF)@bR;1b{R+$`t| zNt+cjzyT<0SH5Fmy~EtMnvUwf*0{f@hw0X7FgcV}9o!Q(D-r8JI9H(ugbZRc)%MRq zywLrmS2M_Q1Rk34!8u|@svsv2Q!0va+}XVn>@9(w@V}`4sLrH5_y9D8L$`t4jekZt zNv%&=6dk!|S#G`qJf28C+2%mn_YHiCe9wC^9pUe%LTwxQ%rX2@l+m+_v89$xiYNuv zT*Y#o&%T6WKcu9p2g{izW)2o5jf&rqAAvaBnMZ5+UnwdsHyI=~flb!}`>`kU6_Ik7{(9B=?Qi704-(VE@Qu)T zKPDH@Wa?EVQ{KcUlT?Nr0+*sw>AXnY@lVZn=`|HtBf^nssw|18wFE@QF%$JVv{ig( zPWrSWJSX89#GfmLe`Eq)ksoLGdD;(9xc&JGRQy3-`zFyi{1r)@@OFMjVjo9RulT*! zmWtA1f$2SPsh_#>4J2*LI!>4tp|)pR0ZSNLtl#upbsbK@g*iA5AlZvtUIW9LyO5*! zyxQa$2^sN5ecN#DWdj^W)$p{bO&zZSQKAVB*dq57Ro7@df$Rf;U?<8uRtH~*pi~QpQ55s56e0WJ0-A*s53sGVh1yh zBoAx@ozMH*4m*>6K8Ww>AyeixV|Kl=afS_zB5UQmr%@9&gd9ueTeuMfiTJ%1uoD>M z!q*Cl(0GJXFMXJ3xb7#{+vEDTPy;75%QhQWhs$xFuflDCn`~N>@eS+Z)d2nmllv@N zn!NNr{U@?@3)BD*{GNE39cbikvS<*p2nl`i_vtIid~^c6ib`U@O4szvm#RufdMjMcr&h*9p3S)4Uc3jQ9bKh z<%CiYkPwV-I`sM7|?uJjcjyjbsb%=LM)Lc)a!4 z*u$wTMTS2|f@p(>AaVMlb*tBo_Tw~fN3s%>)JTSS*UK}q?Woys)%{>m(yM}3;-C0mliXGOSOVU3YcINn_sjki%p$+Rsty+UW@V){_qCp^QFb~)PkMASOURL7*-DR!| z=>`^k%CbmmaBLbPb-dcGXR?KEIk*haOXYW^%W_gVFNhq#Uw#PXt`XHIqwdiIh!2Q{ zw_k3%@GYEFz~x7TDMRbR#7P>xS1Gc|#hw~IdxaPK#uYsr$^CjE;Q<*$e%26&>EXb7 zpAAnqpURLxOX4(Il4WWjgNPrmp!LD?$c;u2IlS64=;|kot8x;-mZ|HFK1bI;Y8H`d zzOoM`4muG?W#*cTF>mAyY-~DJ6=rW2Y`&t6)9f@9+#`pb465QZ5AX~TQXww!b6mad zxs3NU1p?F%WYUa}KiF!*r4lK|VWA|qasO&BN^Tx^&Dt$?W~u> zCsiZ4>E1LSdCf4^*KW!&bur@3Z|BIiz@vF;zUn|qkxwl7G|u`P<$UQwwOe{~{LGt} zF=V~?sYdt%&1RH%c~kA;E=CYmA_&t8>I>R>#|UW4wZ_K1bY>d_H4h{BxO{Q)&8a=E zTf*k!~d7|WMa*Vr9<~Q%#v4sc;y1o6NfBLx>HvZG2oPV0G@6m(L z3|q$sr-xRPfBlv?s!TiUfSlI9acpWGg2x|Hd7H;bw&*Ei=Xo4`w_*=BZ%NG?9fS`MxZquG@cIPd3KBrHJ_00qFeI~?Ahfk^(PNM??b({xO+^Z(Rw}h zDdfjhxVA&>22nxoR1+@tORhh)D{a;{$g=f>81?7116O}{a;JhqQr=XZvF|Td$EFQ9 z4s70$LT5*D@-BKRNx# zuflo@UUdlNiCKr}nQGX$)R1tXK9{U{}5>PqLY3)$U=^)MC33i{j8~5PKmg zx))is>A@1rT&-QB!O=n&W(ku`1k|y)32MlW#|XJx&7hz&`Utve+|l)%g|^aTtq;{W z_~i+cs@WC%;v`MCV%wGZ%?V`o_4}<4qXrtW=g)=Q8Th93$=iS`hv@#5LY3<`9qP&j zYMqEDRipmXs3pC74V50V_j~yMt7q$g zsXMeIm1APY^*K!J5<}b1g>kjdI-ztfnBD+mrLJruZ?4%f-FZ?Yrn@std}>^gUGoYk zvPtoS=VV{F4I(wBkr#tm>pk7Yo)Yaca)yPEG$cz&kwh>R%5gNV7vWo`$uBftjT3_Y zTJ^@M*fARk?QRNnr%cu3qO|itlv{)_hP}TsPx*`an5XwKqo~~bcLUN~`ha>g$B%TNFwncklglo|k0_1RD2-WlgJvuuEZ6}H9fy3_8bFNs zos!C$ICmk#iT}2-hKhdq!N`yfytwrUVlPN&gk4cmB zx+z?;qEXZTs46V)<&pRBy-PU#X_2-xDoT2n!>{+~85w!xC(ouiZ?^F4F2d&vxhu01 zV$a5po<%dv`U;N)I%uK1snmHRmUL`5jTA}0ydR{L8qj%73!(=G8PSsS_+SO!dV^jcc&Adk0?~D` zLXuj6kVoV^jOPgHhcGT`)U{B%^BpK4=SV@lDDPlx}#aH*ntwepfe+Ta5&3W?rIXJso#A&IL~X!DS{G( z*_~x)m?Ro@27c4q^+knBZaJGZyN?O`dk-QiF31jc7HmzPJd=-3QDdOL)t5d<4IDX% zwl;ZqR$lm`q*osnjqSPkvwSNCY@&NJ4P~I@OB}Mfh^N2j635NOz}}R^-9*R!*zZR; z-Eu$mR4R>MXQi}NG>m2xVI|(WnJ-Ui2-K6F^@B;%ZJEd+2<9Qa;b?+UTXlp*DrJ#LMALmZmOa{J$(4cyIptt8REHX7dLKd|@*-nJ07N?qQy zpyqhd_r8MRO7}hQ%$OK|KKFVU-+Jmtq121=%;Tw)bxY$;uJz$Q^^|HFAp2; zy?s?)aC^dGRbsrRHMg{BbvyTC-efJ#i~lh@6%$jI zXJIcBH5IlWwY$WlD|bMH+Y1f8ltQ7wA&??9L8uy##O0Cm2C2x)w~+SUg;BcM>9FpI zwDrsJM$tn=uPdb_y zhJq0EL%|vxc52XBOUVodS{7*;pHDuXJZNTP3%YZqK2DT;@q1+mW z9VG%PWv0IOQlg3V;rx|cZRmnP`L*H>^y}O;>8BGiw3iF*KUS3^fXB}>y;hnuG+@BF z`B{l`h&|TL9-Mc27p4MjoXu>lwIc_Vy=1I_-^6Z#FVfaeI(G-$c|XSEs&2`oe%ZqalJaUcL5qM|R& zpT4w+*BP}p$QqAqatHxtwAAG*0pFR>T@oJfXBBRCe8EpVWIQ=Oc`_e(-FRS5pP4!7 zrpHimS{sgf_l5olCx7GnBs)!~4y)DqQ@o^m$PpcoLP%v!28dJ)U=#Xr>LoW%@}2+Z=UHk z;4I)n<+uE>J=g1yhx=0};|q0E?i;~8(GMOme(5<<;|j@jpV|C3|AK|5J(4^SyX}B# z4{`}6%pDvds4+ahfI@!;5xn`BvQwmZ5>hP^t zf_AuE@S1v#ixXF)ez%3hviVGkhW3rLnbs0UbSl+M)+|Y0Xtz}(csHk%)_NQvnW6$4 ziZ5XV8qmZ0e)a?8=THv_S~rIU6T{VbMsmqZxuMPBXJ}B8i7)e}s1LFiSpqJ1;krz9 zal&bh0ub8H5Bcl9GTyd6EWhi16y>u{=u+vgQ*+nlRc>;;vRF_)&u6hqHP(wVx$^6i zYrs4MCUHd^x+monV4hX>_j-y~8l=APHp(}q+e7hRHiIE{?FQAuEdcsE)->_*jE z{;@0!!DXq3Tud`d06G z3mek6d#4+i5dyxgt0z!Yto+`c@{*|i*@~cTwCIsn1p)n~-aA>Vt1PyJmQ{c$m8FzR z2bsWe^-}+*0TLEwosRo&6f~_F#Nmw_>hacValB;IlEqd6I#kzcgwHxy2VN0aTO7{c z^9bD-WdFMNHF8?P>Hz^t{azjks}8C3^I7&>Syr7*3U?9@c|CDv@(OBJTgC5)y$H!X zMg_hQi8nr^6|kTFaG#{D+0Tu3n%70kHS<5(A2x*g3#aTb9FWT^ZjVU63+Y^KWMSMI z_hR9{43OEjt8kA9ntd62Vhsz-c|w;TPtGe!{3vy-&`?OiQjB3uV34?*=pch&;ozN$ zjNNzgKX;eH$+?*v9xI9T(iKU+@&3T(5UH8)mLr2_(%-cHbjs~IIP`HM>(tllttJ_& z;c6n7RbA|)?VPfz<}H|$G|)*&ERRl3pXq~TRZl8C4dq2&LwrtfS0~lK>n^{e@O|dm zBga}uf6*@_TH~~^9v9?b85@v#4tj5iS9a3QiuQ^E{8TKk>o=liEa7fH6qjm9|Pkpv83isF3euU zxRDtu3h9a^Ot9S9tjEg&(7x#&#uDSLss+lr(4Pe0Qw7wtgZaqe^=3{%%{MvP6?JIG z!+a$|98L z79W^V!pjzGFpHEOLq02Nl{hwo5*KU&YalSV2c%-?vQxT&x4(6UZv@M(vajF#k0(Q7 z=qN=HrTOCr%}g5&Ud`+X2BZSIO?B)O;sJxRt-s}XN{x2CBwa`H%^@3;a5}+q8CZ3N zzo1ZT(2nIR>RkG~A`)kP(Y{d429H#tR>|RHYc0Te3K0D0 zMiE}`x)pzwpmfb(5LJ(#M28E+1YKm$U1y55P!@LhqAU$3flWNnvw=*BJ3$O_Y@-{3 zA@GBFS#q{)4zsSUYl#M2+K`_?&c8*xp5)|SaKJ`;u3Y=|$ZX3a#%|!%OBlDBkhc38 zr2VjX3@P?^46H0^cFr8={5qh-YyF7S(AlZL(WU$jsQ$!-dFFQhCTV)?MKSSe(p?+< z*kRWkZ7$%IBrsCe<)c7%b(6U1yew2P->D<-xe00AHxFLU*4~x!lKAxvJ9DX2oCgzZ z@BAmCLC_bsH)SXS@q#$v)ioMHMS&Z7tYjOtZ4hjfMvIF4DK6b|H#2MOLmKGzj(H2B z;{U@K|M9K6`96NNMd3rPu|D>9ssh!r>nr|3C(>zJE|`I1s_b9>wsya;?Y;bC_4PcS z9kA)D{OzO0(i0y`qQ|d#^~5I1?9Ia-jf6epd_v71Z@l*G&UX=U<@E5YtL%K11E+z> zelYno#CxX9z=xnB1-SpO^+zd_pP*}vibZAl5efSc^jvB2vwX5z>B-a_KTx9#K zrOx`uw??ioLt2A&p;U^YW5{RBMo*Xmz+78_s9w(|P0!`N`blS`sD_Y0W*XOiH1CI? zvTGGR3^_?N5f76&2tVpsDJ-QV*NDw*RZgq%mlH0<EhemfXfpfQKs1%a zU;Px?K{G|uAT#4AXi4~4+_b~4j9|O!@W+ZM+nZD2H&ZpV(qw{U(*Zqg%hWx&9nM4{ zZO_O5xm>oY-UCP`VG(C-t9XRN*#^4?_JZX3pn>LFu6=?$aKb3q0J5oZV65FDu!Qq#291}fO7_x-$UHUYsDhh zpG26en3q>nJH;HC=y9_->7hU#Rx^;ucA2rz@BDGGo9owlEudI~FYlO0YI?%8gXP{D zf-NLM7!Nnpi|j)C{jZT@rgWQ?)dQ%7VvATuFpqsLWCuX27_OB0f>g*ZTmwBGE)|vc zl*u4TgYiB3SZH3@78}v?LRJJv!tK3K)L5tD>_*H1L)K;t6mh_2`VhHEx-CG1a_x`! zHPb%Ulx>&klsC~(NRq2bgB4*A zQn5*PO2V7Ygidw5oD@Gc<)#?iknnYhGfPDnxsWa{V*>#>s2Hx|X5Bo$o}uDY0kl{nlGV-c>GUc3}!?&IZgsm!(|h^)dg%7+HD02N`Zw(i*i) z^1#Kf@f1hDf{|=G>A0(S$}LYB;E@zDMJk3SpDm3A%rlcD;ThWkr{-~ELW8`)GYycJ zio2tY`m9@$fZ%p#%m6wuP(rrGX0!`g?}4KQ%>Si%y@y%m-G_j+ga+{p3}2-4u6ISF ztafHgyltWG_I-Lb3f|g`NRmPo=!(O@W2HNuzY1`bf(-nnl!ubPdf?ZS7y7^@>@BBa z+d5WtM}{poS7Y_Vn+ii^aGc@#ZG$TF_cs3l)l9z^yRNP#m#L8(#eUcC8&y%Qy8$sx z0i(Pm4u?GwC%}MOx%p-3h6bjr?A_(};sx5sGfGL=z|l`%T@oL`7|l*3)fsQ^iifbz z!|#?3GTp@z6o0IV9~v%qP`dK9saf&=q_t?+`-8E>-h}HjfVkz=Q@(BUn44Uk6FIGsSCfn-G`&Rtt0{WpG@gZE@#<;IsJ7E;cJ7OmS`?b%E#g|M$K?mMZ0 z0GRZ{6+{z7(`?I40M+^WKir}GyJN7xyZ*M7bFB-5i< zbH!)mB0N7|aHV%0ru>uIrO#jSD|dMOtV~2v`=L%sZoI@VC}#*q z5G+xL^ZQ*gEWbJxIC{@`i7oVFZr7+aEvCA(!XnZ598{4v5OsnhA*`{Q74#H%JF z?rv(aYS%$V?;+>s<<^+Lmb&l!>s7wj_~5Tm@p3)>LeVEoD2KK`_sbOYYicoXB3TW` zToLh}hDxg*Pf{g#!xhHfWB41V@3NR@KYbp>v`XgUVJamcWy|%9*6FN+>^!RS4xMp+ zy+0Sg+U^-`1|nbZFX=5ts*$Q?O618NldZfRR@>5z_4a%I-0saIcr#6oDqI|w{0L8v z!DWIq$F&_SAqt%nwu9NJsnup_ zu;t51AJ@M5y2eo2%=WY|x#m;!X|_xAH67zKGkasFNxK)bn-Q47H8=1H&dvX~R+_(5 zr90{CJsCpZk1z=|snfD9!{ATK^qy^g2Z_etlnm!)j`?X5Om}MU!AS5MUwz>|2rrj0 z9W&Lt^5ccKg>*s1k_&1%mEq=F1<{pE6Fox26W+72vA+t*t7&A4>{HH!%(cw}+^`#{ zXdydzLj08qoO$gA2m-KPc>NhBTRaR`h4*W+&v>aF)CP2P{{{>K>5n@TINsH#m%Y?z zHkE^)omT1+Kaszp`xFZR0VT_|MNNr6MX-Q-O!(m&QhH#^{?5X?U!~HvcTT{-o9|M? zPS;jYi*-~*hL?oCDxQDEyx?{^U)qu_Wf7Rgg@iaMg}AL+B(2r2qXK4}S1@yq>%%)> zkxHaW@jaXDO;iqI+f_vpDkEo*owFxXBkY=Qgy>gApNE&-WnOVo-}l=YGVFnuWshdD zT&G?MkEAl|>HFO{#2D(@!AYj9BOJ=Thm;KCx}{gYbcU=YVJi*b^y`S+8jRjVcAmZ7 z#a+(@K3V9HDzyHDoAPb)aZKCAfDJ4merD#R55=e=De0mI^Miu+;Xb&a4a^L(Jv~X| z9zZZ<7~C&JY+059vZ}RmpPWq%;_EuJ7g!8 zR50lug-WIqc?+%QAWNkIPh&Ypg{H~3A4;9F)2-5nr-F%Q0TBJ;sp47Bslo64$XkLt z-Jj9_`DXkdcy*(b0>s?jj``R#QBzA!57w{e4yt{idr#=edTzx|-wv4L4N>(A&+wD@ zTXykrAa|aTUZNDXWNF96sZcq+jL-E?*>T1~eceUJy zZGJ6+U*r!D$wr2xZJHiA7kA1zw34L4f+T+`vR?LT#!<&}Vy=Dbn|*t2O4Jw!KL2@I zq7)KWv+%n6ozv-82keegAUz+&_ni0sPYC`!4$^WoVRrEBdKAAo-Nrao`{qXWSz>sh zib*y;86FW^Q#s|CaO!V)C6XO&?_2a$aq08JI7XXXo2*B>fR53wRqUr!vZ2-KSfAsy zeC6C_;Ol+I73xe>ajK!A%p?6z@!iw?cL(UhY8HsugWq=sIM)sEo33bcwUTj9DMY`1 ziL#A>hzfY@k~YK-?;E!3G3O}RlWr#NIRb*XJr9e^vIi z2`H?$i2UdAq8g$@;Id^EExpZ`Z&J%YC2^_WIE3^}dvY}|-AAxLb?KUW-3UsIzXHP9 zY!^Zuu!1qe7bktlW?2j!oTOf*zSk4TI$WJ2ysgi40AU+WOCsD&Z_`HMcwuKid8(o3 zcc1H#mRCczv4h3ZJW8QtT3tzzJ-W}0_>c>z(}bD*n#6{~Z-N@HE49DWVtC-zdt#1Y z_g>V5%mb1ms-vh;zre3hXjXg}Z5lS?Rd{SvAE^d@nqm65^Cq;^IM{<%k$b)+^=c~N z$Ou3=+*G?Ug)Y~2z~T*giiew0-#1j$;WBk!F5&xuM=hx?CKrZ|E?I79LgC06B(e%^ zVo`}Zs?~6pQ%U1HR|P0{AZ5cq^3$nbnrnFVQJ!i>Ccb6xUFt?ATiIQd=}9^6kdYc#O!14-JHH2d#p2P z04G_y`u1lH8ScV2UMYLZCG?TsR~6N3U)od9cVfV1;s{ZkvBvTzbG)wDk1YVMI$wiJ6F1^LYLXLvDn& zkIlB;3)!YI_9p!3>I|iFG0B!K)?P(uC*}m;bbW9R!85a7F)S;zbs+YEp@K{vek?z1 zp;VQgUpS$#kIuEZ7Eqqs`72+37`{~xXro0Lf(i>jR*A1GAquV-Ap(k5E!`r_8exOT z)78=&i@$MalEB?B0d}2}&Y0Ui!a z`L+eFHT7Q}CnV zM*{zOJmQ}5Ik^;oXSjg@UtIzlZf><*xh`+QDvMe?x5ZNktgTH&fj#iEiph?`VBa`yGB)48Z9_{~rJ{LCwB2d=UP_KLhUR9t04(WlTgfDk68e31$hb%vP~ac}#gm zJ{q2xy6!Fzxe;nrt6sG?-Z&dE1XzH4f~UgeMjqHTzc>UIv&f|sfqYjHjEty=&X}9% z1~nj0>1&Pm&wfK>e!P^X$3cuiJrA$0YMaI4gz!8uY$nv153>z{Sh!2o*IdH&Twlgd z#q9yN0o?A&&r6=+cF57Q`R7=Jrgs_v&Tl_1`l5C?w_H6SI8%Sw<=dgXDYptZq*0bUopb>M)DwbmG; zwd7C>DN+PMtZLJnL2LvN$Iwx|OoroFV`m->d&f3qP59OK#TBXogr8vx>p&ck3G634 zraaBl9sr4dZkNw{HhpQ*f%TP3FWS^6l1-n{rO0U0%B2X~lnhynx(z-JtHYU1p9d~I zFsgX4P1&bvW1Frf`!wp)H8!;%0h>-gwBwQhaj}$NeTHvKq+aQcmj0jh>D-;K@Bg3K z^f+{izYVpL*L<{GF|IuANjY!g5mxg>)UwEWRngzJ@o9NFc7B!|PtSgQdE8iN&8LsS zr=q&?EEKIz75Y>fVT2XQrpc$S^C@ujjwgaBQ>Cv|zYOFzj4a{%6Jl~b`c#?dQ>UB; zgW9wj5Ly{fLKf(X!RzEyRfZMfXM~sZ(!S}+sSsEpsHoNs+ZB+`qoYZWY`Ru9JuvA| zpl5XH+^ETAuYfe0V&ZgIV`gNoB_h0wv`!@Y8ecFcNETnDN z$sa!ZwA477Btrni?E6NhSsN<%%Eorr=6R`oI*th;0ZN&a8h*R|XZjnDQ*=y8CHs_Z zD%qwY*|hiR%6W4zs%jb(-RR?F8BL!|*WUYI$G%8CdL}LbOR5%1mR5>HXt7s_? zfX7^7{P0r%`jm}IukHr1D=?%Z6Fp1IW6Dm^rM*e#E}hx5a;dv!(y2|E!KIy1O<*+Y zu~mrgb)2&aRqt;?rVN z6>Pfk6mMKu7Fl5w?oir%6k+)abQxDKDA4c*bS)J(mV* zmmZd>O9O{KH8pdi&YgPMrztPH>C=A!UVmhKc%0qY347xv5C&jzqubl;|NpD)%y12d zWINfUeag4V%Cc-Dgn2>vupdo+m$;8UzRHaG{Yn-JY<+b3tI4mNN0T$fpZ-X3nBDC* z#_VRpXo$k>a+jOj1Z65&o232wFh|bWJv+%sKwc^0_TlSAP-Ki^(YG--86B?%k%NqnyML9a^5cbn`2C5Lh8;JX zfi7UHMl_R~=4pW+m!B!e!>KoCUNu4752dQ-6n_Li1u3P9^|BNR{CDN7R%$H1FVZ4A~3 z-V7T-#O_kHP1^dI?vp=Nh63jp8w}beoiVnXfN1TUpZz>9>*^Qn>5@zMZ9{huR(dt- zFu-{0jW_T}EieFW8i&clQe4R%;8E7dMFInY-YKIm$Z7c9}iI4&zGx z{#0o#%^68Lw6x8gspD5%S=wsKEj=qskIGW=RM(pBPc-HGxt^`2V@Yp4B~ACJY4()& z2(WZ^5mOgLbxt{`R?&2WVW9W)rLXvx#(>XydTs0Ym@zG{X!=ax+S7lbyr!wHnv^$K z)F=*;=}|b|Ml*WD$Wy^QZ5x4!!5m?A&i@Ov3x;%Nsf${TJe}$JbX+(x4DTj*DtMF# zHsEKlQ!ghvo{y>MDftX=1Wg6EG$eYMp^-4?#m-Ty&N$CkF5UU>Rmu2-f5O??Tsw9}MZ8a3TJ zO}7h8w`MJRTxj~}GW4`)+O1AoO}VJX!dHIJpkrk{d{;!5?=E)`{IsY48%^6&xoa@X zWGV^GXlZqtJgwG(L=N|~)POHkX|SGDrDndGn!UiM#Pzhj2m>~ zB2IDyJ!KU{!*oaH&J->_YKkjTwA5-xmTvmcr#{Vt(r9Y4r95bNBFg<7sj7>z4k9JiTs2^Ma)=-`lm>3|B4Y(gH4dDk@DyZVMR)-&#{%bNHuFQ*k;t+s7y|hWedrJ3o$+A~u%BS;^S1A?=9Te8Y+$Q+m<+ul$|I3Q zI95)ul`U);O6ExU`bs>Ajd(;h&vTb8;y=Ua>KvH`Aqj;{dNN}`Tf|sn;IGib1Yv|w z$3YK#7zPF$jpMU^0(Lr0_XFG`D&!?pWbYmIym#SUSi!H1I)N^Uc_RCXQgG7|(_jJP z&sivr(I1Bd)2s~P01bbAiiCwkaJnL|q78p>7DgZATrf%TxNDD|37BckxN2V`X@yOM zi_kE`w8td4=1M3jrGP&|J9q+KN+!Mo!`(p5lebmwW=7LLQz~ z2Ns8M%negU+`5d-q2UiM4{hB3S1}^$1Ubs7VwU+n8(4IK|B`E$KR3r)cQ7qzQvbir z`IKFWcZXNOv!HOP*$S5yHkF>nrt3|cu7y2Y&VAb2bg6BsqfK4aWL2a!Eb|oT2)hVB zTz&Z(JYS+$^-{k1Yd)2SF8#Vuuh{fgeA*_km&n$oeV^j7js8q_3qJL!WDb$-z%3y~ zb-bM7(KI7|-W!XVj-%$TPal<4r)aNaQ5)cf8xSb?Q~_GFC7kBx@9KyHmzKWfK9<*!KLf4Z_~Ns(zWVFulw}Kri2945^Xv~mlj6FjdY4X?n7_- zU5oUZV$#WDpI)`;6~5D?|A|fe-D#c3o=f*^YP?TvG)QoRCL`z}e-Kdnv`$PJsbC81 zX1#;LoOBfyyuEMJnq<_}qgpptW>Y|bPbF^tQs?A8Mb`?6T`HHHe9DXN)ExM9JhZ8e zR>jPPlHY%l6Z%z`%?qVsZIY!Hr?^6JHGGHv(EIH zc{H=B-m$5;V$=DiP3z~l`)=*obS+&IZYP4ys~N_-v+wm_dkV=7#Cs&<=~b6{ zqn;SFp!;Gor8=heYsaTIj7nC$*`59c{^>xsc%03diFWHK3_vZ!W+!%%=KcS#&PeQ= zm-O^ahkKgVaf}^6x$}+I=p$YQ&l1BtDmJs}l2rwy13h=)Sz(1cGi7cK z@%^=8b37c+ipP-loVyJ{kf1=rUOUar6ED>}ZToS{$!6f}^`}TJSRWk>fH7yI#}~md*<9*h z5M0LsHHUPq#|>wwJ=G0g@Sfh&7kt4BUgC+&gOQ#s;M1o|O^#b)shA6Fi)M_+mw2Ro zF%?BI9X3-`-rcfbt|%WmeHrb!pJAAPJ}8|_gHJu*w(52Jk~w>uW`{-|txYSJZfYxS z8eF=HXwy5~Pi=ZTu<6*Rdq(Xt32e!xD;6#t+H@&~=}c*b!rG@q>4JL{qu!=IHJ(Ie zpV7y{5y7T|>i&N|{nVwu?o()*ucY^>4zK4n9hsxz`jg*)a24U$P|C8I6L)R0YQr8qZ>atN@8^}tI@ z@abrE+DFNnqAwbCfu%5N@Tpr|<&vBlid&`zqmoleB~mE%X|n0KosRt3&Jt{x#O@Ck zNWEJ3@NN+9ZB1Y`PLIY&;Rg+aYlY-ou2Lb z_BPGLU0F|QC>fg5w`(&W=jCAc&Ps^&wwJfqra)0t6+CUr=rd=$ImQ|Ht(pPG`Z zHvJbP5-<&ToYk0zlAACPKv{K!aLfOHYqDDP0>(}zljzOeaSXz;%08_g>QV9h1f6(& z#q)qi!@Zyqw}h+^dxA%p#|27TmFkqLtRHjw6=%L0)PaQ>V!=_Hqn|2jHFP4XVs2QL6wB>t~9=KGsj3)KWTpE1} z!KSSzU9c(4ZF-y1`}8PQG){#Z#I{76y2_@bQ71lCt1=YMCabc9-r78;HtpkhE2VIi zY?_vC1fYJ=kx^L_C;pC6zq9E-;M18+dzU7ks_fIbA^cx8bZFZ}>5dF<08?B_;YtXW zw^IUie6x-=O*1GAY-msNX;?vN^^|q;%uJmc_PNN0SVnN~QzLan7emRW7&*zO-l)>s zlpWdholk3r*3lqE1RMLc_;faP>PdAtwZ=I*&f`|v@uhhU#w7{B80VrXl}nYuxUuPd z-L2cqO}yC4+td$4uqlvBiIRA189xkzNqa=F>*!MQspk(Gbyh{xR6do31D~FlH1N4k z(Wdgqs28ky;>G7Bdmh@9KE3zoWtUbqMPQ%Wbj(g&wYxsE={2LyZR!S_j!x}-s>r8O zamHvdwK?EurIQ`*=+aSEB3GvmBc=+vX4I=$>hBr#Kd@;DjNjNaab$?(h2YbEYsKPK zwZRE_95WaW$y*q%FxivL4>t81!>3F%jq17z;yZtb8=}&=Cw9@)z&z4DcaPoyY$)VD-8j}0cc!`4y7U7nC+nBivvtV7h0blam}dt z?pv2uM#b4Ovnlyh6;AV0#Cblq>4{G-c(r%pm-c;D9-X^%ZqjVibC-5DjoIlkx9QBM z_kjyO1!A=6#Ha2kLnW6|OoJ5jDm=K-$G~3jWPlHhvLqLD*(>4zD zCQYmVMt3dsE}t*2*fSp&)(sV8WtVBfAgh$tCAqXZ=jKwNN{v~~y3#MZZkUx4)^6&a zZ5jrEwlaRJUmXq5@jwe(=QJkmY+5<>)TbZhuCpQv^$XK!M(0x%umf+Ls>!M9icNn3 zyxAW#c$~$Uhnm|U41mKj;E~+*{ol2f#1dE@H+skaUE0_QCJgt{lclVvv>vslSM2>n z8VBf&DTFw;vOrlA@XkN&yZZBZ2TG8_(6lKWu0<^@7-rP0VndIFg5mg%JS_GScaBu- zNU5gANf!!Jm?C4|v7E3He{YnR0|saPtXHKvC6kg(1(QC_(|pdQX~tn|IeqgJ%7=qXPb@QsIp5ZW>Un_m5_Z=LLnNkbXDszTSgUy3Sn7;R1NOS ztj2M!J1}gat##8=z`v^XrdANfZH{5dX<$?E-<)ka`c$-P_UQ{@M&&-8Z8j=_bDsy{ zV$+~Kc=X(+qf5_i%GZD2`m(YydZd1K-!YMtwEL}BE3_42HcbUb0elg-N|EYQxDYn` zrix3;&)De4?oHadCMuEUQqGZ0_k75xl0>OglTs-k_Z`WliDR3d+x4zbkG%D9tA56; zaxG$O(E59qn!7ILE2Q_Sl$~yZPtR?-=gDlkahqnJW~W~IG&+bPxc`UP0W%{fW}yIJc0@#(LZeaDQa1lK+tZR)c1 zkYpEBD;D$IQ=fWfQ}ihr6>J(*ICLq0H`=sCfY$b-y#SZdOg=rDUaG!aP7UcA zbiZm7r!GFUsWI6p=nOxHIrc71HbtK<^Blu!U+UbY@tn@5p)eQ~hT+YM-pEd`PJa1k za%?!TDRFt;3*(<-Np&f0`xF=jD{+zi?U1gkft673CXDD z2Yh;c+WX68JPtp0sbte}=i@0e;y!Jsy^$H0?~?$9&{)EMI+Nx;D(z~m&PNn@8(eBB zc9l3qwj-BnRh-bvEx;-DKF_*0mc9`E+4r`t4oVbmt@n$z4RAcdXlR)r+UUD z@nNGLT69QE1)mEwBY~v;5rSh>AU1^uT#=JovP!mA#E1K*W`7|W$ z$w=B(%lptXE89H(4@=DC=hz*c&kPPMCzpO7dIlu(<_DLdAnu1$Tv>V)D<5E$9R7v$44WU!YN2iG+==u+H&YArSvuw$500 zteW@zsz?2>OU0QFHZ@0=KHs<$SstBD_ra#S7*LEv9jH^{OYKd$`|1wIQ`?MwD(Wg=u-}ULys8=@qHLbVl z>}$T0*pd;03OZY_I+4xc^i2cP0Q`D|-HC4EBeO4(`TQZi{M*@s3ZnN+Q0Gq&ji zW;0e9OYa@a`&64IpJt=7J$;%{CYz!^lS@TfU(WD@UyBybY}&i@&xE3<9nWQ_Qlw5j z9eeHJPmS8Jn|6#IE!?;1)Ar0wcF9@odefbSbf#0APEDHqbkn6WPGpq#)oE|j zyFQ&FU8=pc#}=Ig3-Kahv1u$u12l)rl)?UF?+jI&M3Uu6#_2-el9kr={?r*Hn+@ zB5Ap2Q?aF%SAF~+Z8|flbZYV`1>Er|gN&gv9#aR)DBuT!os7x^%`+O%RT&27&=l{S z_dStw{n4h`soN@uTZl2+bmr1;*pwGRQfI!kX~wF?S)DqVQ<;V~Z;aYBTHDd4r$+U2 zN{#x7P5+}=uh)bxE!z9@U{jMgb18Cg=|1)7XFmM_n@%dz41SB|(i=9VwKNk_9--N} zNl2eMF)PE+D^aR@i?l4Mhm3u+spYjk#SKz9nzI5>Ud1{&EiL0E&eo}FIyv#_U7LPd zq5iL`Q_U6T?5p-R^@B~@zQw0*@nUbe!r9jEOK0(MKt?6B0@V_~5|1o*o1$z^E4wM% zP*&mE)KFFGF~#8oOJVlsE5~kLdKHJ~l-Y2qPT8ob0w#0U0te%P{h3@U68pW{v>glm zUwS^V>ECM99nWdztGxhXK_@NO9wxN(#}#%5cLH0;Z^tiT4;wdVdR7sc^q-{^-9vUE!-`n_0-a@#W}mkY+{p{RR#d= z3iB`GgcBYJOU9qz*gOZ~nZ(+x{<`wtfOp{IkY9xlICh0-_LD4+vXrU#h`;p-;Pb%yR^6I)Tq^v z=RW-@o0ex&g~p|$O{+b!Kd-&|Hh|02LDN`wxW148)lp4_njChm(o@1Q*KsU!kMjF z(^(#0%WN7`IbK87XK5x2CVVvMYRRL1!+ZiJb(W@_wo>sP3Bh`&;L0vJb)9(i+^6(k z!Kps=^d{HXbeh~>Qe2vSx;3l+u1!CI4>+eaYMlCceV`Bs1wca|U`GUY1iGaFO-s5Y zewO=Lz6U#YE-gN7EDG!aM=p4~iAU$sSTX zcdS(%#il8K8B%D{DR2JEMm@G^&FMen)QdKqcy!=-R+A=|zO?CyPsbI!4J+z9Hcih0 z&$V-(>ZwgNXKNsvf<exG+fIQ*j*m)LwS#PxL_LO_ke8!v4n!E(jL zjU7{I%jv|WKGT^rv32ZW_dD9u*;VE=w;h=D$feh8dZjw$>$$H}M}HQNGS`+$mMrQj znlbpaElsCJ9i4jDr!}Wvx9Ycdg-;#Ym~`e)Rd!Eh=TpJCSDn@kknzp=Yc_qnvT0(U zGTJod53*@Uj6QYDrnvVjd8&*mESY@fQoy%WJ11xSkZna18eKXWAHEM0-|g+|)BJjpcY3*5>;7*%J667N z+k$o=8=DeR!wm8^(9Z5oCJi3)jrG>STN)LfDo+DC9XB$emB|6K1}aBNcrar{Z?cf~ zf%z(%8x=e%RuPg#nMq4s+S>GrPs_2{q)21au{u5SX>Zft33Teac*48D3QuWkDOOcb zwk2uFI-OpWA@C*Z51GEWG)zo7ajB2st^(LJcCEUUJFpJR$TgSFe0sFH*{3TW9d?Ct zIy|uHnNRQ4sCRt&7vst8{dkaOIc42F^GR9a%*mBQT*8ko$o8 zf?sQN>3#xwaH1DSeWGd&1enkX(=I+@FE9i9V^ez0-~bGa4Q`;s&siU;opHO37r^vD zHa&z4lP>SO65kx68UWiKdkp0@eWci=uL2ok6{fPv4-e_cb=N_G^Bt( z#219}5UP!g^7IIn#;Qk$1~qEvcR&E+A;1EWSYZ?MP_nA1BApddUq1EcG=Uk z#6OotIAIxxsrN!U>hr$OeV)x{BQD$@zNcA82mV$_OER;!`>Mj&o7p^y#NAo!Ry8 z+7zG#rQUjWq%O+_dkB#eHm%{X;taD3T>oyev87M>YEE%_qJ&QQf->>4Estdj3k@gZ zEaiJoW2%iOJw9t16ZsYJAj{)MsV>>_<Dk7Nq^qBl(qv)c!bltghocSO76bP)m@FyFUdS|01u&#_fCw`u}EKo}2ZXr@q zpJeyYZTi-wA;TtRR=2tk^xAAXTF)1k)(~`?Ub%E;Q-5L8+5A4v+cviclX^i5VCTfB zVMvY?QX(LbY{@OrW1!AXUg8Df5WGPOOs8v?$TX# zde5cZsaypndli$$WYf{7*{RMNtEs_Y5l(YB_!JM7k1u&x*L(}D@BolGk}F-RJv`qJ zF32nIy-%xpr#6*7y_#>=M*Y+3^t&$o(3|Hzl{Y8rQJGw9Gvho^a&ghm+All0Py63= z@v5eGJS<4-HW!OaA916s9N3^nJ1(GvOAj$<2W80Y&dS>6MuSFYozhy5UgQF#rSygF z!;x<_oy6sdVc4Lp@whHs+_LH3p)C(kT}(_&I_8LLpT1^3h3?arCfKO(l~(y&ZS#Ct zcqNhNvZa`F)X9?}C+?8inAP99H114F_^skrS|geD)TMPnlM~=J*mSlqxnt9JE}hL- zIb4q>4ST+4)GMFPjoQunu}zy%zwcAx)Sx#^s`qv2rBBJ5_)m1*&5 zw`p_g-O6-dp++N_`IKBr=_nVLC5siCW(Q)fSe4xC9d`+HhAlR29!+&c@@d*M&Njsb zYj)sTA={KEmQ%Xt)tYdnO=p+>+^1JI)u%R<8{Yq~Pla}RP{!rP%%-x!Joo9iJn41o zu|Dk^e4&~QBGNdsRL5{#8n?Iv=YY2A)me{^u>!&HP25V^QeJ}|vo71RGZ4XDQJmS`?S5Om(*`u%j#gf;=;-wI zv$rh)#bd>NV2O`NA31#ZoQqBmokEO*igs0WlhR*sf+6%YYBY+V-xPuzeFpO9;U_BD zgnc;bb3Tps7x6y%Dfm+Z0!CB>e;D=VtjC$qyzI+9?bAKogE;)|*LC%R%h~+N+GA&Y zh6^0-uo1HvyW&QT;v_)a*<3puF`-^5?Vv{6n&xcr74Bp>iGv(f`ZJV~Gw3J*EO_SnP zY`RgdFeXf%=x()IwHL<~;)hX7^jbxZ1tu&teLfZUH~DX=BpUrF-U5&MMxkjm%?# zL&1ls22G(TC8dO~t|WHPrnOIJHqA$^y6sY%owL);aDsuGMztBGK8x4bsCKh6n|7Sq zaps(fNi$E*O)3+m+@-;+AL`O?Z94bqvpHWoiyh8xVQ$mNFWU6-=_*0vG@CM5Ol-;- zj8YHH=9LaERqRt0O<8B{ZhcV zTz%Rav}zGZZxV~yS$ZwH)GeKbC61+GW5TDMFf`OrxOD5d2`53e_e)+cb0P*De+0*pWvERVY4B9+Z&}yeiUX z@!i0szf_&pKCRE$ZW(aPrZIeL=sQ_&n;P}{OSTw>T^b;tDh+9sHmt6J(%KlUwFr$7yl!-27o2uP7@`f;881R#0K~K65&ymh;CeM>d3?!pz^fvyEswc8uR4GO zUGgNjkD5MDdzkPQyA?LO8DZ5Hv;w8@2LaHaaWUF}{LvbWB5(uX9t)ux;6U*LN-tJ9 z<-qbeEMCQegB3PphoA$uHmH5smksfYiO0&a2uQK=H2Tc`Rj{y9$ERh$kW->rdG8sgs11Kov}_^g=0rX4?T1~ zv}$GbEXyrRx3+2BRWAGarUNy>5_? z$ow7r)1!nxV6^Zt#M=@t`*JV$L>}(p1G0};4>lqs)&k$)2t2E0%oF3v?%Zmewa&ZU zhBD;n6oi7_6?Gg9k(IlWx-flj*^0IPVE(4IAtnuL+t3bLxl($t!q%b+AfgLWa5Sqe za0NbtOZk;HZv*~UEOVFA6S!~A23^wIv-(`S@_@h3%~@HrHQtDD)28h^m#uo!(Ib~a z=hEJ$`d60*8|>lJIAAvIG0IRxGiV@ z*p#BTe%Q^UNge)d>{CjB15`FO_#&%ps}O@d2*IlePo9wdoy`4sBW+^~9&h z%%?7zRF-Vg#E&+OPW{561Cv%x9afuTmr{jVcxlRg%Y`FTy|U@psJE|lS(!$oic7mK zX-NNO)7=nKovs*VQvC^Vl!q9CoWU9dq_Sivh_V^2vOMh5V3*&?reZ|{(WHzA0;^N9 zsnn*__9dmaK1JoeqLJvBecE%ShnY`*wdpTDot2vP_xAj0gX&X^yt`gzKE2;XlO%*q zY89Oe(hUHoSB8===~k&v`GBTp_@<$=>TnT@PHid`>9OzeRjE;qQr-im0qj#FW6>it z>bE#kLb+W?GhOOcKz1e9l5y#sZCyEc>Xl8$KK)Y>_%LsH>o-M2p1+ey(xw=5(5Ie^iejK}AvT3N^iX2V2?-|2DaeM(Xsu6sm!6xn9N6`ct`om{ zvfoY+BCzR-do^Sy9d1J_mETl}E7yEM}Q0!z^ihdbeVX zHofoD-l(^Hs>U{b_ST$u^uMqvgF|Q4(WggoN{bec>TFXJZOUd;^g@_MMn~L_HsvFX zH$K{w>(j=j`%#^0IWjuEsXbsQiC=v>no0W3r{6fWG{~7}Q`V5ro@>&=r|oT|L)vMv zc`|?ARryH6vlf=uLcBw^6HRE)GmcQjs$y+gKDlzb;WV@8ty&(D*OxY}_OHfDzB=$! z3MK?JkZHjTQOjtIK2`j`hxi7T{~>zt{IEDonO`}gg z1i6%b`iee%vQHnUK1K43Zau?0m>nM5l;(Qriovl@SN_LPno!Cih;3?ki{3f7aMG{J z$@BbjpI4=4CarCn2Xg7rSyg)K(%U}mXMBC)SUBw%F|z5uUqQ7Zc$}@7hhpR^3`H#g z?vpM5|F8ShsKzaMzL{bhFldAhBAeg*{#@=(pPukmV3M;PcbLJ`Yr&PYk@i|}&~T?M zsl58R(N|Kua`}|9N4d9Rm!5?x+jZ={JyY1in&q<=H@gu7+0ubS79D`#(PKdG_&qog zeH(ES%{ap}j6)ba$(e8fpg%gO9Y=Lt@ROh1B=ttpjH}z???ZN8hlMm#OAg9oP{jkN zX?}n=g+}9zw3M$pdlbGByi^=X{wznB$C!FTR*01gv$Wml55=FFs&A~)KxQHk*>%1` zPQjNv3Ar<<9>XUn#jyJAif+Tv4spz7>7rU)-fmY0Obz6lWex5g|3(f1klT_YhTum> zVqc`Vk;J}?3-b2`IF^uS%bkg41zW(G9VhbBg*cVze0Ms{7>&~{n$9Dd@*Z{sqJbC|o-PQh-K$vuQvqI81l}ZPl z%qLn*|Llkn`6mRupz1wGGf9o69E(@>cTkRQM>-u@`hci?n%?vDs0S>?nx&`fj7ye2 zCTh6gsTZCSJ(;EajuI)Er@~YYMHGjKrW}}rjI;4{vWbx<1%XtfC<;$0f)Pze)OtaA zsw^ov-Cl_!NouCJ)IU@<;Q$#M&_3h| zP0x6$<_Lv(^wH5o;sa8`^LM_YG-V-F2X%uBx(LITr}@mre6UPgc`sWQ#OQK%W z^n|4?O}B=o#M7{jGxJoK>9!PxB1;RJW}c2Ki5m18YV!o|&Bk{ujq|#uXrHBzNZJy$ zrm0ITEqFSG>4c|~o}SP&ETN@o*3T%KL^1WAqTs8us{QJzxvY5a7YaY%%bGY&+flVDFf)c*5qUrF0 zrguDz8E0sWlj~+fGg@np2QLm~^V&|5+v11hKJfa`_GmQ25!eIuz~G^c71Bp7O>- z&C|Kz>7+X0=}C^tEX_RaL}#b^DN9w?EX{f51tYuEyvh-K#QZ)_@Ar`JveG_JuQSre zOg&?1(h}HVCNGhKshZeEH1tM9S-V@bfidp)$_^PZRaWy%Tfj0aLERb@ItR-F0`Sh- z3ad>snp{xITb7I|8H%aLkav80czD87|A41=L_Om|i~>13ZFw4rdd^dqpoX%n0H>sA zAkl`Mc1XTapQSD>`g3kt){gCB#8ez#!%`t_+~^-}X?n85I}Cl68WWjh;)gEpS(s5E z+NgtJhwQ+XWQrRyDC2T1rq(&#M%^L?TRw;lWN5rN)c;;!=4mGCe!|oH?6jwfr}&nq zJFCc9g`eX!O*fqz3_c1kYJhhI|n;&`QA=tdgJ*Njusf635{N;9%xX&&OdGc&db zIA?DFtIENmz#fLnR0Slr+(g6F%TxfU|7eOXS^;rp#`!waT%OixWAE^j^~!ore?HcG zdYiX-k>CYC@MB3&7xnN-fwYHx)_Nr6H(`sKwIq$jo&oK#_juZ;mHHljotJrD{EDum zIG4?@D0;g^C}elDk)l&^n_bO1MJ;L_-dTxp3dWVZOv|(mv^5&#yVhn%E3j()}+69UD6X8T`_e?(w3-?3!d&K4#AH4gr|E)-}3a@`d2jlh?pm7Ba+7T zm7j5GxPacunaol^?}dCN!m{s3VzMSL!u|wiOYdh(JVly%c6Q2}3QvinYPlHlOUPli z6Kw_|DI}hzn$T*Ysi}C{QuTlHv`5u3OF@-r8CsnFksF}yY(-PvoZt%_#(Olqqry%| z73u+LscVlQ*A#7NsxQ;0sX5YA7wR#UV1~0Hxz-t5W(OZ4Gd2S9IL1&tsTw9#F!i#0 zK0^~2fY*g$X(lSRYU8yYy@F=y`wO1FqZ*z*Tb_oNrw=8eWsjv@nnv$IwGdCa&L?`1 zEg(-mA#isXZdP>?h8s(L> z$_fiQI*oCl6P|&$#8*wyS^JQQ<4AgMg|h)m@rr3^8kLwT6hOb^Y1-n>K1`9FDfX4! zztEH@jU}t-MS`jp68@B?-}Cesr(V$%G8g1tSgLmhJt}7#k*73rkdV_>SJU*0r@dSf zpK6-=9!;m*8{3Oc6(=h+c4>OZSFyAm7k)wQDxcM-5VM0_BS;*K?jXg;*NT5>0|ArX zJ_t)gy$-VDUzw;iQ-!CW5jD|tdL^D_n%V(PL(9^Kkn$`ty{0M0r^wSKtTB8ggOR2o z@ziRbHY~M~r(5Rf8BNP7j-UCQq=iPO3Lun(`528oU<3{pj?Zr)?16GfjJ^#QO9XYMR=L zrrgNP$ZmXklc&XoihE-cSac`Qs0eKLoLq_jhVK$)wUm-ICAv zmZ2~2WfhVZ#tKc(BGZPZil-?aM*lD)Pq%Ck9Y{md%??;`ZJ#X0~n8oS$LeSn2ENdAPhj+LG4@S|9^Ip zKpr>pzT?4NLeC>3nM-E9~&cYQgU%*tzO zk5h#~r3aD{(m%exzn*h;&hy{1_qpHK^}4SsyXo@UykLuEmE#JZ(YFyHO0Ze+ z?`vtgAtw5>GuN}no9|mBSBt}SI(yCJ7N@f(&m@>9 zYghSx$K}>3NkIMm#wLN)s9r%b0~=NMMcOe)==q4Sh15|w4;>eM+H;}za*qo^cdp3& z{8c>JC$EuYL7c49$?v@xTMDpV+>J)}S7dPMPOeXZC~eG%%e%-%CW?^|eo3bA&@ z(k6CXV1Ma0ta)VO2heNXzQ^}K0LlM^xe!d^zGV+qW4nZ7|T~~S40TDLvSBS%KQR*|LuN7+VbAr7leVW^4HlLIM#SBvHU3RU( zlmB(>snq}R`~IBmyX}f)-U{tm<2v%+X~1uc1126MkyB|#BOvx<4^IAm3C7;^h~=P^vFF*T~vBn=y1vJ5KSneTR8BHO4h^c z&V^x7x6=*F@esWWH?Tv8-K1uQ?TlynJY+}9E=&yvt&k~A&NE*`6bu`Bb9vqE>R8w< zQo0!eAF4J^>t2>ZffRVW)_JeiEYy!HdJSJkF&!MCDYdC%n*M_qK&%Bz8915*-x8#1 z&*pe|eEHOPGT#s974*wHEztJQg8G%h67@^tfwPm?f7}<7kk*%A)trRbR8qK3m|nBD z(x#M_%)h$%y1VVs;0_z3o^)bG#GBC*e~aN^HIdR)1?s=Xi-1FdbtQZ`386lM1!yhg z4ec4f+;R)xAs6dPFX)OUNc?^M{Amnrmwb-W5f>@AC#*QxayQ#7#*L0Y#?6Lj_q_sK zlHJE`OCohe8Tt3=4M^MJ5DYGIYQV;WZpV-zkKQ);KVa$gSyA5WOs^END*QPQX$gNc zi>QX(GJHr`UOXkV=kH!#l5G_AVuXhvln2YQop*KdI7^;4lU2H4+&hu|3d86#!%zBx zKCQ_C6**G-R$O=*ZPlLi}Iq2|U-$zxDEH3O66-<3!g7os(n$=4mzp%-8)p&SvK zYkNm0HQl%Kt}!W!HmN-MER^TzF4UW7K+=&LLd3zTODShWpGs0$$7^K1KD-b!cW_{y(aRf_fF0PkJJ?S_EAu1hiXV|2W^nvRX3XTF94+Op2#YLkda;{=|-Qh4P02!?$$jZ+F#{N= zwA2jO#N2o^b)76ksuuLLf#H*vf4VFTMTM z+x#@2=!qsg4#rSUA~}rt0G+3FsL000$eVVz0gnhro|HQgkf?%_-@;_wCgejsK=Di= zo&c&p5v(|sQ0(&RjIS$54$Xt9-o`2ea{uZYMyquy3ak4;O`vL$3*(<&!G<)kNh*Nq zQ=AOk?TRYzMWAF118c44HyjcE#9VHPG7(|8Q>_#J2;r;r}FC*r6V(f-)--jD&zwQZ=NAmL<{C>+0;CSa968w%dbO3Lml9q=5%8rtwe~gczcc-u z4)#U5k8@n_W7+D5-5fqa)OAg(C_sn6@C7n2S)Je5S~xZXDZqkxo2YRpl;N%}XC~dh zFp*~HF#pK!F26o7mb{#iQTr4h6v8JrO#oZa0MAZLy#&zvUB$pn3i(z1lS^ejt_LjT zW?x9b_=iu|n-#!f0M+uIP4ORfJD%@;>Ki&($$wMkZTg<$_kG;CU^i4k(;BsB7(-%x z%pii%)x6c%M_zH}cPnk#tuMNhCMs6Prawn)ynS6W#TZMxsuCOr8jVE$ehiu=*}XBW zSI%;pyL+%)jczv|iR>d5lgQhRr5n=c-7W#liZDN)0~thuEf{JKA>11AM#|k7Xo-*)YcI{! z{LyLkCe}7%45G$s>(V3Hi+nkc2~&RKLV|rSG&z-A!?HHo<|7Ood=9-7-JaD;Iq>rr z{(SWX8G)!Qz{Vjf#&7X*Bs}2{_IXyc_d~$3VlV%o+e2&Aq7|j(D<-i))Qa2sn81DfahaKaViqOynBM_1{1WK_&9&*{{y(=}C3cRswW3yU z4-^L3@&Y}X67gSA^%Bv~L02(^{COB3&azH9mgwo`FGw|9+NpAwK6t4R6028{1x?SI7RSz6CYEpZMV#7ZHWC6 z|Mi+n>Fw(uc`UIpQqWh6pa$9|Q;~R_!{v@i^0>NHPT`cAg{!fWysZ0TyGXVyvf7Ah zc5R#5lC8Bu-P1U@JWLvaA_Wa0Kc|Xxs!rN@mqDFF=o2HFMdNHk31%J12n)X zjv1mt6cDvMtqn6K2vkYuw8IMWX*&Ymmr9mHsN<`>1DTiab!6X4Y-Hzkx&c;pX%{V6 zG8+Pn8zJ8t3s7*2++)wkZxS&4lo`O;zZ?ay6dnsS;Xl_{LZCJf{2Rp(cK~BA+n&)~ z(Uj)}(Hu_+g6Orik0bS8iI}`rc&$cgf`FJ*e9rlpZOgl_%agIPme%d63dXwLdyfA3 zITj&D_J%QhNCf5DBx=Y0^#T8}*8KGRtUG8n%-4H95$J*L7faTlj~ltcKcnCql& zPD_x{n(KXd7!WUf^zM;_0dIxmtpH%(Z(-t;8YEFDjl>>@=Z|D>-nxJfHc+=g8Pc05 z-UlKr0kQoJ9)oCYE7H)Nf6nk|(~F5J<*{hw|*zj58;FA;+R;5+*wK~0-&LD7|k_|l=fXa4GRz~YQN&Qm!deed^!n%j~=iN(Gx z2rL!mgeMx8mHs0lH?s9E?057(9NOdS6!?$hFA*9lo#R*R@=r5EXG~N|4-C9_F;WVq92MIHs_W1Q;8RXgll$uSUW(FjL#`1bJxo z_VO2mbRMBRU&~t;c=>}y40IC$3z0;bcXdWM%eDU1Fq0Ss3iJWI8@As128x*SSTUsT zX9w_Hu)X;BEBw)`4v=nqF%0pQRqawg8`+#zDZpZvP#>z7J3-&H4Uyr5P!aGnlY`j% z=21c?-}y!Bdvqi>J-974!_4Qi=eemB`8!Xw7>PArj_jEi=WPoE;h0ZtdJbVCofMB& z6;|d~ntnqOhr%*>6I1QCtw;#38WAWUqY|?4FU^}57yog%y|^7@C3o?Lc%}MOOf|$G zEus7~4Y3&ZXKJ>4i4AoBh%ML|?|+a`l=lV`p<+BvCfEG^{i5Cz*0}xbk?%+6ti-*P zK&oodCNU?L2=m5*rq2u0*&V27^~acHY|AD>yv(CBsf^b9aSH9YZzUi9kN@yvIV;_O zjte#4V6$~SY(}G{-`z(9{T^}a+>La(tLk*cyb5#R27Td@!x#IQ6-)mQyx-L(Hp2YO z5|}3U98*@fFqJQyY&ZJ6vP6I4@!giLyVaZO7mpa%(hwt1fwXvZbRmhZ;$2Dw+wCq! zTHr@+QA|n>6g0i4j(`Lf9kU8=JFr$-{aksO~aWalo?@c9g8cG-9?0MfEqXr!B)Pr?|jVv zwIxr25!s0cOKw{Z^8W!l9gpK>%uH!}cZd7<_WQX6)>MuXmRY2;@BWph{2OSj zX;&PxlmJBh)9#NMwx27QJ_&Q&>*b6^Htp3yNI#hF(Hu4f!Sh3gr4!e~bm$>LF1ffG ziQ?a#t0w0aBocdIjVHjN_EDSk)1>tJ)JBcdNvWKcTwB9dc0EZ5`rLf!?&!v&jr*$ON z91~ad>IJ-1?rXHL$Y>jtA6)?b<>lO}R=qKQXbjan*_j)YGDfT8iWHbjYzQ4UTIkhz zo~~yP#Ra6x2kJm;M1MleItI`r!21m3%q2zXxnypXWKcW;kN2!i^6gQ{>60$!mY1a9 zvt6Lc?Jbm|Gg@fru@ifx{YtB zDzdW}WYxq}!Vs6!;?MB)W^qE159b1CAM-rewND+A(b-WesBVmtxjcmN`H{>?efaiaJV z>C(MJ&vA{Y7Y-vF9H?)#ogW^Y5G4C2LiZ5a3wr<8VR!o0%3x)^t1U-BeX`BNM(*q_ zU!>jT$8kgV>2m$YuxB%EqoQvJliB8^#Q3q=(|l=ofTJM-wrcJ?GtQl8Ji7KZ?3`*yALhyXz&=bl;P$1G zlJi5(@&m8lQpQObq1t5cB6N7)kQ$EjNY<%StiOJ-h3}2Ep-jQcK*OK2?)ONTXs@l$ z^zO)N)s=WU*Na@&q|P$DgW@Q={o-&EmDhro8;wPB_=ElBOheb6N;nyI%slyj!Wgz$ zVBv!5dzn5U{YbUrT zmo<1Q+CND$-pZT>?UZ)d?9jzC#;_{{6WbqjwnjC?l6x7#1?Rl3|Gn-zR5Jk-I(}xE z8e+4-|x z7fG7;aI8}XJ}9S4)3oeHJPDvjoq@~zv4E?;$yGNkcOaV9iYs03;SXo>U3j`^62B(p zn|$P~}@bFuaqd=X4FQ&U3atv7y1|*(JpvP85jg@6(H+j_uyA)8t@bfrK1LK*R zQ}zM_MRp=2LtscesQZO!@&j6qJa4$r>=ZnQ!gHpA%nmMi?toBkZNG55U|-tO4Q=BD zrJ{*4^yHti{*QfqVV}2*PkvjPHcXKizi?AHF*+CG{ivYcfU7in`B|NnJ*oNYl-VEVv|f%0G^6Dj3!ZALb_*rbIx zN#*BIwN89cpNe*h>+ta~5B*R#rI@3{ex=#AO9Y}JLrr%?=||1V4^I+~ESNG8vU%499L#e3uzW0;n92KLC0aitvD;%Lxt~6fw7v!3DeG z?2PDJ_=*kHEd>mQIpu*#s|A+=mWdQi^o?gM`GCDZr3`NX-=P`8$ljmTmVsk}XUA`M zZq440k6O0iMWwRZsJsMWR}6x(3t3~H;AA$nfvlZgaZ$Sdj{K zZ>MvFv#zegi*-KUyfgLXd}`kMdz$u&N9N1F|4M$7g;@z8aK>=;i< z(7})7@AL)pS(<7xzf6$z=_<6UCw#r=g`bNLMD4s(rKeL9_6-;H_Xw3OV{tQa?p%Sb zZUPltmTB!rM!N7ivtNqSDvr?5<;zC0suXkcqpvcEKjC_gRa6jg1ww$VrUqYSExRKH z^{-;#9mMhYPw!sZBi^Ecn%GZS+Zp=p2^wy)kWC7&j)WgVZ@z1`RZPy~jD7#RQ)p2> z33-`tO-P8s*WFD3N+>xwPF)eJ>#Y`UyO7i;gAu>%&Xz#)y=hC;on7-sa32ORK6YEzho&7z@^pxX?Up=da8*#?)dzZX#RZ=AM zn(Rw$VA6X#00n4V@(i&21Q<~ucov6JWO%8DNiMA2yFroPpD+Ch{jLe|@5T5gUeJr* zDG;-NBQBm^&03h{E}~ocKDU#_{ascoNDM%16k5M5#s)N_`|G*H3)d2CGSz5{5Hn|__b5jv()~E5}1yx z4_erwvll<{l-a}*foVZvL6jcnD+tUA) zI46IO;Z(B7mi^Q!4wjnDs`g01OakT}0%7AGuA6NMa+JccjJ%c`V|)4B0zz^TNV3})SrR>E8zh*_(({!WsT43+y5Q|8COWbqR) z{gWMvm~V;RvhL?=&}+5EdZZ}f-L`CC!{$7@z%+3?NqA7}VyuMZtzO1mT1n^64Gyvk z2B3^myCQ}(`)jOvdVD(EVOIJsjm$t9t!W(9%J^L3pP1_QmuDWlfj1`fE?>P5OfIei zhjJu3m)$0AEgqZYrB1D3RK93TVrgb}4v*__%?AG?AEeHPT*qRwD|u%1-o|Q}5SKXm zAJ#R-0&{B=%hHifca>Sj>$AGN(ZurFNxOWQUWC=_2gIl!VR#Xm17oR;o15pc@oks5 zqZk=}H%J$L5?!f;IHNO2_;UHH5%~CT>fdD}pj2-H!kg0CuXA#ee2e#1U9KuhvUgTK zLpq-eb@iRd`@pFHHRe+Up?N9vMwu4auj&$Z&Y(PQ{{UuiynZezrI3v9%jcRQJHE%! z&ax-_{|V5${NWxnR%tzAH|a3{Ko6iECjbd`^t)~~%P`tVqXVZZ>Qk|m>FFE1GAIS7>2k4b^>9JHMghW{{g{ENV1(dDKhb?Ds3FaWg%l|4t%v4X z-|Jy;rLgT1OZj0EU`RKneH}aFna>rqnuZ`- zF{8!YRCcoM>f>$guI%}Y;5rSV%bC?z;at6cn1m|$_57d-?yMA8-o55tl>a9;j{re)+ z;jSD8dZJrH<91^VRg%a2N6SM_CyM}CL7rGAE$P}Xe6#Q;5Jvo`;7|LkWL8gS6*ndc zRm8tgdrA`Sq@fe|`%5tyl-Q3(F%t2wXK&;P3HeI(+Hs5lETU%N3m#=S>isryesTT^8_L#EZf4i&3Z5l6}nZ zdx6Q^lvFimk$QRRK*I+opX${kRr}zfzsDS<# zmYX0+f#@p=FD~rTDLl`DKYZX8KN;Njqv6p7Zu!`TqsoV6MTnYXdQH=gs`w|=v!9dx z<2yb|XlivS5S~)-5N7!pAi9Dk$K#F1GUkSU`ux8r*w~bZSh5F`xi8^%O-JD(>}0=)ISgxG4r*T?Nn5N%_`3eh$DMzp+AsEn z+sBn>`Ct=|d3e820)olVdMY1l@JF|05p|d)v6YanI&&B2&>_0&RM(0dTTlN|@;K?W zM|)Y=Tua}_tiR2zR2E=`YsnSB$!Mg1fZt=ljR%r5ye?JTPK9=kR=$&UAxz0qI(kd* zz$|ehf_p3D+X?GsFsz)QlSWGAx5VDy)if5V4M{W~Z~j-Rmw5EwVfjr^{({2l&8irU zn8g9D6tH>w_c!ICkmKhPJdG2#M=bR&k_WrWJ~EY0Zg38CrTjxJ@lW zSwH?*Z5XwFd^U6a>YQ}OI^GdhX-^ZyjE!FzX)A*8etfi)0oX@JBdTRkXo6uCVukA@ z#Pq+ou{#qJoP3aDA7;yg_rwjd4t-1 zqB-`=U}IVSU%^BYE~8dJ%u7H2ezdUmb=ge_Z#xnzJW&Vk*GU*L=z23d>^J>UCPdU9>sb40bMt`KP_4|X$gtXe6fP(1qp)w4FXYmP`uCtkU)hVS~b*jaxo zWV=E8oM>C2c(MpfLYH}t4e9=@a{Ng^{6JtOP2&;&qm+P{G{i6atFOgdlPsWFKyQK5 zC|VfQUltKfG}ic_iR+{6QB!D;>jMx1N1ocqw8drvbRF{JbRccT3uIQQku4D0eYzRjRUc|=(as6FrEp|yFX$AuGhxJ4mm7+r!?D&F*`K|qX76==g?!u;UQ5C0=UEu7f9?5v)ARQc| ze5=-R?U_$3hLo&Mw#JK>KDgobUawo0Ud1mNmrbW@2d6lVM(Y|~ozeyUMCVzt&CS-D ztAPWFS)Cpv8S;NrTqnGhYE|V4h&i+;-Y`vyKj9G5=wn4(ub!V0yk^+xp#zUD%(WhJSQ*P!A`lEa~HFG0nVViCoRLC+OC1 z;=fANG(CCK?zGDS;>AT<#J#;n+shbCZZ&ojx+Ao_L@s50nM0D~^jYDrf~wx)vnW0P zMM5IUgj3j`w5c~iZtA-7>~?>G*>a`3U)Q-}pm6V}7wrb$ArE8ACgZ?~lD%d=QLJRA zOo$K6Wc@Gh66^T5l0PS4Fd}Ol=o>C1-IaJBD%8k#n3z=KuCgBbVx#vuUxTf9Q)uP` zaIu}AQ`-F)yilHenF9NF()pYIZq1_PB<#m5?dlyYSo`da?8B|6 z65H!vTKhXJDEj+$oSlEMa$t{8i3vUTds#^lH+)t#{y}|)bK7tEsZU|r`Ru%u*KHNE ze7E}T4jvVsQX7>l1e0@?a8UHgZKX7|;mcN_NU3K&bxU^LqLTEN7kob3Jcmh_#2}=N z0dK@Jby`pr=a4wQI#{I({r(u-ChsJfW8miEPDtz^7{A86%N}8vp58aVK&>!Op`P5Bt1>IM5DbB$V@V{^i0HctU>+XNn&`NoYOQGcvMmv{p75>{`t z1VZ0W0L;T1=w=V)!2W0O-*zmZ5gmr_uevla*ToL|*1*Tr0 z0WWvPt=~`na_c;1>o@_V4g9rS6dXf8(6Svu$!WRx)@+c8OP0yBI3OW$`g%lZ1o9-< z@U!_U(-h2X)Q%O*s@Yu7{*(Boj?gwiKjocz1i~?8t-P_M=u-&AAK7nJm0do^q@Ak1SSuDt1t)@^Mu8T`e4WDo*u(MX~@f zF^FJU@GxeIddw~**m{?~;Xv$)54>M{9@qY6S7{ay!3K0Gv1O|UU;wJN;x%+l}VFAQM|#IwVEjOk{OyO{oo6;nY;MFXOlub^KIE zKA<9T7^XB9txK>G(u~LW0pRseoRVg&-em}|*+dXTLJbptAH#%LVp5=BI3J{8u*-J=F}Gme(3C9P&FJ%jBskOBYtWTWdA z>OMYGjzCWx0RS-fPj%ak!kLtd3tBL(<5bY#!S{QBV}L_D-iT@^iAYRLiS-SiWG?sc zNEeYR5y)Vv-i}07F{79VnlY5Nebt3dHS+J1!!$p}`Hd}*eS1pk|(<>>6{|Gv-Mi+Nahm^%7?XU9b+^>OOiA!0wGUOyLabSe?LGRwrK$4y5FH7Q+b0o`lCrJa2nraI1N@S>}p_hy~f1ycd2H?n=xCiF4r<1pFR!j%&0E@-8TwKt=xXl%0~QX;V7yRO9$zn7x`cx( z)xitsj93P-&5eYC6tFaD{$rk#?$G#0wkQ~$AzT=Ab7c2M56*eejVsQoRs;&9^p`T#K6 zH(NHUC9@`2mk}DLtZVVaN$kh^vD7SyR4iO!mbQouWVc!m;~o{K)#Y)PFMd-?v0hyP(uJ_#N_95+!e< z)qiYUX&zciDZbsMFxU+_e)S9;G%<&uJttiU=~HmD-Kp_1qQ3MVpR6Iq5Yhq+Q}o(l zy}>i86YT|4AENvj9AWF)HrY!NnN*>{IFgMp zqI};%`r3f$$sTUNV=|Hq+`wUsw#~950+B@JF~}5bI)QIFjLj1EwR;3QZvmS3u2~4 z5F0Fs(5(3Gnpg%bAGMAB@ompnya4+ZnOAcf!c-bpSGS({%1d>6&kyQgL=8=VN9$Dd zu=Y}`2oUy;H5clPZ{%rRLc$tkF}py^>9pe}s*-8bpMSU%C| z_E*d$!|Lj@g<#1bbxfg=-LQH*;*2YfS9s{e{dr_t7F~&(*Yh#Tq0ZlwEtn?K4m5Rj#PjyWzG7Wk3WBF>4lA0k#^^xH#~}5(Z?zKgCg~ z8`MdDf`Bj-AQNx#iK)MJ-;1&1hF2VZS3+AfpmE!hZFk+1GA?yxzW2sPyWiAaBz`u3 z$Kkmw0}@L84AukZ!DFLLB`mok>LjN;5ozF zcuJ#!J`$~l3NJlosd-Q6o8QR@2j`QU!uOnH9L`+(B1n{sjG4@xuwa4cwHy<{|8i)t%mQ-LKLYz0}FV8#r;pYTyu}3COx%!68R$Z?J-{6{l#orO7 zKNrPOznj=RHgs6O8@RyPTD_!T=1&e5A63%mVC$fv0z|wf?YU`#)15n)R2bfT7AdQ< zTK^Cdw&#uUY95-E%}c!&;7A^QaT<6B4N$hpT@4kB6ZQQeqVi#RgNacNjTcRwHD&)x z6GJd17D|^?N58A?~KYUf&{hs_U zi8kGHI@dqWqWbTa9z9~NQC&-we0xLa4aOf_LOPc@yeWP!p3RH9NcgOsG(YuB+I_Vs zm+w#+%Wsb(eBjBVrQGxBWx$-DIMXWQfU$pO8`;QKk9p9433v?0)G~&7ZvvCQP^ehM z&N}it%zwY6I~Cj!n@s*Yhf6E{h6h!M??dvVOVdc*!zPDkZ>oBd7mIUcHQihfiIHkz z=_o1^ENmVuD)0aw?!2CY2fnLUoejca*ZhSV&O<7+kB@X(?mci`eH#^GAwY~!VMf{g zSNMnKSoVL4;?rEq8%sHOobpCPT|x<0Bqv25>}>m7I|hQbV0dz4f8v7<5COEi;xyq} z%mo)=?5+nqxT-UrMvKP=s;eh)1GgsM5U3+h8}e7c`Dtb^*&0Wk60V;yc)Px9Q;To@ zi}Kag)uGBLC_Q4+mT!k<1}(cP>fDEW48i_-_RYSJtA{FWk%pdrQv=tNUlVIZvp1pB z)YeJqfS1vxL0$mGSfqJ@`}_3ATX6`w(7^Wy^ykM?e0rJ5xM7jFQb%aE3)lfH)A)Y>*w`-UxBcj+jBR{M^q@cd zjG+;|97pcJX=IKS6ws(h9h|OI&-J#9(MbA9)*rR)(sA^}Cdrq9ug*8}TMtm$?A$uTE0FVI8CByh+b7a87&86H7dd zswKJ{NM%EeA^5?n+wm0)MQ9aB7^Nowh=7_7_T1g-ZaeuHDs^o>F3e^CMtrk(u>lDkv7 zhn7men0Yrioa%nj(l{<*>(ohX%NJ3cp!^&bO~vbFVXCxe&+Uk7%VjXMQ|d8g$|ek6 z?wsaD`juCxidVUtr%iJOA@(b&FHE4ul?Tzgzq<2!pZ=;3`~1c@@L^7GeCh0$m=`B~ z)?z;nZ+hQ(-S~y==|{S2%k75>3Xu*`H>^`=cq-qlYZUScP`>?E>3VoiX-do}V6CB* zbj6iCGlLVqf#$D7dpZ|+yJ1&J5k!yMk8M|zOY?3~%Rwr-IvJ(qr^W+T#?)lcP0m#T zWc87~QA8jR0!H^7MQ%v>k=9ubGcxJ4Jkx(ZcV6)Wz*7roPeWMzhi_q3yiLd?lwz*! zNt{kh^<$j~8fhbk$tcOm0ZeukRch>=Pc2M7ESlQ!J`e(qg|K>mWej_^#}1KX@2O1g zlyUL@0@bnB72Jdozz?<{sRs%vGwvxJDBxJ&quee1@CToq$i${#V0jcB-g4GY_cV_W-Sfi=M0-SN5Q2r9e{;a^^=CjL72{W^5gOmD_RYx0)lK%NSpU<=e zKA?KsW{viA_n|+Praq5u*+tHiWF>P07j1~>OZrE`-rX;(?q9f#B}Lf<*MzS*JrxCY zK6PxaZ8Kur6pi8hcEe)|WdPG3t$%&R&_TdhbX4vj_#;z6Jp02IvoKC+`^ZPq zPqY3_x#cg{cWKEbEX!&un|70mieR)6k;ZQs$)EV@K`-d`08+oOBGPvjCE|NHEWNR) z(NDzxi7PYE!p_6nHte;=C)w~tA4d}oK?gML%N_m(kTC?loKzX&?VXwg^zO*7xM)ng zCFH!V3D35+8PiT;fsh`&1Cxl$HE?9VJ<_FP;akG-A~bJf-KzcwJa$RkZLd)Q z{5bIE%rfbbK5+;E;O!!z1>pIg#Y#34uP>61)Sm#It|>v|O|OkwH`mXMeA0-&E%d!$ zQ?&Y)pHTfz)fLVQtliK}88$i%AHZb%^efh;`jP1RP5RXAm%~hXVgxYO=~#Qq&Z}u& zd0VAlhn~C$(lXz=(UYxe3}t;h;9W`z<=-PUGKLIE-s-}F1wq;HAN@K6N7t6rkK8pz z+d+P#bV0S|9{_A-m{UJB%)1KtzzQj@Xit1Vx}}cu@#%NC&DY}~7y}#KHDLKS_EneN zFn>U)xdF0s6az!uLz`+70&Gxd&*F_>KL4s2Ul4B(lYddV}XfXxfqE%Z|Dlpi?VJqxOt^Fbd0v4UpQrzuaTo^g+0>d~H; z*02KuxH3+YMW9n`8Ie&$v8VJT;04gkBm*D#@|BQ2QpBtY#Al@X``NGE(BlWxp&QeQ z#Lh*SK+R8db6=Pgt`uNh{+kutDZ`fOFx{wncS|+9__1qW%DQX=k!R|s|I9Q;FdAewze29I>{!q*Z(EE?Yqk2#q|QgyKXpCa zTu12R^ORb>_Qdor*9XTI+~H`^!3e+`Po5y^*Y+_PG(*M?Blc?mtE{t84e#|&xpejm zKebK51N}i=!I`Mr#(qhlNce~jjr%qiUxPRF>AopUBnb!k9SXlKYatcL zQoM=UdHRAPE@K2=aX43J`c~?`a|Ulg!7+fn99|(9j-zh+=IkpM-)Hk-F!ryI(}9Ud zSED>?_)VdWTZ+e(A}H-jo;;le=YFwr%}X*r{bP*Tje3SZlo*BUl~NX&W~%u_T1VV9 z)Y3ukT9<|WXivTZi=KWw9LqekV_EJ-ZK-DF(4KF)npwLP%_tv9=s1ZBFg*1m;`?y) z#~6>1M|XEv;4Sm=(IcE%U#SpLG84%?MqY{441s<{nSGucFX)kt_My{`);opKTsyJvX;}JvHBFBj z^7+p5O7~RU8M6b{R&XIcCp0j=|GK2-5F`6kf~Pcry&W-&fi-&Z$n3Qo;?Zxr?JF)i z22>oLM*8>)lo(92iI*jmVs=`RO<$H0Y!0noFVI^2{whQX7oz9JlydXCVZC1O7mqeO z;BUx~aJc>YJw0C+`}uEW<<}+IklTD8iN%Mw<=kc&{gIF8lF5-4{ygLq|qyMgmBA3xI&%XYL!goZnQwRlg=*{yP z!?AGOPm+0N6Cx%+_VB)+Bi5KFK&tia+aXK0r?q3Z-^*6rU$<~r`tK(o(bSjX;Ibh#Wx8OuWm(X*oh^b>20r^h%gA>EPS~EX_}_`g6r;v0 zGi+)9EkowNRYPamlV1wB~hYGCL*owx$HdTd$vGw$_;JTyTgNE5TyJ&jEY%*W15 zPPyue=}>buqg6%$_8SX%>wm}!E3K<0{a(5Tu-P!G(~)H~pWTsVh(o>Ure97TkuNbP zk8qX&^kC?S80GQFM6Gt=L#DP76|mj1h>KJ9BXI+#+^JeSF1BQV^jH4FF*GjXN#C4) zF!e$b%L!N%$Jm*>8;H^dM3%*JgC^T6i!1(*qqA^p`hUAPd{K}Plnz0ZDSyQQULbP7m}ZUh9L{hoi}v+KHdzt4Tn>j2R@tBTngjYOo7@0GZ6 z2>k7=G=DwC6NFv_HGDRyRz+wjBS4dX@uv0b;~+PhRMp&vPW5@krK8IJo+E&`wyrW< zXwx+B<$q@4b9X18w$dg3v>*XKJrLtY0^DRZ9YxwWgsRBvipD!nhBsRp{CTjZ)~V94 z^$}%YtJUR0cq5@de>LcWL}dqi;l*sgl(w4~Vp_UGC%hJQA6bMw=i?Y+WBMxgh*%No z$w^|QAquNI|IYcSa!dT=`gPUS+u?Rgm}LM&Zt~c$Y8+`%2YAc!2<_VVU=8d2!^_zS zcpbyNHl1Esc92k`W29CNSrN>R@+Rrue3)%~I+<*OhlZGR8Fhl_?t@$Y##ZB(> zSGAZIc=&GOUn{q(Fn=S!j9SHy!;v|WQJ(LM$A0+oEER0xMwcU^_}wEL)uR_kbUceg zt>^P)1pMe-$AZKaHcOE6d%?3Vsnw~5oVOUjM>lmH*z36gbGayRI>8ood;PbtL=Y2*a;y8qNlMPS&kqW}C zH}(IjtW}mUUPR)zpYN7#16Nh&H;H&2(SncPd) z`H|*<+riiSN`s?0=xA?3q!4>sHs*czak@z3=yc2`QPcThpEV(K$tsTP-D~ONH~{g%r+~Mbm}uSamqj-4 z67T;U)8@4#7|Y?a*^CM1{mSFOAFE-Ah6myiifoKl8a@<`*^#B9A)T8UEDPVNBXD!c zBDe?T{E*+YTJ7eZ#CpZ7c=Do|r=;YfIFGtgRd#DK$LC1Ta*4@CACs`XD+^OQeq0He z9HdUq|Cfyv7&X;4GoxmY*EGxNe9;qn#pxT2GzyRVjgHz_X$K^Z+4j`mvkmF?6Ajv3 z)Yy``1C4kqzpA<(u7~aB-DJmBcy{XT@YITn_l;gV&3#v8a?ADA*eXV8Hb$*X^uqf4 z7C6{o2}o))!iE}P>k*O@ns<6!zMn&Iwc|_Ro4tR~9^hSN)e0udW6dOGJoZ+-Xp$P$ ziLGnzc%+7@?vf@k?{K)}rG3@VKazmySLQ6=#AWvqhChB1sU8o2HGTw@b+fPe&dL=1 z5dqpa-4uQX!3xiyO18{j;HCB!(((0$0Ishg#`7k@ThIU}1Zbcn@yDuyr zk#gP#!~A{@YpKQU?I57etc&mySR3+LKx#qxV=uvHIxV%a#S>0S zC0w<;eIEzT9f%v$CE{&(OuhT~lp1s}7#>APQfrc0ZaUq5ExaV!*uk#i0SB|F)*FVf zzuUBg+QHc_0fd?uk<~8DY=l~$mMh?Ml8&qB-v;OGhjb#t>aONcS*yP6d4SmkancNc z6gm^53)_OiB`}^H@S~o|;YC$hOWeT`Q*l#OhFfEIV`8-taxT@YmtO%ok4aNJoKm{z(1#Hp0lne`dy@;tP;;sTDi}>Sxda=PqHsb2s%)^+!_JCRK znYr#sH_kXV1*$7?n(FUelYK_8C~#aLhDs`yQQUHA{<{b1x;=br#^J4~(+p-!2I zW?^O}Pjiz_baS0+XmMPswOLI5OSNn`%A&OgHWJoA5Qi7nPNnFtf6yzo2Rw$A?1^{k zWOt>7nx;JRYd#!YkqQ6%$mN~2mT?H(7JL;Er{T%Ba`SZB6oi(SoSdQlJiEb9#Ug6> zU$lX@byR_6-nO4A&$UbEZHh%%N1j`0NaZ%V_sf3;nXj;S&jVd00q{*B5PfEKRgkea zR;T`u{!3BAz)wA23`yFZyRj_V+Kdb2RvP(yKo2B}t--$+x6sWp=A*1KguMku3V&(K z7{B~=)M(>h6HI8M&6@Yqh-4xv(6n`y(DQHj0ohMm(e@-$GIUC|-}dSDq**ui4>IHagMvPXVgmyym+RGo*cY0!7&MzW1|3@&6S`lA zMObu+-TroptU61OwRzXY+DK|Q4jd}RTl-<^GWzSiOig)Fjn#-IB*!9kd%tuv>rBo1 zhv$MPBe+6KJGupz0gBDdm(G8@aBe?kk>A}-=gfa2ps|%Y7%j5d!h=}K$1O`>hCJZ_ z19Q4^F0ZJ|PQ0O_I6Z2y|Ga4iXMWij6M0-|piRysnoDSyMI|GzzIZY3dlOI_Ro+e0 zd{xpJT2siyDzvRlRuN1nqTIAS@hsbXB@1wV`%(QIUbN}1^B+!NrSJZQvPxR*u=)F4VCUMGBmj81S34E}*SA#A|9Zlm=){={ zXi;8(1!+WLan6+cA0*Gr)fu2uACO(;fqC`*^2!a~HHt_q@jBF&b7(U3GNhURv8GTo zxw}BFBB8+smp|DYuCdYS4t!9R+`9iI7H-Xv>d;Vgz22FOfSeyusuOg=u*IqEDkn40E2s=+gO)EebrP;u$8kB zgn@IIl6;U)X7B@`;a>cw>-`DGdiz^|v*XY_JZpP#iW0kQ?K+A}4(&p|Vu@A7o9c>6 z;OM;}ktVw?giqbN2$eL9hbL7xNgPhlLlyL-oD?g=;SMtq@#rvv^gaCGGRNZ>B zIHwaC=K5UROuPSCSj<_7!EVkgGRfkV*zReg6xsr3`)hV97?fVRjq~xNvSa=yV0LjX zTqw;gVD0iMM+RkwAcDGB=v9Dl6cH5g5uLf`#Nswgi%yC29tiBsGUZU`RPq%ytPA!@ zyzOU^ICWEAV3Nz6AGArD!{*4aZCIn&xT?h7UT!cwmAvnf+(VT=`R540I^QIImXyi5 z#D={iQgcEj380sQbD(+3rCVWho6ezk4o4;R^$vIxu-{9>mFr6Gg>Pzknt?g2-(79tPKPIF!Ym6D#q;A@Weu85Q$ zY<|!uTr_X>SN}^P#Wt<7zly*BC1tFwbv>`pywsIWwi_39zHF{%5mG|GlkXou$92}b zB1<7{>lRCqnx}CW9&R)ZKo=6pRX)->rnjG$yq!0`h4ntvOA9pPSL(18#l6`IhsdDLW{Gvh7lY@wpCUS0F;X3m1MD{b#QiP3SdmVT zBE-Ke{`9$Iqq5%Zvzvriv%y{9*ZQrqv7C7>XJX4plCj2*5;cAsL#z9;=Kc6L$|eef zxax9aa?iA<7WC=zuSnY+QSV&sz84cyYOmY&iL!^R062>z=Tb2%tX8BO$L?=_Ri zY$PxWGcqZkakS*pmwd=%_bA87YKgo5r!}Ad<6ZMw@Zh(M`*X+6X>G|Ui6Rwv#Lo-AMqp*xnKl+Hbw0O;%*iYa)$(_733Gp{w>nxT?bxHX58#%`I`YHWt{J!+QaaObVv}$@JZQ8H&4*NZE zu~a0y0DIuruYXShxb5^$=$>CbPJE38>I-w>R#UlokIXbWqsm-McF)FG;L6MNIJ5Rv&VikCz^n>vpW8oZ6YceyR=GS1Q2PU?bls{Wcx1ekc|9NB zVfTqj%v|A3VviKA4IA3=Ld4G5s7Zq5k-j_3;++fE?1vOe)9H*gx}wU;sygssaMa_d zP!uJQL*OHK@q|wQ34A%fLix&{y>)ITMa1}hiPV~JC>UOvlQR_#8Mf2#gC6Ka!h07; z1wanbZTZL+`&UJ!dSK&9TF8fJH1&$yyt2mA>#WX^R_@bU2|n9kGSz&Z&gsTtMG6y} z3a;H%A#ci_Tl0LjD&-Vp_yG#(aB5q?4-EXr1dW%eG!h-Izk-vAR=qw%930K0 zWcup7)zd_`m@qEB5xQm4^uvrjO|?s*(s*F1&-()iO2yPI)GWmEUIK_egbU1TXIxy; zB;A%gCA>7;0mH1EDh}%pFOu)3@=v@N%_eAfL3*dKDQ&Q&+*|b~>8g+QXS21{ANARF ziJ^7brOmPeo$!9n!3tt8iU?doKKFU(+~kyoj_pE;BhSDcwF&qK3ZuanI z@)4b$`Jq`#^i#+n;2kr2_JZ89uw8f=^=5 zu7XEmK3POIc!cSqMBQF~zWO`SuoDQ_A{a zPIUYtWgaXLly8gK%=h6Ni6kCuVs6mXr-CawU<;^1vRdhFdUSt-PEpl5I9R!kzo_aw zfqM(s;m9i9+Z)^+{{C0QJG9kl3LvCbX*1eCIH$9x%|WvAUzzhh76-xYh$|9P;diM5 zcWd@~OEc@rm|g7sd6sw6MD}jfj4qcDNVTBpztX#*sv^5UZ76fqN0k!x?_7ajrWy?3 zJFZ;D+K#YUFx}s<`OxCeLx_H$va=IwPvgOfgKlM7LsF{l{^4Z0pc3m}c8_%?Nldke zE|1?}0$?WDD&MH4r<5a}mi>mYYf~q>hwUORh2F!H@N?sNHBKuPR1oF~J@2E8w%^jPXAis<)$H&w`*q(I8pAU?|MqJnO5Pz`nDa=ne6n@@9IoG7a>` zoMq2=(dzR`K<--k<16Oc7U6;q%pbYl+iu(zyt@m-t#Vf*lm)9lJ=wIEH)?h_RXcRE z+z8ZKI9NO0_G~sTRsEG0cE++@M0d^{{!0X{B7Qn0yrzauAn!#qnRry{#WkWR^iSjd z@H5dQx-;&JPh7c_XH{HN2jEmHBgmqbBfkaJV-?<|uR7(-e7k{4>kySzV%aw_qo?#U zp6e6-5FZ}_QZ~`Za|jg6K}l#e5j`fYu@~P3ReT7wi5KqEbxL)LkB1Gyij!({Z2ra8 zzg*+0=%*!i!}`FF{l2LAXUj{P=o{cCaC`4Rc^fcZ4PxnA{HRhYmIDum8irKlQ&*j z@`0%8pr!}D0?)vRKGqxvO#()z zmDe%K5t&;cy=)k)SRL_gcSJkCbQ>w*16#)c?#&@%;1(N&;MF8=n@E+&G_dH%b`Jbt zui{baYNs=1ZUL?4C82WaTy;oi2Yw(Ubd8R(46v28LKma^?<&e1IMXXBDCWOjamelA z05Nu6sGXDjE1lfs&%c>Vf(O2n&ry(-U+OVK8UB%9L|bd;bj~C>1#0!G(vclKszRGJ zARMOfy=d za_7I_^mn^gKyx_>1_c3I?4<=9K|ebRrn%BJWWW#j6qtQwR~;e$xl7Xl@$j`8mCvg( z5_LI|vMbGiL#;e$pD`NrB^CdF976ukzEZ$&fS5l&yDFi-oh{ThTeI)Yn9z>a`u3Tr z{S(h4Q<3x02@0?GZpi%S#mhw`&)mmIP>uce|wH*{UEdNq#W)Nk)2f{|h#n}9bdC!gC%qb%Bx{fR=ckqNq6_c- z16C((i(@@gYo5Nn-aG2tE&aiw3;p>*(voPR|2otFH`SOMo+bEskVgH#Bjk9~dhaar zOckytnqBT>lub(kzPiLxlG>(&MrD>NcC8@#ICzAuPMsJknU`VCd;s^0hcPl*o~tjg zLq1r7RO9*hJUL&g4Ktb@f_;^uZx@2n5@x= zRQeX0-XB)ZG8!ae|fEn za1zsp&h(vO{;MfQMsA|05K6EvMFf8gY+4r%W9EFq2c8yLB9sk!jOGqsl%j*Wxqpx!D9by#; ztZA=+iRIeKzelf)-!{JV;gxW}{X3$g^3pg>k)?+Y=isVI68Ye-dmi(uGp!PU8;t=k@DP=Oih>I4f-w>Oj|1aN`t<7n- zJ6K?z`OzPCJK+$i*Zb!UD-AUeoC9u)FwHQAo;dvm;e1=&-)p^B5zj_6?151V3w($T znDYtA*%6QkCvdC6g={b%xN-VVOkB>10AFhYA=9&tNkgp*4d`&T5iI%#*1rOWY9{2m zQ{Ly6cH`yk4c=VDr!ODTIfWjWhP*ZU<H;N7tkE}>@fr?ALB zuOiu(*~fq`C22Tob4zl4ZrNQCAt~R9S*?7RT$bXv-KJ~(JsvRNP)GjRc(WSg)$g@W zAmi!Te_D-xiijnl>|S5yvhrk5or40DBhRUIJ+`s$W15;wac%=?R`=i7+O?^GSh9En z_(VZ~RcdkacS6X`2C>Y+y6W6TWivO4$8TFkSlNEuW-RYy`dmirm(z5eYJFE4y7I7J zRr1-yz7oJ;*(O+(MfC#U8Gjr#2y0{Di4 z2N(OLZgVUz!x;YZn%>SYy1hOcqr${GvaR+zRXU``49I`pB>E#IU0#sUOVcP>W)e-k zC45bn@AXSb{2!L&?yX9efk3JC$3LrsO=$&E0@~yoQUnK{e|MaO6kkS!-D!@vzvz1@$}ZFuLzPNupiPxE(k)V5>r6U;xSwECzjj^(s<;=`e3=^_78 zJCAb1NVFcLmw>F`@B?X0u;eo%b4-v(E94{?cY|s1D(@%x57D$YDgj|9V3m75kCfva z4+iX!DN54x52jaiz~|7ua=<|AjQ1dG|JFUd=0O;oGhbClXUJowq;0&y`&9Du#O;Da zO#=9^2{L8|Qpj7o7frX}b1-xpuO(Vtcq{bNFXnzFZKmr)rCf^W*xLVS6Q{ga7Gf+L zS;H4|C%vXgCtcjLyAJtA^=W)zgF^EX1AFbnAMef~VEP>mp-45(`JR8DcAwT)*;>xm zJ|x#_L=-7ISxL1|W)lPLkv&?nh!KFqh{*S7RR9UB*Pagg#P_e^-9L%He>Y~XphX6N zag}>+;Ku5IoeS>7r8(QB_;W5~>uUs3!}T^0(GQIvEeGLvUkO$@%oq-@hRjKG8vl1C zLe?algg(K)!u@5{3~Amd;2EKtNSirL+eL7E)!Qg4g-FW;D?vTyju|j<{C0M(J|Kc% zjPWBOetROa9`l|1adB^gq8Pnfw_u`r8ldGQF^UhzvjL4=?IUUsjJ1q>$;)w&!RpORHdzUqq+gewaduVzX*`{LDN>_I5Vq|RS zv85Uv@(SZr#&(5=IlkId-^Tiw;1zWjyz~fIPSNNwdwue0AaY$oLWTk;i=YO#X+jCL zhN>@!MJ+bnrmjY(Pe*I6p9{b?rDwANVeX~;9yUct$KHTTZ#wzX#}~kQg+8JfNhSxE z@)$irA_8?<;Kk^ux|+=aD__r+GNndGd}dwe(SU=Q%sJZ|*bfu+mG7^je-yU9lDR3E zZSG%ZLVi-)iD%Kj`XQ$2>@tPbib#_h_v%fUJQ0OIBhPHoEao$W%0HTm{F01$@vRh$ zIzErMV`DUgo){9Z7ZLfw)z&QyHKBA{c1P$q&3eo|c>5 z@ZN11xwG@iq+Wl;gHdMNTUGG0e#7QcN3<-bKEmHBBZD0giaaY2@=7#M<9s@q@7GLy z7%d1Iiz?j8z&%;3sfHI>m`M>r%VwdEGv&C78Kz$1jpj|ZU%V*OaUy4CFJ`BRyU%4e zN=dC&Xj#>tWQ61pjPlmgZN03!ATY1oAZu+!O6swwMUx$!u7^;? zQC&GEDrglhhb~_>CtKO^Vmst}EQa{ODppl%B$J{p-2v}W!AQ%5eoK?=Li6dO*+WV0!|%o#?eY#2$Y^o`g+-Mi$>R(TQhnsCE@lb zwOr8dnUrWIE)9NMcCPXg)5a`^o3IH;Fq0={nW>CI9OeZTS^fC6Q$xGihLv3fQvI$b z)HS1v8hFeZFl#ta(05TK!pCSj!sw_g{S@3LY{<~}&D793H!fV1j!RW=Pc*iCd^gEY zA8fLieN)=>&Ii&^m?HNssi`dcMIpnpbImro(#=mLZ{M98CGXm<-s-al`R=kV!|Jk| zipc%XWudl}LJk@`*3t=!U*SIe_m(0IdwyYlX}JbGmjSLDwg&>PsAjO8IwOS{n$bO| z1nWb>8-WM)rh!yq4uavyuL*VAoSJIt6E8#wtPXo;#vETmK>0wlqPd!0#6Sd%ZI30Q z?rz4(l!r)XpVGdsMB=8_s9Zo>jd%c*-c++7kBx6j$;S9DqBxqOtR;2=u=QJQszrKq z7v)L}KUeMYu1QG@XCR`|ye>PPo;@c{fg5hV&7IN>X*H$Y|B3GWmQo8Bh^v+X=VMUu z7HzSbMCi_a%#K*r1{vN65FM=r5<64#gVzuPhZ8io#djh^{b0~4F$wjM2GpXU8}G>`uJ7{#UGr?(po=Y^F!2_P6taZka_Dl-xD#@ajc z;=(lM&;MQBUH1mzXz@0NqYp9?YL097VZV0YM3biJ)a%wt^3{>!X{`l!vy)pmMc2Z$KQ){lul{ogpA^#{wH$_r$l6zKzdi3R9nF0dRvr} z)JnCYUbHXMiwao;DTr`Epi*Gxa579w@DIwz^+J^n=R4E>5Vocng}3P59}3OAuucZ# z&l$psarHd=(iviQ+wsJTRH<|lUdFsqSgx0&J!oWTC>}n&1FzE)DFRQDhf+I9Ws{jq z&XeLjq1V3E(jVud#cVdY7Umc4T#asClOFwy3mo{)t{uA56u5$|R&BL_A|rmI0vn%z zMY=AoJ|-n$e3ID@k=K!=MLmOPbFOwNaX`lvLVx3t?h6VxD@;HFvd{nUGDX2&vFO1zicXwiA)5$cv7cg5eLlouzM`!bv`4bcy|GH?q zMYh_D>cO{fqmoD`z=VmbP{8?fkD7k!-m>~NbiHktV?E@g5DOU@xT(>WSXCHzFt(bE z!4P!#6kYW5s1R$Tc8`wq=-B1Q`@jbbsY~Zm=d-=X8ovz8>M7oeD_niAD!IO8Wo_tn ztCPz|>i_sSb$fSq1JGWX21R8srMbhgUMR)s_x@&3c(j?m^qec>ES~gEB{GWpSk|&L zYc&-Q;%VS%z0tj&$R49*8b}=-3hBqct_)#9y#G9hz~;ENnlCVrG(Q~DIvR~5x1$hM z`cr+8SmcOx=_5Kc?)njn$aoutU319i1$X=2?&MXJ*}sK!_^R^RNs$9m;AaW%6aUbJ5Rhp>pM^+(zH<|!!(FuTsuiUxCv58W%EiVs_OKn=pZ68$WO z9>*jFXO-P3+%?tvGYJe%I?r13mdc_4x%~s&cEbFLMn$v;+5GX^nD?LZhRZNNRI<3T zmKbC-Z*(sRRIweU|Dt>k<-9r5Mu9`#g~#n^bBQ-D5J8OJGLny1GdbHiep8RB`{UYz z6Y=8K6?4Ki4=YkK!x{Y>Jbbem{u zt)E0jHSEPDMwRv`$_h#w^v;TeLlgAc%}IY1^y9~OM9`{g93-mMctr^(5e$W%>ZbKZ z^O2((-rj(U-%;&dzH;kkr!iU>FT z86!*Ab5<(g-uVOq&@T2+y0O7)fyZgK&pI}vC!6*MjswW< zC9tpD7Eu}*)%qc!R-AUPM7>TSgun#}6teHawJbBK@$IR0Uy&)1UhT;Z;bXvmVoKDfmndZ>F`EIX z1X+eBxc`+>E&$+oXC0$_IjjHMCV|YEOUI8EE^j}gkH2eLv#8uaWHVBRmUK7}F?;Js zr3W-z2+g!}8{w*mq&5^uto@ECbn+Nu=UCJA8;<&znrFGmF_!M8_&Y@yOR$37ECUup z&B$t_b9m({BKN+j;>`54@bOxf)1-YL#c3b1<_K+cQ@v@XOdF<~qn_H33(yy<*v<9K zFKKIPBW(P(`?W}nC^~R1T$zSn?|y4>T5V`TSOl-baUy1fve3Fu)8 zHtA_3$m?WX8@(-Cp56B^t51p31F;I`j8NIJegzJqHOV;4au)2a-Uz1gb|GR0(4MmH zjg*Rx*|)FPUwzP6mj`t><#qa09{OTFlynQSC(`}qzbIVhZ^!QzH%~3UGA+=vgf(mw z%9$Q|%58WxG`p^@P}XX;-W2IOU=TuA~qyjggE@pWR2CMEv# znrFl`L3Ycsj=er66kUf>G?mz4W0ng4STmL;1;my1tt|R1 zFE2~SW>>&+C7)vNBH*2*&Mk&$OV>7!+$&L!wlK(Be*=KorTZaZ&it$VrEB{Sb-8IG z&nfqP4`_V3;pHz!uhgR14Ln3ALU$Hq>?4W*2tf(4Hgo@>P>&_V$V&xil_9G0;EN2x zUj<=RtciOP(eMnu$0&_s^At)ri!c!HG}Cs6v-QoM%UHe6$7EJRuokhM&$?2)Q@TgEX0W}_gQXEH?K<_ZxAdEC zdJ8q|o}V#(pk51`Xa8w&Pm$V3^9ekCIjCl^kztQGPf9*s3QB#Ldcab>O=AC8P% z&iiJlxjeI|c8*Fk!rvL^4V|6oZA5di545z=@7;nZeac?fKOj6OK27+vN0T=xcUA6# z*tZjJ3KNT{BuY#7T^R&(H;5njSG%}B9LgF|?Rrj#p1Wt+Dz^BT=N>w&_4F?Om@scD z?zkpw-#|;o+7VF8fn7sLJJzs0|A5I{w~t@6+@H43nz(`~_YMTq>~W8NIdf#^+jq3X zD{HS7Q&1-UO}3of|M>O(M?2wJ&W7pkMtJ?D_wVJ0bg3b>>445rra2di5XeUH3@<9i zjT&ses8dPA%UO}zCmt^nc^RNx+wtVR#L95`cO3d^JB+Z?{pu{zSLCey39=!ay|E2@R5iB~7@h;guL&jq~$$jx{qcS&aj z4oY*=9KUqtx6(trgBESm@)-pNwv`hJ2cNzt1GwfAR%3k}9xwi#H1mCfQ!u(}QhK85eh5EK! zkG^U;x&|mv{Lm4akz^nEiw49(!Lr%B$KA{fY@P6n&1`}wbm{@*D-%gA$8R4TE^eJG zyx+$`$pQZcOqgP7$}|Gh*^0AxT2oT23ed%bmqIO@)Tf`*IIMak#CwU%&%&^Z z$FaJCNV+txtt8rMG;ZN03ynytl(awT%QpQd|IIL-p6EZ;UM=A4s~U=^%DJ*RpxP>p zQK8t~AHaiM!zzEO5Xjpw&OkHEeJ?8U)Z!^85K(39NvM%U39-Iz{;(b|yG)s8{vqf6 z&D$~!3ZGfK)z**AZ)2!LfA}=Yd&W8?@QHCa9A@1hS-*f?a?0b4a5Bdl3y|^EDDo;^ z%OIXH^JXp^J_KhtstGVq>GKPDl>*lft51ikm4EKlx!&i#?R!Twu@~#A82PEDnkdz8 zby{~w;y}ZwZ4;@gTf`>x^$mq}#FrRGVN*s9;M!M!W<}=-*ccd}J~fqMWQ>cr%12=# z!+UjzVfs+XeVPpT87rgzCT`Bodci*uXh4ta%vDQn}Aw|T4 z?#M$uD=v1)iS=Q1L&z(qm=Yo>1hG^;a!kj^@z3eRC0N9s0c`YUcLXupwOX6p_G2gm zUbpE4*m+FqfP4nnLYmyY5HIXO#=0QiAr=Wtlzd>J>vK=|m;k>eg2I^80{I$uCmG{9 zsGb>+1ZoW6A_}`vE$sZ%ta3p{YQXr2cFJvI(x1Z>8)ReMRhbNhUG~ek%5j~~!Z4bg zcPm)dpXEn?g_H6eCLIGB?_3&ImhoNbKg%JIhHb%Sqv2fCX|BoP8boE+DafxZb#U_W^rxyO55xV-~=Q} zL}CCNAzwvHh4ZV0{?8|w`vIU7di)7{RME&y@ED*FToSo0oPilR67ZZUp1pB1lesUf zvE&%E3^oNj__P(5{t$Pf8Y7Oy1oE_It0M*&drUe+pblH?FKnTZOSTISTd-a+GHpK% zXKzp!`zgX1K=`(dZidNYIE|+-Dh8tuIJ)|Ux)A0= z^nUS};#$EV#*Gmp)UBb9#B}ZRHXaTObjv;JbgzwPapJZ0T=3D*SAGP8mU z90x{Mymg)}b-hlJR?&0lM>c;}COwA(&aIIPFTGXi(A?ZzSygfLTxZ-ly%-hWvx?>& zz!*7;g1(DWM^2Zz17|xg+}~o=ahM!fy4Gc*&(|oXUpIOgE*&>l%E3n7aNWcV)35Pr z$|#d=Z!zk|v|SvX^@Hl~Lf~`NN|Fm=yF!5M_Y6D)b$s~j1DtAfqJ=5F6UsVc?s^=h zmN67DuXWC;i*$Ox2dti^r>@r35tY5pXyI&^{{04#=Oiqr!BHYlXXFtd>0N0S| zRRlssC|nK~Fb5ZEe%U~|l@70>L*jElpGNXusi;Yc+U##k15gdbTq;DGMod!U^8V0| zqGIFTZ7gM^FpWKQ_r~ZfhnmHDU4$+MC{yvbI5(M-9t`XQ@!Z`_id!ZN(0%v%K)_lC z;hQ>GtIzPkWxjpqK|FQnTPx3(UmOr-UA;xM!I2EbF~dve{#nG3(;WHNUFAfKzF7jF zWxHGjTh=>z*NI>0@REgGqpYta3OeJXQFm{FTq^vUY78Z`)aSDo4r9RfL1)@{8UjuN zRIS}U5QRFEZ2KquSzhJMKq`J>j=C;AlIHja$hS^A-dEK#M(7QcMjnxZQiU16Zw;uO+j45t7F+8TNDSt}ZgpuWHgz)Wk7!WKo{HBQILIcq2`V`eY@ z^qQ`D+NeBnhwcHBfXT0bF?#d{(i8+Ikg21l6U2#@#u zoYQynZ|<>=0agj6RXTOP11Okc!H>3FhCG7x5B0kM>cI2Pd}MlYvOzC$(SdR98GAbB zj$C=-CC}3SNf?}s0|-F%_5eCR0O_C<(^nK3ce(eQ>G0|Z`02O9$M2{b2pBam)F?<4 zy?5G#cf6vj2ICakQ|G?LIIGaWOs`m*{eQh!b_w4Y*d=$?W!>T?m3@-SeG zL{cif8N)=sa?a0K6*bS)Iyxs>fEwJpghF%vRG8jM<*}+e?{h|IzQ|PLeX{s|`o~5J zD#Wn5R8ggh1o_FgV$>he{xkJqE;Fj@iW-@+68tR%bI3epOOKe`=i|P1%8;;Ghdx@0I}{)!2!G;y>hwb()l?`u>RW>zZDd_kZz3&l)2Aw=iyVSzssq z?3q`SPocE@hzt*M*k34(9^aZuqpxZ(tj&-mhyd+6_gCn`#l|EcR8tvhMCs$3Toev} z_@%9(GpG|+DgoTsL`t5`t`QK#!I=@dH9WRu^XkFhO}9GV_o+UR8s~qvc&(ZC9sW^! zAPJ$v{^bitaANME8q^`$$fn}pT9!fLxffBzm21g1BrOBBp>BKCHKv^@e88J(&xndi z+)zj7dElbAeyRBu`KMG>H-S<`G-)Thw#F(;3Du1XJy8iw$-{|Difd44S~W9b|1U$~ zO8B|shjq@UTyQsWgY6Qi>~6c;RdL<`;4#7d!HJX+c7KLsQ{m3kBsNRS?h-(02y%RC zj1u(xxWM<`pCNoO81Ejkbn5CaDnnWcOvdT_cAQx4Fd>tG>*sHE0Q;=npq)WrIU!lwL zGwKKw6L1>9QrCSkJE8^QtrV+>)-x7_YB&shAO1NHc~cC@LN39|Bs#_AOduWO0-D$1 zdf!x`+`;gc7cfG#&?uCrs(d5UAs<%-F#C`&!>(3adlg-*TZFvxfWjGz`8~!tx?Y+i zTZAOkh=75fpWKC`85P0{U2EMnbeq8C;?&AeO?XIgM%l>9`Ws0~V0VvBt5rL_Mx*vm zbe&jLzHY^_!Z-?X_C|UE_C;$z3r6vZQI|=8@gbyZj2o@KTvE9xQ>IT(6D*jxyv#ci@x8u zCWRsc72@#|vb&@EAkHpU5~sN1A(=)sv5nYEx%Qd#KT1m~w)r|r zjN4e}S`!5ejpDdPAd-(Eq@0_hoc4wUGS_3oM?~ zOxf7Gt!|c^Qg+uSuP_oJ0knk~f7)3eFSLc}kR3_$X{Z|VXlB}eDi_ag&%&#Bj;2w4 z6g^mJgmhub7yANQ0akPb3h@lKZ!U|6v$!x z--~=Us7|gDRhum#P$do)F z8NAxU!hmh_Cxrs;G2KtujDjrSTLZ>u4F&tCi$f$|3mK zQ5HEkrkfRtr<0Md&aXlOSw~zE!EoyD@RbhtWD&+*O3XgbM*FG@!C-*fkI5Kfm64+; ziE_Z&kqbt+bQY+M1e$-R2fgRY3PxcHBvAjfoSm3Z^M)TepVwxt9H%6J1_cNZr3vAL za+wXhq*&(}Lyf+4kI|X)7(mi;Pp|S4#txtcOt}Zj&S)UiXWgb*0NFmqo$WNp@b33z z57c(>f2+0+P<5$#s&G}EVf7a9dK>GKe0>VUtFV%qWyz2{~dr6(VCox** z$@-gc}s6~uFOBiE8L z+N3!pdNIJp^@x;An2Y!13dolPY95Yq=4v3!{1F@~pGwyPFp>l%hyFJcVo@EzcoD7J zfZ_G$FB~s0>0S&TdrnMa&MsPblib>T>@8$TSw zr*|*o9z^3XJ0zSBLa(hgJ^aD%S!i zNxAz-r89rE`zHzej`8Rp&M3u@i#&Ui_=lKh{ME__(IvHuLzbJYwY>dxOK}`Q+D&J} zLR(|87RIc2qUP0sc1^kCxa?nMEx@8K`usDG1T7);GY{$8Pfvf4vZr)oXn?6`wptK8 zCOG$zfdf<>TkO?Hdhd5ksS&wF1Ar*=JJZ|ht{klPRxYRV9vpd32Y08+UQ01BMSJd# z#bxP5C16MEYYb_43YBhe7hyLJck&XrXdV*pzkKW@IjUt!da^as5K6n3%F*?gnH}!% zMWqC~fjSe!0+6R!)(li&TL+#zAio>HO*Uj0>dXU{(pjd0%S$*71TYZh^+q7ne`30^ z;LY1RE(WNsO5g`42%eubS%dL;O%i2cvtO5n1)Q9kTL?HF2&}iR_+I`j z-rv2nK>uM3pidsu1;Tdfc?b-HQXlPf1^X;*oY@pZ8IK<7Tx=OlgD-$n)%})FJ9->_ zF=>hqoEY}{AxZuyrdRNL+7YEk#6;{}uepQ%XhGP^`DD=qI#jj+zNXODscGl{)`BXJ zi=^3+=h$cd@9h_KIdz)lr5j8e+FExZvwOBw%0u#5p&!#e@6tao7y$MRBr!A$(l&F9 zt@d3d1bY*u*5v9Jh~*OZM?UnC|E`FIoBGUM|BxG1!jL?r$8TQsoegL@eA(ZQxnano z9MqP5rF_qF@fSMaLrNH-#`25HfeHH*L1R<@#F}@PRRgCF!Rs+~r98{Ev~l2cqWSHP zN|XNX6O3QrGK+5DKAMsd%x8Cc7XUsS+Nfpa0e}N2`Rk}hKPDhpxeQ9nmNl>y0T?K*?mTP%PC(YQVC&y6$s`l-DMV3aU!ki2fF4|Y%k;o?Ev+&I zin&Oho-?6@jdYIS*t-lX$z_(dzqEg`xL|-SpGtU&jX1PRXIRSQWcWTj@qhGsmZFb~ zU;0UbW3qBoI2r3#3dR%*n?dFdO3E?g=QcZXOn9wD@cooqn{SYT)VZKf^<61LnxmKS zQ-iZdrrFDGye}d1Y3_g2Vhp!ztwzEa(o3q7eSp~1Os|t1#QV~J?t^-G6^Z}5)?z3V z^|nVmbI`4_M;>HIvn4YtE8}I!v$lDvbe_qr%g3t?t))#POMZnjO*Il`^7J=^jXXW< zM*V*t0yiy<*<|RHw{OGr0_bJ47At zcz?stgA*yh2k%Q%AQ@1G)KI5^R}NVfn1m7tEUz~z+mS!F)*#uZ2g3oZIrfnc1w)1* z!_^|#UFoP~2d##q1hp0QC6g5Uhn!cV4LH&Bn-S6YP)8atV*sMX?t}FeF`7Jo3}B%@ zE&k_1Y&kR^0Y_#@7QIYouQIaQ9x=~)@JQCTL<~eRjRdSb0SRHLEs?09l|KUJrMO^J z|CyZGMgAIY)23s?P)u&q$^c0sz8@YmYZ9w5Hs-Y5aC?@Hw-w3x0q~7~J_s&P)G?yh z^pylO?m&6PdOhYt?;IwhEKP(pF7xtpo}so%-fg_il$QG3zYiST+mA(N!sY zm4GPSi99}<$g*FlIPw{BU@jJ+f3aTURs?6?sh#np#fBLO4wOp z((Zf!RLN4LBT*U@$-x2}1Jq;&{00s8!PY=X4fOKg2f(E4Fuwu77X-g~ptvDl_AX~V zGq%1Me+X01q0e`(y7r^qf>>D>UX8hIig(;){x<0j=A(H zc+jJo2TVJlvbIpK*DaNce?;tN@M%nHq8R(d-OV?@&yAK1x!H$Um(& z_PX>Q4Sbi@wqTzRw5nnvO~l2#x(mIU#DT`Ce0{gwlIE>#5#fs;_;8O^{eqMH8VIm$ z>SxR(-9w644fgcI31A>M++rUHuSjsxOch9_wy&p7c?o}3z8@gHx+M*k3$>sT1t&$u z*QP4v!8Ee`)>EU*bDJ?QwInKi3>Na|YgjYK(g!FWVY^9vTdvcEnPas$Newc4OM5(KTa$pju;m zm?KoegVP8^rjOfQTt%BFDn=stK4alATD*Axf8Xo7=wR_rS8X4O-WNO+hQ0XvHBI}I z7=l6=e0%RR@*5#!Jpo}|SA>}m7{iNI(vWPLp+ewc_Lb|eiJad@H5*8l8uU|qzTyQ0 zeOL_$%MJ1|SofRmW7KOP|~ne^9twE@Am zyhmlN8UX~>bE{@B9AseS-72|Ca z_&(NNF~%KgMfEv38$mDE@GZHt4N46QvWE_0|2Y;Sa8iZ1BgS|A3J`pu&P4x5;D7Lj z?U1JQ;I@^}6R7bf$8XL(Bg`R#J$&?#P-yUi+aaQd-qEP7)z_j~+07e7W3f;5? zvN}+TNd0_L?_Y1dy|YU9;wSS@fhnS3a=AsMH+{D{=M7o9`S-wgCPDa*e-h@dBGKCVkpaN$Vg&E2nWx~qRM zpAC1*wA?Xvi6HzG6LM$X%#-!eWkdrH;swDAH9J(@;zDzuW3I)~2CUHWq4cIjr%X`% z&3e(I=g~v(=EtR1@_Y`W&!OVoIU?b8@`7u|7l4|-EwqL+yZh(pEbhcThFQk`lnj0^8>Kj8%uxjg(ln@z%S(pPSt; zVL@Qk3{ObTsrPyP1#toQV@9lm6yX;7iYp~+NWf<{1M0y1%Sc-IvHL%co%GV?8@0bo z8sd)I!lZf2&cnLccTd^6v*Bl3&2Or zcscCh32E&fkoYwJa3oZ&w(VF|Z13OG$$gGDT|I_F4y`b8__H#e-aX0ezb2LAKI%Fj zkmvqRmkSspKGZjM`wD~}ME2AfcYy_fwsTH0TLm1;P+dzdsa)`-v?)CU?64EeOQOX^ zho6~8dZ%pS^qVZ!_$eQRfSOtgd7aQs_&s|s{5K@FGM3`06hmNnO)C31yymRqXguj} zqWjMhRl6c#&6pibIm-aakluV9^)wPcCvw*0-*b_6#FZeMu=g|sf_M+Y&;Lz68omeCr z=l~F((m8CPCnq;MaB3iMrps}CE5?x`4tr=+s-#zls*ekKtp-<`q!z83t3=qU=Nre2 zhJ7ye=BqdrdafdAI$*n~YgA7nrR<#h0F@`M<4V$A+gF3u)EY--3~1w}8|i zQ>H|1Hu?xU%c??R5$cU;E-`t?{w6J$Otry3%vpE|Y6Dk=JV-#&4Zbtjo?m@ufZf8) zT4iY}gPQUsaEkcwB)%HGc38;?Uq4#Py}ex`vY}FX;g^DI3|R2n7HIn5mTP0%iH`8} zd*A=}qxcm+paEtug4sATq%_d!O;?QW$>cKuiHq#So6Fer#gT+@tp|AOi zd#qa*r%E`QW|uUQDG{8^4N?()j#FU*tX5U|n~o_P7IfV7d8sMqZFhj)_d)j_-r9oE4_b1aKHEr)Ma z$uz$K`yT)GN2D!CC~!caeaERSV<*KBY-@>WOl#pa%@NPdwT^a!wHKpAhA^#I{xSo< zq(OIkUDSl&B(ie@WVYiCzxST2iNfXEP`KIKIw=Y>5pc{s4LAcBtLfwct-%q3mdB~@ zgV8SRX3{EKLSjdCkMcfZ7~lPj;=B6_5{fP_Thi~dh82|tJskPutS)9z`=@2nOcP+A z=K!Y6cjXz^KTMP1bupcmjX`n&kJ3z970{=AVrXt?U^NX$6>O#;k+OuLlLf1jTukES zIC%r|mUy`roGd|60m-A(OG`Z*xYD=nU~2gCpl)7bIbpx}#*P>#tcpwwWY;i8uZk-+ zFfXPfxdCR*FfVYMVWb@qo{1JAfYrY=`uY-Fw>Uka5nur+-`0Q#Zfju4F3vn$u5GOw z=cR6gwpO@*lr9i+THb8)Bp4N!2qKdwekKAdN(+N~V~qGIRL3&p6kf)!DtP)Zh{=6H z8e;XEPW9R4b~blsq447_7ltKYgpmPm9L7$=Kgra?pIwHd&~dck37j(vgy;=pMmqLTqqHh z71%Q^(1GM($zXVe-LkFVVa$Nl@Hh>~g&(#B3f%27ga1Y;s94RgVWC`}W^Q7fT5j*l=kx$9q&3&sya`X{xKLX@R ziU#Yrnwz@Cu+*VE5UYCjSWw2s>nj0qFeiGlB#$hWG@Cay3i$OIYN-}FUChe|ZWPSz z18%xrYTwLW>beIxK=SA&cEhdEoU#0-a8I65tuyyaVuaGQ!};J(ezl%F?@LdhKO!%L z`NJ+mUi;`8_qGOJ3%Deuv@Q#Rx$aaJo%AU z9+)NI$`Eedq!M)O5^RhyL5+a2zzsSfhq6;P*hdd6e4rX$%3n^z#SUgpC+lz>pwR?S zo4CLg%a0kP?AC*f8@FtSRGTxWFS|bma5HK4h-z7F!V*xbj)#TxsS_6;g`h;Yss2;Tr%ch*?48rUGj_2d*A1{64#2aiD?d! z)HpuaR47ET%718UYn({^JQ4SYwTM2gvncGZWnV_M^0`v_(=+AmrIkgc2`-xEe`g<$ zQ&)7V5xW;ukLEVk;L|!3dJ@nb))g>)9=c(Nm zkyxH=&C*70uZUVd(|sK_!x&ue3|m>i+O1FAh{@;Ls`)1MDS`U~_jOv-zOx9g)o+S7 zw-GVDebenY(&wd8EqAmP%|(5q!nElsNq(GMp%ddpx}B9sD*J}3iIz)a{ffX$jHijy z&3tagr%gl)?%LYrglz$S0Pu{ro>nc9Z*-1%+A`X2V3K%kQ2!7Q+YBcy;6Rr>cvs&bjSda$NCb*Ff zAqD4s&dGkaiC2B+K_Bn9N}q3Si62Z5v>)H?FHz*|(L;!Hh?_vMKNjR3U&1%#XL_bqk{Ey z#3p4B6tH}QfJ(vj^yPourEI0{#xa7Ea^+3BC=?TCcIyk=9nUAHu7O&vf!eOlZTeTI z!4CG9*>0o-o7KXo-+CTxJ}fQze@}fgw88M>Qw1^TLC3!2C8iDs4Hk647YDa zlFx~wT{spj!VPksGSwh>uR3voaczyW-$}EZQ0tHzn0M1n&NG(TiPnmFBo2}1hL!%P zoF79!YnC13-+tf+&1Ng`GL5-pxkSCjR&?9*rG!<`enk`oD>F{?lM@H zTlvpu5$}b!sz;Krwk}@Xj0Pzyu`0f9Ueq=l8A=FK0lbrclY1pf`1R_St<#(|hna4p z5wig$!gd0N&gYHZwrHxngQD6-=22d2p40V)VBHYWj3_V9o5l6B zHj2e(+%lcPHX%PF<`b({Q%k*mo7;P6n$#A)c)KtD2vO9r^?L64v|UZHV0hjxgm}KG z^rPR?7e5$YrXZLO4_S%|sCDb(H}h^tOmEF=9LIkm^1!^7GPh;Y#;0#ma|}fX74$xr z>{TpsK9=&9`0@s4UGMV(%HjOm!S-kflUHJZcbeuJJL|d*j~z_GkyF=rfL71^h7VlI zfhx0XQYsP&WpgI07?Z5?DJp!KM=L|!y(X03M6WNdW0sVMw4~1)#+D>FnN0xPehTb| z!jYsh?`X#L)9R*=PSg4%oGzb$x-@m$zI7qmr=I2VZ{Jl!^~-bT#EpptH5}+9x;KaZP$g&@Vj(;I|(;h5nZU z7YFMYZ)?Hc4`UQwLGA!?G{6kNo-u=QVx?$G(K%WhsL3DSjd{6bn?SqBI(y-L0!N5~ zuZnd;CXPiC0UcTP>U|84H9{5Oc8Rs55PuO-3rrffxhu#MF-A>V=1`FrbNn?65uY2M zcqvz{L0@Wo@hqb8x#4SORm+aayaoW!%KDLr z?sIB*@7$|3y#SKf#}%DC^=bd~b2PQ|HDa#&Gf*z;Py|m)xRRy=N=xR0mjB86vo-<@ z;P*djixifK(rPUc@C&*N(I?}Du4N@vjCdAI^{sr z!LS}F7}~=XTiQXE;M_|WH47abxG9&4dA=18sENf~wl5lMu6~*q#pWTIb#?}Rf5o(h z{|im1&b~^umx~*B+$$aDqh{oWZ_x27S1K;5`)B-BouN3{Ejt~hzNwAhIFe7Lp21sN zj7Pznb!bzXhk86ld;qYd%y30V;WwBQ>CdVxlqz2P#=`MuX(aId++gSJi6Hy^dr>glu8)k=a-8Yoe%$D2&9&`I zZDB~Q&P=suV3w@n{{#HvMH%TRS}5%=a8HM0z34Ha)_ZoXtH89|e-kk80>a~mCB)Z- z`rI@hZUh}qedL(-2@R38EtUtUcKzSqUwg(^3ULG>i1 zXJaOcb3@hM4+_s6cPv;91Lx|0GUQLz@L831s1`jrX0uP{6$#c^`Y<#i-oZuNIp6da%O0noF~W~7PGo$=!Ul0u&9u?bn_ z+zJ4kp-5guzY0_>Dmz)b&&z+!31-oC_B*$zQ_=%LyiQz5&_)K9Bn=-`RqRKm?Om2k zLe`|%WbDrIJRNN&WEmURXj)3`hLGQf5-PnKSrjj4rfF6{j(gMN59tFrE}sZ$2tagD z21BR7kUmUypFK`-a9IbNrfQjN2+NZksGUQ91YzkkoP7XN{Bo)K&`U}aY45pFTc{4? zN|RF7fQ3>t?tDF%2Q=kgz6mjSl$U)W>Zcz2UN=ht3b1lwvb}x+Q2UtQ-&?-Im%;rynYiEcz$|G_Hs8698gZ_Qv@~J$n9E8 zR_@$DHMrJ{O~3}3f2o>%)rosX4&L)$vWFYyO(g~we=pKje-;`XnvU@9;4{o~?sKr1 zHn_ScQfnh_R?k@ev$8&IqGxRiJ8_uCl-H!e53cBDZ%sRUCC>LmFK^QZ-YOpq@6AKR zBTI6s_^_XquvcUN1EuOpFnVnf<_VRq2QV&vL<$$;tb}glXa6hdXc&G@tNJQDqXd6F zR#m!3a+sopgWrn2%!7DFimqnprTQU;5J4iDZ1cR45!YKQ?EcO9L1f7>C}2V z1vOsa9~myr=wYuUNG{d_I#7XgW6 zH|jm47qFL&vKddL4T6|njgt+aT2vN(FE?Q_0RcVp0UBJRL`WLw;CpU?XJJ&gfBpF0!` zGA}lMYWAA_cZa@a-1CXictZ7RF{C5(>e;UptLq0QGy2sp+jxHMB6S%yC@gC}aC0ag zYEnOny;mV^^L20n+@4KF^yj{e>@Skhf-|T0+MNS(z%XN-Dccv(01?Y+bgDQ;)7c?o zv^@o)t|@RcsM%D}i?J_QOG9)fin0?HHyfLp8I)5!ARDGE+yTR$VGkby!&2-0jirlm zTWoM4ScH8o7fhl-X*97Smceno>)eQS&MDUT2QU(;%aZ*1jgs@A;6~#4lRxVK@CT?R zgUk_RcrqF3HpI{N%_7;Sz&-MYA_e}iUIf$n&F6x_BnBy8J8hccoZnft>&?zwI^_Y| zkwD?~qU@+7>Wr;k=Ojc~H%4H081@-4UoV)2Y<#N@I66iM3tHyKAq+o)j#7U;HT7?@f4oh&| zbu!)8d3T8b81P$E@`GuBqM++EL`?%1YldLJ5kXUB0bA`Ok8wjKN?xSh3}>z#2)FFkgx>xxM#WQK13v_{fa)!z)B1fp_eY zc&%M47rXfr!31pA9&b?9V-aqGR)u2kFvOkkpW(?qmFo>JXkSewPrlGL)C&Y4%%ro| zoP9cq-U35b0tc)C6<6`dH^{XOqx~Px(G#k?HJ0Pd^oN}2GDO%eUg*w<7HauedZlI zq?g4&Y3Xdf9gI$HH$OcX*U1QtKVt{)klLBq@V)Z6#B%8^<^3k-LH3zJm1i*?8owVy zB(oD9^?S$$%6+#V*uzug@988SkdX9IUZUyUS}e?UuD&ZOq~h^G1- zJ(HC5h z(8&wzyxe=6ew>1UA#)K0CU9~74s|RuNZoJB2D(iFwtlnu<@RTEs|{`m8;NX>TV8iH zOTF*AP~Z4h?JTJBEwnTnD*fbl3~OZhXHwJJ?E;B$4Xc|5i>#_)|L(0``n}7@n7;h$)v+DY@#pVdafu%M%5e$Q)Oe0KwtHM_d_sed zf0&7iN=diasfJ=y{n^AT>OS|(fHT(o*nq;4pZb}|zK36sI1LQ9RAeoH5;&elNn6bB zJ@mla5MCYNEEV_x$zqoB5**73OY!4pb|S5DVhH;UYcp^Xv#O<5hxJO}6R;>bjD~3q z+72anHALNXsiw3v>e;ELUtu(@c3uGz@e%Bq_>=MbJ*MZ5gZ2BK2t#U| zn}D{h%Q95^&yExYdrb&mTE}(tEpuO?8g(q{ zc$e7$6w;#h4p9T+4fcp`$nf~nR+_>UD8cgveTC->n)HPOS}gDSKsvWE!gtY_Mr011 zGh(e!3tIp+{S^07Kn5;f{}wf*&|Hd|Dz(Ok%6jy^^kZ}(H3~{t8UEqsB5R%#pOZ*` zJKTHZ%X~&yCnt)|^vaDFgAdYHw8@Pg8XnohtBG5;B?LT+d9(nk zi~$|z7u*3t+nWQOohK91p*4v5F}1-pE*kh$urL4+86yC@z^lyy?rgc1+|SAx zSI9&}=TL+1&+w-wz+x>L^fT~yP(am&@t;u$o89IvR_9V3?f|Z^=vkC;0jQ6-fb4&lCrI@e@SHva@np1WMmD^gf`c`h8=y&iwO0 zLJ@E9Sc&w~3K!g$OLfWj>$2ESn7|bFn8l^<3W-tb-%_= z^>=0mmG_S=1yyAz&YXgYPr24+o{-zXF=nF^cfw{E2{_aFQ~}SNUOa|JiO4u+Q{b|_ z-v*($^st#c2Nc>x)vOghRccWQFAo z9$Z^ySeOm1N)s>LVit9*wm%y}-fH5~xPQS(w$)v1iI4@(k-Sc9Hb9~Oed;UoU2T7z zz%N0jNd(j)!S7jDlHE7Fy>IGyN{6WQ6Nd)vU3_GP*4A=*vVkLIiR}LFKWFO_iEu83 zTsR$CJGlnEQ96COl)k^I+In+&wn$Mj+9F;0+~%uk#YhZ&1EcT0<@3^rYf6kjUdit9 z_cSrWkg($8tuxE&6J0I-*)K@)Y)x#`nT;t31TGy}Um`0awOmg6I@mA$VmZ$I9PE4i|%}L_8 zk8|kcA2%c0_dWAA`KY}fsRXV}(&tw_+}}8mH$XxI6W=40cK~jLZxJrmm4#&$U+6x10DK=_-NTt2 z9>yTIEmmm3L@Bg+FG2ZC2wq4(rWT2dDOLVggH1EuZZ;V(F6T$6`v3>rU`ia&wnQW} zDBKrE&!9sAqS1l84qY{XUM7g{zdn_#H!Z*6Q~k*h%d9S)=v#=w{;u?XD+~g7dMREv z7vu~7%-^D=)N0B{sLFvMuYhS~dvD#`(|T1*=ToX)j)W z3J9DD-oN^;g8%x?J5s(c$bhJa_Ab(cv7#@Z(lNf8&$f`S2AoyBM7T(6W%fjD5GUM( zm(BsAo|Y-uPxotoKy$8@&Wr&j1=5j!UmusgTcylAy(z(MX# zo8@5@r+@;a{KW!4h)lfe8iqECKn z_$DOzZT9T$?d|@1Qr1UJr8yJ_>~%P|C1wrcF1kCcEAL$}enshxcU(B!zN|i!VN#=1 zZ(#bDw=)Bl0gAZvcWb{1d|sz}&s6t`8aL?yiO~I#)bgpZsV~&=bv0=DjR%${DQz1Z zgwE6nvxRE{90gSiCH=||?`oy=P8vm%dq4Ma-oX?}FN+jFD-%4$&1!}?F|9LRH_uQf z%YJ@L7F3QB@egrgvrpE&<1wM-DObskkF#klJ)^b#Pr~?e&{bIOe3m}7rk~6*J#y|P z|9pOg^sh*0n$+u=Ysv@@!gMy$yzC(ZU8&X^`5Z1Fg-ORhB&pAj2;MMa<{1*#>tt6& z8t;Pxx@fp$);e9KM=#n=E?N!(Q^Z-SEH|C-Q0=Gf9RX7Ps;- zAK*t#A6H=3vY=C7Qka58ULfF_9?C!pRvy$tqCglByc*aA#wH-f`lZr&fpRd*)HI{_ zz5{yvX+A(_Xlth;wtHepVtr9~+Iw!Ce2*){9hTR&%&{Q@kn?U7?2*f&-4-Vxv~~T^ z#;_Fm-mZ*$vTHgGl}Z>nPDeD?r0}fLGJDb_ra58crU3HX$MJCRZg3V7VYU7P>vJ;v zw&oWRg``*n#ERL<1}gs13o+^SS_jFYrpg6D@HF^67p>%g2WqyC0WvHzzw({)SB39t zBSozLex@8>vWM;du&UB?S{O?UFy)XsMxpDei<5jNsa|GwzLw(~Z%j=}<2ryNVP$ys zIs`g!9}lO{fA06JNDAB>fh=DpiA20iv80&n{DuKYz!3I^X^5yKzSDm`#?pn*QT?{F z(>`qNXJ(?@Q+ib{+Fq(4vL_cl7E8g5!hl?v<*#}<8^T}-$ARbw|LImFEE!1`&QEnn z3giRr#03`}-47g>Ph*^NP}(KWaZhOboI$-^>!dK=Y0w!OU(tJ6_5KpefJ zF(U6!chRn?-P%#b1z`$kB?YPK+dRfh-tt?k+R6Fc%h%F12`qWgS{Wy+m}a(8*8JV; z8=nNZgR-8T@;HX#9MZDv>%@T7y^%zqf|SzRdK|g(kqS5c6NM;V?5UHFpLFiwDNFS) zajO6RQ1DX?VPaLZ3|_N!>rduH5XUs1r5zxbWvo^~Q>~kOMM)b>E@hXx%s{@MS4i#YbMpS?2W>o^eO zr$KF~iXwllTO2=SVHK9UGBq7M8@6=(H@Tbu*zJ{8yNUB4cHz{!?VUfK@@6QeumN5U zgT8l3+aIy_Xx9ba^vS#b@)5eai)|0SwpdNz2TE|?D z@x*rAo9R`yo5)%TMx5GjfmXd@?>8|9zO8$_#MZ8#p5CCbWTzCDqNi1-FANTP@2cJD zrIA46@m%HWtzOs~#!5$N*39Ah0gQYq8%#5Xf#28B#Q7x6uxebtR^M&7vr3GINWdh= z0&}W&XTIiiD~%!HABToS}F{$SBKfBEYMaZkDdfi%pk-9ZX||%9M4pk4yNf zytYxmBa)WJ2TFaz6Bur)BfIO9H}X}P0L1YDp{DiC#1RQlwSai1Bf)dDi5- znRx-Iyt)B@Yy?8evY29jKLE2pN}&S*&J8{~Sa8GXJut9Z5;(DpR@@1Jm3Y=R;y2aw z3=^bdi*t~v2nWI7D5OA1d>a`|?TA<0Z}mNLPmuDA556C^dhjA<9Ub>1!?l13?hM1?JF(6mgB$-s}N5oS!h`-oz#}BZYqe;GB9nEiTCR z##BHSyIUcVyxs^0-5(+x&*kM-5;868UdAEeo3X}w@8(LN)Z?J`h!N^HPZ}L^S@|L! zWkJvR;O<;bfoZv>fgK1O32aW*H>Gra#Ih55!w#&f)UWl)@||0`@C3_S^OW-J6}D7S zz#eqcwE*GHuud`qg{LsuDoaG~CxC%$y0`CjPKF>C$*gHWx^I(dIoZQ>5LL&Z9PeSHMm*9IMc?gA%clJ`B^vw~ z?0p-Cs%^~5tadgMgur>OnAc*k>Wa5;^5f;0hzsaHLT%?(W6J7oS%-P6zRks>U>DaoLj+JX;uuZ_Ll3r?^N zXvpa%s#2@9N8Gv$GI`V7C4V*r#+-0NG`KOljbTPoAIJf^)FK;j?4W*)M9>p-4s-+2CoH zZNo+8RJG~4nPpB1i_Wp$nE07l&+XsM2a3L~lY=}ATm#8-}Z zO9%(`r>2@utP5J5a(gMgxz>7iTY-_-E-gObueYf{U+E>HF-LFZxSu-+`NM7ML^uQ@&(4}0{(J!-_7(_w09_!9$ z;#ZLt1||u{u*8qV-{0#D(;=wdo8U_2m*iC6Ey_u3e*+$ zcf>=T%VlX1e~Ro;d7aA{O-$R)ALfy8YRMqnx)ZyY?U&0%qUb&!DgkdaAPpeUZU+y< z18^aZ`L(LpX?dqFkO9kllf<12(rkjKH8&+o@8ZW`(3m6W4@(e!k^uKgeoL+Tpv3;I zX(aMA4+>hpTWso=wCnsto!L5<8*XC|pg{|+R>4wdE!F8ui^$Pi!0SQY(pEpI9~7@~ zz6@bi$U+zm9E|yJNMG0Mjzxv&k8fl?4S{cDo__$KeK=nx-sNZ}1@Z72jGry1q^(~1 z*Xp-5nfEe&kqY#t(E&?c*Sn1T%E0exoG08w$r+6VYD22)Rj|W{+6mT`k3pdOrlN*a zhNhLl@8^=+^6SrAKG4@V!M`=u&-oI~e|UP3;hsB7T3AH|02|+TiXpI4h0vtGST&F4 zloMOYtcr%;cT$C{l@&la%O%%U;a-CpkZ+(@5Uc!?hf)Jv9e;C*5U9S%14g(hRt4!% z43!#XKAs?jo6={U&tMcbb9s-qDFq)3(ft?ABJujaX5p)!bk!$tF5?+Ji z{GQ&YwO<2iN3N-qH!Z@y+ef4{kjC50l9ckb8nXy(mzN7XRDa2so?i3PUa^Qv=smyu z2lkgnu{a^gaiOOC(9ak;Einc*>d|J=vGh8qfy|za@8HYsKucPxrL{JMTmGU5d+I>j zhhVkuChui0+m{~Og_|`j_~|C(Jtdyr|GT|Zf3~_fdYZ}^y+V`{toKMJZRG7`8394y z+MNgkA6h-CzFUax`p7#LTINT_To1TYrndHH>bQXO7|IuVXJjmYfL&aas^n@hdz(r2 zOhro%m?ytl)`;j#BI^~8E|kek@-K_MMx!SaWFKjlYCyxrOc|=oXN|!n$ zN~-aX4e3agQa0Lp4vZi)COyG4sx<1$@p>=bYc!tzsqF!v0|3TjmBwsQ2wW~6=pr=c zYFwv(L~JMJL4C9!TE< z8TZd!(43^$qO~b7C3f?1Uqx@K)=0?o{@r}06U1?72|v%3&t%)l-e|BBX}EUpRsJF| zmtCCBxX(0c1E2EnTKg!B(cdhEBgF#jEz1`~uxWjt3u`Cx|5m@t^U|y4INh~J-msEc zYB2NWE5B#PQa}5{Dz6GJvUXD~l0PPc!70KVuz674xZLj#yU#@wF2f0eo)$K;%| zc*iSY&|=IOme5kl)`Y-a7|#_$L)#spt=9+#V+R`kFPzFAA{&0 z`})Twa{xLVOD%a0wx*b^tZi4U25i1(^$!NPARShq!hqpTEl58I@*wAGkbnKOVeHiP zrE!l|ha2PfbaTcrYCL?D%WQuH;7b9{9y&c9#Wap$g`V^D@1Eetx&8q^@&9sqr+>)) zF$%cr)k)^Uw->?y@f|a)py)HUQJ!^Yr8iP@H{K-WT#_s7JUL|^s<|E zSZfeeIZcYx<*Ob^HSC(w$X-`@?Gz;_=C@Vg6d5e#Ud`=Gsye~@khTd_@49J|FL+8H zgt*CKdZYh&?A`b8%y@w_eL}NI!D~M*H*8Cz4RxyG$JzurXD5fYv}p)3ieL7vze(o$ zL&3N})mNBf(pAaVB#FtNPPS{B5$wPymFsKK?215GtJ!%^_OE-GR)$_6X zj;Na_X27>e$u}2IP1yDt1lGgjZUZ1un43QUFEvUl7n!!;>cFNAjC&C|u_HXstpUo@ z%xQGc&p6P5e|9^#+JeUA8;_2imlIJFo)-Qbz_305(+cu34^^_k)dn6@ko5TkAb2$K zlQCNO6CElmmzsD4K)^`#aqG-IM3Zp(5QejfYmv`K%!$-Of9E~;wGqSHRExn~agZC_ zrV!PORnpI`JrD)|z6;_53xvv&X;ee;(Pv1PmH=#@Q}ieMy5&DIK)O&(I&G+OyvKNB z-e8TC2k(F$jC~&p3mEN_D%S!}KA#O)B^>_}F*VR$=hxN~7K@yF&BmqvY_OtAI_*iC z668P<6kX~9(SeLYV^q|QV&>KK7M>udjU(?}+ryF0X~QvpG^r7ndKFsq;PJ?TfD?JG z27}^NeZrZBda*}<;jTnds;5zr!=3hc=8DZ`o_iP^NhjMeRe=GxC_*9;S*16zfS!RN zE`GV&wFVPsXcR(06-y5rpu3emx{hL)?meBFje2QGJ3t*gk^(KDhshVCnud0zKC=n1 zq;OS@&rB_8bV{_iuP-=<-rUovv1}cMmbdSoom3S-d8G+;cC`OuvMc(|(6GVMzy4(^-=>2X2kA8P&0jKz7TZe==(ike`vkF?%#__0DJ zrnWBAkwfwQdkZRlX}Uw=QSR;-ZsK?Oo?EZaz7GLb`8LVvK2J_Q-EFjKb-z`c5I+$` z$0hFSe6pc6)+=^qdx_Fl_XS6+-4*CR9JAkk#3+l2iQ49HeblSzxtPg z?tspvn|o^X$!JteL(2kzAfq~qibZPqwuN)+(G#$&Z8f27kLPdf_=0;;C7t=JrO)a# zvZ!5bXVH?S(5kOp2Uj34%kh6CUG+ng@7py%5CxP{k?z3&fdSIeF$U5NQo;yPxEBgH*9o@bW1n9`+VQO;Q8S>_jRB9T-SAuR*@IU>4oHL5{EdIm|rocpX83j z`ltQO0g2}Otf&*SD1Xm?2b7f7Vv$AO9f{CfdUc>asa#u@#D|%@U!j= zEC6}dInZ>|4)rMHvSA{U>mQ|P?rw+q2e57i>&lC23zB!T#=(aB)^BP9ca)(E z0Xs5wXY|A{2Wq(`09lFvY3X6*Gbc-7Q#|Dk3Y?AVq^(FWCzub?b{KvB1-@;+WU&>4 zgg_x%Y58+u1_>D1g*me=O2}Ins>V~-8W>cGkgTKBPer1VoB!}1Ti(Z*C5`l#&$sZY zV6)xatC9ThMk$R~%!}vPDpVHm2HfDir?q&@K%P^MSqp?(JhJSoDOGzae|&8zaraF{ zclMG)W_I^HG8iVZy4OUdR1orrsI8mu7{A0Tc2I_VMkkbTB%o=WxD`e`9$6ooH z-pO#s8mW+0ZJ4j|*huKN+k~EW8^s2MzsW25?Sf#^xi4z%A!vJ)^5>h6+d0ef?=4EX`qz zN|pxdceL?0qp9o$zbimNx#P2C?B=qx-S$bXj&q9Xe}ld@c0Xc_GKILBx+KaYM!PCL zd!*F}6;cn-N^|XKog`bDoLLs$rMRatc|A{MOrrWAEHPQH#wsbOlX>?k|GUrg_-IO% zd|Q}rJaV3O1bUT@h~{*GN31`+u^M0zQFcOg;bfo_qjT#1-h2;J{7m&cax8@ABjcv^ zAHqf(ixLpCN0p%AHy-bK!923(DpMUp;`Q7fML7}b$J^;h#QYN(%x}z}r{IOlCyv!E z`pRRaC2?5CC^o@6*DoTj8nsL2r2!R-F5Svb0ul{G8Ya8Zx0~0pS9N zu=%{27N|Zlh|W^}7CXO9HWa4UFP|V+ZwAx#5M z#5XwyAUst)ZKJYuKtU@**x9AFW;~4i<7@RWytLB8B-JT0pV6YP-TVJO2X45>zGn;yLC(kQ_iU zF2ze~xLl=wW~HW5ghX(wWn%=>xoQ7$_#23o`Kar^YjLrTW+Y0^Vh^0EtgreTEG$?G z>Jm!iH%|2@mize&bN8Cqv%FVB=UO8y-+3kiWjYEv23@e!b9aG;3W^^=>;bZQf2;H* zUeCKC12T?sy&ikb9cKiz;Xf!FI!{@9(ea)33CwzXPLbQ~G=(e-DT2vCpPUjwUV@#7 zc_ACXiN49qGumtl_NM=+*-ZTIe}2IH1I_o3W5PHdeTHtNr>&Q5Z%=pQJ~bgV$C0i| zDZzN!JUx;H=dH{FDrHKWoS6SQwN9Z+>Wl;(PNBpnN{i20Uld-=8j-dz^A~Xuy=r&# zy7u|{LiM_ulGaCp{dtG{7ut|llRoP)jZlkcudjX0s^eR9be7Xz7S`nf6V42L>Y--( zS2%dXjhN=+MZ~k6V%Z3M$r(EeDo0s?h(Ucc!D>@Kb&mr|LN(Xtk@ywTqu*DAmXVB) znL=q`i^|#s+O_sgvG&>E*#|>IHm2pABxsf14*mT1Gwl}^MAU)P3BIAONJ4?>pJa_C zH@)N()&X4*Gn5R*caj74ml<56XNAqYXN^MM2O~`2i*a1IsB@sIZuSEk-yU6eXEVXWdj5X4^e2+6&Dne?;Y-?z_t*5VFPFK%Ub$QlCH6j? zN02;2M3ERFAcRd-7AB{TcKcO_1ZAi}!@Id4+{9_~)F5 zV~&P*XFFAyMDymfXIdNftXG?jjlCu#5`7J{HZ7Zn?_o8Oj(X^n##x$t@yq8sYUfW6 zFOMA!hv0wIB@FmR7X)?&lcG|Va(C=$f*vTJ@e*+?+t+G7_swTris@l}GI1Li)lVvB zucxFP&CHY~{KwL@*m5jQi17O`eE`{gc{1wJ(16rOB`$wWMpztkx-X$dE)Tu%bbfI4 zF}?ElR22ZP`nxslCMT`{DMbd!l)SL8X35{5Nt950>(7A8N4Qdy8bF!g_6UboJ&r`LCxiIP!#3U zW8)|g1V|3u_VBFymWk|PhDh|O({!^{Iy+}J^`P%Gg+FgThcLID)SU32++A0kNK{RF zxGfYq^t5ndUIT6$i%@)y0>xy9W`ydk)n%P)d|BUjE80fMwgQy^xWBhR>|^8e1<;J_ zm;J|$>-uohk!^c9;YT{8Q0wqc^~skKW!tP8(|x8#n##^=DTttgbv}?7FXWjj*fxya zP0vR6^$sve#ep$iybpWMY`^rMcJCBQG<0#mXu%RT$%}uv5qyP<#VwnwCE9}aoeC{W zhbcQbh{(i<)0{-eT13TVXAj+_eG*cX=Tq7V9ox$Z-5;s2g{NhPCumfac7q!%^NthS z#Uw1~$wUZ42H0ibNKa>|7(^qP36r?>!rjvX&hq`aUca^HJBk72xG!vLH%lc)v{U0O z6#uK%jvd&Cbi2Fa{e4J87fTNA+_!jFmPTSoJKaM{YV(a>-whVlX%yaCyF9ag!YNag z^8lXvDAFLVmVJAtURz7s1mjLkA5peZ-;63-uvpxgdup)I=(CjCeJ1a?_GfkDN^R1+ zv4>*|(V6Mz-!T8L{ib<|eyL77w6Gdo6SwVzCfq>f z2d$<^C69ZbVMwvlOq=#S4wX9Z6T^izP{yr5*#1X_*~6EbFzt>gCKv~EVC`J$yNMri z*lr~}SW07DPRAV12pkgaqBn)R0>!YY^xmWzpUqZ!V-XAxOJuLbADm5-VFE~5xw9Ik z?BWgwe7e|mxPV^7-#0~R{cAmoL@=n$_}BYi@eDW1X@EXB{|-e`XZa4^vT=~F!h3&i zxFF4R{C*(!nTePmoidL$66u1X`Zw_j1<)DQ1%QYZ{f9yx`=Oqx$P@(iuBl{csr3W( z3(VMf-S&Zzm;E$0i3+P1Ws+DEhz1!uimcUXD!)?Jh+yZX-3(A<;=JWZOF%m}gds>2 zA};PpaZW?kSKH8TA_iTEEZISW@#?)~a(XQ~ZN z8@8m8qzkF;jQH<1b%8sTT4Mg%@+MkmzKcn&YsXuK&>c?#d(s>VQ=_DFuU|asg;GeE|7Xym?PK6)t=G5=IY~yUBGA`)i+)cU*B< z2V!=cxdO?e9uXHsA)lwgkZaW;iJj5H3XvwaHK5m?rzoP0M_P+klMfXzdEoB_eDPcx zI+g+;Bd7~Qo4kf%KcQ06Rt*_39KdBn2k}v{7EXMXxHDcajUk_}_&X9jQp~H7g`k1Z z(!&?~EH;2ihBEo9gVo@p4s=@u85Oe}<~aVrqA@Qv*d6UGT4!nQ>yj9`p8IPg>A25i zX>5Jy*gBk|Y(#TFJt=j)Q@O(VLy^}y(0;EnvDzMXutW^z zWVX=M>_woOH-OKmWS1xIv&Y(=ACF(=Zym8i48E`zbkfOy?yEo(Bh5y}S^4f+=Wd`D z%+<_YX_nhx%hwClm%5#Q6oh{C)VZ&{zHfIo&()gl2t1&at=Pg^>KegFO2?fk`tG6*s$VGL(REg~w4406HkwY^A(rEAdSs=oBAQpMCM6(o&oi$P9uEu}%_)(lPPKMSR~ewLT&vN0p_hR#`;!}TGdD#we1@1s{8_#c2AAMa6Shaoz6hlkq4L;c3q zU(A7qwf%A-LytPO0w_OHOUOuWj%b4s#k#Tu?2@s0h@4oiv)YM%>FJ;rq%lKM3X>9^ z_C$a!QMlO{S-~gpj&HmB1jFNCkYOns^$Tj%nT^sY9dSIa7( z&|=Im#j(uUas@;^+^r)^GLKyWsPec|;`0fq@_p%ZJRBpFp=1UdfHL^u`(#Fc<6(&& zvrOBekJj|a-+;8|^S0QtL7bvpZlv4;?-f0+A3P<3&jO7qy;(K6AxmB8MQz(GeOj1r zMqfBHYn7qmdadUP=hJ7tZsYZ1Z-2|r@e?hq0KS}%3ce)&t2jgizIIy8QuPqFk2&sS zw)~vEUupC!X)P6zfviYZHUjcnH^z}oY-~+0Ls8els$M|q=PGoNgn#`^zbg1ICM8}G zDQK{Q%h2Pb0a*wNh}fL6gP-mdLVJouD5K}}5MFwz;I|ZCo~(*$oiBSfXe)ZF!*L-D z784btdpR?ox#Z56vu+crebzpusD3>s?PceAAO|36&L5_LGy%93i}h^AoVkju8$ZI4 z${Gm;SevVbso`7-A&~kew;tNTgh}E7j8XDGoXu5YRk`4&pIr9N{r+&WDAD1WmKcwx zu4kdh8CdDF9!QjPe6`O%9sP;v4+J~|#?pt7IqC)y!w^X$HNx8l{~V9=DUgGSl(Oo) z7HjgdU$<;yYL2e1rr5>&Z@#ks;r_V4w3BSv3wp=@XI1Ae<&9lTK&|Kjtg-f@0{9>_ z*0sxQZM{BNHT$KupWxplAIX{-oSA!N8V(0|pjbGl8<7y6wP(5_=4z=u5 z@BIO+ao>J9VSeeQ3y0%QZp?u{njncIWKA%TZnMoJemIha{bw<>9v&L0aADv{s{R*%3w$p2zFLzEv(x@>H z`0aERoM<-3A$rHo%^}W%Ex6oqdg;^cI+c#or4Qk4MyLD z<+BP&=XSz*yV12nE4S2ZP%o|RfUmwJ4+@D?7~S*7JtpM8wxeMMVb0$Y$16@Wdo;(Ot zh+d3G(tfG|REge(uJ3&ITNvb>u;SQPewv(w2&ky;r$_mezQZiNfeQoeRXjY-AhxlH zn`$S2L>>sj2o$r16OZkWX9G?^rye$A)gPuBv^dOXSL3lkoxI+dG~JW$1}zi5@MQQ{%(h?A2};lETn0p zaTNd>ONDQ;cKvrkwB`{CJpp|hCMMqioO&Od2frzMlWm5kY0YVP&TaMd7xc7zU$dQ! zuavao76IxJ{OayJ{1|ADFV_$!CYahJx79e|T1^;mSBg7FsPAR5TU>nrTksT?p|1c$ zhYiJNJmY#UKffvW&sw~2!$EkhXZVec{zv}urUj@wIDM~xIk=tNE0Wi^Lf3k2|5B6x#txe-U0#4|$0q(V z${o(HPTXlKM({)8V8<|Jj5->FHmw-<_?LRX4-t}n4|al}u)RG+k@x&b9-pLVjZE`%Y^53*>c}Ue!!!$Z71N zEVjDjMn#T_kXt(c^7^gW2R}=EgPIiCP{yVnziA4#p;UsrQf(nWL#}H=L|5K zDQZqm!cGy)aa(gbLK8D}mN&&&0woyaz=p|zAX!&A@yUs`3@BNj`cjp@ESRZhsvj|{ zK|X+^>h;5#B)>M~{E~{*(cIW)=*{HE-h4$RWjc5;=Qmj+^Fd>r_^zy` zWZMg;NJO=E#cu+Vd@g`N6Kf;S*rdIFQTD{uUvR}LDhR*kSAU}WGo2P{6{9l^Z3A_> zzd3Z24-b)_mQ^C1uZaJq5)re9PvI#NE-gagYz0ByB!#N;H~Ev@*bcdMhtuW>{k4(z zEF?v=ihZOFid0E0mmd8b_;x?!i(CZxlbPBsXaut$s(4biif#DrgOjiF_dizs(ajbx znq>mTY%**3zt{>*cUURH!;2j|mta34C(6hSld4SRf*HH&azmi+PQ-78m%;^yoUghL zA=E!Lf*odk;f*3_P7@?_VMAVCq(eOhY`$AlR=0yl%lBY;2ea97`~;N?K*DmY#gh`O z0K&dBt^SXku)3+|EI390!b6ZKvIhNuxJ-aXAe#4DfJP#^`UOy^SCoCufbX!Q9#(eD zKsq>m&v=^y%`7N!j=eT|!B{pPqr946E!+s-_f4hWdH|M{QvXS!s0#lp zsR2??N3L2FLBk1rs3qh#!q7eF6#6_+Nu_4BF8og3aK+jK;%PnGqniR)#M1Ln$S;g9!PfYkTS*o3N?(FpkfjP zlvHb$cf0P18BEf2GVI~ab^=i70y%(ufHPApFH9KjswdpDn10`qDt%o4BmYv#CjwDq zW`^&Xo07!{^w|p#&`&uY(3Uq<9&f8+$Td@-ipsnXMjFN=`N2#4T0J0SX7)Qs8N9e` zwE9csLFLquZ z3X+D|9QfS}tx|y-{#KGpuJ*B@2MO}m|I3b;*j%s zvE1##7?Ez_qUj+B>L;{5UQ&bTAsmP+gN7sjSQiBuL)nv@K}m6P;C|m32bq}iYFP{% zaY4;FgceKPasjSk60zRa%7?qvx}H{)N3-U@L(R``*STOYg`w|Q;_DW;a~(PI%g60t z;&f&ATB0z0kLd4Web{JCd4)W1jfajmxI=ve)2sduNS=vMC)ju^i-}|V{!d}HzonBq zUyxSf|0_uc9lq?3&pY?`|Ejpu$P!;S4Lx(4eG|p=>5aD&vRMsO1K&ZlPz#2O3VvsJT7AZ_RixA{mmt9O6pnCn@3&}S$ z6C#2!hQX9?y}vc=amtOI*jQ0w@WO9-aHEAp6s(Kr;Dc$OC)L9^%QgvBZl}6#*;%qY%*^Rp=oQXB&fP-Z9!`s;=bgA@gpjp?nNIaZ$|VcIk+6gfHiCv zN1Ujo9!wmQy@w#fZ~goZniq0gCR|``6hO+gs=8SOO;$OqIizSM>_wB5*{ACXL-NCZ z(|(tyiTe)?_Dw&q&n)Sm_V@S1S;~qpKXS}X43m$9oaW|}Hsmdfy>HQOA#FJJ7-O>j zTmqFSO%2T&*t3c6Ugsy7p{v3dc;ncjRn2eVx!XPI73PnlF)rlip=&z5WlE5P;`4ht zs_S2Qxl>p9GrsJ7tC!sas)reg0!Q(MBQyrhBW)cUQ~b9d<)ONB%rRHca|A$fsnSh2vYUR6iCy_m$IimKz7<`yZ zyw=q}KeskYuUNhYm%oc!p-Dfnp-R^y-zK<4w-q`|5#K@b;MKl{f0 zGI4Dm^?%LSl%4CD%_`4@+;3yPlWUoG5prv`kjA){Ul#i0>|Rc%Uw3`b0Hkg0Hq7 zBCo;~+oiS`Wg)$(sCM{UB|wGEy$bXzW&8be>B*)S)iA35wtSn=T2%AUF8ikE3;!v< zw8srn;|^MOz@u4X&p{RNXsulpY0`B3YjY=gUUNX9@ikW5W=>{+V0LwxzAOVK#p3&C z8dNduLuDXd@ndZjOjATx&uCyp8+qL`EBdX%dCn-}p|;8)u+w{-MZX&!p2CEXHnK5i zs>c=wY%lDwQ_?|1@3Pw*;rp)?;ASIZpy>LCFyZJ@gKPjZ9Hv`z%Ly#OjL&(%)Q z>N`5;xqyD%5&2mO?7rTd$Fw{!%iBw+lv8KM!Qsd8efR_k&PV=${x6w_x}X2$0^D|r zpo!Mw=~1H50lW>9VjBff*hro}HCo{URPi!@JWTJZAWMZ&{s$4dBasFgnD*i@Ot2=JXtt2oKt ziaOAjp#ruqX-G#+`pFi_xIt6%)4RXzG;b6=@>g&}npKDLUJK(K@-f5u>kcaQrdM zC#2|)s`!}i$Y4BfRc@9Bd|_2;To;EC2fw2lKi6=%Z!%#u9>P9IXpch6+OGL-$)zFc zAsI*?GO;`kJtb2894NPHgB9&HKE|583QP={L)H$zqVY}2gxJh7M-~u3cvQ*bVZMqM zwk?ha%ZEqf$G~TH2gkA!5Dw9#XMuPwo@&Y-g81>1Z!VjD#vpxP?t+4#8bH;XR7$;m zl-WW3tb(VEMia3zM*D1GKs^na=I~(bgi5uYXs~DhUF$_j=hwY_JwQPMqLSyg?B24F z=2mQ1)aCcbV@0(-mSVG+IF;VD72?nGrhP#6vl)|sq99k{pU+F42jBdp4-We2NGSI{3$0#1;$^FUnCSc+qdr`l2-RkGhFPHd7@N^1*hy}7sb zwEq2#sao`D3o%qf~QztB3oK{)hW9H|0FB+xDa0fz99>N6#gai|8($2+JxN zDoFYE8Cfz)Mfn%d)(R!3;VVo9rR)>>?nZM6I&xV^E(N;WcweUE1*olHcMa|ye4l%} z{2x?i{(Gzh6KYj#+|pk7YgfjW>oyIJ-@M|r6QKV`9s>OkB`K&?!F-mY1;O27RAL`u z;fJGdLmib}BRH+mmJWig57rPi85J8Xq80A!jc4Z+mEpSDT^X1V(@&pDC_GvwSMX`d z)hk8RXY0@#0__fVt(>jei4&d`(Yd$^eH6T=G!(gBl72Fk_G35^X$z}z^(B-)SWB7wG*+n?ByYzK z6T~AclY(U}-s9&vO-AdvUtlkp1kqdEA1C9v=@aq!f>8YpKxV2Ks70{qL{jQsBoZ6M z(YXXID%V7huZMSqZs-Y@yRAAgLil-Wc@C7}(Obz>mRowDmR<0kA^fZ@+2O5nFBe>U z6rs0I={lk!^CsU}&_fPQ%PyGS@40U%!9A z0bU?9{Fu9?gs*y)w!*<=ZwdvBabk4gn9o#>!nI5EBNosIV|fjos0~Znx+~N@oOuwc zWu2-CYY>Xd#m%YIPK2!e>!;*HS6k(;F+e(7(kXP~`SXv8P! zHn6sUHm5d56|C+QvYMY9QmEjG6tY__(XC%hgm zdk`(V6BoUChjS)q+m_%Hc&imPHQ0hf^uFQO_x%;Ku_!!K<)%1>Xo?=6sxwNHNfui7 zFH33c%38bQPG|2R@?jo{`NCkt(tB{vd(Rl0!*s`A17g;xou}jguko?L`kQA4Iq{D5a&d)>{~H3TsNfvwYp6O_9L-PKh-aj<0+K%E)R`}y0urATu`S5gfQoA7 zVH&+sYkB)nz&n=j%oP9RFEFbashk77S_7JEl9m%Z5@7)xgpQl^2vPCL&;-}kxRNy}Q zy=N=95!Zd14nE6lUhMZnb#j)=gZ-+XtF{LmJ{Tv9Q_e8-_d!_Sfp6xb;?YjAqQ;;G zgZ4)d)@}c%5=PkMrTiQ4iU?I-K}E4n8?3BKv*(EzB&J@K6ZR4^0;S?!GDijHg%%w4 z&uv}U7DSfy_6h0WJzab7_*>4VEIR)aVCj!3x9I!aVFgkgqmGSB;DM0K9FyH#P_G6d zMB}e+v|I2X-*XxF37;A z!x}$3HjYS7nlh35qtCZ{uWQDF*AvV79%SZD^$;;#Bf`bApB)__#Y{xs7oT%A9cVC9mq!iOs1$W=B;@Vj6x6tDrS5>Z(#&DRo-j`XI1u zwiS2i6%kl|UwMd@eTMA&f6xes$F_Subd~Pk-(RqU$sYFA%r<;a{mj`V^=C`?t0W3| zepB30Bq4}$IcqQU)hH~os@^?SQXOlV?b{%HhJPVV8;AFT)c22RT=mK#@|=@f_u2BN zl&FnngI;G^K5>uM7D^>%#gCZ$CJtz3eBreeui&?q({^vI&Y;0pE~x&zwD|+c3~lN> zv)lEhN@c`5vw2`rt&K&Y&gmH?cT}%fAL*Vq+NP>*)cKv~s1!!W6FgL9B<28;Z3=?D zkA>0CM-S`#t4ah~N?P7%3%J_~h(XuL6CQuEfpOOI!xx7z_uO4>NG)aO8_$GEkrE=L zW*QMjlL6JKzHwoX&1M?WEvou+!O$DALS4tfwsdG1zbLI?FL^(Q(Dvh_D7k+KTm!f0m8Jq^jt8yqKW_117D%NgeF3MJ(MF2Pa_lZt2{V*iPM>E z=S5|JurIoKkm0xb~E&w!jv_~V=p)%uo!3pKd&kgGroB1 zn@QA9>r?&$?|(NezS~btW+sVCBt0mShNkJJ$N4^z zr|scEQ)TpJLt~|i_-7BFCnNDE+_jaXF}i_oWWpR*DZIY1`3bOkWUtG*Fza)#czX* zim(4OxFdTEWPq1*^0%eN6`Do!8vo9s%yvIP z@olbh?44%}`H~P>xXy8&P2Rb0SgnUX_KhL7F<~L;NH*&TL`uFVEN+8HHy|xb+<7O$~Fz5(Uwgk zR-`rO1RR-}_Dgdlt<74AysuK*uv3KRYn-pSokP@>cZYz?m6cxQMT(32$$8SM57f5tZE1Z(*R58v*x7Cf&Hi(3jPFmk+ z>Lyu_@}kV;$%u|4x1tyqD(h~En=H0vF4uNhV_`>6uBK{MBIxMU5l2i3oufYMOWRQ^ z5=sAwxI|2SnCUOt$%pNOHiP$<_Z5aamR#+$2E9q@ZWz@?&0S2ct%&?dK6lz8{mYSy z95?iqov>9g6g$q1jDO0U_GpGQwK^KiFK}8vKHOjTY|W~rR=mW}6E{!4^?3eNm3}Yy zicT>o7w}Wh#q#+>3I-$J2VT&<6!q7yt9$D68S*~_>gNR%(zf;4SRm~at@zj`<*wYP zbOGzwgXKKKNBs9DbdC>=#~+ND#EbkR;pK6*(>UdM0=8Eh*im zK_!wG+mW1m8XXafGb2Z+*2hCeG`7cNo~8ffiq*uIIT>2k4BK{+Xf%@3}vmTu>1u55;#fzIK z@u{|6v2MNL^dNOne_9UWSXxM=<=l*Iy7z!u?u2$LeGY?SQKmyC$s~hciipE8&$ne9 z0iGt&Vz17m`eJ%P^Q*?-bZg@il1X&YEW2!Qf8@HW<6Rz3xP!IY_~fwO{Jg9l@Jzr1 zg57`4+V;EhXIl22Os)FRziPG57a3*}<_8-YTU1n>6>vAm_|G1O2l;Kdt2J?M(A_bdl|Q)%U1(MUrMy%NJ3+J zGjSs+PiYK!F_^YZ!_<##VM!n5$Pd+b?MTS4h5e(&1Cs*I^5ZQ3ORIt$i89hPQX0tAv5Ud+A+Z2rf|+5?MSe z@}g)&tgKezY}T+w%rnoJ5uSDx2h^JyG1;DFKhCZC=9w3acP6_>$~*X*YevtB%#C5h z|HdmVS6J+m5;Z2`u+}b#*#loDmZeYC-$$4!`^RtA$8Vmm$_bhq^jJv6AnWE^w5ZB} zFb^4S3+BT!R&5&_t&or9!L;&I(yydBpO=coa+E~x+4hR#D*ZHj?CND^b;ccV|5Skb z1GRY>w|E}Su(|d7G?+|uFu$HBS)(h&TUs@!L31KZ28X{i^@RqDZ<^|xDk?k5>EzeG zTApfm)`$L9dV{|F$dt}plhuO{p9cUg`dNxj4cE!Zz3J%S1}Xz?K_-}z<|6yR3R*mE z_F|x={s-8LO#)Zxt=acJ+|yrMT;esEBi>Jx&{|&7cb2iKI(}t?sG;*9h*tg8BP`vtzOksHioCUY=!TLM8w7ZA2aW9eo1r*MiVT;g*hRNIe zSE>QAFGyrQ3)V3c+iN{qbq()s)&i=zMaT-L| zb<28AEZ$OxFPZYgzI~btZ;W94TxHrf|E=IvGR2M3b`#_+FC>Ha>9DU*^lWSUfKuaZ zG1O59&%lwii{~^ugm(9RvZY`a`;|=Si+JxbmE(`PSxi*4C_CszbYDyADo!UpZNdz}ExyGj39zQ**KNft$qk~Ax zV~BGN5{`_&Ny(Y83DgD`yr*^9LBm<|EhYH6H@p8H;{q(R~3u@=u+AxgBP0Mrh_;80Pc8jU?AF*b4 z8Tz(yj3DspH?l-^{&Ir#!=^+U;0FUQFTN}vHl-or?e{U)sk0+M`L!ILziZ>{VrfsL zN05og^nw<1$ADi6w|&~|u?t4@(rz2L4lV!Q^v0!pA+Ux|OqBE!_0H?EAzpGm80>qD z>(`8mOKh(~rH^oyo_G^6S(AeJQ<2e}k&Bk1mQ7?7B41Q5?B1e(67KCgdVb(AGVmwo zGnLWkW$}!Pjvr=@gQ?DIynm}aF?Hq+ z9Y8^}uAYS|EuDTDGB8o_F&2(Xx2jVz7iN!t#BktG3bD^cC3!i-%84)UG9| z6cV|D2PrMpx(M`Td3;_zsD93>XZwX^0NVR5)bY!t3B@9B#K<>z^s9+`M1C8hV&2vX zaU6}lI{a;vp}%A8C?DTMKJ9Po*+Z3~vY~>+W;QJkR-B|GcbHn}Z?f7n$p`=E{Tz>N zNz8|7E_?z>bK|-(g3NjQWRnNH>#wVlusoNia(&u;S^L_qCzwP$oqt?+v z=3q#zt$9pvk<)e61h~RTz-63fmCN4Uoh^(0EyskEvBvf1R?c6jLfm>qF*Mo(9q~Mb zCRBP<`M}>B*K-QB?PGcA_%Czrb$YtiM#-d1&PA}mTae2Uv(m${INAJ&R^8eD6LcwR z>P&TEVAlMmUSTmab9rkM5?Q)2;DIzovv^y=3s&dRQOUnstpe`TEb!mlXpIEjW(~%!00s_wHP&Sv!xR6YB#_O0MN@|f=bIzqCy|J*Q z+&7b=d*w?XvtPLv6M#ZCY1I~&twcXDfk277mjc{rHCSexCOjkk3u-%Ut`E3 z3qI+xzT}wsi=uEGCxz_QEozdgr4Y$Dh!|8)%Z!rp)xRjuA>&ur8ylNBK3GkyZL4*f z-Fv3$(a8f>f3zPIN8Z^gxUH52_A+_;*C|bkRke?s=d=!xhVWfvidP>(qPm*R576R@ zChh7mj5^#sy;Hv^hvu^VtpKjZl0zVyJI zbV=2=yVfJ#iNi^wStTi0H7HfvmMLmxYd<02G>A^T&J==KMC>?dl^l9&AOnAKNJwjl zWYuzGXu#JXvHrNaM8Cts*NXoo`^=ePS3iT(9=Ob5`$@6Vic;AX!U8>hIiG~q|B=_( ze|yN1j_<2bCDdS8AU}Cs0QRFh-@D9xQR7gTD>k7ow)11FYLkQAZ(z?Qu;^p=Y|P6( zwy#d@J%2?#zxr>z$l-d=^)j!YS8_&SF_If|LD-|6Eyu9_NT780gRMLL~G zxvbJ7`eZTAN_aV@p}RQ=`1s*<&_wjqBPFhZMltAcRLzaI9#!iU^6{E~jd`;9&gZuq zom5twoTI-G%Z6*L+k8-(<#vA&voRSBaXe^ZOoV<`zJ>0__vf*u$!LQPnpG!cq%wA` zjAN2_K>jLj;4(jJ)OSy;L|r)#734QEdZHJvpK*3OuoBRyL;>HX@P2C>B{07oUjTBK z6J4`Q64Za=z30G)radc+)s)7+q+A(F936KcfXwWT^ZX@===FP{`W#W=;$8G$;YWr+ z=p0mT_9?{b4j|^DtRbrF*|t&#i$+ccGI6)(eXI!SItUr9^tfD}CU6e%J`)M|-BOCCbfu`P`nCyb&{r9rC>3&)F;98^piweYo#q0|o+Qr>h(R-2ax$-vx`Bo;n z`o5OORS#cvJjJ83tgSA}_5L?}8CaiagmKjLc}?cY^sriOqI1;n*<`at085OJJUi4O z$Mu#8Os4uf<0R0UrvJA3w0D~5Y3ncYz@V=C3+v#-xsyLtk1fSTGl>y`L%X5jpIPm+ zMAZdhAJ2TxXO%~+yOb_U}NL!=X=qq+K=~t-iE+`T63+viE zyKuEondjU1hBx*46x4nVZkA~iPGc=<%Y2-+9-lmKu3>ohPI}olr*$(l-J0_ezc?q+ z!_uz+#`;bqe;ah4Z=+&d@U6p>z5>~T)G47fSkf6wQO*Z3dE$hmYhxSJN?YK zOewFg$A_zbl1A@=X^YF~#v(tO49=a|hBV8`cSlS7qBcgFkcr6r_8LOMhSNP|d@QKM6ukqV=`JER$18{Huwpmf*hlxB2ye7xTu zu;bZ|UC(`Ab)LTnpp*9f*qX3lh&?AwuEe|c|AKPdyGUYupR&zlj2ioy$5^Y;%5jjo?vT!5%gn&P( zQfqoh?S0F0{c}Zri)R>KjT-A?W;w_tshu`!;hZ>$?jk?77Ba?gEfucP%}R$PTd(<@ zw^9`oABcocw>wnD2dhT5|GLyEFrG9v1A#Kk2Qe&U*Y$}P;o9wKYLRNOX9>^5SWADx zq=P1E{LNaeQJ4`G@FXs^f6xD{hdyjy;ZBisHUlgxJUCSe!Qku?U+&GmdF)PRM*+g# zxid~)+xB9ne58rL(hj zN1-bUBunT_LXlacTs29#7t;t7aU;J>uY<+}%P5)sJa#<*ZQ0i%i37 z`&R~Y0@7s8&u_mQf{tDL@7`b*dCrt&@HYODEA5hX(ZZ;!jhawPm`KPr5u4piIGeTse%EYriMH_E zbW;PB`Nz$c2n3c?Pbsw`f-eGR;woj5^ngzn8qK*A zsafYsy?r{4bEr&=&9#bMfcYlGOb3^jgHWs@T8wV7qJU=n;Tg~s*_QJOV4I;n?rw;a8t;7F)3HeZYb)>${fsS?9|&we>c7F_}-u!-rh0r zGT~mpdwsA=h0ep}(8uX>{;vAloqSZ2MymQ}wlOv^X;>bmQ39?rOGTCjU2haLSF~s` z#@fqqkl*FX3q_= zu1Xw)n--)9ak$2U7ZCx*w5CbiGgk?|J`t)l)5yr-=bA3%nhCps$Fx*qfE4XHqq|&l zLqoH&%I8LLt7j=I5Z#LUrHwV^n45|Q6QQgEL#|9horpl@Tpp(*o48dKZ@aPpl??AM zZ&X6rK~*#ST}WV}XBylaUKTgQ1gAWVPX_B7@@%w>vZ7&aX0=n}x+rlyur#tA`I)y7 zUu6HHhmfx)ubgKXAz+B2^T``05*aonJlM@4SZ~ywB~RuK3AKO8To91v@h*C2J*7gn z0CpT{W^ljl`cAjXb&++)1u=r_1bo5)|x}$#dYn!CF$k=nDnR1+D>8BSTs~N#axOWp>ujHxa+8~zghA)2#|l$`oADdgs`Y;njRGn5=4;+|vuEBu z%r@2O&hv@37O%flw^WhLP~Xb>91xD((^W#GPb5267NsbNGrc-VY-lRgcD^QA{+fPai}`>I)T|RmJqDD@X`~Ws7up)pZpt zHyd)(B%T;9y>(;jq?#{=(M?fjBU)IKvT}HKtzay}XXPFZ(70o5kaohy$in{T&H+4B zI!(=maM9u-rs-dkQfNOF-I&gpNp<}0NKNuLx%gcl!eG)k1D{|z#I+~a^2Yc>9CK&7 z5_mE4AP#Ojk`%CcWP3A_s~V($aJ&_RZEerB-_$M3)Pti0RoK6sXvKTZTHwZX(m4*! zKPb*LZq(8oCzkfv--R(=IEn0!tVUh32(`JKpHYletqKb**|m*xN&=U+uGQR6*q};E zr!#pm0hI&P`3LSe+iCrI6KB)4C6++}itzDr|U8gbpo?W?>Xp)ewJ zXXuqs^W!WmiF}Ee+c3R1_lrHZb35*(NbTc|blO7=dU4T%fjaYrk{1p`U13G>Ze4eV z&_5)^5R|&=_PXa#`&<`{+|{{BxuDT4A^|*wa!Q!P{73AsXjF<1j}g{#uYTAfUJE8l`yrpB`{j_r7_CtBY>7u&;u2ulwm6s;y%~^(6(4_&CmWg zu@uiz>j-68Dj}m#GIWFkX{aWa&kq@xHEkko16yZg+`Xg^?F~BnX8a3w>wnpvW$caf zsb$!9uZ;9hKGYqe>wM;0BIi4!yen2YQrH1MAF1-hrK#y`%RkclH0W_qCIiu7E6$pA zU-S5cE!^1cCwKaU8flQqFXGQ<*+T6o%=f%sgQr~{zXKAo@XHSo1g%!Ql89`?V@KlJ zp(@WHv)!+zqpUvBf*QkzD~U`bgOeb0$--M~xW|#^JtqhiPxJY^C_2S%(eK3-UAEcb z1u>%&%&^B3~1D8uOYnIwz_);Bax2IefuzO+9T8cS7jYU2S10*8yRq7E@$94x}C);FY z0D}_dP5VB_civoiwP23#b^i**gcDaICEp4C)Nl}EI&o~Gvi03Neco4ZTom-QBW}T; zU-bBMV7`ydo^=IKhhz~FIw}nv+&?DTUDLj#lv{Rp^D$d_Ta?ld?i4Y6?;bALG5)!l zM4=_qfZ9?tqkF5~OjyY}&ODc#``*WH4%g(soZV|-^J5tILF9)wkahUJu9aBqF_Y|> zQ-eAo{!i0MyFG?s8ScxaxR} z-yodAdACOr11#eQJKtf!nne-GVF(*Rc;APtCiX{(Jfv!sr| zch|anqnf<9DM?ie->rY%Rv5>0h~j!swplO3tq4Z`wkdyDrA|v|Vx5X8b;Dp#pO!LQ z^gJK<)^V}RRvwxK+)2Y+p|LTAev)bUytXWdq`>?V_`-mQOZlb~V4KE~Tf|thRm8|i zSA1|z|D6>x0Gp^HF7ic(Br{DCLlgO$=T+|pbGY!A9KHwTUB5@0WH@hoNe8N%yu;z= zyM~ev1RaKXs7QmB$C-hP-$ph3G?~6p@ThzkJmzGP&u>Bb7vHRCmA+c6>Aw%Cd6ldb z4i#=tl{kB1n}31W{xF<>i+yeL9ry0N0Bk9nM(x{t93Un?q&20^MiYp{S6X8lw>saP zkFH&E&WwdeG`?h1c$<9UR+|tPtmg5eHpj!5AE7RS_IgEhaS>T4aM5;_fAdxWALiXp zNe>D~J0X6=N%Dw+^H@ne(9;O)fPfX|lTWSNiv4=FOi{(?sl)q)*j<60Mk!CsY9Qz< zI3s(@4bH+wSNzniYn+1spVETU_G`%UnB^D+G}^(ZeLS;4U0z{qUM+BkMkl|e;S!Lj zgh+`t$#jRg=XSG4yXtf_xWa<*6Dmxz#5wHsN#KP!Q>w)Z@WlGsF?X{P!kr5`O_yV6 zi+?aNYY0x5PEU97$;#0s6pgA1Hrk@iu%l9wwyK`lzs7HU17gLRt*#w|Y69**m#Nm- z!n#$JkcAg#Pb0OVNMQf#Ne(qE!#s%RMLp)#<-9#xKe78$M5kgoKGk2o=s9(_k7BM; zZ`Q*`=Y|%e7HsDTu-&|>IR>(5qC+dHSy$hUZJzU*^Dg?PAH1?+sixMIf3>k^}(#|<}W9q=CZ`Zh+DLgKGH3Y3eI?Mdp&cot$rs8K~ zoKPz8;WG1LV zPA%W8+Lp8s=^v>6f^6`hd$+!p;ckL5;88#6Di*Z@Kq7z-7Hf!n{j@>hjQ1Pk$`Kb7 zHyf|j1pJ|<>Q^McUMs#@0@uc0V*h?NBt2K+E%EfUp1B89$-Cj+;dVfLEwKPl@*zQ+ z+@}&cOjfQOi3G%b4c-mKWNU*j+ien_R>Aa+@;~Doo_JjxH3ALNYI}VzksUWI@@|?9#)0A z(o_Y3i7mzD>dGw+t{*Zy0CiJ0mdC&O|EQGpuFn$nvqTK5M!@-iC^xk{2ykH2=0+z! zhK3J?mtJSQ3kN5TDCMh}y&oE*d8*y@Av=<1yxoW2-f<$QOEWve!YmE(35 z_dIQxWAWfqsFFBG4^GiRg2`M44Ol5BM+~VG%kQ$MGzT5Vlm% z5fp4FP!|umeI2z_V;XbIZW-srn@ZNIj(+*F7wT`!I183swb|rTvKDV%K2Z^Dp}rF&d*= zmO@D}$uB{{zJkOwz;UgG)##plKRw7L*F3K<{HFAV^=4tXT;?$M`pO=8>D+^?3{)C} z=!hIYUqZb?&@q{$MvDhNSBjnRa~YOUPZoV)&Q?(rkxKRKBNrJ2{U^omkKh*pt0^U! z23wzRs4Q3umjj*UMlkngs!H{j#CsToqW9y{x~Bfjg)~HHEK&c)pZiLtRHPG_FAFJz zaE$VPqPnZebiWYpRKFoR$Xj15eHPs}LPcHY=#!uwAWkq@{w6K@lu~3E32ZMw8>Jio zQAOyE@Ap#TMYfGGu$r;Now8WM>c(nEz-jQ^stAZSrD+q5Kj<{;U3$qCC_MzurjC3J zdB*s5*AXBUJ++=2c4N`@vPpAKN`ulgBNJXk3D08`ru$fFqWinnEgItlTrY3v)VwZD zItB<2PWKt<`I36k)B&N@5r z_JXVYm0j%XY=K}Q>8(6_d^I73h%_B-4!Sb(L@N|G;tDo$zt%S>ZiI zf;J9d>hxCyRvr#4335m<>HpLq_NdK>jc}jc)v8vyG*7y>9^eF_@=RwhAnwwpY%yzY zKTav}xiIT`6id_@_{$t;up2RkM+7 z#DBUuULm~xabtV^+Ded2|0(2CBix@tUK+<>uH_L+iT&Gyp0AZIs1*d2rENf4{8$?p z9(=y#K$|iO38z?t7}-!GV-cr#zVXqMAl(6AV1ia-NQR2r=cvHxNeII;F}BV5Hr zLS;1K5<>n>AQi%shf0~*IiBF6td5j*-&7$EC;;Z8UZysFiXBsXOUG+^)kbT z{4j%h%bk5fdpw0vPYhyvj(NJ-!e&?3An83{k{Du)G32fYb!e5G$ch+rZfseX8&$+$ zvo$7|U^+hQSz7+hsOZCLrJnx@F>^EFoEH%`bTt7BgTrB^fo3*j8#mLEGI2fKzRt8re|%r zGi>_$y_{D^ke`p_#nPMRG>6}__hUsG-kHh31#b=L)Upi*DIu>`?;FT8?Mon+kS-H4 z?X7xR-`rPO7-u*<<_p-nexgg#?l&*c;(`-_61@<9tHTj%Av5QL3jgv4T*#I1Y;b=2 zJrZmXG|l$m$>LkQ^;NZzq$-fjk*o z7$>8Wht>{7c{042CqK+kNhGO1z6g$bP4$ES`n47}sqKF$Ntj*7(^<_8l6^`^en%on zg1_1(K|01K@F^&1epd@v;E1p0`4&CWqc!t0={<6P7?6{j@~qgzNCvilkTh>QYXZ)g znYGzl)(;Z7NzV!r#FqB*Y5((@y7T;zEd`3AJA*oV9K{-FX-L(si^*DLe^rTLQOci) zpZ&vmmic0_Q)2doU=etEzvY~-ZE#PcnvbK0%QkJ#aPaF7&crSMa36K@KXJ*k479{8 z8QQy%@o`pCV$Yx+BQHvItsu+03hFyg3jbyjjkEce&?g#vd;X*dfo)mdth@(KM85E~ z58EFOh5X7U+sBpP(y00(-Z1M6m?D>b`{YoCJ{TdN)*3nkq^B-xw6wZV^GM0C8T^#M zO)hdi2@X}~vW^-*qgUr^7#-t4>FTolt~83ZUz%)s(*B|kyOF1_qogfw7;unt43&gy zq@ZKOS$vj|NK&+aMb*>7sO3Gf7FXn70~Mb0%ge?o3&@B=Qi0aAISOQnN%wL=MIOxR zSEa;c@r`G{b^cLxX-eNY=}!knQd~2OR}v#0WnVfRV9>KFH?53>Y{{Bm(0vWKDL)oI=*Tv+UIi^!wi)CauP8- z+ttRvpbZQ38>WbGNsExOE*mnkR)e`b5UPCbOp=`-=&}-vog~Sp|N9QRlUb3> zMeN9}^scj4*1hN7Q!OPOaf^e%Py7?dc_PrM#TB~Jef1<_0+r9*>Y1R{aA9@7=LEVR zZ6MU?knZsg@~IV#CHic4)O%naCijf@j}adOSNQ$+OwKQ#>cd#Uc=W5nuyT351=xGn zU*BP`jL@p(HX$&u^kmYwvdw)-w@Hts?DflPdkdB*(?2wa^FUt^@)?wJWPQepK1~Bh zLiZf;8Bf<@`LhT|C?f8b0hXz{8C_%%AA@LUEb0>}Xf%O@+`oBJ?tXzCZ1MSj|11xV z@^BUcz0sH$bskc4-SaW9%+|R6*1^tDCG-3_-ywsnd%>&A0QB-bJVF9!dV zd}Op?tqG7l5uRQ!svX-3ykMyuQ3QwBXL#vuBwbtW*4J0R$bSdq8O5jv=4%|Ki-*o< zXMRfIa=&lISvuiy64_vJq8`jcWU>gS*pltjnZ$T0*s-^ors4x>wlxHEQG|gCZ5ejv z!+&Na;dI!Jl)P(qr-W;5lTuk)-%=h3GB<^bkD-L2g-PbLQHTZ?Ejii~(V zn#IDp@bcHx$LXz01@jtzy?@vxEM0Q`N*%X=eE$t-q$v|%$}m(r(TpKWa)1q=)J8Wq zst>+>(krO_PKI9~GR3r7pCQ}nO%mp&^J&-=*cjkdbt> zN^K|-pUkUbu0JOKcC2~2fsdkipezf;#ktfhtll7P$XYkN+bYY7J}NUgCs9~j&pc^+ z(0@ z^1?MK##3K$X8yoYvu%~ilCA%vb=ji(k)C8x9X2Ka;!(3>EAJNGL|rf{=?*N9POPG2 zjS>vM(S_72OA_7V&zz5Jn(@{NVsZVBrCyU{0k_C^Y!%2B0fClL5-?k@4AS9^z&$n8it5MfAz>wb7HUdOSYS z^5t;@{qkT=QJXKk$#Yh~CD{%t|HSb*EwVU_JwZV`r+6VNRC(hrANw)~m?HE}w zF8fyEn7IU$HjpSqOLB>QM&=xdtOYXrz&pwN?<};y>C607koH$43PBEArgQg@D;DY~ z-He~LI!=!`z}rt9c^2unO9X-miKcEl4}c#r!j4tz`+v~%#7sohV4@({fn~r@K~cAA zGYym*x+80c725XG{Nlao5XEWjI#J49Ud~qQ-D<$Kc2cw}Yh4GA!WPS-VnJk)oKNl` z*h)A8o`E2iYd~*X@9BEI;iV&2oXWlw^!CKRlkz$3PBdHH8zuTrW7+CGNlct?HG*RX z|4CaeGNQBXaY@Hza1y3DtKNtr*V4V^wn?}$3KD+iA&VaBF0p|w+ zX)LhGnE#8*|1ThjqeEvO9`Q8)ro>Bj)$=Txnrk*ZA};fHHG z>Z1!gEsvb>0gacIxGkrmFU6RUQ5qq!z|xD(#Z9z8Caz|hieF~B@0Q~GVRAiD^8wnh zZpm>%%9fAr9dp<>r`4%Sh7Yd43!Ux>FwJJZM86!MM@(zjNibzP?xcPjeebg#oV|-S zkeq<#wC$34|o6L65IzG|KSkNVmHC%EtXCfg}XoB zQrFE^eX1Nps=SAz%`Bo29bdVM{=oB?rXPrMHVV8DOR3}3D%)-_MIoLt??%c#GbVzo z`p?4j7Zn$q@Wi_j78f@81=QjPjY8~ebGX9ry$DJZ|@Cco6vVr`hD+tklB zFgv0b?y`*(8$=@WKWr00@yj-J1V<7X>L5)D!|IyuDh*V{lU)0H7>)A68!QT0uU!f< zoHghRr#!%rtB2>$M7WYS#$D|=>MgdG zuxWXsZ3H|1$RhA^?w;ER&wlYT>32HY?{vf(M}?MqaC3+@Tyul;_u**6$K;x$*7|ww z?M5#dC%dYA;pT`=J}u@uG11fA@wDBKOFQRdKJo+t5{{A$1U@>{iWVua9;q8aT+y^{ zn|IW@v%R0EL17}ZTR1mEqtWkw1l3S+TJ!!Z8oR9IyOA>AP~DUAj7|g@RU~T*5`1IG zKN~^#q>7eHaLq;2k8KQsGO+4xPCCy%T(_j#$6wl~CeVy%^&_QS!+X*fZ0>s_bW!&$ z#O}n}mSZ+u;27s8FS92w2e-XR(o!$Dwc!lECW!@t0SLeQ>1LvIQ=*L9?*Bo0#E1A~lCF99*_qT%Sbpt>R2h6?3G1ZV8@ixtvix-O4p<}m z^i!!X-F|M+_dQvj1+u}s-@v@91ps-xAQKjPfundLFxH(0}hR^@O>QgPZr)-am4J7ta0n-t}1rX6i)n}r!->bmg_izV9`LxBAsFI5|S8N zvqj<~W869lwcNQ%nhqj=tNJgEGjelO)6JMGwPz4D_{Gm(7_jyeY*6XWL^HxN(`R*T z6S@>_rJXmypEEzEK)nuDzd+GB>Nax6SNUp$~gq zq|)$j{+p*^6Pv3(d5>_NY){SXS`i#_R%hM`E}=f(K}MWtF=ZJPs%K1@JpXl?0N--m zIT!62-@l?x(9DfP)E?Bb=WWGVm!p143m+L1Pa^b;#^0Bq6EBCu*>|`r&Ml<{jM!dP z5S!ff?H$9DQ)?M_ibvykDiYfMcJIIcTjoBox$WZ8hwPR<*yj^TyAqB&AXjn|N>q(# zRz&&e&fpENQB40=D`7c4VUK*>LalEfeZH$;uSeOn>@Mi_4LVDi#>cLsQTQ*?{e;Tn z0+|W5OMbU&Y~=N8v?bq6a5fH`K4=MwW?UCV>duB@B^1+f6!$uhDjy-iG$C);W+25hm4rOtiEmx-*Cf56~XO|9gWYrt{aF!uI|Q5cdR0FNsbpJ?&f-}rt6 z6}pjj$_{(h;!Xt{o8U9t6Qkl^c9^wq9uFRdiXu&^ul3P+WCoVJh0)P0hEafqtgG_vRSBCNV-WS3{70j|^EWEH zRd3S;hY|ZW;f7PZu;_*-wng{F#N6cVlY{lM271wB1lTuY>Elo**&Avl$bs-?J{uEe1RM+K35in#+m({yBljk) z5KkET&qvRB0F2M2Kilm>Y9X(ug+NGhU9Ha>G8JDP%0fGOVrp_6+-(s1WVT^l4yql< z>w11YvGnkXlU3O~2;Xg;aOZ+zdCnJ+yC*~5EdzVQw%IbM|RWx_w9 zp^LJ-Z0pj`ma}<5OBLs$4KrnQb-}QnX)3*aXE~Cja;A%0WLrGc6NN2-Hu}b{dwjwm zriLL>+oP=@qhgPh2EuE`{eev`Aa>Y+wsk5uh4LelJeH=LO8iFHMe21SOIMJ#HAayk z6_c@#u(b^B#CtgB+Z;oYJ<;;>%vhtaZ6XJ$yi1{GZnBD0_gg(?QTVJk zmnSP9WKA`8`G_1PQ5d@~$76UBm{~ViHzmH~cp%uH-I?oR&E0$fxPbLH_jP->#Rw(5 z*!aA0Ft_MM@xoX|o4FCZyYX`0uf9$E(F+25P`Eu2KEj}Zgg1_LOK2#w+;>;4Q)Cw; zrHbN3%IOPW+Qq7*JjqH`KG%Zm~X{Q;-eCgFlJ}5)hY7bifamf3w!A0xlpiA1XlLt@Pp`A$HWQ~0VlQ#Ov{$c=C zg%`T-^)m_7hSVL_Ht<$J-ZD(SoK#xOL+KIPm)vZ_bU@7rH<5!)=)rH}%_U1br z8*ac1tLnmPxnH2rVlsi8~J7i!_|3cKc!3yckPXX*b*@CjLNu^0XSCI_vzjX)G@HtmnT(pHEKK|MSgw z9FIu2Z|uIm(=cl+x)O^^rd*1w@Q1~7>elFm9xRK96Jl%8lv~aOKH-Y_g{`aEak%b* zXux*alUlO(NAXA2*5ZH?L(S;2>aG`qboB`=a(JH`&}C?`9>9Ia zfk|p1|M30_GWD|lmHf9C@K&6>sn~Peb=h&d z(rB8-W)yFQ276EC!831E@{B(k7N)Ed7j$R~1t^)YD_8S4r6Fv9dQ!>0r_RGGDHX3All6Jb z6{8C=hz|eSz`of)G{Xqsq<#Gt%O59LE-G&!NE%k(Y-gDnwUxGxZua*dS?yPe)_ea# zdZjw&Y5HhDM*O7wCryBt*1?h5xSC?dlolXS5ojr>l)-N)|4b?gn5`ZiW&57bip6R2 z?T?N(aM~Q%POX^Cuby#wNI5lN(1i}Pf{H1Z>+2zt|QPc&#-qTH* z)18vM@4-dbCGO2E+asY_qqTCtIH>Aca=GO=lrd>?>+ijoWjN4rT4Of;typTSEYcBg z>tGB(4gg(x0h+jV^NNZ~MI{a>YF`qNEpBmSo(N_Xf11*86`ZpASWOUSR!9;)C^s!k z<>fm)+ZcIR_7b${Fx6}Q+DqwR;g5{|41R(NUjXsk>-;rnco>30Acr8}%e#DnX4A-E zHDgOa!LskI?k;+RtD$PkH#V)KXOKC~`^`C^286Zkq8tf5$Z(+W5bil!q!R8n7BwO9 zN-o&YJtSRO>#ZV4^6vck$Ui;-B_k}C!9T20M7DK-qY=_*LKgM!P9G*P+D89yjTzCc zJxQig!{W+VpD35&6Q_?fcP|J&J;N1Qa33n)3Fue&hVQPu`CRtbOMTF3;txY*7&+k`5d8|^@MdPSEI7`3$UIR-?*Y+!pW&dLV~%y^qkOn?Io=V$c4$7V41(zNw-(MFoe>lAsL7^8TtJa1nR-EjG8+t8deF=&Vhkll0G z4h>e}*x-!%o@bVA8x zx!FS6RgVDZQOeq{b|gBSQ3PVJC7OmjA?s^g(DI4e7HQTAhZ5v9hMV!1{(dm;I!aT^ zz1VPZ)ygKQ-U3zRd3p}-Q~Y<$Z%(T)zF2c+Kc>d$Rf}`%xA=-Qx_IfAXSDX>)}AP7 z6&dJuQN^-<(-;C%(~H)N%N&@1f3zmtarX<<9_5md0f$%bX9Dg4u!DikE2iVElHx50 zId*4ah+tlE-Gw2}(-O$Xp-Jy8Di8;N0#ub6aCn}`FIZ4?x^p5?T7aKKmoZp*6{&#q zly!U<>QkPW`(`aHQhg+TtjeYo1gEVbB3o)#4UwH!I#!ao_YkNPvyz#fI*BZBgyr6P z_l$FcJd&nF5Uy|lOIR&B!BodsnZ-?Hd0O$_T_SI$!gbY2B3ZNkO##f$+w!c_GYam* zVi_0hJXUARBj{^vt5?f4aGf~{*b=xrcg@mL^e9~YO<`0m0)bevdmp?uGRAZ(R z%S1pB-{7-sTk9|2&@ShgCtOBucAF7?(m@2gpfn+d)kG0FrmS~5p)Yl>3-b;^2y*h{ z)>HJ4SO@QE&sn-Rv}YlqRWAAdT;6^g!E3)ao^3*oK^qBLOeJGbPV{h7=fRkGUe)=`miC6K0U*&jLd<9K~ARjGeC-&Wb%X)w4%d&Xq zy-K_KT}ee_D)B^>!-y>h{7RnLzT^*6Wq^cvO4H3G=4@Fbxr+(4FuW7wjw)R^s$B1UWR`a(LF|9FiiZ zUWg`&7O1wxr8R5WeF|DxnI+5F73&D z=1`_l?4L;PeglFYx`k-uDiSCbZuzTp%*c}vjP}kAKHOJxPn`M65+E{AL6lq6g=kj| zU>^e53RAu6{x^tx)-G#S1V2bbyQAKl zSQdLdJ-+JnKtX+pAPN@k@ZIv@>9yh^b?Np>@_ri~Ll_!lJBJj`5GWKcnSaqd#$5H< zfW(C~hpJ4aw1#ri^>^x++I(65)|GUwWU#)zp2LD)#~8@`3zC-pI`1p^Gl@_(6a8s| zQXvfC2x}z*tySf2L>3$7pz5k`GMq}&<481U#!C9T&pr4Et(j4+1;Os&oqHSzE#W-YRff2t~>F1le+hT#JI7YKsqj z((ET?5C|;6gbK&}&v}Rue72`kjVs7YQFfCjnCpGm)V5iP!fWgfx#=VIR`6~ouPKS#f^hL$g_ygy_PeB(?G?hwnj7atqx~fF?p8`*QOjh%cppm%BHV*tnKscj+b5FzpOjVVfU%E8Kt#X zfB4vTS@q^e*Q!~ZGhB)%%=V)Z{^k2>+f&odP!9cB8%`gB<>sR6uG54yf$2@1c-s@; z`GcM6MouGRT0h+y^Qc|)zT}>x)rZ5-`WmWPjg9HUoFGdBg=I*Iq*>P-gD@E-87|U} zeFCbJmU*A3Z8r1$3~w;CWtuniYGt(b?vF6v{_rsmLXg$wF0g{5(X^XbCVYA7bLy{e z)gN5Kor!onJXiZDvK(7}j5$2!Cne>-JAYNi7~a?Y^;&;hoS$xs^9U*@B0qB=ME$9T zjfP^^Qs8FVLkwD-KMu}pwlotsAhP-XcZ7qb1v_kA1DU}xk8KjfnHn-eWZ&cU*lv`bK^mYD3@$z8{hF7nfPM{T5>;6g! zBEx*fsb3vw%i3&XE`|X=-Eo8s57{+Yzj;Hi`j`OU3097^G9P~51O%_IK8Na^s#TO) zXTGWwkee?(Z+*0czL80&pS2P`_pNJ+5)8qa7L@%m$p-r(geapJ3wW!u1qp&+TjymT zvK-f*j1mD|o-oLRgUGMrgX4DzJ@1n?h9YQ9i}VtvA_0kZ8kwrOMV#l%UL^+60k_^T zgBFvfI1!-atK`W6&Y`Tu#e;zA_Q_5#VLh4B;aDxp-{HfTmQ%RU^V}&Z-Y=VyZ_gE} zcFqkPD-}CFbF4Y9Rg5M0I<;h4y`z$B(r{oCN zf;e&q9|}s)Kseet5M7e2dChvI#v9eZudr8L$jRcSO_U{1Qu$?0jX@SRMr=57T_*0f z{GxQ3wFQA7iI;^ZP{>S?!EUsqt8Y%zMmVqN?@Q|TaWaldg@K=804R#sR6h5QSmg zwot`sb}HVLUNOC;zuUD^f(Ed9$(OoWFAp48f->4NM|Q)mu>ew>!*$U5MVhtbdQ?`k z7GC`irBhVC@(4lE3T$1G zKPC9dTbu=)-+IPCnTlA7qg?Q!6^=vk9(BFy)gp~~UM1evn`|!YT_52nR>A)gi4cc{ z_ix3u!}Dw6A0HP-8~hWlK84MaWnpFqao|-t?!M6XOuV3g*EVZ?ASForcRIFo$yT`B zAtaXd!`6n11cr8XEogZAFJ9~pgG8^qcfia1`sYT?03Kb|L0&)Gz=ooWnt;cEb-y*O zrmfS3hHCV+E(88bJTE*Glj?&{Tdi>xHN1L5fY>vfzdee` zZY06;gbZ0^mNtWu00|ePb*5FgRk3`g1J|g*h>ToRO-`-^c5kJ|17?qhXBM#|vQE!p z`o;25Jei^h6zBC~rP}CODWHWF6qBM&9s|XOB^8WEBStL4Im*emqTry$F%u7+R;dQc zqNyGaYEI9S>F!bKzs>gjDjGJKJD_xQxH=V7aBercz&^LAp!2GZDC%nlH-65RZU$lu zbZ27%u|(}}QzLBH(;W?F;6s#(7m%45~9|oC;bVWY)-E5BN6bur!fc z41bOs2=mWp84I_5s9Qu)oWK|FIGx%85E|qQRS8IF-*^*$S)3y4acC8puwVqDcf=#p z0harOFp+5yA_M8-I6|atFb0GUHYb?JwU(Q)*&$yJGR!nXnwGStDFYE2<>!q{KPuP} zEFxRFU6Lgflc`z5pJc&Xs7%B&Dym?rx&SpXU{FihPXh$mql8E{Y z6hW6B@7F#)U&by_5G<+D?Q$hlt#0iQ&`rfTGNYD-@Z1Bl>U?Pr=t)L(Yr$4fGc*0n)-Tn&pC);FnR-;|J#jl#(2 z1I4-k&qPGo;e>5XE{j@HX4|vM2Ii>$OjaHH4~TePha)RxF$DMteaY zd*-(`BNp3f3bEG+qqUd9<6T^dKhjykbO-}J>QLMbOuE|~T4nuyN2N=Kg#HVb-NE&Y zd$tlPSH8CEO4U~VyUFwCl;b>YvxiC+k~>(>gW_}^t;ykg2PtGOdRXK5{Nl$~j$T!?>;c4nw8b>_ss$IaZo zYD%NXI-@#J+r*hfmiE$mwgb`Ti5Lv7&e7O4=DixX)!1~jx&pLambMC$@Ze|go2Qyi ztKKA~CEapbV0mGK;fcMD{}+>qe&(cec;Y}VUzwqfJ;N85Ja_O6C}a;mSt?W|L%WKgdlnC2f-6D$(B3Kz>Q>c!v*-&QFX2R~Zt{|uvB z)`bnt^4F1lFEK|4g$+TL2!BNJ|NT4+7M+l{)kR^qYl#L22|>S6Ox_)iL5Dk)+?vdb zh=<2U`P-^uiAX^lW)OmD2&|JA)&vuHrIdv{gN-I!Y_Un041FxeZG{|nT6D#=HGH0f zct1Fb^$R5}P0CH{2+#*N&W}#yzx!%#gEN+@B!kYSJ63xpZe*`bArEeCPI%3?{i?P| z9F%QflKO~KM{Jy&%@h@&El_|OB^})0I2?IWo&DUCMU_Kat8dqxNK~3@>&_Ov>VLZ^ z?HmQ;6tsi^xN^PB`vZ*P@+>s{dO`sHzixncS@W5CSbB)}X%y^#nVzJ@mM=`x{!;S5 zrgj4+k_Ybns?lbCmq=B}Y@bN+(7CcNh!s2?e@h>PnLfQ3AaMLgX8Z(` z)6Yf@a*Qth<7@D*8Xr- zwev=(N#>RXS>}W}pvz-8iWW+{9oGv`LP8^q+`-mT9^QFEmUEGDfDKLRHJiCwm4Uv- z#G2+jmdi&nGo^M_FN#uK(G`f^D0BqLgke+mKa$RZE6Vrl!Zree0@5YjC@^$L_fSKp zG(&fHNvp&NL&wYrNH+*bcMhG>4Bau*%kTewfqSiIt>=z&_CD9H%13ceABcHo-_VJPcZopyR`Wtn?Ks@IHp*>iQVGoF{#{%nt&zVS zxk^=hKQ z9&VC@ta9%S!;|8kDllGZ#v`nohbA#ld3diSwg9l7!iVF@R5AB&AqUxaqWi2k`xF`` z9(%rPA{_k9Wy_FMw(kEm9y}Kw>j;jJpK13G4-lDWn3#J2h4~y%kNGF7A4@MA9Ri=3 zrv6@DAxfs%IJ>#^oH45~wzA`W(Z3;Lf4+(EtIRh%H!5JOC5qHWFW|n;B`kUA!PBr^ zVKi^&N9>2$)N5Soa^QC(a{>3$LmH&|E6t(ixKgLTimCl0Av<+#o;xE4nS8(8))c_? z(xm!($qelr>J4Jb=4+YR_jx+&EBfi0*7c^@QJKZit*|Fp4W0cUDNkgoD%%`kt9$Q~ z_MFqZO@_`4j`xJ?%WE35+GgD+3FK;&DRdvnyN?3XnQ|8^pa{$=nQhlP=GNHf_0wyH0%&Grsa-;%J5ib@mF?FIW zJUtv>$c?wJ3c!BCm+w_B40Vv5u z^1%)nFtAgt_VYm7eEOoB(l{ubirx267uKzG=a2A4i>Mtn0gZ7`ETx6 zfQ6BNG++(ncCiucb(!BQ){qleu1@qHv2@$IGr{i`k7;GQ$JB*Z#sC{1sNxmrBG%zL z-5nVYS$&zi^U-P6BF#538-?fZvJuPjpk3k?**wy-F&ay^4L>i_gTnfdxQ=lZBv%sH z*7j&_%!buBtBcR>qkL<;fefjY5beGawmEXCTA)V@t{wk!4e$aEp1P>!UF9M-AO9v< zVYJy<7NBrKvEQUubhniNqlTeK6P&99z?(K`N_^k|-qR9gPpt~Cz{%l4M;raMblBb} zXgNQ$(%ILKZ8I-3RTx^T6Zc?O8Cy4FwQkc^@K$O|=gn$ZeSH3^?fw4#>l?vhQE~mumm@y5UVovZ zyGBJuq_3|HXPSRq0|I)HJ`rxv3m&Y+9E@y6zBf3T$O&(k<-7)&uCP8#mR>Ki+IJF% znHo;EIC1j7)`u)aI)k_@FvXAi8u@{R87Ee<(^B1j(3m9iCqo)8?swPKo*c`IEeZLL z_jvgv02X|ztMBc*`oq3wTleoHrb$;GJ2wOYf+oVx+Qb?VI1d+I2|%-U-Y}8oSr976~T=MoP|?w^Tj+=oZRHy)C&7W*FC;} zz5*oiuOsmM;cuWS+Zg*?3OCh#X3bu{bOAuZh9Y@9r@ifEwAQ4 zPm$k4&Gp5mZy@)q6+?a~B^~>*qKYMwOF^4BEs=<+ITs7d1@pP@cBs*g+mwXX%kKcK z-}g?}LO6LW=t(=oy;qeyx4}QI4{?}&6(nXZu@LI!ARROkzsQC^v!v7#^PYJv|1-&g z7}i1j$VdHu`>p{?i0HlBo|tU6NarS1bVz<1h#6Lfma#2mLxOzbycE&SMeqvRh(SIdj}MGPfV>uu0?K zyiKPZSgOrUsy|D`(4g3N>o?IjtnT`)$=C<&a#vJ|??D)gP-RaMsR7%v9KPT2q`HPg&x-_P!_j`O-$0i;?pFYj z<9-to`_d2_8PLT*%i7l=*Mx%dP1a7u)PYt9NT$WcZ^0Y3ja+I&C|;v+xO9sp&ZPus z>AE3DxcdrEv!DAHQG&W{hDiHidyh^t5cTHngQg}%G&%J{3BE2=G6iY6fFUo zbuY?|dQGy+k{rqP@q=+nw(IuPB9S#XmLIGf*_2>>`w#|e(w&TsNrS5_FN19llH4*>i8*AiF9O-~qiKmXr?2M*Nwyh71oJrrgb8sd`u0+_HSD8uZ;ySgPOL|F!UY zI|ObXwFcG+;7L;H(*u78#Q;HpEb}UG^N)IK&cb@Gjgv}}&VS$52!4w&E$Kb)ynN4B zSQp5i0_buPf{}k&o4aJ2tM!~(29AG;3MeB_11YWZLKwTp2Zt$MV*$-SXJaMe1E-T% zoc>(j(Oa4!G*6sQJbk_p>5T3Ledb>1l0c??>t0pOzMB@%$8Qat9jbG*%=8MB4N8Ju z2)a2HK?jkqw7*pN-F(J(;RyJzxv3NS-x-4!Aky&QBSpX(jG(`s(VeX~efI%H(@kRj zHv^Z%3{lV6A}=b%hCD0`&onu&yaL*+8esm$v^zZwNYSN_)4ol%sq{&1ol&Gu`q21J z^39kW`G+`F5rNp%*carv3Zg$pXhF|v&C(hx6z1d|cQhLYk+-ZT?5>193yM_Zb}Q#S zG%L&kM}}Ua)=wZf>B3P)=!don+|*31{#Q1EHFFS50Gn%_qBC!9fZK#GO1%zwUrljU zWTK&PPo>*7tNs_Urs<9`4cmDOz&%gY$a2Scfym# z;AKdD*5}M^%i5B}B%hL{yOzB-pE)bt`htHveW~Gg=UUq!&uZHKQ~WzrdiQD9kK}UG zV|eQuBwMj7_)7FuUf@qz`fZn7h@6uu5GGq8sNv-n)+6MD{jszJzR4*nN!W-e%0&HDux4z$!u0^et;jDAf(o!rs^ zCf0oCS<0(qGIr*cc%X}>Qs94<1g}L_pYn(^fbA_dL?|^&*xpJY+xX9v;&9}9sh*xh zJ#P?IFki_gGBIhUHvjtxLR&xMnt%EjjQVBH>A@PZ)cJ>tRYFI)cyy=<%Y9`{W$YAtn!hpN{UX(t+{&M7~3H8*p98_+05-EAyE>90ILt$}nk%E7J zQmpLVS=Nu7i4Btyq{WA%%uxNv-M=Hhv%d2;cYsuoLz)ssa6yxMi7&-9r$T%7`A(@# zRx8nP3rai5+gCtBN|SJ`keq%}B(p4U$nYq@0cQ*02(gBzUg1C`5GJFxQ6Ox3f%>50%q-OSn^-^|SQXBz`Xe`0@x_KnBD_2eo;{*LPoIW&?xRD*2+aRPNp<6{ z?J^A7ux~ZqCOk#c^BdiL)qIkFieHjiK#xET4+wa9=r4lN(plQj#{LA~YWukHXJ+7} z;c-RKFRc2knJ@fp5R2iS?`DdETXKN~Y=#Hmp!hq3G&_6~2H=Ru;zreORvG;cCGfo8 z-D--LtxRg1+rxO|F5%GRAFA>Dg3NrGjZk`61Og*vX2z zP=C%WqE#3$Ci8{>do^W-u}5^?MCvH8ZTQpBKQ(nuwn}k4P4^Ci2j+VCJ_I9TzrNVMQSjxN6akicBFYd%`;$p*>-Si8UmgeF7LCUcuZ7Y zD3u=FRZF3oI|@LPn6W(lyMyaDM|^a){13GoiTFs*1|-0`ejFn!+uK*i> z!avouY!(_uAkP$rQ}Ek3fY}AuCuC!q#1}MFpKrbsmFgp~yfUKo@9Q!Q!8`hjfY)nD znG;#0V4^!~D{~Am2Q&MPM{_ILNV9NO<(Y8eg~AP~0*fkB9-|T|FikfEo~JIOu+5IT z^F`Z_;7TK*GgkhW6OmwjJ78%)z=&A6>FIrOR}_+gU1Z~3?o28P8Un9V5?f?i2F}Xh zJ>I(Rix29(th397}b^@a88r@6E=CmA{1(+8_7Re$Sf$m+&gve{=gX{;SY61?=C9rD)a4 z$UVL)u3XzHluC+Os*-Lx+2Y4|fvrHb@q{x{1v>2faGSZGQ*{8|2smU9SP0I5`|Bu9 zkN@a${ML_3j!MQcA5cdYyoa#?ufN>gakG#@z$+7mj;mYmDU#tDxObSsWsG)|UFoi> zpx=yHzPG>B;f4MM(V5(oX@G%M}_>6`eJC*hwhx<7O~BUdc!*Z0p~ z_yhhY@H_(SA4$X<;$N5o9=1668=W&$gpud1JPBO<_|zvE)vSc$7pJc*1`B}S zCpW3iH5^t%(mwus8W5ou3K!6s*Cm_DyRs0X2M-Un$AcKtFe&z{Hmp ze_f8o4<7i~P;{$9HQ2U+yS0P9e=;}Uu!U%e8z3*#F+249eYtwbz&n{NK8RSHKJ9M* zd~^8V?ts(y=j08$jkpj(1Gkz|#+8mqbPyTiC?n2GQu)gO+wK+5QD6X` z)0`40&891Z8ozz9+FfO~&D#XF)u3uIriuhGfM5BHgUFaxE3|B(W(aUmI{mq3Q14n= zIx{+io`blKneWMm&5wBIq-w5sS1JwtM>CxLsuh%G)gY~VTpmE3Pv*v)%H{Oti`pRz=^j!% zIY(K@18Cf4hw^1Pf}z^>z60X}B5!->hDtbp;FNga`qhE$icSYem@>pbxXq8K*>XaOg({)0yW-e+S zOaxCgQx^Te04PZ=!7F;Z-XA`MpwMv01=qg-`WT|);7~-i4J+c`LG1pbtkv;^87khS z)IxYb6v&aalj)b@J$^3-rJ^4w0E6{{Z2%lWAqmPp>{#5(-Y7EQVsMe!LIV7+P2(z3 zO;9Kg^ks4|t%`OWPm;~HY<6N9pFQxN4SMkH>Jm`X>w7tpSi4rfMVg-X1?+qs*HlFS6*rChBKDN79F&n{aQQUyCz7v?BQXim!g zKlrR+ETs=beomj&6{_AkGJVLJ8`!1_KN`=x6P(02nge*1j1PHIG4#spv`uu1FFx^8 zOA1!Utg6KA#ESPwXuQ|i#d!HF#=0FNAERWbP!3ADJ7fD*rAAQq#_VtcB(<&{8hhb| zx`DX$CjN)y3jYIo8x$qxZ8G$7%5tT%V!mtr<@(~nh=H@vaf;Ma zi2fPCJVJ5e_2xxTc*gQ|y+8KPj4zQspw}{T`477>a-~C&6D2$Ra~0={AfB(%wVb z`_i`D22#sIdvCi8;gD*f4m$l7yfP!Hy`iqGrUb z`Jm;bSk%~0y$YTIzpMjAu{G2KqA+|k3l=SdKh+p19Y>N@ zGJXb?^9!(55goQmkxo%rpNm9l3aL9U$p1P}`sk=?I2NFn>oC~uP202vFdB+Q)j6Vh zAT1lHhulKLhXlm#tg~0?`Upg>#F9-3&m}cwlQCB@Nl&zc8z2AaSDQC{8{1SB;fA!+``Z=nc6x7Dwg(Q#^G(b= z(0vr2cbLHabq0I4wwS`Zsp4n`;BvrUUlmZ=A0T|DkSxxr!2v7G)9#evjw0gDNqtKZ zWZq1G41=qWCs&Mh%-B*|L}+_X=UFP9?tXr{ggg^e%`QLVoWB(XGJvAt3_K3fL%gaE znhpRQQ#sI&pDIwv<6Z8nEcouvr3p+$ddho}Sy{X3F~HrC)sr2GR%8QsVL90W##mqm$(@Et0~KS}A)V)(-5io7BK7DrF1+k639?^y~m z^~0YLTGIi9n7;n0GSzCc@tHvAUgg_tFi08tuoQ1{ z-mjh`$mGxZtdKB{zci}mNG>%Q;lSy(6{LIMieV`{ye&|vtvIs18k{wIpVQDtEGl!K z9!b}qOHuBDQyl<&ksQq!N^E3=sPLnGm}igt+}tr#8q}=%P`Q|h$oR#Uk^xWs<)qh` z#}Zy9LH|4bEh383|Ll3^thR!{6q)2@&eg2u-oM%!6dQsZm7iI$z;cl3> zi4m}l;^P4~ofy}7TJE}Qj_Ceg;{aanopi}ng(ic)p zb&k-H9(X+l_hbbG^XkUfKr2$i7OZ^R1)X9dV09xR5miehRt<`(z9EQ>ZKk9N%e}_k ztEb!}J}d-I?QLMVaehlaie(D3Ng4q+vA0HR_voR81gim4eWzJ)+&e8UACgjgLA8uP zeSt4VKy$ISr51~AO@-K*=albNQ*6QoXF4&In1DT`pH9`0>Yv}((9A(80W!-k)+saL zY*(H?_XHaCs{$O*${-(-D%u=n90w;KrTK*VPsla^^c8s=F(bo_Gw0RjtAyI+BshQH zMv-q({$tY`NA7d(-t>5lH_Zk1>Bt<@WbW%jbqAcczvZC#S*xO@I#`=ml+c~E7r>xr zEv#Jupv3Va*{5DM|wtj-LQXV{^?KYo!WQde-tLv|9m z$cQB7FPICK5+6oJQFf+WlvPUjumRhgXfb_5|Gy^+5$Zo&!o}XWQ~Eu|9E0hT4n8OYA9LDVKs)mf+a&<0n!rt0x2b9vGETk?dILSVN51DkoGc0@amCd{%K4w zkNLK1>QbfOwEu5ocbe&In<8=2dYqCf+YFtVPv{3rb3gl}5;r~1M1E=ZLo!EBz2765 z0tx{!>CA^*6P11?=bD3~NyKUS5(U({JAdVVguoOGf4TL7WT8}3g0Tga03_hJ+MQ6s zzS*a5nFGj$u`A6D?5R_Y65ql5vLQ@>KG<&-#?k(I?0qs0lb@;sbJ>R>(`4uXOR7{M9&eD`cPFENH^qF({+{QsK9`0>}Z4vc5qjX#NV1(9+ipJ?TP zb^yFT;GyFaT!0#s*G3cks#aE=%38CiQ06na;YN|6(AmnadT;$0+m3H$X$g2viO~F) ztXiO}Y~R{fso7BYbXN6cp-y7bvtVmL1#jemciVlZH_T^*cn8na8(g7zSa5-G= zPP?9k3I3Qy*Sgm$ylcN(N_!jJfo}&!Ss5+><0}(@^77+hyN$>ny_W1W zh}gr^6Joxj|J3SvC^^mRV9{NRoBI(1Rpt*+1nRTI>nj|XAWEj61gn^kTXB=uc#Hd<7r7MwOMbi=67rkvT5G5c6r z{y+YOVRLe`0O{RO?3=8uGJUkfQ7Q%46}&<%Yq%!z1$DdSS6m-}_CKvb;$1Q0w(Vyv z{`;(%qTB1B1#!*F+v1IfWbi$ zdK@r^ma$Vic0*=04Gxm(AU0(MoH<(9WA)oW(zi5V(R>K`{f>a+=i zczVD3#-B0e_{xY>6x~4*>Ex?*%urKM{7vMcj^uXbYb8Nbo6 zi^kLqE^ti}WV^FRAI$P|fMRG>8p;PD8y;6cQas^%G%G10N5hfTY$dG9T5xiu*2pi= zO-4n~GgTc|<5h!OOG=_WUi{}l3GmNERNP1F|2`w%E7FPg#?)EGVd2oHmJCj9HE$o{ z#X`8>Pmz?SYjT0HR8!%9+iwB!h{iVVIRk)gRD9U5#iZIbtMH_cCq2}aNrVAL@Rk9b z>w@rnr*lN$5;FS!Bz_Y9<|U$V7r^nu7_3Np%@s%;g#e&)@J5-e?T0l6RefFpL1$$Z zXKMhhPCTzP2PsgdrT^)mo`zQfGW3ufuxQ=PBM9rO#W*$2XZc=T@d^6RpI8|=Jj9s+ zd+DMj6_TfflPiw&-3QMRYQj?BCeqqaB6s95E~d1q$x^ZVhrrr0j*eb+`z zx|Nz<4%qp5V0b|vA4D5UmIF3Wv7&F>rpp6=Wf^t11S1MraEPIh08}=oIHs|+PAKgRiy3hBlC)JTHcb)JNU2gSnyTq17e z8$J0^enH%Wkk4(;SUd9)7UR%s)WpZt@!y+ z+eIhzgx+~v-A@SSU#8C}IOFN<#CXd{Ch4x5B?fJgEhXqLDsYl>32=@XdC$^+rw@V? zDQNg~8oEtGX<-XJqx7FqRbpZaq@~zI6RUu5-Tr80sRW?0*yn|2RN2lUn4m8)g;eY{-Ox z%_>ORmz~6}kYPZHNZhEe_!mDCEMQ^tFwzHa^^6Vhts?^Vy}wsdWxnFXZE24Btd$8m zCkLIM(r;s;Sbi(Q>jyo#+@g{PbcsPj#;ntvFcAi5E!UH-f{lxCr9)|B<%Z-XFlg=+A*_r?OZf;qTP6hn#U>{-J5Q&;|_tM=Q6ixlXO&!(!N4Em~x z)+1v7v@&x~GCRg}boemx&zp*|Gmg}vQ+H~iUi{#6!xKM1%k(4a=Dzr5&16W$YscB+ zhUOWoK7A<(bAsag*W-=6Qx;Ga9|TS54w?*-)~~%LFf;+88&(F5sjAsitB?ruRL)9)J1;c=d3T?Z0NZecD>)T#xExs(9BBT~KWLJXeJ(FQLLj)O+vVeU{ z3aagtAWGm7={k~wW{y1?I380mF7`QEs=5Dr8iwpWa&95>8D?bw4n(CO1XqhU^V13) z>)SuoY%^+EQ{9OpAAKrW&J}ElSZQrY?YGgedn}zz6Gq!UQM*l_%iq;%e5Mr>h(Ekl zXAw^R4U$M^)5h@$YF)B}BhSaV?#I#=hjh1giRK;9>C{p5l`1cEhduMqx9KVIWo5gS zAvWQh%dLsRW8tfF&Zs*Zfsi8%<`gE4x8DL=58}sdCL-$8Q@gv#9&Y5ty_%n#>I(RO zYu^08VDQQ)+aZ3%9M`#jnlBO+^6lwf6JXNu_n8RDD<-A1@}p4&ZpIIuJx*8qhOHWX ztDO+XI8XlO3hH|W!G3|_OIay?Wp0bjMoQqN+#nO=ej3br=&QktJ^B*VaMaJpA{Aa&1dmNS%_FouXU(R^e6u-vG`6a>ExSd9koVvJ2_97@B z^Mg|}8y4sK%~!EAFsEPRBF5o!VUa?Lvz#GrjT#0-#Lp9|iDbd~8L3lzD=@LXf0Dy812?%+i?)^%U%nK^ zeLL@YPHwC9`wfDuOfJ6mGwFap>102Tr_g#t6q*r0XpFeb1NEmlzlxt%( z#Nv-wXmEvk?d@nnT4CCWT*x2=a?q?)(i=V7By#h@_bn%L+pO0~0}O0p0)OvE zUQGS1{nA@eA#481PhcN44*k1oDXCv|hN;(gQA*6f(V<>B?{7r{w7ad)DCx9|%&8@F z*t=S?D&VC-1kgdD^RG=#-G{~xVTJBNOAj+kfDhc#lWtI17b@2RISVG4?7~0Qj{`JQ zjfg}h`u)RY!KH5$)CV@se;l(l_sZY_T_;w zVOEv<768aDBdMam3XTzp#|#lwB6QZvEE=CE(`B{U!3KIT3&<5n$pyYG7v2YBQMxxF zL*Tctm3Qm`-w^)@`fY!v+!mDBQ0#mIWOnTZNrJkb)#oDSU6y7)c)G;F-=+#E=@#QJ zrZ|cM`4zT=`a|Gm;q|eTp-*6%fyQdF#dFY%q>{kBQ8PgjpkLO#0l=ZgfANvLQ%tb( z_jZpLXgP>B4Iqng=B^xIetWaykz zctLwAmWvuEWZ>FRdiVLzZMo@YToOqD_JstnR7}wF3xZH{mCY;}7{pinOPw0w(=blA zzo&Exau9sg$B(7|&14=7Zwf1M9MO2UW_B%JvRh{i5|}n7Pe_0}9cwad9QMUb$HpPd zeVbzEzV)n#=0fq@kkV3rnhy-Nu*q4IG@CcyCH+BS8yqIi&{n9QO0}mW+CsuRmL}X! z=}e-mz%^sZ#8tbsub%^Z7EuHVOX}`}IBT_EGXJih?>*1xxSu~ru8nmh#47SXN~?Ik zWNd_Q`H#y!MrY_O6h_RB3a%LN29efu~0sL!cH4a3gFoLS)X; z*tHDeM%_Ad_v~6+X!t+!d-VSd{CHo;xlxa8*4dg5E-A@FnkB-j@MpLhj%`_LA6tOu}O&un{uP3(McNIcZ}c zS1Yk<%06;Et{>L(5DvdZee|0Bt~vBoD1#?sto0xAmOC5x@fW&RF;j+shTiC+5@8p5 zUw@}=EtB`jou$2xoB&%-f4;b;gJEUBMoVIh-|=s_QTq|I(#7^)z9}>x`{G-gI&Im` z-xFLYbEAR5lCNX4Eg5(eq5-&qjE2%*un`8E+H;)g8vmrW-hMvVIOa4rw0bH^u;&`) z?iyI#PvhqN<$F%Y%^0%Hl@urPk2sP2TuwiO&+e&-fNO?C{18>Ki$?syZJn3#169e| zeXr}2fbXTi3Zit!0*fZYv#&Hq{B>m>vgWq)@^Z@ffWicXFm+Z}+Fq&4{t4$cXWgi> zvhQBk_w7WXQ7=TgdMUvk0XQ1tLvTmSFzXJE2dz=4|faoxQZ?lXK~m?S6@ zMgVlvLCshv%l!lk>Ds+Vip4d^U)L6`Y}og*vs|d`Xqaz(F0D(r4jOR_nzxE$-X1sq}0T&@b5^w zM{?XaFS#|;_MkOrad34a`DsotOWAiyz!1B~)I42rOO50=6|%w%nBZ#ZiITAJT(CF( zWI@kH6X33Ge;2UW%0k{jp;AxwF51_0BlL`7__KAPBC_(r>9H};1vPnzyE0P6^P5hd zx_vK-P)dPQElV4MhWoeFR*vCbOnF9Bxs+EU&n(?6_3LEEEx1fUmW2i2S2b*ke$-*` zGS=>KS&%UDJ(Hn&RtZK){@H&vve} z3)PmG!|{za`+j~E9q`EO>!r6)YxFNbmxOYYE18Urm2Fi4s%kYjyU84t!GEC8zfVP5 zyk9=4w?mN&?wgE;?PI^o1*_S_{2+e;^fOha&VFk?qMixAbiAgU&mOB58->pr4l{(P zAZJOh1!GwK2Xe*dM&Bz=)Q&orCz5bBwfPs|5P2v^aG8IcvMJ~R;T=5B^T^k4eA`QQ#(P~5` zRb9<^+e4)qwBITI@{J6nXydHas_@$E=Qi-5REV(jh1RtwQ&7aA2*Y$5s5Ha9RPmAD zlmy#E_Xu;V*?XpzIiCoGw*8on^ONlZ(mF|m0o-21~{TOd#E zLkdr65;0cYjuwKmmpjHD5_@o_hx_eKZDtwAmOU#s=6G9ULiQR4ryrWc^*Cu0%YHKy zhtZ1gdH+!#Y_3^p^VuGe2jNpTt+YHdP3Z_)f*fFfbfi(yjC)JlmE;}$rHAHQ2mfW! zYIIKgyPSKskoW@9fM&C)0R7|@p^X?cPmMOTxtzGRewvVr;UFbAe`!}ZwPbG5OwWaq|WXfL#w73d9sdQbKwv$b=dMG z-?sl78+K&@Nc~UJFrN^kuz2cdfe@`&z#>o!wKQczX0b)7dRc4%2qBSw!!a83g35xq zy6RlnawAPp@O$+!piU;LEe58?qjaY{{tR>&4UYo<^oKOHk6ib_So3!4SLwAvCLU~-=~5^MI2+QP zP-vRSW9tjg&rxGC3pzLC`|eWG77TVoiA-zSuQlN-<%tHX9@)tsbvnQGeL`nR<{OXF z&4GVMGoDwMMBrj87%>(zK_TxpslEHVBOF6_zAJ;k<5>tYJui_v*K79~S>(O;93J5# z6oZEmOn9sbcVX0hYwYr8OwST3AY*Wq3KND3b)Cv(UFctl%6lfP4)XBEz2A~)=VoH~ zBAW-7D#|G=2V4{A#Q;1Cp629T5dwJ>cp!^~V`r&g=;OA{g7oQHBT#Qe7Q^44yu5Y> zKm%PwAN5nncu0fbQ3AqCCWr`q&PLA3kwxI6fV`e-$QD!^Ukk1vc672VczSK^P1*RB zj&G?-nmtoEr~n)rD166g5MYJMLKH(BxBZ4yER|z<)1E53C^nk&sK!^kM{rE2#usv2 z;7Zv1fHiUoZff_s zM?=#C=dG#=Iu!1y`~1;y5$*~yCYI-1D&mcz04em7fFn~L6QG>b4UP}BTr4#fnJyyW zV>kdUd0!-82_Qp*czso zFb5T&+!b9{jXZ_89WC;Qt1^vlRmnZ-oY?D*S(W6VwGdYw<%MQ$8h@H7iGx`d6L>na zh#i&9oB`SoazNWvW`f5Ln9N+HbUi&}1Pg{j16MaW7yO#*kChMN*Q%Vlt3z*kD$uJX>Xe3rJzFc|?kzJP#Ab{%C`agvlc#VmW!Tf+BT9O#XX> z;J7`yMQtqwUcqCGDJt-#QY-}!>&j! zUCii_vm|vYZf+H!#okt0#>7vrtsS?EIw~ZC5(LF!6K$2zEd{#J>J=jS3RX}zkNsb` zk;`dFctJTvDRm`tZ7F0}ksv_H4>7lIA9+{002VyyPwsy~hZz^h&_=GWg&~fQ@Zmt< zWVNARH8DA7Io5cLI|=V?)G0@JzPhblQO7orYdW;WRAb{^;S!k?d-3LJsCJ%7RPLnf zTzr^zOJ2~<-Pcy;9?``CgQZJFt*$n=Nwg&${p(x)M4Jy!7+wZ`|B06@?PXK`Uf$$Tx0dr&hqa6s(kX5?k^@LqWuWFQ3qi1WB8Qx8c7 zA{8BMrPeDX4^{c(AlNycniAeAS=2qLWHngN^PE^jbnNUOODu_zYvF_v2gj`c-iViX zqpJ}c^j-ta2{aWSZUQ*?+aKsaVdJ5*d4c>y%p`yL$TVJ{!zxIXYTR zPf6LuHdcM4iIwyjOBZwKT57&zUvEKly5DaBhN=%gta5k!Sts$-ssi^94KDQL1Geh( z>s>{pRq5WK*!nU8;DB4LKEZuXQKakWdpM+y6v=AY9#La+Fuxj|xrQ^X zU@KjHT!_r(t)MAN961P>EIO;@8fE$iMQltbeDrRU!_&LASlmK+fo&Im#3xGCNd>Vi znr_9!P9Dz_<5cj2u`ZNKi~_K4h?ebw*urXMr)$R;JXOX!u>v@$>0%$`Ho?{}hupDV zms2SdzV)U6&0^627fDuE{kHbM3OR&P$Jal>-^BAs7 zfXD4hrv?m+8Le-qF;cl3w)|4**k|yX80_29ckHthRVFd+OqSB&ZTEdddY~e+wA=Fmi^14w|m-%VSeY^vj23Jpvt(zSJ14#5jm>M8oFuR zv^eL;asGa8H24+X4=2BnL!XU5cH|dVTv^7*iN@k3kIbLdTT8bjerG(Ca+C9C!5v|6 zk`L@Y`thQZ>+&G3EI7acqr6ynk<@Z|mhW@cT>q7CbD${jp6zcg)l-=SyUoZt1j|XH zjudLeMVWofC7l!x~|33DruI$=x>PO9*Q|kuR@o8H9+ntq9!a3~y`<#qE z+Vyzw?_|2#&dk(iZ<>VvSq9b?{Op?>mXOQre9G)M)65K4NbAU$$4>FR);UXZ<3zJY z&Zb;v*;uhV=yC%-GI0oSJm@4gjOp4$=@f zSebIll3@nP+Wut6AE(+t7|gp4Le{06SsO25Lb}+h%=ChZ6*9WryhqlKiSxRm<=)C! zcO^Qh+h}P!>WT}Jz?oH-U%YHi%jqMSK4OlZZ^p^iHRCs8`(ly?i~w6HhT57cafAb( z_SYMt^}L;R``KNycYcEAi4SpPN@UIJ9ZQmCGi&M>F*)k@jXu6pWaB*!*&RamNq3Xb z04JA-cl>6ngGj-wKP$_th1r_vTIVkveB=Fe^CN9BV7sn4IJeNR zTcZH12Eb9^43|cB&?@l)g|lo=_HlL!2FK~9?M3cu8oUUg=WDq9_I=$<)Kl}1$Q7gLq`X1q6^u;$q&n;v;0RjiSNwy)DL1G_%+r;AWj zQ{d^ym}Dw-eQR{D{km|`?fH|YwD%oTshZ;xEA-sbw%ISUxHr5xj@{=sL&imwtoc`N zlvd*4w>~`@vyfWBcnZbu0-`TasJ_>3j|?UOl%6@&m+W%Q7Ta{>d#WS%TA1L2LIFA! zwX+}s#_oUOYwZqrDUCSP`#+M-GoJ1D@8WIMC{=22ZK=IVP+RR4L2NZ@CR7!%S4-`^ z31TL()m}AQsT__cD*J`V$>Xp zi5>u?2sw8Fv5S4DH*dU@egfj3p=*x?_MjXk#J^cV6TD3K?;X*6nc(a?JBcV6tIAzY~#x`K1*#mIB9f=btL;${j?xJ<}p92yU{fC)OU zEMj0&b_$!nzHVs$H8Xf8Mywc(9QpTcR1NT3vOC7eVWNd?K>~Y?c^^&v7;A-Y&@&g*(WULINVBDIu+SEt4&WVI{iuqKfZq~M6Zy{OAxQvf98vV3#< zvZFKbp0)_`9Dn>m^yT>*?I(}X=$-xiT9fe4>l~*qweA_orgQJ^o4w-E)zU#1@o$Y@ zj-PmBcKyq~74lJfMmEK#qLFal%--#n!jHlA^X{D*5tuQuh(|SAPUAv9>gmN_-9)X@ zq@zzmLBC^zizKPD&-l;)#4!1fmX!R{Y^NKv>_z5YRb%xQhpbx}oN zg67U7c;WiN?SB zQ4wLN3oUBwg10v=4~1~A^`H#&+K!%RShInp z15SQ_6uiTuJ0SDPA)LsJJJ-12QVSePKHRZL?IqBJ_sFr3r|RqSccF2=9`3MAoD5*2 zQKq%?HBKFm;BXTB1XyKc@8Fo7d$9n|bE`^s%18= z@{Rz2;V371+LM9afK^;A<`|*QC=GhEf4nOjgu+QX{bbp-OlHk=23${k<83-TZvECm zyoh{I?E=N28oZ-I^?Y{{9-B1hhPKUnI~DKIoSsBs?>$~x(Jfk>m~Y)m_)_c965#Lu zEgBV`7hmyl!mIE<27=_I63>L#J=zfIK#O}0m9q>oyGHpx8jEqv2#}CWU0EKnrbjg zm7~ke!B2(gxwN3b&QRfaLtVq;2srbROF&7p?83EMQfE|E>SaP}Zi&S3{fzB_hQKHJ z3g6OM%Xa@&E1=6pbp-bkYhjCIZbuaG!I>%3Yq}9UfUa1L= zEdhrm9y70B%W>f&(s;#Y9)IE@fC%Axzm`agifmIBP8;Sf_p(PIYLEMb?@MU(a%w4E z{LK8RWkIQGa;5aW#E?uTMlo%3bZ1t+iA)z7&ETT_t{t=ffSV1bqThlYjX}&h@c$Dm zNvLljkbd#Nx0_m+5^Km_G&I4R!rPl1r=T*M*tEtLT)Ngds{0cfWa(Mc#bDO+*ys&y zX{V;2%ivo8K(m&1*Afgm4Qbs}FMX5~_x75$*?hgJRwLtS^K|$fOB$Xcl%V2(iAL6} z7AI;pizW`^6KB)sPSf2l>=jf&DC;QnEmN8><-L=qNw9IDem0o-Xtx2fWSsN!X7gS9 zoU3*JXwx`n{YmQ+)9;a+Z0_ZDqx!`&u~W(qkxv%`2`bgpt65&}=4LJ@s=2@TbG_ie zw9=X7_w-Xio~_2S$Bu-yQ_rkh$2lLyB|my~#LMI|z!P^q=?$`SORt*1h2&V8{mn)R zJ_>?Yzm%?rjd3<&+6919ZsX=c?_Q}ckX>*(d=i41`!S8aCk3XO9CY_$eW()2RQ-yS zu+JjVY?*t0vp@HDYU}>sSn_UJfF@nnvcR1z5I~$mVB3n-Ye&AE_?fWA3Lp7*>1iI? zG^7%^^Z){dKccwVHiOSu1V*-S92J5v+=?)#E()Dz7P`+H>BeHFzz0GZw&F-1_d$OH%#M6d5jrvl^r4ti2iBL9=}BL(>KF+xr$V zpqSZ9TD7MuBr*{=4ie#*u3a0I4ZXdkG861le@7Q}2KMa{>v^9&cb;*2ia{@lMT+;0H%TY{F0d zm9aVANT^tznLp)KQjm#t+Tv=-#B?aqy>b&eD4X6O;guWdB=!kCZGq?|%s_t!2460Z zdo~6i75^}Sv?Z*$(ZzRZV6%~|WQ*f4=djt?4?%X^G`n=lL=AH!E_BVsa_pNYNlR(4 zsBs8W;g>yefj)TNPoN0fil`9aHIL7oBb!&REXxVf@>@M$>wC$*=u*QNQ3PMhPKysb z)P|yP+`gM~Cu(vM#X}fcpt}Y5sH+%vX<1X(LkU>78pLp}tL}xOUSeU2hQLjPsefAs zEa>+Bk%F}5e`QxYO{v#1GP+JqgCI;PMGZmOr0OG#u`c^xF4}L@;p&Ko(*x`z-^tD ziUlt|68YnpLNV~-qDeKg!!+-hA$~e)9%kh{z1B{)G*&r(4f2{5dGb`V81$N1degw= zQt!AMn*gE7_}gQMpD8Y6qleehb5EUFb_58`j=o_Vcw(mJ7-94%Z?b>xGKWBEtYO`x zrcQ4^<>b;v_wc0ZV3SOCd0}>si&IdR@o%H?h7v?g^D3hB<2e7FannJFbk+<+YwWSm z$Lqg$?oTMPElbYl81tRWmq&&zA>u08{$iZ9G=BbUdZJ9)P$z$H zpWxK=hYNcnT`{O!AwKb_{CK4Jx)J=(Dml<>@{_lkNAvAqoAwv^6vKXpbR-inFZ=8( zRCxGJ&}7JW@H1RDV=Z9Q|NBp4nItYmbzUv;r!>D!d`cG!Tf>=PGf-y#aSgnt0ElW9 z%f<2pB022wztgM70f$mOcc!HIMLJBg3b1bh)RqSIKZz~rzQwe|Eg*yRcLl;;BE6rn zmaQ@a-6N%n)Di?23F)Jd+xF6s!B$N`o_FAG+xVn`LoN}+i}@rw2^r^{o35lbYQh2|vwWrYGN(+A^jLMD7M#{up>dxqb zAHO(yDwz?rD-?1iV^51<(`>snI9J5Zg#ToHAN+Oxs9_r2oba%GLtkuRlkWD$}@XW?)+#o_dsX%*Mk(~q063h<*ze=rTARb zH|#B-k8`QDxhZ&@+j91()A`Rb_nA06(Ua$l7M($|UbM|m6Q zxOY*V6ENxalN5zzR zSzi*y8y746ZfUZ3N4YFXpC$Q3n6;@Iw-01KPR-;O3uWNd^teSNq#d;ne)n|zIb+r@ zZO-Nfsy4g);yR>TK8yXH$xH&G)#ZlU<^WPbsXENx?(U@m z()G!mj@6~9dz1}U1>pSC z?3v%fx?{5Na?gmxso|qQ&y^AuUP~DO>#gPWm7abDhr5&5*nV&ZYX5;i-pbd- zv+KWe0)hb58DsCLCNfhS5=Qb#2Fj}xls2OG5jF5TVaL(F)4%Ipu0EmX1P{G7W6&`z z?tgGaUFABg8K^-_(HF_&%QOhQnQx|vg3csMBc1CY$;=tDIn!ZEH)^)oy8Uif%74rt zAMH74uD-|I|0mIWJ*7>|;QjsW0n7-_>WDfP-#sht+c(?90)!y5d|*{5-G{npWqV?@HW#jmy%nH5?GX`OV z)6tp4tP~6yLYPXQRdG6GIQnt!NKBvZ7&))vG&B-(mK<<8hQjXG>;Ts8DM#+JpJ3zj zEzl4@3M&b54w<7~r6Np67oPmWS1I{U7eaL@VJ7u}Ca~pN(YLH;4qfGPE=X^{{bPb3 zZ?<0e52sHo3?DpH4jG+zadaHualhj6G-OZ~S?5%Q^To_@>w!EHKO!eSwC7y=t6$Xu zPI69Cv(clZg9fiBX!P0lsv)xx=_x`YYQ;2qjB@XR;GBhUybs~_p4pjX@_#P)9q<3f zGkrDovsYb9w0BkeI2ZC1uqQh>%{VTjkLm(1A&02mf&r~c2p{hh6J+Loslo?hkFPsJ59YPom8BD z#dp#g#YIxHA%ApITFJTN3QUz3#7mHM$6aL~3Rjb-Dl#lhu1Qb0u9E$!Tg=I-%wwED z8mb%gUtJDr(R7`S+~KpcnN%A89+`VvIg?E3QC+`!VewCLGz0yO~XByd4r?gL(Ei`5!J{3Ea&z-Xk=zLz#O8y%Tr zN?J@j8aO{;NZjKBmv_L0yaJ2hbMN)0gK_QuJ{_>>R>^c*AVh%{Pm5@J&+oe& zvp~!rr}f&wJ!tT)%53XX5R)#kzK8Kv{WIOrjDaw?$8d5i9k*bH(EU8|g9gWvUW^u2 z?6ZiNV13K}aSDnbM3Dv9cA^%WEZTG?4?u0|`GPRJ?OinkrJoE&(;e2c?Ymj3$zt6xwN$X#WJpcIqmh z^`fIiOKMM+?3SE@1kn@eyh7wZcT`z+o;SSu%JSdmMfo`8U`e2YhkBrDR{Z-{kjrzG z$jpIeS=Vp8^$j)>BL}Ih&yC%N!L;cee>v;GNiJg(WELX|Bj_dDL4c=`9jA~{H zL~Q}Y{j~6X9XoHo2r4|o{fhS0LbnI@=e)FV$RGvM>a$NAC!l9KSm zYUf{U*9duU+-*(>dOFVmpB@$+*pO6d?qewzTDaloJ}rq++9qrI^ezV{L2!_clF>`jVE1M7aU_}jUivL z6brNpt7UJrj}8@OPTtC@#*EK!r+9qDJo}Tx4QE@PA3tU>g2vb@B7_dEDL(s%Oa2$P zjZMMF<{}7+I={zI)P#`jys357OLz2&-BoG=2J&NoDl=cy$L$)9qKEBdzFV^qcM!E5G8gui_?e zTCEmz<|)nPeb*~|l1Q9rhUla6ENsKS_B-#%^Zc$Km?3Jgr=&cGP`ym16bnwy1R*+i zPZG)Qki>(Y-)kRxgUE?jN}QsKcFq1ARFy(FzTBjGPz&HnnX?P};waaAX4RMjp`HI3 zJT~0`p>lHEe4vvV&Gi7RSNrw;4~@!8YOXUPFtp(5n(j_kZHc<{&=L4ijoH5kpg?4~ z7LkwD;njugUOnK%&$*kKO;hbP@!JGa=_B&;Mwgr{N~0%QMRh!TI(hFI>tTgua>YC# z+^Yoq@;U>50SZyU7JI^|Kz^%G6|9VoWwXTk1Pl7S=B*EwEKj>orY^*HANWgoMPPyo_ zt|Hu6Bc|av8~7zXPg{(;1t3RM*)^?^LY&TP?s>a{cNyagkHkTCMF?%Wa0&8VPC$f+ zb~FAmNNP zI#35VAu(-p?{MvEicDGgzI@8;xFttL z4>k57O$V5FB}A`|2Vl3n@+62!iF0wig_Qw7g=Cd zr=9mUJ+#1X2}>!kxwyRD#IB-+RoroJw>RPsy&Myhs-mVSM7kcJY@Fc_H&%*pVcZ23S~b zt7|AH0sfE-@-61A_jD*5r;!6H7xmJD*zW?l>x!bVg_S>bCoj%MF+6LDcksUA*_Y-`i3Hq@*8dHF1!^dbz>wpBg41{2jrQfb^P6)9SWe?%tp!>4OtRYJAHN+M6*)2e@!qKJsrd!gR-kA5I#l7Vt9)@0#zBPv@SHd$dM}%!IwGZ> zkR3lS*or^}eX5z5$-5!V5wk+6z1$@v*;>= z@(5*mrfg~!!@zk-vUd~i~ zR`0s8O<6+;7{P-v@wT`floC^|&-6uT`qd~vkivIGo!{UjTF0GtW0DEzfMW&q-3=#Lu?hO4tv#j{w#{am{!>qO4%3|3uo6*FP4uQL-qKWM~YGGaw?EIQGEj&R*N) zZYCDg<`qjhStSA*{mh#R?4T7}9=7JXv;jNeqfej}#~Eunf;K^lTPeL6_a(WHHB-&a zvTVwZFfA<=6O)E0%d&pQ-8VxZP#D_#9n%|9LvTMo?dn1*0wNs|cNTaFnmCR|d-H7i zlw8gsrYo%z;(Sj1whkK>_+bJ&kXb3r{**GLoE=<17ZQUu6E7H?!X(yq;$Dh%*sTjK zw+(^LCRQG41=ueT40CM;0928@Zy}rPhhXtUDdnj@mmo;n`g&gGjTu~svuX)&-cAHa zan5aa>EQ7E>)tx6Ei&?aC{=Wr-Wa|cWj?0Kxwhx|nnV6Mb?Vy<_NOEOlmCdUbN@47 z2vXXt-zuCxsb)?R2Ff^by*YczCGkQDqXe7#te>n;a~1ut)DlT2yeidxuqMI2n&Mj@ z(eh(dv;Y%XtknEm;_X}4w~X)|kFdXt5~Js(HXUBugB*uHr0BQbC6q2$@pArng0L^J z@s^gDu!4Q?)*C3oGp}6@H;Ux=q?r2QTxHDB-3vv>2JxNCdp%Z94@R8wgn*t1rzTRoRVt}av~ ze6vF zo3P-T>@Vy2q{3=(u>W^R>sKk@q&w+R6ieQQR)r^2cEtFnqaP4^+XIFL5LG9n^~v@M zhLeDd!WJiBfDI7G9v%$ya*}==cAD4o?LI&pXk5%2TrF7buBJ59B^7zJ>+REGf-0MU zn%C7GYmKNXVxv+&2#8zdq_=&Rn%Ayy$+$#E{jkclquj)VBNw`u;?N`V;_bcho-sJ` zU#)x&@Ve)ZV`6;QSDtDUBj61jPphbm@MchapJYT?uWH8TgWdHhUbPeY&kg>}lBd_f zlj$Ur{{jIF9S+}4-bH<`z5ALONKT`F^4Y2U+qfJ9OX%{|w&BTT0xEB~KK^7OLKl0+ za8)9`3QZWmzF=t?Z?Ly`;lz7Fi;xd!e0RQ7dn^Zk22v0$GU>{GsG|rD16YEdsW&}B zX2gc4WtwZ$@%8<4rAR0T0A($qvzsN+sHYQ#rXL#1l)$cL>o$8^s#7GI-Nd1OEuEGp*&gC;La2=yC+?grqKbSbhxIMM z)R=#*|H)Sk$KWjs1mf;rDbU`JHjLr5ZY380$m{cRT@`LMjlTBU)eYZ$`2IWA>Cs6o zVCswGtoj=u03j74tsJj}^#HAwCEu3PisB8ImBx8OvaC?Jhr(1K!csNslVK(cpl>KHI=A#I>rIX@j*!3+1HbnEeRbuRDE2h6n7BEi`rN0nLDJo zRcXx(U@MK(Pw^;C^(si2IG2Y7eL3AHp{?$yOAJMBb4VoLc8)M!ICH^Y>TbKCpM_YT zzM7vVawp)x55&yC~+R@-??}*EQQs@KY~wvZ%kr>X9NN9 zF-+qxIPz<_$W9hAMyXA*QLTb=FDyLYF2thbpk$y0+m?)M>6rW@n#synGx9oqF#>`{ zXSPtGj@9=n;G;TQ;#d0_+0&r)Ah^GBzq?Tb;=%(y8X;bcqxF@X3`OC!#}7K->Sb17 zemrW78GklDp-{zwv6Ip2{_BOu$t^l*yb(4QDX@Mpep~-bq_Lwt;K`Sa6F$e`2Pq}Y z@KIm$u{V|0l?fE8)uPNTH2QKhxv0H`TxE3q$jx2EnmYJGq*k1+PX=2fq z+nIR%>4+fJJH3b=C@gAAV^0{fYTu`ChC81aVQNC3Tlo$-sPwTbYw&q7P_ipve)|;f4vvy_StDl`jW;>3VXww z_R{eM5dDP{u~wlSH`{7xp7*BAFLnld{H*-qoA;hY&D1V-T7J_yH@u+=T5f`tM2meH zcKnxsQjxie&Cm6>%#jEdVdULwNdgo0nh0I$McYNhmb->WSG>+l^J+Z#6*_5bf_{gH z+rz>d4ajY4B%4ag{uzqB!F}Wh2affVu1>YV?jFAYJ6wT2AL|OTT%E@rnXV5H3$F!1 zf#5SXpfU*idgiD+26AZ#2x9pYAcQsaC~D$H;n*1ngm?b4PR4rtxBcgU2;u+G@_bfz zChXhuqz>|%X5JbTCWD&h`g82eCAsf&64y$>NJu&dmyK6rXIV{XY6^ew{#ZU1v(?>@ zwfVQIM7wR|3&_iOf_pOI`R5X*Ki6ov8;SEUX=~0i`(Ds7#Htg3;Zn_inGOT>B;}LP z!>@TkBtJ!!5%7LG@2x9BDVD`g|XCOV2 zPyfPP*^Z?S8Bwe``3k1{2Tv+L`jkEa)&wyv#q$??gfc=7J0A`BjgQ`IpOs!BeXeDz z6vg|%&Sgf^rPby9cLCS^RrQ=Bdh@-3>D}4c%kmmq)f$hC_Q&^mk1hS8p?w`^J$v%& z!6B-7oqw;7NpqeICXc36jCs)B-kT;|%~OgWU>MrujxGF`%oJ5R9ARr9%0ztDz+I?z zVEL}ONPC1=_wJuZ53;S4CVq~p<&;pvm0CS`J1AvBieknX@iu&CD^xZh;}KvX6JU7+ z$in?apj=WqAx?`}03fX54f~^UAu79E|5U7Dp7a%+NZzT*yUKa{p`Q_vO$Bny?n?!m z=m|;JSzlT$)17C5y#FdWtPRd>+7o(Ee$p7PKCBebM0Vr{x~^fp3faQyfN9sh{seC}*t1DFQwXh)|Tnh^}RQ&D+xy+6vRd3bO zS?eaBh=9b^TP8XGdUm<}ZQ1V2K@<+G+2{TST1?OF?6f+d-vc(Bf)+zp%O>sMn^Ltj zeJ)tDL>ELtBc9ZK;n4+0rtT>b!Tqrfkp#!dOpMmc^v8Hsc)$L4GLtu~sRz^HDXkKp0ECX?gTzE=mHFKMv?p=jAp**%{%psj6o$ zgBU9DBsZi=;YUFyok-1#tDEvfMt0DgDcq*(<@6tmCO=_yPOsF;Tge1c46^zN`X$zdYP-%y{Jc zgZ?UZGk=eaXCV@o9`%0y*1%l>O*2_J2G9MXjMwDmd zI;Rp@I7c?Z{;P&w9^$0;&!l4jU&-zIK>yKUN3()?u*nm9&wsyJ!`cyZ-Rnoe85!vr z7~U$wr}<-!gB2+h6xEJu3vStYw3A7f%V#|>pAz*|4=G!*2R>;IT>{su^cAE6rZW6? zj^EX-rdDcA@($ua_IaAPEQTcfS99>B>Kcj^N=qskm;U|uG(g^52E>Vi{)miI{iLP` zhpT|&3~US!eQ;?Q-G|%10|j5sLN*T#lTSX2ema4c<15#2xgl_r0h?+_3M$0?v?Jw9 z_K%7(SZ^G9P)7;l0D8ky9F7U&sn?Z05uA>Rln9&hfAp#b*Z{z$`jZcS3r_o+#+H5o zNAZ}qJEHfNO`y(x(rW<#!HmC+B=TJlzRJVO*S!TILc{4OgM(BT)lD@Xi0x}+ZF%ZL3=%3&BkSDy=SE97M+8s}Gp8N1c9h{#Z z>{rhdvhEsNb(1)`vs(>e0$z|jq_{X8u7l-br-fbEbEhg^%guhH1oanGJv z4>xt_+k_d4RAl-_Xi(aKW*d6x{&aj0h>5w?3$Kq#^oS*9@$J<&kNM-B*bED$gok?C zb)@O4ds{bkT!keMTRFJF^r`vq>_-bVF+T=}_d(qY4}yN}cGF3=xK?)b{CS0wZ6bfG zu3UlhYctLv4|CKkd*<}e9&`a6L=+wMsFkwUC3jqKHpt|Gta3wq&Zc(c6O8_=l-4F z^ukXaEyhsm5WfZX>g6obtWOVZr>GnWXK@7_x%xHx-|0G1K0}6YYQlA^udA75fMUv? zAGHiPwj$S}Xy%nJvT>VF*6=z3g{+O+C>yvZ5$E3r27+4(csbXW=&#ljc0i`(VcxVi zT}`I^$L}!i5fRipE}+`gwDR=13=^%X!GdG$K4GzQO-D76O;@t4i4k_h6z?E%6a` z?w&UIsE*b0802zU-1PwKR3@igI)CyBc|{W6i+O$e#EgklI~!H0iwV@VbebRp(mq}E zvNQko{4<|c*|rw_g?xL7N}~-F`y6<5ll})(6`G9}%d9pXq5-tF6_owJHpB*NVB2M{ zO#oBV!LEKy(dpg+UsT~pX-spuvch6TG zSrFgOBbeJ=2K?X@x_LB-!sP~aY_Yyz1KPzOBdi~6jKda|2lU_lAo|cXgW*3~?7x%( zb*X@_+9&WxS?0PR6z`rknRcX-1Tec)I1%+1JNe74V@su0vhOm;qz<6dir@tHI6{$i zJ(yF+?0-ZhTzsdFffh|X$2OURDunn9rp4Yc-a?-a5ZogKLHs)$+tJ(KPS`QWhs6xa zYG<5w=AQ@Z%he~sIgj8Jl=Xa`mCQtb{mdIO{B^;0Jyh8b zjOUmEfVISI6EpeG|AHR;T444+$O_s2gsaEwa|^c-L+qLw4BSCAygqQv&)sSy399ja zt%@0hbEKy4fA=t#D+ae#+UHbqPgS!dg9hceb0$T_6O55HJSMbzM0XQ>LDehSPjDro z=+>gq@>ra`zxVfpl0K)Dkup0f$myO9U;cLMIIEiI@gc*z8s04KaG=y@s1{z%I5#eRt=s5m**y`%Z@$GUlS z^1X!#Zb4@4+@JpLf%5uu&Evbsi2T=yCP+g`YkV0P%OpJZc7-(KCl@V@c(j-LkD*g- z`lCXA+o#JtMypgsdJlwJzUJRNRLwM574k8dK~-!`9yd|%{D#KY#E*~*=(uOU{9(G8 zd=JUXX-CY_F9PCtK+e6X4EIJEzzwP(ZQ6Qj->IIs)1)DYx6TkKCXnCn8qL9v2QI5d z@J*GGJU#&MDfvC1%%6;7MTWG;GLlBbaT~Gagwl>O+u5yP`B2AK(9L9!Q;pfvl9!(N z0xe&8RtM1=2~%?jT#|fp!V})KP<~wn86?oV_f77ludd?G!DMB|u!2>y3_uVA<*RZS zG0Vb})S^n_QDLRgNTK>;jW)zMO|7VvMg1gO%@u|4$SbS^%!@b%;A%L^NvMP=*?y^l zJ;(9yP+99uu5BN4i+dUtZ619w94Nr%C^EVH6IzOGULg1}jI~S&)_BKPHDd`MRoS7W zg*tm^aKJJ5kI3QA5WD9=^Zv_`&YYi-@L1P_zoCVGyz(|o9UsT7W?%U9s*{zUAaoeZ zu{7$cPEaWsi#L9msJ}Yo;ielkoGtIjC^n}~I|ZH4>`LHxG^`_CAsa;nGBSCb5s{qj zkPy^75$6;p{8y8{EHnFfcZC-2JdJyZFV$HWKf1ASot?YM0pyKh zAiob-Jgo9u;I?G*#mA@r(okI~c^>N8>m7k=&*9akOp5kUVVpV&_c%dM47>=p^D0*u^o`Z`PQ}2v%dcw?er4ky{Fxw>V!Gil1~38wz@DO zzZF@Mbbsp5r7l>vSPq2!xgYpg7BdZKLyD**`hzg6Un~8d*1u>z{#Za9CpVOzT4;gc z*c8ei91rc1cUb6$BYE=mK<`*B2>9?n*9^ff> zH9iEa)>ZB8K5_VD8su!Gbw6`-O-d%8u)>6YfNE@=TlXg1(ZT80xO=^j<`*9!I~^7x zLK01edOYvMK;|&NEx;a`Acjjn<~HsqKRsn0DwV z9h38Zi36^N`=Vs{xORB}WbNzhzPo^4Ch-if_tC^pl}WwfLlq7xQAUKugs&` zaag{FRLJv=TO;p2#kQIiau<5QbHqCjueQ3sPn9FKjL2`%t!H1%W-bXTz-I=Z^7J{<@}Dc_qcvF^BxWBL3#$XcdUM*UShOg!2*RwV@>?!b^ySRmMy`h5ZD)BCK%0=XeHAMO6kgP383${OT%7oO+Sl*@waOD(mFJG2x^H|F{6^BQhSX+q_+)k})qt^0AcYM_%Ybx+_8`1sMT6c>h{n zuzB~Q`tZq~H#FY560V zM_Tn%JX4`<3!`&VP57uoO3_ZSajvnS?A<%Df#ChZ1`ZZvU(vi$rNU^538i#-uNkfI z#j{~);duUWnD>dx-u`?6?i+aMBL+8|-tFfTNx!@oztDx>3TWOg4f)BluDA3b# zQ*(8py9)F)Lm}=Pm6`~$oV9ZY=wKg0;YTzxd&^#ENFhH_QoE zu8H^;xM2nQkf!fwty+W z$`o022ClD}Il@Y3sm{!_e5Q)ZnD#&WiV;fI*~k&fljk92P0pZgCU*rgJm8Dro8M;_ zI(IRK?&O8gFNHWZZ2|}00I}x)2a`kf+*-->B3Ii3imD9Z_5Tik(J5d5JN&7o!j^7> zO!^2OkJRSjU`JyOt$@cLL3IKlbKPY0A6f{4zdk3y5Z82cuB^ctv87_s(QNfqzYKHrcc<_OJK8TT!*nAOdr}9Ac*SSI8d|hxM z$hoZ8{hBZ3Vdam2wMZud%NaPMyyZ`3j9BF!3jI4~-D-N9vniYsSwRtyravk=BYU|j z=ke=EKZvu98%0YrMgB!1Oi($Jr(vTmPVA=(a-?p=&$UDx;xub0l@hHqE&FNoLOm?& z`ForC@s6+Wl;K)pN-GsVK2Xwx2K*IMu8RQNVUo%phi%FF_VymX&hwx4^?#0#nAmGc zd?D1Ja+JSU|>F z*2-gcSB@!UFUM7DO)aK;G*N`Rqd)V19LmD4T5El?9)dt!_)xlTZaD%|iuL$&y z3eO~oMR*vKzvJmszCg0=?!+>K1#shKrF4)I*r&Mp=;bE=j#$QxCp@77>n?;a5|M=P zjYn>uq3-$-$R`bJEUxkbaitgIspqO3kD9YYFB>Og7@3z@tXnRc-uT5@xo2V~KgBQVDZ>TLOZK3h27xOlPb^3J50%*(bIds-4_y2+m(EE&G{Xm|br5 z^PSgMgU!UkU14khf?Qaj?aVbfG(P(OyE?>vwYIbmoi z{Rx!GX#PqNZ?@G1YXd!_ky;K+X0sCwldxm+jo`bg$0G6nL;8BG;B(p>?k~T0-W~~| z6_tK-xMK5G^PzTeQ<=@K-dg{&75c>~?U$QJc zU8)0=z16jRxMg4*d8t6<&$0A1a`B|qlt4O1LU!@dHq$RcTRRyJMPH)DEvu@g7n73Gsx9eI zcgJI*X+M!m98U{Q2J0Kc8MTpR@gW}_p4t3RTz!O^5t8%cfnEYX_kUV8?w5Sb^v6jVsY8y{xr~TXNENe^_KMZJHBG3eg{)s=TUw2S!~+T zq!XM7F`FW5yK{8frV5wuO-Gy=|LBtT_~)W}lbhPW-k#Is?5212FdR(^MDio4@&~xe zY<0yjFgBz#sHP64hDD$`Btzst@wSUk8((Bl0m<+kHJ%y%w$L|7BV;WNqjqgwT1_~A zp=V_KOlPk=HQZZ;73!Qi_@Hr@M*nTK9prmG#7DkQbOp&BA`FylGrzcQC6UrK+?lzJ zLG2wGGTAnxA2gS|0O=~`>$O%BgLJXgQgOxim^7P09Uj@L3=&GOtTj#5ZbAzTW+KP^ z)OrY-65bEHg0n^~C(qnW4oYe#fxB8+`*1ueP9~P*|2jJFM>gLsj8|I}MeUlc))ra> zwf7c5Y(;Cwti5S#6*X!^#U4rQy=ND-M`G_%BlZYtzxlp@K%QUnoaesJIoI{M?#$ZM zAM<)~Ni;tPSmf%A*gnZd)nQ6{(1|@4Y#<+4YkN})H>N-aCYc6%4jzg?Y%*&Y!p&x* zh&q?gF!fRyMsTqlxWO!HX}EgmYe2ZR?0qq&(RzXX0J!A_blYobJD{BP5B4H%pU)Hu zv^c~~{hDqN<|1)Two-s>xq6DNmF)cGsOKFME#$@X@>C&1e3#M{e=_DKDNT<4Zs^O) zJatl%E23rmbT$mKYZIeBS83fhmW#r28}~sPJ7<(zM<^GUP9LjpUDXlObv8#0S5#dVs3F&)D<|{8u``%5&p!PLN!8X+_Vv_+-g0-s4JDD(1ZuTWe~0dqE7q6@dbI?55<8 zUBmAF4xB7=`neof{g%phWBa<)c~5c1up)>C^Xg774zu!nB4TV&K}&p0a&o(csvN8! z1Z6E~BhNMa{kO(@JoophY2)Z&DD8|DHCECnKv}1Q0A4zi*RST{-*u6e+)gFh!ZT8z z5TOuo;2)V&22j|Ox4eK`JP|j$T@bU+{I=(kc(YOvgM2*wAa!VECAQ5Ecq|O3$Ao*` zH@^N?8ZDR4NV6f5kkZGfmsqHE?5#ZhBDSV&mk%te_d7aH`Wc&ck1453x$NF5*I!`6 z2pOPU(k@;l>m8XE=E5R`UISnp6lF_I{dw-A?|jPfiTn`7T)+jjv<0`D=E`1%$OfCu zUVno=h|&gT*7f8vMZ+*2h2I|9W^S8eUoBQ0~KB+G23vK)I{Jx9(+CtX}w*#{l&iIqz5Yq5&iS&~+_n z-~R~pNpj;)+XPk!yw*`zc*&Y`)9RazawrADN9#@0Aexv95g?(6RQ-uB-|1OgtuiH7 zpT6$-pwNY+5h^MOjTN`Al84MLkXco8!~3&%wlT(Uw~((5rH~MXN?wUFD`&Zk#dmLK z2+2Wu8M;A`s(<-)2BSDOtr3y2v@D>M=4ip{6@Nf!p#jFbb^wNmvxOp|Hjd8a!b4X@ z90QOglYY&&!+J{k>uxbfsNP!*Tx$G7E#jbA7FI@(l27a(-WXC)z_&yBff0C+BaH3R z_e^>2*h{+M%P|{h#9uPDlo5P8umx=74uFTA*Gn( zMu<0SL)O#|$CHFg`5}*U_x5kae1p#>u7q!vvR5D6emBXj!KEU_SSd_2VF6E|B9TCk6!aKvLO49V4e&B3<(AInV=+n3iYUn>QI z(wqxlLk-$=^l(K(uaAx1@&J$S?W&N)6g&EL&FW@Vt{Txgxz189QM{;;TPjYN zL3Fz4cD|YRbdzpNCZI~1UqcL;v&77@d8OYhO8-SdQHq&$_!Zu#@Nv6U*7)tdOYvCM9Zt;oUKq|NsEI<_lYRvh!CkdA=+|Mn-h7Dtalqcw))8LR! zUXY+F6)vE(VI>7VyFv5hvU78B(0X?;YDHEWr2c|Lkl-Jo9!2KUNwjFxI!Zus=UKqt z)U51;_f!^AOO3o43-<6IR3JYtcBxeQJ0}$xwFaJF=l~WYn7SR@r(!Gq5baYohvY62 zP#VJHm;TQY7%~#^3I3ffN70^3uMRy?oub}fR;>D$GK3fiv9QN5;b4e$a*dEqrqj;m z^1moM1}B~$yjgn|_X?&Xz3>4g_5`H2Xmi;}PQvf4u;MQyN2NOEvlMUe%9mkBOwgZ)&r)TdK*gmbpj!5oel$mk*Fcwdlv zq<%45qvXRyr5lhzh?DBT%PwhHY(~at8#iXWa~MkR*%ID$$Kys2PkrCT+jQ{xy((0R zJL|V$&5!Q~K7HUjzvGRX&v4tFes8Nm{BAFSh~nFM`8V23d>Caoi zQdY%p_FhkrmG;F&nm=WtKukb8uj|a4jU%&8*0hhw;`brfg|2RozEV`Pti;u+GTd2Q zlObBu4E4#?7>x#iLW-sN3<&eU3zi3*KtK@7qBE?wh+HR{#3FirBmGh^@UH{39Jc2h z%RvXDE%r&hxB(odknTE1cRpV4KuTbC;~brEt;a7cY4Z|eGqz6G1d{ZcY3k0X{p-R^!OP`>+8#a zoEu>nn`<|ID9Two2$h^9-0Sy}UI-$ZP5OlSE(oA(0WNFGQ!gQThjax$l)Un<4=Deb zh8(#Y8Nt%ON@=JYC0PS8)-#3sI?m?Ag-il|F-T85VQJ0IMuz6`GB(&_dv%BP`!HuF zcnF$YKgI)e8jFyoF8y9p4cz+z91r_a)R|&{#{G-)8({d|r(iN>;GYij9Qr1e)t&yE zcBMD8_)m;|%ma5ALWvpJU?R4sV^wiukL&o+7Xmw?8b;&NZZNcS@M8WS)F9)lKSiYd zX-8W`5M{Y#ZMbAi{1@cpR^EyBF$LgcOKO~K_g5k}+e1=H)%pOFt(Qfbv#Nzb!dV*x zmF&+xW`62#E)}`+Z|KHWO2`I~=Ci?~5rY_+GjTGc%sx9NTurpS3IbYG8|)}TrDnwu z`BbQs=v;~Wpn{)X-=KV@JhH3AO8)HrONK2dQf-TF{!5wV>gDbo)(UDqP>N>}ofPea zk++rH_Vq(h7d;@G)pO_Yj72N#kH!mkWB>jZ>oJ2_Os3~Z5T>mwljmtmI#-KmJOQ2?qD2%SY7bAje)BNQ}9*4V50jp^hpqoy<1l3B2R4mjRa)Mme63Qf?iTI zhPGBIc)@SHq|@3a@&DyBEq?IAXGBKcb1g&oy4P#lFLfGONYPL!_}#8h29QEN@ATHl z&R%lu@)!f0%R#$kPQJ)W}jYJ?psSHY59=Us$VdvrnvUr9!`OFH)X z5aZ)vX;eO7#vf67B5Tr=wM4}dj+-#ACYL;Od5wt>7T7j<_7k(Mi+A3jEy{J(+8wS`iBo$s)f+8 zNtvM2%_8Z1?9wte!yCS36_vfGV|=kchgFmS9a4iTn5K7?EP`)*pXaAKI?eKmHvO9b z>$G3F%<###8%_@GKJz2V`k_0W<*NRA=)FI!lD-+&WLhm%VYc>%6teOArs)8U+uQJgXZ7z*q-ab_!gW?YpfPrq;gqSW8WhvyXe3{5xR?XvRu78Y%-9 zSL%3}bM>`zdhhLLLftt<-WETA>@CTSdTf=n>CcTnB{gQQP@2(K%l^*?PEuR$&$@L7 zbGu~_&m6w->WR-?r?UHs5$`Jy6`axv@|sIoabin7V0WqjfAaiS&lvmt}A$PdgY z*@;8`xaz61*O*C=>3gNF%zLuUBXc2kayGm*91qx8*ykjuY;~`+ucnW!&S&hi^@#u0 ztokj>%NLlO%uI+=l?{~LF4Ble87M8}ha#5vkL_dgv`d5)AI%6t#B=`0fw5AM>i0@Fug!Q)mFz#;+5-g+f-jXNKVPZ9bc7Db*DT>?YH2Vz4DUFfkMmCE zT=;lr!fL3FT=(ct{T4>O;VUc4tEtEJU34rkM{KyAT zfe)KXcBXYcZ0L|vf-v^pzDHaFhaljQ!h5z_`geD~B7QJ;C-jb$A3diCXZ-B8a>ul= zLfp@SCEL;c!E6M6y`Q&}slzG*vM^iALR{~rl9(pEZNM6_lTDI9^0fZJd z*!y>v3{UYf=_TTc{KqyihEiIttEWZ|@*Lw&n(te{5AA%-$5LH?R@@t_pH185pW5O~ z+!YvduJg_$02-jPg$0>nY^2eE z?3+d{fZ^gx6S#8MQIvujLuwxx=#bv*<~BlHOK8zbs73JE|EUW9<&>)2OZIkKy8Td9 z%)=K7bPY3{^yZ9@k5y}Y_50B1!#zrIk%Oq47nZ-l8%fL3E^T~4z%$=nwc4^4hfA{4 z%^moxWkm>cV$H4FUq&I}@-t~)qU;lJSOG4&cwG?S<_=w6hr6?EvTBGrtyjy6n5U`%6Q*!=|l{NvK$J$M_iTGCz zDS%KP(4cW4sMV!~IiWAYb9)9TKw48mZp0808rVN1RPw3w-M75a_5HzI`I|||ze5Gk zHoBsn0k_q2de9ts83>};V{;(0?!4qKN59C+Q#+pzI+h8{=~TzC=7h$!)clruKK~Zl zRFauoPkAN=4J$6M!*uUof6SJ+7Lj(%9mtk>*h>{n_5zreS%547SV;9+QyZF_E5?XC z&`5hxL}Ztd&@G+PoX`p{NUQQ;$zDU~nw0(2kNHE&_lO`LDx74vZU;nB4{w-#z^*I z#Hz>?k8C?O$799v7(bfZeelu3zq{SsV@)Tglx}?~rY>b6NcuXMD@aai*LX-)>-T9m zNBmmHyunRhK6kh0cBPH+IrhK;QSi@fe0vN zw{3xz)Y1H33X=mtn2RjGcR%K8#wT2l))yrt)*4JMSf*u?L!XINto~pFcUii?PkSH1 z%zzWR6I+vp6E$)3>K4P2UaD|z88jX|s_3No0YzSJUV;PK{gTp*R+v{idy?HL=>Ff- z9vjHd{ve9bdlqxqwY++lR8YhoIh6ZP6imHpbl;M7qmj(uPZSSHuu-w3F7HJ1GKHUf za7*>5N6EZkJh|0g=1D_E-Ix8-w%5Bx%mP*_nx~h;osNB>p^hJ7;BQ?9O!qhczL$5h zvF}+BbiS-Bn*-_NA!i$zcf2%3v43xsWv{zmK05vCN=X~6FPIu>=J9?J z|I3-sr(TcRo)mPs=7DlFH|00KG9~BTgppCsJTLwH?C^k8YyTK02=WVP(}FB@_w%z{ zzkv-yNtIennTx-Xh{#0ngDLo5{_*dcta~!x^h`knoHB~0buLTzx+)pS{o$em=NeJp zXEy5ykJ6YEg{-|sucKGf&j=np)bZ=nuR?1ep|-rDu)QSQ29-u`4sJyFCmnbxFxC=7 zJMj_6tDXn-b>q{|HSD|Q%}t^fe9oOA49B^3ieqs zJF}`-4@Q&?^C9FVa&2T=V7P7dc2zzmoxuY=fS&tmK4*ml?&3ZpjHN@IuiVk~3SX+=@n1Hi1<-7x zIsNzZOMdrb`i2Y~XAPjFBJfxndZ&$#Ik{cy8EhGwS%qRtWDuzW#r%?7|KI*f6XenpoN_FFynj6(dl#`0f~e1FhPmpSM%$A&RJfvi*!L#K%ey_o%4j) z4Bp7XD?s@neT1nWdqh6dacL^=xY;O7n*e_(hGa^yXy**$!BRPgEU7*L~a=84Fnh-(TH zGu1ziIsl3Z_{ZQoZ=eDlm%46Zx&cQ>awiS|Od)TDPAW@^neXVNNB(BIUU%eaZw1)NF9&@{iZoSM(~TO6-xocT-xK{O z6XGsi+(ZM*gJtkGCEEjLAo9gBm#=@moDLefR<=pqh_N_vO^M=gEw8pF6^e?G=*b<3 z!)?5`R2_+H%}H6b`((rT2MKuDqY@X}X+6t-eD*iuk17-tiuXWftR zu#*d#ps`w%dcOcYp&pm{D!BpIp2f+zyCEQWfSy zZ#YJk*xlOdE+RwD)Uu}NXCzFt81ux2t!?aIOSf%Ecc@~1K;BbKc4O+f;~O|82KAeV z(Ng|_woBKHAooAmWg;Q~c|788%RG+0?_e5Z@G{+$57?~@>z8h%^I^AEjl!lPKZslB zAk&BrzNtO^L#oN(xD`rKWPFz+w?7~0_)T-Yd1Xpr_dRI;B$e4U^zijUfi zkSi!RFQUV+i&dn)LO=;JfyhP4)qX&VF_1BFp9W7OpqzaB97i&;wBR#7j17MOK5~XvF8}(~Svl$*7r)f_*m5*hp{qBFKD{$!Ew>nx@ zEyiL3C8hp|Lap<3b{KK9j*wNQvq+^jHu!uIZBPeX1=6a4k;yiJv~X&0Oz}UUG$@RK za_B|=e*?Z5*nhCCd&MO=XJN|(^L`jZFA>xgc*+{3t-MTAwG9pbN1w`6`(U$x%+Nc7 zgE=+mAyCoiilvG;n!>%g>e3VX@C#%?!L3XRYlyu`It5o7xn}n0$2&gXxqmMtvvKid z1C|Fs%=+~qE>J)G(n_E7E*~u4BDpNE3ps!}IdwKwE4q)EkF&Z%BA`!IPHnH_5H$hu zR(dy(UHlzu0dwdkc(JPf%BEE~!Tr0K;O>6f#@#;qhE>d{YtZkU2mL2yY8wW3#3gHc zOuV0-FK=9U73bz#c8%}X#<4nOKRKOQ-u?WNt-!LSxpdz9i}L&xu|hPTFMCkAzp-5Q zd&-c8oe5a-%a|@k);x|!k5?9PWTymQEcy7DF+38Ik-+8DCvx8u={rosOP7g=_Xc$; zeBL~2abhQx7RdHj#K2G)$Qi8&q<35%u813ursv{uB4v3UfjpN0L!FEpCGD|aQU6Mc z&zEN5NTJWtB)-V-)DF8W$@|ahbi`iO*=+?z1BcY(UfjTV2-Zc?&^p3tgJi^KY&AfN z*z_3S3BXWe+NPo5bTw!|1%>pkx=H|*e#PLZ^pu{C11IX)0h~6QsR)~>&H*%chJzZ$ zBI;Ek);!}aP`S(g57Q?gxd0}W1kN1rls2XRKAqL@yo);11z}A)mqD zgX0%-S6cz8S(yL!exPXAv?{OrO=%O}z;DX;oM7blY`_U*lUj6CO-0c8T~)ZJIEsE| z|MD~EQl&bkM$aC|>0`67HPsOQp6U6}8ikmtpyXQbUPnc-*L-WO90J-=F|~{#Z>`d1 z09erAQcvAu$hMx4)@sAnP%<<)j_5ufHFynq>SRlk_L#-Q z$qA+z{O|6hLWrAV+m?Ydq)_?_h*bKx#KaNDp4|x5HA{1uagEDr_na1GmRj^jZ7q4`Qz$b@tUF9L6`6QdnwY2Tl z3w)7|09OR$pzkR=$_J{1Nydj)b*3VJpwkTkrSlF_tFFmJ@g~OqYI^Md0KI#~8UG!g ze4mKIxiH>yaTQq@9g#_%AGa~p3Js>K?g~K!Z$xg|4;}88(l<8OzY{C&35&m`L41pX zLgqrkk1(g|lKrQ%vb7zH)qUplu+J6O?_4LfaL7M>-x_Y)vsuxsTnRgGdFS5qqX>?| z)O(?iaJMOX9Ti`Pw$_V+reG!TW*%O12UP(*yBuC_wrM?ZjkQ^*{LmAo;vMd%9E#|JXp~#ACk|D*aLy`t^0f)g;cG--@STI(sC4 z0<1OgP=INf($(@gK~e8lah_Ksbe!ark6tnx{&XZCcaqzS(@eX{A z?pqcy4SGNy(I}XUwErk}rd3+!MsC>`Y_C^L>}+WlpjA4bX8F!c^$eacbzOM*Cfxt; zIxC!hme>wzMDs}HpR|_MNpL4RwesNz?Yb2Pr{%qzjHn$l`!w`{G!5A}zV+Ef%o9&+ zKjBajmU9Ai!E|@}Av8d;jGX?D+{Qt7W@8 z-m_zXcio@ft4XgL{O-Y~;x?LqMc4Cy${2NDqy$#eXV9jl>NiJ2fp3G6&@k7k09T*c zpEHHnj@eXW%@6$4fo2)Lk<9~`eI)iZd1x%sbyd*O%yjn1?T7w=ZX%K}fwhl^5M_jn zLVSdj1Vkbt#k3(Km~;2uC8L+zve|US8`%=bK~7K`cPf(ex4Qnr74nbeXCbKqJ`NHe zdo}*7R8GY!$E>$CiGcmL#>UTjiYWZ9yhBh@+ae=5OOx;owp`@zxy9p(wO4GOw`_M$ zzdhDrULD!=oE^T)0_*?Gw{{@k(kj`#Ok~EDJan79U9P8#sj=i5Q{62eUE~xV`@}jM zq*|2?4O}mgwK7EA2pl{Gyv}(EqS-yzft`tL9FA-cXoC09IAVWEX=rBM8(wYGStuV> z^UIDkPLYR)3)S)m@(@=FEfJ4rzu2*JR8$49mX^bAFYF})4h=N>uU_YT%m3SU6VL78 z&tTAl5BF(U%;(DfSULCT5woKx@#9Q0G6xmvEM);a!@;&UKccY2C6$2_apFXiS{hD^ zly$?31T$W=k9Ih)RQl4tG4<7yqYfB3;*aoS9wNUi6$Kz{3ZOkRWG$)p-uU=*Bgn zWQ(tiG-r|{QsmO&dQGie6~HIeouwNi>Gb2D>!TPo@(;<*{4F6TlQ&<4WSt_E_4g~y zO=n;J8GYt!U|5|CXH%Egq(^;yJytKOEi#H&Re-M)d$?sIggb5PO{sXgT;Y2ntBlE& z63g9Pwxzi=jXQ0AEywFvM?c3>R+{WZYps&{qF-Apo3Ctg0%A~av5JbW2L=YbJg%xL zqxF^qD^DUmG!$KKa@d!wJ;8v@UJ@{f)KEY-3YbdrWEl9mAzCR2mi0Gi?~4~C@E*zo zlh#5kYgC}<-vIdRiEUHsO%R+9r4A>BzgK{y4m*MD|@Kt?cq9>Y)E)W6x=sIyqEe<;wkO%i`VKqSi}9~#O(LaA~y1pkF+Va`5(t2 zf1#(R)|wnI&Yx;!pq}haa67h^(RB4g5)sxVzw&tq_?{Vz;Rbbco_Tyh37(aD)Y8s8 zXzwK(wW+q?hUb{T>*mwpz=?tG#uQf>c94eze4I7GKUx15=DU6z{CGO%gHsf%R?st! zte`bs7S!g7mC9A)vjbUBZqX*c@-+$A@2o2zaOM=a26tf)+;Dwy%zYsEPSWD0)(_Rh zV!KrQm}koXRnk#ZNX2_E%Tdy4in@2j^@ZQ)KHGkTnhcBcBM{^fPUNFM+JN{bqgf2} z97Agw80LOK3)&y3VxMZGNkrh0;U`;fk02}oKyogP?pT9gbROQ-^*?KBE74Fit*0#- z4ircSP7n<52Z|`ZY#{s-rsOPw`mYWBkbqw?M1_<0EiB%Ch>m9`a!Foqg{Jhs0Cm6~ zeGIz{cOf&UYW_hUUeT*LSKeD1wrdJW^c0O3?67G|hyXlz@JWbk{%0p^dB|u0W%9(v zbZ4WxnpH}IR=kM6$|_SuWV+c|rO-p9Y$Nuf6WqBA3ZiVFzY_N8(wraj;SA7sF4qh~Sq`RM57E74swAtJ ze&;yq?EPN;2i-L(l|B`6Fcxr;WL*&TKzA>hJW0X2@hHUp;hrwXJ^SBT+p|@SbD4X| zRZ+bebw!Tu>WK(kwJbAH6w%uIxA~-0BVT5(y!if#_Jh~|@u%vEN?qneAD#K+w8tSf zAWNL3pkDrhgpM7aP?J{2QzNAp^RdWNMJKo_-CpOTz_~0DW$~CTSsmjhzVlBn@|(!6 zYd7{wa5FXrIi#G-X=E`iIgfz|(1FQK%?TE&$uv~8ORnmvJayC{c&`rlK2tfuFbSHN-GM8R)_l5?fzCM{)GVT56t%aX?A5;^Acz0Z#u!oe z>Yev^ha`oZz>$1RY+Bc@KL;`IYArE1+hKM$#&z&qtZwlusdBe40l3kS?3wUd$xq|Z z+!CjapZpHPxpsrmNF{TT3iNp8(T(D%ceUm68yh4TL;QWKnyA!Q?-^t^U$4&*shej% zR?qRwiY_x7;?PO;M;$;uafCXV6SQ`j3x+?T`IYd&sSz$GSI~ULS$*6$zT)U3Z$*@C9FT_aCyfLtVwxQ|3G8KRD1a*YP)|oVQJf*n z^BEQB9LbCizka;61utkdMnK0O8g0z>quae6!cnfO+5?3W-UqNzZ~I~}1T=nz9_PZE zS+YsnVCk4-0ok)Bp63ooQPA7t0JD)sg}|!tvz-s#Co33>nTH~Fe0oZmyyMSTexdah zHE)Zji^)l^$&Z&b#td9b#Iumx?nO<BNWqx9-9VsqK^EXyl_@XY&Hf9 zN4O)QLAm;_b{(r0+J$OK!M{n3#yHkhNhd+GK=k< z!B5a}U5jn$@AfHCnhthTZC^H&)Sq9NG1Rw_;<}^Y>u7<6-)9bmW8XPfZ`|Z4%NGwb zwa@lV+N9SG=9*u54oaW#9akEOA5ZbMy(3 z;86Gtp*LqUONI$=$V%?~CSsPshciE><07wLx4rtGOHv@|ZPLXYWP9fh)%UcdT$u*a zEM0vSN&>rfmuT01;k~{a^3%3@A1>34%nlb%@saYQ-+Xaj6Iyy7S2^jM)Z)q1+y#1n zQIW~9DY5U#Wr&K`3F5M#n2@cQ$L-)IgJauTcJof| zhx(K!cxYf6q@Y!-U57Oq#dRZH9BX%h zky$UaCL?OMxZeH#^8#wN@zs&^zFbcF8oyLg(GyM;EkqK-0@-^Zsn60D_@HrY;l=d{ zN5k=eAyUXh?*5k7**{Pb30*HC{aQfFAT*K_O3890LyDWJ=hs0SI0t;bt5xSW{$x)3 zrU!GD4wbbl}KmL0vo6^Wy<0?HxnrMiO3#-_>Hw*q-F|hwDkBn z!zbSj+?w~9Jv!Rt4(v=Gd8mejW_q&T2{dqM47PcEcc^L9$*ZqyWzs})<4c?Lg58?4 zW1x83RU|UEm)!6bnF{tn9dwqTOE$_b!XSqN2r_PATXiK?=x>fv+(*)8tCW z3p?!4=~rZBw?E~BfX4dVQpg1$#&R}cLtmn7ms4A2*Tt-}&*vVf=4D!0fS~npUxReH zoWf{*W%m<&i_*E>jgG6Fd_>x&!&*4^N&~~AUaE!N(~xG;;KjT-hc)T=mA44w;IFqH zVgbaUGtU7wFn&E|CTyW>a!b^Ugr3v9eaj063`w8pn!p|VtMNy4jdwvw91E#(QLnVh zE~9U%4iS#|ikRU@Xz0JY?lx=-FMG+nV>p8EP5;n)vKy3TXUNq$#MALc0{e(vnh6nK z>0Wm;q|Mz`>_vyLKbU!zq_L?+O(VJC~h@qo5z+hhonkqK@+Vim+r!-Z5 zG?c`+`~&0V+33dLy}W=XiD{wq^OGRkKGB+J<-w66xQQB?X(Kg>uyK5>(V^ke_1{9! zovqQ*5|j_)OYNv75X}F<^>!e@+ecO+#WiOGwmSH+GW5CJC(G;Tb0uf$QD|pO`K#1C z9>op{-e37QU({=Eb;+8_1m3+M4Z4h F3y?M~PY)sM@c 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 ZQn@-N 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 literal 0 HcmV?d00001 diff --git a/msautotest/wxs/expected/wms_uvraster_map_reprojection_extent_smaller_than_layer.png b/msautotest/wxs/expected/wms_uvraster_map_reprojection_extent_smaller_than_layer.png new file mode 100644 index 0000000000000000000000000000000000000000..f0b16e92e9759cabe42d818f9c6683abeb23fccf GIT binary patch literal 12803 zcmV+eGW^YnP) z3Ai0aweR~ocX|%jcb%?RML-b;R762|GKz{L3V4|mk)RM12oNC2IcImZ%v=x@5u-8- z2qLr0~m6qL`QHP|NpP?4@YcEM-T)-ILGvr zxT4s`^ZZ{V6-ZB!%;kz?vghsee{4%j5ClP3VVi&DieNoH_Tft5cl^)C^hzV4L~bMn zLJ$NoH0=Lhd}r|uK7PcN#Z6oZEY7YlqJur;dHcT2_SFysK@hcpT}Baw(Wg9~_q?$W z*}f8jAPAyXV5%ymJeKmYsqL#E2!bGL2mX#!1@Ri+rQ9wZ=>B*3Se^gh{E5%~Nw%+m zAP9o60-WYizXyAck4t6F2f}uz{d@9vg5P(Q$D#GhOArJ>I0PHzN?~WN5I&gg=Yui+ zJHPcP_k$paiW!j;PUrKUH}!S4g&|BZ`ab$D3A^n5AGReRYJ(l$%@bJ6|9&n1lW~Qz zzUNK;7u%8%#PEQSZIwx~i3In`@N;4a@IRq(&@SQ+!exBy#}&$IwxuM9b~E--8FI}I z<9~mLZE4EE=5^Eq)%^%P3Me4S;CCUN$4zn@-N&b+Y$j3_qLPbxqEvY?5-)vg~VwivlIT5Cfk~M4F zm1~oK=I_E=rGE_;i_T}bOk2p%@nDLK3KZ26j+eU*?4%M4(R1D1SwXH~M=tjn{LiN| z{K9^3s9Yu|fpZnP0qjpXvY3Z>3mSZr--8QCku(iVc5HY4{q1I3l5}=|BbRd%KBmhF zHuy)%yLdGp8`zN(rtGp65rh(Xmd`)mvU3eOpbOZQ{c;Y3-NCi!mnxUd8IWM+AD#Yy zDj(WCZA)$!C=hWU=J6fdy0)bu(wOpZ(s3JH$j6fI_jbB%sV2ZGeta!i6&bsFc9+~? zWPTSH$=|mD!op1`5TQgK@w{p8vU43eg!%9gX|B(tK!S(6U& zA?5K$zT*E+d)G0D;QXvRkUvKrvibZ={&wZE)ebu~#}|7eA3N~zzukZH(b>@U6_`iZ zZm-NS?odohWYTg1e|uSFc+higld&}nO}yW;dma7}<*$LA>2^DTV7m!frNid~T`hNbUD@k7Xf|sJk%7a|NgQi~axSA8h#=JXr}LxJItf*(rP+)4lim zO6BHn&Huicd?!#bfgKc^TYqT#3exdE+<)JTPYf?fGX-p7jb~)SRM+=q-pR)g)JaRi z?8RTY@pslQZXK9XAmTnQ;Sb)|ZC?=~{0gsX-sdN5OD88@?R@jMZj{yje0RKY*P%Ne z`TR87(ia1M9`TMWmhYU)U>;<1`oEWQ6T>6YcG(7k8QlkwzhLY)+00VNh;1vT6bMXw zux+E*Az>G`SIYPFvTf=3b8>k19eiH;BeA1EpL$(LYuMW!il?d17tBHI@6rO~I;sGH z;yaMp?V3Olf(s=w%%QkZOehdIYiZ}<23Y6~%44!U33uKj&FNX0@qeY2pvm>5{Esxl z9T4oTerAeI4425bY@)ruiH9hVtRvit_nwhk_=K>E?W-U{*et~&aK2nLg^I=1`o9>NbP)yIAU@5gyPv*m~pq*`NG7+fGkjgP=U#aOjhnO{%-!>E>NrGR02&0MQLV5gwTo?q=dSJUoLB7Q5ah7e#h$ev~RFuCF z&(2fr&3hvVB7!PrAJJBA$=f381rFr3^5}fO#(z_L{qdQWbr!`?js1I3#teY9b9>^n`IG8lyM-4EVQ+c4?z?rm^++F zYv>{;OcF23a{H*ILl6W(|aH@4}u_ukl=bV3M4dXHOVi+&Mc-d`V{8_o;Uht+gCymL{>zv`mLo! zrHQ>*oPu3xNO|1Syh@|&n3C7LP&T_K2*Q2Pz7{5Vv_A;n;U-#5oFWWQEwu_iS$5KE z8vd3UuI(vV-w6I8JZvb*EtJP{>0BoW!d+&pEPcA{KF#}070=6otsEkV(0do{QG*@j z|M_3x|K8N|#{VDR=B>&9y}IX3Uy1+UIgu6kGXC#9ZC^ogkQ5oOT@*aoHEr#t<!z zVe#ON*Do(YxCA>^_NYLUBeb7z37FDF(9fU+;uf|g9WvMn-5WpO^E#igElqiX%lNhY zhX1*1wpNkBG`S-oh^h#7Xog=c-uHyf>%L2S@P+3m?FW{OzE8FcPBlaCY*)stKp~>_ zapS8xi&e*8hqntJu6y$9ZA(G46}BE9OZm9Kwj_g@{4ZS2$5JNe7p3{gHkh-tGVW(v zIti>H!m+=XtfR(Gmu+oP`GYNrDCwqGc7|DNzc<*Hf*{%lb{)YZk;!5o+Y+S%vo^aa zWpZ9-Kga|tcO?4iWJJE33t+d#E*k8UZG+W^AczWx2ebrBJa2qm+fpSFCF?I790HGy zdbaU@mM$ZrvRnayNWpdK@;1S=Nf1QMsA{c+egzjM4Xlv;?YW${W{k{SWIxBEv%Xr% z!SN4YE*$LaY`ZeXVV}}F{;`uH2!iM%^m}M0V~hTfDQ}YHjo9C^DUP1ZzCD=%R`YC* zViLYvCK7_qXWiO?u(f4ylJ=fnY+FKtAe&&%hzJr6dT#DY7Q=*69xsK8|G>Wa1NYaK5a_4cU7CZ#gs; zd26a29V$<_2ojou#hQB@{rfhyB_#;L84%3~GfFrRwwZA9erMwIy2@^#vUb?_N4XMy ziI3y>?&$v!9RciB|TjU}omP;v#0osh`LUg_TGS8PjY2CPQW<*_Y&Rfzn!q(Fpk zrrY}`xRZ~aCY;Z%A~MfkR!qjH+LkN{@=vroyrYsoKfYG|GBzHRN(dE&)((5WZ7I#b zPU${8)R<~$aY=y)c_!Q6QRD$VeG>D-)A}8g4X_|aevDRmjM|p4WuO#7YGlGJ+Y*)s ztGm8yq5^NVftJOt;F8~o zo=Ih}{-7`9Eb_lJba#FgK@9u;QiP z)V8F>i2FUX*GK-4T(A>m$%m{X9<>uZV{b)B3S`I_u`NK1F!@K=)b_S5O>w5aj$g~Q znhABbv=@faS)J8vOPe2+-$ScF$RCo6EM-9k4O=EHQXqs;Fj2xplXYOS>3b2*Z=OjD zvF7L!sC=>S_Pl-HCV!4?BJ1?H9-FQLh29YT6OQ=zhQf8x&zpFSwlJYUde7Tc^(qlk zAcRrU$_Zp0O)_bTrYh%YuHymE8-Hj2&(~Gjp=uI}{}I~~H5XF~BzU;~_l6V*VH6Vz zM7#`5Flmi=qK%_cd0<7pvTXsYgA|B4Oehd6Vr=Z(u^@`p#=@{&)s|>5rW6Q@bs>Sp zIj2noU3MmWDp|CxZIA*n2SOyLuatd6dwOG`)%c#%1QB9FfrtWVo7ldRbkI;o)j2G9 zwmoL5G)RHiBiymrFj)~qrTE{KE269;cp)|sUFCWE{ip4#$VTwZ{vHHykdJ@Twp8^% z3dA0`*S1Vn1mP6njs+$w(NfZ3la&hOJg`^0*_rFxmZm<2MS-Bvk88dxDj_jEP&oVm zpg@{nvPy$}QP#g7CWb|UV6sME1NJrBk`Tj$i0+&zOCmLGQC%x&LednI6*0juDG+ge zD`d|DY6R9!kmtmvyAk;*Dq36`35(v`wnPMBn5HTa6njLyvaBOfw*F@KOj<+OZ%r;dUG!O9yp%mY#EX1sz2?HEBf415Os=R=!o?QI-_lOh4_K7z zTJ`Qj$n}csc4|c~zE}ztrz;S&d}t+@Z2h0>x2{;lBaE*ph!}CjgVwvA+o_zoDWW?T ztiZ5Ur?~v=h>}0|YbNSF?a2kJL+WH`VWP%vB<=?Z7D{t*=QHxz>wLa`xk3=Frk!(M z@Y?xaz#+!w4>n0S)uwR(aNZ8O9{*_DQWggV16_F-dwC#avdRUVwf0znnT?ql$_8&+;?jli1QuxfnR36LK9^ zzZ`K?xhVVv%4+CL+tOu&ZN?w&?fBTy6TP$(*Kv7QSsp1fYnui;b;4Za zLT$0BZ}FVj4K)o!T=~1ms=-<%GNoRbkVvYk7>>fIwn0^n#Kin{yE2WhrO!?2n|InC zfrTwtyz+0~4S2}5g!u_}RlEom!Xr)LPl{d3qjC}=noU~6th%$TvG7XB@TeR4JlJ{1 zWwTl43DIG?s4(_-{@L6KYlm29wV7Z)#e;LN)ST>E`EOeh4n<+RE3Ro*+fo$+JyZ}u zmbjivJlX*?81ySiOg;~E+df<_D_Ku_SAFszz$78h{`H+-2l6Z8{e{rl+ZLExP$6BZ z^zW6qAQ-{Z{O9hoCuc2)ZR=yn8xf6L#)IBj#h#2sVEZV(+?{Mom7mb>pS+L6NvP(~rKqFqw&Dy&LW z8R?zR+Lo#~q(HL4_Tpn!_7RWcN3>7XCM^^!O}u*#R(HNE?EXf1?~s=g+-O%86{0KR zr@3rXxx)L79T|iZ{UT`%@K?7ZgEO%6)Q+IGz>Za1-$u5jDh?@-Y(#eyWk!`IE&m9` z?&I)k&XpHTk~T8nn*yBaL+@{d_Ke3>!x_}3O0}wqq{*GjNP%R-lmh9QwBBo8MpgDX zdPopNBf$0?)gz-dT;Pyx6YL~+Y|JJg1(FS8JCGNvX{LtnEb%=yu+jrT2;ejf{z2=Tl}DF6W^bYal54t%0dbx8zvM;a3_B@KUj@?C_j$eD}<(oj$zcHBM2fR zlV2})KWIqQ`a~N;kOIjDoWZCLoOK`sy6>Kz;CWMDSC6d7T82ZoDrH3wt%RKsd0`#N zc6FULDv-L9_f+)qKq@j>5rmU8b>)sQytwlob$FTv5}AVE$vE{oXrlsw=@hM$Z2|>S zrOApQoI}|3PqZyXevpTuYNUf${HB#W_J7)y{la?A*G2_`CT1wuXQM$;2-=|5WwIg& z>mZpX>|gGG+qN{>5#^1a)jKX-DxEM0wpC04POagbEma`BYnj>HT{S^80<6+eI4>G% zIQAjiQVk|_nh%VA+0nM7gF#+EyzB!Mdeu25{-lYzSK)A_*j)%RxZ%^vI)cTq@Bc6M zObg$aeGi2FUXN~8vVh^v@VASmD6i@(OUH?#GCh^QXXGgX;F7%J@BkuRmPFxM~hamJdp+Fq3Y^m~lXeYlK z{2{JlLV>UwJa76+wy%Uxfv$zY44JH1Cu1Mw=Y4X({C8))GKF;BBa=aeUveIoV`n>Z zXkiENF}ph+QoL|aL_X&i;f>gqI33j7ieCf1geDQpjeQ5N*p|o*P!5M}nqw@AOaLon zMOqh<3kfx0eL3t9>sBP4)zn2Od(Y2h^~iz64T61eFI4jQ+t(vUA<&XFapM}+PBFMD zc@1N4w=GpZNP(Ck+_8|!su`fJT-?-Hry^myr|evhulC&2{@qhH;7ceFm%E;}LV;YL zyas$ZO`?qo1i=nS^hCfzT|j}5$x4sExtx$X8}mihnleIBw41Kc%7FeC=szCpCWAzD zKC7w~2^JX9u7n90g6hs4g8neN-sn9!HmhEa!n8tx+?u=w=NwN1Xo~{D3*qm=ujhOj zJ}a(e-}=svNry~UdSFjinroIzpBzHR5!Gl4B>S>0_%RtD=kmWlkn9_j>W45WOB9$! zgO>-a{J&exx#NgX{+m)1$OiSuQHWM3kUL{H{59JW<)^6%M6~4O54eA*OzaF)lfV#1 zk-3N}?7eT|{AuxHLwO@y8oR)(K_c3T^S)}@C7_27^23x0>+Xra*VW4&yTP=GSf?9< zwL*d1AA9g#vMo`5ny5g;WN}W0RU|18r$9ts>cm~rk!nQ(z#6pr?iQmpc6BP&$JCK9Y%@U+Q+yN%6 zw4DJ~{bga7ms1|7Z&yVtY$zmM`hx$n$PbRlU6k+*RS2qmpwy1?9z>$Cs!*iHXoUia zX>f!gH;tw$kPw8+YA2&wKLTI7_LBDUM@;FO=j$}R&&PfVHNti$;S}-4H##DhCaJc8GyN=8HOZ|x7Sy1h6 z$R<_lD6{V42H_)ql)g4tO&|o6z-LzX|rn2kA?fX!Ggj_A5 z*rv)Pf)^zOp}wd&G)&-{vATuxQxwKqT~>#N4*)U$$S*)Pcr@ogDBd~cWB${WhiLb^ zljiqotQKGcm|BBNq<<92t~OBB>=WP1xE*;K1s>3N*#LBqa~Yj|f7n;lq8sF0iWhVMEcLKz&VQAcVXP@Y7Ulm=(9t%=hW;4B}1x4rX=3JtM25S7G< z0SLdxJk1NUg>C8dpqQG{1hAz2E4DP)$(rwSvTe!iqO0pvNRix7JbV+?wtLU&vwVEh z=w%Wm5Pg`Q>V7x3%Wz#{09cu&ZL3}MhlG9)t=#k6kC?y?&$O)^%r5Wvm>p(PWyGvGwMrbVh)WC5HJ2$eO z*{@`wLS$3Zyzz zeh=*~#GpUKMWQ>3GQ);Riy#OMq(G_zkzIo^Z0m8CUc@&AceX+2q}>IXo>=1o5&Zp z&+qW7dSwU|2$`(x!oJ`A9+t_5WaDeqcSaN&PAdQKIcOcDe`|H_?Z__0*w2 z{EwLL)qx4Eul5xm{wK_y!!%7$Ant2P!WKRv$)o1r~^Bgub zcibl8yaMU^J+#qJhWsH}Wg%oWW%M9nhshdtbtzOdxnf)K`QS$>0S&kD&$l%+q4MvW ztt}I3MX}45GeqN6)T)4;J|K|eUQ!~p!A_0b_{ZJv@9b|c^Eax%bp;ajduU%C3;vK{ zCt8j^c!7^|WwA_CrahsgHj$GzJ5SbU8}uCX89s+5dez5) zVt|<}RdKbYK^rD#m+k)kB*hnhndj{45-U96w3}JY@m*FRD!+&J1*+K}GVI{F)J~*# z$};qwRk9xsrRjrRrH=u>pY?lBJO}ghCv;+01OH|4NU?K@YyO9M{{-6V20KfIn0n0* z$)9aJJ?GYgZkC%Ceh}gz9AW@ncnb#UdWDo&6Q%=+a zC-bfH9Udl_vXi*~jbfL^_Q|NAUgG2Ou32qqhs=}th566pe|*3(5wiPNX{z+U%b(Ma^1uH*^7+)_*N9_j&v}!Kyy|S+zr#fk zftbKA@JhcgV*VWC$dmZU%n4moyQ4HPiXyH zmf-2``+qk-?lH1lPMQf0N)>H|%N84j=^SCX1MlneG7Em{TPC6s*&UwsxvDgw-$Oeg zJKzt&su~Y9241qnmvhR*=NLBQ{NsKP-KfGJ;xeQ_(g}C0nEZrAbbCZ+&YH?{*J_hwZp{cu-&=<{6>h=XIED@fef1h5eaO2^$)D>qXW+0 zaG(Wo-*fUpen+-AZ;C|$Q9&pwIb+rS-|>%@@4xF+7hEM;0tu!&wtIDXU(SN)jKm9W zV2fuOmla4HlxK*`in1O~F(SihdoREN)tsg&3PhNJel1s)Wf+t=mf6H~Y`$)ZqGM$w z)EyQE)SF_Pd0Kn>*cwua5XFEc0sa&$vWGSlofL?9nxH^}8A}?pUT2i1gvOT5KHVZ>L@eyVq1!5l86$tKSw8&d;!g|`gKg4wf zA`0zA64Hc8r^NGbRDoQT@42C}FhuQ;0x^%v3MBMD|XzmHM@0?y2GE;KTy7+ zZ~QKH-lsgT^BH58Nf6aS3dB6FDv-F}Lu)!Q=np}JT3Gk0H$GzK*hN7IEBnI$C3($&^&XJrEhq zFj)mHsEtGnAEZFc$K;UBEHpPSp3s(LUgHVt-kePqNmfW}Yjn>nr#6a^4b*v(0`a$weJ`h1be^LX_rOqZ4uT*GBK#iDX(C%L@vLXqrZs+oNz0@^#1!xc zU}80es|uvE8vhO!C}i8k{JB&~m17?=e;&dv$Z2x%ohB4S{T|xzNQ?fEERCN``a?`G z{!W?L2BkOcU1pByq5=_qkJ%c<{)%~j2%4t#eecVtxL_TKMZ*77XPS%?>?fZewAG~r zg5yN}9@+`omOms%<0n)8kg{O)6zw5x%0};^0tx*d+ULfgKSU_2*e;aaXXe;MI;aE? z?)Lp}SARbC>Buv*LKe@gvRn-NZ+@O_C^0lQD!+$zGO*we5tH$y-Ep}>X*?hK{35yX zx5kLfPOfT_b4`K7{T^DyZpa^kre29-Uu5RkO~XbLB;?!l=7Jk#tJ$i+^#w~5-#6dw z`rndP6O*7^k2wBAvb4UgJ0THgL~30O^dm@oVOLLlZd*I!p-RZ-NDhE7vnfJ>!_nEW z{5f1wAmVywcVD=NyhOil@!iau_#7{2S+Gh>oa4yy$893GpIA^;If(-_y@KM#`Ox~c zZ$XK6yT_aHRbZFOJ|`<02bT@*6_4uFCQVyd7)KY<@CW04qdI3fKz6rEfw+RJ3Ixg_ zcznPEe^UALjIT9O_bMFIS1Ny86R>NO*K8tbG)mA>C{Rb*H`fhHyY$RE=Mqh~OJ9mSU$4pM zu(L|`LqPH5nY7aedbkfdx2R=yVZVQ{$Up_;GA1nSsybhg=4R}6bkV1Y-4>O|Nrx0j zabVsXUsr9)={QEqYpuA1n!d+(a>!ryGPHc9VI&>O-1Js+#(xsC9*pTv= zn{6k|CL1`{y*Zz&5ov-$0xGNk>>jBM@}Ac}G{-rI6;dGOK*(z1f&T{|&vyTQy=@7r zGkMuiAZ-OJWHj}Hd5#^`4G@`^Z{ox51QTZ(sBBz%LccwG$sbh^g!Z_LrK3LT3xSCV zrn{`b*{)Kuc?Ubob1Fr^SxAADL)HArKcc%k;S&P724Zrs1)4(Ph3sr>{@A2IB=7|k zEh~iQXHdRV=1FgQ23ZwB3BBKcP5SllexU;+Dgdx!W0U+Jb5_M3(NE|&7tRBvhO$Co zZckYEPxvA}o$r3aw^Ld{-e@P{t&xxdDMxT!Qa)E&or+2W-M;ED1DH;}BLyN6W|Bp+ z5m;VK^kx_D!~xmPhXn<~ppnZ1g#g+?iS^h2X?$wfkaN2(SqL>UzI~yB=xAl+$DGobPu^OzPm|z~@d%=XG-MU|8 z?p&@Z5V2amO|F5K%Sw(%3l4wp4tw`ncl0-CNdgzk(p@SEAhh7ws;__$r?6So4{Eq?DwddbgII9^|;(MA@R&aSqQ9xdv&q8 z0~K8B27V7+sA$&cq$oyASg%QQ6zviSf=GY_!T6-%k`oRk8xjg+n~BeD=BAh=^n2(g z@*@5aQABVo`(S^LDUYYz3FRgT!ZA=z1HDrECaM?Q2;U7+_3U7q*p|vXS$sZa{2^KB z3*((d)m#Z;D8TBqC^J^&6Vnf5d^}1>ph%rdsEXzxvZqa?WmTKRAttfC6KuRkKP*f?Yy^oNWF)1VIo2D3IP{bDsSyYLmqK9l)_`6%^IG zym(~PAV`4_1W^i@64M;nRAf> zX(ouI^M9eptGd;;WW>;6LV;kyPHT2k1^$5p%xVwjJl?kz*EL#=?5T1boy}y3p5LX< zMGB-c&@r&Hn%QIS_l9oe;YFJFaB03CA_P$y^e1PZ%06I+?@eSYWMdv1+2rV=7VQI_ zc$tEH$3u?^wkID4@$pN3?DOl}QHA)M%N`3N!ETTexxai3Em9!Wf%}LF-T%3njQ+7T zyk4iw)WzIJ<#4-%yacPw?9tP(Onk=>axxvr2&a7_mJABpR_ zM*4eD6&Npa*{GYLRUkFw_Mr7`@1DLSqaDlEQo|w#rYrVJiUP^d<2?`Xt0c~`Kt?EH zk%cPX>~m(%NwgSILDquF3SbKlzr>*a&FHMwbkMLTaa~uKJ;$&r5Yct7!bxxHTly79 z@B4d}pLgHlZEi!bBhV_43(Qv>3L#9g`K?Oy-s@zgMSD90I_qqpxbkON%}K6&{wg0G1-G16iVZ9*`qw{ zGml;`Wx=x%?47L6kT~~l< zl1ig@zP*cIYw#Dva}n`-AUe7`S_mM;}Syz z@;9OhQp%Tbu542pf|WDO2gu;A6HH9;)u4$`O6&#_*L;5Y-NzQC^any{>ewW5;Hg zhz=@u4%9hH9P>;w^0y5W3Iw?g=+>A6gxE2Ag~4RMAi}fkrW6qB=|p3O!8Y8Ji&+zD@DyK z*xjk)oEhNsMvy`iz;}*?3cD||OSs=Nn*EKkF1o;hx}h*$VrYnl9EPJQ6BE%eM!IEF zu9FI|t%yXz<>iA=2*P=SM`HHlCG~V [RESULT_DEMIME] +# +# RUN_PARMS: wms_uvraster_map_reprojection_extent_smaller_than_layer.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=30,-170,60,-100&CRS=EPSG:4326&WIDTH=400&HEIGHT=200&LAYERS=test&STYLES=&FORMAT=image/png&TRANSPARENT=TRUE" > [RESULT_DEMIME] +# +# RUN_PARMS: wms_uvraster_map_reprojection_extent_intersecting_layer.png [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=30,-200,60,-100&CRS=EPSG:4326&WIDTH=400&HEIGHT=200&LAYERS=test&STYLES=&FORMAT=image/png&TRANSPARENT=TRUE" > [RESULT_DEMIME] + +MAP + NAME test + EXTENT -180 -90 180 90 + MAXSIZE 4096 + SIZE 500 300 + SHAPEPATH ./data + + SYMBOL + NAME "arrow_wind" + TYPE vector + FILLED true + POINTS + 0 1.2 + 6 1.2 + 6 3 + 10 0 + 6 -3 + 6 -1.2 + 0 -1.2 + 0 1.2 + END + END + + PROJECTION + "init=epsg:4326" + END + + WEB + METADATA + "ows_enable_request" "*" + END + END + + LAYER + NAME "test" + TYPE POINT + CONNECTIONTYPE uvraster + PROCESSING "BANDS=1,2" + PROCESSING "UV_SPACING=20" + + PROJECTION + "proj=stere" + "lat_0=90" + "lat_ts=60" + "lon_0=249" + "k=90" + "x_0=0" + "y_0=0" + "a=6371229" + "b=6371229" + "units=m" + "no_defs" + END + + DATA 'wms_uvraster_map_reprojection.tif' + + CLASS + STYLE + COLOR 0 0 127 + SYMBOL "arrow_wind" + ANGLE [uv_angle] + SIZE 12 + END + END + END +END From 31c25df6be067a59ffb89100f215d2d65840e364 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 9 Nov 2017 11:50:33 +0100 Subject: [PATCH 183/221] WCS 2.0 DescribeCoverage result: fix RectifiedGrid.origin.Point to correspond to the coordinate of the pixel center (fixes #5511) --- mapwcs20.c | 24 +++++++++++------- msautotest/wxs/expected/wcs_20_desc.txt | 2 +- msautotest/wxs/expected/wcs_20_desc.xml | 2 +- msautotest/wxs/expected/wcs_20_desc_bands.xml | 4 +-- .../wxs/expected/wcs_20_getcov_bands_name.dat | Bin 23837 -> 23837 bytes .../expected/wcs_20_getcov_bands_name_new.dat | Bin 24058 -> 24058 bytes ...wcs_20_getcov_bands_name_new_reproject.dat | Bin 24081 -> 24065 bytes .../wxs/expected/wcs_20_getcov_full.dat | Bin 4593 -> 4593 bytes .../wxs/expected/wcs_20_getcov_grd_mp.dat | 2 +- .../wxs/expected/wcs_20_getcov_reproj.dat | Bin 4624 -> 4625 bytes .../wxs/expected/wcs_20_post_bands_name.dat | Bin 23837 -> 23837 bytes .../expected/wcs_20_post_bands_name_new.dat | Bin 24058 -> 24058 bytes msautotest/wxs/expected/wcs_20_post_desc.xml | 2 +- .../wcs_20_post_getcov_full_multipart.dat | Bin 4544 -> 4544 bytes .../wxs/expected/wcs_mask_20_getcov_full.dat | Bin 4544 -> 4544 bytes .../expected/wcs_mask_20_getcov_grd_mp.dat | 2 +- .../expected/wcs_mask_20_getcov_reproj.dat | Bin 4624 -> 4625 bytes 17 files changed, 22 insertions(+), 16 deletions(-) diff --git a/mapwcs20.c b/mapwcs20.c index 0b03893323..9c6b215484 100644 --- a/mapwcs20.c +++ b/mapwcs20.c @@ -2009,12 +2009,18 @@ static void msWCSCommon20_CreateDomainSet(layerObj* layer, wcs20coverageMetadata { xmlNodePtr psDomainSet, psGrid, psLimits, psGridEnvelope, psOrigin, psOffsetX, psOffsetY; - char low[100], high[100], id[100], point[100], resx[100], resy[100], axisLabels[100]; + char low[100], high[100], id[100], point[100]; + char offsetVector1[100], offsetVector2[100], axisLabels[100]; psDomainSet = xmlNewChild( psRoot, psGmlNs, BAD_CAST "domainSet", NULL); { psGrid = xmlNewChild(psDomainSet, psGmlNs, BAD_CAST "RectifiedGrid", NULL); { + double x0 = cm->geotransform[0]+cm->geotransform[1]/2+cm->geotransform[2]/2; + double y0 = cm->geotransform[3]+cm->geotransform[4]/2+cm->geotransform[5]/2; + double resx = cm->geotransform[1]; + double resy = cm->geotransform[5]; + xmlNewProp(psGrid, BAD_CAST "dimension", BAD_CAST "2"); snprintf(id, sizeof(id), "grid_%s", layer->name); xmlNewNsProp(psGrid, psGmlNs, BAD_CAST "id", BAD_CAST id); @@ -2050,9 +2056,9 @@ static void msWCSCommon20_CreateDomainSet(layerObj* layer, wcs20coverageMetadata psOrigin = xmlNewChild(psGrid, psGmlNs, BAD_CAST "origin", NULL); { if (swapAxes == MS_FALSE) { - snprintf(point, sizeof(point), "%f %f", cm->extent.minx, cm->extent.maxy); + snprintf(point, sizeof(point), "%f %f", x0, y0); } else { - snprintf(point, sizeof(point), "%f %f", cm->extent.maxy, cm->extent.minx); + snprintf(point, sizeof(point), "%f %f", y0, x0); } psOrigin = xmlNewChild(psOrigin, psGmlNs, BAD_CAST "Point", NULL); snprintf(id, sizeof(id), "grid_origin_%s", layer->name); @@ -2063,14 +2069,14 @@ static void msWCSCommon20_CreateDomainSet(layerObj* layer, wcs20coverageMetadata } if (swapAxes == MS_FALSE) { - snprintf(resx, sizeof(resx), "%f 0", cm->xresolution); - snprintf(resy, sizeof(resy), "0 %f", -fabs(cm->yresolution)); + snprintf(offsetVector1, sizeof(offsetVector1), "%f 0", resx); + snprintf(offsetVector2, sizeof(offsetVector2), "0 %f", resy); } else { - snprintf(resx, sizeof(resx), "0 %f", cm->xresolution); - snprintf(resy, sizeof(resy), "%f 0", -fabs(cm->yresolution)); + snprintf(offsetVector1, sizeof(offsetVector1), "0 %f", resx); + snprintf(offsetVector2, sizeof(offsetVector2), "%f 0", resy); } - psOffsetX = xmlNewChild(psGrid, psGmlNs, BAD_CAST "offsetVector", BAD_CAST resx); - psOffsetY = xmlNewChild(psGrid, psGmlNs, BAD_CAST "offsetVector", BAD_CAST resy); + psOffsetX = xmlNewChild(psGrid, psGmlNs, BAD_CAST "offsetVector", BAD_CAST offsetVector1); + psOffsetY = xmlNewChild(psGrid, psGmlNs, BAD_CAST "offsetVector", BAD_CAST offsetVector2); xmlNewProp(psOffsetX, BAD_CAST "srsName", BAD_CAST cm->srs_uri); xmlNewProp(psOffsetY, BAD_CAST "srsName", BAD_CAST cm->srs_uri); diff --git a/msautotest/wxs/expected/wcs_20_desc.txt b/msautotest/wxs/expected/wcs_20_desc.txt index 86657fdd9b..521efaf2ad 100644 --- a/msautotest/wxs/expected/wcs_20_desc.txt +++ b/msautotest/wxs/expected/wcs_20_desc.txt @@ -21,7 +21,7 @@ Content-Type: text/xml; charset=UTF-8 x y - 0.000000 300.000000 + 5.000000 295.000000 10.000000 0 diff --git a/msautotest/wxs/expected/wcs_20_desc.xml b/msautotest/wxs/expected/wcs_20_desc.xml index 20bc0d133b..aa21f49384 100644 --- a/msautotest/wxs/expected/wcs_20_desc.xml +++ b/msautotest/wxs/expected/wcs_20_desc.xml @@ -19,7 +19,7 @@ x y - 0.000000 300.000000 + 5.000000 295.000000 10.000000 0 diff --git a/msautotest/wxs/expected/wcs_20_desc_bands.xml b/msautotest/wxs/expected/wcs_20_desc_bands.xml index bd08d5cdfc..c60cbe37ee 100644 --- a/msautotest/wxs/expected/wcs_20_desc_bands.xml +++ b/msautotest/wxs/expected/wcs_20_desc_bands.xml @@ -19,7 +19,7 @@ lat long - 49.891143 14.470271 + 49.874157 14.487132 0 0.033722 @@ -207,7 +207,7 @@ lat long - 49.891143 14.470271 + 49.874157 14.487132 0 0.033722 diff --git a/msautotest/wxs/expected/wcs_20_getcov_bands_name.dat b/msautotest/wxs/expected/wcs_20_getcov_bands_name.dat index c3bf3a576590c2e69be30ea9df351b98bedc0578..a092f6bca92dfcc3f3574f978d2abb6dcc9336da 100644 GIT binary patch delta 30 mcmbQci*fEQ#tqJ_{N^TxrsfKUCVD0o=7z>bn}b+ShXVkRj0o5O delta 30 mcmbQci*fEQ#tqJ_{Fa7>CdLYeCVD3321e$Fn}b+ShXVkQ{|L?i diff --git a/msautotest/wxs/expected/wcs_20_getcov_bands_name_new.dat b/msautotest/wxs/expected/wcs_20_getcov_bands_name_new.dat index 5eeb68cb5829ea5dcb15a8176dd17982d3340b52..a4d19036af9e41e3dc1f953437ce194da10ed68e 100644 GIT binary patch delta 30 mcmeyhoAK9f#tr_g{N^TxrsfKUCVD0o=7z>bo8wsLL;wJ$UkQEy delta 30 mcmeyhoAK9f#tr_g{Fa7>CdLYeCVD3321e$Fo8wsLL;wJ#(g}0` diff --git a/msautotest/wxs/expected/wcs_20_getcov_bands_name_new_reproject.dat b/msautotest/wxs/expected/wcs_20_getcov_bands_name_new_reproject.dat index 5b5379baa84255145c81f4adefe6242f715b34a9..1e5d2d84e2b31c24f848edde1f9b7f2cf21d4bed 100644 GIT binary patch delta 62 zcmbQZhp}-F11pcIo&gvr7+IQb_F-Mh0|0112O11pb#o&gvr7#kRD_F-Mh0{~~12M_=N diff --git a/msautotest/wxs/expected/wcs_20_getcov_grd_mp.dat b/msautotest/wxs/expected/wcs_20_getcov_grd_mp.dat index c9b662e61d..0a9046a394 100644 --- a/msautotest/wxs/expected/wcs_20_getcov_grd_mp.dat +++ b/msautotest/wxs/expected/wcs_20_getcov_grd_mp.dat @@ -23,7 +23,7 @@ Content-Type: application/gml+xml; charset=UTF-8 x y - 0.000000 300.000000 + 5.000000 295.000000 10.000000 0 diff --git a/msautotest/wxs/expected/wcs_20_getcov_reproj.dat b/msautotest/wxs/expected/wcs_20_getcov_reproj.dat index 6eb89c2e7422a243500c59700c8a1932d97429d7..96a1fdd2238ef7fc075f7e2c44eee69b4d2e3679 100644 GIT binary patch delta 58 tcmbQBGErqi46Cq_rKz3)7%0FPlM7gzISdUT!jpfoCc`X(i$uRcjRJJwT E0Gvn;egFUf diff --git a/msautotest/wxs/expected/wcs_20_post_bands_name.dat b/msautotest/wxs/expected/wcs_20_post_bands_name.dat index c3bf3a576590c2e69be30ea9df351b98bedc0578..a092f6bca92dfcc3f3574f978d2abb6dcc9336da 100644 GIT binary patch delta 30 mcmbQci*fEQ#tqJ_{N^TxrsfKUCVD0o=7z>bn}b+ShXVkRj0o5O delta 30 mcmbQci*fEQ#tqJ_{Fa7>CdLYeCVD3321e$Fn}b+ShXVkQ{|L?i diff --git a/msautotest/wxs/expected/wcs_20_post_bands_name_new.dat b/msautotest/wxs/expected/wcs_20_post_bands_name_new.dat index 5eeb68cb5829ea5dcb15a8176dd17982d3340b52..a4d19036af9e41e3dc1f953437ce194da10ed68e 100644 GIT binary patch delta 30 mcmeyhoAK9f#tr_g{N^TxrsfKUCVD0o=7z>bo8wsLL;wJ$UkQEy delta 30 mcmeyhoAK9f#tr_g{Fa7>CdLYeCVD3321e$Fo8wsLL;wJ#(g}0` diff --git a/msautotest/wxs/expected/wcs_20_post_desc.xml b/msautotest/wxs/expected/wcs_20_post_desc.xml index 796e7d7a98..9da855cbcb 100644 --- a/msautotest/wxs/expected/wcs_20_post_desc.xml +++ b/msautotest/wxs/expected/wcs_20_post_desc.xml @@ -19,7 +19,7 @@ x y - 0.000000 300.000000 + 5.000000 295.000000 10.000000 0 diff --git a/msautotest/wxs/expected/wcs_20_post_getcov_full_multipart.dat b/msautotest/wxs/expected/wcs_20_post_getcov_full_multipart.dat index 5de0d5c258f79da6f7c8613ff58c8afc05aef099..c97605f1164aab02203186f02a8df22979c6b536 100644 GIT binary patch delta 25 dcmX@0d_Z{vKP!)^o&gvr7+IQbmS$bb0{~ih23`OF delta 25 dcmX@0d_Z{vKP!)co&gvr7#kRDmS$bb0{~gh2220| diff --git a/msautotest/wxs/expected/wcs_mask_20_getcov_full.dat b/msautotest/wxs/expected/wcs_mask_20_getcov_full.dat index 10196dde277872816c4e2e223061f08bd9b32076..a2fb1d35f484106cb19b0b991963a298b7dc9673 100644 GIT binary patch delta 25 dcmX@0d_Z{vKP!)^o&gvr7+IQbmS$bb0{~ih23`OF delta 25 dcmX@0d_Z{vKP!)co&gvr7#kRDmS$bb0{~gh2220| diff --git a/msautotest/wxs/expected/wcs_mask_20_getcov_grd_mp.dat b/msautotest/wxs/expected/wcs_mask_20_getcov_grd_mp.dat index 4eb914a254..822bbe8eed 100644 --- a/msautotest/wxs/expected/wcs_mask_20_getcov_grd_mp.dat +++ b/msautotest/wxs/expected/wcs_mask_20_getcov_grd_mp.dat @@ -23,7 +23,7 @@ Content-Type: application/gml+xml; charset=UTF-8 x y - 0.000000 300.000000 + 5.000000 295.000000 10.000000 0 diff --git a/msautotest/wxs/expected/wcs_mask_20_getcov_reproj.dat b/msautotest/wxs/expected/wcs_mask_20_getcov_reproj.dat index 563a404c14c6223d885ab7fdf710bc67df271754..36ce42063c89cc0567651e71c769074dc067638b 100644 GIT binary patch delta 58 tcmbQBGErqi46Cq_rKz3)7%0FPlM7gzISdUT!jpfoCc`X(i$uRcjRJJwT E0Gvn;egFUf From 3be54424026e24fb37b3bff82027b28484100452 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 9 Nov 2017 18:07:14 +0100 Subject: [PATCH 184/221] WCS 2.0 RectifiedGrid: use 'lon lat' and 'x y' labels even with CRS with 'inverted axis' order My understanding of the thread at https://lists.osgeo.org/pipermail/gdal-dev/2017-November/047650.html is that the RectifiedGrid.axisLabels element should reflect the way the grid axis are ordered (and not the axis order of the CRS as mandated by EPSG). As our offsetVector s are ordered in the GIS friendly order, the labels should reflect that as well Note that according to Peter Baumann per https://lists.osgeo.org/pipermail/gdal-dev/2017-November/047668.html the content could be pretty much anything. --- mapwcs20.c | 12 ++---------- msautotest/wxs/expected/wcs_20_desc_bands.xml | 4 ++-- .../wxs/expected/wcs_20_getcov_bands_name.dat | Bin 23837 -> 23837 bytes .../expected/wcs_20_getcov_bands_name_new.dat | Bin 24058 -> 24058 bytes .../wxs/expected/wcs_20_getcov_reproj.dat | Bin 4625 -> 4625 bytes .../wxs/expected/wcs_20_post_bands_name.dat | Bin 23837 -> 23837 bytes .../expected/wcs_20_post_bands_name_new.dat | Bin 24058 -> 24058 bytes .../expected/wcs_mask_20_getcov_reproj.dat | Bin 4625 -> 4625 bytes 8 files changed, 4 insertions(+), 12 deletions(-) diff --git a/mapwcs20.c b/mapwcs20.c index 9c6b215484..020c0cbf6b 100644 --- a/mapwcs20.c +++ b/mapwcs20.c @@ -2038,17 +2038,9 @@ static void msWCSCommon20_CreateDomainSet(layerObj* layer, wcs20coverageMetadata } if(projection->proj != NULL && pj_is_latlong(projection->proj)) { - if (swapAxes == MS_FALSE) { - strlcpy(axisLabels, "long lat", sizeof(axisLabels)); - } else { - strlcpy(axisLabels, "lat long", sizeof(axisLabels)); - } + strlcpy(axisLabels, "long lat", sizeof(axisLabels)); } else { - if (swapAxes == MS_FALSE) { - strlcpy(axisLabels, "x y", sizeof(axisLabels)); - } else { - strlcpy(axisLabels, "y x", sizeof(axisLabels)); - } + strlcpy(axisLabels, "x y", sizeof(axisLabels)); } xmlNewChild(psGrid, psGmlNs, BAD_CAST "axisLabels", BAD_CAST axisLabels); diff --git a/msautotest/wxs/expected/wcs_20_desc_bands.xml b/msautotest/wxs/expected/wcs_20_desc_bands.xml index c60cbe37ee..21f1f089ac 100644 --- a/msautotest/wxs/expected/wcs_20_desc_bands.xml +++ b/msautotest/wxs/expected/wcs_20_desc_bands.xml @@ -16,7 +16,7 @@ 104 60 - lat long + long lat 49.874157 14.487132 @@ -204,7 +204,7 @@ 104 60 - lat long + long lat 49.874157 14.487132 diff --git a/msautotest/wxs/expected/wcs_20_getcov_bands_name.dat b/msautotest/wxs/expected/wcs_20_getcov_bands_name.dat index a092f6bca92dfcc3f3574f978d2abb6dcc9336da..e21adb9098d2cd5cd68d8c1aa54000b06cd0c294 100644 GIT binary patch delta 22 ecmbQci*fEQ#tm~=*z@z!6><_wHZNwWiU0sa`N-iH!o(XiU0sg diff --git a/msautotest/wxs/expected/wcs_20_getcov_bands_name_new.dat b/msautotest/wxs/expected/wcs_20_getcov_bands_name_new.dat index a4d19036af9e41e3dc1f953437ce194da10ed68e..cf9771054973a0c61baa36bac3181abcf83e81e3 100644 GIT binary patch delta 22 ecmeyhoAK9f#tlnY*z@z!6><_wHm_#!j|2dC@(FtY delta 22 ecmeyhoAK9f#tlnY*b_?>a`N-iH?L;#j|2dCmkE0S diff --git a/msautotest/wxs/expected/wcs_20_getcov_reproj.dat b/msautotest/wxs/expected/wcs_20_getcov_reproj.dat index 96a1fdd2238ef7fc075f7e2c44eee69b4d2e3679..10c1c8df1b846958a3c31c4d3543e3debfa1535f 100644 GIT binary patch delta 20 bcmbQJGErs2E*AFuymW<}#FEViSps+gP%;Nv delta 20 bcmbQJGErs2E*AF05`~=ny!6cnSps+gPuB-p diff --git a/msautotest/wxs/expected/wcs_20_post_bands_name.dat b/msautotest/wxs/expected/wcs_20_post_bands_name.dat index a092f6bca92dfcc3f3574f978d2abb6dcc9336da..e21adb9098d2cd5cd68d8c1aa54000b06cd0c294 100644 GIT binary patch delta 22 ecmbQci*fEQ#tm~=*z@z!6><_wHZNwWiU0sa`N-iH!o(XiU0sg diff --git a/msautotest/wxs/expected/wcs_20_post_bands_name_new.dat b/msautotest/wxs/expected/wcs_20_post_bands_name_new.dat index a4d19036af9e41e3dc1f953437ce194da10ed68e..cf9771054973a0c61baa36bac3181abcf83e81e3 100644 GIT binary patch delta 22 ecmeyhoAK9f#tlnY*z@z!6><_wHm_#!j|2dC@(FtY delta 22 ecmeyhoAK9f#tlnY*b_?>a`N-iH?L;#j|2dCmkE0S diff --git a/msautotest/wxs/expected/wcs_mask_20_getcov_reproj.dat b/msautotest/wxs/expected/wcs_mask_20_getcov_reproj.dat index 36ce42063c89cc0567651e71c769074dc067638b..7c84505af114f794aceac4983fcdca000f12d26b 100644 GIT binary patch delta 20 bcmbQJGErs2E*AFuymW<}#FEViSps+gP%;Nv delta 20 bcmbQJGErs2E*AF05`~=ny!6cnSps+gPuB-p From 572bd765e7a0f55b8826a9bdbd2b661e07ff44b9 Mon Sep 17 00:00:00 2001 From: "Martin.Icking" Date: Fri, 10 Nov 2017 14:59:18 +0100 Subject: [PATCH 185/221] Added the option to set a default value for variable substitution in the map's WEB section. To do that there is a new method applyHashTableDefaultSubstitutions that is being called in msApplyDefaultSubstitutions with the map's WEB section as the hash table to work on --- mapfile.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/mapfile.c b/mapfile.c index a8a48bf9d7..10596a1e42 100644 --- a/mapfile.c +++ b/mapfile.c @@ -7140,6 +7140,25 @@ static void applyLayerDefaultSubstitutions(layerObj *layer, hashTableObj *table) return; } +static void applyHashTableDefaultSubstitutions(hashTableObj *hashTab, hashTableObj *table) +{ + int i; + const char *default_key = msFirstKeyFromHashTable(table); + while (default_key) { + if (!strncmp(default_key, "default_", 8)) { + size_t buffer_size = (strlen(default_key) - 5); + char *to = msLookupHashTable(table, default_key); + char *tag = (char *)msSmallMalloc(buffer_size); + snprintf(tag, buffer_size, "%%%s%%", &(default_key[8])); + + hashTableSubstituteString(hashTab, tag, to); + free(tag); + } + default_key = msNextKeyFromHashTable(table, default_key); + } + return; +} + /* ** Loop through layer metadata for keys that have a default_%key% pattern to replace ** remaining %key% entries by their default value. @@ -7165,6 +7184,7 @@ void msApplyDefaultSubstitutions(mapObj *map) applyLayerDefaultSubstitutions(layer, &(layer->validation)); /* ...then layer settings... */ applyLayerDefaultSubstitutions(layer, &(map->web.validation)); /* ...and finally web settings */ } + applyHashTableDefaultSubstitutions(&map->web.metadata, &(map->web.validation)); } char *_get_param_value(const char *key, char **names, char **values, int npairs) { From d1907912880b124c97472066ef20e0c61bf3c213 Mon Sep 17 00:00:00 2001 From: "Martin.Icking" Date: Fri, 30 Jun 2017 16:51:53 +0200 Subject: [PATCH 186/221] commented out vtable entries for msOracleSpatialEscapePropertyName. By that we don't need the additional logic described below anymore Revert "Enclose the sortby property in double quotes by putting the result of msLayerEscapePropertyName into double quotes" This reverts commit d5f89a3353854b0f6a8eda0758d99e74372fdf9f. --- maplayer.c | 13 +------------ maporaclespatial.c | 4 ++-- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/maplayer.c b/maplayer.c index 5834924c1a..18bf221d1f 100644 --- a/maplayer.c +++ b/maplayer.c @@ -1606,18 +1606,7 @@ char* msLayerBuildSQLOrderBy(layerObj *layer) int i; for(i=0;isortBy.nProperties;i++) { char* escaped = msLayerEscapePropertyName(layer, layer->sortBy.properties[i].item); - //Enclose property name in double quotes (if it isn't yet) to ensure that mixed case property names are supported - if (escaped[0] != '"') - { - size_t propertyLen = strlen(escaped); - escaped = msSmallRealloc(escaped, propertyLen + 3); - memmove(escaped + 1, escaped, propertyLen); - escaped[0] = '\"'; - escaped[propertyLen+1] = '\"'; - escaped[propertyLen + 2] = 0; - - } - if (i > 0) + if( i > 0 ) strOrderBy = msStringConcatenate(strOrderBy, ", "); strOrderBy = msStringConcatenate(strOrderBy, escaped); if( layer->sortBy.properties[i].sortOrder == SORT_DESC ) diff --git a/maporaclespatial.c b/maporaclespatial.c index 276f4a67d6..efbfa1f811 100644 --- a/maporaclespatial.c +++ b/maporaclespatial.c @@ -3975,7 +3975,7 @@ PluginInitializeVirtualTable(layerVTableObj* vtable, layerObj *layer) vtable->LayerApplyFilterToLayer = msLayerApplyCondSQLFilterToLayer; vtable->LayerSetTimeFilter = msLayerMakeBackticsTimeFilter; //vtable->LayerSetTimeFilter = msOracleSpatialLayerSetTimeFilter; - vtable->LayerEscapePropertyName = msOracleSpatialEscapePropertyName; + //vtable->LayerEscapePropertyName = msOracleSpatialEscapePropertyName; /* layer->vtable->LayerGetNumFeatures, use default */ /* layer->vtable->LayerGetAutoProjection = msOracleSpatialLayerGetAutoProjection; Disabled until tested */ vtable->LayerEnablePaging = msOracleSpatialEnablePaging; @@ -4009,7 +4009,7 @@ int msOracleSpatialLayerInitializeVirtualTable(layerObj *layer) layer->vtable->LayerApplyFilterToLayer = msLayerApplyCondSQLFilterToLayer; layer->vtable->LayerSetTimeFilter = msLayerMakeBackticsTimeFilter; //layer->vtable->LayerSetTimeFilter = msOracleSpatialLayerSetTimeFilter; - layer->vtable->LayerEscapePropertyName = msOracleSpatialEscapePropertyName; + //layer->vtable->LayerEscapePropertyName = msOracleSpatialEscapePropertyName; /* layer->vtable->LayerCreateItems, use default */ /* layer->vtable->LayerGetNumFeatures, use default */ /* layer->vtable->LayerGetAutoProjection = msOracleSpatialLayerGetAutoProjection; Disabled until tested */ From 4c5fa185ad9940d6339bf1e849143a6e553f7aa9 Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Wed, 15 Nov 2017 15:24:35 -0400 Subject: [PATCH 187/221] update for 7.0.7 release --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d8373aeb3f..3422ca8b92 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ include(CheckCSourceCompiles) set (MapServer_VERSION_MAJOR 7) set (MapServer_VERSION_MINOR 0) -set (MapServer_VERSION_REVISION 6) +set (MapServer_VERSION_REVISION 7) set (MapServer_VERSION_SUFFIX "") set(TARGET_VERSION_MAJOR ${MapServer_VERSION_MAJOR}) From 116c7d235220e3e4cfea0d19c958e21739b309b9 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 16 Nov 2017 23:36:25 +0100 Subject: [PATCH 188/221] UVRaster: better result quality for rasters whose longitude span from 0 to 360 deg (complementary fix for #5502) --- mapdraw.c | 14 ++ mapraster.c | 15 +- mapserver.h | 2 + mapuvraster.c | 167 ++++++++++++++++-- ...uvraster_lonwrap180_accross_hemisphere.png | Bin 33924 -> 43003 bytes ...ms_uvraster_lonwrap180_east_hemisphere.png | Bin 41502 -> 44548 bytes ...ms_uvraster_lonwrap180_west_hemisphere.png | Bin 41205 -> 40976 bytes .../wms_uvraster_lonwrap180_whole_world.png | Bin 102304 -> 86165 bytes 8 files changed, 177 insertions(+), 21 deletions(-) diff --git a/mapdraw.c b/mapdraw.c index a064a53807..f95b572855 100644 --- a/mapdraw.c +++ b/mapdraw.c @@ -959,6 +959,14 @@ int msDrawVectorLayer(mapObj *map, layerObj *layer, imageObj *image) if((map->projection.numargs > 0) && (layer->projection.numargs > 0)) { int bDone = MS_FALSE; + if( layer->connectiontype == MS_UVRASTER ) + { + /* Nasty hack to make msUVRASTERLayerWhichShapes() aware that the */ + /* original area of interest is (map->extent, map->projection)... */ + /* Useful when dealin with UVRASTER that extend beyond 180 deg */ + msUVRASTERLayerUseMapExtentAndProjectionForNextWhichShapes( layer, map ); + } + /* For UVRaster, it is important that the searchrect is not too large */ /* to avoid insufficient intermediate raster resolution, which could */ /* happen if we use the default code path, given potential reprojection */ @@ -1058,6 +1066,12 @@ int msDrawVectorLayer(mapObj *map, layerObj *layer, imageObj *image) } status = msLayerWhichShapes(layer, searchrect, MS_FALSE); + + if( layer->connectiontype == MS_UVRASTER ) + { + msUVRASTERLayerUseMapExtentAndProjectionForNextWhichShapes( layer, NULL ); + } + if(status == MS_DONE) { /* no overlap */ msLayerClose(layer); return MS_SUCCESS; diff --git a/mapraster.c b/mapraster.c index 1fd5bea3ea..1d6111eb4b 100644 --- a/mapraster.c +++ b/mapraster.c @@ -690,14 +690,23 @@ int msDrawRasterLayerLow(mapObj *map, layerObj *layer, imageObj *image, } if(layer->connectiontype != MS_KERNELDENSITY) { + char* pszPath; if(strlen(filename) == 0) continue; if(layer->debug == MS_TRUE) msDebug( "msDrawRasterLayerLow(%s): Filename is: %s\n", layer->name, filename); - msDrawRasterBuildRasterPath(map, layer, filename, szPath); + if( strncmp(filename, "debug == MS_TRUE) - msDebug("msDrawRasterLayerLow(%s): Path is: %s\n", layer->name, szPath); + msDebug("msDrawRasterLayerLow(%s): Path is: %s\n", layer->name, pszPath); /* ** Note: because we do decryption after the above path expansion @@ -706,7 +715,7 @@ int msDrawRasterLayerLow(mapObj *map, layerObj *layer, imageObj *image, ** components. But that is mostly ok, since stuff like sde,postgres and ** oracle georaster do not use real paths. */ - decrypted_path = msDecryptStringTokens( map, szPath ); + decrypted_path = msDecryptStringTokens( map, pszPath ); if( decrypted_path == NULL ) return MS_FAILURE; diff --git a/mapserver.h b/mapserver.h index df7eeb9c64..f2b0b7298e 100644 --- a/mapserver.h +++ b/mapserver.h @@ -2503,6 +2503,8 @@ void msPopulateTextSymbolForLabelAndString(textSymbolObj *ts, labelObj *l, char MS_DLL_EXPORT int msUnionLayerInitializeVirtualTable(layerObj *layer); MS_DLL_EXPORT void msPluginFreeVirtualTableFactory(void); + void msUVRASTERLayerUseMapExtentAndProjectionForNextWhichShapes(layerObj* layer, mapObj* map); + /* ==================================================================== */ /* Prototypes for functions in mapdraw.c */ /* ==================================================================== */ diff --git a/mapuvraster.c b/mapuvraster.c index 9d44f00595..ff6ae0c991 100644 --- a/mapuvraster.c +++ b/mapuvraster.c @@ -84,8 +84,17 @@ typedef struct { int next_shape; int x, y; /* used internally in msUVRasterLayerNextShape() */ + mapObj* mapToUseForWhichShapes; /* set if the map->extent and map->projection are valid in msUVRASTERLayerWhichShapes() */ + } uvRasterLayerInfo; +void msUVRASTERLayerUseMapExtentAndProjectionForNextWhichShapes(layerObj* layer, + mapObj* map) +{ + uvRasterLayerInfo *uvlinfo = (uvRasterLayerInfo *) layer->layerinfo; + uvlinfo->mapToUseForWhichShapes = map; +} + static int msUVRASTERLayerInitItemInfo(layerObj *layer) { uvRasterLayerInfo *uvlinfo = (uvRasterLayerInfo *) layer->layerinfo; @@ -347,7 +356,11 @@ int msUVRASTERLayerWhichShapes(layerObj *layer, rectObj rect, int isQuery) char **savedProcessing = NULL; int bHasLonWrap = MS_FALSE; double dfLonWrap = 0.0; - + rectObj oldLayerExtent; + char* oldLayerData = NULL; + projectionObj oldLayerProjection; + int ret; + if (layer->debug) msDebug("Entering msUVRASTERLayerWhichShapes().\n"); @@ -387,9 +400,6 @@ int msUVRASTERLayerWhichShapes(layerObj *layer, rectObj rect, int isQuery) width = (int)ceil(layer->map->width/spacing); height = (int)ceil(layer->map->height/spacing); - map_cellsize = MS_MAX(MS_CELLSIZE(rect.minx, rect.maxx,layer->map->width), - MS_CELLSIZE(rect.miny,rect.maxy,layer->map->height)); - map_tmp->cellsize = map_cellsize*spacing; /* Initialize our dummy map */ MS_INIT_COLOR(map_tmp->imagecolor, 255,255,255,255); @@ -410,10 +420,6 @@ int msUVRASTERLayerWhichShapes(layerObj *layer, rectObj rect, int isQuery) msCopyHashTable(&map_tmp->configoptions, &layer->map->configoptions); map_tmp->mappath = msStrdup(layer->map->mappath); map_tmp->shapepath = msStrdup(layer->map->shapepath); - map_tmp->extent.minx = rect.minx-(0.5*map_cellsize)+(0.5*map_tmp->cellsize); - map_tmp->extent.miny = rect.miny-(0.5*map_cellsize)+(0.5*map_tmp->cellsize); - map_tmp->extent.maxx = map_tmp->extent.minx+((width-1)*map_tmp->cellsize); - map_tmp->extent.maxy = map_tmp->extent.miny+((height-1)*map_tmp->cellsize); map_tmp->gt.rotation_angle = 0.0; /* Custom msCopyProjection() that removes lon_wrap parameter */ @@ -443,6 +449,124 @@ int msUVRASTERLayerWhichShapes(layerObj *layer, rectObj rect, int isQuery) map_tmp->projection.wellknownprojection = layer->projection.wellknownprojection; } + /* Very special case to improve quality for rasters referenced from lon=0 to 360 */ + /* We create a temporary VRT that swiches the 2 hemispheres, and then we */ + /* modify the georeferncing to be in the more standard [-180, 180] range */ + /* and we adjust the layer->data, extent and projection accordingly */ + if( layer->tileindex == NULL && + uvlinfo->mapToUseForWhichShapes && bHasLonWrap && dfLonWrap == 180.0 ) + { + rectObj layerExtent; + msLayerGetExtent(layer, &layerExtent); + if( layerExtent.minx == 0 && layerExtent.maxx == 360 ) + { + GDALDatasetH hDS = NULL; + char* decrypted_path; + + if( strncmp(layer->data, "data); + } + else + { + char szPath[MS_MAXPATHLEN]; + msTryBuildPath3(szPath, layer->map->mappath, + layer->map->shapepath, layer->data); + decrypted_path = msDecryptStringTokens( layer->map, szPath ); + } + + if( decrypted_path ) + { + GDALAllRegister(); + hDS = GDALOpen(decrypted_path, GA_ReadOnly ); + } + if( hDS != NULL ) + { + int iBand; + int nXSize = GDALGetRasterXSize( hDS ); + int nYSize = GDALGetRasterYSize( hDS ); + int nBands = GDALGetRasterCount( hDS ); + int nMaxLen = 100 + nBands * (800 + 2 * strlen(decrypted_path)); + int nOffset = 0; + char* pszInlineVRT = msSmallMalloc( nMaxLen ); + + snprintf(pszInlineVRT, nMaxLen, + "", + nXSize, nYSize); + nOffset = strlen(pszInlineVRT); + for( iBand = 1; iBand <= nBands; iBand++ ) + { + const char* pszDataType = "Byte"; + switch( GDALGetRasterDataType(GDALGetRasterBand(hDS, iBand)) ) + { + case GDT_Byte: pszDataType = "Byte"; break; + case GDT_Int16: pszDataType = "Int16"; break; + case GDT_UInt16: pszDataType = "UInt16"; break; + case GDT_Int32: pszDataType = "Int32"; break; + case GDT_UInt32: pszDataType = "UInt32"; break; + case GDT_Float32: pszDataType = "Float32"; break; + case GDT_Float64: pszDataType = "Float64"; break; + default: break; + } + + snprintf( pszInlineVRT + nOffset, nMaxLen - nOffset, + " " + " " + " " + " %d" + " " + " " + " " + " " + " " + " %d" + " " + " " + " " + " ", + pszDataType, iBand, + decrypted_path, iBand, + nXSize / 2, 0, nXSize - nXSize / 2, nYSize, + 0, 0, nXSize - nXSize / 2, nYSize, + decrypted_path, iBand, + 0, 0, nXSize / 2, nYSize, + nXSize - nXSize / 2, 0, nXSize / 2, nYSize ); + + nOffset += strlen(pszInlineVRT + nOffset); + } + snprintf(pszInlineVRT + nOffset, nMaxLen - nOffset, + ""); + + oldLayerExtent = layer->extent; + oldLayerData = layer->data; + oldLayerProjection = layer->projection; + layer->extent.minx = -180; + layer->extent.maxx = 180; + layer->data = pszInlineVRT; + layer->projection = map_tmp->projection; + + + /* map_tmp->projection is actually layer->projection without lon_wrap */ + rect = uvlinfo->mapToUseForWhichShapes->extent; + msProjectRect(&uvlinfo->mapToUseForWhichShapes->projection, + &map_tmp->projection, &rect); + bHasLonWrap = MS_FALSE; + + GDALClose(hDS); + } + msFree( decrypted_path ); + } + } + + + map_cellsize = MS_MAX(MS_CELLSIZE(rect.minx, rect.maxx,layer->map->width), + MS_CELLSIZE(rect.miny,rect.maxy,layer->map->height)); + map_tmp->cellsize = map_cellsize*spacing; + map_tmp->extent.minx = rect.minx-(0.5*map_cellsize)+(0.5*map_tmp->cellsize); + map_tmp->extent.miny = rect.miny-(0.5*map_cellsize)+(0.5*map_tmp->cellsize); + map_tmp->extent.maxx = map_tmp->extent.minx+((width-1)*map_tmp->cellsize); + map_tmp->extent.maxy = map_tmp->extent.miny+((height-1)*map_tmp->cellsize); + if( bHasLonWrap && dfLonWrap == 180.0) { if( map_tmp->extent.minx >= 180 ) { /* Request on the right half of the shifted raster (= western hemisphere) */ @@ -503,17 +627,15 @@ int msUVRASTERLayerWhichShapes(layerObj *layer, rectObj rect, int isQuery) */ saved_layer_mask = layer->mask; layer->mask = NULL; - if (msDrawRasterLayerLow(map_tmp, layer, image_tmp, NULL ) == MS_FAILURE) { - msSetError(MS_MISCERR, "Unable to draw raster data.", "msUVRASTERLayerWhichShapes()"); - layer->mask = saved_layer_mask; + ret = msDrawRasterLayerLow(map_tmp, layer, image_tmp, NULL ); - if (alteredProcessing != NULL) { - layer->processing = savedProcessing; - CSLDestroy(alteredProcessing); - } - msFreeMap(map_tmp); - msFreeImage(image_tmp); - return MS_FAILURE; + /* restore layer attributes if we went through the above on-the-fly VRT */ + if( oldLayerData ) + { + msFree(layer->data); + layer->data = oldLayerData; + layer->extent = oldLayerExtent; + layer->projection = oldLayerProjection; } /* restore layer mask */ @@ -525,6 +647,15 @@ int msUVRASTERLayerWhichShapes(layerObj *layer, rectObj rect, int isQuery) CSLDestroy(alteredProcessing); } + if( ret == MS_FAILURE) { + msSetError(MS_MISCERR, "Unable to draw raster data.", "msUVRASTERLayerWhichShapes()"); + + msFreeMap(map_tmp); + msFreeImage(image_tmp); + + return MS_FAILURE; + } + /* free old query arrays */ if (uvlinfo->u) { for (i=0; iwidth; ++i) { diff --git a/msautotest/wxs/expected/wms_uvraster_lonwrap180_accross_hemisphere.png b/msautotest/wxs/expected/wms_uvraster_lonwrap180_accross_hemisphere.png index d082ee65cd51e8c0a8ba43f98270cd23151f057f..e34dc177dcaeb586d0bf3d0d095abe2f04a3ef18 100644 GIT binary patch literal 43003 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

A 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

l%vy*DD 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�qN{M9 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 W;hL*{+J#Ud0qm`vtm-X&NdE&vKTY-k literal 102304 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 z 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 HctG;MY2+4+ From 2493287b0e35f54c671d6dae33ebabfc7869bb60 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 21 Nov 2017 14:12:01 +0100 Subject: [PATCH 189/221] WCS 2.0: special processing for wcs_rangeset_axes=bands WCS 2.0 has a special compatibility mode where it can use WCS 1.1 metadata items. Unfortunately, it does a wrong assumption on how wcs_rangeset_axes works in WCS 1.0/1.1. The implementation of it is probably not completely right in WCS 1.0/1.1, but at least a special case that works is when 'bands' is assigned to wcs_rangeset_axes. So make WCS 2.0 code handle wcs_rangeset_axes=bands as the special case handled by msWCSSetDefaultBandsRangeSetInfo() in https://github.com/mapserver/mapserver/blob/branch-7-0/mapwcs.c#L281 Modify wcs_multi.map to use wcs_rangeset_axes=bands. This will also make the wcs_10_getcov_bands_name_new request to properly return 3 bands. So band subsetting works in both in WCS 1.0 and 2.0 with the same mapfile. The "New band related metadata entries" paragraph of http://mapserver.org/ogc/wcs_server.html should probably be revised to remove reference to the WCS 1.1 compatibility mode. --- mapwcs20.c | 30 ++++++++++++++++-- .../expected/wcs_10_getcov_bands_name_new.dat | Bin 707 -> 505 bytes msautotest/wxs/expected/wcs_20_desc.txt | 2 +- msautotest/wxs/expected/wcs_20_desc.xml | 2 +- .../wxs/expected/wcs_20_getcov_full.dat | Bin 4593 -> 4593 bytes .../wxs/expected/wcs_20_getcov_grd_mp.dat | 2 +- .../wxs/expected/wcs_20_getcov_reproj.dat | Bin 4625 -> 4625 bytes msautotest/wxs/expected/wcs_20_post_desc.xml | 2 +- .../wcs_20_post_getcov_full_multipart.dat | Bin 4544 -> 4544 bytes .../wxs/expected/wcs_mask_20_getcov_full.dat | Bin 4544 -> 4544 bytes .../expected/wcs_mask_20_getcov_grd_mp.dat | 2 +- .../expected/wcs_mask_20_getcov_reproj.dat | Bin 4625 -> 4625 bytes msautotest/wxs/wcs_multi.map | 3 +- 13 files changed, 35 insertions(+), 8 deletions(-) diff --git a/mapwcs20.c b/mapwcs20.c index 020c0cbf6b..5b2282f3d1 100644 --- a/mapwcs20.c +++ b/mapwcs20.c @@ -2681,7 +2681,21 @@ static int msWCSGetCoverageMetadata20(layerObj *layer, wcs20coverageMetadataObj } else if( (value = msOWSLookupMetadata(&(layer->metadata), "CO", wcs11_band_names_key)) != NULL ) { keys = wcs11_keys; interval_key = wcs11_interval_key; - band_names = msStringSplit(value, ' ', &num_band_names); + if( EQUAL(value, "bands") ) + { + num_band_names = cm->numbands; + band_names = (char**) msSmallMalloc( sizeof(char*) * num_band_names ); + for( i = 0; i < num_band_names; i++ ) + { + char szName[30]; + snprintf(szName, sizeof(szName), "Band%d", i+1); + band_names[i] = msStrdup(szName); + } + } + else + { + band_names = msStringSplit(value, ' ', &num_band_names); + } } /* return with error when number of bands does not match */ @@ -3756,9 +3770,21 @@ static int msWCSGetCoverage20_GetBands(mapObj *map, layerObj *layer, "CO", "rangeset_axes", NULL))) { tmp = msOWSGetEncodeMetadata(&layer->metadata, "CO", "band_names", NULL); + } else { + if( EQUAL(tmp, "bands") ) + { + int num_band_names = cm->numbands; + band_ids = (char**) msSmallCalloc( sizeof(char*), (num_band_names + 1) ); + for( i = 0; i < num_band_names; i++ ) + { + char szName[30]; + snprintf(szName, sizeof(szName), "Band%d", i+1); + band_ids[i] = msStrdup(szName); + } + } } - if(NULL != tmp) { + if(NULL != tmp && band_ids == NULL) { band_ids = CSLTokenizeString2(tmp, " ", 0); msFree(tmp); } diff --git a/msautotest/wxs/expected/wcs_10_getcov_bands_name_new.dat b/msautotest/wxs/expected/wcs_10_getcov_bands_name_new.dat index 61a19d9fe309893d1835ca1332ee96af5c6563a9..5cbaa11c3e26e24d31482a39fde322b58386b301 100644 GIT binary patch delta 276 zcmX@i`jeT{(^HFqgMooTcp|548Z(f=#K^$F%*f0Dq`;UB%4P!c1sPeuV(WmCqEK;= z9x*7J704Ecs__Q0r5IVk>OTS5(opsz-&GsyQzhTfek3G z24t^qXJ$|UvcrJv4edM(AQwynvNyIfft|c;;&<7}HjK->t?XyYS@x*ewW}C*$$9js z74l^wsHv`Rt0A<5Y HHT_-yqb(~C delta 457 zcmey#e3+Hf(^HFqgMooTWFn_*8Yhs!$H>6I%*f0Dq`;UBi7m*;0v3A&loW-EgY<|& z*{ndeI8@C;AX|!&6|DXrkSz^mvoTKWkqQg~>Ht}*05mBW$Of5W0A%wu^Dr<2*-k)q zQwt9R8;~6ZWUp^$W>5gKyMXKs?K})jK=vshdt*Bj*qmDvU(2d<0GTidlt%%KK!-r# zWOl~o^)o$_UF;)UO{{u6OF}K(YPIFsofjwCg;%Spbvb9)8~WBLs`PkINcXUsu1)9NliC-S3g@YwcgJtFb20%{{(lLQ~P+NN01urkRmB?arpkdb-u> z(mft6p`m`Y9_kB{J$+**b`~{uy4q?RnbxSttuu{{@d#<17@IRAAkfUCp~XF@-^s(; zz@b4+xzo|Y$Uvo9No1yXgp-4No4NL8zd~on;K`PjlNA}Ig*u&+Yz#eWRg`-j3Z3)= H>J-%g!$n#+ diff --git a/msautotest/wxs/expected/wcs_20_desc.txt b/msautotest/wxs/expected/wcs_20_desc.txt index 521efaf2ad..a6807df945 100644 --- a/msautotest/wxs/expected/wcs_20_desc.txt +++ b/msautotest/wxs/expected/wcs_20_desc.txt @@ -30,7 +30,7 @@ Content-Type: text/xml; charset=UTF-8 - + Test description diff --git a/msautotest/wxs/expected/wcs_20_desc.xml b/msautotest/wxs/expected/wcs_20_desc.xml index aa21f49384..cc10682955 100644 --- a/msautotest/wxs/expected/wcs_20_desc.xml +++ b/msautotest/wxs/expected/wcs_20_desc.xml @@ -28,7 +28,7 @@ - + Test description diff --git a/msautotest/wxs/expected/wcs_20_getcov_full.dat b/msautotest/wxs/expected/wcs_20_getcov_full.dat index 71c60819d46a4a1409969ea6f4fc7610845f0c5c..54cbeb80e2490af84a01610ede8b2947a8a0197a 100644 GIT binary patch delta 18 ZcmeyU{84#BC - + Test description diff --git a/msautotest/wxs/expected/wcs_20_getcov_reproj.dat b/msautotest/wxs/expected/wcs_20_getcov_reproj.dat index 10c1c8df1b846958a3c31c4d3543e3debfa1535f..5f89408dd5bf75d67f9cdb5160ce0f67318241d7 100644 GIT binary patch delta 18 ZcmbQJGErqiJ_oB)VqS{j<`Ry%oB%tg1`+@O delta 18 ZcmbQJGErqiJ_l=3VqQw|<`Ry%oB%#^26O-b diff --git a/msautotest/wxs/expected/wcs_20_post_desc.xml b/msautotest/wxs/expected/wcs_20_post_desc.xml index 9da855cbcb..6d3a863f94 100644 --- a/msautotest/wxs/expected/wcs_20_post_desc.xml +++ b/msautotest/wxs/expected/wcs_20_post_desc.xml @@ -28,7 +28,7 @@ - + Test description diff --git a/msautotest/wxs/expected/wcs_20_post_getcov_full_multipart.dat b/msautotest/wxs/expected/wcs_20_post_getcov_full_multipart.dat index c97605f1164aab02203186f02a8df22979c6b536..276c3f88fd5c8287018490fa93e8ef3b8e9fc3fe 100644 GIT binary patch delta 18 ZcmX@0d_Z}F3J0rGVqS{jW=)RioB%w&1=0Wj delta 18 ZcmX@0d_Z}F3I}UaVqQw|W=)RioB%(H1~dQw diff --git a/msautotest/wxs/expected/wcs_mask_20_getcov_full.dat b/msautotest/wxs/expected/wcs_mask_20_getcov_full.dat index a2fb1d35f484106cb19b0b991963a298b7dc9673..92a12141529779551cc8ef51d454b0230a2b3617 100644 GIT binary patch delta 18 ZcmX@0d_Z}F3J0rGVqS{jW=)RioB%w&1=0Wj delta 18 ZcmX@0d_Z}F3I}UaVqQw|W=)RioB%(H1~dQw diff --git a/msautotest/wxs/expected/wcs_mask_20_getcov_grd_mp.dat b/msautotest/wxs/expected/wcs_mask_20_getcov_grd_mp.dat index 822bbe8eed..d85effa762 100644 --- a/msautotest/wxs/expected/wcs_mask_20_getcov_grd_mp.dat +++ b/msautotest/wxs/expected/wcs_mask_20_getcov_grd_mp.dat @@ -40,7 +40,7 @@ Content-Type: application/gml+xml; charset=UTF-8 - + Test description diff --git a/msautotest/wxs/expected/wcs_mask_20_getcov_reproj.dat b/msautotest/wxs/expected/wcs_mask_20_getcov_reproj.dat index 7c84505af114f794aceac4983fcdca000f12d26b..97ea6d78631d5ba067b6247693fd644d092a7c31 100644 GIT binary patch delta 18 ZcmbQJGErqiJ_oB)VqS{j<`Ry%oB%tg1`+@O delta 18 ZcmbQJGErqiJ_l=3VqQw|<`Ry%oB%#^26O-b diff --git a/msautotest/wxs/wcs_multi.map b/msautotest/wxs/wcs_multi.map index a220825dbf..97684ba30d 100644 --- a/msautotest/wxs/wcs_multi.map +++ b/msautotest/wxs/wcs_multi.map @@ -120,7 +120,7 @@ LAYER "wcs_imagemode" "BYTE" "wcs_bandcount" "9" - "wcs_rangeset_axes" "Band1 Band2 Band3 Band4 Band5 Band6 Band7 Band8 Band9" + "wcs_rangeset_axes" "bands" "wcs_rangeset_name" "Landsat 5 TM Bands" "wcs_rangeset_label" "Bands" "wcs_rangeset_description" "Bands for Landsat 5 TM" @@ -153,6 +153,7 @@ LAYER "wcs_imagemode" "BYTE" "wcs_bandcount" "9" + "wcs_rangeset_axes" "bands" "wcs_band_names" "Band1 Band2 Band3 Band4 Band5 Band6 Band7 Band8 Band9" #default values From 160d7bcb85f2212070b3efe38e12c6b087c33ed8 Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo Date: Thu, 30 Nov 2017 14:14:58 +0100 Subject: [PATCH 190/221] Fix conteent typo --- mapogcfilter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapogcfilter.c b/mapogcfilter.c index f4a6dfef9a..44424abef2 100644 --- a/mapogcfilter.c +++ b/mapogcfilter.c @@ -1010,7 +1010,7 @@ static CPLXMLNode* FLTGetNextSibblingNode(CPLXMLNode* psXMLNode) /* FLTInsertElementInNode */ /* */ /* Utility function to parse an XML node and transfter the */ -/* contennts into the Filer Encoding node structure. */ +/* contents into the Filer Encoding node structure. */ /************************************************************************/ void FLTInsertElementInNode(FilterEncodingNode *psFilterNode, CPLXMLNode *psXMLNode) From aada6a13a63e433346d1548719fc4546061600b5 Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo Date: Thu, 30 Nov 2017 14:16:28 +0100 Subject: [PATCH 191/221] Fix coantins typo --- HISTORY.TXT | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HISTORY.TXT b/HISTORY.TXT index 13d2340487..00e548e772 100644 --- a/HISTORY.TXT +++ b/HISTORY.TXT @@ -1630,7 +1630,7 @@ Version 5.4.0-beta1 (2009-2-18): - Fixed a scalebar rounding problem causing to draw zero scalebar width (#2890) -- SLD: if it conatins a Filer Encoding tag, try to always set the +- SLD: if it contains a Filer Encoding tag, try to always set the layer's FILTER element (#2889) - Add support for rendering INLINE layers with layer attributes (items) (#2870) From c1079fa5dd990ff99f6c8bc5387f15ff84829c7e Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo Date: Thu, 30 Nov 2017 14:17:14 +0100 Subject: [PATCH 192/221] Fix Filer typo --- HISTORY.TXT | 2 +- mapogcfilter.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/HISTORY.TXT b/HISTORY.TXT index 00e548e772..8f4d722420 100644 --- a/HISTORY.TXT +++ b/HISTORY.TXT @@ -1630,7 +1630,7 @@ Version 5.4.0-beta1 (2009-2-18): - Fixed a scalebar rounding problem causing to draw zero scalebar width (#2890) -- SLD: if it contains a Filer Encoding tag, try to always set the +- SLD: if it contains a Filter Encoding tag, try to always set the layer's FILTER element (#2889) - Add support for rendering INLINE layers with layer attributes (items) (#2870) diff --git a/mapogcfilter.c b/mapogcfilter.c index 44424abef2..2a17672e7e 100644 --- a/mapogcfilter.c +++ b/mapogcfilter.c @@ -837,7 +837,7 @@ static int FLTIsGeometryFilterNodeType(int eType) /************************************************************************/ /* FLTFreeFilterEncodingNode */ /* */ -/* recursive freeing of Filer Encoding nodes. */ +/* recursive freeing of Filter Encoding nodes. */ /************************************************************************/ void FLTFreeFilterEncodingNode(FilterEncodingNode *psFilterNode) { @@ -884,7 +884,7 @@ void FLTFreeFilterEncodingNode(FilterEncodingNode *psFilterNode) /************************************************************************/ /* FLTCreateFilterEncodingNode */ /* */ -/* return a FilerEncoding node. */ +/* return a FilterEncoding node. */ /************************************************************************/ FilterEncodingNode *FLTCreateFilterEncodingNode(void) { @@ -1010,7 +1010,7 @@ static CPLXMLNode* FLTGetNextSibblingNode(CPLXMLNode* psXMLNode) /* FLTInsertElementInNode */ /* */ /* Utility function to parse an XML node and transfter the */ -/* contents into the Filer Encoding node structure. */ +/* contents into the Filter Encoding node structure. */ /************************************************************************/ void FLTInsertElementInNode(FilterEncodingNode *psFilterNode, CPLXMLNode *psXMLNode) @@ -2076,7 +2076,7 @@ const char* FLTGetDuring(FilterEncodingNode *psFilterNode, const char** ppszTime /************************************************************************/ /* GetMapserverExpression */ /* */ -/* Return a mapserver expression base on the Filer encoding nodes. */ +/* Return a mapserver expression base on the Filter encoding nodes. */ /************************************************************************/ char *FLTGetMapserverExpression(FilterEncodingNode *psFilterNode, layerObj *lp) { From 112f1b1c62008f91cf64bfc9f3009e5d68975578 Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo Date: Thu, 30 Nov 2017 14:18:42 +0100 Subject: [PATCH 193/221] Fix transfter typo --- mapogcfilter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapogcfilter.c b/mapogcfilter.c index 2a17672e7e..e0387f89f6 100644 --- a/mapogcfilter.c +++ b/mapogcfilter.c @@ -1009,7 +1009,7 @@ static CPLXMLNode* FLTGetNextSibblingNode(CPLXMLNode* psXMLNode) /************************************************************************/ /* FLTInsertElementInNode */ /* */ -/* Utility function to parse an XML node and transfter the */ +/* Utility function to parse an XML node and transfer the */ /* contents into the Filter Encoding node structure. */ /************************************************************************/ void FLTInsertElementInNode(FilterEncodingNode *psFilterNode, From 6a09273f4da7486b7f05846c3acb0630f54664dd Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 30 Nov 2017 16:25:03 +0100 Subject: [PATCH 194/221] Add comments to previous commit, and make sure that in msWCSGetCoverage20_GetBands() the WCS 2.0 wcs_band_names get priority over the WCS 1.x wcs_rangeset_axes (to be consistent with msWCSGetCoverageMetadata20()) --- mapwcs20.c | 23 ++++++++++++------ msautotest/wxs/expected/wcs_20_desc_bands.xml | 2 +- .../expected/wcs_20_getcov_bands_name_new.dat | Bin 24058 -> 24060 bytes ...wcs_20_getcov_bands_name_new_reproject.dat | Bin 24065 -> 24067 bytes .../expected/wcs_20_post_bands_name_new.dat | Bin 24058 -> 24060 bytes msautotest/wxs/wcs_multi.map | 14 +++++------ 6 files changed, 24 insertions(+), 15 deletions(-) diff --git a/mapwcs20.c b/mapwcs20.c index 5b2282f3d1..ca402a40e2 100644 --- a/mapwcs20.c +++ b/mapwcs20.c @@ -2681,6 +2681,8 @@ static int msWCSGetCoverageMetadata20(layerObj *layer, wcs20coverageMetadataObj } else if( (value = msOWSLookupMetadata(&(layer->metadata), "CO", wcs11_band_names_key)) != NULL ) { keys = wcs11_keys; interval_key = wcs11_interval_key; + /* "bands" has a special processing in WCS 1.0. See */ + /* msWCSSetDefaultBandsRangeSetInfo */ if( EQUAL(value, "bands") ) { num_band_names = cm->numbands; @@ -2694,6 +2696,9 @@ static int msWCSGetCoverageMetadata20(layerObj *layer, wcs20coverageMetadataObj } else { + /* WARNING: in WCS 1.x,, "rangeset_axes" has never been intended */ + /* to contain the list of band names... This code should probably */ + /* be removed */ band_names = msStringSplit(value, ' ', &num_band_names); } } @@ -3766,13 +3771,17 @@ static int msWCSGetCoverage20_GetBands(mapObj *map, layerObj *layer, maxlen = cm->numbands * 4 * sizeof(char); *bandlist = msSmallCalloc(sizeof(char), maxlen); - if (NULL == (tmp = msOWSGetEncodeMetadata(&layer->metadata, - "CO", "rangeset_axes", NULL))) { - tmp = msOWSGetEncodeMetadata(&layer->metadata, + /* Use WCS 2.0 metadata items in priority */ + tmp = msOWSGetEncodeMetadata(&layer->metadata, "CO", "band_names", NULL); - } else { - if( EQUAL(tmp, "bands") ) - { + if( NULL == tmp ) { + /* Otherwise default to WCS 1.x*/ + tmp = msOWSGetEncodeMetadata(&layer->metadata, + "CO", "rangeset_axes", NULL); + /* "bands" has a special processing in WCS 1.0. See */ + /* msWCSSetDefaultBandsRangeSetInfo */ + if( tmp != NULL && EQUAL(tmp, "bands") ) + { int num_band_names = cm->numbands; band_ids = (char**) msSmallCalloc( sizeof(char*), (num_band_names + 1) ); for( i = 0; i < num_band_names; i++ ) @@ -3781,7 +3790,7 @@ static int msWCSGetCoverage20_GetBands(mapObj *map, layerObj *layer, snprintf(szName, sizeof(szName), "Band%d", i+1); band_ids[i] = msStrdup(szName); } - } + } } if(NULL != tmp && band_ids == NULL) { diff --git a/msautotest/wxs/expected/wcs_20_desc_bands.xml b/msautotest/wxs/expected/wcs_20_desc_bands.xml index 21f1f089ac..cd29e475a7 100644 --- a/msautotest/wxs/expected/wcs_20_desc_bands.xml +++ b/msautotest/wxs/expected/wcs_20_desc_bands.xml @@ -352,7 +352,7 @@ - + Default description diff --git a/msautotest/wxs/expected/wcs_20_getcov_bands_name_new.dat b/msautotest/wxs/expected/wcs_20_getcov_bands_name_new.dat index cf9771054973a0c61baa36bac3181abcf83e81e3..fa9862930b3f7a0290361da02b3e0763979bc69a 100644 GIT binary patch delta 17 ZcmeyhoAJ+X#tjpBnQ|*PPvp%E002%|2d@AC delta 29 lcmeyfoAK9f#tjpBS)CH|QYq0rrgTSvw71306rhN!%=(7xE?r002LK28#dy diff --git a/msautotest/wxs/expected/wcs_20_post_bands_name_new.dat b/msautotest/wxs/expected/wcs_20_post_bands_name_new.dat index cf9771054973a0c61baa36bac3181abcf83e81e3..fa9862930b3f7a0290361da02b3e0763979bc69a 100644 GIT binary patch delta 17 ZcmeyhoAJ+X#tjpBnQ|*PPvp%E002%|2d@AC delta 29 lcmeyfoAK9f#tjpBS)CH|QY [RESULT_DEMIME] # # RUN_PARMS: wcs_20_getcov_bands_index_new.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&RANGESUBSET=1,5,9" > [RESULT_DEMIME] -# RUN_PARMS: wcs_20_getcov_bands_name_new.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&RANGESUBSET=Band9,Band5,Band1" > [RESULT_DEMIME] -# RUN_PARMS: wcs_20_getcov_bands_name_new.dat [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&mediatype=multipart/related&RANGESUBSET=Band9,Band5,Band1" > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_getcov_bands_name_new.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&RANGESUBSET=myBand9,Band5,Band1" > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_getcov_bands_name_new.dat [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&mediatype=multipart/related&RANGESUBSET=myBand9,Band5,Band1" > [RESULT_DEMIME] # # RUN_PARMS: wcs_10_getcov_bands_name_new.dat [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=1.0.0&REQUEST=GetCoverage&COVERAGE=multi_new&FORMAT=GEOTIFF_8&BBOX=15,48,16,49&bands=9,5,1&CRS=EPSG:4326&WIDTH=5&HEIGHT=5" > [RESULT_DEMIME] # -# RUN_PARMS: wcs_20_getcov_bands_name_new_reproject.dat [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&mediatype=multipart/related&RANGESUBSET=Band9,Band5,Band1&OUTPUTCRS=EPSG:3857" > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_getcov_bands_name_new_reproject.dat [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&mediatype=multipart/related&RANGESUBSET=myBand9,Band5,Band1&OUTPUTCRS=EPSG:3857" > [RESULT_DEMIME] # # RUN_PARMS: wcs_20_getcov_native_format.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new" > [RESULT_DEMIME] # @@ -26,8 +26,8 @@ # RUN_PARMS: wcs_20_post_bands_name.dat [MAPSERV] [POST]image/tiffmultimultipart/relatedBand9Band5Band1[/POST] > [RESULT_DEMIME] # # RUN_PARMS: wcs_20_post_bands_index_new.tif [MAPSERV] [POST]image/tiffmulti_new159[/POST] > [RESULT_DEMIME] -# RUN_PARMS: wcs_20_post_bands_name_new.tif [MAPSERV] [POST]image/tiffmulti_newBand9Band5Band1[/POST] > [RESULT_DEMIME] -# RUN_PARMS: wcs_20_post_bands_name_new.dat [MAPSERV] [POST]image/tiffmulti_newmultipart/relatedBand9Band5Band1[/POST] > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_post_bands_name_new.tif [MAPSERV] [POST]image/tiffmulti_newmyBand9Band5Band1[/POST] > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_post_bands_name_new.dat [MAPSERV] [POST]image/tiffmulti_newmultipart/relatedmyBand9Band5Band1[/POST] > [RESULT_DEMIME] # # Trim to 1px (#3857): # RUN_PARMS: wcs_20_multi_getcov_trim_y_to_1px.tif [MAPSERV] [POST]image/tiffmultiy1010.1imageCRS[/POST] > [RESULT_DEMIME] @@ -37,7 +37,7 @@ # Updated API # # RUN_PARMS: wcs_20_getcov_bands_interval.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&RANGESUBSET=Band2:Band5" > [RESULT_DEMIME] -# RUN_PARMS: wcs_20_getcov_bands_intervals.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&RANGESUBSET=Band2:Band5,Band7:Band9" > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_getcov_bands_intervals.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&RANGESUBSET=Band2:Band5,Band7:myBand9" > [RESULT_DEMIME] # # # RUN_PARMS: wcs_20_post_bands_interval_component.tif [MAPSERV] [POST]image/tiffmulti_newBand1Band3Band8[/POST] > [RESULT_DEMIME] @@ -154,7 +154,7 @@ LAYER "wcs_bandcount" "9" "wcs_rangeset_axes" "bands" - "wcs_band_names" "Band1 Band2 Band3 Band4 Band5 Band6 Band7 Band8 Band9" + "wcs_band_names" "Band1 Band2 Band3 Band4 Band5 Band6 Band7 Band8 myBand9" #default values "wcs_band_interpretation" "Default interpretation" From e82d376f76c7e134a307a5c440a0f61d354e93e6 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 21 Dec 2017 23:43:34 +0100 Subject: [PATCH 195/221] Fix crash on GRID layer without LABEL block (fixes #5466) --- mapgraticule.c | 1 + .../misc/expected/grid_without_label.png | Bin 0 -> 558 bytes msautotest/misc/grid_without_label.map | 38 ++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 msautotest/misc/expected/grid_without_label.png create mode 100644 msautotest/misc/grid_without_label.map diff --git a/mapgraticule.c b/mapgraticule.c index eab39f8470..246d31f41b 100644 --- a/mapgraticule.c +++ b/mapgraticule.c @@ -285,6 +285,7 @@ int msGraticuleLayerNextShape(layerObj *layer, shapeObj *shape) shape->type = MS_SHAPE_LINE; shape->line = (lineObj *) msSmallMalloc(sizeof( lineObj )); shape->line->numpoints = (int) pInfo->maxsubdivides; + shape->line->point = NULL; /* * Subdivide and draw current arc, rendering the arc labels first diff --git a/msautotest/misc/expected/grid_without_label.png b/msautotest/misc/expected/grid_without_label.png new file mode 100644 index 0000000000000000000000000000000000000000..9f4f0a4571b928ae22960f19dbcc9a07957e1c4b GIT binary patch literal 558 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGGg9%9bJb4krz`*#`)5S5QV$R#khFyml1XvvR zp7H;D{rv$ho~|k;W!6yrh*>uuTlDR3udKgQdvt2RMafqew1u>c*7OEUOw4WR;>lJH zNr{kNsC4)ihp6N=w-qNgm^rz&Z513!O715f^uJ^KakaYrqs2CsQxZdmoDXmZcy0UF sx*6Ax-wlu96rH<}XSI-)mGfWb=bVDkCZ4+<0n-74r>mdKI;Vst01R8(mH+?% literal 0 HcmV?d00001 diff --git a/msautotest/misc/grid_without_label.map b/msautotest/misc/grid_without_label.map new file mode 100644 index 0000000000..a9c39fd173 --- /dev/null +++ b/msautotest/misc/grid_without_label.map @@ -0,0 +1,38 @@ +# +# REQUIRES: OUTPUT=PNG SUPPORTS=PROJ +# + +MAP + NAME "testMap" + + STATUS ON + SIZE 200 100 + EXTENT 0 0 2000 1000 + UNITS METERS + IMAGETYPE png + + PROJECTION + "init=epsg:3857" + END + + LAYER + NAME "grid" + PROJECTION + "init=epsg:3857" + END + STATUS ON + TYPE LINE + UNITS METERS + CLASS + STYLE + COLOR "#000000" + OPACITY 100 + END + END + GRID + MAXINTERVAL 500 + MININTERVAL 500 + END + END + +END From 20ee78ffbbd68d3a9f6dd3cba9566c05e70748d2 Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Thu, 4 Jan 2018 10:42:36 -0400 Subject: [PATCH 196/221] update for year 2018 --- README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README b/README index e7bf2462c4..668aeb9c11 100644 --- a/README +++ b/README @@ -67,7 +67,7 @@ License :: - Copyright (c) 2008-2017 Open Source Geospatial Foundation. + Copyright (c) 2008-2018 Open Source Geospatial Foundation. Copyright (c) 1996-2008 Regents of the University of Minnesota. Permission is hereby granted, free of charge, to any person obtaining a copy From bba2982a19514543b7ad4a5b73c5eb12dc219096 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 12 Jan 2018 15:03:17 +0100 Subject: [PATCH 197/221] Fix compilation without GDAL and OGR (fixes #5539) --- mapdraw.c | 12 ++++++++---- mapio.c | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/mapdraw.c b/mapdraw.c index f95b572855..013d2ee448 100644 --- a/mapdraw.c +++ b/mapdraw.c @@ -959,6 +959,7 @@ int msDrawVectorLayer(mapObj *map, layerObj *layer, imageObj *image) if((map->projection.numargs > 0) && (layer->projection.numargs > 0)) { int bDone = MS_FALSE; +#ifdef USE_GDAL if( layer->connectiontype == MS_UVRASTER ) { /* Nasty hack to make msUVRASTERLayerWhichShapes() aware that the */ @@ -966,6 +967,7 @@ int msDrawVectorLayer(mapObj *map, layerObj *layer, imageObj *image) /* Useful when dealin with UVRASTER that extend beyond 180 deg */ msUVRASTERLayerUseMapExtentAndProjectionForNextWhichShapes( layer, map ); } +#endif /* For UVRaster, it is important that the searchrect is not too large */ /* to avoid insufficient intermediate raster resolution, which could */ @@ -1041,10 +1043,10 @@ int msDrawVectorLayer(mapObj *map, layerObj *layer, imageObj *image) { /* otherwise clip the map extent with the reprojected layer */ /* extent */ - searchrect.minx = MAX( map_extent_minx, layer_extent.minx ); - searchrect.maxx = MIN( map_extent_maxx, layer_extent.maxx ); - searchrect.miny = MAX( map_extent_miny, layer_extent.miny ); - searchrect.maxy = MIN( map_extent_maxy, layer_extent.maxy ); + searchrect.minx = MS_MAX( map_extent_minx, layer_extent.minx ); + searchrect.maxx = MS_MIN( map_extent_maxx, layer_extent.maxx ); + searchrect.miny = MS_MAX( map_extent_miny, layer_extent.miny ); + searchrect.maxy = MS_MIN( map_extent_maxy, layer_extent.maxy ); /* and reproject into the layer projection */ msProjectRect(&map_proj, &layer->projection, &searchrect); } @@ -1067,10 +1069,12 @@ int msDrawVectorLayer(mapObj *map, layerObj *layer, imageObj *image) status = msLayerWhichShapes(layer, searchrect, MS_FALSE); +#ifdef USE_GDAL if( layer->connectiontype == MS_UVRASTER ) { msUVRASTERLayerUseMapExtentAndProjectionForNextWhichShapes( layer, NULL ); } +#endif if(status == MS_DONE) { /* no overlap */ msLayerClose(layer); diff --git a/mapio.c b/mapio.c index 10bbe49df8..4327ec6907 100644 --- a/mapio.c +++ b/mapio.c @@ -787,7 +787,7 @@ hashTableObj* msIO_getAndStripStdoutBufferMimeHeaders() /* Loop over all headers. */ /* -------------------------------------------------------------------- */ current_pos = 0; - while( TRUE ) { + while( MS_TRUE ) { int pos_of_column = -1; char* key, *value; From b93c142da429eb1bb9e823e27e005c9a3a999e4b Mon Sep 17 00:00:00 2001 From: Oliver Tonnhofer Date: Thu, 8 Feb 2018 10:55:27 +0100 Subject: [PATCH 198/221] Fix segfault with polyline labels for empty multilinestrings longest_line_index can point outside pll->ll if shape only contains lines with <2 points. --- mapprimitive.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapprimitive.c b/mapprimitive.c index c7cd9826be..7b7f63b1d9 100644 --- a/mapprimitive.c +++ b/mapprimitive.c @@ -1552,7 +1552,7 @@ void msPolylineComputeLineSegments(shapeObj *shape, struct polyline_lengths *pll pll->ll = msSmallMalloc(shape->numlines * sizeof(struct line_lengths)); pll->total_length = 0; - + pll->longest_line_index = 0; for(i=0; inumlines; i++) { From d8dfde1125f432ce61c48b0c89682eed1da725b3 Mon Sep 17 00:00:00 2001 From: Bas Couwenberg Date: Fri, 9 Feb 2018 13:36:07 +0100 Subject: [PATCH 199/221] Exclude .java files from jar. --- mapscript/java/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapscript/java/CMakeLists.txt b/mapscript/java/CMakeLists.txt index 9987d42ec8..bafd894288 100644 --- a/mapscript/java/CMakeLists.txt +++ b/mapscript/java/CMakeLists.txt @@ -21,7 +21,7 @@ ADD_CUSTOM_COMMAND(TARGET javamapscript WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} POST_BUILD COMMAND ${Java_JAVAC_EXECUTABLE} edu/umn/gis/mapscript/*.java - COMMAND ${Java_JAR_EXECUTABLE} cf mapscript.jar edu + COMMAND ${Java_JAR_EXECUTABLE} cf mapscript.jar edu/umn/gis/mapscript/*.class COMMENT "Compiling java source files, creating mapscript.jar" ) From 03da61e8dd5649776ea1e423a4314d1e5139c56a Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 10 Feb 2018 12:56:15 +0100 Subject: [PATCH 200/221] WCS 2.0: fix when input raster is full world in EPSG:4326 If input raster is full world in EPSG:4326 and a GetCoverage is done with a subsettingCRS != EPSG:4326 and with no explicit with+resolutionX (or height+ resolutionY), the request currently fails. --- mapproject.c | 27 +++++++++++++++++++++++---- mapwcs20.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 69 insertions(+), 6 deletions(-) diff --git a/mapproject.c b/mapproject.c index 61c5ddbd87..6a96660e9e 100644 --- a/mapproject.c +++ b/mapproject.c @@ -811,13 +811,32 @@ msProjectRectAsPolygon(projectionObj *in, projectionObj *out, double dx, dy; /* If projecting from longlat to projected */ + /* This hack was introduced for WFS 2.0 compliance testing, but is far */ + /* from being perfect */ if( out && !pj_is_latlong(out->proj) && in && pj_is_latlong(in->proj) && fabs(rect->minx - -180.0) < 1e-5 && fabs(rect->miny - -90.0) < 1e-5 && fabs(rect->maxx - 180.0) < 1e-5 && fabs(rect->maxy - 90.0) < 1e-5) { - rect->minx = -1e15; - rect->miny = -1e15; - rect->maxx = 1e15; - rect->maxy = 1e15; + pointObj pointTest; + pointTest.x = -180; + pointTest.y = 85; + msProjectPoint(in, out, &pointTest); + /* Detect if we are reprojecting from EPSG:4326 to EPSG:3857 */ + /* and if so use more plausible bounds to avoid issues with computed */ + /* resolution for WCS */ + if (fabs(pointTest.x - -20037508.3427892) < 1e-5 && fabs(pointTest.y - 19971868.8804086) ) + { + rect->minx = -20037508.3427892; + rect->miny = -20037508.3427892; + rect->maxx = 20037508.3427892; + rect->maxy = 20037508.3427892; + } + else + { + rect->minx = -1e15; + rect->miny = -1e15; + rect->maxx = 1e15; + rect->maxy = 1e15; + } return MS_SUCCESS; } diff --git a/mapwcs20.c b/mapwcs20.c index ca402a40e2..26d097e160 100644 --- a/mapwcs20.c +++ b/mapwcs20.c @@ -4107,6 +4107,10 @@ int msWCSGetCoverage20(mapObj *map, cgiRequestObj *request, double x_1, x_2, y_1, y_2; char *coverageName, *bandlist=NULL, numbands[8]; + + int widthFromComputationInImageCRS = 0; + int heightFromComputationInImageCRS = 0; + /* number of coverage ids should be 1 */ if (params->ids == NULL || params->ids[0] == NULL) { msSetError(MS_WCSERR, "Required parameter CoverageID was not supplied.", @@ -4268,6 +4272,42 @@ this request. Check wcs/ows_enable_request settings.", "msWCSGetCoverage20()", p } if(msProjectionsDiffer(&imageProj, &subsetProj)) { +#ifdef USE_PROJ + /* Reprojection of source raster extent of (-180,-90,180,90) to any */ + /* projected CRS is going to exhibit strong anomalies. So instead */ + /* do the reverse, project the subset extent to the layer CRS, and */ + /* see how much the subset extent takes with respect to the source */ + /* raster extent. This is only used if output width and resolutionX (or */ + /* (height and resolutionY) are unknown. */ + if( ((params->width == 0 && params->resolutionX == MS_WCS20_UNBOUNDED) || + (params->height == 0 && params->resolutionY == MS_WCS20_UNBOUNDED)) && + (pj_is_latlong(imageProj.proj) && + !pj_is_latlong(subsetProj.proj) && + fabs(layer->extent.minx - -180.0) < 1e-5 && + fabs(layer->extent.miny - -90.0) < 1e-5 && + fabs(layer->extent.maxx - 180.0) < 1e-5 && + fabs(layer->extent.maxy - 90.0) < 1e-5) ) + { + rectObj subsetInImageProj = subsets; + if( msProjectRect(&subsetProj, &imageProj, &(subsetInImageProj)) == MS_SUCCESS ) + { + subsetInImageProj.minx = MS_MAX(subsetInImageProj.minx, layer->extent.minx); + subsetInImageProj.miny = MS_MAX(subsetInImageProj.miny, layer->extent.miny); + subsetInImageProj.maxx = MS_MIN(subsetInImageProj.maxx, layer->extent.maxx); + subsetInImageProj.maxy = MS_MIN(subsetInImageProj.maxy, layer->extent.maxy); + { + double total = ABS(layer->extent.maxx - layer->extent.minx); + double part = ABS(subsetInImageProj.maxx - subsetInImageProj.minx); + widthFromComputationInImageCRS = MS_NINT((part * map->width) / total); + } + { + double total = ABS(layer->extent.maxy - layer->extent.miny); + double part = ABS(subsetInImageProj.maxy - subsetInImageProj.miny); + heightFromComputationInImageCRS = MS_NINT((part * map->height) / total); + } + } + } +#endif msProjectRect(&imageProj, &subsetProj, &(layer->extent)); map->extent = layer->extent; msFreeProjection(&(map->projection)); @@ -4318,7 +4358,9 @@ this request. Check wcs/ows_enable_request settings.", "msWCSGetCoverage20()", p } else if(params->resolutionX != MS_WCS20_UNBOUNDED) { params->width = MS_NINT((bbox.maxx - bbox.minx) / params->resolutionX); } else { - if(ABS(bbox.maxx - bbox.minx) != ABS(map->extent.maxx - map->extent.minx)) { + if( widthFromComputationInImageCRS != 0 ) { + params->width = widthFromComputationInImageCRS; + } else if(ABS(bbox.maxx - bbox.minx) != ABS(map->extent.maxx - map->extent.minx)) { double total = ABS(map->extent.maxx - map->extent.minx), part = ABS(bbox.maxx - bbox.minx); params->width = MS_NINT((part * map->width) / total); @@ -4340,7 +4382,9 @@ this request. Check wcs/ows_enable_request settings.", "msWCSGetCoverage20()", p } else if(params->resolutionY != MS_WCS20_UNBOUNDED) { params->height = MS_NINT((bbox.maxy - bbox.miny) / params->resolutionY); } else { - if(ABS(bbox.maxy - bbox.miny) != ABS(map->extent.maxy - map->extent.miny)) { + if( heightFromComputationInImageCRS != 0 ) { + params->height = heightFromComputationInImageCRS; + } else if(ABS(bbox.maxy - bbox.miny) != ABS(map->extent.maxy - map->extent.miny)) { double total = ABS(map->extent.maxy - map->extent.miny), part = ABS(bbox.maxy - bbox.miny); params->height = MS_NINT((part * map->height) / total); From c0f2f8ae10a661eeeb480bf2d8738b4fa383a93d Mon Sep 17 00:00:00 2001 From: Eric Peiffer Date: Thu, 22 Feb 2018 13:42:33 +0100 Subject: [PATCH 201/221] Fix MSSql Filter --- mapmssql2008.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mapmssql2008.c b/mapmssql2008.c index 7e95d21192..ee63fc28c1 100644 --- a/mapmssql2008.c +++ b/mapmssql2008.c @@ -2387,6 +2387,11 @@ int process_node(layerObj* layer, expressionObj *filter) break; /* literal tokens */ case MS_TOKEN_LITERAL_BOOLEAN: + if(layerinfo->current_node->tokenval.dblval == MS_TRUE) + filter->native_string = msStringConcatenate(filter->native_string, "1"); + else + filter->native_string = msStringConcatenate(filter->native_string, "0"); + break; case MS_TOKEN_LITERAL_NUMBER: strtmpl = "%lf"; snippet = (char *) msSmallMalloc(strlen(strtmpl) + 16); From 4e4885f8598764b7cfb3a8c1c91c6f60eb12671f Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 6 Mar 2018 11:40:09 +0100 Subject: [PATCH 202/221] msOGRFileOpen(): reset OGR error after trying to run 'SELECT spatialite_version()' for SQlite and GPKG input datasets --- mapogr.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mapogr.cpp b/mapogr.cpp index 9bf0af64cb..e08f8d4286 100644 --- a/mapogr.cpp +++ b/mapogr.cpp @@ -1333,6 +1333,7 @@ msOGRFileOpen(layerObj *layer, const char *connection ) } CPLPopErrorHandler(); + CPLErrorReset(); if (have_spatialite) psInfo->dialect = "Spatialite"; @@ -1378,6 +1379,7 @@ msOGRFileOpen(layerObj *layer, const char *connection ) OGR_DS_ReleaseResultSet(hDS, l); } CPLPopErrorHandler(); + CPLErrorReset(); if( have_gpkg_spatialite ) { From e78e26fbc50fefed6d26b7d88acba3bbc680e752 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 8 Mar 2018 14:13:32 +0100 Subject: [PATCH 203/221] WMS capabilities: automatically add 'application/json' to GetMap formats if UTFGRID OUPUTFORMAT is specified (fixes #5560) --- mapoutput.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mapoutput.c b/mapoutput.c index bc409f9186..a539e40dfe 100644 --- a/mapoutput.c +++ b/mapoutput.c @@ -904,7 +904,8 @@ void msGetOutputFormatMimeListWMS( mapObj *map, char **mime_list, int max_mime ) strcasecmp(map->outputformatlist[i]->driver, "CAIRO/SVG")==0 || strcasecmp(map->outputformatlist[i]->driver, "CAIRO/PDF")==0 || strcasecmp(map->outputformatlist[i]->driver, "kml")==0 || - strcasecmp(map->outputformatlist[i]->driver, "kmz")==0)) + strcasecmp(map->outputformatlist[i]->driver, "kmz")==0 || + strcasecmp(map->outputformatlist[i]->driver, "UTFGRID")==0)) mime_list[mime_count++] = map->outputformatlist[i]->mimetype; } } From f2b1afe20a8d26863dff58410ec499ce2d6a20db Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 8 Mar 2018 14:28:48 +0100 Subject: [PATCH 204/221] Adjust expected results after #5560 fix --- msautotest/wxs/expected/ows_all_wms_capabilities.xml | 1 + msautotest/wxs/expected/ows_all_wms_capabilities_post.xml | 1 + msautotest/wxs/expected/ows_wms_capabilities.xml | 1 + msautotest/wxs/expected/wms111_test_xml_escaping.xml | 1 + msautotest/wxs/expected/wms130_test_xml_escaping.xml | 1 + msautotest/wxs/expected/wms_dimension_cap.xml | 1 + msautotest/wxs/expected/wms_dimension_cap130.xml | 1 + msautotest/wxs/expected/wms_empty_cap111.xml | 1 + msautotest/wxs/expected/wms_empty_cap130.xml | 1 + msautotest/wxs/expected/wms_empty_cap_latestversion.xml | 1 + .../wxs/expected/wms_get_capabilities_tileindexmixedsrs.xml | 1 + msautotest/wxs/expected/wms_inspire_cap.xml | 1 + msautotest/wxs/expected/wms_inspire_cap_111.xml | 1 + msautotest/wxs/expected/wms_inspire_cap_111_eng.xml | 1 + msautotest/wxs/expected/wms_inspire_cap_111_ger.xml | 1 + msautotest/wxs/expected/wms_inspire_cap_eng.xml | 1 + msautotest/wxs/expected/wms_inspire_cap_ger.xml | 1 + msautotest/wxs/expected/wms_inspire_scenario1_cap130.xml | 1 + msautotest/wxs/expected/wms_inspire_scenario1_cap130_eng.xml | 1 + msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml | 1 + msautotest/wxs/expected/wms_inspire_scenario2_cap111.xml | 1 + msautotest/wxs/expected/wms_inspire_scenario2_cap111_eng.xml | 1 + msautotest/wxs/expected/wms_inspire_scenario2_cap111_ger.xml | 1 + msautotest/wxs/expected/wms_inspire_scenario2_cap130.xml | 1 + msautotest/wxs/expected/wms_inspire_scenario2_cap130_eng.xml | 1 + msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml | 1 + msautotest/wxs/expected/wms_north_polar_stereo_extent.xml | 1 + msautotest/wxs/expected/wms_nosld_cap.xml | 1 + msautotest/wxs/expected/wms_nosld_cap_postgis.xml | 1 + 29 files changed, 29 insertions(+) diff --git a/msautotest/wxs/expected/ows_all_wms_capabilities.xml b/msautotest/wxs/expected/ows_all_wms_capabilities.xml index 9ae538b498..f3bced180f 100644 --- a/msautotest/wxs/expected/ows_all_wms_capabilities.xml +++ b/msautotest/wxs/expected/ows_all_wms_capabilities.xml @@ -59,6 +59,7 @@ Content-Type: text/xml; charset=UTF-8 image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/ows_all_wms_capabilities_post.xml b/msautotest/wxs/expected/ows_all_wms_capabilities_post.xml index 9ae538b498..f3bced180f 100644 --- a/msautotest/wxs/expected/ows_all_wms_capabilities_post.xml +++ b/msautotest/wxs/expected/ows_all_wms_capabilities_post.xml @@ -59,6 +59,7 @@ Content-Type: text/xml; charset=UTF-8 image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/ows_wms_capabilities.xml b/msautotest/wxs/expected/ows_wms_capabilities.xml index 4fb89dc247..260ceb071d 100644 --- a/msautotest/wxs/expected/ows_wms_capabilities.xml +++ b/msautotest/wxs/expected/ows_wms_capabilities.xml @@ -34,6 +34,7 @@ Content-Type: text/xml; charset=UTF-8 image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms111_test_xml_escaping.xml b/msautotest/wxs/expected/wms111_test_xml_escaping.xml index 17f33f4afd..b5e26022d2 100644 --- a/msautotest/wxs/expected/wms111_test_xml_escaping.xml +++ b/msautotest/wxs/expected/wms111_test_xml_escaping.xml @@ -56,6 +56,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms130_test_xml_escaping.xml b/msautotest/wxs/expected/wms130_test_xml_escaping.xml index 80629757df..983dec5abd 100644 --- a/msautotest/wxs/expected/wms130_test_xml_escaping.xml +++ b/msautotest/wxs/expected/wms130_test_xml_escaping.xml @@ -53,6 +53,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_dimension_cap.xml b/msautotest/wxs/expected/wms_dimension_cap.xml index 93094b4c6e..7e6a171f97 100644 --- a/msautotest/wxs/expected/wms_dimension_cap.xml +++ b/msautotest/wxs/expected/wms_dimension_cap.xml @@ -37,6 +37,7 @@ Content-Type: application/vnd.ogc.wms_xml; charset=UTF-8 image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_dimension_cap130.xml b/msautotest/wxs/expected/wms_dimension_cap130.xml index 4b3319a47d..473c5da5fe 100644 --- a/msautotest/wxs/expected/wms_dimension_cap130.xml +++ b/msautotest/wxs/expected/wms_dimension_cap130.xml @@ -34,6 +34,7 @@ Content-Type: text/xml; charset=UTF-8 image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_empty_cap111.xml b/msautotest/wxs/expected/wms_empty_cap111.xml index fb62c307e6..68b59a4178 100644 --- a/msautotest/wxs/expected/wms_empty_cap111.xml +++ b/msautotest/wxs/expected/wms_empty_cap111.xml @@ -34,6 +34,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_empty_cap130.xml b/msautotest/wxs/expected/wms_empty_cap130.xml index 6902f3d60e..124a99b5ab 100644 --- a/msautotest/wxs/expected/wms_empty_cap130.xml +++ b/msautotest/wxs/expected/wms_empty_cap130.xml @@ -31,6 +31,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_empty_cap_latestversion.xml b/msautotest/wxs/expected/wms_empty_cap_latestversion.xml index 6902f3d60e..124a99b5ab 100644 --- a/msautotest/wxs/expected/wms_empty_cap_latestversion.xml +++ b/msautotest/wxs/expected/wms_empty_cap_latestversion.xml @@ -31,6 +31,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_get_capabilities_tileindexmixedsrs.xml b/msautotest/wxs/expected/wms_get_capabilities_tileindexmixedsrs.xml index a57c4ad98f..b2c9b7cba6 100644 --- a/msautotest/wxs/expected/wms_get_capabilities_tileindexmixedsrs.xml +++ b/msautotest/wxs/expected/wms_get_capabilities_tileindexmixedsrs.xml @@ -36,6 +36,7 @@ Content-Type: application/vnd.ogc.wms_xml; charset=UTF-8 image/svg+xml application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_inspire_cap.xml b/msautotest/wxs/expected/wms_inspire_cap.xml index 39bbafae3d..335d0a71e0 100644 --- a/msautotest/wxs/expected/wms_inspire_cap.xml +++ b/msautotest/wxs/expected/wms_inspire_cap.xml @@ -55,6 +55,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_inspire_cap_111.xml b/msautotest/wxs/expected/wms_inspire_cap_111.xml index 8fefc5f579..805d73f7d1 100644 --- a/msautotest/wxs/expected/wms_inspire_cap_111.xml +++ b/msautotest/wxs/expected/wms_inspire_cap_111.xml @@ -56,6 +56,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_inspire_cap_111_eng.xml b/msautotest/wxs/expected/wms_inspire_cap_111_eng.xml index 5a9e1f0d67..23b14008e1 100644 --- a/msautotest/wxs/expected/wms_inspire_cap_111_eng.xml +++ b/msautotest/wxs/expected/wms_inspire_cap_111_eng.xml @@ -56,6 +56,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_inspire_cap_111_ger.xml b/msautotest/wxs/expected/wms_inspire_cap_111_ger.xml index 8fefc5f579..805d73f7d1 100644 --- a/msautotest/wxs/expected/wms_inspire_cap_111_ger.xml +++ b/msautotest/wxs/expected/wms_inspire_cap_111_ger.xml @@ -56,6 +56,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_inspire_cap_eng.xml b/msautotest/wxs/expected/wms_inspire_cap_eng.xml index 86a9096ae0..eb1aaaa62b 100644 --- a/msautotest/wxs/expected/wms_inspire_cap_eng.xml +++ b/msautotest/wxs/expected/wms_inspire_cap_eng.xml @@ -55,6 +55,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_inspire_cap_ger.xml b/msautotest/wxs/expected/wms_inspire_cap_ger.xml index 39bbafae3d..335d0a71e0 100644 --- a/msautotest/wxs/expected/wms_inspire_cap_ger.xml +++ b/msautotest/wxs/expected/wms_inspire_cap_ger.xml @@ -55,6 +55,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_inspire_scenario1_cap130.xml b/msautotest/wxs/expected/wms_inspire_scenario1_cap130.xml index b653444de0..a7b62ff4fb 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario1_cap130.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario1_cap130.xml @@ -53,6 +53,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_inspire_scenario1_cap130_eng.xml b/msautotest/wxs/expected/wms_inspire_scenario1_cap130_eng.xml index b653444de0..a7b62ff4fb 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario1_cap130_eng.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario1_cap130_eng.xml @@ -53,6 +53,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml b/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml index f8771c8f6d..4036553968 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario1_cap130_ger.xml @@ -53,6 +53,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_inspire_scenario2_cap111.xml b/msautotest/wxs/expected/wms_inspire_scenario2_cap111.xml index 1d28a46a1d..51e80591aa 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario2_cap111.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario2_cap111.xml @@ -55,6 +55,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_inspire_scenario2_cap111_eng.xml b/msautotest/wxs/expected/wms_inspire_scenario2_cap111_eng.xml index 1d28a46a1d..51e80591aa 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario2_cap111_eng.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario2_cap111_eng.xml @@ -55,6 +55,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_inspire_scenario2_cap111_ger.xml b/msautotest/wxs/expected/wms_inspire_scenario2_cap111_ger.xml index a142a45994..ca43fc49bd 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario2_cap111_ger.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario2_cap111_ger.xml @@ -55,6 +55,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_inspire_scenario2_cap130.xml b/msautotest/wxs/expected/wms_inspire_scenario2_cap130.xml index f1789f5774..71e8b1686a 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario2_cap130.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario2_cap130.xml @@ -53,6 +53,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_inspire_scenario2_cap130_eng.xml b/msautotest/wxs/expected/wms_inspire_scenario2_cap130_eng.xml index f1789f5774..71e8b1686a 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario2_cap130_eng.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario2_cap130_eng.xml @@ -53,6 +53,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml b/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml index 0a06b2b9e4..6c61d131ea 100644 --- a/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml +++ b/msautotest/wxs/expected/wms_inspire_scenario2_cap130_ger.xml @@ -53,6 +53,7 @@ image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_north_polar_stereo_extent.xml b/msautotest/wxs/expected/wms_north_polar_stereo_extent.xml index 581b6ab02b..5136d0958e 100644 --- a/msautotest/wxs/expected/wms_north_polar_stereo_extent.xml +++ b/msautotest/wxs/expected/wms_north_polar_stereo_extent.xml @@ -56,6 +56,7 @@ Content-Type: text/xml; charset=UTF-8 image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_nosld_cap.xml b/msautotest/wxs/expected/wms_nosld_cap.xml index a5b99049c5..15fa4605d5 100644 --- a/msautotest/wxs/expected/wms_nosld_cap.xml +++ b/msautotest/wxs/expected/wms_nosld_cap.xml @@ -36,6 +36,7 @@ Content-Type: application/vnd.ogc.wms_xml; charset=UTF-8 image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json diff --git a/msautotest/wxs/expected/wms_nosld_cap_postgis.xml b/msautotest/wxs/expected/wms_nosld_cap_postgis.xml index f6f4d96da0..6b683717d0 100644 --- a/msautotest/wxs/expected/wms_nosld_cap_postgis.xml +++ b/msautotest/wxs/expected/wms_nosld_cap_postgis.xml @@ -36,6 +36,7 @@ Content-Type: application/vnd.ogc.wms_xml; charset=UTF-8 image/tiff application/vnd.google-earth.kml+xml application/vnd.google-earth.kmz + application/json From 8d3b4a42829d130263bfcc7941be47801d712a74 Mon Sep 17 00:00:00 2001 From: Fabian Schindler Date: Wed, 14 Mar 2018 12:53:12 +0100 Subject: [PATCH 205/221] Fixing issues with parsing GetCoverage XML requests. --- mapwcs20.c | 383 ++++++++++++++++++++++++++++------------------------- 1 file changed, 202 insertions(+), 181 deletions(-) diff --git a/mapwcs20.c b/mapwcs20.c index 26d097e160..85708898dd 100644 --- a/mapwcs20.c +++ b/mapwcs20.c @@ -741,6 +741,24 @@ xmlNodePtr msLibXml2GetFirstChildNs(xmlNodePtr parent, const char *name, xmlNsPt } return NULL; } + +/* + Utility function to get the first child of a node with a given node name + */ + +xmlNodePtr msLibXml2GetFirstChildElement(xmlNodePtr parent) { + xmlNodePtr node; + if (!parent) { + return NULL; + } + + XML_FOREACH_CHILD(parent, node) { + if (node->type == XML_ELEMENT_NODE) { + return node; + } + } + return NULL; +} #endif /* defined(USE_LIBXML2) */ /************************************************************************/ @@ -760,7 +778,6 @@ static int msWCSParseRequest20_XMLGetCapabilities( else if (EQUAL((char *)child->name, "AcceptVersions")) { xmlNodePtr versionNode = NULL; XML_FOREACH_CHILD(child, versionNode) { - /* for(child = firstChild->children; child != NULL; child = child->next) */ XML_LOOP_IGNORE_COMMENT_OR_TEXT(versionNode); XML_ASSERT_NODE_NAME(versionNode, "Version"); @@ -1022,6 +1039,7 @@ static int msWCSParseRequest20_XMLGetCoverage( xmlNodePtr bandNode = NULL; XML_FOREACH_CHILD(child, bandNode) { char *content = NULL; + XML_LOOP_IGNORE_COMMENT_OR_TEXT(bandNode); XML_ASSERT_NODE_NAME(bandNode, "band"); content = (char *)xmlNodeGetContent(bandNode); @@ -1034,214 +1052,218 @@ static int msWCSParseRequest20_XMLGetCoverage( XML_FOREACH_CHILD(child, extensionNode) { XML_LOOP_IGNORE_COMMENT_OR_TEXT(extensionNode); - if (EQUAL((char *) extensionNode->name, "ScaleByFactor")) { - xmlNodePtr scaleFactorNode = extensionNode->children; - char *content; - if (!scaleFactorNode || !EQUAL((char *)scaleFactorNode->name, "scaleFactor")) { - msSetError(MS_WCSERR, "Missing 'scaleFactor' node.", - "msWCSParseRequest20_XMLGetCoverage()"); - return MS_FAILURE; - } - content = (char *)xmlNodeGetContent(scaleFactorNode); - if (msStringParseDouble(content, &(params->scale)) != MS_SUCCESS - || params->scale < 0.0) { - msSetError(MS_WCSERR, "Invalid scaleFactor '%s'.", - "msWCSParseRequest20_XMLGetCoverage()", content); - xmlFree(content); - return MS_FAILURE; - } - xmlFree(content); - } - - else if (EQUAL((char *) extensionNode->name, "ScaleAxesByFactor")) { - xmlNodePtr scaleAxisNode, axisNode, scaleFactorNode; - char *axisName, *content; - wcs20AxisObjPtr axis; - - XML_FOREACH_CHILD(extensionNode, scaleAxisNode) { - XML_LOOP_IGNORE_COMMENT_OR_TEXT(scaleAxisNode); + if (EQUAL((char *) extensionNode->name, "Scaling")) { + xmlNodePtr scaleMethodNode = msLibXml2GetFirstChildElement(extensionNode); - if (!EQUAL((char *)scaleAxisNode->name, "ScaleAxis")) { - msSetError(MS_WCSERR, "Invalid ScaleAxesByFactor.", + if (EQUAL((char *) scaleMethodNode->name, "ScaleByFactor")) { + xmlNodePtr scaleFactorNode = msLibXml2GetFirstChildElement(scaleMethodNode); + char *content; + if (!scaleFactorNode || !EQUAL((char *)scaleFactorNode->name, "scaleFactor")) { + msSetError(MS_WCSERR, "Missing 'scaleFactor' node.", "msWCSParseRequest20_XMLGetCoverage()"); return MS_FAILURE; } - - /* axis */ - if (NULL == (axisNode = msLibXml2GetFirstChild(scaleAxisNode, "axis"))) { - msSetError(MS_WCSERR, "Missing axis node", - "msWCSParseRequest20_XMLGetCoverage()"); + content = (char *)xmlNodeGetContent(scaleFactorNode); + if (msStringParseDouble(content, &(params->scale)) != MS_SUCCESS + || params->scale < 0.0) { + msSetError(MS_WCSERR, "Invalid scaleFactor '%s'.", + "msWCSParseRequest20_XMLGetCoverage()", content); + xmlFree(content); return MS_FAILURE; } - axisName = (char *)xmlNodeGetContent(axisNode); - if(NULL == (axis = msWCSFindAxis20(params, axisName))) { - if(NULL == (axis = msWCSCreateAxisObj20())) { - xmlFree(axisName); + xmlFree(content); + } + + else if (EQUAL((char *) scaleMethodNode->name, "ScaleAxesByFactor")) { + xmlNodePtr scaleAxisNode, axisNode, scaleFactorNode; + char *axisName, *content; + wcs20AxisObjPtr axis; + + XML_FOREACH_CHILD(scaleMethodNode, scaleAxisNode) { + XML_LOOP_IGNORE_COMMENT_OR_TEXT(scaleAxisNode); + + if (!EQUAL((char *)scaleAxisNode->name, "ScaleAxis")) { + msSetError(MS_WCSERR, "Invalid ScaleAxesByFactor.", + "msWCSParseRequest20_XMLGetCoverage()"); return MS_FAILURE; } - axis->name = msStrdup(axisName); - msWCSInsertAxisObj20(params, axis); - } - xmlFree(axisName); - if (axis->scale != MS_WCS20_UNBOUNDED) { - msSetError(MS_WCSERR, "scaleFactor was already set for axis '%s'.", - "msWCSParseRequest20_XMLGetCoverage()", axis->name); - return MS_FAILURE; - } + /* axis */ + if (NULL == (axisNode = msLibXml2GetFirstChild(scaleAxisNode, "axis"))) { + msSetError(MS_WCSERR, "Missing axis node", + "msWCSParseRequest20_XMLGetCoverage()"); + return MS_FAILURE; + } + axisName = (char *)xmlNodeGetContent(axisNode); + if(NULL == (axis = msWCSFindAxis20(params, axisName))) { + if(NULL == (axis = msWCSCreateAxisObj20())) { + xmlFree(axisName); + return MS_FAILURE; + } + axis->name = msStrdup(axisName); + msWCSInsertAxisObj20(params, axis); + } + xmlFree(axisName); - /* scaleFactor */ - if (NULL == (scaleFactorNode = msLibXml2GetFirstChild(scaleAxisNode, "scaleFactor"))) { - msSetError(MS_WCSERR, "Missing scaleFactor node", - "msWCSParseRequest20_XMLGetCoverage()"); - return MS_FAILURE; - } + if (axis->scale != MS_WCS20_UNBOUNDED) { + msSetError(MS_WCSERR, "scaleFactor was already set for axis '%s'.", + "msWCSParseRequest20_XMLGetCoverage()", axis->name); + return MS_FAILURE; + } - content = (char *)xmlNodeGetContent(scaleFactorNode); - if (msStringParseDouble(content, &(axis->scale)) != MS_SUCCESS - || axis->scale < 0.0) { - msSetError(MS_WCSERR, "Invalid scaleFactor '%s'.", - "msWCSParseRequest20_XMLGetCoverage()", content); + /* scaleFactor */ + if (NULL == (scaleFactorNode = msLibXml2GetFirstChild(scaleAxisNode, "scaleFactor"))) { + msSetError(MS_WCSERR, "Missing scaleFactor node", + "msWCSParseRequest20_XMLGetCoverage()"); + return MS_FAILURE; + } + + content = (char *)xmlNodeGetContent(scaleFactorNode); + if (msStringParseDouble(content, &(axis->scale)) != MS_SUCCESS + || axis->scale < 0.0) { + msSetError(MS_WCSERR, "Invalid scaleFactor '%s'.", + "msWCSParseRequest20_XMLGetCoverage()", content); + xmlFree(content); + return MS_FAILURE; + } xmlFree(content); - return MS_FAILURE; } - xmlFree(content); } - } - else if (EQUAL((char *) extensionNode->name, "ScaleToSize")) { - xmlNodePtr scaleAxisNode, axisNode, targetSizeNode; - char *axisName, *content; - wcs20AxisObjPtr axis; + else if (EQUAL((char *) scaleMethodNode->name, "ScaleToSize")) { + xmlNodePtr scaleAxisNode, axisNode, targetSizeNode; + char *axisName, *content; + wcs20AxisObjPtr axis; - XML_FOREACH_CHILD(extensionNode, scaleAxisNode) { - XML_LOOP_IGNORE_COMMENT_OR_TEXT(scaleAxisNode); + XML_FOREACH_CHILD(scaleMethodNode, scaleAxisNode) { + XML_LOOP_IGNORE_COMMENT_OR_TEXT(scaleAxisNode); - if (!EQUAL((char *)scaleAxisNode->name, "targetAxisSize")) { - msSetError(MS_WCSERR, "Invalid ScaleToSize.", - "msWCSParseRequest20_XMLGetCoverage()"); - return MS_FAILURE; - } + if (!EQUAL((char *)scaleAxisNode->name, "TargetAxisSize")) { + msSetError(MS_WCSERR, "Invalid ScaleToSize.", + "msWCSParseRequest20_XMLGetCoverage()"); + return MS_FAILURE; + } - /* axis */ - if (NULL == (axisNode = msLibXml2GetFirstChild(scaleAxisNode, "axis"))) { - msSetError(MS_WCSERR, "Missing axis node", - "msWCSParseRequest20_XMLGetCoverage()"); - return MS_FAILURE; - } - axisName = (char *)xmlNodeGetContent(axisNode); - if(NULL == (axis = msWCSFindAxis20(params, axisName))) { - if(NULL == (axis = msWCSCreateAxisObj20())) { - xmlFree(axisName); + /* axis */ + if (NULL == (axisNode = msLibXml2GetFirstChild(scaleAxisNode, "axis"))) { + msSetError(MS_WCSERR, "Missing axis node", + "msWCSParseRequest20_XMLGetCoverage()"); return MS_FAILURE; } - axis->name = msStrdup(axisName); - msWCSInsertAxisObj20(params, axis); - } - xmlFree(axisName); + axisName = (char *)xmlNodeGetContent(axisNode); + if(NULL == (axis = msWCSFindAxis20(params, axisName))) { + if(NULL == (axis = msWCSCreateAxisObj20())) { + xmlFree(axisName); + return MS_FAILURE; + } + axis->name = msStrdup(axisName); + msWCSInsertAxisObj20(params, axis); + } + xmlFree(axisName); - if (axis->size != 0) { - msSetError(MS_WCSERR, "targetSize was already set for axis '%s'.", - "msWCSParseRequest20_XMLGetCoverage()", axis->name); - return MS_FAILURE; - } + if (axis->size != 0) { + msSetError(MS_WCSERR, "targetSize was already set for axis '%s'.", + "msWCSParseRequest20_XMLGetCoverage()", axis->name); + return MS_FAILURE; + } - /* targetSize */ - if (NULL == (targetSizeNode = msLibXml2GetFirstChild(scaleAxisNode, "targetSize"))) { - msSetError(MS_WCSERR, "Missing targetSize node", - "msWCSParseRequest20_XMLGetCoverage()"); - return MS_FAILURE; - } + /* targetSize */ + if (NULL == (targetSizeNode = msLibXml2GetFirstChild(scaleAxisNode, "targetSize"))) { + msSetError(MS_WCSERR, "Missing targetSize node", + "msWCSParseRequest20_XMLGetCoverage()"); + return MS_FAILURE; + } - content = (char *)xmlNodeGetContent(targetSizeNode); - if (msStringParseInteger(content, &(axis->size)) != MS_SUCCESS - || axis->size <= 0) { - msSetError(MS_WCSERR, "Invalid targetSize '%s'.", - "msWCSParseRequest20_XMLGetCoverage()", content); + content = (char *)xmlNodeGetContent(targetSizeNode); + if (msStringParseInteger(content, &(axis->size)) != MS_SUCCESS + || axis->size <= 0) { + msSetError(MS_WCSERR, "Invalid targetSize '%s'.", + "msWCSParseRequest20_XMLGetCoverage()", content); + xmlFree(content); + return MS_FAILURE; + } xmlFree(content); - return MS_FAILURE; } - xmlFree(content); } - } - else if (EQUAL((char *) extensionNode->name, "ScaleToExtent")) { - xmlNodePtr scaleAxisNode, axisNode, lowNode, highNode; - char *axisName, *content; - wcs20AxisObjPtr axis; - int low, high; + else if (EQUAL((char *) scaleMethodNode->name, "ScaleToExtent")) { + xmlNodePtr scaleAxisNode, axisNode, lowNode, highNode; + char *axisName, *content; + wcs20AxisObjPtr axis; + int low, high; - XML_FOREACH_CHILD(extensionNode, scaleAxisNode) { - XML_LOOP_IGNORE_COMMENT_OR_TEXT(scaleAxisNode); + XML_FOREACH_CHILD(scaleMethodNode, scaleAxisNode) { + XML_LOOP_IGNORE_COMMENT_OR_TEXT(scaleAxisNode); - if (!EQUAL((char *)scaleAxisNode->name, "TargetAxisExtent")) { - msSetError(MS_WCSERR, "Invalid ScaleToExtent.", - "msWCSParseRequest20_XMLGetCoverage()"); - return MS_FAILURE; - } + if (!EQUAL((char *)scaleAxisNode->name, "TargetAxisExtent")) { + msSetError(MS_WCSERR, "Invalid ScaleToExtent.", + "msWCSParseRequest20_XMLGetCoverage()"); + return MS_FAILURE; + } - /* axis */ - if (NULL == (axisNode = msLibXml2GetFirstChild(scaleAxisNode, "axis"))) { - msSetError(MS_WCSERR, "Missing axis node", - "msWCSParseRequest20_XMLGetCoverage()"); - return MS_FAILURE; - } - axisName = (char *)xmlNodeGetContent(axisNode); - if(NULL == (axis = msWCSFindAxis20(params, axisName))) { - if(NULL == (axis = msWCSCreateAxisObj20())) { - xmlFree(axisName); + /* axis */ + if (NULL == (axisNode = msLibXml2GetFirstChild(scaleAxisNode, "axis"))) { + msSetError(MS_WCSERR, "Missing axis node", + "msWCSParseRequest20_XMLGetCoverage()"); return MS_FAILURE; } - axis->name = msStrdup(axisName); - msWCSInsertAxisObj20(params, axis); - } - xmlFree(axisName); + axisName = (char *)xmlNodeGetContent(axisNode); + if(NULL == (axis = msWCSFindAxis20(params, axisName))) { + if(NULL == (axis = msWCSCreateAxisObj20())) { + xmlFree(axisName); + return MS_FAILURE; + } + axis->name = msStrdup(axisName); + msWCSInsertAxisObj20(params, axis); + } + xmlFree(axisName); - if (axis->size != 0) { - msSetError(MS_WCSERR, "targetSize was already set for axis '%s'.", - "msWCSParseRequest20_XMLGetCoverage()", axis->name); - return MS_FAILURE; - } + if (axis->size != 0) { + msSetError(MS_WCSERR, "targetSize was already set for axis '%s'.", + "msWCSParseRequest20_XMLGetCoverage()", axis->name); + return MS_FAILURE; + } - /* targetSize */ - if (NULL == (lowNode = msLibXml2GetFirstChild(scaleAxisNode, "low"))) { - msSetError(MS_WCSERR, "Missing low node", - "msWCSParseRequest20_XMLGetCoverage()"); - return MS_FAILURE; - } + /* targetSize */ + if (NULL == (lowNode = msLibXml2GetFirstChild(scaleAxisNode, "low"))) { + msSetError(MS_WCSERR, "Missing low node", + "msWCSParseRequest20_XMLGetCoverage()"); + return MS_FAILURE; + } - if (NULL == (highNode = msLibXml2GetFirstChild(scaleAxisNode, "high"))) { - msSetError(MS_WCSERR, "Missing high node", - "msWCSParseRequest20_XMLGetCoverage()"); - return MS_FAILURE; - } + if (NULL == (highNode = msLibXml2GetFirstChild(scaleAxisNode, "high"))) { + msSetError(MS_WCSERR, "Missing high node", + "msWCSParseRequest20_XMLGetCoverage()"); + return MS_FAILURE; + } - content = (char *)xmlNodeGetContent(lowNode); - if (msStringParseInteger(content, &low) != MS_SUCCESS) { - msSetError(MS_WCSERR, "Invalid low value '%s'.", - "msWCSParseRequest20_XMLGetCoverage()", content); + content = (char *)xmlNodeGetContent(lowNode); + if (msStringParseInteger(content, &low) != MS_SUCCESS) { + msSetError(MS_WCSERR, "Invalid low value '%s'.", + "msWCSParseRequest20_XMLGetCoverage()", content); + xmlFree(content); + return MS_FAILURE; + } xmlFree(content); - return MS_FAILURE; - } - xmlFree(content); - content = (char *)xmlNodeGetContent(highNode); - if (msStringParseInteger(content, &high) != MS_SUCCESS) { - msSetError(MS_WCSERR, "Invalid high value '%s'.", - "msWCSParseRequest20_XMLGetCoverage()", content); + content = (char *)xmlNodeGetContent(highNode); + if (msStringParseInteger(content, &high) != MS_SUCCESS) { + msSetError(MS_WCSERR, "Invalid high value '%s'.", + "msWCSParseRequest20_XMLGetCoverage()", content); + xmlFree(content); + return MS_FAILURE; + } xmlFree(content); - return MS_FAILURE; - } - xmlFree(content); - if (high <= low) { - msSetError(MS_WCSERR, "Invalid extent, high is lower than low.", - "msWCSParseRequest20_XMLGetCoverage()"); - return MS_FAILURE; - } + if (high <= low) { + msSetError(MS_WCSERR, "Invalid extent, high is lower than low.", + "msWCSParseRequest20_XMLGetCoverage()"); + return MS_FAILURE; + } - axis->size = high - low; + axis->size = high - low; + } } } @@ -1250,39 +1272,39 @@ static int msWCSParseRequest20_XMLGetCoverage( xmlNodePtr rangeItemNode = NULL; XML_FOREACH_CHILD(extensionNode, rangeItemNode) { - + xmlNodePtr rangeItemNodeChild = msLibXml2GetFirstChildElement(rangeItemNode); XML_LOOP_IGNORE_COMMENT_OR_TEXT(rangeItemNode); XML_ASSERT_NODE_NAME(rangeItemNode, "RangeItem"); - if (!rangeItemNode->children) { + if (!rangeItemNodeChild) { msSetError(MS_WCSERR, "Missing RangeComponent or RangeInterval.", "msWCSParseRequest20_XMLGetCoverage()"); return MS_FAILURE; } - else if (EQUAL((char *) rangeItemNode->children->name, "RangeComponent")) { - char *content = (char *)xmlNodeGetContent(rangeItemNode->children); + else if (EQUAL((char *) rangeItemNodeChild->name, "RangeComponent")) { + char *content = (char *)xmlNodeGetContent(rangeItemNodeChild); params->range_subset = CSLAddString(params->range_subset, content); xmlFree(content); } - else if (EQUAL((char *) rangeItemNode->children->name, "RangeInterval")) { - xmlNodePtr intervalNode = rangeItemNode->children; + else if (EQUAL((char *) rangeItemNodeChild->name, "RangeInterval")) { + xmlNodePtr intervalNode = rangeItemNodeChild; + xmlNodePtr startComponentNode = msLibXml2GetFirstChild(intervalNode, "startComponent"); + xmlNodePtr endComponentNode = msLibXml2GetFirstChild(intervalNode, "endComponent"); char *start; char *stop; char *value; int length; - if (!intervalNode->children || !intervalNode->children->next - || !EQUAL((char *) intervalNode->children->name, "startComponent") - || !EQUAL((char *) intervalNode->children->next->name, "endComponent")) { + if (!startComponentNode || !endComponentNode) { msSetError(MS_WCSERR, "Wrong RangeInterval.", "msWCSParseRequest20_XMLGetCoverage()"); return MS_FAILURE; } - start = (char *)xmlNodeGetContent(intervalNode->children); - stop = (char *)xmlNodeGetContent(intervalNode->children->next); + start = (char *)xmlNodeGetContent(startComponentNode); + stop = (char *)xmlNodeGetContent(endComponentNode); length = strlen(start) + strlen(stop) + 2; value = msSmallCalloc(length, sizeof(char)); @@ -1309,10 +1331,9 @@ static int msWCSParseRequest20_XMLGetCoverage( } else if (EQUAL((char *) extensionNode->name, "Interpolation")) { - xmlNodePtr globalInterpolation; + xmlNodePtr globalInterpolation = msLibXml2GetFirstChild(extensionNode, "globalInterpolation"); char *content; - if ((globalInterpolation = extensionNode->children) == NULL - || !EQUAL((char *)globalInterpolation->name, "globalInterpolation")) { + if (globalInterpolation == NULL) { msSetError(MS_WCSERR, "Missing 'globalInterpolation' node.", "msWCSParseRequest20_XMLGetCoverage()"); return MS_FAILURE; From 3b4aefa555253d4ae2d193c3dabebb191e8f948b Mon Sep 17 00:00:00 2001 From: Fabian Schindler Date: Wed, 14 Mar 2018 18:21:54 +0100 Subject: [PATCH 206/221] Fixing issues when no band names are specified: allowing to access the bands with the default band name 'band'. --- mapwcs20.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/mapwcs20.c b/mapwcs20.c index 85708898dd..b7d32d8f6a 100644 --- a/mapwcs20.c +++ b/mapwcs20.c @@ -3788,13 +3788,13 @@ static int msWCSGetCoverage20_GetBands(mapObj *map, layerObj *layer, return MS_SUCCESS; } - count = CSLCount(params->range_subset); maxlen = cm->numbands * 4 * sizeof(char); *bandlist = msSmallCalloc(sizeof(char), maxlen); /* Use WCS 2.0 metadata items in priority */ tmp = msOWSGetEncodeMetadata(&layer->metadata, - "CO", "band_names", NULL); + "CO", "band_names", NULL); + if( NULL == tmp ) { /* Otherwise default to WCS 1.x*/ tmp = msOWSGetEncodeMetadata(&layer->metadata, @@ -3819,6 +3819,16 @@ static int msWCSGetCoverage20_GetBands(mapObj *map, layerObj *layer, msFree(tmp); } + /* If we still don't have band names, use the band names from the coverage metadata */ + if (band_ids == NULL) { + band_ids = (char**) msSmallCalloc(sizeof(char*), (cm->numbands + 1)); + for (i = 0; i < cm->numbands; ++i) { + band_ids[i] = msStrdup(cm->bands[i].name); + } + } + + /* Iterate over all supplied range */ + count = CSLCount(params->range_subset); for(i = 0; i < count; ++i) { /* RangeInterval case: defined as ":" */ if ((interval_stop = strchr(params->range_subset[i], ':')) != NULL) { From 53d146097e988d1084d794ee0eccb0f766fb3b62 Mon Sep 17 00:00:00 2001 From: Tamas Szekeres Date: Sun, 18 Mar 2018 18:20:50 +0100 Subject: [PATCH 207/221] Apply FT_LOAD_NO_BITMAP in FT_Load_Glyph (#5567) --- fontcache.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fontcache.c b/fontcache.c index bc19c0eba7..b41e087500 100644 --- a/fontcache.c +++ b/fontcache.c @@ -284,7 +284,7 @@ outline_element* msGetGlyphOutline(face_element *face, glyph_element *glyph) { matrix.xy = matrix.yx = 0x00000L; pen.x = pen.y = 0; FT_Set_Transform(face->face, &matrix, &pen); - error = FT_Load_Glyph(face->face,glyph->key.codepoint,FT_LOAD_DEFAULT/*|FT_LOAD_IGNORE_TRANSFORM*/|FT_LOAD_NO_HINTING|FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); + error = FT_Load_Glyph(face->face,glyph->key.codepoint,FT_LOAD_DEFAULT|FT_LOAD_NO_BITMAP/*|FT_LOAD_IGNORE_TRANSFORM*/|FT_LOAD_NO_HINTING|FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); if(error) { msSetError(MS_MISCERR, "unable to load glyph %ud for font \"%s\"", "msGetGlyphByIndex()",glyph->key.codepoint, face->font); return NULL; From 28f65661f09167348559382319a36496609221a5 Mon Sep 17 00:00:00 2001 From: Fabian Schindler Date: Mon, 19 Mar 2018 11:10:25 +0100 Subject: [PATCH 208/221] Fixing WCS 2.0 POST/XML tests after recent bugfixes. --- msautotest/wxs/wcs_post.map | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/msautotest/wxs/wcs_post.map b/msautotest/wxs/wcs_post.map index 5cd318d6a4..d2391373ac 100644 --- a/msautotest/wxs/wcs_post.map +++ b/msautotest/wxs/wcs_post.map @@ -93,10 +93,10 @@ # # # Scaling according to Scaling Extension -# RUN_PARMS: wcs_20_post_getcov_scaling_size_full.tif [MAPSERV] [POST]image/tiffgreyx10y20[/POST] > [RESULT_DEMIME] -# RUN_PARMS: wcs_20_getcov_scaling_scalefactor.tif [MAPSERV] [POST]image/tiffgrey1.5[/POST] > [RESULT_DEMIME] -# RUN_PARMS: wcs_20_getcov_scaling_scalefactor_per_axis.tif [MAPSERV] [POST]image/tiffgreyx1.5y2.0[/POST] > [RESULT_DEMIME] -# RUN_PARMS: wcs_20_getcov_scaling_extent.tif [MAPSERV] [POST]image/tiffgreyx1020y2030[/POST] > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_post_getcov_scaling_size_full.tif [MAPSERV] [POST]image/tiffgreyx10y20[/POST] > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_getcov_scaling_scalefactor.tif [MAPSERV] [POST]image/tiffgrey1.5[/POST] > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_getcov_scaling_scalefactor_per_axis.tif [MAPSERV] [POST]image/tiffgreyx1.5y2.0[/POST] > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_getcov_scaling_extent.tif [MAPSERV] [POST]image/tiffgreyx1020y2030[/POST] > [RESULT_DEMIME] # # Scaling in imageCRS # RUN_PARMS: wcs_20_post_getcov_imageCRS_scaling_size_trim_both.tif [MAPSERV] [POST]image/tiffgrey2030x1020y1030[/POST] > [RESULT_DEMIME] @@ -120,9 +120,9 @@ # RUN_PARMS: wcs_20_post_getcov_interpolation_bilinear.tif [MAPSERV] [POST]image/tiffgrey2020BILINEAR[/POST] > [RESULT_DEMIME] # # Interpolation according to Interpolation Extension -# RUN_PARMS: wcs_20_post_getcov_interpolation_nearest.tif [MAPSERV] [POST]image/tiffgreyx20y20NEAREST[/POST] > [RESULT_DEMIME] -# RUN_PARMS: wcs_20_post_getcov_interpolation_average.tif [MAPSERV] [POST]image/tiffgreyx20y20AVERAGE[/POST] > [RESULT_DEMIME] -# RUN_PARMS: wcs_20_post_getcov_interpolation_bilinear.tif [MAPSERV] [POST]image/tiffgreyx20y20BILINEAR[/POST] > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_post_getcov_interpolation_nearest.tif [MAPSERV] [POST]image/tiffgreyx20y20NEAREST[/POST] > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_post_getcov_interpolation_average.tif [MAPSERV] [POST]image/tiffgreyx20y20AVERAGE[/POST] > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_post_getcov_interpolation_bilinear.tif [MAPSERV] [POST]image/tiffgreyx20y20BILINEAR[/POST] > [RESULT_DEMIME] # # GeoTIFF parameters # From ced579e562929ae56f7ecf533e30c52ce9b8a8b7 Mon Sep 17 00:00:00 2001 From: Fabian Schindler Date: Wed, 21 Mar 2018 18:13:40 +0100 Subject: [PATCH 209/221] Adding additional tests for rangesubsets: using default band names and indices for POST/XML. --- msautotest/wxs/wcs_multi.map | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/msautotest/wxs/wcs_multi.map b/msautotest/wxs/wcs_multi.map index 4cc4c05712..66d9866929 100644 --- a/msautotest/wxs/wcs_multi.map +++ b/msautotest/wxs/wcs_multi.map @@ -39,8 +39,29 @@ # RUN_PARMS: wcs_20_getcov_bands_interval.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&RANGESUBSET=Band2:Band5" > [RESULT_DEMIME] # RUN_PARMS: wcs_20_getcov_bands_intervals.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&RANGESUBSET=Band2:Band5,Band7:myBand9" > [RESULT_DEMIME] # +# Using band indices +# +# RUN_PARMS: wcs_20_getcov_bands_interval.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&RANGESUBSET=2:5" > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_getcov_bands_intervals.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&RANGESUBSET=2:5,7:9" > [RESULT_DEMIME] +# +# Using default band names +# +# RUN_PARMS: wcs_20_getcov_bands_interval.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_no_metadata&FORMAT=image/tiff&RANGESUBSET=band2:band5" > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_getcov_bands_intervals.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_no_metadata&FORMAT=image/tiff&RANGESUBSET=band2:band5,band7:band9" > [RESULT_DEMIME] +# +# Updated API for POST/XML +# +# Using band names when supplied # # RUN_PARMS: wcs_20_post_bands_interval_component.tif [MAPSERV] [POST]image/tiffmulti_newBand1Band3Band8[/POST] > [RESULT_DEMIME] +# +# Using band indices +# +# RUN_PARMS: wcs_20_post_bands_interval_component.tif [MAPSERV] [POST]image/tiffmulti_new138[/POST] > [RESULT_DEMIME] +# +# Using default band names +# +# RUN_PARMS: wcs_20_post_bands_interval_component.tif [MAPSERV] [POST]image/tiffmulti_no_metadataband1band3band8[/POST] > [RESULT_DEMIME] MAP NAME TEST @@ -176,4 +197,21 @@ LAYER END END + +LAYER + NAME multi_no_metadata + TYPE raster + STATUS ON + DUMP TRUE + + DATA data/multiband.tif + + PROJECTION + "init=epsg:4326" + END + METADATA + # as the name implies, no metadata + END +END + END From ef99079031f3aa14cd2489493a01f243a2be3739 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20Mei=C3=9Fl?= Date: Thu, 22 Mar 2018 14:48:12 +0100 Subject: [PATCH 210/221] Adjusting coverage used in tests. --- msautotest/wxs/wcs_multi.map | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/msautotest/wxs/wcs_multi.map b/msautotest/wxs/wcs_multi.map index 66d9866929..88ff87d915 100644 --- a/msautotest/wxs/wcs_multi.map +++ b/msautotest/wxs/wcs_multi.map @@ -46,8 +46,8 @@ # # Using default band names # -# RUN_PARMS: wcs_20_getcov_bands_interval.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_no_metadata&FORMAT=image/tiff&RANGESUBSET=band2:band5" > [RESULT_DEMIME] -# RUN_PARMS: wcs_20_getcov_bands_intervals.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_no_metadata&FORMAT=image/tiff&RANGESUBSET=band2:band5,band7:band9" > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_getcov_bands_interval.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi&FORMAT=image/tiff&RANGESUBSET=band2:band5" > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_getcov_bands_intervals.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi&FORMAT=image/tiff&RANGESUBSET=band2:band5,band7:band9" > [RESULT_DEMIME] # # Updated API for POST/XML # @@ -61,7 +61,7 @@ # # Using default band names # -# RUN_PARMS: wcs_20_post_bands_interval_component.tif [MAPSERV] [POST]image/tiffmulti_no_metadataband1band3band8[/POST] > [RESULT_DEMIME] +# RUN_PARMS: wcs_20_post_bands_interval_component.tif [MAPSERV] [POST]image/tiffmultiband1band3band8[/POST] > [RESULT_DEMIME] MAP NAME TEST From 0bfc5e7551c7caf2b87c94fb9906af7f93311c28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20Mei=C3=9Fl?= Date: Thu, 22 Mar 2018 15:18:54 +0100 Subject: [PATCH 211/221] Adding tests for #5415. --- msautotest/wxs/wcs_multi.map | 3 +++ 1 file changed, 3 insertions(+) diff --git a/msautotest/wxs/wcs_multi.map b/msautotest/wxs/wcs_multi.map index 88ff87d915..4f34c4d71d 100644 --- a/msautotest/wxs/wcs_multi.map +++ b/msautotest/wxs/wcs_multi.map @@ -36,16 +36,19 @@ # # Updated API # +# RUN_PARMS: wcs_20_getcov_bands_single.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&RANGESUBSET=Band2" > [RESULT_DEMIME] # RUN_PARMS: wcs_20_getcov_bands_interval.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&RANGESUBSET=Band2:Band5" > [RESULT_DEMIME] # RUN_PARMS: wcs_20_getcov_bands_intervals.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&RANGESUBSET=Band2:Band5,Band7:myBand9" > [RESULT_DEMIME] # # Using band indices # +# RUN_PARMS: wcs_20_getcov_bands_single.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&RANGESUBSET=2" > [RESULT_DEMIME] # RUN_PARMS: wcs_20_getcov_bands_interval.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&RANGESUBSET=2:5" > [RESULT_DEMIME] # RUN_PARMS: wcs_20_getcov_bands_intervals.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&RANGESUBSET=2:5,7:9" > [RESULT_DEMIME] # # Using default band names # +# RUN_PARMS: wcs_20_getcov_bands_single.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi_new&FORMAT=image/tiff&RANGESUBSET=band2" > [RESULT_DEMIME] # RUN_PARMS: wcs_20_getcov_bands_interval.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi&FORMAT=image/tiff&RANGESUBSET=band2:band5" > [RESULT_DEMIME] # RUN_PARMS: wcs_20_getcov_bands_intervals.tif [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage&COVERAGEID=multi&FORMAT=image/tiff&RANGESUBSET=band2:band5,band7:band9" > [RESULT_DEMIME] # From c771a26cc514a188bd6f11223593ac08ab336328 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20Mei=C3=9Fl?= Date: Thu, 22 Mar 2018 15:20:07 +0100 Subject: [PATCH 212/221] Adding missing exptected result. --- .../wxs/expected/wcs_20_getcov_bands_single.tif | Bin 0 -> 6823 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 msautotest/wxs/expected/wcs_20_getcov_bands_single.tif diff --git a/msautotest/wxs/expected/wcs_20_getcov_bands_single.tif b/msautotest/wxs/expected/wcs_20_getcov_bands_single.tif new file mode 100644 index 0000000000000000000000000000000000000000..ef5aedc82191b85cd62f77192cc808757e836c67 GIT binary patch literal 6823 zcmds5ORpqHR<3T(7$Yn+BLs*6q>h*5D(Yr;~Iel-vvJ9sV8JhmWK0!Tj|1JD0=1{-*jd z|L6bs+w$M`Kjw!yU7yK!db@x9&p#Fa^5!R>eB)nJ@Jpj35;#? z?RWm{*{93@pZyw(|2w{M7*)`c{(iOoY{`HZPe5}kv!J#9Rqf9xU6jRX=}c9Mb1gwg zU3)cvuXukP%$ZZz!c}4z7n#P@GaO(d?ufoMBFOL+IYj4&isuqiElg^}-6w2tktB&= z2_OZIfuHbv)clX#nTtvZ2g*IkM_Q7skK-zgzWnwSLZh{{ zKh(z7&!43ViU(YsHYsFg(BCM5gCuaYTxc=p$Oo~nR$2bv-=DR{fL4IRn@SB)Kg<;6 zL%SACz8s=5P`e=s1By7;ndGS#`LM0LTekSA?aJ^%ib^1#-wKNi?NF~Q)B*XF#@!<)VFB_Oyx@H2muHf*ft;vKQuJrC(52977Mf+mx;~|i4Zqk=PvqlF zNzOAx@t}Qx{HPc)d#NID5skD?^f}WFEd;j()j&f5PekImfn}aml$#ma(Uz4| z5G?5*l)@K%R3QrB3a5${bBWQ%pa+(#9p${1YLuc538N>029G9Oa0rq0r4=dKiL_Ik zGMqQ9w_CoMeUTFyKhb=pGn%Xi%-Eu;I4dbOpdm+y8{S|wfB|K`S`m|+QXaxUu|DId zWiwL17Etq@2o#^W=-N0ZeUd}kDOWZx2k16q)$j~j86xI6q0C2#W8Vlh&{7lnS8juO1!fja^BzE2EEBjEX z=G0=7n-&x$T9q!SNNcqzXPGm4%Zr3#pK7cX{X3NL`!gcPE}&Bc3BV+kwsR(@3bJjU zNqM8DW(L4?)JB!9p$mz07gmCq8fbzeJldy%9mRx=nAU~3Gv;0B(^E(gFxP++AThgMp>6xlVX%WP~bF(>_Q2>fFYP+YIC1k9wi-Ik%v91K#)slZu7msw!=}b znId%aNBI!vJ{lOF$WX20b4iD}5~(GcO0E#>WZ@<;J<*hh_nazcewjMR34;j!1krMH zR>rKuQ8Xn;?OY5`D9)qh6&?pVv7o0%Ofo06+C)Ml<*fpbMvw9kH$z!uHsp*#cgjQp z)+K}}x>Fhj4&aH!pmugaTBmfUfrw3;2j$X2)s~81L``xf4A+RmAq7UB*Qps@VWE&F zvJ*v^H_qQd)`be7QVA%m=3(SdQhL&$qjHYqnhEOeyJ%HS5 zjYC4Gb&^sY^8hy$L^fuDIFbnD`yG;`*Tb5FT(pLQa1qsUh9gj#q`pM8l}6Xa)TOg= zZkIyax>!zyFAN-V+4@B}>-`a`T8?5uQ%RvReByrDJeu z7KcTVO_zD23ty>vFP$_4e{?emu0baTSx6E+!YO5)>`H|>C)fzKJ#X_%PM}Izrwpy3 zo%9oT?1R7D_$(MhkN?r^=z2&H0%N64eI(qHRD#uvt%t>0ZFt&IL%nSx>coawm4RwV zW1U8-3_3UCLl74_EBwOj7gegGBhXZY0oFErt|?M2H(Cm6WCnz(8FHw*91#z-f|@!> z?Bh>LL41tPqMXRW6jP8la)wLlM zrlo#FKtig@XD)SC4z!29$@{K!`3iL;iJrCc7T zprpJLSO`Vu$z76=v$QOy&@g!}qZSdOq=tD`%vWcN`l9mrBftM3ACBfu=lsK`7*17X zE+};f9jlRlTC;>J-S3O8lZ)IHKyn-4`XCR3URqDmbm*G#Fik^vKVCnvv&$FiY@h1I zM8eTbZ6jnS1UZbNm6k-5jMsv_d#B4!4pbilLEW%6U~^#!_Q>`iaj_bf!~?0*=KW_M z6nY!rE~=4}sitN?-Ls*zY7L+_LU6by^)jgFU5pii5X+RZl+6?orBR@!x!b4S z*=3d6w7j%_1_VwEcP8y9lY{=0+maYKMHh)4`u%>_h73w2&PGC1m zZN|gO#`MCuv-YZq0*DKl*yh#jNUiRt+Ed@DNI}ax<_`7eU4DAKw7p&tvsp`dhM?-% zSb1&6O3w6?`@}KfltN@AHIJ?XQDox%kA73FnjDXRG~k zE69wVGPn2ZUzaGt{%%TCq*e`|+=S`Rc!5 z#_G}f+1YyQkWm{5HeuAWiWR*RSnfWy&fvWar`Le~fpq;kxzA&HarYN2^V&niQz!{! z=?x9Hs8THRdqH2x#x~Yb<2IR)Q#0e^QP~Nnuj>$ivJL3X$h$zOIzABKpXbzX@I^g$ zs%h*^0_blx&zX<4^w^B~O vVlSU97kMIha*!*5y5`tP5TD)k Date: Thu, 22 Mar 2018 15:26:59 +0100 Subject: [PATCH 213/221] Fixing wrong allocation methods in WCS 2.0 GetCoverage. --- mapwcs20.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mapwcs20.c b/mapwcs20.c index b7d32d8f6a..e37079f1de 100644 --- a/mapwcs20.c +++ b/mapwcs20.c @@ -3821,9 +3821,9 @@ static int msWCSGetCoverage20_GetBands(mapObj *map, layerObj *layer, /* If we still don't have band names, use the band names from the coverage metadata */ if (band_ids == NULL) { - band_ids = (char**) msSmallCalloc(sizeof(char*), (cm->numbands + 1)); + band_ids = (char**) CPLCalloc(sizeof(char*), (cm->numbands + 1)); for (i = 0; i < cm->numbands; ++i) { - band_ids[i] = msStrdup(cm->bands[i].name); + band_ids[i] = CPLStrdup(cm->bands[i].name); } } From 5c151d6be2c03f2b40eaabd963676a28111a681e Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 27 Mar 2018 20:03:06 +0200 Subject: [PATCH 214/221] Remove unused variable --- mapfile.c | 1 - 1 file changed, 1 deletion(-) diff --git a/mapfile.c b/mapfile.c index 10596a1e42..9381e934e7 100644 --- a/mapfile.c +++ b/mapfile.c @@ -7142,7 +7142,6 @@ static void applyLayerDefaultSubstitutions(layerObj *layer, hashTableObj *table) static void applyHashTableDefaultSubstitutions(hashTableObj *hashTab, hashTableObj *table) { - int i; const char *default_key = msFirstKeyFromHashTable(table); while (default_key) { if (!strncmp(default_key, "default_", 8)) { From 563b175040b552faaa291b7319843f8f0f729260 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 27 Mar 2018 20:42:53 +0200 Subject: [PATCH 215/221] WFS: take into account PROPERTYNAME with OGR output format (fixes #5573) --- mapwfs.c | 36 +++++++++-------- .../wfsogr_ogroutput_propertyname.txt | 40 +++++++++++++++++++ msautotest/wxs/wfs_ogr.map | 3 ++ 3 files changed, 62 insertions(+), 17 deletions(-) create mode 100644 msautotest/wxs/expected/wfsogr_ogroutput_propertyname.txt diff --git a/mapwfs.c b/mapwfs.c index 40517885be..c2145d8492 100644 --- a/mapwfs.c +++ b/mapwfs.c @@ -3825,13 +3825,25 @@ int msWFSGetFeature(mapObj *map, wfsParamsObj *paramsObj, cgiRequestObj *req, } } + { + int i; + for(i=0;inumlayers;i++) + { + layerObj* lp = GET_LAYER(map, i); + if( papszGMLGroups[i] ) + msInsertHashTable(&(lp->metadata), "GML_GROUPS", papszGMLGroups[i]); + if( papszGMLIncludeItems[i] ) + msInsertHashTable(&(lp->metadata), "GML_INCLUDE_ITEMS", papszGMLIncludeItems[i]); + if( papszGMLGeometries[i] ) + msInsertHashTable(&(lp->metadata), "GML_GEOMETRIES", papszGMLGeometries[i]); + } + } + /* handle case of maxfeatures = 0 */ /*internally use a start index that start with 0 as the first index*/ if( psFormat == NULL ) { if(maxfeatures != 0 && iResultTypeHits == 0) { - layerObj* lp; - int i; int bWFS2MultipleFeatureCollection = MS_FALSE; /* Would make sense for WFS 1.1.0 too ! See #3576 */ @@ -3842,24 +3854,14 @@ int msWFSGetFeature(mapObj *map, wfsParamsObj *paramsObj, cgiRequestObj *req, else if (useurn && strcasecmp(useurn, "false") == 0) bUseURN = 0; - for(i=0;inumlayers;i++) - { - lp = GET_LAYER(map, i); - if( papszGMLGroups[i] ) - msInsertHashTable(&(lp->metadata), "GML_GROUPS", papszGMLGroups[i]); - if( papszGMLIncludeItems[i] ) - msInsertHashTable(&(lp->metadata), "GML_INCLUDE_ITEMS", papszGMLIncludeItems[i]); - if( papszGMLGeometries[i] ) - msInsertHashTable(&(lp->metadata), "GML_GEOMETRIES", papszGMLGeometries[i]); - } - /* For WFS 2.0, when we request several types, we must present each type */ /* in its own FeatureCollection (ยง 11.3.3.5 ) */ if( nWFSVersion >= OWS_2_0_0 && iResultTypeHits != 1 ) { + int i; int nLayersWithFeatures = 0; for(i=0; inumlayers; i++) { - lp = GET_LAYER(map, i); + layerObj* lp = GET_LAYER(map, i); if(lp->resultcache && lp->resultcache->numresults > 0) nLayersWithFeatures ++; } @@ -3878,7 +3880,7 @@ int msWFSGetFeature(mapObj *map, wfsParamsObj *paramsObj, cgiRequestObj *req, /* Save the result cache that contains the features that we want to */ /* emit in the response */ for(i=0; inumlayers; i++) { - lp = GET_LAYER(map, i); + layerObj* lp = GET_LAYER(map, i); saveResultCache[i] = lp->resultcache; if( lp->resultcache && lp->resultcache->numresults > 0) { iLastNonEmptyLayer = i; @@ -3888,7 +3890,7 @@ int msWFSGetFeature(mapObj *map, wfsParamsObj *paramsObj, cgiRequestObj *req, /* Just dump one layer at a time */ for(i=0;inumlayers;i++) { - lp = GET_LAYER(map, i); + layerObj* lp = GET_LAYER(map, i); lp->resultcache = saveResultCache[i]; if( lp->resultcache && lp->resultcache->numresults > 0) { msIO_fprintf(stdout, " \n"); @@ -3913,7 +3915,7 @@ int msWFSGetFeature(mapObj *map, wfsParamsObj *paramsObj, cgiRequestObj *req, /* Restore for later cleanup */ for(i=0; inumlayers; i++) { - lp = GET_LAYER(map, i); + layerObj* lp = GET_LAYER(map, i); lp->resultcache = saveResultCache[i]; } msFree(saveResultCache); diff --git a/msautotest/wxs/expected/wfsogr_ogroutput_propertyname.txt b/msautotest/wxs/expected/wfsogr_ogroutput_propertyname.txt new file mode 100644 index 0000000000..4b5fd44aae --- /dev/null +++ b/msautotest/wxs/expected/wfsogr_ogroutput_propertyname.txt @@ -0,0 +1,40 @@ +Content-Type: multipart/mixed; boundary=xxOGRBoundaryxx + +--xxOGRBoundaryxx +Content-Disposition: attachment; filename=road.mid +Content-Type: application/binary +Content-Transfer-Encoding: binary + +"" + +--xxOGRBoundaryxx +Content-Disposition: attachment; filename=road.mif +Content-Type: application/binary +Content-Transfer-Encoding: binary + +Version 300 +Charset "Neutral" +Delimiter "," +CoordSys Earth Projection 3, 74, "m", -95, 49, 49, 77, 0, 0 +Columns 1 + NAME_E Char(26) +Data + +Pline 14 +2577257 430271.1875 +2577292 420127.65625 +2577297.5 418604.78125 +2577491.75 417462.90625 +2578069 415941.46875 +2578836.5 414230.25 +2579413.25 412899.1875 +2580247.5 412070.84375 +2580693.5 411149.46875 +2580978.5 408984.375 +2580750.5 407559.96875 +2580066.75 405736.6875 +2579326 403970.4375 +2578927.5 402717.03125 + Pen (1,2,0) + +--xxOGRBoundaryxx-- diff --git a/msautotest/wxs/wfs_ogr.map b/msautotest/wxs/wfs_ogr.map index 7674b0de61..e2795f22aa 100644 --- a/msautotest/wxs/wfs_ogr.map +++ b/msautotest/wxs/wfs_ogr.map @@ -63,6 +63,9 @@ # # Exception when requesting layers with different SRS # RUN_PARMS: wfsogr_exception_not_same_srs.xml [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=multi,withnullvalues,popplace,road" > [RESULT] +# +# PropertyName and OGR output format (#5573) +# RUN_PARMS: wfsogr_ogroutput_propertyname.txt [MAPSERV] QUERY_STRING="map=[MAPFILE]&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=road&PROPERTYNAME=name_e&MAXFEATURES=1&OUTPUTFORMAT=multimidmif" > [RESULT] # # WMS 1.1 - GetFeatureInfo # From 2b9d02203e38ecaad1214ef463ea501749824432 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 24 Apr 2018 19:23:17 +0200 Subject: [PATCH 216/221] Cascaded WMS: do not issue a useless GetLegendGraphic to the cascaded server when doing a GetFeatureInfo request --- mapwmslayer.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mapwmslayer.c b/mapwmslayer.c index 3e4747dd57..3150522382 100644 --- a/mapwmslayer.c +++ b/mapwmslayer.c @@ -1452,15 +1452,16 @@ int msWMSLayerExecuteRequest(mapObj *map, int nOWSLayers, int nClickX, int nClic /* Generate the http request */ for (i=0; inumlayers; i++) { if (GET_LAYER(map,map->layerorder[i])->status == MS_ON) { - if (type == WMS_GETFEATUREINFO && - msPrepareWMSLayerRequest(map->layerorder[i], map, GET_LAYER(map,map->layerorder[i]), + if (type == WMS_GETFEATUREINFO ) { + if( msPrepareWMSLayerRequest(map->layerorder[i], map, GET_LAYER(map,map->layerorder[i]), WMS_GETFEATUREINFO, MS_WMS, &sLastWMSParams, nClickX, nClickY, nFeatureCount, pszInfoFormat, pasReqInfo, &numReq) == MS_FAILURE) { - msFreeWmsParamsObj(&sLastWMSParams); - msFree(pasReqInfo); - return MS_FAILURE; + msFreeWmsParamsObj(&sLastWMSParams); + msFree(pasReqInfo); + return MS_FAILURE; + } } else if (msPrepareWMSLayerRequest(map->layerorder[i], map, GET_LAYER(map,map->layerorder[i]), WMS_GETLEGENDGRAPHIC, MS_WMS, &sLastWMSParams, From 7d75e8f9c4acc7337f2b128a23a27eac752d846a Mon Sep 17 00:00:00 2001 From: Steve Lime Date: Wed, 17 Apr 2019 09:58:44 -0500 Subject: [PATCH 217/221] Fix potential XSS issue with [layers] tag. --- maptemplate.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/maptemplate.c b/maptemplate.c index d091bdf489..70b64a7e69 100644 --- a/maptemplate.c +++ b/maptemplate.c @@ -3657,7 +3657,9 @@ static char *processLine(mapservObj *mapserv, char *instr, FILE *stream, int mod strlcat(repstr, " ", sizeof(repstr)); } msStringTrimBlanks(repstr); - outstr = msReplaceSubstring(outstr, "[layers]", repstr); + encodedstr = msEncodeHTMLEntities(repstr); + outstr = msReplaceSubstring(outstr, "[layers]", encodedstr); + free(encodedstr); encodedstr = msEncodeUrl(repstr); outstr = msReplaceSubstring(outstr, "[layers_esc]", encodedstr); From 7e36981948cb3a304f17256f0ea051e5c32d330f Mon Sep 17 00:00:00 2001 From: Jeff McKenna Date: Fri, 20 Mar 2020 17:22:36 -0300 Subject: [PATCH 218/221] handle phpmapscript vulnerability in error handling (#6014) --- mapscript/php/mapscript_error.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/mapscript/php/mapscript_error.c b/mapscript/php/mapscript_error.c index e2bef8ae57..4a0adce5e7 100644 --- a/mapscript/php/mapscript_error.c +++ b/mapscript/php/mapscript_error.c @@ -35,20 +35,19 @@ #include #include "../../maperror.h" -#define MAX_EXCEPTION_MSG 256 - zend_class_entry *mapscript_ce_mapscriptexception; zval* mapscript_throw_exception(char *format TSRMLS_DC, ...) { va_list args; - char message[MAX_EXCEPTION_MSG]; + char message[MESSAGELENGTH]; #ifdef ZTS va_start(args, TSRMLS_C); #else va_start(args, format); #endif - vsprintf(message, format, args); + //prevent buffer overflow + vsnprintf(message, MESSAGELENGTH, format, args); va_end(args); return zend_throw_exception(mapscript_ce_mapscriptexception, message, 0 TSRMLS_CC); } @@ -56,7 +55,7 @@ zval* mapscript_throw_exception(char *format TSRMLS_DC, ...) zval* mapscript_throw_mapserver_exception(char *format TSRMLS_DC, ...) { va_list args; - char message[MAX_EXCEPTION_MSG]; + char message[MESSAGELENGTH]; errorObj *ms_error; ms_error = msGetErrorObj(); @@ -73,21 +72,24 @@ zval* mapscript_throw_mapserver_exception(char *format TSRMLS_DC, ...) #else va_start(args, format); #endif - vsprintf(message, format, args); + //prevent buffer overflow + vsnprintf(message, MESSAGELENGTH, format, args); va_end(args); - return mapscript_throw_exception(message TSRMLS_CC); + //prevent format string attack + return mapscript_throw_exception("%s", message TSRMLS_CC); } void mapscript_report_php_error(int error_type, char *format TSRMLS_DC, ...) { va_list args; - char message[MAX_EXCEPTION_MSG]; + char message[MESSAGELENGTH]; #ifdef ZTS va_start(args, TSRMLS_C); #else va_start(args, format); #endif - vsprintf(message, format, args); + //prevent buffer overflow + vsnprintf(message, MESSAGELENGTH, format, args); va_end(args); php_error_docref(NULL TSRMLS_CC, error_type, "%s,", message); } From 3c3c9b3934f42808c15957f9378dec904203228d Mon Sep 17 00:00:00 2001 From: Seth G Date: Fri, 23 Apr 2021 10:20:22 +0200 Subject: [PATCH 219/221] Use CPLSetConfigOption/CPLGetConfigOption for some CGI/FastCGI-related env vars (#6305) Push a few high-value env vars into CPL config and then reference that instead of the env (mostly for IIS/FastCGI). --- maphttp.c | 4 ++-- mapserv.c | 11 +++++++++++ mapserv.h | 1 + mapservutil.c | 13 +++++++++---- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/maphttp.c b/maphttp.c index 98329d4d23..249cfb7ddc 100644 --- a/maphttp.c +++ b/maphttp.c @@ -39,7 +39,7 @@ #include "mapthread.h" #include "mapows.h" - +#include "cpl_conv.h" #include #ifndef _WIN32 @@ -471,7 +471,7 @@ int msHTTPExecuteRequests(httpRequestObj *pasReqInfo, int numRequests, * If set then the value is the full path to the ca-bundle.crt file * e.g. CURL_CA_BUNDLE=/usr/local/share/curl/curl-ca-bundle.crt */ - pszCurlCABundle = getenv("CURL_CA_BUNDLE"); + pszCurlCABundle = CPLGetConfigOption("CURL_CA_BUNDLE", NULL); if (debug) { msDebug("HTTP: Starting to prepare HTTP requests.\n"); diff --git a/mapserv.c b/mapserv.c index 5924571d2e..5f76308889 100644 --- a/mapserv.c +++ b/mapserv.c @@ -36,6 +36,8 @@ #include "mapio.h" #include "maptime.h" +#include "cpl_conv.h" + #ifndef WIN32 #include #endif @@ -156,6 +158,15 @@ int main(int argc, char *argv[]) if(msGetGlobalDebugLevel() >= MS_DEBUGLEVEL_TUNING) msGettimeofday(&execstarttime, NULL); + /* push high-value ENV vars into the CPL global config - primarily for IIS/FastCGI */ + const char* const apszEnvVars[] = { + "CURL_CA_BUNDLE", "MS_MAPFILE", "MS_MAP_NO_PATH", "MS_MAP_PATTERN", + NULL /* guard */ }; + for( int i = 0; apszEnvVars[i] != NULL; ++i ) { + const char* value = getenv(apszEnvVars[i]); + if(value) CPLSetConfigOption(apszEnvVars[i], value); + } + /* -------------------------------------------------------------------- */ /* Process arguments. In normal use as a cgi-bin there are no */ /* commandline switches, but we provide a few for test/debug */ diff --git a/mapserv.h b/mapserv.h index 845a544dac..27042a04e3 100644 --- a/mapserv.h +++ b/mapserv.h @@ -41,6 +41,7 @@ #include "maptile.h" #include "cgiutil.h" + /* ** Defines */ diff --git a/mapservutil.c b/mapservutil.c index 6b21676769..9a4fe6197b 100644 --- a/mapservutil.c +++ b/mapservutil.c @@ -33,6 +33,8 @@ #include "maptime.h" #include "mapows.h" +#include "cpl_conv.h" + /* ** Enumerated types, keep the query modes in sequence and at the end of the enumeration (mode enumeration is in maptemplate.h). */ @@ -199,12 +201,15 @@ mapObj *msCGILoadMap(mapservObj *mapserv) int i, j; mapObj *map = NULL; + const char *ms_mapfile = CPLGetConfigOption("MS_MAPFILE", NULL); + const char *ms_map_no_path = CPLGetConfigOption("MS_MAP_NO_PATH", NULL); + const char *ms_map_pattern = CPLGetConfigOption("MS_MAP_PATTERN", NULL); + for(i=0; irequest->NumParams; i++) /* find the mapfile parameter first */ if(strcasecmp(mapserv->request->ParamNames[i], "map") == 0) break; if(i == mapserv->request->NumParams) { - char *ms_mapfile = getenv("MS_MAPFILE"); - if(ms_mapfile) { + if(ms_mapfile != NULL) { map = msLoadMap(ms_mapfile,NULL); } else { msSetError(MS_WEBERR, "CGI variable \"map\" is not set.", "msCGILoadMap()"); /* no default, outta here */ @@ -215,12 +220,12 @@ mapObj *msCGILoadMap(mapservObj *mapserv) map = msLoadMap(getenv(mapserv->request->ParamValues[i]), NULL); else { /* by here we know the request isn't for something in an environment variable */ - if(getenv("MS_MAP_NO_PATH")) { + if(ms_map_no_path != NULL) { msSetError(MS_WEBERR, "Mapfile not found in environment variables and this server is not configured for full paths.", "msCGILoadMap()"); return NULL; } - if(getenv("MS_MAP_PATTERN") && msEvalRegex(getenv("MS_MAP_PATTERN"), mapserv->request->ParamValues[i]) != MS_TRUE) { + if(ms_map_pattern != NULL && msEvalRegex(ms_map_pattern, mapserv->request->ParamValues[i]) != MS_TRUE) { msSetError(MS_WEBERR, "Parameter 'map' value fails to validate.", "msCGILoadMap()"); return NULL; } From 82a3eb5f6c8f75cedd095b909cc4990f3d8a99e1 Mon Sep 17 00:00:00 2001 From: Steve Lime Date: Fri, 30 Apr 2021 15:04:06 -0500 Subject: [PATCH 220/221] Address flaw in CGI mapfile loading that makes it possible to bypass security controls (#6313) (#6314) * Create coverity-scan.yml * Update coverity-scan.yml * Avoid resource leak... (CID 1503409) * Revert "Avoid resource leak... (CID 1503409)" This reverts commit 7d261af86140a491df170ba7054aa9d1aa9f3ad7. * Updated... * Limit action to MapServer/MapServer repo, run every Sunday (for now). * Always force map parameter values through validation checks. Add validation checks on environment variable names. * msIsValidRegex(): fix memleak Co-authored-by: Even Rouault --- mapfile.c | 30 +++++++++++++++++++++++++++ mapserv.c | 3 ++- mapserver.h | 2 ++ mapservutil.c | 56 +++++++++++++++++++++++++++++++++++++-------------- 4 files changed, 75 insertions(+), 16 deletions(-) diff --git a/mapfile.c b/mapfile.c index 9381e934e7..c3aed812e5 100644 --- a/mapfile.c +++ b/mapfile.c @@ -104,6 +104,16 @@ int msValidateParameter(char *value, char *pattern1, char *pattern2, char *patte return(MS_FAILURE); } +int msIsValidRegex(const char* e) { + ms_regex_t re; + if(ms_regcomp(&re, e, MS_REG_EXTENDED|MS_REG_NOSUB) != 0) { + msSetError(MS_REGEXERR, "Failed to compile expression (%s).", "msEvalRegex()", e); + return(MS_FALSE); + } + ms_regfree(&re); + return MS_TRUE; +} + int msEvalRegex(const char *e, const char *s) { ms_regex_t re; @@ -124,6 +134,26 @@ int msEvalRegex(const char *e, const char *s) return(MS_TRUE); } +int msCaseEvalRegex(const char *e, const char *s) +{ + ms_regex_t re; + + if(!e || !s) return(MS_FALSE); + + if(ms_regcomp(&re, e, MS_REG_EXTENDED|MS_REG_ICASE|MS_REG_NOSUB) != 0) { + msSetError(MS_REGEXERR, "Failed to compile expression (%s).", "msEvalRegex()", e); + return(MS_FALSE); + } + + if(ms_regexec(&re, s, 0, NULL, 0) != 0) { /* no match */ + ms_regfree(&re); + return(MS_FALSE); + } + ms_regfree(&re); + + return(MS_TRUE); +} + #ifdef USE_MSFREE void msFree(void *p) { diff --git a/mapserv.c b/mapserv.c index 5f76308889..2e34335f8e 100644 --- a/mapserv.c +++ b/mapserv.c @@ -160,7 +160,8 @@ int main(int argc, char *argv[]) /* push high-value ENV vars into the CPL global config - primarily for IIS/FastCGI */ const char* const apszEnvVars[] = { - "CURL_CA_BUNDLE", "MS_MAPFILE", "MS_MAP_NO_PATH", "MS_MAP_PATTERN", + "CURL_CA_BUNDLE", "MS_MAPFILE", "MS_MAP_NO_PATH", "MS_MAP_PATTERN", "MS_MAP_ENV_PATTERN", + "MS_MAP_BAD_PATTERN", "MS_MAP_ENV_BAD_PATTERN", NULL /* guard */ }; for( int i = 0; apszEnvVars[i] != NULL; ++i ) { const char* value = getenv(apszEnvVars[i]); diff --git a/mapserver.h b/mapserver.h index f2b0b7298e..808720b8e0 100644 --- a/mapserver.h +++ b/mapserver.h @@ -2122,7 +2122,9 @@ void msPopulateTextSymbolForLabelAndString(textSymbolObj *ts, labelObj *l, char MS_DLL_EXPORT char *msWriteReferenceMapToString(referenceMapObj *ref); MS_DLL_EXPORT char *msWriteLegendToString(legendObj *legend); MS_DLL_EXPORT char *msWriteClusterToString(clusterObj *cluster); + MS_DLL_EXPORT int msIsValidRegex(const char* e); MS_DLL_EXPORT int msEvalRegex(const char *e, const char *s); + MS_DLL_EXPORT int msCaseEvalRegex(const char *e, const char *s); #ifdef USE_MSFREE MS_DLL_EXPORT void msFree(void *p); #else diff --git a/mapservutil.c b/mapservutil.c index 9a4fe6197b..b5ac8e0783 100644 --- a/mapservutil.c +++ b/mapservutil.c @@ -201,41 +201,67 @@ mapObj *msCGILoadMap(mapservObj *mapserv) int i, j; mapObj *map = NULL; + const char *ms_map_bad_pattern_default = "[/\\]{2}|[/\\]?\\.+[/\\]|,"; + const char *ms_map_env_bad_pattern_default = "^(AUTH_.*|CERT_.*|CONTENT_(LENGTH|TYPE)|DOCUMENT_(ROOT|URI)|GATEWAY_INTERFACE|HTTP.*|QUERY_STRING|PATH_(INFO|TRANSLATED)|REMOTE_.*|REQUEST_(METHOD|URI)|SCRIPT_(FILENAME|NAME)|SERVER_.*)"; + + int ms_mapfile_tainted = MS_TRUE; const char *ms_mapfile = CPLGetConfigOption("MS_MAPFILE", NULL); + const char *ms_map_no_path = CPLGetConfigOption("MS_MAP_NO_PATH", NULL); const char *ms_map_pattern = CPLGetConfigOption("MS_MAP_PATTERN", NULL); + const char *ms_map_env_pattern = CPLGetConfigOption("MS_MAP_ENV_PATTERN", NULL); + + const char *ms_map_bad_pattern = CPLGetConfigOption("MS_MAP_BAD_PATTERN", NULL); + if(ms_map_bad_pattern == NULL) ms_map_bad_pattern = ms_map_bad_pattern_default; + + const char *ms_map_env_bad_pattern = CPLGetConfigOption("MS_MAP_ENV_BAD_PATTERN", NULL); + if(ms_map_env_bad_pattern == NULL) ms_map_env_bad_pattern = ms_map_env_bad_pattern_default; for(i=0; irequest->NumParams; i++) /* find the mapfile parameter first */ if(strcasecmp(mapserv->request->ParamNames[i], "map") == 0) break; if(i == mapserv->request->NumParams) { - if(ms_mapfile != NULL) { - map = msLoadMap(ms_mapfile,NULL); - } else { + if(ms_mapfile == NULL) { msSetError(MS_WEBERR, "CGI variable \"map\" is not set.", "msCGILoadMap()"); /* no default, outta here */ return NULL; } + ms_mapfile_tainted = MS_FALSE; } else { - if(getenv(mapserv->request->ParamValues[i])) /* an environment variable references the actual file to use */ - map = msLoadMap(getenv(mapserv->request->ParamValues[i]), NULL); - else { - /* by here we know the request isn't for something in an environment variable */ - if(ms_map_no_path != NULL) { - msSetError(MS_WEBERR, "Mapfile not found in environment variables and this server is not configured for full paths.", "msCGILoadMap()"); + if(getenv(mapserv->request->ParamValues[i])) { /* an environment variable references the actual file to use */ + /* validate env variable name */ + if(msIsValidRegex(ms_map_env_bad_pattern) == MS_FALSE || msCaseEvalRegex(ms_map_env_bad_pattern, mapserv->request->ParamValues[i]) == MS_TRUE) { + msSetError(MS_WEBERR, "CGI variable \"map\" fails to validate.", "msCGILoadMap()"); return NULL; } - - if(ms_map_pattern != NULL && msEvalRegex(ms_map_pattern, mapserv->request->ParamValues[i]) != MS_TRUE) { - msSetError(MS_WEBERR, "Parameter 'map' value fails to validate.", "msCGILoadMap()"); + if(ms_map_env_pattern != NULL && msEvalRegex(ms_map_env_pattern, mapserv->request->ParamValues[i]) != MS_TRUE) { + msSetError(MS_WEBERR, "CGI variable \"map\" fails to validate.", "msCGILoadMap()"); return NULL; } + ms_mapfile = getenv(mapserv->request->ParamValues[i]); + } else { + /* by now we know the request isn't for something in an environment variable */ + if(ms_map_no_path != NULL) { + msSetError(MS_WEBERR, "CGI variable \"map\" not found in environment and this server is not configured for full paths.", "msCGILoadMap()"); + return NULL; + } + ms_mapfile = mapserv->request->ParamValues[i]; + } + } - /* ok to try to load now */ - map = msLoadMap(mapserv->request->ParamValues[i], NULL); + /* validate ms_mapfile if tainted */ + if(ms_mapfile_tainted == MS_TRUE) { + if(msIsValidRegex(ms_map_bad_pattern) == MS_FALSE || msEvalRegex(ms_map_bad_pattern, ms_mapfile) == MS_TRUE) { + msSetError(MS_WEBERR, "CGI variable \"map\" fails to validate.", "msCGILoadMap()"); + return NULL; + } + if(ms_map_pattern != NULL && msEvalRegex(ms_map_pattern, ms_mapfile) != MS_TRUE) { + msSetError(MS_WEBERR, "CGI variable \"map\" fails to validate.", "msCGILoadMap()"); + return NULL; } } - + /* ok to try to load now */ + map = msLoadMap(ms_mapfile, NULL); if(!map) return NULL; if(!msLookupHashTable(&(map->web.validation), "immutable")) { From cb59297fad33d8d2498f74be2c0cba5522694201 Mon Sep 17 00:00:00 2001 From: Steve Lime Date: Fri, 30 Apr 2021 15:40:32 -0500 Subject: [PATCH 221/221] update for 7.0.8 release --- CMakeLists.txt | 2 +- HISTORY.TXT | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3422ca8b92..5dedf0bf43 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ include(CheckCSourceCompiles) set (MapServer_VERSION_MAJOR 7) set (MapServer_VERSION_MINOR 0) -set (MapServer_VERSION_REVISION 7) +set (MapServer_VERSION_REVISION 8) set (MapServer_VERSION_SUFFIX "") set(TARGET_VERSION_MAJOR ${MapServer_VERSION_MAJOR}) diff --git a/HISTORY.TXT b/HISTORY.TXT index 8f4d722420..26a49f6898 100644 --- a/HISTORY.TXT +++ b/HISTORY.TXT @@ -12,6 +12,12 @@ For a complete change history, please see the Git log comments. For more details about recent point releases, please see the online changelog at: http://mapserver.org/development/changelog/ +7.0.8 release (2021-4-30) +------------------------- + +- Security release, see ticket #6313 for more information. +- Improve setting of key environment vars for FastCGI/IIS, see ticket #6289. + 7.0.0 release (2015/07/24) --------------------------

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 diff --git a/msautotest/wxs/expected/wms_uvraster_lonwrap180_east_hemisphere.png b/msautotest/wxs/expected/wms_uvraster_lonwrap180_east_hemisphere.png index 9948c50b665788b89bf389a46e625e3217df146b..05b1f814a693492d579693333b3df235dba207e9 100644 GIT binary patch literal 44548 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�jTDc77y5X?3eXO#1f&mRI5oIg;GAgZzjJGLIRiQ{~4 zZd#u1tr%{w+}FLzpEi;Q0p~hBM7+L65;FIVA5M*|GHqr3c=Cp2l{|5N$6lN`?D=GP z78n=Ent;&x{tmk65_QGa5`4tQ4*Vz)+Q2{gUs6HivB{&cp9`dg@b%@LW5S?#-icUH z2A+LWp$F?}Nv^N4qBmFV`1DHy(N%SX@23y$Y7bjTAt+RP<)p6Z%b^hiULQRq#A$d_ zE%FdrgHpU+QLdS@5X})#Q$W!!J>0YqNsvKT0E(J6Kf$f@!G}BOs@7n$G#6l%?ZwHW zZ{LdFnW)CFV;{LSxvWusa$V#w5;p{^7Pl^|?8Vxk5q24EwPfZ;* zl5pF!f(Lp(_6Vez-n6pMo+T2Eb00b>(D+btJ-=?IxS9fh2l%Ci_P2SRoiMy40wa^I z0<=$_AI@ytpF?1SNwj9=1ANL01T6><8*<(lx1bs;LoO$rh6&MFtBCk{%HKN8WJgUL zvm7K)BLB5oqdB|XPuJu_Gn|MBSoEd)2M={wH#${LGxY#ZW0S#eFqSBWjGo|YUiJd# zHCcxiBWIvwpa?#Jj)}v!e?3vWFNU0v)rI@DRVF6D#Z{?Tyl%FA$~|Tig>B%3*AE>2 zXyE$Ob-q+=>;NKH474~kQ0LtUGP>pY7yN^*gN|Hd#wQGTjJ74|HjVsOC0676;1_bK=X#dsSJgyu(_C(TkF_6X zy|Q=q+PzareS~V8_YHsuzT1z*0ZXHhUUF8Xd5!zh8M4;tVt?i@NU6J@X9hwjc5!k_ z-S9kfCdw-z5=S+s(t)<=Lw@)hv5eUH16*F;lwaj zn+mAEFbA0nfq5AkG$xKu6@N!53G&HceA(+*$#S$k`peHMxIRlpYZ?r65A0xdi|@d# zM>7#?fk_Tpi5M(&3)4)hHJo+?kpf*rqjaU6hFmft$g4r03SoR$q)Zwqxfvt>&|J5A zub0B3{uWfp82!%-2l@ORUkye^YB zbA|e>H@;Af65y_Rf|*o{>u+p}_HuKMO55{hVvyFb0%3mYH$EF0m5@E&6eA*t-_Je& zF;p4Lh6jC8j|st`6vWIpB1Zd+t?{0xVL+x={vAV&tTuSkNjVJ|5$?N@rcSBzWt(BJ zm=>5tV+AvK>n9e9Y@kme%s#&?yW|J{2L_JS58hnI?p`Z^wXCpdgE#cjW?L6bWT66MhvftEyjgqLAO~h6rKZGTE zoHPi~rOSjBz`?0`;@d@piq17yFI2{OF}mf0>SfnqV9zn0{YabWG~EDLfKoDuk{|4| z&ETG$0@0w3QDp?ERp4zQH1T$S%l^o*hGsb_Ssyn7Ic++MeI;^u<{snG%g6Da{{Usd zAk;HcG7P>t{QFn=8h@0)%s(x=Jk(}SM=Tm;W-uK8(AunbGwGCo5#>6RzuswdrA%n(G+keR+OVTJQX9;hYCOt3wFvXUMo~Gcs zO4^mk9gh5h!&26lww-AyCkA+!GZ0U^{nlYf`jgKwWP`hHV%lQ1aF>i`<5r1iQ^X|t z1p^5HF!tc-L(If@>sxfRC&zXqI%6MX++;7gB?1or*~2YTZ=7*2R+h>^Cljo^qnLnb zzUv^8^pOqn!^kYA_q%A{6Hz%r|M(YYPATuXG@p@G-0Rge@4SbEalz%oHi_^Oj1c6A zyaES3>_TdeL4@ErUazyV;$S%U44Vz4in|z{p(kcv8klp~D;d~n(DBYK$Ko5Q)nn6; z@F82to5v{&FV_0QyZ%Sf_X}t_Z5|k$b<}KX~49A5FQ+7BEA|{gFQ@PXe~; zsGBKjehfwlqBZB3WDDO5yd^0eiA`dKVq6j~?mZEPVwN`Kq1wC=?6*WHAw)d%*hIzq zePmiB2T@8oZcjT`>vnUh(4MRoA->H2u|WC2P)sc>%bwbSLV8luXjDfVVq+q^+Yu(y zUoLj&)Vb5KDkBboR6H;47%K1X(c^1-Z~=|;>`2eWY5z6p1#p-s=*C~S>^go*VQWL- zVrTSDw_M0u-)GxM9y*fk1nq09!-*}}+@Y0JRR1N1Vj5%Afo9X6D*V7qKz{5MxbJ4e zU`&sq_Wn+ek;?hb!D|&G-;UNGkHY-!qwH>L@$&F z9N$dq;|JyF21QUz=Ur1^8EdU@<;FSz<%^lBhx8W-h6EXXX>wf3cGp|KTHd$A=CPds zlUo`nh$M>xtHmW%@)PlRbogb>i%i#M?!?U@sR30~%OAL!VgZH~_O(iz3Qvqr9WXvJ z{pQb<%Ent18(P)356_ofSNcngK=-(t*9oH$F-We#>DQK2Gp3QME`e+rzwtXUd^_n9 zI<)WJsr~d%QX$`@Vo9mkCi&0Yl=99=4L#Fy{A2-i#u<8pAI>aZgdDZ{-AD0WK3z?& zc+!3^_$l^Yp}Dos66xDy4dr|ZnX_a|HH>F>NDhgW<5Z8 zfeqXSJNr#DIbmopF!aj){OGJ(yh@3~EMZm^yD6sbmh82(yuIB&&sw!GYw-!LGr8RB zA%L5UC$13p0hS6`5q^Pw#Drxb3TJQ+aD(0sR{wgc0}|u~dw*l)TQnO?{QJHor^GJb zF3&2=fiJrkVZ#8oB%@)GVvsJ?TJ_E$)76UEbeCLsf#jGRsaqGuG7NBMR%xIq3mM6G zjSr#;XA{_}D&-A4NT7h3PHdJLCk@NkEAgsV*|0y!Fa6wvK+fsKr$>q9T`Lw1C}((EWf`kiGA zG4(%p3sD}q|BS#!(JZ{!sfLZ11l0V7Z<2=SF-(+Xn?FC3TE z`d=&evz;tf*sSa=uRO?uZXE;2@Y{mJzIZAYI68>+;y14)5~FHG^)%vyv@Z2xM=^i7 z{sycV9u9+c=LRxh{llIV;@_9DXUHY$961W6<^DER&Bz_jDyGP-silq@H0|Dku*X-+ z*R%+{l5(zqx>vpZ?0;piXqg6gz{w|fVhVBhMI{YS_zpy3YHsq5U68X^Z>90WRNM|S z@gk>h`y|G1=9wP6>J3Z`#sQI1k3XF&;o?;+RxtxJ`uxyy+@I7O3ehy7Fm_#;1U#J$ zzn>8rOHbi5_>;}rxnogkEAZ5l-;FIk)@Nz0LTewb+f2JE9rG=>OY=}t3PE_|koWW* z$%A}Xt<-)lLTn)Ki~>$PLwS~X{$pcsTN<}at+o-gz%!2IHfuE^L(PcYD$X)=$vIOd zW>kS^eZOA)rO?h%xx4|BWgB^)bj$ve$;pzeh`QjxxJFMpN{rBkuEdEj4%LjUc^y)F z7_?xlxw)GKQ_s9Ct85!`RIAAqtBI5N9a16@c>|!^Owfv$s27i8i-_S&1#_Vfe*9HBC2jU*^+z%D72=`Y3gn$OOGjc z@$v*kyR$15fw7BQ*W;Gb_-ED*-`!ycU!U))mOdlKq;Wn$`QipRP0AA4FL=_sw2t~b zo%JR(2M%0&xbNxtM5@jRHjsjBpKp|PgzI)_?!muo_}n#-VveU$CxhEtQbujA+7&aZ z9jv<%XeZdxe*5LFehhZ}5_{MeToYLX6(2BAkg%+fk+iDNPn_YNe{I{^Aol3)c@StB zm&K-PX$aA0#RaqFSAoefNKjzJ7F98bucc&m8hwtxwFe_^)_$~n5E}Avz7NgSIkisn z>Xh!&sSH?`wP((T{Pr6B7vP;J0f|Lf^+MReMXJz!RtXG*o*%0y32DhAaMbN{<{dM( zK)afxwWz*t^W;1}F4QA`@9s=Ke{;kELeZw5H!*0o#4l{aK67gQh`@-hUhyPzY|}dN zW@_x(L_n4_^ox>V2)peaz2P9wTzN=9$ChszUpicT#8;IM`Wr4eKEDw0HGJ}K6NrE$ zmmn~6%FTW%>dqc&>)eG4Zt;|Yw9u<_S2`4*BUJT=99za&XZv@!o9|-fh66Xrd zG|$d1Uj)|J;;hI`_-HNo3Ebiv3iwyBzWbdf|T_?{iW->$_~ z>Ovkdo9PAAY^{k&709l6%)PXf+h=SXZWLQ%`n!Gw6w9y?yTpJq;8NALN6xZ$ICE{2 zmPnzQ|Mig%txKGlJhEeiEcEym_`~DY?VXXUG`x-$(H*u5cz)K4{dIg(`SqxEXJcrJ znmp7z5!|4%(?ll#NgQxVcew0fx%^1B)m)A(FF2oFB+I@!{RhS+Y)dRwONp<~@`E}} z#XxPLZa07K891{2r9Yn==}~s`4~ol+t}S0c)vp~hXXlFk@qxeM6@*6YBQ&r#SDF67H~SdKC475@(lFleAq`k@@~M+M0$mGgMPaJ??A@hw}r(^xU771U$# zDh*9h)%+f~;!2r!ZOI?aW;n>vy!M0TlxG!eKowHcoHEE%;K`~j>d6Byu0N0*@mFNj zu(FLvnhs8RaNMkE;g7VK@9zuO_4-vOQ4NcU+nZ9=3ij)PVS>>9<-c?OJ&(ih1HTQ9%fXNMbrUFI#UITdh3O{BvlS_T z`OktykT&p45?*R+aIDnbu+8m56>f5Sk=gbhC+_}jgQd$9O7&+7gX&)8_}lN7bBK3p zal@ed_D0Q%$M@~@IPf*|1fWDPO3Ak)pxOqRX^fk}wRuICbMU?kfa$hUd}fYYg4jhf zz_N9^GMn2mFL^*ZZY=^=4JGns0`bZ3c?%|gHFa(aij7c7a|_8CWk-6h4%!=ngxu~- z$_@Cq=^{}f_jYzS$D)_x41^56({j05-kp&tF?Lil}= z(OO;-?xpVMQ4J8H8H%r;06^wEdCBB@xRN~T^q0{G2?J>*k}{;lzisMR0$Q4`Rte-+vC$9Ifz z#=L%jPma)H)bK%N*1rgaI7t%xaaI+vD4!gsyT7E?-UM)pS|#k0f!Jp?h(iY1$bH9s z5I!sTp}5{)%>L+*UPPN^_-oY#5?)-XnpxicoAjWn^k#;c+YjoMu6{bzgUe1`8rTWZ zWzkFS*maG;6DJeP4jUH+&xN|yZO>w-8Ea*(4V`Kor@iCIFMbct;&a~Y<-#yZgY0m} zQMVX8k|Uex+iL@;XI2LML`3e4>7BM%fM1Dmkh*7#3TNM`rgmNQ;x?>XKF}}R2We_x z*seflNRESPMB0Q6MvN0d*sbdDa_;9TI;83D5R}I(i-ofPHNTJzTFra3cQv+yD_R-V z4Fy@e1v5geY^XwfHSiQrC9-i-X~Q|>vtJG{n`LxrvAgL#y{C56`n*pOp2rp zI>6w*w$Mht5ja8R9xB$Sq)ZMHTBZk3%r*`K(^f7x)ixD-xZCcr2}WXSDB+_2!np=> zhiyL{t9xIx4MYAsB6LHV)JxJu`{RUGBLLKPBMB&o^N3F|VeZ+%s=|z$&^z5IL&uCD zw6EXxHWt~FAp=)~>D#J_lEs~`A=&o0-AMh6b4A`^Da|MyRgRPL5I6S7yg$YqKgwj;?yqVx9o3k?gZ~U=shejHx=*BQ8c(Keq99T z`E-DIfcS;Tdsa=Lh=vxoAkMB!r%GJ-Ehq}L!@VRe9p$XjhIwsuz2AA1j~G6JQq=56 zzjZorw&tq1w!b3gxUqq=-$U6qiA z`apLC!D}Y$&cc4G>CyjfWUw4Y(^AE$HpSp`Q^}S&=}oewJML+Bw zHusXZ@(xhkbHCB?9GUMFNa=6PF%(xaH{UoMC*8ZRl}^98lqV}m>0P~ac8jgq83F^` zbiStw_~2qreA4}%jB&|#Um9)WzyQAU|f{|WOnK(0a=wm{d{YXD} zpN0nfS#~1W_5O#YyUDh7x<|;i8asCvV*cjk7(+QWOKV)9SxM_Tp6i-p#WwO0S?pu{ zd)qO%6_H;tD(MUp@D>|5eU^ngyj+MoYT14@y}`K6`{jFm-S&&iaLtOGX=aTzc>7Jo zO*LE4NPnGj6-%J;7o}oK?ZIPMu)@nr-iWOy5A`6Yk ze}Q1e-)`?){6S6X1Z=Y^biR|#6SVa!VtoACC&-sf9FLdtCK*feF8dQpVAWv&x{RzI zgr;vKbB^$??1AP^u#&~?+t$mdZaNK#&;8(`Pw?%+F>seF7*ZZ>9b>9W;$3!Wwb0XW+0P~HP5`>OE;}_LqMmAHD3`dBg`eHm3qlEDuXK5 zqsu0$r`{y~QUw}++JGyiazd5pRIQGXmluQj=W6D<{msRUYWtsnzCUgpc*EoU@{BVA z9WZnwERuNyi*fBSqnwMnmz3SRc+q}Vr^O;pa#*QL7@@qCip#rdlx7Hx!t?)vt&ljG zhe9d@?noPv+V$$@WY2%X%UjORU1_~ao2OOq-I0Vm2&6+M5DOnYm5~9t1{heu0p8f8 z?mFT*sUC{;Z>9d}_#0YRP8NKPd{*4wDIIr%*FuE`29p3F#mdIA+u@nT|MeiEz#cCR zu$-~4G=^`{1^x0UX>_n-_YS0Xp$f0Knz!Kq5#r~J5g>=rB7zF1w?^?n#uD+XOq!Fs zKby_7k*X98BbsH^&V~`ZA&){9vM8vR9xt+lS0S2&5WmM>r88@P*i{>$O_)XiT1UEG z>b~GCQn{s8$GlxuT{uXO1#jJ>u?wk9Bs1q4ym%)^)`-;JPtzrJOmbkw#yE~)oWL>j zwYXf#iCfXzzu`&~BDg#ND-1VGIGaNy>c-Y%>EuFrIOY*mBN(WZbmC#2{L>^kmR$M) zeL5;m9Q!q`74{uj+E=;J`{6kwX{TC1(kbiLsg%J89WQn%u6xC4VZYg5GjjWNF6Dod z-H1vT95I`=-?+y)CJDa0fgP8vScWpH?Mj;c2@mus0TjZ++zPX#8mvEqtK6UoaF;9OD zTLFa!NMqF%q z3a!3X<%#zjAeWY7_MOJ>EAC8TobkGBqaMUg4Z6sG9Iti;BH3_;7Vv+UI_=1v@o+sc zs2cwexjjop#j7c3CMqO83bg5jQy7h~6{>EYSKm_yHnXM(+lzR zLUQr6h~J3Nn>2QuC{PxSeXy-@@#k!^gOgF#AB$NbhS{+OOp}A!OR+sX=#UH%kC<~Y zL$lMKXJSCyyWy8_Xji_r^?wJQv!s5Zw^fteyv`V{QcrFNMx&693Mq~o>cpPYmJ**; zGLp_x`K`w{U<@)QOpFL1<_6@Rms9z8Pc{5}@+kqq!`T5eIJKM#>X3;<4n>m(ZTCjU z0z5m8ZEY-zL)4xuWRU z;<7PUClNiG1P@nMv`zkz`Ay5(TrKseH=s%C;`mdx4F)bFF1 z5FDU>xDpsQRN=6N&9WJ!URz)mVGi8xGP z6!1&v+f5Pv_23APfEkPg`N30S93>37QcO49e2L8hePQ#x>bp{%JXgqa5R4RQ-HKk?ziN}xPE$HKAZ_R}iz8onmgHA#-bnBW((MpdN*y+FeKo?ruW0EiZw_IEcqQ%~m z`!ME-+CtJof}5uOG#03q&DD3Q`*6ort_rJ>Og<_m z{t%G;9im^juJA}Z!sLE(^Ee(US+1PSz9%+5EuTd1M*6&78%GMeES6Qbs62Uwx%z-+ z+BG77@fmW8m4iC2pW1R?&uw)Xsk_PKT)(yS(JSZ~=INNj*V;@t3bXh*F;3e&zpE6UXTzZ2`1hyCqpQC0ZWK47V=a}BMV{)J})z}EH_s+OB!-#=tSqmGzI)a;B z!LcHtMH@kyVDzGCqy#vLj$yxZNlx&1G|LIeEe z3daktztKYKE@w!+WGhRzAN)Sj3?+k834q<3tXf2|I?NA5d7{J_2n?9^#Llg9c~#i; zHM;gYvAP+KLPR0uJi5~6-mH%lZevn|kLrY~xGM_{&L7#2QdT-@sm%7Vj&ptk=R-kh z+}dHiXcbLA@%-%%^wEKP-sni+I#EAfcUm}5A^GJGDZcr(lUtkOdA&l6Ed~4`{ljKA znK-MCF0^c+@z~omJ$pQL38xUD;$zd3gu@Oupp`xU@?wAY_6_`B+@BVtKqVKx^F|Kt z`R=ayv3ja-T_u|J6FS;_Qzo)fP~?>C&NMeU)O{&6y~Tbzt23~ki5yiRIBsH@w8HtSO0^UrKGdsVqn@Qs?nGb`8*;R1{cT_ z?h;aR8Q^^o;?g1er74j70GBLE2-5{8%+*5fu{QF9Mj>0*4Q;-Mc(EEUhKR9E^fo?6dkQ%fOSAbWnEQ0 z1Z9jT{}qB88xWx3wTp}RfYk8Xr1bz-pDP#5>fM-ByR%EPFY+^ByC8d%9yyBrO&~GK zn7$%S3hJE+{fZ^%QwQiA6`&5im(Ri#Git1HQIB69+-&&+0LvBC$lL+Mh1oh?_QElt7 zRcf1m-7s!o76Yc*S-0j-ka`Fy%rdaPJE~?9`?DaoE=r>LSLNu`fNf#mK*vJE%q1oj z;863aE;IVho8d1vQLAG2?&)#9)uKO^PCTE?V=9NSp6#wr{_|**Eq<2MyV-*-lr166 zwowZnQObHrK7z0y*e`-U&!q(SlRs`9nm_L*m@y+nIEfzUN%$K zpC){@FL5-NG zF~m?<+}aLWznHh)p%y$P!y$_Zf*#!-%GeXtk0g05okgitbZjkMn|2_42W~X&={TEA zI_iM{;Nid2$OqXn=NsqdF+L_ZHozYX&-s#*>prD_TsFzSZU5`|dooMu_x}`#p6MG1 z{kqGI%?n8ns(ndu3`2cBb$>E-W(Q%^MeGxsn5k0E{%&kL6RxZjw!~{|z&|Il))qPG zK+WSMK$>HNU`4!3A#cdRy0uI?Vmq+6+R_^3uIsxlu0og&jzbLDU-}Pn=WnOjcpvU$ zSO(jysmXTw+8kZErxe0^Vuqs66>bBc8G(OorogKGc0saAwfr&#zqp&}OgU7N8A(gC z=4fAvhk0+{V}2R$^|8!h#Dr3C-+nfxwow-jsS`Z)fLP_JSkiS4Dqb8`!{Xt~w zi;}|lHj1;m_5Yh4s~7Q-Q$>2DkW22Lz8?;zcZUg_g!{h5Dcy#4r%geDZBj)3*`s;{ zMVPCbhdv2{G8BuV5C`Xw@rCOSn!<1Rg$lK)Vl9XT3E{FTL=PnU=q8e}OYi*;r;v_Z-UNhuEm!PF^b19{)kpgsp-92IqI9>ZU z>4Q8rWaz*ty|U4T*Q+~3K^XHAAy#UFJpzpw{?VG~zr>{1!gMWo-yMAs&=1U@PEwz+jH z8h1;!nXzd`rrhOjZY=cof9St(F%qc|N)2Vi##V{*1)KSi&ohck$8`?)1Le|D0T?`v z7fRwQY`TK}Km(6nLk!L*@rFZtGd7P-^vkHl87pyPe-cT5#ArW=@8M_Z^{dvKdO)aX zM4mtVtBl2c?Th76%Pr!pAD^^~qIG)wQSvuC3O^G=Y;!-q*}kV3=gtVCc{!NU%w$KqO53QY z?q06{w0^3CusiHwu#sA`)&SgwcU|2TNp5u?=`z_GI~+?icO2n<8mpKD!&A|IAnC3% z53n7%K)u#7u-$wb-lxZyY=1Obc86(v-K#F+&{`%qYYjoeWhNiW12ayRV z<Hc*O-dUA4lU!U5RZnR z*g%c>)STE$A8Kb7s|bMAn+Cg3G}52JaF`S1iL2OfPNyDPrJRr>K@ zjn5u~_XyXwHJm%I;7QFy!vAveF{Kj!!}*o_#I;|Dz6PGLxBT(Q9r$PLuOcNKen5T2 zc!o3U+kAsCvL%F3sYZ0P+G%EQOd-y##21E>4!3;Gd6TNmsQ= zlYF~YXk?N_9?N?1F<#(uHEv(9%;|D%`x)YA%GJXHxIFl`9cW#@tatou{M0=!FERB< z*2=ejRo#;J=!EZo-5ca3xwe|x2Zqyw1%5dF%liuX=Gx|$swNE%axC)(TIFzg5C=3?)*{Z zCaRpzumV|c4Lo}JyJcVio$I1??AxXAZ+^3cJc<+)L_pvO{c0vwWV#e^us>zrVR1^% zGN&ICpC;eJV+qAIK$UI>Q|-u@q{~f9duUf)koQHPgi=(fm_7D#--?JAS?$nRJl7k{ zc#)2S-&6CPfb#Oo`cwRN^O2^wMznR##24(g5DdfLf+R^T*tW zMT&D-ATwIHT|@ZE7fu!!G8n*by09<0$_xg);!^1t=$h|F+;uGoGqRe^ai!hdxV?r} zY|Cgkcb{IeIL4kX$Tp2W-s7vHne%0j1ZSf%JuOCs4yIax&682vc~oyp%{2}#oNRv)s0;==VF}>^EDv+we5D%+Ps6toQFD z>|}&k;aYchOQsPyM_aOn@A_u)JVwplTpL}YZdWjr&@^aBi|Bo9M|Ex57y-~9iYsRxPT9rX z6hgmAF1@}+JQ5F&Lk716fu&ws^o+4yL`E9QW>ii|Grb7%D%%KPzv?780MQL)LTq&i zS%g7axG$|wy#&84j&{o=WK1*Pi*y%+Q;8g#+_9*n*%^L?AVYirP9ym462Kgh@mb_0 z9Ua>77A1_tb)FRMcA_R9SO&r3_B(~}P466#=3x-c5M;q_)e{R#P>iyd35ai&hfs#(Hn5v%SvO#8Txl4-5SW$SIj z0<;@n)xLKby3mMn!u{bpk03pF4=F}94%x4|r~i)ysFvId;1OT^LrnkCf_xMSH;*O` zr6q_{F=O6QVr-^#!neg{?Tmc#VoGCfw&Z-~aQ|lP=Jxc?e~nrRAHiE~$hWImKDnu< z!P+tIj^}qIPW7((aqGo_U9mHn%wte$bW>`38BkufV(&gM^WVD^fP;P(j{RMq+FKAz zk&+(wMoS0@*}yfNI{ibBt7z6pFp+Eb`w~~|8XtFa|`6hv;sO6amm zSVUwW3|U*Am$LgZJ;?{bU@3Y(UqDI-MX!Ds3(p+;)QU#U!?xhbkyU|XmV#ptPfI8W zBAf^K_3K>Oq`8a0%-LS;mQfNv_=8K)JUw^Znd+`&yFYH_d_yd)9#E!@)Et}2GmqH7 zm@w3>1$T<2qrpgAn{gP7x-XfrZx^~qc6{l?3~;X5a z{A~u}GB3FRn16){=1$(9yf+AubK z2U-0MAltKiaXGm9CWgb3;$Wk7*K%uHbs%DD~P8q7GL2@Ze}Ra%o73b z&guHZYz%U|%ZUWv!6nCX1B{(fp!78zCgKec`3 zUmQ))EwI26Wbt5&g#<$Ipo_bEAVARI&f@Nnh2ZWG+zA$376>kj1=rvNcjxlF@4bJ* zt8?6+jsWS)8e#Fs9|^7bRxt71FVtzmzl9w_Q$p)@0si#jN( zrM51a*ulKD8)FJfQPgj6a;eO4xjgaHDlT&vW z@6YEfc0WBbPc~f3p@a>P+Lcu#aBjJM0Z~t~Fa4Lh1m{q*;F5?M=AXQQJ%WzMnopuQ!+Svj{5T_pa5R!;z+)7 ztPk1<;{nOL(zx&5)^HRY#jb6Q9ikl72U#8L&(fUAvT2O++yu>~m=u-qn@d-Pku*Xp zj=!usXE^&|_3yuw*^UdNHjb*iY5RLwz*!Sfo2kR9$BxXOX7XpfOZ$>g*YjRS+q4{^ z84-j~|2oN>??qPSan}sVpVEvL*PHz{ov+E6W7mGTT$SZ=AbG2p(g1alu8FSj)tl^| z*ei?ZSqDYy>$8?6^yy6{uNg1Aqv!p7zKg?CeT>@CCe1Jj)rgAREtUue)~k8?kQT$J zP{kVw`GSIBp8+A0?at!&+7niX7TBscUjsIp8`{1JfAe57kqd(FILZWUcq;vM=vQlG z5WBf&1vN~?q^HQ6{Gj}sp?}axtq@0K4xc_ZxP6or zu4KWDEc9h>U&G2nJo;e*|Dip9pFpZ7j!GF>=r(=}=V5TVMEKq{nVNLFe6MYTEj5OEM-;WJu5_YW~^KvK< zIQ+a4F*H5-EjOM2jvWwECJW#~Q^qGWU%*qe?VU-q;Mhl!KR@0ZCtWhOlNm*s_ zDd~#;T_dOna?t)xCJTYQ{x{h~f_i?2b|r#LjsVqzTRYmKzUVbhwfdm|1RME4yogLK z--o{3nNVU{iN50g?kzT%!hQ7?qGlGyca>q3A!jTO*U`wQJAFwI^<`MowZ2DWtR(6@ z=gpFSIe0_zndkK4Pl5f|p>vVYCyCvsT`;KW;cHTi|4s*qE%8^@+SwX5 zv$r@%>>PBK!LL-K5uQaDp>(iWN-9;A8Ia3Q3s{t99 z^Q2Udu^(i)#KJzk-RPCIs@wXHOa=ZB{_Ro{6vN`4vRmzdSmRT`-u=*Oy8QO*)eG-Y`dPcBuF0@IKYHpd4ZI?= zWV1!SZE^FVRa(+RoSZKSpbY$*T_v}Lba(X_fVXS{xl|3NBGvt!vcfBeLGg|5`Kf5> zb;#AuG+;9E;YioXu1t}oL1t_;@fZcQNlY zr#t1M5;Fp~ToX<$HIE9KRMij>!FC94m4(`!@T<7C4c_x+yp{AJe7x&cp(McW;~!H)>NckwBZ&3Z!*Pwi7keh(M+PcdibxO=FVOpQeWZ-x`x#Hi`VNbK7tC zPi>Wj;^EP6d^6o8-1EyT4%Q5ADSrJ`yQ*7_fo5{zfbo90Cd+LUy|0_JMa(xqz$3_6 z$I@je28o|waJQRO4G`)^Sc_if5Uth%V-aCR6@bufr@`Qe`KJAud}#DL;9?X8K4U7q z?!9|NZtldlZY6I@4E1QpO{%rpL`j~%f8sMuG9e^?T76F#zliYF5zO#*+BZNbj2R>i zeI3sHz~`hs@R+@(oiK!aad($k}r-Y@kx`&M?WULVZ+D8<0 zsU@c2gbmtNEEF8ljy*fqyqI(QE@$1NvOOcvZoraQS4E;pa;=~tp5S1^q^RFCb%7JA z%f41oVq?y8)%(s4rOG(_@{~dMwWQ7&6}E4hMbr19{l7ht>%Y;2h4!$9JZ&IRb&QQA z46E>l@f_x?8wCJyU-Q2YmIDBIo}$loZ8QlBE?8qsxEJa+i~{DB)t+|_e}P-AFL-Ay zzGiQP%#zK&w`*^zR~ryErDp)g7daWZ)9}TQMh1e*Rf?RDeD8%<>Pq?}AeRH;l&ab1 zT8^Z#Cgq?zZ4r`PW;QWZm|6yJhHM_DTT8+l!X8#zF|zNS=#)~9Y|h=j7q`E~zd0e?zd(Uqe9d)V;do$cDKVI+g+eXUd_WrAD1hTM???PD_r2<;I6kdUyK1NQPP`E8^i_+*;)<^(H zbOzHBP@3`Lagp&y8TsO!gSuTmK}{UO5euii`i=u(>#eI^ZM8j<+xAWdRd(FSYoCfut4kZhs&G&Pf88|TfO z_2+|=bbRpO3%eaI8^fYTv}pEBiaG=u`+?6u87k&`CRG#CF^wq}tF0P7wK{*xG@V+T zzb($tS5^m-Eu}xpw1GqqGv5m?_$_iurM7}m^{K^lr!pa^>g$KfzKwyAp9Nm_;Bp#Q zg^BLFiw-b(!FZf>5w|e;rjtiseO$MNfjDVm5=Yl}x`i|Sf9$~N!30&Cn^)76k$)DX zKYl}|q#VLqB}k2$3r)Df4S z(fcsV#lxzrk6hQs!^ff-p|A+;3%J7)IQ1)F=yyd>ISq97LQr1lagKRO<4E)KAA0N% zY1yii8;6o}>l0U8YVo;Oxx^TRV9v)Gw0O-oH#NZ~($s$GjztrVtDgbysP@q2mfqkP zJEQc+Io$wb!=zT)AKnITP^r1$H15V& zl9Ll}76k$FJ~uA@o2e=>N-Xw&r0;T!YiDhk<*mmNF8T)Zo=EJ!K3O~I#X!&_c%o4W zMAiyU@z5>j%udM?V=8Y3>%#b#$F1kPccMNDC?)(hW*dTOQ0w@yjYXBgQBbb~NCEfH zIkh?W9hnyZz1aqwF!nmhA=h+B*D&Q|=l9yxuN2K+2!ZhBOY$xb4yB+BO}lIXzNvs> zeEN2HHxd2vr`EQUZ@Z1`bzRsvy!P`v>>V>oXL0%B$1YHI>c3ZT1^tw66NmlLxW3bp zf+^ zA?Bf|O9dcyr=Da)x_UILE`*`Sm2oV$&r4n`*Qh((8=(6hMzm}3k~TQ93(O%T9`%Ru z`310`F7J}a@{awryBs|zWE`6Mi2gM(GIf>BpXrgerm=cwOR&6k`Gk(QOFzeN8@Z%l zlU{56Ht*R79X7~P;sL6(_x>)4X_F`?vB1aQJ2fzo%(qs=3PNIHCmh$f_88mydlJYQ z_PXldr>3QY~${e&IS@w2VtnxxPH2Ct2j(8LNiz*G$rF zdaE|NrUYv~dZkRb-csP>BJ12aH`pL3!l)sa==sjddAsg)xk5$B;pM0F&s71XsIXW@ zF(+->t3P;u8=k_bwsI?Ov0gGwKZ@w6%5QE+^s28$<$PRL@Up zJr%FCFXb`{yq@q60L<4sRRLN{tB7H^b6=!3y!g!EdER>;yBz(7e8;CY{WvhnYjti* z$m_6{%p6Xe)lpx_1@oN?1$(OaDQ!U)m3kn0IuXPOW^<{lDygeixg~XR;fu!ZopDzU zb7(MZJ0{%i^oS^$_RfyxG;D9-u&u0we3AU~5Z<9m^c*=wD$-; zZQgtCD*;-Wc8ZppN@)~$t?cSE&-l(S{4QaShMH(F)BShzuP`I>pEy+f1(&zFTuq@A8P;_AfctF7B{t&nQMRQS%{{BI0Am(D?dHctc zYifrRWY_GBYd>L_L$dQ1;`BUu<0$V6LU4iqNF8q?Td*mOjl6i?5p0nY{h8f<^I+*M zd&$oJKHtS49{R;zBfFSb>%h#qdo|PHrNo1xt>kUouQCcR7S~Gc8E-3nW zqOlXs-SnadCX3r~ZL>ZY#~IKSifbo%-d6u~!U1_ zQ-e!K;F?NR`lul*D;fx0l4{1G1duvdS{;dHPHDo!osW=v#s9)F1Hgtjm9?3}BqDX> zPdl_y(sxPzbQkuAtDW196>ubc{@(@1r<1up&CY8Ci>Xz%JsZL_=YaeS#S<|P2RU%B4B)G?S+!^Cs)-4I*3UXzq}ias#H zHOxT!781sVJqhjI5Rf<-^g?M+tn-=zfGnyy`0(YiJ7&(P_Sw*hlg$U6Zb1DL>sB;mX-*73`b~Mig;J9;*;ezu#Ah=WVIo8?AXJd z5-O)vt=8dX_7E2h!D#omd`(<>prvjJ#l=9)3&;-psnA8X}=%L-0Ays zC<|M{rw34Wp@MQ?!xwHb`H4*;%h@ou5L2|zoh2k4)Y-xwSGy&feA64+d#w*&3HpXe zebIwcm|{93p3cUec^3`+ro5>-F>&xLM`!{t4}-4H|Lq2^oZlQ%^=Cavj=1==ZnbV% z@QQc9KGug@HirQtD0+7NuqGT1T5HWn-KP zJ-4}nK;@xpyX8NBeCvNlX&Ft51Nu(_qPpUeP_4x*o>OwpbZtg4hd~TYgCz_Ut%Cje zPlS6*h{zp$P|1_;ANE(= zHxIk|o+VS=j=8xzqS2UZA3)2aSlv4<83Y$Faa@J_j( zW=Ye}zp2x)k!fF5;l9$U7S`SdHFB$U7;G6j=2Ajhk$dp1>}=7P0UT}+@P3=i zVY?ACWYsqW0{0#3TB!vo4EI#0cG}$d9qokbrwWcAH1VUe!kR^?Iie&b+0|k~@YTuY z9?e`)aky}}oSY*#oUQqNfryk`pP7UW^+i>YCRM(D(e9&=Gn<+>1@wsfIs7~?{=l=8 zriQ>IIy(6sE)IS^jaNCpcGI+t8Bj{l<(1=>XY~KNj7l!5rA%F2$i{z7ACWnBK_nN& z_7+Jkk9Ycnib=;966)?XPOn$JQX(b49L4Ad@#>hkn|KNb5c?SG#$eihRs84}*gbl* zI`{6w!f|fi!|PSOPdHXZiA?doVRyfT-t@?!_m6s`SRE5USjmiNC~;(1J`$Qi1rLAL z*R(fg=G6H=Hx~&u4Ao{CX_`Sgj39ocn;!kDcGD^GqdruhFvc!7Z_v6|y`3H`175_# zj)~=3IQeE2?myz9BI3*MMCTcb|JowclPRWNJ+t!S>w9{Ni4mJ+K}M5xO@HRpACih+ zuV?)BpneWaS8~q#66bbzrQMnza>GJ-eL7!trBFBdTJ7j~9C5gM9CtmArES(jg%P#c zGQs&2-`-(CPJ2tqf=j5|BITW)hR;(sT2#|Zr#qsYj=GA9VK&`sUwk9FC3xD>GxsKd2Oy15v@U$~6R(D+Vg0`cB`^PX*uiwncAc zo9ooyQraGO{h@8bzY?k`S1)qZb09BNowYc5Y*oysC*LUHV9f9Q@iTq94GSW{Py~7Q z3Te|7$nI}ks0B@ALe*_uhq`u6YR*0h%=Lhc(*x2QuGC(rL>XX>PN&d>S95)62tclc zbi))cV@2|hq)<*l!L%@WW(EAA^&h^8T2B+; zLy%+a%{elN&M*b+!KNs)<6T1&eq~Y5u)FJVC#@SB$vEK|Y zizS|%GQNISD7@hbKgQ&H&mi`TbPqV@D^z}ctrgO>F_#!$0s!XG(*!G2MUf+z>w8nf z!?C)@P^T4VP8Xem)=_UX-*>w?R@?cM6=wN0M+B!!IKT3T-ogqAst28O1sQUO2Twog zuL|*Da~B^X?$;mVd)CR{f6jmeJ#LbQwytUO+0H8rIGRMa(72i8eKiRM9*2m`mTi#5 z5yX_wp0Bs0{Nqo>;tiNT?);!dT|`9>>6ICD)Hz~B6W;Z`kAOf^o0&C--zK6&>zzQq zl;XsmGSE|9J>jh|F&+aAgr43;WZCSu)@&)0TnAR`$S16Gt)lEGxy<>C6m)xcMRK4GWrG}}QVH3gG|bM{ z{DW6{rSE1qq`#f9q|O=mMf{1FsACJZ!%Q$Y6L)_})iCv(ex_Jr@$|->ShlJzu!uMH z>BxRD{BzXcwu1ycb7ix+YSSi>uP4Y{#;_#y0%QK$vAyB7czs022R8}hFrJ23zB|by z;}gofRTJ0c6ade&Fe2YUx8HfUbrGAg+8B8fR`=t@)@X7GfE5zq0mMWv27Y@Ia9RFy zFJ(q4enG2>_ao3p7rzQimkQ*m-u^luH1Rj`b)M3Vu4*j61Kfq2e-wv8B9b zj=DUhq;BW?!h`Z44(tMx_1G@_)W@W)=-5>|U>7fg&oRDlqjy*fg>@(%27BulU7iA! zPYfS8yDjFFK0t4WPOHCm8}&OXM91*HdAI&?q2C#$%->figvJ8N9WG3m;8AqFRZ->p zPV;!#?E`+F(Lcv*ON$6jKGxUZtS$*kSMAcQg8cxnyrI_I3Tclh|7(z}+4mH0SP}TK zUh8}9wGBD?QoGRtlrW6GD+HDJ5>NRF`_1It%QmajE9|hEUL6@?I z1y$ea5H6K$*X78gZ<$aL2E)(yR_=e`gAi}Mn3tMQ4GrJt;zSs5=;^jM^+QQKeNKPx z_3_AFPw-c4z@9c=wft+g9WgtdidaD1W#;QT)V#UPwQx;Z7xztzxH(#)Gly+LQrjRZ z+4sTx=>J$dx60;+gfm;cjL{3*^B#KA!@mLM~AXB>99RD}))5OnSVpR`I z1xPGzw>ocQUP;j|APi}S=q$IURcpy4O~27&qu!(LJ5mI-Zd&AG@Zrn_K-PbPP6W#b zowkDMn-7C_CNe4U%vi2&^-6bC61%b{dgaoZkaeHD97Xmi85auhF_W*Zb1wBY%uN0# z4EDM!9S(TW`ymwx%8@`ymiN`B&o7^)F_&Bf*z~xcM+GV>#PX@GS?G?+4=f^L29>zPne1VKU^6 zKfYJdX45nRBh(p%3@7rHjD0i%*jr<0%LzwF$R0DoO!J%2vZ~>#K4gV;mn4Xe@gs$u{8B_$*UttYO4Xg| z>`t8M|4C^0+Ixec?Zh)ZvN7y&SJ(kP|0m0}Qy>lY(3k-%DS6egNgSeJUy24)L{Dme z3hxy8xW`Vdih04<~914U^OpXoieh2lmf#q61+O1GbH$wl!TC2@ev*P3bJHM1Lh zD{X>BWBwv<9u)O_kI@Ez4QQPEJ&zJUXy_iJbmo3(V;zCM;8=c70$o$=FA=XbIG+P6~q_2%EFnwVT$tT1 z>-%#og&)nd>>W+{-kF4ZR!1mWi~c0G_C0-4%S4I4!L7jxVHpsCrtwO4En)dZjVfws z*nNpJ%dP3S>o*bm@L>?+z>^@3V0s4~Cs}Tk5&`1F1Ch_>T>Ow4)}t4cukO`YObe(_ zVByZQ+2qT||A{8w+I)d5!@&BlLEBA0)G6{5IP%a=_m}DnF>McGz#HF3#QxT=Vot?b zY(pIh2`5HQQcQ#6V$^P3d-h$I0!48mXM5r`AtkD>D9zwVain+ecIn=QYs3Q^u=?|& z*B`~yephI{7a1*((KeqF;UZTd$S>#)P#d*(s)+s-S2k#ZnRVIE&zFpIq9|bYGwxXP z2>bDAN|P#;E9i@EuX`sMiCYpmZazl8ZV7|`x4z*pbDsH`^&CICyUIRax3Gq6v=2xf zyrx*r{@2d8EH0oq634$WfHx34r$1N;eS2T<-&PE~p|q8~Nn&s4N1%wt1y}B#qG+KEwGL7GiOS44L=3K3zxV6Q0n_COl#=NqEQaybGTK zPCY(4FM97ya^|RS2+s(!hgoiZ5y*xOCF{%7#^!?3&yYr#bH&D=^y1(g3Dhpn$W=fB zz7B9R33or9oe-I8#P-i?ab4WkuSsPrI(mo<_qFqk7uoG6osdR85H6W7cCyVvjgV?` z+UdJbJu)0Paks|4Cu#z*Cl2uSmX!$_`fA3E2~ha=Wes$PPwiNMxO%}>Pu6jz!sspT zE2O2v5=q9~GMu_64`|0qpJG(8(T2+jz$z524=tj%EtOz*=HuS$IUAEr9lw&O;Q7L* zOs2hJI&j(Gij?=2XEG8Zd;4PR)1ntaSzrB0<=mRtm-sSPqv#)5N#I#)e$rl#ZP2=4 zHdYIt&p0P-lT<&ZWP;N7;5|Ke?UK{w>tFpguAG*^9ZY@sILWz;jJux3iC$Cn z&Q;%`C2lH6delm9lPEp7>_P$ScNqOMsn^lC-`0SHye2?AC*8}gR|0$-X~{k2z;C07 z=G5AUm4@2LNxg+hErWxP&f|(sa#;P!Q3CI9gYxBy@xe2_$kmmrlp7P~FMt#wq-}zV zzYYt~f1$s-(zrK2G)k3UDk8#g`_OR?P`Ly_$vY86uSma`r0ZoEqKbgxGlz9apf^_O zsOWfmhL}?*2NC*YZe@K(k;K#ax!x1#n5T+sE84ILONSGh<5v13^rm7Py2t z0Sfu=#Is+m4ihC1|8wJ6Varb2wnd)E*}N%j?*PP*|Hd#<9aqE%U~wmd#JXR8_V&fe zR)i{q>PhGd-6*of2;ojSvJYJadN=WI2AUWcth(geZ<1}Vl*@&A!{t{{_1vQ-l^Xch z64^;w0~9j2OYPr^9!31R)Y1i3{Au9Yu=+ngOkh8_j3GaL5U6l-uYO=~ENOUqMPT zD{y`Sf%KfH)kfnzG~eALyGVnrv^?8zeYEx;71oxo_SSCvpclV}gMbl$iiR59U~fuv zdhe_sQ3CMu5{kntGkYxygAOUm)J@MmDIV^%@Et==SZ^*(HIEU>X4kKu!xwc#pnzMc ziJ7k0@>zb~Vy)oRD>(Jl3X5z{E+cY7;)QcH@l?AI%Eo}XTOM*_D zO2ls2HghYBWuR{~F5YdIP*N&>T)jAdT&v#TDAuraIOcrMsvns$8G7Cg1_2u`d2^53 z%-=W`IZC~V32?#X(U{anzbj!?sFHNAg=%I{Tj{8>6VXTAuUomD2=J!_Zzmw8g(Q2x zYoLrbwY-?{Z40ev>ff5zvdlHHd;`udhA#jE0|-0veAoRl^Rw`SKoS7xo{BVZzCK;a z6`+lDBh{17NTgASOvw1a+myJiTyat6;hv+f8@)Y9f#d7mE8*D2N{e$Hnh)iJV~K-5 z+9_dY3aWtyzTCFR-JXe*9O7dcW3UEueHGt zy5fo+3b!BL`9|0PnRQYIAZYk^z?1j~7$sbUjc-hmF~;ua`)5gO%E)mxvGLEww_AB2 z1@)oXsO=Ff1J7Ud(SXb4+?l2x&_QR$m+Z>`-hrg%mfKY9JIkJ!S6FVw6g_Y?zP`c0 zU{#LTL)op8Py+pZBU%3~GTv&|lwncIXkynUNTH8tqwdz~fsrKi^%Cota^8%Hfkn*u6WhP3Lzz!GweeY~qr?F)QB6nwJO(xK8KoB1p1NYD0v1CSA| zP~6fz$bTJ=oxHK20os#K-;Xxes_$gkKQWe%1qRodzrkM@sboP|E=M&ZkePgLS?z9t z_52dk#jA`%Kjq@W3imfY|9nuQ9eo0UM0ENWGEFG~PEDKdT5BRQ>05~SJxvv>QjMhJ zRES9bZ*h*Sl)I^kXPSiA7n!L<{B#^rl*+`{xii;D)n!S? zJ;E6x3O7$!rk;W%QPlhieh8`gg-*NiREL{~Dx5@^%kkk^gR%qg`* z@PR1UIc_Txyh1M$aUMOM21`@A`GF;T9wn)%5@aPrJ&{g46__L1Z zt}b^~K+Z?Uw7^AQ4t7ZflRx{;<1&KpWzETjZhPP8^lPdch{v5sIO*v}6d<_PM}>ef zJD4}Q-r!;dUiqWX#&Tvn8`mEI{-)&cRiNHUIrT>}CmlDH)4GuNQ1n*+_ zLaOzNaeQMAjPwHrMctY-qT$M4ZT5MZUdu<3HWe*Rnp7VU^q@rI6?7w^rbtT@txhL# zg+PROv7*~kFO0@MQp)MjE1itp#)<7Z@xoQ;c+5cGsCnbCb)G&5CeKkcJ09-P*L00j zSC|a)lkWQ$$8WIEf-pNq)1VJK`%jeLbBqX1oJ|BsJgv|UyXB z$#68u$OeT72*zxz1hr<%{7F>}N`G9TxhZ-0<5h0e#%stl@@?1V0 zIOZJ`{F;KVo;AwVJ1D}Wb;$XbUu5_IGev0PNxgs$kbvj;i%RrZ2({(UobX*QFRj2@K*h*yq9uf_uO8K%3=kIzO+1;0tf*8QjS zTk|M5uB9ZT~LiGu|>Wx692b&*L4Yk*R+eH;tR@`mp%|IYT2n`0;fKSQz|m?edgvd30Xy$k=6PO zuml2LiEI;iP?#lq&Ncj#<`r!C{*YJ1>W1VCdpyAO{zFT3|LkAZOg&|}^qWABbX4aB zXu+GljlBj*jXL->X&_QR`|FBd!dd0YS!>QF#_DCAGEX<9>|duL7a&(!i?$+gJ0J$j z-kb_6I_ZPKVb7spl{9)Xez&j)78x|>@ILf0x7rxQ*H?Ocj<}^3GJ~WF#^K!@${;U; zwq3^qB~68p9T>}XENNH*N-&a@d!K2-ej$n$&&K>Yhh?GsTW3x0uBZ7Hy(BkYwx6ia z0f2pj<7S^1`sDo>|43PxVdsS0LmnyOI{w(Tzam}FU<(GR|`J2tH!+jZ!%f>y@jGu$wbOtD+4jT;Sr}!i*$%C6O1_ilTCFy(j?;|ER@N|Jtyz5g$3MIpqrjfX|GgEk zO+EQqruKxqJ0{I_kbV zee@X8(yG+1UN~s9oGFlsCS?2k|NjFq4xziitCv#gRlNXc%1z*v$jP^J@!+_#V(#I2 z>3U6hFF=3!;NR=u1=`=G$egp1?X7Rhd#~@~RMa2OrcPX6Am}pDUlIIl?MkoA4~+xT zMuT3&K>P;9xi$N)FFw|fYKV&mMEeiE%+O2ay_U4CBX0NCdM9v0u{auGHeD$3x&X zF5Qbv`fCTiX#%sxgFBs+NiT(N3_k#Z*{_Al zZ<;iXB1^!9#g54zlTn zz3KiCwbHA~dXTPR9z+>m;)sRm!LwuTL8ay#0)HQi&(1uD{R#5k&0YSkb4(KPfi~e_ z%5m=QH`_nAyoOiuVq^I!3D^1i)!MCl0LAg5$-<9*aj*55Sy2OvX*1*~auw^x68K8q znV#KYc99fUf!E|&rB)#v>*edTGN$Lx4A|kbJs;??bvXqfuRNqrJ?|1J^4jk$t~viM zQ}I?0To7ElOhWa_{lZ3HI|>ZxRi~H?G;;z*s3lRDr@f>zaY#h@!VxPszP(&4Xtd-d z-D)PJcBp%n{d`S^d5Lg}@7xLw1HwgltR_t#Z> ziQ)v)KV+6|?|Kn>`lB(=_ZbpH)rZ7%xO>0k;O+i{?^DT!dXX_Af&3>D;AM>8f_!H8 zRc6iSIow0*Kk#DYvIjZ%LM)KSbjCT6;G;`?ibL!GT2FhWO_EkIXkT2`0tYHY0EOo- zJH@8cvu-djYj#c30t!37Mr%xxWME#5|6~*wCx^X>M$JfHroudzeNaC4vk4&`c{4f( zer2I(PwqlMg@VuuJCY;qi}x;gm5={n6h-`?B%5(IcSl3zJI;MBkEX)Lc4zjt2AwW! zo*>3K{dx;5T{?`oCJcdW}0UMyxHHNRX+d~ z&)CbLj>CYJ5NieyeVIkCZ6|&fpg%u$nYPC0E>y!V;(k1L$9Gp|_hyUxM&+#e+>^f7 z^1Y%RKWi)HIPS^2VrJyLI6^Nk&NpMC-i(pBJIDOzQLXI=3xubTpCbQfgbm%j7j*U4 zz0lqXaSNG>8WrNm7rIp4dejA0l^{d$&>ohU+|+ef5B?E(zw)bO*Wi725y*b+uwH~y zAQ>oqxlLyT^Y(4%S)yDGo^XzRT=GsqWZ`*yFg5npem$lI2)k6}HLjdDKQW;Oq~|Qd zG;roc@+U#j-?kzq(VsYVh#y=VGobhYzv4%ow&;Rf6?PxdUZ*q|n1x>WE{G2qD#8gW z>xrs=?QW=_+T&3#Q(1Zmazgr}nv6{wg9@fRYlc_+#Iw_vRwl^Viz?>WNj?UTsgxJ* zCUBOoxIt&(llD%%*k0k)So?Pw97e<8L8Os|2%}2qXdBVn(>4SdN-FZb9Z*?WAtWwkMt?Lw{oNxk0NSTB z+*g?+vR0H$ynn}FDuoiqr0A@KUOYZ335S*cS>GB zj8>V6-o#x}maY}%Gn)Goo_rAM6|CJYD#U?**KAh*&1OVfK(_(@mv01cq(G1vsgv$s z5mIsnzGI1m_^pFBcm%~lysc#OjTB-DiV{8Ib5cV(j0TZ4qbd^oy+VgDOzL=Y?B?{0 z0mxE;LUP)ZIBjMNG!;+d=XABE) z&Lze#SJi_uHW{DLHfIRhfdb6%MLN9Bt%Kxk7zbVzGXp7}{3;la!?`y+I5mTSs`)M0 zuE%t^ApKBMEgycUr!tJ6^3Lii2u-Xgd+JqWS*t3?vsZ)xTr*^i(m^sIw&`m?2Tr-@ z!M3`DH_<1n&^RGM6lfG0oJEI3K<1_g1Kn%o<1Zy9Xc**6?Q3fO_8y`!OYoa^U>`T~ z_h^(j!|!)#ARH{vw_Kn8fsd2t2^+Zh2?v$@9H$5gNc^tKkpCz}2ki-6mdeB)9q2(G zbym?6V729FyV$8OraAHdu5kUY(>8U2P-6o#?Muy*@cK+jF`*~HO-U)ut~I}>dj}hp zum4YGVI=%wQO;?qh}7a@t$WI8!H8)WfN&*3aOpJ+lPH7ngvGovwqk%K3GWmka?816 z_QKItPm73MvDdoj5KhI>^N43S3#TGOYz0)Z(`$&lp$zO9h|(D7v%vH~x^&Lr{a`?U zr+QspAuyzjh46jd4?NvmOkab8T32L}Jow(`{qB-lqR0A-vidhCJ>}Wo;v-ABr8{tr zj+Bg3Ej$Mg94`mDLBKY|Xp+at_*ig+%cZKfP1Z}dzU82A~tL%i$|MFc6VC49#!q+jaSoieTPep0T;sd8{}4N2__7b-Jt4Rbw?v z(>OGWQ-8ZzxW%^jjgk3x#Ds*M>(M}pEtt-d=8H$k0mn5*aejde<*Jz=z2qE2 zxYa!c<6_A@0jy?>$4?6nWbw~j4^DCmOBTR0VBc+hg?AYiD*x~2u<>!tZhG%9mLMO= zV8q9*hU+ymg>Lv_%DdvlRo*XgX8?hF5AGe9^ac7C*UxN#>&fnR4&1Lv(+_h`*rD_S z69=M4^pw2thC=KgwVcksc!kZg37C6#RQyD=y)n60CD@G^qel8pA=p=8n1<|*ltn?v zl{(|XG0zXS49(F@B*IvyuhdamZO)W6WLq3~{!DQ^8#8VA5o(@sZ7bZIuZbn#cT=bZ zvRsU+7u8QB$}u?u-qbU@kuDy@sYc&xhAc~}8MU%r`M#1Wd22VVAItTK9U+7;q{?+* zCR!RBW9S;zwZlXhXs!Jy0_{FFUnHH1>GTd@DkV|?aKK$23k39+=%Ol^m08yqkgV79 z(R<7ps#n59K%j?6G$^i#lcOtuAj+P6!KrsW*sWnk({4~?|209|i0L8am7IIf!~$8`N{jN8>Wws)biOp05| z@z3lloIMi+?E$ur_5DRhLMv2EsabFojZ<7x{7j&CI8}AHHOuQZZ$!+RnEHIw8PG8s z=k^1+PWXY-eUr0B6DmhV&Tc7QZ1H>K!By;8++d?p@b(BHkwD*@949eOXBlv=>?l>m zAj3=2JUPZ5`{zQh70_817^NiI&}%AF!J?N_O}UuH^3Yom9_@qM!tED0^8Ugg_it{A z)K%Z}@sa?DqgFxBQ`RIn{IHyTiV@EJK(jRBeaSOxads-RAl&|V{hW%D=t+rBu|PX4eK4n`3GyNs$Pvquki92D2Fc}JK%xGEyTMExACf~|hk+xjo2y@P0LNI`-dbvl*!v*4aV6Q3#V<1+U40-CO{Gg;=jVNlRL&@N> z2Z-F7(wFhrF>fx7blDpwDm>!Uc3S>LbX^PHi^b2e`coETZ(2TQ!G`Z+vS=pUepJmt z$bZwO#EN~ilFILQ^+Oj3{61r0mn49Kt0)zdY`G?Q*Cb+-os`E|7A*isAXFl0K_q_y z5m*G1T}0L+MZ=GoqFV@UC>he}njA3-EdIk+j(5p^V0uV*k7b_5Q(mNkHJxCZhTT@r zm82clXH?@|l-cKwqA`yV6o_odp^7xrALE_7C4Nth{$y0}uUy}Ac=QmTZ&12*QzB8?(*CG(CtjG!c)x92)5%>5G0 zo_9}3=chN%-`^Q(Zv>U54yja-$Xow`J+#I_%0lQ=)zofVKenLDS9v(b1ww>}H!5); zx;gf-#@FVM_Pe&9#=OUvmQPPVf*TdTHyU8~YeVYbM>GDkJ<^0!Hasv8$Lm}3?*p`+ z{Xr*xR=_mAsSrmH&@t~1pHRpt8y_>4wpRX1B(GRw#1__~Q2Yn8#YZzgM`8PLjg!Omt8bfWsnY(A?jVrr9d;qdFaQItxd%syu7)T3FwK zy~K+Vr(@>Pk`uTfm-?G=%|E#GGNT)5Ve@zJR~A zCsaF$*D$xQ+Fgq6-Z2CO_C6PR5n6$V%~mR&gxt6y60F05*~UM}h2Qx4m%>p?C3x}X zz#NSOuR-*uiZNw_S8TMLSxa@0hU@H&1%ohx!to|j&?yEh{Q1eyntUkNJV(bxKLQby z0_WypQQZ)~414vHP-;NVR?W4K#aMt$77o8`MGL?$!Y2QCp4B&3#6lt@n*8AIn zUp}Lwo``);`m7PFZfT))cC8LHV57(#xc}UQeHz|K$?(1CB!M^E>k7+N$3*H^`k}n- z#+J(-X&3!5yceqkd_pZT84rH58mx{tW9w`P z3clsG#U~=vcV$)aA6!1&)Tj=8`dhNY0&|4tq)?+2^%xa4hiAv!pmJX~3|`<=QN0^z zk<-iMfN};yINe2mSE+4fH!}R2*Juypohnm_eWf*s`tcA+?!wpsi{v#71>u5NApC(P zs9X7{u7S@f#|$5-P>%OT!NXAt{nP}Y+#7#e+N9 zaniVc({($+kdW+f);E z?kNyzU8z1wH5~%azI0V|o&Ma(RMo9*gM>@@Sz!z5Q^98xpi(XtQYb%3rR}le$)F($ zg^S;V7`a($SXlTl&!?6_SKNOY4IDBXe<(tIwFJKXr#qS}hI?eZz5*Z-irY&pr>S2h;Gm!m!foX9nsse*qda%}Y zwj%3;6@miQzN3~G^E?MjMR49Z!ILD*Atal&tX#cK_Zs2lXFm4gJd=xJ)ZQ3q%91|@ z{M{8ipF3hkd_I%ZdIn()N%MT*zbpavm7tz(~}LfDrhC1*zAhzLQU zKC=k2f^rDNt3mCWh80_xl}4}6C4U_gX|J*%=tP6-f$Unp`8qu_*mQme7hc!3>wKzb z7XDDqRbe^WnjKZ2iz(7~Cr#ErYOCnPWL~A(Wk3!?9Y)%5O&s6JYW$$3_s%t1tN(xw zl#EcC*(dG?1X7mK9@BW94(&v9X=tQfCA-xuk%f!!1SRHD7}RMy)lpqPj+btT{?R&A z%IEs=jFE_Sy^o{4%r%t8hETN&{^j~lSC9?x9u%sfP$1tQpkcY5OK%Lhal8pRoBXrh1`e;EE z({<9pYP6T7MMjw5q2Ttf=G*>jY;LdP=ii(bwBN_w_G@|gO@EgYa7680>NHufK))I) zRl+_0%kg)E!aD%0Q?Z=m644XFZzS!t--gp!cbR7~=QK3L{M)paJFMp!(UCFpb8S65 z`#Cvb$=%Z?9^L1nsB2# zjv_9{Q+^yJuV;pQ5lJsp%p=Pz^Cx+TG7hsC{aO^s)l;W^-816%y;PZ`S z*dmhs4E@|Rzy+#0sr;kgBS;7S%1WKSS^&gj#*zDw2MwgyDrT^9iZ-JfFO70xt7jm~Q!YP#~*XEO*$%!JFk%gs1Wmh9QO> zEU?5GvpvxT4tep~mhCt}W5KK(o?Rl631b|cCt`*}ruwHO=!4>Iw~mY(nEZ)J(P!x1 zu+V9jK!Rnulyk}M6w&~1a)#BhY_RdID`=5BPTa#8uazk}nvaLouK>{?6h|*5`oN3q z(eQo>P0DePBfPY9cLaq|dTr?OeM?&0b5fyC7whtEUD6rCn{vB>c<*VmOq@z}nH^k) zjYjKnM7ZP;0o)0Y>Flfz+8_#?!>Nw^KB`~b&HZnmi*r)gSp6seMSOp6e`&ABYvM}( zH$HLh!94bx9YFbb62HLrg0gYMQ9fX2uInZSGu5&W(RU;_%yj-^*?z0BnnURK#q02o z0?V`v+)|A?19*d0==WzC-KER9DeR5|XU}>YbQzNHg^`C~==%Vstg~uQw>Q4#UCZ~awJM3wF@qSOMrbT)+N7J#2Gtm$#@^#`qV-{Lckt<;sX4oYAb4s)M zMAN0Q3{AuYtr~smZ}P&j6SPO#8sO$R6>8{?2Oe#19ys1U?zH;xIp*pa{3@7_RzxM- zOCl8*Enpr*{*%e+r~WL(l>Wjyv}=cX%SFCCfh@FV{1=D84vcz*144G>?!V!WV>8Vf z6Eie;bxmwXn)cl3n20+unAt)YG8%6IT->lS8;fMJjBuWEVDx;0*a-quQ8kkom|kj| z7~LK=P$sYQi$Lhghh}nz@m8ZTyVPz|(zn?la>sh5eA_Ysx3dBLfo5afs}^@T+*yWabm}neVx{9vD-orXxx|ifb%Ix04j%OAQyxfK0>{K2Osp&k>Tz= zOvGMD9ChErrGtRp#|^br9;*7ly)-zR&m^mC7OFVJa`6zssRa@KnkeDYY1 zyecr=A&Nb3UT){D@#Gz?7%1`^iDu+ih#FQ&A-`@*zVa#4L=}#)-hPYG1RRlu8ewm& zwG@b@H)LR5*VOj6&s_&XO@_uL*PGMBjZu2vWxo?|H`IG9xxFDI>5VAdi)e1(d;~`? z^};J{T4p5r?2n8E)6Q)K5X-Mj;K0nHg57#2j{I;0%6V_cUBHJ7?lg{^hEGhxtfR_q z=LRMPwbvzo8oSqNK5}rF6vpM@gXe?M$lWr?%bjker=v~x98@g}5`7vcbW5)&K;UJv zlqF{ynvO**$Ak{n{AlU=vMo|C&ECG27Iy}_#-G16tnl8fB>Xc&CeCp8h7or)E8Am` zT+Xt&j`d>8z84k!3FDjUZ1jCGWrwe@n3Q{ZE%2T9mP3=FNHt^1>5uQgqX1d*syFEqh5QlZI;{yj@7mSw1&Lc>e7S!JywY;Q=^FxMun9Y_7Opt2Tp)s39u>XCm;&};QgMN;? z2`o-#k~pvCO@Obl2@zgnD}l;J7_gND>>+q3)`rW-v{1*bAw#`zt@sM>D6`}Mhgx}$ zVBPsWCAa(kSpWg`YX39Z>}#r(fy)>8=8aP+g2&hX;$xMEM9jU}Ws?6;1Jv}G9v8{ll>VU1h%Tv- z{%xR;d3_bjcF-f5%hEO4rX$hUclr!SDvN@T^TH-A&^x5*q?)dR zb3$ewFbRS}onwezZa-XK*AjqxoHmMi9}1U*;5F7n!8qewdMHoq#cO>P5HMrJjINYP z1g(c~dC-@P>Hqet*IwZ|acEzL=^+xup_DQSxsKt?7o$4!sbj7$daX`SnjL6xiL=vV zstSTMt|a22m!9G7m5g^4TUp`|pz1w7+(g~sR&7yvEAQqShs&91tu0{~0jH{#+~NOM z0Bp@FS4QnnMO0}-=H1e~w6us`tR3C6k1&dHOL#3Nr8*!pu_poOn2?BAQeLncZB{$J zxVcX#*!MkpF|ocP%q`GIt4r<~v4)UQlx%M5&Soy)OqLlK!GPx8945tgMgY|_%0gj8RiHJ>Sci+5Xm`8Dv0=K z6k-2cy|-4JJZJ$klt~kF&;wJk+w3764P@~9A|=xMd!+=PY4=i+$Zu!G;r~wYGTPWk zMr25+ZjEi=0sg-r7>=c7I`KR2|3#@6OKG5GX@BGS9lr=V7eRCB601jX~c;%TaXGn5i=jL9+;mn49-gF_^ zbi2p?MnOKuaZoL7?z0maMvuFNrQ2*gb4+V?WbfK?z%2!$?6iWtNiWfC_L-Cb_FT& zYk)MXEWSR9kwP&=sw!;>`)XcgTV7^#M(>!+OQUv>WN z<@+zF24@Oa-Q4Z<97cNrvk3c`vs%j3u%j-wxML$|V*8vGRHOJN?q1-QjUuQM`DL9A zxa7{X1skJhS-r+Xh6)6YH&5}UIBBA}0l8HVgY0!3k=@22_(soP#7t55(>nWvYf9}l z>{L+oV@-?@OmFcX8ezj^4m(&`i^?Ggn;m_Wx{VmK@o6Q)epufdR@qdC38=3Y9i zzIvoX{M!g;$bwYyMSsvLZG#95479+y4k#RviEDuS|8$v7m7>(A5VW@m(qia?Bg#m| zX17Uu2Yt<0`6iNoD$=<8n$3zl8HtG?Ol(=GuUmCZ4uT%WQFl@g4)GbA81LF}lVc%F zp>AwU#|~T&J->*1s#X0pF}#155YNDIVRIFfN9xRH`BeRNb2CW_B}GinKM+k>gD?** zxNygk9uU9M?VsVyR7Y4Q=|J*M05`%jQxOT=_%*>?g8ZxPjeI(#MzOPasR>Jhj#T@V z;%3vidNl>95iX)vS|MBMW?DK0u!$M7^cg-bl?L35=2-QOaZHZM+)AD*>^}!4BuD!a;~i{go0%ItJtVwdT{&dTjCLkzRt??`MxEnD#Xb2$CBGh z*?Fh^GueL7pY-l~-02jDu?c|i)5R2(9#`%f9|G-XTA~X#)@pWOy}KWLz$rS#QkHcB z<_A3Qze|kG=mI@?vNcM~BS~6DV6qFTpiQz6V~b zU*FRskpoq!9rMgM!@@?xbhTz&x>F!kb6(g$F;n3Ie>q?TN5nd~`pX<%XGN#9YYn1C zD@-MLcGB5Hl)k@|f8)4ob^@bmLIrZwCs_A!H5-KFh6w=bGEFoOIyJd43bcIHYhS)r zLMxhnI}AgJAQrwH<*+dh52sSk>Kd}o=k*j1?DyB-P>~OK41&3&cAVo;@*o_vpidsY*3}J_n+BdK5CE;7e>!?Vsa8#`@ zVDPNHz<3}>D+ErMXBp|`OylZ%p-A1mS&XU-J@XvMn9(rh{@h-)r^))Vde-*DT3 z{Hv&N7$9QA?E6|){~TKtF=3m5>PnF#PjPOEbDf@TF4<|?Pt;F>3L~}H^D6GRCzbAV ztZFUF^-p+S<(;%@7_H&Vf^^TmKI8I;6zBJkt>We-{r7T$T#0q z(7kTunRV6#!bWAc&CRWi=J(NzS5}FcuQ)$X^lU_qiC$k>ZQ<&Cu4ndOARs(`+O7*H zac97Oy-}RJ zPb;f>$>CZ&7+Ks?y}6q5>ugJgt{cb#v9FAjZg&~F5PoulV z)>3`s$6t%yN>Gl|U08DQdRGXxqq}rgV+H)DVRXo-=!#Oj`v;#~Ll>1x=zyD7yiX3m zjqu{6WIQ6qw8OzxFR=Xvo`r~CuXvjl4V;vOoVRge@*3AiND7`-AjKt!z^Kar^PUlQ z1pb_n%|Fu!@ymI6Nr^y=u+qP*uCy5izeo8qQm=LGrl^)uEN#$J+VDK+d@V$=&K>V0 z#LF8dSs-6#6Oww4)h)7!FTAN(S()~JV!O5AXT_{6RarDlwN321WiZEN-zL9f&GiJL z0#2C~;$Eq%%#(5wbm|Sqw=-xU-!VtkRe5n6B_qNZTF+@z1HiTocAGc7$gHq}I zU0e+v_7>$Ju#d6841RU$OJMYx(q^)AC$sarX*NP}zk0b%`hgd_5-H)o7aM!$nEq)? zALcKb?ImD7C^}j(iSkVtXS+|208B7Ui7*517@d2kT%U3u@kgPc<&&@1=M&5{`48?u z=q^1>B-KA4@CQTz?;IHzL@Cc_%W!AO0mA9a!mEI@WvD+o&;A(6wHE2EfS(tu(-zrW zP2P#L#~vgkR4RuZN(fx87RHEUkXq*SrU-c)!m?uEJoe8>96(Nf>J-ba&@5j2t7s?4 zuO=Ym!E{C4gyr%l__UrYKcif^CsK-mn~WlE;sWM?hl-TX@<;luDbtUxV09N7}% z?f?#YmCxN34sJ``Ck&=wE{-twGg-hHpaaq>gnZ#n9+<~83Qji8b1*PYCJau&zH-3Y z&YzD-(8*E>Cj_~lr#f*L=kCIKN3*cO*y!ZW?R!q7Ffs1N6)Z#8-|0{pvHb|bq@;MI z(sq&kGkq3tb5wb}rRz|&+LV}=?${7ZDhr}ev9~LqXvyG=uceJq@+9W35kJ(VTdZAA z{EvPu;mHcJI%}?R0(}Z~Px&6~>{gk0qq8m>LQS@HT5AT!+5nE$mI}knSrr$@y4Q2A zxP^L7N6z|G)B!_ZE8QIzUpWz@axTAdp4(W|aCYzuTM7G*-mhVTrbEQP2H8Hd|9!}3 zLc=#Kma&MllSr^@Rcpa2wu?&iLAy=4$3!v>kCsvs3@ve-$1>ttKlrC!>*(?1m}h*f zmKD~eRYM=Z^Z_obBl*dxFaGZ!~f7YJnEwH9FfP47eGM}V>uDc<7QEGGU>)V z`GU@pYVlSVPeK~mYyn#bNU`LKmQ21dO~^G3{TBnTzVrv7gu=68m`tde|6IjqxMQb^Q8!$OBOSIz`Ow!J zriHA1R3nnp$~(Us#E|-PFi=oCGbilPiRPJZ`C9DlWUuL-q#yU&gm=opAAnCLrkEHc zMNnC?$-3-(i>-Fbu(jdYT)^72y^6k8TtNV=&N*^({LQ|Ma3jgA)t0o+(}U+mW!8Da zP9J_+1(B5{-D;hj&LCslY4E9}=qZ=Y;k=r<>+;U|; zXK;6R|4e_7Rb=85p$4|Cxkktr$H41>VOoc5gsRjCg>{H}H`aep9v^k}$KS((1w4Bz zw;8xwzWe>sEJc0rbjl`|iB_g4eHA0Ocw)OOJPytzR7I4C-1{4-T3bj~y#jTzbuCkiDq#m7q6Hwv}g-5g>SW zN6sPqpyFIb@}lF-GfR!u;`@<0urqB_?H3HPpTaEHWquZFsmlN$lx2%m=JIwUA z6_-glY(M=r_Yxb3!<5W)NIT+V6z%^7-4Pz6%0r3Vr#~Q?i_(}Y&W~$Z??{@40jg<| z)(?#oM3&wZ;N#27<$Z=%m7mbzNpnZ&+PesgQ^4Z{?ZeyzUEeCXW-K37DUBzxYtusw z;MtFCzC9%b}L4GYRV|o`ItIz5DN0QY9x+2bD~|Qxu1}_7Ue$Jyj#!!XCwM6 z5`qC^Pa<2dlnPQwZ%7^uC#bMpp0fEoflrXypz@LLdhIgvx?^RH7?n^Lq!}xY)bQQc z&3$R0X6}m^JX>1v91|^5i5fB3zL_psakbL0Cs3B6 zug-SUW-s>|U{t5u6KpO_WmBu>&vZf2a5? z^F9>V4jE9)X$>>xiqLl6-mvSoiIdA31ua3Vx7+M5a~E2_OdN^EUjhOX9b%a!^xuD9OV!~fW-IgQ?MOkB9B`%?z2m*q+Z^?w3A)|!{^6&cStYN8`fFVgS1EKSP{0C zF#LtBv42<@$3K)?oXgp9TLLc>+h92A(UZ?ow&fFD+uM8+RhN&UT&{1+R4<~9mPp+d z!NDT3*rq4;o(=X~rfO*uoH2_uc+rXcOL94&QKHQ@EIVXCYHc*89J}hB4f?Fhks|sy zXK^2sb1%dEnhYK+82c*qmq^f0Y(;d#A@uQ<{*v4e5udR^q=I)KP}?-p<^Uj(%ko#v zb;nzvp-BJ>rVkC^hrUb!B-Nr}MQGFbRV-&+XY~=N(Ij?@Q6!c0~t@&)a zxcTd(PP9bC(K2KKMSvc7uDI!V$mLDJN0$(zXu9(=pq3h*y@b?ULYSs^$OB==lb?oC z6w9#;60!@Em6Aj>@LXH8p0|RdM=p~s5_9+T9$lL&auHWHCWR~h=Jpu_(s(IlajhjC zlZ$E8Wk6A;xqvPhR+!2UMqY$M+>QzrDy5D1SE)vwYQAbQk1j>R5xJRIqqOE#-^uv3 z>lDUV4p=9wA^Iuo)CvG($hY^8+J?tGORp3_KKHk9P;AKPFnz2Me<(qKmN!!DMcW21 z0eoSmW@%GjvZo6p9;d#OP4YX-?``G`FgI{JNr*uLqt}PzOkS0Xtg2O2~|2WVXw7Lx=f5J1~$H1~lXb%SZEUp#SJf@arvQzHW7N-ZgiD$|4{kezFe7Zg z578FyLC=?@6dkI|wG^u3S#TDc(z;VE1IkRo@C_(8-p9SQqpdmrz2g+xpWi||)sw-6 z@E{t%HO{^gw~WYJ^j7$FhK4$i7tjJ^47r(lkt+$N2qajEO@9Gm@N^62za1_ZQo`*> zY#HDWKE%@dB_49KsB%^cWQz_`YZ`hKhDbZ02W#YsOfxRAVG1Q_VtmL8H?@hf*fyub zGRU|6ZHMqTA*2xab|+69}4Al_l3)55C7dH4)e5V}KMa&UpIf^w=;u!Ppt9o{Z zP>>aSfd!f{k;ZbhYiLjT7#EnCU9u_W`a z8DjUMB%e*b{m&Zm*}JIB13kIhLec(rsKQVGRV*NWvvX4s_5WnslZD3J)3p)S7V{dM z4%&tt-`g1kl>WIrD`AzC`~<`fD;(sMw>)a3%b&Rwa3S4NtQ7mk<_$ zIOwRny?RzU?*ar8ET#X0zh1>%4n}6)EUs9JpTi;%&`J3ZH_MFk@{qUJHIBG>$}lw> zYy`67HI~_*PegJnm*J-P*ZLE5wpOINbJctJ!39A_b<;i<@cUX(!(DcYB#SNrc}y!k z|6#B!u#j(WLJHm~=y6a!nEFU#oe*KsQPMp23%M1J zIUhO25*^BzUpJ01I#rWW(#L#hw!uIA0IO(uGdKW6hg=h=(EK1H95 z_DH?@bJJnNWaSpWjNj)`bK{-R0^x7T-E%(2P;8sdx$gc75_q7Z?gjuQG@!=~%6p4U z6MwD^)^a+qNaoW7`)EH)cb}mKiLelPL=zIewXM?9Ot;`eZUvMC(y02QhPq-tHEfgB zdqInb-D!TofmbpZNvBl@j(-%Y=id`$Zy88sWbb!v5xxyU7N6efk7II65yuCM8NUs# z%EtU@;c0+F$X@T#DDs1dmtKu6J3tU%u0;I}?DQLKpsGXHb(Q2+UG8BkH@nI5pl)Vx zEt5}fi;cqlnujBsr)|_KdT&YhWD!qdFcmlXn{tIz)12#;$7~*Rwa2dOm2zVxUc#Ka z@xP0PyvRDa1P+Ws7@%pLHXO9WAf(c%e4y5$@cSDgjInqwA$Txu+uolHFuh zx_v!w;Yh@MXL>)~IcI�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 Y8^`cs+O`*%0}_(rdo|g5X^XJ`1H!VyMF0Q* diff --git a/msautotest/wxs/expected/wms_uvraster_lonwrap180_west_hemisphere.png b/msautotest/wxs/expected/wms_uvraster_lonwrap180_west_hemisphere.png index 907a51dbe8e5612698bcf36c0b00b88ad8a69201..9ea25a0177239286fbef171d83bf1bc18b0e4798 100644 GIT binary patch literal 40976 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

9_@QEbDMmPIgec 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

9_@QEbDMmPIgec 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