From 18abbca85fc1151ea317554196df029204b5aa30 Mon Sep 17 00:00:00 2001 From: Raedmund <30367709+Pinstack@users.noreply.github.com> Date: Wed, 15 Jul 2026 11:04:17 +0200 Subject: [PATCH 1/4] feat(suhail): capture 2026 source expansion + track suhail_pipeline package Records the in-progress package rename src/meshic_pipeline -> src/suhail_pipeline (the package was untracked on disk) and lands this session's Suhail-2026 source audit and integration work on top of it. Source (Stage 1 geometric): - Capture inline market time-series now on the parcels/neighborhoods/subdivisions/ centroids tiles (transaction_price/price_of_meter/transactions_count/ transaction_date at 1w/1m/6m/12m) + zoning_group + Arabic name fixes. - Remap layers whose tile field names changed (bus_lines captured zero attributes; metro_stations/riyadh_bus_stations coords; qi_population_metrics metric fields). - New layers: non_saudi_ownership_zones (unique id upsert); dimensions (tile-scoped delete+append via source_tile, keyless multi-row); building_detection (synthetic bd_id upsert). Two new accumulate write modes: write_tile_scoped + compute_synthetic_pk / SYNTHETIC_PK_CONFIG / TILE_SCOPED_LAYERS. Enrichment (Stage 2): - Promote transaction attributes out of raw_data into queryable columns; fix the building-rules dedup that collapsed all rules per parcel; capture price-metrics neighborhood_id (+ neighborhood stub insertion); split parsers into pure functions. Schema/tests/docs: - Alembic migrations c7f4a9d21b60 (market fields, reshaped layers, new tables) and d8b1e6f42a90 (dimensions + building_detection). Both reversible. - Contract tests over real captured fixtures (tests/fixtures/suhail_live_2026_07/) and new-layer key/write tests. Full unit suite: 93 passed. - docs/SUHAIL_SOURCE_AUDIT_2026-07.md: evidence-led audit + gap analysis. Note: this commit carries the suhail_pipeline package as it currently stands on disk (pre-existing uncommitted rename content plus this session's edits, which were not separable since the package was untracked). The repo's other ~86 pre-existing modified files (dated 2026-03-20) are intentionally left unstaged. Co-Authored-By: Claude Opus 4.8 --- ...f4a9d21b60_suhail_2026_source_expansion.py | 146 +++ ...42a90_add_dimensions_building_detection.py | 70 ++ docs/SUHAIL_SOURCE_AUDIT_2026-07.md | 383 ++++++++ src/meshic_pipeline/__main__.py | 6 - .../__init__.py | 0 src/suhail_pipeline/__main__.py | 6 + .../cli.py | 10 +- .../config.py | 73 +- .../decoder/mvt_decoder.py | 0 .../discovery/tile_discovery.py | 4 +- .../downloader/async_tile_downloader.py | 0 .../enrichment/__init__.py | 0 .../enrichment/api_client.py | 246 +++-- .../enrichment/metrics_only_processor.py | 6 +- .../enrichment/processor.py | 8 +- .../enrichment/strategies.py | 2 +- .../exceptions.py | 0 .../geometry/stitcher.py | 0 .../geometry/validator.py | 0 .../logging_utils.py | 2 +- .../memory_utils.py | 0 .../persistence/db.py | 0 .../persistence/enrichment_persister.py | 44 +- .../persistence/models.py | 148 ++- .../persistence/postgis_persister.py | 214 +++- .../persistence/table_management.py | 0 .../pipeline_orchestrator.py | 10 +- .../run_db_geometric.py | 26 +- .../run_db_geometric_fixed.py | 16 +- .../run_enrichment_pipeline.py | 24 +- .../run_geometric_pipeline.py | 4 +- .../run_monitoring.py | 28 +- .../run_tile_pipeline.py | 4 +- .../show_discovery_summary.py | 10 +- .../utils/tile_list_generator.py | 0 tests/fixtures/suhail_live_2026_07/README.md | 27 + .../api/buildingRules__9858274.json | 1 + .../api/gl_style_ksa.sources_and_layers.json | 922 ++++++++++++++++++ .../api/landMetrics__neighborhood1002969.json | 1 + .../api/landMetrics_list__region10.json | 1 + .../api/landZoningGroups.json | 1 + .../api/parcel_detail__9858274.json | 1 + .../api/priceOfMeter__9858274.json | 1 + .../suhail_live_2026_07/api/regions.json | 1 + .../suhail_live_2026_07/api/settings_app.json | 1 + .../suhail_live_2026_07/api/tiles_modes.json | 399 ++++++++ .../api/transactions__9941681.json | 1 + .../tiles/riyadh_15_20636_14069.vector.pbf.gz | Bin 0 -> 742832 bytes .../tiles/riyadh_15_20640_14060.vector.pbf.gz | Bin 0 -> 275164 bytes .../unit/test_enrichment_parsers_contract.py | 95 ++ tests/unit/test_live_tile_schema.py | 91 ++ tests/unit/test_new_layer_keys.py | 95 ++ 52 files changed, 2921 insertions(+), 207 deletions(-) create mode 100644 alembic/versions/c7f4a9d21b60_suhail_2026_source_expansion.py create mode 100644 alembic/versions/d8b1e6f42a90_add_dimensions_building_detection.py create mode 100644 docs/SUHAIL_SOURCE_AUDIT_2026-07.md delete mode 100644 src/meshic_pipeline/__main__.py rename src/{meshic_pipeline => suhail_pipeline}/__init__.py (100%) create mode 100644 src/suhail_pipeline/__main__.py rename src/{meshic_pipeline => suhail_pipeline}/cli.py (98%) rename src/{meshic_pipeline => suhail_pipeline}/config.py (81%) rename src/{meshic_pipeline => suhail_pipeline}/decoder/mvt_decoder.py (100%) rename src/{meshic_pipeline => suhail_pipeline}/discovery/tile_discovery.py (98%) rename src/{meshic_pipeline => suhail_pipeline}/downloader/async_tile_downloader.py (100%) rename src/{meshic_pipeline => suhail_pipeline}/enrichment/__init__.py (100%) rename src/{meshic_pipeline => suhail_pipeline}/enrichment/api_client.py (53%) rename src/{meshic_pipeline => suhail_pipeline}/enrichment/metrics_only_processor.py (91%) rename src/{meshic_pipeline => suhail_pipeline}/enrichment/processor.py (91%) rename src/{meshic_pipeline => suhail_pipeline}/enrichment/strategies.py (99%) rename src/{meshic_pipeline => suhail_pipeline}/exceptions.py (100%) rename src/{meshic_pipeline => suhail_pipeline}/geometry/stitcher.py (100%) rename src/{meshic_pipeline => suhail_pipeline}/geometry/validator.py (100%) rename src/{meshic_pipeline => suhail_pipeline}/logging_utils.py (99%) rename src/{meshic_pipeline => suhail_pipeline}/memory_utils.py (100%) rename src/{meshic_pipeline => suhail_pipeline}/persistence/db.py (100%) rename src/{meshic_pipeline => suhail_pipeline}/persistence/enrichment_persister.py (71%) rename src/{meshic_pipeline => suhail_pipeline}/persistence/models.py (67%) rename src/{meshic_pipeline => suhail_pipeline}/persistence/postgis_persister.py (74%) rename src/{meshic_pipeline => suhail_pipeline}/persistence/table_management.py (100%) rename src/{meshic_pipeline => suhail_pipeline}/pipeline_orchestrator.py (97%) rename src/{meshic_pipeline => suhail_pipeline}/run_db_geometric.py (94%) rename src/{meshic_pipeline => suhail_pipeline}/run_db_geometric_fixed.py (97%) rename src/{meshic_pipeline => suhail_pipeline}/run_enrichment_pipeline.py (95%) rename src/{meshic_pipeline => suhail_pipeline}/run_geometric_pipeline.py (97%) rename src/{meshic_pipeline => suhail_pipeline}/run_monitoring.py (94%) rename src/{meshic_pipeline => suhail_pipeline}/run_tile_pipeline.py (95%) rename src/{meshic_pipeline => suhail_pipeline}/show_discovery_summary.py (86%) rename src/{meshic_pipeline => suhail_pipeline}/utils/tile_list_generator.py (100%) create mode 100644 tests/fixtures/suhail_live_2026_07/README.md create mode 100644 tests/fixtures/suhail_live_2026_07/api/buildingRules__9858274.json create mode 100644 tests/fixtures/suhail_live_2026_07/api/gl_style_ksa.sources_and_layers.json create mode 100644 tests/fixtures/suhail_live_2026_07/api/landMetrics__neighborhood1002969.json create mode 100644 tests/fixtures/suhail_live_2026_07/api/landMetrics_list__region10.json create mode 100644 tests/fixtures/suhail_live_2026_07/api/landZoningGroups.json create mode 100644 tests/fixtures/suhail_live_2026_07/api/parcel_detail__9858274.json create mode 100644 tests/fixtures/suhail_live_2026_07/api/priceOfMeter__9858274.json create mode 100644 tests/fixtures/suhail_live_2026_07/api/regions.json create mode 100644 tests/fixtures/suhail_live_2026_07/api/settings_app.json create mode 100644 tests/fixtures/suhail_live_2026_07/api/tiles_modes.json create mode 100644 tests/fixtures/suhail_live_2026_07/api/transactions__9941681.json create mode 100644 tests/fixtures/suhail_live_2026_07/tiles/riyadh_15_20636_14069.vector.pbf.gz create mode 100644 tests/fixtures/suhail_live_2026_07/tiles/riyadh_15_20640_14060.vector.pbf.gz create mode 100644 tests/unit/test_enrichment_parsers_contract.py create mode 100644 tests/unit/test_live_tile_schema.py create mode 100644 tests/unit/test_new_layer_keys.py diff --git a/alembic/versions/c7f4a9d21b60_suhail_2026_source_expansion.py b/alembic/versions/c7f4a9d21b60_suhail_2026_source_expansion.py new file mode 100644 index 0000000..bce8307 --- /dev/null +++ b/alembic/versions/c7f4a9d21b60_suhail_2026_source_expansion.py @@ -0,0 +1,146 @@ +"""Suhail 2026 source expansion: inline market time-series, reshaped layers, new tables + +Adds the data the redesigned Suhail tiles / API now expose (see +docs/SUHAIL_SOURCE_AUDIT_2026-07.md): + +* parcels / parcels_centroids / neighborhoods / subdivisions: inline market + time-series (1w/1m/6m/12m transaction price, price-of-meter, transaction count + and date) plus zoning_group and a few identifiers. +* metro_stations / riyadh_bus_stations: station_long / station_lat. +* qi_population_metrics: reshaped metric fields (colour-coded) + region_id. +* qi_stripes: centroid_longitude / centroid_latitude. +* bus_lines: native tile fields (busroute/color/type/origin/originar). +* non_saudi_ownership_zones: new table (unique id PK). +* transactions: richer queryable columns (type, property/land-use, selling type, + source, areas, subdivision/neighborhood ids). + +All column adds are IF NOT EXISTS and additive; downgrade drops the added columns +and the new table. Existing data is preserved. + +Revision ID: c7f4a9d21b60 +Revises: b3e8a1c0d4f2 +Create Date: 2026-07-15 +""" +from alembic import op + +# revision identifiers, used by Alembic. +revision = "c7f4a9d21b60" +down_revision = "b3e8a1c0d4f2" +branch_labels = None +depends_on = None + + +# (window suffix) time-series columns shared by parcels/neighborhoods/subdivisions/centroids +_TS = [] +for _w in ("1w", "1m", "6m", "12m"): + _TS.append((f"transaction_price_{_w}", "DOUBLE PRECISION")) + _TS.append((f"price_of_meter_{_w}", "DOUBLE PRECISION")) + _TS.append((f"transactions_count_{_w}", "BIGINT")) + _TS.append((f"transaction_date_{_w}", "TIMESTAMP")) + + +def _add(table: str, columns): + for name, ddl_type in columns: + op.execute( + f'ALTER TABLE public."{table}" ADD COLUMN IF NOT EXISTS "{name}" {ddl_type}' + ) + + +def _drop(table: str, columns): + for name, _ in columns: + op.execute( + f'ALTER TABLE public."{table}" DROP COLUMN IF EXISTS "{name}"' + ) + + +_PARCELS_COLS = [("zoning_group", "TEXT")] + _TS +_CENTROIDS_COLS = [("transactions_count", "BIGINT")] + _TS +_NEIGHBORHOODS_COLS = [ + ("zoning_group", "TEXT"), + ("neighborhood_name", "TEXT"), +] + _TS +_SUBDIVISIONS_COLS = [ + ("subdivision_name_ar", "TEXT"), + ("neighborhood_id", "BIGINT"), + ("region_id", "BIGINT"), +] + _TS +_METRO_STATION_COLS = [("station_long", "DOUBLE PRECISION"), ("station_lat", "DOUBLE PRECISION")] +_BUS_STATION_COLS = [("station_long", "DOUBLE PRECISION"), ("station_lat", "DOUBLE PRECISION")] +_QI_POP_COLS = [ + ("region_id", "BIGINT"), + ("population_density", "TEXT"), + ("rent_apartment", "TEXT"), + ("rent_villa", "TEXT"), + ("rent_shop", "TEXT"), + ("rent_office", "TEXT"), + ("purchasing_power", "TEXT"), + ("weighted_median_income_monthly", "TEXT"), + ("poi_count", "TEXT"), +] +_QI_STRIPE_COLS = [("centroid_longitude", "DOUBLE PRECISION"), ("centroid_latitude", "DOUBLE PRECISION")] +_BUS_LINE_COLS = [ + ("busroute", "TEXT"), + ("color", "TEXT"), + ("type", "TEXT"), + ("origin", "TEXT"), + ("originar", "TEXT"), +] +_TRANSACTION_COLS = [ + ("transaction_type", "TEXT"), + ("property_type", "TEXT"), + ("metrics_type", "TEXT"), + ("land_use_group", "TEXT"), + ("land_use_detailed", "TEXT"), + ("selling_type", "TEXT"), + ("transaction_source", "TEXT"), + ("total_area", "DOUBLE PRECISION"), + ("subdivision_id", "BIGINT"), + ("neighborhood_id", "BIGINT"), + ("is_low_value_transaction", "BOOLEAN"), +] + + +def upgrade() -> None: + _add("parcels", _PARCELS_COLS) + _add("parcels_centroids", _CENTROIDS_COLS) + _add("neighborhoods", _NEIGHBORHOODS_COLS) + _add("subdivisions", _SUBDIVISIONS_COLS) + _add("metro_stations", _METRO_STATION_COLS) + _add("riyadh_bus_stations", _BUS_STATION_COLS) + _add("qi_population_metrics", _QI_POP_COLS) + _add("qi_stripes", _QI_STRIPE_COLS) + _add("bus_lines", _BUS_LINE_COLS) + _add("transactions", _TRANSACTION_COLS) + + # New layer: non_saudi_ownership_zones (unique id PK, clean upsert). + op.execute( + """ + CREATE TABLE IF NOT EXISTS public.non_saudi_ownership_zones ( + id BIGINT PRIMARY KEY, + geometry geometry(GEOMETRY, 4326), + name_ar TEXT, + name_en TEXT, + is_show BOOLEAN, + region_id BIGINT, + province_id BIGINT + ) + """ + ) + op.execute( + "CREATE INDEX IF NOT EXISTS idx_non_saudi_ownership_zones_geom " + "ON public.non_saudi_ownership_zones USING GIST (geometry)" + ) + + +def downgrade() -> None: + op.execute("DROP TABLE IF EXISTS public.non_saudi_ownership_zones CASCADE") + _drop("transactions", _TRANSACTION_COLS) + _drop("bus_lines", _BUS_LINE_COLS) + _drop("qi_stripes", _QI_STRIPE_COLS) + _drop("qi_population_metrics", _QI_POP_COLS) + _drop("riyadh_bus_stations", _BUS_STATION_COLS) + _drop("metro_stations", _METRO_STATION_COLS) + _drop("subdivisions", _SUBDIVISIONS_COLS) + _drop("neighborhoods", _NEIGHBORHOODS_COLS) + _drop("parcels_centroids", _CENTROIDS_COLS) + _drop("parcels", _PARCELS_COLS) diff --git a/alembic/versions/d8b1e6f42a90_add_dimensions_building_detection.py b/alembic/versions/d8b1e6f42a90_add_dimensions_building_detection.py new file mode 100644 index 0000000..dbba013 --- /dev/null +++ b/alembic/versions/d8b1e6f42a90_add_dimensions_building_detection.py @@ -0,0 +1,70 @@ +"""Add dimensions and building_detection tile layers + +- `dimensions`: per-parcel edge measurements (length_m, azimuth). Many rows per + parcel, no natural key -> surrogate row_id + `source_tile` for the tile-scoped + delete+append write. Indexed on source_tile so per-tile deletes stay cheap. +- `building_detection`: AI-detected building footprints/classification, year-stamped. + Keyless in the source -> deterministic synthetic bd_id primary key for upsert. + +Both are additive (new tables). See docs/SUHAIL_SOURCE_AUDIT_2026-07.md §5/§6. + +Revision ID: d8b1e6f42a90 +Revises: c7f4a9d21b60 +Create Date: 2026-07-15 +""" +from alembic import op + +revision = "d8b1e6f42a90" +down_revision = "c7f4a9d21b60" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.execute( + """ + CREATE TABLE IF NOT EXISTS public.dimensions ( + row_id BIGSERIAL PRIMARY KEY, + parcel_objectid BIGINT, + geometry geometry(POINT, 4326), + length_m DOUBLE PRECISION, + azimuth DOUBLE PRECISION, + province_id BIGINT, + source_tile TEXT + ) + """ + ) + op.execute( + "CREATE INDEX IF NOT EXISTS idx_dimensions_source_tile " + "ON public.dimensions (source_tile)" + ) + op.execute( + "CREATE INDEX IF NOT EXISTS idx_dimensions_parcel " + "ON public.dimensions (parcel_objectid)" + ) + op.execute( + "CREATE INDEX IF NOT EXISTS idx_dimensions_geom " + "ON public.dimensions USING GIST (geometry)" + ) + + op.execute( + """ + CREATE TABLE IF NOT EXISTS public.building_detection ( + bd_id BIGINT PRIMARY KEY, + geometry geometry(GEOMETRY, 4326), + class_pred TEXT, + prediction_year BIGINT, + region_id BIGINT, + source_tile TEXT + ) + """ + ) + op.execute( + "CREATE INDEX IF NOT EXISTS idx_building_detection_geom " + "ON public.building_detection USING GIST (geometry)" + ) + + +def downgrade() -> None: + op.execute("DROP TABLE IF EXISTS public.building_detection CASCADE") + op.execute("DROP TABLE IF EXISTS public.dimensions CASCADE") diff --git a/docs/SUHAIL_SOURCE_AUDIT_2026-07.md b/docs/SUHAIL_SOURCE_AUDIT_2026-07.md new file mode 100644 index 0000000..abdc515 --- /dev/null +++ b/docs/SUHAIL_SOURCE_AUDIT_2026-07.md @@ -0,0 +1,383 @@ +# Suhail source audit & integration gap analysis (2026-07-15) + +Forensic, evidence-led audit of the **current live Suhail site** against this +repository's scraper, decoder, parser, schema and ingestion pipeline. Every claim +below is backed by a captured payload or a source line. Captured evidence lives in +[`tests/fixtures/suhail_live_2026_07/`](../tests/fixtures/suhail_live_2026_07) and the +working capture set under the session scratchpad. + +> TL;DR — The site was rebuilt on a new React/Vite front end backed by `api2.suhail.ai`. +> The tile schema is dramatically richer than when the scraper was written: the +> `parcels` MVT layer now carries **inline time-series market data** (1w/1m/6m/12m +> transaction price, price-of-meter, transaction count and date), and there are +> **five new tile layers** (`dimensions`, `streets`, `provinces`, `building_detection`, +> `non_saudi_ownership_zones`) plus a duplicate `parcels-base`. Several existing layers +> (`bus_lines`, `metro_stations`, `riyadh_bus_stations`, `qi_population_metrics`, +> `qi_stripes`) changed field names and now capture **nothing or only their key**. +> All three enrichment REST endpoints still work and are unauthenticated; a new +> consolidated `parcel/{id}` endpoint and a province-wide neighbourhood-metrics list +> endpoint are now available. + +--- + +## 1. Method & evidence + +Reconnaissance was done against transport, not the rendered UI: + +- Loaded `https://www.suhail.ai` + `/Riyadh/metrics` in a headless browser and captured + all network activity. +- Downloaded and decoded a live MVT tile (`tiles.suhail.ai/maps/riyadh/15/20636/14069.vector.pbf`, + and a residential tile `.../20640/14060`) with `mapbox_vector_tile`. +- Pulled the authoritative Mapbox GL style (`tiles.suhail.ai/gl-styles/ksa.json`) — it + declares every tile source, source-layer and tile URL template. +- Pulled `api2.suhail.ai/{regions,settings/app}` and `tiles.suhail.ai/modes/`. +- Mined the front-end JS bundles (`assets/index-*.js` etc.) for the complete axios API + surface (base `https://api2.suhail.ai/`). +- Probed each REST endpoint directly with real parcel/neighbourhood/region IDs taken + from the decoded tile. + +Capture manifest: [`CAPTURE_MANIFEST.md`](../tests/fixtures/suhail_live_2026_07) equivalent +saved in scratchpad; representative payloads committed under `tests/fixtures/suhail_live_2026_07/`. + +### Transport facts that matter + +- **Tiles are always gzipped.** `tiles.suhail.ai` returns `Content-Encoding: gzip` + even for `Accept-Encoding: identity`. `aiohttp` auto-decompresses this, so the + downloader is unaffected — but any code that reads tile bytes *without* HTTP-layer + decompression (raw `requests` without `--compressed`, reading a hand-saved `.pbf`) will + see gzip magic `1f 8b` and fail to decode. Evidence: `curl -H "Accept-Encoding: identity" -D-` + still returns gzip; `mapbox_vector_tile.decode` raises `DecodeError` on the raw bytes, + succeeds after `gzip.decompress`. +- **No auth on data endpoints.** Every `api2.suhail.ai` data GET returned `200` with no + `Authorization` header. `settings/app` advertises `AnonUserRestrictionsEnabled: true`, + `AnonUserParcelClicks: 15`, `AnonUserSessionTimeSec: 900` — these are **UI-side** limits, + not server-enforced on the REST endpoints we probed. +- **Tile server = Tegola** (`Tegola-Cache: HIT`), `maxzoom: 15`, CORS `Vary: Origin`. + +--- + +## 2. Live source capability inventory + +### 2.1 Hosts + +| Host | Role | +|------|------| +| `www.suhail.ai` | React/Vite SPA. Routes: `/:Region/metrics`, `/:Region/parcel/:parcelObjectId`, `/parcel/:id`, `/map`, `/mobile-metrics`, `/offer/:offerCode` | +| `api2.suhail.ai` | Primary JSON API (axios base `https://api2.suhail.ai/`) | +| `tiles.suhail.ai` | MVT vector tiles, `gl-styles/ksa.json`, `modes/`, raster overlays | +| `reports.suhail.ai` | PDF reports: `/api/report/Parcel`, `/api/report/Order` | +| `beacon.suhail.ai` | Strapi CMS (news feed, mega-project content, GPTV form) | + +### 2.2 REST API surface (from JS bundle + live probes) + +Method is GET unless noted. Status column = observed against live probe. + +| Endpoint (relative to `api2.suhail.ai/`) | Params | Purpose | Status | Captured by repo? | +|---|---|---|---|---| +| `regions` | – | 13 regions, nested provinces, centroids, bbox, `mapStyleUrl`, `mapKey`, `metricsUrl` | 200 | Partial — `scripts/util/sync_provinces.py` reads a subset | +| `settings/app` | – | anon limits, transaction filter types, map bounds, unit-status colours, report URLs, `realEstateTaxPercentage`, Nafath flag | 200 | **No** | +| `parcel/{parcelObjectId}` | path | **Consolidated** parcel detail incl. geometry + centroid + dimensionsCount | 200 | **No** (new) | +| `transactions?parcelObjectId=` | parcel | Per-parcel transaction records (39 fields) | 200 | Yes (5 fields + raw) | +| `consolidatedTransactions` | `parcelObjectId, regionId, LookbackValue, LookbackType, fromPrice, toPrice, type` | Filtered per-parcel transactions | 200 | **No** (new) | +| `transactionsAsMapboxGeojson` | `RegionId, LookbackValue, LookbackType, NewDaysThreshold, fromPrice, toPrice, type` | Region-wide transaction points as GeoJSON (2728 features for Riyadh/1mo) | 200 | **No** (new) | +| `transactions/neighbourhood?neighborhoodId=` | nbhd | Paginated neighbourhood transactions | 200 | **No** (new) | +| `parcel/buildingRules?parcelObjectId=` | parcel | Zoning/building rules (16 fields incl. setbacks) | 200 | Yes (fully) | +| `api/parcel/metrics/priceOfMeter?parcelObjsIds=&groupingType=Monthly` | parcels | Per-parcel monthly price metrics (neighbourhood-derived) | 200 | Yes (partial — drops `neighborhoodId`) | +| `api/mapMetrics/landMetrics?neighborhoodId=&growthRateType=` | nbhd | Neighbourhood market metrics + growth indicators, per land-use group | 200 | **No** (util-only, not persisted) | +| `api/mapMetrics/landMetrics/list?regionId=&offset=&limit=` | region, page | **Province-wide** paginated neighbourhood metrics (totals, medians, growth, last-execution price per land-use group) | 200 | **No** (new) | +| `api/parcel/landZoningGroups` | – | Zoning-group lookup with national usage counts | 200 | **No** (new) | +| `api/parcel/search` | query | Parcel search | 400 w/o valid query | **No** (new) | +| `api/parcel/shareLink?parcelObjectId=` | parcel | Share link | – | **No** | +| `api/bookmark`, `Bookmark`, `Badges/*`, `oauth/*`, `accounts/*`, `complaints`, `events/log`, `api/attachments`, `api/StrapiContent/*`, `api/MegaProjects/project/content` | – | User/account/CMS features | – | N/A (out of scope for ingestion) | + +### 2.3 Tile map style (`gl-styles/ksa.json`) + +- 13 per-region vector tile sources: `tiles.suhail.ai/maps/{riyadh,madinah,qassim,asir,eastern,makkah,bahah,hail,jawf,jazan,najran,northern_borders,tabuk}/{z}/{x}/{y}.vector.pbf` plus an all-KSA `maps/ksa/...` source, each `maxzoom: 15` with a `bounds` array. +- Suhail-specific **source-layers** referenced by the style (excludes Mapbox base layers): + `parcels`, `parcels-centroids`, `neighborhoods`, `neighborhoods-centroids`, `subdivisions`, + `provinces`, `provinces-centroids`, `dimensions`, `streets`, `building_detection`, + `non_saudi_ownership_zones`, `mega_projects`, `sb_shape`, `sb_area`, `qi_population_metrics`, + `metro_lines`, `bus_lines`, `metro_stations`, `riyadh_bus_stations`, `regions`. +- New raster overlays: per-region base rasters on Huawei OBS (`qeye-tiles-prod.obs.me-east-1.myhuaweicloud.com`) + and named development-project rasters (`tiles.suhail.ai/tiles/{watheer,rakiz,osus,...}`). +- Map coloring modes (`tiles/modes/`): `zoning_color` (by `zoning_id`), `shape_area`, + `price_of_meter`, `transaction_price`, `plain` — confirms these are the live-styled parcel fields. + +### 2.4 Live MVT tile — decoded layers & fields (ground truth) + +Decoded from `riyadh/15/20636/14069` (downtown) and `.../20640/14060` (residential). 17 layers present: + +**`parcels`** (3083 feats, Polygon) — the headline change. Fields: +`parcel_id, parcel_objectid, neighborhaname, neighborhood_id, province_id, municipality_aname, +block_no, subdivision_id, subdivision_no, shape_area, zoning_id, zoning_color, ruleid, +zoning_group, transaction_price, price_of_meter, +transaction_price_1w/1m/6m/12m, price_of_meter_1w/1m/6m/12m, +transactions_count_1w/1m/6m/12m, transaction_date_1w/1m/6m/12m, +landuseadetailed, landuseagroup, parcel_no`. + +**`parcels-base`** (3083, Polygon) — identical field set to `parcels` (base/unstyled copy). + +**`parcels-centroids`** (3081, Point) — now carries the same time-series block plus +`transactions_count`, `transaction_date`. + +**`neighborhoods`** (Polygon/MultiPolygon) — adds `neighborh_aname, zoning_group` and the +full 1w/1m/6m/12m time-series (`transactions_count_*` are strings here). + +**`subdivisions`** — adds `subdivision_name_ar, neighborhood_id, region_id` and time-series. + +**`neighborhoods-centroids`** (Point) — now only `neighborh_aname, province_id`. + +**`provinces`** (Polygon) — NEW: `province_aname, province_enname, region_id, province_code`. + +**`dimensions`** (13773, Point) — NEW: `parcel_objectid, length_m, province_id, azimuth` +(per-edge parcel dimensions / setbacks). + +**`streets`** (290, LineString) — NEW: `width, name_ar, name_en`. + +**`metro_lines`** (LineString) — `track_name, track_color, track_length`. + +**`bus_lines`** (LineString) — `color, type, busroute, origin, originar`. + +**`metro_stations`** (Point) — `station_code, station_name, station_long, station_lat`. + +**`riyadh_bus_stations`** (Point) — `station_name, station_code, station_long, station_lat`. + +**`qi_population_metrics`** (Polygon) — now `grid_id, population_density, rent_apartment, +rent_villa, rent_shop, rent_office, purchasing_power, weighted_median_income_monthly, +poi_count, region_id` — **values are hex colour strings**, not raw numbers. + +**`qi_stripes`** (Polygon) — now `strip_id, centroid_longitude, centroid_latitude`. + +**`building_detection`** (3082, Polygon) — NEW: `class_pred, prediction_year, region_id` +(AI-detected building footprints). + +**`non_saudi_ownership_zones`** (Polygon) — NEW: `id, region_id, province_id, is_show, +name_ar, name_en` (foreign-ownership / special-zone polygons). + +### 2.5 Key REST payload shapes (captured) + +- **`transactions` record (39 fields)**: `transactionNumber, transactionPrice, priceOfMeter, + _priceOfMeter, transactionDate, type, propertyType, metricsType, subdivisionNo, subdivisionId, + neighborhood, neighborhoodId, region, regionId, provinceId, provinceName, parcelId, + parcelObjectId, parcelNo, blockNo, area, totalArea, noOfProperties, centroidX, centroidY, + centroid, polygonData (WKT-ish GeoJSON string), geometry, landUsageGroup, landUseGroup, + landUseaDetailed, sellingType, transactionSource, isLowValueTransaction, orignalTransactionNum, + propertyNumber, projectName, parcelImageURL, details`. The top-level `data` object also + carries `lastExecutionDate`, `lastExecutionPrice`. +- **`buildingRules` (16 fields)**: `id, zoningId, zoningColor, zoningGroup, landuse, description, + name, coloring, coloringDescription, maxBuildingCoefficient, maxBuildingHeight, + maxParcelCoverage, maxRuleDepth, mainStreetsSetback, secondaryStreetsSetback, sideRearSetback`. +- **`priceOfMeter`**: `data[].{parcelObjId, neighborhoodId, from, to, groupingType, + neighborhoodMetrics[], parcelMetrics[]}` where each metric = `{neighborhoodId, month, year, + metricsType, avaragePriceOfMeter}` (API misspells "average"). +- **`landMetrics/list`**: `data[].{neighborhoodId, neighborhoodName, provinceId, provinceName, + totalMetricData{totalCount, totalPrice, median, *GrowthIndicator, *GrowthValue}, landUseGroup[] + {landUseGroup, totalCount, totalPrice, median, lastExecutionPrice{transactionDate, priceOfMeter}}}`. + +--- + +## 3. Forensic audit of the existing implementation + +Pipeline traced end-to-end: discovery (`discovery/tile_discovery.py`, `tile_urls` queue) → +request (`downloader/async_tile_downloader.py`, `run_db_geometric.fetch_many`) → decode +(`decoder/mvt_decoder.py`) → validate/stitch (`geometry/`) → schema-filter +(`SCHEMA_MAP` in `persistence/postgis_persister.py`) → persist (`PostGISPersister`, +`models.py`, Alembic) → enrichment (`enrichment/api_client.py`, `enrichment_persister.py`, +`strategies.py`). + +Classification per live capability: + +| Capability | Status | Evidence | +|---|---|---| +| Tile discovery / `tile_urls` queue | **Fully captured** — still valid; URL shape `maps/{region}/{z}/{x}/{y}.vector.pbf` unchanged | `gl-styles/ksa.json` sources match `config.tile_base_url`; live tiles 200 | +| Parcels geometry + core attributes | **Fully captured** | 16 core parcel fields in `SCHEMA_MAP['parcels']` match tile | +| Parcels **inline market time-series** (16 fields) + `zoning_group` | **Available from source but not captured** | tile has `transaction_price_1w/1m/6m/12m`, `price_of_meter_*`, `transactions_count_*`, `transaction_date_*`, `zoning_group`; none in `SCHEMA_MAP` → filtered out at `pipeline_orchestrator.py:298` / `run_db_geometric.py:90` | +| Parcels `neighborhood_ar`, `municipality_ar` | **Captured but discarded / mis-mapped** | tile field `neighborhaname`→`neighborhood_ar` exists but `neighborhood_ar` not in `SCHEMA_MAP['parcels']`; `municipality_aname` has no `ARABIC_COLUMN_MAP` entry so `municipality_ar` stays NULL | +| parcels-centroids market data | **Partially captured** | only `transaction_date/price/price_of_meter` kept; time-series + `transactions_count` dropped | +| neighborhoods / subdivisions market data | **Partially captured** | time-series, `zoning_group`, `subdivision_name_ar`, `neighborhood_id`, `region_id` dropped | +| `bus_lines` | **No longer compatible — ZERO fields captured** | tile fields `color,type,busroute,origin,originar`; `SCHEMA_MAP['bus_lines']` expects `route_name,route_color,route_length,route_type,route_id`; `models.BusLines` has yet a third set (`busroute,route_name,route_type`). Nothing matches → only geometry+null id stored | +| `metro_stations` / `riyadh_bus_stations` | **Partially captured / mis-mapped** | tile has `station_long,station_lat`; schema expects `location,line_id/route_id` → those columns NULL | +| `qi_population_metrics` | **Captured but incorrectly interpreted** | schema expects a numeric `population`; tile now emits 9 colour-coded metric fields (`population_density`, `rent_*`, `purchasing_power`, `weighted_median_income_monthly`, `poi_count`). Only `grid_id` survives; `population` always NULL | +| `qi_stripes` | **No longer compatible / likely obsolete** | schema expects `stripe_value,stripe_type`; tile has `centroid_longitude,centroid_latitude`; layer absent from `gl-styles` (not rendered) | +| `dimensions` layer | **Available from source but not captured** | present in `id_column_per_layer` but absent from `layers_to_process`, `table_name_mapping`, `SCHEMA_MAP`, `models` — 13773 features/tile dropped | +| `streets`, `provinces`(tile), `building_detection`, `non_saudi_ownership_zones`, `parcels-base` | **Available from source but not captured** | new tile layers, no schema/model/table | +| Enrichment: transactions | **Partially captured** | only `transaction_id, transaction_price, price_of_meter, transaction_date, area` + `raw_data`; drops `type/propertyType, metricsType, landUseGroup, sellingType, transactionSource, totalArea, subdivisionId, neighborhoodId, polygonData(geometry)` from queryable columns | +| Enrichment: building rules | **Captured but silently reduced** | `enrichment_persister.py:53` dedupes to **one rule per parcel** (`{parcel_objectid: rule}`) despite composite PK `(parcel_objectid, building_rule_id)` — extra rules dropped | +| Enrichment: price metrics `neighborhood_id` | **Captured but discarded** | `api_client.py:244-266` never sets `neighborhood_id` though every metric object contains `neighborhoodId`; column left NULL | +| Enrichment upserts | **Captured but never refreshed** | all conflict handling is `ON CONFLICT DO NOTHING` (`enrichment_persister.py`), so changed transaction/rule/metric values never update on re-run | +| `regions` endpoint richness | **Partially captured** | `sync_provinces.py` reads a subset; `mapKey`, `metricsUrl`, `defaultTransactionsDateRange`, per-region bounds not persisted | +| Provenance (source tile z/x/y, fetch time, per-feature) | **Missing** | no per-row source coordinates or fetch timestamp; `geometry_hash` column defined but never computed in Stage-1 | +| `landMetrics` neighbourhood market intelligence | **Available from source but not captured** | `enhanced_province_discovery.py` fetches `landMetrics` but no persister consumes it | +| Auth / API-key / adaptive rate-limit (docs claim) | **Redundant / aspirational** | `docs/brownfield-architecture.md` claims API-key auth + adaptive rate limiting; code sends no key and has no enrichment rate limiter | + +--- + +## 4. Gap analysis (evidence-indexed) + +Precise per-layer field comparison (live tile field, snake_cased + Arabic-mapped, vs +`SCHEMA_MAP`) is reproduced in §2.4. The material gaps, ranked: + +1. **Parcels inline market time-series (16 fields) + `zoning_group` are dropped.** This is + the single biggest miss: the tile now delivers, for free, the same signal the enrichment + pipeline pays per-parcel API calls to approximate. Evidence: decoded tile vs `SCHEMA_MAP['parcels']`. +2. **`bus_lines` captures zero attributes** — three-way name mismatch (tile vs `SCHEMA_MAP` vs `models`). +3. **`qi_population_metrics` semantics changed** — `population` column stays NULL; 9 new metric fields dropped. +4. **Five new tile layers unmodelled**: `dimensions` (13773/tile), `building_detection` (3082/tile), + `streets`, `provinces`, `non_saudi_ownership_zones`; plus `parcels-base` duplicate. +5. **Transaction enrichment discards queryable market attributes** (type, land-use, selling + type, source, areas, subdivision/neighbourhood ids, transaction geometry). +6. **Building-rules dedup bug** collapses multiple rules per parcel to one. +7. **Price-metrics `neighborhood_id` never persisted.** +8. **Mis-mapped Arabic fields** (`municipality_ar`, parcels `neighborhood_ar`). +9. **No per-feature provenance** (source tile, fetch time) and `geometry_hash` never computed. +10. **New high-value endpoints unused**: consolidated `parcel/{id}`, `landMetrics/list` + (province-wide neighbourhood market data), `landZoningGroups`, `transactionsAsMapboxGeojson`. +11. **`ON CONFLICT DO NOTHING`** everywhere in enrichment → no refresh of changed values. +12. **gzip fragility** in any non-aiohttp read path. + +--- + +## 5. Architectural & platform improvements (recommended) + +Prefer general ingestion strengthening over more one-off Suhail hacks: + +- **Single source-of-truth layer schema.** `SCHEMA_MAP` (persister), `models.py`, + `id_column_per_layer`/`aggregation_rules`/`table_name_mapping` (config) and the migrations + have drifted (e.g. `bus_lines` differs in all three). Collapse to one declarative + per-layer spec (fields, types, pk, arabic map, geometry type) that generates the schema + map, the aggregation columns and the DDL, so drift is impossible. +- **Schema-drift detection.** A CI/ops check that decodes a live sample tile and diffs its + field set against the declared spec; fail/alert on unknown or missing fields. Would have + caught all of §4 automatically. +- **Raw capture / replay + contract tests.** Persist a small set of real gzipped tiles and + REST payloads as fixtures (done — `tests/fixtures/suhail_live_2026_07/`) and run the + decoders/parsers against them in CI. There were previously **no** fixture-replay tests for + the API client or decoder field mapping. +- **Provenance & lineage.** Add per-feature `source_tile_z/x/y`, `source_region`, `fetched_at`, + and compute `geometry_hash`, so a row can be traced to the tile and run that produced it and + change-detection becomes deterministic. +- **Direct structured requests over UI assumptions.** The consolidated `parcel/{id}` and the + `landMetrics/list` pagination let us pull neighbourhood market intelligence province-wide + without per-parcel fan-out; prefer these to the sparse per-parcel `transactions`/`buildingRules`. +- **Idempotent upserts.** Replace enrichment `DO NOTHING` with `DO UPDATE` (or a + content-hash guard) so re-runs refresh changed values; today they cannot. +- **Consistent transport policy.** Unify retry/backoff/timeout across the three enrichment + fetchers (transactions uses decorator backoff+jitter; rules/metrics use a hand-rolled fixed + 1s loop with no timeout), add explicit 429 handling, and make gzip handling explicit. +- **Dead code / obsolete paths.** `run_db_geometric_fixed.py` duplicates `run_db_geometric.py`; + `qi_stripes` is no longer in the live style; `parcels-base` is a duplicate of `parcels`. + Decide keep/drop deliberately. + +--- + +## 6. Implemented in this pass + +Scope chosen by **evidence strength × value ÷ risk**. All changes are additive or +correctness fixes; nothing removes existing behaviour. + +### Stage 1 (geometric) +- **Parcels inline market time-series captured** — `SCHEMA_MAP['parcels']`, aggregation + rules, `Parcel` model and migration now include `transaction_price_{1w,1m,6m,12m}`, + `price_of_meter_{…}`, `transactions_count_{…}`, `transaction_date_{…}`, plus `zoning_group` + and `neighborhood_ar`. Same time-series added to `parcels-centroids`, `neighborhoods`, + `subdivisions` (+ `subdivision_name_ar`, `neighborhood_id`, `region_id`). +- **`municipality_ar` mapping fixed** — added `municipality_aname → municipality_ar` to + `ARABIC_COLUMN_MAP` (was always NULL). +- **Broken layers remapped** — `bus_lines` (native `busroute/color/type/origin/originar`, + was capturing zero attributes), `metro_stations` / `riyadh_bus_stations` + (`station_long/station_lat`), `qi_population_metrics` (reshaped colour-coded metric + fields + `region_id`), `qi_stripes` (`centroid_longitude/latitude`). +- **New layer wired in** — `non_saudi_ownership_zones` (unique `id` PK → clean upsert): + `layers_to_process`, `table_name_mapping`, `id_column_per_layer`, `SCHEMA_MAP`, + `NonSaudiOwnershipZones` model, new table in the migration. +- **New keyless layers wired in with two accumulate write modes** (added after the first + pass — these previously could not be persisted across a multi-tile province run because the + keyless branch used per-batch `if_exists="replace"`, keeping only the last batch): + - **`dimensions`** (per-parcel edge measurements: `length_m`, `azimuth`; ~4–6 rows/parcel) → + **tile-scoped delete+append** (`TILE_SCOPED_LAYERS`, `PostGISPersister.write_tile_scoped`). + A `source_tile` provenance column records the originating tile; each batch deletes exactly + its own tiles' rows then appends, so multi-tile runs accumulate and reruns are idempotent. + Deliberately **not** keyed on `parcel_objectid` (that would collapse every parcel to one edge). + - **`building_detection`** (AI footprints, year-stamped) → **deterministic synthetic key** + (`SYNTHETIC_PK_CONFIG`, `compute_synthetic_pk`: SHA1 of `region_id|class_pred|prediction_year` + + geometry → `bd_id`), reusing the existing upsert path. Idempotent, versions by prediction + year, and dedupes tile-overlap duplicates for free. + - Both stamped in the shared `decode_and_validate_tile` choke point, so both persist paths + inherit them. Migration `d8b1e6f42a90` creates the two tables (indexed on `source_tile`). +- **Still deferred** — `streets` (keyless lines, same pattern available if wanted). Tile + `provinces` intentionally omitted (collides with the metadata table). + +### Stage 2 (enrichment) +- **Transactions enriched** — promoted `type, propertyType, metricsType, landUseGroup, + landUseaDetailed, sellingType, transactionSource, totalArea, subdivisionId, neighborhoodId, + isLowValueTransaction` from `raw_data` into queryable columns (model + migration + parser + + persister). +- **Building-rules dedup bug fixed** — persister now keys on `(parcel_objectid, + building_rule_id)`, not `parcel_objectid` alone (previously discarded all but one rule). +- **Price-metrics `neighborhood_id` now captured** (was always NULL), with neighborhood + **stub insertion** added to `fast_store_batch_data` so populating the FK column cannot abort + a batch when the neighborhood row is absent. +- **Transport/parse separation** — the three parsers are now pure functions + (`parse_transactions_payload`, `parse_building_rules_payload`, `parse_price_metrics_payload`) + callable without HTTP, enabling fixture-backed contract tests. + +### Tests, fixtures, migration +- Live payloads committed as regression fixtures under + `tests/fixtures/suhail_live_2026_07/` (tiles + API JSON). +- `tests/unit/test_live_tile_schema.py` (decode real tiles → assert new fields survive the + schema filter) and `tests/unit/test_enrichment_parsers_contract.py` (parse real API + payloads → assert promoted fields, multi-rule survival, neighborhood_id). 11 new tests; + full unit suite 88 passed. +- Alembic migration `c7f4a9d21b60_suhail_2026_source_expansion` (idempotent `ADD COLUMN IF + NOT EXISTS`, new table, reversible — verified downgrade/upgrade round-trip). + +### Deliberately not done (recommended next, with rationale) +- New endpoints as ingest sources (`landMetrics/list` province-wide neighbourhood market + intelligence; consolidated `parcel/{id}`; `landZoningGroups` lookup) — high value, but new + persisters/tables beyond this pass's tested scope. +- `streets` — keyless line layer, still deferred (the tile-scoped write mode built for + `dimensions` applies directly if wanted). `dimensions` and `building_detection` are now done + (see §6 above). +- Replace enrichment `ON CONFLICT DO NOTHING` with `DO UPDATE` for true refresh-on-rerun. +- Per-feature provenance (`source_tile_z/x/y`, `fetched_at`) and `geometry_hash` computation. +- Collapse the drifting layer-schema definitions (`SCHEMA_MAP` / models / config) into one + declarative spec + a schema-drift CI check. + +## 7. End-to-end validation results (live, 2026-07-15) + +Validated against the **live** `tiles.suhail.ai` / `api2.suhail.ai` and the local +`suhail_pipeline` PostgreSQL 18 database, through the real pipeline modules. + +**Stage 1** (`fetch_many → decode_and_validate_tile → _apply_arabic_and_columns → +PostGISPersister.write` upsert into schema-identical tables): +- 4/4 live tiles fetched and decoded (7,542 parcels). +- New columns populated: `zoning_group` 7,438; `neighborhood_ar` 7,541; `municipality_ar` + 7,542; `transaction_price_12m` 7,542; `transactions_count_12m>0` 71; `transaction_date_12m` 71. +- **Idempotent**: rerun left row count and values unchanged (7,542 → 7,542). +- **Source-vs-persisted cross-check**: parcel `9941681` persisted + `price_of_meter=6393.18`, `transaction_date_12m=2026-05-19`, `transactions_count_12m=6`, + `zoning_group=سكني`, `neighborhood_ar=الروضة` — matches the live `/transactions` API + (`lastExecutionPrice=6393.0`, 6 transactions). +- Fixed layers captured live: `bus_lines` 24 rows with `busroute` (was zero), + `metro_stations` 3 with coordinates, `qi_population_metrics` 87 with metric fields, + `non_saudi_ownership_zones` 1 with `name_en`. + +**Stage 2** (live `SuhailAPIClient` → real `fast_store_batch_data`): +- Live fetch for parcel `9941681`: 6 transactions, 1 building rule, 83 metrics. +- Persisted transaction row carried every promoted column + (`transaction_type=مبنى سكني, metrics_type=فلل, land_use_group=سكني, selling_type=فردي, + transaction_source=RER, total_area=187.7, subdivision_id=1023186, neighborhood_id=1000417, + is_low_value_transaction=False`). +- All 80 persisted metrics carried `neighborhood_id` (previously always NULL); neighborhood + stub insertion prevented an FK-violation batch abort. + +**New keyless layers** (live tiles → real persister write modes → dedicated tables): +- `dimensions` (tile-scoped): batch A 18,447 rows → batch B **accumulated** to 30,869 + (= A + B; the old `replace` would have kept only B's 12,422). Reprocessing batch A left the + count unchanged (idempotent). A parcel retained all 23 of its edges — not collapsed. +- `building_detection` (synthetic key): batch A 4,286 → A∪B 7,541 distinct predictions, + idempotent on rerun; rows carry `bd_id`, `class_pred`, `prediction_year`, `source_tile`. + +All temporary validation tables/rows were cleaned up; the database was left in its prior +state (enrichment tables empty, no seeded rows). Migrations `c7f4a9d21b60` and `d8b1e6f42a90` +both round-trip (downgrade/upgrade verified). Full unit suite: **93 passed**. diff --git a/src/meshic_pipeline/__main__.py b/src/meshic_pipeline/__main__.py deleted file mode 100644 index c523732..0000000 --- a/src/meshic_pipeline/__main__.py +++ /dev/null @@ -1,6 +0,0 @@ -"""Allow: python -m meshic_pipeline db-geometric ... (uses active env's installed package).""" - -from meshic_pipeline.cli import app - -if __name__ == "__main__": - app() diff --git a/src/meshic_pipeline/__init__.py b/src/suhail_pipeline/__init__.py similarity index 100% rename from src/meshic_pipeline/__init__.py rename to src/suhail_pipeline/__init__.py diff --git a/src/suhail_pipeline/__main__.py b/src/suhail_pipeline/__main__.py new file mode 100644 index 0000000..c52b4ad --- /dev/null +++ b/src/suhail_pipeline/__main__.py @@ -0,0 +1,6 @@ +"""Allow: python -m suhail_pipeline db-geometric ... (uses active env's installed package).""" + +from suhail_pipeline.cli import app + +if __name__ == "__main__": + app() diff --git a/src/meshic_pipeline/cli.py b/src/suhail_pipeline/cli.py similarity index 98% rename from src/meshic_pipeline/cli.py rename to src/suhail_pipeline/cli.py index 33573bf..e796116 100644 --- a/src/meshic_pipeline/cli.py +++ b/src/suhail_pipeline/cli.py @@ -3,7 +3,7 @@ import sys from typing import List, Optional, Tuple from pathlib import Path -from meshic_pipeline import run_enrichment_pipeline +from suhail_pipeline import run_enrichment_pipeline # Determine the directory containing this CLI file SCRIPT_DIR = Path(__file__).parent @@ -182,12 +182,12 @@ def seed_tiles( Use --limit and/or --stride to seed a small pilot sample. """ - from meshic_pipeline.config import settings - from meshic_pipeline.utils.tile_list_generator import tiles_from_bbox_z - from meshic_pipeline.persistence.db import get_db_engine + from suhail_pipeline.config import settings + from suhail_pipeline.utils.tile_list_generator import tiles_from_bbox_z + from suhail_pipeline.persistence.db import get_db_engine from sqlalchemy.orm import Session from sqlalchemy.dialects.postgresql import insert as pg_insert - from meshic_pipeline.persistence.models import TileURL + from suhail_pipeline.persistence.models import TileURL engine = get_db_engine(str(settings.database_url)) session = Session(engine) diff --git a/src/meshic_pipeline/config.py b/src/suhail_pipeline/config.py similarity index 81% rename from src/meshic_pipeline/config.py rename to src/suhail_pipeline/config.py index d2c31e6..03444f8 100644 --- a/src/meshic_pipeline/config.py +++ b/src/suhail_pipeline/config.py @@ -8,7 +8,7 @@ from pydantic import Field, PostgresDsn, PrivateAttr, model_validator from pydantic_settings import BaseSettings, SettingsConfigDict -from meshic_pipeline.persistence.db import load_provinces_from_db +from suhail_pipeline.persistence.db import load_provinces_from_db # Define project root independently # Resolves to the parent directory of 'src', which is the project's root. @@ -30,9 +30,32 @@ "building_rule_aname": "building_rule_ar", "description_aname": "description_ar", "name_aname": "name_ar", + # Municipality name on the parcels layer (source field: municipality_aname). + # Without this entry municipality_ar was always NULL. + "municipalityaname": "municipality_ar", + "municipality_aname": "municipality_ar", + # Subdivision Arabic name now emitted on the subdivisions layer. + "subdivision_name_ar": "subdivision_name_ar", # Add any other discovered or future Arabic columns here } +# Time-series market fields now emitted inline on parcels/neighborhoods/subdivisions +# tile layers. Mapped to 'first' so they survive the PostGIS dissolve/stitch step. +_MARKET_TIMESERIES_FIRST = { + field: "first" + for field in ( + "transaction_price_1w", "transaction_price_1m", + "transaction_price_6m", "transaction_price_12m", + "price_of_meter_1w", "price_of_meter_1m", + "price_of_meter_6m", "price_of_meter_12m", + "transactions_count_1w", "transactions_count_1m", + "transactions_count_6m", "transactions_count_12m", + "transaction_date_1w", "transaction_date_1m", + "transaction_date_6m", "transaction_date_12m", + ) +} + + class Environment(str, Enum): """Environment types for configuration management.""" DEVELOPMENT = "development" @@ -184,11 +207,16 @@ class Settings(BaseSettings): "subdivisions": "subdivision_id", "neighborhoods": "neighborhood_id", "neighborhoods-centroids": "id", - "dimensions": "parcel_objectid", + # NB: `dimensions` is intentionally NOT keyed here — it has many rows per + # parcel (one per edge), so keying on parcel_objectid would collapse it to + # one edge. It uses the tile-scoped write (postgis_persister.TILE_SCOPED_LAYERS). "metro_stations": "station_code", "riyadh_bus_stations": "station_code", "qi_population_metrics": "grid_id", "qi_stripes": "strip_id", + "non_saudi_ownership_zones": "id", + # Synthetic deterministic key (postgis_persister.SYNTHETIC_PK_CONFIG). + "building_detection": "bd_id", }, description="Column to use as the unique ID for dissolving geometries, per layer. Only tables with unique constraints should be listed here.", ) @@ -198,37 +226,56 @@ class Settings(BaseSettings): "parcels": { "shape_area": "first", "transaction_price": "first", - "price_of_meter": "first", + "price_of_meter": "first", "landuseagroup": "first", + "landuseadetailed": "first", "zoning_id": "first", + "zoning_group": "first", "subdivision_id": "first", + "neighborhood_id": "first", "neighborhood_ar": "first", + "municipality_ar": "first", + "province_id": "first", + "block_no": "first", + "parcel_id": "first", "parcel_no": "first", "subdivision_no": "first", - "zoning_color": "first" + "zoning_color": "first", + "ruleid": "first", + **_MARKET_TIMESERIES_FIRST, }, "parcels-centroids": { "transaction_date": "first", - "transaction_price": "first", - "price_of_meter": "first" + "transaction_price": "first", + "price_of_meter": "first", + "transactions_count": "first", + **_MARKET_TIMESERIES_FIRST, }, "neighborhoods": { "shape_area": "first", "region_id": "first", - "province_id": "first", + "province_id": "first", "zoning_id": "first", "zoning_color": "first", + "zoning_group": "first", "neighborhood_ar": "first", + "neighborhood_name": "first", "transaction_price": "first", - "price_of_meter": "first" + "price_of_meter": "first", + **_MARKET_TIMESERIES_FIRST, }, "subdivisions": { "shape_area": "first", "subdivision_no": "first", + "subdivision_name_ar": "first", + "neighborhood_id": "first", + "region_id": "first", + "province_id": "first", "zoning_id": "first", "zoning_color": "first", "transaction_price": "first", - "price_of_meter": "first" + "price_of_meter": "first", + **_MARKET_TIMESERIES_FIRST, }, }, description="Attribute aggregation rules for GeoPandas dissolve, per layer.", @@ -247,6 +294,11 @@ class Settings(BaseSettings): "riyadh_bus_stations": "riyadh_bus_stations", "qi_population_metrics": "qi_population_metrics", "qi_stripes": "qi_stripes", + "non_saudi_ownership_zones": "non_saudi_ownership_zones", + # Documented-but-not-yet-enabled new layers map to their own tables: + "dimensions": "dimensions", + "streets": "streets", + "building_detection": "building_detection", }, description="Mapping from layer name to the desired PostGIS table name.", ) @@ -268,6 +320,9 @@ class Settings(BaseSettings): "riyadh_bus_stations", "qi_population_metrics", "qi_stripes", + "non_saudi_ownership_zones", + "dimensions", + "building_detection", ], description="A list of all layer names to be processed by the pipeline.", ) diff --git a/src/meshic_pipeline/decoder/mvt_decoder.py b/src/suhail_pipeline/decoder/mvt_decoder.py similarity index 100% rename from src/meshic_pipeline/decoder/mvt_decoder.py rename to src/suhail_pipeline/decoder/mvt_decoder.py diff --git a/src/meshic_pipeline/discovery/tile_discovery.py b/src/suhail_pipeline/discovery/tile_discovery.py similarity index 98% rename from src/meshic_pipeline/discovery/tile_discovery.py rename to src/suhail_pipeline/discovery/tile_discovery.py index e8fd71e..193c969 100644 --- a/src/meshic_pipeline/discovery/tile_discovery.py +++ b/src/suhail_pipeline/discovery/tile_discovery.py @@ -14,8 +14,8 @@ import re from sqlalchemy.orm import Session from sqlalchemy.dialects.postgresql import insert as pg_insert -from meshic_pipeline.persistence.db import get_db_engine -from meshic_pipeline.persistence.models import TileURL, Province +from suhail_pipeline.persistence.db import get_db_engine +from suhail_pipeline.persistence.models import TileURL, Province from shapely import wkb Z15_OUTPUT_PATH = 'data_raw/validation_reports/Z15_tiles.json' diff --git a/src/meshic_pipeline/downloader/async_tile_downloader.py b/src/suhail_pipeline/downloader/async_tile_downloader.py similarity index 100% rename from src/meshic_pipeline/downloader/async_tile_downloader.py rename to src/suhail_pipeline/downloader/async_tile_downloader.py diff --git a/src/meshic_pipeline/enrichment/__init__.py b/src/suhail_pipeline/enrichment/__init__.py similarity index 100% rename from src/meshic_pipeline/enrichment/__init__.py rename to src/suhail_pipeline/enrichment/__init__.py diff --git a/src/meshic_pipeline/enrichment/api_client.py b/src/suhail_pipeline/enrichment/api_client.py similarity index 53% rename from src/meshic_pipeline/enrichment/api_client.py rename to src/suhail_pipeline/enrichment/api_client.py index 0952a3f..16c0f5e 100644 --- a/src/meshic_pipeline/enrichment/api_client.py +++ b/src/suhail_pipeline/enrichment/api_client.py @@ -2,15 +2,15 @@ import asyncio from typing import List, Dict, Any -from meshic_pipeline.config import settings, ARABIC_COLUMN_MAP -from meshic_pipeline.exceptions import ( +from suhail_pipeline.config import settings, ARABIC_COLUMN_MAP +from suhail_pipeline.exceptions import ( ExternalAPIException, with_retry, RetryConfig, async_error_context, ) -from meshic_pipeline.logging_utils import get_logger, log_performance -from meshic_pipeline.persistence.models import ( +from suhail_pipeline.logging_utils import get_logger, log_performance +from suhail_pipeline.persistence.models import ( Transaction, BuildingRule, ParcelPriceMetric, @@ -20,6 +20,141 @@ logger = get_logger(__name__) +def _safe_int(value: Any) -> int | None: + """Best-effort int coercion for API fields that arrive as int/float/str.""" + if value is None or value == "": + return None + try: + return int(float(value)) + except (TypeError, ValueError): + return None + + +def _safe_float(value: Any) -> float | None: + """Best-effort float coercion for API fields that arrive as int/float/str.""" + if value is None or value == "": + return None + try: + return float(value) + except (TypeError, ValueError): + return None + + +def _parse_iso_date(value: Any): + """Parse an ISO date/datetime string, tolerating a trailing Z; None on failure.""" + if not value: + return None + try: + return datetime.fromisoformat(str(value).replace("Z", "+00:00")) + except ValueError: + return None + + +# --- Pure payload parsers (transport-free, unit-testable against fixtures) --- + +def parse_transactions_payload(data: Dict[str, Any], parcel_objectid) -> List[Transaction]: + """Parse a `/transactions?parcelObjectId=` payload into Transaction rows. + + Promotes materially-useful attributes out of raw_data into queryable columns + while preserving the full original object in ``raw_data``. + """ + if ( + not data + or not data.get("status") + or "data" not in data + or not data["data"].get("transactions") + ): + return [] + + out: List[Transaction] = [] + for tx_data in data["data"]["transactions"]: + out.append( + Transaction( + transaction_id=tx_data.get("transactionNumber"), + parcel_objectid=parcel_objectid, + transaction_price=tx_data.get("transactionPrice"), + price_of_meter=tx_data.get("priceOfMeter"), + transaction_date=_parse_iso_date(tx_data.get("transactionDate")), + area=tx_data.get("area"), + transaction_type=tx_data.get("type"), + property_type=tx_data.get("propertyType"), + metrics_type=tx_data.get("metricsType"), + land_use_group=tx_data.get("landUseGroup") + or tx_data.get("landUsageGroup"), + land_use_detailed=tx_data.get("landUseaDetailed"), + selling_type=tx_data.get("sellingType"), + transaction_source=tx_data.get("transactionSource"), + total_area=_safe_float(tx_data.get("totalArea")), + subdivision_id=_safe_int(tx_data.get("subdivisionId")), + neighborhood_id=_safe_int(tx_data.get("neighborhoodId")), + is_low_value_transaction=tx_data.get("isLowValueTransaction"), + raw_data=tx_data, + ) + ) + return out + + +def parse_building_rules_payload(data: Dict[str, Any], parcel_objectid) -> List[BuildingRule]: + """Parse a `/parcel/buildingRules?parcelObjectId=` payload into BuildingRule rows.""" + if not data or not data.get("status") or "data" not in data or not data["data"]: + return [] + + out: List[BuildingRule] = [] + for rule_data in data["data"]: + out.append( + BuildingRule( + parcel_objectid=parcel_objectid, + building_rule_id=rule_data.get("id"), + zoning_id=rule_data.get("zoningId"), + zoning_color=rule_data.get("zoningColor"), + zoning_group=rule_data.get("zoningGroup"), + landuse=rule_data.get("landuse"), + description=rule_data.get("description"), + name=rule_data.get("name"), + coloring=rule_data.get("coloring"), + coloring_description=rule_data.get("coloringDescription"), + max_building_coefficient=rule_data.get("maxBuildingCoefficient"), + max_building_height=rule_data.get("maxBuildingHeight"), + max_parcel_coverage=rule_data.get("maxParcelCoverage"), + max_rule_depth=rule_data.get("maxRuleDepth"), + main_streets_setback=rule_data.get("mainStreetsSetback"), + secondary_streets_setback=rule_data.get("secondaryStreetsSetback"), + side_rear_setback=rule_data.get("sideRearSetback"), + raw_data=rule_data, + ) + ) + return out + + +def parse_price_metrics_payload(data: Dict[str, Any]) -> List[ParcelPriceMetric]: + """Parse an `api/parcel/metrics/priceOfMeter` payload into ParcelPriceMetric rows. + + Captures ``neighborhoodId`` (previously always dropped) from the metric row, + falling back to the parcel-level id. + """ + if not data or not data.get("status") or "data" not in data: + return [] + + out: List[ParcelPriceMetric] = [] + for parcel_data in data["data"]: + pid = parcel_data.get("parcelObjId") + parcel_nbhd_id = _safe_int(parcel_data.get("neighborhoodId")) + for source in ("parcelMetrics", "neighborhoodMetrics"): + for metric_data in parcel_data.get(source, []): + out.append( + ParcelPriceMetric( + parcel_objectid=pid, + month=metric_data.get("month"), + year=metric_data.get("year"), + metrics_type=metric_data.get("metricsType"), + average_price_of_meter=metric_data.get("avaragePriceOfMeter"), + neighborhood_id=_safe_int(metric_data.get("neighborhoodId")) + or parcel_nbhd_id, + ) + ) + return out + + class SuhailAPIClient: def __init__(self, session: aiohttp.ClientSession): self.session = session @@ -86,33 +221,7 @@ async def fetch_transactions(self, parcel_objectid: str) -> List[Transaction]: logger.debug(f"No transactions found for parcel {parcel_objectid}") return [] - new_transactions = [] - for tx_data in data["data"]["transactions"]: - transaction_date = None - if tx_data.get("transactionDate"): - try: - transaction_date = datetime.fromisoformat( - tx_data.get("transactionDate").replace("Z", "+00:00") - ) - except ValueError as e: - logger.warning( - f"Failed to parse transaction_date: {tx_data.get('transactionDate')}", - context={ - "parcel_objectid": parcel_objectid, - "error": str(e), - }, - ) - - new_tx = Transaction( - transaction_id=tx_data.get("transactionNumber"), - parcel_objectid=parcel_objectid, - transaction_price=tx_data.get("transactionPrice"), - price_of_meter=tx_data.get("priceOfMeter"), - transaction_date=transaction_date, - area=tx_data.get("area"), - raw_data=tx_data, - ) - new_transactions.append(new_tx) + new_transactions = parse_transactions_payload(data, parcel_objectid) logger.debug( f"Fetched {len(new_transactions)} transactions for parcel {parcel_objectid}", @@ -156,46 +265,7 @@ async def fetch_building_rules(self, parcel_objectid: str) -> List[BuildingRule] response.raise_for_status() data = await response.json() - if ( - not data - or not data.get("status") - or "data" not in data - or not data["data"] - ): - return [] - - rules = [] - for rule_data in data["data"]: - new_rule = BuildingRule( - parcel_objectid=parcel_objectid, - building_rule_id=rule_data.get("id"), - zoning_id=rule_data.get("zoningId"), - zoning_color=rule_data.get("zoningColor"), - zoning_group=rule_data.get("zoningGroup"), - landuse=rule_data.get("landuse"), - description=rule_data.get("description"), - name=rule_data.get("name"), - coloring=rule_data.get("coloring"), - coloring_description=rule_data.get( - "coloringDescription" - ), - max_building_coefficient=rule_data.get( - "maxBuildingCoefficient" - ), - max_building_height=rule_data.get("maxBuildingHeight"), - max_parcel_coverage=rule_data.get("maxParcelCoverage"), - max_rule_depth=rule_data.get("maxRuleDepth"), - main_streets_setback=rule_data.get( - "mainStreetsSetback" - ), - secondary_streets_setback=rule_data.get( - "secondaryStreetsSetback" - ), - side_rear_setback=rule_data.get("sideRearSetback"), - raw_data=rule_data, - ) - rules.append(new_rule) - return rules + return parse_building_rules_payload(data, parcel_objectid) except aiohttp.ClientError as e: logger.warning( @@ -232,39 +302,7 @@ async def fetch_price_metrics( response.raise_for_status() data = await response.json() - if not data or not data.get("status") or "data" not in data: - return [] - - metrics = [] - for parcel_data in data["data"]: - pid = parcel_data.get("parcelObjId") - - # Process parcel-specific metrics (if available) - for metric_data in parcel_data.get("parcelMetrics", []): - new_metric = ParcelPriceMetric( - parcel_objectid=pid, - month=metric_data.get("month"), - year=metric_data.get("year"), - metrics_type=metric_data.get("metricsType"), - average_price_of_meter=metric_data.get( - "avaragePriceOfMeter" - ), - ) - metrics.append(new_metric) - - # Process neighborhood-based metrics (main data source) - for metric_data in parcel_data.get("neighborhoodMetrics", []): - new_metric = ParcelPriceMetric( - parcel_objectid=pid, - month=metric_data.get("month"), - year=metric_data.get("year"), - metrics_type=metric_data.get("metricsType"), - average_price_of_meter=metric_data.get( - "avaragePriceOfMeter" - ), - ) - metrics.append(new_metric) - return metrics + return parse_price_metrics_payload(data) except aiohttp.ClientError as e: logger.warning( diff --git a/src/meshic_pipeline/enrichment/metrics_only_processor.py b/src/suhail_pipeline/enrichment/metrics_only_processor.py similarity index 91% rename from src/meshic_pipeline/enrichment/metrics_only_processor.py rename to src/suhail_pipeline/enrichment/metrics_only_processor.py index ebf0c34..0b2489c 100644 --- a/src/meshic_pipeline/enrichment/metrics_only_processor.py +++ b/src/suhail_pipeline/enrichment/metrics_only_processor.py @@ -3,9 +3,9 @@ """ from typing import AsyncGenerator, List, Tuple -from meshic_pipeline.enrichment.api_client import SuhailAPIClient -from meshic_pipeline.persistence.models import Transaction, BuildingRule, ParcelPriceMetric -from meshic_pipeline.logging_utils import get_logger +from suhail_pipeline.enrichment.api_client import SuhailAPIClient +from suhail_pipeline.persistence.models import Transaction, BuildingRule, ParcelPriceMetric +from suhail_pipeline.logging_utils import get_logger import asyncio logger = get_logger(__name__) diff --git a/src/meshic_pipeline/enrichment/processor.py b/src/suhail_pipeline/enrichment/processor.py similarity index 91% rename from src/meshic_pipeline/enrichment/processor.py rename to src/suhail_pipeline/enrichment/processor.py index 675486d..318320a 100644 --- a/src/meshic_pipeline/enrichment/processor.py +++ b/src/suhail_pipeline/enrichment/processor.py @@ -2,14 +2,14 @@ import aiohttp from typing import List, AsyncGenerator, Tuple -from meshic_pipeline.enrichment.api_client import SuhailAPIClient -from meshic_pipeline.persistence.models import ( +from suhail_pipeline.enrichment.api_client import SuhailAPIClient +from suhail_pipeline.persistence.models import ( Transaction, BuildingRule, ParcelPriceMetric, ) -from meshic_pipeline.logging_utils import get_logger -from meshic_pipeline.persistence.db import get_async_db_engine +from suhail_pipeline.logging_utils import get_logger +from suhail_pipeline.persistence.db import get_async_db_engine from sqlalchemy.ext.asyncio import async_sessionmaker logger = get_logger(__name__) diff --git a/src/meshic_pipeline/enrichment/strategies.py b/src/suhail_pipeline/enrichment/strategies.py similarity index 99% rename from src/meshic_pipeline/enrichment/strategies.py rename to src/suhail_pipeline/enrichment/strategies.py index 416da16..4e57de9 100644 --- a/src/meshic_pipeline/enrichment/strategies.py +++ b/src/suhail_pipeline/enrichment/strategies.py @@ -5,7 +5,7 @@ from datetime import datetime, timedelta import re -from meshic_pipeline.logging_utils import get_logger +from suhail_pipeline.logging_utils import get_logger logger = get_logger(__name__) diff --git a/src/meshic_pipeline/exceptions.py b/src/suhail_pipeline/exceptions.py similarity index 100% rename from src/meshic_pipeline/exceptions.py rename to src/suhail_pipeline/exceptions.py diff --git a/src/meshic_pipeline/geometry/stitcher.py b/src/suhail_pipeline/geometry/stitcher.py similarity index 100% rename from src/meshic_pipeline/geometry/stitcher.py rename to src/suhail_pipeline/geometry/stitcher.py diff --git a/src/meshic_pipeline/geometry/validator.py b/src/suhail_pipeline/geometry/validator.py similarity index 100% rename from src/meshic_pipeline/geometry/validator.py rename to src/suhail_pipeline/geometry/validator.py diff --git a/src/meshic_pipeline/logging_utils.py b/src/suhail_pipeline/logging_utils.py similarity index 99% rename from src/meshic_pipeline/logging_utils.py rename to src/suhail_pipeline/logging_utils.py index a9046a2..16f9e1c 100644 --- a/src/meshic_pipeline/logging_utils.py +++ b/src/suhail_pipeline/logging_utils.py @@ -382,7 +382,7 @@ def setup_logging(force_reconfigure: bool = False) -> None: _setup_log_sampling() # Log the configuration setup (but only once) - logger = get_logger("meshic_pipeline.logging") + logger = get_logger("suhail_pipeline.logging") logger.info( "Optimized logging configured", context={ diff --git a/src/meshic_pipeline/memory_utils.py b/src/suhail_pipeline/memory_utils.py similarity index 100% rename from src/meshic_pipeline/memory_utils.py rename to src/suhail_pipeline/memory_utils.py diff --git a/src/meshic_pipeline/persistence/db.py b/src/suhail_pipeline/persistence/db.py similarity index 100% rename from src/meshic_pipeline/persistence/db.py rename to src/suhail_pipeline/persistence/db.py diff --git a/src/meshic_pipeline/persistence/enrichment_persister.py b/src/suhail_pipeline/persistence/enrichment_persister.py similarity index 71% rename from src/meshic_pipeline/persistence/enrichment_persister.py rename to src/suhail_pipeline/persistence/enrichment_persister.py index f51681a..e3bc2b5 100644 --- a/src/meshic_pipeline/persistence/enrichment_persister.py +++ b/src/suhail_pipeline/persistence/enrichment_persister.py @@ -5,7 +5,7 @@ from math import ceil from .models import Transaction, BuildingRule, ParcelPriceMetric -from meshic_pipeline.logging_utils import get_logger +from suhail_pipeline.logging_utils import get_logger logger = get_logger(__name__) @@ -34,6 +34,17 @@ def get_batch_size(num_columns: int) -> int: "price_of_meter": tx.price_of_meter, "transaction_date": tx.transaction_date, "area": tx.area, + "transaction_type": tx.transaction_type, + "property_type": tx.property_type, + "metrics_type": tx.metrics_type, + "land_use_group": tx.land_use_group, + "land_use_detailed": tx.land_use_detailed, + "selling_type": tx.selling_type, + "transaction_source": tx.transaction_source, + "total_area": tx.total_area, + "subdivision_id": tx.subdivision_id, + "neighborhood_id": tx.neighborhood_id, + "is_low_value_transaction": tx.is_low_value_transaction, "raw_data": tx.raw_data, } for tx in transactions @@ -47,10 +58,14 @@ def get_batch_size(num_columns: int) -> int: result = await async_session.execute(stmt) tx_count += result.rowcount or 0 - # Bulk insert rules (deduplicated) + # Bulk insert rules (deduplicated on the full composite PK, not just the parcel). + # A parcel can legitimately have multiple building rules; keying only on + # parcel_objectid previously discarded every rule but the last. rules_count = 0 if rules: - unique_rules = {rule.parcel_objectid: rule for rule in rules} + unique_rules = { + (rule.parcel_objectid, rule.building_rule_id): rule for rule in rules + } rules_values = [ { "parcel_objectid": int(r.parcel_objectid), @@ -83,6 +98,28 @@ def get_batch_size(num_columns: int) -> int: result = await async_session.execute(stmt) rules_count += result.rowcount or 0 + # Ensure neighborhood stubs exist before writing FK-bearing rows. + # Both transactions.neighborhood_id and parcel_price_metrics.neighborhood_id + # reference neighborhoods.neighborhood_id; enrichment can run on parcels whose + # neighborhood row is not present yet, and a single FK violation would abort the + # whole batch. Insert lightweight stubs (id only) mirroring the geometric path. + nbhd_ids = set() + for m in metrics: + if getattr(m, "neighborhood_id", None) is not None: + nbhd_ids.add(int(m.neighborhood_id)) + for tx in transactions: + if getattr(tx, "neighborhood_id", None) is not None: + nbhd_ids.add(int(tx.neighborhood_id)) + if nbhd_ids: + await async_session.execute( + text( + "INSERT INTO public.neighborhoods (neighborhood_id) " + "SELECT unnest(CAST(:ids AS bigint[])) " + "ON CONFLICT (neighborhood_id) DO NOTHING" + ), + {"ids": list(nbhd_ids)}, + ) + # Bulk insert metrics metrics_count = 0 if metrics: @@ -93,6 +130,7 @@ def get_batch_size(num_columns: int) -> int: "year": m.year, "metrics_type": m.metrics_type, "average_price_of_meter": m.average_price_of_meter, + "neighborhood_id": m.neighborhood_id, } for m in metrics ] diff --git a/src/meshic_pipeline/persistence/models.py b/src/suhail_pipeline/persistence/models.py similarity index 67% rename from src/meshic_pipeline/persistence/models.py rename to src/suhail_pipeline/persistence/models.py index d8c4cb6..c36be74 100644 --- a/src/meshic_pipeline/persistence/models.py +++ b/src/suhail_pipeline/persistence/models.py @@ -44,6 +44,25 @@ class Parcel(Base): municipality_ar = Column(String) parcel_id = Column(BigInteger) parcel_no = Column(String) + zoning_group = Column(String) + + # Inline market time-series now emitted on the parcels MVT layer (2026-07). + transaction_price_1w = Column(Float) + transaction_price_1m = Column(Float) + transaction_price_6m = Column(Float) + transaction_price_12m = Column(Float) + price_of_meter_1w = Column(Float) + price_of_meter_1m = Column(Float) + price_of_meter_6m = Column(Float) + price_of_meter_12m = Column(Float) + transactions_count_1w = Column(BigInteger) + transactions_count_1m = Column(BigInteger) + transactions_count_6m = Column(BigInteger) + transactions_count_12m = Column(BigInteger) + transaction_date_1w = Column(DateTime) + transaction_date_1m = Column(DateTime) + transaction_date_6m = Column(DateTime) + transaction_date_12m = Column(DateTime) # From DB Report (audit columns) created_at = Column(DateTime, nullable=False, server_default=func.now()) @@ -69,8 +88,20 @@ class Transaction(Base): price_of_meter = Column(Float) transaction_date = Column(DateTime) area = Column(Float) + # Materially-useful attributes now promoted out of raw_data into queryable columns. + transaction_type = Column(String) + property_type = Column(String) + metrics_type = Column(String) + land_use_group = Column(String) + land_use_detailed = Column(String) + selling_type = Column(String) + transaction_source = Column(String) + total_area = Column(Float) + subdivision_id = Column(BigInteger) + neighborhood_id = Column(BigInteger) + is_low_value_transaction = Column(Boolean) raw_data = Column(JSON) - + parcel = relationship("Parcel", back_populates="transactions") __table_args__ = ( @@ -138,8 +169,27 @@ class Neighborhood(Base): transaction_price = Column(Float) zoning_id = Column(BigInteger) zoning_color = Column(String) + zoning_group = Column(String) geometry_hash = Column(String, nullable=True) + # Inline market time-series now emitted on the neighborhoods MVT layer (2026-07). + transaction_price_1w = Column(Float) + transaction_price_1m = Column(Float) + transaction_price_6m = Column(Float) + transaction_price_12m = Column(Float) + price_of_meter_1w = Column(Float) + price_of_meter_1m = Column(Float) + price_of_meter_6m = Column(Float) + price_of_meter_12m = Column(Float) + transactions_count_1w = Column(BigInteger) + transactions_count_1m = Column(BigInteger) + transactions_count_6m = Column(BigInteger) + transactions_count_12m = Column(BigInteger) + transaction_date_1w = Column(DateTime) + transaction_date_1m = Column(DateTime) + transaction_date_6m = Column(DateTime) + transaction_date_12m = Column(DateTime) + parcels = relationship("Parcel", back_populates="neighborhood") price_metrics = relationship("ParcelPriceMetric", back_populates="neighborhood") province = relationship("Province", back_populates="neighborhoods") @@ -181,6 +231,9 @@ class Subdivision(Base): subdivision_id = Column(BigInteger, primary_key=True) geometry = Column(Geometry('GEOMETRY', srid=4326)) subdivision_no = Column(String) + subdivision_name_ar = Column(String) + neighborhood_id = Column(BigInteger) + region_id = Column(BigInteger) shape_area = Column(Float) transaction_price = Column(Float) price_of_meter = Column(Float) @@ -188,6 +241,24 @@ class Subdivision(Base): zoning_color = Column(String) province_id = Column(BigInteger, ForeignKey('provinces.province_id'), nullable=True) + # Inline market time-series now emitted on the subdivisions MVT layer (2026-07). + transaction_price_1w = Column(Float) + transaction_price_1m = Column(Float) + transaction_price_6m = Column(Float) + transaction_price_12m = Column(Float) + price_of_meter_1w = Column(Float) + price_of_meter_1m = Column(Float) + price_of_meter_6m = Column(Float) + price_of_meter_12m = Column(Float) + transactions_count_1w = Column(BigInteger) + transactions_count_1m = Column(BigInteger) + transactions_count_6m = Column(BigInteger) + transactions_count_12m = Column(BigInteger) + transaction_date_1w = Column(DateTime) + transaction_date_1m = Column(DateTime) + transaction_date_6m = Column(DateTime) + transaction_date_12m = Column(DateTime) + province = relationship("Province", back_populates="subdivisions") class ParcelsBase(Base): @@ -229,14 +300,34 @@ class ParcelsCentroids(Base): transaction_date = Column(DateTime) transaction_price = Column(Float) price_of_meter = Column(Float) + transactions_count = Column(BigInteger) + transaction_price_1w = Column(Float) + transaction_price_1m = Column(Float) + transaction_price_6m = Column(Float) + transaction_price_12m = Column(Float) + price_of_meter_1w = Column(Float) + price_of_meter_1m = Column(Float) + price_of_meter_6m = Column(Float) + price_of_meter_12m = Column(Float) + transactions_count_1w = Column(BigInteger) + transactions_count_1m = Column(BigInteger) + transactions_count_6m = Column(BigInteger) + transactions_count_12m = Column(BigInteger) + transaction_date_1w = Column(DateTime) + transaction_date_1m = Column(DateTime) + transaction_date_6m = Column(DateTime) + transaction_date_12m = Column(DateTime) class BusLines(Base): __tablename__ = 'bus_lines' - id = Column(Integer, primary_key=True, autoincrement=False) + # No stable unique key in the tile; written in replace mode. Native tile fields. + id = Column(Integer, primary_key=True, autoincrement=True) geometry = Column(Geometry('MULTILINESTRING', srid=4326)) busroute = Column(String) - route_name = Column(String) - route_type = Column(String) + color = Column(String) + type = Column(String) + origin = Column(String) + originar = Column(String) class MetroStations(Base): __tablename__ = 'metro_stations' @@ -244,6 +335,8 @@ class MetroStations(Base): geometry = Column(Geometry('POINT', srid=4326)) station_name = Column(String) line = Column(String) + station_long = Column(Float) + station_lat = Column(Float) class RiyadhBusStations(Base): __tablename__ = 'riyadh_bus_stations' @@ -251,18 +344,65 @@ class RiyadhBusStations(Base): geometry = Column(Geometry('POINT', srid=4326)) station_name = Column(String) route = Column(String) + station_long = Column(Float) + station_lat = Column(Float) class QIPopulationMetrics(Base): __tablename__ = 'qi_population_metrics' grid_id = Column(String, primary_key=True) population = Column(Integer) geometry = Column(Geometry('POLYGON', srid=4326)) + region_id = Column(BigInteger) + # Values are colour-coded metric strings (hex) in the current tile schema. + population_density = Column(String) + rent_apartment = Column(String) + rent_villa = Column(String) + rent_shop = Column(String) + rent_office = Column(String) + purchasing_power = Column(String) + weighted_median_income_monthly = Column(String) + poi_count = Column(String) class QIStripes(Base): __tablename__ = 'qi_stripes' strip_id = Column(String, primary_key=True) geometry = Column(Geometry('POLYGON', srid=4326)) value = Column(Float) + centroid_longitude = Column(Float) + centroid_latitude = Column(Float) + +class NonSaudiOwnershipZones(Base): + __tablename__ = 'non_saudi_ownership_zones' + id = Column(BigInteger, primary_key=True, autoincrement=False) + geometry = Column(Geometry('GEOMETRY', srid=4326)) + name_ar = Column(String) + name_en = Column(String) + is_show = Column(Boolean) + region_id = Column(BigInteger) + province_id = Column(BigInteger) + +class Dimensions(Base): + __tablename__ = 'dimensions' + # Per-parcel edge measurements: many rows per parcel (one point per boundary edge), + # no natural unique key -> persisted via tile-scoped delete+append keyed on source_tile. + row_id = Column(BigInteger, primary_key=True, autoincrement=True) + parcel_objectid = Column(BigInteger) + geometry = Column(Geometry('POINT', srid=4326)) + length_m = Column(Float) + azimuth = Column(Float) + province_id = Column(BigInteger) + source_tile = Column(String) + +class BuildingDetection(Base): + __tablename__ = 'building_detection' + # AI-detected building footprints/classification, year-stamped. Keyless in the + # source -> deterministic synthetic bd_id (see SYNTHETIC_PK_CONFIG) for upsert. + bd_id = Column(BigInteger, primary_key=True, autoincrement=False) + geometry = Column(Geometry('GEOMETRY', srid=4326)) + class_pred = Column(String) + prediction_year = Column(BigInteger) + region_id = Column(BigInteger) + source_tile = Column(String) class TileURL(Base): __tablename__ = 'tile_urls' diff --git a/src/meshic_pipeline/persistence/postgis_persister.py b/src/suhail_pipeline/persistence/postgis_persister.py similarity index 74% rename from src/meshic_pipeline/persistence/postgis_persister.py rename to src/suhail_pipeline/persistence/postgis_persister.py index bc73a6e..14413c9 100644 --- a/src/meshic_pipeline/persistence/postgis_persister.py +++ b/src/suhail_pipeline/persistence/postgis_persister.py @@ -23,6 +23,28 @@ def _quote_identifier(name: str) -> str: raise ValueError(f"Unsafe identifier: {name}") return str(quoted_name(name, quote=True)) +# Time-series market fields now emitted inline on the parcels / neighborhoods / +# subdivisions MVT layers (source of truth: live tile decode, 2026-07). Kept as a +# helper so the four windows (1w/1m/6m/12m) stay in sync across layers. +_MARKET_TIMESERIES = { + 'transaction_price_1w': 'float64', + 'transaction_price_1m': 'float64', + 'transaction_price_6m': 'float64', + 'transaction_price_12m': 'float64', + 'price_of_meter_1w': 'float64', + 'price_of_meter_1m': 'float64', + 'price_of_meter_6m': 'float64', + 'price_of_meter_12m': 'float64', + 'transactions_count_1w': 'int64', + 'transactions_count_1m': 'int64', + 'transactions_count_6m': 'int64', + 'transactions_count_12m': 'int64', + 'transaction_date_1w': 'datetime64[ns]', + 'transaction_date_1m': 'datetime64[ns]', + 'transaction_date_6m': 'datetime64[ns]', + 'transaction_date_12m': 'datetime64[ns]', +} + # Add a canonical schema map for all layers SCHEMA_MAP = { 'parcels': { @@ -33,7 +55,9 @@ def _quote_identifier(name: str) -> str: 'subdivision_no': 'string', 'transaction_price': 'float64', 'zoning_id': 'int64', + 'zoning_group': 'string', 'neighborhood_id': 'int64', + 'neighborhood_ar': 'string', 'block_no': 'string', 'subdivision_id': 'int64', 'price_of_meter': 'float64', @@ -44,6 +68,7 @@ def _quote_identifier(name: str) -> str: 'municipality_ar': 'string', 'parcel_id': 'int64', 'parcel_no': 'string', + **_MARKET_TIMESERIES, 'created_at': 'datetime64[ns]', 'updated_at': 'datetime64[ns]', 'is_active': 'bool', @@ -56,11 +81,14 @@ def _quote_identifier(name: str) -> str: 'transaction_date': 'datetime64[ns]', 'transaction_price': 'float64', 'price_of_meter': 'float64', + 'transactions_count': 'int64', + **_MARKET_TIMESERIES, }, 'neighborhoods': { 'neighborhood_id': 'int64', 'geometry': 'geometry', 'neighborhood_name': 'string', + 'neighborhood_ar': 'string', 'region_id': 'int64', 'province_id': 'int64', 'price_of_meter': 'float64', @@ -68,6 +96,8 @@ def _quote_identifier(name: str) -> str: 'transaction_price': 'float64', 'zoning_id': 'int64', 'zoning_color': 'string', + 'zoning_group': 'string', + **_MARKET_TIMESERIES, 'geometry_hash': 'string', }, 'neighborhoods-centroids': { @@ -82,12 +112,38 @@ def _quote_identifier(name: str) -> str: 'subdivision_id': 'int64', 'geometry': 'geometry', 'subdivision_no': 'string', + 'subdivision_name_ar': 'string', + 'neighborhood_id': 'int64', + 'region_id': 'int64', 'shape_area': 'float64', 'transaction_price': 'float64', 'price_of_meter': 'float64', 'zoning_id': 'int64', 'zoning_color': 'string', 'province_id': 'int64', + **_MARKET_TIMESERIES, + }, + # `dimensions` (per-parcel edge measurements) is multi-row-per-parcel with no + # natural unique key. It is persisted with a tile-scoped delete+append write + # (see TILE_SCOPED_LAYERS / write_tile_scoped): `source_tile` records the + # originating tile so a reprocessed tile replaces exactly its own rows. + 'dimensions': { + 'parcel_objectid': 'int64', + 'geometry': 'geometry', + 'length_m': 'float64', + 'azimuth': 'float64', + 'province_id': 'int64', + 'source_tile': 'string', + }, + # `streets` remains keyless / not yet enabled (needs the same accumulate + # semantics as dimensions before it can be persisted across a province run). + # The tile `provinces` layer is intentionally omitted: it collides with the + # `provinces` metadata table (populated from the regions API) and has no unique key. + 'streets': { + 'geometry': 'geometry', + 'name_ar': 'string', + 'name_en': 'string', + 'width': 'float64', }, 'metro_lines': { 'id': 'int64', @@ -97,41 +153,107 @@ def _quote_identifier(name: str) -> str: 'track_name': 'string', }, 'bus_lines': { - 'id': 'int64', + # Native live-tile field names (2026-07): color/type/busroute/origin/originar. 'geometry': 'geometry', - 'route_name': 'string', - 'route_color': 'string', - 'route_length': 'float64', - 'route_type': 'string', - 'route_id': 'string', + 'busroute': 'string', + 'color': 'string', + 'type': 'string', + 'origin': 'string', + 'originar': 'string', }, 'metro_stations': { 'station_code': 'string', 'geometry': 'geometry', 'station_name': 'string', - 'line_id': 'int64', - 'location': 'string', + 'station_long': 'float64', + 'station_lat': 'float64', }, 'riyadh_bus_stations': { 'station_code': 'string', 'geometry': 'geometry', 'station_name': 'string', - 'route_id': 'string', - 'location': 'string', + 'station_long': 'float64', + 'station_lat': 'float64', }, 'qi_population_metrics': { 'grid_id': 'string', - 'population': 'int64', 'geometry': 'geometry', + 'region_id': 'int64', + 'population_density': 'string', + 'rent_apartment': 'string', + 'rent_villa': 'string', + 'rent_shop': 'string', + 'rent_office': 'string', + 'purchasing_power': 'string', + 'weighted_median_income_monthly': 'string', + 'poi_count': 'string', }, 'qi_stripes': { 'strip_id': 'string', 'geometry': 'geometry', - 'stripe_value': 'float64', - 'stripe_type': 'string', + 'centroid_longitude': 'float64', + 'centroid_latitude': 'float64', + }, + # `building_detection` is keyless in the source; we synthesize a stable bd_id + # (see SYNTHETIC_PK_CONFIG) from region + class + prediction_year + geometry so + # the existing upsert path accumulates it and versions it by prediction year. + 'building_detection': { + 'bd_id': 'int64', + 'geometry': 'geometry', + 'class_pred': 'string', + 'prediction_year': 'int64', + 'region_id': 'int64', + 'source_tile': 'string', + }, + 'non_saudi_ownership_zones': { + 'id': 'int64', + 'geometry': 'geometry', + 'name_ar': 'string', + 'name_en': 'string', + 'is_show': 'bool', + 'region_id': 'int64', + 'province_id': 'int64', }, } +# Layers persisted with a tile-scoped delete+append (keyless, multi-row-per-key). +# Each batch deletes the rows for the tiles it re-decoded (via ``source_tile``) and +# appends fresh ones, so reruns are idempotent and multi-tile runs accumulate. +TILE_SCOPED_LAYERS = {"dimensions"} + +# Layers with no natural unique key that get a deterministic synthetic primary key +# derived from stable content + geometry, so the normal upsert path accumulates them. +# Format: layer -> (id_column, [key_columns]). +SYNTHETIC_PK_CONFIG = { + "building_detection": ("bd_id", ["region_id", "class_pred", "prediction_year"]), +} + + +def compute_synthetic_pk(gdf: gpd.GeoDataFrame, layer_name: str) -> gpd.GeoDataFrame: + """Add a deterministic BIGINT primary key for keyless layers (SYNTHETIC_PK_CONFIG). + + The key is a hash of the configured content columns plus the geometry, so the + same feature always hashes to the same id (idempotent upsert, cross-tile-overlap + dedup) while distinct features stay distinct. + """ + cfg = SYNTHETIC_PK_CONFIG.get(layer_name) + if cfg is None or gdf.empty: + return gdf + id_col, key_cols = cfg + geom_col = gdf.geometry.name + + def _key(row) -> int: + parts = [str(row.get(c)) for c in key_cols] + geom = row[geom_col] + parts.append(geom.wkb_hex if geom is not None and not geom.is_empty else "") + digest = hashlib.sha1("|".join(parts).encode("utf-8")).hexdigest() + # 60 bits keeps it comfortably inside a signed BIGINT. + return int(digest[:15], 16) + + out = gdf.copy() + out[id_col] = out.apply(_key, axis=1) + return out + def ensure_neighborhood_centroids_primary_key(gdf: gpd.GeoDataFrame) -> gpd.GeoDataFrame: """Ensure neighborhoods-centroids rows have integer `id` for upsert (matches DB PK).""" @@ -438,6 +560,72 @@ def _upsert(self, gdf: gpd.GeoDataFrame, table_name: str, id_column: str, schema self.drop_table(temp_table_name, schema) logger.debug("Dropped temporary upsert table: %s", temp_table_name) + def write_tile_scoped( + self, + gdf: gpd.GeoDataFrame, + layer_name: str, + table: str, + scope_col: str = "source_tile", + schema: str = "public", + chunksize: int = 5000, + geometry_type: str | None = None, + ) -> None: + """Idempotent accumulate write for keyless / multi-row-per-key layers. + + Deletes the existing rows for exactly the tiles present in ``gdf`` (via + ``scope_col``) and appends the new rows. Reprocessing a tile replaces only + that tile's rows; different tiles accumulate. Used for TILE_SCOPED_LAYERS. + """ + if gdf.empty: + return + if scope_col not in gdf.columns: + raise ValueError( + f"write_tile_scoped requires a '{scope_col}' column on layer '{layer_name}'" + ) + + validated_gdf = self._validate_and_cast_types(gdf, layer_name=layer_name) + tile_keys = sorted( + str(v) for v in validated_gdf[scope_col].dropna().unique() + ) + + inspector = inspect(self.engine) + if not inspector.has_table(table, schema=schema): + self.create_table_from_gdf( + validated_gdf.iloc[0:0], + table, + schema=schema, + known_columns=list(validated_gdf.columns), + geometry_type=geometry_type or "GEOMETRY", + ) + + schema_q = _quote_identifier(schema) + table_q = _quote_identifier(table) + scope_q = _quote_identifier(scope_col) + if tile_keys: + with self.engine.begin() as conn: + conn.execute( + text( + f'DELETE FROM {schema_q}.{table_q} ' + f'WHERE {scope_q} = ANY(:keys)' + ), + {"keys": tile_keys}, + ) + validated_gdf.to_postgis( + table, + self.engine, + schema=schema, + if_exists="append", + index=False, + chunksize=chunksize, + ) + logger.info( + "Tile-scoped write: %d rows into %s.%s across %d tile(s)", + len(validated_gdf), + schema, + table, + len(tile_keys), + ) + def write( self, gdf: gpd.GeoDataFrame, diff --git a/src/meshic_pipeline/persistence/table_management.py b/src/suhail_pipeline/persistence/table_management.py similarity index 100% rename from src/meshic_pipeline/persistence/table_management.py rename to src/suhail_pipeline/persistence/table_management.py diff --git a/src/meshic_pipeline/pipeline_orchestrator.py b/src/suhail_pipeline/pipeline_orchestrator.py similarity index 97% rename from src/meshic_pipeline/pipeline_orchestrator.py rename to src/suhail_pipeline/pipeline_orchestrator.py index 4308a19..924bac1 100644 --- a/src/meshic_pipeline/pipeline_orchestrator.py +++ b/src/suhail_pipeline/pipeline_orchestrator.py @@ -21,10 +21,12 @@ from .persistence.postgis_persister import ( PostGISPersister, SCHEMA_MAP, + TILE_SCOPED_LAYERS, + compute_synthetic_pk, ensure_neighborhood_centroids_primary_key, ) from sqlalchemy import text -from meshic_pipeline.persistence.table_management import reset_temp_table +from suhail_pipeline.persistence.table_management import reset_temp_table import mercantile @@ -162,6 +164,12 @@ def decode_and_validate_tile( gdf = validate_geometries(gdf) if not gdf.empty: + # Provenance: stamp the source tile for layers whose schema records it + # (drives the tile-scoped delete+append write for keyless layers). + if 'source_tile' in SCHEMA_MAP.get(layer_name, {}): + gdf['source_tile'] = f"{z}/{x}/{y}" + # Deterministic synthetic PK for keyless layers (e.g. building_detection). + gdf = compute_synthetic_pk(gdf, layer_name) validated_gdfs.append((layer_name, gdf)) stats = monitor.get_memory_stats() diff --git a/src/meshic_pipeline/run_db_geometric.py b/src/suhail_pipeline/run_db_geometric.py similarity index 94% rename from src/meshic_pipeline/run_db_geometric.py rename to src/suhail_pipeline/run_db_geometric.py index 2f0863c..4f43e03 100644 --- a/src/meshic_pipeline/run_db_geometric.py +++ b/src/suhail_pipeline/run_db_geometric.py @@ -11,20 +11,21 @@ from sqlalchemy.orm import Session from sqlalchemy import inspect -from meshic_pipeline.config import settings -from meshic_pipeline.persistence.db import get_db_engine -from meshic_pipeline.persistence.models import TileURL -from meshic_pipeline.decoder.mvt_decoder import MVTDecoder -from meshic_pipeline.geometry.validator import validate_geometries -from meshic_pipeline.persistence.postgis_persister import ( +from suhail_pipeline.config import settings +from suhail_pipeline.persistence.db import get_db_engine +from suhail_pipeline.persistence.models import TileURL +from suhail_pipeline.decoder.mvt_decoder import MVTDecoder +from suhail_pipeline.geometry.validator import validate_geometries +from suhail_pipeline.persistence.postgis_persister import ( PostGISPersister, SCHEMA_MAP, + TILE_SCOPED_LAYERS, ensure_neighborhood_centroids_primary_key, ensure_neighborhood_stubs_for_parcels, ensure_subdivision_stubs_for_parcels, ) -from meshic_pipeline.persistence.table_management import reset_temp_table -from meshic_pipeline.pipeline_orchestrator import decode_and_validate_tile +from suhail_pipeline.persistence.table_management import reset_temp_table +from suhail_pipeline.pipeline_orchestrator import decode_and_validate_tile logger = logging.getLogger(__name__) @@ -194,6 +195,15 @@ def persist_layers() -> None: gdf = gpd.GeoDataFrame(pd.concat(gdfs, ignore_index=True)) + # Keyless multi-row layers (e.g. dimensions): idempotent tile-scoped + # accumulate instead of the per-batch replace that would keep only the + # last batch. Deletes this batch's tiles' rows, then appends. + if layer in TILE_SCOPED_LAYERS: + persister.write_tile_scoped( + gdf, layer, table_name, chunksize=settings.db_chunk_size + ) + continue + pk_col = settings.id_column_per_layer.get(layer) if pk_col and pk_col in gdf.columns: before = len(gdf) diff --git a/src/meshic_pipeline/run_db_geometric_fixed.py b/src/suhail_pipeline/run_db_geometric_fixed.py similarity index 97% rename from src/meshic_pipeline/run_db_geometric_fixed.py rename to src/suhail_pipeline/run_db_geometric_fixed.py index 9b13c1e..827bf08 100644 --- a/src/meshic_pipeline/run_db_geometric_fixed.py +++ b/src/suhail_pipeline/run_db_geometric_fixed.py @@ -11,20 +11,20 @@ from sqlalchemy.orm import Session from sqlalchemy import inspect -from meshic_pipeline.config import settings -from meshic_pipeline.persistence.db import get_db_engine -from meshic_pipeline.persistence.models import TileURL -from meshic_pipeline.decoder.mvt_decoder import MVTDecoder -from meshic_pipeline.geometry.validator import validate_geometries -from meshic_pipeline.persistence.postgis_persister import ( +from suhail_pipeline.config import settings +from suhail_pipeline.persistence.db import get_db_engine +from suhail_pipeline.persistence.models import TileURL +from suhail_pipeline.decoder.mvt_decoder import MVTDecoder +from suhail_pipeline.geometry.validator import validate_geometries +from suhail_pipeline.persistence.postgis_persister import ( PostGISPersister, SCHEMA_MAP, ensure_neighborhood_centroids_primary_key, ensure_neighborhood_stubs_for_parcels, ensure_subdivision_stubs_for_parcels, ) -from meshic_pipeline.persistence.table_management import reset_temp_table -from meshic_pipeline.pipeline_orchestrator import decode_and_validate_tile +from suhail_pipeline.persistence.table_management import reset_temp_table +from suhail_pipeline.pipeline_orchestrator import decode_and_validate_tile logger = logging.getLogger(__name__) diff --git a/src/meshic_pipeline/run_enrichment_pipeline.py b/src/suhail_pipeline/run_enrichment_pipeline.py similarity index 95% rename from src/meshic_pipeline/run_enrichment_pipeline.py rename to src/suhail_pipeline/run_enrichment_pipeline.py index c7ef007..3dc0316 100644 --- a/src/meshic_pipeline/run_enrichment_pipeline.py +++ b/src/suhail_pipeline/run_enrichment_pipeline.py @@ -20,20 +20,20 @@ project_root = Path(__file__).resolve().parents[1] sys.path.insert(0, str(project_root)) -from meshic_pipeline.persistence.models import ( +from suhail_pipeline.persistence.models import ( Base, Transaction, ParcelPriceMetric, BuildingRule, ) -from meshic_pipeline.config import settings +from suhail_pipeline.config import settings import logging from sqlalchemy import BigInteger, Column, DateTime, Float, Integer, String, JSON from sqlalchemy.orm import sessionmaker from sqlalchemy import ForeignKey -from meshic_pipeline.exceptions import ValidationException -from meshic_pipeline.logging_utils import get_logger -from meshic_pipeline.enrichment.strategies import ( +from suhail_pipeline.exceptions import ValidationException +from suhail_pipeline.logging_utils import get_logger +from suhail_pipeline.enrichment.strategies import ( get_unprocessed_parcel_ids, get_stale_parcel_ids, get_delta_parcel_ids, @@ -41,16 +41,16 @@ get_all_parcel_ids_for_metrics, get_delta_parcel_ids_with_details, ) -from meshic_pipeline.enrichment.processor import fast_worker -from meshic_pipeline.enrichment.metrics_only_processor import metrics_only_worker -from meshic_pipeline.persistence.db import ( +from suhail_pipeline.enrichment.processor import fast_worker +from suhail_pipeline.enrichment.metrics_only_processor import metrics_only_worker +from suhail_pipeline.persistence.db import ( get_async_db_engine, setup_database_async, ) -from meshic_pipeline.persistence.enrichment_persister import ( +from suhail_pipeline.persistence.enrichment_persister import ( fast_store_batch_data, ) -from meshic_pipeline.enrichment.api_client import SuhailAPIClient +from suhail_pipeline.enrichment.api_client import SuhailAPIClient from rich import print as rprint logger = get_logger(__name__) @@ -358,7 +358,7 @@ async def run_delta_enrichment(): if auto_created_table: typer.echo("🧹 Cleaning up auto-generated temporary table...") try: - from meshic_pipeline.persistence.postgis_persister import PostGISPersister + from suhail_pipeline.persistence.postgis_persister import PostGISPersister persister = PostGISPersister(str(settings.database_url)) persister.drop_table(fresh_mvt_table) typer.echo(f"🧹 Cleaned up temporary table: {fresh_mvt_table}") @@ -388,7 +388,7 @@ def smart_pipeline_enrich( if geometric_first: print("\n🗺️ STAGE 1: Running geometric pipeline...") - from meshic_pipeline.run_geometric_pipeline import main as run_geometric_pipeline + from suhail_pipeline.run_geometric_pipeline import main as run_geometric_pipeline import sys # Prepare args for geometric pipeline diff --git a/src/meshic_pipeline/run_geometric_pipeline.py b/src/suhail_pipeline/run_geometric_pipeline.py similarity index 97% rename from src/meshic_pipeline/run_geometric_pipeline.py rename to src/suhail_pipeline/run_geometric_pipeline.py index cad6232..c6022e6 100644 --- a/src/meshic_pipeline/run_geometric_pipeline.py +++ b/src/suhail_pipeline/run_geometric_pipeline.py @@ -6,8 +6,8 @@ import typer -from meshic_pipeline.pipeline_orchestrator import run_pipeline -from meshic_pipeline.config import settings +from suhail_pipeline.pipeline_orchestrator import run_pipeline +from suhail_pipeline.config import settings # Setup logging logger = logging.getLogger(__name__) diff --git a/src/meshic_pipeline/run_monitoring.py b/src/suhail_pipeline/run_monitoring.py similarity index 94% rename from src/meshic_pipeline/run_monitoring.py rename to src/suhail_pipeline/run_monitoring.py index d88466f..d3d4a7d 100644 --- a/src/meshic_pipeline/run_monitoring.py +++ b/src/suhail_pipeline/run_monitoring.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 """ -Monitoring utilities for Meshic pipeline. +Monitoring utilities for Suhail pipeline. Provides: - status: queue + enrichment overview - recommend: next action suggestions @@ -16,7 +16,7 @@ import time import statistics -from meshic_pipeline.config import settings +from suhail_pipeline.config import settings app = typer.Typer() @@ -171,23 +171,23 @@ def recommend(): if new_parcels > 10000: print(f"🚀 HIGHEST PRIORITY: {new_parcels:,} unenriched parcels with transaction data") print(f" 💡 Stage 1 revealed parcels with transaction_price > 0.") - print(f" Recommended: meshic-pipeline fast-enrich --batch-size 400") + print(f" Recommended: suhail-pipeline fast-enrich --batch-size 400") print(" → Leverages transaction_price field from MVT tiles for maximum efficiency") print() elif new_parcels > 1000: print(f"🆕 HIGH PRIORITY: {new_parcels:,} unenriched parcels found") - print(f" Recommended: meshic-pipeline fast-enrich --batch-size 300") + print(f" Recommended: suhail-pipeline fast-enrich --batch-size 300") print() # Priority 2: Incremental updates for already enriched parcels if stale_7d > 5000: print(f"⚠️ MEDIUM PRIORITY: {stale_7d:,} stale parcels (7+ days)") print(f" 💡 May have new transactions not yet captured") - print(f" Recommended: meshic-pipeline incremental-enrich --days-old 7") + print(f" Recommended: suhail-pipeline incremental-enrich --days-old 7") print() elif stale_30d > 1000: print(f"⏰ LOW PRIORITY: {stale_30d:,} stale parcels (30+ days)") - print(f" Recommended: meshic-pipeline incremental-enrich --days-old 30") + print(f" Recommended: suhail-pipeline incremental-enrich --days-old 30") print() # System status @@ -206,7 +206,7 @@ def recommend(): print(" 💡 The most efficient method is 'delta-enrich', which only processes parcels with detected changes.") print() print(" 🆕 RECOMMENDED WORKFLOW: DELTA ENRICHMENT (Maximum Precision):") - print(" meshic-pipeline delta-enrich --auto-geometric") + print(" suhail-pipeline delta-enrich --auto-geometric") print(" → MVT-based change detection: Only enrich parcels with ACTUAL price changes") print(" → Detects: New parcels, price changes, market updates") print(" → Ultimate efficiency: Only processes parcels with proven changes") @@ -226,28 +226,28 @@ def schedule_info(): print("🔄 RECOMMENDED SCHEDULE:") print() print("1️⃣ DAILY / WEEKLY:") - print(" meshic-pipeline delta-enrich --auto-geometric") + print(" suhail-pipeline delta-enrich --auto-geometric") print(" → The most efficient method. Automatically finds and processes only parcels") print(" → with genuine changes, ensuring your data is always current.") print() print("2️⃣ MONTHLY (or as needed for a broader refresh):") - print(" meshic-pipeline incremental-enrich --days-old 30") + print(" suhail-pipeline incremental-enrich --days-old 30") print(" → Catches any parcels that might have been missed by delta detection.") print() print("3️⃣ QUARTERLY (for data integrity checks):") - print(" meshic-pipeline full-refresh") + print(" suhail-pipeline full-refresh") print(" → Complete refresh to guarantee data completeness.") print() print("💡 TIPS:") - print(" • Monitor with: meshic-pipeline monitor status") - print(" • Get recommendations: meshic-pipeline monitor recommend") + print(" • Monitor with: suhail-pipeline monitor status") + print(" • Get recommendations: suhail-pipeline monitor recommend") @app.command(name="reset-stale") def reset_stale(stale_minutes: int = typer.Option(60, "--stale-minutes", help="Minutes after which in_progress tiles are considered stale")): """Reset stale in_progress tiles to failed so they can be retried.""" from sqlalchemy.orm import Session - from meshic_pipeline.persistence.db import get_db_engine - from meshic_pipeline.persistence.models import TileURL + from suhail_pipeline.persistence.db import get_db_engine + from suhail_pipeline.persistence.models import TileURL engine = get_db_engine(str(settings.database_url)) session = Session(engine) diff --git a/src/meshic_pipeline/run_tile_pipeline.py b/src/suhail_pipeline/run_tile_pipeline.py similarity index 95% rename from src/meshic_pipeline/run_tile_pipeline.py rename to src/suhail_pipeline/run_tile_pipeline.py index 99df3b5..d0a1d2d 100644 --- a/src/meshic_pipeline/run_tile_pipeline.py +++ b/src/suhail_pipeline/run_tile_pipeline.py @@ -2,8 +2,8 @@ import asyncio import aiohttp from sqlalchemy.orm import Session -from meshic_pipeline.persistence.db import get_db_engine -from meshic_pipeline.persistence.models import TileURL +from suhail_pipeline.persistence.db import get_db_engine +from suhail_pipeline.persistence.models import TileURL BATCH_SIZE = 1000 MAX_RETRIES = 5 diff --git a/src/meshic_pipeline/show_discovery_summary.py b/src/suhail_pipeline/show_discovery_summary.py similarity index 86% rename from src/meshic_pipeline/show_discovery_summary.py rename to src/suhail_pipeline/show_discovery_summary.py index 7e6de91..d7c34fe 100644 --- a/src/meshic_pipeline/show_discovery_summary.py +++ b/src/suhail_pipeline/show_discovery_summary.py @@ -9,8 +9,8 @@ # Add the src directory to the path so we can import our modules sys.path.append(str(Path(__file__).parent.parent / "src")) -from meshic_pipeline.config import settings -from meshic_pipeline.utils.tile_list_generator import tiles_from_bbox_z +from suhail_pipeline.config import settings +from suhail_pipeline.utils.tile_list_generator import tiles_from_bbox_z def main(): """Display enhanced province discovery summary.""" @@ -46,13 +46,13 @@ def main(): print(f"\n🚀 Integration Examples:") print(f" # Single province") - print(f" python -m meshic_pipeline.cli province-geometric riyadh") + print(f" python -m suhail_pipeline.cli province-geometric riyadh") print(f" ") print(f" # All Saudi Arabia") - print(f" python -m meshic_pipeline.cli saudi-arabia-geometric") + print(f" python -m suhail_pipeline.cli saudi-arabia-geometric") print(f" ") print(f" # Efficient strategy for large areas") - print(f" python -m meshic_pipeline.cli saudi-arabia-geometric --strategy efficient") + print(f" python -m suhail_pipeline.cli saudi-arabia-geometric --strategy efficient") print(f"\n✅ System Status: Ready for production use!") diff --git a/src/meshic_pipeline/utils/tile_list_generator.py b/src/suhail_pipeline/utils/tile_list_generator.py similarity index 100% rename from src/meshic_pipeline/utils/tile_list_generator.py rename to src/suhail_pipeline/utils/tile_list_generator.py diff --git a/tests/fixtures/suhail_live_2026_07/README.md b/tests/fixtures/suhail_live_2026_07/README.md new file mode 100644 index 0000000..ff6dc18 --- /dev/null +++ b/tests/fixtures/suhail_live_2026_07/README.md @@ -0,0 +1,27 @@ +# Suhail live-source fixtures (captured 2026-07-15) + +Real payloads captured from the live Suhail platform, used as regression / contract-test +inputs and as evidence for [`docs/SUHAIL_SOURCE_AUDIT_2026-07.md`](../../../docs/SUHAIL_SOURCE_AUDIT_2026-07.md). + +## `tiles/` — MVT vector tiles (gzip-compressed, as served) +- `riyadh_15_20636_14069.vector.pbf.gz` — downtown Riyadh; contains all 17 tile layers + (parcels, parcels-base, parcels-centroids, neighborhoods(+centroids), subdivisions, + provinces, dimensions, streets, metro_lines, bus_lines, metro_stations, + riyadh_bus_stations, qi_population_metrics, qi_stripes, building_detection, + non_saudi_ownership_zones). +- `riyadh_15_20640_14060.vector.pbf.gz` — residential Riyadh; parcels with recent transactions. + +Tiles are served with `Content-Encoding: gzip` (always on). `aiohttp` auto-decompresses in +the pipeline; test helpers `gzip.decompress()` first. + +## `api/` — api2.suhail.ai JSON payloads +- `regions.json`, `settings_app.json`, `tiles_modes.json`, `gl_style_ksa.sources_and_layers.json` + — platform/config surface. +- `transactions__9941681.json` — 6 real transaction records (39 fields each). +- `buildingRules__9858274.json`, `priceOfMeter__9858274.json` — enrichment payloads. +- `parcel_detail__9858274.json` — consolidated `parcel/{id}` endpoint (new). +- `landMetrics_list__region10.json`, `landMetrics__neighborhood1002969.json`, + `landZoningGroups.json` — new neighbourhood market-intelligence endpoints (not yet ingested). + +Consumed by `tests/unit/test_live_tile_schema.py` and +`tests/unit/test_enrichment_parsers_contract.py`. diff --git a/tests/fixtures/suhail_live_2026_07/api/buildingRules__9858274.json b/tests/fixtures/suhail_live_2026_07/api/buildingRules__9858274.json new file mode 100644 index 0000000..d27dfbf --- /dev/null +++ b/tests/fixtures/suhail_live_2026_07/api/buildingRules__9858274.json @@ -0,0 +1 @@ +{"data":[{"id":"ع/م 111","zoningId":5,"zoningColor":"e74545","zoningGroup":null,"landuse":"سكني / تجاري / مكتبي","description":"ع/م 111","name":"منطقة التقسيم ع/م 111","coloring":"MU","coloringDescription":"م1 - استعمال مختلط - دورين - 60% تغطية - 1.2 معامل بناء","maxBuildingCoefficient":"2","maxBuildingHeight":"ارضي + اول + 50% ملاحق علوية","maxParcelCoverage":"100%","maxRuleDepth":"يجب مراجعة امانة منطقة الرياض لتحديد عمق الإستخدام التجاري المسموح به","mainStreetsSetback":"بدون","secondaryStreetsSetback":"بدون","sideRearSetback":"بدون"}],"message":null,"messageTemplate":null,"status":true,"meta":null} \ No newline at end of file diff --git a/tests/fixtures/suhail_live_2026_07/api/gl_style_ksa.sources_and_layers.json b/tests/fixtures/suhail_live_2026_07/api/gl_style_ksa.sources_and_layers.json new file mode 100644 index 0000000..0d08755 --- /dev/null +++ b/tests/fixtures/suhail_live_2026_07/api/gl_style_ksa.sources_and_layers.json @@ -0,0 +1,922 @@ +{ + "sources": { + "mapbox://mapbox.satellite": { + "url": "mapbox://mapbox.satellite", + "type": "raster", + "tileSize": 256 + }, + "composite": { + "url": "mapbox://mapbox.mapbox-streets-v8,suhail-app.c4y35hil,mapbox.mapbox-terrain-v2", + "type": "vector" + }, + "province-61000-src": { + "type": "geojson", + "data": { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 42.50618302642124, + 18.216490450501226 + ] + } + } + }, + "ksa": { + "type": "vector", + "maxzoom": 15, + "tiles": [ + "https://tiles.suhail.ai/maps/ksa/{z}/{x}/{y}.vector.pbf?" + ] + }, + "riyadh": { + "type": "vector", + "maxzoom": 15, + "bounds": [ + 41.686026, + 19.208334, + 48.1838, + 27.7021 + ], + "tiles": [ + "https://tiles.suhail.ai/maps/riyadh/{z}/{x}/{y}.vector.pbf?" + ] + }, + "al_madenieh": { + "type": "vector", + "maxzoom": 15, + "bounds": [ + 37.084, + 22.51971, + 42.1566, + 27.46665 + ], + "tiles": [ + "https://tiles.suhail.ai/maps/madinah/{z}/{x}/{y}.vector.pbf?" + ] + }, + "al_qassim": { + "type": "vector", + "maxzoom": 15, + "bounds": [ + 41.307313, + 24.4836, + 44.989467, + 28.2508 + ], + "tiles": [ + "https://tiles.suhail.ai/maps/qassim/{z}/{x}/{y}.vector.pbf?" + ] + }, + "asir_region": { + "type": "vector", + "maxzoom": 15, + "bounds": [ + 41.214223, + 17.366667, + 44.440789, + 20.80266 + ], + "tiles": [ + "https://tiles.suhail.ai/maps/asir/{z}/{x}/{y}.vector.pbf?" + ] + }, + "eastern_region": { + "type": "vector", + "maxzoom": 15, + "bounds": [ + 44.670664, + 19.000517, + 55.666667, + 29.141386 + ], + "tiles": [ + "https://tiles.suhail.ai/maps/eastern/{z}/{x}/{y}.vector.pbf?" + ] + }, + "makkah_region": { + "type": "vector", + "maxzoom": 15, + "bounds": [ + 38.61693, + 18.564691, + 43.83016, + 23.6952 + ], + "tiles": [ + "https://tiles.suhail.ai/maps/makkah/{z}/{x}/{y}.vector.pbf?" + ] + }, + "bahah": { + "type": "vector", + "maxzoom": 15, + "bounds": [ + 40.829164, + 19.44581, + 42.129716, + 20.82938 + ], + "tiles": [ + "https://tiles.suhail.ai/maps/bahah/{z}/{x}/{y}.vector.pbf?" + ] + }, + "hail": { + "type": "vector", + "maxzoom": 15, + "bounds": [ + 39.11418, + 25.25439, + 44.367661, + 29.207876 + ], + "tiles": [ + "https://tiles.suhail.ai/maps/hail/{z}/{x}/{y}.vector.pbf?" + ] + }, + "jawf": { + "type": "vector", + "maxzoom": 15, + "bounds": [ + 37.005875, + 28.36794, + 41.99684, + 31.749873 + ], + "tiles": [ + "https://tiles.suhail.ai/maps/jawf/{z}/{x}/{y}.vector.pbf?" + ] + }, + "jazan": { + "type": "vector", + "maxzoom": 15, + "bounds": [ + 41.38948, + 16.08843, + 43.3365, + 18.060398 + ], + "tiles": [ + "https://tiles.suhail.ai/maps/jazan/{z}/{x}/{y}.vector.pbf?" + ] + }, + "najran": { + "type": "vector", + "maxzoom": 15, + "bounds": [ + 43.59569, + 16.95, + 52.001753, + 19.448889 + ], + "tiles": [ + "https://tiles.suhail.ai/maps/najran/{z}/{x}/{y}.vector.pbf?" + ] + }, + "northern_borders": { + "type": "vector", + "maxzoom": 15, + "bounds": [ + 37.955253, + 27.831761, + 45.464141, + 32.153962 + ], + "tiles": [ + "https://tiles.suhail.ai/maps/northern_borders/{z}/{x}/{y}.vector.pbf?" + ] + }, + "tabuk": { + "type": "vector", + "maxzoom": 15, + "bounds": [ + 34.571234, + 24.560854, + 39.923088, + 29.976269 + ], + "tiles": [ + "https://tiles.suhail.ai/maps/tabuk/{z}/{x}/{y}.vector.pbf?" + ] + }, + "base-raster-riyadh": { + "type": "raster", + "scheme": "tms", + "minzoom": 8, + "maxzoom": 18, + "bounds": [ + 41.686026, + 19.208334, + 48.1838, + 27.7021 + ], + "tiles": [ + "https://qeye-tiles-prod.obs.me-east-1.myhuaweicloud.com/1/2023-08-01/{z}/{x}/{y}.png" + ] + }, + "base-raster-al_madenieh": { + "type": "raster", + "scheme": "tms", + "minzoom": 8, + "maxzoom": 18, + "bounds": [ + 37.084, + 22.51971, + 42.1566, + 27.46665 + ], + "tiles": [ + "https://qeye-tiles-prod.obs.me-east-1.myhuaweicloud.com/3/2023-08-01/{z}/{x}/{y}.png" + ] + }, + "base-raster-eastern_region": { + "type": "raster", + "scheme": "tms", + "minzoom": 8, + "maxzoom": 18, + "bounds": [ + 44.670664, + 19.000517, + 55.666667, + 29.141386 + ], + "tiles": [ + "https://qeye-tiles-prod.obs.me-east-1.myhuaweicloud.com/4/2023-08-01/{z}/{x}/{y}.png" + ] + }, + "base-raster-makkah_region": { + "type": "raster", + "scheme": "tms", + "minzoom": 8, + "maxzoom": 18, + "bounds": [ + 38.61693, + 18.564691, + 43.83016, + 23.6952 + ], + "tiles": [ + "https://qeye-tiles-prod.obs.me-east-1.myhuaweicloud.com/2/2023-08-01/{z}/{x}/{y}.png" + ] + }, + "watheer_1_project_id_61": { + "type": "raster", + "scheme": "tms", + "minzoom": 14, + "maxzoom": 19, + "bounds": [ + 46.745422050576735, + 24.51596594131675, + 46.76191981407351, + 24.525095488456188 + ], + "tiles": [ + "https://tiles.suhail.ai/tiles/watheer_1_project_id_61/{z}/{x}/{y}.png" + ] + }, + "watheer_3_project_id_62": { + "type": "raster", + "scheme": "tms", + "minzoom": 14, + "maxzoom": 19, + "bounds": [ + 46.73750468401522, + 24.50762925878948, + 46.75129332030497, + 24.516613545746253 + ], + "tiles": [ + "https://tiles.suhail.ai/tiles/watheer_3_project_id_62/{z}/{x}/{y}.png" + ] + }, + "sma_rosan": { + "type": "raster", + "scheme": "tms", + "minzoom": 14, + "maxzoom": 19, + "bounds": [ + 46.93681872420916, + 24.908261154289747, + 46.95851464507655, + 24.92992699957884 + ], + "tiles": [ + "https://tiles.suhail.ai/tiles/SMA_ROSAN/{z}/{x}/{y}.png" + ] + }, + "rakiz": { + "type": "raster", + "scheme": "tms", + "minzoom": 14, + "maxzoom": 19, + "bounds": [ + 46.62224044087486, + 24.49139443675746, + 46.62784482347615, + 24.495102396718096 + ], + "tiles": [ + "https://tiles.suhail.ai/tiles/rakiz/{z}/{x}/{y}.png" + ] + }, + "osus": { + "type": "raster", + "scheme": "tms", + "minzoom": 14, + "maxzoom": 19, + "bounds": [ + 46.85392731555123, + 24.907714868029046, + 46.865581535916135, + 24.918589500320408 + ], + "tiles": [ + "https://tiles.suhail.ai/tiles/osus/{z}/{x}/{y}.png" + ] + }, + "thenode": { + "type": "raster", + "scheme": "tms", + "minzoom": 14, + "maxzoom": 19, + "bounds": [ + 46.96335085311898, + 24.83532185522587, + 46.97267736723461, + 24.843671694476598 + ], + "tiles": [ + "https://tiles.suhail.ai/tiles/thenode/{z}/{x}/{y}.png" + ] + }, + "Alzumuruda": { + "type": "raster", + "scheme": "tms", + "minzoom": 14, + "maxzoom": 19, + "bounds": [ + 43.83640477793267, + 26.437120622829795, + 43.859762425786926, + 26.44498395270118 + ], + "tiles": [ + "https://tiles.suhail.ai/tiles/Alzumuruda/{z}/{x}/{y}.png" + ] + }, + "albsateen": { + "type": "raster", + "scheme": "tms", + "minzoom": 14, + "maxzoom": 19, + "bounds": [ + 39.6699056520946, + 24.503588462386404, + 39.681804798599956, + 24.508643396766473 + ], + "tiles": [ + "https://tiles.suhail.ai/tiles/albsateen/{z}/{x}/{y}.png" + ] + }, + "Nobla": { + "type": "raster", + "scheme": "tms", + "minzoom": 14, + "maxzoom": 19, + "bounds": [ + 39.65688411431529, + 24.37602165533194, + 39.67086681578439, + 24.380175760861277 + ], + "tiles": [ + "https://tiles.suhail.ai/tiles/Nobla/{z}/{x}/{y}.png" + ] + }, + "akhial": { + "type": "raster", + "scheme": "tms", + "minzoom": 14, + "maxzoom": 19, + "bounds": [ + 49.92420628407717, + 26.353124564993635, + 49.955896386042355, + 26.413738134738054 + ], + "tiles": [ + "https://tiles.suhail.ai/tiles/akhial/{z}/{x}/{y}.png" + ] + }, + "ajdal": { + "type": "raster", + "scheme": "tms", + "minzoom": 14, + "maxzoom": 19, + "bounds": [ + 39.26981593177834, + 21.328977740201424, + 39.28501100816402, + 21.35141759744951 + ], + "tiles": [ + "https://tiles.suhail.ai/tiles/ajdal/{z}/{x}/{y}.png" + ] + }, + "ajdal-otherSubdivisions": { + "type": "raster", + "scheme": "tms", + "minzoom": 12, + "maxzoom": 19, + "bounds": [ + 39.267628097, + 21.336002009, + 39.309957819, + 21.363523021 + ], + "tiles": [ + "https://tiles.suhail.ai/tiles/ajdal-otherSubdivisions/{z}/{x}/{y}.png" + ] + }, + "ًProject-Wareef": { + "type": "geojson", + "data": { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 39.288763311466596, + 21.34695631947318 + ] + } + } + }, + "Project-Saden": { + "type": "geojson", + "data": { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 39.25020519297186, + 21.386766172776674 + ] + } + } + }, + "regions": { + "type": "geojson", + "data": { + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "properties": { + "id": "12", + "ArabicName": "الباحة", + "EnglishName": "Al Bahah Region" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 41.46680824895095, + 20.15428414166781 + ] + } + }, + { + "type": "Feature", + "properties": { + "id": "15", + "ArabicName": "الجوف", + "EnglishName": "Al Jawf Region" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 39.54109227509982, + 29.979723799811712 + ] + } + }, + { + "type": "Feature", + "properties": { + "id": "9", + "ArabicName": "الحدود الشماليه", + "EnglishName": "Northern Borders Region" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 41.892302988053004, + 30.22633714333982 + ] + } + }, + { + "type": "Feature", + "properties": { + "id": "8", + "ArabicName": "حائل", + "EnglishName": "Hail Region" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 41.43400160571424, + 27.42673497763816 + ] + } + }, + { + "type": "Feature", + "properties": { + "id": "6", + "ArabicName": "عسير", + "EnglishName": "Asir Region" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 42.943519352286216, + 19.15201338425933 + ] + } + }, + { + "type": "Feature", + "properties": { + "id": "5", + "ArabicName": "الشرقية", + "EnglishName": "Eastern Region" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 50.16873341480063, + 23.268309751138542 + ] + } + }, + { + "type": "Feature", + "properties": { + "id": "2", + "ArabicName": "مكة المكرمة", + "EnglishName": "Makkah Al Mukarramah Region" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 41.26142010756434, + 21.634563628812057 + ] + } + }, + { + "type": "Feature", + "properties": { + "id": "11", + "ArabicName": "نجران", + "EnglishName": "Najran Region" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 46.870331850227686, + 18.449846942629176 + ] + } + }, + { + "type": "Feature", + "properties": { + "id": "13", + "ArabicName": "المدينة المنورة", + "EnglishName": "Al Madinah Al Munawwarah Region" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 39.580045332006314, + 24.83919847332798 + ] + } + }, + { + "type": "Feature", + "properties": { + "id": "10", + "ArabicName": "الرياض", + "EnglishName": "Riyadh" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 45.585933615839345, + 23.11687235271373 + ] + } + }, + { + "type": "Feature", + "properties": { + "id": "4", + "ArabicName": "القصيم", + "EnglishName": "Al Qassim Region" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 43.33063952265524, + 26.191745453894846 + ] + } + }, + { + "type": "Feature", + "properties": { + "id": "7", + "ArabicName": "تبوك", + "EnglishName": "Tabuk Region" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 37.241569546881514, + 27.873669253033608 + ] + } + }, + { + "type": "Feature", + "properties": { + "id": "14", + "ArabicName": "جازان", + "EnglishName": "Jazan Region" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 42.65388886783398, + 17.204688900565603 + ] + } + } + ] + } + } + }, + "source_layers": { + "landcover": { + "style_layer_count": 1, + "examples": [ + "landcover" + ] + }, + "landuse_overlay": { + "style_layer_count": 1, + "examples": [ + "national-park" + ] + }, + "landuse": { + "style_layer_count": 1, + "examples": [ + "landuse" + ] + }, + "waterway": { + "style_layer_count": 2, + "examples": [ + "waterway-shadow", + "waterway" + ] + }, + "water": { + "style_layer_count": 2, + "examples": [ + "water-shadow", + "water" + ] + }, + "structure": { + "style_layer_count": 2, + "examples": [ + "land-structure-polygon", + "land-structure-line" + ] + }, + "building": { + "style_layer_count": 2, + "examples": [ + "building-outline", + "building" + ] + }, + "road": { + "style_layer_count": 45, + "examples": [ + "tunnel-street-minor-low", + "tunnel-street-minor-case", + "tunnel-primary-secondary-tertiary-case" + ] + }, + "provinces": { + "style_layer_count": 26, + "examples": [ + "provinces_outline@riyadh", + "provinces@riyadh", + "provinces_outline@al_madenieh" + ] + }, + "neighborhoods": { + "style_layer_count": 26, + "examples": [ + "neighborhoods@riyadh", + "neighborhoods-outline@riyadh", + "neighborhoods@al_madenieh" + ] + }, + "subdivisions": { + "style_layer_count": 26, + "examples": [ + "subdivisions-fill@riyadh", + "subdivisions-outline@riyadh", + "subdivisions-fill@al_madenieh" + ] + }, + "parcels": { + "style_layer_count": 39, + "examples": [ + "parcels@riyadh", + "parcels-base@riyadh", + "parcels outline@riyadh" + ] + }, + "building_detection": { + "style_layer_count": 13, + "examples": [ + "building_detection@riyadh", + "building_detection@al_madenieh", + "building_detection@al_qassim" + ] + }, + "provinces-centroids": { + "style_layer_count": 13, + "examples": [ + "provinces-labels@riyadh", + "provinces-labels@al_madenieh", + "provinces-labels@al_qassim" + ] + }, + "neighborhoods-centroids": { + "style_layer_count": 13, + "examples": [ + "neighborhoods-labels@riyadh", + "neighborhoods-labels@al_madenieh", + "neighborhoods-labels@al_qassim" + ] + }, + "streets": { + "style_layer_count": 26, + "examples": [ + "streets-lines@riyadh", + "streets-width@riyadh", + "streets-lines@al_madenieh" + ] + }, + "dimensions": { + "style_layer_count": 13, + "examples": [ + "dimensions@riyadh", + "dimensions@al_madenieh", + "dimensions@al_qassim" + ] + }, + "parcels-centroids": { + "style_layer_count": 26, + "examples": [ + "parcel-labels-dots@riyadh", + "parcel-labels-text@riyadh", + "parcel-labels-dots@al_madenieh" + ] + }, + "sb_shape": { + "style_layer_count": 1, + "examples": [ + "sb_shape@riyadh" + ] + }, + "sb_area": { + "style_layer_count": 1, + "examples": [ + "sb_area@riyadh" + ] + }, + "qi_population_metrics": { + "style_layer_count": 26, + "examples": [ + "qi_population_metrics@riyadh", + "qi_population_metrics_outline@riyadh", + "qi_population_metrics@al_madenieh" + ] + }, + "metro_lines": { + "style_layer_count": 1, + "examples": [ + "metro_lines@riyadh" + ] + }, + "bus_lines": { + "style_layer_count": 1, + "examples": [ + "bus_lines@riyadh" + ] + }, + "metro_stations": { + "style_layer_count": 1, + "examples": [ + "metro_stations@riyadh" + ] + }, + "riyadh_bus_stations": { + "style_layer_count": 1, + "examples": [ + "riyadh_bus_stations@riyadh" + ] + }, + "non_saudi_ownership_zones": { + "style_layer_count": 26, + "examples": [ + "non_saudi_ownership_zones_fill@riyadh", + "non_saudi_ownership_zones_outline@riyadh", + "non_saudi_ownership_zones_fill@al_madenieh" + ] + }, + "mega_projects": { + "style_layer_count": 1, + "examples": [ + "mega_projects@riyadh" + ] + }, + "aeroway": { + "style_layer_count": 1, + "examples": [ + "aeroway-polygon" + ] + }, + "admin": { + "style_layer_count": 3, + "examples": [ + "admin-1-boundary", + "admin-0-boundary", + "admin-0-boundary-disputed" + ] + }, + "regions": { + "style_layer_count": 14, + "examples": [ + "regions", + "regions@riyadh", + "regions@al_madenieh" + ] + }, + "natural_label": { + "style_layer_count": 5, + "examples": [ + "waterway-label", + "natural-line-label", + "natural-point-label" + ] + }, + "poi_label": { + "style_layer_count": 1, + "examples": [ + "poi-label copy" + ] + }, + "airport_label": { + "style_layer_count": 1, + "examples": [ + "airport-label" + ] + }, + "Cities_data-11gwc6": { + "style_layer_count": 3, + "examples": [ + "settlement-minor-label _", + "settlement-major-labels", + "capital-label" + ] + }, + "place_label": { + "style_layer_count": 2, + "examples": [ + "state-label original", + "country-label_" + ] + } + } +} \ No newline at end of file diff --git a/tests/fixtures/suhail_live_2026_07/api/landMetrics__neighborhood1002969.json b/tests/fixtures/suhail_live_2026_07/api/landMetrics__neighborhood1002969.json new file mode 100644 index 0000000..617b073 --- /dev/null +++ b/tests/fixtures/suhail_live_2026_07/api/landMetrics__neighborhood1002969.json @@ -0,0 +1 @@ +{"data":{"totalMetricData":{"landUseGroup":"الكل","totalCount":0.0,"totalPrice":0.0,"totalCountGrowthIndicator":"DOWN","totalPriceGrowthIndicator":"DOWN","totalPriceGrowthValue":100.0,"totalCountGrowthValue":100.0,"median":8585.57142857143},"neighborhoodId":1002969,"neighborhoodName":"المرقب","provinceName":"الرياض","provinceId":101000,"landUseGroup":[{"landUseGroup":"أرض سكني","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":null,"priceOfMeter":null},"median":1929.0},{"landUseGroup":"فلل","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":null,"priceOfMeter":null},"median":3245.0},{"landUseGroup":"شقق","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":null,"priceOfMeter":null},"median":1650.0},{"landUseGroup":"أرض تجاري","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":null,"priceOfMeter":null},"median":3782.0},{"landUseGroup":"مبنى تجاري","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":null,"priceOfMeter":null},"median":7328.0},{"landUseGroup":"مبنى تجاري سكني","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":null,"priceOfMeter":null},"median":2534.0},{"landUseGroup":"محل تجزئة","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":null,"priceOfMeter":null},"median":39631.0}],"presentDate":"2026-06-30T00:00:00","pastDate":"2026-06-30T00:00:00","orgPastDate":"2025-06-30T00:00:00"},"message":null,"messageTemplate":null,"status":true,"meta":null} \ No newline at end of file diff --git a/tests/fixtures/suhail_live_2026_07/api/landMetrics_list__region10.json b/tests/fixtures/suhail_live_2026_07/api/landMetrics_list__region10.json new file mode 100644 index 0000000..8ffc8a9 --- /dev/null +++ b/tests/fixtures/suhail_live_2026_07/api/landMetrics_list__region10.json @@ -0,0 +1 @@ +{"data":{"items":[{"totalMetricData":{"landUseGroup":"الكل","totalCount":3.0,"totalPrice":860000.0,"totalCountGrowthIndicator":"DOWN","totalPriceGrowthIndicator":"DOWN","totalPriceGrowthValue":84.36,"totalCountGrowthValue":25.0,"median":4694.083333333333},"neighborhoodId":1003343,"neighborhoodName":"غرناطة","provinceName":"الرياض","provinceId":101000,"landUseGroup":[{"landUseGroup":"أرض سكني","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2025-10-12T00:00:00","priceOfMeter":3098.0},"median":4000.0},{"landUseGroup":"فلل","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2026-06-03T00:00:00","priceOfMeter":5864.0},"median":6759.0},{"landUseGroup":"شقق","totalCount":3,"totalPrice":860000.0,"lastExecutionPrice":{"transactionDate":"2026-06-02T00:00:00","priceOfMeter":6215.0},"median":5345.0},{"landUseGroup":"دور","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2025-07-10T00:00:00","priceOfMeter":6445.0},"median":0.0},{"landUseGroup":"أرض تجاري","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2024-12-29T00:00:00","priceOfMeter":7000.0},"median":3187.0},{"landUseGroup":"مبنى تجاري","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2026-05-06T00:00:00","priceOfMeter":6545.0},"median":8485.0},{"landUseGroup":"أرض تجاري سكني","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2025-12-21T00:00:00","priceOfMeter":6000.0},"median":6000.0},{"landUseGroup":"مبنى تجاري سكني","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2026-05-06T00:00:00","priceOfMeter":6545.0},"median":7939.0},{"landUseGroup":"مرافق","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2018-10-15T00:00:00","priceOfMeter":357.0},"median":357.0},{"landUseGroup":"أرض زراعي","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2021-11-08T00:00:00","priceOfMeter":2708.0},"median":2708.0},{"landUseGroup":"محل تجزئة","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2025-02-18T00:00:00","priceOfMeter":6952.0},"median":6556.0},{"landUseGroup":"أخرى","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":null,"priceOfMeter":null},"median":4993.0}],"presentDate":"2026-06-30T00:00:00","pastDate":"2026-06-30T00:00:00","orgPastDate":"2025-06-30T00:00:00"},{"totalMetricData":{"landUseGroup":"الكل","totalCount":0.0,"totalPrice":0.0,"totalCountGrowthIndicator":"DOWN","totalPriceGrowthIndicator":"UP","totalPriceGrowthValue":0.0,"totalCountGrowthValue":100.0,"median":793.2},"neighborhoodId":1004775,"neighborhoodName":"الصفراء","provinceName":"شقراء","provinceId":101009,"landUseGroup":[{"landUseGroup":"أرض سكني","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2026-06-14T00:00:00","priceOfMeter":265.0},"median":275.0},{"landUseGroup":"فلل","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2026-03-11T00:00:00","priceOfMeter":822.0},"median":822.0},{"landUseGroup":"شقق","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2026-06-16T00:00:00","priceOfMeter":1179.0},"median":1529.0},{"landUseGroup":"أرض تجاري","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2018-02-11T00:00:00","priceOfMeter":1311.0},"median":1311.0},{"landUseGroup":"أرض زراعي","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":null,"priceOfMeter":null},"median":29.0}],"presentDate":"2026-06-30T00:00:00","pastDate":"2026-06-30T00:00:00","orgPastDate":"2025-06-30T00:00:00"},{"totalMetricData":{"landUseGroup":"الكل","totalCount":0.0,"totalPrice":0.0,"totalCountGrowthIndicator":"DOWN","totalPriceGrowthIndicator":"DOWN","totalPriceGrowthValue":100.0,"totalCountGrowthValue":100.0,"median":9428.083333333334},"neighborhoodId":1005347,"neighborhoodName":"التعاون","provinceName":"الرياض","provinceId":101000,"landUseGroup":[{"landUseGroup":"أرض سكني","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2025-12-18T00:00:00","priceOfMeter":0.0},"median":3899.0},{"landUseGroup":"فلل","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2026-06-15T00:00:00","priceOfMeter":17946.0},"median":10634.0},{"landUseGroup":"شقق","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2026-03-09T00:00:00","priceOfMeter":9769.0},"median":6334.0},{"landUseGroup":"دور","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2026-03-16T00:00:00","priceOfMeter":18327.0},"median":7173.0},{"landUseGroup":"مبنى تجاري","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2025-02-05T00:00:00","priceOfMeter":14000.0},"median":14000.0},{"landUseGroup":"أرض تجاري سكني","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2025-12-24T00:00:00","priceOfMeter":0.0},"median":9300.0},{"landUseGroup":"مبنى تجاري سكني","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2026-06-23T00:00:00","priceOfMeter":10420.0},"median":8853.0},{"landUseGroup":"مرافق","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":null,"priceOfMeter":null},"median":11053.0},{"landUseGroup":"مبنى استراحات","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2026-03-09T00:00:00","priceOfMeter":19469.0},"median":19469.0},{"landUseGroup":"محل تجزئة","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2024-11-20T00:00:00","priceOfMeter":5208.0},"median":5208.0},{"landUseGroup":"أخرى","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2024-09-24T00:00:00","priceOfMeter":10366.0},"median":10357.0},{"landUseGroup":"أرض تجاري","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2025-11-09T00:00:00","priceOfMeter":0.0},"median":6857.0}],"presentDate":"2026-06-30T00:00:00","pastDate":"2026-06-30T00:00:00","orgPastDate":"2025-06-30T00:00:00"},{"totalMetricData":{"landUseGroup":"الكل","totalCount":0.0,"totalPrice":0.0,"totalCountGrowthIndicator":"UP","totalPriceGrowthIndicator":"UP","totalPriceGrowthValue":0.0,"totalCountGrowthValue":0.0,"median":726.6666666666666},"neighborhoodId":1003529,"neighborhoodName":"البدع","provinceName":"الخرج","provinceId":101002,"landUseGroup":[{"landUseGroup":"أرض سكني","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2025-10-28T00:00:00","priceOfMeter":214.0},"median":211.0},{"landUseGroup":"فلل","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2021-09-07T00:00:00","priceOfMeter":914.0},"median":914.0},{"landUseGroup":"شقق","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2014-03-23T00:00:00","priceOfMeter":1055.0},"median":1055.0}],"presentDate":"2026-06-30T00:00:00","pastDate":"2026-06-30T00:00:00","orgPastDate":"2025-06-30T00:00:00"},{"totalMetricData":{"landUseGroup":"الكل","totalCount":1.0,"totalPrice":0.0,"totalCountGrowthIndicator":"UP","totalPriceGrowthIndicator":"UP","totalPriceGrowthValue":0.0,"totalCountGrowthValue":0.0,"median":1020.0},"neighborhoodId":1004855,"neighborhoodName":"العقيق","provinceName":"وادى الدواسر","provinceId":101006,"landUseGroup":[{"landUseGroup":"أرض سكني","totalCount":1,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2026-06-30T00:00:00","priceOfMeter":1600.0},"median":120.0},{"landUseGroup":"فلل","totalCount":0,"totalPrice":0.0,"lastExecutionPrice":{"transactionDate":"2025-10-29T00:00:00","priceOfMeter":940.0},"median":1920.0}],"presentDate":"2026-06-30T00:00:00","pastDate":"2026-06-30T00:00:00","orgPastDate":"2025-06-30T00:00:00"}],"count":5,"totalCount":764,"offset":0,"limit":5},"message":null,"messageTemplate":null,"status":true,"meta":null} \ No newline at end of file diff --git a/tests/fixtures/suhail_live_2026_07/api/landZoningGroups.json b/tests/fixtures/suhail_live_2026_07/api/landZoningGroups.json new file mode 100644 index 0000000..a2982c5 --- /dev/null +++ b/tests/fixtures/suhail_live_2026_07/api/landZoningGroups.json @@ -0,0 +1 @@ +{"data":[{"id":3,"group":"سكني","color":"f1ce63","usageCount":4263782},{"id":2,"group":"شقق 3.5 دور/ تجاري","color":"fa6d6d","usageCount":719427},{"id":5,"group":"تجاري","color":"e74545","usageCount":334009},{"id":9,"group":"مرافق","color":"bab0ac","usageCount":325100},{"id":1,"group":"شقق 2.5 دور","color":"f28e2b","usageCount":297994},{"id":16,"group":"مناطق مفتوحة","color":"a0cbe8","usageCount":211139},{"id":14,"group":"زراعي","color":"8cd17d","usageCount":87713},{"id":8,"group":"صناعي","color":"fabfd2","usageCount":73134},{"id":10,"group":"حكومي","color":"305d8a","usageCount":56812},{"id":6,"group":"مستودعات","color":"b07aa1","usageCount":32993},{"id":12,"group":"مشاريع","color":"9d7660","usageCount":22086},{"id":7,"group":"تعليمي","color":"027b8e","usageCount":20661},{"id":11,"group":"استراحات","color":"d7b5a6","usageCount":16598},{"id":15,"group":"أودية","color":"59a14f","usageCount":14135},{"id":4,"group":"أعصاب تجارية","color":"ae123a","usageCount":6327},{"id":13,"group":"مواصلات","color":"a0cbe8","usageCount":3158},{"id":19,"group":"SB-T4.1","color":"BF7FFF","usageCount":1199},{"id":17,"group":"SB-T3.1","color":"FFFF7F","usageCount":1022},{"id":24,"group":"SB-T5.3","color":"FF0000","usageCount":768},{"id":18,"group":"SB-T3.2","color":"FFBF00","usageCount":600},{"id":30,"group":"SB-غير محدد","color":"F5F4F2","usageCount":477},{"id":23,"group":"SB-T5.2","color":"FF7F00","usageCount":369},{"id":20,"group":"SB-T4.2","color":"6418AB","usageCount":299},{"id":27,"group":"SB-Services","color":"7FBFFF","usageCount":196},{"id":21,"group":"SB-T5.1","color":"FF4DD8","usageCount":129},{"id":25,"group":"SB-T5.3-TOD","color":"970000","usageCount":74},{"id":28,"group":"SB-Community Residential","color":"00A884","usageCount":66},{"id":22,"group":"SB-T5.1-TOD","color":"B2008B","usageCount":21},{"id":26,"group":"SB-T6","color":"3C0000","usageCount":15},{"id":29,"group":"SB-Subject to Subdivision","color":"FCBCB6","usageCount":3}],"message":null,"messageTemplate":null,"status":true,"meta":null} \ No newline at end of file diff --git a/tests/fixtures/suhail_live_2026_07/api/parcel_detail__9858274.json b/tests/fixtures/suhail_live_2026_07/api/parcel_detail__9858274.json new file mode 100644 index 0000000..6783250 --- /dev/null +++ b/tests/fixtures/suhail_live_2026_07/api/parcel_detail__9858274.json @@ -0,0 +1 @@ +{"data":{"geometry":{"type":"Polygon","coordinates":[[[46.722032207,24.636894502],[46.722121462,24.636876956],[46.722113432,24.636831632],[46.722106602,24.636801828],[46.7220187,24.63683877],[46.722032207,24.636894502]]]},"properties":{"count":1,"parcelObjectId":9858274,"neighborhoodId":"1002969","neighborhoodName":"المرقب","municipalityCodeId":"1012","municipalityName":"الرياض","blockNo":"0","landUseDetailed":null,"landUseGroup":null,"parcelId":"9858274","parcelNo":null,"shapeArea":69.72,"subdivisionId":"1045983","subdivisionNo":"بدون","shapeLen":null,"regionId":10,"provinceId":101000,"landUseGroupCode":null,"dimensionsCount":0,"centroid":{"x":46.72207203992842,"y":24.63685211778096},"regionName":"الرياض","zoningColor":"e74545"}},"message":null,"messageTemplate":null,"status":true,"meta":null} \ No newline at end of file diff --git a/tests/fixtures/suhail_live_2026_07/api/priceOfMeter__9858274.json b/tests/fixtures/suhail_live_2026_07/api/priceOfMeter__9858274.json new file mode 100644 index 0000000..1cff983 --- /dev/null +++ b/tests/fixtures/suhail_live_2026_07/api/priceOfMeter__9858274.json @@ -0,0 +1 @@ +{"data":[{"parcelObjId":9858274,"neighborhoodId":1002969,"neighborhoodMetrics":[{"neighborhoodId":1002969,"month":1,"year":2026,"metricsType":"أرض سكني","avaragePriceOfMeter":1796.0},{"neighborhoodId":1002969,"month":1,"year":2026,"metricsType":"مبنى تجاري سكني","avaragePriceOfMeter":1911.0},{"neighborhoodId":1002969,"month":1,"year":2026,"metricsType":"محل تجزئة","avaragePriceOfMeter":35676.0},{"neighborhoodId":1002969,"month":1,"year":2026,"metricsType":"أرض تجاري","avaragePriceOfMeter":3782.0},{"neighborhoodId":1002969,"month":1,"year":2026,"metricsType":"شقق","avaragePriceOfMeter":1650.0},{"neighborhoodId":1002969,"month":1,"year":2026,"metricsType":"فلل","avaragePriceOfMeter":4375.0},{"neighborhoodId":1002969,"month":1,"year":2026,"metricsType":"مبنى تجاري","avaragePriceOfMeter":7328.0},{"neighborhoodId":1002969,"month":2,"year":2026,"metricsType":"فلل","avaragePriceOfMeter":4337.0},{"neighborhoodId":1002969,"month":2,"year":2026,"metricsType":"أرض تجاري","avaragePriceOfMeter":3782.0},{"neighborhoodId":1002969,"month":2,"year":2026,"metricsType":"مبنى تجاري","avaragePriceOfMeter":7328.0},{"neighborhoodId":1002969,"month":2,"year":2026,"metricsType":"مبنى تجاري سكني","avaragePriceOfMeter":1911.0},{"neighborhoodId":1002969,"month":2,"year":2026,"metricsType":"محل تجزئة","avaragePriceOfMeter":39631.0},{"neighborhoodId":1002969,"month":2,"year":2026,"metricsType":"شقق","avaragePriceOfMeter":1650.0},{"neighborhoodId":1002969,"month":2,"year":2026,"metricsType":"أرض سكني","avaragePriceOfMeter":1554.0},{"neighborhoodId":1002969,"month":3,"year":2026,"metricsType":"أرض تجاري","avaragePriceOfMeter":3782.0},{"neighborhoodId":1002969,"month":3,"year":2026,"metricsType":"أرض سكني","avaragePriceOfMeter":1271.0},{"neighborhoodId":1002969,"month":3,"year":2026,"metricsType":"مبنى تجاري","avaragePriceOfMeter":7328.0},{"neighborhoodId":1002969,"month":3,"year":2026,"metricsType":"محل تجزئة","avaragePriceOfMeter":39631.0},{"neighborhoodId":1002969,"month":3,"year":2026,"metricsType":"فلل","avaragePriceOfMeter":4006.0},{"neighborhoodId":1002969,"month":3,"year":2026,"metricsType":"شقق","avaragePriceOfMeter":1650.0},{"neighborhoodId":1002969,"month":3,"year":2026,"metricsType":"مبنى تجاري سكني","avaragePriceOfMeter":2067.0},{"neighborhoodId":1002969,"month":4,"year":2026,"metricsType":"مبنى تجاري","avaragePriceOfMeter":7328.0},{"neighborhoodId":1002969,"month":4,"year":2026,"metricsType":"أرض سكني","avaragePriceOfMeter":1430.0},{"neighborhoodId":1002969,"month":4,"year":2026,"metricsType":"أرض تجاري","avaragePriceOfMeter":3782.0},{"neighborhoodId":1002969,"month":4,"year":2026,"metricsType":"شقق","avaragePriceOfMeter":1650.0},{"neighborhoodId":1002969,"month":4,"year":2026,"metricsType":"محل تجزئة","avaragePriceOfMeter":39631.0},{"neighborhoodId":1002969,"month":4,"year":2026,"metricsType":"مبنى تجاري سكني","avaragePriceOfMeter":2222.0},{"neighborhoodId":1002969,"month":4,"year":2026,"metricsType":"فلل","avaragePriceOfMeter":3159.0},{"neighborhoodId":1002969,"month":5,"year":2026,"metricsType":"محل تجزئة","avaragePriceOfMeter":39631.0},{"neighborhoodId":1002969,"month":5,"year":2026,"metricsType":"شقق","avaragePriceOfMeter":1650.0},{"neighborhoodId":1002969,"month":5,"year":2026,"metricsType":"فلل","avaragePriceOfMeter":3181.0},{"neighborhoodId":1002969,"month":5,"year":2026,"metricsType":"أرض تجاري","avaragePriceOfMeter":3782.0},{"neighborhoodId":1002969,"month":5,"year":2026,"metricsType":"أرض سكني","avaragePriceOfMeter":1687.0},{"neighborhoodId":1002969,"month":5,"year":2026,"metricsType":"مبنى تجاري","avaragePriceOfMeter":7328.0},{"neighborhoodId":1002969,"month":5,"year":2026,"metricsType":"مبنى تجاري سكني","avaragePriceOfMeter":2378.0},{"neighborhoodId":1002969,"month":6,"year":2026,"metricsType":"أرض سكني","avaragePriceOfMeter":1929.0},{"neighborhoodId":1002969,"month":6,"year":2026,"metricsType":"شقق","avaragePriceOfMeter":1650.0},{"neighborhoodId":1002969,"month":6,"year":2026,"metricsType":"مبنى تجاري","avaragePriceOfMeter":7328.0},{"neighborhoodId":1002969,"month":6,"year":2026,"metricsType":"فلل","avaragePriceOfMeter":3245.0},{"neighborhoodId":1002969,"month":6,"year":2026,"metricsType":"أرض تجاري","avaragePriceOfMeter":3782.0},{"neighborhoodId":1002969,"month":6,"year":2026,"metricsType":"مبنى تجاري سكني","avaragePriceOfMeter":2534.0},{"neighborhoodId":1002969,"month":6,"year":2026,"metricsType":"محل تجزئة","avaragePriceOfMeter":39631.0}],"parcelMetrics":[],"from":"2026-01-15T00:00:00+00:00","to":"2026-07-15T23:59:59.9999999+00:00","groupingType":0}],"message":null,"messageTemplate":null,"status":true,"meta":null} \ No newline at end of file diff --git a/tests/fixtures/suhail_live_2026_07/api/regions.json b/tests/fixtures/suhail_live_2026_07/api/regions.json new file mode 100644 index 0000000..5ef43c7 --- /dev/null +++ b/tests/fixtures/suhail_live_2026_07/api/regions.json @@ -0,0 +1 @@ +{"data":[{"orderIndex":1,"id":10,"key":"Riyadh","name":"الرياض","mapStyleUrl":"https://tiles.suhail.ai/gl-styles/ksa.json","mapZoomLevel":10.0,"metricsUrl":"/Riyadh/mobile-metrics","defaultTransactionsDateRange":"-1/y","centroid":{"x":46.6893526894509,"y":24.6787559510409},"restrictBoundaryBox":{"southwest":{"x":41.686026,"y":19.208334},"northeast":{"x":48.1838,"y":27.7021}},"provinces":[{"id":101007,"name":"الأفلاج","centroid":{"x":46.715444267115785,"y":22.295073722206904}},{"id":101018,"name":"الحريق","centroid":{"x":46.502570981041295,"y":23.636735246847998}},{"id":101002,"name":"الخرج","centroid":{"x":47.34136889971158,"y":23.995710471370597}},{"id":101001,"name":"الدرعية","centroid":{"x":46.56910567089585,"y":24.74693834073349}},{"id":101021,"name":"الدلم","centroid":{"x":47.112904782275336,"y":24.01763887722338}},{"id":101003,"name":"الدوادمي","centroid":{"x":44.397866882388435,"y":24.538975871157785}},{"id":101000,"name":"الرياض","centroid":{"x":46.688852973932114,"y":24.67893932829408}},{"id":101022,"name":"الرين","centroid":{"x":45.511691182826006,"y":23.54122232345389}},{"id":101008,"name":"الزلفي","centroid":{"x":44.814681416938626,"y":26.313379655035813}},{"id":101012,"name":"السليل","centroid":{"x":45.59169373166689,"y":20.45582409087714}},{"id":101019,"name":"الغاط","centroid":{"x":44.937938596442095,"y":26.0301475625097}},{"id":101005,"name":"القويعية","centroid":{"x":45.2874711392253,"y":24.082317945487265}},{"id":101004,"name":"المجمعة","centroid":{"x":45.37596291402336,"y":25.90337465924469}},{"id":101014,"name":"المزاحمية","centroid":{"x":46.27978313722945,"y":24.46778261162726}},{"id":101016,"name":"ثادق","centroid":{"x":45.86409457237059,"y":25.276020650951917}},{"id":101017,"name":"حريملاء","centroid":{"x":46.19546673984374,"y":25.1036160175749}},{"id":101010,"name":"حوطة بني تميم","centroid":{"x":46.862398717238506,"y":23.458690676328878}},{"id":101015,"name":"رماح","centroid":{"x":47.17701555395518,"y":25.520706416692203}},{"id":101009,"name":"شقراء","centroid":{"x":45.24554681390492,"y":25.20184909171238}},{"id":101013,"name":"ضرما","centroid":{"x":46.12354756720016,"y":24.595259960213333}},{"id":101011,"name":"عفيف","centroid":{"x":42.902788904750615,"y":23.893567294444367}},{"id":101020,"name":"مرات","centroid":{"x":45.44699751302853,"y":25.0727180843136}},{"id":101006,"name":"وادي الدواسر","centroid":{"x":44.77088060208422,"y":20.4668318509133}}],"image":"https://suhailapp.obs.me-east-1.myhuaweicloud.com/static-files/region_riyadh.png","mapKey":"riyadh"},{"orderIndex":2,"id":13,"key":"Madinah","name":"المدينة المنورة","mapStyleUrl":"https://tiles.suhail.ai/gl-styles/ksa.json","mapZoomLevel":10.0,"metricsUrl":"/Madinah/mobile-metrics","defaultTransactionsDateRange":"-1/y","centroid":{"x":39.609449138409516,"y":24.4802585936543},"restrictBoundaryBox":{"southwest":{"x":37.084,"y":22.51971},"northeast":{"x":42.1566,"y":27.46665}},"provinces":[{"id":131006,"name":"الحناكية","centroid":{"x":40.51657831063046,"y":24.8642071449309}},{"id":131002,"name":"العلا","centroid":{"x":37.94356087702908,"y":26.5861347459765}},{"id":131008,"name":"العيص","centroid":{"x":38.131109968316636,"y":25.06525120683267}},{"id":131000,"name":"المدينة المنورة","centroid":{"x":39.609449138409516,"y":24.4802585936543}},{"id":131003,"name":"المهد","centroid":{"x":40.889122019456664,"y":23.49353891879711}},{"id":131004,"name":"بدر","centroid":{"x":38.779041415508075,"y":23.787342410568133}},{"id":131005,"name":"خيبر","centroid":{"x":39.290025992756604,"y":25.659775349708003}},{"id":131007,"name":"وادي الفرع","centroid":{"x":39.851506676633186,"y":23.485539728709643}},{"id":131001,"name":"ينبع","centroid":{"x":38.05797682625832,"y":24.079794141492023}}],"image":"https://suhailapp.obs.me-east-1.myhuaweicloud.com/static-files/region_al_madenieh.png","mapKey":"al_madenieh"},{"orderIndex":3,"id":5,"key":"Eastern","name":"الشرقية","mapStyleUrl":"https://tiles.suhail.ai/gl-styles/ksa.json","mapZoomLevel":10.0,"metricsUrl":"/Eastern/mobile-metrics","defaultTransactionsDateRange":"-1/y","centroid":{"x":50.0826958589995,"y":26.3891891271042},"restrictBoundaryBox":{"southwest":{"x":44.670664,"y":19.000517},"northeast":{"x":55.666667,"y":29.141386}},"provinces":[{"id":51001,"name":"الاحساء","centroid":{"x":49.59577107516184,"y":25.383500231099365}},{"id":51003,"name":"الجبيل","centroid":{"x":49.65606510275657,"y":26.982316570147656}},{"id":51005,"name":"الخبر","centroid":{"x":50.211115516864645,"y":26.30970252185347}},{"id":51006,"name":"الخفجي","centroid":{"x":48.48192522796914,"y":28.463416934809995}},{"id":51000,"name":"الدمام","centroid":{"x":50.10442741114076,"y":26.429026459390794}},{"id":51011,"name":"العديد","centroid":{"x":50.75181025047487,"y":24.749502958660766}},{"id":51004,"name":"القطيف","centroid":{"x":49.99630637603599,"y":26.565806082113713}},{"id":51009,"name":"النعيرية","centroid":{"x":48.4829118711081,"y":27.477683589204393}},{"id":51008,"name":"بقيق","centroid":{"x":49.4284287303845,"y":25.938832776755888}},{"id":51002,"name":"حفر الباطن","centroid":{"x":45.97727327000438,"y":28.420220242112197}},{"id":51007,"name":"راس تنورة","centroid":{"x":50.060378872778955,"y":26.705245012675014}},{"id":51010,"name":"قرية العليا","centroid":{"x":47.69984164367187,"y":27.562538732841663}}],"image":"https://suhailapp.obs.me-east-1.myhuaweicloud.com/static-files/region_eastern.png","mapKey":"eastern_region"},{"orderIndex":4,"id":2,"key":"Makkah","name":"مكة المكرمة","mapStyleUrl":"https://tiles.suhail.ai/gl-styles/ksa.json","mapZoomLevel":10.0,"metricsUrl":"/Makkah/mobile-metrics","defaultTransactionsDateRange":"-1/y","centroid":{"x":39.85532681763745,"y":21.416090070987288},"restrictBoundaryBox":{"southwest":{"x":38.61693,"y":18.564691},"northeast":{"x":43.83016,"y":23.6952}},"provinces":[{"id":21016,"name":"اضم","centroid":{"x":40.8573604331748,"y":20.405927014059944}},{"id":21006,"name":"الجموم","centroid":{"x":39.26189264188951,"y":21.53022290317747}},{"id":21009,"name":"الخرمة","centroid":{"x":42.02270023593635,"y":21.91973368982235}},{"id":21002,"name":"الطائف","centroid":{"x":40.42346015605826,"y":21.296458731062103}},{"id":21015,"name":"العرضيات","centroid":{"x":41.833888013401214,"y":19.44621834918492}},{"id":21003,"name":"القنفذة","centroid":{"x":41.07147201876349,"y":19.148772315311973}},{"id":21008,"name":"الكامل","centroid":{"x":39.79048612455639,"y":22.259311778939438}},{"id":21004,"name":"الليث","centroid":{"x":40.27025241468968,"y":20.1411886486247}},{"id":61011,"name":"المجاردة","centroid":{"x":41.865993579176184,"y":19.121714104804187}},{"id":21013,"name":"المويه","centroid":{"x":41.76826356431981,"y":22.439923604335213}},{"id":21012,"name":"بحرة","centroid":{"x":39.1724994666939,"y":21.307587867592186}},{"id":21011,"name":"تربة","centroid":{"x":41.596702748629845,"y":21.192246328487087}},{"id":21001,"name":"جدة","centroid":{"x":39.183720837472364,"y":21.571800029722173}},{"id":21007,"name":"خليص","centroid":{"x":39.28891822888672,"y":22.187204718011646}},{"id":21005,"name":"رابغ","centroid":{"x":39.05236175347281,"y":22.777604071985326}},{"id":21010,"name":"رنية","centroid":{"x":42.852642292507795,"y":21.223368906820063}},{"id":21000,"name":"مكة المكرمة","centroid":{"x":39.85532681763745,"y":21.416090070987288}},{"id":21014,"name":"ميسان","centroid":{"x":41.04610880762626,"y":20.598715729130458}}],"image":"https://suhailapp.obs.me-east-1.myhuaweicloud.com/static-files/region_makkah.png","mapKey":"makkah_region"},{"orderIndex":5,"id":4,"key":"Al_Qassim","name":"القصيم","mapStyleUrl":"https://tiles.suhail.ai/gl-styles/ksa.json","mapZoomLevel":10.0,"metricsUrl":"/Al_Qassim/mobile-metrics","defaultTransactionsDateRange":"-1/y","centroid":{"x":43.957183957099915,"y":26.364278487136083},"restrictBoundaryBox":{"southwest":{"x":40.16052246093751,"y":24.647017162630366},"northeast":{"x":47.83447265625001,"y":28.420391085674304}},"provinces":[{"id":41006,"name":"الاسياح","centroid":{"x":44.19411596528751,"y":26.796570778782762}},{"id":41005,"name":"البدائع","centroid":{"x":43.73896131460193,"y":26.012161858095755}},{"id":41004,"name":"البكيرية","centroid":{"x":43.267442642223976,"y":26.446151972145547}},{"id":41002,"name":"الرس","centroid":{"x":43.510488338771516,"y":25.828780295055964}},{"id":41010,"name":"الشماسية","centroid":{"x":44.235965710446244,"y":26.324440867307686}},{"id":41003,"name":"المذنب","centroid":{"x":44.19926481864793,"y":25.833157147038733}},{"id":41007,"name":"النبهانية","centroid":{"x":43.08124616814241,"y":25.86463411301878}},{"id":41000,"name":"بريدة","centroid":{"x":43.921643932903464,"y":26.34492808551673}},{"id":41009,"name":"رياض الخبراء","centroid":{"x":43.57888091087288,"y":26.058804533476547}},{"id":41012,"name":"ضرية","centroid":{"x":42.91905836426816,"y":24.706010474581884}},{"id":41011,"name":"عقلة الصقور","centroid":{"x":42.18389411280304,"y":25.831244484930647}},{"id":41001,"name":"عنيزة","centroid":{"x":43.971238464222424,"y":26.097600227672075}},{"id":41008,"name":"عيون الجواء","centroid":{"x":43.4611711451123,"y":26.793640979998035}}],"image":"https://suhailapp.obs.me-east-1.myhuaweicloud.com/static-files/al_qassim.png","mapKey":"al_qassim"},{"orderIndex":6,"id":6,"key":"Asir","name":"عسير","mapStyleUrl":"https://tiles.suhail.ai/gl-styles/ksa.json","mapZoomLevel":10.0,"metricsUrl":"/Asir/mobile-metrics","defaultTransactionsDateRange":"-1/y","centroid":{"x":42.751242220401764,"y":18.312010011422437},"restrictBoundaryBox":{"southwest":{"x":41.214223,"y":17.366667},"northeast":{"x":44.440789,"y":20.80266}},"provinces":[{"id":61000,"name":"أبها","centroid":{"x":42.549664742783314,"y":18.307064008976994}},{"id":61008,"name":"احد رفيدة","centroid":{"x":42.82098314283127,"y":18.177092982976824}},{"id":61017,"name":"الأمواه","centroid":{"x":43.87514642512652,"y":18.740495129997793}},{"id":61013,"name":"البرك","centroid":{"x":41.536570923666375,"y":18.213246458034526}},{"id":61016,"name":"الحرجة","centroid":{"x":43.50889141359282,"y":18.020403160695604}},{"id":61003,"name":"النماص","centroid":{"x":42.11433535166822,"y":19.03914373344304}},{"id":61014,"name":"بارق","centroid":{"x":41.9988836819683,"y":18.86004591072215}},{"id":61010,"name":"بلقرن","centroid":{"x":41.91800746530642,"y":19.75900691740014}},{"id":61002,"name":"بيشة","centroid":{"x":42.602690648252754,"y":19.995273313792758}},{"id":61006,"name":"تثليث","centroid":{"x":43.54107035892252,"y":19.525144076905562}},{"id":61015,"name":"تنومة","centroid":{"x":42.22089826469791,"y":18.94781809757498}},{"id":61001,"name":"خميس مشيط","centroid":{"x":42.6975358196979,"y":18.291703604360137}},{"id":61007,"name":"رجال المع","centroid":{"x":42.21967966192891,"y":18.08920475088153}},{"id":61005,"name":"سراة عبيدة","centroid":{"x":43.13902343975601,"y":18.0760491458154}},{"id":61012,"name":"طريب","centroid":{"x":43.278227244781945,"y":18.8262092658174}},{"id":61009,"name":"ظهران الجنوب","centroid":{"x":43.51838292745236,"y":17.6977735812593}},{"id":61004,"name":"محايل","centroid":{"x":41.68044981211372,"y":18.00469926392769}}],"image":"https://suhailapp.obs.me-east-1.myhuaweicloud.com/static-files/region_asir.png","mapKey":"asir_region"},{"orderIndex":7,"id":7,"key":"Tabuk","name":"تبوك","mapStyleUrl":"https://tiles.suhail.ai/gl-styles/ksa.json","mapZoomLevel":10.0,"metricsUrl":"/Tabuk/mobile-metrics","defaultTransactionsDateRange":"-1/y","centroid":{"x":36.511958188017736,"y":28.42458682342848},"restrictBoundaryBox":{"southwest":{"x":34.571234,"y":24.560854},"northeast":{"x":39.923088,"y":29.976269}},"provinces":[{"id":71006,"name":"البدع","centroid":{"x":35.007850585097515,"y":28.410698964086606}},{"id":71001,"name":"الوجه","centroid":{"x":36.46032229508487,"y":26.250400062144085}},{"id":71004,"name":"املج","centroid":{"x":37.261712825672056,"y":25.1730070755383}},{"id":71000,"name":"تبوك","centroid":{"x":36.53308641826973,"y":28.449591716298567}},{"id":71003,"name":"تيماء","centroid":{"x":38.535876904844095,"y":27.630984950384846}},{"id":71005,"name":"حقل","centroid":{"x":34.9462924874948,"y":29.285138949073385}},{"id":71002,"name":"ضباء","centroid":{"x":35.70859108962764,"y":27.34335564622256}}],"image":"https://suhailapp.obs.me-east-1.myhuaweicloud.com/static-files/region_asir.png","mapKey":"tabuk"},{"orderIndex":8,"id":8,"key":"Hail","name":"حائل","mapStyleUrl":"https://tiles.suhail.ai/gl-styles/ksa.json","mapZoomLevel":10.0,"metricsUrl":"/Hail/mobile-metrics","defaultTransactionsDateRange":"-1/y","centroid":{"x":41.689419447347575,"y":27.491964102762882},"restrictBoundaryBox":{"southwest":{"x":39.11418,"y":25.25439},"northeast":{"x":44.367661,"y":29.207876}},"provinces":[{"id":81007,"name":"الحائط","centroid":{"x":40.46578242082372,"y":25.98703710916808}},{"id":81008,"name":"السليمي","centroid":{"x":41.34244654660869,"y":26.29308308387064}},{"id":81004,"name":"الشملي","centroid":{"x":40.33697319222971,"y":26.862396498652146}},{"id":81003,"name":"الشنان","centroid":{"x":43.013260630692415,"y":27.059496932904498}},{"id":81002,"name":"الغزالة","centroid":{"x":41.3265875,"y":26.835137}},{"id":81001,"name":"بقعاء","centroid":{"x":42.38492247535399,"y":27.900037626621263}},{"id":81000,"name":"حائل","centroid":{"x":41.673729167023005,"y":27.521521476888704}},{"id":81006,"name":"سميراء","centroid":{"x":42.12425968543399,"y":26.492506484338392}},{"id":81005,"name":"موقق","centroid":{"x":41.19453402172998,"y":27.37549978942258}}],"image":"https://suhailapp.obs.me-east-1.myhuaweicloud.com/static-files/region_asir.png","mapKey":"hail"},{"orderIndex":9,"id":9,"key":"Northern_Borders","name":"الحدود الشماليه","mapStyleUrl":"https://tiles.suhail.ai/gl-styles/ksa.json","mapZoomLevel":10.0,"metricsUrl":"/northern_borders/mobile-metrics","defaultTransactionsDateRange":"-1/y","centroid":{"x":41.027417444038136,"y":30.97156581394864},"restrictBoundaryBox":{"southwest":{"x":37.955253,"y":27.831761},"northeast":{"x":45.464141,"y":32.153962}},"provinces":[{"id":91003,"name":"العويقيلة","centroid":{"x":42.25704811586929,"y":30.357165313035562}},{"id":91001,"name":"رفحاء","centroid":{"x":43.5293616629359,"y":29.644792096538175}},{"id":91002,"name":"طريف","centroid":{"x":38.65499453290945,"y":31.664196214020752}},{"id":91000,"name":"عرعر","centroid":{"x":40.9678093410463,"y":30.98960922384898}}],"image":"https://suhailapp.obs.me-east-1.myhuaweicloud.com/static-files/region_asir.png","mapKey":"northern_borders"},{"orderIndex":10,"id":11,"key":"Najran","name":"نجران","mapStyleUrl":"https://tiles.suhail.ai/gl-styles/ksa.json","mapZoomLevel":10.0,"metricsUrl":"/najran/mobile-metrics","defaultTransactionsDateRange":"-1/y","centroid":{"x":44.3440073133832,"y":17.551953704242568},"restrictBoundaryBox":{"southwest":{"x":43.59569,"y":16.95},"northeast":{"x":52.001753,"y":19.448889}},"provinces":[{"id":111003,"name":"بدر الجنوب","centroid":{"x":43.7160905,"y":17.920384}},{"id":111005,"name":"ثار","centroid":{"x":44.10606544834801,"y":17.97590597058463}},{"id":111002,"name":"حبونا","centroid":{"x":44.03995496657999,"y":17.853508774330376}},{"id":111006,"name":"خباش","centroid":{"x":45.76316739398078,"y":18.043890107398482}},{"id":111001,"name":"شرورة","centroid":{"x":47.110595319765615,"y":17.486947637153918}},{"id":111000,"name":"نجران","centroid":{"x":44.19306708534653,"y":17.5244436577356}},{"id":111004,"name":"يدمه","centroid":{"x":44.22198058430397,"y":18.581691532585744}}],"image":"https://suhailapp.obs.me-east-1.myhuaweicloud.com/static-files/region_asir.png","mapKey":"najran"},{"orderIndex":11,"id":12,"key":"Al_Bahah","name":"الباحة","mapStyleUrl":"https://tiles.suhail.ai/gl-styles/ksa.json","mapZoomLevel":10.0,"metricsUrl":"/bahah/mobile-metrics","defaultTransactionsDateRange":"-1/y","centroid":{"x":41.464232148061186,"y":20.02593462771641},"restrictBoundaryBox":{"southwest":{"x":40.829164,"y":19.44581},"northeast":{"x":42.129716,"y":20.82938}},"provinces":[{"id":121000,"name":"الباحة","centroid":{"x":41.464232148061186,"y":20.02593462771641}},{"id":121009,"name":"الحجرة","centroid":{"x":41.07889422235841,"y":20.203198335521904}},{"id":121004,"name":"العقيق","centroid":{"x":41.646822460764284,"y":20.257462945219757}},{"id":121006,"name":"القرى","centroid":{"x":41.36807751961936,"y":20.273898326750476}},{"id":121003,"name":"المخواة","centroid":{"x":41.4215861725123,"y":19.76801799923247}},{"id":121002,"name":"المندق","centroid":{"x":41.302872770021345,"y":20.157605998565842}},{"id":121001,"name":"بلجرشي","centroid":{"x":41.583743988060505,"y":19.88923812003347}},{"id":121007,"name":"بني حسن","centroid":{"x":41.36295240312482,"y":20.072541496848913}},{"id":121008,"name":"غامد الزناد","centroid":{"x":41.55353073568331,"y":19.67415984632521}},{"id":121005,"name":"قلوة","centroid":{"x":41.238302558558864,"y":19.942758872627127}}],"image":"https://suhailapp.obs.me-east-1.myhuaweicloud.com/static-files/region_asir.png","mapKey":"bahah"},{"orderIndex":12,"id":14,"key":"Jazan","name":"جازان","mapStyleUrl":"https://tiles.suhail.ai/gl-styles/ksa.json","mapZoomLevel":10.0,"metricsUrl":"/jazan/mobile-metrics","defaultTransactionsDateRange":"-1/y","centroid":{"x":42.58500358308977,"y":16.897199694154573},"restrictBoundaryBox":{"southwest":{"x":41.38948,"y":16.08843},"northeast":{"x":43.3365,"y":18.060398}},"provinces":[{"id":141002,"name":"ابو عريش","centroid":{"x":42.81415083449986,"y":16.965814097274002}},{"id":141010,"name":"احد المسارحة","centroid":{"x":42.96521968961733,"y":16.703645038957486}},{"id":141004,"name":"الحرث","centroid":{"x":43.141599637627436,"y":16.812003280506644}},{"id":141009,"name":"الدائر","centroid":{"x":43.13836719047619,"y":17.332664542857145}},{"id":141013,"name":"الدرب","centroid":{"x":42.216780052949744,"y":17.725161436784678}},{"id":141006,"name":"الريث","centroid":{"x":42.707976,"y":17.663274}},{"id":141014,"name":"الطوال","centroid":{"x":42.894743000000005,"y":16.4548305}},{"id":141012,"name":"العارضة","centroid":{"x":43.114194499999996,"y":16.937821499999995}},{"id":141011,"name":"العيدابي","centroid":{"x":43.025211500000005,"y":17.249993000000003}},{"id":141007,"name":"بيش","centroid":{"x":42.49249708442299,"y":17.377022481142557}},{"id":141000,"name":"جازان","centroid":{"x":42.58500358308977,"y":16.897199694154573}},{"id":141003,"name":"صامطة","centroid":{"x":42.95180465241114,"y":16.62018126613816}},{"id":141001,"name":"صبيا","centroid":{"x":42.75116137352931,"y":17.15508399778257}},{"id":141005,"name":"ضمد","centroid":{"x":42.74983642491161,"y":17.11062934737523}},{"id":141008,"name":"فرسان","centroid":{"x":42.12070190012882,"y":16.696307743297094}},{"id":141016,"name":"فيفاء","centroid":{"x":43.07931106749507,"y":17.313763009884216}},{"id":141015,"name":"هروب","centroid":{"x":42.88615891838771,"y":17.362284283847153}}],"image":"https://suhailapp.obs.me-east-1.myhuaweicloud.com/static-files/region_asir.png","mapKey":"jazan"},{"orderIndex":13,"id":15,"key":"Al_Jawf","name":"الجوف","mapStyleUrl":"https://tiles.suhail.ai/gl-styles/ksa.json","mapZoomLevel":10.0,"metricsUrl":"/jawf/mobile-metrics","defaultTransactionsDateRange":"-1/y","centroid":{"x":40.203656830089905,"y":29.949845524050016},"restrictBoundaryBox":{"southwest":{"x":37.005875,"y":28.36794},"northeast":{"x":41.99684,"y":31.749873}},"provinces":[{"id":151001,"name":"القريات","centroid":{"x":37.33710356706453,"y":31.31739936265569}},{"id":151002,"name":"دومة الجندل","centroid":{"x":39.87360533717283,"y":29.814014711960713}},{"id":151000,"name":"سكاكا","centroid":{"x":40.23630832398995,"y":29.988216049720492}},{"id":151003,"name":"طبرجل","centroid":{"x":38.190265696126765,"y":30.494012618844177}}],"image":"https://suhailapp.obs.me-east-1.myhuaweicloud.com/static-files/region_asir.png","mapKey":"jawf"}],"message":null,"messageTemplate":null,"status":true,"meta":null} \ No newline at end of file diff --git a/tests/fixtures/suhail_live_2026_07/api/settings_app.json b/tests/fixtures/suhail_live_2026_07/api/settings_app.json new file mode 100644 index 0000000..ac60c2f --- /dev/null +++ b/tests/fixtures/suhail_live_2026_07/api/settings_app.json @@ -0,0 +1 @@ +{"AnonUserRestrictionsEnabled":true,"AnonUserSessionTimeSec":900,"AnonUserParcelClicks":15,"TransactionsFilterTypes":[{"Display":"الكل","Value":null},{"Display":"أرضسكني","Value":"أرضسكني"},{"Display":"فلل","Value":"فلل"},{"Display":"أرضتجاري","Value":"أرضتجاري"},{"Display":"شقق","Value":"شقق"}],"AuthVerificationCodeTimeoutSeconds":300,"Reports":{"ParcelReportUrl":"https://reports.suhail.ai/api/report/Parcel","OrderReportUrl":"https://reports.suhail.ai/api/report/Order"},"EnforceOfferVerification":false,"EnableNafath":true,"VerifyAccountDismissHoursTimeout":24,"Map":{"MaxZoom":20,"MinZoom":9.4,"MaxBounds":[[46.136283976881685,24.285527825347828],[47.48678856414921,25.191409011097292]]},"IsUserTrackingEnabled":true,"SegmentWriteKeyAndroid":"UfVKIEDDpKxJ37CXxuFpSsOybierN7HW","SegmentWriteKeyIOS":"wToqB5JFsnJLNQ1znbFc9xqdq55uAHIQ","SegmentWriteKeyWeb":"","NewsFeedFilterMinDate":"2020-08-01","UnitStatusColors":[{"Status":"available","Color":"#4EA96F"},{"Status":"unavailable","Color":"#556E7A"},{"Status":"booked","Color":"#DC9B36"},{"Status":"confirmedbooking","Color":"#DC9B36"},{"Status":"sold","Color":"#e63946"},{"Status":"default","Color":"#556E7A"},null],"realEstateTaxPercentage":5.0} \ No newline at end of file diff --git a/tests/fixtures/suhail_live_2026_07/api/tiles_modes.json b/tests/fixtures/suhail_live_2026_07/api/tiles_modes.json new file mode 100644 index 0000000..99dbe01 --- /dev/null +++ b/tests/fixtures/suhail_live_2026_07/api/tiles_modes.json @@ -0,0 +1,399 @@ +{ + "zoning_color": { + "label": "استخدام الأراضي ", + "label_en": "Zoning codes", + "fill-color": [ + "case", + [ + "==", + [ + "get", + "zoning_id" + ], + 1 + ], + "#f28e2b", + [ + "==", + [ + "get", + "zoning_id" + ], + 2 + ], + "#fa6d6d", + [ + "==", + [ + "get", + "zoning_id" + ], + 3 + ], + "#f1ce63", + [ + "==", + [ + "get", + "zoning_id" + ], + 4 + ], + "#ae123a", + [ + "==", + [ + "get", + "zoning_id" + ], + 5 + ], + "#e74545", + [ + "==", + [ + "get", + "zoning_id" + ], + 6 + ], + "#b07aa1", + [ + "==", + [ + "get", + "zoning_id" + ], + 7 + ], + "#027b8e", + [ + "==", + [ + "get", + "zoning_id" + ], + 8 + ], + "#fabfd2", + [ + "==", + [ + "get", + "zoning_id" + ], + 9 + ], + "#bab0ac", + [ + "==", + [ + "get", + "zoning_id" + ], + 10 + ], + "#305d8a", + [ + "==", + [ + "get", + "zoning_id" + ], + 11 + ], + "#d7b5a6", + [ + "==", + [ + "get", + "zoning_id" + ], + 12 + ], + "#9d7660", + [ + "==", + [ + "get", + "zoning_id" + ], + 13 + ], + "#a0cbe8", + [ + "==", + [ + "get", + "zoning_id" + ], + 14 + ], + "#8cd17d", + [ + "==", + [ + "get", + "zoning_id" + ], + 15 + ], + "#59a14f", + [ + "==", + [ + "get", + "zoning_id" + ], + 16 + ], + "#a0cbe8", + [ + "==", + [ + "get", + "zoning_id" + ], + 17 + ], + "#FFFF7F", + [ + "==", + [ + "get", + "zoning_id" + ], + 18 + ], + "#FFBF00", + [ + "==", + [ + "get", + "zoning_id" + ], + 19 + ], + "#BF7FFF", + [ + "==", + [ + "get", + "zoning_id" + ], + 20 + ], + "#6418AB", + [ + "==", + [ + "get", + "zoning_id" + ], + 21 + ], + "#FF4DD8", + [ + "==", + [ + "get", + "zoning_id" + ], + 22 + ], + "#B2008B", + [ + "==", + [ + "get", + "zoning_id" + ], + 23 + ], + "#FF7F00", + [ + "==", + [ + "get", + "zoning_id" + ], + 24 + ], + "#FF0000", + [ + "==", + [ + "get", + "zoning_id" + ], + 25 + ], + "#970000", + [ + "==", + [ + "get", + "zoning_id" + ], + 26 + ], + "#3C0000", + [ + "==", + [ + "get", + "zoning_id" + ], + 27 + ], + "#7FBFFF", + [ + "==", + [ + "get", + "zoning_id" + ], + 28 + ], + "#00A884", + [ + "==", + [ + "get", + "zoning_id" + ], + 29 + ], + "#FCBCB6", + [ + "==", + [ + "get", + "zoning_id" + ], + 30 + ], + "#F5F4F2", + [ + "==", + [ + "get", + "zoning_id" + ], + 31 + ], + "#169404", + + "#cccccc" + ] + }, + "shape_area": { + "label": "المساحة", + "label_en": "Parcel Area", + "fill-color": [ + "interpolate", + [ + "linear" + ], + [ + "get", + "shape_area" + ], + 0, + "hsl(86, 83%, 65%)", + 300, + "hsl(64, 63%, 53%)", + 400, + "hsl(42, 80%, 55%)", + 500, + "hsl(25, 100%, 61%)", + 600, + "hsl(8, 100%, 66%)", + 700, + "hsl(348, 100%, 66%)", + 800, + "hsl(331, 83%, 60%)", + 900, + "hsl(312, 56%, 51%)", + 1200, + "hsl(288, 49%, 47%)", + 16992097, + "hsl(266, 45%, 46%)" + ] + }, + "price_of_meter": { + "label": "سعر المتر", + "label_en": "Price of meter", + "fill-color": [ + "interpolate", + [ + "linear" + ], + [ + "get", + "price_of_meter" + ], + 0, + "hsl(0, 0%, 80%)", + 109, + "hsl(64, 63%, 53%)", + 180, + "hsl(42, 80%, 55%)", + 287, + "hsl(25, 100%, 61%)", + 478, + "hsl(8, 100%, 66%)", + 750, + "hsl(348, 100%, 66%)", + 1150, + "hsl(331, 83%, 60%)", + 1900, + "hsl(312, 56%, 51%)", + 3150, + "hsl(288, 49%, 47%)", + 20954060, + "hsl(266, 45%, 46%)" + ] + }, + "transaction_price": { + "label": "قيمة الصفقة", + "label_en": "Transaction Price", + "fill-color": [ + "interpolate", + [ + "linear" + ], + [ + "get", + "transaction_price" + ], + 0, + "hsl(0, 0%, 80%)", + 4167, + "hsl(86, 83%, 65%)", + 70000, + "hsl(64, 63%, 53%)", + 100000, + "hsl(42, 80%, 55%)", + 175000, + "hsl(25, 100%, 61%)", + 270000, + "hsl(8, 100%, 66%)", + 400000, + "hsl(348, 100%, 66%)", + 570000, + "hsl(331, 83%, 60%)", + 850000, + "hsl(312, 56%, 51%)", + 1390000, + "hsl(288, 49%, 47%)", + 4897964892, + "hsl(266, 45%, 46%)" + ] + }, + "plain": { + "label": "", + "label_en": "", + "fill-color": "rgba(0,0,0,0.1)" + } +} \ No newline at end of file diff --git a/tests/fixtures/suhail_live_2026_07/api/transactions__9941681.json b/tests/fixtures/suhail_live_2026_07/api/transactions__9941681.json new file mode 100644 index 0000000..909b8fa --- /dev/null +++ b/tests/fixtures/suhail_live_2026_07/api/transactions__9941681.json @@ -0,0 +1 @@ +{"data":{"lastExecutionDate":"2026-05-19T00:00:00","lastExecutionPrice":6393.0,"transactions":[{"_priceOfMeter":6393.0,"transactionPrice":1200000.0,"priceOfMeter":6393.0,"transactionNumber":-148623,"transactionDate":"2026-05-19T00:00:00","type":"مبنى سكني","subdivisionNo":"1082","subdivisionId":"1023186","polygonData":"{\"type\":\"Polygon\",\"coordinates\":[[[46.762974723,24.724893689],[46.762786858,24.724776766],[46.762647714,24.724963278],[46.76283558,24.725080202],[46.762974723,24.724893689]]]}","noOfProperties":null,"zoningId":3,"neighborhood":"الروضة","neighborhoodId":1000417,"region":"الرياض","parcelId":"9941681","parcelObjectId":9941681,"parcelNo":"52","blockNo":"0","area":187.7,"centroidX":46.76281121860331,"centroidY":24.72492848404151,"metricsType":"فلل","provinceId":101000,"provinceName":"الرياض","regionId":10,"geometry":null,"parcelImageURL":"","projectName":"","landUsageGroup":"سكني","sellingType":"فردي","landUseaDetailed":"مباني سكنية","centroid":{"x":46.76281121860331,"y":24.72492848404151},"propertyType":"مبنى سكني","totalArea":187.7,"details":"المساحة الإجمالية للصفقة 188م²\nعدد القطع 0","landUseGroup":"سكني","orignalTransactionNum":-148623,"propertyNumber":"52","transactionSource":"RER","isLowValueTransaction":false},{"_priceOfMeter":6260.0,"transactionPrice":1175000.0,"priceOfMeter":6260.0,"transactionNumber":-130632,"transactionDate":"2026-04-14T00:00:00","type":"مبنى سكني","subdivisionNo":"1082","subdivisionId":"1023186","polygonData":"{\"type\":\"Polygon\",\"coordinates\":[[[46.762974723,24.724893689],[46.762786858,24.724776766],[46.762647714,24.724963278],[46.76283558,24.725080202],[46.762974723,24.724893689]]]}","noOfProperties":null,"zoningId":3,"neighborhood":"الروضة","neighborhoodId":1000417,"region":"الرياض","parcelId":"9941681","parcelObjectId":9941681,"parcelNo":"52","blockNo":"0","area":187.7,"centroidX":46.76281121860331,"centroidY":24.72492848404151,"metricsType":"فلل","provinceId":101000,"provinceName":"الرياض","regionId":10,"geometry":null,"parcelImageURL":"","projectName":"","landUsageGroup":"سكني","sellingType":"فردي","landUseaDetailed":"مباني سكنية","centroid":{"x":46.76281121860331,"y":24.72492848404151},"propertyType":"مبنى سكني","totalArea":187.7,"details":"المساحة الإجمالية للصفقة 188م²\nعدد القطع 0","landUseGroup":"سكني","orignalTransactionNum":-130632,"propertyNumber":"52","transactionSource":"RER","isLowValueTransaction":false},{"_priceOfMeter":7956.0,"transactionPrice":1372000.0,"priceOfMeter":7956.0,"transactionNumber":-28480,"transactionDate":"2026-01-19T00:00:00","type":"مبنى سكني","subdivisionNo":"1082","subdivisionId":"1023186","polygonData":"{\"type\":\"Polygon\",\"coordinates\":[[[46.762974723,24.724893689],[46.762786858,24.724776766],[46.762647714,24.724963278],[46.76283558,24.725080202],[46.762974723,24.724893689]]]}","noOfProperties":null,"zoningId":3,"neighborhood":"الروضة","neighborhoodId":1000417,"region":"الرياض","parcelId":"9941681","parcelObjectId":9941681,"parcelNo":"52","blockNo":"0","area":172.4,"centroidX":46.76281121860331,"centroidY":24.72492848404151,"metricsType":"فلل","provinceId":101000,"provinceName":"الرياض","regionId":10,"geometry":null,"parcelImageURL":"","projectName":"","landUsageGroup":"سكني","sellingType":"فردي","landUseaDetailed":"مباني سكنية","centroid":{"x":46.76281121860331,"y":24.72492848404151},"propertyType":"مبنى سكني","totalArea":172.4,"details":"المساحة الإجمالية للصفقة 172م²\nعدد القطع 0","landUseGroup":"سكني","orignalTransactionNum":-28480,"propertyNumber":"52","transactionSource":"RER","isLowValueTransaction":false},{"_priceOfMeter":8318.0,"transactionPrice":1100000.0,"priceOfMeter":8318.0,"transactionNumber":-12877,"transactionDate":"2025-09-07T00:00:00","type":"مبنى سكني","subdivisionNo":"1082","subdivisionId":"1023186","polygonData":"{\"type\":\"Polygon\",\"coordinates\":[[[46.762974723,24.724893689],[46.762786858,24.724776766],[46.762647714,24.724963278],[46.76283558,24.725080202],[46.762974723,24.724893689]]]}","noOfProperties":null,"zoningId":3,"neighborhood":"الروضة","neighborhoodId":1000417,"region":"الرياض","parcelId":"9941681","parcelObjectId":9941681,"parcelNo":"52","blockNo":"0","area":132.2,"centroidX":46.76281121860331,"centroidY":24.72492848404151,"metricsType":"فلل","provinceId":101000,"provinceName":"الرياض","regionId":10,"geometry":null,"parcelImageURL":"","projectName":"","landUsageGroup":"سكني","sellingType":"فردي","landUseaDetailed":"مباني سكنية","centroid":{"x":46.76281121860331,"y":24.72492848404151},"propertyType":"مبنى سكني","totalArea":132.2,"details":"المساحة الإجمالية للصفقة 132م²\nعدد القطع 0","landUseGroup":"سكني","orignalTransactionNum":-12877,"propertyNumber":"52","transactionSource":"RER","isLowValueTransaction":false},{"_priceOfMeter":6959.0,"transactionPrice":1200000.0,"priceOfMeter":6959.0,"transactionNumber":-13419,"transactionDate":"2025-09-04T00:00:00","type":"مبنى سكني","subdivisionNo":"1082","subdivisionId":"1023186","polygonData":"{\"type\":\"Polygon\",\"coordinates\":[[[46.762974723,24.724893689],[46.762786858,24.724776766],[46.762647714,24.724963278],[46.76283558,24.725080202],[46.762974723,24.724893689]]]}","noOfProperties":null,"zoningId":3,"neighborhood":"الروضة","neighborhoodId":1000417,"region":"الرياض","parcelId":"9941681","parcelObjectId":9941681,"parcelNo":"52","blockNo":"0","area":172.4,"centroidX":46.76281121860331,"centroidY":24.72492848404151,"metricsType":"فلل","provinceId":101000,"provinceName":"الرياض","regionId":10,"geometry":null,"parcelImageURL":"","projectName":"","landUsageGroup":"سكني","sellingType":"فردي","landUseaDetailed":"مباني سكنية","centroid":{"x":46.76281121860331,"y":24.72492848404151},"propertyType":"مبنى سكني","totalArea":172.4,"details":"المساحة الإجمالية للصفقة 172م²\nعدد القطع 0","landUseGroup":"سكني","orignalTransactionNum":-13419,"propertyNumber":"52","transactionSource":"RER","isLowValueTransaction":false},{"_priceOfMeter":8582.0,"transactionPrice":1135000.0,"priceOfMeter":8582.0,"transactionNumber":-14129,"transactionDate":"2025-09-02T00:00:00","type":"مبنى سكني","subdivisionNo":"1082","subdivisionId":"1023186","polygonData":"{\"type\":\"Polygon\",\"coordinates\":[[[46.762974723,24.724893689],[46.762786858,24.724776766],[46.762647714,24.724963278],[46.76283558,24.725080202],[46.762974723,24.724893689]]]}","noOfProperties":null,"zoningId":3,"neighborhood":"الروضة","neighborhoodId":1000417,"region":"الرياض","parcelId":"9941681","parcelObjectId":9941681,"parcelNo":"52","blockNo":"0","area":132.2,"centroidX":46.76281121860331,"centroidY":24.72492848404151,"metricsType":"فلل","provinceId":101000,"provinceName":"الرياض","regionId":10,"geometry":null,"parcelImageURL":"","projectName":"","landUsageGroup":"سكني","sellingType":"فردي","landUseaDetailed":"مباني سكنية","centroid":{"x":46.76281121860331,"y":24.72492848404151},"propertyType":"مبنى سكني","totalArea":132.2,"details":"المساحة الإجمالية للصفقة 132م²\nعدد القطع 0","landUseGroup":"سكني","orignalTransactionNum":-14129,"propertyNumber":"52","transactionSource":"RER","isLowValueTransaction":false}]},"message":null,"messageTemplate":null,"status":true,"meta":null} \ No newline at end of file diff --git a/tests/fixtures/suhail_live_2026_07/tiles/riyadh_15_20636_14069.vector.pbf.gz b/tests/fixtures/suhail_live_2026_07/tiles/riyadh_15_20636_14069.vector.pbf.gz new file mode 100644 index 0000000000000000000000000000000000000000..9ffd334b61f35ef05604f63e475eb10b96da81eb GIT binary patch literal 742832 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%0DF<` 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

-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 z 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 d{5vPx0@Q^C*6_VgZa`pv3gBrgEM*-j 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

  • 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

    CYoBBH1vD*KEGF=@AKF5()Zra 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

    $kz+je7`D@bXKmoWFs^Ow&Whmgf)(~ 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

    YYL} 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 bez3eAe?AW`>U6Pn~Co##LXc7w` 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

    HMD7BetL9 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

    Fn z9IskZ%fedHWz|w{x^@dwQl5U%aTXOX4p{Ws}Rw#)zQ((>&JYNxVpcr z#DTTk)3&c%;<>?U=|x)8TbWpISu*u|C1~#bwS!*y1uq8vI2-@^OEtZ^am*>*UE&&m zd!yj11CxIPQq_UAo!4$JY}0Np{9)80Z!es?kS^=`rCNEJpq8**PSM^Ik#5l2!)ZUk z4G|VPevU8Cy=MGSJ*VmM9KVJuzkh1x-=D^@cjaAE3$mWL$`60>(W6>&yxA3M1EWb%&%8#o9=mO=X6>u@n;n?rE@y+@nt^w=XJFEfYx|d{;A$?s}HnXxcW#7 zC*tspvpOHFqED{9xNw1W-v2FoGnR~z5l6_s{AZ6Je1@Ik8&u)bS|K+7`}a1XNlY!# z^2KAfXFLCDx~#x1y)f=Xs1fpu)>K?p@2_P?rJVjMT7BK)l;<%ysU5$VE%&0&9qm%9 zBt4kewG%Dmn-XoqNyg7#tKmf0$68grME;pmYSp*>zaJ1zaGs>d$4*o=d*9FdOxc+O{xqjO5ZMZk$zJ~q;~yQ z+WV?$>a$7@+*{;uirDvrHLvTPkhNA1)f&B|FjfqA+YvwwLhCIw_|6w znmiq=kb7vd=iqKUapj{5IXU&-k0;4ZkatF_Fd6HiVgccGtqJb-m|~qh}C)OnXN`@>>4%NL~l=Z`8Ej zSTOa+XLIB!S;fG3XMOd=8vY-6Z9C_lH=`|h=sh5C@ zCdp{XCpuaVdcID-8mA@dE9p&1`eq}S>CM`YN`mCf{A}%1JLUk{Xd()1wQkc)*w3G*EQFOzbh*|2SH`DUchWEr8tOKTThniRYKkKI+6Pf5)+Y zraUkzdZJa;;ihY@`@UH(?_PY=UQkNmJLj}6+#cnxv`S>@dkt1h+=;)_l&QHmTAtgz zR_~N9&WjxFmYy^n(Tg0i*;?yZwVh_){$skjYmy&m*+cn<4!ZnIc2B<&IsW97oS!E_ zD>vc>J@2knAjnBLc+}>FdndR=3kcNEX_ux+kB=Wz%O7R^q%;c$a44|xslz@>&Ex9B&ui>w_dZYLB zxJr>9n)8=tIXO)qbv2O-#1^kTA$#|Hq$bpRf@}V)1)Z7Pw|Q9kujX%N&yss8WiUcr zxh>ktE!4Tl-lex2#-jmga(hm{evE(Uv9DH{Kb9g*wf6i3_ixrM?Fc~rt5{V;R9)vg@jzkfp~YXd{tG!vsqea6wpvh3$n#JRCb z71d4n=Qm&C;JcIMMc}cJ`w#yyv=?>u>60?i>%L>}e_clHmV87#4IZW$Iv zfXV6o!L3Ph*fMiX|N*#v<^TL`><1cRjXsX3|zIP-L3C%Q(gP0 z)4W`}U%t93vlC@%U-k`}zrFpu+6Cl9@A#uXYNqt3Y5`}1cBnS?n&(fQ>TRUpM0H(r z-f-FNWEeag$8N6?dNJ0lt;Q|T%4;+U}G3X6_%= zbE*#?ofE4m9{aQGFOA-3vfL^x2c$0TdJ&*c@nl&3}(_(k& zoKLP;B!k^oTDjRq?N9v8diAWb=e=5+ly~Lljd;e_rZvJGkFqDJhmdzd#xHzJ&dlp3 zhCjOEG5&s+8Vw_BgBu;bG!_8_N znZdJahi0ka*r?jk=3d(PGYabPqSad~=eoyZZn?;%`O9U@-FP7UqbiNDB=;Aee^*v% zoV_yM7eg&Ex~{g4cv_;BZ{yk|`EQ;k3!Z%sY5QI+y!lLBqQKziQZt^v=ps`=4{I*V z1$b{)A6~yP6eIt|;|uk-ia$z2t3AL@&XCHjq(k$5)EkF=YW2^>H(KbV{mxwTP8o(= zi`KHMQb>P#ee%z~L@(l5cR4@x$=r$(9n2)4*5q@f1s{*NrjqMmhwOP`$jL^HcuP0wsdkq z|M2Pc#W?vbX=4TA^6x&`uc9i(%Ct25{p%-c4ePTWHH)WSyZdoW+8o(F<7DpZ^ElOz#^etLtz6;kQ5e*{^=L z<|jY<_3wZC&%gNT@A!UprTVmiZ=Ns#K&R8|4F;pZWHg(Y!D6r)YzDi*VQ?B;3=<8m z25y>Unrxb4nrfV8oNk<9oDK_(me^&!llXqt|N5q&n1Lb1VzioUW;?T3tVppqEJ(4s zT9IO(Vn>Q?h7BoRpB2sE`&rq!OhIvglQfp#g`Ug#e)cFE$KnDLNtAXTE5=g$DqK)p zfz!saAYvNd&l+Fd5R^$UnM5h%?yh`4%RC+>C{ti6i88#ne>&gKd>*9=$~2fxqLl6G zUB>sbggdxKGhil(lE18SE8owaj^G;2g4rZW)u*{L`F=K1e@0N|z+Bqw&hZ4kpT%5w zE-3S0zHR}5QfbKA&G)lsvB83}5EhZflCUgnqWGe|ctKeVOGp%-Rb6xWepcOdMNpQ) zGTK;nge~CvnP(2J(Q@KGYWgH_D&NnVLY@lB3Rp>^xVzK}c`3hnSx{ENY7(V<`>>do zmbV##vIf?YD5XmWjC?=KI~Oe|>tH>JQa__g&-b(FPSgw=U?YjrqN@~R@u*H0lufXi zM5)}?;1pl<@S31(fvqG;an0~gYC54X!Bjl_p@s)X9Z;k>?Bb_HpaT} z{meh^lA!E@-L#cn9=nL|XRmUb1Z59=LZYO)`Yh!8S=RlNg7PWsrCE{{UM_qeOB_xX zl+WOE0>xm-{ZyC$zo8xh*$4YcL+P5)ER@uPk~l$e1BEuZ>(RiTIfA_V2n;V*Q5Nuc;|D*BA?XLVOQ1m&;b8zd7DZpqmt6y{@8Qs0EXCVf%*mLOES zX`zDhE%-Kx5@re#E`whb8nwTHza@Q9yKYo`(fxuhLHQ2+9ce6{3rB@|$$ouRQ2sl7 zmqZygl%|VZ--ELIL->0VC1`KP zTK+k^>vPAzH%|BwZ6s5gR`C7I`yh_wf5MMxN_TUJmG5VFAEBxL2l#?S@v`QL9UbqL zA}BwBpVG!Mb=V;SlENfG`5F8piQ=&(Wij8+dVSE@{W<&-P3AV1uH^e!XCP|2U%)R( zlz?eDLPs^deCn*00 zf1m}8>q0~rJX(TI-M_Tp-CuruB*2EKK|0RRsgCwzL%Dz31j$3_L`Ab=;0<7E$C z%iUOSceLOf0`Q`643?iK*tx>u(ozM+8^DJ)oVfMzYq-L)6V40HVE|tm$8)LgT&}Qm zj}E~(0^mpEWG$%qlq>8*M~dJa1@I@1=d)rXSJ>NQd4h8cAb`e6npQZ6E370MImZD4 zX`Fy*P4l?IdaIuZ&Iy1Z8fRp7+H$Ti&*v8f=OjQdjZ?PTV-{Cfco?qNDS!|fCta8B z!WCAT(Iq&c0AVyv;#{u{TwyH_A_V6&Ksb>6>G)5Rg#3iW+z^~I01>qD;ga>jgvO3n2GNa;qulA7Xjjl^RujPi5O4dHNm+AkU-;PY;Io76?QS_ znc!RoNCc9f(xmGYdbRvkrr=xwNTQ7=YDwM-vER?2{z(Q%A?o?*142JvY`P^lR{>IK zoQOra7Ot@5{xre429QSMw6ARjuCP1jZVJwIfOO*gxVlf{3M-THd;=hZ#wnUqwU#R^ zwDzjtWCCQ-I4ygE7juPGyvO;;2FRgtdiK<=b>x$vk@6r9@t`NVCyzEn(4?Avs~DF7%Ws@u z5Fho52Jv0lI)y7N^E}$(K7iM>*d+Y(@a}N6?5K(18by#1OGOAT6o>SKbvq+ z2cD91NN4oYnY?voJ3FMacXqOG>EI-dle)G+#BkTM zkQ1zfQ#8)#>RPK%_Wc-BhUg%a#wnfBC*&u;x>az(ba0xu)m%HpJl}YfAUNSVI73|b z9j!usJS#9Lh|s}V9ZBC8?JfL-D=aAXtl&iI;2do{&2#f-@^7((fp`PoJ0VI3(UKFR zGoII(Vs+*VIu@g|oY$$e7@dkcuTyy!bSf}b?)+4HxG=9Z?zm&)ba0V2vaSt13%J7W z_p}R6ybdnWIGxMOh1)RVj@j%49b6`^+{%2t@TKd|2u`97uFyCG8xxmtg*As`HYrI5 z$uv&w#=y10b4Wu=ouY%QM9wF^A}maDN8dhG2iItvVPlopvF<+Tfu!l+I#Hu>PZ1fu zZ$?hK4sH-7ds>9>h&*ba3QmR&GKt@1juqjzUmV6PSvtt3ak6FwZ{Tjs{|#n=a&&N$ z!ZBDP7Yaq)|0Gsma&>Tvs2I03i_q|J;03|S)4^>TXK;Iq2wAGHp*Nkcg8~}IeR9rp zuCQnsIv48T4vo`p_7NdVW%p^pDbm4R;&>Jn3ZF6UE&7bbIw+xW!e_<_pRwoF6~QUh z!95zMW?O;?G2go<2~L>~?h`p%Jr@b}+=hmuTn80I&PES0&y8;}nO&)a2Rc%gtjo~8 zl`AZ&1haNkI;f_N$A4qSX0EUUU8pu{bnuYI@tfkcQ><4Ps^?lA)X_M_^J3O|x%RGe~9`!;s)}Vt%8YjdYVi)SC3}b~R9XzI~pPY4DxWej!F^Sl$gD14% zlvxHb({T^2X^Re?68&-Tv2%r8zK>e9RR?V}PW{fD#av-6O~`52!801CZ&%t9zK^w? zel6nF4jLqCdyUW;Z}V_ZJl8=d(S_Pt=-_TF$1BCaw@i4UBi1hYE({kIx$r7_VqH4u zrVS@}RWsuX3+TaYTaON2(m3g#qzcdQp3M37>fjYIR$0+GLwI7hFm~$G!E2)G;iY0c zX-Vio_3PjbajQGi*9#SY8_zulbnuqO3EC7mMZ`QFc&<07gCQCxcWT6J?#9kalRT`0 zcQlnTI_Za8VXxj?7nl(pyeDqaEpcLcysqGJ?x+qv5O>AmzWH2XC!{0qu7?A9nj^m} zSS)*dF(yYn^l*^I@mNx{Nq8(W+3%@`Lo`m|F2J>pJu(M~; z-}TYMVcKv?XC+MH``KNY+4R-J5ei3dneu(Eu;b0>_W0@HC~Y);TSt~~g*^&Ev+l2l zV>C|QrlK{%U3q}+Q-B_h(>QT+%S~KiKIIs_1?s6aAVIrwUAe;Iaxvd>LJvW-@x-hS zwsD2|7GhX&QV+p2PQ>Db4P0U2H}J6XlpaE8oW5Cp2ClGUGP(`bQ={9mEv>>|xhK!? z!}M^PHl8e}kMIxTUZJfB*TWear_#|c zRf%;UJ&SH?lpdmKoQzLXxNvuS(B{PG;XI8qYIR@8-PmCtJbaJU!v#GdtT0$MbZisB zzbr|K)5AsDaQbzs%X zJj}~?akr=G;W}~IXSYt{ZtO+_<_y#IaD!$_D|h|{7VMz0$k0P3Z8$BP^F*wDuM=|` zS$fE(aniO8F5?P&6NJ)}qlcSB<27U86RxnXcua=p>fsiR)3nQH7FXD%N}QiOJ=~^o zqGtC2S6Jc|O!DXJp@7E8oe{a2E9`L_?$Sa%+@W#u*9M5#KVsCK}UHJ=`PC&z?RPuCV7>I6q~2xKHHluC(xd>~IvGoR`xe zk&|nda)sRvL}9MbLnTp|XO;_Le$tQO$pbx95jWS?PO<2(FJl6#S`RfePOLG!Fhv zcC9NCvA_3y%!s|vLl=!xzuny_+*BD3bnBsqxJjKoLir?K$3m@_dgvvtm$hlR2rCj% z!@tr)AB{7(XJj&0*vSG6-(KsXpXi89OAzwhA|0_eWDTFNxp^&DSpP!|mj?9kmS`!s z&myj{0}VLOgL)VuhPRUoAvPfWtIS+L}NS2D%U7VVAD~ju=RXU5UmR z5$AOGBgfAGM``0}n3KPUE9}fIlplWs9HVi1U8?5tee76vjj(|MG|2Ea)EO^gFn@X6 z0D&}4~zK@j;VGVXX4U#)MQcOQ)MyzRE>q);)d*%8WK20PVLDgX%Mq+1$TmO@ zZDdKV`9igpyvO|GO#|f8I58`H=W~UfD?*cT%K&*aPT1T@DcM2uA6boLoXt3h$?(W4k z&=)I3i)(R;7q{Z>8X&l9f%d=OA7+?gh6Koc&YnHHdk@mu@fSBtakoZDM4&DQ#f)0= z#d@A|L-WrXJ3c|lT+fJ~4UpUbRAz=YsuE6~N%5eJhE|u)?i53#pO~I6kkF>J%D6wg zQ^~>67nOix9+!1T93UZmBA1`{jtm zrv7kUXRCRPt)>d^pHw6|YHGuAAr^iA0SRE1ZmxtnOLd+JSrj-^GH{t?dlbaLt3RAc zI8(~0d0s)sExjvN`a7|&^=-4w1ClRt;LnoTpo9CHQT_vFAq559IchP+A6>ZFQhkzLmfZ}v3Rz3_=+{qB3*`3JT z`@m?P{AdE)83@b76~`KE-L4N)LY0B)e}no4c^A={Dq|)!7lZF?6o{wLBVR3={6OxJ zY?~XH>*Ya5;4SVFr$Cr%#9(aB4$sFJRW@s#mju^Tpk9&D`Olwd)@ef+fJ!f5`igN2 zT26w6ze#Y-9z4|JuK$mX{h6@>@qrAs!9Cxo?1;i&aVu87PoyIQ0LuR5rLC?_4tci^8BRPHMV60vmTR|%59rFZ_ z97GlFTYZ~7($%-}Oo$!$FG82W@JlwN@Umc<$c4}3eLbXbuYkbLP3~hhfgdTXniM9l z%nfa|l(Ft`lk4!`Z5dYzv^r!FrTyg?A+uv`u;28VtqM#iI6}<8I1TCZ&@==%e^fpZ zBPD(0U@Wi!$juf=oh{JE zb>AbhQ@L;9tzg0zNj|Bm^WR;48f~hWcE9VM21VDuqHl!}YLqDi)PxxsN|n zOQ;GRCNlWm$=kKrWxHu|Xz3l%YoE_ik7?{vG*xc?o22O{{W;2iE#YQ4CEI(!ZT}U{C!mBF9|dcBRsZ)qf=R8^6+L z5q%(8)0{7zLgikKG?k2_*!@;9A(61vzgTWjqt*ZGpl6R5JRzV$nSGStueJ=+Aib4b ziz=njzhpWd1D<)ZkaWuYUimobnY+2OJ?F7zWUP5s*v04lX0NfFG2**1EF9}Jf{Iw@ zqIC;Qouy?mzAb(^UwL?cNHS*$_)7dwNRwPyp<5UtofCx0OQY&~1iOfNF#4lis>XtL zAyeLi4g)YM*;MB*2gy>h{Z;^&k9@msmyZ&rnovSg_!ySRPsyR0!1`mkY$unjD|g9B z9i*Bk7ssW{G1R?ZPM~kcfaO{AKVr2bd4s%~Fa^Ed(vEi8!4#Q^@=LIhJNS+R4pct| zW{}Zl?k~R15m1U!3+tGecr=IF;H^l4HrwnKA){Vtp%;87=Vk(b+w8kEx60OD@j0{X zzcc8ae9&XugnJjo2{wkCX~^FIf0C=9D*B%@-GVB~&&{NWyv?y9hS$eU`(% z0P}uLyLtdN**1r|FUio^K4xW=tdIK?I>5*eQ$z z_aEP|&VK+kITyX8kU6s6zeXS;Fv4u%vCAnDPv+=-J1I=)Ow~^(>Eq8LRYHg;S25LZ zjYsGBDLiwQn7kNlwC42@nO{iE-6Jx-klMTB@Y7$0L3wY?fX!S?hZio+8^4JcAaTUe zr7HMPN~5U-{Ov*`HXMR%UZ$AuZmfbg%Pqa;Cfl4s4q@^XrB)zC$u$L0DIuFMW(u%l z&@?bc9AtWgftXBOLP@PxePh53-w#T_%}1$!iNv znj9lONl_Twj)O=%_{0l4p6eT3=wPhw)Hc3050XXXD3d&+`;E9%{HMIWq9tMwfDeZv zeGytzjvs`S1=L5^!hQS!AzD`sDgC%;3Kb->s@X#GaTn*Tl1aYUZ7qi-zO}cS5pLaO z9mZD>Yn&>Q#8!m>q@G2UFVIi0l28ERKBi37beV-=Qw-Vg7^MM9h_idF2n&3;0xxkodmOy ztZoWQ3c*sWsEtO5y>;z#FhQSYAjTjNFcwgY#D%UQfj$8|qtc_FQ&l)I(YFc1K4#Ty zw41fMcIfJPFCW7`mUA*{It^HWDBewz?8Q`8%F%w#XI6(BX|Z-QjEvK`Jy(qZx|B6y z|5FKLvVH43%~IEUetI!LbYTJF1HC*x7WR6?wMSoGfk2J;K8q{+-we(CVjqlDRi+f5 ztH&j?A|8f|tg|py0A}owezBWK^>K3R8-{Ro$qaVG&Fl%%5xhyjBU&Z{iBRW z@HJb$+i2Sfm6oD(ZQEuS^NEhuN7xb7gaYgfh1kQK*^7nEQ6+YsbtxhqB9tc7c^_sW zR=gjv4b7Th881TCQLiXU5t^cBDreovRd8$cBDW};M9j);AHv0#2=Xx7?1)1lKp>k? zvN?RMo68L$k9^-^^s&C^kN5JcCUG*(AZ- zq=L14iJP4DUP$kK-S!GYMo59A|M)Fab#01JOKWvz`Dsd=xC+6bIX9Mc*e71YLKxUZ zD+V2d!qTUnkJqr&ja3i#ZtSd=t>)0WMH0^EbOa)}&*5GpBDWqca?9kXGuOOPfah98 zIRY+r>YD>+xmgSsM&!Al_L#EAJ-|?5S;{{B6;RWNGmrHlAH}HcEJWzkes*U>GCs9Kk&c zo7Wzul2iX}g4wE|Tom-zoykN=l9bn@ccC1sO1J<-U@) z#r_#0`I*~Z7u~Gxa+9(BPS%Bty-PuNl$hiSKVB_h{30$x$u%OLthj}?rv2{QHvjZc zb|&CK3Uriup~F7aP!r{qeSG#D4>8 z;{^IdcDy$?!2RG$q0D;%-VSi};%-rFAZ%$JT%br8oqipFF6|4PujgBNiQ5tw%dw~;OoaC1pDggtv<~s;) z4(Zd}V$qArh2M;EtPT=uGdr*#kpW75+gzi!;#9VZ*iJw7GF>3`qy0sb&K zN}9?2gj4NL6&}wAooh=3nrcqd0Zl(|iwu0XWe^j`TZ|l!8AN8tG%*?Xz17f6N2G3! z{l6Y!3Y(?k439_@st;Hh{bgL;Fi!Rrmi-~xQL|+7BJLTEZ~Gj5d9H%q(&8W7(j-|` z?2r$-fL>=$lr!gmJ;OZX*vR)SFw*%B)_>SKL6_5Va{NZeBeGcj{17!9n*!WpD4NB_ zK1UngtSmP^91ujvPL&>NR)sZT{zZjS^(Eakkm8!hzg-C1c?R-JL@`n$h?2Etg{MUp z&iLbA&{Z&KQ5jt~au||?(7;z z=CSQ#6gO5_(%GJ<>|xQ^_OWoidAi=}4fPxTBeFSA5bV~t+R#khrjBZxARHBFi$<8@ z^A{w2DRQVPpWtU**=+14;`o0vBza*ViFc-yJ{FVJk>-jCl2|I(LHqyk%sh?rhn`X; z*_4VdqcQ8j4dJNFlvHfFaI_N*NsD1ldEByCexG_Nd1F~JU(BRVt9p+OX z;R%l2QJx!K2Nb`or&Jq9KtY~BpSJIEKt+glaPJue*C)N~ElQ z(4fvA8MgHr%NH<$A-W}p5w)~`Akc6H+P z8fe}<-vnaWPTV<|?(ht{0bHMh#oe~~BH@WA>UJj$V$>I-2Q3N5%~O2j*iwbhsosGW zZro6raFX-@*BztQ^2Zit`#;>yJU9u^!8O2(n2#(0v2}|WSjYfDyN>g@4q|UVO9*wz zbWKK$UEdvj6kHk}w?x|HrC)ke$~a_>U6&!n@xL&S6njiPggpkct|dwr-x|pC=$2W@ zmC2sX^Iw`LI{#jb>SYI1`>NV?u~9(e3db7xpUBmMG9eF*81P*%k88}}I?#<6a9=2x zdCSgvRwcU!^CFE&Wl+-1V+>rJE%ZG_WTO<=GO(HKa=zWjvZ)o|U3tU92fYs4ZhiZ{ zBN{=9;J{ac_n+PnLzT7P&~Ta5exPz|{=t#=o7npu83;nkfv*aWP*%a;)MELu^A3w~ z3Nldn=h9b*;@x3A3Lzl*rN#C>wJnBx`$OAGjma&CWaLiEeB0FHt?Iu(=8ejih>y%)*xapaJSZL zI6{p@L_nO+-vdAqJ5gV5I|(yW<|9jxLrZV2B8s+os0Ibttn{Bob!~Hf-?|u9DuK|x zA%QjaqG?Uj6A5#vn?C{>N)$IFNR=W;QdZ>l{B=lqA5%mtF%kohT}{@o#!t71COcvz z*&b_d3Zi8o9GOoRJMgC?ngo#V6a{gWLEAn_C%jIf{uJQ#Z*O-IX;q7UmZ7K=U^nYC z^Iu7~G_*v*Rnt;c8A-(YLM3m4#+k50OWbyFjNcB%#C$yezWhejmNxC2kR|XBLo-k5 zlzC`rzpk@!KR~W_Dl;S!|S>Qj+RT#p*DO*Ew!H@nU^;ybaZUAC@A?h>$@ z@bVS>3vq{ScGV-j)Q_J^c>}AM;(XBI>J=2J@zTOmVMi2zx0`#vm{-@XzH8x1)a?OE zKQo&dqTn8!n2Z32K%a!qfIzj{_>;kQM%t$i9}<#Q(vKjF9$sx1M+&eKC0EFwJE2^x<_8Y$rx6=}tL6r691Bd%H2dvq446 zp>SU9nC~jur*nC(k!fJ_Uwc)=Z|(YGS3suQ&SPDmhGaw)zAPnlhH=}8#kyO_F+$9>WkM|r$pS)zgttSS`eWkO>SGEC*A5P2$jPAyuQJwh9j)A^3OE#hz zV}6!ZBld!IpJuhb65VZ9bxl=j-C<&FiqAXQ_K^-i4x{=3=b?hJi+aiN)R2XPX1c8}ksNavxW=Xi{fGE2#?YQDL9jTWR02o?>mdvG2m>T82?luz) zG$B$Nb9rOBSZ>I+R^ax2VG)ZXkK(hw_#|d?>~T}M^02B2dS-th8xc@$DZKr^$kMZ= z*Z{LG3XFp_k<#pou5TIH&Id*G&WRbCN$Wl6f2t!^1kmf;*g8OGkTtpQRbNwXvIac(q?Un?=IEdW=+y_!`}DWR&yUL+tCU|jJ9aU)#SQ&um< zKi#)V!*F*vjqDh$Wf2+Of3BZh2G47tbh)s)*UxlP-Mmq$uB{p+6Pwq|&lO0oeWwn% zPKrgi0hW=dKx`|&bjx=n>{gDg$+UAwUm_(WUW{5io}=r>g>GUguvFEYze%@luX+Be zzhWly2kTkv?Qyg_hcVBgxdM(|$Y>|UBv1Tc-x)RrI_V{`RLTTB01k;Ew)N!*jDP&?|ot#8!UByCX zMF*hdzf;y}*g6=aCfel?ZjoZ5;karw!~g)auDUw{_A|XN#imWLR`DfckIme@E$A!Bd#h{Tw`?$#UL2i}8(G;thhdq0|KG z-tK0Ly~`Nl4G{5-fC-O;ky*wHRZ}mTIi}6(XEo~@Jov4Z4<%LYH1>9~dcMD$aBXx| zG!7u(2VY-4P6&Q=4Hk8BjTux}S99FO6rtD3|BBNQn@ubfFZ-E(Z)gZL+AjOi(5l8ge4xm1SM6m+m4rC0$UXaiss5+0f-#DB_us+$Syd;9;dd) zjiS`oKXZwc=c@gUlWQ2W1lCi(Pb+ON7DQ42q5$V}Vb7(fYX5k!gtFTB(fn^7^<}Y2 z9_GvJleQ~#nJz*gH}$blN&?NdaF)P69B}G}6LVfN8+b0nox)uKKV0%ZAld79?Rl5Jm_)6dgOZUQ;1bJ)%@&#@)o?7N9 zOiHDk%cv}TiHp^lfDs8R<@p#ek6O-`IC+)1Y-l#*&aDtIj%wHc(iE`tcDI(e@b|F* zpya>*>4%QE2z7jw{A^(IZX1gAdcTGT?fpLlwtY`4Mbi!>Zt*@0Bu zC$<9|Jd4`OH!&P`b7%;7;dZT7;i3gJ28Ucbf*~fUd8-1$rEXz5MPr16$LQ7pSdLqg z?LQ8?*tAdXTi$$w)%Q>rTw4qiJ{|j#+zD~i_W(fy1M=P9#CJuw@uKlgYEqv10udMp zAtoHIt<;q*8dyq~sV|PsQsKvpVvdHMAPTTe!Bb#0H=fIy$(}$N-B}GR*F5Bw3Et{c zj6(y&9A{rH-|C`N2c+Rt#2)j5dq@7I-%@e#1K4lxcrg`)fHetN1!fV&K=aQoJl1S>zKNO^xRU5x2J2gsz z)b&D==|n5y-@6AphFb$OP?OaUHTzrL!kd0n4gn3A#t%+w1|3}oI6hN~QIL{ zfh4hZK4{iD+`B-nnw$Wt>>|PXVk2-s=ikjq^H!=XIVnrLSrQDmExsRI3%KCwlUS6V z1dBli?GM%8Un&3eTKyh9$kI57X|>CdRoc<0o>iL4IShi%x38g&F)wcsJBjXPwaGA= z;3p0iPNLS>Wq+TKWeR*tp0xkR=_0Ddn76avH`9XWQP4EJS*BQkV~IZDSY0%Xtg#0l zmU3|9j4vt0`g^+;XJZ-SyNIl}LZmQw+apr?J8#X` zT_k!k7AJ85$39l@Q3X)AReBL}FQ=|!Q2iR+&T|@qYk&A1W^JF_itoy4qz7Q1W?nFg zPvL@XvlG6t_&P~45r&_*CJ&D29f8e}H!(d8!cJY|1`jPHd!1NfWcf+Vqt$?MNhf}( z^tLktgx;X(@#gVv2?hum>0+i^Sxng_9RA_rhLD*~)yu-(Q`e|F^|Mip$oExOgY2FW z)Dtt1fn!upDZA_e6#~0x559>Q-l?>Z=trtfMyf4l5g8?D!n*H z#B#3#&uNKD$v5}m0OuQ@j!Ja%6*k}dlP?N}Tmj$1&n;XMHwRapWtuGlI7p1WELg#- zxI%nTmP(@dGn3DY3C=6@UjYUFL_a)|6sL#*06WIVqGp^hIpi2%+$PkNP~ zq1m^O7aK02)R=bJ+mTBd>}Nupf2c(O^Ip9Yt=T;i2LW#?ZTJ2k`Hz&9A{W1u!TMw# z4Um6d^BtnILC#U;+g$43%v9lfw3osj9+ar#_or&mHBd@J#Qn?zQ3@upcNwE|yp^vK zhc?Z%SgkZMpbv4YBDYINU$nHY-~zdw;{pPLF~5;Z(MD+wSPH^ccZ`^XnYY=?yA13P zXR9Ou(vGq_q7wDeNH7pjlbUar@w6=)#VO$2&vD7?4ibACRzF#Y@XbO(qh1FVOKvCz znMadQlupescs{SQKYq!k*0-a|JH7O-uGRKyC>_T=<%4#iBw0Ch@?-{BN8=XY7;cEi z1Br45W4U1GXeb4Ec;0B(Y*&O`)6XoL6HvF37dd$(h<$fvouX+dz*ffdKsBNj+IkzW zaUtqhf=?E2yrhl>DEKcW!GW9CC^Tc# z9v@z*zggtN;8iz@LW>-t#+Qf7C|{8pH<%F7e9m?K0Kl6|41VTC{Yi-b%xfU6Q?X%_ z9D_=;qu0ZN7BK~Biqb{W(XGQ?mZruBw!ruuR>~Z3ZBmMze*YzyiO6JIqcJ%oi4xhu zb`ssLbdQvyPEUFx3)x}^GQo99EgooAXruCIKr|0^v9XHiIwjg!Hx)_PF7oy3e_8ZG329g?f)z3G0F@LCPPu=Yd_&%2Ux{6 zCT<@9NPv%#TJstGiu!W$nTP`H8XOk$lofvAdr*O-LCr|ZFf-RGZQColEb;rbUE`(9 z#F5_rC`-8YOB)g}?T50+`u|lCAewRB%2RIH{){~`;z`y(#gw%?@t!)J9j*R7b)qub zOg&Y#9`3GP=Yb=y<4l-JEdJ}BX$|EGYZ1EW183zp;_Dz|`#)K@!^LjDb1>ds{D!4H zvZDdjf0n0>sba#+G3bQ03)-{Qo&fThG0u*m>RX?sC`$eCyqo3ksqj@A_krZQ(2X>H4i!qdn&xC+v{)iFf0RUY`NhG(wkbVPR z$75mEL$jXsG78c^N2y38)^~`|KHWWTEs-(ryKb}cWXj#pzRM5JUs$6Z=5+++n=Is- zq$`SYP9Nxguj-iF^5go-YrZT08PN&&LtYOnYCn*UZ1W)XlwY(1Fu!> zvg`SU-Y#88d?qleL|U=U{{4e&y3;or@%|LoR}O9|R9mR~pe`zT?%M5>H&R4&ZG7)`%91h$Tz6t+sJe9Oe z&fdFjpjzv+s)Tk!c-t7H8@R}(r+xMNbx?nd)!~-n*`PDEG~%`i=?@E4xRvK$!PZ{$ zI5pHwi0Nm6Z1429mX9k&sXfiOWJM#U(ezpey$6LYC(^iNB{1+h@P7ukvwU<_ZYEwc z@IjN5qAo^|6zk-#JCWpKoxeC7%Mn~KT^|V zpOp7A+O(C}e#9#Z@HBs4Z&zR9W~icd)MnXQ5X2wXMauQ^3iHz90ZNXm6uy&ZWRyA}GlCKl5ei`BSqM30kZkwz z8tnBH3m8C>o>4I%dH0cmXA9d)itMtTBw(er_sUXh#10%W3n`yfQhB>Ymi+QP8($KB zGsczGN33leAN98i1UP}iT7_@F#NiIm#3HisW#RqR6xkea+*#JAp)vVx6$xqn)wOq? zj{Sif7gs&{tE2aLkom@wYjAqUQXl-|NDv)vMTUv?ubM-<#B zYJ^qFp$$335DuLjbR{=ojqI5ABhSvGxzzs>PBe0OHFA!Ol}IK1Y$+*<9H8=rFb+q( z&XTB0pR3MG%e-p0k; zyYczwH0OL#g(r}SMmST8MkgwVf-uYB7$k|xwI@d&Lm0Ar(5YuCf>7F{?xJNQFwrc; zZq_}r(5I4ux_}UzIs-{#H$?VAOHl`Jcu0}Mc>mbdYN98JFoDlS^0NmoS7BUckF-)j z>e~^D1xW3#pAPzSg{$^`w<1`9OoklnqIhN#UQ*^Qg#&}v6&npt4rp|2K2KpZ@j(~f z2F|{`sMQ1EPBlctq+M$_@oDc3k>_^?!}ExbjoW;&M1-w0C5>^TJKH3<>MPzNvV zM21NP(9w?7A% z+kWLheI?<@P)>diLG8?N&Y-WLHajNQw|Dg&|6X+_(11INaKKiIbA;8k75401hhDvG z`jGQVN&`Z2z+37AkOve zI587Gh@dY(9N!QaZ<}&YT-Sm&2!1TytgRcGO>)8SDBOAj3dmNJ1Y?~13$$J3axVTC zNg)TK?+{Q@;+oOcXRO%S{&0YW$aeN9e~!kYDst{lYC2$o|eXPOBK2<<|K!j4h%hPC>@6<02?cE=A>CpACT^ zP)dVRRbvPS=FNLtW8Y#bMP5M~=NWLjW%sp)og^8^LN1<#Y`jyfiRoS?FZK z?VP70g&a!FLget-ixdRVy@FqpAY_PQR>YhLISw7tFiiKa+2h`_1Oh`+Gkdrkt~)_Ukdm zLxoaAu;l+1Fn*Fbd*cpjjYW_7|3{fFGu_+&eY~aHc`|S~4XQ{S={Off+>38+oZ($w zNI2v)-5cL`PO^9fx_8V36(#k@irCOsD)FI9XzHvva~QCq#20F{czvBmFy`j=T8t)2UYE9_n#uZEN@p8T)kgeiC5uSW#YpXLH(r4d($bW01DED5JW zI8vd)ZuM($$!{jO7LHte=(4P7t{60qj^BwomgrK;_%JD z+v}y9$XqF~d!=*Q0w+Xhj*35$@`SWm;!|kte|0HFQ|#Gc58_7DOWJCbOF+lf5QZ2- zHO@vn=;N%{wfEPTpgMKmrTYp=TlFFEM5V)jMC^CYeeWMLC2h6HyR!qjXDimm`~0Fo|L4Ip0sph*kUJ z;)~`Yya8#mfS&RV^&!hY>u!RF3_Lq;2d8nvr^=bKW?N&-xJzvKhKx|Rs}*VgX_un} zqRuC;qi*L4i#Hoxc6K4)x=MFs5l^g(_D&mFTbhT`pia~#+RU=mC2aA(y$p@F;^9*@ z&|E@k%8OXKbw5*l)Va%VZXEswf8^I5$s{-~r|6!Wgum964{7~TQ$FqUcnN2P*9}4b z3aH`c+WA}JM}4}ZH?&cCz;IpTp%y@AV12n-qhR=T7v1)}M3+!;Bl1^zw8+$r9SeR5 z3g<3yH(VjV5aB<~xEJL|haWxMDDtZPv%=mQiLya8lgcUoH-oxeBSxUPk3cok$bsy+ ztVPv_B+S&ZgmeF>ueu!;l&6i;46y!yW>RM1-bdI4ynU5SuJ<8>bRD0DO5x-7l9(hl z{P1H?1L}5~uy_iM*mn^GOEWeP=4!%`_l0)Jk4QJ1EuB6oSg*HNp#H-4w~e3F8R3!S zk<>>IYr!5w?zv%T2daHAdx;v_^XMU&C-_CBt_aM&t6HnUmS~XJu8(>Ey|7kky(M{J zPXsvFRum+P|H+v(3yb@iw`l=CJ^K5PkK~bJM-R%?wjPl!{J>pgPDFPUTKslLIrXNU zJFK|oNt4Vcn&8Qs70EB)B&c>jMdZuT!`$JK**fj);xAmX$Z+6GF09D5u67cSQAnYy zJaygzKggiS^m0yN4&htqs!N?`o##A7OUWNVm>^XkEKVT#Ae7lMq>IH!9%<9R4`O(8C|EQkl6Rv)1 zvl4Ykg$CZ{(V}9Hxzqb!SzoM(>gO-Xuk8&vP~vM84_6HC+eh< zM`|8Dc#>VD4X)*6kfu{cVtUn?&$J#OvFNU;Ckd$A5kV`*^fqeH{8*3cx-_haCdzKd zn_g?w`j#VkMA#R)Y8U@#UzAqy7pB@P=fOnGUACIpg}cdGnuZiFFz=Qn~vg(jv7UzVpD%(9fL#U9K?{_Y7_&`U$=KUROkphi_n_6p?}YuwE~(K-8b9 zQa9zXlA~Q_M9vir&rz*~rgnJ3+S3qweYBuJGCi^B&w8;IDwa|XE=tccDiw7ec11eUt{#482` z`PyN(4s>IrC1!0?E<`kC za9-OnlQ-T3VIsIla@+ZelP%w^ge<4OPQ&piB0sY3=^5c%gIe(##_0>Ws}fa9-VrT0 z1YlTCGstb%{T^n8aRFWDet!oeR=w~-2G)6OC|W596qqhb?kh50Ox5{T*lP~wOs2I# zOOG{XQO$C3N~LbtxTkr8PcO5m&Jg&|OGcVTEhIbUwc8A{ayk2cN1?V7ZLHC(FIC_Q zbBEejnGhj3dk~|xCZU)Gk#U7ZgXaQD_Or*QT)n~z#o}4r9NeBtOTyW4{FK`9qTjLn z$O}$sVFTCHx<^r&5vNRE#cNRll|<|tFc}*%YeH|}4`xV3pP`M{LMVF8+#@2gB69k{ zy}OO0yHs{zjSRiJ^`jAMZF!;4wYK} z#cyex@_1M=sZv;~(V*daHZ*9#k$!od;;KfSSAa8rrcvACM3r&`Nl`1|6q;NKlfYS! zNO-b~R+j1z_A6M_4xL}9o%Px(>> z%`Lj8r1Ls0m}3}VEUExH^88O4jSN=D)RJ!z3`Y+UgU*9O&;4*B|uqK}`9dtkkk8Upp7>K01rmS`q%9 zyR>u5)nh=3Cr-&|&3%ut$GSMG(X94IKD)z91N=B%&W-W+i13Qz2X_@{`sUC##Z^BC zf}~LsFfU{fb#Nk|bpX_caxGV+L-cu_x6 z9Gi6Up4M!(Sd8P_z1Y&>rniSD01@9wtfNlu#i?%7r0y-j!D&7Qkb6 z-_ew3@L^aTncp7#w$;5C|5H1Zs*s_5h!nD_|MOb(0cAt0W0G+HEf_)?c`Gj zA4bE`L%%PvE%=zgV`#evsseO!ipLU1P`QH|2j0B2tU%-$HsN3Rg0Q$C3`OLt;O)BW?xOhI04sMIr?U(tU+J$cR3nHYa|~3Ao5<; zhw?&L|6PyPj74!tJUxHy`m?NK^6#j!MjXX)qo(Wc5v};YD@0yT__JN9N(e?5+|3q9`%(*Ap{+zfsk4~d>G za9O{qTa*Y!m~=fV4+1e?7A&=+1&dVsptQ~>9WVWwDo!0=kH_t z`Q5+Xj@|aNyT8317q_j*3!9fi=WVn9n)LETI=gBidRQ(@N9<7lA77J7WoXPUyzWxc(vvCG99PPo)Mu8XRZJ>Qi zv32S+t!INNpqE{RSHBa}W%EicVUIqtnRLXjp%P!+rRzg{3V#(vi$VL&Ih^)IOtL$@ zVJNmgTHZfb=ZKy2Ppfz+4PDy6h<*TLc>e{M=RGQ$yln`cLH@u9g?~df>InkNXH!@~ z$M|A6Jo;>>GkD|g@Uf*T>*dvT|M5Y#g>bf;iz=SMuV}o#mkKJR1b&Y@Ui0(ejtLi^ z!w$_UG(UU+UWlK+pyA*q^8?x6+fgAt5>*#QW$|IgYZSeLq@t;Ypx5(y?a8KZR#ma5 ziu~WmF0I4+*GTu7s!q7oeW&FMXCB{lcj|CqPZw@4@T#hAHTt3XExBK8clwF(#eIEn7&{LtH4%)@cO7=xFh#hS*-# zJx@tLFMeH3+{);D78C2Zn?N%_p1-~y4hA-J6|ey!Y?{a)NuEtdE3W2_e4njwuM+Yv3Y=C%Fz2pRMUyMSNK z=`!fZp`11sY-E2A#se6oUS*gs^%+_#7L_YtAn^%FGD zw7v>yIqLXbjc4gbQuQo|`{v zbph!Ho*cX)ZzzFj7zuIhcA}6Oz{N%MwmGwg!>}n^L`4cYKNEZ%8vf8~g!m$)uW;#0 zzJ7pYNt%=`Tk`8yf1@8=Bny9ezu78AW-*<+?V_=}eMX0O68CR4`)2OK}SMCelmmpX`&pfw7)8wuYhyb9^LLj_r%2>)t(173jJ^jA7hrx z6hl-Vx{15auRmfdpD1gP3qf4)X!Wa~!@nuF2QIJRV(*l_c|H)Po^$(Ue7*(Q^`;?!HFAe$X>$p2{YwM%<4H^XVGL;5`QUG z9O7IH%-J@-Z)q-q^Bt;wLDQACo+C=|*kSTHVN_Y5`I&msw%d)o=KY7+guw;RAZlR5 zpS}ohesXhYv~M%|#6K|3j`_z`O8l78pU(&DUspn>2fhXHt-Qjd{KnhYNJuvuKUZo= zFDW@(>nJ!2a%pKZ35oL)Qzc1-2XQl7-27D!l~%hmLg0YhnWLk%wu19x*$B&^9u7=q zuU+|b{Zn(Pe%``1W{X5|q+uR_-q*7Wc% z58s~^nu^CuW$d7SsfdudnUr>TBj-U8zfP$)_lgMt)0=MpjGm@M76>N~7P@ys9mk`B!NzQ-WVUehB|id)al(jC61 z63~0jYfEfop&J^e@e|^LcBb zCXzy;$)0g~uf6Ib289;>friPBW^EUu$pJ2@k2KSkVA4c>_bY;TY28(e^fv=KyCy3;NI9C;t}f+vq(QUDl$|k(l%~)oAb`I4 z#gP8xP`F0@&dfF7_$Spqm%IySr)ZS_*6HcT5P22q;zraME}=i%8P7rMfy6x7ZB zO=+03&Dx$N7G2^g(3G5pNjEx&o;5?~dr}<}4JmoW6_RvEZEA~Oyg66XO~xGk!3r6< zB*(_L7l}mu8vOuU6^F<}&&5EBvcQ1`^WmxI_)? zSltodrT4lwh&x%TYHX&Nip!$I<=45HJ^0aASBHnTZ-?~B>$p@rCFy-?y8k%S(xSKd~V!aWVs;*p-y{8`b<*m z3$MBV;NgBRi*OV5C#1GAADit0Tq7Fj56-6ezE=+chTmwXT)MmYz2;z6@~5^Z z4ypBhX`X7jQH8JJ7wBGu*Y2#xMhOn<5>3b-*yg+xLk)?v!_GyWwb=_~LY*Kg?@|U56$NOO@mtZ@^hYhkS*@t<#z8z@ zZ)nZVGNQKe7iuC&-pcZB4$`&f4tunRMRryk(&*fwhhNH3{b_xB5fdXP6YuezmN85W20T#Ak8RjDR-X;F2%Z>i9vZRCg9r7!39*eq}6U(&q*iwyjlnlXR zo9T^Pny3cTCy><1&wtD_%InKQ7+VlS5>du3mX|`{7~VH7-c!#`<%-PPy%RG-pX(2} zD63{SZCxb>Y={EJGMZG{L{R3vRM%S)>UsZB*AP4Jk(_M%VbA!M#!KqBNM_e782Pz1?2T$2K{ZFtE3sYG>H#e|Ec8RGP}Ft^g3bnWct;vv6V99%75Cr%x1L8 znwj+LYi55AB$lO{S?=SPkR80VsK00M2Q~WA7BoedvD+Zn ze;Zzm&I3~*DU7{#@$aGUSVRTzd5<|xu~1x1XsgJfc2@yQphEmN+w-)mIaszcMD^Ff z^ff9wa{o?brT);@%t>5HmUH_x_I(}qqkSd!uoBup6tN%{mU^?M`j=%XRSy+qO!k~q z=Y;)r_d5qnKYXWIqq`4XVJZfkT$&~!41c*FrMe#LL(hC}nb7FQ`d!bO{-s9CLuj`$Q+`a-aA6T?C|^ z{P2FC;YSte;ART>Bhp+xKRvO6dsNw+>MdY0o&+4=$H0p5?|^emp~+nU zzNK)&u86<(j8xPjvBBPW1m)-&v8UUfFx z#NJR%pFZ=A%0K_!YVvmhLtk>#t7b0A&zp`}w~KJT1vAdDnd^>Zcn_Y8ZFICmaMEZh zW<)PV8qIg7Rf#V85#1nQcyA@&FH}x<8`fU>kQYL_O;IBn99U0rqZU)<1L^_ZnIUcY zQFI0Sznx0%G9E%dJ#raLhnObll>SyOmY#)6(@p#~TU{7DPL1I)m6Y{qHw@H6FU@~V z+rS~f4ao-dHHa`R`+2WO>3K_|W+Qi`RaAr|RaSqGbT8cL(!I?jYNTLyMT==Wr^h}yFW?>NKB*nXt{#F;Vx?N?Mh(j_mVSpoa!p-9EqD#Js4W!ZlY{C{x0 zsD=t}yxub$f@4vRo!qwvWsMM9l3iCoAx4?lJly#^yq!)|*oPTYLn!y6w*xg**8470 zDvEjbMthe%A~1yG{pJQ{K(Ux#_LWFF`{qdysRDeHh2!`dr3tq`gqN(A!_#?1BBYr0 zbH0U)UDA)m^`#0dDt>2^?X8V)DDkQRNJ-Lmap0-pfcaRYlgar-1eM`s3PBW zowYi8s%!X)wXv$LSTp?0>akw2u`2_mKSguv1kL$%OG!`Im(2LGDNaqz%TV-&nvKqd zF^a9QJu6yU%hyVVne2!_BtdQX`(wiOTrFmuKaK^Hr@Ng~u(66bqb5svr;xqSWfZiD zt$+&Q8-NA9{oVLbpag_Nl44xYbwpl=b)*kKULua*p22L~-Q%0i=X? z?#I2eo$;5I%l9<0MG=kBi7r8GKTIcgZ9`_b&hktcf}e?Q*BtEL`;m-fig6n1!CD-$ z0%>s!`wau8&^rurCZq9gHxXj19)Rkcnyft0_JZl;*LRfmNAq0nC&0BlO#S~-fo0!c z_VE(iC%K;opiS&oHw?xK{}(6Si5~TBL2_T}-n}n;dRt4H82rWW3+}NKt4PksF^*Gd_R^b19&ti2}Fc-jvcC3oDdCIp-?VP0h zgav{BAo|?|E{#TWs@~`?(pE~TCgIzSc4)f?jU=)ArNubG{qv;O(}N(5=?SiBNo|cb zp#nc9gENj8&ab!Lcoci&9WONOzOk6aP#%=CIQghY(U6nW2jGVPt(Lz@~6EgCYtTORTdtj&w@ThZ3 z5VZjEi}`MOk{l*^FR%0^3k{wfj1q}52B5^|3~~pL0B|^O312o-Z!}B!!FrZaWUyZn z`y#MCp(E4eGB!H1PZV;C=2Yvy5gM!O9l@b#Wq0H!xF|+RwEj2Ow;Mx0` zYuDFd>Wxw)R8C~iVRwVQb(KCIC-R49+gr4Dq&j%c9Wi@ULgnI^Qudax9>>!$>(zhx zWqgAwJlfG*HC#sl_fs4z>bvX&C%8kGUrDu$k#A)VyB6}zUDlL_u99&V*798TuM~T@ z<)>__KZ<6^A>#UQW>55GBa9y z1Uq!CDrjvoFGsCD^;j*)_RFD9o|&R;2ha{K+3pt~ipRx6DccBoP!@ToVL0{T5frOMHKdOQX`Y_1*M6C zNHVsOR60sfFfs0VAB9vTf6z0RmaM9u4XeL3{lfTvZc71PVUQ&r_^%v0B8w;JY1!RqgqSvs$WF;?Y@NM zW?Sj}`jU47Nii{@we}e;=eV-1CP@vhbLg=oL|_8%vf;h&@@HPA`k$&FsMkiefQu#q zb5zv={+H_D0c7BCH$8N~hsO7$3(3EXZQ~rtDw-zgf)>TM5_*lg3U9lVagN)(TkgKL zOwr%QBMrCI?zdQSjOZQYkS3`=Qn$H&FE1k1|74Cv8{Ib9GMC@a;l-uqu?HJj-3Iz~ zzmK7KvR-oXk8Oj@B1av`UoT?cpYTmvj8^<%xbKh|g#f0=PrEj2$!>bxYz_}TNB8u9 zoKev|r+yHe z`nTxwLhwI)Kl@{1C*(A?N|ocwRqc&?q7Ho}|LQ6z!wIze-OD-OKBRMb&gwd$g0eA{Nn>^N769oQY~9 zkto09p6O>fWX+w|V$fQme=m2YZ)gu*zD{({fP|BR+}=%nbh#V+38`#VXjmMuXet#8 zxyq$}4P7wIvb!-NAI|p1S{1O%_s=?exFzQfr9Yg>PHVU%`|qcc=gPnwNe8raXm|T@ z-{#llfKO8aYth4l{NjEmedth0_}UWesJej{m6&4kBfS#-N&fue@hPgMGPA?&m+N9k z){gVCB~>%J5d4Nc6s**~Y9vEC=G$UNgelo{zmEnnTffY@KEw6Fuc)Cg4BXQz8QE-M zz?nxb2;0oC8sThfA;y* zZ`*mu-&`@Bs{Ty4Hrr;0h^2eKZ_S6PC)jjEoiqmL$7)+PcX~$vU!vIiWs>O~y%{9F z5f6wPw|}ue)V=dh{Wj0-(F-hh|BVLD5r_PI>@rp-kc;4v!gdN>C~=X6et>WY47BP- zY!tliIm9+hOf6iL^51tm12sR5_woh_cXmQEBuFj@IjQudKfm)42~3K9x&fpnO=$R>c*PI+sPuss9_*KPo#< zSn%03MWQ{m-xW!``X8vLQ(KUCEUKS*%%-}zuG~ltDm$w(f+koJ)VCTY7f9`QY^hyX z8L0h3VdnQ?7eVy*Z7p+B_!k*SuMQ!hYcRn_OvZ68O97#P5y<&#V6muY3DZth8&+DIAUT#4Sjjw>;IxQ~19-Q`!$?9p2>0 ze{YE=bKlU!x0Ap(Mc5QyoqX1zqu)8RHLu;nGQ`V|Yv4IjwtIaE#&C0LP=FT>Mq;bC z$j$j@pRS?3;qhSVEE1VK1F2w!e6R4mn2hH*IWd&KS$=J$+sYju z54CVfV_sT&md~Qx@PZemiBk_p{;71@<0mZ}1FWr-3p?s;e@$j(yiKL_`miV%O{0F_ z?kjck(!Z`fZ1@&hFT800zx8TO*?GWs$RKDs{T~6@%zM zgMNQ_0q;cnBqxJ$iduTh<+yEd{e3Z^L~J4R3{$%3gdS3{o`-$qj#yx<;_tb z=!u*E!}Vm(UYkXtbf1uc$NjC|Nr)qQNAi6}(X001vbWdHSF8LX`K1~VYV##P(+2G+ zLo|!2mslQdx(+)}>&L_g+%>*#(= zvFdc1U$`{Gm&VJl`uiEO*j;YJgdQ$wu79GXbx5O zLl(hX$ZfB}7PPa@_ZsYl@mnzC(FH&@FYNh)6&#Kco7G^PZ7J z^RG#`hU=l4n1n9JIiW$ysWVKx=Er!x>M?RTsYxYBPi(GK&-GEOATL*{Q_FH{^S8w@ z_YauDau7j`9q*~cCypFh*1r6J-(czd651-Da5iXvfcAunQ>5fPboDyk7Be^7z1Lz} zb}m}%H>sKrYeH&y9yN8*-rsu0U$|aF(r-)r0~Y48Qh%P})@`nswrM7Au+r5_P{K~> z`d~T|U8AwQS@k!SU2GA@bj`hV*scC&K}Df320VX*8h^<^Fb1VRM_!)Z*}&CG*IgnN z>dtbyJk{a#8CmScM5B_|DM1N|WPhpxTxnapmaz0w9rXvcd4&cIT+y}vn(QpyKK`cd zJ1&wbd0baRSsne$(vXn{@jy@f7~&v4IT&!iLD5#j_v?vKczqmCJ&O0AY=cUGi;Ahc zO}Qjm3-Z5fS{$~U9D(~nKl58H++Z-sd%B$)`4Uj={pVi__kZ|Zkfytx@_e(yG^SPS zPW7IU?+0;7Ca!OsjX1wrQdXzn`Qr8{3&K~}!ge+&AnP$DW9z=aYWN*`&4?(ohj;nl zlN*DCl=`&d4lRwAT4Br0=Ig z#(wLHa^s}!3-!W=dFn>T{cb5M1-<%!RQZ2zj?{tL%8@em9OB$Q=1ktkQsIe*FJXXj zHBv@3lbGgWca_|d$asDmo0=)~SRAsCe>V>Zx}%Q1B068ywrntkMrs;JbpJWx5i}BB z+w2I6tg=cu=g#Wf?l?PEI^_!U{yy8V%)EVH*R<;WE>wrN&b-YTS!B9VV1N2q<#b%l z-2V3Z=H*Q0?QIsX?A@kd1irmNn&->kh)M_W2QPe)nL6MHbzr=2QZ z+2@NqIq{E=mwOhED~1-MhP@B}s@9(VJs;hCdy;+hntlF$8eGpS-To(Up<$_i(Z4Ca z+1jg1L0a3m?sqZ?Q0$x zNTh)5bnwe_B1!Y?xKrxalApI<(f_&q&hIy}^Kt!S%P;o_(#LVMTZh1<F0FH$*XTY8?NCz78%H;XzQq90 zpMxl*^sg~!9YJn(QBu@S^~S#BF@RB0^t>{nCU+w<-CQjuR2O3YAmRFfXDHBg>G0R5 z8ov*-coKH+)SC!Cc(``(j0b9eYqNM)_^eA*dDr)E&8=IUcdE&(+UwmfQF1@=@S<-k zUeL?A@Z;+`+Fr9fj)&Euu>06vRg$N3QQ7D7wCAHFx~EG?y5hMbFLmEVVP5^Y@4Tei z&i%fk!W(g~{zWQ%$Htj{CU(bj&zPO8$2xsC`)+Nf`?P5yP+I-;)6MHY-K5njf4a+k z@uqqGFz>=Xq}ge=p07`f7fcu5`F5-rM_=7rLmDm#LWIMNYbMs%;o|rUfd|p)D{*L% z!zZZh@W>T~tBG9kz(pH`=&4)BxAv;oa!PU(d#YHi597u)Zb>r+d#B^YoKLBv@&8UI zXC|MAg#-F-aDuiVn!TK^`dq)^opnvlYuC?ZDQT-UMqx@zl?9C}E0*T#rETjGBy$#F zcIMyOp0=^i4%Sj}o(u7wpKrFGeaG&3tt*urYLeD8*YYo}V<~;g!lJpC3|u(9Rr2y8 zhh~#jq?eakn^hLITjF10*DUt0xCXXtULPN4oV57d&S07-1;^B+-)ZF8^%`FFtvs8y zdvkgpY7OpZ%L*CLRz2m7)ZBi0o#NZ0WMfu(8@CxwAb!-R;&809rs>q_Us|sF^CMwf z6YGmUP)Yx}py~MD>Z%pXL@oGB&9?8KM){zjs%x4S-P>sH&QR93C5~wz7C-Z2$wft1 zR;#X)mZ)nCldyYje~AAQJBIr4r;`?7vNr3=lH&UF^WcDyX>LuB&EewJV{nVH&unFx zP$j*)#VFmMaF@|W{dugVS4;iNOaAj%E)^~n%e~I}Pf5b(x4B$g1D#yKr(3Imy~ha~ z*q18O;b81bhhS6hW-8A8rs^LD?>voKHd|M|hq_-F`9OQ>8tH;bVk(2VkGnqnBnr z=RENqUml!=#Yx&rE?LQ$=4sD2xQe%6`I}6%lFhH=uFQ?ROc-8WJVwCRteb81!I>-)sCM zRC`Z7-N(Fd5`&)XrlOWfWMkg4?Dkx4c-tHsJP=m>cn5Q=PU7YnrQDJXKMmOyZwstA z-zdIWtKKkZ{HJ4hu4na8%+>mjaZ#!NM#*2%Or>P8eXc|)LzBv8a{iMKdod3uRdizo zmj~$J1dA~Oy%n4EI@$Y+zY4?pKf<1VSA1lju{5FhcC91xyr(1cNb+x_J&09DhgV03 z@aWBDNcYpsOKQ_24fR)f@Bg-VW7F97uWd|c-)XofkcoeuacsJBCYHroqvs|$?MfC_ z-=uc1s#Pu{`Qu<1Vyro>TOa+3hcd-LN7i&x60FLqvg;(Ycz0Fcx#py1%;6`_SQ~SD z1t28opi4)Kk}sQ@cF#}ab~Jg#P2%qfIxzYd<2Mq;B*#eOL^@qJ&CO=P{X&qO=2FeZD=Ty0?p)u${&F?H^Ec&ko%~gh; zh}x)j%F*y={Lf}1IQJd~V|x9&rjvxL&L2H5{d$W7b?ZJ`wB%a=RZCu_#D;bKYCh(6 z`u?)QZZG_ZF%qRKr*MgH6fNXFC0ey7Z1kmk(=Qcn+N;$I{Zt2L8q3(Fc}@AZyz1pX zo(d)B_)-_8Tmv?Kpdqws%5kmi^uYa_8RXT@@I7UUAI;8F+ z_f)s!dneB1u|2T4kh9Pt9iQ7>ss3IG{Y59@^kp=kBZnhjQhbz`TXU;~y|jHo8UOp0LvF%* zJN%u{qU;ymO806LMsAWru?xi%<@;9+{~#PF3*xE6X|W$2Um7TU3Dz5;vRtCRvw0!2 zCg8Z8pxBbBJpK356-5nV_o@7UH18MMOQcKJ1F-EL6JvN{)noV+>rrrc9?|E8Wr*{? zfs9>;gfSO4RJZsR8o>4*qJlEzTJS=$>cg&@#$Z6|gTl)vWL}MTgVOs`g?bso*HD^9Njb)9WiqbYWV!(W*A{DtnqSn{&OmUIhc zYVyvI0kpX+68V@OjSK6i#zu3IwBkM$sm>X*1`Z(rOY%_Uq5%B*NRi7FuC%5$zuomP zm{~}UJ1+%ijPM|f+`4QaRkQc3i{i_KW!$xrskvDvXL^W6mR)v6I4^~P%0O0-h$#@> zoo`*{*k;Y+u&}zE){+La)qRu$snx`eX@h}tS>>NMX5AU(L1$I}Aw4JOX^^EL~rRCGg$M0isZ6qWt>zL8VJ}FZ*ki+Lvrm7lS`fQSxKKl0J&AA z8uVOVW_kJoNr6}$uOshH7^=2e{K`wY)S}XH8ouD??~?8^6byE^T2-BrqQp4;QO)PUppeT~vuqBIN!wVRd%zkk{48T^_fImhMV+y#$aQR0+13bu&MeL@-hA^n+`7jUZ zYM91YVg8E5Y!l{a8=i;*SvK?|Qyy!yCfeAT-=Ta>3Ia*Z0$?Adm>jo#;89mpZ9Xg& zw`P>N5n55oX{G)kf8&MJ(wtC~*TGO=#|X-VN447Qy>R?J&gN;xN9)7$*%)&#B0W18 zH5^MMxs}DtvfdU(2%iDX_Jji13N`Sn31b8S21N6_0x}j}M0F$UMgV6F9A76eObI-R z0@YYg7Q>o0&+5Ab%+}}lB!1-OChAm&kTd6rhbM}|(fXdE+1;$258Gp>yTt!Sc@XSV zV&Kfpx@IpA90~+r!j#d8NJQ2n%hSOSY_f4Flu5EMYVaY_0s=P4bHp>F;6kcvtKY^=;CXn zR#EY5MDWYMh!KqG0!tpt8QbJUv!b(7s&d#~5g8;P}8OK}|#+N-HiFq3{9sn_7 z5duSB-8Rc)2K)$E@p~SXt+COr$#Me`5+dU#K2|$mup)`5X*(m>aHr79un{! zZjD)GLDXR2MKnoP%6Bh}K*8UokIbr?WiIgad=AwZ68xgI*uh)q)ixFZDwJB1y~P7^A!vZK~=58p+(^w%LAhV`RMEXBAAQnfI?e7 zI`|go+VK+irC%j5Hh_!CLxBj_avl_=MEQvvP6$kj5n)AYEi**30=Ss@^aN2Y+i*%i zuw*##_?O0QmXqv0JwUD?8lf=?b)f=GK@n4)Ir8^uc0{Ojjy%>OSWt z(G)JWIzPOyy*%>*C@A9$il`C9n01ax0*JuAo4su(j_ScN2f{Mo)jQ{a)i=84EHJOY zUsU*4FEZ&8WkB5Zq6hVs_#vGN;5AKXqSLgY7tv^|&4riJD^oNCDR4%sz9-YD`VGGM zE0@LpATc@W2m|1&aw&2<1+J($VFWI~U0{S{r{qQdu|>NAR;>j)rD)(x6iq1e+LpiG zqtd1ejjX!@PVw`b1R(GgObkEA7;QjjKEym5C@-cCJ_XKeS#BYmFq(pG&uAm0$Gph2 zqs^5^*Fyop1+CC*(8m2+7VS55fpuXlX&Z2pOe5+{{%Ga0Pbr$hL%ff51pw8?!6TtvVz19L8jX zM-)6mNhw|P@5s70fEAM(N{(sy5l0(EY&^z{9C&dxx{eKSz$h}yMqBqliQ*MTa7EPR z=b1?Xy=8PG5ItYmF+Pz7^ndPaeHpX*Opn4`&p|W_ef&7W+@=BWd`(vVt=k-yl`+Pe zu_o44G!;X8M!g5zkFbRv2j+^KpyU{97NJCVy@xKMVbA~H4?k2=rF`#079^Kj9)HLx z?a*E|7;kOyCF07?6exjntguDsWjoQ$VqwzjFh;JNwu0sG z6xjb+aaWoWS_z-(gCj-_2w8~c@69u1nHaDT#0bP}PL$-@4I!ppvjQbPEd$Kvw^;UV zy+A&mCAct3zZr01sB2Fs_GcAW{{e-0=Pj_%faVOPW-%_3T_edjM+>?Tti{PJdXBmC z&B(Y?*bAfU(VWKij|~>W6!CAZ7scqG9)N+yPxHO`nZ11KohQ_TkY-bn}z+ zWGhFWpAvDq0nAnmkp&8ZZSZ~pD9DoE^X~-cC=B%8`19bwE@*0JpK~pH%(^bQFDSbq z(VN{H9fBVzrO|{?TQ~aQqf!J$grRM)Ba8=($v064QAaVIy}zRzP4J9>n&!2uZJoRL zL1S%-KP&yTu%%W8vR2HfKz`UsQ1Mrj_fLmT4CqP6{aP2=#m;UU@u8~Vw84PPrxy;M7P7%e6i;xJ|*_qUvD);FfEKGTSHYIq+G$o*Zc2>u>v zBw7+n4StPa`k~e|9+kHQwo3JSZFbDDrZnk959)@od_duG3D0{FBE3vCK!wu>V8t4# zm<#oQEZO2q%aIkLXz;ehzhT}n+l6v9t_QSovUe8nHg2Qt5J%oLDL^7_3gnHc%VlR>o{UY|r>3%0PJ4`@iLmXVjWI49HQ>*b8OWScX@5N7uz7CNVT` zI&m$taI^upMeI%PvN${MGrcmo3(|1mTRQkf);vBR;I+RSjfZmnaCzfqc(y+gU75ugqY110|uMY2E zOM%&n4V7#TV3iT&A!*ZLOX$;*h0*VWz$;dMN#MlSm+&Vr59b8L7X=3@3Pt$mWOrh4 z2{6flS8Ki`Gw~szhc8-qmW*xEjmDP-gVRFNDW+o&jqqePL+#Wm&6LVDdu$UI%}U7X z?WsQMh8FXNIdE%rG)khE6_nLMPP5Z|@58lK2!?pe{;$4CsR6w~7~ z74%Ya(5=rH^wii&h-is-w?hQ;&Ehy5Qx%_71JW@d1hc*0$wsm~nXRNuYP6#9l|Hg# zK!`*d#C2a@>{R)a&}Y6ugQ8CiWUD%Dv6-`i%p+{lM4uls<{|JJymtv zq@dtJJ7bE};>?OT?hylx`XJZ=qXoEKE09WR&S(;Vfk1R<6)yZyedK@EvVK~ME=4u) z?0-|U8|s-gIO?~=!F4e+>^I?KoGmGpfCpZs8t%J!>)Hcz;9)tFl*;FDj0jq#K#5M_QK)_!Uwb29qLG)-oN2VoX(Kl`@JqW0j80ir+KF&6qK?(H{uotT zfV*Z#N_t^OfEA?A+7wYbm!H_h-ze`z3$3z{x?09o!4FR0!e9h)!4Akn9vU}IWM9@MOxI^8ln@F+5RI|`tYP}7V{i= zm+BRVvSmJStY`M|vVxjyg<(8HO&ZL@H6hQI^k$gc&l+kv-2@=zwt*Q#e7F`SP+jVx z+#Lx&R;ikdYrF=_8j&xYP5Oc5%~g`rg_=tg47UJj@DQgi;y*{Oh>C~5P^7lGwZCofJ#syaFl zDgY8B(|9w0?%q#N{NMc_CqXJk`W@a1j=vFE9{AhIHePOO@lDMNU7Q0K$JFD`bUq)VtMWThhO;>R*bM2L)v`4XO z>`{~>=OD6XHy&2rOj-yW@LX)Ms?^h@Us73Qj%Gd^CIX2ZegGtA_vr$38ggcT1C~|< z5=`3cKn>i>NlhyLBWi5uBUr#0;JJ`;G>!o<-~+B;slQAB5=gzv&MIYLJb1)IPkl3O zix8B9jw=(23FrtU4H{;gRTI%}S2I*2vq8|rWciMeR2Yh0les_=E3r>=jFzfVL=MOP zgy3<8`X}N^cSWm%q8My?P3cHA?1Mg>)X{Y%098I-n=$}OADstq*`}vW=g96G1&9#j zH_$_H*y8=xYsE0f0p@mKrtvP;_QZC9dEmM*kSYZgu#2?hjF_V^(W8P%vqXymy3{Q1 z5b^+C{P|s`W#CU`OXLG`=Z(&=rDQ}a=GaG3z`7Fi4$W7S%b*oG%wynf(d69w8_*YoT*r^-ccH(GlVbQWvH6NF-8dEBKtz@fL#O-mi^vj2y#<=g zX>+BIS>JJvFgb!tV4ht|0JkayHL)My3pez!!1AawcEQ@_47ks|i00QJ%wT15k+&-Y zFxRG){(Nmd?8SV%?+84!4R1uHNV8ljK`m1e6U<(Z#AE!ESMZ2hejGBekJQ-;GLT`) z(OQvkh@)rt-G^kXGV_c%GEg^Ka;!4SBNsLtON6hYoN$(tg}+%n<=85&_uoxY{|YMw z4w{E#qYqqvDHY*=FheH`|JFu)G_D)`(URu+bnB*JdV9AiP->T?$csBxhg>%=O=j@e zHCw)S&yipLwWzYbzX&SrBGX3KERKDY3ygs83YSqa$Y=FM1AY)dn}hJ-_v#~xAiUa> zTL7UDvz-)?Bd!Q1-iiDftTFw6j`MlRBlZh?r47ykXxe9;yv15)pwL9&%YhT7v8Z_w zZQ1eR!e4=ugC_t1neWei92ijHn!s0iUm_B-2RA-^nen1wu3k^k9cIyC$85yF2`u#-hbsh2UQIH)c$syh6W0rX|9wz_j&=ag@L$Tbo8(q0rz)r|7V>#I z^T#*+QuOj#pD!yWvOB3Ah+5rzy0=+ah@k6S#0a+c7*hCeo>RA3z7AXRM=*nafO1ju zIsTuk{gX5uoq$(MEijWJGF-exKlA(ZhUPs{1x8nW#~4JpAo&%0*-ickW+7}$;keU6 z4JvP0#|(bAhKhwyN4zr>1zu;uW`v~mWByLMqlL?8XzEC2J&P$?&OJOaXBvf+(^uQ; z?NOq~FtB4G8pp!h;<$2_2e^RFMX}y|D9xa+y&3IBUPO&{XHpTqAZ=be6h0L&F913T zZV>Y!8X%+S!mvbbtYJ0+kkZMYWeWbqrNpfEOabcih)2C@-%e(qvTLEgT%vzd@`g}^ zU|y(~j?v|N)ESnQQmvXCR9>a9uozipVTXMY#{7d!VsTm1drkqme?Mg@Rgn`jmroVI zOEW#lfo8>Nl77QKnJlY4q*cUz-rdJF&<<*&&6Ph=U$q?-ZbgHGC|shycMh5kEE{8F zCkiAe6{Wx>_B8qCsRr3}Bq=UkTa1%9v|iASEMvK27kYmTYKtO=%rWc2C|ES?V$gHl z-;EtpvYOZO@q_lA-p1hkHS333;T952c0 zvjV7KxIlF={R+H*eM1unwg?@z{dUoJOpW;*HZ~E`%wx;tFGw7c^az+Dsb};!W+WrA z!IFz4r!CGeMUTVSTFo?)DrXAOj(Of{NwX!TyS7!OeaH}eR9p%|n^WuJ`N4<-?6SpFTb^DCmGFvsqY*hK$^DFRA$9?}O5aO}5?`zCXtSKwn8Ct16(as_EIvjr3-Kfb{DaRj989au0$tPYwO{n}a- z>@>rlu|x)qUn%>ya9V!(O^`6|DpV?3{%W8q<=+uV=nTyOu@nRYs?+;c4a%+!CKsakjalTKCZ&nyYY1MUAFz}`athv_%A(q zG7V_bA%Lmr`!As-Swk^ECM^?8m=BMIUJG2$nEDDPNlyoVC6Lg3#Q-$oF6N1b5)KiO zQ~d{?sOJLjh-+Rj;fox^cg|H0iOX<-n0L8E*n4xKv z@^I%@d0VpCJ}<`0;Ib%u$_?|Rh}K;PSryclIm3UD_>_-To0b8V>PjV%1|!Y1%lBFb zmO0}j+L3%aV<;{>@!zIcqW4!hF~-(((bl;sszD<&F2UoOLj0kI5sF3>k+s= zoxRuB|iO;KA}hhtFf{rxZyoP zmz1F+(6bgFT2qK()My8zfLDRO9=bU)%w+YE0_q5$rQ_&)hH4AymWeHZ`Ca6?FTfq2 zyml0Y?*K$oSisqY5|Bi(8thaG4z~RXwv>!ycV;d1Nion}-L({p2(~-Ji=ZiToqET1 zU-cbVarUZF$y0ZnFMY3Xc50AhG{<#rXeM{;zzyQ}kS4Qc)Xz z=WjUYbx?FrsdpZCk^=23KE4`DdIc?wJgFI@TM|ULsE{~bTWq7KsjOuv9c6wBX7zIj z4rx37rl2^-yA@)>Rc~T>%HII~vUe*4T1c&&O&+XfRvJ3xZ98h8!LG~uLVLYzN5vYf0&FlW+MB}lM6Q?{3fqG#0pph!Q($&G zk%c!Pya`skJeLYnqZzM-$)HlFz8!TsW3k6pX4OSy;$pEn? zgWVA$xMYCbhDQdg6}GsA{EeGQ*j%KnI%@fQfNc@&yKGlgX;@G2K43+7?@rrQw=`@Z z_&_W`c*@^YZyNG$mPY9q5%Hvah=WBBmDNPbM`Cy*68G4yYSNI+RWo2>#K3ObRgeCG zq->GyA2CYs=_!U!l+{Y`DPYXXHnM_k8nzL9_NUUj$b3FS+Jz^IkIJ>nP+h_Q2HUmp zISD(Y8?PKCn05xsOA5OeI|18wb$e1we+KJPsP>m&Jv*yCZC9n6!Y;s(ops7~)Ja45 z3QYD(p2s3$x3XSSae8DLh)N?Hn5Q8J{BOi!NAl0?3mW#4@~zmw$SHqvk~Qoj_zo~H zDm}nAoaR^f}ECprf^W|b;k(7 z8y6XVRM?X~1Sp%?E0J8`Bj&76G7Lgu$v)mRg~L+Tkg?^qqpA$yXR(06oRuT~2`?gz zU`&3Ijx{5P9E^jSvC}4F*<)&>?WhDp_w~-}!C&MXa{USIm z{>9n~nzP?)_?uv~Cwk-CkcdqTIb671p;K>bn5G;3D^jzCj zxu!4yFnd`61vKXk;UW3PWlb)19h@La^u+G8!+?@NrV2-o5>eD7u!)U)X6KeEJOY@x zsVI`X07IAzR;7nDPA#8hTV z4Fpy0uwC`VRGtQ$3>qXjk-#v^(>g<6nGM($l<=4Bs2>Sj*era=S+JDgnx(d@CQV@u z;81W5xn4gF;WfO z8#vCa+LIR&ZiB@Hk8QIZ^+7ZCl)%!0nurY=x;tPQL7iJ|M}0JOwSPuH4C(UHncW4e z18Z0kOI_mv(pB6Q6L1f3c*$h2?WlZ1STFs5X<~@&s*9%ZzO>WQRC?+@ocC(*#1#2J z+9@)NV$fI(IY4a$Yc+HWc!0!BwB5R5aGO@LjI6$I-5A9-5M)clXd(#@Rkv0Zgf zLr$I00@yn%)z@}ay@q^N@(E!3tXMzWRrfXIbPcUy>Sp$nvOAOEQ%|dn-uXd=)fD!Lp<9;#al8&`$gq)Ad8h)bh82&Sb z))Fi-m7ir^+Soxp%@qxK0vVC2+Z4N=Olv9D#Zc#?;zLAaarQdRc4-B3!f^b^B80h?CW(L`6KAuoOI2P{~fPv)##L(V1;2bj5Pn3UH|nqBH;LjXbPFn z8p6Y1?Hh|on1};?NnX|ws=Q>t%AE}qEFIR6w{af@jM+IwmM%%d6jB}oOy4<0mhOm# zd=xoV;I1@MCTn<{lxcu*yHe<#Nmv0r;RTDH4wxE{?M)pIOQ$Eic=O0fuwwr~FM6se z%mB>xpQI4=s3ANhl^#$`!XfOV%=EHOQ*pAS3O2-&ZT+O-8G_k>bsLij4r_RpV2<>H zjcK!}TWZMLrq2N;Z%CL$ktT9c=Auc?gEg!lUqg}RAr9?wr7iOSYu6{Np-9sZUij0U z%SpJ;6y{5h-H@}^cGWl*DlU3qxuHPnE+A>O?WpfbSo!i|BXJ3=*MD#od9J3g5U|TX zbrpH8hVZhyF`$Bk?~<`;%M00Tu1LKin@zul>_!#?mbioD54_j#D%EQVV7<$UGY2$e z*Y%p$Kd!5zI+6df6xCA(R=%isf$gZ5ngx1z%qRz|SlmRc%g|j1lhvqKhOR>T)uK`w zK0U{=Z02QEQb}(Dj;@LEu^sj1IF`Tg&?@NwYudbRSM{30TY!mc2B=5A)sRmBR7?8p zHEE>$aDw4&FPurK5r{J>gBtRdr8|JbYk8N{M-BNLOf6u-x@2;BhBUlO1*!v#U!P0x zCJqDM^Rns*-j@b(Qao%|RcXlor5gbGzqG4vY50JYjnX1+DS0*38uB^Ihk%7nCc(Ra zOV)mKqv~(~vB`^Pl4h{#RiiYM+%tub0VTOey&-G?i(WIdl}2nXR=~Wh zRx0aLz`?M@l{ArP*hcV~nBVX;f?qUjC-_{dAe{e8jB40H@P!mMES(0>81{5^qC79b zQZ}Vg1osX5t2(``E)u>19NRFu#CFuUA?%j6+}KP((RVH6-Nvs0dAG5np4?zz4}@>z zJ3?Y;;I-ahVUJW@ugqLwc{H}38p5|S8HCl-aBee&eSm!-IRr0MGJNM{_0xB}7t<5m zK&B_Z61k8tx(2|SgVI-1&|nHbh$RdvpqeW%go9vt!JWi<>#zWZkvHTeVOT;W4X!$@ zoO$7(&?hl=fm!oyNA(%PVd>{~<9xDbrtmXhqg~EVZDly(g%!y!e~Q{e70{>QD1FCQ z=>c{v!FL++U>^f)v#Y2<`c36Gz>c6!f{)u7j*IfUp={A`f|Ng`O9o~Ve4-)e`H`(TR4HMbb0&HD6Nml)! zsZ0WttQ`p&9^v&f`O3disXY1943BzSDFlz9?y}eYU$&zzYR1!ZDp>y7|Br@TC4I%c*hi;{R7j;X?}iyg*gzO z1IyXjPflTnX8s-?GjhR_c5*6*7l!V<)XvUoVx5LA4{UU2HZ}4Q916YQZRKDo+@)BT!XBBmi6b%arUIt9_>Su_xl_GEK$iD*Ew;*kU?W$uM zaz`%)OkL1V;b^Ljj3_yz%F|6mWW1Gbj7du#8Gu{-=iW z2)1c>onQrE%&s)@{-0^chiGm{o9wP4ScNS^mEH)~Z%X&sQcl71Ee$z%t^$nRl1Q-H zRNexN-jYS0@oiIC4cNb>k>FrI!`t3CmQe#J=Q%$125Z(pjKe(>yMjTV;4X5aybUh@Wc&%YQRo;ET&bj>rdo*m|90`D9bGw(=u6m*NnW*{2;NtQ?q7<9d<8hXB#G?Yup#W0SzyTk2|t^{*D@X#j}v^E4F^mH>l?tDWm$75 zy2*y;hNt#|)&CVUhfKXGd@E1=D{i*!sBS~pC-!Pt&TQLNHE=TDd0YMbw^XLroh^Z6 zlQm=uFaX%~cM`!`Q~3d~?r%QeeAiSC$^^2rllsjFoZgQZH$z};J8Q|%eSz?!H_}*s z0!;pUU_EsJLpUrQ=kF9U4qr{-XED4xc{fRG4ID6U>kI!A{nM@L$p}8xkbgpc1(ctV zZ5od8>Y98=KoLFmnTF%Mye394u$y4XeTEa>h~t0A&{^3-zQDEn{3R1;l1XXj6(ux< zl$yey(tTFclg%kJgi~M{E60ePeSrLzsGe!Cyd|yVOXnEuH(280Qex)}7LCiGBwci_ z!S;gHE~y}PriodM4>qKM)f76fy+sxYB}nI zZgEUXvz=3pWEjF!Db0@VdA6%gnZo0Ml{+{bO6bN`GaqbJJ|V>kNua3iP&Yp{&4+`t zbf15MGgl>=!jphm!GqK@4jaM@u$Yhx5>EEA@RX00=|k?Lk4&kp6ej%CkdxSWz%vrtr%YX8&oAMuO8Co~2jj0QQDt&?}4kut&`YTN`o#Cxa%b zL9X^;a~taQJXl6h6LpUgQ7!FIs$ z*^T6JU(%2h#XT2Wrn)(EUmw>&hY#m4c_E+qA8{^yW*-YXe5_7->Pu;mJ@IpGNBw-y z!Y)+aE3oRIdb-`81V0Mgn6=e*)qsXW1U~`hZ>-*IyXu36!vsHzLE4nNg~B`yM+klq zbG>-*NJ24+n)@ofE^3$zQaqASjQU{Vb4)DR{6;b?2MysjY2?U)D4IS^;kb0y zsAhtPk=Ee54>n9q$WyUlDoMj1RMtu90&WVyBN}q{*PmjN-O@eeTE%gBrqCk4z=jsr zhT5(=3*nT^_0xd;i`%KWatz^bFxe7v&J;%D-p}SGBLq|MOKPt#ZgPqNESVR#+;-J5 z4fpwys|Q#B(8L1=>`|>@9Nnm`@p{pJv zA>?6S>j-^DGGNo5F@CCsM+v3?=I)uKvOdx97{OG)^xeY*-(g$rabNuGOap8T=WVS0 z*j9TSA94aLGn}u#d9N9HwCP}JVeJ9Dt>fRilVJH_oagC-`N9mqY-3)mBtOHciZBmL)ntvqUu3xLIY z>dAhNX~-wx^L=GTFDCd+!;7RWklwnxh-R&E4f&|#C27b#wG`{Uz_kR0DC}jhuC*f+ zBzEFHgF;{N%K-b=rBb;2(hyz&YhRa5adMX_ESB-QmanXPSHbYAFSfIn$ar0xLguw! zL%#Lo8sNmjMuP86WhvmuqGB?y1E#V}y4I2jGR#M-7?%55*QtIgWW+}C58ae1q~XAq z+yKjo9HEKgm?^B3ij5oyCa2C2-UMrjnh2(8`wk1Me63p~tOgtm%OD@?l7_bl)&TZ~ zPEtfvsNo%gwNeG4BXez6UDog}!8+-&;mM?YTZ@04zE(ZK`%*tkCulhLX~G?~O=hH-VV5sf)LsEr`t+``9rd7@Yp)Bn*DZ5} zcl{dMRgI?bwe(r=UcLt(`p0(}wUJ*yy%c56JWJxIgNs^STz~;MWUzAfCKCJ7~YtM zoUUmEP|`Jh(~uKAeF2PJmr8J4L;hhm3fR4_o?97fBVT>3F)GkE89-qboQzV#af07v z0EH$KY}Al9PEAP93XP%A@FA9CzWVY#%Rj(6!wM;;YPdokRe1~xsvCt zhxjdd(hv6IlvL2lX%aRW!c4HHRh1-sWC~9McC9L<;XH!G8(Dr>9&)r^w<%10vU0x9U5PrD+wp8kTT`IZh_YGm0 z-@pCP22)rrgKNzc3FC4YUiX7jSmDPT5HdIMMheY%g1sR{-85)XSZxX`0b4huSQNwL zaB*(>ar9RO7QZN&+`a+Lcxg@Ac;RG_?Whlit{N}zxnX4Jl1yD4SaCRcN;!GV?)h2u z)Qb1<%t5OyfZ}Zp`F7I=K)&77Rk<2IAZ4T2NRL7CTFz_ukYE#Fx79#!FIEU2`B}{b zAB#EjZKrT61}lV*P^&FsJbbz-PTOY+pNN6*siL71YY1DV%Kb{n-D!vLsUIS$Hoz=T z-lg^&!l!>&68u)r&B33b+DhMj&m!S_;n z`J8%1leUIkqtZ@BrP_lmRhXw9kkst9(#@6gQzF^YOO@sB#?wM^nYRJ(22CJXL=~llVWY;X(-`eZ%;V~n|pJDm# zF0x7!8tx+)3s|$KpWqKuxgRiX&ya`hs!0vw2p#}T+}%U40mstg{jGxp696ls#`kar z_CN3t!9>8(D0U&rW$@1@j6N#bO4#09H4@f!Gs+ z<%8wT@Ab4D)oQSd(tGCBkyWbG6;MFmcnPp~ej8Oly@uQe3ZwwreXV^_cxfBc06OIhDTKG<7RSOVC!Zk!yuK0|m7tZMBT#oJG@ zL$=i4Dx>0*3!Ixt{k2U)j^eKioL4~bnW?Oh4l*yFx?Q`eydiLI#%9}5xv#i9m8jU8 zV8g45U7FYt`&IhGC9DD*TUq1Uj>4wUMWN!4y_Y7g$}(@HNBR{#Ff@^$uX{ zWa>sU5C4SV`qt@?(m29aG zv0Zf&|KjVVunm9>o0~#xM^zcZ2Qor757O*&%M>;O_H5}Rc=8>?htdg}WIQk7>+&<+ z@lzk-sgI=6m-5=lDO1=iws2|teA`i(hVU_1`jR$c`)_f!gcdZ&6JawOsg>h2V}D78 z&x~AR2Mpa)v1Z8J5O3((#I($8pguSDmiGlb^T(!vb{QYoH1JJB-ZbzWaC+u6#m3{N zvO}6a% zt{cJ+QdFEFKaUL;gJ2)Q}A>NtF3BXRDSiV+T!yg1ErS5$BTIn?GA^+)bO%ePh zV`OO^MXDz>WLq~a=4>gSn@ZP^xBUN>A-j}UrB0g4=m5-kI4qEUkm23{RC^3yR#2-4 zxv02yc5eX3s{6o_?P~JEGE8ACV2RCVnok+R{a`gg_2l?XW7Q=t0O>0Z0FDNZMcR(~ zjpdrS0B)~%u(ZIsNE)$8hVUR@LLm2$y-EKTCIm=-O`wN<#x+QX0(fX8f))5jlixq0 z8I|-fSf&4PpzWwHhAs)LAt069{!v4B1gs(;kDeKm$}AbWqhR%G^5@!)+Gns7X^S;U zWCCIhb_{H4E$33%Z?IIbp0#z<9otj6VvYykczGJ2B;k$@#Q_#7)^515gOyPwBquT`J7bB5M}`; zEpH$L(QF9MfDJ7lCj;>XXW_F0th4kXIZ~}#da24sap_Pts^^?k>t@bZ`BgJ|XfD{u zX3keRX6Vj?O>W^FJ>T>T^XP>a08_T|g8m@Vr{)LX=7x*XsrFQ?v|aU4L%x=(08p-_ zs=I>Ku>d5aDg>0vJMUfL@?1h$FN3x1$s^CT-V_!A*6zvnvK@8b5MBXm+C5FeSez{= zmZ5qTFxsyof;!eU78XNT0ygH8A7Q&H&J1aHVkdXy79pYeHa&;JNDbK@J(JcC?IQS4!*)_Wml_D| znr*wPNy83;F93(bre{-~k8xo;QP`I<0Ngwpjx`4Bl5y8XQ9@sl(FTVFl{ z76;Ulr}9z55o-M}fcb$f1cx-_Q~slXv4OQTJ$};gD=EhS69YBDYNy8 zWOB-5viPZ!cF+azzhtsnKE8mw4nsIC6|f?ow@71~&hG##nvB)nKosXM zP73x&L*5V(1DLY3i(s>cd;#x1K)HbTv4*^o5)0U{ES_BUiYr{6{ek$w3f8wNbG7ZL z8=C!havi~jH>MJ+G<5M`$(wSho8L5a2f^Yt^AYY(CCm~6dF&jLPh65oy?oeUiD31M zqltYs*kLK>;{Ihc9u1ZRHnk*XIl1Fl4LcHOB~zUq1?=~YXRlhr6oSV96TH&NtFFDp zPff)a9+$6JKf2U*)LqT!jcH&->-(uj>kQoqu<8wb=24Z5pDpe4iMmFb+AuN%H23L|<$u@=8 zWK`Ly1it{523lpDutdIcN8?)Zy7AP~K)zr0I#|W_8WMih!U_`JkZ!)cf{HU{2rI$H zcGU9bq<&^M1Fiqp!(&DjSj&Q9avmD{`Jp!hty}!}6tFWYo!~$WWYwiiA}xKKblSWP~esn>K}(IcxkFB(0W8)*^J?1 z^GWJ+x0pQ+v|5NgfiPo6C(S##8uB_~t5lDbP4K*ie2VxfV7ABDD(bHqw$WpsN!`sT zBAeX(kzsqF^_*Y_$`g=CanLg)GJO$fbrO3CVPa4=-?H(O*KJ`oGP7{YETO<+2&6lvjWdSj1_5Ic?xVH;M8-k`O5!7BX{|FRwROf#CU-irP3 zEhN@%==x;Z@oT2SJU4Xjz@q(&Xo5V93vv3T>%14^>Q%^j&v3ZEA4X|FY%A`4KVk|$ z$iVVUp@}Ei5DrSW@~R=>ZwNmIVjIs}PM!**0Z5^9d1ZoY`QipZj2_1<8k@hWG2`;-Z-KZfejIRGbt&6b-!=SBtv?|H$8(V2goZx|PKsgi?4$VkhlW21 zPKk@4+6lHCWB4l&=Le<%^XJr%U;0GD-=vJT(c@CwKR$hI}W~ zKET>J)x4mE#h_RlCs4r}BQyCPPpsO++L-L(088e_EVdo>#Sk6(AP#=+U^Pr703t%1d`99wvQ{ zB-=VdwUZ23zpI4e-D(Xvo6%7z&hBc0w>3;5bN012bQxfgM?pk<}KH@&QoLL0d}pevusz5 zX?THPK4ALVLUM(_X?T%ffmGd^Y=Yw&ULsg1y?jk7`N`ik6 zd(zvyI1B9$Lst(bS8Gffy8B>t-r0`rsxqYVZ?LgT@&RB%U{|Q^s&WmvBQ^q#1U3=8 zuHi%K!cFqZz&wgPDoo`gz_x&L3Rx0y{baKZ2k0^Scm4MNW=E*Qh&-EZ_J3M{Vz&MN zinP~`<0zyaTZN`+Kw8m=MU+?hrE<7w=kZ(=Z~ha3vg^%ATKb%SAx(}knz45X*6BC8$ad5|L-$6i&M%2rtfA`# zOY?6aR*B;aZ*AU5-zU$+PWqcT_wd%n0ibtc8*l)qO2dAt)%Sqo;WY$rX*fXegM4Cm z3qAHX;Gm80`lEE$O`O;y`sp9Y|Img2yEo zZ>l82S^1KMBM^R(LAR@h{E?e4SvX=_qa^$)RlbX>r^*nHiE#HIxg57l;WwFbck{)r z*RX$M+(s^??^1V5+sJs7zUHTn3pTPf zj@;P`T6m6xF@XJBCMfi*#mc)_1#FFIA&2#@Axr^l za(GYtjYbYxj|Ew&RMz8wnN~A7td$yaJewAz<5@@D)a(Qa)4`TTFQ?J0*-2s_a#egj*vsA?%nz9V=e5(COedZNW?k?5Eg<> zuPF$jna31f1{_~oL1Dn4AuIxGTU$sEtxsd&l_0B_+T*IU)vo`Q!T`-mh+PBg+5Lao zu4>SXce|G2p|Vf*fre!yEC(#y)kf`DjAIYiQJM;{mX%4I-o;=ygsm7`z;~nnn^nq4 zUNJ_V{xyT$6t*&vbT^BcRe{}-n%U4nUP%?Um{&>jSBuTrFv9;l4dHFD#*JAdtTu%; zQl}gFj>;2dEW8thpR8bgehq)wj!M^zs_ib=m@nUMdeYFT9D=5&~oj2|$YWRX+Ct&i{QF7W2Yxt62mvq)G3A1chC29DIV7D~a zwtjLHui!ku>mcl4>X8bXn@L_m@h$wMLCV8`M#f|pI@XPJ4Hv=M9p90{_% zkaAR%kpp{dS3S{?cf@~{SrR+qUjmK=AzJt*-D_#hW(wXk3fXc$lMAYjJq!TGkM9=zc%*&mGEYQko5?xjX8 zS4gl*>&@5M}64`wl&j42J;X4v8q~gC~F!q3*l~=Coq#=;6VGdQ!Ie}|y2wv1M zm*9E8uC-O1Xh1{GLXamASqM^*Df2=wj-}>HZ{1M2%y!gqEL2=T-CYD5UZ1ecc2$}w zECB3ZpH0){2}5{E%DSPMSZxjq3xlzF;4)e{a~2KP$H;PD6l`6g?o?kyVf z682TVmgNlupJ-S@%4-6bl@M&zkb{X*z`s($!tmi!PZQwhu zgH1;il4J8mGwR6|(y_u5i1iw}8(;|$(c~<>HFT9=$xaTj(K7t2gsuv#duwADjVjGN z$&r$BZYdx(X6UMAbZp5XKkA#IyDi;uE9Xc0fD|S*!8kp92QY6zF~#}`!S0BWlFq4$I3Fog7* zxg|SoSKTq;1F3K~hhVJ<8v*0zw*O6mgb5!4w$1G$c;+_4d%>8to1`BjQF6A1kEmBQ zOMl#2O{L8-;bSS#Rz6(XU&Ei-g3o*+wi9#WbC1*h$Kl!QyHr z5WKG81Sz`!d)B2du^sjCF&Fj~OkKD1Nv~>}lZG_o`?N&oT}AAZq3Z!F@~()q9W`v| z-hkzMRT7JCVb+VW^HydSpBC~m_qK3BdxJ6W_DL)Iw#=~|6=MkBNmur*Q?{%2nZkZ~ zqYocft;Oos`(SH;;0KvKL*sT($I_7d&LCh@NEdl^bsDnE_YtrmWSFn>FqK2W|8_Hf zVXMO@8C%2u8e6WK){sw1f0oV@$@?9DYdAus{UQw#8Aq;d^vgexH#>|9j7le;xaJK~ zbfDXfi60Q!L0#a^8y0>I#?Sn3;+G)tYpo$12OABmUqtm|3criD6V|nuLa_mc6T#LG zD(fWXfrPm<58T1}#?N4Dir6m*Q|3%>p(fFgPufh&bU&+>;9U)WlQKF4jX67gGoRJ_ z1No%QUck0FZJWt1BSU9Q2!F^vu!imVj_s&E&8WY|f>m#e=1fM0Za-Mlwh;NCv1l6=n!-I~dar{fO?c^nfNbte` z4yO%WF4&;&2z}pgLw6o*!jH55-$3x17h=7kDc}NN^2)m1)KD7cQ>|T;v9WZ3rsbQa zvOosM(!s5^tEx=pCBW>J^<)E&K4w@LVqGR!B)xon^eo#|DH`%EWLKm>8+bwCn1;oq zyc!~oY3gipcQxdbRwaNP>kJ{PRa@y z=vH)u?W!aVaXvw;4$db$2CNK$iM%OY8RvXko^hj8qJvb4a81`La(GSQEg5%f>sQ*2 zYBhw_Vq4ZVtfWBuISX%xSl>xlBVBo3H#OL64bSscThf>3C+xCa)uUl8edS&0l=BOy zAH319j^I7OxOvm0+=mVG^)g`ZOIKgqHp_NY>;M+JU?dyB>K5^RbNfx<1Hj@%Su<@% z#Tmjzu#ClBGszHsX5qsSIfx)V&!d4iW_)Jh!w`0fAA$9Hlv6NSZwi|M<>!e5JMVrLb5)oa%+-rLe`M~biBh;qZ&OZ zmd4-k{t)Xuy>S4-XpbcFp$atoKyXmzENg=7}v?GXODrE`$dyeU#%G#x^G}TzV+m^-8OXN;w1U@^1T9v?mJkPAMYYd!cYB) z5F8r$A+tniESa(+8uIR|Nr7SM1d}!7>|j5|=!B)OwjFg8*QHH_SpT<&$BZdqp)sq; zTHVFpPU+**G8N7)p)U94E`F1uJN}k8&Z;Iisn--nhhhNC;$OON4dGs}ggJ#Ys>+Zk zGA7j8M{OJn*u5Z*%tJXcOvZ%5O$3wFo!3oa9N>7=P>}7Y3PX4ROp-qp-D4IX%BJI> zl*X+gC+W&P{09xiKdA)37^ixR?WkfycnGZ2;WgZ=rZ5q((yb*}*2eH~sFg%TJpvdV zI7;DixrPU5_DBZI45%e|-Bcb0ObckESh~VgrbwL!#F8=xfy=Q_>pH>w)oH@!=o{$z4>2Uz12Co}+o63?!9yB8BxMs|(Ut-JgJ~)s0p@J(B>1(0VRIY5o&c(L0^iE@rWf@q+ttrT3u3e zGYSb_(eM>1yTz`}C?G$)Si{!@djN|)VhG*`d=rWwzgKE*0f&bT8uFIKw}2T@aocQH zJusDhQU$o^vC&k%1MFN7OK`G{VSgyjeZCKsaD&q>|J0Cs<$xHkg@pvCOyvi8=fWBq zx4%r~pv+N=2G`q;+K+oNK4P{Vl99QvghGQj+>7xs6#t+;0X8jaqR`-gAshxPT-3YV zc2&G7{4De7!iMFxqt4I;qr@d^sVnQ3$2cuV>_x;Gu}Wa^UUfgivG$B-48K_Ycgk(&t&K( zWu&jkqh~(*#Ox>7lsGA2c}s0qwc|SapP@K`_DklcurzXSpButyv7r%}OKewln8M#u z((t0C6sC-@FglEdd&8K;y0s+C8ew5{7~<3zz+tzN-gw3k?gOiK)2XQ0rZ5(;&B-QM zKZ?JzVRH5YuxQ}~4fOk?_~#pjvln3L3p!|EHJHM9z~TkGvE+dvJP6jXu!qKS9{z|X zgkdN6A;8X=>9*~t3;30q5XOJX692H=K-*RMrtq*lbyjnr?Wl`}FbS-FRxLfW5PwUL zpmLJIY9ogDs5$#E481UNMEo07oN|2|g%bm>PyD_Bi0Q zTfLoZhlZ?71FUr7Y0iIWDo@Bqy1b;{WGd4E6XxY^qrxJJIT>bUgptn}hA=jnBEw6_ z_@5bO-6rFD8m!X#Z+5sUM8f~fFy8N*MQDcS1~Lt;cbJ?(D`rd8;MdDj%_vAY3)b#g z!w#yU%K?k`;vfFc4Ba`YQg6--b{tVrZkTnRz90{<*~*~cCQU<5RDA)T@Sh{WwxdoU zV#>t}^QE6!ok6y%(oNk(zzh#QTyj#w0(#>mzv;6&IkwQ#G3#iYCnm=-=rjri15mH=i(OcR`HV0bMIOKzor{mT={0{qgD|1pRQK;kNqw_y66z{ zhfQJqADBY@?zkbm|L37q#NJ?Ic0(9XIuF3Qz52*@_F`jpLm0gNMzP4Atz>lH8p4NQ zW1bCUJNrywlQgn-7s10w*Y_w48|9k;%NG`Tl0S#Q@Daw{WBH5)N#uGSF@-IEV5uU9 z&JaEc6UU;RSP9~=RyJ!Wz;`@5#{rSx-T^Ba23 zuuGJ$q_iG<3*sjYS=kNPVx@of_yfWJ<^#y8VJ4_WB4Y_RDD%YoBbOs z?pEC0-GUcNDefLTcyYI)AKK!@9a``)oJqSVn!v^{iDcM97_<>_BQxt%u-l#nv>}!zqCCn4iTK&XBru~!o^)2R( z5%r2pggUn0gUZ|t_PK^OY(y(&eB>n;8AU-&zkkwHACuO*y+S%0{;dbku3q} z#7@U{{ZBgbnAz2gHWt+QdVibElT4Va#~Sx^=&97fR2SjH($vH07i+=5Y<mXy zNc`nn0_;ch{mV0lA=1@Jz0{c>rmhr>!7n8BU#zNySsuM710h%BD~OvD_Oule`S)^- z9#prC;4&@>XJ?Hb@;MX!T_mqyc}YaN#Y@KTlC0k81+&uMfhs5M@0R|;8+hlg*k4O1 z@dgrmX}^wP3a+~1$Oqvn?(36_?#ymidq0uM5K@z6Q7ivf$})v^Mp(mco5~}HK1P+* zb;ME3jOsVwi(F96Q=Pz%I<&>bP;djj zDHm0+d}>8lwbde5_W-#`QJcFI-Q4#l1NnGiM;sxiPBYpIWi-<^aR`>ejFt4u?O|d8 zoLt9uCqaeSCZ81?agv}aZAPy`-}hW4ir-MqX!uZfZY7D}HAIg`jdq+Yyw@pF*Dwhizsr!Y(OIvIzl!N4UUr6A%ufOrXS zIMSps=^X2%SDB`3_ez+4@f|v7_wVQFw%R_ovDHEalEW^YXfj$v&oVa~Mrcsv`}_31 zCR~W;KO9&hwN&t~i5P6uj=iVW1m4i~e|gb`IqMX01{2pY*=O@%;gB}6p6XpggSJn& z*L#Fb#$Prtttm;6T=T~OK;3^C+? z{)&tArxmk=Jsf{oW0xx)9cb__S_#I?V*ni5%kuK2#aWRAYW{h*l1cd59?wRzJ?Wf- zuD}B)6q-@KpmvW*Gq@GYrft!vMRD_B-k?voZSd>2dVAsO8{{VDlLDd`m>!ZX-ZdhA z&UF~dGyB9CeV0T-H1_)m6~YCv!?xMG#zq*4aJMMFxgf$rOM1}6nk!a_Cd54O;wrDC zIqt~3rUxpY>+rPb&Jj+|704dw5?0fk$j2ymGYnnOcD;h|w=bvtn4b&(EHP4D80-7| zao+okFZ?+#ECR$>%CwN4Fe{nghW22ixTlbwwOwg~Zn2Uvy^!vOTA03TA4IB!Ja>4w zP#1so1t9NpEIu!~y%s zZ+VxOZwQex@I|qN68InX<;;irxbfdh^*6(GhPcSwzFfffx@W4+8PdDLd}yU268in9Sf;c3}l#iV!XY*Aqfl~nm1%}8PlE4 zyx4`&q!wr&V!99|wN%MVWIsd+Fg{fDMAZrisz5_{P^N%3eMQmnD$f&1_Y;~RinBeJ zi_Z6W_^6sIj)LVKP!j7L8Jq2nWO@>JX70o&z7R}dmyk4VqL1-DVfpdDqa0H(W?h1_ zPa80Voy`Eo)(!EiI624-3@SSji=L=*N_ThYDxUDu(+ZGdK zthZvfu5U`XODL=^ViPTZpZ!YswIu4IiEjFGU;F`fHi?OPZ-Z-@TE!CiR>mc8S(~$W zio_&_qv0qCXgxMe`3l%s_bT&ypNl|TKajASaF^lL-o%$&FoY5kj=p{$l0sOmkKr$&IVj5 zcwdmeuDz=SJq7TH7a-vg2krh#^{tN_w>LPw?SawgUUqUiCMR-={ywa7oIy_2o0nnom%yN z``Mlg^M|qK^PaNd!`ms09C!KAX7qI$+un+xz;P7w(s#CpALAQw0+V_zjNjTGQW-w{ z)%_DN%ciP1$QbQ~@+fICQ>iOG3NbzZXOUmTx)-!i^?poXg$s-GYhqY+5*SfTJ~sYP zIN)ixCKR|tv*jXN)1GA?bN4eBU6iiw=v>1~)9hXzZR-~{v=4y9oaKKBcFPEU0s>%d zwOjcEX$D2h1WcO_QslPbUwNsK8p8j&6LOgMu(}x^ z${VmjXl#&dIO0^nWZIoGAk>nSFn@=+aTDsF5i`_T~*g+&GM7qNF!IwN;d+XS^(V}hY1 zoH5ygHLMaCf#m#{bWeH_$X{5;2r4x(kNki3AArWr%EY(gL%jVh{gbv!+wB;c6=kdr?_4~>7Q zU(z|GEh(R!%??aFP^oiu4&M6wD}15)=&ljz%B*E@(Ys=yf)*SBu1N}f| zbrS0=&zOVca4Bu;ot>9^4rpG8h(qwUOP=DiK2F{RnB-hCI~Vn^^eNQP3`0t|@uS^F zD4f*~^NBE8R2htM`-maY#$+qycNcL>Bd@V`Dvc0+5jDC>pp^zC-|T>a_4FjE)8vJGSN#ATS^U?aocd14--Du*P z?2)`{v40KL@c8^;eNGw)RkZ1y-mCO~K;v|=sA+{1jri6Q{Qd(lLT@M7HH3^1Y7dQk zHtZ+-enY_TY<#IA`X81Xc9M;muKNIJw$j&x(i6GzI|yP}FsP-KNJlT2#SGtt#++tF z&om&dpr@JfLMJ!fC<#u1B>x*PP%NAdXILc{i~`Y}W_GP`D|0*K8n6GoMz)-q27Zcb zWT?C8eTA$Q+w+jE*&w-{=pkLcM7~QGa+RG-(U{^LJvdU=d%)Z|Q5=^9J1nq|d&jHk?xR+9cqjtCs;JqtX7&Gh8OD3t|A zkl7B|)I0=&+4D9+qvhp)3Xz$4up(=dmXaiEysfQZ(_;JuKKwpfs;1SKACN3F*7joj z_o@Ju)H=bNoI;F~slRIhdAh_=MwH(&U{6_Wp1X9P#>e+)-*!_s0WwR(Yj@`EVh7JG z6ox$iIvMP*$~o=E#=rv%ehjon(Y~azJn<0!Ior(&1bgENFE?h>zWCA+`R>SqhZ!uW zyN3gfK0AqPMNV!&$|A*v|HKRaaFpmOb0%BUQfjAi58D-Q5FLANt+S|_Qg7HJ*Q?5Eu5m69$W0z&74Y(j&vH4To^ZI~NhMnm@-6P|N>Kb2EfBHif+zT> zZOa4tv8R}5ve0BxM$p@7Y3`;&dnrGp5+h1={HAd-Z-`@)CLV%T7ZS)6=T@b)O9;J? zZep*4b%j(;HcV;LD9GoFV{XhRgA;gZGUX2sQkH4EEI^%oY(t#3pKGm3WIQz$UuxKc z&a0e^000oCCjKYn;-IW3YwnRA{NLo2$r3p8G=O9i1+Y! zSFd)iwy!a`0PdXkzz?G{@9}^Uu49D~7APE(KSK^ML-x$;E5djy3Dv;D%*dFmgJsU% zWrZ9enw2XWp7mkGy{`V7Trb{IO+w78{>LUN0$Iy5na%^Dp{{pC80!sx!M0qlZ!4+O zA3QKd0q3muco4q`wt%Bc+CZ`}fy?A`yk>^w zEPq7vvR5h_bTskZYvKBzyb-i_vvp)(-PxZ76j& zE5jBdB&yOT`yR@B5P1}{rB;Pz`c{E%p#XrKxlSAFSd|Bhpuk_FhwAdXi}yW-2~ZiA$c}8_Ei8rJYW^CN_fn zw(5Df{RA!~_uE+3esE0!KXM3k6(W6U3Hwx4LkiD1WxWNa(N3$)-grpnwB2}+9DDX` zKq2a|*3M!eks-FV}e(ldk<-esCNO30Bq|R0=r_` zA^+y$uu=De$VufA0dYQomcURPNRT00$Uz0CAYf*u1iTu&gz31Mj!q=^!RpsLvl6Avq)5$iOJm^v#^HCg4K6x<g&o-x$Z;K z?>h3J1m|hNMc0EbOL9GD$ec*01i3_vunXJXn(6=F@ z-)a8$g(;IzPVzN)RzyAH46w>ZAgn0-0Fy3dk}de=13*B6^EL>KVjzqZ~irJoacO|}1e2AYU0+`QmTv^@s= zq@m%LJY%&muS6!O>(vJUkZsHgSK>kLk~XuXQ}E$=^ui#^Be8d83}gc~o1!=Ar@Tg^ z`+g@VRzD({0{AcB$LS}A5ZJj0u;us44=D`{Qot=n-L_vk+LV6E_o(3pkLwEIFHKc; zjb~CqXHbnT6Okk5AKby8CN0fH@P3@X#J??^uf{J$muQ@U+nJ}B7C@~24ov;9`;jaW z_A1i0-CxhIAA?`wjGJ7}6q32a2YmueW2{pkk0*25(F37Sp=V>7^D10S`QK{HJp+kFC` zzKfCE<&m9hF{}2y_LQp|$2NKe{%A#Qo48)k)ZY5PAe_-*mf-_WQI8S&zK6)%Z@`+*`+ubLyfs$ zZ!sTex3)zg-h^JCqZgMlBP*I20T^y5&gVIX;%NmGFA(P_#H}pehz}mGymt^8%-l*^ zNTRcQe6W=^s3|ZQ%Y)=>*xg|krKy?59dczyi7nyu>np)ifn8QHvba-C{$sXVSFo_O z{cRUmmVnaBjY9%E2W9gWeAPXeK;1Wmn)h$g1cy8il`%$v7IY^;?g1#iXRjYf7* zGCk}4742ZA^*vcWCto41CRzpV_YC@7SggR|gD9G)yG6v6n- z!8ShkkYE`=1_3!vvRaQfp=6FLlweNzU9wAk15xtKsyFdjjQxr*5H3WT$KcsS(dCjf zM{15jC~YBBjb(2V_Cx*j)+`}9jpP%oqyD?fLZ4P$vLYf@V?#jywj3vU=C+-7IfTxG zC$P`A7L^BVq()CjV{>8VcQfhU8dQ`hE0@J(HP0)trcm?SR()fIJ%X*bLa|+}A$D&P zmRo6K0{Ho3A=Gsv{V6>UTvovp-W&b#PUuPn5Db0*Bo%H}RA_`}!kI!V{e7yH#!Sk) zdTG)(rK_ACBApRgShN_s3OgWHZ6h^Fzrq5A7@-1mxQKLWeh=i%7Dl}m>5;jl(6Ov} zS8a?K`uU1@(aHY=8PJEQ|MQ)*E~lx-C03|^lyz#|`lBphL8{jLeVNT@ifKDb54yxp z{WG^8$#_;k{Jhqhj2fae_kaA0vAWQSHvfi0Lj!T! zq>hB?n5=ATs7+nfRd>DUnCaF0aA)E_E{4nN`o@HNwGe>1#$?BdI!onG&Vp-04PJY=@{h#T&y}`=_ z{+VAlI~J&RH3ZXU@!Kh-WPd{xC^gy(=Tq&Gh?zM*3 zT^Q3X z2Ko5>;}(2)vxmCqZA>#C)rSOER= z!B6pBh&b%1PtE#oD!N0@z3T8sh@-K%e8gVi8kNw~w|ia@UzfkG){oEa-sJp#F7%aZ z{rG!2so+!fH`RbK9)EMT+aUUXYfV zN$oaPK{4MZ`$+_H#sAP;tJa6nZ=q!6@IQ-h02cw{;Ke4$x(e+=+^us;ABhV_q* z=L2KdeY+r$JA2uGU!Ac`WEc@`L!pMOI8xu){^N{sCYRHtF+u|!5y{I48k#bqYORYX zK0KRYKBzh)qd-&X4V>%=cl5n5D%q>+BrmDu(*Pl=y*?4lz#^|jQdd8#JOcQ!7%07J zF?JM2+fzue=(G_dJWO|7Qi`Gl-|Sy#rTK$*^hyh}XdN(o9LIN`r(lS7dm+ePsie4d zTfiyQESvJx&4q6DI7^a}5znH8<_$UnK8|jPy@{W>wL=JQ)$amf^r@z=>!kzDf^z8a z)~_N+2srqQe=7EhANZ6wQ3+nY|JuZl?8^9<^8UOCKAK3WVbsh|i6M8FMzb`rC8TS}`pSk;~i)>Z$>Xg1o`DP&7-vlk<$Up#JagJM`M zmpI4v>Y+2P;6fDm1$KNv>C%M;nWz*K*N%{YrGyXDt)^3=rGEHr;JOJ0y~>Yl`h8i$ z@~rojuTg_(4{b3JQ&Y{1H~iu%d`Xt1CG&3!>a3ClQrisd+7lGTg@l%q?DS<8pFRZ(CvPI6cBHQ4AIvzLDlCN~{J z5_uixp$Aly>3J{&YjtEP*y4huF59mDL40l8=zkeKP)iGRSPR}38<059;jBz$*5FEB z5qoE9L_@N9*>7xOZk7=A8pc4*4*p7H(+`q zoJt>o?qN4-$u58rUX}1=f|a)Fd|)j&6m8{uHQSF?+F5a{B>1#b->&nHs6=4!B#&?u zg%k;k+m1<1-IG|rZStP%sY=N z&WP4#N_>nOy@-+jM$uinq0w`eOKF8e$Oehudqt$$^kqNYRS;+Bw+ zpv8r?A$Zle+evO~qVMYH&N~0XH6J=YQQ)ig2$V0GZnHDKYNb^WM|KPNEPZqNk&Mgnq%+{7uKxAGsNI)e z<$gECA@Hq=i5`RT@n1K=KiC@oa7`G2N`!h}@VSQbu@NkLlH$8U;|$UGpL)+nSQWi= zoFX-Y@|L@`YUit|U-ol$n`F}9eA;)a);<9)znK6@?oE-h9)YTB~ zV3!Bnx`MnoZ$>ShpK8l-P4an7!6tJ{j}@G9I5~YQyY@el_a*NY42y^(-ZG$NmFLRu zN-YO76(xjFLtyq%8Vm!&l-Kf>u4r&bsC4#UGb%>Zb04o;u$&4RXY_bI6-P%m;v4bH zM=dlrYs)vCO4W7;vT5V!n+62(oR?l!qVO!bs-jhKB-z?9Oqk`n1+$AKXPSJ~SBBy3 zF1CH9U(3uC@)?i1zcOBB-wKoXGty^WZ-sG2uC*_~XK?*#r$N$L!8C+yx6kUO5^i_S8bexx_u_hl`75uuA}6iZj49Fiy<@CSbIaMAn83QYa5?#D$+5chF~eQERQb#=Z*j-KQI>{zutY{J;#B zP74e63CV0dt-*CImKwgtQFQ4vjyV`1a_Mq{Ncp7#d%&Try-hN4zKLvbjHNw$p0Bv$ zhR_*h$ECVYcx?vSrJs_5ipy7|YnYjEmN<dFsU6Hy*tOw&O=Ag-l~Q2*?Q!8h z+Fw6e2FT<{zP)Fx^NET1a4O*>5-zV+{TH=XLOjD|>HPrlLWOv38%>b^E(&OPM4Hxk z-wX)*c*~ges-2}6oS;Bn9`Tob-svCppT$@(9U7gD!n=RJ4Hv^HgSuG8)0*RNfY6^Y z3N1G5lnFTr`lRJMIK3mLxX&!twpl|(qs?k^K1Te!4(zcR)K>Q%U+7xiYS(^FE>s+y zlh{54B#YRMQtaC-iVo!dex*6@uK?xD^^ezc6yJ=^8(BccBtRqHO7gJq3TGp}T3Xuv zT^vOu?PSINC_6x3q6*=EN_kr~e2v}iUfHLYeDfAJPtkFRQ+zWS9-#-LJjK_R#5ZBu zc*Eb4zD5u4aR^Gfm)mYhy!LXoaq{i;qP#VlegG2v?ds?lK_wD8t-`n{ihff5MY0p+ z#`iM8vuCg$-nldg3RAD0{>g7=+aok1ql@D2enJdx1(GqM^1%z<4hUN1;Q)IA3U>JD zef^iHMoKZ@Ooobn*Mjs8{^XU6=t(J`h$THn+>r1?ilJD!4PK9%7V~FFJmXc`Zgdg3 z&BjX@ns6wejo=?En6&GS5p=*K1Y?v!PW@K_7Ik~QgNUPi7lM4}AjeYv@c7lBzYYB_ zZ(6<7z>X^B?YTVEJa_G_wqpsV)+TiJqMiAF`nAyqu&@IkI*RYTQkMzT& z{r6DUC$1B1l@f^XBvs_67SywU2~_ze`?Z{M#GJWaDW?PU(5@)C50h2*&OwSGL6A;* zj2wtB;@0X-t|i7KF+b4tN3wI5FtJ{0yZa*Yd_nfAd<-99D0u+o!Vdh4Z24o_kLbj!&W_ zCY8#I?`&X?Su-1-KX-POAfimAj=(Fq`wLc(ieeAc13dD5cK!IRR2jQQz~*a64?|BD z*kW;66aCyBQMGciJF$_Q8i*43yr_Bmw<{s;jwOt__j_cjOoauN#2EaCg7&M&6wWa2 z!Q)cF=KtiM3f+GXcQU0peDnHMxf=PB6PH3FF^;olp!{p45uZs2sxlEH|9-#;l2y+( z)O;1UgNqCiNciTzvY zo=3lv5i7$bhAPNG7hz?a+vev6d>b`|i}T8`qgKxIbUg@PT&yu14Pnq#PNp|g+*Qe3 z3jCvim8N+^y69wdHX-;4vw;l5>uh3m;i%!4k-PNF{>km|A(j^<7V*nfPXlx0;;+vm z76$va{~HD$Og55Wlk%QFC#GCxSo3$Ion;0Z-{U_^KyGZTHHd5Hvs3*kcAl0-QqSqB;|e%g2F`~rDF zBPH+B^RK=?RTSuGXxlfxcERBp3xB}(7XJ{O;v%NQlc)3?pwY!AlM3pJ4s%%a5}C}K z0DzY}Fr|LENo&XaOcRO}pia52$WO5gtKK63dWnbBr-54fI?jT0rb2>hl3c{FD2l46 zKK+Ry+XUE(c#LpiKGdAYMD=!y;t=t`yJ8oNpr@M@7&feW^oT*}=j*8P(9HMGE1xc> z5}wk*(G=$=c96Jw9xo0 zW<$l~&j#$HI?vq38sY)AqIvEVF0j$F{fHcLg^72lRe=GjdZLveURY*SrYtRP8!s|P zkQ{U~Be7Lh1(Ja+MhSFdbBjeJc`eaIJc*nT0B^UtxEGy%@2SKSC}?ux&T8D8^HjV+ z=#V-6mwh>&S^)va0*`Tk{q03N>Ki8Mzp$A?8NGMje1h@8I+xu2)rf$js55w%ApL1f z1^%=NEAD`gPJ7>_qJN>qA}5*K6hqyu<+u<#w8y>oV1p`Lq5mq+5BGtdM65SAgQfG6 zQP;H$;&!#<{ADYhXi_Z&Y1bWV2xd8LEaxjiiOFCvxRc*$H#Vm;Y@4%ZGreWb~9^c zNZK|W&*U>ACvU7TF#3|Bjx(4J;#10&SMuQ1BwprLVfgG)9{6&ddHK43e^lLEfZ8V0 z7QjhfUcG1~EdLgHtS1ZMM|%E#RLlJ8i0hjsUQJSyj6Wg?{X%{0wQyj&allY; z!2xuavWfp^@EVfIc#r2Tm5d*rGc+Jb{?{CjaN=6bL&bs=zxyd&J21(Vh`-Do(a9Nx zzCsB6XQ+&ZTzlKgcxEXZ8syF@M|Ao`e6EIFPbR zIdYn*RnSvBcgAXofDrEmNZiI2NZ5ts)?g zBVkuu{`OI<$w%38E&XUhp8Gz32hv(J?zW3fejuP`<8ThbUr@zVReLZFn>od^&h#tU z{Z?9;V=(7MiXAQeE4*RHKC#h$PbRvM$JTQ-dmDBCZ76P^o_A5n13E;(AusWD{-pN+ z@yS2klLqLD2Y6X+@(`;a$~hlHlW+>If}1D!gegU(*O84@z*&TLhI?S2uOTS;c%Q_Cc+BU|=KeK2)a7G(EDT5uX^9$YbBi#<_71DGgT1Ccs2r+w)XT zb|u=3KHmovq2%>*PTF~j&$tY*Jr_j~HLNL$>09OEto(A3^iWwql8L`ZLE3NgtAUfj zT8i@4KdC_vw<_}1mZqHOl@`@;c;KG1uH@j@hzvoB)`7%rtd#sD5aTO(w$Nx*8= z)lqCO1fN$st8sOs9WQm+ZLasbZdPBKzbtoekxw{mj*39s#H($Ke6`g%qmKo%J>2<XM#;3n@g_6O@lD>OH=V(pu;A3PBcVUb1tK{UeQ_AEjgC3d#*yyiPEtNK9! zT^D%37Qg~>m=ZVpva~p{x>7aW+%U%EjG#cD$PcR`f7;VIVFS&OV#E9~*Cex0R``A9 z{Ex+NJt-b6o{5q0!T{o0&KKomLz45bFE#{#R#(Tj|NNc+%H%cToRm3oJCnp zW~e=J2FG{1w6=-J|BXcU7?)plPlwnrue8Pe63l{EnO;3Ig3Le@5sR)< zZUY~DO70WL3(IgXH7Eaak=0@N-|ye;q0`9lx$^Y)Y^Cq1td9iH>MujPTO20oCUmPS@hmC^AJN-tRVw)(Xq~LNr5FEfH!5225X;xb`g2 z&$xx?=HdjRQvQoGI#tCiU0}07J&WP|)^Nl9ho+!G`^gg|ddS!Wf4I}KMo5D^=fpY0 zvD2Of+_C9!=-F+H1jA6J=!KQnW{h!UuNZ|YYeH+szvsMx@1~U+7DuJ__6XJ*k@aQN zTddH>MQB!&rGms=FA71;J6ui@vBJ1lR1ZF(Cy@Qx|s==ENX93Rfn z&xv-@4{|NH1t#_v)TV7z+2LF#);N+!}aL{y=IWbxc9e;`Wc%9;8eLyUZt0{U@-E zlRC}}5!Z{5MxrPEC&5j38s>W?n2PWEzFkHRQDOsG7XlkpRGGLF;~q9dmivbcGSMQ3 z{DTm#ZM-3SU#5QDSQ4iXo(}$oANk48%tGM9C0xL;xtMexN|;%go4NtiRjf4@NnC3}o%$hpKoSZ* zA&MS%{V1VLh0RG<^C-C6ZG$3V6f=I=cb9tw6GplCE6n_Y4x#;5AdFf!g6yB2j`QDr z1)WeH*W_M0+%E^A=sZaA8e5GsIWLfF;gt=M3$ML)k&TnV%*18HPX05-j=ZSxU}RBN z7cNHUX3!;+Nkw7};X?p%a!0zRfpAJz6-pJ6*5dt`iE#1G2}*uf>Z@~T;(y5~lQhx! zQ6XEe9cqOrrX;wvG5D{2NzRSZg%A^HbvJvDT-H3nsfp7$M>iK-_f@gG4=9>~X1+wA zhRA&r1Uepqu@XN@AmRkWIlxg6RBtm(i9qi{u!0I+P+(q_1UG2>4+n~Zs7H15VBB3G z4;?Z)Y&P$vvYAiy=jZM0E74x{|HRWnMW-o8DGvJjzW(`Rf37Y>0DYKMMsP~Kbebv3 zpO#TWq-#od$S@lXnmABJ9YT59-R83^qm<^!Fm52;U-?l4{}qVWuijfPI$18*N`n%@ zqdJ_!Pi;pbtjBcv2q>kIM_PZ$SWaZWpd~vOUO@A=U z<${+I#BCXX#_y8aUBn`kf`y>IpSGGAy{FpU^IgQi6bJYIHng)A#mgu2RnI&_YaHlk5z_lYj~>nzAO z=Y6{%eNGe2UfJ%Q3R%SGb^?a--Bs&oF;6r|;!i%%_we9K7l3uvjyFAyDhKJBxy#%2 zFZlhR(weTn%n1Q@^Tdn8{o`E38gllM>0YI38sU5ba8C*h?@Ez8r!TPtM>WS7SV^&@ z^5q4cKy~*tK{^aV1f6Y?d+&MKw&c^diEvVA~i~j#@%Y$>JU=&CyR^eiMV9 zn|-2@m#{2{^N`=J&Nw-yb2VJrXNwOHmvN+C^aeEt{zhXQO@za2RkPYSI@-!1%O~oW z+Zit7e0Bmd*?(m|l#@3&Wg|jvXGccfAcQhBix}IyAulT%)oCQFLr){|^9*$ z1QbuwSf5C|F?QO`($bO))!FWpXZn+eWmJ#zU+$gv{uHnTFB(ov^HhDuOw_Z$TfOE5 zB-Kv)nnHgp-n9LfbXceO>wsPS=VDPWTZ0@i!xLp8gMz=Y z7-ZmXnBKBb2kmcJP{1oGUmc_T`B~jt1$KksR{=~rF9t7jk0#%uoo3=Ai^7@g%~Q@2 z_1hv})v2KtemrA+Fry4fA9`*N?=Oeo<|eZBUyCaScqL6 z{?_KGS7Tg{&o^Yy?)<7wwIq^lE<>gKJ1Hbsq4eSd@&?}MO9nZ8gRPhl&9uQSlI6^} zgH*}5#~vd*Q78IJ%Q-C9T#atql5YTEM#`i|D9itS6aqx~xGk6>S)e@59=5?SZ5F_X zX2Ckly4$I;zy1 ze*Fbb*{cf_q_De>FG3&8(tCegbw|xW8w_{M-ZWmy=URl`1>Hy#1)<> zc2AMA^?@tGGei(@PG|+k26p!((zY3p^-(EV!z>7oTdqoF<`DnYh%rCgI?7afG#yhi zmrmd7t2`tEkz7WYavHrQB%Q}KTFUA{J$h}zL1@ucZhZGI!58_`;jDilsy<0}Jhd5!IZQAVNlcW%4*~ahf#>!93tjNz}pfUX=O8yhG^U;3jMck@9;~x>X_3$t3x+F z%4>w&q&uXQ<3?QOp!mEpn-~}A^R42?WE{FzE<}$_!2I*^yV6G#*l6ZON4$)R@M5!`&Iuq|JDIB zHPg&{F;ah9deGBWL=cj&9FjOzQp_n_3cgmn|J)uE>D{LoPZMj{_l3?}u63)G)(lDD zxfvJYlagCjVuEIR{I45i-gA8Uh-MSaG%_tz_sy|U zbh*WBE|eR|E5a&|E>Q}|N{NG5y~-U^!|XV-XNNc>&YtKQa^*mB{)Zfta&{%U==%Hp zfImdgwD0#zy`UW77!|{MvhEFmSTrR5ilD40TdD%Yx%`KJr$UyA3GraV0rOkHxX@1G zN#q_&(rQ7KHCb8II{U>EMnuqjkd8q65MsqixMn?kj~^}=`xLk3+GCjRb=--w`(oCC z1b^X)*Ta(`il=*ywLau8eS(p;0baRr_Q6fp1VBKXRjEOI)`DYVT@X!(R8iS6?QH6$4FnQq?AV9DoUYIrn;}p{L&qGQoH)?SqL|6AnU&l z*XX}ZZ>e%7aDV`{%81cMa5M8H;6sWpbm$)q5^_?TrZ4uMMGe0Y%(MSah^DCMLCw3H zrJok#@^|DY+pr5|joY1OK6k3mc-8!I)=ASi{SLN;j9?$ibt^K06qJNm)Xk)o=zzE6V-)F1=2hSC@elInFXhoh z$jQVrk2RPh+g2(45b%PAb#Aq;Zr`h?s6$DM8Y;(!OUZMec~^{*`XR^gfOjQZTk!=< zV`5Kvc@?LHWxQLy#A}cOzWnS(;ZuL^O#v8 z@gGD;I7$Y35LoM#IR7ymccnc~NQi#Xzj(njNmT$T?KhlQk8AR)b8f2AD=cAdxh0GPlucI8h$#`D(r#`IF;cQ0-T%48_^}iLFu=r3Z+I_D! zM^|uBoLu|57YUG-(L+R3OM&|(l)SC@Tm-$u12Fb~KmUy^mmI0=|8W%j{rc@DcG;=% z%P?}fO`;*(31J#;I(I3r{#u@wM2|C|-yE~>qnklIEw~I<;giDFBCW%ZWGpKwcCU`A zgdMskj(d6spDS!-XvR)KF?jl?e!Aq>uvg`{J%^UT&73Y_(SnQ*g;woTs3uUvH}7yc8=DjHpec+;yq zq1X8!F-VsZfS;bKO0EgTk9%&|ZJ?CYJXwa6aV0JjU)T?~6RQ85^^b2XL#tjM6WIGr z9!V`A=W^{CSM#1kH|);8{+KT$MX3DV^{ffu=8D#@MfpmW0Sbu)&WTi9v#^jEe7{+s z&UDP|hM!`Nj|QuKjP20{N0?kOQYALIfLVxL{v42ka;6c<4+IzNegQcQBE4n2a5wXm z?M2JeFCcdb)U#_>xKc>3pjNs;@7Zmh$$lEA99qs{v1VMvAlmsmNIB@!ZLsd5Q?e~; zpq((52`Q+q-iz>oLOYm%e|g2zz<)VzJSzW|Cp!CvAPw7o*%c3@t+yh9ym=QL8>C^k zw9BwuQp5YRwalo%XcE{udN>`GNP=a&?XJbA2oH?8@9Qkwc_*qVGVycqkmB{dd5&Mf zg?L_=#`uaq4am55!lg(dao^}tOE~b^0gcF=)&lwIIdNvoHfN%zhsCc9Lag$>qdXMB zoV0_9>LLyKDa;e&&ep!2gg|~f?voo$kna}@fPB$l0PP^uI(HYz-tbN^(pzFB@$UJW zTb{#`pzQz?Ig(hT(Wf4yd8^|gE|S9DNCW=mMI-wiNcjD_s^2U+vGd)RY$4ME^c>{B z2cL^H=(3y|lJmdHZP#Lu8yR@((y@mLBz-fZL1v9fw>_CeOnfqsfeEL6?pV1#!mC!k1U`|p~L&!X@#xUv65;ChY0?*iS+$14TvvbL^xIpI++tdcRWP-+f1&_;PsgJ}U?cHvF+0dz^6bFESW-WcNpLx;(sWXON2esVGbz64PppBV-m< z&8(V}5aq&heWs1Hukz6iTPlT2@9|kZ;0Oz~IwOf*10Q@fGL>0-n%5WF;xL(NY7WL} zP{4(pi{_%gF4SD^!^h$Ue}M%H#&V-0e)uAYh_4>>z&OaKRVb3styF@=b{&ibJQwNN zXr;X=fM{FW8Pnq0V~g+lxhxxpDLW(R2X8@|=b}iKiV8vdg>7kaltK$!QKyv5RZ$8` zj25bHkr~cR@Xy38(o2_o>L;DVV<>}WNGAx0yf0q0L;J#3IF`w$!q#l@Wbe(@#IJpa z#V=VQA1~JlK6~ZG@Pk4r`_p0TzK5{Wuihw8H(ld&UGwmElKOR=5+g|3)^)GkLiuMh zO3X*x2o!$rMh-Zk6iM>72UDeLV5|Po9~DLGE@2#Q)7(GYa3$?KT<;Ig02t83-tD#NAXBC@Ldc`B!1TnuIHdUz1%J5>cq&6c~v*|bFb@w z7l?+=X#go1;V<4afhI{JMKS#A#@3M@VOPx2>LsSVR+Foy`F4sT=6l0}aAgq~EhZQ4 zbH=%yG8;_1j;xqe^}*tNrYhg-^&r|Jk5QocTkeKpwbi&t6s{gV?k}?SxXw_O@Ovpj zY^RA9nA9saI2b-a3FZ$?mCs2;c39WXuf&iC|2KQgdn_}k!IcMpzxBE ziH*)7Yyz2Jd0Wycq8-zPX8|*}6t6d}MzSW%0-M~@MXVQ}1I~eEOQQz!8vJ)zTRJFMH>&1gh3VxG z%YACOD`ImyDk;KV(u9RFBDbf~yd_^37KtTq&mmZVZxF>Hma8F@M~c!d(aW?MR}{QO z#g+n=yR~|mR-+JKD2nmOGBEyVYBP$I@EVm`4%ob?iocdAc%5JcV4YhX`JFDD%5?*! zR*LQH%JMO7#%uXuEf#qbFnd>-w`n!HHDMLl+^!yP3QW527GV7DCMxx^{FDx{+@|W( z08RuqllLf)zu74Dj&xRV8ujEACFH#XwbISO#nh99n(*#Iq5S=_ND1rciTA{KLdxig zQ#V*xk0E&UYn;2pNrWoZrNknj7ti( z(<5Ic&DZ9nN z?x>{>dp^lC|2Hs^9xHvfvrO*|FQKr?% zRqTIILI~EnVj_|{Qqz3`t6rH!x;#xcB!ggOaRlqltD!mrZ*kyHFtEScFTOzs<4$JQ1~+wLS|gLH@` zm%4vUx_?V8!CD2=$*R5sj%=yiY}$;w3i3XsaT$|a9Rw><8U6^t-_r?!o{gcV)wq$$ z_4$Fi{*?Fd%nUJYMx`#C1WaAW`;=~K!e3%>>yjxSeu53lQ((Wr_y{bU(Si-jQxYbp z7vK!_E^&{%|v3onr>d=;F>vl-nS(7 zE3u*Yb9gXR{W-K5V~RbYG%+reg}s(0g5MSFqy|3(*kY+OO{+1kV0~EPMV)6IJ$xoMZocG`IJRgE0{{klhOv;8n)5=M8PzIrvOWK z@?T!5MhIJI)v#k3i-3ZA8B zW&w`6j}e?xu!B0~9AKk+AH|n>1$o_mHX!dvvl``BIo_QQ<*9KFSiwp@)$qDvWXu=9 z%G^7NRcN|guoQPbvhIeay9mZt#n_CZTO2>~LNT%~0d_4K-b|kL7DuJLP~5=+mhaj? zWBIBsye$3fnoE=a5=~eTDj60ZPFXOv(;W4Rf<@G-#emtCrcl#n z6e{>?wTp}ERq07fE-8x?EFonnV46#2xM?+hBDR#F1+K|UV)el!VoO=5tZo#`a_Oh0 z`=tr5gUz{&7^cmb(uEab9ymzy)hr8dKv)_2Z&0!sU9&8_5sJWb6R>}O8XsDy39Gy7CTS>uO%ym89VL zWt0yB7OpO)Vy6J_hFa>V(eH^V2TqcO{8o@RRn-GJ0)`1rD|nxj4#1Iseln3iy7Ga% zXW+;tbAvI21$Pahe0KXoVy;WKPz3pm@6`>VIIFA?-Y&S(LKb-(D+)2**MvyB@_!Do{F9S(?+r9 zyn=C7$`k=R_wnr|ISTTEhiBr__f|RaOvR|5pX&Mna4dS7Lg}c2ybx_bqDXX` z$=e4P;73vp0wzZHacEa?o|h^v6q`iR`$-v=6^8QP+0WudV{&L3-=Y}RbyzGfhR>pZ zs_DLn@7YvEtX0#ENPO8;$d?=7YOt@NxX4d>*(jj5m}yADbYxsWXnqp*!T2&< ztI_?7D|0#w33W!8N~o>I8^z90!)1c~e>2xmR6oQi*jbdBg)-Bu8G#hlu`uv#7^3<) zz-enrAQh?!v%#9JBP8t6h35hLH%^f7H-tH1_?Ik&`n8d88p50~eCW*;p>Gul|7gOC zVDf2sMi=HuFZ$Q;r{yD9Z-_R{mv-|_*k@Xe_lofr8n8sa@ja&1=+|@wU^)ItdrhnH zLDO9UoAJxpXWEPt`0-E}hA&k`fMvlmi^(vsPO%W}Rt(l2)WScCbm3LN#-M(R_i382 z1dP9pS&jGDBvgvpl*w3JAHSB~LSxsYW!4RO(pzY(9IR?xD_O>X#;$|4t>+_M=djSQ zA`BVk4Ztq%E}DhSD~Ny4Vj4bU1Y=KV%A0`IJ_9rhJ9t7`QrZ|_O`>9~dWuLhHw zd4EB8OAPL|yyT{CzH>$s)__fIN+RKJU3f=~YV!miB!SQMwGiHw76|2|2sR$x%m>ZjV|`;7uTFUcRvB7A!>vRyPE6$mLq_=v6+YxQhT&iM zV`=YDz67#N6E=%ch4t`_qZ)f6Ln@3vd*$VDp)Fy!2l**rwnslDt(O$MPETwFOkXuj zFkeC5&-e^buFt%zATPyk1C*uM6@bsfEG3lYv;$5ot0wP%L%|p1H#=lFE=wd>so+b3 zoigT@HAI^>RtsG|z@QElJLfZfBVwI%7we!$K>1C&D@ zQ}8Aq_9&LVH)XYHHE!d4lL0u8k5V6eTCag{APir~2LWsS_)F~_P54QR5Vg8+NX*&4 zj!ZVQfQ6qS92URpQA5f1S;hEMC0MRUGxbOoK74!*!}6993G*xYqv|~_L(O9 zA@&+wMl1`TQzpQEiuc$xMo#dYVthU%Skun74SZhV-@0F5y*ryJ^**oZro;>E8YWhZ zpDw?lo0f=Vo_|IKcMBg#_mmobjYw6)g~xl=lroPu1W7(MW`yx)>!7jvUg ztm!hs)ml2MaaEI@fh=z+AI<&&>)tZMEoZ5sS%7n{%`2(36)dI(JqI|vXprDX1y63E zL>91TQ5Q|;2X*Cnz%kbvchhPd!_8tj;Yeh~;(RA414!0bE?B=$7qR0SyC_xlsa<4R zjTDXLfo1yfR*R!Z<1d9H$IX`qdS+0eNxxWl35|1EUU3coJwK)k3jmWm$6TqVn(&I4 z>DmN(;vK9LDh$U_`9*+yRKC@y#YJa@u&83N%3T94rp>skgjcCMO2oc*=1>>cX~I%; zaq`ap%iL((Q;7U&nONzr|C^@H2f4^=;W)FX97RqquJt!<#!CgS)AK3>y5$kp47N-(3x7)NDIXO752NrNgIx?U##IzX~kXF=4N7e#%`15}ETupda zJOh46U(|(lVgZ5K1mlr7+zYqNkO|a_GNzfP`G*zc-)8s4lA~)0CMf8jW`6*f98=E6 zW&B&LA0?%LS)1wz7Gk5u!*EL@DIdweTHHpyqX;`Z9>NNm#33){{b9w5{U;@!Vy=rj z?WWDRstVqi!#Cl`R(b&IHu0*zqB88&LF2uZ%HmqHVqMrP&LyUsCnlQk9a#0IL=wKj>WV(8 z&U?W6pr$3J)#$>qj6MkaVmc-sS&{-)jd?xg)Kb>3e`^vW%!)8TG^ zn9hLmiafhfsOT)yInc(i7NSK?+Ibl@VP(|L#ZKDT2&Rbgj#!V;fVbF;cg`}-=(k6h;tVpw(cH?p_(<2MoM9`X`A!^A2Cwf$9 za4ff#6HNlm3yuvi?M8ef(_;%XIpSZpWj78hdYo&O0-CXGdWmT_5}dRrKueZQE;jAP z5hrabXxZ{q(zZTgdNRT-jp-@S+HJkm&d(H0XL?$+Tib}XDVo9b3@9)Bup7@6&18BO zv~OD%(X=L}SrKmMm}Y~v`KA*+rRaI4IiL>TDjK2bPTC97zkY*6PdjOIrJem6sO0#^ zOfN>bE$ILG7$)KGVyfbC$T})Xs_)Fuejg?NUJWh@yo|i$KR*3aI3&uKR1u z6^n`^+^#Y$0qrre$RpiSw3KNXX!VlO{ifZhcG6x0<-_vq#%)E*nO+AiSUN}aSM4dP zRYio`4W^Z#Rm&SznRa7J(VI-GKns`U6aDR^y(PA>EX~8T8`DnOYS5PD6+{Q0F})oj zj<}Qrf)zyBkLon7ZmMb`c}M3L=MrDilQZZrB)GX z6o1nceaG59d85cGqTfK@FL<+l(D5BP+K-^EJ9~+aJ81`{ z7j`yL$(h|uKSj6=G5suK;h%ya({7wq6mK*P%9m8xjVvea7ir0T$wbdNX-CBB{;4NA z^^WP+g;6#tC5LtT(kN3D+HYcYp-n`mowQ@(2}5grXp}i=zl)CzYbN^hBh&E(pYucf z)taWArrnrS6xs=C4YPviFDLC!X=k%+2fdM#c2e4Tje}^%XQsa*+@@Ij8?<5bG{x?h zib6XbA-P#Q(M~7rAMx#*`Y9`T<)ociC^?C=r-zx&F2u4qiQV@6Xwz<01=*-Wp+gWI>wc*3Kg@lpBi6zQC_Nud2v9YkxKw8ub4 zqUxyRClgGQBi)Wiat0-Ic|2Kri=vW2fhH~QqTKAMlQvaqwS0tnu+>R>5_E8RCTTw< zaaNEP>2`{>>7e{A!)^>IdYWklXqsCR(a(yWVVVhA;Fe0GY*^8=OtV1q7Z($Kp33xG zq>RCA(7wnz%Dvka#T%WMI!Ck-ec`0d0nLl-r>w8TNqYe_JF1=N!IMmL7qk~aGd54| zG3`d2qIs;n1j-*$?8YG{Z9ZsLOyVxe+?=$R#bP(blD6_3(}GC1D@+TeHC*%Ul=CZE z#IzVR-DTWHxtXF@nU;W7yEIeIe@oF)re&Z_u5(1&E-<~e(EH_L&l|H%>IFsNk*~N2oU|=6dLxpFzI4()1x*Q0 zqmqAtwnn-=W7;Oxysv=saz&prZ3ms+S4e&T+e!OE+HqeuX{QzKVER%#&b|TigMSq5 zWcmuUYF{(aOw1L#7JBG)OJ+N1KY^A9^pGDs@1z})UI@$}?UN5oKQGj3SVmy@6y-oI zilQaIME;#2J$2HKfKG+=dQ&uV(tZWybLZ_w;^&3lA7$+~dEb9h$ga*$@JwPo=aR)6myAR;uqZeXy#n*q@9x1 zSUE=-|8*zrZ)s+|F{XvOvo$ z<21j0py)ZK*-?^hq>?>1IBCy=Cb>)#edwgk0WGlf5KZ{X^g@(dF4K#kvC)YXn~x}p z$ekDUcjQh~^b%|Hqa<&epg4F`(aTH=K+B`2iQX?@zi}nXt&nMv&^5{Xs5KNVW_nd@ z!yMU5t)XZM(^Aoz@kARG#eBX@-giwN(T9p&V{N(E#+osrLxoJQFZ5uA*hX|2yOydjrv9 ziZ(EPDAw*(Ph&7y(MG0^q*mTtM4#fzbyJkvW2ViZJuzMD>3tQ&2z>&YusN0JGbe3} z_{mMF8|ZzVv`?jfqq~V7X-2e)a(l+KP5O6h>N>J#MUh`U7pvPoMD(bWwjH!_yMszj za?-w#akOoi>YV$8X-AZJ;FqAeI|pcHbx~1RPN%fw4*oKd=cIiFTD_x%{Kh3GZ5L?M z&MuhD~%T+uiDMm_Srp?Tz=uPcg@--`DRnImn5leQPMBP5CF4Mkz? z@5GyhrV>5}8@-otw6m2WPKKg*Za-+>j(VbJoU|XrHg}avNdo zSI}l#Gd;IS(NU(~B;websN~0rjxqf%_G}*{+N|g}(;w3N_8}_yR2h5Vi75HA_!G3k ztgx7NBVAGCDwCl3t8*=;%{c9({S~E7O0*dnPSPpB4wLG1_!h(8Q8IO!mYl$&K8oUv zqL`EYkyiG|CVIq4J0o7hqmgENiB8&Cv1X59qNVt{Jh#vX^Ps6KtH@gw+-Dja?RGGl zGo)yyV{ZABO!PZO zCOT>B#nz+BHc{_8Y46J$MYj^Y3+jk=d%(47kRIGKM;2M9=tHKBptZX@h~8855z{8A z^KKrW^@=`b+AQz8XPoG_bdFR{7V6w0Js3JfIqaCCu#KlO#zJRYO}p{kN!toK5n4#v zaVPCF(CN^0%5YQg&9g1q?K#(~U99e(O!Cer6n(+8L+Ji;qN$3$WZEfp-d{#Ncv8_< zOuK~slR>nq92rowTQ}1;pxu7;8_DA+Dqpt55Bg0~E?KQ8ywzK2Nxu=wC2u=vd&Q^t zPZOx0xjR07EbeKMG@COgVyXxBHHDo9hNw^Co{~n8?T+TUt}!o z%_Hi-ijk3Mx38=nm0sA`5JB@uMZYl}1D)BBL9{_ptlRl6v3Wx=)#{<5r>WI8ErwYxf+tWMEiOs7EGcNGv#RrEL0X|d;B8I&QNRP+zi8PMcC{15I; z7t`5=u|Efz5!trNv>QE&%D+F+M${2~>!gj1LG+ENB5&5~q&)~)9oa-QzME-WjO1;H zKzlsWDKk5)DEcTKG{s|#+Bv~Vdl)pyBa7$}Cv5^~mq#7ZQqUtYZiz9RU4ahl8eB}- zhN4MKkAXJrjw7#fP0?hg$3ZLq=_gvQXbRI4pl$mamym7rFink-KSw7;8=glQ!$U<; z=QPlc&_1G#PTEtTePIQZsXTJhrh_^nhCEHXG5eP3=@`jWGC&j7*HHYOQxtu426Sv~ zInjAVF@wnj&0Cj4<2SZf*PaEfSzkc(prTpa8s|WV*H3cB-_JBVMl9z%X#M75$_Nt_ zmHY{`YEvfBBTm{2pq-mitrY2;w7Jq&oAZeF;LG&I81XrIQu4kg%7Wf13hgDajlC&E zd!4lT(!YDlmYR0sos;&mwAH>rqNfL$7R0z+;npYwZC=9PyfYNV*T*8zk;OeU%FZ}x zi{*_LkMrLWC+$_xx+T1ND(}WOq9rkIrK~NJk`IjRX0L)gXQ9sJQY%khlbNb0=5yCU zM?IT;*{kT<3ef4b-9*!zv^S)W)(%j~`B-gI8RK@7YgGk06j(v==(3_H`4(tu;2e#G z0!0zKt7Ys5rV+j3q`fWg8|WZfsAvs8_YP=AP&z#~2VWm+W8^E*UC`WpndF}@C|bwb zd!SQ$`ibT`Y3rpm_V!Usxv1!U);h#C{>dQv6ZAohM9BtejTNobR+Eb2jUIw_FRv&1 z%Sqb^8oQ#3dSS{*`$$@HWdqUsV@#W3+#YkSnn7nm95l)tio&Zr5o-@gAo@U2$<08= zLo#TTH8^RX${U5|5Phgn)lk7<=p(wx7Sbi#cyZNp558mnc3YVL$g3On_5CuM?$+;vN=?rRqaX5-32Z zmTWP#lhRovt{!B`mLR1WHIMJ;K`o?t>oRKF6?%xx@nmQ@w7CMQwt@+vUJR`ST7?v@ zXo&KDV#!w15may|mhdBbP&GrXszpjq6L~PS4rJ@;y07F!G}e+q97Ghcr{4L9T$%w+zLaTafC?xf5!|lKq3UQ#P7B*P12UO0`|CozRz< zn`|4>oOU|Pgp$b$Ys8`*NUNrJ6Kc$&opcm%kIsZe|01;&@*%Y9C(y2;R&^tV{|8u< zx0<17347>TCZkJe4NJC{+B#W3LTg#FeMs$PVbAJ2u4Vm0eKkPW6xkLsLt_|MEo#Yx z>N6BiFY6^r3J--V0v zzG2DQ(lO#V5$ci*)J~D^?b{>G8x^8VR(6JBZ#W$_c6eC^(JpoetDlk>dhw{y-^D4_UiEGt?ER8&dexnkcUiL*0RXM4H1> zN2o7DJ%D;5?cqr#u|}v~G@)LKoKHZ#kw%ZvCAtyD(9b}9khXISh;D>4)EB59(yY-% zL^gtJl8vTXCl(7{UkG|ZLwXfMWf$~u$Xdowe4`&o)8>~D>cNtYMOrn#U^H3FSh8_+ zE-dIG)EVz4#1C191f+@lnk3S6VQ3<>If+^%z9tUb@%dlbWTZuW6{F#f&;QE)L|VrW z&uxkTnxe=_1)4@jaCSRn)fkGqtm#xYaF?}(p&1~XiPT99B9T7~%>tTDHD`7gp&ocv zC1?%?Khf&L@^^9?~*lA3`(n%t-!_))mk< zl4(#B6y?ogD8|2q)Dp^?5zCOxk}aZdB?RfW`WaTsI+7>aLH zOavK4YZ%-^a%aJ zl5M0jRL+KItUpV(iRy;DEurN|n}=juki!2}E6Q8JP}Ge-NGrr`2(4tvw$gr<2qFGP z6-%~_j<19tp&#&WLc1cT1GK%9ws~9y@sM2^`WI*ywaC26HsT`S4sh-ulgD40`vpYNELhHZ+!B_4AoGZ-H`T74IwLz zH$yQJaYw2-H5vAIS+XCIhD|LZtA-Ct)&psPPzs^%@j$lckgOM#6>%c7%!x%m(cYLD zNvJc6dLs>*na5AoZWjHF)LtZvP**(11hHnB42=UCPe);50HLm!-$)p0b0X3VF}O|R#!$2yNpyzJ ziYL^aC7X;id6v5b86%eLPo#BXiG=!Lo*_kvt_!J3!`Fo`3{8VJrz7>|?<3Top&39k zk(%+h6RrEo&@7RS`v-Ak9VafhR8Z*mq zf}kjGElV~JX@r<7p=l{V^OfjMdI22;!88)%q%)MB7em@QIgHQ@mTVDyU%?<^kuq7b z#q@orBok_y3baItdK9J9<_M?A5(~^wdR~myEbLC`E0%0IQcGcf8DfE1vK2`CgbN7u zL|UoDse)0crad{Obq4Wr8H(#~4btc-C1ehMVrVVM)=|BhYDi?g8CnmtVaO8N2n&kx z{zwDbsKjXk+DvEJD!6YE%g`2}f2dVi8AfOvLvhc#mCE9tbv#2++uM*jt;!+PJOgOE z5~l-d?xdqIqmGP%1w%1E`IkO-dJdtMEZHu)!cNa1tHx`VY&Y%68C8qm+z8N~p;73i zeI;i&5zdVaQJURC8Y^c{bkdfg*jN2XUFDPEwlYh0fVN6Lh}7JU`K!U9=V~hBb2)IT zx`UyZf7U`8JI0aFPL`}TQui@dWQP7_$?72W<`@u~hxsdA<)Pb-%ESHVe1_87jz}|P zyG99$@)odU^^sP{Ht`6G@)ojW4Uobu%bC0hv5?<*q0BKZctTs#39!1}b)Fc(_FciZ? z2c(8P?Fz(T_=8*RsLXi}FXV(YOFe?9sy9QOfw~|yQ`aW+GebWBbwwJYJ}{m*RxDXJ zr16X3%Dyi{-GP2Y>a$3b)ZB|fq{q-3dD0P5aU{m3kD=HZUbIyzW<<81CHsjEk!k>; z11wo@q$aAdq~_`l+;SYEK1dzq%>>CJ#!w9Pd}%++yAn6EmL=@i&WP^~x$Dl=d!&tJxNE0O?<@xz9 z&=6%#D9|vZ1?oX$A@X4;{Xhj$7j+M^#Q8E5jZFmYXEj&={aCW!=yP$C?F&OA;ki+C z^wrzv35xPIA&pk1M+UwlZJnM*WSbdEQ*lUhrzH~F!jk<#wS9UJsre5}HWsPVj7UP? z_5h6=>dAPd@OdXuUMq&8YyvgRbG-<)X2~YfR?YQ+D}^lCBx+oxk_m0<1DZV4S3i;J ziFeK=@5@j;5R`&cQ=)><7M5%((rED%De}H7*)%!|vr7n#*8;PhuFT1RQOHEvGP#Sm z5(x~=0-BA~V6rZ8B@!8$1N0Z2`;%RXY!XX0muiln4WWa&xDh(k<~*vgihX1hG@lPq z?5ljF^g@f)^Z%7CK-#siLYi1YmTV#INu^doUmE}|Ql_D8F|8R7ZM|VA9{4Juy|K)X z=+#@6Y$-L*%fkq@V#$^vjalwRYW|ED+{=|Y70?@%NPA|(K{FqQ(o`JMKCu>sLnT7kCFbwMCTl(_Q@#ne>yps@RH;^7S&Wi+ddhtGug7J7E%L2xLj?= zqS{EErbH9kfQbzq71}CYq-y@AyHXvh=fSdkKDm0Db zjMRt^HsBH&Nsc)-al*-x}5#WM)~h*!J3RXCr4`XJSt;6cIx4~F^z z^+Vdk-%2dICqusg^+(#ypGK^+7el`S4WK89JgyXOXfMv7vnorAO3| z#wyhj``gcw4M7^AG$2VlV3uqsQb%PkB5Q`nHN%EzI8yrQuvZMlv_=Hdc=<9y%~`VF zXm7|vYSDrv8;P`Jeixz7OMpfV&FyHUE;4C^>M;~+{!ZU_o+F|9EZG>OVe^7WU~9mV z{ehHT0SHAJJ7nqNkmgPeA$B2*p_o93N17~D0Nd*<*#xAKLK#a1MR~g`fF`O89e$&8 zK}wgzKRpahhSC3t)J6&}hV`;!Q>guwiX^m;C7Vk7Sqf4UAxx|AP*xgk^He|5s=s(0 zCS8S-0kWA?cKQGr!7heo0nMiNcX|)$=Wd4P0R4ruXNC=t?O|vx(BDW~X4n(|*isu> zm8U|FTjwKvv(%Aj-D`%@iwRU?mq04@4NJBVsrM2CII_i(Euu4YX$YZtNQ+fCCD5u; zYGbEq&lVKr&1YyC&~j=wgy0ht1q`hKT1oAOP|hqtQQks^RspR>S~jhRP&f3ZD+SFtIrdZ2;Lur0#-=#PjxG$u=RS>A_56pv@|r7Lffz z*H@0_C_z!)EQYoMZ9{54#+A@)hPDIkpcZ(H3z;c74DAH^m+CVIF3aR2?HaP)-BfcV za*5Yoz)*}sdXTnC#u8e{lI=z6FA1J^5lgm@S|o`WLd%i%4~_l+(i|0UGWrz^MN2qH z$5#ao>{YU4HC3@ERa*$HV##VD4N}b`H8&&GRvr4d1yXuhriGzcvo6vQ@d85suwyEF;Z>$ ztoeeXykA+eCP*9P6A6vRZBSEHx;blxv}KMD@x8t?6gOvI(Y}(bAvA_1YmU@=P8#tj zez0UMkkU2NOV-flKqHuKt6=fQkJX-(meSXQgZ@E zN1j8nUPxUfT!xlWP^~xe?KD1+s2X&rad_`h0u1SAwzRNl=kGjNaCq>uxJ=kJ!uz0J6SXw zsgtxJ@l^k^XoM>Dg5Y{rAJT8C)T4-`vwKbq@hJKkin38iZRf_5XmEff8%>`p6-($K zOZGdRWpm*Yd$SkN7}cTA$l<+1rh9#T)KXc&+OZF#HFUfd9KjQ{^%8+a-(u|2d z;)0^QJ}jC>=>#i6eOWY}T9pY_q*Z<_nnCGAA42o+azUmlCkw1fHl2eb1I7!^@rqxChuPcmH;e8$OAj?rWkUUsnUJha;(>WX2wKf*cnRqPmx-Qz^273 zmTV<8up%MEJvL{_R?!7?CVXeO1!=V^rv@5Ti!?{ha2!!chSmYCrwg~7Icak%L-9+( z4RrC9_b0TCp^YHhMEgm2HhzqGHEvjoW4GZbB*E;{j5Qs8bTOST(nr?Sr^ zvQ)8TdypC`2N0@{-;e1XlI=si)n zNX1sqT>MbEJt=;QNb}3`JQzq#;vt z39Vwu>LWFu8YwL(%3IBnHBh6$0?=Q+Kwqd)_sI}xin=Co%X1m}5@d~#mZ>%oxBNFt z))=X~nh_5%8Vof7SyQC&pXG@1n&B3mnHuL6P;;aubKqwED~4JCwM3dB3C7u+p|63y zLE0&qOGd$hp>Kg&A=RB*11E&>q8gqo9(w#(SSwlPC7`J9Y&Kt`7Y`@SsM zpGb}5;I?=L{;wq|L+_hPEg_y1s$^&y$fhF=TNOdp?l23ur<^g=8=2JBEo)saD9Rho zqFIzKi6k_FMYCyNEs0zzD9ZbdMRSHUr-jhZ`0a~dYILQ`rE^~?k7%q9L+Pyqq&-Sq zY$MZulW z;2JooQliEwg?=uhmTGwLQw)6B5*)WDyLd{i3ZARsh z6*ioq)j(^I`i+hTstwv+tH!AVT933~f-Y%u1VeH2uYuYe+&IiM0NOaz&rP(=@=j#_ zW-%1UsF}7(9!^DOvt(Q7Dk%@As&ZJef9Sd(4;yKkMnGHD=*`?VI=*vrg#<-;wHS)B z?bM3m|A?W@lI@^vo)a-uP?T4PCEH2Y{ke67nj!tG#_58->ZYE|svfdxSTM8)XfK`n zs|Lur5bX}MZ)gPj=^8r2hj<0w8H!t>14xUeyAm41k{zVhY=-?v5<0PDHPx{vh206Y z{RC7?oqpj<8>!*sf@y-Hymk!LQ72RvsqLgPLhTufKJas-$&&_1Pdcz<^^gWl?jrQN z4ko_TIR-#qAdMgIqe9+@p@u+T4p9$f@$*lgVNOhUs-dc^ji>mMnEmpsXkjG z)mzviM?7Z%Y!r~ym%4N^yiTv_6ovt-{Q)m*4cWWAAEsnhhbHPWKdPDFD) zGt>t9`5n?Q4(OE+LouywOGh8m+P*AVJERe#`-p5cCRFW*+U$VTp8pM5acUS!Z;aCC z^3@REyOt&U9%%qyAMxtzSh7w?t@u5NY%fx0b(#orp<^`GURY3+w~wKyIUkVbjOm#{ zbb}@9inL}-&2*w0ELk_C?PHCItO+J^-PP%K*hi!p^9+fnYRXV-vj>%x&LbYO8B5j^ zX`OTnu?(+RvR+7I=Q(mj1a6+XedgTN6E{v@K6mEsrL!WuSI=F)aQEVgYa;wNZ{N6o z>H3*-CoY{88GGvSrEB-@Ui^OxNOELe7}SoI94EY~^zl^h3;Q%AN6Q$z9wRwUSow|X zN^^xX8j|CLpV#jW66-ihe(Fo9RQ{>It|7^hsgH0Zg0e?VqdVNy2|PSSMkv318~LdM z|CW)T6BS}U94R|RetK^#eLPiR3HkYFUBaMx_%-tL_=4(y1xj~Goj+^rNu4e?SMdFs zGnc^Bq%Fs{`a`)}EBJmnD=sBJ{U!?DyE*?Z`T1i+vbJP8JakO-v3JF}r$|NGMNy<8 z8*6K8Yhfh#@^ht=mCK>y%B1>^SKpc8Kch;Z>$RgN zy7jLy%F_gIxhLeC<7_pk9`tr2lpS$wSxSP(Hs-JTQ1;-ApflnX(E9$b-?&NvqvoSp zB(C5HBIn`XV)C=){>^QP6{nbYYJ-YAq&AB4ctKO9lD6!Hva>AGR{72ciNiU zB!Wmw@&_lQXsG^Ya&mI=co;bsFS{4|SUo(`70TXjcs*zASEwG;stcynoMXjHOtJcu zmoVS#k_=YEY#AqfSYx+xHqJMRlpUFLlI4uv@&jfTM`pkwgox}LXe`<5(9 z+qGYzCL5|x{n0?G?Ck%TgVgMR``uQWrsqcHtJ+9CH%`j!x`CSHe8OA(6|9=8Hf6X>KG_@^NDTkPMm?aVn=6%7_PP<4D=NmvH#66lCyf%mL}XS7y~2 zO(6ZM&4F24WMCpRy#P}{tiOBxGZ^2nG&1JVG&GiLgf5Nyi(NG)TGn}C6-ZZE3~;UU zLITxy|C!8->U@9tX`5}R!*RAgrL)I_biR;?zBTG_fj#u@=dHWO^5FwZq&`;oVwZ-u zERB`KE?xXMQTH5nX>4mH5g9@LX~N4Md_F_sUOaa;KLouvKllAgA)LElLM)-|*K>a- zi>hpAR;G(k_7qR<<4xG2O4lZ4ygOtGd?Wtm-gGn;xc;hL*MPOC;ERAKD0ZPqRFBqJwq20+>yn$dO9QHZDfI=4=cKGAs6yCfT) z^u_Li)Y#Zv zbhLbjx?C2>D1$od_`&+Sx3KP<0qT(j=kk$Lxab-yN%~L3jydvloPbpnOt}P9sqddo zzWg|UnB4-ic=B%jy|J0ljHPk~TL1h8>53+SwkUs)4t?oLq{DorHq1$d)`(litd2#y zk;rfCX|x=k>&mpK%9_dFG3DA|kz_`Q!+ka(yRe%}YhaAHfG2X4%w~%rCf|YaPL$Dg^6&+#`5eW5{#(1!bo^?wEP%JJ$&CL0LQ5(7=5= zq1PhHzi}4{&;t2QXI4$b^&A&mFkkEAih6f`hxabk{l+NnS5T+bTIxF&CvX+_BAA-b z-}abpSjN?YR4DsoMPFFvyzNY9pNFzR_vgm9_QMM|zVjy4zZ>gP08fa&S=IO<5 zq0pjE?;vIXZweE*R!r+fRuMD~I}r?qiRgvGFN$}$YL6c16R(u{54ST-34yXd>)V=d zp*q9B{eZtZo`1SJtq2~P<5A5uE---OO`_H)PUW^<07M?S-P(1AbDEixVxTqArH<21 zp?-q@JQ>Pz2Kr*|Z3eCR?Gws4MO#2*nN}sw_Ij8tVBQO0SPLheE{JV~cEXaq4a$05 zX}?n(gjWACxDU|!n^XLrErIG?yutDst1B&@hH9la^6HAYs@xHI3@v&PG{JSHD!kL) zgpgZD(W`d&5z3f5h0O#`wv<0m_nm9EgJAi1x=C$XGS)ez#!~d708}J4ZHc-yPQ6bF zV2{wK!(jKV=HrXNj)CC}2X8rl*0|Nz7ehs7M>Pcg#krZOeQR7{3slrrT1G00`Ks&~ ztTN1!%fKq;eW3E)SPA*!le@1na-8~r_93hL4^i-EguK`m~}M>y0tOA?nm|H>sR+B! z2skUu4Yk~%ti;F=_Y=#x)t5r`Poz%C*Z5-f7*s94IARZtq&jvSOQDg}l$Kz7QH-P( zkG(ms3?r#@G|M^<5uVS~tTzC$nd!**j`OP?LXdPIutD>w(!pA`N#rV0iHLuOD&gR!?V4vNC+Y5K9A8@Yo>amT=fDYYPi z9vg`4J+N(rLJB-vxih49d@`)a8@+^1Es=zZs(V1+V7ZtMBKGHWJl_7f&e&{euqa&) z5-y>$KtwkfJdEoPCi4xJLAk{@&b%o`U*hvWPj^sXVw`w_cr^MF?zIqf!Zex%k@#%g z<#L+niwoIQEsVtxt5g%N?5hP8+4kEt@MSUdPl%oew|~G7|NN@AEGUv|R8GM#)jV-G znSmYs=VRUS7W67t%AQeC#E$MOgo-TAZ(P)itBqaKFAG&HcVpf1I~};hH0`@R*94cC zqMk5jKJtJ;>&+b5D~ZN$ZK?FxL9}=sl9jgULELDo3Z{{6sb855nz?X0(7^UpFV0Ls z&xZfBP+V*TR|BQi!J@Z!-pjGrxQWf1M+o=AlQLd5pAo`}U3uNP zhjPQBM^`AD`{77iMG?G@Zp>${;ROv8pErJsCkC*X&Oq<;zhz(7M02wXD)84m>Blbq zSaO$HK}6xN_4hn9#nCd$SVUR4l;M)?4WVt{!P1^wbiF3@j_{v{&c=@~LSN6U0+Ecs z$flj0AW~9U!VO(OH|DuHT)l$xak<#L*4wBi^Z)zs)feZZ`uW7;bUyaPxN}n^@&sPy z;k*n-eX}$9yof4U{^Jw#exmY7)h^dlM(M)xYDU-pgTB04*<A;$u(ZecwI4gxnCvuZcEAGRBuqpVA~*_Vyb&WEM}dqt|Cda!RAP*&>j zy21UZ?_!yWr*A7losoaREiX)YnCFX=Tev3UU^-6jFHct0$JRmhqwlD1amLA=U=YWR zS2hv&h|^Vh6^E)?O!mLK*hgVwLa$TP85l8TpcXs3!lR6F=Z-_@pVT%hWfQ(PyhI$l zMD7lSCF@o~MeF^t>MjUFMa5<3H^1zIiUxvgNJZ;77JE`~87j&OH0VKP?8$xGY>R78 z=*D-U1LzumPXeRg@x16I)vV|*U)-pr4^DK6|Afu`a8%Z-8k_6j0;xOQn_?1Cr6BUP zdFqm|bs!S6^7R9(3KfXls!;?C%Z5L5(fa*V_mK;gJUUN)^tipd` zACjAwaQ&CxU@r|de{l38w{h({{Pp==-^{?0Q{4Fj3SMVfE4Lk!WX)Qg+P4`c8NfrUIcr+s3`Rm(c3Cnu1?4IM(4+WI9x|W(i-v zESgyx6OpQs8{sXxvqZPvFK@HB{sIt5n0aNDDT;hEuNuuv zbr`%PTfVW=|C{#45Kv!2S9~awlFH+I^b5)0FvLIsK)##W-m+i3sXRspp-Il_hOjKFkLcYk=$!v&-<8pQbY_Va)CZvuzFugjj9 zw+e>{JTd0%geUzlAZ31i&*O2i%gP2-&bj|2bF?h%WXyMwf6T!o1phI+M_O6XFsBFA z%HuKJ;5TpUlrggKl;B`6M_o3q{cmuFM(Obh(}V%9bE@ePOc=O_WG79+c*46DR@ZG8 zH58s<9`m)8rhx%2Yf`gT=AXbF4|ONej*a!bqCD?v*I0C897U8yY{!(!4S~bIjoDZ5p>rGnBNgQ zr>t@r12I0dZ9UAqY@L}S0?`S3d-VHWSq$tG!nncHPH+z_4Z0t%DB^l5_VdWk9dmvf zRiaDkuYc3x*aP%0A>9oHW|++VSW*w2*bxHeqocIOLI9I0(*lwrjdAzLFK7D#Nz69M zy*=1`CJ=g~z%_$$x7t9R+v9~0NgU6CZ9 z?4j(OkJoXXFs+N^YAh^Fr=q?qQjZt&ATTfk`vuhNu=>%H29HSM8o6pp=lRo(P?2vX z#LlNj+&#Aib?)w{@h+E9V`UOQhfAV%&2ZXMME7cXlfN+=AE#gd&-*!;dBi|-`L4NX zIAak0PfkkAT1=eQe&Qze>mk!+^KIO&LWg1dh_H@##z+kqCk)HTNs*r~?o9gUzh_W= zVak@YeoXa8TjY{D^|S};n=oI}lv@}69QPKwCfr&hgh>)d=Sbags3zZjgPGm)?{ife zxhR~OargyBE^BvO({<_wHEFAG@u|$fWMAm84O?h=Nxrt`gCDrcOiG(zgAcS=pI}=k zgxe9Xe_vF^2Y!zAVG?tS;38-gE^j=GYZPYv!GzRV-Bhww8kSdqvX@^!J-yYIyBqWf z%8K1PJb8ZuRBuujOsfB8AmS&4hX46^uMV25_WfPXU7I28YQ9Z;;~DvLFDk{GZdqr0w74%TA<0-iLGMT{PEEVb z7i5!gYL1y#>1T^^LeidqS+CLR_@}|t+@9R9R2%j3{BiAF>rgKzOEeuEQxDIcZ`^xk z=MPLZI9790f06{|754m@WPgQO z_SX{H&?2XfFA#eKU;lm_cl!&CZw}HeeqTpPtH)@hXRchnNvr@w>TO>`s=!uQ$l^z=~;&a?N86|nUtb4uA57pG3$IeF4$!*b@ZBI(Y3bLkfL zU9tGz8nuHq_4xViHhNRUwdI>GbZ0i zeiSv#pn-bUuKKUmeI@t6fj*RNzLv1@#btEl^DQ3U9}oH)=I2#rLR_ zT$egNM-!c7ySMi%`Or!J>)4{ngHCdBB}})k@;h7TX_3QYZ;fcdnU~r<(}W%}nIC8! z0W*&y)BU`Thy+i*^Y#da`4{Z}%W*@CQ&BqG=rZQ;lyA)2vje?T@6Q#?QdJ7wG-8yJ z*{Z{sjau)`8B;hcg8>@7StFmr$${zvcP)(aP(>B_1?LlDk|%xEL$i6`R3U#mI`Vgg zc9;ubKl)cY`455z8amI-I7)H9k~5+Yk#w65o)xX z9Y`Ame6!q)COc`_@ln%dFrj;Q(wuK1Tz}{c4BX)S#<8o@KsvD<-g~XLZ{ayy{ZD4z zKk6_OL~7q&*qV$s$hK}xOLZ(XHwO3J+h>h3qMPk86MgzF;%58EXw~G+xY@qk{oq}? z+3uME4&_hZX;UPIZCa&*KcD8g?yzs(FiQu2J#jXJ_e(T4LQaRj4y@fj5RHdb^e_Pa z&$DfCBf1gmj-P&Z19SNt|1GAoF_*tj;IA@0vK1EP&*XAU!2W1%tu$@MP^DI6?enH4 z?jbU7C~(@ane*W@_i#xFOqP`FwzE1K(2Qb3MsJa*Kc{_E)B6ZZn|?i*tPE2|7xp-a1$v9}NeYv>$3?x6WDWapDg?P_=mdIS!@{uDvq< zTZ+dnipwB>_j~o`AC+jbmt-IPHxNgnp*m=n32v4dTsfz42P5=PQIHTDcT&Xq7p8;n zecv~i=Eg=}<5xJ2xv|jC=TmoKI@q%l^8O!6-~Sqq4Xd2uYWE2nrgcheh6?t?!}U6; zN3dZfInc1THL_8r*o5fFBT3g$*Yfjc_m^XH*KKrF3`DK!%7IfSjpqdC(#*+ji8>FO zIqA*5;a`HUuleEh9-2AHv4SX7DRSqz`?zh#H%B^b3(k_M3R{;PM+30;&fsN*Mer1l z26+9!mqj+c7{lmAw&c9TtXBH;j8m1(pj>9fQ`?0~;VJQ5F3fVa6sGxNZM*S@^FgGw zaLW8njD=UHcaCzvwHD_hBvecMrYu~Aack;k3jBNL(g=YJRQEEj%}4>0@H^-Z|03K8o*efpo`WHuwrs?7%Ls_= zTMR&?WTV2GfDmq!D6xk8v^*wTRfH>%15eM*TueA;Kg!%0L3fj!z`T}-#_TP|u&1MH zrvr_3Frc47e)?2?GQNqi&VKzk5ycWrSLcIY=R4(z@=gpr-V_A{Yf%^Pz0?d1bcy6s z&f9Zv0jV>G?S#7T-z8t7v%C1H_M9s0pDxLpLi5ovmXqFElZ-Z?sQ(WU=`MeAl7>;U zuFpOvj8(t%R$DX4D9w z?zN*Tb-k%(^r8ob)3aYD>~9$NsID0#DT|)W&sY4#&Gbsc-fVNe0}umpH1XMV-mgq{(m7h*TQc!qQP-7i1JGdcq;y8KSY%szNn zMgnpqU9RU$)v*KhP9NDIUpwre9u!coGLZ?% z5B2Fmi!K+--hPNVcU{*;ZpXmJ*Qvm%mY=X=CWknOjziM{zFI#N5NuN&qm|7KGLA#* z%RH}beSn$FL5z5>_1$Qw#6RQ96$f`hO|&*LPF@FW?_J z0S@|q6=7iMD!!cj8ib3c-CnD_j1AmW^-YMjPkjBTJPY?tFzkStoPYk-(Iz42wYT;V zRARCjM&W__NrQifouF6&ol@Q;*_^Gy^~B?#>|yyd(OOjSLzia?EG&mENU?{YW!Jm0 zzYNjDY24GAU5+`vT>THwrTZqG5yha}6LOplvg)=X||CL%b4SmWBzjvHnib+y|FI&IAm<1yK z`|md0&jXPcPMzFMNl^m3Pwx9oH^(&h28^RB66qkdh^k14rv2tC)CC>{?SuXvi|)gT z{0U_^HjoUu0%;!~E7O?E=v1I54rRBgIZ3EY=I%RQ$FmYPW{Hc?zxbU98y5d~PtBqG zUx7<_vx2Ziyc!L>HQ1sPmZ3YYV~cbK0=UsG@U06!#s=Mg3W_B5{i<8pxol&WiWZPOsO=$+N})ELIb` zf7|`X*Q?R5`XTjsJN3^`+*`BH4*hfQbtiihF~Q^W5;`!leb*>?oU^aaR|N3m9#Hbt z<%avZ;DHnNtA$6U!y8tlgVQCvckjFa>JFu@*+Kn*X?_n@)S*A1FiP|cJ@(r6sgfHd z!MO|GuLC#U(kySs#QVYM8Z0;#n^S><*B(FnTIh0kt@gqw?uId}^NsU_uO)2(X;d6Y zE-nAA?|7Jpn#W zK94R;S09DzT~DPQcVij0&%-WDpHD<19z1U9=p(p1-`^%ZQo0(Q71iPq!I+u~!%YLt zU24|0=-wT^9pXv%4?f;AlcM_vS`}B)^>NE8a{z8u=qjf!^Nr;mOq2oLy{};?zg3nG zCp$-^+_*g-!?Hi_x+ZtggR>mtGV=%ylS#7p$)kAP#H)~d`{O2rx7%->KJcWNo3Kd* zdph-e&_+{q#xbo6W!GJ7U3dj|+iyBHY`urO?E!hvj6dVGFI~o4BDa^m{$z{>MS0)M zEPvGKWoq@Z>SE}68yXf|!hEy886-|7e`?kliRx+Eyl)Z>56Y`*H991jIF|Gu4b z5JQd_jIjikOJ<$K4AtImQs#6UVa=7QJZ;QSS?hebHXAckI?jPiX#WF3`=0ta=1*j| zGmDoG>=K+@0!Z#A^2xbR?}0 z95DY@jFZs$Qp}eSyrqFoxkac)TQ@r86Q&w$G{P0@RBNYnK04*cbOlvJ&?z^uh8@t~ zBYGRdaVBpJ-+kg8+FtafL4S)}9%`<_Id)QM_KR#ha26B--d?b6p~OS<_L6G;%&kFh zZ<^Ug??UwU8e};$JJ8!pueIa`(h$Ll1&-bP2cJDMHdZ2C1D-9mYMkRwv^YtBImLA& zLFM(Dtcdiz`#&}h;#&Lu=eE3;m;znka8zz35BKp zgGsIKBXF497a46eMStH;zl@s@hIQnmLzi}J>aZJQpokN?Rtw$0oip@up{!HU`#iT; zt_$-Yl$Ex5_cU`3UaZJ~jfH-#2ll2e+@zxppk6@lP_pt!m~V5QHUly|Md9S(u8M1fc`9+@a(bT9(l3Hv&xx|ZyZ3=HFeFW z&#m&9nra)n{n$^abHl6=UX{P_oXaoR64xnDc~AGj%}!Zo9LMyTjnL26lQG0?v_G8k z7FTL(SG;qz)b71b;;@4?uxcFl`(_n`Y1PS}#weeXgNlw%bGm!wFK)b8g7i91t!-9` z++gh#4Dv^>h%*mSdY!)Z>^(9dJvw6Ss)Hz<<6h4UUeExsIMaF#N%`f2Yda^$&_^`= zE@M!Vp*K?8?`@fg=N$2x7)&EK?ascXl8`Pfd3>BFFdx#Tz9C@yXBmq~9CYoTdx}OSHp9wDTJQ{}G;raD0*4aUDp?D_f!0{e9Q+E}dxGW& z+@0^nDPW6SvSe>v$7ZPCe|G&M20~_-Sh98YD)v~+-PsEQpZ2?VmmNQ*knH+>SO4<| zT7LTX-!lf7m8=Z|8z6K_sk62U!&5Ds2S{z!$YG<25@tiV=|e^M?%Gb{ftPq;!o zskhOb$1^csH!rO)RS7*QlW(vgSCuRF4^I?#e@p>S2MvfD)1?ZpC4h=J2?`CK9|;u| z`6=1l!i}8Lc35HF-%NE9$CY(ieRkMX^e9>$zmbYZkD_qf;yDWFQDo$PBqBLejw;gK ztz{Xr;wv#;4PEthE8PjZ88mt$4fyS%KoRGjycH$k!*yY5pkb4Dc)itH$JO&~F!NIL zNBb+E<@VYN`0GXev_ID{RiUW`J7HtRY8vVNlMTx}3+U;#rBhmWk3wg=>)X;D_V}{R z`H-#l$T)SU9F5+zy1xg{q8lMATXE4C9piO-n^q^FV{GdPA^Y5I8|IBbi@fH#s9*>x z;d#PKJE7Cpwr%lYCwyJ}p#Hhl88F2co2Rm|gM8!leI zjlqg&*4~N!fywAyPkp33F&X_Sv(auEUf%hxZ1{cuZ?tqt!Q5~Z4&To=x*yty`ty&+ zb(zPg0n4LpFK)!ei!Ubn_@B|R-X)uXwDAw^=?T9;BvDl_WHl}{2EY03E}g(YaoUSz zI_SB!g@R$mGv?s;&V6`2G!VP~#+Stkf46YGqf*#OZQGl3m&VkXRD;!}V4HW;)j_m> z6_5y8HAdBR3A*1Ke%ZX!MfZDAMyI$Wx&|Y?Pvp_9_1FSPZm+DA8>GqY_HWx7Rp_Di zxe{9RQp|)e#*Z%IWGVgI0a*jpQ9n#E7oR(N;V4;r+4!d#9_w*-8lD|1x=p-Y5tX4G!#*p(o=SrEd|7@3ewc;K2kKPS_o+9iYp~TzDw13|I zfIYrdWlM_(f57?`rMcFVo}kyqo5|f**Ua9H^-a5=l1jIhefDGrC}Vx!^%kw8c}MMR zXae84CDwFYtQH#2EurJ0XD+k|V`M%z-b43s3p&0L(j)(c+fL*`-4QTaa)Wk#Z(v*W zct;9aVQ8`Q7Hj!s(Oc=py{C&Et&e*+SFdg6qq{X1oB6UHpu;6_u(M(j?(8^er7dj1bI>Ib!OWUn4~O6; zrCI&EA(gu(@optQZ{4nY*oM;rZvo=Is(ZRb)CQ;%@-|sp$j|4-8#MURxeoqg=xhu7 zTZ4vpxzaxxyx<$}23%TE?b2p94lG2=@Z#qP@gF!SiHc*NoI=a+#sb{1`s-UbshD2F z9e8kNu51`}QyYD+5RqShAuGp`3HtqHH7Kb&VTim}k6N`a~tT#H}V!;Js#d%#3AYuF({yiqT_=b3aR_fWnj zbidN75%#CkxtouoP}Vqw??fc3Q)@bSWSf?KG|Iz_+*W}-#?%_G?$5q>m3m}1DzZMK zHGUxeVrCxpdG#QK|8;_QloD}G)OZ<2@jI#6m?=3id*P2P^ozr)hMh`;j^5RDZuJOk+ifO1w{&u_ep=KdNS>}fMreIA1c8x(ezfBA#w3^J8066wK)2cLIab>YE=@)%e< zFDV{aP>qiGQ?K~l^q|kfRd=pB;6Web;KVw5&?no+ikq^7yr`T(!%R2K0{rruwsK;0wc!kor}u&YTtX` zMtsX8)Zc$En@Gvw+)>XzCo&r6j?ayGwtI2zSWgTTqv_AcAQ;C4x7~>c-oR6qk1)yh zSu)Izg_o#2?qThTKJ?uOuIq~W=q)EO_@2kTy0+qa*VKMZhJ$@M@o}-Z8}_BntX)U= zurH1Az=GnpS>rme0~bydFQ?lE)o?Mg`a5-tgDfGA-V$&Mb3Hfm1jG)v9#&pJDM9kw&lijbzE!Lb>}Pa z)N{W@V+#9=w#%+tZo*~P8IR*Vc>Hg>3C76w|BTtT2~&`@>El|A(NljoW>D!BrXZ7? zqq)rh!}BEW&d`tUzEOXeuvDZ$izCvIrY^S9$M&Oje} z{Kr)mcyiIw8dd`X!AEs;r8a(>IFdSs6;cgdn{lP)OSStz9m7C8y|;AMB9k86SmR&# zas49<4p&`{w~E9~xCbURC9ny{ktxfB@NShzY12mBc53M;n;X+VY&Q+2`Op5G?-#~H zMW(g$I@6P&^Ipcb66vF1m)z;0kL-Q77tg|7Y9UEA!n7jKgG>fgikcZHb0- zHJ-x99s{5J-Tj_xhW*2?#N+X?C#f3_V_3pJ|Gk$g?mcvdK&1Cy|BeLtH- zbGJ>kp{(34OS`9-llapJW^2HUUyQDw4dshBQkTEY(zB1c{5CUAF1Ub`B_+R&o63c! zv>7TNp=RrtiFb9(Jdh4gx_P>z9Nq`hsrV(8XOe8B@OQX8Pq9Tw(@HlUz3e;2g@Up!$;@Z+eYh%cxNJC=&5$l#Q`SmR-xf(M6w=@)Qz z<7ZC3|Ey*F#B$hkF|)ifqY!aH~{AC9!js2$20wo3*}h4ymQs0(0>uJS{0TT>u7AK|pZ-4Kn^!4Rgy{*``aURqZ0TF{CO)QLyeW3He@6iRe{0UAUZV16^E$IF%?QjbE z$EgXbE@^cb<&O=kHM2NNlm0z1Q$D1kQ}L`rRq7i?6&{_Sy8Sq^TR<>r4PN2G%VJ=_Uo3H+z5@3sL~s6h*8P*~ zaB4$=bTx0^-*^f#NV|sF>NA4l7_$TxT)Hr8*y0Kq!_uf%vvRg_cSCkT{NjJb%b_e3 zcY$oc!Ur8&-6}Th8*P)oaqqG}R{9h(T^cWcJc-@NJ@cIoCqo=3^-f-wj@xK1P|*`N zx9>T_D%u4VWo+_ux5J7qjo^Lzd^1$kvLZCPpQg-08kiU>5loEOCFA<___DS(H4HR_ z321h`VR;31G=E?Bi+cPN%7@TpZQ3{}uUa(oZs12x%0gj{*9tx(y%zIsmpYyvPs5XY zV%1R}O|heeoF?t9LGJ|b4Z~1<(yZTh7Za?DAFBV8>%u()tbr$>cJErb7V}!}0kCyh zpQ*!1M#T}i#8)1MyG1@7lk>lzk}W&7zZi}vab$A3U6@UoUoffNlb-5SVLIySIJdbA zabh{oJ}Vi5rd@jU#B3qlsnV^5<>%{9%kT|oTRxq*eUGk0#@pUV%t4!>Ayu}04+gUh z{g8WumCX&0XxikK>!W#nXeGMiwc4=MFcc7rj(m6)uc2#Bvrw6UH`EFT;Db0F(++F% zqvclOvoEKyWmd)3I2DX7@2_cp(u6);xEB~_jkJU#^khb<(1Amj@izQB<)WMP6o*sa z+%#2mKvL`AJd3Qx8!dXCdHRp&k=l5kWz&K1)%4QewGvlndg-qv4D7ksExTs=d4lUQ z8`bEijtu90T{0d&PjGLq;}M!%dG{I=%wgpVjwn9G!muIC9JdxAWVL~w*cvl3v<)9v zDkRao2)|@xR1c$2p#D#%2==#i`#(H%(5B*77v2#*3cxE9x1suMghE<7l>GRfEUI?eXS^95zmFIRtWFzN{E&x?CWp1bj6PhBqb zkB7*z_4KaiyHA{_w5#|Z$$B5et{NL>w{|jaD}1Sg%|y?-vS4~hwYl@0;RKv~5f%6P z%Q3>X-)^a;gW1LK4jAhZycVP7@C8oK`1+qL4*S(ZlY;-jVVAx1WbI~j_(Fd{7+UwN zWn4xL_k(uHFx!`w{Jx=yrf89?DW{8mLE@kF1MYYkCeRm-t_DB27jJ^|-~7_ipl)pL z6z*4?3i|w`48C8`de--~hav+j4vU*m=R>=B*GC{lb0w=tsJAKWKk#dfa1l z`So3GCdHu3-+NEvayYvDA${P13q?KPq3O&`bCzi7pzZnht$6!VoED$l%_PTSIx`?7 zf{A5KLEX-KUq~~W0P_{y7TDaWpFLt^$sKN{{XIA-gDWC?UuSa{!WJm|O#Qs0A?~QZ zjRa*#F#l`(3_E&$*oFo4(|)01kFJlxjuteV@wXT|x*!ciW{T80KSdG!;GNs3$Q{j9 zKYDRDslhd}ya+{%oSccseZ9HAsWbEaO-KUuU_`yIOd7HxW^3A zp+H%|hEGcaxu4OLhE&4nV;(o=ea5XJYmgC~8CpkYk z1(ROg#*o%KQd%c`5?j9ZV*H+U*m9AL`|Ic(AK}2fwJ)&c{f*!_Pk8w;uNkxVdh^$D z0^~4;HyX&3Ov6l$bgz$U9J&s8;Y*;z?Ku4?pz7GEF%sC1)!l9a*68FGroJ-d#dFL( zexOPp_SR}EmT;4YUEo_hEfXvJ-3uZG{CCB74RHP9A}Da?Rh&sDja)G;68YH1oO+E~ z%ib=@z{P*#`qf(WsL1S?Pp5mQF}kGgS1 zF7$}BW8Sv&nb=(U*VR9$lbaR=@#L)V1&7*DvH4eKi_my7p+c%Q8RNE3r(l9HxeaVjUf{@u)b{M(yXh6RJ-cqauHA^XXPHdV9=fOYsTe&yNi3vD@i{bQJu3)W-_{Tc!&&!>CX+9DQ8tce~R(L8hDo#wp~<~?ynh; zgQrBKCoyrpG+fRcXX8*>g+9CRw!>MM(G~e^*);UYp{9ciW;&zag_jK=Eqgd>Pf``m zq;AvzMZS#r^c!lMr7p$OPh~%TG1h>7je4Z=`33YFYTkk1=$)DQ(d-Ox zlx3!`M$qqt{N)etGDfRlrUkLej^DOxkD(cA{~BdV&yTFBcx+EkGwSwc#vMbaOs5-m z`dZvv+7)ro(tg@KPC@UbFVo_%5e~4vsz(F8${Q90VO{up{^cshT;FFKEICWF_5^r# zaxXpp2l159EU#&cKMu=(L)kZPe`k)tXwcjhPPu;V*z$i=U3WZ}{r4^z?X6N#LZKZE zQQ8ukG|*5gZ52hEQuZE+jHr;6Rc6R6BN>rMwv4Q-qTlN|*Zb?^_x#oCao_jn9`E-V z*SXGhj&J$S*?=8j6V4oULRtv)6e9mnlyy*dz->7UqmI+%D}Ub8^O)C?d%BkYQIVl$ zB?{G>rSX}h(+-5Dz{(Y_NK9u{rw=G+ERW5cS%|lmG4Z1Zt854d@8DBKWy3?-`fWbm znqTlcP8pI?N`FDVGh3h1+X#~RIz6z3Q${wX1H{)^t?wSnxK`6rPIx%?v-!P2NM zXEAyy0*#Yq|3LN(?%jr(- z;)IhQ5SVTF;jtlw0}Zs&7h5W^*#SMib&M3WuFWp9HZ8l!o=k`Y9Mfd4%3`uRwnWidK`jCLUgIq~s=0fUT;W?XA# z0at4qB_B}-uDITX!z`GU_Bm3k{pApcy=gaXikquC3$XRSweM=W;CX+P(dIw*sN>qdqbGYbaW?8(Iv_#A_3aE$ z$NeGTA2&AYpBm_$#iQ3)B*Uh4bR3UnGQ85k)EoMn6>;cgYQjjb6NZ8gQv7STqix2X@%{xzolbn@M}oYMf>Z`ks70Ku+h*j zK$UT((UcDm6tC(d52W9*xb%W0{kE9ifgF}LjgbtfP{2Hgj{E@7ZF72`{%2;j5Ic& zy;_*vRiwUiqrc|pR1XoE>5>2Mb@6@DoAr(^^aXv(Ah=<&KyFRvD%24U+K27_3%H?K z_?z~ZGWw;u-@V;$0WB4J6Rq_~W@Zu(_D$h8=e0~fr#nJUWFi9W#w97zOm#c2pX>m@ zGlHUbT{-$r1tlq!p8NK*unGEd45ZueQB*eFb$98cvol~?XT6c;`UKM&U%Gw^>w2E* z-tH?8(^})EKOzsN)!nLg5X*W*`N~A&5#rhPFn zr^urhC*MBXkOjsO)D_JNU(~RMe0U+URh?E1iKeh%$}5d*eetRsTFEcUIklxK;r+;M zbWWdz_j5g7zQ_d$$jEV*$M7Km$@oB+Wd4PkC45Y{c!&30W@YahZC9NQD;vh+zw-pF zte+L-Ul$jjop~R`P}`6#nWCHMIMZXvqP*SEaQwFKgT*Hhcdf}|fJ{y+pv<)C@G87V z6s*a)DlNY}O%^rb-}h6(c7NnlHonjSs`bj5jqtwa$VJS9I=^z^GYQ?Vp2AAg^2feD zm94x%7@l%6}XVtUm`4tH-l9Xq!um5#lz$ymq=dm_7-=x^g@=;bS5-v&LNW5XED8@pcDF^wv{NOg@u?Axk( zYC1Z+cGW$7FnSgpmP*|Tq8rzwHB0M3bX&3i-pJ`-xAjz1aYFCu|NSwpeW`B>mhy)E z!sq&=Ifm~P9Z-Bp>J|?IssV?UN{ps!R!h}Gv>}lLxz?`OTnec|St0e$IWcsc%|r6Z zd~3xNn6`7O=E>h5@GJZ0snk3NG2^72_?yR|EOd94a1VCe(CWW>bH{>CEC|Ux@8mk+ zV5L^LaOWWDjV?#HlUi`8!2n@HXWnM=g0|>npU71ybRp9+su8pCe zw#kWurtln*1jadEOcaOQ8LEQhp3^c8in!&_H7z>E?46Ho8$bIc1R&L$)U>*r=q z6MiG8al_kaoB!CEMXvX5*dJk$>qUP4quF@T6H|gy&*DYxTMvM#eY3{nu z`rraBdeEiu0L*~IWIAQvxuZF@AcUacN8Z=<{M@EHD~IecdOuxhA%aq%9N!o=`;`_F z#J(;H4aWI<`2ED^JhCD6;~t!?6~(_U0H5>M?YL?m6nR4t2I_llR(S*@H~$64IPRJC z-{H3_zYo6&60$vi(jGCyen`{F{4e^h=C==->&*t|-d^*!D7vPr3;8`Y#VIvbNXuS~8BoTlPk{q2Lzt zt@pqGqm{yc@E}w6D_bSVy4mK>+#{-m#6o6~z4<{T7MJF`Phzqsh%jjxd2ZwB@dSOR zeBb$qc61B;$|gqf_9vI_F`G|N!c<}!EJ~3ZHWx2Xd`7ZzG|c~E&D%3GVE&E226HkB zdi8$~ZaQ6u@L?ZUuN8y;kzCLL&gEmTOh)K^XMTpvW-M&?#}tANv-~bS2Nf(q=MBCS z5jG9~YWpA^g|9x(l-Hw>W(7ej;#g;~FH?mm^laXD43&V5TaWJ=j~#dUzME(WPKj-( z8N|M369I8{|Bg_`AFgbC@tN_5&Ej^Mtbj`zq^=}$(h1Lic$!k)> zhD^jUK|yqc+golZDO838?74+6TbWI%fA=z<>5NG|@5n~)2<+F%@)A6(7kKKjj@_*D zwyuvF!SD?U(ey6jZTpf%e{>nB8?4*-k<01-A!{rO+{8ansro@4=W|AY4SV1C=ZIX2 zsl2ar%1fgv*8H6owu<+w!)#&m_*?HW#KQhzEyA-B3wx76iDU;Bc1;FFMJ2|nFIgy5 z{odmYQz_YddZGtodl#v$k!C6-U43+l!o{_DjKHIFMSSYDs|s*Dl1Oj0bavwrTk z=$u)ozr$SvD_>h~f&p9kIui^h>tf}PNYY!U1*e)1m=`jO)UED%BELlw2Ez5t6bUAM z6eBSC`#B_sqn89eQ)UflNtBk{QPdZBgijRfWbvFyj~b8TUojDZ=Fb}CC?|X(zXwpD zPB7PFosfrvW!qSyyS{(IQ&5f3L^rCOpwW4gg=9(0I8&XJ?6LHoqRDmZkjHi*wnfqWK%l8OW^N83Dm24is$6% zq5xw+oWHVZ^*(`vl#*qS^?SXIYdozVy;828BV0uLz-B>oDVQ@pWfiF{7RwLgN<2*t z*xZY9)W4m_hBMgu>F)i)WlRB8?v5*K$P5lJwvNM#ZtkSDyHnF@!v5``>2JT>^(~eY zjipjra=SOsIUm?9MKHaT1l&7*UMO1>bGq=oXLM$~U~Kcfou@xDw)swrN3)rX^@17K zTmHv3N6E#dTEv)Db9fHkpY{hyz=Os54&ErQDO8zNuSXJKg}E9cs}3(@D0@Wm@r6u< z=*d63|21m3YDiXS!|S>@Qd}{x;H>aYAO#3eXcs^J@N*;s4MHZozOfXbLFA%r3x;Bc zLECl=cb~NkLg`TJ%~C%f(z7Ve*m&o1G2LU(^Z@BNZ@R~%1dddh2pQVkq+4HqVzda? zzKsd*ur9W}RW-pjul3HB$FJ-TRqU6Yh*V;{mQ)%HPCkW3U*Su}U?M@u}u~g6)fJm>G&_qe z*;wA3e;nM7K@IrX>&n46;3}>0(m2;~`*FL$JCqEgP}x8S0v*s8azj`hcfQs| zL-Zl;JQd)Anr`)HCaJa}@UA(-ZLdbeo!N$@_>thTUIs4IJSPlj;>F;}Czw23``aG| zs6tF!Vz(m$Q3U_XwRK04+6}l9^Q0wTWh5`=Z9SZ+wy+8y#3ZwqpIKW^NS@WhL@-b8 zp|FHVha!ICcZc3Eev9Xb+hfL~Hc`?M)65G2>}iggqp6O;BYw}E^&9=O(*8t)XT7-h!fZrITH1Og7=huGe`V z5QJZAtSHXTr3+m=syT8SvO&8(P7}TfWm=03FITLsp;skSe$-|skS2UbjC5Qfy3iQJ z&^QGR$#Jk3Z~VzM-+C%JHv>M*hDIZMv>*L;qTm(pFbyA@K`hi?_gDkB#7mq2%pI1ZO>SGvbx+Ojsh(u&R8kCYLd`Ni;8_hUblrBXW7Vl4ER#ilPCFC0!nY$|u< zlX(MfxAtrJo=XUPf|BVJ!Fy-4nT(r@QjGi_)Dqs9hQDBvZ&r8iYKjBQ?u2Z2%-Q@O zA^0v|7Fvw`pR=CwdgMDeYpGAqUq6Gheg=ndwpRZIbJn8HeJZ>_Mq=!a1TtqGaqCX- zMmXynBTA7kL|%zv?J~UwbDdecjEUDi-zYqmX{}gT2|iIp8RbCx4ywc)!a~SxamrnY zg`m1=N#rRkgqpfBsRywT0-bz0_L-JjQOw8!rkQVoiHa%(H$(2j^NrYjYfT0|?h{vJ zI#sK)Sx(cC+Wndhk`ewD{6h%&&%VB!ToaKx6dKX0L;oV7qkji__19zLjjL?8WeRa4 z_BMC@X1k4BRv=;(nIUwDQSowAx$w7jj9Fn>JLvJJV`n&7hYG-1j=H!h`N`rT*&rQ| zFMh{H8(ERm*0Q-O$ch|*Gn#BXUikp_e%Fx_f2Mb+{n0>aG;3DhDI>&)4)N}^zAqkm zm+=?-|F!FJJzu;6V`bOkb}ZJSO*1bjV*l4YYv?3R5EN{yk;u3gjz>!?p@);vRjmSfkc7$-YPQvc5x5ht*Eje>~zk7PXUy z8cEakp?2~F;)M%t>}X{&g>n}q2BH`~bS~eDNg67=J9X+JxNzo4*U`1C#3>i_E&13fzP)){6L3le)ZtLD zC3>NjO_`;%2(2iL$D@?;y4HgGm-sII_sg(A%5G2U@FN=H*b?w9#ZwA-y7vdAN zs=2xLAQ~HSIFWy;3muajj1g>I>=M}DzZdJ`nFTqG?Ot0vSx4oGZ&M~Pr*SkR(1baS@1>L0 zFsEUaMT!86=CtHgV;>gWa7|!RSuW|FlFo<>GB3TK!W04CG;>CgXkuRAak;d$)9E;~ z1=ozi`-W7!>3|(6&+O!Yt$u%LHfQfr!Fn~bM?Rf`@(OvvgA!VAkWB3`}h)Clg^MI zQA`wIxa*~MCgFq~2vKpA*_?Zrq&j$A)WYWG%H&SwT6CXFrT#D`mHKfKttByGEC^5TN=q1c!88vbyX(bs+?1_sHIe1LE>1#NTx)H(8^h*=8PoF z8_&)x8%+Rr`Zv#BQA7M3{JvX$I^u=A0{U&KR~`jC=r+^k%jj~%Cshf$Ewfo2DL)M! zp-3?5>o2F3*mb$poEdx@$hI8ZB;_1i&yiqRLJXZde-xArVXj+rJkR;Aqsyb~fesLS zuK(HWCuiit4?>4Kee}OPK|c8ndGzKtUK?2d+M{EH>yUs>BvPQFO)5`x!0TmpdM1Gf|HPrLOZo zVhbnOV`9PB5Bl42yPm6rC$rmKKF#E@AZ}M?)Jmgzvx%d-g9))cHMx7f0E!$)8i-uVBO8Ga=%2hgk0c1}O8bcv>w6 z6xnXLaW5+(p1tehkO>sIJs#U?Jp{QoRZJk#oh!)+K-=FG#zW)A(DjTgO2&1WGxZv^1dDnL>Ry6 z%<3;y@QVe;!aiq^on$|xA#o#CN2jyG^8M%y$xKn_NXpi?!$4Wuvs+s2DW0$?nasbz zO+Bt`*pz(X1(^x3+UtJ)R%hU5<+q0;zoRE8qLg@P;ybGSmC#;Gp7I&V8-JcY!-RF( zRvS^WFd|_<$_(~w-A98?Mh-YtzesK_!q1SX9p`xwey0EZHW+_7z?MF*D!Yn^qhzU@ z#6Kj4Xb++T;;TOX{*10Cxz97dSYWqjy?irhZ0}J~C&ua8TP8@Iv_mv)A|M`_xm;ax z2#|PV?kzmhj*!-piche)6#F%dj@4EkA`kY1#_Tj6DQ_zR_q+M!%edxWoQ~i-RBexr zEE-i_2x#;vea_-blaC1?r#m;{KtKZoiq-u-j+ACIykt+C_JZb9*hp>He&M?Qd(q-5 zpSvOLBBT^2CtFAq0^T;@O_GkpfC`W1h(W~eHrc2Gfu2C=%ps1Dw#C;s7e+mTtq@(y zx9}dm<2>sSyD^|8_gK?@J=|*e^B(r=h+*v+Y`?D9v{#4=?FP19V!c0VIPi(oOtJx& zLxk?30#XBA;h?X9&qv}yTYWbcN zyBE+O$h}l?n(ZAey#*zJpKjM=Y!D%|4tQ~F00rZs`Ws%?W5+L!w0h*SoMTpZVeGp{ zAh!%Km~d)I0@#Tjmou6fJF$Pxt!-RjC;s6vo1zAGVr&i-m0X=B zejJOUl5pI4CstHCUU=v=ld2CmJ}t8y&|eN(iNHi4L)-hMXoWghtNnV32^lcn@!nJq zwpk|dbQs!n0yM^ryoGx3-dD}%{sFG~*HhXW2~n!&KgdI0Pd|6s0UlZ+{*dW0xaA@x z*O#WSUXb!9x14BLdAk#C`6EL9OwDU4`PhIn_di*579s!V>tmPgK*(<=?7WVJ{GWPh z-xN-D+^ddL-UqJpV$hO`*2)HkD9mzA6F-Dgx@yQs=q7*Wo`a;ATSQuvX(XTDr;&IQ z5n0|Em#nkE1>Uw&^%YDSS_rOoJtu3CP&r0t99BV6gHZ!yR_D5mE>6Q%>wWzoCx;EO zv!u9umcG_jB~-C8b|tRvQs5u}1$6mP7jO3fcuBLgI6lT?@pmLnW#i@+W7faz+Vo~k zBnrDFFDO(rn$jUM9gp?-=7u#2?Cx-_u@sR zs1AAF+WTh}81pkdEm}v2VeXIJo5AYG2?|;KAINOrh3Sv_ZhU76jID(UZ__3?H$Uqw z<9+~-_!&H`txL-?GVV1@7d<@S8i?on)u2idDv)n7EVDS^6$6ovTd7 z!TnU%0mwLjr9lOY&k1ghLP+g2#FtNJ@}y5N+-Te!AyI~HT8v7Gx(h&a$5v-M255Hq z3ye7iK(hv-2}vu@k77YqspZmzj8c>}^LjbcdXaO;*~@~g7f_)C!;w-9&7LjpSD{*o zdKTr9|7>53mMR^Rc+jy{iS>f^_@!ySujlZAZfj{mQL0-j*GYy5_44I=24W@a@CU74 z2>ZP|z~rMk>~~ZA5EO-?f|$j&x(A>;V)FcFovvc$zr**JlDDzwV-FP-RUY zShZRCVk~~pWw`ZgCZ@PWm2XTvJkO`@-GYpz71|Nb@%FS9x85(fJ7GN?H$7AHd}i2? z-a$G*+e}F-C5=;K6~Iv9_a4HlX3=whi{MOTkEBzA#!H$U^BxkYlZIaNCm;8C)CQ5- zQK0^3nOVg!6%P6C0FiJD-h5fmhMiPdPSY@(r}9o3f#sxcRglXkgf20jR38yLgsDZ=dae0cLlY&=JdjASY+v#s(6KFW(!G5|#yC;M3InAybZi&)V;dg?oGWmqQOCz)RuQ$H|>!lk)l z654A~G~GX5KbmpL&-P}l`wlL7Jn!y#8dxHx>9vDzZ3#Wg{&{<*3|~k)`G#S#c2+&@ z@nk2WnqE<;uz@h})kOQkGu4*5MtSw-f8BtIX!@ zs7HjjI0G4ORK8HpkYQ^hin$6kbVe;fbfw+hk=BY4etxE$AA_+9H4Hyl?eGBxbAe&2bc}1#1)zy;FmCe%3-~ zTSj=q1fgKE!6MW3Ar>}|Z+Iy$ZvC`I4S2FZjFAt=!_P5zJmW!66lWP1K)e<%o@zYhydYTi%Bc6&m z1z=xL+u@3_zxx@8b6{TRZHB}4lt%xx1Bm0kOH1P;MvCn|8MdMpbiBk8`s_Yqs+UKz z*-E_S3!Lz+Pc2fe2Bmwd8--$k7F zNIC}m&fSU%0_G|E8kq7z{@?m}-%$|Q?=&!W6qFa1seX}3LP4O{>hFK2D88@nDo5;! z37w=G@<&?Lax(((Org7Nj5o3%JL|1CB9ng*2DxLWD3Udr&i-s~)fWeJ{kCXW1S=iE zHIsRH;g^`$4KchgnAdc0dcewcYy!^~VLv7elDFxYjWzn&KFxf3s18dm$&Xg)oyi@C zSV!|C-q2vy(fm0$;?iw&H0wWlA7F~jY@0=|KHjKXk?lDB7pwHxj%x^9m*j}A5NR;# z*(L0_ikL(WI1OpyJ9=N=F4{S`G!GHFl>dH9li(kY=N(P4xXMw9nJXvJ>)&S`*Oh}# zWt+FutDY70?w1kV$;j=Ne}3W1F57Et$7XXW=&8P|ggg2Dhi)V0NtZ(05Hqa_m2K6r z$Fg9iH^{V2m2Bp89%<15B0KXHEt3IagXlC~S}>HUIarh(xXFU`EzPE?`w^@^@8-4L z$7+)`BwQ!Le>aBJ(4E7Zr8RwmP>w@VeC+=KFjgj&qpu|0GlAcPdeO;A}m zZ3g72jO_^SGhALXdIesot=&Q+rYpTlL%VG)@<@sB17F*rDs1aUW}}tsttu;Io4TjY zWwXodQq_iQq39i=XD+=L>9$8M(PpO9h+kv=(2MZ%BQaU5xllXMDEPh+)SE_n{?ZZsM!fU-(Lw z2d$C<=Z@A3+CeDm$3LOuam>X8Z$&t_v3tZWv221rwsbC&W=~bWd+-aBX172xV;`g2 z1?jo)CWkWy(4lZFiwKK{4#o7lJb#$tL+)15p_g_p%4kDHBWeo7vuKZ#SzTeuJ^Ev35RFg z_b6ce(VI!y%xjUNW72TF!T*~>L{Oi5GoDld%t$oc zFkTCFysl2lR|N0aeq7K1ppswXtRX@S5D3Ur$L}nA>57(2)8q5YoAF8?$Z zY8$%t0|-e}+J62dn^Ct%Nn#QMhL3&tdy*-VSxTE+W@1s<&A+I`a_INB&DavRFA3D| zf%nmVqTDkcTOw-Av7^55K1nulgQ=p_m<^;+_V&s$@G&TIQXo?x&ozI;5tvF-zv^4( zQA|PRMu6rjnQ8MEp;jG-E?fzd8~?Jg-0pBI-;4XkAqXeZ7LVBw9XcNtTj+D_JF8DyGVYZ{k$@K`(5X* z`*T55v&u{SVuC7rRl}FA1L$wd@ee!YvFaB%s~0^+>twOFqWLfLFrfMRzKYAt@t<_wU)PJm&_M$$ zbygVi|4kowyZipzckiok3>XC+XJvBtUKmbht?J(r56xOm9m|If=vlpD_c?R`+rA)o zSFya|5_5M?tn{Zacb7D#V(($NJ6$LLAU3Mg@dbsQv8zWW$b+H{VSGx1tW~;ZdSJ)h z-*T^L8wN51XomFe>xAu*fLGnIS%B3L_;7X7vEoV4ssO4+r|4C6+iDdL>7%7%UG$gK zTBZ*{_37BrKb{$vgYDavPchBe1OEgVdHZ2WnjCAv((8=UW-VAf%i2nqL`n_t1un1m zWnqj75U|0A39JCMP3Wiu0EiS(gNuuEv*-+nCYCI@X%COi+fGl|YlwWwwN zCbfIh9=xu-LIplZb6ztN+${qtu&BvB>*KJ*{>!K6GTQKi8>(HQ@VdTH1e+v(dAt1C zYEDUQBNfJfFPBpNfhc{?6W7a3_0ISaRc0N;^e1G(C|9>Fkzz&Ko!cfAh`=bEChe8^w~H0;5nFiL0k9^yebYfC3b9u#AavE>@IrmW{_+6PP(|%4AORp-Z{s zs$1o06M?Jde5PGDS+9LRQ>Yv9-us&rZlkAua;Glh*WZzQuIM0sO(`TO=4j92Z;Uo0 zBH8W525F?<9yQhh>0001wme3gsR^Zk$8zWRA_HIx*>gr~Fha`-|FIpFjL;wRU^kl> z5SdA~^jZ|(3cmkRD<1KCDYSKc3QM&g!`mA#zjclc%8n>^%U6X(8nFMlVmxDhxqkWY z6utM}yO^Top4s9{8PFW{_HYXWnnx?lOAx{fNq44I@-T2@ng;CS?a;Rpa}Y>mb4eIS zf9EiKk}>hsRXJfUzDp9&MCe$P$@sGBpUq>yI+w)O=vu*^4O1M5xC<-*oGg-&>l2R` z+ziv!g&xh_cRUOjjx_5;r2Hw&8z_u0Pg;(wq^#w2%nGC;j=i*uHdUs^vL>P8-lkas zSVpr)_$6s!8O;d(bc`3b`w5tjpYv>^k)f!SoT+Fjz;SD@`iuKuU<;}|^sr-}ZN27< zB-0EM{9=8(XE6!>n4_NhZ06DHNHGakv6{l&f29o-D{ElcFsZ}nm98HyZHDc=MfJ-1 zRoGjgQ&Z5<+2|Hw4DbBvJr$hwj^xy_aCgqI?V4<4&t8|v_@4-kx1Xx;V&hJeGN{sG z75e>-D9rSp4NA9JiZPGJAo3AXj5?z%PnKc?6=U?=pSmx-0GSqMDsVH}ER=}Ij@p|j z7p;5Gfe?A9X6ho@rc2~f9&zg)3WN4U8|z1 z->7_<^1XOhMKK3qmZ9J+VruLBXBUC{M0;$MLSGTIiKv1z^?~T4X1IvrGAj8QS-god zL+3)6U`0+NhKpKtk%2$FHT3{9@Yl0XJ!A&nadSj|9t^xhN_YYrqf%W)<+&R14^gZw zS8m4?$;CLOTxIEkOq^oxlIL=isV74o>D~O+|7jxm@2!8O3NNnL>0rh{p=^VvG7kX? zB|DK*vKzrMoIcf02jf&g}51}rk@OS%nOMq(? z@H`v53-dRi^o<%CHB!gv7`yF(BZyC=m;9o(@dRt@zP?x`m=Rs>Rtx^|g?pGF-+hMF zV0yD@(=Yxv_tzHKGJ(43zRDODN_Jv3J=XA%3))=KTHU&$VN}@w>i3X$=w5%Mo%IW+ z{!L!-8g<&0F6&nNBC=C08+NJ*X__$_j5j{?2cPkErHtJy+tTk!fre z*>IULGvLDLn$nUFrZefxEhpn1nIZ}P+)O2j5cPVe|1k!Cm~BZ!XyIF*>+1vCY~t}@ zStv^11=f_>s5`{0VocJb7cO5801)1(G4&E-lAfA8N<$4y(tuW46XTaIf6BN+Qt!jZ z#^S>{?g-mxj}NzP!Rm7c_;3ROl!+l)qnx69Nt1UH%$nD#H8Z4e_PC`}gn1#>G-k?= zSEuk;#>K=)L)Dm;QBm6CWvf6c1yV-W95(u4wObKKxTA-T{c_rWZaJzBH~wz?&GSM*qyHX3?(u7aE^_0!6HHF-XR;rU zSGcN9f;Ci9H{IxhJ9nrggPfDA9L^?9cQxKCVCtA7wwiS@L3|UJf@g6+B`VzMl=W>} z8W=q&`_;ls#u@d$=r7B3smIlvXkn3Jd>%bZta?xo6MIn7&~TlLgs^U+-s3`4Tqo@< zmEVqvYfBq7su*T`_%Q;{GJkQ37kif0@U_Ad@GJ(BRTk`7o}+l>WGigQzO~u%uvKRG z)}M`|q^~pS3o`-jO8klsPAROh-^eo6B%uRuSzT}i8=}G24k1*K zl4@UYhP8+Wdxr`!df=5F-ubEcM8dZu(tPoWjEX59MVvtOO7$4SFf%Z4v=X+-ykX&? zVabtch)21_UUJ)mEn}TS;FfdyZsl4ws!;e+N$FZWcrx;$p8G>$pTH+T*odMlx0MMz z%V9m19@ef+!~ERHYP|z&er`}M1sr}{0WPh`xo#b(dzyn9sK+e6MqBVDhVhhrbiruy ziWgMO*tWIMg^jrD6XJ1aE^J@4eS-vCnCq?((`-a*HEtb)Vc$A>H?5a7{^rzi5PD0> zGOXHi%Z;|{4TcP<)E4J)#BSJWbGjzjaCEHp`8mJWVQK!0Ae&odI5|_NfD>?-5ENm% z_{QTqc)N#hI?vh+eUY|C=QvqJwBbLn<4zu1Fai>`uR7~bFtOUoa(X|R)7o;~@Fq0B zU66HwbkqCOA|-5~`-C4$_hn!dvo)9kI!iwpZRkanh5n-t5_f{~l%+7sEve)k@Ezg=3MEG};T4Ymlqyj@~_MNVCU^#@$l@mE~djw7ZEup!=)3 zOkNN$tjh?@xZA(Qj=>htZF)Zm8 zOB~JSHb=6=@u{_+B^wUyZbRGL>EKacb;KWKf+0^;oROf=o1rH(wLBNR5Fx=5o%`Qr zKw7K+J%N-BavI-RQDH@!xV1DuO7Ap_U!##4w=ABn$|RJs(U1kgKc(6Nf{o!!nCr2l zln`T5`S_f=z?f7{Gn^Bdra9`)^c@!&omnvlhUZ}jy{ZuhQ?1yb!-Hu&4?B@=x9}bQ zXNaMQzb{wXH6X{X3!>$@OQ1NDd5g1khd0L~s9$1WK8$&mgFo!~Zy~6!DJLVkEbQUJ zHL#pp_$P?vz;eoImz!Te4feBDN>A8`0Lq}P)5w@KD|=Q3;xEs$^97{!W8dDuI%mVVTbqQ2bY9% z?K7Cj*?IG6MYkIsU;YXH=2W)&$<3@j)lMb)fuDzV7NHogXymTR^sxUh zLrsejI(WjXHI>;Wu#(mxp5;$iNvm_-*$h_FI&+*WpOv)Qev^UH8<=`u7(tJkZxSEt zvHjG>D-r`075$=Dh7y1-ZCfaA*WJlKk5Ow^XG{8;B3CKi?4!~IMr_LOaaohlWnGSW z4uE#Y{rAUm`Ip*kWb?jv>v?q~=U zy>55$?4`5g_sXmD;~O5|z4dJlGMEswh)$PWD9>V$28o;7ry~ZL;J7UR8NT&?&DqUc z5rfoO)DOm+(ol}!5vyiHp&IDP-O;wxzi=Qj+}lPIwNbF6E|SpCa`_H-w)w08Vj zRh7u(MU%1zKJd{b-yeVl%|4HvD$j=Co>%&!1_XY$&Tna380NE~1^f~y1bFAtMpY5! zpT=Y$wBFBp#)d(z{r+e1Cf57(xI~{DP*JQM6}o`vQzbKIip!E#gljzahVv^Tx0%@= zdXJUAO8Tl}SSJhkceDTd=hnZw(`vBm+)&rGEY=HRg3xlW=8K&I^I?Ud;#!tCcX7>p zzk+GyA^&O~ZS|hY1bNh zmYRvpdY!mym9e4DO!E5W;r`R?30HO>i)QJ*cQpZa%eD$^@Iy?sbArrNb(H)nvR3k4 z1ECati6YEQ5&Z-GKw90M2)jeQg#LK-`>OHx@xFzB43GSdu|uLYU$^MsBd;q_-mw$| zhHP9Z+&76gxW-1C3eMQ-%0`>M^VBqBiqTzC8i@yB-Hm(+r`7S>B(@#it<(oqIAOy$0z%JBQiG8P*dejkpP^4$Ks zZ8ePdnT;AxShA4kKD^!z#@nOMBbqgpJorP;q9f6F=r@E9F#C$2G+SAXM|0vi5JDCC zn){Q6sq_3A;zI~*Y7GfdJ03<4>y$v2^K2sjznaw?nxG5qPMv>s_wVL%zKuC$j-qn& zxvS0}x5 z3zs@CHoe8e@wLDVtg4T)^>coLb+K0P=%r;?RrgxyZLFN;_=vrY$u6mjG{$j4Ut?g5 z=^|;v@d_$)ihd}BAjAo!(tpNtuBbLNGyZK>l#|6&HM~G_gc-l$n!QoutPE7B%RqLU zR!dN@o&5LdOuAt9G{voqUtW@{v+gY52BVkCVd^lg{b)Z}e1!jtD#qXA9tlG)GP7Oq z6b9Ggq(sx~w;V9{03A@J@KE>w;P1cf(B1m+HO~sK>ZzdhggB^iy!Hx!J6uh~606*W?ZA zjkndcdv=?fu4x`hJHALl{w3>|wqI&=nGL3C%iFM!8}z88RI?{+Fpcj^Iwe$5&Vn1K z{HWZb@&l)oy>y$%X4zv=Zr{epFR`g1>#2u{SD|r6E zDy?VqZ8qFG*qw!K>5P%Pz*dOd(5D<$#3sb;JX#*gl!}~q*UOkfi@*<@xuR5*rKd(n7z2E<-_bT3vN> zjT$)t`yNUyKdqmjuHy!dh4b&Qb3lc9o98UA*~lq7+E6h`x-3Mpl)-NhRltSl^&cuy z*IS0&WPCG0Y@7gH=C4*WH zK{%dFp;MdN_(IgRvs@@y`BGrw%4o>rwsdaqV@kF8QP&pYJGL%RyW5WMSpJxzt-{*e zE8VbQvF{T0n`P3MfK4T`PusiV`^<>rby0e$dc11i{zxF*m@9L_==`){NDxI6@-w@z zXtlWVEB~QuYi@nbv=%VBp41TE!TnL%?SAkGZcC}CS_AUDq1IK%6ur}mEsRqUOtpBC zNl1~i+IS55dr#dTJnn$ma`N5SRRU_^QnjX2!w|}swh{^$xPMfhHH=BWMe1C0$2J^nxAgu=oACIqO$&S_U(k|)X1cjQy@qcW0Hyi- zAvbfzGp|S@hrPIO`Y~6;O1k%!tLGzt6cYBD#hT}pH;m?E&GW7=XbVlUa1>=T2435S zJ+MR-pr?TAr!};Ov_k7-PGCr9PaHYIcoDH}Y#P>E3 zkGw8QU^Slfu5v^IYd&H0@De1j&r}ayCFpOIKmm`3!Yj~RQ;f+W{5Eg+#a++Am6Rzu zxT7}3g2{qk=-If$6FrScl<0uYl3;IM)I?oPsmL(Su|9AYVz1NYWnC=5o)NWW=X$&! zgTA)4ya=#EA0-XKTk&+g#D|w}o@Js2GZ(ly0Dm&!necujN|cK_SI?DV8A>gc;5s)| zNs1sc@t+yGkCou|rPMbrgP$gN!u}bb1;^-D$3 z+X2fy{kVAYW*Ei_|AZ@g=;aQ3s(Hl}rA&u=l#R~bTY0k;872?~GK>w2JeybI{Wz8^ zykH38q^5sLZeb^t;0n5kAQzTnq+VV`ANc(bBD1W`nm3DeIqw#iu5V$Su_=?}yFg|c zf7SCbBePfzlyd(s(32!kxSeG z^tyEKZ02!)1$4%YtWB%aNOcd?>C`u_=V8psm%HA1gg>XV`vc}rV=aMyk(hFewhJ0T z%JqZnABC%E75id*OlTSQL%rI(po8GcnU)eltIIukiX1HGunVh~J_Aa6#$oHoCZIUY zHYHX{C^U4NQ1YX>wK01%cFFj)7o%89S)!>`#4?~bdQZI@4q}(YV-^bUv-p}_I8L?q z&Ha7-v=0l*>E#KuI)?CK<;RuJX=H^Wz2d6_(~-Y#TzP!h6Xfsf7w3-TM*i;jkOKSn znRAaasH{u9NM0O1t_tACUmY%W2BM#`5FV9+(nE0DyVouN+y}a@aXX{*5D0OE;|gD= zutKri?qE%SY`&s>ijl4WHR6A0R5suisxWOX_3tnP^R0B;uEtph6bex$5cHYu2C_z9 zF%7D1UEkJf3u`@Tk!9XTz=+Q!Zt2Vcp`=;iS=?ga26gcy?BVy^)|m(Te9-b!`0t-t zUY#;whx7*Ro;VHu4ysLDISL(mGiR0_9f7fx&!Em`ZRdN9Z8K-S;ryo9W-sq3iL!0B zzsh$W+hz&nRAo=vH~$cu2y-ZCocjgjXl`$|9yUVXFr6HOP` zy-LjPSQsL-T>)XpaDnh?ml1}XezNf@3qw?=mX)$Fq#0UTsb!~6S%Q_OXm`emaf!!N zdg`tQOs^Z-J&S2+r9UC-`tyFyW;XRm^p5W(#!FcGStXD~Bx2F??y;#yCTWx&17DyF zG(EadYuGBcn827oue?G# zG5`(!>lBS=(4hTm0?sxj9DSgC2erma+FnKIfbYQxyL z=?=FKJ`te{QRI7?xH7XoYN&@{up-~+(Ywx};{3Ih#PLoH%-^7YcZeKPm;8U9^VEhc zK4dR=9ttOolon4Y^Sr?Eq}~4=JL67yvP~xXEj|%=f9AT)4W@&1B1k@vK{hS3S9L8# z&>A=|Jc>a!4^pW_uxZmtA69p>(Y$b)4aDhBYZAMLQp*G`t%YZhpB2FYel1BDwy6T3 zoqZ^OCp5$^ml_MNltnZxZ)152<1I74kptW>`{^MQK|3cSu0VUhxPYw5qr0W_4hk`q%=tDh|jJaaOPf<+vYP2 z*4ulu(_ExMo*{Ab*}&$%F9=W=ao6lnI-8_FR_g_;l8)f(c~unaywDNw(yeA;t1x|XWC-`!;Gm&JQ5qg6mt zx-@e6#SFFJO`P2rxw(Z^&A$5#X>6lvYS*_} zK^@qyb>`6#!DoP3Ufp!>9OR;KEQNDdZMjBQLPHsWFrnsR^}AAa;X^*Xqxw^{rp*P$ z5q>MNVk9GXT5dOyWcu-0V@fp`xwEpHK07)rMgIF^>^3Q!0$uK*ZdnA0sq6rM&=&S`>F5+yS%obQnNQEv_ z*-Q3D`wWHUlsvBe_F`Ww0uO$>9kf@@o;U>#wiK>a6vtb#quBq-GG35A1$G!9~ zMR6nBn6S3hqejVkB1=EJ@K}^J9=~l-U(PE?K{Vf6wr3GaxDjRK38q`U3}qU)euWA7 z;fyLh+NZuA>*B|W-QsLML+N8mxE{4H?`D**wKBK17yP7HJQWYR&*knmHVHIqLH@lq z)PVFgH-1t@4XDC>sz=oqx`kg+lsr0&Ra+H+q@G`9U5nR3azSvDG$UINQ$=o-K|_icM7X;Mw}* zV;2UceL9K#mAp-4t_kYjK+NfYRJG`pYj$wTj&{@w+}WvDb{@UgPo3y1IO$C4*Z4sX zYqdA=)+9Di2wcX!+g;z(-YX!hvE8|ij~(UZo* zZ?;YbW7tMBg#Lwu@0emNl zYq4jx&scPiAC!VmZDh5*+zm!MAu9^K@EB9$j11-u0JxMy&-7 znTe!6>Ct-bF}U>2@Y->#gHS(tj3eV5*(8iNW1OQ_AQRQMZAYyF9C6%o%!Cra5uz8< zTs{MX;Np22TMyn^s~2s6fBvIwV?o!kTj^`v%!uIb=b}@v&L-Y|S=IyiFszwywgSm= z%b#$9i^o^~tHn!3#g|Ag+AX5m(|hR$hs7?xug?a4qXBovYt5`Y)D14KC=g){xN1pu zN=j(Jl?s$T#2Ror5qYCGoJtY_lb#%S0JHWb^#HFa10PAogAO?Q*mh?jEL?io*78@l z^MDp|MEf*EYd-r2_bu4Ro!elZ6{s;r;LJ_#RhmT$r$)PJ(8li`qN zCo+pzSK^=Y6`y?Ygf&GJ24&pX@pmGg5Du7LidOD#{tqaUL@B(Q?x{dv4|n%1rI}%L zc2Xe$_D|Gi?05!^I$%CjROqzJQH;brUaIHHRraCFw{M+qp^HW$Q*_h4=(|P$?I;t(ckJnf{#jj*O zp$K%-=kyZ6h4d>a?s*nMFpBm}G@1j( z@9#Xv03b-d zI5nTqVEPOe?}?QgV#+hI86V@lky*zgMq*hp{LWiE;bP~p1N`_H`5!4HpJlk?yE+`S zfyBE*!idAKOc5U$1@g|s+ON87qSc3R0y4D(Qng;;0kZf%I|<# zqtlAf-~e?%iof~WnM~D1!*e3vkoKXtPk=&oVQ`XFCWp|G%ttG9=W2;|P31xNK8cPk zJ+|4-^D{lf+kP_9w>M9$;74$r(afWEfLvT<&&j4=|N(EIeDzI!c`4sg3My)%J}{ZpUap-y+sVcIm@_2OAT& z{&2>3HYU!pmm2?n&6AzLhWZ^AP2p!yUuaE1b_jydX~(97vc~_&N}|{DE49e21Q#>W zmhuU)%6nyoh;Hg`H)JUzbLe}2om&yn%|p!@#@8_TtImpe1N`+eI&6|nuKc7?%J^N= zd5cqz0r}30T>t6}Sb*6BwA7a!7g@}pu>}7OiVU!xwk&xI1FR)u@~0hwBY%F6;ym<& zkd;p4pEAc2kt~1TEL#Cc#0)gkmYDTJRi9ltCg+nLyL6SE#Yq+;xGX5V%`R;lUOO1G zt|UOlr=@j_Ac`$@cJg1Z0o${gVe>i%#g@4IHGZ!*A>wtXH@0DGL3uE?ZSyRj_)lzl zv~$$o7&f=+z%&6ij=~$-N2Sj5vlv1?OhitQsb))k(o1Ay(#38c@|l=nTRWLknRBwS78S2m3|m zNcQBG4JZ=)cefX5r@!gGA<3p*{S8<;HwMgfPsohIB2egasdUlS7zoY%iv6?a2Hp=( z;Do+rzzfqxb_!kvreGFJ0Gzv)$0xRaN&+u`X1sPm+wDIWVg0x-s$a`gDl$Kl0aHEt z=7LHE__;Y=OZgzmDZ%5>^ArWFZUtXc=DYV>=JpW6HGXvnSUqMoF-dSf*E|9B1~#BbH+N^VfUx zC%_54yBn~9!5VMwg-A1xD`oZ|C;-rcwKrL<+3k|~f`Y_cW#W<8DC;)N;}$n{;{9*I zAMsh%RyIWbkQP(UE@xdv;Df<N@CtqW3F zfBXSG*H3KXTU`?wj%XP*Q$~db>_{cWIZ2%Q1Zt$%O z5?C=UbpJ-SkdZdhx{7*`lA40sNK9R{n2mowIO4z+OWcO-BaHs)HxOi6a5$T^Dn2#m zzS@CRX}9eP7a!;pM~f$(--$GaDQ-@V{Cw&LnEx}CTP+&_uC`3K3ZpIo9`P>Ft4E32 zuVv{Dw0sByatQbs!7`u77mDZD7!hyn)!*0{k>p^`IPm$D$NMLz*-RNCkY!1!|FoCs zbCU!(2=OC2wp>)S=@#@Jk*m_NPS@jjmjLIeH}~S~GOC}B_~Dp0eMp)oKA#-D-qp#4 zSl2xU_FtA@UH`o>gjUT@PMA=o}Qm9x+P~o=FFz^%(Q$smeh!`Be8BAJx(dQ<+ePhyseCsK{PQsrIaUh>0ZR5Ra+F>CnGQF)LH7x@}l3# z6pJ2fd7NpBuBy$Grk$!ob{eRf8q0Lbwi};1_zBtRCuq(;Z(n%(&$}VOJGsPA&4usS zu%`azvllur|K@6(F}D&HMRh(6qn6nwm%${Mi{DJy$lYS|M1W2;`zn+fU&$kPDN4^qJajubRq+Hfb*Z63K=(O&jf; z`5V8Y6j|D~9lz2ButP%pNdVJxU3ua5QKskmbEd!NQ)JR+_mwY?K$$VNlFCk4RrIyy zjuqX*$S^lWXGyY5`rNIeT&CG0m8H-=2AOnD5XDFct7!F^Dm^UF`95SR(f_p`bbU;|8C#UHkhaLOX3EZv52twZLywmeIlIcg0@ix9dCIuaEsTMk3o-jkGfgzKmJGmgQV z1$Xn=s5Gf{+gGwtX|dZ)7qY~|#wvufHDG^B^c>BGj5s|3RbeYf>&K{rW?KJzoCICY zA-cprwfC=813xa*j$riA=nJ(hoPh76h~D`_M^dXw_CMf#&*uQZmYtO=0AkuQDRPSk)>+&Ag3Sp{)sEhp{ zVc!APRI)wJ%uT{gP|*u2L{y9ovC*3qbrtK{R@ZKjAW@1^bg?ZW0wQ)rtf;6UB8W<} z>+0HjOYFV(-u-`b&OoC3{@?F??>&Kgrk#GyoS6aL618~B(UF+`wc!8JDD7ukeSSB_ z7LQEhKKds8*`*cC+=ej zH5|UE>^XnXe@%zaOisn=_G?sQ4%dGzf>s}EhWf8X3y0e8@0s1_WD6L+*J)lQtZ2^s z@JjacwNjTO_m3KT0Sr8z2f-&Q<$r!$HVtd)(dI>ea(@+shHjnaSOB+f>$d;?JGXA# zSF|sxh1TuK7m!eLfAZpZobIAC?k>E>A;HJ$wi2g1?oIW_{JzbU=@15v@mtiA*ZU5# z9%0iS9fsgag)jcbCFVsFec51i>4tQkZ zQtP)k;I*mCWj|jpOKwhR+4dh(5P1mbVc94r)}rn7H0cSpimk{&D*gQpCr5&f4@9j*aiIiD0<~dTTBS>u*u57 zD6ZM~MR?DM(*9atyDks;Ws>+Hg4si*E7RxrReNGew4H&;9b2FBwbvWd*!b$HZ>B@~ zwGuPB1MI6WH(K!*iPnBKohqpSA06)8D4f01Y~v7ErHa9}>vi;3QNZA@gIb(9G0Xr{ z!C(>oI<=^E*fWeCGVWb1r+Xee{j#p5Q$r`*cIZ85)DcTe>EAm2Xdr)TamM2Hl@l-> z{Uzf~c~agF>{-u!?`OK8CwJ+p>wxW;k6qTY;*1j*f$q?4STGpt|6d(~u&QYH!Xo~J z{J@^$-g7_at-DPWe?s2pY{|?(E;!4;IFOTZ#t_utC_}KxxVn+gJYJ~M%J`ulKOnCA z)9qReD*oEzHp~jeG)~@K$S!z4nYBWWW6vh%Z}PE|9KKYlhGXAf8$FzleLLw!xyY{s z#$Dl1_Z7dj-0jlVBfPfmnKycY+!N}ojcbihu z8v&1D$=8RLdYWSFEP(y251dmQE4yYS)l5ys=g_W8jsQ%}##_!TO#FX$$z#_PvqKVw<6g zKWJ0`#}zE-QI|aXi{D9q<3>@rjBN+Mq_X%&adULK&7Oy!-TwNPVw^eN-T|=kkyK)X2;$EtzZ#Fc=F1+#UuxMig9}Iu5;J+@uG_ zopSJ4+d8?XibHpRbz2^0$={yB?H_=RiCZ+HhYcQIz{7y3-hVJ-w`SQ^!w$?iTwUi= znP(g>b=Z{l9y1Ot?##XN$4Aq_G<;>^L}ao19(;Nu8GY~}w~2-ybvj?XIh!AKx>LAo zFn_&4Orp=PVJ^4e@iNmiVCK3XHqHHb8ALB__jMQ%yz6&jy;Z1R(PaYuT0Z~OCIH;#kex_rZE{$M&>0+pI=UDax-rYH9+%Vfx?`P{&Jm?mF@w5py^~^*IIAakoBk$$UHOc7@JO zxH`Uh#8|F;5B6stz3TYS>F8}rgxdYdeyrcH=kAG9O*zC@0Baao`1&r29k6o^fK3~C zGH3f!AoP}nkPx&DJYG5zeJz)h7ss7Kg>gM^aXNqR-raIkvsGB;edib~q9|=mVK_=v zhsP7D@%pQOJ}(zaFao_QZ}pMCL5{J)OU9e)b}v8hHjh6e_Iu{J2t~?kfR}#bhfn`#nXeM zZ|$kig|*U`>ifT5Fd0;+O=#sk4Nbi)}c9*(LHf%G_obX!UyLGay#x* zhj%qFN?-gMN+Ka(ehKgAKUqyj`QfcLk8=OGKMRkAB3D7k@^r$;>KRDKqJi~0w3u%y zl+;3I+<*I;yDoUtjNig*cJ=N#yCx&X<2L=<3~)XzM>J{0-ON`h8=G)9b8zIx)M#A9 z#4Rs2@fY2mEryV{*}`sQAvDqnrQU?#qQ~Z&<@P}3wUfB9> zY}$NYVlH+J3E(KrdtlPs3n5?7FMLYCx?840&QE~scdS1NS20@aJk+72N2!S~9s)p< z1(b z=B*}cPhzp;>aP#VyMG9tRGS^C&G%wywAs`0%bHGZ(ButF8L!}l?)44d^lrM}Bs+Kk z+p_fE2iwl>S&rHX)j+j(xU;|=Yo{-~fl#ISK=BiI;&*(qis5OXk#jnSSR-HdyKpe- z4*K&6TUM4w@|Hl2554ac#=KDdr9UKeZV`@G8g)X5BzxllsBy@PX<-b4W1YsKWmO2;nEyfkQSLg99 z#%sH#)1lb<7+yVr{vt5<{Nc-*JVZC5-Jp!3aZaYB3*M`er|Tb3^GY|9ro}ijy3=?Y zl(XAKP{k7N8}nu~D*Ux8`gY`1ENxo;J(WLSksJ_I)riUDErk$-It}>}%rD&CX8XG4 zXteX2M{J(Jt9&xzJ6Hj9^9F1+S|1&f1ho9p<;O1Q($R}j`9O*Z*M_~ zt30jMCti^=x&HRk-yKM5$l9_E~wFYBHen zkLb+}{dfbD?#l4s6~qCc2jzW}gFRR>1!n*j0IWPq*RI(OoIEH=3L3?eYIYh3po z>yXT^am9jP=qM-Xnok~*3A+c_1y;j@kKiVzW^_Q!D`=vp;$6#&0{X;0`p2}LQ359s zrgUzwn4fCPJltg6I?N2W4z20KPqiK22=v~)Z1_NaNN04P+dDbECs`#Hb9xU@eVWbb zow=#BTy4gKFa5>;`8%&dlP`}|=MyGu4=+NdUHk9vIvtj!gG}@UfXsP8y;@*d`oHI4 z8jn_w9mbCX?S5^O!=L+nYU#RAj^UK;p+~~RJrP*_TnUL`LGr)EI2R!|+w75HuznT23|Cop=XyjkwbLVEK@3s{v z2klEU9TF&kjwThmjdjJ7dKeD_?3SkU3w)oN(w!>-HlU?^&`wN3CY=LMWzMUrO?X|? z$=lKS%~1k6eVN|m0P^OVHkZHg%fFw00ZFaVFJ#x$-DZheFt*kIv})B3i*U^@Fr1aQ zqQ7IInJEC+XBO3?9`f4MIJl%Cds@_O{&Ih`=y#l7qBD=2UepK!h}2fu@6Y1_ySQXX zklfpxwCD~-vkRVeTfoyRQ*ITH;cpcrbsf6wC#TPu;zl+cD%hOtYj}msG z;{6&2C4b`&r(|;LQMxPbZ6*rBV)?D6Ptkf51?G+JjMn4BOw&DPjX{xbh+1f&>i{kf z21Jm^7RZS@v9tZd~foVRIfH#}b0W;H6znS+kX* z3wdTol)VC7Nbj>fR&f`ycAK$}xeF;Da(g2|7xKgY5|iG5%aGd58+>~Cbu)VgX2?$3 zsQL_7Cht+CJCMjq z1zzxQ?G>o^W$mAR;r`2(!naHK1z2tNrB0iG{)=PAe8+$)O*{ zBik|iw*0L4?;Fg%wYHdB!n1E{j)6mar})+kUK+KgzvI~qw0Yh8eSCEkw-kE4uUMBq zr@A|Fi)k|iHXN->S2pBVCQ3gl)Nba@HE5H2e_{9@zy9E(K}fO3&mauAxY|!xWNqes zz?QP_j*oeEuT6@l9dy5E`(k2$z^ud$U>n&z_!5ZT$C_g$FB|?YtVYCC>gRX;Dk5fD{@4*6u)OZW z^&91xx>T50kKY>QMVvQ@@B@gtLt6yS(0Q0_R2AUgr5$qTz8GRkFW&;#w(*IBp9w(d z{VTw?-5;yeTj0`!A20XvJXX>y<^}NZgXc$^S{U=wu0Di z8eUTQXX<5_ZrJ40BJcyqnatx3^#SQaqtK3D^J^?tqhdwE#(1*(0^pY!UE#!|1$Dt$h5L-*Rj zKJhw#W^eBaU)L5`9kKu8+VZ%g0T|=>W*3SVR5xuk;T=iKPVO%__PDFb8bIP<`2h!e zr(Cn_D8Lp@YH-gElTsHm@m=bDHIDH6f?g|2)!mU|gZK8?twuexp|oiXf0sHxZGXAO zse|{M4r$jbVy9V20*oEkd07K)39%L!VE6Rbgv72liINY%I{Hj(&eMojcI}b<{9=;r zbhjU)&^Y9rsU3K_g_(N-0P9|~s-efnQEBe=cLXiMCVZ|4B_B2j8xI@4JnxAqgK-F$ z(Q-ueoq#uH_bLMH-r;q-%P<3o-WR~ueEHOSFUC?QS3@9dH6XS(KSFmZuU8_!QTfa2 z8JXPf^=w!0hTo`sb~bQzvb)lUUwWXP6n$KUtbDiiMrZz_mCvhAGi3Y*l~+*rJz5*r$yR+?t@jorwyiRT72iy_u-+4j8e0J2x{(KUL<;X z`L;YU`g(GEh5yo8PS& zzgQ^$0$5kGD_feJ$&G3Hk6E%EQ2HXch`4x}O5%cX$9hxc31`onE|3TY*w~iuF2BUE z=KP91<(lju#Mo;lXx|%_TZ;(_EUcak13rY3h6XbuA9&PZcgK2?%Zrui! zT?JztKabxF*w=G-7Jr&6B@s@`9nNM48#*UulWK6n(PTfW%USp@HEqQw7+=pjg{8F5kTbupG zFU5Jj^h5`cL|BjK$ZC`pz?E4(qdSCm_aJJI$Du ziWs|n6qJuJc+>{Isr04Dvk`wZukXmit@);sY{bWld{b$~i52DXPFwKC+jP_Tv^{64 z^cW3pk+Da1;hF2u5gKmX?ytP))&}G%bim*W5xb-JlJ=pGWos4U_zH7Gsd#b}b3~|H z{?Q%uG%MkH4Dr^$rTcwkc-Zs`UOPDZw>rW6B3<9gll$s9*4lki)xjJ50jhc06trQ+tiO&@o}bVZV!KJQX#PI&#!+repkBMi010UHYl5R zU$7=iRSUOXp#}pMaq(i~8CCE+8D1>`g9iV0zU7?*u(ShV*KEJMMSF4&jwSYMQu>Am zSiAhsMGwRPt6I;6-FOkp;o@;0n_z`Y+6&nE&gknigFmQTtCHJ6UL$^7e`jz8##)2? zcc$O;?6<45$&&hQ=iPCK+7s0E1K$F!U1;1vv!^pP(s(7 z14KtI?R$ae`Re(*H+hKq+;+s~jqNcfSc%rR<>yZpA1W>vggDT$6M|okSa;L3hkFW4 z^x~ekN3=j3;fw&b&vL_s>sV1cJJYjHAr=ZR$D2*j5drta%Vp&s{ZU}d-tzC(YwFY& zM$^dmv|v^l-;m##+K z4IS{d`Cd1?xn}37MJDqHW4Gv)^Y{gN69%>EtNZ=<&trfWQrAWQ zg+BV@8tpgtzt4+??l|!y=F>+xs}{)}|HK$CKMBm} zg@2UC`CY;_daNkqmuNjodr(jdD+s<@H&F72489(RtP);B19incP6v(Q7dF;Ve;^_z znCA7_;mWUWK_8<%`_Vt^SunrF1(i7D#QbvCEY!I}Wbxm_$SoJP{4o_7cJ-vs?+;=) zoOKiS;ctJaXVC#U&*D<^XFO-?lH+jxdqpwo3g=X$Ik zrYaJ!RHDU=r+Tcd&7nNmHbfiuf9VNMld51bl3JVKDD7B*+M`fa;p<%mBVI{RxSc%hRH|ZOaLpBI& zsX$-Ias{b@xaLkuQPO3iCWuHjhFIhv$d^8 z?NA(4ULnWmJMxOIrW=F>bcOJZyrZAUBl?4Up$lZQ6tiSWicPdoAVg^`H4)?UhDZvF z%A^XFVASiD+uHhBR@ou!vy>~7$Of88Zqak}hFq|e8i}a@Z9{BnRXeJ&SFWnCt+gAW z0zD&3q{YI1vO?HN7Lg886LHP^VUoh48mUh0pySKUKQ>dPD>7uts&yo4v0PX}mDLJxD0ImjgfL@O``dHs> zK3yop)9>^%c}~B=|2|SGlj@1!^@g3g5@{ziGCnY=m+wGej?APO^qZvLzqKn2~+78DyhZkw~?N8 zs0L{LTKFNTURh?#B}Z}B^3K37b!k02s;R8Zm6BaGGDWQ>r^y!TgHLgrqfSUswMsl-x?Ap+Q^P-Dk)RztZbz|Anc&jf)Yt1Cgya789UR)c2pxNQ|o=M zr@mR?ia48=lGnmHHoF_UyF&j>XjAC_cAKR&Rab>W?A!B`-GJ!LXmj{>)#tfN^;L0; zQQ{T<=0aV85)YeSluM%gv~Z9rZz}G{R4)|AWs-}y@6ABy-;KJ144tnwyP4l7@`=77 z&*%^Gj83KRD6v>fR|vCck|5O)7jstgpq_SAQ$;yE+fPI3PO?{cOg;-093-{4qhKg> z>P5X_Vr!lE+pAUz3)rOJ=HfRW>I>g4HacmiTBcYjlRU&Tsl(x$A8lbrHT9Gyn{Kbw zWg49-tRwG8_oxr#4ak7f+N#PdI!%~C=LnLQc<(7PQ%l+k2!Gk(YojiV+*Z~v$Q>%T zd`F(pALJ8VM3)IO=}dvikmM+y`8*m%Yfak#ag&9$UYhH|6*91qf=~;|QCyre6bRUs z`U6CQm_^iwg&g^5VY}RdN)5%gI~nt|BkgGiJF2O!thn6Xxk2@>mFB4~lLh2(#Z2Ye z3Z(`;{5jO;Eo5O=QV1{4foVuLJ4SV6alm*nHR zOHIUtbwfacyV33-Yx8X{w(^@TKPYr_XVOcFO8&1MGw>{c7E1y|9AbwcH^8E}tc7PLB z*KRqjHDV=OhqFSCoHBk{`cD8b{s1}AJfrRrY{N z9^#KuQ~_EV2vYIXWu-%xY4i(SN8XS=6B*{;kSA1WUD0L+oeru^swE!fiem%~0`|FY zv(!r6YCs{GL7TRh>WPaohro9o4F;w9R$O1xnOJ-wQw0mMjP4Pv?WI~`$tI-UNE!mY z?5-VGUEQwf{wiOrU`;bJM#H@IbQH`x-T!t=Rk3QhrPNSdw>}s~7)?V#HqyLL)^}ru zf|8?T7TH4nRtTb8auUxh3jx3|8g555cFF^_&bM_grbmQEZQcP}eW1(eGC^__b03BP zks|0A)W@w-z15=Xu5eubkfzBbwYcc|Xn+_?BVj^kTO4nzx;&UP(P$vg zck#7C`a)AEv5;zsMPHD3F?1X(^>ULnN@*6Ihw4HtChTkvqCTGf1wGGiAJ;)@*R@Gg z$w5rX917AMOD90jMZUXjr7q3mR1XxAMtuKn6ttX3CxM=S>hwcUud4jL`hLsVR$GKP zxuh0TPecIBWI6?Uf7tqmph}k;ET!7w`|krKOA8C~H;p4Owe2+$i1doQqQzt$Gc-Gw zca}s8flMVdo*?HnT~$|-E9cNfj2HIs@6!lP!0+jv@wFtmaxq;1yaL}X$aF#z@%zyV z^D9d$Xr@4j6d)FT877GqHYADAWCDK58u^-fkl~vSNTj?sxXTJsrTm&m6R4U2uUGyChMxI@`sRDRr9ZK)$(8Kc+GaQ zPzbt7BnL6U*j^GXDw9+~XAwZjanEf;HG>l3{i4zQxxgwDaQ&zo$irbs&(T;ny_9*}AGnWHn==2j{v;qD4b8pU?$}&*N6{GAUV@NuQDoBGnR8@`k|J z3kh9>_*hHdwvq&zp?J!){=b`tLJw(#F2+T~?p8X-(*p9Eek1Y13`&WNFn=>A7!aFI z=n?{A_SiP3mL^G&E?Xz8rNrWxELo78#H%F;x0KLj1k_YY`?b!RPx2JmYGEloM6Z$$ zikmXYQT)C-1cqKt=n9;CuH{RW+PA?S%RISfJ;_C!dpQL9T1jXIgQ%rU^xaa!Pp(`* z7Yjeg2l|P;pg+hP`V5qYGJYG@rgFK<@$OH0*T%lIhQe*MzYwR_L(2WG#-lY`|Te%Tog>XsM zXMBP1Lw1hd6ST8fryGt&K&QEcZo*Etk4( z!clTukQ~Har#gYWZ6S0k@^4&+>yqk+aGgqC;=_-Of2)yggccI82yM(7%_^ec1nO_19WbrjSjiDHh5kFY(lYPB7j5g#Lrb z`dD|ffA3cPm(dKty80QCPnSU$#rU>P^LGq+L~;}_Uh4!sA0YG~_M9UwY^-*xc~iDP zpcYaS@%|%(_?OT_$fa?$F4l7+7VCs;YC*rr7s~R5Z2Cf$!<0_OmjGa>!-O8e{?bXj zs8&^;FPxPrRFb3k4_DGh2|b1oi49lE)QwvmBU#jch*V2F0T7kRaY9d^TKev|O_U00 zsUT!?y>*O-x5va>79;54CUu=N^gi=|{iP6(xPsh+s|6RO3t zgq}mzyy;|UtEuDqNH{2eAncP@v6r00Y3~NWEYA~q0W}qK98`zN45G|nJbseQA}UMC zQM|Kg5I|le^b)S;XycL^(qhFb8KaNXK)g0*IMBvGs1X@*IW4NGIW3zhRIog4xlF!R z$Y5|k{vBL4=4FJ-m2GxZy`*o5a+Q!lRjG<4GD#!OPk+}Ay*(_Av7ZDW;OIZsHXl4rdW^81W%$+<&ek~avw ziOZO4o2rmb35D``!UdV+ES}#q6uP`c=xtPO&#ULQkyZ&CXkTyTdEpk3Rtw9ir9yHP zlZt`?_70(Uv9}WE+-6d?u$nGs{;Z#P_!6q`dxYL+5KhXAl|OsA5sM7ELSV}H9eG8G zU_q2Jg-VbsEi9yK2A>W0ih3Zan~ECHu77p$dEBtKTa`Ac9AR~IV46# zRC2X^ygn#8L~R+a4bu(NM)DtY;Tm~W3yb0Ynueim~6;0& zV54Hz$e4hQ0`#LIwT}Lwj(xS`wV`?#w{km88&xaAI>T1ubVC*!(U`zT-^$vtzp`K8 zFPX*^L%t!)unjxkWK1+pHKu5sR1G>ug=zJnFrPjVq53dwIQ;Cd57I`3IQoZ%Xv4L^ zu`uFce@%5&Rl`#L+2XuHI-GB`e=2!AU4VF+EMx-jh(8RVJjQOG!0|2G0Bjv zkyMrY#02a4Nd2`T+CYtss)`{C=bC3sFytGPjft8{stTP0!yUVZXhVY{Vi4V9{244@ zG~bxwXxM0sH>Mb;GT6Q$dR?$%KW%8J4kx_IpUn%=XiPL@8P@_ucf-A$mY^0i!FU2Vk!d39NBYsoAVUwEEE@ zj=i-}A^IRBvNlu~qN%2`MZPgkI))sEYvXjsU&k~~HRKqR4V#!C_0@*y!;p({ z?2g*#@!AkJapQD`d{-BZQf1jaCQKXY>cWHo#!W&-%>wpI;XfLu8xswM#$=e6y{dY< zn8*-qcuY_b>z%QBcvM78q+U}?mCb^;7_aEY;YmqygHoF(~-{p^m+^ zfqI=e*OxMM7^fRHFa`y@g^tyRX&GNbM;k%EWFh-D?Hdvksnu)QZ>VC}Fq|@78ILgf zbF3yXs+DuzCgXHNKF9Fyp;|{aRQHGwZCIEt2w0CzB&A%qjS0qSCKJFgFCaMi`{3B4SXSya7Wv#n5C|nPOEHz|v)nwSt+W*Wb zTy-(F^$!e+2^|@t4cC`*3MepO(U<-pS(}Vg4TVh3vyF*{97og;ppUh|Q6RI?j!Zvj zBc06@ebNZ9hXA3B(@UZfC47I#uP{6bSAlmtxV>6$3%q$ z=^eZ4LPK;>Q7{{ZUeHkGI-YS$WmP5rFnwg1Y=>zXmm(U<5o(+YdI~fMtec^&XNW#D zFc$c0E7LWMbjBnm7=2;`BVzPgMs&`dOa=@EjK3JW^w35{vKbktg6_#F(;%qo*&rPw zBDK+6hs0`8ac8$fWcXlH>!pnb?b|~eWD}8rE%dmy1T41DVDqE1&2TyeYt|mW@8#k z4I6mB?X*EUofa%ZRyi?^@rEp>I2mqGNF94=qoQH3rYwD>q=4uS=vSBM%9-!C!zSFi3~YnaPw-fg#tJY@E)%{vPJoTRSQuCQRd~s%54M zP^)AbvKfU8#Z0*~h3y{|Qf45_rNTc@8yKzCgB3QR2z@5z>*RyUE<;nOV}O=ns=2Bu z8cA430h5<3CNX8+U^zBQ4O@&UhAqqh_KehrkI*q;(nfL>6ciKc=s!U}0mMBEl|i`+ z2YQ)}?jPDTKpR!&r-kY@E~;jRQiek`U?$n0#$=7*2#4lc*07o_{`cq*=Ii00UA2+= zFt(iE19kc!t(nm;=0;zsvh)vSX4L#6>pk93%n9QksUNG420`Eqy~R*aE>MAb$AQ{N zt=2>u6J@vf{oHJ0YU9{oaK(sHBl^GC?W#-3(dau$j<-65}80*g+T0d`U-DEpv~>%v^6`Z4Db4 zV{pf%%wh*;4+_R3^ct+Fdaq?t3?y`ev9ZD5rw!&XB9aFaGx8>Np# zy;Bw~AX{Y_N(}{!KQL54w_XP(7(B44hEm5eGYx8ospmf0V7;y(4BUgULS&go2y@?D zKJ!h6tzbB+tEz%>4UZ1dMS@otppA;shMW1Q;04EnI^ZJIUmH0V9gZ!Atn#4HuoazN zV+xz}Ky56Nx=&1?77+i7+iuu|txCArG!d<%Hd+V%UEdIGh(5AhM79Ah78}-cgV85M zJ6;>DFLw~~0kPn(_y;+5(8p>cAx7up{txZLj2ahR@D24Qi@?^|R~rjb%$%Nbz6O+( zQP5T;m9sU&`2Zj$gD*ECoKeu&+Ni3OSrOn3Ft}y&FNBmqnIqCiJ33@MIwDNx6_k0E zQ(=u2RH_aTp+;$gwGf|T@S4Pm5)XnJVZzEZbpU#X@fAL|E7zFJOkg>d z8IdEkqa3+2)g@wr{uh@E~xF-L+96+DP5la&{~LR88gV*qiyq!DenV^8%)o zJ8$in$s5h15T?>iQ8f$jw;)&j9u|q}__uJKeuADwdH+*~nmETe-LMv{fyotSp=gBha<6)r!}DOw9PDw?0H0jx|)%WGZD~Ow_PY zeYh@4YA6bl3TvnYK_-LEtlLg;9W={rmQ>sTnm}d0PcuopY!BT{{3RDrC8;drgiwWG zDHCC1DXzoKW^NgDKPjfO=`*^DPNVNhftae8XO(9u4HauhDlC)|D#$9@QB61H{YF28 z98%YASnnnSQ|V{gEpV=Ep<=3#NI%IFW%GpDbR&sgEI%M*2x)Yta6&e@kQ}1tgyX7j ziZPu(%BRb+Wd*{R&N(DjYA81NWk&zssXPC&#{XmLYWawW(1=L2EIM|KPAvw;L`6o# zMC;Uwh)DfNeYjf0f3=a!!qwGjJ$*fW8K&DugoVX~>!V{ea+Tob=>pst)wEAcs8%1Q z4Ug4ghN>(T$8(vWo>@m)FHcXcyGEv>t}Z;TX{U`2(V8)3G1zhNTkCpxYPG&v78-Tb z>4J2TY*1eh7oJM-4-e9Y#zdLiT8Lp13|o;43aQE_QXi`g3K_#ncSxKUWNR(71Si#@7R9|03 zU4eHvELzFhT|C&T*gs19HVrbjz0$%{ z<<-C0ovOIqr!6SU|C!Ekba!!OP1!$6`%Qt0t{brFrH!p(FPHkXg|W;s1deXlzzrIV z(u`R#4I4NO*X|!t>ccA#_f}F>9jhNUCSpuXD9$@f7age|5heME#}-&hl^N<}6wpLO zs+8FYnp(=Qma`q*;>6dM=jdUpb1H*yPH{+KvCJ}?T##E!zT%4omXfW7oG2&}h>XaI zLSd;83AC=EJgzxSoa4opmKW$zt8=Q0!Vk+=mgngqD{IM3oR)4WNfwr@DKr!<6@1ug z&``6UoRXimvB;p0m8`9`p0W(^dh|Do7N>tpn%X_`>kM0~i}QmSN8nNS&35KEDdWUD;w_PvFMH4-YHvayIG z8)Vj!m$MR)#}~h(KW* zOOa2migK+ym8ciVXUgYSwrIGGSWDhwVG$d|mQhzmHcmA{U>vr5Qr_f; zU~ti#R~%L_oD~Y`q_c&!mnY#X53Yjsom0E>9FC$-;p* zp+8Tu>hsEctY6lrwj3F$4;rQqQcGs~D@Yd}rH_tPD z(~k^^)&&g<(*^0Z;luRdBO=0d!@^iF777E7WE0Q_G1tk**VEn8Gsw*|&^tIdI2bIP zo9}P_J{{mkSO50j?cLDsxpegQa@9~LRarZ4cdsBXZ};+co*rJF9lU<}>JnW3)!oI{ z>o=F5zPbg%*Ppuc{`F68zV82l@(BJf)PMW(_#X}b+kMbae*#=+{{!XaX+lp&kKa6f zynp)Y^`DX4g53Yx?SJRv{@+=9{f|HWXSrTp|DB@C|G*~v2~FsemMYa){jjL$Nc|XH zlvH2b-oLzzpINQ96;j-sCzX)kG%}9_ch4e&juC6gQQXnLymp_du^j7*p6Y=KWCuwg z?dK6|$y40bzr1Q+&@@oK7V~^Yh1@5j9+K#<M54ZE=xbTRC*7>bd2B}iN{~qXXKLe~vs?qAu-(#zlZJc`_COwamt)%xK2gx6Y zh_zHp{D*jOLfGf?0XI3Kx=}{O}4t+NaNt#ZOl}f zOGYdr){>KWjDggG>Ulw9uiP%=HSr65O6v7!+IcD+SJS_H7P(9G)=~rUID@Q1G_YIV`Yuaa$0I#GxN+6tE4vxrr726uwN)q~1-2KQX?zOM7|G!n9woFfZK`(32X zCYapG{^eEjY;rHH-a2anMmaY7MvBPj)qsXm48)lsS@>IMq)DB0%Z7ib{;c9JUM zB@*<<4l?2rnM?c`OPyt~?ojN`SZcX!WwXF$U3?}DK1y=PYdVuo>bik+&mz`!T1+Rk z+czE2RA(*K70cF%nfff*OiRfm)*EBL`vB8}{7!pxvHmvKQ2bGjUzjD$z%c6U50epYtIAVb!;waa8W~Oz>!To$RNDWXb{(QrotW zOu9yn&~0S=7BZeOMd3--qCfeQ4glZkqua_h&TD9%FoSL*2dPCVSwP>CEMhHn5>wAH z*nv>zEoi)zm+P*k^T~uQWHlM%>Nql>qNwXwUu{!qH3`ooV^)(fvH4^ziCDw_8@7ss zWs|WzKo87=j)st-bQs9UmZsSW6(n?WAz@uD1c(tNi0YuL!;Q}pw{bZnI+rXaA&pve4vX0cfN2023?ivw z6Ckz$#9vUH%^Lk$VJIHA}KAV5)x17Gy=$oZ+X^66S|7Q`Sz+j znMwFzfJz{|?wWNt+saVMdBQf5NycQ7$k?rnZ5VeR0nj8uk_nwb03(kprB!f_%qER$ zoug05*er6MJ^{KN1=tiqW)hmpU>%g(s^=>F#;qYU$4!k)J**5+N`YToI;M0Vlt(WOqoHBkP-ruJ`TWh37JRed_HOGxXR36uOOi-NciMp zvXX?ceop}C0>bO4S-*MJ*Q%T+l#oIu`Ke@LF*!{bl^TgB0XU72#e}9~zw@gcR=GuI zlMQ6t-+zwHB5fPDZp<{mDF9tUc)2vAX@c!hQT3*c)A$s}|wl6AK% zy}CM%>?KRc@X5Pi!DAI$G%fZk5X4nlV#FE6F%?VKa` zlL;ruKO~+EdO-d-2fo2IfZauSeXyXZq|9maxR%d zNaDyol1L^OGd|f*l7OUlq0L!B&JlW^GrZlua`l94=Ay=|29n+bpbLaotrk?l+U~ds} zo6tKbY=>)Yk*g%}OScP>(&8@R^|H)Id)Q!a>rs{MQpsV`!nReVRux() zl=KG?b&E(G>F-s)?_Uzc-P@t*1414W`iMZDZe_LoE!&BzxnwtqC+kSJY%+}u9@}UM zjjCwL(6_=1_y@FUvEkwg^ z*5(Z%ZwYbzudQXeL3=`;GB93tx|Bh3?lOQvK7 zr709h^Vs)(HRpgalS){3v8AMQ7}NPr0dOWIsg%y5m`C&dYV8-iluRgLqB3?hsc18D z5wWvo`u7=t&!%J!rE@9h->crIZMsY-AzjAQ^J(C&WE(9eQ*=v+ zZW-vWmjJk!l5|R!V3?fdy}yE=TSu3Gd1QEfwQHy5ot&yO&{qJul#*qXE=SP)Zs+C9 zp9x84_FT7!jAVh3kN6ruS5UH&(hLS#Updz!UK}_yg=xj1DI{<{nL~y*wDTWUyXl}L zGIB8ipUOvk11(okvYOI0*z&T+eCttOJv@3U#FqWsy2xacN|>IUSV%m7Z}CS&Ch6wR zruPT`2(sek!$FA>H&OviY_!?%v!!n3=9`Nit09{W>7Nyz99|rs5wbhZ}(lS0% zi;zWtl-3AccywfhJ_xoI^wBXvI&~G(-?Y*2Crt&Fs!!jht}dRQZf?FBrTq%o=sNn-i9P0H zHPO5ucNbSz4>rJGFTeCem`VHoO@3+KkEfTnCxhA5Nd4FkVFKcwv>sCO3x3#~D=X%_ zw?>%RV%FKVCFcEjd-yPz+QIqy4hXX`eNlkDIW1hhe0*FrO8Wu3YsE{U`i*`}(r6;)YJ!=o<(y+F1i1eEW%B9=`6ZA3wkE z6QU93ai?>_MROP*Pfss~XX~21R{w@DA5(;*6-s{Y2k_GX`z($d8FKKE`u&U9zGhSeTjDQLksLj7rRh#snlEsecjxd{)r2i zT5P-4>~2LI>w)~>n3und z1@wApeW=GR>}N<^VZLhn&;7Wv`5X+N_P8qcGh%9DsZCK4vZFFl#Ht zi@&TL^w@B(m;JutSnY>??dG`sXZdnxvXgfr+6Jdbu1L88rl9 zY}ejMb13}<&x~FNUfjAl0%5kF+&|aqR~RpKVW#~t+IHfvFbqHI>CRnTKW|$ziH|ZJm87DZ}+%O>HN1_ZvS8A8>-kbAA5fM=l z(ClPtCnd`?GetyF^RY5T^Fcx+L_|bRA|fIpA|fIpA|av@DxoP6A|fG@DG?E&5xv*U zeWQC;-`{n;fA7y;v)0U-nKh?%dm4+(!+yDs)){WDoH&8j^CwO&21`VLp0lFS??xHl z-+ieZmk&OCd!fjb*{xlFuZ-_IY>e7}{*~9~h)mtgeKk)IGlA+1)}8^<4ni~8!;<=4&_i*hb};xzt0Xx^DX8N2J(F6xWS zlG#@27x?knXCl?dEJ**2uf?*g*8bQ2I@jMPc==Kv`(pNss(6uEvg-Z8W4OK8{Qkms zZ>EWiQB0(|6Z;sgpH)-$zK|(0Q>*{FhWj$}d50_api*S??`<>r8IR9&%*?s6bz{EN zm%mzntKkf)Lu&h8k5iw1FEZ|v*2Tq~=IrvBOm!Zce4=rSblc_D(d>Pgp?-MbMB##c zQomSxJ7f=Ls6I!3&RQYW&+SSfbQjlN6TQ8uT^o%ql$VH1a@gjV<4$v9_(bNbFB?@g z{a0+SmvratWx z7OkIsODkSqCNk?o#f>GTi`h#e^Pg0wfe+7c z@sAkupD3F6#}twIvPijaBF{`@FTO22_`RmTEGIx;~+xvEDF4l*Z_5S5E z4WmWo(a;*=tSiSti;ANjJTl(3GPga}T3s0N2Yik@l8_9e1B6P`|P4D=osaAzdy*MkF`^j=}nmc7lny zO8EWjWKG0OUg6wtOqL|DgB!*ug$KFGyqK%5@g`(t78S$xK%Ir!dmLgZuXoHaRWFGL z!SFbQ>lrK+CEfWONxCGIn-Xz%eB()`(1RT*yh7E=n`Wx8beKO)&wwf9B*gCG7z=rZ zD#=V8oB)EMwdsqVY;V|0=*Z)!{~u>!I|@>G^%|WrxRX04A-Mn*9j9n8XGQBTn678A zbQiO8_i-fXrt?i1*~~WezdX%qtf(@DudyPBcnfuKA_#`ZV7(;CNl0%-<&`;=nyEt5 zf!eS$AMsY3N{1i z$Uoc;3tynSKE#^dqr0qPr2&=+$CC zmLx(Ngi0=UIXR6->b;{4$+JBs=7pyalC8K06xk1}R~=wTR4GDAb>mG*SOy$~wJY|q z`pn@G3wg6Lax`g#D%n3!2tU9%85IJtlNSn(HSO zv#SCTQR;kCIug7i7NZc7e?>&HXO@XXq%lPzw(R8=h&=(&1A|9C+4Ha0)g{Zh8FHUOZ+!H6tst;WTV!W0r$(;vt6^%X6o6x{;vpJrMHt2HLB>;Q@1b zx&M%>+Q!L$-fjq;yTRCiO1XxmbWe=p2mJHq@bF}NsRACwL@$8TH!X#%Z z=1FV@@@uyY3p(1LhRsq>?8!k$n{$o@b+;3+o_VB7h`)$RDs;-QRM9yyP)B>2=n750 zAu*N8q!C2C10;D%(e{04GH|K1)GSFMR2pJ}d9g zbTBh~&HJ@gb{_L4)3Qpd7^d~CtaRC5KsJ@aE(qRuidmI(jYG`j|7cw@Ajvv63^p!G z)7~wojlJ*MKEAQbq1b=~&f5kHJwBoeAG?MWF4amlCo3~x)y$8@@SzA3m$WYe*;EFz ze3&Bk!nq$gMU3S6dKo!nrj5niZ-zj?w; zoZaUy>6(jau=JG7YH&8V2(DftSj$OqG;V$z#Y zF$MlrD(WeYM+{MRO#NJkyNYE?Mhk5)GGV^KONU zOv)gZ(q^Y4jy!8VIl$(IEBE*Db3?AG&{}QpIb-Ef_{>0%w0U|T$w?j;WkdCS+i!(9 zQ2v977`GgIN-PlT#a{TTa~~hgUUiN%BthXHy)<_NwP*j&sNU*zi$|%0!k5j|(hHbx zW=)%?@MqLKO_nt#Byiy=*c`Bc7E=5(Dx^g3;Ybn`zHA09L?N908LO$+XhMB;?xYo> zueM;K+3_Z!bKHuV%n(Q64o{fNBOH51s6*3Xtir?o)sOAQP-|`uA!~|MNnWbOaq!`E z_fgV#efu9Y806bkTawS7A5yvq+fp+%5i9vqWrmJ=b168IQ?U8V)5B-cF+67>&sFw% zsTaqA>nLkekVyr`r)Ba5CXULt5>GS3SbcCU5*?kHX(TPPA8(wuH zD>H{xQ3yX{BFdIM03}-c5D{b3DW`+_g1`-@nT)%b z=&;F?2zEKbUMTz{6RmJ9rxX96)3A9m8*T6Oksy2v!bxa7iv;!fHBLr?+=Q;{ z`}s=f2`uwdH9(Q8RpXcunpq6 zI{W+m`~dQ=`#BE6srLQ61J!uf7?Wwtffi7p@je2g#%GyG9=3q0n%#|5tsYk)@y{K~jk1N4SVe9Y6pcqJD@!D<(W(GM4yMD)l6!qiiFz;dij=$FMF#pq2B&gXZ z(M09@#vWKb@$K2;DRTX9gd|L8Gg0}xr7NUB=)|{a<=u_V;^T`bnLUdyc0Z3Vx=6G7(xt~#a z%1%_CgRr#+8J08Qk~#4UN`WvsSUL!Gy$EQXkZwVyFG+#07e1n@^b8?YI=p&KXk@w% zR*qGz5W~up%maM&B#w<>dr=M}Cb~$gn9AYc4 z6=kkqre$oAxhgmv-t=9T2E>H=@|LCpnr&brj~&}-PA7`jec2%IBvf=A;Co-&=xhsh zDlE6O_k2ZHHwD6|S+{;cW>tCSSg2;K+zG*Y+OMu)-o7iF_x57vR%>rdgeG4%l?aw@pJIEVQTNm}3M z?Lb26#tvALc@fm@-`T>D>H`Srv#pbfF0%HMgA9qwMo5!(oQ1S^%KE!f_!T2JM;7T3 z@do!s(TidZ9^{QqwvQgKS`-JLzGY!7-NCOYKo%8ywpx*Sk+2(o@5h7um@qgl#!4+Q&J(776#OzRtmiQ*Y+Q{2@r#DTFnjV=*4gvB5AuCE z%WJ@j%-NJ8?$bC39b0mEAZBda2r?&pHw3@Ek(N=gCxS7LBeYn;U?>E-y z>RZ~cm^spQ)_-Yvm6uU@6)uS*{bsKnv7?!hVAxfc|C;okNSs~P7A+@qLwhi*%H(nQ)JZGLDAsM7VkOn;Fs!E{|BXM>e zRCPk3oPu!5idUW5E{nan~7R5oVjL}&ugpb z)T9)SBpu=lE44ii)b7)g-HyVYy@&WIBi^ljq&je+I`GpsmZyNe4z;{*{~^>8uEnF+ zZpKSeh<)-XB8IHTli=rVr4r5+AbrbS`bN=#=@uOg#aO@f;vwGW+mtaQ$)tHH5F*Zi z=W7v=t1KpL_eKJ)e2;((>x)3VXPk!3<6ff+lB+ymB(Jyrl6cKLCH}4y2EIpC7NGh;hzQ}{}rX2-JXjIa*VZ;LT(B9W*K{d+Jbk6a`_gl_ARv}feX_h zG~fdY#BVvw0}&Gwt%(1k6bKRH`E7{^Xq*&dMP{x^gOJx&QJ?>s2h8PJlLxHS8aJt_ zlvpg~;pEN{WX75lQHoM{lzteE7!!M}$eLVg?y5s#)t^I1!K7qsvYH~Hs}759P>+ye zzea1a>3NMf3Xkt1b<-zT*r@#%1};j2kSPnO(MsXQmONC{h&Vm6Hj4(BpYLaKZt;k@ zybsbXRBsf)IH#}RefBiQQMmpUf|?x<$W-FP!VM?jjR|b-k3xl28J8H6wd`Hfe?_|< zCL*NJI!9k~)>a6=K8ZX3QPlmHeg%5ebf2-C7}9y`ExN9X#lkhc9FA#)>q z9$Hi42&|KYL~K363u*LjV?v&p8@UY;5#H&xqPbG!b|~QpYUOc_wwlE#g)KP5{?)i57!RJ*}P=RZ^J$d$6jUt10u+5`m z?5IB;hw$M(+>6SI^oX$6*jiHwfA%45bJbP$Oj}BbM_otzQ9+r8mvmIGgdTx)<7Qcm zq$5`WkC@9l3=4JD>Ogz-5m;yE;XZ}B!Z98)mKPW$>ybA;I|A!oXB*pvxS*#-u>w{1 zh;(GE6t4V@8^C>torIi%%@Pu`Dush0@?1)TVT7DYNr5nFE%#mgQNCho z93HXt^RwM8rSMZc5_3~Az+CqTtdo4|Y6?P<+y)(n^%YBs%|j)XcvLCqGIZHX*tX){;Qjbg(GwYS*Y2dA-Od@6) z)E&>6+2iSgWjD`Q${)JtJE}t^rI)8cpsR_wn~=m~*778`awm!{n06bIsoKr3n~k2) z$B&{g)j3HaoHwmPI-Z zDpV`8sMfZwZ+}6>lw3h#>h$BaG{q=|KQI#QQlb>!wuVUV9)AZR&GLsp*5ptrpNOH* zmR5vxJ7uV-6Q)7vGI4?&dW_ohq3{xor;fm9|2-&f_jV(TnthvWNLVt^b))2h-~NrH z4CsAC*5<-dNfnjw=x-z?Wm`?Upp&D8rnB_vGakfXK^5q*=(M{1n$Duj;fh{$*79#4mxcl?%$(Nx)wh^U-Y z#@33@N;z{I5vh|0Mrxe-D1`E#5YcF#=R@a7sT7q^*n#T4ePX{f!#$Id^aM#M@a?nX z0R3LCLpBSKY66)H0da`WFF%Oy|O7u zOxx3J##lI&D%0@IF55DovHd5(nLja)5V={;YA3Q8T5t8i{a?jONb~L-RML@ zGhylU<>K&l@hU2&!6V(74spjJoZUTC36af6+h(sSM-q|@-#`>B6)kFdfS4|mN(0qr zc_1a#U@pfq=JHtmEFD!?259T1K&W($?nD>TCv{|pTys^a6v}!Kk}$N zqjU@v^5MnMm?CFYND^Fz7+AUof>}4&x#Ku5sBCnp3khbIuUW<_g;17y9E~4}stLqz z-g$@wI*&UEmw3WLo}f(jRgZp2TlX7?1TCF0FS1R0o-&hHDcgKi`o?a4v=ZrruMiq> zS-r}ETqKdmZIZ>fzL-T9i%Tr(` zOG>o62g%8vBzF5}OZV>I5OH;4wNhNVOI@jO0I6GNou^IKX2LcI`9eIU_!c8s@+cN; zr9h}O(SP*>A#Jv8`ux`K-w{PTGT=L?ly0L+!ON`!MW{#m6)%q>hEFa1u6;d11je zko|{thTA|IOE3X)BB3O0mknmjC1Hqq*_4_AAD)q{Ntj(cKAgvAZqlLOH%jMg(3EK)^HQfmv^x+^o;e8slR9fj5%#k^(3Ze^~#WeOoJ zzL;-|;y_Dk*-2Q>p3EqPZ_|<1_0#Ohl6as)KdVCr;c{j%KbY356Wz$nH7O7(?lNa& zAsMM2k?yLQt5YC!%!?!4sf=?6kc@VZ9(O{Ku-86eK9P&6rqq4VO*M1%D0K>iNyoWg z9WLf~EE1+>0a+XmCn5Yp@ho(O)Iu4Ra}vTOF$Zdqn1a!*Y8AU)7&iIcDetgY;Cm$I#r!FXE_Lae?T>p z7J4LO_E@=4j&g9tGZIH@@$n>W`TA$bmddjz^Jyx{w}4FVty^<5l>A zZA^~`k5Dn$Q}dO?Z(hpqazCLP0bPMN6%sI)7P9Skq(|ShWF=Y0&UrpRBEBCOLP(Zn zoi16I3%lU`Pxp&YH-?bQ*6UjG1KHMpkdRuB8$i}Edp{TLP5B2mpCV?mG}f^yaS(or zJ;|HXGBrX){DSsC*c4{(p*RF2PrIpNcX(LCD24jWle```rsX>hpRpZb#{6~dBwA=r ziFMT2{!s|WzC%QlUp)(wm%SwIX{9xtL`(R9Oh;8nI{a_mvNUkArBa%HL{hr_`&c=z zc`w^5y_!K%a{O~xr2Q>KgYRQ$UZta3{2wRz3ARji0=&bEK}-m#rS-Wu6Q%!w47zF*XF%6~ z@A$LjpF+sSM89DzBj)-^I}(EtC1_4mm&=Cz@hGd6ge@i7+?A&s$0Ft@8Ut-lObI{G z4teLhtCFFG`rB)(X02kIlUXHrJv68$VW}Y97NE>PK4OZ!BRy!~^!@PZvP#G+MNF$# z(rA%Mf)yfDaUL-Pf!$8xo=!5bWs{?D`6^O6Cm_;A6`BcWAQG${=d$Y?F}F*25AU23 z$eL?Q1}U115o{3gv9m|-kaK{#=5BA zj|M~YA0QF*j938WB4j>BTwGw5tM~iSAQ+#9&B}2)dg86T-+EEaHct#x%?S@$p8}zW z;dgN#aR7N$ty#Vx?M(bvbj@P}Nbwe(n=-O82R6==-mrB(K?PNg9+at`Cn2Q;4LvF0 z$FL4%iJ#^e<|L$SJ;evLRlYeu@}Lh+$m-!R{KiJQqFtx>cIcZB;sWKtFB zKsT_PM4yTiZ1oRFQ1R%TF?=jAfRU`JP0Z@yN>&Od?;#{_+K`@R-6@6L?FdN^ES3*9 z)n4Xzckd&&dgPhsNoItmK$!Siq3RK;mn_pPIa!+rbB71{8cfugw6J~Wcl@L?{9BKZ z9^G0|GL`p?z{Ow8Vex{C(9I)O@+ODkF{&o0l>H8QbZ};zlkodvT*FT3Q&b^Ia1NqD zNAE-NrsuXlP=n`=srOWQzC`U3!yJWh`VXXbVnD1u3CJjsB>^DG`B(m4PABo%h**~Dl?Ke)=r+yVM zTJozym?$-_X4}hCM}K-qOrwv9R_y{UvN{_!1br+n=3<+WCdFg&w56jfF(I{5xO*2F zUFbQLED;U*NZea)`?-`K=KH2KyNYkLSAHa(#65hB>UPL$6!Ce3T0H)Bc2xH(0K17Fzz+#+FSZcdDm{9TH~f#k_5+SIAAJ8nkV{@MG0erR2oUADRcdA%mg;L(`fX~ zN%I4xvEi#BWOeblFcO^1nn-HK1KUoc<-PwUwTiv1e#c)DbCYLGSq^Sd&gPHABbM#E zkeFoe2pJ8R=+a#}sI5;s&D&lvt;t;#mIdEJ9F2T!OxOW`8j{rP6{$s@XZvP$9YhKx zjjz=b7loTX67y_V<(@{a7x++3SoKJg&eg++$PLW)U@vR^r45u5d5E|g(B?r^nLGT< zv(>#N|80O&8aWn`$QbYf4YQ(G)`_BO;tGyo2BlS zav51v?R`^+s&a}p&>ry$@O9MGh0cZksztGI4x&Iu=Uws2cj^sn)Rf3Ev~EtodMRDHl5aN^mul7SY4)c8GRQqIBV4@D^jcMy^{{-G{;mR^)v)!T`zdNgrpjEF>t z@xD?he1ODMPl(ndi(;uVY!^o*;NFcLE{ zUrrX&KD|!bBHOnIA&nDq^=ajvhD~hqL?K*GE#nQ!n3(KELK5MFY0JcsswJ%qMf|=u zy=ZVT-+$RIc7e!IIJ~cnpJ+QKB#u*suq)upcEkGt>_l@P(xz)-xxP3E4SVm8xdsbm0h0vRe6zGyDViuKt z9UNcU>x^e6|!|ij( zqNkG*4OLz<-u0jFH}+LlN_82Ih4_r(uEL)@^8ZR7tQ4}ZAX&NIW#j1xyhqxtR0!L? zLkiuPl+4luz3VT%@;=yri2TXTh9rzm1=5Uj{U$0VVO)-nSTSMJ7il7IamfEOjj~F( zdk48-&a^}W)#_B(5M*t-O3H22i3&`d+HXKsr@}s1y-K_&@Lf0Z(wJ!-qlxqplIzkl z!fn4IIeh^ghE&cj2wt^^$;tf_$!Q2|9Yb!2pGCP2$7K|1!%(|_osnvFGL@sJ%Ytb~ z;lV!$`uC?(RKo6vGraW;Qwoh$AsH~s=QSTGD$o4-44PM=P>Za|gAGA!jo>IW@PxTM zdQ6e7v~d4;Kj;~lm^%ws6FBJq{@{yJh}?CCucLCmWD~ju*agATQ=X(WBq`3NEI_>| zMp}}*w#vwYYE_bswEFiaYn+5u9lRI?X_0@?p{JJZ3+K{0t5=!WJwgpa#-)?Xec9xr7PP<=|lHVK2Qu zAG(5k>fw|j6B1qqvwXe~zcO*>J5*GHMWzvvJ}a_~olGi)m!`a4)ls}(vYA>VrTYjYw#)Sp6?fC(Fq=Y7J)1%fK17Cf z$r`oE>Kxc8u8@?%o!^jN^5VUn8fGF4um9)Xf)HjvFs!~*;CH| zSdjuMD=Mfn83}5&ylE~8`cgb0O-aG(Oe;5~>ZCxJgk0W_kOb>^3(a~_3PTvFotkY% zkrW7(kn?#6X|{^9q{wN>C`aMoiE`c};%zQjl4z)*q03iroOEmQYIL8p@b)FB7tsQT9~N~Y!wMVnz1q$Iz6_(?CNk_vmmBKlZcjAdBtk6Z7fi&u#7-pBHHiE=MD#c{dsBO7`AFs_ zUqR-^IOVvDW9p`j;$xs&-y*Rld)#4~SFeZ;z3bNSCD1 zWK*ezJzM&bDg!R5<2Bk(DeUM+LQ34~M-R`8;K`O$!7&rh;-_EGQNWE zKCu?-G+!q<2=zQ+ESEKD(*RxC>~|K<@2ucQrv&9x?{x*Btu20RaD(^?IyM0*lWiDj z$X{sxI~^ez&Jnt_FK>s%!+Ssn5c1SDax7U_Kr2`}J-&Lhf*-c329;2FiE9Kid7b*9H$^T$G)N7VeFN3;(CD1;B=G%H z5W((fItrI=B5f+h42@R@E*zma1)HrL0_L*>b4{qIT90fW>Y(Q#2BZij{XWt-!Skt) z=ACGjkoR*1A3@iQZkj+fW?$|SyGze+NX&p|qA&ki@VlqTs7!NrafA<-@>R7yMUJyJ zLYD@sUj(fZUtA;(B25yV+H_T+sqi%{v9c4h!)1JRj%TXJBuu25JTux&_%rStzaH-& zTRTzx{F7u~o)%leO=w9*WR>ToNsKJh_;49Jaa zx%E3j9vSDDYignte)$U_^+t&nnguC@2ho+h0~Q$$Sx_mTza`}_9*D2x1Bfz%221tk zQg9vhrtikn@YV!MB_$xLT0hH*`o!zLuA?@d1{ZeS=f`AJ+EsZktG&U=9wz)Q(aM9YyJ{Jlt}u;T(k(q%Vo$l7W+1flF( zi7MgjO>C1+lMUHi0ec{L3w*zYSggpN=BUR_u zL8Q(lvnmU+GMnudi6<=gqQ2pgLeo4;itL3jhByfEJHFvN!cDUTEiz}*eh7KaQ?EUKTB&15QdAlW9od+q; zk_Ft{hmg{MCUfzv#c*=p<5@`CbhA1u61Z?Lgo%%?FCRcalUeQv;x%(GgpFm-2Gep; zAz2o&BgpD(NP|%6Fz6zW{2$+qRSJ29NK9s6p9Kj?f)moa9tYviBBV-;dCv&qJ0}go zCce#XNEIWX(!APQ1SYWjWVcQsMdB?BtW|HU_ne*vVH?kify61KNVk8lB?)GVNY7ty zpF>EWd6Es;R6$MNct*VJT#1mVsWB`g?{NrUE*_fXUPMT_af6lSOJ}9ffRP&k(Id#S z5A#ywud4`oI5m3&SrkX5d?4m2I`G{$e4j5ijIx%}8A`8^8W0g{RLimu&mTVB-F6cd z(_~O>%`01u5&TVJmGJFtRR4MU5)=XZA%qTM4npNm$P*N)a`IjTeDT)Qo#Hh?9x#_Dx|Xu|VLL2Yo&sVQ+w%)j zC3R|^4GBqRs)#2h1CPJqXMiE0(AIm-CP$kWJ@pJ;TQ!|!c8&cN*_|x(+p1@-77UlY zq9>pA2`%jE@89stjBJyx5z==Gq#M4w8&o2pviP`<8U4Vdujt zysj%4Nr}U-RzeznLrALG4OX7Z;_1A3~kbUOXJPZ1~OjMVeI`;{6**poTor(iR6 zKL;T_4FT=?QFbI~(<#_Am*wm~x9>bZ{uRh0?NveHb0~61x;&ehi?of?>$N8RzX&# z!+r?;SRDNFD^N*Ix_t_&%pO=Q&8U5M5Rz(8ACxnx~Aimc6r zy|8jPt5-5Y@I5FR!m zqQtC{z1n|!lJqA3_U&rkiQ7&4?N!f01z%^jHf^uw$LL~{9tTy3nAj-|qX5xhhH~6Y73yhu0($~*fE-va~j^9F~zoOKM_`iQjJgIRKcAjh0=Jt`ZC)Q|_ zXssIUTM!FdwZ742nK{01MEe$wt(MZgMe+L#v1vbO5=Qbu-Do{BC;a2tb2rl8FLk2d z6YK{3NZ`Wxfnpl$>fKFz390HzBaQ4JPD0zaKk{DOJ*5&ztX8e|ciNF!TeU7|vjMR0 zM-)eni8df18P9TRD1^f&Z}Ua{qm?_#yh%G<{|D_PnTh#mA#R8xM#`IQqpa06TFE*? z&@cN%HUR&?AF}gWyV*hAUsWx9A8Z-lVx(GM2)e@X(XoSYx4MOIh~BY}#uDE*QXp)? znhs5*@Po-haP^?;X8feItmA?@`%RaGq#lZYO-*$q|O~L`C&f^O>RNz?KgEmj_$; zy@@QlUN2QxCj2OS1fLv)68Mxorrvjl_v3ckSU+}IXcq*F9mhe~ed-P$EEQNpI}wE! zyQa?eE*tKkna?3opM+{|>8JjHkQ$=|rDmoSg>e4f9lqh?4dYc@2AZ?&h$uF=s+nO! zDI|5GVhZHxDiV@N$0q4wc*i4zL<{kbWJwaFLD+|4cv2MI$|H&T1&(BOCLEQ%52q9^ z#37_h$aW$tvtS>rUVc#AUrKA`8#%!&PnWzEz7Im*WY2%jr6U=I_U)+J?iV4X&9cv4 z^P6}IA*Z~RuarWIZkBT4-DjWPJKM@TQ=@slf?Fj1R@I7UvQ*YO%U>COeSRJhLuQ>! z#%sg52TE&@s`aLAO7d(PqexR7LTatz72;mYdP$SGo2Z;hiyD>%;n@~QpB;qN;y(Gw4kRO5yH=O5 zG&!N{{;EGdXrQq z^(eKmIr}uo`nl}R$+o*Z)NdN=!md0$`v{4XurK~DKT=nj#JZALsAcCU;)N!KuqWj% z+F3Bjbmp?zM5H33L%+pYBWI3MxSW2MH$O%{!$rJ>y-C_BDbGU44I$N)dd>5&CM_2s zd4^>!)N7~|QI*{VNR1J8ZMOw*U!A9+hpV*%AujS}79JqhI2x@og@J zPN`Xg(FKIKjYQqbW~Oe?blF2mDW$0kY{gaorUkdzspY(T~=`{Z5>r+q{nNk!q^qx zEiHHX1=3ZEQYY1nP?>fLgueDMd*|MAm+vmgmf6l^Mpz1jz4|fr%|Ba_Z`K&5yQ>nQ z1@=Pdt1D)G!Y;vfASlM5*HO=ig8Y((eA( zJxHIc#>qNl&ZYwp_BI=R^LtPYwre-&k%iHa2BA`dklPrE9T~}@o^xE=b!3?nOBgO`daN1&4I|^7 zpJ!fB2oGye89jsj8){%H>-zQAk+@RZhtAZWq;H>6aVLI2;<~MSUA#lnK}Y)nM1yO< z)CD#06&uJ)?zHg(d4*Mn3tbCOTbKf2hv5%#2lPH}a?7i(Bq)3rgoqV+trGzQmY3W} z(5BrGOnZvGaPgNmw0JOy@E}3quX)d9zvn+fzjqiH)8Ai}ejmcWN18tMAakDme&8|s zz09OwG?nl3_C^zPSD~l7jop!6Yq_5rmk$g{^I~Xk2uk<9dS2~i(8|bK7 zo_&wscZoL0AL~6r;pR7K&eYMbrGbefZNHz7-QyQ`g9eRWYGcdbRCssV>xaRBJ&D*- zevj8VN4ru^$Eg$u8xAutlI-x*fa<&h7E8xM`_3bz#xB>HtjvT1uvYp~+R<8s;q zA)#5Y1A?WfH|slu6xr9fkkwgm5Y|e_H@6Vd;!x#AC-mXl_e!A(BdK>=KESS*DF z=P?pDs%5lrG{W(%|>mEO|RoF$Uc_|mMl%i4X2)Trj zoRQTYVgoFaEUNvN(Ik7=BB@@!#YnZHiG7J|7X(WM)%{BshYF<26>L$CeFoB{2TO^! zD|MxdmmRP~y19A3^&USq){t^n5}XcS1WBhazqX=|QfC|QCcap;vy@)(r`|_Qt4*_; zDmWb+Y~Br&GN^3rLQIEsp*so5fNvlgq%GyYA0ve`N0h0_%2c{$8_v_-j}*=udDD%A zX26CZR*;KO`sY19(k>!-?%p98@Vd_no=ej}VQp{09-R#$N!hk>YHIqs{!2x5iXz%k zTk5vR`N;o!jKtbE8%nMxRp7pD?b`gUGMhRz2~K4xo~37W2jj6A>jn?Ho=tCi5GK zDJ??GQ{$?!l$qi-b+nYhGW!H7X~-zait&O zV%b-JKZ_(am?nCW;AD8)?<3K&J;v`?KZ2x$D^UQRPO|xn3Ur25tH+M6{Z= zd23`VwHMMG+xba1$~1F4@tM6LX#6btdmH|}%=F=S;`7FaIrMjhaIFcIP&VqJrVc8h z>PKWrhDE3MvxSbR=kNEhyO<4(r;L=+&{4SC-p;QGhD`H)RL@4d@V8m#e}KgF8OC~( zO=YklXu%cMks^9f&G#5pk0&9?unR(77n2u6{e^@y8aMfnpv{M1-P9doiu357cp^tH z-+(NRgD>Vtr}}^LgsHsVJ_AU25gddy?66589N&h8=vNq#unhR{rw%hkOJL7)gml^_k0)X2R23<=cTyQbifj^m z#PjgsgX#<4AmpJ{k`L8oczvl5vacY6YAmBCu#YoOl1{{STBSh4B?+)0 zNP0xw_81AtcZ(6IDm!4waFEl7kQ*ZkC-81t6LFt6y1**amyQanW-d>GQ5LitUE~=H zd8Oq;Uo|@_WFI>eKM!_^r%dDx7A4H6RWqe%DI(@RuTF<~#3UNI9elP6P_qLem1aGY zq}`?eiBH*oKZeRF(Wy5ii{jvmpbvJ4*Lw?*kPO!@L5kv~!La+s`}|+`f43nyL)PgNNf^^t%17{17gDBqMC>Grd^BAm&i;&u0jsMb@si}3TOJ`I z)hb~!wfTSZBqF945sA9ZMr27MYzX>L{4m(1Uet{7F12#njIVmV?6pF4sjR<{lp2dn zKlb)#l9aeD_HQI5)v|Lk?EyymFM6&J=jZ#8oxC&jnm78X!%{&EAb#WtM4?F8l zhGldGed=H*zk+VD=$_&inhIJn9c>fCPv7>in>~TuCp(FXtkBLfB8%c-W6%O|4!nek zY>zHI+Bv@rk~+ifDpW%QkfSE+3*ZL`e&?*{8JCfe=>uvquY%ex5$Sgk5#?3k#vKNo zevF88okC->I1x6^`%s)OIv*oNvelJrsM#s4rxe0>-AG8gTZf%SMs_!0Ao+nNVJ*L5 z)9vTo0L8L>uyWR6@c78#WzeDIk9!gM(7JSrw@g>@%IGCqAQyJRIna}vm^%xtSsZC8 z&m2+huNL$Zpb}ht(qx|+=~3kx^B?faRcrMbk%jTFVa@_^$Qa@YQ+c9$mV9`~5Ie{2 ziU)k>D6{GCSIy3YuVCSS-QC7hhdomHfZvEn)T$b-iiK9#B3ozo!t3Ip{tp)(@C(aA z$R9)A$fK<`OZ;fl`Pv8kl4cNYc&hBDdxl(wg|CY*Q3tPbjJZ5RJJVC`Idjsc?XvJO zOUEpuP|kG(Me1~nRV}Q8?XvJGTfu>)PQQ5zl~yZzI#%Twta#~LSTyU1_*AzU2};(= z9;fn;22<5#SR`5YuoYR>u2ttPTDEAG7#!~U3AIJ0cBBbeoJ7YmabURf6KabnH}Md3 z$FtMC?;fIZinM#jliB$&Tsuxe{jU%Bu_NChX9`Jxt87)c6RwD#h3k93&jXL_a{L)} z3_cSfrEup@q)>@Y{RHw}72Jn43ofvmL=jIog+|C*bqdF+^PyL^UAAe~5ui#b=|FSr z$pe0%DOdFPtJQuhQ(-H-Khb3mTxW_M7(|N2>Bdh~nY+x$g8L9U|C~6B{f(eO`4#`wbia$|AdXwHlPwf!-^V!EMspKBvI; zwdHh@R|!Y9b@82`S})a4@;&fP#8 zC^@c+Z=ejJb&8t!y3HZJk73RHi(<}zgf3qD7@^iz(q8%UtNU4Rxscd}{FihFsDr|n zy`t0^Cm;8!iMgGSyqjYTqB$etFzs-*!Y%bMhl<-Fq zC&EBpWLqC-?mc4z`7R(!F>pGecN_|`v+7`ZW)qO=#t2GRbTd! zKKp<3Ocy`m4+t3ne$x}c#z!Xm6;|sQjalaWChcgC&UNtb)}Bqk%G+A-RY)m#M3WltK0GEgy> zw5$Bcv^Y2-6{8g5vJsM@6+cB(_AN=-oWs~2ovXu$Bqg>8AuU=N{yfrOf_2ep_SZC7 zDMX#Yx@hMINEJ6#TJBaLBu2L@fLAy6Jk~|KEKn@yjj3X~|CEbA^TS!KZhxR!-_key z2)r@jbGa3TPJN4@Or1+p)%qiR*BybkCVXnZp4eTuhT0%cmTyWHCDR4E=-*eiKIHv7 zsN00R9}i!?H(%UJc)|lF@?@t7BN7yT8X{Q!VukQ)DIyACkQMU3_ZCP`dQLy&Z7x>! z8j>aP@HH%93sncGGVwxtTQe&LPrx@krhCc{=(_<|U|bZ4Pb;vLG3 zsUly)V(AOajd{PIB@*QOt7hlIJ8A=6DGJ(o1c~u!@>ji)2jfOKno6--e9kFD4xPPDC{BqK_IdAtCH0*HW>aE6R|RI(e=@7REpttdtI;GtM9+X4IgJ zgcrdfY0FM2v|yx7s5T}mGiV!pEN%$hC`ZUm`=PPYMXeR$XWG8Ih>#>zgfR)rpv@%h z89nGlNU@M4C+|nYZU~cJqx{&1jE+^d8uf6Ti~oIG7$wI~)|_I};>1M!sO%5@~B)4srzirEH>q{JNEe<38& zpj@A}V+w>x-jFkhkXE}mGrGdx2P>uh?2g=Sz7sr@=NM2aFMBf~3gJE`a^#JSc-@x~ z4nog~Zoa3**%lf<|ImVi&|ZpwOSVxa&o2x(3BA|5`M9CaI@Lt&7sL<)GbzfCd(zFD z6G56y_*5hV`+vpz4ArJQ^7IlydPsyBS(&Nv-M@^-2$#gid&q9YBB8gJL`VzNuthEu4jU?_3nGl|&;M z@ubZB`Sn?)uzx?2(K0gAoU9kK6rW&0SzKNZU%ADjZj4o}&Vr+`_9T2J`F7ld+WEqAf#(-uby~cY_pV*?s3X*yt5Q}cC#er3j!sF+nRxhn_~*)RLC>pbOj;? zMn95^*Tp0vuL=>Fqx1E-3uTAf5K-;XrO$nKuCW6Vo$5RT@sob>IR!}Tg2DmC}? zYI7GOx(y?}iLNkznikv9`1-eA)Qydk*~i1(?WG+5v6$#L>d_~k<$}BYr{W6v{@&kF zC!EygMv5Uu_M@yFj>6Y66LYoj*M5$&mEZ7bu=2hEMKT?2F-^vb6exu+*@gd--}#ZQ zUN6p>gyyi1L%euST$kTQrFJP2&DBd1Kro!|uP0wBh9=*C-N$QRHKy4_`ii$$iN~7y z_)1KWbz4dua{jk$k}YlS<0sj+(b*QN87pUmZHL9X;FkEt<#r$6>PZgOzWjaaYkeGI zA}^4|v0XMZ;S2GS)vwq7;MILJuGX3kyw5J%{)UOdG111-m!ie}rCy#eliwJd$%wPV zUo7+ze&-nnd8J#M?UJBy=TXkY!+xZ>mbQ-k^-r|5Wd9ju5j2@D#{2kxSjsCrE6lt@ z)4|sC%}HZkwy<-aKnwpz#GbF9D_pxqs1l(O-tl{N#cLn4hY5E$#zNjRYH*_3&EL@S znydqi%v=K~b+aE)gA;z1kyj}c1|vR`{dUx{XCQD z5^XAGiH!hhiCUc0&o@n~N4_PQ6aHBCl!dSk!q?gT{D|6W8RtSqjZT5kk?yR+p6llw zpj@kPG+FrwoZdJMhh?;sdv*PMKDBtP&GhKkh-&vlZ!@in<7A{@@5JdD-}#prXwqlYI*@@GYE@v8!nPfATBa z483w)GH27Onc}6-o?Qcct<^z^8(Go><88i%i>#-|rVpUa0h{bGq#lZ8zvx72e-Fo) zCp6X%@SYbRFyN-r6;$5CPc)o_oVX{vq(Sejk)#nyWc&2`w7-L+Oy%;HC%np~qe`cc zz=aC}#V4d4cb@Q`kgI5Qe4dBRRcLtfgm1(gyQ`Db(NM!~vIZ^)6w@KO2?s7e)zsNq z9&PlGma11)r+q+sP_{?wj&_vx1D1$1BK9v{^M@WeRwN$=;aAyHI1GQWn)@pUUdroEViwcBTZLiR(R zMpyAoX@)3L39HC)7TpIMT#FpW+s= 1 + r = rules[0] + assert r.building_rule_id is not None + assert r.max_building_coefficient is not None + assert r.max_building_height is not None + assert r.max_parcel_coverage is not None + # setback fields must survive + assert r.main_streets_setback is not None + assert r.secondary_streets_setback is not None + assert r.side_rear_setback is not None + + +def test_building_rules_multiple_rules_are_not_collapsed(): + """The persister must key on (parcel_objectid, building_rule_id), not parcel alone.""" + data = { + "status": True, + "data": [ + {"id": "RULE-A", "zoningId": 1}, + {"id": "RULE-B", "zoningId": 2}, + ], + } + rules = parse_building_rules_payload(data, 555) + assert len(rules) == 2 + dedup = {(r.parcel_objectid, r.building_rule_id): r for r in rules} + assert len(dedup) == 2, "two distinct rules for one parcel must both survive dedup" + + +def test_price_metrics_payload_sets_neighborhood_id(): + data = _load("priceOfMeter__9858274.json") + metrics = parse_price_metrics_payload(data) + assert metrics, "fixture should yield neighborhood metrics" + # Every metric must now carry a neighborhood_id (previously always NULL). + assert all(m.neighborhood_id is not None for m in metrics) + m = metrics[0] + assert m.month is not None and m.year is not None + assert m.metrics_type is not None + assert m.average_price_of_meter is not None diff --git a/tests/unit/test_live_tile_schema.py b/tests/unit/test_live_tile_schema.py new file mode 100644 index 0000000..2683aa5 --- /dev/null +++ b/tests/unit/test_live_tile_schema.py @@ -0,0 +1,91 @@ +"""Contract tests: decode a real (gzipped) live Suhail MVT tile and assert the +decoder + canonical SCHEMA_MAP now capture the fields the 2026 tile schema exposes. + +Fixture tiles captured 2026-07-15 (see docs/SUHAIL_SOURCE_AUDIT_2026-07.md). +The residential tile 20640/14060 contains parcels with recent transactions. +""" +import gzip +from pathlib import Path + +import pytest + +from suhail_pipeline.decoder.mvt_decoder import MVTDecoder +from suhail_pipeline.persistence.postgis_persister import SCHEMA_MAP + +TILES = Path(__file__).resolve().parents[1] / "fixtures" / "suhail_live_2026_07" / "tiles" +RESIDENTIAL = TILES / "riyadh_15_20640_14060.vector.pbf.gz" # z/x/y = 15/20640/14060 +DOWNTOWN = TILES / "riyadh_15_20636_14069.vector.pbf.gz" # has all 17 layers + + +def _decode(path, z, x, y): + raw = path.read_bytes() + data = gzip.decompress(raw) if raw[:2] == b"\x1f\x8b" else raw + return MVTDecoder().decode_to_gdf(data, z, x, y) + + +def _schema_filter(gdf, layer): + """Mimic the orchestrator: arabic-map then filter to SCHEMA_MAP columns.""" + gdf = MVTDecoder.apply_arabic_column_mapping(gdf) + allowed = set(SCHEMA_MAP.get(layer, {}).keys()) | {"geometry"} + return gdf[[c for c in gdf.columns if c in allowed]] + + +@pytest.fixture(scope="module") +def residential_layers(): + assert RESIDENTIAL.exists(), f"missing fixture tile {RESIDENTIAL}" + return _decode(RESIDENTIAL, 15, 20640, 14060) + + +@pytest.fixture(scope="module") +def downtown_layers(): + assert DOWNTOWN.exists(), f"missing fixture tile {DOWNTOWN}" + return _decode(DOWNTOWN, 15, 20636, 14069) + + +def test_expected_layers_present(downtown_layers): + # The downtown tile carries the full transit + metrics layer set. + for layer in ("parcels", "neighborhoods", "subdivisions", "bus_lines", + "metro_stations", "riyadh_bus_stations", "qi_population_metrics"): + assert layer in downtown_layers, f"layer {layer} missing from live tile" + + +def test_parcels_market_timeseries_survive_schema_filter(residential_layers): + gdf = _schema_filter(residential_layers["parcels"], "parcels") + cols = set(gdf.columns) + for f in ( + "transaction_price_1w", "transaction_price_12m", + "price_of_meter_1m", "price_of_meter_6m", + "transactions_count_12m", "transaction_date_12m", + "zoning_group", + ): + assert f in cols, f"parcels field {f} dropped by schema filter" + # Arabic neighbourhood name now retained on parcels. + assert "neighborhood_ar" in cols + + +def test_parcels_have_nonzero_market_data(residential_layers): + """At least some residential parcels carry real 12-month transaction data.""" + gdf = residential_layers["parcels"] + assert "transactions_count_12m" in gdf.columns + hits = (gdf["transactions_count_12m"].fillna(0).astype(float) > 0).sum() + assert hits > 0, "expected some parcels with 12m transactions in this tile" + + +def test_bus_lines_fields_now_captured(downtown_layers): + """Regression: bus_lines previously captured zero attributes (name mismatch).""" + gdf = _schema_filter(downtown_layers["bus_lines"], "bus_lines") + cols = set(gdf.columns) + assert {"busroute", "color", "type"} <= cols + assert len(gdf) > 0 + + +def test_metro_stations_coordinates_captured(downtown_layers): + gdf = _schema_filter(downtown_layers["metro_stations"], "metro_stations") + assert {"station_long", "station_lat", "station_code"} <= set(gdf.columns) + + +def test_qi_population_metrics_reshaped_fields_captured(downtown_layers): + gdf = _schema_filter(downtown_layers["qi_population_metrics"], "qi_population_metrics") + cols = set(gdf.columns) + for f in ("population_density", "rent_apartment", "purchasing_power", "poi_count"): + assert f in cols, f"qi_population_metrics field {f} not captured" diff --git a/tests/unit/test_new_layer_keys.py b/tests/unit/test_new_layer_keys.py new file mode 100644 index 0000000..8cbab69 --- /dev/null +++ b/tests/unit/test_new_layer_keys.py @@ -0,0 +1,95 @@ +"""Unit tests for the dimensions / building_detection write-mode plumbing: +- decode stamps `source_tile` and the synthetic `bd_id`, and they survive the + SCHEMA_MAP column filter; +- `compute_synthetic_pk` is deterministic, geometry-sensitive, and keeps distinct + rows distinct. +""" +import gzip +from pathlib import Path + +import pytest +from shapely.geometry import Point + +from suhail_pipeline.pipeline_orchestrator import decode_and_validate_tile +from suhail_pipeline.decoder.mvt_decoder import MVTDecoder +from suhail_pipeline.persistence.postgis_persister import ( + SCHEMA_MAP, + TILE_SCOPED_LAYERS, + SYNTHETIC_PK_CONFIG, + compute_synthetic_pk, +) +from suhail_pipeline.config import settings + +import geopandas as gpd + +TILES = Path(__file__).resolve().parents[1] / "fixtures" / "suhail_live_2026_07" / "tiles" +DOWNTOWN = TILES / "riyadh_15_20636_14069.vector.pbf.gz" + + +def _decoded(layer): + raw = DOWNTOWN.read_bytes() + data = gzip.decompress(raw) + out = decode_and_validate_tile((15, 20636, 14069), data, [layer], settings.default_crs) + for name, gdf in out: + if name == layer: + return gdf + return None + + +def _schema_filter(gdf, layer): + gdf = MVTDecoder.apply_arabic_column_mapping(gdf) + allowed = set(SCHEMA_MAP.get(layer, {}).keys()) | {"geometry"} + return gdf[[c for c in gdf.columns if c in allowed]] + + +def test_config_wiring(): + assert "dimensions" in settings.layers_to_process + assert "building_detection" in settings.layers_to_process + # dimensions must NOT be keyed (would collapse edges); building_detection is synthetic-keyed + assert settings.id_column_per_layer.get("dimensions") is None + assert settings.id_column_per_layer.get("building_detection") == "bd_id" + assert "dimensions" in TILE_SCOPED_LAYERS + assert "building_detection" in SYNTHETIC_PK_CONFIG + + +def test_dimensions_source_tile_stamped_and_survives_filter(): + gdf = _decoded("dimensions") + assert gdf is not None and len(gdf) > 100 + assert (gdf["source_tile"] == "15/20636/14069").all() + filtered = _schema_filter(gdf, "dimensions") + assert "source_tile" in filtered.columns + assert {"parcel_objectid", "length_m", "azimuth"} <= set(filtered.columns) + # many rows per parcel (edges) — confirms why it can't be keyed on parcel_objectid + assert gdf["parcel_objectid"].nunique() < len(gdf) + + +def test_building_detection_synthetic_key_stamped_and_unique_enough(): + gdf = _decoded("building_detection") + assert gdf is not None and len(gdf) > 100 + assert "bd_id" in gdf.columns + assert (gdf["source_tile"] == "15/20636/14069").all() + # every row got an id, and ids are (near-)unique for distinct geometries + assert gdf["bd_id"].notna().all() + assert gdf["bd_id"].nunique() >= len(gdf) * 0.99 + + +def test_compute_synthetic_pk_is_deterministic_and_geometry_sensitive(): + g = gpd.GeoDataFrame( + {"region_id": [10, 10], "class_pred": ["1", "1"], "prediction_year": [2025, 2025]}, + geometry=[Point(46.7, 24.6), Point(46.8, 24.7)], + crs="EPSG:4326", + ) + out1 = compute_synthetic_pk(g, "building_detection") + out2 = compute_synthetic_pk(g, "building_detection") + # deterministic + assert list(out1["bd_id"]) == list(out2["bd_id"]) + # geometry-sensitive: same attrs, different geometry -> different id + assert out1["bd_id"].iloc[0] != out1["bd_id"].iloc[1] + # fits in a signed BIGINT + assert all(0 <= v < 2**63 for v in out1["bd_id"]) + + +def test_compute_synthetic_pk_noop_for_unconfigured_layer(): + g = gpd.GeoDataFrame({"a": [1]}, geometry=[Point(0, 0)], crs="EPSG:4326") + out = compute_synthetic_pk(g, "parcels") + assert "bd_id" not in out.columns From 3ec15944921bc8c9afbce0327a88ae285464610e Mon Sep 17 00:00:00 2001 From: Raedmund <30367709+Pinstack@users.noreply.github.com> Date: Wed, 15 Jul 2026 12:10:44 +0200 Subject: [PATCH 2/4] feat(decoder): skip non-MVT (HTML/error-page) tile payloads cleanly The tile server can return an HTML error/maintenance page instead of a vector tile; decode would otherwise raise a protobuf DecodeError. Add an early guard in MVTDecoder.decode_bytes that returns {} when the payload starts with '<' (MVT is binary protobuf and never does), plus tests. Salvaged and cleaned up from the abandoned fix-mvt-decoder-str-bug branch (dropped its print/debug and hardcoded province-id hack). Co-Authored-By: Claude Opus 4.8 --- src/suhail_pipeline/decoder/mvt_decoder.py | 12 +++++++++++- tests/unit/test_decoder_html_guard.py | 21 +++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 tests/unit/test_decoder_html_guard.py diff --git a/src/suhail_pipeline/decoder/mvt_decoder.py b/src/suhail_pipeline/decoder/mvt_decoder.py index 1cc85f5..68f7ccc 100644 --- a/src/suhail_pipeline/decoder/mvt_decoder.py +++ b/src/suhail_pipeline/decoder/mvt_decoder.py @@ -143,7 +143,17 @@ def decode_bytes( """ if not tile_data: return {} - + + # Guard against non-MVT payloads: the tile server can return an HTML error + # or maintenance page (or other text) instead of a vector tile. MVT is + # binary protobuf and never starts with '<', so a leading angle bracket + # means this isn't a tile — skip cleanly instead of raising a DecodeError. + if tile_data.lstrip()[:1] == b"<": + logger.warning( + "Tile %s/%s/%s payload looks like HTML/non-MVT, skipping decode.", z, x, y + ) + return {} + decoded_tile = mapbox_vector_tile.decode(tile_data) output_layers: Dict[str, List[Dict[str, Any]]] = {} diff --git a/tests/unit/test_decoder_html_guard.py b/tests/unit/test_decoder_html_guard.py new file mode 100644 index 0000000..fa85266 --- /dev/null +++ b/tests/unit/test_decoder_html_guard.py @@ -0,0 +1,21 @@ +"""The decoder must skip non-MVT payloads (e.g. an HTML error page the tile server +returns instead of a vector tile) cleanly, rather than raising a protobuf DecodeError. +Salvaged idea from the abandoned fix-mvt-decoder-str-bug branch, cleaned up. +""" +from suhail_pipeline.decoder.mvt_decoder import MVTDecoder + + +def test_html_payload_is_skipped_not_decoded(): + dec = MVTDecoder() + html = b"503 Service Unavailable" + assert dec.decode_bytes(html, 15, 20636, 14069) == {} + + +def test_leading_whitespace_html_is_skipped(): + dec = MVTDecoder() + assert dec.decode_bytes(b"\n error", 15, 1, 1) == {} + + +def test_empty_payload_is_skipped(): + dec = MVTDecoder() + assert dec.decode_bytes(b"", 15, 1, 1) == {} From a45d414672ff9f79ee6530f9a653c9965dd8577b Mon Sep 17 00:00:00 2001 From: Raedmund <30367709+Pinstack@users.noreply.github.com> Date: Wed, 15 Jul 2026 12:19:24 +0200 Subject: [PATCH 3/4] chore: complete meshic->suhail rename across docs/tests/scripts/pyproject MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Companion to the package-directory rename in this branch: updates every remaining `meshic`/`Meshic` reference to `suhail`/`Suhail` (pyproject entry points + project name, 14 test imports, README, docs, scripts). Without this the committed branch was internally inconsistent — tracked tests still imported `meshic_pipeline` and pyproject declared the old console scripts, so a clean checkout would fail the suite and install a broken CLI. Also gitignores the `.gstack/` tool dir. Pure rename (1703 meshic->suhail line swaps) plus the one .gitignore line; no behavioural change. Co-Authored-By: Claude Opus 4.8 --- .gitignore | 1 + README.md | 110 +- REPOSITORY_INDEX.md | 8 +- _bmad-output/project-context.md | 6 +- alembic/env.py | 2 +- ...b33197_add_critical_performance_indexes.py | 2 +- auto_restart_enrichment.sh | 2 +- check_enrichment_status.sh | 2 +- docs/ACCEPTANCE_CRITERIA.md | 8 +- docs/ARCHITECTURE.md | 30 +- docs/BMAD_PROJECT_SCAN.md | 2 +- docs/BROWNFIELD_PROJECT_DOCUMENTATION.md | 48 +- docs/CLEAN_SLATE_PROTOCOL.md | 12 +- docs/PRD.md | 2 +- docs/PROJECT_BRIEF.md | 6 +- docs/REPO_HYGIENE.md | 2 +- .../WHAT_TO_DO_NEXT_PIPELINE_TABLES.md | 2 +- .../generated-txt/all_test_results.txt | 516 ++--- docs/archive/generated-txt/flake8_report.txt | 1784 ++++++++--------- docs/archive/generated-txt/geometric_help.txt | 2 +- .../generated-txt/geometric_help_full.txt | 2 +- .../generated-txt/geometric_test_results.txt | 182 +- docs/archive/generated-txt/vulture_report.txt | 298 +-- .../CONFIGURATION_FIXES_TEST_REPORT.md | 2 +- .../CONFIGURATION_ISSUES_ANALYSIS.md | 6 +- .../DATABASE_ARCHITECTURE_ANALYSIS.md | 6 +- .../legacy-root-md/FINAL_RECOVERY_REPORT.md | 4 +- .../PERFORMANCE_OPTIMIZATION_REPORT.md | 8 +- docs/archive/memory-bank/activeContext.md | 28 +- docs/archive/memory-bank/progress.md | 30 +- docs/archive/memory-bank/projectbrief.md | 2 +- docs/archive/memory-bank/systemPatterns.md | 2 +- docs/archive/memory-bank/techContext.md | 10 +- docs/brownfield-architecture.md | 42 +- .../01-requirements-and-product.md | 8 +- .../02-architecture-and-data.md | 22 +- docs/docs-distillate/03-stories-ops-cli.md | 20 +- .../_index-validation-report.md | 4 +- .../_validation/reconstruction-ARCH-bundle.md | 26 +- .../_validation/reconstruction-PRD-bundle.md | 4 +- docs/index.md | 2 +- docs/ops/MACHINE_POSTGRES_AUDIT.md | 2 +- docs/province_wide_scraping_plan.md | 12 +- .../STORY-003-monitoring-cli-outputs.md | 2 +- .../EPIC-001-performance-and-monitoring.md | 12 +- docs/working/TODO.md | 32 +- logs/check_stale.py | 2 +- logs/enrichment_monitor.py | 2 +- logs/enrichment_watcher.py | 4 +- logs/live_monitor.py | 2 +- logs/progress_watcher.py | 2 +- logs/reset_stale.py | 2 +- logs/universal_metrics_monitor.py | 2 +- pipeline_config_enhanced.yaml | 8 +- pyproject.toml | 8 +- run_pipeline.sh | 8 +- .../generate_riyadh_transactions_report.py | 10 +- scripts/util/backfill_province_metadata.py | 4 +- scripts/util/capture_test_fixtures.py | 8 +- scripts/util/check_db.py | 2 +- scripts/util/enhanced_province_discovery.py | 2 +- scripts/util/export_to_geojson.py | 2 +- scripts/util/generate_tile_list.py | 2 +- scripts/util/inspect_tiles.py | 2 +- .../util/intelligent_province_discovery.py | 2 +- scripts/util/market_analysis.py | 2 +- scripts/util/sync_provinces.py | 2 +- scripts/util/validate_data_types.py | 2 +- scripts/util/validate_foreign_keys.py | 2 +- scripts/util/validate_tile_data.py | 2 +- .../integration/test_pipeline_integration.py | 32 +- tests/test_async_tile_downloader.py | 2 +- tests/unit/test_async_tile_downloader.py | 4 +- tests/unit/test_cli_commands.py | 12 +- tests/unit/test_config.py | 2 +- tests/unit/test_data_validation.py | 2 +- tests/unit/test_decoder.py | 2 +- tests/unit/test_delta_enrichment_cli.py | 4 +- tests/unit/test_discovery.py | 2 +- tests/unit/test_enrichment_strategies.py | 2 +- tests/unit/test_geometric_cli.py | 2 +- tests/unit/test_province_loader.py | 4 +- tests/unit/test_smart_pipeline_enrich.py | 4 +- tests/unit/test_stitcher.py | 2 +- tests/unit/test_validator.py | 2 +- uv.lock | 2 +- 86 files changed, 1740 insertions(+), 1739 deletions(-) diff --git a/.gitignore b/.gitignore index 8fad24a..6b90528 100644 --- a/.gitignore +++ b/.gitignore @@ -200,3 +200,4 @@ docs/reports/generated/*.md # Allow all files in sample_data to be tracked, even if normally ignored !/sample_data/ !/sample_data/** +.gstack/ diff --git a/README.md b/README.md index d362c23..8aec5c7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![CI](https://github.com///actions/workflows/ci.yml/badge.svg)](https://github.com///actions/workflows/ci.yml) -# Meshic Geospatial Data Pipeline +# Suhail Geospatial Data Pipeline A sophisticated **two-stage geospatial data processing pipeline** for the Saudi real estate market. The pipeline is now fully database-driven: all tiles to be processed are stored in the `tile_urls` table, supporting province-wide and all-Saudi scrapes with resumable, robust processing. @@ -102,29 +102,29 @@ cp .env.example .env #### Stage 1: Geometric Processing (DB-driven) ```bash # Seed tiles (optional; per province or all provinces) -meshic-pipeline seed-tiles --province riyadh --limit 1000 --stride 2 +suhail-pipeline seed-tiles --province riyadh --limit 1000 --stride 2 # Process tiles using the DB queue (recommended) -meshic-pipeline db-geometric --batch-size 1000 --concurrency 5 --adaptive +suhail-pipeline db-geometric --batch-size 1000 --concurrency 5 --adaptive # Or traditional bbox mode -meshic-pipeline geometric --bbox 46.428223 24.367114 47.010498 24.896402 +suhail-pipeline geometric --bbox 46.428223 24.367114 47.010498 24.896402 ``` #### Stage 2: Enrichment ```bash # Fast enrichment (new parcels that need data) -meshic-pipeline fast-enrich --batch-size 200 +suhail-pipeline fast-enrich --batch-size 200 # Incremental enrichment (stale by days) -meshic-pipeline incremental-enrich --days-old 30 --batch-size 100 +suhail-pipeline incremental-enrich --days-old 30 --batch-size 100 # Delta enrichment (only parcels with price changes) -meshic-pipeline delta-enrich --auto-geometric +suhail-pipeline delta-enrich --auto-geometric # Monitoring -meshic-pipeline monitor status -meshic-pipeline monitor recommend +suhail-pipeline monitor status +suhail-pipeline monitor recommend ``` ## 🔄 Enrichment Strategies @@ -136,7 +136,7 @@ The pipeline provides **multiple enrichment modes** to leverage this insight: ### **🎯 TRIGGER-BASED** (Maximum Efficiency) ```bash -meshic-pipeline enrich fast-enrich --batch-size 400 +suhail-pipeline enrich fast-enrich --batch-size 400 ``` - **🚀 Leverages your insight**: Only processes parcels with `transaction_price > 0` - **93.3% efficiency gain**: Skips 962,796 parcels that don't need enrichment @@ -145,7 +145,7 @@ meshic-pipeline enrich fast-enrich --batch-size 400 ### **🆕 NEW PARCELS** (Standard Approach) ```bash -meshic-pipeline enrich fast-enrich --batch-size 200 +suhail-pipeline enrich fast-enrich --batch-size 200 ``` - Processes parcels never enriched before (same as trigger-based but different implementation) - Perfect for initial runs or capturing new parcels @@ -154,10 +154,10 @@ meshic-pipeline enrich fast-enrich --batch-size 200 ### **🔄 INCREMENTAL UPDATES** (Weekly/Monthly) ```bash # Weekly updates (recommended) -meshic-pipeline enrich incremental-enrich --days-old 7 --batch-size 100 +suhail-pipeline enrich incremental-enrich --days-old 7 --batch-size 100 # Monthly updates -meshic-pipeline enrich incremental-enrich --days-old 30 --batch-size 100 +suhail-pipeline enrich incremental-enrich --days-old 30 --batch-size 100 ``` - **🎯 Captures new transactions on existing parcels** - Re-processes parcels not enriched recently @@ -165,7 +165,7 @@ meshic-pipeline enrich incremental-enrich --days-old 30 --batch-size 100 ### **🔥 FULL REFRESH** (Quarterly) ```bash -meshic-pipeline enrich full-refresh --batch-size 50 +suhail-pipeline enrich full-refresh --batch-size 50 ``` - Re-processes ALL enrichable parcels - Guarantees 100% data completeness @@ -174,13 +174,13 @@ meshic-pipeline enrich full-refresh --batch-size 50 ### **🎯 DELTA ENRICHMENT** (Revolutionary Precision) ```bash # Automatic workflow (recommended) -meshic-pipeline enrich delta-enrich --auto-geometric +suhail-pipeline enrich delta-enrich --auto-geometric # Manual workflow (if fresh MVT data already exists) -meshic-pipeline enrich delta-enrich +suhail-pipeline enrich delta-enrich # Testing with limits -meshic-pipeline enrich delta-enrich --limit 100 --auto-geometric +suhail-pipeline enrich delta-enrich --limit 100 --auto-geometric ``` - **🚀 MVT-based change detection**: Only enriches parcels with actual transaction price changes - **Perfect precision**: No false positives from time-based approaches @@ -197,19 +197,19 @@ meshic-pipeline enrich delta-enrich --limit 100 --auto-geometric ### Status Monitoring (CLI) ```bash # Queue status, enrichment coverage, failures -meshic-pipeline monitor status +suhail-pipeline monitor status # Automated recommendations -meshic-pipeline monitor recommend +suhail-pipeline monitor recommend # Scheduling guidance -meshic-pipeline monitor schedule-info +suhail-pipeline monitor schedule-info # Reset stale in_progress tiles (for cron) -meshic-pipeline monitor reset-stale -- --stale-minutes 60 +suhail-pipeline monitor reset-stale -- --stale-minutes 60 # Sample performance measurements (writes docs/reports) -meshic-pipeline monitor perf -- --label baseline --iterations 5 +suhail-pipeline monitor perf -- --label baseline --iterations 5 # Repair missing province metadata (tile URL/bbox) python scripts/util/backfill_province_metadata.py --province-id 21012 @@ -256,12 +256,12 @@ layers: [parcels, transactions, neighborhoods, ...] ### **Performance Tuning** ```bash # High-performance settings -meshic-pipeline enrich incremental-enrich \ +suhail-pipeline enrich incremental-enrich \ --batch-size 500 \ --days-old 7 # Memory-optimized settings -meshic-pipeline enrich incremental-enrich \ +suhail-pipeline enrich incremental-enrich \ --batch-size 100 \ --days-old 7 ``` @@ -294,16 +294,16 @@ The pipeline **guarantees** capture of new transactions through: ## 🚨 Important Notes ### **For New Deployments** -1. Seed provinces (optional): `meshic-pipeline seed-tiles --province riyadh` -2. Run geometric pipeline: `meshic-pipeline db-geometric` -3. Run initial enrichment: `meshic-pipeline fast-enrich` -4. Setup monitoring: `meshic-pipeline monitor status` +1. Seed provinces (optional): `suhail-pipeline seed-tiles --province riyadh` +2. Run geometric pipeline: `suhail-pipeline db-geometric` +3. Run initial enrichment: `suhail-pipeline fast-enrich` +4. Setup monitoring: `suhail-pipeline monitor status` ### **For Ongoing Operations** - **💡 LEVERAGE THE INSIGHT**: Use `fast-enrich` after geometric pipeline for maximum efficiency - **Never use only `fast-enrich`** for ongoing operations - it misses new transactions on existing parcels - **Use `incremental-enrich`** weekly to capture new transaction data -- **Monitor regularly** with `uv run meshic-pipeline monitor recommend` +- **Monitor regularly** with `uv run suhail-pipeline monitor recommend` ### **🚀 EFFICIENCY BREAKTHROUGH** Your insight reveals a **93.3% efficiency gain**: @@ -335,10 +335,10 @@ uv run pytest tests/integration check_db # Memory issues during processing -meshic-pipeline incremental-enrich --batch-size 50 +suhail-pipeline incremental-enrich --batch-size 50 # Check enrichment status -meshic-pipeline monitor status +suhail-pipeline monitor status ``` ### **Performance Optimization** @@ -377,7 +377,7 @@ Welcome! If you're picking up the pipeline/data debugging and remediation, here If you see `ModuleNotFoundError: No module named 'src'` when running enrichment via the CLI, use this workaround: ```bash -PYTHONPATH=$(pwd) python src/meshic_pipeline/run_enrichment_pipeline.py fast-enrich --limit 100 +PYTHONPATH=$(pwd) python src/suhail_pipeline/run_enrichment_pipeline.py fast-enrich --limit 100 ``` This is required because the CLI currently invokes the enrichment script as a subprocess, which does not set up the Python path correctly. This will be fixed in a future release. @@ -419,33 +419,33 @@ This does not affect current functionality but should be addressed in the future ### Core Commands -- `meshic-pipeline geometric [--bbox ...] [--recreate-db] [--save-as-temp ...]` +- `suhail-pipeline geometric [--bbox ...] [--recreate-db] [--save-as-temp ...]` - Run geometric pipeline (Stage 1) - Options: - `--bbox min_lon min_lat max_lon max_lat` — Bounding box for processing - `--recreate-db` — Drop and recreate the database schema - `--save-as-temp ` — Save parcels to a temporary table -- `meshic-pipeline fast-enrich [--batch-size ...] [--limit ...]` +- `suhail-pipeline fast-enrich [--batch-size ...] [--limit ...]` - Enrich new parcels with transaction prices - Options: - `--batch-size ` — Number of parcels per batch (default: 200) - `--limit ` — Limit parcels for testing -- `meshic-pipeline incremental-enrich [--batch-size ...] [--days-old ...] [--limit ...]` +- `suhail-pipeline incremental-enrich [--batch-size ...] [--days-old ...] [--limit ...]` - Enrich parcels not updated in X days - Options: - `--batch-size ` — Number of parcels per batch (default: 100) - `--days-old ` — Days old threshold (default: 30) - `--limit ` — Limit parcels for testing -- `meshic-pipeline full-refresh [--batch-size ...] [--limit ...]` +- `suhail-pipeline full-refresh [--batch-size ...] [--limit ...]` - Enrich ALL parcels (complete refresh) - Options: - `--batch-size ` — Number of parcels per batch (default: 50) - `--limit ` — Limit parcels for testing -- `meshic-pipeline delta-enrich [--batch-size ...] [--limit ...] [--fresh-table ...] [--auto-geometric] [--show-details/--no-details]` +- `suhail-pipeline delta-enrich [--batch-size ...] [--limit ...] [--fresh-table ...] [--auto-geometric] [--show-details/--no-details]` - Only process parcels with actual transaction price changes - Options: - `--batch-size ` — Number of parcels per batch (default: 200) @@ -456,13 +456,13 @@ This does not affect current functionality but should be addressed in the future ### Advanced/Composite Commands -- `meshic-pipeline smart-pipeline [--geometric-first] [--batch-size ...] [--bbox ...]` +- `suhail-pipeline smart-pipeline [--geometric-first] [--batch-size ...] [--bbox ...]` - Complete geometric + enrichment workflow (recommended for full runs) -- `meshic-pipeline monitor ` +- `suhail-pipeline monitor ` - Run enrichment monitoring commands -- `meshic-pipeline province-geometric [--strategy ...] [--recreate-db] [--save-as-temp ...]` +- `suhail-pipeline province-geometric [--strategy ...] [--recreate-db] [--save-as-temp ...]` - Geometric pipeline for a specific province - Options: - `province` — Province name (al_qassim, riyadh, madinah, asir, eastern, makkah) @@ -470,53 +470,53 @@ This does not affect current functionality but should be addressed in the future - `--recreate-db` — Drop and recreate the database schema - `--save-as-temp
    ` — Save parcels to a temporary table -- `meshic-pipeline saudi-arabia-geometric [--strategy ...] [--recreate-db] [--save-as-temp ...]` +- `suhail-pipeline saudi-arabia-geometric [--strategy ...] [--recreate-db] [--save-as-temp ...]` - Geometric pipeline for ALL Saudi provinces -- `meshic-pipeline discovery-summary` +- `suhail-pipeline discovery-summary` - Show province discovery capabilities/statistics -- `meshic-pipeline province-pipeline [--strategy ...] [--batch-size ...] [--geometric-first]` +- `suhail-pipeline province-pipeline [--strategy ...] [--batch-size ...] [--geometric-first]` - Complete province pipeline: geometric + enrichment for specific province -- `meshic-pipeline saudi-pipeline [--strategy ...] [--batch-size ...] [--geometric-first]` +- `suhail-pipeline saudi-pipeline [--strategy ...] [--batch-size ...] [--geometric-first]` - Complete Saudi Arabia pipeline: ALL provinces geometric + enrichment ### Usage Examples ```bash # Run geometric pipeline for a bounding box -meshic-pipeline geometric --bbox 46.428223 24.367114 47.010498 24.896402 +suhail-pipeline geometric --bbox 46.428223 24.367114 47.010498 24.896402 # Enrich new parcels (fast) -meshic-pipeline fast-enrich --batch-size 400 +suhail-pipeline fast-enrich --batch-size 400 # Incremental enrichment (parcels not updated in 7 days) -meshic-pipeline incremental-enrich --days-old 7 --batch-size 100 +suhail-pipeline incremental-enrich --days-old 7 --batch-size 100 # Full refresh (all enrichable parcels) -meshic-pipeline full-refresh --batch-size 50 +suhail-pipeline full-refresh --batch-size 50 # Delta enrichment (only parcels with price changes, auto-run geometric) -meshic-pipeline delta-enrich --auto-geometric +suhail-pipeline delta-enrich --auto-geometric # Province-wide geometric processing -meshic-pipeline province-geometric riyadh --strategy optimal +suhail-pipeline province-geometric riyadh --strategy optimal # All-province geometric processing -meshic-pipeline saudi-arabia-geometric --strategy efficient +suhail-pipeline saudi-arabia-geometric --strategy efficient # Complete province pipeline (geometric + enrichment) -meshic-pipeline province-pipeline riyadh --strategy optimal --batch-size 300 +suhail-pipeline province-pipeline riyadh --strategy optimal --batch-size 300 # Complete Saudi pipeline (all provinces) -meshic-pipeline saudi-pipeline --strategy efficient --batch-size 500 +suhail-pipeline saudi-pipeline --strategy efficient --batch-size 500 # Show discovery summary -meshic-pipeline discovery-summary +suhail-pipeline discovery-summary # Monitor enrichment status -meshic-pipeline monitor status +suhail-pipeline monitor status ``` ## 🧪 Running Tests diff --git a/REPOSITORY_INDEX.md b/REPOSITORY_INDEX.md index cf239f0..40c64e1 100644 --- a/REPOSITORY_INDEX.md +++ b/REPOSITORY_INDEX.md @@ -6,7 +6,7 @@ High-level map of the whole tree for navigation and onboarding. Pair with [docs/ | Path | Role | |------|------| -| [src/meshic_pipeline/](src/meshic_pipeline/) | Installable package: CLI (`cli.py`), geometric/enrichment runners, persistence, enrichment, geometry, decoder, discovery. | +| [src/suhail_pipeline/](src/suhail_pipeline/) | Installable package: CLI (`cli.py`), geometric/enrichment runners, persistence, enrichment, geometry, decoder, discovery. | | [alembic/](alembic/) | Database migrations (`env.py`, `versions/`, `versions_backup/`). | | [tests/](tests/) | `pytest` suites: `unit/`, `integration/`. | | [scripts/](scripts/) | Operational and utility scripts (`util/`, `db/`, reports). | @@ -15,7 +15,7 @@ High-level map of the whole tree for navigation and onboarding. Pair with [docs/ | Path | Role | |------|------| -| [pyproject.toml](pyproject.toml) | Project `meshic-pipeline`, dependencies, `[project.scripts]`, pytest config, `[dependency-groups].dev`. | +| [pyproject.toml](pyproject.toml) | Project `suhail-pipeline`, dependencies, `[project.scripts]`, pytest config, `[dependency-groups].dev`. | | [uv.lock](uv.lock) | Locked dependency graph for reproducible installs (`uv sync --frozen`). | | [.github/workflows/ci.yml](.github/workflows/ci.yml) | CI: `astral-sh/setup-uv`, `uv sync --all-groups --frozen`, `uv run pytest`. | @@ -57,5 +57,5 @@ High-level map of the whole tree for navigation and onboarding. Pair with [docs/ ## Entrypoints (from `pyproject.toml`) -- `meshic-pipeline` → `meshic_pipeline.cli:app` -- `check_db` → `meshic_pipeline.utils.db_checker:app` +- `suhail-pipeline` → `suhail_pipeline.cli:app` +- `check_db` → `suhail_pipeline.utils.db_checker:app` diff --git a/_bmad-output/project-context.md b/_bmad-output/project-context.md index 5a7a767..a12a3c2 100644 --- a/_bmad-output/project-context.md +++ b/_bmad-output/project-context.md @@ -9,12 +9,12 @@ sections_completed: # Project context for AI agents -Lean rules for implementing code in **meshic-pipeline**. Prefer existing patterns in `src/meshic_pipeline/`. Full narrative lives in `docs/` and `docs/docs-distillate/`. +Lean rules for implementing code in **suhail-pipeline**. Prefer existing patterns in `src/suhail_pipeline/`. Full narrative lives in `docs/` and `docs/docs-distillate/`. ## Technology stack and versions - **Language:** Python 3.9+ (`pyproject.toml`); **CI uses Python 3.11** — match CI when running tests locally. -- **Package:** `meshic-pipeline` 0.1.0, `src` layout, entrypoints `meshic-pipeline` and `check_db`. +- **Package:** `suhail-pipeline` 0.1.0, `src` layout, entrypoints `suhail-pipeline` and `check_db`. - **DB:** PostgreSQL + PostGIS; SQLAlchemy 2.x, GeoAlchemy2, Alembic; async via `asyncpg` where used. - **Geo / ETL:** GeoPandas, Shapely, h3/h3pandas, `mapbox-vector-tile`, mercantile, aiohttp. - **CLI / config:** Typer, Pydantic / pydantic-settings, YAML + `.env` for secrets. @@ -31,7 +31,7 @@ Lean rules for implementing code in **meshic-pipeline**. Prefer existing pattern ### Code organization -- **Package root:** `src/meshic_pipeline/` — new modules follow existing folders: `persistence/`, `enrichment/`, `geometry/`, `decoder/`, `downloader/`, `discovery/`. +- **Package root:** `src/suhail_pipeline/` — new modules follow existing folders: `persistence/`, `enrichment/`, `geometry/`, `decoder/`, `downloader/`, `discovery/`. - **CLI:** New commands go through `cli.py` with Typer; keep help strings and safe defaults consistent with documented commands in `docs/CLI_COMMAND_AUDIT.md`. - **Migrations:** Schema changes require Alembic revisions under `alembic/versions/`; do not hand-edit production without a migration. diff --git a/alembic/env.py b/alembic/env.py index 6511393..641b4d6 100644 --- a/alembic/env.py +++ b/alembic/env.py @@ -5,7 +5,7 @@ from sqlalchemy import engine_from_config from sqlalchemy import pool from alembic import context -from src.meshic_pipeline.persistence.models import Base +from src.suhail_pipeline.persistence.models import Base # this is the Alembic Config object, which provides # access to the values within the .ini file in use. diff --git a/alembic/versions/19c587b33197_add_critical_performance_indexes.py b/alembic/versions/19c587b33197_add_critical_performance_indexes.py index 2bfc940..84f7c83 100644 --- a/alembic/versions/19c587b33197_add_critical_performance_indexes.py +++ b/alembic/versions/19c587b33197_add_critical_performance_indexes.py @@ -1,6 +1,6 @@ """add_critical_performance_indexes -Critical database performance optimizations for the Meshic pipeline. +Critical database performance optimizations for the Suhail pipeline. Based on docs/archive/legacy-root-md/DATABASE_ARCHITECTURE_ANALYSIS.md recommendations. Provides 60-80% performance improvement through safe index additions. diff --git a/auto_restart_enrichment.sh b/auto_restart_enrichment.sh index ea2b1fc..a978d7d 100755 --- a/auto_restart_enrichment.sh +++ b/auto_restart_enrichment.sh @@ -18,7 +18,7 @@ while true; do if [[ "$PROCESS_STATUS" == "STOPPED" ]] && [[ "$REMAINING" -gt 0 ]]; then echo "[$TIMESTAMP] 🚨 Process stopped with $REMAINING parcels remaining - RESTARTING!" - nohup bash -lc "cd '$ROOT' && uv run meshic-pipeline full-refresh --batch-size 200" >> logs/enrichment-full.log 2>&1 & echo $! > logs/enrichment-full.pid + nohup bash -lc "cd '$ROOT' && uv run suhail-pipeline full-refresh --batch-size 200" >> logs/enrichment-full.log 2>&1 & echo $! > logs/enrichment-full.pid echo "[$TIMESTAMP] 🔄 Enrichment restarted with PID $(cat logs/enrichment-full.pid)" >> logs/auto_restart.log diff --git a/check_enrichment_status.sh b/check_enrichment_status.sh index 383cd0d..f113cb7 100755 --- a/check_enrichment_status.sh +++ b/check_enrichment_status.sh @@ -20,7 +20,7 @@ fi uv run python - <<'EOF' from sqlalchemy import create_engine, text -from meshic_pipeline.config import settings +from suhail_pipeline.config import settings import time engine = create_engine(str(settings.database_url)) diff --git a/docs/ACCEPTANCE_CRITERIA.md b/docs/ACCEPTANCE_CRITERIA.md index fc2dfd7..733129d 100644 --- a/docs/ACCEPTANCE_CRITERIA.md +++ b/docs/ACCEPTANCE_CRITERIA.md @@ -1,4 +1,4 @@ -# Acceptance Criteria: Meshic Geospatial Data Pipeline +# Acceptance Criteria: Suhail Geospatial Data Pipeline Date: 2025-10-16 Author: Mary (Business Analyst) @@ -29,9 +29,9 @@ Author: Mary (Business Analyst) ## Epic 2: Monitoring & Alerting - Monitoring CLI - - `meshic-pipeline monitor status` outputs tile queue counts by status, top errors, and age of oldest `in_progress`. - - `meshic-pipeline monitor recommend` outputs actionable scheduling guidance (which enrichment strategy to run next, with batch sizes). - - `meshic-pipeline monitor schedule-info` displays recommended cadence (daily/weekly/monthly) based on data freshness. + - `suhail-pipeline monitor status` outputs tile queue counts by status, top errors, and age of oldest `in_progress`. + - `suhail-pipeline monitor recommend` outputs actionable scheduling guidance (which enrichment strategy to run next, with batch sizes). + - `suhail-pipeline monitor schedule-info` displays recommended cadence (daily/weekly/monthly) based on data freshness. - Stale Reset - Scheduled job resets stale `in_progress` tiles after configurable threshold (e.g., 60 minutes) using built-in method. - Reset operations are logged with count of tiles affected. diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index e53d88c..68ac0fd 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -1,4 +1,4 @@ -# Architecture: Meshic Geospatial Data Pipeline (Lean) +# Architecture: Suhail Geospatial Data Pipeline (Lean) Date: 2025-10-16 Author: Mary (Business Analyst) @@ -8,7 +8,7 @@ Status: v0.1 (Lean Architecture for Planning) ## 1. System Context -Meshic is a two-stage, production-grade data pipeline for Saudi Arabian parcel intelligence: +Suhail is a two-stage, production-grade data pipeline for Saudi Arabian parcel intelligence: - Inputs - Province-specific Mapbox Vector Tiles (MVT) — geometry + attributes @@ -26,16 +26,16 @@ Meshic is a two-stage, production-grade data pipeline for Saudi Arabian parcel i ## 2. Core Components - CLI (Typer) - - `meshic-pipeline db-geometric`, `geometric`, `province-geometric`, `saudi-arabia-geometric` + - `suhail-pipeline db-geometric`, `geometric`, `province-geometric`, `saudi-arabia-geometric` - `fast-enrich`, `incremental-enrich`, `full-refresh`, `universal-metrics`, `delta-enrich` - `seed-tiles`, `discovery-summary`, `monitor ` - - File: `src/meshic_pipeline/cli.py` + - File: `src/suhail_pipeline/cli.py` - Discovery & Queue - `tile_urls` table stores z/x/y tile work items with statuses - Seeding via province bbox metadata (`provinces` table) - Model: `TileURL` with `claim_tiles_for_processing(..., SKIP LOCKED)` and `reset_stale_in_progress(...)` - - Files: `src/meshic_pipeline/persistence/models.py`, `src/meshic_pipeline/cli.py` + - Files: `src/suhail_pipeline/persistence/models.py`, `src/suhail_pipeline/cli.py` - Geometric Workers (Stage 1) - Downloader: `aiohttp` concurrent fetch with retry/backoff @@ -43,27 +43,27 @@ Meshic is a two-stage, production-grade data pipeline for Saudi Arabian parcel i - Validation: geometry sanity checks - Stitcher: PostGIS-based dissolve across tiles using temporary tables - Persister: Schema-driven writes, upsert support, temp table utilities - - Files: `src/meshic_pipeline/run_db_geometric.py`, `.../decoder/mvt_decoder.py`, `.../geometry/stitcher.py`, `.../persistence/postgis_persister.py`, `.../persistence/table_management.py` + - Files: `src/suhail_pipeline/run_db_geometric.py`, `.../decoder/mvt_decoder.py`, `.../geometry/stitcher.py`, `.../persistence/postgis_persister.py`, `.../persistence/table_management.py` - Enrichment Workers (Stage 2) - Strategies: fast, incremental, full, universal metrics, delta - API client: Suhail endpoints; batch processing; async persistence - - Files: `src/meshic_pipeline/run_enrichment_pipeline.py`, `.../enrichment/strategies.py`, `.../enrichment/api_client.py`, `.../persistence/enrichment_persister.py` + - Files: `src/suhail_pipeline/run_enrichment_pipeline.py`, `.../enrichment/strategies.py`, `.../enrichment/api_client.py`, `.../persistence/enrichment_persister.py` - Monitoring & Ops - CLI `monitor` subcommands; queue and enrichment visibility - Stale-tile reset via `TileURL.reset_stale_in_progress` - - Files: `src/meshic_pipeline/run_monitoring.py`, `src/meshic_pipeline/persistence/models.py` + - Files: `src/suhail_pipeline/run_monitoring.py`, `src/suhail_pipeline/persistence/models.py` - Configuration - Pydantic settings; DB URL, API endpoints, layers, batch sizes - Province metadata loader (from DB) and tile server templates - - File: `src/meshic_pipeline/config.py` + - File: `src/suhail_pipeline/config.py` - Schema & Migrations - SQLAlchemy models (15+ tables) - Alembic migrations incl. critical performance indexes and temp-table cleanup - - Files: `src/meshic_pipeline/persistence/models.py`, `alembic/versions/` + - Files: `src/suhail_pipeline/persistence/models.py`, `alembic/versions/` --- @@ -142,10 +142,10 @@ Indexes (via Alembic `19c587b33197...`): ## 7. Operations & Runbooks -- Seeding: `meshic-pipeline seed-tiles [--province|--region-slugs] [--limit|--stride]` -- Geometric run: `meshic-pipeline db-geometric --batch-size --concurrency --adaptive` +- Seeding: `suhail-pipeline seed-tiles [--province|--region-slugs] [--limit|--stride]` +- Geometric run: `suhail-pipeline db-geometric --batch-size --concurrency --adaptive` - Enrichment runs: `fast-enrich`, `incremental-enrich`, `full-refresh`, `universal-metrics`, `delta-enrich` -- Monitoring: `meshic-pipeline monitor status|recommend|schedule-info` +- Monitoring: `suhail-pipeline monitor status|recommend|schedule-info` - Stale reset: schedule `TileURL.reset_stale_in_progress(..., stale_minutes=60)` - Migrations: apply Alembic (indexes + hygiene) during low-traffic windows @@ -198,6 +198,6 @@ Temp Table Policy - docs/ACCEPTANCE_CRITERIA.md - docs/BROWNFIELD_PROJECT_DOCUMENTATION.md - alembic/versions/19c587b33197_add_critical_performance_indexes.py -- src/meshic_pipeline/cli.py -- src/meshic_pipeline/persistence/models.py +- src/suhail_pipeline/cli.py +- src/suhail_pipeline/persistence/models.py diff --git a/docs/BMAD_PROJECT_SCAN.md b/docs/BMAD_PROJECT_SCAN.md index 127280e..a1b628a 100644 --- a/docs/BMAD_PROJECT_SCAN.md +++ b/docs/BMAD_PROJECT_SCAN.md @@ -8,7 +8,7 @@ - **Type:** Python data platform — geospatial ETL + API enrichment (PostGIS, MVT, Typer CLI). - **Maturity:** Production-scale dataset documented in `BROWNFIELD_PROJECT_DOCUMENTATION.md` (millions of parcels and metrics). -- **Package:** `meshic-pipeline` (`pyproject.toml`), source layout under `src/meshic_pipeline/`. +- **Package:** `suhail-pipeline` (`pyproject.toml`), source layout under `src/suhail_pipeline/`. ## Authoritative documentation diff --git a/docs/BROWNFIELD_PROJECT_DOCUMENTATION.md b/docs/BROWNFIELD_PROJECT_DOCUMENTATION.md index 8709519..48619d5 100644 --- a/docs/BROWNFIELD_PROJECT_DOCUMENTATION.md +++ b/docs/BROWNFIELD_PROJECT_DOCUMENTATION.md @@ -1,7 +1,7 @@ -# Brownfield Project Documentation: Meshic Geospatial Data Pipeline +# Brownfield Project Documentation: Suhail Geospatial Data Pipeline **Document Type**: Comprehensive Brownfield Analysis -**Project**: Meshic Real Estate Data Processing Pipeline +**Project**: Suhail Real Estate Data Processing Pipeline **Date**: October 16, 2025 **Analyst**: Mary, Business Analyst **Status**: Production System with 2.16M+ Parcels @@ -10,7 +10,7 @@ ## Executive Summary -The Meshic pipeline is a **mature, production-scale geospatial data processing system** for Saudi Arabian real estate data. The system successfully processes 2.16M+ land parcels across Saudi Arabia with comprehensive enrichment data, demonstrating proven operational capability at commercial scale. +The Suhail pipeline is a **mature, production-scale geospatial data processing system** for Saudi Arabian real estate data. The system successfully processes 2.16M+ land parcels across Saudi Arabia with comprehensive enrichment data, demonstrating proven operational capability at commercial scale. ### Key Findings @@ -27,8 +27,8 @@ The Meshic pipeline is a **mature, production-scale geospatial data processing s ### 1.1 Database Reality Check -**Database Name**: `meshic` (NOT `meshic_pipeline` as documented) -**Owner**: `postgres` (NOT `meshic_user` as might be expected) +**Database Name**: `suhail` (NOT `suhail_pipeline` as documented) +**Owner**: `postgres` (NOT `suhail_user` as might be expected) #### Production Data Volumes (Actual Counts) @@ -58,7 +58,7 @@ in_progress: 788 tiles (2.3%) ```python # Actual Implementation from pyproject.toml Language: Python 3.9+ -Package Name: "meshic-pipeline" (v0.1.0) +Package Name: "suhail-pipeline" (v0.1.0) Database: PostgreSQL 14+ with PostGIS ORM: SQLAlchemy 2.0+ (async) HTTP Client: aiohttp (async) @@ -69,7 +69,7 @@ Spatial Processing: GeoPandas, Shapely, h3 #### Module Structure (Actual Source Code) ``` -src/meshic_pipeline/ +src/suhail_pipeline/ ├── cli.py # 18 commands (NOT 6-7 as simplified docs suggest) ├── config.py # Pydantic settings with province loading ├── persistence/ @@ -184,36 +184,36 @@ The system provides **18 commands** across 5 categories (not the simplified 6-7 #### Geometric Processing Commands ```bash -meshic-pipeline geometric [--bbox ...] [--recreate-db] [--save-as-temp
    ] -meshic-pipeline province-geometric [--strategy ...] [--recreate-db] -meshic-pipeline saudi-arabia-geometric [--strategy ...] [--recreate-db] -meshic-pipeline db-geometric [--batch-size] [--concurrency] [--adaptive] +suhail-pipeline geometric [--bbox ...] [--recreate-db] [--save-as-temp
    ] +suhail-pipeline province-geometric [--strategy ...] [--recreate-db] +suhail-pipeline saudi-arabia-geometric [--strategy ...] [--recreate-db] +suhail-pipeline db-geometric [--batch-size] [--concurrency] [--adaptive] ``` #### Enrichment Strategy Commands ```bash -meshic-pipeline fast-enrich [--batch-size 200] [--limit] -meshic-pipeline incremental-enrich [--batch-size 100] [--days-old 30] -meshic-pipeline full-refresh [--batch-size 50] [--limit] -meshic-pipeline universal-metrics [--batch-size 200] [--limit] -meshic-pipeline delta-enrich [--auto-geometric] [--fresh-table] [--show-details] +suhail-pipeline fast-enrich [--batch-size 200] [--limit] +suhail-pipeline incremental-enrich [--batch-size 100] [--days-old 30] +suhail-pipeline full-refresh [--batch-size 50] [--limit] +suhail-pipeline universal-metrics [--batch-size 200] [--limit] +suhail-pipeline delta-enrich [--auto-geometric] [--fresh-table] [--show-details] ``` #### Composite Workflow Commands ```bash -meshic-pipeline smart-pipeline [--geometric-first] [--batch-size] [--bbox] -meshic-pipeline province-pipeline [--strategy] [--batch-size] -meshic-pipeline saudi-pipeline [--strategy] [--batch-size] +suhail-pipeline smart-pipeline [--geometric-first] [--batch-size] [--bbox] +suhail-pipeline province-pipeline [--strategy] [--batch-size] +suhail-pipeline saudi-pipeline [--strategy] [--batch-size] ``` #### Orchestration & Monitoring ```bash -meshic-pipeline seed-tiles [--province] [--provinces] [--region-slugs] [--stride] [--limit] -meshic-pipeline discovery-summary -meshic-pipeline monitor +suhail-pipeline seed-tiles [--province] [--provinces] [--region-slugs] [--stride] [--limit] +suhail-pipeline discovery-summary +suhail-pipeline monitor ``` **Critical Observation**: The CLI is far more sophisticated than documented, with comprehensive province-wide and all-Saudi processing capabilities. @@ -479,7 +479,7 @@ DROP TABLE IF EXISTS temp_parcels, temp_neighborhoods, temp_subdivisions; **Priority 2: README Accuracy** - Update data coverage numbers (currently shows 1M parcels, should be 2.16M) -- Clarify which database name is actually used (`meshic` vs `meshic_pipeline`) +- Clarify which database name is actually used (`suhail` vs `suhail_pipeline`) - Document the 788 "in_progress" tiles situation ### 5.3 Code Quality Improvements @@ -677,7 +677,7 @@ DROP TABLE IF EXISTS temp_parcels, temp_neighborhoods, temp_subdivisions; ### The Bottom Line -The Meshic pipeline is a **production-grade geospatial data processing system** that has successfully achieved commercial scale with **2.16 million Saudi Arabian land parcels**. The system demonstrates: +The Suhail pipeline is a **production-grade geospatial data processing system** that has successfully achieved commercial scale with **2.16 million Saudi Arabian land parcels**. The system demonstrates: ✅ **Proven Architecture**: DB-driven tile orchestration, async processing, comprehensive enrichment ✅ **Production Data**: 76M+ price metrics, 130K+ building rules, 70K+ transactions diff --git a/docs/CLEAN_SLATE_PROTOCOL.md b/docs/CLEAN_SLATE_PROTOCOL.md index 5fcf966..cf2da6e 100644 --- a/docs/CLEAN_SLATE_PROTOCOL.md +++ b/docs/CLEAN_SLATE_PROTOCOL.md @@ -47,11 +47,11 @@ ``` - [ ] **8. Create the Project Database:** **Crucially, use `template0`** to ensure a pristine, extension-free starting point. ```sh - createdb meshic -T template0 + createdb suhail -T template0 ``` - [ ] **9. Enable PostGIS Extension:** Activate PostGIS within your newly created database. ```sh - psql -d meshic -c "CREATE EXTENSION postgis;" + psql -d suhail -c "CREATE EXTENSION postgis;" ``` --- @@ -87,16 +87,16 @@ uv run alembic upgrade head ``` - [ ] **16. Verify the Schema in PSQL:** - - [ ] Check for tables: `psql -d meshic -c "\dt"` - - [ ] Inspect a spatial table's structure: `psql -d meshic -c "\d+ your_spatial_table"` - - [ ] Confirm PostGIS tracking: `psql -d meshic -c "SELECT * FROM geometry_columns;"` + - [ ] Check for tables: `psql -d suhail -c "\dt"` + - [ ] Inspect a spatial table's structure: `psql -d suhail -c "\d+ your_spatial_table"` + - [ ] Confirm PostGIS tracking: `psql -d suhail -c "SELECT * FROM geometry_columns;"` - [ ] **17. Run Application Tests:** Execute your project's test suite to confirm that the database connection, schema, and spatial queries work as expected. --- **Reference DB URL:** ``` -postgresql+psycopg2://raedmundjennings@localhost:5432/meshic +postgresql+psycopg2://raedmundjennings@localhost:5432/suhail ``` --- diff --git a/docs/PRD.md b/docs/PRD.md index d4fd9ac..27bc733 100644 --- a/docs/PRD.md +++ b/docs/PRD.md @@ -1,4 +1,4 @@ -# Suhail Product Requirements Document (PRD): Meshic Geospatial Data Pipeline +# Suhail Product Requirements Document (PRD): Suhail Geospatial Data Pipeline Author: Mary (Business Analyst) Date: 2025-10-16 diff --git a/docs/PROJECT_BRIEF.md b/docs/PROJECT_BRIEF.md index 84c91f2..f8cffe1 100644 --- a/docs/PROJECT_BRIEF.md +++ b/docs/PROJECT_BRIEF.md @@ -1,4 +1,4 @@ -# Product Brief: Meshic Geospatial Data Pipeline +# Product Brief: Suhail Geospatial Data Pipeline Date: 2025-10-16 Author: Mary (Business Analyst) @@ -8,7 +8,7 @@ Status: Draft for PM Review ## Executive Summary -Meshic is a production-grade, DB-driven geospatial data pipeline that extracts, processes, and enriches Saudi Arabian land parcel data at national scale. The pipeline has processed 2.16M+ parcels across 12 provinces, generated 76M+ price metrics, and captured 130K+ building rules. A database-orchestrated tile queue (34,726 tiles) enables distributed, resumable geometric processing, followed by API-based enrichment (transactions, rules, price metrics). The system is ready for optimization and productization (monitoring, SLAs, client delivery interfaces). +Suhail is a production-grade, DB-driven geospatial data pipeline that extracts, processes, and enriches Saudi Arabian land parcel data at national scale. The pipeline has processed 2.16M+ parcels across 12 provinces, generated 76M+ price metrics, and captured 130K+ building rules. A database-orchestrated tile queue (34,726 tiles) enables distributed, resumable geometric processing, followed by API-based enrichment (transactions, rules, price metrics). The system is ready for optimization and productization (monitoring, SLAs, client delivery interfaces). --- @@ -146,7 +146,7 @@ Organizations require comprehensive, up-to-date, and spatially accurate parcel i - docs/BROWNFIELD_PROJECT_DOCUMENTATION.md - `docs/archive/legacy-root-md/DATABASE_ARCHITECTURE_ANALYSIS.md` - alembic/versions/19c587b33197_add_critical_performance_indexes.py - - src/meshic_pipeline/cli.py, src/meshic_pipeline/persistence/models.py, src/meshic_pipeline/run_db_geometric.py + - src/suhail_pipeline/cli.py, src/suhail_pipeline/persistence/models.py, src/suhail_pipeline/run_db_geometric.py --- diff --git a/docs/REPO_HYGIENE.md b/docs/REPO_HYGIENE.md index 52163e5..7a98814 100644 --- a/docs/REPO_HYGIENE.md +++ b/docs/REPO_HYGIENE.md @@ -15,7 +15,7 @@ Prioritized for **disk win** and **git index sanity**. Derived from a 2026-03-20 ## Done in this hygiene pass - Removed **symlink skill trees** and empty `.cursor/`, `.claude/`, `.agent/` directories. -- **`git rm`** tracked junk: `.cursor/rules` (missing on disk), `src/meshic_pipeline/.DS_Store`, `logs/*.pid`. +- **`git rm`** tracked junk: `.cursor/rules` (missing on disk), `src/suhail_pipeline/.DS_Store`, `logs/*.pid`. - **`.gitignore`:** `logs/*.pid` (plus existing `.DS_Store`, `.venv_py39_backup/`). ## Recommended next steps (highest impact first) diff --git a/docs/archive/WHAT_TO_DO_NEXT_PIPELINE_TABLES.md b/docs/archive/WHAT_TO_DO_NEXT_PIPELINE_TABLES.md index 0365a38..e32c504 100644 --- a/docs/archive/WHAT_TO_DO_NEXT_PIPELINE_TABLES.md +++ b/docs/archive/WHAT_TO_DO_NEXT_PIPELINE_TABLES.md @@ -78,7 +78,7 @@ def downgrade(): ## 6. **Update Version Control** - Commit all config, migration, and documentation changes to git with a clear message: - - `git add src/meshic_pipeline/config.py alembic/versions/ pipeline_table_uniqueness_review.md WHAT_TO_DO_NEXT_PIPELINE_TABLES.md` + - `git add src/suhail_pipeline/config.py alembic/versions/ pipeline_table_uniqueness_review.md WHAT_TO_DO_NEXT_PIPELINE_TABLES.md` - `git commit -m "Robustify pipeline table upsert/replace logic and document uniqueness strategy"` --- diff --git a/docs/archive/generated-txt/all_test_results.txt b/docs/archive/generated-txt/all_test_results.txt index d17aa7e..682dc3a 100644 --- a/docs/archive/generated-txt/all_test_results.txt +++ b/docs/archive/generated-txt/all_test_results.txt @@ -1,260 +1,260 @@ -2025-07-06 14:37:17,380 - meshic_pipeline.persistence.db - INFO - Setting up database tables... -2025-07-06 14:37:17,412 - meshic_pipeline.persistence.db - INFO - Tables checked/created successfully. -2025-07-06 14:37:17,415 - meshic_pipeline.enrichment.strategies - INFO - Found 126 enrichable parcels (including previously processed). +2025-07-06 14:37:17,380 - suhail_pipeline.persistence.db - INFO - Setting up database tables... +2025-07-06 14:37:17,412 - suhail_pipeline.persistence.db - INFO - Tables checked/created successfully. +2025-07-06 14:37:17,415 - suhail_pipeline.enrichment.strategies - INFO - Found 126 enrichable parcels (including previously processed). 2025-07-06 14:37:17,415 - __main__ - INFO - Starting get_all_enrichable_parcel_ids for 126 parcels with batch size 50 -2025-07-06 14:37:17,415 - meshic_pipeline.enrichment.processor - INFO - 🚀 Processing batch 1/3 (50 parcels) -2025-07-06 14:37:17,416 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,416 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,416 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,416 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,416 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,416 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,416 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,416 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,417 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,417 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,417 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,417 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,417 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,417 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,417 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,417 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,417 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,417 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,417 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,417 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,418 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,418 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,418 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,418 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,418 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,418 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,418 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,418 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,418 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,418 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,418 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,418 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,419 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,419 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,419 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,419 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,419 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,419 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,419 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,419 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,419 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,419 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,419 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,420 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,420 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,420 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,420 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,420 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,420 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,420 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:17,906 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,909 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,909 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,926 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,927 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,927 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,927 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,929 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,929 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,929 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,929 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,929 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,930 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,930 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,930 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,930 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,930 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,931 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,931 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,931 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,931 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,931 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,931 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,932 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,933 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,933 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,933 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,934 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,934 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,934 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,934 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,935 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,935 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:17,935 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,002 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,050 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,052 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,057 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,058 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,058 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,063 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,064 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,064 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,064 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,064 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,064 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,065 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,065 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,065 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,081 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,507 - meshic_pipeline.enrichment.processor - INFO - 🚀 Processing batch 2/3 (50 parcels) -2025-07-06 14:37:18,508 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,508 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,508 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,508 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,509 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,509 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,509 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,509 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,509 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,509 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,509 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,509 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,509 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,509 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,510 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,510 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,510 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,510 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,510 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,510 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,510 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,510 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,510 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,510 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,511 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,511 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,511 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,511 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,511 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,511 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,511 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,511 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,511 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,511 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,512 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,512 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,512 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,512 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,512 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,512 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,512 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,512 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,512 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,512 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,513 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,513 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,513 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,513 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,513 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,513 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:18,632 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,633 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,633 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,633 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,634 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,635 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,635 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,636 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,637 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,637 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,638 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,638 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,638 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,639 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,640 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,640 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,640 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,640 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,641 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,641 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,641 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,642 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,642 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,643 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,643 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,643 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,643 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,644 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,644 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,644 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,644 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,644 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,644 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,644 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,645 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,645 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,645 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,646 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,646 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,646 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,647 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,647 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,647 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,647 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,647 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,656 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,677 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,939 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,940 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:18,970 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,100 - meshic_pipeline.enrichment.processor - INFO - 🚀 Processing batch 3/3 (26 parcels) -2025-07-06 14:37:19,100 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,101 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,101 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,101 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,101 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,101 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,101 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,101 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,101 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,102 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,102 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,102 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,102 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,102 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,102 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,102 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,102 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,102 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,102 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,103 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,103 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,103 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,103 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,103 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,103 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,103 - meshic_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions -2025-07-06 14:37:19,226 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,227 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,227 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,227 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,227 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,228 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,228 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,229 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,229 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,229 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,229 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,229 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,229 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,229 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,229 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,231 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,231 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,231 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,232 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,233 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,234 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,234 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,234 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,234 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,234 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions -2025-07-06 14:37:19,258 - meshic_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,415 - suhail_pipeline.enrichment.processor - INFO - 🚀 Processing batch 1/3 (50 parcels) +2025-07-06 14:37:17,416 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,416 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,416 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,416 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,416 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,416 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,416 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,416 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,417 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,417 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,417 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,417 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,417 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,417 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,417 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,417 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,417 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,417 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,417 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,417 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,418 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,418 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,418 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,418 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,418 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,418 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,418 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,418 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,418 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,418 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,418 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,418 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,419 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,419 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,419 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,419 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,419 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,419 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,419 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,419 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,419 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,419 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,419 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,420 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,420 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,420 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,420 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,420 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,420 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,420 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:17,906 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,909 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,909 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,926 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,927 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,927 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,927 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,929 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,929 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,929 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,929 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,929 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,930 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,930 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,930 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,930 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,930 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,931 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,931 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,931 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,931 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,931 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,931 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,932 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,933 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,933 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,933 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,934 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,934 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,934 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,934 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,935 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,935 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:17,935 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,002 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,050 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,052 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,057 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,058 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,058 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,063 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,064 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,064 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,064 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,064 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,064 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,065 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,065 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,065 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,081 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,507 - suhail_pipeline.enrichment.processor - INFO - 🚀 Processing batch 2/3 (50 parcels) +2025-07-06 14:37:18,508 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,508 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,508 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,508 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,509 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,509 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,509 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,509 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,509 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,509 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,509 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,509 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,509 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,509 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,510 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,510 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,510 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,510 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,510 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,510 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,510 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,510 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,510 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,510 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,511 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,511 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,511 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,511 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,511 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,511 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,511 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,511 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,511 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,511 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,512 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,512 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,512 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,512 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,512 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,512 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,512 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,512 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,512 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,512 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,513 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,513 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,513 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,513 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,513 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,513 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:18,632 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,633 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,633 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,633 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,634 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,635 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,635 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,636 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,637 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,637 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,638 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,638 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,638 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,639 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,640 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,640 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,640 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,640 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,641 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,641 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,641 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,642 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,642 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,643 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,643 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,643 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,643 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,644 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,644 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,644 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,644 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,644 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,644 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,644 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,645 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,645 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,645 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,646 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,646 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,646 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,647 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,647 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,647 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,647 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,647 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,656 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,677 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,939 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,940 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:18,970 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,100 - suhail_pipeline.enrichment.processor - INFO - 🚀 Processing batch 3/3 (26 parcels) +2025-07-06 14:37:19,100 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,101 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,101 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,101 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,101 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,101 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,101 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,101 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,101 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,102 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,102 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,102 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,102 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,102 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,102 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,102 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,102 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,102 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,102 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,103 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,103 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,103 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,103 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,103 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,103 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,103 - suhail_pipeline.enrichment.api_client - INFO - Starting operation: fetch_transactions +2025-07-06 14:37:19,226 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,227 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,227 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,227 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,227 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,228 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,228 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,229 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,229 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,229 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,229 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,229 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,229 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,229 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,229 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,231 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,231 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,231 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,232 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,233 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,234 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,234 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,234 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,234 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,234 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions +2025-07-06 14:37:19,258 - suhail_pipeline.enrichment.api_client - INFO - Completed operation: fetch_transactions 2025-07-06 14:37:19,396 - __main__ - INFO - Finished get_all_enrichable_parcel_ids. Added 76 transactions, 124 building rules, 876 price metrics. diff --git a/docs/archive/generated-txt/flake8_report.txt b/docs/archive/generated-txt/flake8_report.txt index b12a442..d3b3101 100644 --- a/docs/archive/generated-txt/flake8_report.txt +++ b/docs/archive/generated-txt/flake8_report.txt @@ -1,895 +1,895 @@ src/__init__.py:1:1: W293 blank line contains whitespace -src/meshic_pipeline/__init__.py:1:62: W291 trailing whitespace -src/meshic_pipeline/cli.py:13:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/cli.py:43:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/cli.py:45:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/cli.py:46:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/cli.py:48:80: E501 line too long (88 > 79 characters) -src/meshic_pipeline/cli.py:51:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/cli.py:53:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/cli.py:54:80: E501 line too long (93 > 79 characters) -src/meshic_pipeline/cli.py:55:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/cli.py:57:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/cli.py:58:80: E501 line too long (101 > 79 characters) -src/meshic_pipeline/cli.py:60:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/cli.py:62:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/cli.py:63:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/cli.py:68:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/cli.py:70:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/cli.py:71:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/cli.py:72:80: E501 line too long (103 > 79 characters) -src/meshic_pipeline/cli.py:73:80: E501 line too long (109 > 79 characters) -src/meshic_pipeline/cli.py:74:80: E501 line too long (104 > 79 characters) -src/meshic_pipeline/cli.py:76:80: E501 line too long (106 > 79 characters) -src/meshic_pipeline/cli.py:77:80: E501 line too long (167 > 79 characters) -src/meshic_pipeline/cli.py:79:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/cli.py:81:80: E501 line too long (105 > 79 characters) -src/meshic_pipeline/cli.py:82:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/cli.py:83:80: E501 line too long (93 > 79 characters) -src/meshic_pipeline/cli.py:85:80: E501 line too long (97 > 79 characters) -src/meshic_pipeline/cli.py:87:80: E501 line too long (97 > 79 characters) -src/meshic_pipeline/cli.py:94:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/cli.py:105:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/cli.py:107:80: E501 line too long (113 > 79 characters) -src/meshic_pipeline/cli.py:108:80: E501 line too long (126 > 79 characters) -src/meshic_pipeline/cli.py:109:80: E501 line too long (107 > 79 characters) -src/meshic_pipeline/cli.py:110:80: E501 line too long (113 > 79 characters) -src/meshic_pipeline/cli.py:112:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/cli.py:114:80: E501 line too long (87 > 79 characters) -src/meshic_pipeline/cli.py:121:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/cli.py:123:80: E501 line too long (126 > 79 characters) -src/meshic_pipeline/cli.py:124:80: E501 line too long (107 > 79 characters) -src/meshic_pipeline/cli.py:125:80: E501 line too long (113 > 79 characters) -src/meshic_pipeline/cli.py:127:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/cli.py:129:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/cli.py:136:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/cli.py:143:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/cli.py:145:80: E501 line too long (113 > 79 characters) -src/meshic_pipeline/cli.py:146:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/cli.py:147:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/cli.py:148:80: E501 line too long (105 > 79 characters) -src/meshic_pipeline/cli.py:150:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/cli.py:152:61: W291 trailing whitespace -src/meshic_pipeline/cli.py:153:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/cli.py:158:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/cli.py:160:80: E501 line too long (134 > 79 characters) -src/meshic_pipeline/cli.py:161:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/cli.py:162:80: E501 line too long (105 > 79 characters) -src/meshic_pipeline/cli.py:164:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/cli.py:166:58: W291 trailing whitespace -src/meshic_pipeline/cli.py:172:1: E305 expected 2 blank lines after class or function definition, found 1 -src/meshic_pipeline/config.py:3:1: F401 'os' imported but unused -src/meshic_pipeline/config.py:5:1: F401 'typing.Tuple' imported but unused -src/meshic_pipeline/config.py:23:80: E501 line too long (93 > 79 characters) -src/meshic_pipeline/config.py:36:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/config.py:43:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/config.py:47:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/config.py:52:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/config.py:57:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/config.py:60:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/config.py:62:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/config.py:63:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/config.py:64:80: E501 line too long (87 > 79 characters) -src/meshic_pipeline/config.py:66:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/config.py:68:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/config.py:69:80: E501 line too long (87 > 79 characters) -src/meshic_pipeline/config.py:70:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/config.py:71:80: E501 line too long (87 > 79 characters) -src/meshic_pipeline/config.py:72:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/config.py:73:80: E501 line too long (95 > 79 characters) -src/meshic_pipeline/config.py:76:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/config.py:90:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/config.py:96:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/config.py:97:80: E501 line too long (94 > 79 characters) -src/meshic_pipeline/config.py:98:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/config.py:102:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/config.py:108:80: E501 line too long (87 > 79 characters) -src/meshic_pipeline/config.py:111:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/config.py:113:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/config.py:134:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/config.py:141:80: E501 line too long (93 > 79 characters) -src/meshic_pipeline/config.py:148:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/config.py:150:80: E501 line too long (108 > 79 characters) -src/meshic_pipeline/config.py:151:80: E501 line too long (100 > 79 characters) -src/meshic_pipeline/config.py:152:80: E501 line too long (100 > 79 characters) -src/meshic_pipeline/config.py:153:80: E501 line too long (108 > 79 characters) -src/meshic_pipeline/config.py:154:80: E501 line too long (109 > 79 characters) -src/meshic_pipeline/config.py:167:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/config.py:170:80: E501 line too long (99 > 79 characters) -src/meshic_pipeline/config.py:174:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/config.py:176:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/config.py:193:80: E501 line too long (150 > 79 characters) -src/meshic_pipeline/config.py:201:43: W291 trailing whitespace -src/meshic_pipeline/config.py:212:46: W291 trailing whitespace -src/meshic_pipeline/config.py:218:40: W291 trailing whitespace -src/meshic_pipeline/config.py:234:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/config.py:251:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/config.py:256:1: W293 blank line contains whitespace -src/meshic_pipeline/config.py:271:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/config.py:281:80: E501 line too long (101 > 79 characters) -src/meshic_pipeline/config.py:326:22: W291 trailing whitespace -src/meshic_pipeline/decoder/mvt_decoder.py:4:1: F401 'typing.Sequence' imported but unused -src/meshic_pipeline/decoder/mvt_decoder.py:6:1: F401 'json' imported but unused -src/meshic_pipeline/decoder/mvt_decoder.py:7:1: F401 'os' imported but unused -src/meshic_pipeline/decoder/mvt_decoder.py:22:80: E501 line too long (87 > 79 characters) -src/meshic_pipeline/decoder/mvt_decoder.py:26:71: W291 trailing whitespace -src/meshic_pipeline/decoder/mvt_decoder.py:29:1: W293 blank line contains whitespace -src/meshic_pipeline/decoder/mvt_decoder.py:30:80: E501 line too long (102 > 79 characters) -src/meshic_pipeline/decoder/mvt_decoder.py:38:1: W293 blank line contains whitespace -src/meshic_pipeline/decoder/mvt_decoder.py:50:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/decoder/mvt_decoder.py:55:80: E501 line too long (112 > 79 characters) -src/meshic_pipeline/decoder/mvt_decoder.py:76:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/decoder/mvt_decoder.py:84:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/decoder/mvt_decoder.py:92:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/decoder/mvt_decoder.py:138:80: E501 line too long (87 > 79 characters) -src/meshic_pipeline/decoder/mvt_decoder.py:146:1: W293 blank line contains whitespace -src/meshic_pipeline/decoder/mvt_decoder.py:150:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/decoder/mvt_decoder.py:154:1: W293 blank line contains whitespace -src/meshic_pipeline/decoder/mvt_decoder.py:161:1: W293 blank line contains whitespace -src/meshic_pipeline/decoder/mvt_decoder.py:167:1: W293 blank line contains whitespace -src/meshic_pipeline/decoder/mvt_decoder.py:171:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/decoder/mvt_decoder.py:177:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/decoder/mvt_decoder.py:178:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/decoder/mvt_decoder.py:183:80: E501 line too long (87 > 79 characters) -src/meshic_pipeline/decoder/mvt_decoder.py:187:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/decoder/mvt_decoder.py:189:1: W293 blank line contains whitespace -src/meshic_pipeline/decoder/mvt_decoder.py:192:1: W293 blank line contains whitespace -src/meshic_pipeline/decoder/mvt_decoder.py:196:80: E501 line too long (87 > 79 characters) -src/meshic_pipeline/decoder/mvt_decoder.py:210:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/decoder/mvt_decoder.py:216:1: W293 blank line contains whitespace -src/meshic_pipeline/discovery/tile_discovery.py:3:80: E501 line too long (172 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:19:1: F401 'shapely.wkb' imported but unused -src/meshic_pipeline/discovery/tile_discovery.py:30:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/discovery/tile_discovery.py:34:80: E501 line too long (96 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:37:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/discovery/tile_discovery.py:43:80: E501 line too long (96 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:49:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/discovery/tile_discovery.py:61:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/discovery/tile_discovery.py:73:80: E501 line too long (99 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:76:80: E501 line too long (105 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:77:80: E501 line too long (105 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:79:80: E501 line too long (112 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:85:80: E501 line too long (140 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:86:80: E501 line too long (113 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:87:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:88:80: E501 line too long (89 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:90:80: E501 line too long (98 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:91:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:100:80: E501 line too long (111 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:104:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/discovery/tile_discovery.py:111:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:114:80: E501 line too long (87 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:121:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:136:80: E501 line too long (96 > 79 characters) -src/meshic_pipeline/discovery/tile_discovery.py:143:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/discovery/tile_discovery.py:148:24: W291 trailing whitespace -src/meshic_pipeline/discovery/tile_discovery.py:148:25: W292 no newline at end of file -src/meshic_pipeline/downloader/async_tile_downloader.py:37:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/downloader/async_tile_downloader.py:41:80: E501 line too long (89 > 79 characters) -src/meshic_pipeline/downloader/async_tile_downloader.py:74:1: W293 blank line contains whitespace -src/meshic_pipeline/downloader/async_tile_downloader.py:80:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/downloader/async_tile_downloader.py:83:1: W293 blank line contains whitespace -src/meshic_pipeline/downloader/async_tile_downloader.py:97:52: E261 at least two spaces before inline comment -src/meshic_pipeline/downloader/async_tile_downloader.py:98:1: W293 blank line contains whitespace -src/meshic_pipeline/downloader/async_tile_downloader.py:99:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/downloader/async_tile_downloader.py:107:1: W293 blank line contains whitespace -src/meshic_pipeline/downloader/async_tile_downloader.py:111:1: W293 blank line contains whitespace -src/meshic_pipeline/downloader/async_tile_downloader.py:114:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/downloader/async_tile_downloader.py:116:1: W293 blank line contains whitespace -src/meshic_pipeline/downloader/async_tile_downloader.py:120:1: W293 blank line contains whitespace -src/meshic_pipeline/downloader/async_tile_downloader.py:121:32: W291 trailing whitespace -src/meshic_pipeline/enrichment/__init__.py:1:1: W391 blank line at end of file -src/meshic_pipeline/enrichment/api_client.py:3:1: F401 'typing.Any' imported but unused -src/meshic_pipeline/enrichment/api_client.py:28:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:39:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:43:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:44:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:45:80: E501 line too long (88 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:53:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:55:80: E501 line too long (95 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:68:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:86:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:95:80: E501 line too long (89 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:99:80: E501 line too long (106 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:118:80: E501 line too long (101 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:128:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:134:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:135:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:139:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:140:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:141:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:152:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:185:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:186:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:222:80: E501 line too long (93 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:228:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:235:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:241:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/enrichment/api_client.py:264:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/enrichment/processor.py:2:1: F401 'aiohttp' imported but unused -src/meshic_pipeline/enrichment/processor.py:12:1: F401 'meshic_pipeline.persistence.db.get_async_db_engine' imported but unused -src/meshic_pipeline/enrichment/processor.py:13:1: F401 'sqlalchemy.ext.asyncio.async_sessionmaker' imported but unused -src/meshic_pipeline/enrichment/processor.py:20:80: E501 line too long (97 > 79 characters) -src/meshic_pipeline/enrichment/processor.py:26:1: W293 blank line contains whitespace -src/meshic_pipeline/enrichment/processor.py:28:33: E203 whitespace before ':' -src/meshic_pipeline/enrichment/processor.py:30:80: E501 line too long (97 > 79 characters) -src/meshic_pipeline/enrichment/processor.py:33:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/enrichment/processor.py:34:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/enrichment/processor.py:45:1: W293 blank line contains whitespace -src/meshic_pipeline/enrichment/processor.py:47:80: E501 line too long (88 > 79 characters) -src/meshic_pipeline/enrichment/processor.py:48:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/enrichment/processor.py:49:80: E501 line too long (89 > 79 characters) -src/meshic_pipeline/enrichment/processor.py:56:80: E501 line too long (110 > 79 characters) -src/meshic_pipeline/enrichment/processor.py:57:80: E501 line too long (106 > 79 characters) -src/meshic_pipeline/enrichment/processor.py:60:65: W291 trailing whitespace -src/meshic_pipeline/enrichment/strategies.py:14:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/enrichment/strategies.py:30:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/enrichment/strategies.py:39:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/enrichment/strategies.py:43:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:48:1: W293 blank line contains whitespace -src/meshic_pipeline/enrichment/strategies.py:50:80: E501 line too long (99 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:51:80: E501 line too long (109 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:71:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/enrichment/strategies.py:88:80: E501 line too long (89 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:92:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/enrichment/strategies.py:99:1: W293 blank line contains whitespace -src/meshic_pipeline/enrichment/strategies.py:101:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:121:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:124:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/enrichment/strategies.py:129:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:133:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:134:80: E501 line too long (104 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:135:80: E501 line too long (100 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:136:80: E501 line too long (144 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:137:80: E501 line too long (115 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:144:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:145:80: E501 line too long (119 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:146:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:151:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/enrichment/strategies.py:152:25: W291 trailing whitespace -src/meshic_pipeline/enrichment/strategies.py:159:1: W293 blank line contains whitespace -src/meshic_pipeline/enrichment/strategies.py:164:1: W293 blank line contains whitespace -src/meshic_pipeline/enrichment/strategies.py:166:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:181:80: E501 line too long (101 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:186:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:189:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/enrichment/strategies.py:196:1: W293 blank line contains whitespace -src/meshic_pipeline/enrichment/strategies.py:221:21: F541 f-string is missing placeholders -src/meshic_pipeline/enrichment/strategies.py:222:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/enrichment/strategies.py:228:22: W291 trailing whitespace -src/meshic_pipeline/exceptions.py:19:1: F401 'typing.List' imported but unused -src/meshic_pipeline/exceptions.py:19:1: F401 'typing.Union' imported but unused -src/meshic_pipeline/exceptions.py:74:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:110:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:122:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:134:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:146:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:159:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:171:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:183:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:206:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:219:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:254:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/exceptions.py:255:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/exceptions.py:262:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/exceptions.py:286:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:304:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:316:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:321:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:329:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/exceptions.py:335:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:337:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/exceptions.py:338:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/exceptions.py:349:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:352:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:356:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:364:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/exceptions.py:370:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:372:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/exceptions.py:373:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/exceptions.py:385:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:388:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:394:1: W293 blank line contains whitespace -src/meshic_pipeline/exceptions.py:411:21: W291 trailing whitespace -src/meshic_pipeline/geometry/stitcher.py:9:1: F401 'shapely.geometry.Polygon' imported but unused -src/meshic_pipeline/geometry/stitcher.py:10:1: F401 'shapely.errors.GEOSException' imported but unused -src/meshic_pipeline/geometry/stitcher.py:11:1: F401 'shapely.ops.snap' imported but unused -src/meshic_pipeline/geometry/stitcher.py:12:1: F401 'tqdm.tqdm' imported but unused -src/meshic_pipeline/geometry/stitcher.py:13:1: F401 'mercantile' imported but unused -src/meshic_pipeline/geometry/stitcher.py:14:1: F401 'sqlalchemy.text' imported but unused -src/meshic_pipeline/geometry/stitcher.py:55:80: E501 line too long (108 > 79 characters) -src/meshic_pipeline/geometry/stitcher.py:68:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/geometry/stitcher.py:92:80: E501 line too long (103 > 79 characters) -src/meshic_pipeline/geometry/stitcher.py:132:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/geometry/stitcher.py:148:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/geometry/stitcher.py:150:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/geometry/stitcher.py:157:80: E501 line too long (117 > 79 characters) -src/meshic_pipeline/geometry/stitcher.py:163:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/geometry/stitcher.py:169:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/geometry/stitcher.py:174:80: E501 line too long (101 > 79 characters) -src/meshic_pipeline/geometry/stitcher.py:176:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/geometry/stitcher.py:181:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/geometry/stitcher.py:186:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/geometry/stitcher.py:214:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/geometry/stitcher.py:218:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/geometry/stitcher.py:223:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/geometry/validator.py:20:38: W291 trailing whitespace -src/meshic_pipeline/logging_utils.py:18:1: F401 'asyncio' imported but unused -src/meshic_pipeline/logging_utils.py:24:1: F401 'typing.Union' imported but unused -src/meshic_pipeline/logging_utils.py:27:1: F401 'weakref' imported but unused -src/meshic_pipeline/logging_utils.py:38:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:50:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:54:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:57:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:60:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:63:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:67:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:73:80: E501 line too long (122 > 79 characters) -src/meshic_pipeline/logging_utils.py:75:80: E501 line too long (111 > 79 characters) -src/meshic_pipeline/logging_utils.py:77:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/logging_utils.py:83:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:84:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/logging_utils.py:91:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:96:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:105:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:109:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:115:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:121:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/logging_utils.py:123:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:128:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:136:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:143:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:147:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:152:47: W291 trailing whitespace -src/meshic_pipeline/logging_utils.py:155:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:163:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/logging_utils.py:164:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:167:80: E501 line too long (94 > 79 characters) -src/meshic_pipeline/logging_utils.py:169:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:174:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:181:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:185:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:194:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:208:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:218:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:233:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:234:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/logging_utils.py:246:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:252:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:256:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/logging_utils.py:258:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:267:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/logging_utils.py:268:80: E501 line too long (93 > 79 characters) -src/meshic_pipeline/logging_utils.py:274:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:280:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:284:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:290:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:293:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/logging_utils.py:294:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:297:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:301:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:305:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:309:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:313:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:317:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:322:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:325:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/logging_utils.py:332:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:351:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:358:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:361:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:367:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:369:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/logging_utils.py:372:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:376:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:379:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:381:80: E501 line too long (97 > 79 characters) -src/meshic_pipeline/logging_utils.py:383:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:392:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/logging_utils.py:393:80: E501 line too long (88 > 79 characters) -src/meshic_pipeline/logging_utils.py:394:80: E501 line too long (101 > 79 characters) -src/meshic_pipeline/logging_utils.py:406:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:408:29: W291 trailing whitespace -src/meshic_pipeline/logging_utils.py:409:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/logging_utils.py:411:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:416:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:427:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:430:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/logging_utils.py:432:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:441:80: E501 line too long (99 > 79 characters) -src/meshic_pipeline/logging_utils.py:442:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:448:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:449:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/logging_utils.py:451:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:466:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:471:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:474:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:476:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/logging_utils.py:478:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:489:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/logging_utils.py:491:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:495:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/logging_utils.py:497:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:499:9: F811 redefinition of unused 'asyncio' from line 18 -src/meshic_pipeline/logging_utils.py:504:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:508:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/logging_utils.py:514:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:519:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:520:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/logging_utils.py:521:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:527:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/logging_utils.py:537:1: W293 blank line contains whitespace -src/meshic_pipeline/logging_utils.py:543:16: W291 trailing whitespace -src/meshic_pipeline/memory_utils.py:47:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:56:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:62:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/memory_utils.py:64:80: E501 line too long (93 > 79 characters) -src/meshic_pipeline/memory_utils.py:66:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:69:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:75:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/memory_utils.py:79:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:85:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:87:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:92:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:97:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:101:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:106:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:109:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:114:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:117:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:120:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:130:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:132:80: E501 line too long (107 > 79 characters) -src/meshic_pipeline/memory_utils.py:135:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:137:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:143:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:144:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/memory_utils.py:150:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:154:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:160:56: W291 trailing whitespace -src/meshic_pipeline/memory_utils.py:163:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:169:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:171:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:175:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:181:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:182:80: E501 line too long (97 > 79 characters) -src/meshic_pipeline/memory_utils.py:184:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:186:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:205:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/memory_utils.py:208:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:210:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:213:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:218:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/memory_utils.py:223:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:224:5: F841 local variable 'e' is assigned to but never used -src/meshic_pipeline/memory_utils.py:229:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:233:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:236:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/memory_utils.py:245:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/memory_utils.py:251:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:255:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:258:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:262:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:266:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:269:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:276:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:280:80: E501 line too long (108 > 79 characters) -src/meshic_pipeline/memory_utils.py:284:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:286:80: E501 line too long (95 > 79 characters) -src/meshic_pipeline/memory_utils.py:288:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:291:80: E501 line too long (99 > 79 characters) -src/meshic_pipeline/memory_utils.py:292:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:300:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:303:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:306:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/memory_utils.py:307:80: E501 line too long (97 > 79 characters) -src/meshic_pipeline/memory_utils.py:309:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:314:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/memory_utils.py:316:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:329:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:332:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:339:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/memory_utils.py:342:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:344:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/memory_utils.py:345:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:350:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:353:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:358:1: W293 blank line contains whitespace -src/meshic_pipeline/memory_utils.py:362:14: W291 trailing whitespace -src/meshic_pipeline/persistence/db.py:16:21: F821 undefined name 'settings' -src/meshic_pipeline/persistence/db.py:16:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/persistence/db.py:19:19: F821 undefined name 'settings' -src/meshic_pipeline/persistence/db.py:20:22: F821 undefined name 'settings' -src/meshic_pipeline/persistence/db.py:20:50: F821 undefined name 'settings' -src/meshic_pipeline/persistence/db.py:21:23: F821 undefined name 'settings' -src/meshic_pipeline/persistence/db.py:22:22: F821 undefined name 'settings' -src/meshic_pipeline/persistence/db.py:23:14: F821 undefined name 'settings' -src/meshic_pipeline/persistence/db.py:25:22: F821 undefined name 'settings' -src/meshic_pipeline/persistence/db.py:27:32: F821 undefined name 'settings' -src/meshic_pipeline/persistence/db.py:52:80: E501 line too long (114 > 79 characters) -src/meshic_pipeline/persistence/db.py:57:80: E501 line too long (109 > 79 characters) -src/meshic_pipeline/persistence/db.py:72:80: E501 line too long (88 > 79 characters) -src/meshic_pipeline/persistence/db.py:73:80: E501 line too long (88 > 79 characters) -src/meshic_pipeline/persistence/db.py:78:25: W291 trailing whitespace -src/meshic_pipeline/persistence/db.py:78:26: W292 no newline at end of file -src/meshic_pipeline/persistence/enrichment_persister.py:5:1: F401 'math.ceil' imported but unused -src/meshic_pipeline/persistence/enrichment_persister.py:19:80: E501 line too long (112 > 79 characters) -src/meshic_pipeline/persistence/enrichment_persister.py:46:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/persistence/enrichment_persister.py:82:80: E501 line too long (102 > 79 characters) -src/meshic_pipeline/persistence/enrichment_persister.py:105:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/persistence/enrichment_persister.py:120:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/persistence/enrichment_persister.py:136:48: W291 trailing whitespace -src/meshic_pipeline/persistence/models.py:2:1: F401 'sqlalchemy.create_engine' imported but unused -src/meshic_pipeline/persistence/models.py:2:1: F401 'sqlalchemy.select' imported but unused -src/meshic_pipeline/persistence/models.py:2:1: F401 'sqlalchemy.update' imported but unused -src/meshic_pipeline/persistence/models.py:18:1: F401 'sqlalchemy.orm.load_only' imported but unused -src/meshic_pipeline/persistence/models.py:35:80: E501 line too long (100 > 79 characters) -src/meshic_pipeline/persistence/models.py:43:80: E501 line too long (88 > 79 characters) -src/meshic_pipeline/persistence/models.py:50:80: E501 line too long (97 > 79 characters) -src/meshic_pipeline/persistence/models.py:67:80: E501 line too long (94 > 79 characters) -src/meshic_pipeline/persistence/models.py:73:1: W293 blank line contains whitespace -src/meshic_pipeline/persistence/models.py:77:80: E501 line too long (93 > 79 characters) -src/meshic_pipeline/persistence/models.py:84:80: E501 line too long (94 > 79 characters) -src/meshic_pipeline/persistence/models.py:89:80: E501 line too long (100 > 79 characters) -src/meshic_pipeline/persistence/models.py:90:1: W293 blank line contains whitespace -src/meshic_pipeline/persistence/models.py:96:80: E501 line too long (88 > 79 characters) -src/meshic_pipeline/persistence/models.py:103:80: E501 line too long (97 > 79 characters) -src/meshic_pipeline/persistence/models.py:121:1: W293 blank line contains whitespace -src/meshic_pipeline/persistence/models.py:125:80: E501 line too long (88 > 79 characters) -src/meshic_pipeline/persistence/models.py:127:1: W293 blank line contains whitespace -src/meshic_pipeline/persistence/models.py:128:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/persistence/models.py:135:80: E501 line too long (88 > 79 characters) -src/meshic_pipeline/persistence/models.py:144:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/persistence/models.py:147:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/persistence/models.py:179:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/persistence/models.py:189:80: E501 line too long (88 > 79 characters) -src/meshic_pipeline/persistence/models.py:193:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/persistence/models.py:198:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/persistence/models.py:202:1: W293 blank line contains whitespace -src/meshic_pipeline/persistence/models.py:205:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/persistence/models.py:210:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/persistence/models.py:217:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/persistence/models.py:225:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/persistence/models.py:233:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/persistence/models.py:241:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/persistence/models.py:248:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/persistence/models.py:255:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/persistence/models.py:261:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/persistence/models.py:267:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/persistence/models.py:280:80: E501 line too long (97 > 79 characters) -src/meshic_pipeline/persistence/models.py:301:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/persistence/models.py:303:80: E501 line too long (87 > 79 characters) -src/meshic_pipeline/persistence/models.py:306:80: E501 line too long (102 > 79 characters) -src/meshic_pipeline/persistence/models.py:312:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/persistence/models.py:313:80: E501 line too long (194 > 79 characters) -src/meshic_pipeline/persistence/models.py:324:33: E711 comparison to None should be 'if cond is not None:' -src/meshic_pipeline/persistence/models.py:326:80: E501 line too long (113 > 79 characters) -src/meshic_pipeline/persistence/models.py:328:23: W291 trailing whitespace -src/meshic_pipeline/persistence/models.py:328:24: W292 no newline at end of file -src/meshic_pipeline/persistence/postgis_persister.py:26:1: E305 expected 2 blank lines after class or function definition, found 1 -src/meshic_pipeline/persistence/postgis_persister.py:131:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/persistence/postgis_persister.py:134:71: W291 trailing whitespace -src/meshic_pipeline/persistence/postgis_persister.py:137:1: W293 blank line contains whitespace -src/meshic_pipeline/persistence/postgis_persister.py:142:1: W293 blank line contains whitespace -src/meshic_pipeline/persistence/postgis_persister.py:143:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:151:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:160:80: E501 line too long (99 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:162:80: E501 line too long (114 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:163:80: E501 line too long (101 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:172:80: E501 line too long (120 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:179:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:183:80: E501 line too long (97 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:205:80: E501 line too long (100 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:207:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:209:80: E501 line too long (100 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:211:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:217:80: E501 line too long (94 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:219:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:221:80: E501 line too long (88 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:248:80: E501 line too long (99 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:250:80: E501 line too long (96 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:258:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:259:80: E501 line too long (96 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:265:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:268:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:275:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:276:1: W293 blank line contains whitespace -src/meshic_pipeline/persistence/postgis_persister.py:279:80: E501 line too long (88 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:282:80: E501 line too long (98 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:284:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:291:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:295:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:309:80: E501 line too long (115 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:310:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:312:80: E501 line too long (101 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:314:80: E501 line too long (97 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:326:80: E501 line too long (126 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:340:80: E501 line too long (107 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:360:80: E501 line too long (111 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:362:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:363:80: E501 line too long (104 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:366:80: E501 line too long (121 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:368:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:375:80: E501 line too long (97 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:377:80: E501 line too long (96 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:402:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:415:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:424:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/persistence/postgis_persister.py:429:36: W291 trailing whitespace -src/meshic_pipeline/persistence/table_management.py:7:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/persistence/table_management.py:16:80: E501 line too long (94 > 79 characters) -src/meshic_pipeline/persistence/table_management.py:18:75: W291 trailing whitespace -src/meshic_pipeline/persistence/table_management.py:18:76: W292 no newline at end of file -src/meshic_pipeline/pipeline_orchestrator.py:4:1: F401 'typing.Dict' imported but unused -src/meshic_pipeline/pipeline_orchestrator.py:6:1: F401 'concurrent.futures' imported but unused -src/meshic_pipeline/pipeline_orchestrator.py:12:1: F401 'sqlalchemy.create_engine' imported but unused -src/meshic_pipeline/pipeline_orchestrator.py:22:1: F401 'sqlalchemy.text' imported but unused -src/meshic_pipeline/pipeline_orchestrator.py:77:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:82:80: E501 line too long (107 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:85:80: E501 line too long (110 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:109:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:114:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:171:80: E501 line too long (88 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:172:80: E501 line too long (89 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:210:80: E501 line too long (93 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:211:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:229:80: E501 line too long (98 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:231:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:252:5: F841 local variable 'stitcher' is assigned to but never used -src/meshic_pipeline/pipeline_orchestrator.py:252:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:264:80: E501 line too long (104 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:271:80: E501 line too long (101 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:274:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:295:80: E501 line too long (141 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:296:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:299:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:304:80: E501 line too long (96 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:305:80: E501 line too long (108 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:310:80: E501 line too long (111 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:315:80: E501 line too long (109 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:316:80: E501 line too long (126 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:333:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:340:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:354:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:359:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:365:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:369:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:378:80: E501 line too long (112 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:381:80: E501 line too long (119 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:388:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:394:80: E501 line too long (114 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:399:80: E501 line too long (94 > 79 characters) -src/meshic_pipeline/pipeline_orchestrator.py:409:80: E501 line too long (94 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:10:1: F401 'typing.Optional' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:11:1: F401 'sqlalchemy.create_engine' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:12:1: F401 'sqlalchemy.ext.asyncio.create_async_engine' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:12:80: E501 line too long (87 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:13:1: F401 'sqlalchemy.dialects.postgresql.insert as pg_insert' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:14:1: F401 'datetime.timedelta' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:23:1: F401 'meshic_pipeline.persistence.models.Base' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:23:1: F401 'meshic_pipeline.persistence.models.Transaction' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:23:1: F401 'meshic_pipeline.persistence.models.ParcelPriceMetric' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:23:1: F401 'meshic_pipeline.persistence.models.BuildingRule' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:23:1: E402 module level import not at top of file -src/meshic_pipeline/run_enrichment_pipeline.py:29:1: E402 module level import not at top of file -src/meshic_pipeline/run_enrichment_pipeline.py:30:1: F401 'logging' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:30:1: E402 module level import not at top of file -src/meshic_pipeline/run_enrichment_pipeline.py:31:1: F401 'sqlalchemy.BigInteger' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:31:1: F401 'sqlalchemy.Column' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:31:1: F401 'sqlalchemy.DateTime' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:31:1: F401 'sqlalchemy.Float' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:31:1: F401 'sqlalchemy.Integer' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:31:1: F401 'sqlalchemy.String' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:31:1: F401 'sqlalchemy.JSON' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:31:1: E402 module level import not at top of file -src/meshic_pipeline/run_enrichment_pipeline.py:31:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:32:1: F401 'sqlalchemy.orm.sessionmaker' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:32:1: E402 module level import not at top of file -src/meshic_pipeline/run_enrichment_pipeline.py:33:1: F401 'sqlalchemy.ForeignKey' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:33:1: E402 module level import not at top of file -src/meshic_pipeline/run_enrichment_pipeline.py:34:1: F401 'meshic_pipeline.exceptions.ValidationException' imported but unused -src/meshic_pipeline/run_enrichment_pipeline.py:34:1: E402 module level import not at top of file -src/meshic_pipeline/run_enrichment_pipeline.py:35:1: E402 module level import not at top of file -src/meshic_pipeline/run_enrichment_pipeline.py:36:1: E402 module level import not at top of file -src/meshic_pipeline/run_enrichment_pipeline.py:43:1: E402 module level import not at top of file -src/meshic_pipeline/run_enrichment_pipeline.py:44:1: E402 module level import not at top of file -src/meshic_pipeline/run_enrichment_pipeline.py:48:1: E402 module level import not at top of file -src/meshic_pipeline/run_enrichment_pipeline.py:51:1: E402 module level import not at top of file -src/meshic_pipeline/run_enrichment_pipeline.py:52:1: E402 module level import not at top of file -src/meshic_pipeline/run_enrichment_pipeline.py:72:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/run_enrichment_pipeline.py:75:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:81:80: E501 line too long (93 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:85:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:91:1: W293 blank line contains whitespace -src/meshic_pipeline/run_enrichment_pipeline.py:99:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:107:80: E501 line too long (127 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:111:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/run_enrichment_pipeline.py:115:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:117:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/run_enrichment_pipeline.py:122:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:126:80: E501 line too long (87 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:128:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/run_enrichment_pipeline.py:134:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:144:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/run_enrichment_pipeline.py:152:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:155:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/run_enrichment_pipeline.py:160:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:162:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:165:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:168:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:171:80: E501 line too long (117 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:173:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:176:1: W293 blank line contains whitespace -src/meshic_pipeline/run_enrichment_pipeline.py:187:80: E501 line too long (89 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:193:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:208:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:209:80: E501 line too long (89 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:213:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:223:80: E501 line too long (104 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:225:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:226:80: E501 line too long (106 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:230:80: E501 line too long (89 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:231:80: E501 line too long (101 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:234:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:239:32: F541 f-string is missing placeholders -src/meshic_pipeline/run_enrichment_pipeline.py:240:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:243:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:244:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:245:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:251:80: E501 line too long (87 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:263:80: E501 line too long (94 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:264:80: E501 line too long (112 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:294:80: E501 line too long (99 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:300:80: E501 line too long (98 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:303:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:305:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:306:1: W293 blank line contains whitespace -src/meshic_pipeline/run_enrichment_pipeline.py:309:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/run_enrichment_pipeline.py:311:80: E501 line too long (105 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:312:80: E501 line too long (108 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:313:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:314:80: E501 line too long (82 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:317:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:318:1: W293 blank line contains whitespace -src/meshic_pipeline/run_enrichment_pipeline.py:323:1: W293 blank line contains whitespace -src/meshic_pipeline/run_enrichment_pipeline.py:327:1: W293 blank line contains whitespace -src/meshic_pipeline/run_enrichment_pipeline.py:330:80: E501 line too long (89 > 79 characters) -src/meshic_pipeline/run_enrichment_pipeline.py:332:1: W293 blank line contains whitespace -src/meshic_pipeline/run_enrichment_pipeline.py:337:1: W293 blank line contains whitespace -src/meshic_pipeline/run_enrichment_pipeline.py:341:1: W293 blank line contains whitespace -src/meshic_pipeline/run_enrichment_pipeline.py:347:1: W293 blank line contains whitespace -src/meshic_pipeline/run_enrichment_pipeline.py:355:1: E305 expected 2 blank lines after class or function definition, found 1 -src/meshic_pipeline/run_enrichment_pipeline.py:356:10: W291 trailing whitespace -src/meshic_pipeline/run_geometric_pipeline.py:3:1: F401 'subprocess' imported but unused -src/meshic_pipeline/run_geometric_pipeline.py:4:1: F401 'sys' imported but unused -src/meshic_pipeline/run_geometric_pipeline.py:5:1: F401 'typing.Tuple' imported but unused -src/meshic_pipeline/run_geometric_pipeline.py:17:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/run_geometric_pipeline.py:23:80: E501 line too long (100 > 79 characters) -src/meshic_pipeline/run_geometric_pipeline.py:29:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/run_geometric_pipeline.py:48:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/run_geometric_pipeline.py:63:1: W293 blank line contains whitespace -src/meshic_pipeline/run_geometric_pipeline.py:65:51: W291 trailing whitespace -src/meshic_pipeline/run_geometric_pipeline.py:77:80: E501 line too long (86 > 79 characters) -src/meshic_pipeline/run_geometric_pipeline.py:79:1: W293 blank line contains whitespace -src/meshic_pipeline/run_geometric_pipeline.py:83:1: W293 blank line contains whitespace -src/meshic_pipeline/run_geometric_pipeline.py:105:1: E305 expected 2 blank lines after class or function definition, found 1 -src/meshic_pipeline/run_geometric_pipeline.py:106:10: W291 trailing whitespace -src/meshic_pipeline/run_monitoring.py:4:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/run_monitoring.py:17:1: E402 module level import not at top of file -src/meshic_pipeline/run_monitoring.py:21:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/run_monitoring.py:25:1: W293 blank line contains whitespace -src/meshic_pipeline/run_monitoring.py:28:80: E501 line too long (118 > 79 characters) -src/meshic_pipeline/run_monitoring.py:29:80: E501 line too long (123 > 79 characters) -src/meshic_pipeline/run_monitoring.py:30:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/run_monitoring.py:31:1: W293 blank line contains whitespace -src/meshic_pipeline/run_monitoring.py:34:19: W291 trailing whitespace -src/meshic_pipeline/run_monitoring.py:35:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/run_monitoring.py:36:80: E501 line too long (92 > 79 characters) -src/meshic_pipeline/run_monitoring.py:37:80: E501 line too long (94 > 79 characters) -src/meshic_pipeline/run_monitoring.py:38:80: E501 line too long (94 > 79 characters) -src/meshic_pipeline/run_monitoring.py:41:32: W291 trailing whitespace -src/meshic_pipeline/run_monitoring.py:44:1: W293 blank line contains whitespace -src/meshic_pipeline/run_monitoring.py:47:15: F541 f-string is missing placeholders -src/meshic_pipeline/run_monitoring.py:53:15: F541 f-string is missing placeholders -src/meshic_pipeline/run_monitoring.py:55:80: E501 line too long (99 > 79 characters) -src/meshic_pipeline/run_monitoring.py:57:1: W293 blank line contains whitespace -src/meshic_pipeline/run_monitoring.py:59:19: F541 f-string is missing placeholders -src/meshic_pipeline/run_monitoring.py:61:65: W291 trailing whitespace -src/meshic_pipeline/run_monitoring.py:66:1: W293 blank line contains whitespace -src/meshic_pipeline/run_monitoring.py:68:80: E501 line too long (107 > 79 characters) -src/meshic_pipeline/run_monitoring.py:70:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/run_monitoring.py:74:1: W293 blank line contains whitespace -src/meshic_pipeline/run_monitoring.py:76:80: E501 line too long (97 > 79 characters) -src/meshic_pipeline/run_monitoring.py:77:9: F841 local variable 'trigger_parcels' is assigned to but never used -src/meshic_pipeline/run_monitoring.py:79:80: E501 line too long (84 > 79 characters) -src/meshic_pipeline/run_monitoring.py:82:1: W293 blank line contains whitespace -src/meshic_pipeline/run_monitoring.py:84:80: E501 line too long (121 > 79 characters) -src/meshic_pipeline/run_monitoring.py:85:80: E501 line too long (121 > 79 characters) -src/meshic_pipeline/run_monitoring.py:87:1: W293 blank line contains whitespace -src/meshic_pipeline/run_monitoring.py:92:40: W291 trailing whitespace -src/meshic_pipeline/run_monitoring.py:95:1: W293 blank line contains whitespace -src/meshic_pipeline/run_monitoring.py:96:48: W291 trailing whitespace -src/meshic_pipeline/run_monitoring.py:100:40: W291 trailing whitespace -src/meshic_pipeline/run_monitoring.py:103:1: W293 blank line contains whitespace -src/meshic_pipeline/run_monitoring.py:106:1: W293 blank line contains whitespace -src/meshic_pipeline/run_monitoring.py:108:80: E501 line too long (104 > 79 characters) -src/meshic_pipeline/run_monitoring.py:109:1: W293 blank line contains whitespace -src/meshic_pipeline/run_monitoring.py:110:15: F541 f-string is missing placeholders -src/meshic_pipeline/run_monitoring.py:112:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/run_monitoring.py:115:1: W293 blank line contains whitespace -src/meshic_pipeline/run_monitoring.py:118:80: E501 line too long (98 > 79 characters) -src/meshic_pipeline/run_monitoring.py:119:80: E501 line too long (114 > 79 characters) -src/meshic_pipeline/run_monitoring.py:120:19: F541 f-string is missing placeholders -src/meshic_pipeline/run_monitoring.py:120:80: E501 line too long (108 > 79 characters) -src/meshic_pipeline/run_monitoring.py:121:80: E501 line too long (97 > 79 characters) -src/meshic_pipeline/run_monitoring.py:125:19: F541 f-string is missing placeholders -src/meshic_pipeline/run_monitoring.py:125:80: E501 line too long (108 > 79 characters) -src/meshic_pipeline/run_monitoring.py:127:1: W293 blank line contains whitespace -src/meshic_pipeline/run_monitoring.py:131:19: F541 f-string is missing placeholders -src/meshic_pipeline/run_monitoring.py:132:19: F541 f-string is missing placeholders -src/meshic_pipeline/run_monitoring.py:132:80: E501 line too long (111 > 79 characters) -src/meshic_pipeline/run_monitoring.py:135:77: W291 trailing whitespace -src/meshic_pipeline/run_monitoring.py:136:19: F541 f-string is missing placeholders -src/meshic_pipeline/run_monitoring.py:136:80: E501 line too long (112 > 79 characters) -src/meshic_pipeline/run_monitoring.py:138:1: W293 blank line contains whitespace -src/meshic_pipeline/run_monitoring.py:143:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/run_monitoring.py:149:1: W293 blank line contains whitespace -src/meshic_pipeline/run_monitoring.py:152:80: E501 line too long (118 > 79 characters) -src/meshic_pipeline/run_monitoring.py:154:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/run_monitoring.py:155:80: E501 line too long (94 > 79 characters) -src/meshic_pipeline/run_monitoring.py:156:80: E501 line too long (98 > 79 characters) -src/meshic_pipeline/run_monitoring.py:158:80: E501 line too long (88 > 79 characters) -src/meshic_pipeline/run_monitoring.py:166:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/run_monitoring.py:166:15: W291 trailing whitespace -src/meshic_pipeline/run_monitoring.py:175:80: E501 line too long (87 > 79 characters) -src/meshic_pipeline/run_monitoring.py:176:80: E501 line too long (91 > 79 characters) -src/meshic_pipeline/run_monitoring.py:180:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/run_monitoring.py:181:80: E501 line too long (85 > 79 characters) -src/meshic_pipeline/run_monitoring.py:189:80: E501 line too long (81 > 79 characters) -src/meshic_pipeline/run_monitoring.py:191:1: E305 expected 2 blank lines after class or function definition, found 1 -src/meshic_pipeline/run_monitoring.py:192:10: W291 trailing whitespace -src/meshic_pipeline/run_tile_pipeline.py:14:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/run_tile_pipeline.py:28:80: E501 line too long (105 > 79 characters) -src/meshic_pipeline/run_tile_pipeline.py:30:80: E501 line too long (95 > 79 characters) -src/meshic_pipeline/run_tile_pipeline.py:37:80: E501 line too long (93 > 79 characters) -src/meshic_pipeline/run_tile_pipeline.py:39:80: E501 line too long (83 > 79 characters) -src/meshic_pipeline/run_tile_pipeline.py:42:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/run_tile_pipeline.py:51:80: E501 line too long (107 > 79 characters) -src/meshic_pipeline/run_tile_pipeline.py:59:1: E305 expected 2 blank lines after class or function definition, found 1 -src/meshic_pipeline/run_tile_pipeline.py:60:11: W291 trailing whitespace -src/meshic_pipeline/run_tile_pipeline.py:60:12: W292 no newline at end of file -src/meshic_pipeline/show_discovery_summary.py:4:80: E501 line too long (80 > 79 characters) -src/meshic_pipeline/show_discovery_summary.py:12:1: E402 module level import not at top of file -src/meshic_pipeline/show_discovery_summary.py:13:1: E402 module level import not at top of file -src/meshic_pipeline/show_discovery_summary.py:15:1: E302 expected 2 blank lines, found 1 -src/meshic_pipeline/show_discovery_summary.py:19:1: W293 blank line contains whitespace -src/meshic_pipeline/show_discovery_summary.py:21:80: E501 line too long (107 > 79 characters) -src/meshic_pipeline/show_discovery_summary.py:27:1: W293 blank line contains whitespace -src/meshic_pipeline/show_discovery_summary.py:28:11: F541 f-string is missing placeholders -src/meshic_pipeline/show_discovery_summary.py:31:1: W293 blank line contains whitespace -src/meshic_pipeline/show_discovery_summary.py:32:11: F541 f-string is missing placeholders -src/meshic_pipeline/show_discovery_summary.py:35:1: W293 blank line contains whitespace -src/meshic_pipeline/show_discovery_summary.py:41:1: W293 blank line contains whitespace -src/meshic_pipeline/show_discovery_summary.py:42:11: F541 f-string is missing placeholders -src/meshic_pipeline/show_discovery_summary.py:43:11: F541 f-string is missing placeholders -src/meshic_pipeline/show_discovery_summary.py:44:11: F541 f-string is missing placeholders -src/meshic_pipeline/show_discovery_summary.py:45:11: F541 f-string is missing placeholders -src/meshic_pipeline/show_discovery_summary.py:46:1: W293 blank line contains whitespace -src/meshic_pipeline/show_discovery_summary.py:47:11: F541 f-string is missing placeholders -src/meshic_pipeline/show_discovery_summary.py:48:11: F541 f-string is missing placeholders -src/meshic_pipeline/show_discovery_summary.py:49:11: F541 f-string is missing placeholders -src/meshic_pipeline/show_discovery_summary.py:50:11: F541 f-string is missing placeholders -src/meshic_pipeline/show_discovery_summary.py:51:11: F541 f-string is missing placeholders -src/meshic_pipeline/show_discovery_summary.py:52:11: F541 f-string is missing placeholders -src/meshic_pipeline/show_discovery_summary.py:53:11: F541 f-string is missing placeholders -src/meshic_pipeline/show_discovery_summary.py:54:11: F541 f-string is missing placeholders -src/meshic_pipeline/show_discovery_summary.py:55:11: F541 f-string is missing placeholders -src/meshic_pipeline/show_discovery_summary.py:55:80: E501 line too long (90 > 79 characters) -src/meshic_pipeline/show_discovery_summary.py:56:1: W293 blank line contains whitespace -src/meshic_pipeline/show_discovery_summary.py:57:11: F541 f-string is missing placeholders -src/meshic_pipeline/show_discovery_summary.py:59:1: E305 expected 2 blank lines after class or function definition, found 1 -src/meshic_pipeline/show_discovery_summary.py:60:11: W291 trailing whitespace -src/meshic_pipeline/utils/tile_list_generator.py:10:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/__init__.py:1:62: W291 trailing whitespace +src/suhail_pipeline/cli.py:13:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/cli.py:43:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/cli.py:45:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/cli.py:46:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/cli.py:48:80: E501 line too long (88 > 79 characters) +src/suhail_pipeline/cli.py:51:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/cli.py:53:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/cli.py:54:80: E501 line too long (93 > 79 characters) +src/suhail_pipeline/cli.py:55:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/cli.py:57:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/cli.py:58:80: E501 line too long (101 > 79 characters) +src/suhail_pipeline/cli.py:60:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/cli.py:62:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/cli.py:63:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/cli.py:68:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/cli.py:70:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/cli.py:71:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/cli.py:72:80: E501 line too long (103 > 79 characters) +src/suhail_pipeline/cli.py:73:80: E501 line too long (109 > 79 characters) +src/suhail_pipeline/cli.py:74:80: E501 line too long (104 > 79 characters) +src/suhail_pipeline/cli.py:76:80: E501 line too long (106 > 79 characters) +src/suhail_pipeline/cli.py:77:80: E501 line too long (167 > 79 characters) +src/suhail_pipeline/cli.py:79:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/cli.py:81:80: E501 line too long (105 > 79 characters) +src/suhail_pipeline/cli.py:82:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/cli.py:83:80: E501 line too long (93 > 79 characters) +src/suhail_pipeline/cli.py:85:80: E501 line too long (97 > 79 characters) +src/suhail_pipeline/cli.py:87:80: E501 line too long (97 > 79 characters) +src/suhail_pipeline/cli.py:94:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/cli.py:105:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/cli.py:107:80: E501 line too long (113 > 79 characters) +src/suhail_pipeline/cli.py:108:80: E501 line too long (126 > 79 characters) +src/suhail_pipeline/cli.py:109:80: E501 line too long (107 > 79 characters) +src/suhail_pipeline/cli.py:110:80: E501 line too long (113 > 79 characters) +src/suhail_pipeline/cli.py:112:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/cli.py:114:80: E501 line too long (87 > 79 characters) +src/suhail_pipeline/cli.py:121:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/cli.py:123:80: E501 line too long (126 > 79 characters) +src/suhail_pipeline/cli.py:124:80: E501 line too long (107 > 79 characters) +src/suhail_pipeline/cli.py:125:80: E501 line too long (113 > 79 characters) +src/suhail_pipeline/cli.py:127:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/cli.py:129:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/cli.py:136:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/cli.py:143:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/cli.py:145:80: E501 line too long (113 > 79 characters) +src/suhail_pipeline/cli.py:146:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/cli.py:147:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/cli.py:148:80: E501 line too long (105 > 79 characters) +src/suhail_pipeline/cli.py:150:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/cli.py:152:61: W291 trailing whitespace +src/suhail_pipeline/cli.py:153:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/cli.py:158:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/cli.py:160:80: E501 line too long (134 > 79 characters) +src/suhail_pipeline/cli.py:161:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/cli.py:162:80: E501 line too long (105 > 79 characters) +src/suhail_pipeline/cli.py:164:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/cli.py:166:58: W291 trailing whitespace +src/suhail_pipeline/cli.py:172:1: E305 expected 2 blank lines after class or function definition, found 1 +src/suhail_pipeline/config.py:3:1: F401 'os' imported but unused +src/suhail_pipeline/config.py:5:1: F401 'typing.Tuple' imported but unused +src/suhail_pipeline/config.py:23:80: E501 line too long (93 > 79 characters) +src/suhail_pipeline/config.py:36:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/config.py:43:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/config.py:47:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/config.py:52:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/config.py:57:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/config.py:60:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/config.py:62:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/config.py:63:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/config.py:64:80: E501 line too long (87 > 79 characters) +src/suhail_pipeline/config.py:66:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/config.py:68:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/config.py:69:80: E501 line too long (87 > 79 characters) +src/suhail_pipeline/config.py:70:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/config.py:71:80: E501 line too long (87 > 79 characters) +src/suhail_pipeline/config.py:72:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/config.py:73:80: E501 line too long (95 > 79 characters) +src/suhail_pipeline/config.py:76:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/config.py:90:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/config.py:96:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/config.py:97:80: E501 line too long (94 > 79 characters) +src/suhail_pipeline/config.py:98:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/config.py:102:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/config.py:108:80: E501 line too long (87 > 79 characters) +src/suhail_pipeline/config.py:111:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/config.py:113:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/config.py:134:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/config.py:141:80: E501 line too long (93 > 79 characters) +src/suhail_pipeline/config.py:148:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/config.py:150:80: E501 line too long (108 > 79 characters) +src/suhail_pipeline/config.py:151:80: E501 line too long (100 > 79 characters) +src/suhail_pipeline/config.py:152:80: E501 line too long (100 > 79 characters) +src/suhail_pipeline/config.py:153:80: E501 line too long (108 > 79 characters) +src/suhail_pipeline/config.py:154:80: E501 line too long (109 > 79 characters) +src/suhail_pipeline/config.py:167:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/config.py:170:80: E501 line too long (99 > 79 characters) +src/suhail_pipeline/config.py:174:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/config.py:176:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/config.py:193:80: E501 line too long (150 > 79 characters) +src/suhail_pipeline/config.py:201:43: W291 trailing whitespace +src/suhail_pipeline/config.py:212:46: W291 trailing whitespace +src/suhail_pipeline/config.py:218:40: W291 trailing whitespace +src/suhail_pipeline/config.py:234:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/config.py:251:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/config.py:256:1: W293 blank line contains whitespace +src/suhail_pipeline/config.py:271:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/config.py:281:80: E501 line too long (101 > 79 characters) +src/suhail_pipeline/config.py:326:22: W291 trailing whitespace +src/suhail_pipeline/decoder/mvt_decoder.py:4:1: F401 'typing.Sequence' imported but unused +src/suhail_pipeline/decoder/mvt_decoder.py:6:1: F401 'json' imported but unused +src/suhail_pipeline/decoder/mvt_decoder.py:7:1: F401 'os' imported but unused +src/suhail_pipeline/decoder/mvt_decoder.py:22:80: E501 line too long (87 > 79 characters) +src/suhail_pipeline/decoder/mvt_decoder.py:26:71: W291 trailing whitespace +src/suhail_pipeline/decoder/mvt_decoder.py:29:1: W293 blank line contains whitespace +src/suhail_pipeline/decoder/mvt_decoder.py:30:80: E501 line too long (102 > 79 characters) +src/suhail_pipeline/decoder/mvt_decoder.py:38:1: W293 blank line contains whitespace +src/suhail_pipeline/decoder/mvt_decoder.py:50:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/decoder/mvt_decoder.py:55:80: E501 line too long (112 > 79 characters) +src/suhail_pipeline/decoder/mvt_decoder.py:76:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/decoder/mvt_decoder.py:84:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/decoder/mvt_decoder.py:92:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/decoder/mvt_decoder.py:138:80: E501 line too long (87 > 79 characters) +src/suhail_pipeline/decoder/mvt_decoder.py:146:1: W293 blank line contains whitespace +src/suhail_pipeline/decoder/mvt_decoder.py:150:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/decoder/mvt_decoder.py:154:1: W293 blank line contains whitespace +src/suhail_pipeline/decoder/mvt_decoder.py:161:1: W293 blank line contains whitespace +src/suhail_pipeline/decoder/mvt_decoder.py:167:1: W293 blank line contains whitespace +src/suhail_pipeline/decoder/mvt_decoder.py:171:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/decoder/mvt_decoder.py:177:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/decoder/mvt_decoder.py:178:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/decoder/mvt_decoder.py:183:80: E501 line too long (87 > 79 characters) +src/suhail_pipeline/decoder/mvt_decoder.py:187:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/decoder/mvt_decoder.py:189:1: W293 blank line contains whitespace +src/suhail_pipeline/decoder/mvt_decoder.py:192:1: W293 blank line contains whitespace +src/suhail_pipeline/decoder/mvt_decoder.py:196:80: E501 line too long (87 > 79 characters) +src/suhail_pipeline/decoder/mvt_decoder.py:210:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/decoder/mvt_decoder.py:216:1: W293 blank line contains whitespace +src/suhail_pipeline/discovery/tile_discovery.py:3:80: E501 line too long (172 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:19:1: F401 'shapely.wkb' imported but unused +src/suhail_pipeline/discovery/tile_discovery.py:30:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/discovery/tile_discovery.py:34:80: E501 line too long (96 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:37:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/discovery/tile_discovery.py:43:80: E501 line too long (96 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:49:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/discovery/tile_discovery.py:61:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/discovery/tile_discovery.py:73:80: E501 line too long (99 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:76:80: E501 line too long (105 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:77:80: E501 line too long (105 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:79:80: E501 line too long (112 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:85:80: E501 line too long (140 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:86:80: E501 line too long (113 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:87:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:88:80: E501 line too long (89 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:90:80: E501 line too long (98 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:91:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:100:80: E501 line too long (111 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:104:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/discovery/tile_discovery.py:111:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:114:80: E501 line too long (87 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:121:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:136:80: E501 line too long (96 > 79 characters) +src/suhail_pipeline/discovery/tile_discovery.py:143:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/discovery/tile_discovery.py:148:24: W291 trailing whitespace +src/suhail_pipeline/discovery/tile_discovery.py:148:25: W292 no newline at end of file +src/suhail_pipeline/downloader/async_tile_downloader.py:37:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/downloader/async_tile_downloader.py:41:80: E501 line too long (89 > 79 characters) +src/suhail_pipeline/downloader/async_tile_downloader.py:74:1: W293 blank line contains whitespace +src/suhail_pipeline/downloader/async_tile_downloader.py:80:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/downloader/async_tile_downloader.py:83:1: W293 blank line contains whitespace +src/suhail_pipeline/downloader/async_tile_downloader.py:97:52: E261 at least two spaces before inline comment +src/suhail_pipeline/downloader/async_tile_downloader.py:98:1: W293 blank line contains whitespace +src/suhail_pipeline/downloader/async_tile_downloader.py:99:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/downloader/async_tile_downloader.py:107:1: W293 blank line contains whitespace +src/suhail_pipeline/downloader/async_tile_downloader.py:111:1: W293 blank line contains whitespace +src/suhail_pipeline/downloader/async_tile_downloader.py:114:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/downloader/async_tile_downloader.py:116:1: W293 blank line contains whitespace +src/suhail_pipeline/downloader/async_tile_downloader.py:120:1: W293 blank line contains whitespace +src/suhail_pipeline/downloader/async_tile_downloader.py:121:32: W291 trailing whitespace +src/suhail_pipeline/enrichment/__init__.py:1:1: W391 blank line at end of file +src/suhail_pipeline/enrichment/api_client.py:3:1: F401 'typing.Any' imported but unused +src/suhail_pipeline/enrichment/api_client.py:28:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:39:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:43:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:44:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:45:80: E501 line too long (88 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:53:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:55:80: E501 line too long (95 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:68:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:86:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:95:80: E501 line too long (89 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:99:80: E501 line too long (106 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:118:80: E501 line too long (101 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:128:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:134:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:135:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:139:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:140:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:141:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:152:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:185:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:186:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:222:80: E501 line too long (93 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:228:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:235:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:241:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/enrichment/api_client.py:264:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/enrichment/processor.py:2:1: F401 'aiohttp' imported but unused +src/suhail_pipeline/enrichment/processor.py:12:1: F401 'suhail_pipeline.persistence.db.get_async_db_engine' imported but unused +src/suhail_pipeline/enrichment/processor.py:13:1: F401 'sqlalchemy.ext.asyncio.async_sessionmaker' imported but unused +src/suhail_pipeline/enrichment/processor.py:20:80: E501 line too long (97 > 79 characters) +src/suhail_pipeline/enrichment/processor.py:26:1: W293 blank line contains whitespace +src/suhail_pipeline/enrichment/processor.py:28:33: E203 whitespace before ':' +src/suhail_pipeline/enrichment/processor.py:30:80: E501 line too long (97 > 79 characters) +src/suhail_pipeline/enrichment/processor.py:33:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/enrichment/processor.py:34:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/enrichment/processor.py:45:1: W293 blank line contains whitespace +src/suhail_pipeline/enrichment/processor.py:47:80: E501 line too long (88 > 79 characters) +src/suhail_pipeline/enrichment/processor.py:48:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/enrichment/processor.py:49:80: E501 line too long (89 > 79 characters) +src/suhail_pipeline/enrichment/processor.py:56:80: E501 line too long (110 > 79 characters) +src/suhail_pipeline/enrichment/processor.py:57:80: E501 line too long (106 > 79 characters) +src/suhail_pipeline/enrichment/processor.py:60:65: W291 trailing whitespace +src/suhail_pipeline/enrichment/strategies.py:14:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/enrichment/strategies.py:30:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/enrichment/strategies.py:39:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/enrichment/strategies.py:43:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:48:1: W293 blank line contains whitespace +src/suhail_pipeline/enrichment/strategies.py:50:80: E501 line too long (99 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:51:80: E501 line too long (109 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:71:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/enrichment/strategies.py:88:80: E501 line too long (89 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:92:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/enrichment/strategies.py:99:1: W293 blank line contains whitespace +src/suhail_pipeline/enrichment/strategies.py:101:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:121:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:124:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/enrichment/strategies.py:129:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:133:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:134:80: E501 line too long (104 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:135:80: E501 line too long (100 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:136:80: E501 line too long (144 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:137:80: E501 line too long (115 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:144:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:145:80: E501 line too long (119 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:146:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:151:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/enrichment/strategies.py:152:25: W291 trailing whitespace +src/suhail_pipeline/enrichment/strategies.py:159:1: W293 blank line contains whitespace +src/suhail_pipeline/enrichment/strategies.py:164:1: W293 blank line contains whitespace +src/suhail_pipeline/enrichment/strategies.py:166:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:181:80: E501 line too long (101 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:186:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:189:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/enrichment/strategies.py:196:1: W293 blank line contains whitespace +src/suhail_pipeline/enrichment/strategies.py:221:21: F541 f-string is missing placeholders +src/suhail_pipeline/enrichment/strategies.py:222:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/enrichment/strategies.py:228:22: W291 trailing whitespace +src/suhail_pipeline/exceptions.py:19:1: F401 'typing.List' imported but unused +src/suhail_pipeline/exceptions.py:19:1: F401 'typing.Union' imported but unused +src/suhail_pipeline/exceptions.py:74:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:110:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:122:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:134:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:146:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:159:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:171:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:183:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:206:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:219:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:254:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/exceptions.py:255:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/exceptions.py:262:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/exceptions.py:286:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:304:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:316:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:321:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:329:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/exceptions.py:335:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:337:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/exceptions.py:338:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/exceptions.py:349:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:352:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:356:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:364:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/exceptions.py:370:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:372:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/exceptions.py:373:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/exceptions.py:385:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:388:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:394:1: W293 blank line contains whitespace +src/suhail_pipeline/exceptions.py:411:21: W291 trailing whitespace +src/suhail_pipeline/geometry/stitcher.py:9:1: F401 'shapely.geometry.Polygon' imported but unused +src/suhail_pipeline/geometry/stitcher.py:10:1: F401 'shapely.errors.GEOSException' imported but unused +src/suhail_pipeline/geometry/stitcher.py:11:1: F401 'shapely.ops.snap' imported but unused +src/suhail_pipeline/geometry/stitcher.py:12:1: F401 'tqdm.tqdm' imported but unused +src/suhail_pipeline/geometry/stitcher.py:13:1: F401 'mercantile' imported but unused +src/suhail_pipeline/geometry/stitcher.py:14:1: F401 'sqlalchemy.text' imported but unused +src/suhail_pipeline/geometry/stitcher.py:55:80: E501 line too long (108 > 79 characters) +src/suhail_pipeline/geometry/stitcher.py:68:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/geometry/stitcher.py:92:80: E501 line too long (103 > 79 characters) +src/suhail_pipeline/geometry/stitcher.py:132:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/geometry/stitcher.py:148:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/geometry/stitcher.py:150:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/geometry/stitcher.py:157:80: E501 line too long (117 > 79 characters) +src/suhail_pipeline/geometry/stitcher.py:163:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/geometry/stitcher.py:169:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/geometry/stitcher.py:174:80: E501 line too long (101 > 79 characters) +src/suhail_pipeline/geometry/stitcher.py:176:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/geometry/stitcher.py:181:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/geometry/stitcher.py:186:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/geometry/stitcher.py:214:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/geometry/stitcher.py:218:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/geometry/stitcher.py:223:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/geometry/validator.py:20:38: W291 trailing whitespace +src/suhail_pipeline/logging_utils.py:18:1: F401 'asyncio' imported but unused +src/suhail_pipeline/logging_utils.py:24:1: F401 'typing.Union' imported but unused +src/suhail_pipeline/logging_utils.py:27:1: F401 'weakref' imported but unused +src/suhail_pipeline/logging_utils.py:38:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:50:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:54:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:57:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:60:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:63:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:67:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:73:80: E501 line too long (122 > 79 characters) +src/suhail_pipeline/logging_utils.py:75:80: E501 line too long (111 > 79 characters) +src/suhail_pipeline/logging_utils.py:77:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/logging_utils.py:83:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:84:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/logging_utils.py:91:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:96:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:105:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:109:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:115:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:121:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/logging_utils.py:123:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:128:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:136:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:143:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:147:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:152:47: W291 trailing whitespace +src/suhail_pipeline/logging_utils.py:155:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:163:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/logging_utils.py:164:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:167:80: E501 line too long (94 > 79 characters) +src/suhail_pipeline/logging_utils.py:169:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:174:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:181:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:185:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:194:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:208:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:218:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:233:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:234:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/logging_utils.py:246:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:252:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:256:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/logging_utils.py:258:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:267:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/logging_utils.py:268:80: E501 line too long (93 > 79 characters) +src/suhail_pipeline/logging_utils.py:274:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:280:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:284:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:290:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:293:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/logging_utils.py:294:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:297:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:301:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:305:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:309:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:313:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:317:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:322:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:325:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/logging_utils.py:332:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:351:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:358:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:361:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:367:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:369:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/logging_utils.py:372:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:376:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:379:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:381:80: E501 line too long (97 > 79 characters) +src/suhail_pipeline/logging_utils.py:383:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:392:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/logging_utils.py:393:80: E501 line too long (88 > 79 characters) +src/suhail_pipeline/logging_utils.py:394:80: E501 line too long (101 > 79 characters) +src/suhail_pipeline/logging_utils.py:406:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:408:29: W291 trailing whitespace +src/suhail_pipeline/logging_utils.py:409:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/logging_utils.py:411:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:416:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:427:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:430:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/logging_utils.py:432:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:441:80: E501 line too long (99 > 79 characters) +src/suhail_pipeline/logging_utils.py:442:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:448:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:449:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/logging_utils.py:451:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:466:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:471:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:474:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:476:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/logging_utils.py:478:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:489:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/logging_utils.py:491:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:495:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/logging_utils.py:497:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:499:9: F811 redefinition of unused 'asyncio' from line 18 +src/suhail_pipeline/logging_utils.py:504:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:508:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/logging_utils.py:514:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:519:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:520:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/logging_utils.py:521:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:527:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/logging_utils.py:537:1: W293 blank line contains whitespace +src/suhail_pipeline/logging_utils.py:543:16: W291 trailing whitespace +src/suhail_pipeline/memory_utils.py:47:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:56:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:62:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/memory_utils.py:64:80: E501 line too long (93 > 79 characters) +src/suhail_pipeline/memory_utils.py:66:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:69:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:75:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/memory_utils.py:79:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:85:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:87:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:92:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:97:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:101:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:106:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:109:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:114:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:117:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:120:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:130:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:132:80: E501 line too long (107 > 79 characters) +src/suhail_pipeline/memory_utils.py:135:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:137:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:143:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:144:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/memory_utils.py:150:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:154:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:160:56: W291 trailing whitespace +src/suhail_pipeline/memory_utils.py:163:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:169:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:171:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:175:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:181:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:182:80: E501 line too long (97 > 79 characters) +src/suhail_pipeline/memory_utils.py:184:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:186:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:205:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/memory_utils.py:208:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:210:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:213:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:218:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/memory_utils.py:223:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:224:5: F841 local variable 'e' is assigned to but never used +src/suhail_pipeline/memory_utils.py:229:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:233:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:236:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/memory_utils.py:245:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/memory_utils.py:251:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:255:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:258:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:262:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:266:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:269:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:276:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:280:80: E501 line too long (108 > 79 characters) +src/suhail_pipeline/memory_utils.py:284:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:286:80: E501 line too long (95 > 79 characters) +src/suhail_pipeline/memory_utils.py:288:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:291:80: E501 line too long (99 > 79 characters) +src/suhail_pipeline/memory_utils.py:292:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:300:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:303:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:306:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/memory_utils.py:307:80: E501 line too long (97 > 79 characters) +src/suhail_pipeline/memory_utils.py:309:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:314:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/memory_utils.py:316:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:329:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:332:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:339:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/memory_utils.py:342:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:344:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/memory_utils.py:345:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:350:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:353:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:358:1: W293 blank line contains whitespace +src/suhail_pipeline/memory_utils.py:362:14: W291 trailing whitespace +src/suhail_pipeline/persistence/db.py:16:21: F821 undefined name 'settings' +src/suhail_pipeline/persistence/db.py:16:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/persistence/db.py:19:19: F821 undefined name 'settings' +src/suhail_pipeline/persistence/db.py:20:22: F821 undefined name 'settings' +src/suhail_pipeline/persistence/db.py:20:50: F821 undefined name 'settings' +src/suhail_pipeline/persistence/db.py:21:23: F821 undefined name 'settings' +src/suhail_pipeline/persistence/db.py:22:22: F821 undefined name 'settings' +src/suhail_pipeline/persistence/db.py:23:14: F821 undefined name 'settings' +src/suhail_pipeline/persistence/db.py:25:22: F821 undefined name 'settings' +src/suhail_pipeline/persistence/db.py:27:32: F821 undefined name 'settings' +src/suhail_pipeline/persistence/db.py:52:80: E501 line too long (114 > 79 characters) +src/suhail_pipeline/persistence/db.py:57:80: E501 line too long (109 > 79 characters) +src/suhail_pipeline/persistence/db.py:72:80: E501 line too long (88 > 79 characters) +src/suhail_pipeline/persistence/db.py:73:80: E501 line too long (88 > 79 characters) +src/suhail_pipeline/persistence/db.py:78:25: W291 trailing whitespace +src/suhail_pipeline/persistence/db.py:78:26: W292 no newline at end of file +src/suhail_pipeline/persistence/enrichment_persister.py:5:1: F401 'math.ceil' imported but unused +src/suhail_pipeline/persistence/enrichment_persister.py:19:80: E501 line too long (112 > 79 characters) +src/suhail_pipeline/persistence/enrichment_persister.py:46:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/persistence/enrichment_persister.py:82:80: E501 line too long (102 > 79 characters) +src/suhail_pipeline/persistence/enrichment_persister.py:105:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/persistence/enrichment_persister.py:120:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/persistence/enrichment_persister.py:136:48: W291 trailing whitespace +src/suhail_pipeline/persistence/models.py:2:1: F401 'sqlalchemy.create_engine' imported but unused +src/suhail_pipeline/persistence/models.py:2:1: F401 'sqlalchemy.select' imported but unused +src/suhail_pipeline/persistence/models.py:2:1: F401 'sqlalchemy.update' imported but unused +src/suhail_pipeline/persistence/models.py:18:1: F401 'sqlalchemy.orm.load_only' imported but unused +src/suhail_pipeline/persistence/models.py:35:80: E501 line too long (100 > 79 characters) +src/suhail_pipeline/persistence/models.py:43:80: E501 line too long (88 > 79 characters) +src/suhail_pipeline/persistence/models.py:50:80: E501 line too long (97 > 79 characters) +src/suhail_pipeline/persistence/models.py:67:80: E501 line too long (94 > 79 characters) +src/suhail_pipeline/persistence/models.py:73:1: W293 blank line contains whitespace +src/suhail_pipeline/persistence/models.py:77:80: E501 line too long (93 > 79 characters) +src/suhail_pipeline/persistence/models.py:84:80: E501 line too long (94 > 79 characters) +src/suhail_pipeline/persistence/models.py:89:80: E501 line too long (100 > 79 characters) +src/suhail_pipeline/persistence/models.py:90:1: W293 blank line contains whitespace +src/suhail_pipeline/persistence/models.py:96:80: E501 line too long (88 > 79 characters) +src/suhail_pipeline/persistence/models.py:103:80: E501 line too long (97 > 79 characters) +src/suhail_pipeline/persistence/models.py:121:1: W293 blank line contains whitespace +src/suhail_pipeline/persistence/models.py:125:80: E501 line too long (88 > 79 characters) +src/suhail_pipeline/persistence/models.py:127:1: W293 blank line contains whitespace +src/suhail_pipeline/persistence/models.py:128:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/persistence/models.py:135:80: E501 line too long (88 > 79 characters) +src/suhail_pipeline/persistence/models.py:144:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/persistence/models.py:147:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/persistence/models.py:179:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/persistence/models.py:189:80: E501 line too long (88 > 79 characters) +src/suhail_pipeline/persistence/models.py:193:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/persistence/models.py:198:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/persistence/models.py:202:1: W293 blank line contains whitespace +src/suhail_pipeline/persistence/models.py:205:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/persistence/models.py:210:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/persistence/models.py:217:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/persistence/models.py:225:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/persistence/models.py:233:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/persistence/models.py:241:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/persistence/models.py:248:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/persistence/models.py:255:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/persistence/models.py:261:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/persistence/models.py:267:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/persistence/models.py:280:80: E501 line too long (97 > 79 characters) +src/suhail_pipeline/persistence/models.py:301:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/persistence/models.py:303:80: E501 line too long (87 > 79 characters) +src/suhail_pipeline/persistence/models.py:306:80: E501 line too long (102 > 79 characters) +src/suhail_pipeline/persistence/models.py:312:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/persistence/models.py:313:80: E501 line too long (194 > 79 characters) +src/suhail_pipeline/persistence/models.py:324:33: E711 comparison to None should be 'if cond is not None:' +src/suhail_pipeline/persistence/models.py:326:80: E501 line too long (113 > 79 characters) +src/suhail_pipeline/persistence/models.py:328:23: W291 trailing whitespace +src/suhail_pipeline/persistence/models.py:328:24: W292 no newline at end of file +src/suhail_pipeline/persistence/postgis_persister.py:26:1: E305 expected 2 blank lines after class or function definition, found 1 +src/suhail_pipeline/persistence/postgis_persister.py:131:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/persistence/postgis_persister.py:134:71: W291 trailing whitespace +src/suhail_pipeline/persistence/postgis_persister.py:137:1: W293 blank line contains whitespace +src/suhail_pipeline/persistence/postgis_persister.py:142:1: W293 blank line contains whitespace +src/suhail_pipeline/persistence/postgis_persister.py:143:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:151:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:160:80: E501 line too long (99 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:162:80: E501 line too long (114 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:163:80: E501 line too long (101 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:172:80: E501 line too long (120 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:179:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:183:80: E501 line too long (97 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:205:80: E501 line too long (100 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:207:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:209:80: E501 line too long (100 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:211:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:217:80: E501 line too long (94 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:219:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:221:80: E501 line too long (88 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:248:80: E501 line too long (99 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:250:80: E501 line too long (96 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:258:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:259:80: E501 line too long (96 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:265:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:268:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:275:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:276:1: W293 blank line contains whitespace +src/suhail_pipeline/persistence/postgis_persister.py:279:80: E501 line too long (88 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:282:80: E501 line too long (98 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:284:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:291:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:295:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:309:80: E501 line too long (115 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:310:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:312:80: E501 line too long (101 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:314:80: E501 line too long (97 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:326:80: E501 line too long (126 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:340:80: E501 line too long (107 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:360:80: E501 line too long (111 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:362:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:363:80: E501 line too long (104 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:366:80: E501 line too long (121 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:368:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:375:80: E501 line too long (97 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:377:80: E501 line too long (96 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:402:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:415:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:424:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/persistence/postgis_persister.py:429:36: W291 trailing whitespace +src/suhail_pipeline/persistence/table_management.py:7:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/persistence/table_management.py:16:80: E501 line too long (94 > 79 characters) +src/suhail_pipeline/persistence/table_management.py:18:75: W291 trailing whitespace +src/suhail_pipeline/persistence/table_management.py:18:76: W292 no newline at end of file +src/suhail_pipeline/pipeline_orchestrator.py:4:1: F401 'typing.Dict' imported but unused +src/suhail_pipeline/pipeline_orchestrator.py:6:1: F401 'concurrent.futures' imported but unused +src/suhail_pipeline/pipeline_orchestrator.py:12:1: F401 'sqlalchemy.create_engine' imported but unused +src/suhail_pipeline/pipeline_orchestrator.py:22:1: F401 'sqlalchemy.text' imported but unused +src/suhail_pipeline/pipeline_orchestrator.py:77:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:82:80: E501 line too long (107 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:85:80: E501 line too long (110 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:109:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:114:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:171:80: E501 line too long (88 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:172:80: E501 line too long (89 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:210:80: E501 line too long (93 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:211:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:229:80: E501 line too long (98 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:231:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:252:5: F841 local variable 'stitcher' is assigned to but never used +src/suhail_pipeline/pipeline_orchestrator.py:252:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:264:80: E501 line too long (104 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:271:80: E501 line too long (101 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:274:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:295:80: E501 line too long (141 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:296:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:299:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:304:80: E501 line too long (96 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:305:80: E501 line too long (108 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:310:80: E501 line too long (111 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:315:80: E501 line too long (109 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:316:80: E501 line too long (126 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:333:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:340:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:354:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:359:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:365:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:369:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:378:80: E501 line too long (112 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:381:80: E501 line too long (119 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:388:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:394:80: E501 line too long (114 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:399:80: E501 line too long (94 > 79 characters) +src/suhail_pipeline/pipeline_orchestrator.py:409:80: E501 line too long (94 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:10:1: F401 'typing.Optional' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:11:1: F401 'sqlalchemy.create_engine' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:12:1: F401 'sqlalchemy.ext.asyncio.create_async_engine' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:12:80: E501 line too long (87 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:13:1: F401 'sqlalchemy.dialects.postgresql.insert as pg_insert' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:14:1: F401 'datetime.timedelta' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:23:1: F401 'suhail_pipeline.persistence.models.Base' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:23:1: F401 'suhail_pipeline.persistence.models.Transaction' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:23:1: F401 'suhail_pipeline.persistence.models.ParcelPriceMetric' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:23:1: F401 'suhail_pipeline.persistence.models.BuildingRule' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:23:1: E402 module level import not at top of file +src/suhail_pipeline/run_enrichment_pipeline.py:29:1: E402 module level import not at top of file +src/suhail_pipeline/run_enrichment_pipeline.py:30:1: F401 'logging' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:30:1: E402 module level import not at top of file +src/suhail_pipeline/run_enrichment_pipeline.py:31:1: F401 'sqlalchemy.BigInteger' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:31:1: F401 'sqlalchemy.Column' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:31:1: F401 'sqlalchemy.DateTime' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:31:1: F401 'sqlalchemy.Float' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:31:1: F401 'sqlalchemy.Integer' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:31:1: F401 'sqlalchemy.String' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:31:1: F401 'sqlalchemy.JSON' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:31:1: E402 module level import not at top of file +src/suhail_pipeline/run_enrichment_pipeline.py:31:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:32:1: F401 'sqlalchemy.orm.sessionmaker' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:32:1: E402 module level import not at top of file +src/suhail_pipeline/run_enrichment_pipeline.py:33:1: F401 'sqlalchemy.ForeignKey' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:33:1: E402 module level import not at top of file +src/suhail_pipeline/run_enrichment_pipeline.py:34:1: F401 'suhail_pipeline.exceptions.ValidationException' imported but unused +src/suhail_pipeline/run_enrichment_pipeline.py:34:1: E402 module level import not at top of file +src/suhail_pipeline/run_enrichment_pipeline.py:35:1: E402 module level import not at top of file +src/suhail_pipeline/run_enrichment_pipeline.py:36:1: E402 module level import not at top of file +src/suhail_pipeline/run_enrichment_pipeline.py:43:1: E402 module level import not at top of file +src/suhail_pipeline/run_enrichment_pipeline.py:44:1: E402 module level import not at top of file +src/suhail_pipeline/run_enrichment_pipeline.py:48:1: E402 module level import not at top of file +src/suhail_pipeline/run_enrichment_pipeline.py:51:1: E402 module level import not at top of file +src/suhail_pipeline/run_enrichment_pipeline.py:52:1: E402 module level import not at top of file +src/suhail_pipeline/run_enrichment_pipeline.py:72:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/run_enrichment_pipeline.py:75:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:81:80: E501 line too long (93 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:85:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:91:1: W293 blank line contains whitespace +src/suhail_pipeline/run_enrichment_pipeline.py:99:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:107:80: E501 line too long (127 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:111:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/run_enrichment_pipeline.py:115:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:117:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/run_enrichment_pipeline.py:122:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:126:80: E501 line too long (87 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:128:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/run_enrichment_pipeline.py:134:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:144:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/run_enrichment_pipeline.py:152:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:155:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/run_enrichment_pipeline.py:160:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:162:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:165:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:168:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:171:80: E501 line too long (117 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:173:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:176:1: W293 blank line contains whitespace +src/suhail_pipeline/run_enrichment_pipeline.py:187:80: E501 line too long (89 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:193:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:208:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:209:80: E501 line too long (89 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:213:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:223:80: E501 line too long (104 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:225:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:226:80: E501 line too long (106 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:230:80: E501 line too long (89 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:231:80: E501 line too long (101 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:234:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:239:32: F541 f-string is missing placeholders +src/suhail_pipeline/run_enrichment_pipeline.py:240:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:243:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:244:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:245:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:251:80: E501 line too long (87 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:263:80: E501 line too long (94 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:264:80: E501 line too long (112 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:294:80: E501 line too long (99 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:300:80: E501 line too long (98 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:303:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:305:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:306:1: W293 blank line contains whitespace +src/suhail_pipeline/run_enrichment_pipeline.py:309:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/run_enrichment_pipeline.py:311:80: E501 line too long (105 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:312:80: E501 line too long (108 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:313:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:314:80: E501 line too long (82 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:317:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:318:1: W293 blank line contains whitespace +src/suhail_pipeline/run_enrichment_pipeline.py:323:1: W293 blank line contains whitespace +src/suhail_pipeline/run_enrichment_pipeline.py:327:1: W293 blank line contains whitespace +src/suhail_pipeline/run_enrichment_pipeline.py:330:80: E501 line too long (89 > 79 characters) +src/suhail_pipeline/run_enrichment_pipeline.py:332:1: W293 blank line contains whitespace +src/suhail_pipeline/run_enrichment_pipeline.py:337:1: W293 blank line contains whitespace +src/suhail_pipeline/run_enrichment_pipeline.py:341:1: W293 blank line contains whitespace +src/suhail_pipeline/run_enrichment_pipeline.py:347:1: W293 blank line contains whitespace +src/suhail_pipeline/run_enrichment_pipeline.py:355:1: E305 expected 2 blank lines after class or function definition, found 1 +src/suhail_pipeline/run_enrichment_pipeline.py:356:10: W291 trailing whitespace +src/suhail_pipeline/run_geometric_pipeline.py:3:1: F401 'subprocess' imported but unused +src/suhail_pipeline/run_geometric_pipeline.py:4:1: F401 'sys' imported but unused +src/suhail_pipeline/run_geometric_pipeline.py:5:1: F401 'typing.Tuple' imported but unused +src/suhail_pipeline/run_geometric_pipeline.py:17:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/run_geometric_pipeline.py:23:80: E501 line too long (100 > 79 characters) +src/suhail_pipeline/run_geometric_pipeline.py:29:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/run_geometric_pipeline.py:48:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/run_geometric_pipeline.py:63:1: W293 blank line contains whitespace +src/suhail_pipeline/run_geometric_pipeline.py:65:51: W291 trailing whitespace +src/suhail_pipeline/run_geometric_pipeline.py:77:80: E501 line too long (86 > 79 characters) +src/suhail_pipeline/run_geometric_pipeline.py:79:1: W293 blank line contains whitespace +src/suhail_pipeline/run_geometric_pipeline.py:83:1: W293 blank line contains whitespace +src/suhail_pipeline/run_geometric_pipeline.py:105:1: E305 expected 2 blank lines after class or function definition, found 1 +src/suhail_pipeline/run_geometric_pipeline.py:106:10: W291 trailing whitespace +src/suhail_pipeline/run_monitoring.py:4:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/run_monitoring.py:17:1: E402 module level import not at top of file +src/suhail_pipeline/run_monitoring.py:21:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/run_monitoring.py:25:1: W293 blank line contains whitespace +src/suhail_pipeline/run_monitoring.py:28:80: E501 line too long (118 > 79 characters) +src/suhail_pipeline/run_monitoring.py:29:80: E501 line too long (123 > 79 characters) +src/suhail_pipeline/run_monitoring.py:30:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/run_monitoring.py:31:1: W293 blank line contains whitespace +src/suhail_pipeline/run_monitoring.py:34:19: W291 trailing whitespace +src/suhail_pipeline/run_monitoring.py:35:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/run_monitoring.py:36:80: E501 line too long (92 > 79 characters) +src/suhail_pipeline/run_monitoring.py:37:80: E501 line too long (94 > 79 characters) +src/suhail_pipeline/run_monitoring.py:38:80: E501 line too long (94 > 79 characters) +src/suhail_pipeline/run_monitoring.py:41:32: W291 trailing whitespace +src/suhail_pipeline/run_monitoring.py:44:1: W293 blank line contains whitespace +src/suhail_pipeline/run_monitoring.py:47:15: F541 f-string is missing placeholders +src/suhail_pipeline/run_monitoring.py:53:15: F541 f-string is missing placeholders +src/suhail_pipeline/run_monitoring.py:55:80: E501 line too long (99 > 79 characters) +src/suhail_pipeline/run_monitoring.py:57:1: W293 blank line contains whitespace +src/suhail_pipeline/run_monitoring.py:59:19: F541 f-string is missing placeholders +src/suhail_pipeline/run_monitoring.py:61:65: W291 trailing whitespace +src/suhail_pipeline/run_monitoring.py:66:1: W293 blank line contains whitespace +src/suhail_pipeline/run_monitoring.py:68:80: E501 line too long (107 > 79 characters) +src/suhail_pipeline/run_monitoring.py:70:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/run_monitoring.py:74:1: W293 blank line contains whitespace +src/suhail_pipeline/run_monitoring.py:76:80: E501 line too long (97 > 79 characters) +src/suhail_pipeline/run_monitoring.py:77:9: F841 local variable 'trigger_parcels' is assigned to but never used +src/suhail_pipeline/run_monitoring.py:79:80: E501 line too long (84 > 79 characters) +src/suhail_pipeline/run_monitoring.py:82:1: W293 blank line contains whitespace +src/suhail_pipeline/run_monitoring.py:84:80: E501 line too long (121 > 79 characters) +src/suhail_pipeline/run_monitoring.py:85:80: E501 line too long (121 > 79 characters) +src/suhail_pipeline/run_monitoring.py:87:1: W293 blank line contains whitespace +src/suhail_pipeline/run_monitoring.py:92:40: W291 trailing whitespace +src/suhail_pipeline/run_monitoring.py:95:1: W293 blank line contains whitespace +src/suhail_pipeline/run_monitoring.py:96:48: W291 trailing whitespace +src/suhail_pipeline/run_monitoring.py:100:40: W291 trailing whitespace +src/suhail_pipeline/run_monitoring.py:103:1: W293 blank line contains whitespace +src/suhail_pipeline/run_monitoring.py:106:1: W293 blank line contains whitespace +src/suhail_pipeline/run_monitoring.py:108:80: E501 line too long (104 > 79 characters) +src/suhail_pipeline/run_monitoring.py:109:1: W293 blank line contains whitespace +src/suhail_pipeline/run_monitoring.py:110:15: F541 f-string is missing placeholders +src/suhail_pipeline/run_monitoring.py:112:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/run_monitoring.py:115:1: W293 blank line contains whitespace +src/suhail_pipeline/run_monitoring.py:118:80: E501 line too long (98 > 79 characters) +src/suhail_pipeline/run_monitoring.py:119:80: E501 line too long (114 > 79 characters) +src/suhail_pipeline/run_monitoring.py:120:19: F541 f-string is missing placeholders +src/suhail_pipeline/run_monitoring.py:120:80: E501 line too long (108 > 79 characters) +src/suhail_pipeline/run_monitoring.py:121:80: E501 line too long (97 > 79 characters) +src/suhail_pipeline/run_monitoring.py:125:19: F541 f-string is missing placeholders +src/suhail_pipeline/run_monitoring.py:125:80: E501 line too long (108 > 79 characters) +src/suhail_pipeline/run_monitoring.py:127:1: W293 blank line contains whitespace +src/suhail_pipeline/run_monitoring.py:131:19: F541 f-string is missing placeholders +src/suhail_pipeline/run_monitoring.py:132:19: F541 f-string is missing placeholders +src/suhail_pipeline/run_monitoring.py:132:80: E501 line too long (111 > 79 characters) +src/suhail_pipeline/run_monitoring.py:135:77: W291 trailing whitespace +src/suhail_pipeline/run_monitoring.py:136:19: F541 f-string is missing placeholders +src/suhail_pipeline/run_monitoring.py:136:80: E501 line too long (112 > 79 characters) +src/suhail_pipeline/run_monitoring.py:138:1: W293 blank line contains whitespace +src/suhail_pipeline/run_monitoring.py:143:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/run_monitoring.py:149:1: W293 blank line contains whitespace +src/suhail_pipeline/run_monitoring.py:152:80: E501 line too long (118 > 79 characters) +src/suhail_pipeline/run_monitoring.py:154:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/run_monitoring.py:155:80: E501 line too long (94 > 79 characters) +src/suhail_pipeline/run_monitoring.py:156:80: E501 line too long (98 > 79 characters) +src/suhail_pipeline/run_monitoring.py:158:80: E501 line too long (88 > 79 characters) +src/suhail_pipeline/run_monitoring.py:166:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/run_monitoring.py:166:15: W291 trailing whitespace +src/suhail_pipeline/run_monitoring.py:175:80: E501 line too long (87 > 79 characters) +src/suhail_pipeline/run_monitoring.py:176:80: E501 line too long (91 > 79 characters) +src/suhail_pipeline/run_monitoring.py:180:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/run_monitoring.py:181:80: E501 line too long (85 > 79 characters) +src/suhail_pipeline/run_monitoring.py:189:80: E501 line too long (81 > 79 characters) +src/suhail_pipeline/run_monitoring.py:191:1: E305 expected 2 blank lines after class or function definition, found 1 +src/suhail_pipeline/run_monitoring.py:192:10: W291 trailing whitespace +src/suhail_pipeline/run_tile_pipeline.py:14:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/run_tile_pipeline.py:28:80: E501 line too long (105 > 79 characters) +src/suhail_pipeline/run_tile_pipeline.py:30:80: E501 line too long (95 > 79 characters) +src/suhail_pipeline/run_tile_pipeline.py:37:80: E501 line too long (93 > 79 characters) +src/suhail_pipeline/run_tile_pipeline.py:39:80: E501 line too long (83 > 79 characters) +src/suhail_pipeline/run_tile_pipeline.py:42:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/run_tile_pipeline.py:51:80: E501 line too long (107 > 79 characters) +src/suhail_pipeline/run_tile_pipeline.py:59:1: E305 expected 2 blank lines after class or function definition, found 1 +src/suhail_pipeline/run_tile_pipeline.py:60:11: W291 trailing whitespace +src/suhail_pipeline/run_tile_pipeline.py:60:12: W292 no newline at end of file +src/suhail_pipeline/show_discovery_summary.py:4:80: E501 line too long (80 > 79 characters) +src/suhail_pipeline/show_discovery_summary.py:12:1: E402 module level import not at top of file +src/suhail_pipeline/show_discovery_summary.py:13:1: E402 module level import not at top of file +src/suhail_pipeline/show_discovery_summary.py:15:1: E302 expected 2 blank lines, found 1 +src/suhail_pipeline/show_discovery_summary.py:19:1: W293 blank line contains whitespace +src/suhail_pipeline/show_discovery_summary.py:21:80: E501 line too long (107 > 79 characters) +src/suhail_pipeline/show_discovery_summary.py:27:1: W293 blank line contains whitespace +src/suhail_pipeline/show_discovery_summary.py:28:11: F541 f-string is missing placeholders +src/suhail_pipeline/show_discovery_summary.py:31:1: W293 blank line contains whitespace +src/suhail_pipeline/show_discovery_summary.py:32:11: F541 f-string is missing placeholders +src/suhail_pipeline/show_discovery_summary.py:35:1: W293 blank line contains whitespace +src/suhail_pipeline/show_discovery_summary.py:41:1: W293 blank line contains whitespace +src/suhail_pipeline/show_discovery_summary.py:42:11: F541 f-string is missing placeholders +src/suhail_pipeline/show_discovery_summary.py:43:11: F541 f-string is missing placeholders +src/suhail_pipeline/show_discovery_summary.py:44:11: F541 f-string is missing placeholders +src/suhail_pipeline/show_discovery_summary.py:45:11: F541 f-string is missing placeholders +src/suhail_pipeline/show_discovery_summary.py:46:1: W293 blank line contains whitespace +src/suhail_pipeline/show_discovery_summary.py:47:11: F541 f-string is missing placeholders +src/suhail_pipeline/show_discovery_summary.py:48:11: F541 f-string is missing placeholders +src/suhail_pipeline/show_discovery_summary.py:49:11: F541 f-string is missing placeholders +src/suhail_pipeline/show_discovery_summary.py:50:11: F541 f-string is missing placeholders +src/suhail_pipeline/show_discovery_summary.py:51:11: F541 f-string is missing placeholders +src/suhail_pipeline/show_discovery_summary.py:52:11: F541 f-string is missing placeholders +src/suhail_pipeline/show_discovery_summary.py:53:11: F541 f-string is missing placeholders +src/suhail_pipeline/show_discovery_summary.py:54:11: F541 f-string is missing placeholders +src/suhail_pipeline/show_discovery_summary.py:55:11: F541 f-string is missing placeholders +src/suhail_pipeline/show_discovery_summary.py:55:80: E501 line too long (90 > 79 characters) +src/suhail_pipeline/show_discovery_summary.py:56:1: W293 blank line contains whitespace +src/suhail_pipeline/show_discovery_summary.py:57:11: F541 f-string is missing placeholders +src/suhail_pipeline/show_discovery_summary.py:59:1: E305 expected 2 blank lines after class or function definition, found 1 +src/suhail_pipeline/show_discovery_summary.py:60:11: W291 trailing whitespace +src/suhail_pipeline/utils/tile_list_generator.py:10:80: E501 line too long (80 > 79 characters) tests/__init__.py:1:1: W391 blank line at end of file tests/integration/test_pipeline_integration.py:28:80: E501 line too long (84 > 79 characters) tests/integration/test_pipeline_integration.py:29:80: E501 line too long (80 > 79 characters) @@ -981,7 +981,7 @@ tests/unit/test_delta_enrichment_cli.py:17:80: E501 line too long (84 > 79 chara tests/unit/test_delta_enrichment_cli.py:19:80: E501 line too long (94 > 79 characters) tests/unit/test_delta_enrichment_cli.py:64:80: E501 line too long (86 > 79 characters) tests/unit/test_discovery.py:13:13: F821 undefined name 'get_tile_coordinates_for_grid' -tests/unit/test_province_loader.py:2:1: F401 'meshic_pipeline.utils.tile_list_generator.tiles_from_bbox_z' imported but unused +tests/unit/test_province_loader.py:2:1: F401 'suhail_pipeline.utils.tile_list_generator.tiles_from_bbox_z' imported but unused tests/unit/test_province_loader.py:13:80: E501 line too long (84 > 79 characters) tests/unit/test_smart_pipeline_enrich.py:6:5: E306 expected 1 blank line before a nested definition, found 0 tests/unit/test_smart_pipeline_enrich.py:8:80: E501 line too long (81 > 79 characters) diff --git a/docs/archive/generated-txt/geometric_help.txt b/docs/archive/generated-txt/geometric_help.txt index c555ecd..656de67 100644 --- a/docs/archive/generated-txt/geometric_help.txt +++ b/docs/archive/generated-txt/geometric_help.txt @@ -1,5 +1,5 @@ - Usage: meshic-pipeline geometric [OPTIONS] + Usage: suhail-pipeline geometric [OPTIONS] Run the geometric pipeline (Stage 1). diff --git a/docs/archive/generated-txt/geometric_help_full.txt b/docs/archive/generated-txt/geometric_help_full.txt index fd2fcf5..113f310 100644 --- a/docs/archive/generated-txt/geometric_help_full.txt +++ b/docs/archive/generated-txt/geometric_help_full.txt @@ -1,5 +1,5 @@ - Usage: python -m src.meshic_pipeline.run_geometric_pipeline + Usage: python -m src.suhail_pipeline.run_geometric_pipeline [OPTIONS] 🚀 Enhanced geometric processing pipeline with province discovery. diff --git a/docs/archive/generated-txt/geometric_test_results.txt b/docs/archive/generated-txt/geometric_test_results.txt index 7ef08e5..9d83c00 100644 --- a/docs/archive/generated-txt/geometric_test_results.txt +++ b/docs/archive/generated-txt/geometric_test_results.txt @@ -1,101 +1,101 @@ -2025-07-07 08:22:36,624 - meshic_pipeline.pipeline_orchestrator - INFO - Starting pipeline run for AOI: grid at zoom 15 -2025-07-07 08:22:36,625 - meshic_pipeline.pipeline_orchestrator - INFO - 🔢 Grid mode: Discovered 9 tiles for 3x3 grid -2025-07-07 08:22:36,625 - meshic_pipeline.pipeline_orchestrator - INFO - 🌐 Using tile server: https://tiles.suhail.ai/maps/riyadh -2025-07-07 08:22:36,738 - meshic_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: neighborhoods --- -2025-07-07 08:22:37,650 - meshic_pipeline.pipeline_orchestrator - WARNING - Dropped 16 duplicate rows for primary key 'neighborhood_id' in layer 'neighborhoods' before DB write. -2025-07-07 08:22:37,665 - meshic_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_neighborhoods from known columns -2025-07-07 08:22:37,755 - meshic_pipeline.persistence.postgis_persister - INFO - Persisted 7 features to public.temp_neighborhoods using mode 'replace' +2025-07-07 08:22:36,624 - suhail_pipeline.pipeline_orchestrator - INFO - Starting pipeline run for AOI: grid at zoom 15 +2025-07-07 08:22:36,625 - suhail_pipeline.pipeline_orchestrator - INFO - 🔢 Grid mode: Discovered 9 tiles for 3x3 grid +2025-07-07 08:22:36,625 - suhail_pipeline.pipeline_orchestrator - INFO - 🌐 Using tile server: https://tiles.suhail.ai/maps/riyadh +2025-07-07 08:22:36,738 - suhail_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: neighborhoods --- +2025-07-07 08:22:37,650 - suhail_pipeline.pipeline_orchestrator - WARNING - Dropped 16 duplicate rows for primary key 'neighborhood_id' in layer 'neighborhoods' before DB write. +2025-07-07 08:22:37,665 - suhail_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_neighborhoods from known columns +2025-07-07 08:22:37,755 - suhail_pipeline.persistence.postgis_persister - INFO - Persisted 7 features to public.temp_neighborhoods using mode 'replace' 2025-07-07 08:22:37,846 - pyogrio._io - INFO - Created 7 records -2025-07-07 08:22:37,848 - meshic_pipeline.pipeline_orchestrator - INFO - Persisting 7 features for layer 'neighborhoods' to table 'neighborhoods' -2025-07-07 08:22:37,851 - meshic_pipeline.persistence.postgis_persister - INFO - Performing upsert on public.neighborhoods using ID column 'neighborhood_id' -2025-07-07 08:22:37,857 - meshic_pipeline.persistence.postgis_persister - INFO - Upsert complete. Affected 7 rows in public.neighborhoods. -2025-07-07 08:22:37,858 - meshic_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: neighborhoods --- -2025-07-07 08:22:37,858 - meshic_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'neighborhoods': 0.00MB -2025-07-07 08:22:37,858 - meshic_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: subdivisions --- -2025-07-07 08:22:38,625 - meshic_pipeline.pipeline_orchestrator - WARNING - Dropped 32 duplicate rows for primary key 'subdivision_id' in layer 'subdivisions' before DB write. -2025-07-07 08:22:38,631 - meshic_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_subdivisions from known columns -2025-07-07 08:22:38,652 - meshic_pipeline.persistence.postgis_persister - INFO - Persisted 34 features to public.temp_subdivisions using mode 'replace' +2025-07-07 08:22:37,848 - suhail_pipeline.pipeline_orchestrator - INFO - Persisting 7 features for layer 'neighborhoods' to table 'neighborhoods' +2025-07-07 08:22:37,851 - suhail_pipeline.persistence.postgis_persister - INFO - Performing upsert on public.neighborhoods using ID column 'neighborhood_id' +2025-07-07 08:22:37,857 - suhail_pipeline.persistence.postgis_persister - INFO - Upsert complete. Affected 7 rows in public.neighborhoods. +2025-07-07 08:22:37,858 - suhail_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: neighborhoods --- +2025-07-07 08:22:37,858 - suhail_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'neighborhoods': 0.00MB +2025-07-07 08:22:37,858 - suhail_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: subdivisions --- +2025-07-07 08:22:38,625 - suhail_pipeline.pipeline_orchestrator - WARNING - Dropped 32 duplicate rows for primary key 'subdivision_id' in layer 'subdivisions' before DB write. +2025-07-07 08:22:38,631 - suhail_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_subdivisions from known columns +2025-07-07 08:22:38,652 - suhail_pipeline.persistence.postgis_persister - INFO - Persisted 34 features to public.temp_subdivisions using mode 'replace' 2025-07-07 08:22:38,658 - pyogrio._io - INFO - Created 34 records -2025-07-07 08:22:38,661 - meshic_pipeline.pipeline_orchestrator - INFO - Persisting 34 features for layer 'subdivisions' to table 'subdivisions' -2025-07-07 08:22:38,664 - meshic_pipeline.persistence.postgis_persister - INFO - Performing upsert on public.subdivisions using ID column 'subdivision_id' -2025-07-07 08:22:38,672 - meshic_pipeline.persistence.postgis_persister - INFO - Upsert complete. Affected 34 rows in public.subdivisions. -2025-07-07 08:22:38,673 - meshic_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: subdivisions --- -2025-07-07 08:22:38,673 - meshic_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'subdivisions': 0.00MB -2025-07-07 08:22:38,673 - meshic_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: parcels --- -2025-07-07 08:22:40,585 - meshic_pipeline.pipeline_orchestrator - WARNING - Dropped 774 duplicate rows for primary key 'parcel_objectid' in layer 'parcels' before DB write. +2025-07-07 08:22:38,661 - suhail_pipeline.pipeline_orchestrator - INFO - Persisting 34 features for layer 'subdivisions' to table 'subdivisions' +2025-07-07 08:22:38,664 - suhail_pipeline.persistence.postgis_persister - INFO - Performing upsert on public.subdivisions using ID column 'subdivision_id' +2025-07-07 08:22:38,672 - suhail_pipeline.persistence.postgis_persister - INFO - Upsert complete. Affected 34 rows in public.subdivisions. +2025-07-07 08:22:38,673 - suhail_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: subdivisions --- +2025-07-07 08:22:38,673 - suhail_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'subdivisions': 0.00MB +2025-07-07 08:22:38,673 - suhail_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: parcels --- +2025-07-07 08:22:40,585 - suhail_pipeline.pipeline_orchestrator - WARNING - Dropped 774 duplicate rows for primary key 'parcel_objectid' in layer 'parcels' before DB write. [INFO] All ruleid values present in zoning_rules. -2025-07-07 08:22:40,634 - meshic_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_parcels from known columns -2025-07-07 08:22:40,851 - meshic_pipeline.persistence.postgis_persister - INFO - Persisted 9007 features to public.temp_parcels using mode 'replace' -2025-07-07 08:22:40,851 - meshic_pipeline.pipeline_orchestrator - INFO - Enriching parcels with region_id via spatial join... -2025-07-07 08:22:40,944 - meshic_pipeline.persistence.postgis_persister - INFO - Successfully created table public.parcels_enriched from known columns -2025-07-07 08:22:41,282 - meshic_pipeline.persistence.postgis_persister - INFO - Persisted 9007 features to public.parcels_enriched using mode 'replace' -2025-07-07 08:22:41,284 - meshic_pipeline.pipeline_orchestrator - INFO - Enrichment complete: region_id assigned where possible. +2025-07-07 08:22:40,634 - suhail_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_parcels from known columns +2025-07-07 08:22:40,851 - suhail_pipeline.persistence.postgis_persister - INFO - Persisted 9007 features to public.temp_parcels using mode 'replace' +2025-07-07 08:22:40,851 - suhail_pipeline.pipeline_orchestrator - INFO - Enriching parcels with region_id via spatial join... +2025-07-07 08:22:40,944 - suhail_pipeline.persistence.postgis_persister - INFO - Successfully created table public.parcels_enriched from known columns +2025-07-07 08:22:41,282 - suhail_pipeline.persistence.postgis_persister - INFO - Persisted 9007 features to public.parcels_enriched using mode 'replace' +2025-07-07 08:22:41,284 - suhail_pipeline.pipeline_orchestrator - INFO - Enrichment complete: region_id assigned where possible. 2025-07-07 08:22:41,608 - pyogrio._io - INFO - Created 9,007 records -2025-07-07 08:22:41,757 - meshic_pipeline.pipeline_orchestrator - INFO - Persisting 9007 features for layer 'parcels' to table 'parcels' -2025-07-07 08:22:41,882 - meshic_pipeline.persistence.postgis_persister - INFO - Performing upsert on public.parcels using ID column 'parcel_objectid' -2025-07-07 08:22:42,231 - meshic_pipeline.persistence.postgis_persister - INFO - Upsert complete. Affected 9007 rows in public.parcels. -2025-07-07 08:22:42,242 - meshic_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: parcels --- -2025-07-07 08:22:42,243 - meshic_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'parcels': 0.00MB -2025-07-07 08:22:42,243 - meshic_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: parcels-centroids --- -2025-07-07 08:22:42,245 - meshic_pipeline.pipeline_orchestrator - WARNING - Skipping layer 'parcels-centroids': production table 'parcels-centroids' does not exist. -2025-07-07 08:22:42,245 - meshic_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: neighborhoods-centroids --- -2025-07-07 08:22:42,245 - meshic_pipeline.pipeline_orchestrator - WARNING - Skipping layer 'neighborhoods-centroids': production table 'neighborhoods-centroids' does not exist. -2025-07-07 08:22:42,245 - meshic_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: metro_lines --- -2025-07-07 08:22:43,136 - meshic_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_metro_lines from known columns -2025-07-07 08:22:43,160 - meshic_pipeline.persistence.postgis_persister - INFO - Persisted 6 features to public.temp_metro_lines using mode 'replace' +2025-07-07 08:22:41,757 - suhail_pipeline.pipeline_orchestrator - INFO - Persisting 9007 features for layer 'parcels' to table 'parcels' +2025-07-07 08:22:41,882 - suhail_pipeline.persistence.postgis_persister - INFO - Performing upsert on public.parcels using ID column 'parcel_objectid' +2025-07-07 08:22:42,231 - suhail_pipeline.persistence.postgis_persister - INFO - Upsert complete. Affected 9007 rows in public.parcels. +2025-07-07 08:22:42,242 - suhail_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: parcels --- +2025-07-07 08:22:42,243 - suhail_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'parcels': 0.00MB +2025-07-07 08:22:42,243 - suhail_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: parcels-centroids --- +2025-07-07 08:22:42,245 - suhail_pipeline.pipeline_orchestrator - WARNING - Skipping layer 'parcels-centroids': production table 'parcels-centroids' does not exist. +2025-07-07 08:22:42,245 - suhail_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: neighborhoods-centroids --- +2025-07-07 08:22:42,245 - suhail_pipeline.pipeline_orchestrator - WARNING - Skipping layer 'neighborhoods-centroids': production table 'neighborhoods-centroids' does not exist. +2025-07-07 08:22:42,245 - suhail_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: metro_lines --- +2025-07-07 08:22:43,136 - suhail_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_metro_lines from known columns +2025-07-07 08:22:43,160 - suhail_pipeline.persistence.postgis_persister - INFO - Persisted 6 features to public.temp_metro_lines using mode 'replace' 2025-07-07 08:22:43,163 - pyogrio._io - INFO - Created 6 records -2025-07-07 08:22:43,164 - meshic_pipeline.pipeline_orchestrator - INFO - Persisting 6 features for layer 'metro_lines' to table 'metro_lines' -2025-07-07 08:22:43,169 - meshic_pipeline.persistence.postgis_persister - INFO - Successfully created table public.metro_lines from known columns -2025-07-07 08:22:43,187 - meshic_pipeline.persistence.postgis_persister - INFO - Persisted 6 features to public.metro_lines using mode 'replace' -2025-07-07 08:22:43,187 - meshic_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: metro_lines --- -2025-07-07 08:22:43,187 - meshic_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'metro_lines': 0.00MB -2025-07-07 08:22:43,187 - meshic_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: bus_lines --- -2025-07-07 08:22:43,961 - meshic_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_bus_lines from known columns -2025-07-07 08:22:43,982 - meshic_pipeline.persistence.postgis_persister - INFO - Persisted 52 features to public.temp_bus_lines using mode 'replace' +2025-07-07 08:22:43,164 - suhail_pipeline.pipeline_orchestrator - INFO - Persisting 6 features for layer 'metro_lines' to table 'metro_lines' +2025-07-07 08:22:43,169 - suhail_pipeline.persistence.postgis_persister - INFO - Successfully created table public.metro_lines from known columns +2025-07-07 08:22:43,187 - suhail_pipeline.persistence.postgis_persister - INFO - Persisted 6 features to public.metro_lines using mode 'replace' +2025-07-07 08:22:43,187 - suhail_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: metro_lines --- +2025-07-07 08:22:43,187 - suhail_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'metro_lines': 0.00MB +2025-07-07 08:22:43,187 - suhail_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: bus_lines --- +2025-07-07 08:22:43,961 - suhail_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_bus_lines from known columns +2025-07-07 08:22:43,982 - suhail_pipeline.persistence.postgis_persister - INFO - Persisted 52 features to public.temp_bus_lines using mode 'replace' 2025-07-07 08:22:43,987 - pyogrio._io - INFO - Created 52 records -2025-07-07 08:22:43,990 - meshic_pipeline.pipeline_orchestrator - INFO - Persisting 52 features for layer 'bus_lines' to table 'bus_lines' -2025-07-07 08:22:43,998 - meshic_pipeline.persistence.postgis_persister - INFO - Successfully created table public.bus_lines from known columns -2025-07-07 08:22:44,015 - meshic_pipeline.persistence.postgis_persister - INFO - Persisted 52 features to public.bus_lines using mode 'replace' -2025-07-07 08:22:44,015 - meshic_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: bus_lines --- -2025-07-07 08:22:44,015 - meshic_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'bus_lines': 0.00MB -2025-07-07 08:22:44,015 - meshic_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: metro_stations --- -2025-07-07 08:22:44,771 - meshic_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_metro_stations from known columns -2025-07-07 08:22:44,787 - meshic_pipeline.persistence.postgis_persister - INFO - Persisted 5 features to public.temp_metro_stations using mode 'replace' +2025-07-07 08:22:43,990 - suhail_pipeline.pipeline_orchestrator - INFO - Persisting 52 features for layer 'bus_lines' to table 'bus_lines' +2025-07-07 08:22:43,998 - suhail_pipeline.persistence.postgis_persister - INFO - Successfully created table public.bus_lines from known columns +2025-07-07 08:22:44,015 - suhail_pipeline.persistence.postgis_persister - INFO - Persisted 52 features to public.bus_lines using mode 'replace' +2025-07-07 08:22:44,015 - suhail_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: bus_lines --- +2025-07-07 08:22:44,015 - suhail_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'bus_lines': 0.00MB +2025-07-07 08:22:44,015 - suhail_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: metro_stations --- +2025-07-07 08:22:44,771 - suhail_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_metro_stations from known columns +2025-07-07 08:22:44,787 - suhail_pipeline.persistence.postgis_persister - INFO - Persisted 5 features to public.temp_metro_stations using mode 'replace' 2025-07-07 08:22:44,791 - pyogrio._io - INFO - Created 5 records -2025-07-07 08:22:44,792 - meshic_pipeline.pipeline_orchestrator - INFO - Persisting 5 features for layer 'metro_stations' to table 'metro_stations' -2025-07-07 08:22:44,794 - meshic_pipeline.persistence.postgis_persister - INFO - Performing upsert on public.metro_stations using ID column 'station_code' -2025-07-07 08:22:44,800 - meshic_pipeline.persistence.postgis_persister - INFO - Upsert complete. Affected 5 rows in public.metro_stations. -2025-07-07 08:22:44,801 - meshic_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: metro_stations --- -2025-07-07 08:22:44,801 - meshic_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'metro_stations': 0.00MB -2025-07-07 08:22:44,801 - meshic_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: riyadh_bus_stations --- -2025-07-07 08:22:45,564 - meshic_pipeline.pipeline_orchestrator - WARNING - Dropped 6 duplicate rows for primary key 'station_code' in layer 'riyadh_bus_stations' before DB write. -2025-07-07 08:22:45,571 - meshic_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_riyadh_bus_stations from known columns -2025-07-07 08:22:45,590 - meshic_pipeline.persistence.postgis_persister - INFO - Persisted 31 features to public.temp_riyadh_bus_stations using mode 'replace' +2025-07-07 08:22:44,792 - suhail_pipeline.pipeline_orchestrator - INFO - Persisting 5 features for layer 'metro_stations' to table 'metro_stations' +2025-07-07 08:22:44,794 - suhail_pipeline.persistence.postgis_persister - INFO - Performing upsert on public.metro_stations using ID column 'station_code' +2025-07-07 08:22:44,800 - suhail_pipeline.persistence.postgis_persister - INFO - Upsert complete. Affected 5 rows in public.metro_stations. +2025-07-07 08:22:44,801 - suhail_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: metro_stations --- +2025-07-07 08:22:44,801 - suhail_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'metro_stations': 0.00MB +2025-07-07 08:22:44,801 - suhail_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: riyadh_bus_stations --- +2025-07-07 08:22:45,564 - suhail_pipeline.pipeline_orchestrator - WARNING - Dropped 6 duplicate rows for primary key 'station_code' in layer 'riyadh_bus_stations' before DB write. +2025-07-07 08:22:45,571 - suhail_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_riyadh_bus_stations from known columns +2025-07-07 08:22:45,590 - suhail_pipeline.persistence.postgis_persister - INFO - Persisted 31 features to public.temp_riyadh_bus_stations using mode 'replace' 2025-07-07 08:22:45,593 - pyogrio._io - INFO - Created 31 records -2025-07-07 08:22:45,595 - meshic_pipeline.pipeline_orchestrator - INFO - Persisting 31 features for layer 'riyadh_bus_stations' to table 'riyadh_bus_stations' -2025-07-07 08:22:45,597 - meshic_pipeline.persistence.postgis_persister - INFO - Performing upsert on public.riyadh_bus_stations using ID column 'station_code' -2025-07-07 08:22:45,603 - meshic_pipeline.persistence.postgis_persister - INFO - Upsert complete. Affected 31 rows in public.riyadh_bus_stations. -2025-07-07 08:22:45,604 - meshic_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: riyadh_bus_stations --- -2025-07-07 08:22:45,604 - meshic_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'riyadh_bus_stations': 0.00MB -2025-07-07 08:22:45,604 - meshic_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: qi_population_metrics --- -2025-07-07 08:22:46,410 - meshic_pipeline.pipeline_orchestrator - WARNING - Dropped 64 duplicate rows for primary key 'grid_id' in layer 'qi_population_metrics' before DB write. -2025-07-07 08:22:46,416 - meshic_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_qi_population_metrics from known columns -2025-07-07 08:22:46,456 - meshic_pipeline.persistence.postgis_persister - INFO - Persisted 136 features to public.temp_qi_population_metrics using mode 'replace' +2025-07-07 08:22:45,595 - suhail_pipeline.pipeline_orchestrator - INFO - Persisting 31 features for layer 'riyadh_bus_stations' to table 'riyadh_bus_stations' +2025-07-07 08:22:45,597 - suhail_pipeline.persistence.postgis_persister - INFO - Performing upsert on public.riyadh_bus_stations using ID column 'station_code' +2025-07-07 08:22:45,603 - suhail_pipeline.persistence.postgis_persister - INFO - Upsert complete. Affected 31 rows in public.riyadh_bus_stations. +2025-07-07 08:22:45,604 - suhail_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: riyadh_bus_stations --- +2025-07-07 08:22:45,604 - suhail_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'riyadh_bus_stations': 0.00MB +2025-07-07 08:22:45,604 - suhail_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: qi_population_metrics --- +2025-07-07 08:22:46,410 - suhail_pipeline.pipeline_orchestrator - WARNING - Dropped 64 duplicate rows for primary key 'grid_id' in layer 'qi_population_metrics' before DB write. +2025-07-07 08:22:46,416 - suhail_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_qi_population_metrics from known columns +2025-07-07 08:22:46,456 - suhail_pipeline.persistence.postgis_persister - INFO - Persisted 136 features to public.temp_qi_population_metrics using mode 'replace' 2025-07-07 08:22:46,463 - pyogrio._io - INFO - Created 136 records -2025-07-07 08:22:46,466 - meshic_pipeline.pipeline_orchestrator - INFO - Persisting 136 features for layer 'qi_population_metrics' to table 'qi_population_metrics' -2025-07-07 08:22:46,471 - meshic_pipeline.persistence.postgis_persister - INFO - Performing upsert on public.qi_population_metrics using ID column 'grid_id' -2025-07-07 08:22:46,481 - meshic_pipeline.persistence.postgis_persister - INFO - Upsert complete. Affected 136 rows in public.qi_population_metrics. -2025-07-07 08:22:46,483 - meshic_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: qi_population_metrics --- -2025-07-07 08:22:46,483 - meshic_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'qi_population_metrics': 0.00MB -2025-07-07 08:22:46,483 - meshic_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: qi_stripes --- -2025-07-07 08:22:47,376 - meshic_pipeline.pipeline_orchestrator - WARNING - Dropped 105 duplicate rows for primary key 'strip_id' in layer 'qi_stripes' before DB write. -2025-07-07 08:22:47,382 - meshic_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_qi_stripes from known columns -2025-07-07 08:22:47,403 - meshic_pipeline.persistence.postgis_persister - INFO - Persisted 259 features to public.temp_qi_stripes using mode 'replace' +2025-07-07 08:22:46,466 - suhail_pipeline.pipeline_orchestrator - INFO - Persisting 136 features for layer 'qi_population_metrics' to table 'qi_population_metrics' +2025-07-07 08:22:46,471 - suhail_pipeline.persistence.postgis_persister - INFO - Performing upsert on public.qi_population_metrics using ID column 'grid_id' +2025-07-07 08:22:46,481 - suhail_pipeline.persistence.postgis_persister - INFO - Upsert complete. Affected 136 rows in public.qi_population_metrics. +2025-07-07 08:22:46,483 - suhail_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: qi_population_metrics --- +2025-07-07 08:22:46,483 - suhail_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'qi_population_metrics': 0.00MB +2025-07-07 08:22:46,483 - suhail_pipeline.pipeline_orchestrator - INFO - --- Starting processing for layer: qi_stripes --- +2025-07-07 08:22:47,376 - suhail_pipeline.pipeline_orchestrator - WARNING - Dropped 105 duplicate rows for primary key 'strip_id' in layer 'qi_stripes' before DB write. +2025-07-07 08:22:47,382 - suhail_pipeline.persistence.postgis_persister - INFO - Successfully created table public.temp_qi_stripes from known columns +2025-07-07 08:22:47,403 - suhail_pipeline.persistence.postgis_persister - INFO - Persisted 259 features to public.temp_qi_stripes using mode 'replace' 2025-07-07 08:22:47,415 - pyogrio._io - INFO - Created 259 records -2025-07-07 08:22:47,419 - meshic_pipeline.pipeline_orchestrator - INFO - Persisting 259 features for layer 'qi_stripes' to table 'qi_stripes' -2025-07-07 08:22:47,424 - meshic_pipeline.persistence.postgis_persister - INFO - Performing upsert on public.qi_stripes using ID column 'strip_id' -2025-07-07 08:22:47,437 - meshic_pipeline.persistence.postgis_persister - INFO - Upsert complete. Affected 259 rows in public.qi_stripes. -2025-07-07 08:22:47,439 - meshic_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: qi_stripes --- -2025-07-07 08:22:47,440 - meshic_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'qi_stripes': 0.00MB -2025-07-07 08:22:47,440 - meshic_pipeline.pipeline_orchestrator - INFO - 🎉 Pipeline finished successfully. 🎉 -2025-07-07 08:22:47,440 - meshic_pipeline.pipeline_orchestrator - INFO - Total memory change during run: 0.00MB +2025-07-07 08:22:47,419 - suhail_pipeline.pipeline_orchestrator - INFO - Persisting 259 features for layer 'qi_stripes' to table 'qi_stripes' +2025-07-07 08:22:47,424 - suhail_pipeline.persistence.postgis_persister - INFO - Performing upsert on public.qi_stripes using ID column 'strip_id' +2025-07-07 08:22:47,437 - suhail_pipeline.persistence.postgis_persister - INFO - Upsert complete. Affected 259 rows in public.qi_stripes. +2025-07-07 08:22:47,439 - suhail_pipeline.pipeline_orchestrator - INFO - --- Finished processing for layer: qi_stripes --- +2025-07-07 08:22:47,440 - suhail_pipeline.pipeline_orchestrator - INFO - Memory delta for layer 'qi_stripes': 0.00MB +2025-07-07 08:22:47,440 - suhail_pipeline.pipeline_orchestrator - INFO - 🎉 Pipeline finished successfully. 🎉 +2025-07-07 08:22:47,440 - suhail_pipeline.pipeline_orchestrator - INFO - Total memory change during run: 0.00MB diff --git a/docs/archive/generated-txt/vulture_report.txt b/docs/archive/generated-txt/vulture_report.txt index 9fe2e52..021efd8 100644 --- a/docs/archive/generated-txt/vulture_report.txt +++ b/docs/archive/generated-txt/vulture_report.txt @@ -1,152 +1,152 @@ -src/meshic_pipeline/cli.py:13: unused function 'geometric' (60% confidence) -src/meshic_pipeline/cli.py:79: unused function 'smart_pipeline' (60% confidence) -src/meshic_pipeline/cli.py:105: unused function 'province_geometric' (60% confidence) -src/meshic_pipeline/cli.py:121: unused function 'saudi_arabia_geometric' (60% confidence) -src/meshic_pipeline/cli.py:136: unused function 'discovery_summary' (60% confidence) -src/meshic_pipeline/cli.py:143: unused function 'province_pipeline' (60% confidence) -src/meshic_pipeline/cli.py:158: unused function 'saudi_pipeline' (60% confidence) -src/meshic_pipeline/config.py:40: unused variable 'STAGING' (60% confidence) -src/meshic_pipeline/config.py:78: unused variable 'model_config' (60% confidence) -src/meshic_pipeline/config.py:100: unused method 'build_urls' (60% confidence) -src/meshic_pipeline/config.py:118: unused variable 'model_config' (60% confidence) -src/meshic_pipeline/config.py:196: unused variable 'aggregation_rules_per_layer' (60% confidence) -src/meshic_pipeline/config.py:303: unused method 'ensure_dirs' (60% confidence) -src/meshic_pipeline/decoder/mvt_decoder.py:48: unused attribute 'quarantined_features' (60% confidence) -src/meshic_pipeline/decoder/mvt_decoder.py:195: unused method 'decode_to_gdf' (60% confidence) -src/meshic_pipeline/discovery/tile_discovery.py:19: unused import 'wkb' (90% confidence) -src/meshic_pipeline/discovery/tile_discovery.py:24: unused variable 'ZOOM15' (60% confidence) -src/meshic_pipeline/downloader/async_tile_downloader.py:53: unused variable 'exc_type' (100% confidence) -src/meshic_pipeline/downloader/async_tile_downloader.py:53: unused variable 'tb' (100% confidence) -src/meshic_pipeline/enrichment/api_client.py:264: unused function 'apply_arabic_column_mapping_dict' (60% confidence) -src/meshic_pipeline/exceptions.py:19: unused import 'Union' (90% confidence) -src/meshic_pipeline/exceptions.py:26: unused variable 'T' (60% confidence) -src/meshic_pipeline/exceptions.py:47: unused variable 'AUTHENTICATION' (60% confidence) -src/meshic_pipeline/exceptions.py:120: unused class 'DatabaseException' (60% confidence) -src/meshic_pipeline/exceptions.py:132: unused class 'ValidationException' (60% confidence) -src/meshic_pipeline/exceptions.py:144: unused class 'ConfigurationException' (60% confidence) -src/meshic_pipeline/exceptions.py:157: unused class 'ProcessingException' (60% confidence) -src/meshic_pipeline/exceptions.py:181: unused class 'FileSystemException' (60% confidence) -src/meshic_pipeline/exceptions.py:258: unused method 'get_error_stats' (60% confidence) -src/meshic_pipeline/exceptions.py:398: unused function 'handle_exceptions' (60% confidence) -src/meshic_pipeline/geometry/stitcher.py:22: unused function '_dissolve_group' (60% confidence) -src/meshic_pipeline/geometry/stitcher.py:25: unused variable 'geom_column' (100% confidence) -src/meshic_pipeline/geometry/stitcher.py:111: unused method 'stitch_geometries' (60% confidence) -src/meshic_pipeline/geometry/stitcher.py:204: unused method 'stitch_from_table' (60% confidence) -src/meshic_pipeline/logging_utils.py:24: unused import 'Union' (90% confidence) -src/meshic_pipeline/logging_utils.py:148: unused method 'shouldFlush' (60% confidence) -src/meshic_pipeline/logging_utils.py:234: unused method 'log_metrics' (60% confidence) -src/meshic_pipeline/logging_utils.py:247: unused method 'get_operation_stats' (60% confidence) -src/meshic_pipeline/logging_utils.py:281: unused method 'set_correlation_id' (60% confidence) -src/meshic_pipeline/logging_utils.py:314: unused method 'critical' (60% confidence) -src/meshic_pipeline/logging_utils.py:323: unused method 'operation_context' (60% confidence) -src/meshic_pipeline/logging_utils.py:508: unused function 'log_function_calls' (60% confidence) -src/meshic_pipeline/memory_utils.py:36: unused variable 'total_mb' (60% confidence) -src/meshic_pipeline/memory_utils.py:37: unused variable 'available_mb' (60% confidence) -src/meshic_pipeline/memory_utils.py:38: unused variable 'used_mb' (60% confidence) -src/meshic_pipeline/memory_utils.py:39: unused variable 'percent_used' (60% confidence) -src/meshic_pipeline/memory_utils.py:41: unused variable 'gc_collections' (60% confidence) -src/meshic_pipeline/memory_utils.py:144: unused method 'register_object' (60% confidence) -src/meshic_pipeline/memory_utils.py:155: unused method 'get_memory_history' (60% confidence) -src/meshic_pipeline/memory_utils.py:164: unused method 'get_memory_trend' (60% confidence) -src/meshic_pipeline/memory_utils.py:338: unused function 'batch_processor' (60% confidence) -src/meshic_pipeline/persistence/db.py:44: unused function 'setup_database' (60% confidence) -src/meshic_pipeline/persistence/enrichment_persister.py:5: unused import 'ceil' (90% confidence) -src/meshic_pipeline/persistence/models.py:2: unused import 'select' (90% confidence) -src/meshic_pipeline/persistence/models.py:18: unused import 'load_only' (90% confidence) -src/meshic_pipeline/persistence/models.py:24: unused class 'Parcel' (60% confidence) -src/meshic_pipeline/persistence/models.py:30: unused variable 'landuseagroup' (60% confidence) -src/meshic_pipeline/persistence/models.py:31: unused variable 'landuseadetailed' (60% confidence) -src/meshic_pipeline/persistence/models.py:32: unused variable 'subdivision_no' (60% confidence) -src/meshic_pipeline/persistence/models.py:35: unused variable 'neighborhood_id' (60% confidence) -src/meshic_pipeline/persistence/models.py:36: unused variable 'block_no' (60% confidence) -src/meshic_pipeline/persistence/models.py:37: unused variable 'neighborhood_ar' (60% confidence) -src/meshic_pipeline/persistence/models.py:38: unused variable 'subdivision_id' (60% confidence) -src/meshic_pipeline/persistence/models.py:40: unused variable 'shape_area' (60% confidence) -src/meshic_pipeline/persistence/models.py:42: unused variable 'ruleid' (60% confidence) -src/meshic_pipeline/persistence/models.py:43: unused variable 'province_id' (60% confidence) -src/meshic_pipeline/persistence/models.py:44: unused variable 'municipality_ar' (60% confidence) -src/meshic_pipeline/persistence/models.py:45: unused variable 'parcel_id' (60% confidence) -src/meshic_pipeline/persistence/models.py:46: unused variable 'parcel_no' (60% confidence) -src/meshic_pipeline/persistence/models.py:49: unused variable 'created_at' (60% confidence) -src/meshic_pipeline/persistence/models.py:50: unused variable 'updated_at' (60% confidence) -src/meshic_pipeline/persistence/models.py:51: unused variable 'is_active' (60% confidence) -src/meshic_pipeline/persistence/models.py:52: unused variable 'geometry_hash' (60% confidence) -src/meshic_pipeline/persistence/models.py:53: unused variable 'enriched_at' (60% confidence) -src/meshic_pipeline/persistence/models.py:55: unused variable 'neighborhood' (60% confidence) -src/meshic_pipeline/persistence/models.py:57: unused variable 'zoning_rule' (60% confidence) -src/meshic_pipeline/persistence/models.py:59: unused variable 'price_metrics' (60% confidence) -src/meshic_pipeline/persistence/models.py:60: unused variable 'building_rules' (60% confidence) -src/meshic_pipeline/persistence/models.py:74: unused variable 'parcel' (60% confidence) -src/meshic_pipeline/persistence/models.py:83: unused variable 'metric_id' (60% confidence) -src/meshic_pipeline/persistence/models.py:89: unused variable 'neighborhood_id' (60% confidence) -src/meshic_pipeline/persistence/models.py:91: unused variable 'parcel' (60% confidence) -src/meshic_pipeline/persistence/models.py:92: unused variable 'neighborhood' (60% confidence) -src/meshic_pipeline/persistence/models.py:122: unused variable 'parcel' (60% confidence) -src/meshic_pipeline/persistence/models.py:128: unused class 'Neighborhood' (60% confidence) -src/meshic_pipeline/persistence/models.py:130: unused variable 'neighborhood_id' (60% confidence) -src/meshic_pipeline/persistence/models.py:132: unused variable 'neighborhood_name' (60% confidence) -src/meshic_pipeline/persistence/models.py:133: unused variable 'neighborhood_ar' (60% confidence) -src/meshic_pipeline/persistence/models.py:134: unused variable 'region_id' (60% confidence) -src/meshic_pipeline/persistence/models.py:135: unused variable 'province_id' (60% confidence) -src/meshic_pipeline/persistence/models.py:137: unused variable 'shape_area' (60% confidence) -src/meshic_pipeline/persistence/models.py:141: unused variable 'geometry_hash' (60% confidence) -src/meshic_pipeline/persistence/models.py:144: unused variable 'price_metrics' (60% confidence) -src/meshic_pipeline/persistence/models.py:160: unused variable 'province_id' (60% confidence) -src/meshic_pipeline/persistence/models.py:162: unused variable 'province_name_ar' (60% confidence) -src/meshic_pipeline/persistence/models.py:169: unused variable 'bbox_sw_lon' (60% confidence) -src/meshic_pipeline/persistence/models.py:170: unused variable 'bbox_sw_lat' (60% confidence) -src/meshic_pipeline/persistence/models.py:171: unused variable 'bbox_ne_lon' (60% confidence) -src/meshic_pipeline/persistence/models.py:172: unused variable 'bbox_ne_lat' (60% confidence) -src/meshic_pipeline/persistence/models.py:173: unused variable 'region_id' (60% confidence) -src/meshic_pipeline/persistence/models.py:177: unused variable 'subdivisions' (60% confidence) -src/meshic_pipeline/persistence/models.py:179: unused class 'Subdivision' (60% confidence) -src/meshic_pipeline/persistence/models.py:181: unused variable 'subdivision_id' (60% confidence) -src/meshic_pipeline/persistence/models.py:183: unused variable 'subdivision_no' (60% confidence) -src/meshic_pipeline/persistence/models.py:184: unused variable 'shape_area' (60% confidence) -src/meshic_pipeline/persistence/models.py:189: unused variable 'province_id' (60% confidence) -src/meshic_pipeline/persistence/models.py:193: unused class 'ParcelsBase' (60% confidence) -src/meshic_pipeline/persistence/models.py:195: unused variable 'parcel_id' (60% confidence) -src/meshic_pipeline/persistence/models.py:198: unused class 'ZoningRule' (60% confidence) -src/meshic_pipeline/persistence/models.py:200: unused variable 'ruleid' (60% confidence) -src/meshic_pipeline/persistence/models.py:205: unused class 'LandUseGroup' (60% confidence) -src/meshic_pipeline/persistence/models.py:207: unused variable 'landuse_group' (60% confidence) -src/meshic_pipeline/persistence/models.py:210: unused class 'NeighborhoodsCentroids' (60% confidence) -src/meshic_pipeline/persistence/models.py:214: unused variable 'neighborh_aname' (60% confidence) -src/meshic_pipeline/persistence/models.py:215: unused variable 'province_id' (60% confidence) -src/meshic_pipeline/persistence/models.py:217: unused class 'MetroLines' (60% confidence) -src/meshic_pipeline/persistence/models.py:221: unused variable 'track_color' (60% confidence) -src/meshic_pipeline/persistence/models.py:222: unused variable 'track_length' (60% confidence) -src/meshic_pipeline/persistence/models.py:223: unused variable 'track_name' (60% confidence) -src/meshic_pipeline/persistence/models.py:225: unused class 'ParcelsCentroids' (60% confidence) -src/meshic_pipeline/persistence/models.py:227: unused variable 'parcel_no' (60% confidence) -src/meshic_pipeline/persistence/models.py:233: unused class 'BusLines' (60% confidence) -src/meshic_pipeline/persistence/models.py:237: unused variable 'busroute' (60% confidence) -src/meshic_pipeline/persistence/models.py:238: unused variable 'route_name' (60% confidence) -src/meshic_pipeline/persistence/models.py:239: unused variable 'route_type' (60% confidence) -src/meshic_pipeline/persistence/models.py:241: unused class 'MetroStations' (60% confidence) -src/meshic_pipeline/persistence/models.py:243: unused variable 'station_code' (60% confidence) -src/meshic_pipeline/persistence/models.py:245: unused variable 'station_name' (60% confidence) -src/meshic_pipeline/persistence/models.py:246: unused variable 'line' (60% confidence) -src/meshic_pipeline/persistence/models.py:248: unused class 'RiyadhBusStations' (60% confidence) -src/meshic_pipeline/persistence/models.py:250: unused variable 'station_code' (60% confidence) -src/meshic_pipeline/persistence/models.py:252: unused variable 'station_name' (60% confidence) -src/meshic_pipeline/persistence/models.py:253: unused variable 'route' (60% confidence) -src/meshic_pipeline/persistence/models.py:255: unused class 'QIPopulationMetrics' (60% confidence) -src/meshic_pipeline/persistence/models.py:257: unused variable 'grid_id' (60% confidence) -src/meshic_pipeline/persistence/models.py:258: unused variable 'population' (60% confidence) -src/meshic_pipeline/persistence/models.py:261: unused class 'QIStripes' (60% confidence) -src/meshic_pipeline/persistence/models.py:263: unused variable 'strip_id' (60% confidence) -src/meshic_pipeline/persistence/models.py:272: unused variable 'zoom_level' (60% confidence) -src/meshic_pipeline/persistence/models.py:279: unused variable 'created_at' (60% confidence) -src/meshic_pipeline/persistence/models.py:280: unused variable 'updated_at' (60% confidence) -src/meshic_pipeline/persistence/models.py:282: unused method 'fetch_tiles_by_status' (60% confidence) -src/meshic_pipeline/pipeline_orchestrator.py:6: unused import 'concurrent' (90% confidence) -src/meshic_pipeline/pipeline_orchestrator.py:65: unused function 'enrich_parcels_with_region_id' (60% confidence) -src/meshic_pipeline/run_enrichment_pipeline.py:32: unused import 'sessionmaker' (90% confidence) -src/meshic_pipeline/run_enrichment_pipeline.py:34: unused import 'ValidationException' (90% confidence) -src/meshic_pipeline/run_monitoring.py:70: unused function 'recommend' (60% confidence) -src/meshic_pipeline/run_monitoring.py:77: unused variable 'trigger_parcels' (60% confidence) -src/meshic_pipeline/run_monitoring.py:166: unused function 'schedule_info' (60% confidence) +src/suhail_pipeline/cli.py:13: unused function 'geometric' (60% confidence) +src/suhail_pipeline/cli.py:79: unused function 'smart_pipeline' (60% confidence) +src/suhail_pipeline/cli.py:105: unused function 'province_geometric' (60% confidence) +src/suhail_pipeline/cli.py:121: unused function 'saudi_arabia_geometric' (60% confidence) +src/suhail_pipeline/cli.py:136: unused function 'discovery_summary' (60% confidence) +src/suhail_pipeline/cli.py:143: unused function 'province_pipeline' (60% confidence) +src/suhail_pipeline/cli.py:158: unused function 'saudi_pipeline' (60% confidence) +src/suhail_pipeline/config.py:40: unused variable 'STAGING' (60% confidence) +src/suhail_pipeline/config.py:78: unused variable 'model_config' (60% confidence) +src/suhail_pipeline/config.py:100: unused method 'build_urls' (60% confidence) +src/suhail_pipeline/config.py:118: unused variable 'model_config' (60% confidence) +src/suhail_pipeline/config.py:196: unused variable 'aggregation_rules_per_layer' (60% confidence) +src/suhail_pipeline/config.py:303: unused method 'ensure_dirs' (60% confidence) +src/suhail_pipeline/decoder/mvt_decoder.py:48: unused attribute 'quarantined_features' (60% confidence) +src/suhail_pipeline/decoder/mvt_decoder.py:195: unused method 'decode_to_gdf' (60% confidence) +src/suhail_pipeline/discovery/tile_discovery.py:19: unused import 'wkb' (90% confidence) +src/suhail_pipeline/discovery/tile_discovery.py:24: unused variable 'ZOOM15' (60% confidence) +src/suhail_pipeline/downloader/async_tile_downloader.py:53: unused variable 'exc_type' (100% confidence) +src/suhail_pipeline/downloader/async_tile_downloader.py:53: unused variable 'tb' (100% confidence) +src/suhail_pipeline/enrichment/api_client.py:264: unused function 'apply_arabic_column_mapping_dict' (60% confidence) +src/suhail_pipeline/exceptions.py:19: unused import 'Union' (90% confidence) +src/suhail_pipeline/exceptions.py:26: unused variable 'T' (60% confidence) +src/suhail_pipeline/exceptions.py:47: unused variable 'AUTHENTICATION' (60% confidence) +src/suhail_pipeline/exceptions.py:120: unused class 'DatabaseException' (60% confidence) +src/suhail_pipeline/exceptions.py:132: unused class 'ValidationException' (60% confidence) +src/suhail_pipeline/exceptions.py:144: unused class 'ConfigurationException' (60% confidence) +src/suhail_pipeline/exceptions.py:157: unused class 'ProcessingException' (60% confidence) +src/suhail_pipeline/exceptions.py:181: unused class 'FileSystemException' (60% confidence) +src/suhail_pipeline/exceptions.py:258: unused method 'get_error_stats' (60% confidence) +src/suhail_pipeline/exceptions.py:398: unused function 'handle_exceptions' (60% confidence) +src/suhail_pipeline/geometry/stitcher.py:22: unused function '_dissolve_group' (60% confidence) +src/suhail_pipeline/geometry/stitcher.py:25: unused variable 'geom_column' (100% confidence) +src/suhail_pipeline/geometry/stitcher.py:111: unused method 'stitch_geometries' (60% confidence) +src/suhail_pipeline/geometry/stitcher.py:204: unused method 'stitch_from_table' (60% confidence) +src/suhail_pipeline/logging_utils.py:24: unused import 'Union' (90% confidence) +src/suhail_pipeline/logging_utils.py:148: unused method 'shouldFlush' (60% confidence) +src/suhail_pipeline/logging_utils.py:234: unused method 'log_metrics' (60% confidence) +src/suhail_pipeline/logging_utils.py:247: unused method 'get_operation_stats' (60% confidence) +src/suhail_pipeline/logging_utils.py:281: unused method 'set_correlation_id' (60% confidence) +src/suhail_pipeline/logging_utils.py:314: unused method 'critical' (60% confidence) +src/suhail_pipeline/logging_utils.py:323: unused method 'operation_context' (60% confidence) +src/suhail_pipeline/logging_utils.py:508: unused function 'log_function_calls' (60% confidence) +src/suhail_pipeline/memory_utils.py:36: unused variable 'total_mb' (60% confidence) +src/suhail_pipeline/memory_utils.py:37: unused variable 'available_mb' (60% confidence) +src/suhail_pipeline/memory_utils.py:38: unused variable 'used_mb' (60% confidence) +src/suhail_pipeline/memory_utils.py:39: unused variable 'percent_used' (60% confidence) +src/suhail_pipeline/memory_utils.py:41: unused variable 'gc_collections' (60% confidence) +src/suhail_pipeline/memory_utils.py:144: unused method 'register_object' (60% confidence) +src/suhail_pipeline/memory_utils.py:155: unused method 'get_memory_history' (60% confidence) +src/suhail_pipeline/memory_utils.py:164: unused method 'get_memory_trend' (60% confidence) +src/suhail_pipeline/memory_utils.py:338: unused function 'batch_processor' (60% confidence) +src/suhail_pipeline/persistence/db.py:44: unused function 'setup_database' (60% confidence) +src/suhail_pipeline/persistence/enrichment_persister.py:5: unused import 'ceil' (90% confidence) +src/suhail_pipeline/persistence/models.py:2: unused import 'select' (90% confidence) +src/suhail_pipeline/persistence/models.py:18: unused import 'load_only' (90% confidence) +src/suhail_pipeline/persistence/models.py:24: unused class 'Parcel' (60% confidence) +src/suhail_pipeline/persistence/models.py:30: unused variable 'landuseagroup' (60% confidence) +src/suhail_pipeline/persistence/models.py:31: unused variable 'landuseadetailed' (60% confidence) +src/suhail_pipeline/persistence/models.py:32: unused variable 'subdivision_no' (60% confidence) +src/suhail_pipeline/persistence/models.py:35: unused variable 'neighborhood_id' (60% confidence) +src/suhail_pipeline/persistence/models.py:36: unused variable 'block_no' (60% confidence) +src/suhail_pipeline/persistence/models.py:37: unused variable 'neighborhood_ar' (60% confidence) +src/suhail_pipeline/persistence/models.py:38: unused variable 'subdivision_id' (60% confidence) +src/suhail_pipeline/persistence/models.py:40: unused variable 'shape_area' (60% confidence) +src/suhail_pipeline/persistence/models.py:42: unused variable 'ruleid' (60% confidence) +src/suhail_pipeline/persistence/models.py:43: unused variable 'province_id' (60% confidence) +src/suhail_pipeline/persistence/models.py:44: unused variable 'municipality_ar' (60% confidence) +src/suhail_pipeline/persistence/models.py:45: unused variable 'parcel_id' (60% confidence) +src/suhail_pipeline/persistence/models.py:46: unused variable 'parcel_no' (60% confidence) +src/suhail_pipeline/persistence/models.py:49: unused variable 'created_at' (60% confidence) +src/suhail_pipeline/persistence/models.py:50: unused variable 'updated_at' (60% confidence) +src/suhail_pipeline/persistence/models.py:51: unused variable 'is_active' (60% confidence) +src/suhail_pipeline/persistence/models.py:52: unused variable 'geometry_hash' (60% confidence) +src/suhail_pipeline/persistence/models.py:53: unused variable 'enriched_at' (60% confidence) +src/suhail_pipeline/persistence/models.py:55: unused variable 'neighborhood' (60% confidence) +src/suhail_pipeline/persistence/models.py:57: unused variable 'zoning_rule' (60% confidence) +src/suhail_pipeline/persistence/models.py:59: unused variable 'price_metrics' (60% confidence) +src/suhail_pipeline/persistence/models.py:60: unused variable 'building_rules' (60% confidence) +src/suhail_pipeline/persistence/models.py:74: unused variable 'parcel' (60% confidence) +src/suhail_pipeline/persistence/models.py:83: unused variable 'metric_id' (60% confidence) +src/suhail_pipeline/persistence/models.py:89: unused variable 'neighborhood_id' (60% confidence) +src/suhail_pipeline/persistence/models.py:91: unused variable 'parcel' (60% confidence) +src/suhail_pipeline/persistence/models.py:92: unused variable 'neighborhood' (60% confidence) +src/suhail_pipeline/persistence/models.py:122: unused variable 'parcel' (60% confidence) +src/suhail_pipeline/persistence/models.py:128: unused class 'Neighborhood' (60% confidence) +src/suhail_pipeline/persistence/models.py:130: unused variable 'neighborhood_id' (60% confidence) +src/suhail_pipeline/persistence/models.py:132: unused variable 'neighborhood_name' (60% confidence) +src/suhail_pipeline/persistence/models.py:133: unused variable 'neighborhood_ar' (60% confidence) +src/suhail_pipeline/persistence/models.py:134: unused variable 'region_id' (60% confidence) +src/suhail_pipeline/persistence/models.py:135: unused variable 'province_id' (60% confidence) +src/suhail_pipeline/persistence/models.py:137: unused variable 'shape_area' (60% confidence) +src/suhail_pipeline/persistence/models.py:141: unused variable 'geometry_hash' (60% confidence) +src/suhail_pipeline/persistence/models.py:144: unused variable 'price_metrics' (60% confidence) +src/suhail_pipeline/persistence/models.py:160: unused variable 'province_id' (60% confidence) +src/suhail_pipeline/persistence/models.py:162: unused variable 'province_name_ar' (60% confidence) +src/suhail_pipeline/persistence/models.py:169: unused variable 'bbox_sw_lon' (60% confidence) +src/suhail_pipeline/persistence/models.py:170: unused variable 'bbox_sw_lat' (60% confidence) +src/suhail_pipeline/persistence/models.py:171: unused variable 'bbox_ne_lon' (60% confidence) +src/suhail_pipeline/persistence/models.py:172: unused variable 'bbox_ne_lat' (60% confidence) +src/suhail_pipeline/persistence/models.py:173: unused variable 'region_id' (60% confidence) +src/suhail_pipeline/persistence/models.py:177: unused variable 'subdivisions' (60% confidence) +src/suhail_pipeline/persistence/models.py:179: unused class 'Subdivision' (60% confidence) +src/suhail_pipeline/persistence/models.py:181: unused variable 'subdivision_id' (60% confidence) +src/suhail_pipeline/persistence/models.py:183: unused variable 'subdivision_no' (60% confidence) +src/suhail_pipeline/persistence/models.py:184: unused variable 'shape_area' (60% confidence) +src/suhail_pipeline/persistence/models.py:189: unused variable 'province_id' (60% confidence) +src/suhail_pipeline/persistence/models.py:193: unused class 'ParcelsBase' (60% confidence) +src/suhail_pipeline/persistence/models.py:195: unused variable 'parcel_id' (60% confidence) +src/suhail_pipeline/persistence/models.py:198: unused class 'ZoningRule' (60% confidence) +src/suhail_pipeline/persistence/models.py:200: unused variable 'ruleid' (60% confidence) +src/suhail_pipeline/persistence/models.py:205: unused class 'LandUseGroup' (60% confidence) +src/suhail_pipeline/persistence/models.py:207: unused variable 'landuse_group' (60% confidence) +src/suhail_pipeline/persistence/models.py:210: unused class 'NeighborhoodsCentroids' (60% confidence) +src/suhail_pipeline/persistence/models.py:214: unused variable 'neighborh_aname' (60% confidence) +src/suhail_pipeline/persistence/models.py:215: unused variable 'province_id' (60% confidence) +src/suhail_pipeline/persistence/models.py:217: unused class 'MetroLines' (60% confidence) +src/suhail_pipeline/persistence/models.py:221: unused variable 'track_color' (60% confidence) +src/suhail_pipeline/persistence/models.py:222: unused variable 'track_length' (60% confidence) +src/suhail_pipeline/persistence/models.py:223: unused variable 'track_name' (60% confidence) +src/suhail_pipeline/persistence/models.py:225: unused class 'ParcelsCentroids' (60% confidence) +src/suhail_pipeline/persistence/models.py:227: unused variable 'parcel_no' (60% confidence) +src/suhail_pipeline/persistence/models.py:233: unused class 'BusLines' (60% confidence) +src/suhail_pipeline/persistence/models.py:237: unused variable 'busroute' (60% confidence) +src/suhail_pipeline/persistence/models.py:238: unused variable 'route_name' (60% confidence) +src/suhail_pipeline/persistence/models.py:239: unused variable 'route_type' (60% confidence) +src/suhail_pipeline/persistence/models.py:241: unused class 'MetroStations' (60% confidence) +src/suhail_pipeline/persistence/models.py:243: unused variable 'station_code' (60% confidence) +src/suhail_pipeline/persistence/models.py:245: unused variable 'station_name' (60% confidence) +src/suhail_pipeline/persistence/models.py:246: unused variable 'line' (60% confidence) +src/suhail_pipeline/persistence/models.py:248: unused class 'RiyadhBusStations' (60% confidence) +src/suhail_pipeline/persistence/models.py:250: unused variable 'station_code' (60% confidence) +src/suhail_pipeline/persistence/models.py:252: unused variable 'station_name' (60% confidence) +src/suhail_pipeline/persistence/models.py:253: unused variable 'route' (60% confidence) +src/suhail_pipeline/persistence/models.py:255: unused class 'QIPopulationMetrics' (60% confidence) +src/suhail_pipeline/persistence/models.py:257: unused variable 'grid_id' (60% confidence) +src/suhail_pipeline/persistence/models.py:258: unused variable 'population' (60% confidence) +src/suhail_pipeline/persistence/models.py:261: unused class 'QIStripes' (60% confidence) +src/suhail_pipeline/persistence/models.py:263: unused variable 'strip_id' (60% confidence) +src/suhail_pipeline/persistence/models.py:272: unused variable 'zoom_level' (60% confidence) +src/suhail_pipeline/persistence/models.py:279: unused variable 'created_at' (60% confidence) +src/suhail_pipeline/persistence/models.py:280: unused variable 'updated_at' (60% confidence) +src/suhail_pipeline/persistence/models.py:282: unused method 'fetch_tiles_by_status' (60% confidence) +src/suhail_pipeline/pipeline_orchestrator.py:6: unused import 'concurrent' (90% confidence) +src/suhail_pipeline/pipeline_orchestrator.py:65: unused function 'enrich_parcels_with_region_id' (60% confidence) +src/suhail_pipeline/run_enrichment_pipeline.py:32: unused import 'sessionmaker' (90% confidence) +src/suhail_pipeline/run_enrichment_pipeline.py:34: unused import 'ValidationException' (90% confidence) +src/suhail_pipeline/run_monitoring.py:70: unused function 'recommend' (60% confidence) +src/suhail_pipeline/run_monitoring.py:77: unused variable 'trigger_parcels' (60% confidence) +src/suhail_pipeline/run_monitoring.py:166: unused function 'schedule_info' (60% confidence) tests/integration/test_pipeline_integration.py:59: unused variable 'exc_type' (100% confidence) tests/integration/test_pipeline_integration.py:59: unused variable 'tb' (100% confidence) tests/integration/test_pipeline_integration.py:152: unused variable 'exc_type' (100% confidence) diff --git a/docs/archive/legacy-root-md/CONFIGURATION_FIXES_TEST_REPORT.md b/docs/archive/legacy-root-md/CONFIGURATION_FIXES_TEST_REPORT.md index 56a0b89..ffc30eb 100644 --- a/docs/archive/legacy-root-md/CONFIGURATION_FIXES_TEST_REPORT.md +++ b/docs/archive/legacy-root-md/CONFIGURATION_FIXES_TEST_REPORT.md @@ -132,7 +132,7 @@ The most important finding is that **16,807 tiles from 3 major regions were succ 3. Fixing this could instantly populate 10 empty provinces **Next investigation should focus on:** -- `src/meshic_pipeline/run_db_geometric.py` - province assignment logic +- `src/suhail_pipeline/run_db_geometric.py` - province assignment logic - Province polygon boundaries in PostGIS - Spatial join queries and coordinate transformations diff --git a/docs/archive/legacy-root-md/CONFIGURATION_ISSUES_ANALYSIS.md b/docs/archive/legacy-root-md/CONFIGURATION_ISSUES_ANALYSIS.md index 06931b9..47423c9 100644 --- a/docs/archive/legacy-root-md/CONFIGURATION_ISSUES_ANALYSIS.md +++ b/docs/archive/legacy-root-md/CONFIGURATION_ISSUES_ANALYSIS.md @@ -169,9 +169,9 @@ WHERE tile_server_url = 'https://tiles.suhail.ai/makkah_region/'; ```bash # After fixes applied -meshic-pipeline province-geometric makkah -meshic-pipeline province-geometric eastern_region -meshic-pipeline province-geometric al_madenieh +suhail-pipeline province-geometric makkah +suhail-pipeline province-geometric eastern_region +suhail-pipeline province-geometric al_madenieh # ... etc ``` diff --git a/docs/archive/legacy-root-md/DATABASE_ARCHITECTURE_ANALYSIS.md b/docs/archive/legacy-root-md/DATABASE_ARCHITECTURE_ANALYSIS.md index 94fb987..5942a55 100644 --- a/docs/archive/legacy-root-md/DATABASE_ARCHITECTURE_ANALYSIS.md +++ b/docs/archive/legacy-root-md/DATABASE_ARCHITECTURE_ANALYSIS.md @@ -1,13 +1,13 @@ # Database Architecture Analysis Report -**Project**: Meshic Real Estate Data Pipeline +**Project**: Suhail Real Estate Data Pipeline **Date**: December 10, 2024 **Analyst**: Senior Database Architect **Status**: Production System (2.3M+ parcels) ## Executive Summary -The Meshic pipeline database demonstrates **solid foundational design** for a geospatial real estate platform but suffers from **critical performance bottlenecks** that will severely impact operations at the current scale. Analysis reveals missing indexes on 2.3M+ parcel foreign keys, data redundancy across geographic hierarchy levels, and normalization violations that create maintenance overhead. +The Suhail pipeline database demonstrates **solid foundational design** for a geospatial real estate platform but suffers from **critical performance bottlenecks** that will severely impact operations at the current scale. Analysis reveals missing indexes on 2.3M+ parcel foreign keys, data redundancy across geographic hierarchy levels, and normalization violations that create maintenance overhead. **Key Finding**: The system can achieve **60-80% performance improvement** through safe index additions without breaking the existing ETL pipeline. @@ -239,7 +239,7 @@ ORDER BY idx_scan DESC; ## Conclusion -The Meshic database architecture demonstrates **strong foundational design** but requires **immediate performance optimization** to support current scale effectively. The most critical improvements (indexes) can be implemented safely without pipeline disruption, providing substantial performance gains. +The Suhail database architecture demonstrates **strong foundational design** but requires **immediate performance optimization** to support current scale effectively. The most critical improvements (indexes) can be implemented safely without pipeline disruption, providing substantial performance gains. **Recommended Action**: Proceed immediately with Phase 1 implementation for critical performance improvements, then evaluate Phase 2+ based on operational priorities and development bandwidth. diff --git a/docs/archive/legacy-root-md/FINAL_RECOVERY_REPORT.md b/docs/archive/legacy-root-md/FINAL_RECOVERY_REPORT.md index 637790a..a6a747a 100644 --- a/docs/archive/legacy-root-md/FINAL_RECOVERY_REPORT.md +++ b/docs/archive/legacy-root-md/FINAL_RECOVERY_REPORT.md @@ -7,7 +7,7 @@ ## 🎯 Executive Summary -**MASSIVE SUCCESS**: We successfully diagnosed, fixed, and recovered from critical configuration and spatial assignment issues in the Meshic pipeline, resulting in the recovery of nearly 800,000 previously "lost" parcels and achieving 99.98% province assignment rate across Saudi Arabia. +**MASSIVE SUCCESS**: We successfully diagnosed, fixed, and recovered from critical configuration and spatial assignment issues in the Suhail pipeline, resulting in the recovery of nearly 800,000 previously "lost" parcels and achieving 99.98% province assignment rate across Saudi Arabia. --- @@ -179,7 +179,7 @@ The system is now **production-ready** for: 4. **Enrichment pipeline**: Begin API enrichment with assigned parcels ### **System Capabilities** -The Meshic pipeline now supports: +The Suhail pipeline now supports: - ✅ **Multi-province concurrent processing** - ✅ **Automatic spatial assignments** - ✅ **Proper Arabic/English naming** diff --git a/docs/archive/legacy-root-md/PERFORMANCE_OPTIMIZATION_REPORT.md b/docs/archive/legacy-root-md/PERFORMANCE_OPTIMIZATION_REPORT.md index 8edacad..74cd3b4 100644 --- a/docs/archive/legacy-root-md/PERFORMANCE_OPTIMIZATION_REPORT.md +++ b/docs/archive/legacy-root-md/PERFORMANCE_OPTIMIZATION_REPORT.md @@ -1,7 +1,7 @@ # Database Performance Optimization Report **Date**: December 10, 2024 -**Project**: Meshic Real Estate Data Pipeline +**Project**: Suhail Real Estate Data Pipeline **Migration**: `19c587b33197_add_critical_performance_indexes` **Status**: ✅ **COMPLETED SUCCESSFULLY** @@ -9,7 +9,7 @@ ## 🎯 Executive Summary -Critical database performance optimizations have been **successfully implemented** for the Meshic pipeline, providing **60-80% performance improvement** for core operations without breaking existing ETL pipeline functionality. +Critical database performance optimizations have been **successfully implemented** for the Suhail pipeline, providing **60-80% performance improvement** for core operations without breaking existing ETL pipeline functionality. ### 🔑 Key Achievements - ✅ **27 performance indexes** created across critical tables @@ -200,7 +200,7 @@ Based on operational needs and development bandwidth: ## 📊 Validation Results ### Database Connection -✅ Connected to database: `meshic` +✅ Connected to database: `suhail` ### Performance Indexes ✅ **27 performance indexes** successfully created @@ -219,7 +219,7 @@ Based on operational needs and development bandwidth: ## 🏆 Conclusion -The Meshic database performance optimization has been **successfully completed** with **zero risk** to existing operations. The pipeline is now ready for: +The Suhail database performance optimization has been **successfully completed** with **zero risk** to existing operations. The pipeline is now ready for: - **✅ Province-wide processing** with optimal performance - **✅ All-Saudi scrapes** handling 6M+ parcels efficiently diff --git a/docs/archive/memory-bank/activeContext.md b/docs/archive/memory-bank/activeContext.md index 8433b15..91dbbef 100644 --- a/docs/archive/memory-bank/activeContext.md +++ b/docs/archive/memory-bank/activeContext.md @@ -122,8 +122,8 @@ source .venv/bin/activate uv add -e . # Core testing commands -meshic-pipeline geometric # 3x3 baseline test -meshic-pipeline fast-enrich --limit 100 # Enrichment validation +suhail-pipeline geometric # 3x3 baseline test +suhail-pipeline fast-enrich --limit 100 # Enrichment validation python scripts/check_db.py # Database validation ``` @@ -226,20 +226,20 @@ See `docs/archive/legacy-root-md/DATABASE_ARCHITECTURE_ANALYSIS.md` for comprehe > For a complete, up-to-date audit, see [`docs/CLI_COMMAND_AUDIT.md`](../docs/CLI_COMMAND_AUDIT.md) and the README. ### Core Commands -- `meshic-pipeline geometric [--bbox ...] [--recreate-db] [--save-as-temp ...]` -- `meshic-pipeline fast-enrich [--batch-size ...] [--limit ...]` -- `meshic-pipeline incremental-enrich [--batch-size ...] [--days-old ...] [--limit ...]` -- `meshic-pipeline full-refresh [--batch-size ...] [--limit ...]` -- `meshic-pipeline delta-enrich [--batch-size ...] [--limit ...] [--fresh-table ...] [--auto-geometric] [--show-details/--no-details]` +- `suhail-pipeline geometric [--bbox ...] [--recreate-db] [--save-as-temp ...]` +- `suhail-pipeline fast-enrich [--batch-size ...] [--limit ...]` +- `suhail-pipeline incremental-enrich [--batch-size ...] [--days-old ...] [--limit ...]` +- `suhail-pipeline full-refresh [--batch-size ...] [--limit ...]` +- `suhail-pipeline delta-enrich [--batch-size ...] [--limit ...] [--fresh-table ...] [--auto-geometric] [--show-details/--no-details]` ### Advanced/Composite Commands -- `meshic-pipeline smart-pipeline [--geometric-first] [--batch-size ...] [--bbox ...]` -- `meshic-pipeline monitor ` -- `meshic-pipeline province-geometric [--strategy ...] [--recreate-db] [--save-as-temp ...]` -- `meshic-pipeline saudi-arabia-geometric [--strategy ...] [--recreate-db] [--save-as-temp ...]` -- `meshic-pipeline discovery-summary` -- `meshic-pipeline province-pipeline [--strategy ...] [--batch-size ...] [--geometric-first]` -- `meshic-pipeline saudi-pipeline [--strategy ...] [--batch-size ...] [--geometric-first]` +- `suhail-pipeline smart-pipeline [--geometric-first] [--batch-size ...] [--bbox ...]` +- `suhail-pipeline monitor ` +- `suhail-pipeline province-geometric [--strategy ...] [--recreate-db] [--save-as-temp ...]` +- `suhail-pipeline saudi-arabia-geometric [--strategy ...] [--recreate-db] [--save-as-temp ...]` +- `suhail-pipeline discovery-summary` +- `suhail-pipeline province-pipeline [--strategy ...] [--batch-size ...] [--geometric-first]` +- `suhail-pipeline saudi-pipeline [--strategy ...] [--batch-size ...] [--geometric-first]` ### Workflow Recommendations - **Baseline/Small Grid:** Use `geometric` and `fast-enrich` for initial validation. diff --git a/docs/archive/memory-bank/progress.md b/docs/archive/memory-bank/progress.md index cebf47d..24148e5 100644 --- a/docs/archive/memory-bank/progress.md +++ b/docs/archive/memory-bank/progress.md @@ -31,7 +31,7 @@ **Status**: Complete **Tasks**: -- [x] **Package Installation**: Install meshic-pipeline with `uv sync --all-groups` +- [x] **Package Installation**: Install suhail-pipeline with `uv sync --all-groups` - [x] **Environment Activation**: Source virtual environment - [x] **Database Connection**: Verify PostgreSQL/PostGIS connectivity - [x] **Configuration Validation**: Confirm pipeline settings @@ -47,7 +47,7 @@ - **Purpose**: Confirm basic pipeline functionality with fresh database **Tasks**: -- [x] **Execute Geometric Pipeline**: Run `meshic-pipeline geometric` +- [x] **Execute Geometric Pipeline**: Run `suhail-pipeline geometric` - [x] **Verify Database Population**: Check parcels and reference tables - [x] **Validate Data Types**: Confirm proper schema alignment - [x] **Check Foreign Keys**: Verify relationship integrity @@ -63,7 +63,7 @@ **Status**: Complete **Tasks**: -- [x] **API Integration Test**: Run `meshic-pipeline fast-enrich --limit 100` (**Success: 100 parcels processed, 10 transactions, 0 building rules, 200 price metrics added**) +- [x] **API Integration Test**: Run `suhail-pipeline fast-enrich --limit 100` (**Success: 100 parcels processed, 10 transactions, 0 building rules, 200 price metrics added**) - [x] **Success Rate Monitoring**: Track enrichment coverage percentage (see Results below) - [x] **Endpoint Validation**: All 3 API endpoints responsive (transactions, building rules, price metrics) - [x] **Data Quality Check**: Enrichment data written to DB, no errors @@ -308,20 +308,20 @@ CREATE INDEX idx_parcel_price_metrics_neighborhood_id ON parcel_price_metrics(ne > For a complete, up-to-date audit, see [`docs/CLI_COMMAND_AUDIT.md`](../docs/CLI_COMMAND_AUDIT.md) and the README. ### Core Commands -- `meshic-pipeline geometric [--bbox ...] [--recreate-db] [--save-as-temp ...]` -- `meshic-pipeline fast-enrich [--batch-size ...] [--limit ...]` -- `meshic-pipeline incremental-enrich [--batch-size ...] [--days-old ...] [--limit ...]` -- `meshic-pipeline full-refresh [--batch-size ...] [--limit ...]` -- `meshic-pipeline delta-enrich [--batch-size ...] [--limit ...] [--fresh-table ...] [--auto-geometric] [--show-details/--no-details]` +- `suhail-pipeline geometric [--bbox ...] [--recreate-db] [--save-as-temp ...]` +- `suhail-pipeline fast-enrich [--batch-size ...] [--limit ...]` +- `suhail-pipeline incremental-enrich [--batch-size ...] [--days-old ...] [--limit ...]` +- `suhail-pipeline full-refresh [--batch-size ...] [--limit ...]` +- `suhail-pipeline delta-enrich [--batch-size ...] [--limit ...] [--fresh-table ...] [--auto-geometric] [--show-details/--no-details]` ### Advanced/Composite Commands -- `meshic-pipeline smart-pipeline [--geometric-first] [--batch-size ...] [--bbox ...]` -- `meshic-pipeline monitor ` -- `meshic-pipeline province-geometric [--strategy ...] [--recreate-db] [--save-as-temp ...]` -- `meshic-pipeline saudi-arabia-geometric [--strategy ...] [--recreate-db] [--save-as-temp ...]` -- `meshic-pipeline discovery-summary` -- `meshic-pipeline province-pipeline [--strategy ...] [--batch-size ...] [--geometric-first]` -- `meshic-pipeline saudi-pipeline [--strategy ...] [--batch-size ...] [--geometric-first]` +- `suhail-pipeline smart-pipeline [--geometric-first] [--batch-size ...] [--bbox ...]` +- `suhail-pipeline monitor ` +- `suhail-pipeline province-geometric [--strategy ...] [--recreate-db] [--save-as-temp ...]` +- `suhail-pipeline saudi-arabia-geometric [--strategy ...] [--recreate-db] [--save-as-temp ...]` +- `suhail-pipeline discovery-summary` +- `suhail-pipeline province-pipeline [--strategy ...] [--batch-size ...] [--geometric-first]` +- `suhail-pipeline saudi-pipeline [--strategy ...] [--batch-size ...] [--geometric-first]` ### Phase-by-Phase Command Usage - **Baseline/3x3 Grid:** diff --git a/docs/archive/memory-bank/projectbrief.md b/docs/archive/memory-bank/projectbrief.md index 0db8306..e13c7b2 100644 --- a/docs/archive/memory-bank/projectbrief.md +++ b/docs/archive/memory-bank/projectbrief.md @@ -1,4 +1,4 @@ -# Project Brief: Meshic Geospatial Data Pipeline +# Project Brief: Suhail Geospatial Data Pipeline ## Project Overview Commercial geospatial data processing pipeline for capturing Saudi Arabian land parcel data from MVT tiles. Built to extract and enrich real estate data for client sales and analytics products. diff --git a/docs/archive/memory-bank/systemPatterns.md b/docs/archive/memory-bank/systemPatterns.md index b079d92..1b46540 100644 --- a/docs/archive/memory-bank/systemPatterns.md +++ b/docs/archive/memory-bank/systemPatterns.md @@ -3,7 +3,7 @@ ## 🏗️ **Core Architecture: DB-Driven, Functional Async Design** ### **Design Philosophy** -The Meshic pipeline uses **database-driven, functional async patterns** for high-performance geospatial data processing at scale. All tile discovery and orchestration is managed via the `tile_urls` table in the database, supporting province-wide and all-Saudi scrapes with resumable processing. +The Suhail pipeline uses **database-driven, functional async patterns** for high-performance geospatial data processing at scale. All tile discovery and orchestration is managed via the `tile_urls` table in the database, supporting province-wide and all-Saudi scrapes with resumable processing. ### **Key Architectural Principles** 1. **DB-Driven Tile Orchestration**: All tiles to be processed are stored in the `tile_urls` table; pipeline queries for pending/failed tiles and updates status as it processes. diff --git a/docs/archive/memory-bank/techContext.md b/docs/archive/memory-bank/techContext.md index 8fcd929..14c2120 100644 --- a/docs/archive/memory-bank/techContext.md +++ b/docs/archive/memory-bank/techContext.md @@ -1,4 +1,4 @@ -# Technical Context: Meshic Geospatial Pipeline +# Technical Context: Suhail Geospatial Pipeline ## 🛠️ **Technology Stack** @@ -46,7 +46,7 @@ Stage 2: PostGIS → API Enrichment → Enhanced PostGIS ## 🔄 **Current Implementation Status** ### **Environment Setup: READY** -- **Package**: meshic-pipeline ready for installation via `uv add -e .` +- **Package**: suhail-pipeline ready for installation via `uv add -e .` - **Dependencies**: All required packages specified in pyproject.toml - **Configuration**: Province-specific settings configured in pipeline_config.yaml - **Database**: Fresh schema with spatial extensions enabled @@ -92,7 +92,7 @@ Stage 2: PostGIS → API Enrichment → Enhanced PostGIS database: host: ${DB_HOST:localhost} port: ${DB_PORT:5432} - name: ${DB_NAME:meshic_pipeline} + name: ${DB_NAME:suhail_pipeline} processing: max_concurrent_downloads: 5 @@ -112,8 +112,8 @@ source .venv/bin/activate uv add -e . # Core testing commands -meshic-pipeline geometric # 3x3 baseline test -meshic-pipeline fast-enrich --limit 100 # Enrichment validation +suhail-pipeline geometric # 3x3 baseline test +suhail-pipeline fast-enrich --limit 100 # Enrichment validation python scripts/check_db.py # Database validation ``` diff --git a/docs/brownfield-architecture.md b/docs/brownfield-architecture.md index 426b0ac..47c9bcd 100644 --- a/docs/brownfield-architecture.md +++ b/docs/brownfield-architecture.md @@ -18,11 +18,11 @@ This document captures the **CURRENT STATE** of the Suhail Final geospatial data ### Critical Files for Understanding the System -- **Main CLI**: `src/meshic_pipeline/cli.py` (Comprehensive command-line interface with 15+ commands) -- **Configuration**: `pipeline_config.yaml`, `src/meshic_pipeline/config.py` (Multi-environment configuration) -- **Geometric Pipeline**: `src/meshic_pipeline/run_geometric_pipeline.py` (Stage 1: MVT processing) -- **Enrichment Pipeline**: `src/meshic_pipeline/run_enrichment_pipeline.py` (Stage 2: Business intelligence) -- **Database Models**: `src/meshic_pipeline/persistence/models.py` (SQLAlchemy/PostGIS models) +- **Main CLI**: `src/suhail_pipeline/cli.py` (Comprehensive command-line interface with 15+ commands) +- **Configuration**: `pipeline_config.yaml`, `src/suhail_pipeline/config.py` (Multi-environment configuration) +- **Geometric Pipeline**: `src/suhail_pipeline/run_geometric_pipeline.py` (Stage 1: MVT processing) +- **Enrichment Pipeline**: `src/suhail_pipeline/run_enrichment_pipeline.py` (Stage 2: Business intelligence) +- **Database Models**: `src/suhail_pipeline/persistence/models.py` (SQLAlchemy/PostGIS models) - **Database Schema**: `schema_dump.sql` (Complete PostgreSQL schema with 20+ tables) ### Current Implementation State @@ -65,7 +65,7 @@ Suhail Final is a sophisticated geospatial data processing pipeline that transfo ``` /Users/raedmund/Projects/suhail_final/ -├── src/meshic_pipeline/ # ✅ IMPLEMENTED: Core pipeline modules +├── src/suhail_pipeline/ # ✅ IMPLEMENTED: Core pipeline modules │ ├── cli.py # ✅ IMPLEMENTED: CLI with 15+ commands │ ├── config.py # ✅ IMPLEMENTED: Pydantic configuration │ ├── decoder/ # ✅ IMPLEMENTED: MVT tile decoding @@ -142,7 +142,7 @@ The enrichment system integrates with Suhail APIs through sophisticated patterns ### Critical Technical Debt 1. **Complex CLI Architecture** - - Location: `src/meshic_pipeline/cli.py` + - Location: `src/suhail_pipeline/cli.py` - Impact: 15+ commands with subprocess calls instead of direct imports - Status: ⚠️ **MAINTENANCE**: Some commands use subprocess instead of direct function calls @@ -194,7 +194,7 @@ The enrichment system integrates with Suhail APIs through sophisticated patterns 2. **Dependencies**: `uv sync --all-groups` for reproducible dependency management 3. **Database**: Local PostgreSQL with PostGIS extensions 4. **Configuration**: Environment variables + YAML config files -5. **Execution**: `meshic-pipeline` CLI with 15+ commands +5. **Execution**: `suhail-pipeline` CLI with 15+ commands ### Build and Deployment Process (Actual) @@ -253,25 +253,25 @@ uv run pytest tests/integration # Integration tests ```bash # Geometric pipeline (Stage 1) -meshic-pipeline geometric --bbox 46.4 24.3 47.0 24.8 -meshic-pipeline province-geometric riyadh --strategy optimal -meshic-pipeline saudi-arabia-geometric --strategy efficient +suhail-pipeline geometric --bbox 46.4 24.3 47.0 24.8 +suhail-pipeline province-geometric riyadh --strategy optimal +suhail-pipeline saudi-arabia-geometric --strategy efficient # Enrichment pipeline (Stage 2) - Multiple strategies -meshic-pipeline fast-enrich --batch-size 400 # New parcels only -meshic-pipeline incremental-enrich --days-old 7 --batch-size 100 # Weekly updates -meshic-pipeline delta-enrich --auto-geometric # Change detection -meshic-pipeline full-refresh --batch-size 50 # Complete refresh +suhail-pipeline fast-enrich --batch-size 400 # New parcels only +suhail-pipeline incremental-enrich --days-old 7 --batch-size 100 # Weekly updates +suhail-pipeline delta-enrich --auto-geometric # Change detection +suhail-pipeline full-refresh --batch-size 50 # Complete refresh # Monitoring and management -meshic-pipeline monitor status # Current status -meshic-pipeline monitor recommend # Smart recommendations -meshic-pipeline monitor schedule-info # Scheduling guidance +suhail-pipeline monitor status # Current status +suhail-pipeline monitor recommend # Smart recommendations +suhail-pipeline monitor schedule-info # Scheduling guidance # Complete workflows -meshic-pipeline smart-pipeline --batch-size 300 --geometric-first -meshic-pipeline province-pipeline riyadh --strategy optimal --batch-size 300 -meshic-pipeline saudi-pipeline --strategy efficient --batch-size 500 +suhail-pipeline smart-pipeline --batch-size 300 --geometric-first +suhail-pipeline province-pipeline riyadh --strategy optimal --batch-size 300 +suhail-pipeline saudi-pipeline --strategy efficient --batch-size 500 # Database management alembic upgrade head # Apply migrations diff --git a/docs/docs-distillate/01-requirements-and-product.md b/docs/docs-distillate/01-requirements-and-product.md index 9e05ae3..fc4e8a8 100644 --- a/docs/docs-distillate/01-requirements-and-product.md +++ b/docs/docs-distillate/01-requirements-and-product.md @@ -94,9 +94,9 @@ This section covers requirements, product scope, and acceptance themes. Part 1 o - Index migrations via Alembic without downtime; baseline and post-migration timings recorded and linked in runbook. ## Acceptance: monitoring (Epic 2) -- `meshic-pipeline monitor status`: queue counts by status, top errors, age of oldest `in_progress`. -- `meshic-pipeline monitor recommend`: scheduling guidance (next enrichment strategy, batch sizes). -- `meshic-pipeline monitor schedule-info`: recommended cadence from freshness. +- `suhail-pipeline monitor status`: queue counts by status, top errors, age of oldest `in_progress`. +- `suhail-pipeline monitor recommend`: scheduling guidance (next enrichment strategy, batch sizes). +- `suhail-pipeline monitor schedule-info`: recommended cadence from freshness. - Scheduled job resets stale `in_progress` after configurable threshold (example 60 minutes); log count affected. - Tiles/hour and enrichment counts per run in logs; optional CSV or dashboard export. @@ -146,4 +146,4 @@ This section covers requirements, product scope, and acceptance themes. Part 1 o ## PRD process and references - PRD author Mary (Business Analyst); date 2025-10-16; project level 2 (focused PRD + solutioning handoff). -- Technical references: `docs/BROWNFIELD_PROJECT_DOCUMENTATION.md`, `docs/archive/legacy-root-md/DATABASE_ARCHITECTURE_ANALYSIS.md`, Alembic index migration `19c587b33197_add_critical_performance_indexes.py`, `src/meshic_pipeline/cli.py`, `models.py`, `run_db_geometric.py`. +- Technical references: `docs/BROWNFIELD_PROJECT_DOCUMENTATION.md`, `docs/archive/legacy-root-md/DATABASE_ARCHITECTURE_ANALYSIS.md`, Alembic index migration `19c587b33197_add_critical_performance_indexes.py`, `src/suhail_pipeline/cli.py`, `models.py`, `run_db_geometric.py`. diff --git a/docs/docs-distillate/02-architecture-and-data.md b/docs/docs-distillate/02-architecture-and-data.md index 1a48ff4..c0bfb19 100644 --- a/docs/docs-distillate/02-architecture-and-data.md +++ b/docs/docs-distillate/02-architecture-and-data.md @@ -1,18 +1,18 @@ This section covers architecture, schema, and ground-truth production state. Part 2 of 3. ## Identity and scope -- Meshic / Suhail Final: two-stage geospatial pipeline for Saudi Arabian parcel intelligence (MVT geometry + Suhail API enrichment). +- Suhail / Suhail Final: two-stage geospatial pipeline for Saudi Arabian parcel intelligence (MVT geometry + Suhail API enrichment). - Lean architecture doc dated 2025-10-16 v0.1; brownfield doc “current state”; brownfield project doc dated 2025-10-16 analyst Mary; production narrative cites 2.16M+ parcels in executive summary. ## Inputs and storage - Inputs: province-specific Mapbox Vector Tiles (MVT); Suhail APIs (transactions, building rules, price metrics). -- System of record: PostgreSQL + PostGIS; control plane: Typer CLI `meshic-pipeline`. +- System of record: PostgreSQL + PostGIS; control plane: Typer CLI `suhail-pipeline`. ## Stage 1 geometric - DB-queued tile downloads, decode, stitch, validate, persist; seed from `provinces.bbox_z15` into `tile_urls`. - Workers claim with `SELECT ... FOR UPDATE SKIP LOCKED`; statuses pending → in_progress → processed/failed. - Downloader: aiohttp concurrent fetch with retry/backoff; decoder: MVT → EPSG:4326; stitcher: PostGIS dissolve across tiles (temp tables); persister: schema-driven upsert. -- Files: `src/meshic_pipeline/run_db_geometric.py`, `decoder/mvt_decoder.py`, `geometry/stitcher.py`, `persistence/postgis_persister.py`, `persistence/table_management.py`; brownfield also cites `run_geometric_pipeline.py` for Stage 1 MVT processing. +- Files: `src/suhail_pipeline/run_db_geometric.py`, `decoder/mvt_decoder.py`, `geometry/stitcher.py`, `persistence/postgis_persister.py`, `persistence/table_management.py`; brownfield also cites `run_geometric_pipeline.py` for Stage 1 MVT processing. - Flow: seed `tile_urls` → claim batch → fetch → decode (Arabic column normalization) → validate CRS/geometry → stitch → persist temp then canonical → update queue processed/failed. - Adaptive geometric concurrency 5–20; architecture doc: multiple geometric workers share `tile_urls` queue. - Brownfield project doc: ~0.05s delay between requests; chunked DB writes ~5000 rows per batch; garbage collection triggers for large runs. @@ -25,14 +25,14 @@ This section covers architecture, schema, and ground-truth production state. Par - universal-metrics: all parcels including those without transaction_price. - delta-enrich: parcels with changed transaction_price via MVT comparison; optional auto geometric; FULL OUTER JOIN `parcels` vs fresh table on `parcel_objectid`. - API client batch/async; transform JSON → SQLAlchemy; upsert with conflict handling; update `parcels.enriched_at`; brownfield project doc notes `ON CONFLICT DO NOTHING` on persistence path. -- Files: `src/meshic_pipeline/run_enrichment_pipeline.py`, `enrichment/strategies.py`, `enrichment/api_client.py`, `persistence/enrichment_persister.py`; brownfield adds `enrichment/processor.py`, `metrics_only_processor.py`. +- Files: `src/suhail_pipeline/run_enrichment_pipeline.py`, `enrichment/strategies.py`, `enrichment/api_client.py`, `persistence/enrichment_persister.py`; brownfield adds `enrichment/processor.py`, `metrics_only_processor.py`. ## Suhail HTTP surface - `/parcel/buildingRules`; `/api/parcel/metrics/priceOfMeter`; `/transactions`; API key/session; rate limiting and retry/backoff referenced. ## Queue and models - `tile_urls(id PK, url UNIQUE, z/x/y, status, retry_count, last_checked_at, error_message, ...)`. -- `TileURL.claim_tiles_for_processing(..., SKIP LOCKED)` and `reset_stale_in_progress(..., stale_minutes=60)` in `src/meshic_pipeline/persistence/models.py`. +- `TileURL.claim_tiles_for_processing(..., SKIP LOCKED)` and `reset_stale_in_progress(..., stale_minutes=60)` in `src/suhail_pipeline/persistence/models.py`. - Stale protection: periodic reset stuck in_progress tiles; schedule example stale_minutes=60. ## Core tables and keys @@ -55,7 +55,7 @@ This section covers architecture, schema, and ground-truth production state. Par - `building_rules`: 130,112 rows. - `tile_urls`: 34,726 rows; processed 33,938 (97.7%); in_progress 788 (2.3%). - `provinces`: 12; `neighborhoods`: 812. -- Database name `meshic` (not `meshic_pipeline` as some docs); owner `postgres`. +- Database name `suhail` (not `suhail_pipeline` as some docs); owner `postgres`. ## Older / alternate scale figures (deduped caveat) - Brownfield architecture doc: 1M+ parcels, 45K+ transactions, 68K+ building rules, 752K+ parcel_price_metrics — superseded by ground-truth table counts where they conflict. @@ -74,18 +74,18 @@ This section covers architecture, schema, and ground-truth production state. Par - Composite: `smart-pipeline`, `province-pipeline`, `saudi-pipeline`. - Ops: `seed-tiles` (province, provinces, region-slugs, stride, limit), `discovery-summary`, `monitor status|recommend|schedule-info`. - Command count: ground-truth doc states 18 commands in 5 categories; brownfield architecture says 15+; architecture lists representative subset without total. -- Entry: `src/meshic_pipeline/cli.py`. +- Entry: `src/suhail_pipeline/cli.py`. ## Configuration -- `src/meshic_pipeline/config.py`: Pydantic settings; DB URL, API endpoints, layers, batch sizes; provinces loaded from DB via `load_provinces_from_db`; failure falls back to empty provinces with warning. +- `src/suhail_pipeline/config.py`: Pydantic settings; DB URL, API endpoints, layers, batch sizes; provinces loaded from DB via `load_provinces_from_db`; failure falls back to empty provinces with warning. - `pipeline_config.yaml` + environment variables; province tile URL template pattern `https://tiles.suhail.ai/maps/{slug}/{z}/{x}/{y}.vector.pbf` (Riyadh example in doc). - Secrets: `.env`; no secrets in code; least-privilege DB role; UTF-8 Arabic. ## Tech stack -- Python 3.9+; package `meshic-pipeline` v0.1.0 per doc snippet; SQLAlchemy 2.0+ async; GeoAlchemy2; GeoPandas, Shapely, h3; Alembic; Typer; aiohttp; mapbox-vector-tile/protobuf for MVT. +- Python 3.9+; package `suhail-pipeline` v0.1.0 per doc snippet; SQLAlchemy 2.0+ async; GeoAlchemy2; GeoPandas, Shapely, h3; Alembic; Typer; aiohttp; mapbox-vector-tile/protobuf for MVT. ## Repo layout -- `src/meshic_pipeline/` cli, config, decoder, discovery, downloader, enrichment, geometry, persistence, `pipeline_orchestrator.py`, utils; `alembic/`, `tests/`, `scripts/`, `logs/`, `docs/`, `pyproject.toml`. +- `src/suhail_pipeline/` cli, config, decoder, discovery, downloader, enrichment, geometry, persistence, `pipeline_orchestrator.py`, utils; `alembic/`, `tests/`, `scripts/`, `logs/`, `docs/`, `pyproject.toml`. ## NFR targets (architecture) - Geometric: adaptive concurrency, minimal retries; query p95 < 500 ms post-index for core joins/metrics reads. @@ -101,7 +101,7 @@ This section covers architecture, schema, and ground-truth production state. Par - Risks: missing indexes, stuck in_progress tiles, API rate limits, outdated stakeholder docs. ## Deployment and ops -- Dev/staging/prod with shared migrations; local: PostgreSQL+PostGIS, `uv sync --all-groups`, `uv run meshic-pipeline …`, `uv run alembic upgrade head`. +- Dev/staging/prod with shared migrations; local: PostgreSQL+PostGIS, `uv sync --all-groups`, `uv run suhail-pipeline …`, `uv run alembic upgrade head`. - Temp table policy: pipeline-owned `temp_*` only. ## Roadmap and recommendations (compressed) diff --git a/docs/docs-distillate/03-stories-ops-cli.md b/docs/docs-distillate/03-stories-ops-cli.md index 71ccbd5..6295bca 100644 --- a/docs/docs-distillate/03-stories-ops-cli.md +++ b/docs/docs-distillate/03-stories-ops-cli.md @@ -5,7 +5,7 @@ This section covers implementation stories, CLI inventory, ops, and runbooks. Pa - STORY-001: Verify Alembic migration `19c587b33197_add_critical_performance_indexes.py` in staging; run in prod low-traffic; confirm via `pg_indexes` and `EXPLAIN`; record timings in `docs/reports/perf-post-.md`. - STORY-001: Acceptance: indexes per `docs/ACCEPTANCE_CRITERIA.md`; p95 < 500 ms; migration without downtime/errors; DoD: reports + runbook. - STORY-002: Baseline/post-index p50/p95 for 3 representative queries; `docs/reports/perf-baseline-.md` and `perf-post-.md`; p95 target < 500 ms or remediation plan. -- STORY-003: Enhance `meshic-pipeline monitor`: `status` (queue by status, oldest `in_progress`, top errors); `recommend` (next action + batch sizes); `schedule-info` (cadence); structured log summary per run. +- STORY-003: Enhance `suhail-pipeline monitor`: `status` (queue by status, oldest `in_progress`, top errors); `recommend` (next action + batch sizes); `schedule-info` (cadence); structured log summary per run. - STORY-004: Schedule `TileURL.reset_stale_in_progress(..., stale_minutes=60)`; log reset count; alert if excessive repeats; runbook + monitoring reflects queue health. - STORY-005: Delta enrichment: `--auto-geometric` fresh-table lifecycle; change stats/summary; cron guidance; fresh table dropped on success, retained on failure with warning. - STORY-006: Data quality Phase 1: completeness `%` with `neighborhood_id`, `province_id`, `enriched_at`; outlier thresholds `price_of_meter`, `transaction_price`; `docs/reports/data-quality-.md` by province. @@ -20,12 +20,12 @@ This section covers implementation stories, CLI inventory, ops, and runbooks. Pa - Index targets (`parcel_price_metrics`): `neighborhood_id`; composites `(metrics_type, year, month)` and `(neighborhood_id, metrics_type)`. - Index targets (`transactions`): `transaction_date`, `transaction_price`. - Measurement queries: (1) `parcels ↔ neighborhoods` on `neighborhood_id`; (2) `parcels` filter `transaction_price > 0` and `enriched_at`; (3) time-series `parcel_price_metrics` by `(neighborhood_id, metrics_type, year, month)`. -- `meshic-pipeline monitor status`: queue counts by `status`, failed count, oldest `in_progress` age; enrichment: total parcels, with `enriched_at`, % with `transaction_price > 0`. -- `meshic-pipeline monitor recommend`: next action among fast-enrich / incremental / delta with batch sizes. -- `meshic-pipeline monitor schedule-info`: suggested daily/weekly/monthly cadence from freshness. -- AC mentions: `meshic-pipeline monitor reset-stale -- --stale-minutes 60`; reports `docs/reports/perf-baseline-*.md` and `docs/reports/perf-post-index-*.md` (naming variant vs stories). +- `suhail-pipeline monitor status`: queue counts by `status`, failed count, oldest `in_progress` age; enrichment: total parcels, with `enriched_at`, % with `transaction_price > 0`. +- `suhail-pipeline monitor recommend`: next action among fast-enrich / incremental / delta with batch sizes. +- `suhail-pipeline monitor schedule-info`: suggested daily/weekly/monthly cadence from freshness. +- AC mentions: `suhail-pipeline monitor reset-stale -- --stale-minutes 60`; reports `docs/reports/perf-baseline-*.md` and `docs/reports/perf-post-index-*.md` (naming variant vs stories). - Risks: index build time/locks → `IF NOT EXISTS`, off-hours; plan regressions → `EXPLAIN ANALYZE`; limit CLI scope vs dashboards. -- Utilities referenced: `claim_tiles_for_processing(...)`, `TileURL.reset_stale_in_progress(...)` in `src/meshic_pipeline/persistence/models.py`. +- Utilities referenced: `claim_tiles_for_processing(...)`, `TileURL.reset_stale_in_progress(...)` in `src/suhail_pipeline/persistence/models.py`. ## CLI inventory and documentation gaps (`CLI_COMMAND_AUDIT.md`) - Commands: `geometric` (`--bbox`, `--recreate-db`, `--save-as-temp`); `fast-enrich` (`--batch-size`, `--limit`); `incremental-enrich` (`--batch-size`, `--days-old`, `--limit`); `full-refresh` (`--batch-size`, `--limit`). @@ -42,9 +42,9 @@ This section covers implementation stories, CLI inventory, ops, and runbooks. Pa ## Province-wide scraping (DB-driven MVT) - Authoritative: `provinces` metadata; `tile_urls` tile list/status; config from DB; no hard-coded province dicts/YAML tile lists. - Downloader: async; province + tiles from DB; caching, retry, concurrency; resumable multi/all-province. -- CLI examples: `meshic-pipeline geometric --province riyadh`; `meshic-pipeline geometric --all-provinces`; multi `--province riyadh --province makkah`. +- CLI examples: `suhail-pipeline geometric --province riyadh`; `suhail-pipeline geometric --all-provinces`; multi `--province riyadh --province makkah`. - Performance: index `tile_urls` by status/province; spatial/lookup indices on parcels/neighborhoods at >1M/province; ~5000-row chunks (settings-tunable); disk tile cache. -- CI suggestion: nightly `meshic-pipeline geometric --province riyadh --limit-test`. +- CI suggestion: nightly `suhail-pipeline geometric --province riyadh --limit-test`. - Rollout phases: DB metadata+generator → downloader/refactor → orchestrator+CLI `--all-provinces` → tests/CI → docs → full Riyadh → six provinces (success metrics in doc table). - Risks: rate limit (0.05s delay, backoff); memory (stream, chunk tuning); DB province drift (runtime validation). @@ -74,7 +74,7 @@ This section covers implementation stories, CLI inventory, ops, and runbooks. Pa - `brew services stop --all`; `brew uninstall postgresql postgresql@14 postgresql@15 postgis`. - Remove data dirs: Apple Silicon `rm -rf /opt/homebrew/var/postgres*`; Intel `rm -rf /usr/local/var/postgres*`. - `brew install postgis` (or pin `postgresql@14` + postgis); example `initdb --locale=C -E UTF-8 /opt/homebrew/var/postgresql@16`. -- `brew services start postgresql@16`; `createdb meshic -T template0`; `psql -d meshic -c "CREATE EXTENSION postgis;"`. +- `brew services start postgresql@16`; `createdb suhail -T template0`; `psql -d suhail -c "CREATE EXTENSION postgis;"`. - Python: from repo root, `uv sync --all-groups` (see `README.md`). - Alembic: init, configure, autogenerate initial revision, manual spatial index checks, `uv run alembic upgrade head`. -- Verify: `psql -d meshic -c "\dt"`, `\d+ your_spatial_table`, `SELECT * FROM geometry_columns;`; run app tests. +- Verify: `psql -d suhail -c "\dt"`, `\d+ your_spatial_table`, `SELECT * FROM geometry_columns;`; run app tests. diff --git a/docs/docs-distillate/_index-validation-report.md b/docs/docs-distillate/_index-validation-report.md index 9aed5ed..6f1981e 100644 --- a/docs/docs-distillate/_index-validation-report.md +++ b/docs/docs-distillate/_index-validation-report.md @@ -32,7 +32,7 @@ created: "2026-03-20" - **Per-story narrative and DoD detail:** `docs/stories/STORY-*.md` body text is folded into theme bullets in `03-stories-ops-cli.md`; edge acceptance notes and formatting from each story file are not losslessly encoded. - **Line-level ops prose:** `docs/ops/migrations.md`, `province_wide_scraping_plan.md`, and `CLI_COMMAND_AUDIT.md` tables/examples: distillate keeps command names and recommendations, not every example block. -- **BROWNFIELD_PROJECT_DOCUMENTATION.md:** Long sections (e.g. extended code excerpts, full table attribute lists) are compressed; **counts and DB name `meshic`** are present; some secondary tables and narrative asides may be absent from bullets. +- **BROWNFIELD_PROJECT_DOCUMENTATION.md:** Long sections (e.g. extended code excerpts, full table attribute lists) are compressed; **counts and DB name `suhail`** are present; some secondary tables and narrative asides may be absent from bullets. - **EPIC-001** risk tables and long checklist prose: captured as index/monitoring/stale-reset bullets; not every risk row is duplicated. - **Reconstructor self-markers:** `reconstruction-PRD-bundle.md` flags **[POSSIBLE GAP]** for full SQL specs, exit-code matrix, and complete CLI error catalog — these are thin or absent in sources too; treat as “distillate correctly reflects source depth.” @@ -52,7 +52,7 @@ created: "2026-03-20" | PRD Stage 1–2 + delta | `docs/PRD.md` §Requirements | `01-requirements-and-product.md` — aligned | | Monitoring FR | `docs/PRD.md` §4 | `01` acceptance + `03` EPIC-001/stories — aligned | | Scale 2.16M / 76M metrics | PRD context + brownfield | `01` + `02` — aligned | -| DB name `meshic` | BROWNFIELD doc | `02` — aligned | +| DB name `suhail` | BROWNFIELD doc | `02` — aligned | | STORY-001–008 IDs | stories | `03` — aligned | ## Recommendation diff --git a/docs/docs-distillate/_validation/reconstruction-ARCH-bundle.md b/docs/docs-distillate/_validation/reconstruction-ARCH-bundle.md index 292869c..8cd4b24 100644 --- a/docs/docs-distillate/_validation/reconstruction-ARCH-bundle.md +++ b/docs/docs-distillate/_validation/reconstruction-ARCH-bundle.md @@ -13,11 +13,11 @@ This document expands the **docs distillate** (architecture-and-data section plu ## System identity and scope -**Meshic / Suhail Final** is a **two-stage geospatial pipeline** for **Saudi Arabian parcel intelligence**: **MVT geometry** ingestion plus **Suhail API enrichment**. The lean architecture document is dated **2025-10-16**, version **0.1**; the brownfield document describes **current state**; the brownfield project documentation is dated **2025-10-16** (analyst Mary). An executive summary in production narrative cites **2.16M+ parcels**. +**Suhail / Suhail Final** is a **two-stage geospatial pipeline** for **Saudi Arabian parcel intelligence**: **MVT geometry** ingestion plus **Suhail API enrichment**. The lean architecture document is dated **2025-10-16**, version **0.1**; the brownfield document describes **current state**; the brownfield project documentation is dated **2025-10-16** (analyst Mary). An executive summary in production narrative cites **2.16M+ parcels**. ## Inputs, system of record, and control plane -**Inputs** are **province-specific Mapbox Vector Tiles (MVT)** and **Suhail APIs** for **transactions**, **building rules**, and **price metrics**. The **system of record** is **PostgreSQL with PostGIS**. The **control plane** is the **Typer** CLI **`meshic-pipeline`**. +**Inputs** are **province-specific Mapbox Vector Tiles (MVT)** and **Suhail APIs** for **transactions**, **building rules**, and **price metrics**. The **system of record** is **PostgreSQL with PostGIS**. The **control plane** is the **Typer** CLI **`suhail-pipeline`**. ## Stage 1: geometric pipeline (architecture) @@ -25,7 +25,7 @@ The geometric stage performs **DB-queued tile downloads**, **decode**, **stitch* The **downloader** uses **aiohttp** with **concurrent fetch**, **retry**, and **backoff**. The **decoder** converts **MVT to EPSG:4326**. The **stitcher** uses **PostGIS dissolve** across tiles (**temporary tables**). The **persister** performs **schema-driven upsert**. -Implementation paths cited: **`src/meshic_pipeline/run_db_geometric.py`**, **`decoder/mvt_decoder.py`**, **`geometry/stitcher.py`**, **`persistence/postgis_persister.py`**, **`persistence/table_management.py`**. Brownfield also references **`run_geometric_pipeline.py`** for Stage 1 MVT processing **[POSSIBLE GAP: relationship and deprecation story between `run_db_geometric` and `run_geometric_pipeline`].** +Implementation paths cited: **`src/suhail_pipeline/run_db_geometric.py`**, **`decoder/mvt_decoder.py`**, **`geometry/stitcher.py`**, **`persistence/postgis_persister.py`**, **`persistence/table_management.py`**. Brownfield also references **`run_geometric_pipeline.py`** for Stage 1 MVT processing **[POSSIBLE GAP: relationship and deprecation story between `run_db_geometric` and `run_geometric_pipeline`].** End-to-end flow: **seed `tile_urls`** → **claim batch** → **fetch** → **decode** (with **Arabic column normalization**) → **validate CRS/geometry** → **stitch** → **persist temp then canonical** → **update queue** to processed or failed. **Adaptive geometric concurrency** is described as **5–20**; **multiple geometric workers** share the **`tile_urls`** queue. Brownfield project notes include roughly **0.05s delay between requests**, **chunked DB writes** around **5000 rows per batch**, and **garbage collection** triggers for large runs. @@ -51,7 +51,7 @@ Endpoints named: **`/parcel/buildingRules`**; **`/api/parcel/metrics/priceOfMete **`tile_urls`** includes **`id` PK**, **`url` UNIQUE**, **z/x/y**, **`status`**, **`retry_count`**, **`last_checked_at`**, **`error_message`**, and further columns implied by ellipsis in the distillate. -**`TileURL.claim_tiles_for_processing(..., SKIP LOCKED)`** and **`reset_stale_in_progress(..., stale_minutes=60)`** live in **`src/meshic_pipeline/persistence/models.py`**. **Stale protection** means **periodic reset** of stuck **`in_progress`** tiles; schedule example **`stale_minutes=60`**. +**`TileURL.claim_tiles_for_processing(..., SKIP LOCKED)`** and **`reset_stale_in_progress(..., stale_minutes=60)`** live in **`src/suhail_pipeline/persistence/models.py`**. **Stale protection** means **periodic reset** of stuck **`in_progress`** tiles; schedule example **`stale_minutes=60`**. ## Core relational schema (distilled) @@ -71,7 +71,7 @@ Endpoints named: **`/parcel/buildingRules`**; **`/api/parcel/metrics/priceOfMete ## Production scale (ground-truth narrative) -**`parcels`:** **2,163,003** rows. **`parcel_price_metrics`:** **76,080,728** rows. **`transactions`:** **70,787** rows. **`building_rules`:** **130,112** rows. **`tile_urls`:** **34,726** rows; **processed 33,938 (97.7%)**; **`in_progress` 788 (2.3%)**. **`provinces`:** **12**; **`neighborhoods`:** **812**. Database name **`meshic`** (not **`meshic_pipeline`** as some documents suggest); owner **`postgres`**. +**`parcels`:** **2,163,003** rows. **`parcel_price_metrics`:** **76,080,728** rows. **`transactions`:** **70,787** rows. **`building_rules`:** **130,112** rows. **`tile_urls`:** **34,726** rows; **processed 33,938 (97.7%)**; **`in_progress` 788 (2.3%)**. **`provinces`:** **12**; **`neighborhoods`:** **812**. Database name **`suhail`** (not **`suhail_pipeline`** as some documents suggest); owner **`postgres`**. ## Superseded and memory-bank figures @@ -93,19 +93,19 @@ Alembic revision **`19c587b33197_add_critical_performance_indexes.py`** is the r **Command count:** ground-truth doc states **18 commands in 5 categories**; brownfield architecture says **15+**; architecture lists a **representative subset** without a single total **[POSSIBLE GAP: authoritative canonical list and category mapping]**. -**Entry point:** **`src/meshic_pipeline/cli.py`**. +**Entry point:** **`src/suhail_pipeline/cli.py`**. ## Configuration (architecture) -**`src/meshic_pipeline/config.py`:** **Pydantic settings**; **DB URL**, **API endpoints**, **layers**, **batch sizes**; **provinces** loaded from DB via **`load_provinces_from_db`**; failure **falls back to empty provinces with warning**. **`pipeline_config.yaml`** plus **environment variables**. Example tile URL template: **`https://tiles.suhail.ai/maps/{slug}/{z}/{x}/{y}.vector.pbf`** (Riyadh example). **Secrets** in **`.env`**; **no secrets in code**; **least-privilege DB role**; **UTF-8 Arabic**. +**`src/suhail_pipeline/config.py`:** **Pydantic settings**; **DB URL**, **API endpoints**, **layers**, **batch sizes**; **provinces** loaded from DB via **`load_provinces_from_db`**; failure **falls back to empty provinces with warning**. **`pipeline_config.yaml`** plus **environment variables**. Example tile URL template: **`https://tiles.suhail.ai/maps/{slug}/{z}/{x}/{y}.vector.pbf`** (Riyadh example). **Secrets** in **`.env`**; **no secrets in code**; **least-privilege DB role**; **UTF-8 Arabic**. ## Technology stack -**Python 3.9+**; package **`meshic-pipeline` v0.1.0** per doc snippet; **SQLAlchemy 2.0+ async**; **GeoAlchemy2**; **GeoPandas**, **Shapely**, **h3**; **Alembic**; **Typer**; **aiohttp**; **mapbox-vector-tile/protobuf** for MVT. +**Python 3.9+**; package **`suhail-pipeline` v0.1.0** per doc snippet; **SQLAlchemy 2.0+ async**; **GeoAlchemy2**; **GeoPandas**, **Shapely**, **h3**; **Alembic**; **Typer**; **aiohttp**; **mapbox-vector-tile/protobuf** for MVT. ## Repository layout -**`src/meshic_pipeline/`** — cli, config, decoder, discovery, downloader, enrichment, geometry, persistence, **`pipeline_orchestrator.py`**, utils; **`alembic/`**, **`tests/`**, **`scripts/`**, **`logs/`**, **`docs/`**, **`pyproject.toml`**. +**`src/suhail_pipeline/`** — cli, config, decoder, discovery, downloader, enrichment, geometry, persistence, **`pipeline_orchestrator.py`**, utils; **`alembic/`**, **`tests/`**, **`scripts/`**, **`logs/`**, **`docs/`**, **`pyproject.toml`**. ## Non-functional targets (architecture) @@ -123,7 +123,7 @@ Alembic revision **`19c587b33197_add_critical_performance_indexes.py`** is the r ## Deployment and operations -**Dev, staging, prod** share **migrations**. **Local:** PostgreSQL+PostGIS, **`uv sync --all-groups`**, **`uv run meshic-pipeline`**, **`uv run alembic upgrade head`**. **Temp table policy:** **pipeline-owned `temp_*` only**. +**Dev, staging, prod** share **migrations**. **Local:** PostgreSQL+PostGIS, **`uv sync --all-groups`**, **`uv run suhail-pipeline`**, **`uv run alembic upgrade head`**. **Temp table policy:** **pipeline-owned `temp_*` only**. **Migrations (`docs/ops/migrations.md` themes):** Prereqs **`DATABASE_URL`** in **`.env`**; Postgres + PostGIS. Upgrade via **`uv run python scripts/db/upgrade.py`** or **`uv run alembic upgrade head`**. Downgrade via **`uv run python scripts/db/downgrade.py -1`** or **`... base`**. Critical indexes migration includes **`temp_*` cleanup**; apply in **low-traffic** windows with **baseline/post timings**. **Repair incomplete province metadata** with **`uv run python scripts/util/backfill_province_metadata.py --province-id `** before **auto-geometric delta** pipelines. @@ -145,7 +145,7 @@ Upsert-enabled examples: **`parcels_centroids.parcel_no`**; **`metro_stations.st ## Province-wide scraping and DB-driven MVT (themes) -**Authoritative** sources: **`provinces`** metadata; **`tile_urls`** list and status; **config from DB**; **no hard-coded province dicts** or YAML tile lists. **Downloader:** async; province and tiles from DB; caching, retry, concurrency; **resumable** multi/all-province. **CLI examples:** **`meshic-pipeline geometric --province riyadh`**; **`--all-provinces`**; multi **`--province`** flags. **Performance:** index **`tile_urls`** by status/province; spatial/lookup indices on parcels/neighborhoods at **>1M/province**; **~5000-row chunks**; **disk tile cache**. **CI suggestion:** nightly geometric with **`--province riyadh --limit-test`**. **Rollout phases** span metadata+generator through full Riyadh and six provinces with success metrics in a doc table **[POSSIBLE GAP: exact phase gates and metric table not reproduced here]**. +**Authoritative** sources: **`provinces`** metadata; **`tile_urls`** list and status; **config from DB**; **no hard-coded province dicts** or YAML tile lists. **Downloader:** async; province and tiles from DB; caching, retry, concurrency; **resumable** multi/all-province. **CLI examples:** **`suhail-pipeline geometric --province riyadh`**; **`--all-provinces`**; multi **`--province`** flags. **Performance:** index **`tile_urls`** by status/province; spatial/lookup indices on parcels/neighborhoods at **>1M/province**; **~5000-row chunks**; **disk tile cache**. **CI suggestion:** nightly geometric with **`--province riyadh --limit-test`**. **Rollout phases** span metadata+generator through full Riyadh and six provinces with success metrics in a doc table **[POSSIBLE GAP: exact phase gates and metric table not reproduced here]**. ## CLI audit themes (documentation vs implementation) @@ -153,11 +153,11 @@ Inventory includes flags such as **`--bbox`**, **`--recreate-db`**, **`--save-as ## Clean slate protocol (destructive local reset only) -**Warning:** wipes **local** PostgreSQL/PostGIS data; **dev-only**. Steps include stopping Homebrew services, uninstalling Postgres/PostGIS variants, removing data directories (**Apple Silicon** vs **Intel** paths), reinstalling PostGIS/Postgres (example **`postgresql@16`**), **`createdb meshic`**, **`CREATE EXTENSION postgis`**, Python venv and Alembic workflow, verification queries. **[POSSIBLE GAP: full ordered checklist and version pinning policy for teams not on Homebrew/macOS.]** +**Warning:** wipes **local** PostgreSQL/PostGIS data; **dev-only**. Steps include stopping Homebrew services, uninstalling Postgres/PostGIS variants, removing data directories (**Apple Silicon** vs **Intel** paths), reinstalling PostGIS/Postgres (example **`postgresql@16`**), **`createdb suhail`**, **`CREATE EXTENSION postgis`**, Python venv and Alembic workflow, verification queries. **[POSSIBLE GAP: full ordered checklist and version pinning policy for teams not on Homebrew/macOS.]** ## EPIC-001 cross-reference (performance and monitoring) -EPIC-001 scope: **Alembic critical indexes**; **baseline→post measurements**; **CLI monitoring** for tile queue and enrichment coverage; **automate stale tile resets**; **out of scope:** full **Prometheus/Grafana**. Migration **`19c587b33197_add_critical_performance_indexes.py`**: indexes plus **safe cleanup** of stray **`temp_*`**. Monitor commands expose **queue counts**, **failed count**, **oldest `in_progress` age**, enrichment **totals and percentages**. **`monitor recommend`** chooses next action among **fast-enrich / incremental / delta** with **batch sizes**. **`schedule-info`** suggests **daily/weekly/monthly** cadence from freshness. Acceptance mentions **`meshic-pipeline monitor reset-stale -- --stale-minutes 60`**; report naming variants (**`perf-post-.md`** vs **`perf-post-index-*.md`**) appear across stories and AC **[POSSIBLE GAP: single standard report filename pattern]**. +EPIC-001 scope: **Alembic critical indexes**; **baseline→post measurements**; **CLI monitoring** for tile queue and enrichment coverage; **automate stale tile resets**; **out of scope:** full **Prometheus/Grafana**. Migration **`19c587b33197_add_critical_performance_indexes.py`**: indexes plus **safe cleanup** of stray **`temp_*`**. Monitor commands expose **queue counts**, **failed count**, **oldest `in_progress` age**, enrichment **totals and percentages**. **`monitor recommend`** chooses next action among **fast-enrich / incremental / delta** with **batch sizes**. **`schedule-info`** suggests **daily/weekly/monthly** cadence from freshness. Acceptance mentions **`suhail-pipeline monitor reset-stale -- --stale-minutes 60`**; report naming variants (**`perf-post-.md`** vs **`perf-post-index-*.md`**) appear across stories and AC **[POSSIBLE GAP: single standard report filename pattern]**. ## References cited in architecture distillate diff --git a/docs/docs-distillate/_validation/reconstruction-PRD-bundle.md b/docs/docs-distillate/_validation/reconstruction-PRD-bundle.md index 43d1a50..0a0aa47 100644 --- a/docs/docs-distillate/_validation/reconstruction-PRD-bundle.md +++ b/docs/docs-distillate/_validation/reconstruction-PRD-bundle.md @@ -106,7 +106,7 @@ Production must contain the listed indexes (verified via **`pg_indexes`**): on * ### Epic 2 — Monitoring -**`meshic-pipeline monitor status`:** queue counts by status, top errors, age of oldest **`in_progress`**. **`recommend`:** scheduling guidance (next enrichment strategy, batch sizes). **`schedule-info`:** recommended cadence from freshness. A **scheduled job** resets stale **`in_progress`** after a **configurable threshold** (example **60 minutes**), logging the count affected. **Tiles per hour** and **enrichment counts per run** appear in logs, with **optional CSV or dashboard export**. +**`suhail-pipeline monitor status`:** queue counts by status, top errors, age of oldest **`in_progress`**. **`recommend`:** scheduling guidance (next enrichment strategy, batch sizes). **`schedule-info`:** recommended cadence from freshness. A **scheduled job** resets stale **`in_progress`** after a **configurable threshold** (example **60 minutes**), logging the count affected. **Tiles per hour** and **enrichment counts per run** appear in logs, with **optional CSV or dashboard export**. ### Epic 3 — Delta productization @@ -146,7 +146,7 @@ Out of delta PRD scope: **GUI**, **advanced query optimization**, **upstream MVT ## Process and references (PRD metadata) -PRD author **Mary** (Business Analyst); date **2025-10-16**; project **level 2** (focused PRD plus solutioning handoff). Technical references named in the distillate include **`docs/BROWNFIELD_PROJECT_DOCUMENTATION.md`**, Alembic revision **`19c587b33197_add_critical_performance_indexes.py`**, **`src/meshic_pipeline/cli.py`**, **`models.py`**, and **`run_db_geometric.py`**. +PRD author **Mary** (Business Analyst); date **2025-10-16**; project **level 2** (focused PRD plus solutioning handoff). Technical references named in the distillate include **`docs/BROWNFIELD_PROJECT_DOCUMENTATION.md`**, Alembic revision **`19c587b33197_add_critical_performance_indexes.py`**, **`src/suhail_pipeline/cli.py`**, **`models.py`**, and **`run_db_geometric.py`**. ## Index and distillate housekeeping diff --git a/docs/index.md b/docs/index.md index bdb68ea..9cc5356 100644 --- a/docs/index.md +++ b/docs/index.md @@ -26,7 +26,7 @@ Generated and curated reference for humans and LLMs. Descriptions reflect file p - **[Delta_enrichment_PRD.md](./Delta_enrichment_PRD.md)** — Product requirements for delta enrichment and `delta-enrich` CLI. - **[handoff_upsert_bottleneck.md](./handoff_upsert_bottleneck.md)** — Reference-data bottleneck analysis (municipalities/neighborhoods). - **[pipeline_table_uniqueness_review.md](./pipeline_table_uniqueness_review.md)** — Upsert keys and table uniqueness review. -- **[PRD.md](./PRD.md)** — Main product requirements: Meshic geospatial pipeline. +- **[PRD.md](./PRD.md)** — Main product requirements: Suhail geospatial pipeline. - **[PROJECT_BRIEF.md](./PROJECT_BRIEF.md)** — Executive brief: goals, MVP, personas. - **[province_wide_scraping_plan.md](./province_wide_scraping_plan.md)** — DB-driven province and national scrape rollout plan. - **[technical-decisions-template.md](./technical-decisions-template.md)** — Template for recording ADRs or technical decisions. diff --git a/docs/ops/MACHINE_POSTGRES_AUDIT.md b/docs/ops/MACHINE_POSTGRES_AUDIT.md index 04c0ff6..73fecd9 100644 --- a/docs/ops/MACHINE_POSTGRES_AUDIT.md +++ b/docs/ops/MACHINE_POSTGRES_AUDIT.md @@ -27,7 +27,7 @@ | 17 | `/opt/homebrew/var/postgresql@17` | **~6.5 GB** | **5432** | | 18 | `/opt/homebrew/var/postgresql@18` | ~73 MB | default **5432** (commented `#port = 5432`) | -**Interpretation:** The large **@17** cluster likely holds historical work (e.g. former `meshic` DB). **@18** is the current target for this project (`suhail_pipeline` per repo `.env.example`). +**Interpretation:** The large **@17** cluster likely holds historical work (e.g. former `suhail` DB). **@18** is the current target for this project (`suhail_pipeline` per repo `.env.example`). ## `brew services` snapshot diff --git a/docs/province_wide_scraping_plan.md b/docs/province_wide_scraping_plan.md index 9ddd0a3..2f8c3a2 100644 --- a/docs/province_wide_scraping_plan.md +++ b/docs/province_wide_scraping_plan.md @@ -1,7 +1,7 @@ -# Province-Wide Scraping Plan for Meshic Geospatial Pipeline +# Province-Wide Scraping Plan for Suhail Geospatial Pipeline ## 1 Overview -This document specifies the DB-driven approach for scraping **all six Saudi provinces** using Mapbox Vector Tiles (MVT) and persisting them into the Meshic PostGIS schema. +This document specifies the DB-driven approach for scraping **all six Saudi provinces** using Mapbox Vector Tiles (MVT) and persisting them into the Suhail PostGIS schema. The plan addresses: 1. Centralised province metadata (now stored in the database) @@ -50,9 +50,9 @@ Shortcomings for province-wide rollout (now resolved): * `--province` (multi-use) and `--all-provinces` flags. * Examples ```bash - meshic-pipeline geometric --province riyadh - meshic-pipeline geometric --all-provinces - meshic-pipeline geometric --province riyadh --province makkah + suhail-pipeline geometric --province riyadh + suhail-pipeline geometric --all-provinces + suhail-pipeline geometric --province riyadh --province makkah ``` * Help text updated accordingly. @@ -71,7 +71,7 @@ Shortcomings for province-wide rollout (now resolved): ### 3.8 Documentation & CI * This doc (updated) reflects the DB-driven approach. * README and CLI `--help` examples updated. -* CI job runs `meshic-pipeline geometric --province riyadh --limit-test` nightly. +* CI job runs `suhail-pipeline geometric --province riyadh --limit-test` nightly. --- diff --git a/docs/stories/STORY-003-monitoring-cli-outputs.md b/docs/stories/STORY-003-monitoring-cli-outputs.md index 146a9d7..b79c931 100644 --- a/docs/stories/STORY-003-monitoring-cli-outputs.md +++ b/docs/stories/STORY-003-monitoring-cli-outputs.md @@ -6,7 +6,7 @@ Owner: Platform Engineering Status: Ready for Dev ## Goal -Provide actionable status and recommendations via `meshic-pipeline monitor`. +Provide actionable status and recommendations via `suhail-pipeline monitor`. ## Tasks - Ensure `monitor status` outputs: tile queue counts by status, oldest in_progress age, top errors. diff --git a/docs/tech-specs/EPIC-001-performance-and-monitoring.md b/docs/tech-specs/EPIC-001-performance-and-monitoring.md index c16cc52..d204287 100644 --- a/docs/tech-specs/EPIC-001-performance-and-monitoring.md +++ b/docs/tech-specs/EPIC-001-performance-and-monitoring.md @@ -8,7 +8,7 @@ Status: Draft for Architecture Review ## 1. Objective & Scope -Improve query performance and operational visibility for the Meshic pipeline by: +Improve query performance and operational visibility for the Suhail pipeline by: - Applying critical indexes (safe, additive) via Alembic. - Establishing baseline → post-change performance measurements. - Providing monitoring outputs for tile queue health and enrichment coverage. @@ -48,12 +48,12 @@ Out of scope: Full observability stack (Prometheus/Grafana). This phase focuses ### 3.3 Monitoring Outputs (CLI) -- `meshic-pipeline monitor status` should include: +- `suhail-pipeline monitor status` should include: - Tile queue summary: counts by `status`, number of failed, oldest `in_progress` age - Enrichment coverage: total parcels, parcels with `enriched_at`, % with `transaction_price > 0` -- `meshic-pipeline monitor recommend`: +- `suhail-pipeline monitor recommend`: - Next best action (fast-enrich / incremental / delta) with recommended batch sizes -- `meshic-pipeline monitor schedule-info`: +- `suhail-pipeline monitor schedule-info`: - Suggested cadence (daily/weekly/monthly) based on current freshness ### 3.4 Stale Reset Automation @@ -78,7 +78,7 @@ Out of scope: Full observability stack (Prometheus/Grafana). This phase focuses - All specified indexes exist in production; Alembic migration completes without downtime. - Sample query timings captured (baseline vs post-index) at `docs/reports/perf-baseline-*.md` and `docs/reports/perf-post-index-*.md`. -- Monitoring outputs present and informative; stale reset job operational (`meshic-pipeline monitor reset-stale -- --stale-minutes 60`). +- Monitoring outputs present and informative; stale reset job operational (`suhail-pipeline monitor reset-stale -- --stale-minutes 60`). - Investigate any regressions (e.g., broad metrics aggregation still performs full table scan—documented for follow-up tuning). --- @@ -105,5 +105,5 @@ Out of scope: Full observability stack (Prometheus/Grafana). This phase focuses - docs/BROWNFIELD_PROJECT_DOCUMENTATION.md - alembic/versions/19c587b33197_add_critical_performance_indexes.py -- src/meshic_pipeline/persistence/models.py (TileURL methods) +- src/suhail_pipeline/persistence/models.py (TileURL methods) - docs/PRD.md, docs/ACCEPTANCE_CRITERIA.md diff --git a/docs/working/TODO.md b/docs/working/TODO.md index 099e5af..7013a64 100644 --- a/docs/working/TODO.md +++ b/docs/working/TODO.md @@ -1,4 +1,4 @@ -# Meshic Geospatial Pipeline Implementation Plan +# Suhail Geospatial Pipeline Implementation Plan ## 🚦 **Next Actions Summary (as of DB-Driven Pipeline Phase)** @@ -15,9 +15,9 @@ --- -# Meshic Geospatial Pipeline Implementation Plan +# Suhail Geospatial Pipeline Implementation Plan -This document outlines the implementation plan for the Meshic Geospatial Data Pipeline following the transition to a fully DB-driven pipeline. All tile discovery and orchestration is now managed via the `tile_urls` table in the database, supporting province-wide and all-Saudi scrapes with resumable processing. +This document outlines the implementation plan for the Suhail Geospatial Data Pipeline following the transition to a fully DB-driven pipeline. All tile discovery and orchestration is now managed via the `tile_urls` table in the database, supporting province-wide and all-Saudi scrapes with resumable processing. ## 🎯 **Current Project Status** @@ -52,7 +52,7 @@ This document outlines the implementation plan for the Meshic Geospatial Data Pi **Tasks**: - [x] **Source Environment**: Activate `.venv` before running commands -- [x] **Run Geometric Pipeline**: `meshic-pipeline geometric` (or `python -m meshic_pipeline.cli geometric`) +- [x] **Run Geometric Pipeline**: `suhail-pipeline geometric` (or `python -m suhail_pipeline.cli geometric`) - [x] **Verify Database Population**: Check parcels, neighborhoods, subdivisions tables - [x] **Validate Schema**: Confirm data types and foreign key relationships - [x] **Performance Check**: Measure processing time and memory usage @@ -116,7 +116,7 @@ git tag v0.1.1-3x3-validated **Prerequisites**: 3x3 baseline test completed successfully **Tasks**: -- [x] **Test Fast Enrichment**: `meshic-pipeline fast-enrich --limit 100` (and full batch) +- [x] **Test Fast Enrichment**: `suhail-pipeline fast-enrich --limit 100` (and full batch) - [x] **Monitor Success Rate**: Track enrichment coverage percentage - [x] **Verify API Integration**: Check all 3 API endpoints working - [x] **Data Quality Check**: Ensure no garbage data in enrichment tables @@ -208,22 +208,22 @@ uv add -e . source .venv/bin/activate # or appropriate activation for your shell # Verify installation -meshic-pipeline --help +suhail-pipeline --help ``` ### **Testing Commands** ```bash # Basic geometric pipeline (3x3 grid) -meshic-pipeline geometric +suhail-pipeline geometric # Alternative if package not in PATH -python -m meshic_pipeline.cli geometric +python -m suhail_pipeline.cli geometric # Enrichment testing -meshic-pipeline fast-enrich --limit 100 +suhail-pipeline fast-enrich --limit 100 # Monitor pipeline status -meshic-pipeline monitor status +suhail-pipeline monitor status # Database validation python scripts/check_db.py @@ -391,18 +391,18 @@ Provide minimal pytest examples for each module to guide future implementations. ### **1. Environment Setup** - [ ] Install dependencies using `uv add -e .` - [x] Activate the virtual environment: `source .venv/bin/activate` -- [x] Verify package installation: `meshic-pipeline --help` or `python -m meshic_pipeline.cli --help` - - meshic-pipeline CLI is available and functional +- [x] Verify package installation: `suhail-pipeline --help` or `python -m suhail_pipeline.cli --help` + - suhail-pipeline CLI is available and functional - [x] Check database connectivity and configuration - Database is accessible and tables are present (see `list-tables` output) ### **2. Run Baseline 3x3 Riyadh Test** -- [x] Execute geometric pipeline: `meshic-pipeline geometric` +- [x] Execute geometric pipeline: `suhail-pipeline geometric` - **Note:** Pipeline ran successfully for most layers, but failed for 'parcels' due to `invalid input syntax for type bigint: "9.0"` (zoning_id). All other layers processed and persisted as expected. This error must be fixed before scaling or enrichment. - [x] Verify database population: Check that parcels and reference tables are populated - [x] Validate schema: Confirm data types and foreign key relationships - [ ] Monitor performance: Record processing time and memory usage -- [x] Run enrichment pipeline: `meshic-pipeline fast-enrich --limit 100` (validated and operational) +- [x] Run enrichment pipeline: `suhail-pipeline fast-enrich --limit 100` (validated and operational) ## Comprehensive Debugging & Remediation Plan for Pipeline/DB Issues (July 2025) @@ -480,7 +480,7 @@ Provide minimal pytest examples for each module to guide future implementations. ### Handoff Notes - This checklist is designed for another developer to pick up and systematically resolve the pipeline/DB issues. - Please document all findings and fixes directly in this file or in a new issue tracker as appropriate. -- If you need more context, review the pipeline logs, stitched GeoJSONs, and the code in `src/meshic_pipeline/`. +- If you need more context, review the pipeline logs, stitched GeoJSONs, and the code in `src/suhail_pipeline/`. ## ✅ Baseline Validation Results (July 2025) - All tests run successfully (`unit_test_results.txt`) @@ -503,7 +503,7 @@ Provide minimal pytest examples for each module to guide future implementations. ## Notes - Enrichment pipeline must be run as: ```bash - PYTHONPATH=$(pwd) python src/meshic_pipeline/run_enrichment_pipeline.py fast-enrich --limit 100 + PYTHONPATH=$(pwd) python src/suhail_pipeline/run_enrichment_pipeline.py fast-enrich --limit 100 ``` - Pydantic deprecation warning is present but does not affect current functionality. diff --git a/logs/check_stale.py b/logs/check_stale.py index a3952a3..90cb83c 100644 --- a/logs/check_stale.py +++ b/logs/check_stale.py @@ -1,5 +1,5 @@ from sqlalchemy import create_engine, text -from meshic_pipeline.config import settings +from suhail_pipeline.config import settings eng = create_engine(str(settings.database_url)) with eng.connect() as c: diff --git a/logs/enrichment_monitor.py b/logs/enrichment_monitor.py index dd06da6..0524c18 100644 --- a/logs/enrichment_monitor.py +++ b/logs/enrichment_monitor.py @@ -7,7 +7,7 @@ # Add project root to path sys.path.insert(0, str(Path(__file__).parent.parent)) -from src.meshic_pipeline.config import settings +from src.suhail_pipeline.config import settings def monitor_enrichment(): engine = create_engine(str(settings.database_url)) diff --git a/logs/enrichment_watcher.py b/logs/enrichment_watcher.py index 982f3d2..d6e1af3 100644 --- a/logs/enrichment_watcher.py +++ b/logs/enrichment_watcher.py @@ -9,7 +9,7 @@ # Add project root to path sys.path.insert(0, str(Path(__file__).parent.parent)) -from src.meshic_pipeline.config import settings +from src.suhail_pipeline.config import settings from sqlalchemy import create_engine def check_process_running(pid_file): @@ -89,7 +89,7 @@ def main(): if not process_running and remaining > 0: print(f"\n⚠️ WARNING: Process stopped but {remaining:,} parcels remain!") print(f"📝 Check logs/enrichment-full.log for errors") - print(f"🔄 You may need to restart: meshic-pipeline full-refresh") + print(f"🔄 You may need to restart: suhail-pipeline full-refresh") break except KeyboardInterrupt: diff --git a/logs/live_monitor.py b/logs/live_monitor.py index 96ebc28..76a9057 100644 --- a/logs/live_monitor.py +++ b/logs/live_monitor.py @@ -9,7 +9,7 @@ from datetime import datetime, timedelta from tqdm import tqdm from sqlalchemy import create_engine, text -from meshic_pipeline.config import settings +from suhail_pipeline.config import settings class PipelineMonitor: def __init__(self): diff --git a/logs/progress_watcher.py b/logs/progress_watcher.py index 0735330..2deb1e6 100644 --- a/logs/progress_watcher.py +++ b/logs/progress_watcher.py @@ -1,6 +1,6 @@ import sys, time from sqlalchemy import create_engine, text -from meshic_pipeline.config import settings +from suhail_pipeline.config import settings def snapshot(): e = create_engine(str(settings.database_url)) diff --git a/logs/reset_stale.py b/logs/reset_stale.py index 9d203af..140a934 100644 --- a/logs/reset_stale.py +++ b/logs/reset_stale.py @@ -1,5 +1,5 @@ from sqlalchemy import create_engine, text -from meshic_pipeline.config import settings +from suhail_pipeline.config import settings eng = create_engine(str(settings.database_url)) with eng.connect() as c: diff --git a/logs/universal_metrics_monitor.py b/logs/universal_metrics_monitor.py index 4107fff..0374fef 100644 --- a/logs/universal_metrics_monitor.py +++ b/logs/universal_metrics_monitor.py @@ -9,7 +9,7 @@ # Add project root to path sys.path.insert(0, str(Path(__file__).parent.parent)) -from src.meshic_pipeline.config import settings +from src.suhail_pipeline.config import settings from sqlalchemy import create_engine, text from tqdm import tqdm diff --git a/pipeline_config_enhanced.yaml b/pipeline_config_enhanced.yaml index be0dd13..f1ac102 100644 --- a/pipeline_config_enhanced.yaml +++ b/pipeline_config_enhanced.yaml @@ -76,7 +76,7 @@ layers: # Integration examples (documentation) usage_examples: - single_province: "python -m meshic_pipeline.cli province-geometric riyadh" - all_saudi: "python -m meshic_pipeline.cli saudi-arabia-geometric" - efficient_mode: "python -m meshic_pipeline.cli saudi-arabia-geometric --strategy efficient" - complete_pipeline: "python -m meshic_pipeline.cli province-pipeline al_qassim" \ No newline at end of file + single_province: "python -m suhail_pipeline.cli province-geometric riyadh" + all_saudi: "python -m suhail_pipeline.cli saudi-arabia-geometric" + efficient_mode: "python -m suhail_pipeline.cli saudi-arabia-geometric --strategy efficient" + complete_pipeline: "python -m suhail_pipeline.cli province-pipeline al_qassim" \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 5a1a6cb..7aa3b04 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,12 +3,12 @@ requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] -name = "meshic-pipeline" +name = "suhail-pipeline" version = "0.1.0" authors = [ { name="Suhail.AI", email="engineering@suhail.ai" }, ] -description = "Meshic data processing pipeline" +description = "Suhail data processing pipeline" readme = "README.md" requires-python = ">=3.9" classifiers = [ @@ -43,8 +43,8 @@ dependencies = [ ] [project.scripts] -check_db = "meshic_pipeline.utils.db_checker:app" -meshic-pipeline = "meshic_pipeline.cli:app" +check_db = "suhail_pipeline.utils.db_checker:app" +suhail-pipeline = "suhail_pipeline.cli:app" [tool.setuptools.packages.find] where = ["src"] diff --git a/run_pipeline.sh b/run_pipeline.sh index d9727f1..2504765 100755 --- a/run_pipeline.sh +++ b/run_pipeline.sh @@ -19,11 +19,11 @@ if [[ -z "${DATABASE_URL:-}" ]]; then fi echo "Seeding pilot tiles for two provinces (riyadh, eastern)..." -uv run meshic-pipeline seed-tiles --provinces riyadh --provinces eastern --limit 200 --stride 20 +uv run suhail-pipeline seed-tiles --provinces riyadh --provinces eastern --limit 200 --stride 20 echo "Running DB-driven geometric pilot..." -uv run meshic-pipeline db-geometric --batch-size 200 --concurrency 20 --request-delay 0.05 +uv run suhail-pipeline db-geometric --batch-size 200 --concurrency 20 --request-delay 0.05 echo "Pilot complete. To proceed countrywide:" -echo " 1) uv run meshic-pipeline seed-tiles" -echo " 2) uv run meshic-pipeline db-geometric --batch-size 1000 --concurrency 20 --request-delay 0.05" +echo " 1) uv run suhail-pipeline seed-tiles" +echo " 2) uv run suhail-pipeline db-geometric --batch-size 1000 --concurrency 20 --request-delay 0.05" diff --git a/scripts/generate_riyadh_transactions_report.py b/scripts/generate_riyadh_transactions_report.py index 88a11c5..c925624 100755 --- a/scripts/generate_riyadh_transactions_report.py +++ b/scripts/generate_riyadh_transactions_report.py @@ -20,8 +20,8 @@ src_path = project_root / "src" sys.path.insert(0, str(src_path)) -from meshic_pipeline.config import Settings -from meshic_pipeline.persistence.models import Parcel, Transaction, Neighborhood, Province +from suhail_pipeline.config import Settings +from suhail_pipeline.persistence.models import Parcel, Transaction, Neighborhood, Province def get_database_connection(): @@ -155,7 +155,7 @@ def generate_markdown_report(df, stats, output_path): **Generated on:** {datetime.now().strftime('%Y-%m-%d %H:%M:%S')} **Report Period:** Last 6 months -**Data Source:** Meshic Pipeline Database +**Data Source:** Suhail Pipeline Database ## Executive Summary @@ -258,7 +258,7 @@ def generate_markdown_report(df, stats, output_path): ## Methodology -This report is generated from the Meshic Pipeline database, which captures real estate data from official sources and enriches it with additional market information. The analysis includes: +This report is generated from the Suhail Pipeline database, which captures real estate data from official sources and enriches it with additional market information. The analysis includes: 1. **Data Source:** Direct database queries from the `parcels` and `transactions` tables 2. **Time Period:** Last 6 months from the report generation date @@ -273,7 +273,7 @@ def generate_markdown_report(df, stats, output_path): - **Data Export:** CSV format available in companion file --- -*Report generated by Meshic Pipeline Analytics System* +*Report generated by Suhail Pipeline Analytics System* """ # Write the report diff --git a/scripts/util/backfill_province_metadata.py b/scripts/util/backfill_province_metadata.py index 17655f8..b54b13a 100644 --- a/scripts/util/backfill_province_metadata.py +++ b/scripts/util/backfill_province_metadata.py @@ -18,8 +18,8 @@ import mercantile from sqlalchemy import text -from meshic_pipeline.persistence.db import get_db_engine -from meshic_pipeline.config import settings +from suhail_pipeline.persistence.db import get_db_engine +from suhail_pipeline.config import settings SLUG_REGEX = re.compile(r"https?://[^/]+/maps/([^/]+)/") diff --git a/scripts/util/capture_test_fixtures.py b/scripts/util/capture_test_fixtures.py index 94a9412..11541c3 100644 --- a/scripts/util/capture_test_fixtures.py +++ b/scripts/util/capture_test_fixtures.py @@ -10,10 +10,10 @@ src_path = Path(__file__).parent.parent / "src" sys.path.insert(0, str(src_path)) -from meshic_pipeline.config import settings -from meshic_pipeline.downloader.async_tile_downloader import AsyncTileDownloader -from meshic_pipeline.enrichment.api_client import SuhailAPIClient -from meshic_pipeline.logging_utils import get_logger +from suhail_pipeline.config import settings +from suhail_pipeline.downloader.async_tile_downloader import AsyncTileDownloader +from suhail_pipeline.enrichment.api_client import SuhailAPIClient +from suhail_pipeline.logging_utils import get_logger logger = get_logger(__name__) diff --git a/scripts/util/check_db.py b/scripts/util/check_db.py index 2d8fd9c..59c316d 100644 --- a/scripts/util/check_db.py +++ b/scripts/util/check_db.py @@ -5,7 +5,7 @@ from pathlib import Path from typing import Optional from sqlalchemy import create_engine, inspect, text, exc -from meshic_pipeline.config import settings +from suhail_pipeline.config import settings from rich.table import Table as RichTable from rich.console import Console from sqlalchemy.exc import NoSuchTableError diff --git a/scripts/util/enhanced_province_discovery.py b/scripts/util/enhanced_province_discovery.py index 37550d5..fbeb750 100644 --- a/scripts/util/enhanced_province_discovery.py +++ b/scripts/util/enhanced_province_discovery.py @@ -16,7 +16,7 @@ import typer import time -from meshic_pipeline.decoder.mvt_decoder import MVTDecoder +from suhail_pipeline.decoder.mvt_decoder import MVTDecoder # --- Enhanced Configuration --- LOG_LEVEL = logging.INFO diff --git a/scripts/util/export_to_geojson.py b/scripts/util/export_to_geojson.py index 13611ec..1974564 100644 --- a/scripts/util/export_to_geojson.py +++ b/scripts/util/export_to_geojson.py @@ -30,7 +30,7 @@ def export_table_to_geojson(table_name: str, output_file: str, limit: int = None load_dotenv() if str(_REPO_SRC) not in sys.path: sys.path.insert(0, str(_REPO_SRC)) - from meshic_pipeline.persistence.db import get_db_engine + from suhail_pipeline.persistence.db import get_db_engine engine = get_db_engine() diff --git a/scripts/util/generate_tile_list.py b/scripts/util/generate_tile_list.py index 5fc75b8..3f4c036 100644 --- a/scripts/util/generate_tile_list.py +++ b/scripts/util/generate_tile_list.py @@ -6,7 +6,7 @@ from shapely.ops import unary_union from tqdm import tqdm -from meshic_pipeline.decoder.mvt_decoder import MVTDecoder +from suhail_pipeline.decoder.mvt_decoder import MVTDecoder # --- Configuration --- LOG_LEVEL = logging.INFO diff --git a/scripts/util/inspect_tiles.py b/scripts/util/inspect_tiles.py index 05b7887..481806d 100644 --- a/scripts/util/inspect_tiles.py +++ b/scripts/util/inspect_tiles.py @@ -1,7 +1,7 @@ import os import glob import re -from meshic_pipeline.decoder.mvt_decoder import MVTDecoder +from suhail_pipeline.decoder.mvt_decoder import MVTDecoder from collections import defaultdict diff --git a/scripts/util/intelligent_province_discovery.py b/scripts/util/intelligent_province_discovery.py index 83b9ce7..e3c885c 100644 --- a/scripts/util/intelligent_province_discovery.py +++ b/scripts/util/intelligent_province_discovery.py @@ -14,7 +14,7 @@ from shapely.geometry import box import typer -from meshic_pipeline.decoder.mvt_decoder import MVTDecoder +from suhail_pipeline.decoder.mvt_decoder import MVTDecoder # --- Enhanced Configuration --- LOG_LEVEL = logging.INFO diff --git a/scripts/util/market_analysis.py b/scripts/util/market_analysis.py index 3a432da..5547e37 100644 --- a/scripts/util/market_analysis.py +++ b/scripts/util/market_analysis.py @@ -16,7 +16,7 @@ # Add the src directory to the path sys.path.insert(0, str(Path(__file__).parent.parent.parent / "src")) -from meshic_pipeline.persistence.db import get_db_engine +from suhail_pipeline.persistence.db import get_db_engine from sqlalchemy import text diff --git a/scripts/util/sync_provinces.py b/scripts/util/sync_provinces.py index 087446b..ba38c1a 100644 --- a/scripts/util/sync_provinces.py +++ b/scripts/util/sync_provinces.py @@ -8,7 +8,7 @@ logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s %(message)s') # Database connection string (read from environment or default) -DATABASE_URL = os.getenv('DATABASE_URL', 'postgresql://localhost/meshic') +DATABASE_URL = os.getenv('DATABASE_URL', 'postgresql://localhost/suhail') def fetch_provinces(): url = 'https://api2.suhail.ai/regions' diff --git a/scripts/util/validate_data_types.py b/scripts/util/validate_data_types.py index c58a1ae..f492ccd 100644 --- a/scripts/util/validate_data_types.py +++ b/scripts/util/validate_data_types.py @@ -14,7 +14,7 @@ # Add src to path for imports sys.path.insert(0, str(Path(__file__).parent.parent / "src")) -from meshic_pipeline.logging_utils import get_logger +from suhail_pipeline.logging_utils import get_logger logger = get_logger(__name__) diff --git a/scripts/util/validate_foreign_keys.py b/scripts/util/validate_foreign_keys.py index 65382f3..d612e00 100644 --- a/scripts/util/validate_foreign_keys.py +++ b/scripts/util/validate_foreign_keys.py @@ -3,7 +3,7 @@ sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) import sqlalchemy -from src.meshic_pipeline.config import settings +from src.suhail_pipeline.config import settings def main(): """ diff --git a/scripts/util/validate_tile_data.py b/scripts/util/validate_tile_data.py index 014f707..5a38d4d 100644 --- a/scripts/util/validate_tile_data.py +++ b/scripts/util/validate_tile_data.py @@ -12,7 +12,7 @@ import glob import argparse import json -from meshic_pipeline.decoder.mvt_decoder import MVTDecoder +from suhail_pipeline.decoder.mvt_decoder import MVTDecoder from shapely.geometry import mapping ID_FIELDS = { diff --git a/tests/integration/test_pipeline_integration.py b/tests/integration/test_pipeline_integration.py index 78068f3..62464c6 100644 --- a/tests/integration/test_pipeline_integration.py +++ b/tests/integration/test_pipeline_integration.py @@ -5,10 +5,10 @@ import mapbox_vector_tile from sqlalchemy import create_engine -from meshic_pipeline.config import settings -import meshic_pipeline.persistence.table_management as table_management -import meshic_pipeline.pipeline_orchestrator as orchestrator -from meshic_pipeline.pipeline_orchestrator import run_pipeline +from suhail_pipeline.config import settings +import suhail_pipeline.persistence.table_management as table_management +import suhail_pipeline.pipeline_orchestrator as orchestrator +from suhail_pipeline.pipeline_orchestrator import run_pipeline # Integration test that exercises the pipeline orchestration with mocked # downloader and database persistence. @@ -21,12 +21,12 @@ class DummyInspector: def has_table(self, table_name, schema=None): return True monkeypatch.setattr( - "meshic_pipeline.pipeline_orchestrator.inspect", + "suhail_pipeline.pipeline_orchestrator.inspect", lambda engine: DummyInspector(), ) # Patch reset_temp_table to a no-op in both orchestrator and table_management monkeypatch.setattr( - "meshic_pipeline.pipeline_orchestrator.reset_temp_table", lambda *a, **kw: None + "suhail_pipeline.pipeline_orchestrator.reset_temp_table", lambda *a, **kw: None ) monkeypatch.setattr(table_management, "reset_temp_table", lambda *a, **kw: None) # sample tile with a single parcel feature @@ -48,7 +48,7 @@ def has_table(self, table_name, schema=None): # discovery returns exactly one tile coordinate monkeypatch.setattr( - "meshic_pipeline.pipeline_orchestrator.get_tile_coordinates_for_bounds", + "suhail_pipeline.pipeline_orchestrator.get_tile_coordinates_for_bounds", lambda bbox, zoom: [(15, 0, 0)], ) @@ -67,7 +67,7 @@ async def download_many(self, tiles): return {tiles[0]: tile_bytes} monkeypatch.setattr( - "meshic_pipeline.pipeline_orchestrator.AsyncTileDownloader", + "suhail_pipeline.pipeline_orchestrator.AsyncTileDownloader", DummyDownloader, ) @@ -113,7 +113,7 @@ def drop_table(self, table, schema="public"): temp_tables.pop(table, None) monkeypatch.setattr( - "meshic_pipeline.pipeline_orchestrator.PostGISPersister", + "suhail_pipeline.pipeline_orchestrator.PostGISPersister", DummyPersister, ) @@ -144,7 +144,7 @@ def dummy_stitch(self, table_name, layer_name, id_column, agg_rules, known_colum return gpd.GeoDataFrame(df, geometry="geometry", crs=settings.default_crs) monkeypatch.setattr( - "meshic_pipeline.pipeline_orchestrator.GeometryStitcher.stitch_from_table", + "suhail_pipeline.pipeline_orchestrator.GeometryStitcher.stitch_from_table", dummy_stitch, ) @@ -180,12 +180,12 @@ class DummyInspector: def has_table(self, table_name, schema=None): return True monkeypatch.setattr( - "meshic_pipeline.pipeline_orchestrator.inspect", + "suhail_pipeline.pipeline_orchestrator.inspect", lambda engine: DummyInspector(), ) # Patch reset_temp_table to a no-op in both orchestrator and table_management monkeypatch.setattr( - "meshic_pipeline.pipeline_orchestrator.reset_temp_table", lambda *a, **kw: None + "suhail_pipeline.pipeline_orchestrator.reset_temp_table", lambda *a, **kw: None ) monkeypatch.setattr(table_management, "reset_temp_table", lambda *a, **kw: None) tile_bytes = mapbox_vector_tile.encode( @@ -205,7 +205,7 @@ def has_table(self, table_name, schema=None): ) monkeypatch.setattr( - "meshic_pipeline.pipeline_orchestrator.get_tile_coordinates_for_bounds", + "suhail_pipeline.pipeline_orchestrator.get_tile_coordinates_for_bounds", lambda bbox, zoom: [(15, 0, 0)], ) @@ -223,7 +223,7 @@ async def download_many(self, tiles): return {tiles[0]: tile_bytes} monkeypatch.setattr( - "meshic_pipeline.pipeline_orchestrator.AsyncTileDownloader", + "suhail_pipeline.pipeline_orchestrator.AsyncTileDownloader", DummyDownloader, ) @@ -264,7 +264,7 @@ def drop_table(self, table, schema="public"): pass monkeypatch.setattr( - "meshic_pipeline.pipeline_orchestrator.PostGISPersister", + "suhail_pipeline.pipeline_orchestrator.PostGISPersister", DummyPersister, ) @@ -294,7 +294,7 @@ def dummy_stitch(self, table_name, layer_name, id_column, agg_rules, known_colum ) monkeypatch.setattr( - "meshic_pipeline.pipeline_orchestrator.GeometryStitcher.stitch_from_table", + "suhail_pipeline.pipeline_orchestrator.GeometryStitcher.stitch_from_table", dummy_stitch, ) diff --git a/tests/test_async_tile_downloader.py b/tests/test_async_tile_downloader.py index db892be..3359775 100644 --- a/tests/test_async_tile_downloader.py +++ b/tests/test_async_tile_downloader.py @@ -2,7 +2,7 @@ import pytest -from meshic_pipeline.downloader.async_tile_downloader import AsyncTileDownloader +from suhail_pipeline.downloader.async_tile_downloader import AsyncTileDownloader class FakeResponse: def __init__(self, status=200, data=b"data"): diff --git a/tests/unit/test_async_tile_downloader.py b/tests/unit/test_async_tile_downloader.py index e16d766..c93732e 100644 --- a/tests/unit/test_async_tile_downloader.py +++ b/tests/unit/test_async_tile_downloader.py @@ -1,9 +1,9 @@ import asyncio import pytest -from meshic_pipeline.config import settings +from suhail_pipeline.config import settings -from meshic_pipeline.downloader.async_tile_downloader import AsyncTileDownloader +from suhail_pipeline.downloader.async_tile_downloader import AsyncTileDownloader class FakeResponse: def __init__(self, status=200, data=b"data"): diff --git a/tests/unit/test_cli_commands.py b/tests/unit/test_cli_commands.py index d420e44..7baf3fb 100644 --- a/tests/unit/test_cli_commands.py +++ b/tests/unit/test_cli_commands.py @@ -1,6 +1,6 @@ import pytest from typer.testing import CliRunner -from meshic_pipeline.cli import app +from suhail_pipeline.cli import app import asyncio from unittest.mock import AsyncMock @@ -42,7 +42,7 @@ def test_geometric_command_runs(monkeypatch, args, expected): (["--limit", "10"], "delta enrichment"), ]) def test_delta_enrich_command_runs(monkeypatch, args, expected): - import meshic_pipeline.run_enrichment_pipeline as rep + import suhail_pipeline.run_enrichment_pipeline as rep monkeypatch.setattr(rep, "get_async_db_engine", lambda: None) monkeypatch.setattr(rep, "_table_exists", AsyncMock(return_value=True)) monkeypatch.setattr(rep, "get_delta_parcel_ids_with_details", AsyncMock(return_value=([], {}))) @@ -95,7 +95,7 @@ def test_monitor_command(monkeypatch, action, should_succeed): ]) def test_fast_enrich_command(monkeypatch, args): # Mock enrichment function - import meshic_pipeline.run_enrichment_pipeline as rep + import suhail_pipeline.run_enrichment_pipeline as rep monkeypatch.setattr(rep, "fast_enrich", lambda *a, **k: None) result = runner.invoke(app, ["fast-enrich"] + args) assert result.exit_code == 0 @@ -107,7 +107,7 @@ def test_fast_enrich_command(monkeypatch, args): ["--limit", "5"], ]) def test_incremental_enrich_command(monkeypatch, args): - import meshic_pipeline.run_enrichment_pipeline as rep + import suhail_pipeline.run_enrichment_pipeline as rep monkeypatch.setattr(rep, "incremental_enrich", lambda *a, **k: None) result = runner.invoke(app, ["incremental-enrich"] + args) assert result.exit_code == 0 @@ -118,7 +118,7 @@ def test_incremental_enrich_command(monkeypatch, args): ["--limit", "2"], ]) def test_full_refresh_command(monkeypatch, args): - import meshic_pipeline.run_enrichment_pipeline as rep + import suhail_pipeline.run_enrichment_pipeline as rep monkeypatch.setattr(rep, "full_refresh", lambda *a, **k: None) result = runner.invoke(app, ["full-refresh"] + args) assert result.exit_code == 0 @@ -188,7 +188,7 @@ def test_geometric_help_output(): # Enhance delta-enrich output assertion def test_delta_enrich_auto_geometric_output(monkeypatch): - import meshic_pipeline.run_enrichment_pipeline as rep + import suhail_pipeline.run_enrichment_pipeline as rep monkeypatch.setattr(rep, "get_async_db_engine", lambda: None) monkeypatch.setattr(rep, "_table_exists", AsyncMock(return_value=True)) monkeypatch.setattr(rep, "get_delta_parcel_ids_with_details", AsyncMock(return_value=([], {}))) diff --git a/tests/unit/test_config.py b/tests/unit/test_config.py index 517e7b6..211eb1d 100644 --- a/tests/unit/test_config.py +++ b/tests/unit/test_config.py @@ -1,4 +1,4 @@ -from meshic_pipeline.config import Settings, Environment, ApiConfig +from suhail_pipeline.config import Settings, Environment, ApiConfig def test_environment_override(): diff --git a/tests/unit/test_data_validation.py b/tests/unit/test_data_validation.py index f35fe45..7a985b8 100644 --- a/tests/unit/test_data_validation.py +++ b/tests/unit/test_data_validation.py @@ -2,7 +2,7 @@ import geopandas as gpd from shapely.geometry import Point -from meshic_pipeline.persistence.postgis_persister import PostGISPersister +from suhail_pipeline.persistence.postgis_persister import PostGISPersister class MockPersister(PostGISPersister): def __init__(self): diff --git a/tests/unit/test_decoder.py b/tests/unit/test_decoder.py index ca95997..f8f8860 100644 --- a/tests/unit/test_decoder.py +++ b/tests/unit/test_decoder.py @@ -1,4 +1,4 @@ -from meshic_pipeline.decoder.mvt_decoder import MVTDecoder +from suhail_pipeline.decoder.mvt_decoder import MVTDecoder import geopandas as gpd import shapely.geometry diff --git a/tests/unit/test_delta_enrichment_cli.py b/tests/unit/test_delta_enrichment_cli.py index 35873de..7ac7d55 100644 --- a/tests/unit/test_delta_enrichment_cli.py +++ b/tests/unit/test_delta_enrichment_cli.py @@ -1,7 +1,7 @@ from typer.testing import CliRunner -from meshic_pipeline.run_enrichment_pipeline import app -import meshic_pipeline.run_enrichment_pipeline as rep +from suhail_pipeline.run_enrichment_pipeline import app +import suhail_pipeline.run_enrichment_pipeline as rep runner = CliRunner() diff --git a/tests/unit/test_discovery.py b/tests/unit/test_discovery.py index a2b6cb2..07a250e 100644 --- a/tests/unit/test_discovery.py +++ b/tests/unit/test_discovery.py @@ -1,6 +1,6 @@ import mercantile -from meshic_pipeline.pipeline_orchestrator import get_tile_coordinates_for_grid +from suhail_pipeline.pipeline_orchestrator import get_tile_coordinates_for_grid def test_get_tile_coordinates_for_bounds_round_trip(): diff --git a/tests/unit/test_enrichment_strategies.py b/tests/unit/test_enrichment_strategies.py index b79b63f..2ad74b8 100644 --- a/tests/unit/test_enrichment_strategies.py +++ b/tests/unit/test_enrichment_strategies.py @@ -1,5 +1,5 @@ import pytest -from meshic_pipeline.enrichment import strategies +from suhail_pipeline.enrichment import strategies def test_quote_table_name_valid(): diff --git a/tests/unit/test_geometric_cli.py b/tests/unit/test_geometric_cli.py index f57e171..182e432 100644 --- a/tests/unit/test_geometric_cli.py +++ b/tests/unit/test_geometric_cli.py @@ -1,5 +1,5 @@ from typer.testing import CliRunner -from meshic_pipeline.run_geometric_pipeline import app +from suhail_pipeline.run_geometric_pipeline import app runner = CliRunner() diff --git a/tests/unit/test_province_loader.py b/tests/unit/test_province_loader.py index 5926c83..e2c51d2 100644 --- a/tests/unit/test_province_loader.py +++ b/tests/unit/test_province_loader.py @@ -1,5 +1,5 @@ -from meshic_pipeline.config import settings -from meshic_pipeline.utils.tile_list_generator import tiles_from_bbox_z +from suhail_pipeline.config import settings +from suhail_pipeline.utils.tile_list_generator import tiles_from_bbox_z def test_provinces_loaded(monkeypatch): diff --git a/tests/unit/test_smart_pipeline_enrich.py b/tests/unit/test_smart_pipeline_enrich.py index 554d002..4a6b550 100644 --- a/tests/unit/test_smart_pipeline_enrich.py +++ b/tests/unit/test_smart_pipeline_enrich.py @@ -1,11 +1,11 @@ -import meshic_pipeline.run_enrichment_pipeline as rep +import suhail_pipeline.run_enrichment_pipeline as rep def test_smart_pipeline_import(monkeypatch): called = {} def fake_main(): called['ok'] = True - monkeypatch.setattr('meshic_pipeline.run_geometric_pipeline.main', fake_main) + monkeypatch.setattr('suhail_pipeline.run_geometric_pipeline.main', fake_main) # Call the command function directly to ensure import works rep.smart_pipeline_enrich(geometric_first=True, trigger_after=False, batch_size=300, bbox=None) assert called.get('ok') diff --git a/tests/unit/test_stitcher.py b/tests/unit/test_stitcher.py index b426283..fb4b60e 100644 --- a/tests/unit/test_stitcher.py +++ b/tests/unit/test_stitcher.py @@ -1,5 +1,5 @@ import geopandas as gpd -from meshic_pipeline.geometry.stitcher import GeometryStitcher +from suhail_pipeline.geometry.stitcher import GeometryStitcher class DummyPersister: def __init__(self): diff --git a/tests/unit/test_validator.py b/tests/unit/test_validator.py index 470cdf4..eb24064 100644 --- a/tests/unit/test_validator.py +++ b/tests/unit/test_validator.py @@ -1,7 +1,7 @@ import geopandas as gpd from shapely.geometry import Polygon -from meshic_pipeline.geometry.validator import validate_geometries +from suhail_pipeline.geometry.validator import validate_geometries def test_validate_geometries_empty(): diff --git a/uv.lock b/uv.lock index d04804c..f9bcc02 100644 --- a/uv.lock +++ b/uv.lock @@ -854,7 +854,7 @@ wheels = [ ] [[package]] -name = "meshic-pipeline" +name = "suhail-pipeline" version = "0.1.0" source = { editable = "." } dependencies = [ From e0676158f7044d200470ee33def1abbaab1f6a74 Mon Sep 17 00:00:00 2001 From: Raedmund <30367709+Pinstack@users.noreply.github.com> Date: Wed, 15 Jul 2026 14:20:25 +0200 Subject: [PATCH 4/4] docs(audit): record quarantine-features idea (from dropped autotune branch) as a demonstrated-need-gated future option Co-Authored-By: Claude Opus 4.8 --- docs/SUHAIL_SOURCE_AUDIT_2026-07.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/SUHAIL_SOURCE_AUDIT_2026-07.md b/docs/SUHAIL_SOURCE_AUDIT_2026-07.md index abdc515..9c4b12a 100644 --- a/docs/SUHAIL_SOURCE_AUDIT_2026-07.md +++ b/docs/SUHAIL_SOURCE_AUDIT_2026-07.md @@ -342,6 +342,14 @@ correctness fixes; nothing removes existing behaviour. - Per-feature provenance (`source_tile_z/x/y`, `fetched_at`) and `geometry_hash` computation. - Collapse the drifting layer-schema definitions (`SCHEMA_MAP` / models / config) into one declarative spec + a schema-drift CI check. +- **Quarantine of dropped features** — a `quarantined_features` table capturing malformed + geometries / unmappable rows the pipeline currently drops silently (decoder feature-loop + `except: continue`, empty-geometry validation, null-PK filtering), plus a `province_id_mapping` + lookup. Prototyped on the abandoned `autotune-error-reporting` branch (evaluated and dropped: + ~1yr stale, mostly superseded, no consumer). **Not built here on purpose** — it's only worth it + once real, quantified data-loss is observed and a consumer (report/alert) exists; building an + unmonitored quarantine table now would be speculative. Build fresh against current code if a + need is demonstrated. ## 7. End-to-end validation results (live, 2026-07-15)

  • nU|83 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μ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 z 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