Skip to content

Instantly share code, notes, and snippets.

@soxofaan
Created July 9, 2025 18:20
Show Gist options
  • Save soxofaan/2997f38468165be7749dec96c3927666 to your computer and use it in GitHub Desktop.
Save soxofaan/2997f38468165be7749dec96c3927666 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "f9a4bea2-b02a-4c69-ad11-408007d4181c",
"metadata": {},
"source": [
"# Feasibility of Temporal Feature Encoding (DOY as Sin & Cos) in openEO as a Process or as a UDF \n",
"\n",
"https://forum.dataspace.copernicus.eu/t/feasibility-of-temporal-feature-encoding-doy-as-sin-cos-in-openeo-as-a-process-or-as-a-udf/3894/1"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "79be8260-d757-4e47-b4ec-156c78ad3560",
"metadata": {},
"outputs": [],
"source": [
"import openeo"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "67e1499e-8a9f-4663-9b16-f11fa9491ce4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Authenticated using refresh token.\n"
]
}
],
"source": [
"connection = openeo.connect(\n",
" url=\"openeo.dataspace.copernicus.eu\"\n",
").authenticate_oidc()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "87686972-d71c-4c9f-bdad-06551483ece7",
"metadata": {},
"outputs": [],
"source": [
"raw = connection.load_collection(\n",
" \"SENTINEL2_L2A\",\n",
" spatial_extent={\"west\": 3, \"south\": 51, \"east\": 3.01, \"north\": 51.01},\n",
" temporal_extent=[\"2025-01-01\", \"2025-06-01\"],\n",
" bands=[\"B03\"],\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "fbac7158-4a12-4fbf-93af-c18dc5d7f3b5",
"metadata": {},
"outputs": [],
"source": [
"udf = openeo.UDF.from_file(\"forum3894-append-doy-udf.py\")\n",
"cube = raw.apply_dimension(process=udf, dimension=\"bands\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "b22d2e24-f076-44c3-9612-7a775a8dcbc6",
"metadata": {},
"outputs": [],
"source": [
"res = cube.save_result(\"netCDF\")"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "9e5b8355-5d02-44c4-bba4-df6584fa5bee",
"metadata": {},
"outputs": [],
"source": [
"job = res.create_job(title=\"forum3895 sin cos doy\")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "6d8711e4-fb59-4559-9795-62e4e284616e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0:00:00 Job 'j-25070918075645df99a8ab03234249f5': send 'start'\n",
"0:00:14 Job 'j-25070918075645df99a8ab03234249f5': queued (progress 0%)\n",
"0:00:19 Job 'j-25070918075645df99a8ab03234249f5': queued (progress 0%)\n",
"0:00:25 Job 'j-25070918075645df99a8ab03234249f5': queued (progress 0%)\n",
"0:00:33 Job 'j-25070918075645df99a8ab03234249f5': queued (progress 0%)\n",
"0:00:43 Job 'j-25070918075645df99a8ab03234249f5': queued (progress 0%)\n",
"0:00:55 Job 'j-25070918075645df99a8ab03234249f5': queued (progress 0%)\n",
"0:01:11 Job 'j-25070918075645df99a8ab03234249f5': queued (progress 0%)\n",
"0:01:30 Job 'j-25070918075645df99a8ab03234249f5': running (progress N/A)\n",
"0:01:54 Job 'j-25070918075645df99a8ab03234249f5': running (progress N/A)\n",
"0:02:24 Job 'j-25070918075645df99a8ab03234249f5': running (progress N/A)\n",
"0:03:02 Job 'j-25070918075645df99a8ab03234249f5': running (progress N/A)\n",
"0:03:49 Job 'j-25070918075645df99a8ab03234249f5': running (progress N/A)\n",
"0:04:47 Job 'j-25070918075645df99a8ab03234249f5': running (progress N/A)\n",
"0:05:48 Job 'j-25070918075645df99a8ab03234249f5': running (progress N/A)\n",
"0:06:48 Job 'j-25070918075645df99a8ab03234249f5': running (progress N/A)\n",
"0:07:48 Job 'j-25070918075645df99a8ab03234249f5': finished (progress 100%)\n"
]
},
{
"data": {
"text/html": [
"\n",
" <script>\n",
" if (!window.customElements || !window.customElements.get('openeo-job')) {\n",
" var el = document.createElement('script');\n",
" el.src = \"https://cdn.jsdelivr.net/npm/@openeo/vue-components@2/assets/openeo.min.js\";\n",
" document.head.appendChild(el);\n",
"\n",
" var font = document.createElement('font');\n",
" font.as = \"font\";\n",
" font.type = \"font/woff2\";\n",
" font.crossOrigin = true;\n",
" font.href = \"https://use.fontawesome.com/releases/v5.13.0/webfonts/fa-solid-900.woff2\"\n",
" document.head.appendChild(font);\n",
" }\n",
" </script>\n",
" <openeo-job>\n",
" <script type=\"application/json\">{\"currency\": \"credits\", \"federation\": null, \"job\": {\"costs\": 7, \"created\": \"2025-07-09T18:07:56Z\", \"id\": \"j-25070918075645df99a8ab03234249f5\", \"process\": {\"process_graph\": {\"applydimension1\": {\"arguments\": {\"data\": {\"from_node\": \"loadcollection1\"}, \"dimension\": \"bands\", \"process\": {\"process_graph\": {\"runudf1\": {\"arguments\": {\"data\": {\"from_parameter\": \"data\"}, \"runtime\": \"Python\", \"udf\": \"import datetime\\nimport calendar\\nimport xarray\\nimport numpy\\nimport math\\nimport openeo\\nfrom openeo.metadata import CubeMetadata\\n\\n\\ndef broadcast_as_band(\\n ref: xarray.DataArray,\\n value: float = 0.0,\\n label: str = \\\"new\\\",\\n dim_name: str = \\\"bands\\\",\\n) -> xarray.DataArray:\\n \\\"\\\"\\\"\\n Broadcast a scalar value to a new DataArray,\\n based on a given DataArray,\\n so that it can be concatenated as a new band to the given DataArray\\n \\\"\\\"\\\"\\n assert dim_name in ref.dims\\n shape = [(1 if d == dim_name else s) for (d, s) in zip(ref.dims, ref.shape)]\\n data = numpy.full(shape=shape, fill_value=value)\\n coords = {k: ([label] if k == dim_name else v) for (k, v) in ref.coords.items()}\\n return xarray.DataArray(data=data, dims=ref.dims, coords=coords)\\n\\n\\ndef append_scalars_as_bands(\\n da: xarray.DataArray,\\n values: dict,\\n dim_name: str = \\\"bands\\\",\\n) -> xarray.DataArray:\\n \\\"\\\"\\\"\\n Append scalar values\\n (given as dictionary mapping band labels to values)\\n as new bands to a given DataArray\\n \\\"\\\"\\\"\\n objs = [da] + [\\n broadcast_as_band(ref=da, value=v, label=k, dim_name=dim_name)\\n for (k, v) in values.items()\\n ]\\n return xarray.concat(objs=objs, dim=dim_name)\\n\\n\\ndef apply_datacube(cube: xarray.DataArray, context: dict) -> xarray.DataArray:\\n assert not {\\\"t\\\", \\\"temporal\\\", \\\"time\\\"}.intersection(cube.dims), (\\n \\\"No temporal dimension expected in cube\\\"\\n )\\n assert \\\"t\\\" in cube.attrs, \\\"temporal label expected in cube attributes\\\"\\n\\n date = cube.attrs[\\\"t\\\"]\\n day_of_year = date.timetuple().tm_yday\\n days_in_year = 365 + calendar.isleap(date.year)\\n angle = 2 * numpy.pi * (day_of_year - 1) / days_in_year\\n\\n cube = append_scalars_as_bands(\\n da=cube,\\n values={\\n \\\"sin_doy\\\": math.sin(angle),\\n \\\"cos_doy\\\": math.cos(angle),\\n },\\n )\\n\\n return cube\\n\\n\\ndef apply_metadata(metadata: CubeMetadata, context: dict) -> CubeMetadata:\\n return metadata.rename_labels(\\n dimension=\\\"bands\\\",\\n target=metadata.band_names + [\\\"sin_doy\\\", \\\"cos_doy\\\"],\\n )\\n\"}, \"process_id\": \"run_udf\", \"result\": true}}}}, \"process_id\": \"apply_dimension\"}, \"loadcollection1\": {\"arguments\": {\"bands\": [\"B03\"], \"id\": \"SENTINEL2_L2A\", \"spatial_extent\": {\"east\": 3.01, \"north\": 51.01, \"south\": 51, \"west\": 3}, \"temporal_extent\": [\"2025-01-01\", \"2025-06-01\"]}, \"process_id\": \"load_collection\"}, \"saveresult1\": {\"arguments\": {\"data\": {\"from_node\": \"applydimension1\"}, \"format\": \"netCDF\", \"options\": {}}, \"process_id\": \"save_result\", \"result\": true}}}, \"progress\": 100, \"status\": \"finished\", \"title\": \"forum3895 sin cos doy\", \"updated\": \"2025-07-09T18:14:46Z\", \"usage\": {\"cpu\": {\"unit\": \"cpu-seconds\", \"value\": 676.4455727299999}, \"duration\": {\"unit\": \"seconds\", \"value\": 369}, \"input_pixel\": {\"unit\": \"mega-pixel\", \"value\": 1.046875}, \"max_executor_memory\": {\"unit\": \"gb\", \"value\": 1.4082870483398438}, \"memory\": {\"unit\": \"mb-seconds\", \"value\": 10983884.889257811}, \"network_received\": {\"unit\": \"b\", \"value\": 4284330496}}}}</script>\n",
" </openeo-job>\n",
" "
],
"text/plain": [
"<BatchJob job_id='j-25070918075645df99a8ab03234249f5'>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"job.start_and_wait()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "b7373212-53e0-4578-bcd0-5a312758d76f",
"metadata": {},
"outputs": [],
"source": [
"results = job.get_results()\n",
"paths = results.download_files(f\"forum3894-append-doy-udf/{job.job_id}\")"
]
},
{
"cell_type": "markdown",
"id": "44c8cd0b-74af-4a28-934c-1346fe540d1d",
"metadata": {},
"source": [
"## Inspect results"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "9ffebadd-84e2-4a6f-9e36-f8074357de50",
"metadata": {},
"outputs": [],
"source": [
"import xarray"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "a5f71c24-c362-4e97-ab50-47db5485023a",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
"<defs>\n",
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"</symbol>\n",
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"</symbol>\n",
"</defs>\n",
"</svg>\n",
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
" *\n",
" */\n",
"\n",
":root {\n",
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
" --xr-background-color: var(--jp-layout-color0, white);\n",
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
"}\n",
"\n",
"html[theme=dark],\n",
"body[data-theme=dark],\n",
"body.vscode-dark {\n",
" --xr-font-color0: rgba(255, 255, 255, 1);\n",
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
" --xr-border-color: #1F1F1F;\n",
" --xr-disabled-color: #515151;\n",
" --xr-background-color: #111111;\n",
" --xr-background-color-row-even: #111111;\n",
" --xr-background-color-row-odd: #313131;\n",
"}\n",
"\n",
".xr-wrap {\n",
" display: block !important;\n",
" min-width: 300px;\n",
" max-width: 700px;\n",
"}\n",
"\n",
".xr-text-repr-fallback {\n",
" /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
" display: none;\n",
"}\n",
"\n",
".xr-header {\n",
" padding-top: 6px;\n",
" padding-bottom: 6px;\n",
" margin-bottom: 4px;\n",
" border-bottom: solid 1px var(--xr-border-color);\n",
"}\n",
"\n",
".xr-header > div,\n",
".xr-header > ul {\n",
" display: inline;\n",
" margin-top: 0;\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-obj-type,\n",
".xr-array-name {\n",
" margin-left: 2px;\n",
" margin-right: 10px;\n",
"}\n",
"\n",
".xr-obj-type {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-sections {\n",
" padding-left: 0 !important;\n",
" display: grid;\n",
" grid-template-columns: 150px auto auto 1fr 20px 20px;\n",
"}\n",
"\n",
".xr-section-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-section-item input {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-item input + label {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label {\n",
" cursor: pointer;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label:hover {\n",
" color: var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-summary {\n",
" grid-column: 1;\n",
" color: var(--xr-font-color2);\n",
" font-weight: 500;\n",
"}\n",
"\n",
".xr-section-summary > span {\n",
" display: inline-block;\n",
" padding-left: 0.5em;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-summary-in + label:before {\n",
" display: inline-block;\n",
" content: '►';\n",
" font-size: 11px;\n",
" width: 15px;\n",
" text-align: center;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label:before {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label:before {\n",
" content: '▼';\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label > span {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-summary,\n",
".xr-section-inline-details {\n",
" padding-top: 4px;\n",
" padding-bottom: 4px;\n",
"}\n",
"\n",
".xr-section-inline-details {\n",
" grid-column: 2 / -1;\n",
"}\n",
"\n",
".xr-section-details {\n",
" display: none;\n",
" grid-column: 1 / -1;\n",
" margin-bottom: 5px;\n",
"}\n",
"\n",
".xr-section-summary-in:checked ~ .xr-section-details {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-array-wrap {\n",
" grid-column: 1 / -1;\n",
" display: grid;\n",
" grid-template-columns: 20px auto;\n",
"}\n",
"\n",
".xr-array-wrap > label {\n",
" grid-column: 1;\n",
" vertical-align: top;\n",
"}\n",
"\n",
".xr-preview {\n",
" color: var(--xr-font-color3);\n",
"}\n",
"\n",
".xr-array-preview,\n",
".xr-array-data {\n",
" padding: 0 5px !important;\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-array-data,\n",
".xr-array-in:checked ~ .xr-array-preview {\n",
" display: none;\n",
"}\n",
"\n",
".xr-array-in:checked ~ .xr-array-data,\n",
".xr-array-preview {\n",
" display: inline-block;\n",
"}\n",
"\n",
".xr-dim-list {\n",
" display: inline-block !important;\n",
" list-style: none;\n",
" padding: 0 !important;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list li {\n",
" display: inline-block;\n",
" padding: 0;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list:before {\n",
" content: '(';\n",
"}\n",
"\n",
".xr-dim-list:after {\n",
" content: ')';\n",
"}\n",
"\n",
".xr-dim-list li:not(:last-child):after {\n",
" content: ',';\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-has-index {\n",
" font-weight: bold;\n",
"}\n",
"\n",
".xr-var-list,\n",
".xr-var-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-var-item > div,\n",
".xr-var-item label,\n",
".xr-var-item > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-even);\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-var-item > .xr-var-name:hover span {\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-var-list > li:nth-child(odd) > div,\n",
".xr-var-list > li:nth-child(odd) > label,\n",
".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-odd);\n",
"}\n",
"\n",
".xr-var-name {\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-var-dims {\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-var-dtype {\n",
" grid-column: 3;\n",
" text-align: right;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-preview {\n",
" grid-column: 4;\n",
"}\n",
"\n",
".xr-index-preview {\n",
" grid-column: 2 / 5;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-name,\n",
".xr-var-dims,\n",
".xr-var-dtype,\n",
".xr-preview,\n",
".xr-attrs dt {\n",
" white-space: nowrap;\n",
" overflow: hidden;\n",
" text-overflow: ellipsis;\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-var-name:hover,\n",
".xr-var-dims:hover,\n",
".xr-var-dtype:hover,\n",
".xr-attrs dt:hover {\n",
" overflow: visible;\n",
" width: auto;\n",
" z-index: 1;\n",
"}\n",
"\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" display: none;\n",
" background-color: var(--xr-background-color) !important;\n",
" padding-bottom: 5px !important;\n",
"}\n",
"\n",
".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
".xr-var-data-in:checked ~ .xr-var-data,\n",
".xr-index-data-in:checked ~ .xr-index-data {\n",
" display: block;\n",
"}\n",
"\n",
".xr-var-data > table {\n",
" float: right;\n",
"}\n",
"\n",
".xr-var-name span,\n",
".xr-var-data,\n",
".xr-index-name div,\n",
".xr-index-data,\n",
".xr-attrs {\n",
" padding-left: 25px !important;\n",
"}\n",
"\n",
".xr-attrs,\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" grid-column: 1 / -1;\n",
"}\n",
"\n",
"dl.xr-attrs {\n",
" padding: 0;\n",
" margin: 0;\n",
" display: grid;\n",
" grid-template-columns: 125px auto;\n",
"}\n",
"\n",
".xr-attrs dt,\n",
".xr-attrs dd {\n",
" padding: 0;\n",
" margin: 0;\n",
" float: left;\n",
" padding-right: 10px;\n",
" width: auto;\n",
"}\n",
"\n",
".xr-attrs dt {\n",
" font-weight: normal;\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-attrs dt:hover span {\n",
" display: inline-block;\n",
" background: var(--xr-background-color);\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-attrs dd {\n",
" grid-column: 2;\n",
" white-space: pre-wrap;\n",
" word-break: break-all;\n",
"}\n",
"\n",
".xr-icon-database,\n",
".xr-icon-file-text2,\n",
".xr-no-icon {\n",
" display: inline-block;\n",
" vertical-align: middle;\n",
" width: 1em;\n",
" height: 1.5em !important;\n",
" stroke-width: 0;\n",
" stroke: currentColor;\n",
" fill: currentColor;\n",
"}\n",
"</style><pre class='xr-text-repr-fallback'>&lt;xarray.Dataset&gt;\n",
"Dimensions: (t: 67, x: 71, y: 112)\n",
"Coordinates:\n",
" * t (t) datetime64[ns] 2025-01-02 2025-01-04 ... 2025-05-27 2025-05-29\n",
" * x (x) float64 5e+05 5e+05 5e+05 ... 5.007e+05 5.007e+05 5.007e+05\n",
" * y (y) float64 5.651e+06 5.651e+06 5.651e+06 ... 5.65e+06 5.65e+06\n",
"Data variables:\n",
" crs |S1 b&#x27;&#x27;\n",
" B03 (t, y, x) float32 545.0 642.0 686.0 ... 8.872e+03 8.864e+03\n",
" sin_doy (t, y, x) float32 0.01721 0.01721 0.01721 ... 0.5596 0.5596 0.5596\n",
" cos_doy (t, y, x) float32 0.9999 0.9999 0.9999 ... -0.8288 -0.8288 -0.8288\n",
"Attributes:\n",
" Conventions: CF-1.9\n",
" institution: Copernicus Data Space Ecosystem openEO API - 0.66.0a5.dev20...\n",
" description: \n",
" title: </pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-b8323815-ae5e-4780-94f5-2c1b52401eaa' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-b8323815-ae5e-4780-94f5-2c1b52401eaa' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span class='xr-has-index'>t</span>: 67</li><li><span class='xr-has-index'>x</span>: 71</li><li><span class='xr-has-index'>y</span>: 112</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-11655eb1-4fc1-439a-841f-e796a5eb7cb7' class='xr-section-summary-in' type='checkbox' checked><label for='section-11655eb1-4fc1-439a-841f-e796a5eb7cb7' class='xr-section-summary' >Coordinates: <span>(3)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>t</span></div><div class='xr-var-dims'>(t)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>2025-01-02 ... 2025-05-29</div><input id='attrs-e8ab7f27-7d69-421d-ac12-593d99738dd3' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-e8ab7f27-7d69-421d-ac12-593d99738dd3' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-b4582e64-108d-4fc1-af78-14623f62bd79' class='xr-var-data-in' type='checkbox'><label for='data-b4582e64-108d-4fc1-af78-14623f62bd79' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>t</dd><dt><span>long_name :</span></dt><dd>t</dd><dt><span>axis :</span></dt><dd>T</dd></dl></div><div class='xr-var-data'><pre>array([&#x27;2025-01-02T00:00:00.000000000&#x27;, &#x27;2025-01-04T00:00:00.000000000&#x27;,\n",
" &#x27;2025-01-09T00:00:00.000000000&#x27;, &#x27;2025-01-12T00:00:00.000000000&#x27;,\n",
" &#x27;2025-01-14T00:00:00.000000000&#x27;, &#x27;2025-01-17T00:00:00.000000000&#x27;,\n",
" &#x27;2025-01-19T00:00:00.000000000&#x27;, &#x27;2025-01-22T00:00:00.000000000&#x27;,\n",
" &#x27;2025-01-24T00:00:00.000000000&#x27;, &#x27;2025-01-27T00:00:00.000000000&#x27;,\n",
" &#x27;2025-01-29T00:00:00.000000000&#x27;, &#x27;2025-02-01T00:00:00.000000000&#x27;,\n",
" &#x27;2025-02-03T00:00:00.000000000&#x27;, &#x27;2025-02-06T00:00:00.000000000&#x27;,\n",
" &#x27;2025-02-08T00:00:00.000000000&#x27;, &#x27;2025-02-11T00:00:00.000000000&#x27;,\n",
" &#x27;2025-02-13T00:00:00.000000000&#x27;, &#x27;2025-02-16T00:00:00.000000000&#x27;,\n",
" &#x27;2025-02-18T00:00:00.000000000&#x27;, &#x27;2025-02-21T00:00:00.000000000&#x27;,\n",
" &#x27;2025-02-23T00:00:00.000000000&#x27;, &#x27;2025-02-26T00:00:00.000000000&#x27;,\n",
" &#x27;2025-02-28T00:00:00.000000000&#x27;, &#x27;2025-03-03T00:00:00.000000000&#x27;,\n",
" &#x27;2025-03-05T00:00:00.000000000&#x27;, &#x27;2025-03-08T00:00:00.000000000&#x27;,\n",
" &#x27;2025-03-10T00:00:00.000000000&#x27;, &#x27;2025-03-13T00:00:00.000000000&#x27;,\n",
" &#x27;2025-03-15T00:00:00.000000000&#x27;, &#x27;2025-03-17T00:00:00.000000000&#x27;,\n",
" &#x27;2025-03-18T00:00:00.000000000&#x27;, &#x27;2025-03-20T00:00:00.000000000&#x27;,\n",
" &#x27;2025-03-23T00:00:00.000000000&#x27;, &#x27;2025-03-25T00:00:00.000000000&#x27;,\n",
" &#x27;2025-03-27T00:00:00.000000000&#x27;, &#x27;2025-03-28T00:00:00.000000000&#x27;,\n",
" &#x27;2025-03-30T00:00:00.000000000&#x27;, &#x27;2025-04-02T00:00:00.000000000&#x27;,\n",
" &#x27;2025-04-04T00:00:00.000000000&#x27;, &#x27;2025-04-06T00:00:00.000000000&#x27;,\n",
" &#x27;2025-04-07T00:00:00.000000000&#x27;, &#x27;2025-04-09T00:00:00.000000000&#x27;,\n",
" &#x27;2025-04-12T00:00:00.000000000&#x27;, &#x27;2025-04-14T00:00:00.000000000&#x27;,\n",
" &#x27;2025-04-16T00:00:00.000000000&#x27;, &#x27;2025-04-17T00:00:00.000000000&#x27;,\n",
" &#x27;2025-04-19T00:00:00.000000000&#x27;, &#x27;2025-04-22T00:00:00.000000000&#x27;,\n",
" &#x27;2025-04-24T00:00:00.000000000&#x27;, &#x27;2025-04-26T00:00:00.000000000&#x27;,\n",
" &#x27;2025-04-27T00:00:00.000000000&#x27;, &#x27;2025-04-29T00:00:00.000000000&#x27;,\n",
" &#x27;2025-05-02T00:00:00.000000000&#x27;, &#x27;2025-05-04T00:00:00.000000000&#x27;,\n",
" &#x27;2025-05-06T00:00:00.000000000&#x27;, &#x27;2025-05-07T00:00:00.000000000&#x27;,\n",
" &#x27;2025-05-09T00:00:00.000000000&#x27;, &#x27;2025-05-12T00:00:00.000000000&#x27;,\n",
" &#x27;2025-05-14T00:00:00.000000000&#x27;, &#x27;2025-05-16T00:00:00.000000000&#x27;,\n",
" &#x27;2025-05-17T00:00:00.000000000&#x27;, &#x27;2025-05-19T00:00:00.000000000&#x27;,\n",
" &#x27;2025-05-22T00:00:00.000000000&#x27;, &#x27;2025-05-24T00:00:00.000000000&#x27;,\n",
" &#x27;2025-05-26T00:00:00.000000000&#x27;, &#x27;2025-05-27T00:00:00.000000000&#x27;,\n",
" &#x27;2025-05-29T00:00:00.000000000&#x27;], dtype=&#x27;datetime64[ns]&#x27;)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>x</span></div><div class='xr-var-dims'>(x)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>5e+05 5e+05 ... 5.007e+05 5.007e+05</div><input id='attrs-b60a73c4-0ddc-498c-9432-2e14bd1fc18d' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-b60a73c4-0ddc-498c-9432-2e14bd1fc18d' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-79117ad5-6529-48d8-807a-ca7db0d9f4e4' class='xr-var-data-in' type='checkbox'><label for='data-79117ad5-6529-48d8-807a-ca7db0d9f4e4' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>projection_x_coordinate</dd><dt><span>long_name :</span></dt><dd>x coordinate of projection</dd><dt><span>units :</span></dt><dd>m</dd></dl></div><div class='xr-var-data'><pre>array([500005., 500015., 500025., 500035., 500045., 500055., 500065., 500075.,\n",
" 500085., 500095., 500105., 500115., 500125., 500135., 500145., 500155.,\n",
" 500165., 500175., 500185., 500195., 500205., 500215., 500225., 500235.,\n",
" 500245., 500255., 500265., 500275., 500285., 500295., 500305., 500315.,\n",
" 500325., 500335., 500345., 500355., 500365., 500375., 500385., 500395.,\n",
" 500405., 500415., 500425., 500435., 500445., 500455., 500465., 500475.,\n",
" 500485., 500495., 500505., 500515., 500525., 500535., 500545., 500555.,\n",
" 500565., 500575., 500585., 500595., 500605., 500615., 500625., 500635.,\n",
" 500645., 500655., 500665., 500675., 500685., 500695., 500705.])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>y</span></div><div class='xr-var-dims'>(y)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>5.651e+06 5.651e+06 ... 5.65e+06</div><input id='attrs-256fd027-23d0-4a14-b8f6-6d35bc186f26' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-256fd027-23d0-4a14-b8f6-6d35bc186f26' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-13320b63-97cc-4776-90f2-c35cf310663b' class='xr-var-data-in' type='checkbox'><label for='data-13320b63-97cc-4776-90f2-c35cf310663b' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>projection_y_coordinate</dd><dt><span>long_name :</span></dt><dd>y coordinate of projection</dd><dt><span>units :</span></dt><dd>m</dd></dl></div><div class='xr-var-data'><pre>array([5650935., 5650925., 5650915., 5650905., 5650895., 5650885., 5650875.,\n",
" 5650865., 5650855., 5650845., 5650835., 5650825., 5650815., 5650805.,\n",
" 5650795., 5650785., 5650775., 5650765., 5650755., 5650745., 5650735.,\n",
" 5650725., 5650715., 5650705., 5650695., 5650685., 5650675., 5650665.,\n",
" 5650655., 5650645., 5650635., 5650625., 5650615., 5650605., 5650595.,\n",
" 5650585., 5650575., 5650565., 5650555., 5650545., 5650535., 5650525.,\n",
" 5650515., 5650505., 5650495., 5650485., 5650475., 5650465., 5650455.,\n",
" 5650445., 5650435., 5650425., 5650415., 5650405., 5650395., 5650385.,\n",
" 5650375., 5650365., 5650355., 5650345., 5650335., 5650325., 5650315.,\n",
" 5650305., 5650295., 5650285., 5650275., 5650265., 5650255., 5650245.,\n",
" 5650235., 5650225., 5650215., 5650205., 5650195., 5650185., 5650175.,\n",
" 5650165., 5650155., 5650145., 5650135., 5650125., 5650115., 5650105.,\n",
" 5650095., 5650085., 5650075., 5650065., 5650055., 5650045., 5650035.,\n",
" 5650025., 5650015., 5650005., 5649995., 5649985., 5649975., 5649965.,\n",
" 5649955., 5649945., 5649935., 5649925., 5649915., 5649905., 5649895.,\n",
" 5649885., 5649875., 5649865., 5649855., 5649845., 5649835., 5649825.])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-09a980f5-7e34-4ddc-9d80-07aa3d0957f3' class='xr-section-summary-in' type='checkbox' checked><label for='section-09a980f5-7e34-4ddc-9d80-07aa3d0957f3' class='xr-section-summary' >Data variables: <span>(4)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>crs</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'>|S1</div><div class='xr-var-preview xr-preview'>b&#x27;&#x27;</div><input id='attrs-af192b18-f543-4bee-8003-469848a43170' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-af192b18-f543-4bee-8003-469848a43170' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-dfeb722f-07e9-458c-bbcb-29b546e32ae0' class='xr-var-data-in' type='checkbox'><label for='data-dfeb722f-07e9-458c-bbcb-29b546e32ae0' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>crs_wkt :</span></dt><dd>PROJCS[&quot;WGS 84 / UTM zone 31N&quot;, GEOGCS[&quot;WGS 84&quot;, DATUM[&quot;World Geodetic System 1984&quot;, SPHEROID[&quot;WGS 84&quot;, 6378137.0, 298.257223563, AUTHORITY[&quot;EPSG&quot;,&quot;7030&quot;]], AUTHORITY[&quot;EPSG&quot;,&quot;6326&quot;]], PRIMEM[&quot;Greenwich&quot;, 0.0, AUTHORITY[&quot;EPSG&quot;,&quot;8901&quot;]], UNIT[&quot;degree&quot;, 0.017453292519943295], AXIS[&quot;Geodetic longitude&quot;, EAST], AXIS[&quot;Geodetic latitude&quot;, NORTH], AUTHORITY[&quot;EPSG&quot;,&quot;4326&quot;]], PROJECTION[&quot;Transverse_Mercator&quot;, AUTHORITY[&quot;EPSG&quot;,&quot;9807&quot;]], PARAMETER[&quot;central_meridian&quot;, 3.0], PARAMETER[&quot;latitude_of_origin&quot;, 0.0], PARAMETER[&quot;scale_factor&quot;, 0.9996], PARAMETER[&quot;false_easting&quot;, 500000.0], PARAMETER[&quot;false_northing&quot;, 0.0], UNIT[&quot;m&quot;, 1.0], AXIS[&quot;Easting&quot;, EAST], AXIS[&quot;Northing&quot;, NORTH], AUTHORITY[&quot;EPSG&quot;,&quot;32631&quot;]]</dd><dt><span>spatial_ref :</span></dt><dd>PROJCS[&quot;WGS 84 / UTM zone 31N&quot;, GEOGCS[&quot;WGS 84&quot;, DATUM[&quot;World Geodetic System 1984&quot;, SPHEROID[&quot;WGS 84&quot;, 6378137.0, 298.257223563, AUTHORITY[&quot;EPSG&quot;,&quot;7030&quot;]], AUTHORITY[&quot;EPSG&quot;,&quot;6326&quot;]], PRIMEM[&quot;Greenwich&quot;, 0.0, AUTHORITY[&quot;EPSG&quot;,&quot;8901&quot;]], UNIT[&quot;degree&quot;, 0.017453292519943295], AXIS[&quot;Geodetic longitude&quot;, EAST], AXIS[&quot;Geodetic latitude&quot;, NORTH], AUTHORITY[&quot;EPSG&quot;,&quot;4326&quot;]], PROJECTION[&quot;Transverse_Mercator&quot;, AUTHORITY[&quot;EPSG&quot;,&quot;9807&quot;]], PARAMETER[&quot;central_meridian&quot;, 3.0], PARAMETER[&quot;latitude_of_origin&quot;, 0.0], PARAMETER[&quot;scale_factor&quot;, 0.9996], PARAMETER[&quot;false_easting&quot;, 500000.0], PARAMETER[&quot;false_northing&quot;, 0.0], UNIT[&quot;m&quot;, 1.0], AXIS[&quot;Easting&quot;, EAST], AXIS[&quot;Northing&quot;, NORTH], AUTHORITY[&quot;EPSG&quot;,&quot;32631&quot;]]</dd></dl></div><div class='xr-var-data'><pre>array(b&#x27;&#x27;, dtype=&#x27;|S1&#x27;)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>B03</span></div><div class='xr-var-dims'>(t, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>545.0 642.0 ... 8.872e+03 8.864e+03</div><input id='attrs-5cc155df-e07f-4631-8d6e-b1d937bc93ee' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-5cc155df-e07f-4631-8d6e-b1d937bc93ee' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8cdca609-3098-4181-bff8-a6e27473d767' class='xr-var-data-in' type='checkbox'><label for='data-8cdca609-3098-4181-bff8-a6e27473d767' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>B03</dd><dt><span>units :</span></dt><dd></dd><dt><span>grid_mapping :</span></dt><dd>crs</dd></dl></div><div class='xr-var-data'><pre>array([[[ 545., 642., 686., ..., 1340., 1386., 1264.],\n",
" [ 567., 700., 726., ..., 1216., 1146., 1042.],\n",
" [ 602., 655., 686., ..., 1152., 996., 966.],\n",
" ...,\n",
" [ 644., 712., 778., ..., 3022., 2844., 2880.],\n",
" [ 638., 718., 750., ..., 3042., 2940., 2974.],\n",
" [ 682., 693., 692., ..., 3184., 3112., 3042.]],\n",
"\n",
" [[2864., 2844., 2810., ..., 2988., 3040., 3018.],\n",
" [2896., 2864., 2822., ..., 2978., 2978., 2990.],\n",
" [2842., 2910., 2846., ..., 3010., 2980., 2980.],\n",
" ...,\n",
" [2818., 2880., 2824., ..., 2920., 2930., 2928.],\n",
" [2868., 2880., 2834., ..., 2930., 2928., 2922.],\n",
" [2808., 2868., 2798., ..., 2888., 2972., 2942.]],\n",
"\n",
" [[2612., 2566., 2640., ..., 2770., 2774., 2796.],\n",
" [2416., 2430., 2448., ..., 2764., 2770., 2852.],\n",
" [2344., 2446., 2482., ..., 2786., 2798., 2788.],\n",
" ...,\n",
"...\n",
" ...,\n",
" [5832., 5660., 5584., ..., 1144., 1392., 1606.],\n",
" [5748., 5664., 5620., ..., 1340., 1440., 1512.],\n",
" [5624., 5504., 5328., ..., 1560., 1622., 1756.]],\n",
"\n",
" [[4920., 4932., 4988., ..., 4980., 4996., 4972.],\n",
" [4968., 4960., 4952., ..., 5004., 4988., 4968.],\n",
" [4952., 4932., 4936., ..., 4988., 4988., 5000.],\n",
" ...,\n",
" [5068., 5024., 5028., ..., 5176., 5176., 5192.],\n",
" [5036., 4996., 5052., ..., 5160., 5168., 5172.],\n",
" [5048., 5048., 5052., ..., 5136., 5160., 5160.]],\n",
"\n",
" [[9344., 9352., 9368., ..., 9592., 9568., 9576.],\n",
" [9352., 9304., 9352., ..., 9576., 9592., 9568.],\n",
" [9264., 9280., 9392., ..., 9568., 9608., 9584.],\n",
" ...,\n",
" [9472., 9480., 9488., ..., 8736., 8856., 8888.],\n",
" [9432., 9432., 9368., ..., 8736., 8816., 8880.],\n",
" [9400., 9384., 9344., ..., 8776., 8872., 8864.]]], dtype=float32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>sin_doy</span></div><div class='xr-var-dims'>(t, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>0.01721 0.01721 ... 0.5596 0.5596</div><input id='attrs-523e9c84-bb4a-4813-8798-3123a0fc8022' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-523e9c84-bb4a-4813-8798-3123a0fc8022' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-6b99ba5a-9c4d-4020-b47d-5e85c0edfd5a' class='xr-var-data-in' type='checkbox'><label for='data-6b99ba5a-9c4d-4020-b47d-5e85c0edfd5a' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>sin_doy</dd><dt><span>units :</span></dt><dd></dd><dt><span>grid_mapping :</span></dt><dd>crs</dd></dl></div><div class='xr-var-data'><pre>array([[[0.01721336, 0.01721336, 0.01721336, ..., 0.01721336,\n",
" 0.01721336, 0.01721336],\n",
" [0.01721336, 0.01721336, 0.01721336, ..., 0.01721336,\n",
" 0.01721336, 0.01721336],\n",
" [0.01721336, 0.01721336, 0.01721336, ..., 0.01721336,\n",
" 0.01721336, 0.01721336],\n",
" ...,\n",
" [0.01721336, 0.01721336, 0.01721336, ..., 0.01721336,\n",
" 0.01721336, 0.01721336],\n",
" [0.01721336, 0.01721336, 0.01721336, ..., 0.01721336,\n",
" 0.01721336, 0.01721336],\n",
" [0.01721336, 0.01721336, 0.01721336, ..., 0.01721336,\n",
" 0.01721336, 0.01721336]],\n",
"\n",
" [[0.05161967, 0.05161967, 0.05161967, ..., 0.05161967,\n",
" 0.05161967, 0.05161967],\n",
" [0.05161967, 0.05161967, 0.05161967, ..., 0.05161967,\n",
" 0.05161967, 0.05161967],\n",
" [0.05161967, 0.05161967, 0.05161967, ..., 0.05161967,\n",
" 0.05161967, 0.05161967],\n",
"...\n",
" [0.58778524, 0.58778524, 0.58778524, ..., 0.58778524,\n",
" 0.58778524, 0.58778524],\n",
" [0.58778524, 0.58778524, 0.58778524, ..., 0.58778524,\n",
" 0.58778524, 0.58778524],\n",
" [0.58778524, 0.58778524, 0.58778524, ..., 0.58778524,\n",
" 0.58778524, 0.58778524]],\n",
"\n",
" [[0.55958927, 0.55958927, 0.55958927, ..., 0.55958927,\n",
" 0.55958927, 0.55958927],\n",
" [0.55958927, 0.55958927, 0.55958927, ..., 0.55958927,\n",
" 0.55958927, 0.55958927],\n",
" [0.55958927, 0.55958927, 0.55958927, ..., 0.55958927,\n",
" 0.55958927, 0.55958927],\n",
" ...,\n",
" [0.55958927, 0.55958927, 0.55958927, ..., 0.55958927,\n",
" 0.55958927, 0.55958927],\n",
" [0.55958927, 0.55958927, 0.55958927, ..., 0.55958927,\n",
" 0.55958927, 0.55958927],\n",
" [0.55958927, 0.55958927, 0.55958927, ..., 0.55958927,\n",
" 0.55958927, 0.55958927]]], dtype=float32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>cos_doy</span></div><div class='xr-var-dims'>(t, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>0.9999 0.9999 ... -0.8288 -0.8288</div><input id='attrs-1ad195e8-2269-4705-9db2-bb0ce31924a7' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-1ad195e8-2269-4705-9db2-bb0ce31924a7' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-d5bcba11-247f-449c-a432-b4f8d3a2b20b' class='xr-var-data-in' type='checkbox'><label for='data-d5bcba11-247f-449c-a432-b4f8d3a2b20b' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>cos_doy</dd><dt><span>units :</span></dt><dd></dd><dt><span>grid_mapping :</span></dt><dd>crs</dd></dl></div><div class='xr-var-data'><pre>array([[[ 0.9998518 , 0.9998518 , 0.9998518 , ..., 0.9998518 ,\n",
" 0.9998518 , 0.9998518 ],\n",
" [ 0.9998518 , 0.9998518 , 0.9998518 , ..., 0.9998518 ,\n",
" 0.9998518 , 0.9998518 ],\n",
" [ 0.9998518 , 0.9998518 , 0.9998518 , ..., 0.9998518 ,\n",
" 0.9998518 , 0.9998518 ],\n",
" ...,\n",
" [ 0.9998518 , 0.9998518 , 0.9998518 , ..., 0.9998518 ,\n",
" 0.9998518 , 0.9998518 ],\n",
" [ 0.9998518 , 0.9998518 , 0.9998518 , ..., 0.9998518 ,\n",
" 0.9998518 , 0.9998518 ],\n",
" [ 0.9998518 , 0.9998518 , 0.9998518 , ..., 0.9998518 ,\n",
" 0.9998518 , 0.9998518 ]],\n",
"\n",
" [[ 0.9986668 , 0.9986668 , 0.9986668 , ..., 0.9986668 ,\n",
" 0.9986668 , 0.9986668 ],\n",
" [ 0.9986668 , 0.9986668 , 0.9986668 , ..., 0.9986668 ,\n",
" 0.9986668 , 0.9986668 ],\n",
" [ 0.9986668 , 0.9986668 , 0.9986668 , ..., 0.9986668 ,\n",
" 0.9986668 , 0.9986668 ],\n",
"...\n",
" [-0.809017 , -0.809017 , -0.809017 , ..., -0.809017 ,\n",
" -0.809017 , -0.809017 ],\n",
" [-0.809017 , -0.809017 , -0.809017 , ..., -0.809017 ,\n",
" -0.809017 , -0.809017 ],\n",
" [-0.809017 , -0.809017 , -0.809017 , ..., -0.809017 ,\n",
" -0.809017 , -0.809017 ]],\n",
"\n",
" [[-0.8287701 , -0.8287701 , -0.8287701 , ..., -0.8287701 ,\n",
" -0.8287701 , -0.8287701 ],\n",
" [-0.8287701 , -0.8287701 , -0.8287701 , ..., -0.8287701 ,\n",
" -0.8287701 , -0.8287701 ],\n",
" [-0.8287701 , -0.8287701 , -0.8287701 , ..., -0.8287701 ,\n",
" -0.8287701 , -0.8287701 ],\n",
" ...,\n",
" [-0.8287701 , -0.8287701 , -0.8287701 , ..., -0.8287701 ,\n",
" -0.8287701 , -0.8287701 ],\n",
" [-0.8287701 , -0.8287701 , -0.8287701 , ..., -0.8287701 ,\n",
" -0.8287701 , -0.8287701 ],\n",
" [-0.8287701 , -0.8287701 , -0.8287701 , ..., -0.8287701 ,\n",
" -0.8287701 , -0.8287701 ]]], dtype=float32)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-e8d15207-3ac6-4f26-814e-9e7507dbc061' class='xr-section-summary-in' type='checkbox' ><label for='section-e8d15207-3ac6-4f26-814e-9e7507dbc061' class='xr-section-summary' >Indexes: <span>(3)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-index-name'><div>t</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-6d57c624-3715-45bb-9ffc-b6c3f14f8ac0' class='xr-index-data-in' type='checkbox'/><label for='index-6d57c624-3715-45bb-9ffc-b6c3f14f8ac0' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(DatetimeIndex([&#x27;2025-01-02&#x27;, &#x27;2025-01-04&#x27;, &#x27;2025-01-09&#x27;, &#x27;2025-01-12&#x27;,\n",
" &#x27;2025-01-14&#x27;, &#x27;2025-01-17&#x27;, &#x27;2025-01-19&#x27;, &#x27;2025-01-22&#x27;,\n",
" &#x27;2025-01-24&#x27;, &#x27;2025-01-27&#x27;, &#x27;2025-01-29&#x27;, &#x27;2025-02-01&#x27;,\n",
" &#x27;2025-02-03&#x27;, &#x27;2025-02-06&#x27;, &#x27;2025-02-08&#x27;, &#x27;2025-02-11&#x27;,\n",
" &#x27;2025-02-13&#x27;, &#x27;2025-02-16&#x27;, &#x27;2025-02-18&#x27;, &#x27;2025-02-21&#x27;,\n",
" &#x27;2025-02-23&#x27;, &#x27;2025-02-26&#x27;, &#x27;2025-02-28&#x27;, &#x27;2025-03-03&#x27;,\n",
" &#x27;2025-03-05&#x27;, &#x27;2025-03-08&#x27;, &#x27;2025-03-10&#x27;, &#x27;2025-03-13&#x27;,\n",
" &#x27;2025-03-15&#x27;, &#x27;2025-03-17&#x27;, &#x27;2025-03-18&#x27;, &#x27;2025-03-20&#x27;,\n",
" &#x27;2025-03-23&#x27;, &#x27;2025-03-25&#x27;, &#x27;2025-03-27&#x27;, &#x27;2025-03-28&#x27;,\n",
" &#x27;2025-03-30&#x27;, &#x27;2025-04-02&#x27;, &#x27;2025-04-04&#x27;, &#x27;2025-04-06&#x27;,\n",
" &#x27;2025-04-07&#x27;, &#x27;2025-04-09&#x27;, &#x27;2025-04-12&#x27;, &#x27;2025-04-14&#x27;,\n",
" &#x27;2025-04-16&#x27;, &#x27;2025-04-17&#x27;, &#x27;2025-04-19&#x27;, &#x27;2025-04-22&#x27;,\n",
" &#x27;2025-04-24&#x27;, &#x27;2025-04-26&#x27;, &#x27;2025-04-27&#x27;, &#x27;2025-04-29&#x27;,\n",
" &#x27;2025-05-02&#x27;, &#x27;2025-05-04&#x27;, &#x27;2025-05-06&#x27;, &#x27;2025-05-07&#x27;,\n",
" &#x27;2025-05-09&#x27;, &#x27;2025-05-12&#x27;, &#x27;2025-05-14&#x27;, &#x27;2025-05-16&#x27;,\n",
" &#x27;2025-05-17&#x27;, &#x27;2025-05-19&#x27;, &#x27;2025-05-22&#x27;, &#x27;2025-05-24&#x27;,\n",
" &#x27;2025-05-26&#x27;, &#x27;2025-05-27&#x27;, &#x27;2025-05-29&#x27;],\n",
" dtype=&#x27;datetime64[ns]&#x27;, name=&#x27;t&#x27;, freq=None))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>x</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-5524f555-7aa8-4650-a207-9bd79b9a844c' class='xr-index-data-in' type='checkbox'/><label for='index-5524f555-7aa8-4650-a207-9bd79b9a844c' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([500005.0, 500015.0, 500025.0, 500035.0, 500045.0, 500055.0, 500065.0,\n",
" 500075.0, 500085.0, 500095.0, 500105.0, 500115.0, 500125.0, 500135.0,\n",
" 500145.0, 500155.0, 500165.0, 500175.0, 500185.0, 500195.0, 500205.0,\n",
" 500215.0, 500225.0, 500235.0, 500245.0, 500255.0, 500265.0, 500275.0,\n",
" 500285.0, 500295.0, 500305.0, 500315.0, 500325.0, 500335.0, 500345.0,\n",
" 500355.0, 500365.0, 500375.0, 500385.0, 500395.0, 500405.0, 500415.0,\n",
" 500425.0, 500435.0, 500445.0, 500455.0, 500465.0, 500475.0, 500485.0,\n",
" 500495.0, 500505.0, 500515.0, 500525.0, 500535.0, 500545.0, 500555.0,\n",
" 500565.0, 500575.0, 500585.0, 500595.0, 500605.0, 500615.0, 500625.0,\n",
" 500635.0, 500645.0, 500655.0, 500665.0, 500675.0, 500685.0, 500695.0,\n",
" 500705.0],\n",
" dtype=&#x27;float64&#x27;, name=&#x27;x&#x27;))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>y</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-260516f1-78a5-4a23-86f6-492d3f5937ee' class='xr-index-data-in' type='checkbox'/><label for='index-260516f1-78a5-4a23-86f6-492d3f5937ee' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([5650935.0, 5650925.0, 5650915.0, 5650905.0, 5650895.0, 5650885.0,\n",
" 5650875.0, 5650865.0, 5650855.0, 5650845.0,\n",
" ...\n",
" 5649915.0, 5649905.0, 5649895.0, 5649885.0, 5649875.0, 5649865.0,\n",
" 5649855.0, 5649845.0, 5649835.0, 5649825.0],\n",
" dtype=&#x27;float64&#x27;, name=&#x27;y&#x27;, length=112))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-464e5b08-e29d-4da6-8ce5-4d62039ccd07' class='xr-section-summary-in' type='checkbox' checked><label for='section-464e5b08-e29d-4da6-8ce5-4d62039ccd07' class='xr-section-summary' >Attributes: <span>(4)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>Conventions :</span></dt><dd>CF-1.9</dd><dt><span>institution :</span></dt><dd>Copernicus Data Space Ecosystem openEO API - 0.66.0a5.dev20250619+2770</dd><dt><span>description :</span></dt><dd></dd><dt><span>title :</span></dt><dd></dd></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.Dataset>\n",
"Dimensions: (t: 67, x: 71, y: 112)\n",
"Coordinates:\n",
" * t (t) datetime64[ns] 2025-01-02 2025-01-04 ... 2025-05-27 2025-05-29\n",
" * x (x) float64 5e+05 5e+05 5e+05 ... 5.007e+05 5.007e+05 5.007e+05\n",
" * y (y) float64 5.651e+06 5.651e+06 5.651e+06 ... 5.65e+06 5.65e+06\n",
"Data variables:\n",
" crs |S1 b''\n",
" B03 (t, y, x) float32 545.0 642.0 686.0 ... 8.872e+03 8.864e+03\n",
" sin_doy (t, y, x) float32 0.01721 0.01721 0.01721 ... 0.5596 0.5596 0.5596\n",
" cos_doy (t, y, x) float32 0.9999 0.9999 0.9999 ... -0.8288 -0.8288 -0.8288\n",
"Attributes:\n",
" Conventions: CF-1.9\n",
" institution: Copernicus Data Space Ecosystem openEO API - 0.66.0a5.dev20...\n",
" description: \n",
" title: "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"netcdf_path, = [p for p in paths if p.suffix == \".nc\"]\n",
"ds = xarray.load_dataset(netcdf_path)\n",
"ds"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "bece70aa-29ea-45b5-b7a6-ff1064bfbca7",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
"<defs>\n",
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"</symbol>\n",
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"</symbol>\n",
"</defs>\n",
"</svg>\n",
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
" *\n",
" */\n",
"\n",
":root {\n",
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
" --xr-background-color: var(--jp-layout-color0, white);\n",
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
"}\n",
"\n",
"html[theme=dark],\n",
"body[data-theme=dark],\n",
"body.vscode-dark {\n",
" --xr-font-color0: rgba(255, 255, 255, 1);\n",
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
" --xr-border-color: #1F1F1F;\n",
" --xr-disabled-color: #515151;\n",
" --xr-background-color: #111111;\n",
" --xr-background-color-row-even: #111111;\n",
" --xr-background-color-row-odd: #313131;\n",
"}\n",
"\n",
".xr-wrap {\n",
" display: block !important;\n",
" min-width: 300px;\n",
" max-width: 700px;\n",
"}\n",
"\n",
".xr-text-repr-fallback {\n",
" /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
" display: none;\n",
"}\n",
"\n",
".xr-header {\n",
" padding-top: 6px;\n",
" padding-bottom: 6px;\n",
" margin-bottom: 4px;\n",
" border-bottom: solid 1px var(--xr-border-color);\n",
"}\n",
"\n",
".xr-header > div,\n",
".xr-header > ul {\n",
" display: inline;\n",
" margin-top: 0;\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-obj-type,\n",
".xr-array-name {\n",
" margin-left: 2px;\n",
" margin-right: 10px;\n",
"}\n",
"\n",
".xr-obj-type {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-sections {\n",
" padding-left: 0 !important;\n",
" display: grid;\n",
" grid-template-columns: 150px auto auto 1fr 20px 20px;\n",
"}\n",
"\n",
".xr-section-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-section-item input {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-item input + label {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label {\n",
" cursor: pointer;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label:hover {\n",
" color: var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-summary {\n",
" grid-column: 1;\n",
" color: var(--xr-font-color2);\n",
" font-weight: 500;\n",
"}\n",
"\n",
".xr-section-summary > span {\n",
" display: inline-block;\n",
" padding-left: 0.5em;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-summary-in + label:before {\n",
" display: inline-block;\n",
" content: '►';\n",
" font-size: 11px;\n",
" width: 15px;\n",
" text-align: center;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label:before {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label:before {\n",
" content: '▼';\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label > span {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-summary,\n",
".xr-section-inline-details {\n",
" padding-top: 4px;\n",
" padding-bottom: 4px;\n",
"}\n",
"\n",
".xr-section-inline-details {\n",
" grid-column: 2 / -1;\n",
"}\n",
"\n",
".xr-section-details {\n",
" display: none;\n",
" grid-column: 1 / -1;\n",
" margin-bottom: 5px;\n",
"}\n",
"\n",
".xr-section-summary-in:checked ~ .xr-section-details {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-array-wrap {\n",
" grid-column: 1 / -1;\n",
" display: grid;\n",
" grid-template-columns: 20px auto;\n",
"}\n",
"\n",
".xr-array-wrap > label {\n",
" grid-column: 1;\n",
" vertical-align: top;\n",
"}\n",
"\n",
".xr-preview {\n",
" color: var(--xr-font-color3);\n",
"}\n",
"\n",
".xr-array-preview,\n",
".xr-array-data {\n",
" padding: 0 5px !important;\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-array-data,\n",
".xr-array-in:checked ~ .xr-array-preview {\n",
" display: none;\n",
"}\n",
"\n",
".xr-array-in:checked ~ .xr-array-data,\n",
".xr-array-preview {\n",
" display: inline-block;\n",
"}\n",
"\n",
".xr-dim-list {\n",
" display: inline-block !important;\n",
" list-style: none;\n",
" padding: 0 !important;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list li {\n",
" display: inline-block;\n",
" padding: 0;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list:before {\n",
" content: '(';\n",
"}\n",
"\n",
".xr-dim-list:after {\n",
" content: ')';\n",
"}\n",
"\n",
".xr-dim-list li:not(:last-child):after {\n",
" content: ',';\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-has-index {\n",
" font-weight: bold;\n",
"}\n",
"\n",
".xr-var-list,\n",
".xr-var-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-var-item > div,\n",
".xr-var-item label,\n",
".xr-var-item > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-even);\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-var-item > .xr-var-name:hover span {\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-var-list > li:nth-child(odd) > div,\n",
".xr-var-list > li:nth-child(odd) > label,\n",
".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-odd);\n",
"}\n",
"\n",
".xr-var-name {\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-var-dims {\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-var-dtype {\n",
" grid-column: 3;\n",
" text-align: right;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-preview {\n",
" grid-column: 4;\n",
"}\n",
"\n",
".xr-index-preview {\n",
" grid-column: 2 / 5;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-name,\n",
".xr-var-dims,\n",
".xr-var-dtype,\n",
".xr-preview,\n",
".xr-attrs dt {\n",
" white-space: nowrap;\n",
" overflow: hidden;\n",
" text-overflow: ellipsis;\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-var-name:hover,\n",
".xr-var-dims:hover,\n",
".xr-var-dtype:hover,\n",
".xr-attrs dt:hover {\n",
" overflow: visible;\n",
" width: auto;\n",
" z-index: 1;\n",
"}\n",
"\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" display: none;\n",
" background-color: var(--xr-background-color) !important;\n",
" padding-bottom: 5px !important;\n",
"}\n",
"\n",
".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
".xr-var-data-in:checked ~ .xr-var-data,\n",
".xr-index-data-in:checked ~ .xr-index-data {\n",
" display: block;\n",
"}\n",
"\n",
".xr-var-data > table {\n",
" float: right;\n",
"}\n",
"\n",
".xr-var-name span,\n",
".xr-var-data,\n",
".xr-index-name div,\n",
".xr-index-data,\n",
".xr-attrs {\n",
" padding-left: 25px !important;\n",
"}\n",
"\n",
".xr-attrs,\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" grid-column: 1 / -1;\n",
"}\n",
"\n",
"dl.xr-attrs {\n",
" padding: 0;\n",
" margin: 0;\n",
" display: grid;\n",
" grid-template-columns: 125px auto;\n",
"}\n",
"\n",
".xr-attrs dt,\n",
".xr-attrs dd {\n",
" padding: 0;\n",
" margin: 0;\n",
" float: left;\n",
" padding-right: 10px;\n",
" width: auto;\n",
"}\n",
"\n",
".xr-attrs dt {\n",
" font-weight: normal;\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-attrs dt:hover span {\n",
" display: inline-block;\n",
" background: var(--xr-background-color);\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-attrs dd {\n",
" grid-column: 2;\n",
" white-space: pre-wrap;\n",
" word-break: break-all;\n",
"}\n",
"\n",
".xr-icon-database,\n",
".xr-icon-file-text2,\n",
".xr-no-icon {\n",
" display: inline-block;\n",
" vertical-align: middle;\n",
" width: 1em;\n",
" height: 1.5em !important;\n",
" stroke-width: 0;\n",
" stroke: currentColor;\n",
" fill: currentColor;\n",
"}\n",
"</style><pre class='xr-text-repr-fallback'>&lt;xarray.DataArray (bands: 3, t: 67, y: 112, x: 71)&gt;\n",
"array([[[[ 5.4500000e+02, 6.4200000e+02, 6.8600000e+02, ...,\n",
" 1.3400000e+03, 1.3860000e+03, 1.2640000e+03],\n",
" [ 5.6700000e+02, 7.0000000e+02, 7.2600000e+02, ...,\n",
" 1.2160000e+03, 1.1460000e+03, 1.0420000e+03],\n",
" [ 6.0200000e+02, 6.5500000e+02, 6.8600000e+02, ...,\n",
" 1.1520000e+03, 9.9600000e+02, 9.6600000e+02],\n",
" ...,\n",
" [ 6.4400000e+02, 7.1200000e+02, 7.7800000e+02, ...,\n",
" 3.0220000e+03, 2.8440000e+03, 2.8800000e+03],\n",
" [ 6.3800000e+02, 7.1800000e+02, 7.5000000e+02, ...,\n",
" 3.0420000e+03, 2.9400000e+03, 2.9740000e+03],\n",
" [ 6.8200000e+02, 6.9300000e+02, 6.9200000e+02, ...,\n",
" 3.1840000e+03, 3.1120000e+03, 3.0420000e+03]],\n",
"\n",
" [[ 2.8640000e+03, 2.8440000e+03, 2.8100000e+03, ...,\n",
" 2.9880000e+03, 3.0400000e+03, 3.0180000e+03],\n",
" [ 2.8960000e+03, 2.8640000e+03, 2.8220000e+03, ...,\n",
" 2.9780000e+03, 2.9780000e+03, 2.9900000e+03],\n",
" [ 2.8420000e+03, 2.9100000e+03, 2.8460000e+03, ...,\n",
" 3.0100000e+03, 2.9800000e+03, 2.9800000e+03],\n",
"...\n",
" -8.0901700e-01, -8.0901700e-01, -8.0901700e-01],\n",
" [-8.0901700e-01, -8.0901700e-01, -8.0901700e-01, ...,\n",
" -8.0901700e-01, -8.0901700e-01, -8.0901700e-01],\n",
" [-8.0901700e-01, -8.0901700e-01, -8.0901700e-01, ...,\n",
" -8.0901700e-01, -8.0901700e-01, -8.0901700e-01]],\n",
"\n",
" [[-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01],\n",
" [-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01],\n",
" [-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01],\n",
" ...,\n",
" [-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01],\n",
" [-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01],\n",
" [-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01]]]],\n",
" dtype=float32)\n",
"Coordinates:\n",
" * t (t) datetime64[ns] 2025-01-02 2025-01-04 ... 2025-05-27 2025-05-29\n",
" * x (x) float64 5e+05 5e+05 5e+05 ... 5.007e+05 5.007e+05 5.007e+05\n",
" * y (y) float64 5.651e+06 5.651e+06 5.651e+06 ... 5.65e+06 5.65e+06\n",
" * bands (bands) object &#x27;B03&#x27; &#x27;sin_doy&#x27; &#x27;cos_doy&#x27;\n",
"Attributes:\n",
" Conventions: CF-1.9\n",
" institution: Copernicus Data Space Ecosystem openEO API - 0.66.0a5.dev20...\n",
" description: \n",
" title: </pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.DataArray</div><div class='xr-array-name'></div><ul class='xr-dim-list'><li><span class='xr-has-index'>bands</span>: 3</li><li><span class='xr-has-index'>t</span>: 67</li><li><span class='xr-has-index'>y</span>: 112</li><li><span class='xr-has-index'>x</span>: 71</li></ul></div><ul class='xr-sections'><li class='xr-section-item'><div class='xr-array-wrap'><input id='section-a789aa36-6a70-4a7a-9db9-f2fd7d1d5a5b' class='xr-array-in' type='checkbox' checked><label for='section-a789aa36-6a70-4a7a-9db9-f2fd7d1d5a5b' title='Show/hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-array-preview xr-preview'><span>545.0 642.0 686.0 730.0 882.0 ... -0.8288 -0.8288 -0.8288 -0.8288</span></div><div class='xr-array-data'><pre>array([[[[ 5.4500000e+02, 6.4200000e+02, 6.8600000e+02, ...,\n",
" 1.3400000e+03, 1.3860000e+03, 1.2640000e+03],\n",
" [ 5.6700000e+02, 7.0000000e+02, 7.2600000e+02, ...,\n",
" 1.2160000e+03, 1.1460000e+03, 1.0420000e+03],\n",
" [ 6.0200000e+02, 6.5500000e+02, 6.8600000e+02, ...,\n",
" 1.1520000e+03, 9.9600000e+02, 9.6600000e+02],\n",
" ...,\n",
" [ 6.4400000e+02, 7.1200000e+02, 7.7800000e+02, ...,\n",
" 3.0220000e+03, 2.8440000e+03, 2.8800000e+03],\n",
" [ 6.3800000e+02, 7.1800000e+02, 7.5000000e+02, ...,\n",
" 3.0420000e+03, 2.9400000e+03, 2.9740000e+03],\n",
" [ 6.8200000e+02, 6.9300000e+02, 6.9200000e+02, ...,\n",
" 3.1840000e+03, 3.1120000e+03, 3.0420000e+03]],\n",
"\n",
" [[ 2.8640000e+03, 2.8440000e+03, 2.8100000e+03, ...,\n",
" 2.9880000e+03, 3.0400000e+03, 3.0180000e+03],\n",
" [ 2.8960000e+03, 2.8640000e+03, 2.8220000e+03, ...,\n",
" 2.9780000e+03, 2.9780000e+03, 2.9900000e+03],\n",
" [ 2.8420000e+03, 2.9100000e+03, 2.8460000e+03, ...,\n",
" 3.0100000e+03, 2.9800000e+03, 2.9800000e+03],\n",
"...\n",
" -8.0901700e-01, -8.0901700e-01, -8.0901700e-01],\n",
" [-8.0901700e-01, -8.0901700e-01, -8.0901700e-01, ...,\n",
" -8.0901700e-01, -8.0901700e-01, -8.0901700e-01],\n",
" [-8.0901700e-01, -8.0901700e-01, -8.0901700e-01, ...,\n",
" -8.0901700e-01, -8.0901700e-01, -8.0901700e-01]],\n",
"\n",
" [[-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01],\n",
" [-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01],\n",
" [-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01],\n",
" ...,\n",
" [-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01],\n",
" [-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01],\n",
" [-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01]]]],\n",
" dtype=float32)</pre></div></div></li><li class='xr-section-item'><input id='section-76ef89ab-a814-4535-adbd-bacf49e6b12f' class='xr-section-summary-in' type='checkbox' checked><label for='section-76ef89ab-a814-4535-adbd-bacf49e6b12f' class='xr-section-summary' >Coordinates: <span>(4)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>t</span></div><div class='xr-var-dims'>(t)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>2025-01-02 ... 2025-05-29</div><input id='attrs-163d9586-d468-482d-97b4-f3854c0bc021' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-163d9586-d468-482d-97b4-f3854c0bc021' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-2b48e181-31c8-4315-b8d3-45bf6c58d686' class='xr-var-data-in' type='checkbox'><label for='data-2b48e181-31c8-4315-b8d3-45bf6c58d686' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>t</dd><dt><span>long_name :</span></dt><dd>t</dd><dt><span>axis :</span></dt><dd>T</dd></dl></div><div class='xr-var-data'><pre>array([&#x27;2025-01-02T00:00:00.000000000&#x27;, &#x27;2025-01-04T00:00:00.000000000&#x27;,\n",
" &#x27;2025-01-09T00:00:00.000000000&#x27;, &#x27;2025-01-12T00:00:00.000000000&#x27;,\n",
" &#x27;2025-01-14T00:00:00.000000000&#x27;, &#x27;2025-01-17T00:00:00.000000000&#x27;,\n",
" &#x27;2025-01-19T00:00:00.000000000&#x27;, &#x27;2025-01-22T00:00:00.000000000&#x27;,\n",
" &#x27;2025-01-24T00:00:00.000000000&#x27;, &#x27;2025-01-27T00:00:00.000000000&#x27;,\n",
" &#x27;2025-01-29T00:00:00.000000000&#x27;, &#x27;2025-02-01T00:00:00.000000000&#x27;,\n",
" &#x27;2025-02-03T00:00:00.000000000&#x27;, &#x27;2025-02-06T00:00:00.000000000&#x27;,\n",
" &#x27;2025-02-08T00:00:00.000000000&#x27;, &#x27;2025-02-11T00:00:00.000000000&#x27;,\n",
" &#x27;2025-02-13T00:00:00.000000000&#x27;, &#x27;2025-02-16T00:00:00.000000000&#x27;,\n",
" &#x27;2025-02-18T00:00:00.000000000&#x27;, &#x27;2025-02-21T00:00:00.000000000&#x27;,\n",
" &#x27;2025-02-23T00:00:00.000000000&#x27;, &#x27;2025-02-26T00:00:00.000000000&#x27;,\n",
" &#x27;2025-02-28T00:00:00.000000000&#x27;, &#x27;2025-03-03T00:00:00.000000000&#x27;,\n",
" &#x27;2025-03-05T00:00:00.000000000&#x27;, &#x27;2025-03-08T00:00:00.000000000&#x27;,\n",
" &#x27;2025-03-10T00:00:00.000000000&#x27;, &#x27;2025-03-13T00:00:00.000000000&#x27;,\n",
" &#x27;2025-03-15T00:00:00.000000000&#x27;, &#x27;2025-03-17T00:00:00.000000000&#x27;,\n",
" &#x27;2025-03-18T00:00:00.000000000&#x27;, &#x27;2025-03-20T00:00:00.000000000&#x27;,\n",
" &#x27;2025-03-23T00:00:00.000000000&#x27;, &#x27;2025-03-25T00:00:00.000000000&#x27;,\n",
" &#x27;2025-03-27T00:00:00.000000000&#x27;, &#x27;2025-03-28T00:00:00.000000000&#x27;,\n",
" &#x27;2025-03-30T00:00:00.000000000&#x27;, &#x27;2025-04-02T00:00:00.000000000&#x27;,\n",
" &#x27;2025-04-04T00:00:00.000000000&#x27;, &#x27;2025-04-06T00:00:00.000000000&#x27;,\n",
" &#x27;2025-04-07T00:00:00.000000000&#x27;, &#x27;2025-04-09T00:00:00.000000000&#x27;,\n",
" &#x27;2025-04-12T00:00:00.000000000&#x27;, &#x27;2025-04-14T00:00:00.000000000&#x27;,\n",
" &#x27;2025-04-16T00:00:00.000000000&#x27;, &#x27;2025-04-17T00:00:00.000000000&#x27;,\n",
" &#x27;2025-04-19T00:00:00.000000000&#x27;, &#x27;2025-04-22T00:00:00.000000000&#x27;,\n",
" &#x27;2025-04-24T00:00:00.000000000&#x27;, &#x27;2025-04-26T00:00:00.000000000&#x27;,\n",
" &#x27;2025-04-27T00:00:00.000000000&#x27;, &#x27;2025-04-29T00:00:00.000000000&#x27;,\n",
" &#x27;2025-05-02T00:00:00.000000000&#x27;, &#x27;2025-05-04T00:00:00.000000000&#x27;,\n",
" &#x27;2025-05-06T00:00:00.000000000&#x27;, &#x27;2025-05-07T00:00:00.000000000&#x27;,\n",
" &#x27;2025-05-09T00:00:00.000000000&#x27;, &#x27;2025-05-12T00:00:00.000000000&#x27;,\n",
" &#x27;2025-05-14T00:00:00.000000000&#x27;, &#x27;2025-05-16T00:00:00.000000000&#x27;,\n",
" &#x27;2025-05-17T00:00:00.000000000&#x27;, &#x27;2025-05-19T00:00:00.000000000&#x27;,\n",
" &#x27;2025-05-22T00:00:00.000000000&#x27;, &#x27;2025-05-24T00:00:00.000000000&#x27;,\n",
" &#x27;2025-05-26T00:00:00.000000000&#x27;, &#x27;2025-05-27T00:00:00.000000000&#x27;,\n",
" &#x27;2025-05-29T00:00:00.000000000&#x27;], dtype=&#x27;datetime64[ns]&#x27;)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>x</span></div><div class='xr-var-dims'>(x)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>5e+05 5e+05 ... 5.007e+05 5.007e+05</div><input id='attrs-e7701926-fc94-403f-936f-7ad13abae869' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-e7701926-fc94-403f-936f-7ad13abae869' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-871837bc-9a8f-437c-a0c3-8084bb63e981' class='xr-var-data-in' type='checkbox'><label for='data-871837bc-9a8f-437c-a0c3-8084bb63e981' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>projection_x_coordinate</dd><dt><span>long_name :</span></dt><dd>x coordinate of projection</dd><dt><span>units :</span></dt><dd>m</dd></dl></div><div class='xr-var-data'><pre>array([500005., 500015., 500025., 500035., 500045., 500055., 500065., 500075.,\n",
" 500085., 500095., 500105., 500115., 500125., 500135., 500145., 500155.,\n",
" 500165., 500175., 500185., 500195., 500205., 500215., 500225., 500235.,\n",
" 500245., 500255., 500265., 500275., 500285., 500295., 500305., 500315.,\n",
" 500325., 500335., 500345., 500355., 500365., 500375., 500385., 500395.,\n",
" 500405., 500415., 500425., 500435., 500445., 500455., 500465., 500475.,\n",
" 500485., 500495., 500505., 500515., 500525., 500535., 500545., 500555.,\n",
" 500565., 500575., 500585., 500595., 500605., 500615., 500625., 500635.,\n",
" 500645., 500655., 500665., 500675., 500685., 500695., 500705.])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>y</span></div><div class='xr-var-dims'>(y)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>5.651e+06 5.651e+06 ... 5.65e+06</div><input id='attrs-1efbd68c-c4fb-4517-95a4-794890eb9816' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-1efbd68c-c4fb-4517-95a4-794890eb9816' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-3efd3bd7-1122-40b9-97b3-9e6eb729bebc' class='xr-var-data-in' type='checkbox'><label for='data-3efd3bd7-1122-40b9-97b3-9e6eb729bebc' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>projection_y_coordinate</dd><dt><span>long_name :</span></dt><dd>y coordinate of projection</dd><dt><span>units :</span></dt><dd>m</dd></dl></div><div class='xr-var-data'><pre>array([5650935., 5650925., 5650915., 5650905., 5650895., 5650885., 5650875.,\n",
" 5650865., 5650855., 5650845., 5650835., 5650825., 5650815., 5650805.,\n",
" 5650795., 5650785., 5650775., 5650765., 5650755., 5650745., 5650735.,\n",
" 5650725., 5650715., 5650705., 5650695., 5650685., 5650675., 5650665.,\n",
" 5650655., 5650645., 5650635., 5650625., 5650615., 5650605., 5650595.,\n",
" 5650585., 5650575., 5650565., 5650555., 5650545., 5650535., 5650525.,\n",
" 5650515., 5650505., 5650495., 5650485., 5650475., 5650465., 5650455.,\n",
" 5650445., 5650435., 5650425., 5650415., 5650405., 5650395., 5650385.,\n",
" 5650375., 5650365., 5650355., 5650345., 5650335., 5650325., 5650315.,\n",
" 5650305., 5650295., 5650285., 5650275., 5650265., 5650255., 5650245.,\n",
" 5650235., 5650225., 5650215., 5650205., 5650195., 5650185., 5650175.,\n",
" 5650165., 5650155., 5650145., 5650135., 5650125., 5650115., 5650105.,\n",
" 5650095., 5650085., 5650075., 5650065., 5650055., 5650045., 5650035.,\n",
" 5650025., 5650015., 5650005., 5649995., 5649985., 5649975., 5649965.,\n",
" 5649955., 5649945., 5649935., 5649925., 5649915., 5649905., 5649895.,\n",
" 5649885., 5649875., 5649865., 5649855., 5649845., 5649835., 5649825.])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>bands</span></div><div class='xr-var-dims'>(bands)</div><div class='xr-var-dtype'>object</div><div class='xr-var-preview xr-preview'>&#x27;B03&#x27; &#x27;sin_doy&#x27; &#x27;cos_doy&#x27;</div><input id='attrs-d2285bf5-27e9-41ac-91f6-95f858bddacc' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-d2285bf5-27e9-41ac-91f6-95f858bddacc' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-35c0a494-8abc-44a6-b33c-54bfdbb0019b' class='xr-var-data-in' type='checkbox'><label for='data-35c0a494-8abc-44a6-b33c-54bfdbb0019b' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([&#x27;B03&#x27;, &#x27;sin_doy&#x27;, &#x27;cos_doy&#x27;], dtype=object)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-9f55535c-95e3-4142-8058-2d134ec74786' class='xr-section-summary-in' type='checkbox' ><label for='section-9f55535c-95e3-4142-8058-2d134ec74786' class='xr-section-summary' >Indexes: <span>(4)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-index-name'><div>t</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-6baf499a-9092-49ad-97e1-64d241f1b905' class='xr-index-data-in' type='checkbox'/><label for='index-6baf499a-9092-49ad-97e1-64d241f1b905' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(DatetimeIndex([&#x27;2025-01-02&#x27;, &#x27;2025-01-04&#x27;, &#x27;2025-01-09&#x27;, &#x27;2025-01-12&#x27;,\n",
" &#x27;2025-01-14&#x27;, &#x27;2025-01-17&#x27;, &#x27;2025-01-19&#x27;, &#x27;2025-01-22&#x27;,\n",
" &#x27;2025-01-24&#x27;, &#x27;2025-01-27&#x27;, &#x27;2025-01-29&#x27;, &#x27;2025-02-01&#x27;,\n",
" &#x27;2025-02-03&#x27;, &#x27;2025-02-06&#x27;, &#x27;2025-02-08&#x27;, &#x27;2025-02-11&#x27;,\n",
" &#x27;2025-02-13&#x27;, &#x27;2025-02-16&#x27;, &#x27;2025-02-18&#x27;, &#x27;2025-02-21&#x27;,\n",
" &#x27;2025-02-23&#x27;, &#x27;2025-02-26&#x27;, &#x27;2025-02-28&#x27;, &#x27;2025-03-03&#x27;,\n",
" &#x27;2025-03-05&#x27;, &#x27;2025-03-08&#x27;, &#x27;2025-03-10&#x27;, &#x27;2025-03-13&#x27;,\n",
" &#x27;2025-03-15&#x27;, &#x27;2025-03-17&#x27;, &#x27;2025-03-18&#x27;, &#x27;2025-03-20&#x27;,\n",
" &#x27;2025-03-23&#x27;, &#x27;2025-03-25&#x27;, &#x27;2025-03-27&#x27;, &#x27;2025-03-28&#x27;,\n",
" &#x27;2025-03-30&#x27;, &#x27;2025-04-02&#x27;, &#x27;2025-04-04&#x27;, &#x27;2025-04-06&#x27;,\n",
" &#x27;2025-04-07&#x27;, &#x27;2025-04-09&#x27;, &#x27;2025-04-12&#x27;, &#x27;2025-04-14&#x27;,\n",
" &#x27;2025-04-16&#x27;, &#x27;2025-04-17&#x27;, &#x27;2025-04-19&#x27;, &#x27;2025-04-22&#x27;,\n",
" &#x27;2025-04-24&#x27;, &#x27;2025-04-26&#x27;, &#x27;2025-04-27&#x27;, &#x27;2025-04-29&#x27;,\n",
" &#x27;2025-05-02&#x27;, &#x27;2025-05-04&#x27;, &#x27;2025-05-06&#x27;, &#x27;2025-05-07&#x27;,\n",
" &#x27;2025-05-09&#x27;, &#x27;2025-05-12&#x27;, &#x27;2025-05-14&#x27;, &#x27;2025-05-16&#x27;,\n",
" &#x27;2025-05-17&#x27;, &#x27;2025-05-19&#x27;, &#x27;2025-05-22&#x27;, &#x27;2025-05-24&#x27;,\n",
" &#x27;2025-05-26&#x27;, &#x27;2025-05-27&#x27;, &#x27;2025-05-29&#x27;],\n",
" dtype=&#x27;datetime64[ns]&#x27;, name=&#x27;t&#x27;, freq=None))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>x</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-c9c03720-77c2-440e-8767-4ebdcd594005' class='xr-index-data-in' type='checkbox'/><label for='index-c9c03720-77c2-440e-8767-4ebdcd594005' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([500005.0, 500015.0, 500025.0, 500035.0, 500045.0, 500055.0, 500065.0,\n",
" 500075.0, 500085.0, 500095.0, 500105.0, 500115.0, 500125.0, 500135.0,\n",
" 500145.0, 500155.0, 500165.0, 500175.0, 500185.0, 500195.0, 500205.0,\n",
" 500215.0, 500225.0, 500235.0, 500245.0, 500255.0, 500265.0, 500275.0,\n",
" 500285.0, 500295.0, 500305.0, 500315.0, 500325.0, 500335.0, 500345.0,\n",
" 500355.0, 500365.0, 500375.0, 500385.0, 500395.0, 500405.0, 500415.0,\n",
" 500425.0, 500435.0, 500445.0, 500455.0, 500465.0, 500475.0, 500485.0,\n",
" 500495.0, 500505.0, 500515.0, 500525.0, 500535.0, 500545.0, 500555.0,\n",
" 500565.0, 500575.0, 500585.0, 500595.0, 500605.0, 500615.0, 500625.0,\n",
" 500635.0, 500645.0, 500655.0, 500665.0, 500675.0, 500685.0, 500695.0,\n",
" 500705.0],\n",
" dtype=&#x27;float64&#x27;, name=&#x27;x&#x27;))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>y</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-0f759a1f-700c-4d82-b005-b3d8ee2d6ed1' class='xr-index-data-in' type='checkbox'/><label for='index-0f759a1f-700c-4d82-b005-b3d8ee2d6ed1' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([5650935.0, 5650925.0, 5650915.0, 5650905.0, 5650895.0, 5650885.0,\n",
" 5650875.0, 5650865.0, 5650855.0, 5650845.0,\n",
" ...\n",
" 5649915.0, 5649905.0, 5649895.0, 5649885.0, 5649875.0, 5649865.0,\n",
" 5649855.0, 5649845.0, 5649835.0, 5649825.0],\n",
" dtype=&#x27;float64&#x27;, name=&#x27;y&#x27;, length=112))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>bands</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-045d68aa-3696-4664-9784-964960804ee9' class='xr-index-data-in' type='checkbox'/><label for='index-045d68aa-3696-4664-9784-964960804ee9' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([&#x27;B03&#x27;, &#x27;sin_doy&#x27;, &#x27;cos_doy&#x27;], dtype=&#x27;object&#x27;, name=&#x27;bands&#x27;))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-1ba50790-a27b-4e99-b4e6-c54e2938abf2' class='xr-section-summary-in' type='checkbox' checked><label for='section-1ba50790-a27b-4e99-b4e6-c54e2938abf2' class='xr-section-summary' >Attributes: <span>(4)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>Conventions :</span></dt><dd>CF-1.9</dd><dt><span>institution :</span></dt><dd>Copernicus Data Space Ecosystem openEO API - 0.66.0a5.dev20250619+2770</dd><dt><span>description :</span></dt><dd></dd><dt><span>title :</span></dt><dd></dd></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.DataArray (bands: 3, t: 67, y: 112, x: 71)>\n",
"array([[[[ 5.4500000e+02, 6.4200000e+02, 6.8600000e+02, ...,\n",
" 1.3400000e+03, 1.3860000e+03, 1.2640000e+03],\n",
" [ 5.6700000e+02, 7.0000000e+02, 7.2600000e+02, ...,\n",
" 1.2160000e+03, 1.1460000e+03, 1.0420000e+03],\n",
" [ 6.0200000e+02, 6.5500000e+02, 6.8600000e+02, ...,\n",
" 1.1520000e+03, 9.9600000e+02, 9.6600000e+02],\n",
" ...,\n",
" [ 6.4400000e+02, 7.1200000e+02, 7.7800000e+02, ...,\n",
" 3.0220000e+03, 2.8440000e+03, 2.8800000e+03],\n",
" [ 6.3800000e+02, 7.1800000e+02, 7.5000000e+02, ...,\n",
" 3.0420000e+03, 2.9400000e+03, 2.9740000e+03],\n",
" [ 6.8200000e+02, 6.9300000e+02, 6.9200000e+02, ...,\n",
" 3.1840000e+03, 3.1120000e+03, 3.0420000e+03]],\n",
"\n",
" [[ 2.8640000e+03, 2.8440000e+03, 2.8100000e+03, ...,\n",
" 2.9880000e+03, 3.0400000e+03, 3.0180000e+03],\n",
" [ 2.8960000e+03, 2.8640000e+03, 2.8220000e+03, ...,\n",
" 2.9780000e+03, 2.9780000e+03, 2.9900000e+03],\n",
" [ 2.8420000e+03, 2.9100000e+03, 2.8460000e+03, ...,\n",
" 3.0100000e+03, 2.9800000e+03, 2.9800000e+03],\n",
"...\n",
" -8.0901700e-01, -8.0901700e-01, -8.0901700e-01],\n",
" [-8.0901700e-01, -8.0901700e-01, -8.0901700e-01, ...,\n",
" -8.0901700e-01, -8.0901700e-01, -8.0901700e-01],\n",
" [-8.0901700e-01, -8.0901700e-01, -8.0901700e-01, ...,\n",
" -8.0901700e-01, -8.0901700e-01, -8.0901700e-01]],\n",
"\n",
" [[-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01],\n",
" [-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01],\n",
" [-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01],\n",
" ...,\n",
" [-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01],\n",
" [-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01],\n",
" [-8.2877010e-01, -8.2877010e-01, -8.2877010e-01, ...,\n",
" -8.2877010e-01, -8.2877010e-01, -8.2877010e-01]]]],\n",
" dtype=float32)\n",
"Coordinates:\n",
" * t (t) datetime64[ns] 2025-01-02 2025-01-04 ... 2025-05-27 2025-05-29\n",
" * x (x) float64 5e+05 5e+05 5e+05 ... 5.007e+05 5.007e+05 5.007e+05\n",
" * y (y) float64 5.651e+06 5.651e+06 5.651e+06 ... 5.65e+06 5.65e+06\n",
" * bands (bands) object 'B03' 'sin_doy' 'cos_doy'\n",
"Attributes:\n",
" Conventions: CF-1.9\n",
" institution: Copernicus Data Space Ecosystem openEO API - 0.66.0a5.dev20...\n",
" description: \n",
" title: "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"da = ds.drop_vars(k for k, v in ds.data_vars.items() if not v.coords).to_array(\"bands\")\n",
"da"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "b901aa07-e7bf-47ce-8b82-295760d6400d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<xarray.plot.facetgrid.FacetGrid at 0x723c5689c190>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAN5CAYAAAAM25wAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAADVB0lEQVR4nOydd3hT9f7H3xlN0pW0pdABpWwoewkURER7qYgo14UTVNSrgor8XHgVuS5cKA6UiyI4QFGvuEAUQUSkFCigzLIKLaMtbWnTmfn9/ZGek3PSJE2ak2b083qePtDk5JzvSZPzPp8tY4wxEARBEEQj8kAvgCAIggguSBgIgiAIESQMBEEQhAgSBoIgCEIECQNBEAQhgoSBIAiCEEHCQBAEQYggYSAIgiBEkDAQBEEQIkgYiLDg0ksvxezZswNy7Pnz52Pw4MEBOTZB+AMSBoIIcWQyGf+jVCrRuXNnzJkzBwaDQbTd5s2bMXToUKjVavTo0QMrVqwQPf/+++9j4MCB0Gq10Gq1yMzMxE8//dSKZ0IECyQMBBEGLF++HOfOnUNBQQHee+89fPrpp3jhhRf45wsKCjBp0iSMHz8ee/fuxezZs3H33Xfj559/5rfp1KkTXn75ZeTl5WHXrl247LLLcM011+DAgQOBOCUigJAwEGGD2WzGrFmzoNPpkJiYiGeeeQbCHpGffvophg8fjtjYWCQnJ+OWW25BaWkp//zmzZshk8mwceNGDB8+HFFRURg9ejTy8/NFx3n55ZeRlJSE2NhYzJgxAw0NDaLnN2/ejBEjRiA6OhpxcXEYM2YMTp065ddzj4uLQ3JyMtLS0nDVVVfhmmuuwe7du/nnlyxZgq5du2LhwoXIyMjArFmzcP311+PNN9/kt5k8eTKuvPJK9OzZE7169cKLL76ImJgYbN++3a9rJ4IPEgYibPj444+hVCqxY8cOvPXWW3jjjTfw4Ycf8s+bTCY8//zz+Ouvv/Dtt9/i5MmTuOOOO5rs59///jcWLlyIXbt2QalU4q677uKf+/LLLzF//ny89NJL2LVrF1JSUvDee+/xz5vNZkyZMgXjxo3D33//jZycHNx7772QyWQu192vXz/ExMS4/Jk4caJX78ORI0ewadMmjBw5kn8sJycHWVlZou2ys7ORk5PjdB8WiwVffPEFamtrkZmZ6dXxiTCAEUQYMG7cOJaRkcGsViv/2BNPPMEyMjJcvmbnzp0MAKuurmaMMfbbb78xAOzXX3/lt1m7di0DwOrr6xljjGVmZrIHHnhAtJ+RI0eyQYMGMcYYKy8vZwDY5s2bPV77yZMn2dGjR13+nD592u3rATCNRsOio6OZWq1mANhVV13FjEYjv03Pnj3ZSy+9JHodd251dXX8Y3///TeLjo5mCoWC6XQ6tnbtWo/PgwgfyGIgwoZRo0aJ7swzMzNx9OhRWCwWAEBeXh4mT56Mzp07IzY2FuPGjQMAFBYWivYzcOBA/v8pKSkAwLucDh06JLoT547DkZCQgDvuuAPZ2dmYPHky3nrrLZw7d87tutPT09GjRw+XPx07dmz23N98803s3bsXf/31F3788UccOXIEt99+e7Ovc6R3797Yu3cvcnNzcf/992P69Ok4ePCg1/shQhsSBqJNUFtbi+zsbGi1WqxcuRI7d+7EmjVrAABGo1G0bUREBP9/TmisVqvHx1q+fDlycnIwevRorF69Gr169XLrp5fClZScnIwePXqgd+/emDRpEv7zn/9g9erVOHbsGP98SUmJ6DUlJSXQarWIjIzkH1OpVOjRoweGDRuGBQsWYNCgQXjrrbc8PnciPFAGegEEIRW5ubmi37dv346ePXtCoVDg8OHDKC8vx8svv4y0tDQAwK5du7w+RkZGBnJzczFt2jTRcRwZMmQIhgwZgrlz5yIzMxOrVq3CqFGjnO5z3bp1MJlMLo8pvHB7ikKhAADU19cDsFk169atE22zYcOGZuMHVqu1SdorEf6QMBBhQ2FhIebMmYN//etf2L17N9555x0sXLgQANC5c2eoVCq88847uO+++7B//348//zzXh/j4Ycfxh133IHhw4djzJgxWLlyJQ4cOIBu3boBsKWFLl26FFdffTVSU1ORn5+Po0ePioTEkfT09JadsIDKykoUFxfDarXi6NGjeO6559CrVy9kZGQAAO677z68++67ePzxx3HXXXdh06ZN+PLLL7F27Vp+H3PnzsXEiRPRuXNnVFdXY9WqVdi8ebMopZVoIwQ6yEEQUjBu3Dj2wAMPsPvuu49ptVoWHx/PnnrqKVEwetWqVaxLly5MrVazzMxM9v333zMAbM+ePYwxe/D5woUL/Gv27NnDALCCggL+sRdffJElJiaymJgYNn36dPb444/zwefi4mI2ZcoUlpKS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k8nk8piRkZFu16TVajF16lRMnToV119/Pa644gpUVFQgISHBw7PyDO7chTiee0ZGBv78809Mnz6df+zPP/9E3759+d/btWuHKVOm8AJ65513SrpOIjCQMBBBSWFhIebMmYN//etf2L17N9555x0sXLgQANC5c2eoVCq88847uO+++7B//348//zzXh/j4Ycfxh133IHhw4djzJgxWLlyJQ4cOIBu3boBAAoKCrB06VJcffXVSE1NRX5+Po4ePSoSEkfS09NbdsIA3njjDaSkpGDIkCGQy+X46quvkJyc7Jeis4ceeghjxozB66+/jmuuuQY///wz1q9fL9rmsccew4033oghQ4YgKysLP/zwA7755hv8+uuvou3uvvtuXHXVVbBYLCIRIUKYQAc5CMKRcePGsQceeIDdd999TKvVsvj4ePbUU0+JgrKrVq1iXbp0YWq1mmVmZrLvv/+eAWB79uxhjNmDzxcuXOBfs2fPHgaAFRQU8I+9+OKLLDExkcXExLDp06ezxx9/nA8+FxcXsylTprCUlBSmUqlYeno6mzdvHrNYLH4576VLl7LBgwez6OhoptVq2eWXX852797NPw8nwWfufBlj7MKFCwwA++233zw63rJly1inTp1YZGQkmzx5Mnv99ddFwWfGGHvvvfdYt27dWEREBOvVqxf75JNPmuzHarWy9PT0JsFsInSRMSZIDicIgvCSmpoadOzYEcuXL8e1114b6OUQEkCuJIIgWoTVakVZWRkWLlyIuLg4XH311YFeEiERlJVEEGHIxIkTXWZGvfTSS5Ico7CwEElJSVi1ahU++ugjKJV0nxkukCuJIMKQM2fOoL6+3ulzCQkJkmc5EeEFCQNBEAQhglxJBEEQhAgSBoIgCEJEm44WWa1WnD17FrGxsaK+PARBEOEGYwzV1dVITU2FXO7eJmjTwnD27Fm+pQJBEERboKioCJ06dXK7TZsWhtjYWAC2N0qr1QZ4NQRBEP5Dr9cjLS2Nv+65o00LA+c+0mq1JAwEQbQJPHGbU/CZIAiCEEHCQBAEQYggYSAIgiBEkDAQBEEQIoJCGLZs2YLJkycjNTUVMpkM3377bbOv2bx5M4YOHQq1Wo0ePXpgxYoVfl8nQRBEWyAohKG2thaDBg3C4sWLPdq+oKAAkyZNwvjx47F3717Mnj0bd999N37++Wc/r5QgCCL8CYp01YkTJ7odku7IkiVL0LVrV37UY0ZGBrZu3Yo333wT2dnZLl9nMBhgMBj43/V6fcsXTRBBSI3BjFPltThVXodT5XUo0TdA32BCTYMZ1Q1m1BjMqG4wwWRhUCnlUCnkiFDKEK1SIjFWjfYxaiTGqJCii0TndlHo0T4G8dGqQJ8W0coEhTB4S05ODrKyskSPZWdnY/bs2W5ft2DBAvznP//x48oIovVoMFnwV1Eldp26gD2FlTh0To8zlc5bbftCik6Dvila9E3VYmh6PEZ2TUCUKiQvHYSHhORft7i4GElJSaLHkpKSoNfrUV9fj8jISKevmzt3LubMmcP/zlUCEkQowBjD/jN6bDxcgi1HzmPfmSqYLE275idEq9A5IQrp7aKQGhcJrSYCsRql4CcCSrkMZiuDyWyFwWJFdYMZZdUGlNUYcL7agDOV9ThVXoczlfU4V9WAc1UN2Hi4FAAQoZBhaOd4XNwjERf3TMSAjjooFUHhlSYkIiSFoaWo1Wqo1epAL4MgPIYxhtyCCny39yw2HS5Bid4ger59rBojuiRgaHo8+qdq0SdZC11UhGTH1zeYcPhcNQ6d02PfmSrkHC/Hmcp65BZUILegAgs3HEGsRonL+3TA1YNTMbZne0SQSIQ8ISkMycnJKCkpET1WUlICrVbr0logiFDibGU9/pd3Gl/lnUZhRR3/eJRKgYt7JOLyjA7I7JaItIRIv3YG1moiMKJrAkZ0tU18Y4zhVHkdth4rw9ajZdh2vAz6BjO+3XsW3+49i7ioCEzsn4Ibh3fC4LQ46locooSkMGRmZmLdunWixzZs2IDMzMwArYggfMdotmL9gWJ8tasIW4+VgZutGK1SYNLAFFw5IAWjurWDJkIRsDXKZDJ0SYxGl8Ro3DYqHRYrw96iC/jhr3P48e9zKKsx4PMdhfh8RyH6pWpx+6h0XD04lWISIUZQjPasqanBsWPHAABDhgzBG2+8gfHjxyMhIQGdO3fG3LlzcebMGXzyyScAbOmq/fv3x8yZM3HXXXdh06ZNeOihh7B27Vq3WUmO6PV66HQ6VFVVURM9ImBUN5jwxY4iLNtagGJ9A//4qG4JuGFYGiYOSA6JC6vFyrD9RDn+l3caP+47B6PZCgCI1Shx84jOuGtMVyTrNAFeZdvFm+tdUAjD5s2bMX78+CaPT58+HStWrMAdd9yBkydPYvPmzaLXPPLIIzh48CA6deqEZ555BnfccYdXxyVhIAJJWY0BH/5RgJXbT6HaYAZgixncPKIzrh/aCZ3bRQV4hS3nQq0RX+UVYWVuIU6V21xhEQoZbhiehpnje6BjHLl8W5uQE4ZAQcJABIKqOhPe//04Pt52EvUmCwCge/to/OuS7rhmSCrUysC5iqTGamX4Lb8U/91yAjsKKgDYBGLqRTaBSNGRQLQWJAweQsJAtCYGswWf5pzCO5uOoareBAAY2EmHBy/ricv7dIBcHt6B2h0FFXhzwxHknCgHAKgUctw9titmju+BaHXwu8pCHRIGDyFhIFoDxhjW7SvGK+sP8xlGvZJi8Hh2H1ye0aHNZe7kHC/Hm78e4S2IJK0aT07sgymDO7a596I1IWHwEBIGwt8UlNXimW/3Y+uxMgC2GML//aMXrh/WqU0XhTHGsOFgCV5Ye4gXy6Gd4zD/6n4Y2CkusIsLU0gYPISEgfAXDSYL3tt8HEs2H4fRYoVKKcf947rj3ku6kdtEQIPJgmVbC/DupmOoN1kgkwFTh6dh7sQMSQv1CBIGjyFhIPxB3qkLePSrv1BQVgsAGNerPZ67ph/S20UHeGXBy7mqerz802F8t/csAJtl9eKU/pjQLznAKwsfSBg8hISBkBKj2Yq3Nh7B+5uPw8psvvN5V/XDlQOSyXfuITsKKvDkN3/jxHmbqF49KBXzr+6HBOrw6jMkDB5CwkBIxZGSajyyei8OnLW1cv/nkI6Yf3U/6CLJHeItDSYL3vz1CD7YcgJWBiTGqPD6DYNwae8OgV5aSEPC4CEkDISvWK0My7YW4LVf8mE0WxEfFYEX/zkAVw5ICfTSQp6/iirx2Nd/4UhJDQDgrjFd8cTE3mFV59GakDB4CAkD4Qul1Q2Y/cVebDtuy8sf37s9XrluIDpoqe2DVDSYLHj5p8NYse0kACAjRYt3bh6MHh1iA7uwEISEwUNIGIiWsv1EOR78fA/OVxsQpVLg6Ul9cfOINIol+IlNh0vw6Fd/o6LWiMgIBV78Z39cO7RToJcVUnhzvWu7idQE0QKsVob3Nx/HLR9sx/lqA3olxeD7WRfjlpGdSRT8yGV9krD+4bG4uEci6k0WzPnyLzy1Zh/fqI+QFhIGgvCQWoMZ932Wh1fWH4aVAdcO6YhvZ45Bjw4xgV5am6CDVoOP7xqBhy/vCZkMWJVbiJs/2I7S6obmX0x4BQkDQXjAmcp6XL8kB78cLIFKKceCawdg4Y2DQqIddjihkMvwyD964aM7LkKsRom8Uxdw9Tt/4q+iykAvLawgYSCIZthdeAHXvPsnDp3TIzFGjS/uHYWbR5DrKJCM790B380cg+7to1Gsb8AN/83Bmj2nA72ssIGEgSDc8N3eM7hp6XaU1RjQJzkW380ag6Gd4wO9LAJAt/Yx+HbmGGRldIDRbMUjq//C2xuPog3n00gGCQNBOMFqZXhjwxE8/MVeGM1WZGV0wNf3j6YBM0FGrCYCS28fjvvGdQcAvLHhCOZ+sw9mCwWlfYEcpAThgNFsxaNf/YXv/7L17fnXJd3w+BV9oAjzeQmhilwuw5MT+6BjnAbPfn8AX+wsQrG+AYtvGUoNC1sIWQwEIaDWYMaMj3fi+7/OQimX4dXrBmLulRkkCiHA7ZldsOS2YdBEyLE5/zymLs2hjKUWQsJAEI2U1xhwywfb8cfRMkSpFFh2x0W48aK0QC+L8IIJ/ZKx6p5RSIhWYf8ZPa59bxuOldYEelkhBwkDQcCWjnrDf3Pw1+kqxEdFYNU9ozCuV/tAL4toAUM7x+N/949GersonL5Qjxv/m4P9Z6oCvayQgoSBaPMUltfhxiU5OHG+Fh3jIvHVfaMxOC0u0MsifKBrYjT+d/9oDOioQ0WtETd/sB15py4EelkhAwkD0aYpKKvFjf/NwZnKenRrH42v78+kSuYwITFGjZX3jMTw9HhUN5hx+7JcbDteFuhlhQQkDESb5VhpDab+NwfF+gb07BCDL+4dhRQdpaOGE1pNBD6ZMQIX90hEndGCO5fvxG+HSwO9rKCHhIFokxwpqcZNS7ejtNqA3kmx+PzeUegQS+2yw5EolRIfTh+OrIwkGMxW/OvTPPyWT+LgDhIGos1x6JweNzdWM2ekaPH5vaOQGKMO9LIIP6KJUOD924biin7JMFps4vD7kfOBXlbQQsJAtCkOntXjlg+2o7zWiP4dtfj8npE0T7iNEKGQ451bhiC7XxKMZivu+WQXtpA4OIWEgWgzHCutwe3LcnGhzoRBnXRYOWMU4qJIFNoSEQo53rl5KP7R1y4Ofx6jgLQjJAxEm6CwvA63fmi3FD6ZMRK6qIhAL4sIACqlHItvGYqsjA4wmK24++Nd2HWyItDLCipIGIiw51xVPW5dth0letvEtU/uGgldJIlCW0allGPxrUMxrld71Jts2Ur7TlMRHAcJAxHWlNUYcOuHuSiqqEeXdlH4bAbFFAgbaqUCS24bhhFdE1BtMOOO5Ttw4jy1zwBIGIgwptZgxl0rdvIVzSvvGYUOWkpJJexEqhRYNn04BnTUobzWiNuX7UBxFTXeI2EgwhKTxYoHVu7G36erkBCtwqczRtAsBcIpsZoILL/zInRLjMaZynrcviwXlXXGQC8roASVMCxevBhdunSBRqPByJEjsWPHDrfbL1q0CL1790ZkZCTS0tLwyCOPoKGB1L6twxjDE//7G78fOY/ICNsdYbf21OaCcE1ijBqfzBiBJK0aR0trcOeKnagzmgO9rIARNMKwevVqzJkzB88++yx2796NQYMGITs7G6WlzisUV61ahSeffBLPPvssDh06hGXLlmH16tV46qmnWnnlRLDx2s/5+Gb3GSjkMrx361AMoVGchAd0io/CpzNsiQl7Civx4Ko9sFjb5pjQoBGGN954A/fccw/uvPNO9O3bF0uWLEFUVBQ++ugjp9tv27YNY8aMwS233IIuXbpgwoQJuPnmm91aGQaDAXq9XvRDhBcfbzuJ9zYfBwAsuHYAxvfpEOAVEaFEr6RYfHTHRVAr5dh4uBTP/XCgTc6QDgphMBqNyMvLQ1ZWFv+YXC5HVlYWcnJynL5m9OjRyMvL44XgxIkTWLduHa688kqXx1mwYAF0Oh3/k5ZGQ1jCiXX7zmH+DwcAAI9O6IUbh9Pfl/CeYenxWDR1MGQy4OOcU/joz5OBXlKrExTCUFZWBovFgqSkJNHjSUlJKC4udvqaW265Bc899xwuvvhiREREoHv37rj00kvdupLmzp2Lqqoq/qeoqEjS8yACx66TFZi9ei8YA24flY6Z43sEeklECDNxQArmTuwDAHhh7UGs3+/8OhSuBIUwtITNmzfjpZdewnvvvYfdu3fjm2++wdq1a/H888+7fI1arYZWqxX9EKFPYXkd7v00D0azFRP6JmH+1f0gk9GMZsI37hnbDbeN6gzGgNmr92BvUWWgl9RqBIUwJCYmQqFQoKSkRPR4SUkJkpOTnb7mmWeewe233467774bAwYMwD//+U+89NJLWLBgAaxWa2ssmwgCqupNuHPFDlTUGjGwkw5v3TQECjmJAuE7MpkM8yf3w/je7dFgsuLuj3eiqKIu0MtqFYJCGFQqFYYNG4aNGzfyj1mtVmzcuBGZmZlOX1NXVwe5XLx8hUIBAG0yWNQWMVmsmLlyN46fr0WKToMPpw1HpEoR6GURYYRSIce7twxF3xQtymqMuGP5DlTVmQK9LL8TFMIAAHPmzMEHH3yAjz/+GIcOHcL999+P2tpa3HnnnQCAadOmYe7cufz2kydPxvvvv48vvvgCBQUF2LBhA5555hlMnjyZFwgifGGM4dnvD2DrsTJEqRRYNv0iqmom/EK0WomP7rgIKToNjp+vxazPd8NsCW+vhDLQC+CYOnUqzp8/j3nz5qG4uBiDBw/G+vXr+YB0YWGhyEJ4+umnIZPJ8PTTT+PMmTNo3749Jk+ejBdffDFQp0C0Ip9uP4VVuYWQyYC3bxqCvqkULyL8R7JOg2XTL8J172/DH0fLsOCnw3jmqr6BXpbfkLE27HfR6/XQ6XSoqqqiQHQIsf1EOW77MBdmK8NTV/bBvZd0D/SSiDbCT/vO4f6VuwEAr14/MKRSor253gWNK4kgPOFMZT1mrtwNs5XhmsGpuGdst0AviWhDTByQgtlZPQEAT6/Zj7xT4TnHgYSBCBkaTBb869NdKK81ol+qFi9fO5DSUolW56HLemJif/vs6LOV9YFekuSQMBAhAWMMc7/Zh/1n9EiIVuG/tw+jDCQiIMjlMiy8cRAyGjOV7l+5GwazJdDLkhQSBiIkWLa1AGv22BrjLb5lKDrFRwV6SUQbJkqlxNLbh0EXGYG/iiox//sDgV6SpJAwEEHP1qNleGndIQDA05MykNm9XYBXRBBAWkIU3r55CGQy4PMdRfh8R2GglyQZJAxEUHP6Qh1mfb4bVgZcN7QT7hjdJdBLIgiecb3a49EJvQEAz353IGzaZpAwEEGLwWzBzJW7UVlnwoCOOrz4z/4UbCaCjvvHdceEvkkwWqy4/7M8lNcYAr0knyFhIIKWF9cewl+nq6CLjMB7tw6FJoKCzUTwwQWju7WPxrmqBjz8xd6QH/BDwkAEJd/tPYNPck4BABZNHYy0BAo2E8FLrCYCS24bhsgIBbYeK8Nbvx4J9JJ8goSBCDqOllRj7jf7AACzxvegKWxESNArKRYLrh0AAHh70zH8fuR8gFfUckgYiKCizmjG/St3o85owZge7fDIP3oFekkE4TFThnTErSM7AwDmrN6LEn1DgFfUMkgYiKBi/vcHcKy0BklaNc1WIEKSZ67qi4wULcprjXjo8z0h2YmVhIEIGr7bewZf7joNuQx466YhSIxRB3pJBOE1mggFFt8yBNEqBXILKvD2xqOBXpLXkDAQQcHJslr8e81+AMCDl/XEqG5UxEaELt3ax+ClxnjDO78dw9ajZQFekXeQMBABx2C24MHP96DGYMaIrgl48LIegV4SQfjMNYM74uYRafzM6PPVoVPfQMJABJxX1+dj35kqxEVF4K2bBkOpoI8lER48O7kf+iTHoqzGiMe+/itkxg7TN5AIKBsPlWDZ1gIAwOvXD0KKLjLAKyII6dBEKPDWTUOgVsqxOf88Vmw7GegleQQJAxEwiqsa8OhXfwEA7hzTBVl9kwK8IoKQnt7JsXh6UgYAYMG6wzh0Th/gFTUPCQMRECxWhtmr9+BCnQn9UrV4cmKfQC+JIPzGbaPSkZXRAUaLFQ99vgf1xuCe30DCQASEpVtOYPuJCkSpFHjn5iFQK6kPEhG+yGQyvHLdQLSPVeNoaQ1eXHcw0EtyCwkD0ersP1OFNzbkAwDmT+6Hbu1jArwigvA/7WLUeOPGQQCAz7YXYsPBkgCvyDUkDESrUm+04KEv9sBkYbiiXzJuGN4p0EsiiFZjbM/2uPeSbgCAx7/+K2hbZpAwEK3Ki+sO4sT5WnSIVWPBtQNovgLR5nh0Qm/0S9XiQp0Jc77cC2sQtugmYSBajY2HSvDZdtv4w4U3DkJ8tCrAKyKI1kellOPtm4cgMkKBP4+VB2UKKwkD0SpU1BrxxP/+BgDcNaYrxvZsH+AVEUTg6N4+Bk9dacvEe2X9YRwrrQ7wisSQMBB+hzGGp7/dh7IaI3p2iMHjV/QO9JIIIuDcNiodl/RqD4PZikdW/wVTEHVhJWEg/M73f53Fun3FUMpleOPGwTSikyBgS2F97fqB0EVGYN+ZKryz6Vigl8RDwkD4lRJ9A+Z9dwAAMOuyHhjQSRfgFRFE8JCk1eCFKf0BAIt/O4a9RZWBXVAjJAyE32CM4Yn//Y2qehMGdNRh5njqmkoQjkwelIqrB6XCYmWYs3ovGkyBr4omYSD8xuqdRdicfx4qpRwLbxyECOqaShBOef6a/kjSqnGirBav/5wf6OWQMBD+oaiiDs//aCv7f3RCL/RKig3wiggieNFFReDlawcCAJb9WYCdJysCup6gEobFixejS5cu0Gg0GDlyJHbs2OF2+8rKSsycORMpKSlQq9Xo1asX1q1b10qrJVxhtTI8+tVfqDVacFGXeMy4uFugl0QQQc/4Ph1ww7BOYAx47Ku/UGc0B2wtQSMMq1evxpw5c/Dss89i9+7dGDRoELKzs1FaWup0e6PRiH/84x84efIkvv76a+Tn5+ODDz5Ax44dW3nlhCMrtp1EboGtQd7rNwyCQk7VzQThCU9f1RcpOg1Oltfh1fWBcykFjTC88cYbuOeee3DnnXeib9++WLJkCaKiovDRRx853f6jjz5CRUUFvv32W4wZMwZdunTBuHHjMGjQoFZeOSHkZFktXv35MABg7pUZSG8XHeAVEUTooIuMwMvX2VxKK7adxPYT5QFZR1AIg9FoRF5eHrKysvjH5HI5srKykJOT4/Q133//PTIzMzFz5kwkJSWhf//+eOmll2CxuI7oGwwG6PV60Q8hHVYrw+P/+xsNJitGd2+H20Z2DvSSCCLkGNerPW4ekQYAeOzrwLiUgkIYysrKYLFYkJQknuCVlJSE4uJip685ceIEvv76a1gsFqxbtw7PPPMMFi5ciBdeeMHlcRYsWACdTsf/pKWlSXoebZ2Vuaewo6ACkREKvHLdQGqQRxAt5KkrM5Cq06Cooj4gLqWgEIaWYLVa0aFDByxduhTDhg3D1KlT8e9//xtLlixx+Zq5c+eiqqqK/ykqKmrFFYc3RRV1WPCTzYX0xBW9kZYQFeAVEUToEquJwIJGl9LHOSdbPUspKIQhMTERCoUCJSXiwRUlJSVITk52+pqUlBT06tULCoW9vUJGRgaKi4thNBqdvkatVkOr1Yp+CN9hjGHuN/tQ15iFNC2zS6CXRBAhz7he7XHjcFuW0uNf/92qhW9BIQwqlQrDhg3Dxo0b+cesVis2btyIzMxMp68ZM2YMjh07BqvV3njqyJEjSElJgUpF7Zxbk9U7i7D1WBnUSjlevX4Q5JSFRBCS8O9JfdEhVo2Cslq8tfFoqx03KIQBAObMmYMPPvgAH3/8MQ4dOoT7778ftbW1uPPOOwEA06ZNw9y5c/nt77//flRUVODhhx/GkSNHsHbtWrz00kuYOXNmoE6hTVKqb8CL6w4BAP5vQi90TaQsJIKQCl1kBJ5v7KW0dMsJ7D9T1SrHVbbKUTxg6tSpOH/+PObNm4fi4mIMHjwY69ev5wPShYWFkMvtOpaWloaff/4ZjzzyCAYOHIiOHTvi4YcfxhNPPBGoU2iTPPv9AVQ3mDGwkw53jeka6OUQRNiR3S8ZkwakYO2+c3jif3/ju5ljoPRzexkZYyz45sq1Enq9HjqdDlVVVRRvaAE/HyjGvz7Ng0Iuww+zLkbfVHoPCcIfnK82IOuN31FVb8ITV/TB/Zd293of3lzvgsaVRIQW+gYT5n23HwBw7yXdSBQIwo+0j1Xjmav6AgDe/PUITpyv8evxSBiIFvHq+sMo0RvQpV0UHr68Z6CXQxBhz3VDO2Jsz0QYzVY8+b998Kezh4SB8JqdJyvw2fZCAMBL1w6giWwE0QrIZDK89M8B6NIuCndd3MWvBaRBE3wmQgOD2YIn//c3AGDq8DSM7p4Y4BURRNshLSEKG//vUr83piSLgfCKxb8dx/HztUiMUeOpKzMCvRyCaHO0RrdiEgbCY46UVOP9zbaB5c9d0w+6qIgAr4ggCH9AwkB4hNXK8NQ3+2CyMGRlJGFif+etSgiCCH1IGAiP+HJXEXaduoBolQLPXdOPOqcSRBhDwkA0S1mNge+c+sg/eiE1LjLAKyIIwp+QMBDN8uLaQ6iqN6FvihZ3jO4S6OUQBOFnSBgIt/x5rAxr9pyBTGarWfB3jxaCIAIPfcsJlzSYLHj6W1vbi9tHpWNwWlxgF0QQRKtAwkC4ZMnvx1FQVosOsWo8mt070MshCKKVIGEgnHKqvBbvbT4OAHjmqr7QaqhmgSDaCiQMRBMYY5j//QEYzVZc3CMRVw1MCfSSCIJoRUgYiCb8crAEv+WfR4RChv9QzQJBtDlIGAgRdUYznvvhIADbnIXu7WMCvCKCIFobEgZCxDubjuFMZT06xkVi1nias0AQbRESBoLnWGkNPvzjBADg2cl9EamiOQsE0RYhYSAA2ALO877bD5OF4fI+HfCPvkmBXhJBEAGChIEAAPzw9zlsO14OtVKO+VdTwJkg2jIkDASqG0x44UdbwHnm+B5IS4gK8IoIgggkJAwE3t54FKXVBnRpF4V7L+kW6OUQBBFgSBjaOMdKq7H8z5MAgPlX94MmggLOBNHWIWFow9gqnA/CbLVNZbu0d4dAL4kgiCCAhKENs35/MbYeK4NKKce8q/oGejkEQQQJJAxtlHqjBS+sPQQAuG9cd3RuRwFngiBskDC0Ud7fbK9wvn9c90AvhyCIIIKEoQ1SWF6HJVtsFc7PXJVBFc4EQYggYWiDvLjuIN9SO7tfcqCXQxBEkEHC0Mb481gZfj5QAoVchnmT+1KFM0EQTSBhaEOYLVb854cDAGwznHslxQZ4RQRBBCNBJQyLFy9Gly5doNFoMHLkSOzYscOj133xxReQyWSYMmWKfxcY4qzMLcSRkhrER0XgkaxegV4OQRBBStAIw+rVqzFnzhw8++yz2L17NwYNGoTs7GyUlpa6fd3Jkyfx6KOPYuzYsa200tDkQq0Rb2w4AgD4vwm9oYuiGc4EQTgnaIThjTfewD333IM777wTffv2xZIlSxAVFYWPPvrI5WssFgtuvfVW/Oc//0G3btTjxx0LN+Sjqt6EPsmxuHlE50AvhyCIICYohMFoNCIvLw9ZWVn8Y3K5HFlZWcjJyXH5uueeew4dOnTAjBkzPDqOwWCAXq8X/bQFDp3TY1VuIQBbPySFnALOBEG4JiiEoaysDBaLBUlJ4uEwSUlJKC4udvqarVu3YtmyZfjggw88Ps6CBQug0+n4n7S0NJ/WHQowxvCfHw7AyoBJA1Iwqlu7QC+JIIggJyiEwVuqq6tx++2344MPPkBiYqLHr5s7dy6qqqr4n6KiIj+uMjj4aX8xtp+ogFopx9wr+wR6OQRBhADKQC8AABITE6FQKFBSUiJ6vKSkBMnJTQuwjh8/jpMnT2Ly5Mn8Y1arFQCgVCqRn5+P7t2btnlQq9VQq9USrz54aTBZ8GJjP6R/jeuOTvHUD4kgiOYJCotBpVJh2LBh2LhxI/+Y1WrFxo0bkZmZ2WT7Pn36YN++fdi7dy//c/XVV2P8+PHYu3dvm3ARecKyrQU4U1mPFJ2G+iERBOExQWExAMCcOXMwffp0DB8+HCNGjMCiRYtQW1uLO++8EwAwbdo0dOzYEQsWLIBGo0H//v1Fr4+LiwOAJo+3VUr1DVj82zEAwJMT+1A/JIIgPCZohGHq1Kk4f/485s2bh+LiYgwePBjr16/nA9KFhYWQy4PCwAkJXvs5H3VGC4Z0jsPVg1IDvRyCIEIIGWOMBXoRgUKv10On06GqqgparTbQy5GMfaercPXirWAM+OaB0RjaOT7QSyIIIsB4c72jW/AwgzGG5388CMaAKYNTSRQIgvAaEoYw46f9xdhxsgKaCDkev4LSUwmC8B4ShjCiwWTBgp8a01Mv6Y7UuMgAr4ggiFCEhCGM+HjbSRRV1CNZq8G/xlHvKIIgWgYJQ5hQXmPAu5ts6amPZvdGlCpoEs4IgggxSBjChEW/HkW1wYz+HbW4dkjHQC+HIIgQhoQhDDhWWo1VO2zdU/99ZV/IqXsqQRA+QMIQBry07jAsVoZ/9E1CZnfqnkoQhG+QMIQ4W4+WYdPhUijlMsydSOmpBEH4DglDCGOxMryw9iAA4PbMdHRrHxPgFREEEQ6QMIQwX+cV4XBxNbQaJR6+vGegl0MQRJhAwhCi1BjMeP2XIwCAhy7vibgoVYBXRBBEuEDCEKL89/fjOF9tQHq7KEzL7BLo5RAEEUaQMIQgxVUN+OCPEwCAJ6/oA5WS/owEQUgHXVFCkIW/5KPBZMXw9Hhc0b/p6FOCIAhfIGEIMQ6e1ePr3acBAP+elAGZjIrZCIKQFhKGEGPBT4fAGHDVwBQMoVkLBEH4ARKGEOL3I+fxx9EyRChkeDybitkIgvAPJAwhgsXK8NJa26yF6Zld0LldVIBXRBBEuELCECL8L+808kuqoYuMwKzLegR6OQRBhDEkDCFAndGMhRvyAQAPXtaDitkIgvArJAwhwEdbC1CiN6BTfCRuz0wP9HIIgghzSBiCnLIaA5b8bitmeyy7N9RKRYBXRBBEuEPCEOS8s/EoagxmDOiow+SBqYFeDkEQbQAShiCmoKwWK3Ntk9nmXtmHJrMRBNEqkDAEMa/9fBhmK8P43u0xuntioJdDEEQbgYQhSNldeAHr9hVDLgOenJgR6OUQBNGGIGEIQhhjWLDOVsx2/bBO6J0cG+AVEQTRliBhCEI2HCzBzpMXoImQ45F/9Ar0cgiCaGOQMAQZZosVL68/DACYcXFXpOgiA7wigiDaGiQMQcbqXUU4cb4WCdEq/Gtc90AvhyCINggJQxBRazDjzQ1HAdhaX2g1EQFeEUEQbZGgEobFixejS5cu0Gg0GDlyJHbs2OFy2w8++ABjx45FfHw84uPjkZWV5Xb7UGDZ1gKU1RjQOSEKt46k1hcEQQSGoBGG1atXY86cOXj22Wexe/duDBo0CNnZ2SgtLXW6/ebNm3HzzTfjt99+Q05ODtLS0jBhwgScOXOmlVcuDeU1Bvz39+MAgEeze9McZ4IgAoaMMcYCvQgAGDlyJC666CK8++67AACr1Yq0tDQ8+OCDePLJJ5t9vcViQXx8PN59911MmzbNo2Pq9XrodDpUVVVBq9X6tH5fmf/9AazYdhIDOurw3cwxVOVMEISkeHO9C4rbUqPRiLy8PGRlZfGPyeVyZGVlIScnx6N91NXVwWQyISEhweU2BoMBer1e9BMMnCqvxcrcUwCAJydS6wuCIAJLUAhDWVkZLBYLkpKSRI8nJSWhuLjYo3088cQTSE1NFYmLIwsWLIBOp+N/0tLSfFq3VLz+yxGYLAxjeyZiTA9qfUEQRGAJCmHwlZdffhlffPEF1qxZA41G43K7uXPnoqqqiv8pKipqxVU6Z9/pKvzw11kANmuBIAgi0CgDvQAASExMhEKhQElJiejxkpISJCcnu33t66+/jpdffhm//vorBg4c6HZbtVoNtVrt83ql5JXGYrYpg1PRL1UX4NUQBEEEicWgUqkwbNgwbNy4kX/MarVi48aNyMzMdPm6V199Fc8//zzWr1+P4cOHt8ZSJeWPo+ex9VgZIhQy/N+E3oFeDkEQBIAgsRgAYM6cOZg+fTqGDx+OESNGYNGiRaitrcWdd94JAJg2bRo6duyIBQsWAABeeeUVzJs3D6tWrUKXLl34WERMTAxiYmICdh6eYrUy3lq4bVQ60hKiArwigiAIG0EjDFOnTsX58+cxb948FBcXY/DgwVi/fj0fkC4sLIRcbjdw3n//fRiNRlx//fWi/Tz77LOYP39+ay69Razddw77z+gRo1Zi1vgegV4OQRAET9DUMQSCQNUxGM1W/OPN33GqvA5z/tELD13es9WOTRBE2yTk6hjaGqt3FuJUeR0SY9SYcXHXQC+HIAhCBAlDK1NrMOOtjbZGeQ9f3gPR6qDx5hEEQQAgYWh1bI3yjEhvF4WbRnQO9HIIgiCaQMLQioga5U3ojQgFvf0EQQQfdGVqRd797RhqjRb076jFpAEpgV4OQRCEU0gYWomiijp8tr2xUd4VGdQojyCIoIWEoZV4c4OtUd7FPRJxcU9qlEcQRPBCwtAKHC7WY81e2wChx6+g1hcEQQQ3JAytwGvr88EYMGlACgZ2igv0cgiCINxCwuBndp6swMbDpVDIZfi/Cb0CvRyCIIhmIWHwI4wxvPKTrVHejcPT0K198Df3IwiCIGHwI5sOl2LXqQtQK+V4mPohEQQRIpAw+AmLleHV9fkAgDvGdEGyzvVkOYIgiGCChMFPfP/XGeSXVEOrUeKBcdRWmyCI0IGEwQ8YzVYs/OUIAOC+S7tDFxUR4BURBEF4DgmDH1iVewqnL9SjQ6wad46mttoEQYQWJAwSU2Mw451NxwAAD13eE5EqRYBXRBAE4R0kDBLz0dYClNca0aVdFKZelBbo5RAEQXgNCYOEVNQasXTLCQDA/1FbbYIgQhS6cknI4t+OocZgRr9UaqtNEEToQsIgEWcq6/Fpjq2t9hNX9KG22gRBhCwkDBKxaMMRGC1WZHZrh7HUVpsgiBCGhEECjpZU43+7TwOwtdWWychaIAgidCFhkIDXfs6HlQHZ/ZIwpHN8oJdDEAThEyQMPrK78AJ+OVgCuQx4LJuG8BAEEfqQMPgAYwyvrre11b5uaCf06BAb4BURBEH4DgmDD/xxtAzbT1RApZRj9j9oCA9BEOEBCUMLsVoZXv3ZZi3cPiodHeMiA7wigiAIaSBhaCHr9p/D/jN6xKiVeODS7oFeDkEQhGSQMLQAk8XeVvuesd3QLkYd4BURBEFIBwlDC/g67zQKymrRLlqFGWOprTZBEOEFCYOXNJgsWPSrzVqYOb4HYtTKAK+IIAhCWoJKGBYvXowuXbpAo9Fg5MiR2LFjh9vtv/rqK/Tp0wcajQYDBgzAunXr/L7GY6U1sFiBjnGRuHVUZ78fjyAIorUJGmFYvXo15syZg2effRa7d+/GoEGDkJ2djdLSUqfbb9u2DTfffDNmzJiBPXv2YMqUKZgyZQr279/v13X276jDlscvxQfThkOtpCE8BEGEHzLGGAv0IgBg5MiRuOiii/Duu+8CAKxWK9LS0vDggw/iySefbLL91KlTUVtbix9//JF/bNSoURg8eDCWLFni0TH1ej10Oh2qqqqg1WqlORGCIIggxJvrXVBYDEajEXl5ecjKyuIfk8vlyMrKQk5OjtPX5OTkiLYHgOzsbJfbA4DBYIBerxf9EARBEGKCQhjKyspgsViQlJQkejwpKQnFxcVOX1NcXOzV9gCwYMEC6HQ6/ictjUZvEgRBOBIUwtBazJ07F1VVVfxPUVFRoJdEEAQRdARFrmViYiIUCgVKSkpEj5eUlCA5Odnpa5KTk73aHgDUajXUaipGIwiCcEdQWAwqlQrDhg3Dxo0b+cesVis2btyIzMxMp6/JzMwUbQ8AGzZscLk9QRAE4RlBYTEAwJw5czB9+nQMHz4cI0aMwKJFi1BbW4s777wTADBt2jR07NgRCxYsAAA8/PDDGDduHBYuXIhJkybhiy++wK5du7B06dJAngZBEETIEzTCMHXqVJw/fx7z5s1DcXExBg8ejPXr1/MB5sLCQsjldgNn9OjRWLVqFZ5++mk89dRT6NmzJ7799lv0798/UKdAEAQRFgRNHUMgqKqqQlxcHIqKiqiOgSCIsEav1yMtLQ2VlZXQ6XRutw0aiyEQVFdXAwClrRIE0Waorq5uVhjatMVgtVpx9uxZxMbGQiaTNbs9p7htycII13MO1/NyR1s657Z0roBn58sYQ3V1NVJTU0VueWe0aYtBLpejU6dOXr9Oq9W2iQ+bkHA953A9L3e0pXNuS+cKNH++zVkKHEGRrkoQBEEEDyQMBEEQhAgSBi9Qq9V49tln21T1dLiec7ielzva0jm3pXMFpD/fNh18JgiCIJpCFgNBEAQhgoSBIAiCEEHCQBAEQYggYSAIgiBEkDAQBEEQIkgYCIIgCBEkDARBEIQIEgaCIAhCBAkDQRAEIYKEgSAIghBBwkAQBEGIIGEgCIIgRJAwEARBECJIGAiCIAgRJAwEQRCECBIGgiAIQgQJA0EQBCGChIEIKi699FLMnj07IMeeP38+Bg8eHJBjBxtdunTBokWLAr0MIkCQMBAEQRAiSBgIgiAIESQMRNBhNpsxa9Ys6HQ6JCYm4plnngFjjH/+008/xfDhwxEbG4vk5GTccsstKC0t5Z/fvHkzZDIZNm7ciOHDhyMqKgqjR49Gfn6+6Dgvv/wykpKSEBsbixkzZqChoUH0/ObNmzFixAhER0cjLi4OY8aMwalTp/x23qdPn8bNN9+MhIQEREdHY/jw4cjNzeWff//999G9e3eoVCr07t0bn376Kf8cYwzz589H586doVarkZqaioceesij45aWlmLy5MmIjIxE165dsXLlyibbFBYW4pprrkFMTAy0Wi1uvPFGlJSUAABOnjwJuVyOXbt2iV6zaNEipKenw2q1tuTtIAIJI4ggYty4cSwmJoY9/PDD7PDhw+yzzz5jUVFRbOnSpfw2y5YtY+vWrWPHjx9nOTk5LDMzk02cOJF//rfffmMA2MiRI9nmzZvZgQMH2NixY9no0aP5bVavXs3UajX78MMP2eHDh9m///1vFhsbywYNGsQYY8xkMjGdTsceffRRduzYMXbw4EG2YsUKdurUKZdr79u3L4uOjnb5c8UVV7h8bXV1NevWrRsbO3Ys++OPP9jRo0fZ6tWr2bZt2xhjjH3zzTcsIiKCLV68mOXn57OFCxcyhULBNm3axBhj7KuvvmJarZatW7eOnTp1iuXm5oreM3dMnDiRDRo0iOXk5LBdu3ax0aNHs8jISPbmm28yxhizWCxs8ODB7OKLL2a7du1i27dvZ8OGDWPjxo3j9/GPf/yDPfDAA6L9Dhw4kM2bN8+jNRDBBQkDEVSMGzeOZWRkMKvVyj/2xBNPsIyMDJev2blzJwPAqqurGWN2Yfj111/5bdauXcsAsPr6esYYY5mZmU0uZCNHjuSFoby8nAFgmzdv9njtJ0+eZEePHnX5c/r0aZev/e9//8tiY2NZeXm50+dHjx7N7rnnHtFjN9xwA7vyyisZY4wtXLiQ9erVixmNRo/Xyxhj+fn5DADbsWMH/9ihQ4cYAF4YfvnlF6ZQKFhhYSG/zYEDB0SvW716NYuPj2cNDQ2MMcby8vKYTCZjBQUFXq2HCA7IlUQEHaNGjYJMJuN/z8zMxNGjR2GxWAAAeXl5mDx5Mjp37ozY2FiMGzcOgM3dIWTgwIH8/1NSUgCAdzkdOnQII0eOFG2fmZnJ/z8hIQF33HEHsrOzMXnyZLz11ls4d+6c23Wnp6ejR48eLn86duzo8rV79+7FkCFDkJCQ4PT5Q4cOYcyYMaLHxowZg0OHDgEAbrjhBtTX16Nbt2645557sGbNGpjNZrfr5farVCoxbNgw/rE+ffogLi5OtE1aWhrS0tL4x/r27Yu4uDj++FOmTIFCocCaNWsAACtWrMD48ePRpUuXZtdABB8kDERIUVtbi+zsbGi1WqxcuRI7d+7kL0ZGo1G0bUREBP9/Tmi88XcvX74cOTk5GD16NFavXo1evXph+/btLrfv168fYmJiXP5MnDjR5WsjIyM9Xpcz0tLSkJ+fj/feew+RkZF44IEHcMkll8BkMvm0X09RqVSYNm0ali9fDqPRiFWrVuGuu+5qlWMT0qMM9AIIwhFhwBUAtm/fjp49e0KhUODw4cMoLy/Hyy+/zN/BOgY9PSEjIwO5ubmYNm2a6DiODBkyBEOGDMHcuXORmZmJVatWYdSoUU73uW7dOrcXYncX/4EDB+LDDz9ERUWFU6shIyMDf/75J6ZPn84/9ueff6Jv376i/U+ePBmTJ0/GzJkz0adPH+zbtw9Dhw51edw+ffrAbDYjLy8PF110EQAgPz8flZWVomMXFRWhqKiIf88PHjyIyspK0fHvvvtu9O/fH++99x7MZjOuvfZal8clgpxA+7IIQggXfH7kkUfY4cOH2apVq1h0dDRbsmQJY4yx0tJSplKp2GOPPcaOHz/OvvvuO9arVy8GgO3Zs4cxZo8xXLhwgd/vnj17GADe5/3FF18wjUbDPvroI5afn8/mzZsnCj6fOHGCPfnkk2zbtm3s5MmT7Oeff2bt2rVj7733nl/O22AwsF69erGxY8eyrVu3suPHj7Ovv/6aDz6vWbOGRUREsPfee48dOXKEDz7/9ttvjDHGli9fzj788EO2b98+dvz4cfb000+zyMhIVlZW1uyxr7jiCjZkyBC2fft2tmvXLnbxxReLgs9Wq5UNHjyYjR07luXl5bHc3NwmwWeO0aNHM5VKxe677z6p3hoiAJAwEEHFuHHj2AMPPMDuu+8+ptVqWXx8PHvqqadEwehVq1axLl26MLVazTIzM9n333/vtTAwxtiLL77IEhMTWUxMDJs+fTp7/PHHeWEoLi5mU6ZMYSkpKUylUrH09HQ2b948ZrFY/HbuJ0+eZNdddx3TarUsKiqKDR8+nOXm5vLPv/fee6xbt24sIiKC9erVi33yySf8c2vWrGEjR45kWq2WRUdHs1GjRomC7+44d+4cmzRpElOr1axz587sk08+Yenp6bwwMMbYqVOn2NVXX82io6NZbGwsu+GGG1hxcXGTfS1btqxJMJsIPWSMCRLECYIgfOD555/HV199hb///jvQSyF8gILPBEH4TE1NDfbv3493330XDz74YKCXQ/gICQNBhDF//PGH20wpqZg1axaGDRuGSy+9lLKRwgByJRFEGFNfX48zZ864fL5Hjx6tuBoiVCBhIAiCIESQK4kgCIIQ0aYL3KxWK86ePYvY2FhRCwaCIIhwgzGG6upqpKamQi53bxO0aWE4e/asqP8LQRBEuFNUVIROnTq53aZNC0NsbCwA2xul1WoDvBqCIAj/odfrkZaWxl/33NGmhYFzH2m1WhIGgiDaBJ64zSn4TBAEQYggYSAIgiBEkDAQBEEQIkgYCIIgCBFBIQxbtmzB5MmTkZqaCplMhm+//bbZ12zevBlDhw6FWq1Gjx49sGLFCr+vkyAIoi0QFMJQW1uLQYMGYfHixR5tX1BQgEmTJmH8+PHYu3cvZs+ejbvvvhs///yzn1dKEAQR/gRFuurEiRPdzsN1ZMmSJejatSsWLlwIwDZ6cOvWrXjzzTeRnZ3t8nUGgwEGg4H/Xa/Xe71Wg9mCf6/ZD02EHBqlApoIBTQRcugiI9A+VoP2sWp0iFWjfawamgiF1/snCIL4//buPC7qOv8D+GsOYDhHuUFRElA8UAsPQE0zinTd1c1bS/HAozRT23bpt6WWu25tt9oqmuJ9pVmZWd6mIiDet4iIKKco9z2f3x/o5JQoKDPfOV7Px2Me+3CcYd6vhXj5vT5fqRlFMdRXXFwcwsPDdZ6LiIjAm2+++dD3zZs3D3PmzHmizy6tqMY3Sel1eq2TSnm3KH4rjOau9mjp7oAAD0c421s/0SxERPpgksWQmZkJDw8Pnec8PDxQUFCA0tLSWm+6Hh0djRkzZmj/fO9KwPqwVsrx95cCUVZZjbKqapRXalBaUY07pRXILixHdkE5corKUVGlQUFZFQrKqnAlp/iBX8vVwRr+7g4IcHdEUBM12vuoEeDuCIWc6zYRkXRMshgel42NDWxsbJ7oa9hZKzG5l99DXyOEQEFpFXKKypBdUI7swnLkFJYjs6AMKTlFuJxdhPTbpcgtqkBuUR6OpOTd9/UVaNdEjS6+zghp4YLg5o1ha81dUkRkOCZZDJ6ensjKytJ5LisrC05OTrVuLRiSTCaD2s4Kajsr+Ls/eF2SkooqXMkuxqWsQlzMKsSp9Ds4nZ6P4opqJFzNQ8LVPCzYmwwrhQwdfRohpIULQlu4INi3MWyULAoi0h+TLIbQ0FBs375d57mdO3ciNDRUoonqz85aiaCmagQ1VWufq9YIpOQU4VjabcSn5CEu5RYy8suQmHobiam3MX9PMuytFejm74rege54LtAdHk4qCVMQkTkyimIoKipCcnKy9s9Xr17FiRMn4OzsjGbNmiE6Oho3btzAypUrAQCTJk3CggUL8Pbbb2Ps2LHYs2cPNm7ciB9//FGqCA1CIZchwMMRAR6OGNq5GYQQSMsrwZGUWziSkoeDybnIKSzHL+ey8Mu5mi2mTs0b40/tvdCnnRc81SwJInpyRnFrz3379uG55577w/OjR49GbGwsIiMjkZqain379um8Z/r06Th37hyaNm2Kd999F5GRkfX63IKCAqjVauTn55vE6qoajcDZmwXYcyEbey5m4+T1Ozp/39m3MfoGeaFvkBe3JIhIR31+3xlFMUjF1Irh9zLyS/HT6Uz8eDoDSddua5+Xy4DuAW4YFNwUL7bx4PUURMRiqCtTL4b7ZeSXYvvpTPx46iaOpd3RPu+oUqJ/R2+8EtIcgZ6mnZGIHh+LoY7MqRjul5pbjC3H0rH52A3cuFOqfb6LrzNeCW2Ol9p6wlppFKuhEJGBsBjqyFyL4R6NRiAu5RbWxF/Dz2ezUK2p+Va7OthgeBcfjOjaDF5q6U/vJSL9YzHUkbkXw/0y88uwLiEN6xLSkF1Ys16UUi7DXzp4Y3yPFmjjbd75iSwdi6GOLKkY7qms1mDnuSzEHk5FwtXfrrjuEeCKyT39EOrnUqd7whKRaWEx1JElFsP9TqXfQcyBFGw/nYG7e5nQqXljvPF8AHoEuLIgiMwIi6GOLL0Y7rmeV4Klv6ZgXeJ1VFRpAAAdfRph2vMB6NXKjQVBZAZYDHXEYtCVXVCGxQdSsCb+GsoqawqifVM1poe3ZEEQmTgWQx2xGB4sp7AcS39Nwcq4ayitrAZQc6rr2y+1QidfZ4mnI6LHwWKoIxbDw90qKkfMgRTEHk5F+d1dTM8HuuPvfQLR0uPBq8YSkXFiMdQRi6FuMvJL8eXuy9h4NB3VGgGFXIbhXXwwPbwlXBye7P4WRGQYLIY6YjHUz5WcIny04wJ+PluzsqujSok3egdgdJgvr6QmMnIshjpiMTyeuCu38MG2cziXUQAAaO5ih3f6tsaLbTx4gJrISLEY6ojF8PiqNQKbk9Lx318uIufuldQ9Alwx+y9t4efmIPF0RPR7LIY6YjE8uaLyKvxvXzKW/HoVFVUaWClkmPBsC0x5LoD3qiYyIvX5fccdw/REHGyU+FtEIH5581n0auWGymqBhXuvIPzT/dhzIevRX4CIjA6LgRqEr6s9lkd2xuJXg9GkkS1u3CnF2NijmLL2mHZXExGZBhYDNRiZTIaItp7YOeNZTHi2BeQyYNupDIR/uh8bj16HBe+1JDIpLAZqcHbWSrzTtzW+n9Idbb2dkF9aibe/OYWRS+ORmlss9XhE9AgsBtKbdk3U+O71bojuEwiVlRyHr9xCxOcHsPTXFO1Ng4jI+LAYSK+UCjkm9vTDL2/2RHd/V5RXaTD3x/MYujgOV7n1QGSUWAxkEM1c7LBqXBfMezkI9tYKHL12G32+OIDlh65Cw60HIqPCYiCDkclkGN6lGX6e/izC/FxQVqnBnB/OYdSyBGTml0k9HhHdxWIgg2va2A6rx3XFB/3bQmUlx8HkXER8fgDbT2dIPRoRgcVAEpHLZXg11Bc/vtEDQU3UyC+txGtrjmHmxpMoLKuUejwii8ZiIEn5uTlg8+QwTHnOH3IZsPlYOvp88SsSU/OkHo3IYrEYSHLWSjneimiFDRND0bSxLdJvl2Lo4jh8sesyT2slkgCLgYxGZ19n/DStB15+ugk0Avhs1yWMXHqEB6aJDIzFQEbFUWWFT4d2xCeDO8DOWoEjKXno88UBLshHZEAsBjJKA4ObYtvU7mjj5YTbJZUYG3sUH+24gKpqjdSjEZk9FgMZrRZuDvj29TCMDm0OAPhq3xWMXBqP7ALuWiLSJxYDGTUbpQJz+rfD/OFPw95agfireej75UHEXbkl9WhEZovFQCbhzx288f3U7mjl4YjconKMXHoEC/cmczkNIj1gMZDJ8HNzwNbXu2HgM02hEcB/f76IqJVHkV/KC+KIGhKLgUyKrbUCHw9ujw8HBsFaKcfuC9nov+AgLmYWSj0akdlgMZDJkclkGNq5GbZMDkOTRrZIvVWCv351CNtO3ZR6NCKzwGIgk9WuiRo/TO2Obv4uKKmoxpS1xzFv+3leLU30hFgMZNKc7a2xYkwXTOrpBwBYfCAF41YkooAL8RE9NhYDmTylQo5/9AnEl8OfhspKjn0XczBg4SGk5BRJPRqRSWIxkNn4SwdvfDMpDF5qFVJyitF/4SHsv5Qj9VhEJofFQGalXRM1vp/SHcHNG6OwrApjlidg6a8pEILHHYjqisVAZsfN0QZro7piaCcfaAQw98fzeGvTKZRXVUs9GpFJYDGQWbJRKvCfgUGY/ec2UMhl2HwsHa8uTUBecYXUoxEZPRYDmS2ZTIbIbk9hWWRnONookZCahwELDyE5mxfDET0Mi4HMXs+WbtjyWhh8nG2RlleCv351GAcv50o9FpHRYjGQRQjwcMTW17qh092D0pHLE7Ax8brUYxEZJRYDWQwXBxusieqK/h29UaUReHvzKXzyy0WesUT0O0ZVDAsXLoSvry9UKhW6du2KhISEWl8bGxsLmUym81CpVAaclkyRjVKBz4d2xNTe/gCA+XuSMX3DCZ6xRHQfoymGDRs2YMaMGZg1axaOHTuGDh06ICIiAtnZ2bW+x8nJCRkZGdrHtWvXDDgxmSqZTIaZL7bCRwPbQymXYeuJm3j16wTcKeEZS0SAERXDp59+iqioKIwZMwZt2rTBokWLYGdnh2XLltX6HplMBk9PT+3Dw8PjoZ9RXl6OgoICnQdZriGdfbB8zN0zlq7m4eX/Hcb1vBKpxyKSnFEUQ0VFBZKSkhAeHq59Ti6XIzw8HHFxcbW+r6ioCM2bN4ePjw/69++Ps2fPPvRz5s2bB7VarX34+Pg0WAYyTT0C3LBpcii87y6j8devDuPMjXypxyKSlFEUQ25uLqqrq//wL34PDw9kZmY+8D2tWrXCsmXL8N1332H16tXQaDQICwtDenp6rZ8THR2N/Px87eP6dZ6VQkCgpxO+fb0bWns5IbeoHEMXx3GNJbJoRlEMjyM0NBSjRo1Cx44d0bNnT2zZsgVubm5YvHhxre+xsbGBk5OTzoMIADycVNg4MQTd/F1QXFGNcbGJ+Cap9n9kEJkzoygGV1dXKBQKZGVl6TyflZUFT0/POn0NKysrPP3000hOTtbHiGQBHFVWWB7ZBQPuns761qaTWLg3maezksUximKwtrZGcHAwdu/erX1Oo9Fg9+7dCA0NrdPXqK6uxunTp+Hl5aWvMckCWCvl+HRIR0zs2QIA8N+fL+L9beeg4V3hyIIYRTEAwIwZM7BkyRKsWLEC58+fx+TJk1FcXIwxY8YAAEaNGoXo6Gjt699//3388ssvSElJwbFjx/DKK6/g2rVrGD9+vFQRyEzI5TJE92mNf/6pNQBg+aFUTN94AhVVGoknIzIMpdQD3DN06FDk5OTgvffeQ2ZmJjp27IgdO3ZoD0inpaVBLv+tx27fvo2oqChkZmaicePGCA4OxuHDh9GmTRupIpCZGd+jBVwdbPDWppP47sRN5BVXYNErwbC3MZr/bIj0QiYseAdqQUEB1Go18vPzeSCaarXvYjYmrz6G0spqdGiqxrLIznBxsJF6LKJ6qc/vO6PZlURkrHq1csfaqK5obGeFk+n5GLwoDum3eSEcmS8WA1EdPN2sMTZNCkOTRrZIyS3G4EVxvK8DmS0WA1Ed+bs74JvJofB3d0BGfhkGL4rDqfQ7Uo9F1OBYDET14KW2xcaJoejQVI3bJZUYHnMEh5N50x8yLywGonpytrfGmqgQhPnVXCUduTwRO89lPfqNRCaCxUD0GBxslFgW2RkRbT1QUa3BpNVJ+O7EDanHImoQLAaix6SyUmDhiGfw8tNNUK0ReHPDCayNT5N6LKInxmIgegJKhRwfD+6AV0OaQwjgnW9PI+bAFanHInoiLAaiJySXy/B+/7aY3MsPAPDv7Rd4L2kyaSwGogYgk8nw95cC8beIVgBq7iU95wcuvkemicVA1IBef84f7/dvCwCIPZyKd749jWqWA5kYFgNRAxsV6ouPB3eAXAasT7yOmRtPoKqaK7OS6WAxEOnBoOCm+HL401DKZdh64iamrjvOZbvJZLAYiPSkX3tvLHolGNYKOX46k4mJq46irLJa6rGIHonFQKRH4W088HVkJ6is5Nh7MQfjVxxFaQXLgYwbi4FIz3oEuGHFmC6wt1bgYHIuRi9PQFF5ldRjEdWKxUBkAF1buGDluK5wtFEi4WoeRn0dj4KySqnHInogFgORgQQ3b4w1UV2htrXCsbQ7eGVpPO6UVEg9FtEfsBiIDKh900ZYFxUCZ3trnErPx4gl8cgrZjmQcWExEBlYG28nrIsKgauDNc5lFGB4zBHkFpVLPRaRFouBSAKtPB2xfkIo3B1tcDGrEMNjjiCnkOVAxoHFQCQRf3cHrJ8QAk8nFS5nF2FYTByyC8qkHouIxUAkpRZuDtgwMQTeahWu5BRjWMwRZOazHEhaLAYiiTV3sceGiaFo0sgWKbnFGBYTh4z8UqnHIgvGYiAyAj7OdtgwMQRNG9si9VYJhsUcwc07LAeSBouByEg0bWyH9RNC4ONsi2t3y+EGy4EkwGIgMiI15RCKZs52SMsrwbCYOJYDGRyLgcjINGlki/UTQtDcxQ7X80oxLCYO6bdLpB6LLAiLgcgIef+hHI7geh7LgQyDxUBkpLzUttgwIRS+LnZIv12K4UtYDmQYLAYiI+apVmH9hFA85WqvLQfuViJ9YzEQGTlPtQrrokK0Ww7DYlgOpF8sBiITcG/LgeVAhsBiIDIRnmoV1k0I0TnmwFNZSR9YDEQmxEtti3X3na00nFdIkx6wGIhMjJfaFuuiQrQXwQ1fcoRrK1GDYjEQmaB71zk0c7bTLp/BcqCGwmIgMlHejWp2K91bW2nEkngu2U0NgsVAZMKaNKrZrdS0sS2u5hZj+JIjyOLNfugJsRiITFzTxnZYFxWCJo1+K4fsQpYDPT4WA5EZ8HGuWbLbW61CSk4xRiyJ5z2k6bGxGIjMhI+zHdZNCIGXWoXk7CKMXHoEuUUsB6o/FgORGWnuYo91USHwcLLBpawivLI0HnnFFVKPRSaGxUBkZnxda8rB3dEGFzILMWLJEdxmOVA9sBiIzFALNwesmxACV4eachi5NB53SlgOVDcsBiIz5efmgPUTusLVwRrnMgrw6tcJyC+plHosMgFGVQwLFy6Er68vVCoVunbtioSEhIe+ftOmTQgMDIRKpUJQUBC2b99uoEmJTIO/uyPWRoXA2d4ap2/kY9SyeOSXshzo4YymGDZs2IAZM2Zg1qxZOHbsGDp06ICIiAhkZ2c/8PWHDx/G8OHDMW7cOBw/fhwDBgzAgAEDcObMGQNPTmTcWno4Ys34rmhsZ4WT6fkYvSwBhWUsB6qdTAghpB4CALp27YrOnTtjwYIFAACNRgMfHx9MnToV//jHP/7w+qFDh6K4uBjbtm3TPhcSEoKOHTti0aJFdfrMgoICqNVq5Ofnw8nJqWGCEBmpszfz7x5rqMQzzRph5biucLBRSj0WGUh9ft8ZxRZDRUUFkpKSEB4ern1OLpcjPDwccXFxD3xPXFyczusBICIiotbXA0B5eTkKCgp0HkSWoq23GqvHdYWTSoljaXcwZnkCisurpB6LjJBRFENubi6qq6vh4eGh87yHhwcyMzMf+J7MzMx6vR4A5s2bB7VarX34+Pg8+fBEJqRdEzVWj+8KR5USiam3MTY2ESUVLAfSZRTFYCjR0dHIz8/XPq5fvy71SEQG175pI6wa1xWONkrEX83D+BVHUVpRLfVYZESMohhcXV2hUCiQlZWl83xWVhY8PT0f+B5PT896vR4AbGxs4OTkpPMgskQdfRohdmwX2FsrcPjKLUxYdRRllSwHqmEUxWBtbY3g4GDs3r1b+5xGo8Hu3bsRGhr6wPeEhobqvB4Adu7cWevriUhXcPPGWDG2C+ysFfj1ci4mrEpiORAAIykGAJgxYwaWLFmCFStW4Pz585g8eTKKi4sxZswYAMCoUaMQHR2tff20adOwY8cOfPLJJ7hw4QJmz56No0ePYsqUKVJFIDI5nXydsTyyM2ytFDhwKQeTVyehvIrlYOmMphiGDh2Kjz/+GO+99x46duyIEydOYMeOHdoDzGlpacjIyNC+PiwsDGvXrkVMTAw6dOiAb775Blu3bkW7du2kikBkkrq2cMGyyM5QWcmx92IOXl9zDBVVGqnHIgkZzXUMUuB1DES/OZycizGxiSiv0uCFNh5YOOIZWCuN5t+O9IRM7joGIpJemL8rvh7dGTZKOXaey8LUdcdQWc0tB0vEYiAire4BrogZ1QnWSjl+PpuFN9YdZzlYIBYDEeno2dINi18NhrVCjp/OZOLN9SdQxXKwKCwGIvqD51q5Y9Grz8BKIcOPpzPw5gaWgyVhMRDRA/UO9MD/RgbDSiHDtlMZmLnpJKo1FnuuikVhMRBRrcLvnp2klMvw3YmbmLnxBMvBArAYiOihXmzriQV3y2HriZt4i1sOZo/FQESP9FI7T8wf/jQUchm+PX4Df2M5mDUWAxHVSZ8gLyy4Ww5bjt/A375hOZgrFgMR1VmfIC/tlsOWYzfw9jenWA5miPf1I6J66RvkBSGAN9Yfx+Zj6ZDJgA8HtodCLpN6NGogLAYiqrc/tfeCgMC09SfwTVI6ZKgpBznLwSxwVxIRPZZ+7b3x+dCOkMuATUnpeHszdyuZC24xENFj+3MHbwDAmxtqthyEAD4axN1Kpo7FQERP5M8dvCGTAdPWn8DmY+kAWA6mjsVARE+sX3tvyCDTHpAWQuC/gzuwHEwUi4GIGsSf2nsBqDlbacvxG9AIgU+GdGQ5mCAWAxE1mD+194JcBkxddxxbT9yERgCfDukApYLnuZgSfreIqEH1CfLSrq30/cmbXLLbBLEYiKjBvdTOE1+NfEa7ZPcb63knOFPCYiAivXixrSf+N7LmTnDbT2diytpjqKhiOZgCFgMR6U14G4+a24TevYf0a2uSUF5VLfVY9AgsBiLSq+cC3bFkVCfYKOXYdT4bE1cloayS5WDMWAxEpHc9W7pheWRn2FopsO9iDqJWHkVpBcvBWLEYiMggwvxdETumM+ysFfj1ci7GxCaguLxK6rHoAVgMRGQwXVu4YNW4LnCwUeJISh5GL0tAQVml1GPR77AYiMiggps7Y/X4rnBSKXH02m28ujQed0oqpB6L7sNiICKD6+jTCOsmhMDZ3hon0/MxfEk8bhWVSz0W3cViICJJtPVWY/2EELg52uB8RgGGxhxBdkGZ1GMRWAxEJKGWHo7YMCEEXmoVkrOLMGRxHG7cKZV6LIvHYiAiSbVwc8DGiaFo2tgWqbdKMGRRHK7dKpZ6LIvGYiAiyfk422HTpFA85WqPG3dKMXhRHC5nFUo9lsViMRCRUfBS22LDxBC08nBEdmE5hsYcwZkb+VKPZZFYDERkNNwdVVg/IQTtm6qRV1yB4UuOIOlantRjWRwWAxEZlcb21lgzviu6+DqjsKwKryxNwMHLuVKPZVFYDERkdBxVVlgxtgt6BLiitLIaY2MTseNMptRjWQwWAxEZJVtrBZaO7oQ+7TxRUa3B62uPYXNSutRjWQQWAxEZLRulAvOHP43BwU1RrRGYuekklh+6KvVYZo/FQERGTamQ48OB7TG221MAgDk/nMMXuy5DCCHxZOaLxUBERk8ul+Hdfq0xPbwlAOCzXZcw54dz0GhYDvrAYiAikyCTyTAtPACz/9wGABB7OBUzNp5AZTXvI93QWAxEZFIiuz2Fz4d2hFIuw9YTNxG18ihKKnjDn4bEYiAikzPg6SZYMroTVFZy7LuYg5G8p0ODYjEQkUl6rpU71owPgdrWCsfT7mDwojjc5MqsDYLFQEQmK7h5Y2yaFApPJxUuZxfh5a8O42ImF997UiwGIjJpLT0csfm1MPi7OyCzoAyDFx1GfMotqccyaSwGIjJ5TRrZ4ptJoQhu3hgFZVV4dVkCdpzJkHosk2UUxZCXl4eRI0fCyckJjRo1wrhx41BUVPTQ9/Tq1QsymUznMWnSJANNTETGppFdzeJ7L7TxQEWVBpPXHMOquFSpxzJJRlEMI0eOxNmzZ7Fz505s27YNBw4cwIQJEx75vqioKGRkZGgfH330kQGmJSJjpbJS4H8jn8HwLs0gBPDud2fx358v8CrpelJKPcD58+exY8cOJCYmolOnTgCA+fPno2/fvvj444/h7e1d63vt7Ozg6elZ588qLy9HeXm59s8FBQWPPzgRGSWlQo5//7UdPJ1U+GzXJSzcewU375Thw4HtYa00in8LGz3J/1+Ki4tDo0aNtKUAAOHh4ZDL5YiPj3/oe9esWQNXV1e0a9cO0dHRKCkpeejr582bB7VarX34+Pg0SAYiMi73rpL+aGB7KOQyfHv8BkYvS0B+aaXUo5kEyYshMzMT7u7uOs8plUo4OzsjM7P29ddHjBiB1atXY+/evYiOjsaqVavwyiuvPPSzoqOjkZ+fr31cv369QTIQkXEa0tkHyyI7w95agbiUWxi86DBu8FqHR9JbMfzjH//4w8Hh3z8uXLjw2F9/woQJiIiIQFBQEEaOHImVK1fi22+/xZUrV2p9j42NDZycnHQeRGTeerZ0w8ZJofBwssGlrCIMWHgIp9LvSD2WUdPbMYaZM2ciMjLyoa9p0aIFPD09kZ2drfN8VVUV8vLy6nX8oGvXrgCA5ORk+Pn51XteIjJfbb3V+Pa1bhgbm4gLmYUYsjgOXwx7GhFt6/47xpLorRjc3Nzg5ub2yNeFhobizp07SEpKQnBwMABgz5490Gg02l/2dXHixAkAgJeX12PNS0TmzbuRLTZNCsWUtcex/1IOJq1Owjt9WmN8j6cgk8mkHs+oSH6MoXXr1njppZcQFRWFhIQEHDp0CFOmTMGwYcO0ZyTduHEDgYGBSEhIAABcuXIFH3zwAZKSkpCamorvv/8eo0aNwrPPPov27dtLGYeIjJijygpfj+6EkV1rTmf91/bz+L+tZ7h09+9IXgxAzdlFgYGBeP7559G3b190794dMTEx2r+vrKzExYsXtWcdWVtbY9euXXjxxRcRGBiImTNnYuDAgfjhhx+kikBEJkKpkGPugHb4559aQyYD1sanIXJ5AvJLeMbSPTJhwVd+FBQUQK1WIz8/nweiiSzQznNZmLb+OEoqqtHC1R5LR3dCCzcHqcfSi/r8vjOKLQYiIim80MYDmyaFwlutQkpuMQYsPIRfL+dIPZbkWAxEZNHaequxdUo3PNOsEQrKqhC5PBErDqda9DIaLAYisnjujiqsmxCCl59pgmqNwKzvzyJ6y2mUV1VLPZokWAxERABslAp8MrgDovsEQiYD1idex7CYI8gqKJN6NINjMRAR3SWTyTCxpx9ix3SBk0qJ42l30G/+QSRduy31aAbFYiAi+p2eLd3w/ZTuaOnhgJzCcgyLicO6hDSpxzIYFgMR0QP4utrj29e6oU87T1RWC0RvOY13vrWM4w4sBiKiWtjbKPHVyGfwt4hW2ovhhi4+gptmvkIri4GI6CFkMhlef84fy0Z3hpNKiRPXa447HLycK/VoesNiICKqg+cC3fHjGz3Q1tsJecUVeHVZPBbsuQyNxvyud2AxEBHVkY+zHTZPDsPQTj4QAvj4l0sYuyIRecUVUo/WoFgMRET1oLJS4MNB7fHRwPawUcqx72IO+n7xK46m5kk9WoNhMRARPYYhnX3w3ZRuaOFmj8yCMgyNOYJF+6+Yxa4lFgMR0WMK9HTC91O6o39Hb1RrBP7z0wVExiYit6hc6tGeCIuBiOgJONgo8fnQjpj3chBslHIcuJSDlz7/Ffsvme4qrSwGIqInJJPJMLxLM/wwteZq6dyicoxeloAPtp0zyQviWAxERA2kpYcjvp/SHa+GNAcAfH3wKgYsPIzLWYUST1Y/LAYiogakslLggwHtsHRUJzjbW+N8RgH6zT+IZQevmsyBaRYDEZEehLfxwI5pPfBsSzeUV2nw/rZzGLk0Hum3S6Qe7ZFYDEREeuLupMKKMZ3xwYB2sLVSIC7lFl76/FdsTLxu1HeIYzEQEemRTCbDqyHN8dO0Hghu3hhF5VV4e/MpjF9xFNmFxnkTIBYDEZEB+LraY+PEUPyjTyCsFXLsvpCNFz87gC3H0o1u64HFQERkIAq5DJN6+uH7qd3Q1tsJd0oqMWPjSYyJTTSqpbxZDEREBhbo6YStr3fD3yJawVpRs97Si58dwKoj14zizCUWAxGRBKwUcrz+nD+233fs4d2tZzBw0WGczyiQdDYWAxGRhPzdHbBxYijm/KUtHGyUOJ5WcyOgedvPo6SiSpKZWAxERBJTyGUYHeaLXTN6ok87T1RrBBYfSMELnx7AjjOZBj84zWIgIjISnmoV/vdKML4e3QlNGtnixp1STFqdhNHLE5GcXWSwOWTC2M6TMqCCggKo1Wrk5+fDyclJ6nGIiLRKK6qxcG8yYg6koKJaA+XdrYpp4QFwUlnV++vV5/cdi4HFQERGLDW3GHN/PIdd57MBAC721vhbRCsM7ewDmUxW569Tn9933JVERGTEfF3tsXR0Z6wY2wUt3Oxxq7gCO85m1qsU6kupt69MREQNpmdLN/z85rNYcTgVzwW66/WzWAxERCbCSiHH+B4t9P453JVEREQ6WAxERKSDxUBERDpYDEREpIPFQEREOlgMRESkg8VAREQ6LPo6hnurgRQUSLv2ORGRvt37PVeXVZAsuhgKCwsBAD4+PhJPQkRkGIWFhVCr1Q99jUUvoqfRaHDz5k04OjrWad2RgoIC+Pj44Pr16xaz6J65ZjbXXA9jSZktKStQt7xCCBQWFsLb2xty+cOPIlj0FoNcLkfTpk3r/T4nJyeL+GG7n7lmNtdcD2NJmS0pK/DovI/aUriHB5+JiEgHi4GIiHSwGOrBxsYGs2bNgo2NjdSjGIy5ZjbXXA9jSZktKSvQ8Hkt+uAzERH9EbcYiIhIB4uBiIh0sBiIiEgHi4GIiHSwGIiISAeLwYLxhDQiehAWw10ajQYAUF1dLfEkhlFYWIjKykrtn82pJPLy8pCVlYWKigoAv31vzdn169exY8cOqccwiCtXrmD27NlITk6WehSDSE1NxeTJk/Hzzz8b7DNZDABmzJiBV155BQCgUCgknka/hBCYPn06IiIi0LdvX7z33nsoLS2FTCYz+XIQQuCNN95AaGgo/vKXv6BPnz64c+cO5HK5yWd7mMuXL6N58+Z4+eWXcfnyZanH0RshBCZPnoyAgABkZGQ81jpnpuadd95B69atkZubi5KSEoP9HFt0MRw/fhwvvPACVq9ejQ0bNmgb2Vy3Gg4cOIB27drhyJEjeOutt9CiRQts2bIF0dHRUo/2xH788Ue0adMGR48exYIFCzBhwgRkZmZi6tSpAFCn1XNNVWVlJSIiIuDi4oK5c+dKPY5erFu3Dq6urkhISEBCQgIWL14MlUoFwLy2du+3Z88e7N+/H1u3bsWmTZvw17/+1WA/xxa9umpiYiKaNGmC6dOnY926dXjrrbcQEREBhUIBIYRZ/TIpKSnBpk2bEBoaivnz58PW1hb9+/fHJ598gp9++gn5+fl1XnnRGO3btw/9+vXDv/71L1hbWwOoKf77d5eZq5MnT8La2hqbNm1Ct27dMGbMGPTq1UvqsRrUihUr4OTkhG3btsHLywtnzpzBzZs34e/vD09PT9jZ2Zndf7OxsbHw8/NDREQEjhw5gm3btsHPzw/du3dHQECAXj/borcY+vfvj5kzZ6Jv374YN24cbt26hc8++wyA+e2XrqysRNeuXTFx4kTY2tpCo9FAoVCgsrIShYWFcHJyMul/eb399tt4/fXXtaWQlZWFhIQENGvWDHFxcRJP1/Du//m0srJC8+bNERISgueffx6zZs0CABQXF0s1XoP76KOPIJfL8dVXX2HQoEH485//jJkzZ6J79+6IiooCYD5bhRqNBiUlJbh58yZefPFFfPbZZ+jfvz/OnDmDuXPnonfv3ti8ebNeZ7CYtZLmzZuH7OxsBAYGYsyYMdpfIPfcuXMHH374IZYvX47Lly/D0dERGo3mkTe0MFaPyltdXQ2FQoG3334bV69exaZNmySatP4ele3rr7/GpEmT0KlTJ6hUKpw+fRpjx47FnDlzYGtrK9HUT+Zhmd977z2kpaUhNjYWOTk5aNKkCZ5//nnk5ORg6dKl6Nixo3SDP4bask6dOhUxMTEYOHAgZsyYASsrK1y4cAFjx45FdHQ0/vnPf5rkVkNtecPDw6HRaNCsWTOMGjUKzz77LJRKJfr374+qqir8+9//RocOHfQzlDBzFy5cEG3atBFBQUFi6NChonHjxqJXr17iyJEjQgghNBqN9rXHjx8X7dq1ExMmTBBCCFFdXS3JzE+itrxxcXFCiN8y3fvfXr16iU8//VQIofv/hTF61PfynlWrVondu3dr83z//fdCqVSKc+fOSTH2E6lL5jFjxogtW7YIIYRYs2aNcHBwEAqFQqxcuVKqsR9LbVkPHjwohBAiPz9fvPPOOyIlJUXnff/9739Fo0aNRGVlpRRjP7ba8h4+fFgIIcS6deuElZWV8PHxEenp6dr3JSUlCS8vL7Fr1y69zWb2xfDJJ5+I0NBQ7Q9NRkaG6NChgxgyZIhITk4WQgjt35WVlYkFCxYIR0dHcfbsWSGEEPv27RN5eXnSDP8Y6pL3XilkZmYKNzc3kZSUpH3/lStXdF5jTOqSTYg/FlxqaqqwtrbW/vI0JQ/LfOHCBSGEEFFRUWLEiBGiR48eonHjxmL27NnC3d1dzJ49W8rR6+1hWS9evCiEqCmH31u7dq1wd3cXp06dMui8T6q2vIMHDxbXrl0TWVlZ4oUXXhBPPfWUuHbtmhCi5mdbo9EIZ2dnsWzZMr3NZpr7SeqoqqoKZ8+ehbu7u/Y0VE9PT/zf//0f0tLS8PXXXwMAlEolhBCwsbFB37590b17d4wcORLdu3dH3759kZ2dLWWMOqtr3nu7x3bt2gVXV1c888wzOHfuHHr16oWgoCCUlpYa3S60umYD/riveevWrQgNDUXv3r0NOvOTelTmVatWAag5seDHH39Eq1atcPz4ccyaNQuzZs3CnDlzcOHCBSkj1NmjssbGxgLAA29bGRcXh5CQEAQFBRly5CfyqLxLliyBu7s7Zs6ciaysLMyfPx/Xr1+HTCbD9u3b4e/vj/DwcL3NZ1z/9TcwpVKJ8vJylJaWQqPRaE9DHTx4MIKDgxEfH4/jx48D+O2Ut6qqKuTl5eHkyZMIDAxEZmYmWrVqJVmG+qhPXgA4d+4cAgICEB0djfbt26Np06bIyMgwyv3w9c12/fp1XL16FVOnTsV//vMfDBs2DGq12qQOsD8q86+//orU1FS899572L9/P2JiYtC8eXMAwKRJk/Dhhx+iRYsWUkaos/p+f9PS0pCamoopU6Zg69atGDVqFADTOXX1YXk7deqEgwcP4tSpU4iIiMCXX36JtWvXonfv3hg0aBCGDRuG8PBwNGnSRH8D6m1bRGJVVVVCCCH27t0r5HK5OH78uBDit91G+/btE/7+/mLjxo3a9yQmJoqWLVuKjh07anclmYrHyduuXTshk8lEWFiYzu4kY1PfbJcvXxbR0dGiWbNmIiwsTJw8eVKSuZ9EXTK3aNFCbNq0SaoRG0x9v7+XLl0SM2fOFJ6eniI0NNTkdiHVJa+fn5/YsGGD9j2JiYli8eLF4u9//7tBfp5NuhhOnz4tDhw48MC/u/d/cmlpqejZs6cIDw8XQujuf/bz8xPvv/++9s+5ubnaA13GqCHyzpkzRwghREFBgfj444/FDz/8oOep66Yhs5WWlopDhw6J/fv363nqJ9OQP7/GfuJAQ35/S0pKxN69e8Xu3bv1PPXja+jfTYZmkruSKioqMH78eLRv3x579uzR+bt7m2RKpRLV1dXIz8/HnDlzsH//fixatEi7qXn79m3Y29vD2dkZQM0mqIuLC7p162bYMHXQkHldXFwAAI6Ojpg5cyb69etn2DC/o49sKpUKYWFhePbZZw0bpo708fNrrKdo6uP7a2tri169ehnlMSN9fG8lIVklPab58+cLe3t7ERYWJk6cOFHr67744gthbW0tYmNjhRBCzJ07V7i7u4vx48eLAwcOiOnTp4unnnpKnD9/3lCjPxZzzmvO2WpjSZktKasQ5pXXpIrhwoULQqVSiSFDhmifS05OFjk5OaK8vFwIIURxcbEYNmyY8Pb2FitWrNDZPPvyyy9Fjx49RFBQkOjQoYOIj483eIb6MOe85pytNpaU2ZKyCmF+eU2qGMrKysTs2bOFt7e3OH/+vBg2bJho1aqVCAgIEH369BF79uwRQggRHx+vc77z/efkV1dX/+ECGWNlznnNOVttLCmzJWUVwvzyGnUxbNq0SezcuVPcvHlT+1xqaqpo2bKlkMlkYuzYseKnn34Sa9asEc8//7x4+umnRUJCghDCOC/QehRzzmvO2WpjSZktKasQ5p/XKIth5cqVwt3dXXTp0kW4ubmJbt26ic2bNwshhCgvLxffffed+OCDD3SaNyEhQfTu3Vu8/vrrUo392Mw5rzlnq40lZbakrEJYTl6jKobKykrx+eefi9atW4ulS5eK8vJycejQITFq1CjRp08fUVpaKoSoOdWysLDwD+/v2bOnGDdunKHHfmzmnNecs9XGkjJbUlYhLC+vUZ2uWlxcjJycHIwePVq7ymBYWBjatGmDgoICVFVVAag51dLBwUHnvbdu3UJhYSH8/PykGP2xmHNec85WG0vKbElZAcvLK/mNei5fvgx/f3/IZDKo1WoMGjQIQUFBkMvl2mWvfXx8UFxc/IfllQGgrKwMt2/f1i65O2jQIAlS1J055zXnbLWxpMyWlBWwvLw6pNpU2bBhg/D19RWtWrUSXbp0EUuXLtX5+/sP0IwYMUJERkYKIX67nPze15g0aZJwcXERvXr10q4MaozMOa85Z6uNJWW2pKxCWF7eB5GkGH755Rfh6+srFi5cKHbs2CFmzJghrKysRExMjHZf3b3lZUtLS0X79u3FqlWr/vB1Tp06JT744APx888/GzpCvZhzXnPOVhtLymxJWYWwvLy1MWgx3LugY86cOSI4OFhUVFRo/+61114TnTp1+sOa+Tdu3BC+vr7i0qVLQoiaBbTefPNNww39BMw5rzlnq40lZbakrEJYXt5HMejB53vruZw7dw5+fn6wsrLS3qx97ty5UKlU+O6775CZmal9z65du+Dj4wMvLy9MmzYNbdq0QVpaGiorK41+iV1zzmvO2WpjSZktKStgeXkfSZ+t88svv4ipU6eKzz77TOcS75iYGOHo6KjdJ3evnWNiYkTLli3F3r17hRA1LT548GDRuHFj4eLiItq2bSsSExP1OfITMee85pytNpaU2ZKyCmF5eetLL8Vw8+ZN0a9fP+Hu7i5GjhwpgoKChFqt1n4DLl68KJo0aSLeffddIYTQriUihBCenp7is88+E0LUrC3Sr18/0bRpU7F+/Xp9jNogzDmvOWerjSVltqSsQlhe3sfV4MVQXFwsRo8eLYYOHaqz7keXLl20R+8LCgrE3Llzha2trUhLSxNC/LaPr2fPnmL8+PHa9x09erShR2xQ5pzXnLPVxpIyW1JWISwv75No8GMMdnZ2sLGxQWRkJJ566inthR99+/bF+fPnIYSAo6MjRowYgWeeeQZDhgzBtWvXIJPJkJaWhuzsbAwYMED79YKDgxt6xAZlznnNOVttLCmzJWUFLC/vE9FH29x/RP/eOb8jRowQUVFROq9LT08X/v7+wtfXVwwaNEh4e3uL3r17i8zMTH2MpTfmnNecs9XGkjJbUlYhLC/v45IJYZjD5927d0dUVBRGjx4NjUYDAJDL5UhOTkZSUhLi4+PRoUMHjB492hDj6J055zXnbLWxpMyWlBWwvLx1Yoj2uXLlivDw8NDZJ3f/QR1zY855zTlbbSwpsyVlFcLy8taVXq9jEHc3Rg4ePAgHBwftPrk5c+Zg2rRpyM7O1ufHG5w55zXnbLWxpMyWlBWwvLz1pddF9O5dNJKQkICBAwdi586dmDBhAkpKSrBq1Sq4u7vr8+MNzpzzmnO22lhSZkvKClhe3nrT9yZJaWmp8Pf3FzKZTNjY2Ij//Oc/+v5ISZlzXnPOVhtLymxJWYWwvLz1YZCDzy+88AICAgLw6aefQqVS6fvjJGfOec05W20sKbMlZQUsL29dGaQYqquroVAo9P0xRsOc85pzttpYUmZLygpYXt66MtjpqkREZBqM6taeREQkPRYDERHpYDEQEZEOFgMREelgMRARkQ4WAxER6WAxEBGRDhYDkQH16tULb775ptRjED0Ui4GIiHTwymciA4mMjMSKFSt0nrt69Sp8fX2lGYioFiwGIgPJz89Hnz590K5dO7z//vsAADc3N67VQ0ZHr/djIKLfqNVqWFtbw87ODp6enlKPQ1QrHmMgIiIdLAYiItLBYiAyIGtra1RXV0s9BtFDsRiIDMjX1xfx8fFITU1Fbm4uNBqN1CMR/QGLgciA3nrrLSgUCrRp0wZubm5IS0uTeiSiP+DpqkREpINbDEREpIPFQEREOlgMRESkg8VAREQ6WAxERKSDxUBERDpYDEREpIPFQEREOlgMRESkg8VAREQ6WAxERKTj/wE4A8nEQtbNsgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 400x900 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"da.isel(x=2, y=3).plot(row=\"bands\", sharey=False)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0f38a901-706f-403f-959e-991e0cec4fce",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "ce909264-3808-402a-9f13-6a1aa98f77b7",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "f88401e6-b690-4b65-8b2b-4457cd9a8ec0",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "4ea86bac-9183-41c8-bce9-92551518f188",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "openeo-client-venv3.9",
"language": "python",
"name": "openeo-3.9"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.15"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
import datetime
import calendar
import xarray
import numpy
import math
import openeo
from openeo.metadata import CubeMetadata
def broadcast_as_band(
ref: xarray.DataArray,
value: float = 0.0,
label: str = "new",
dim_name: str = "bands",
) -> xarray.DataArray:
"""
Broadcast a scalar value to a new DataArray,
based on a given DataArray,
so that it can be concatenated as a new band to the given DataArray
"""
assert dim_name in ref.dims
shape = [(1 if d == dim_name else s) for (d, s) in zip(ref.dims, ref.shape)]
data = numpy.full(shape=shape, fill_value=value)
coords = {k: ([label] if k == dim_name else v) for (k, v) in ref.coords.items()}
return xarray.DataArray(data=data, dims=ref.dims, coords=coords)
def append_scalars_as_bands(
da: xarray.DataArray,
values: dict,
dim_name: str = "bands",
) -> xarray.DataArray:
"""
Append scalar values
(given as dictionary mapping band labels to values)
as new bands to a given DataArray
"""
objs = [da] + [
broadcast_as_band(ref=da, value=v, label=k, dim_name=dim_name)
for (k, v) in values.items()
]
return xarray.concat(objs=objs, dim=dim_name)
def apply_datacube(cube: xarray.DataArray, context: dict) -> xarray.DataArray:
assert not {"t", "temporal", "time"}.intersection(cube.dims), (
"No temporal dimension expected in cube"
)
assert "t" in cube.attrs, "temporal label expected in cube attributes"
date = cube.attrs["t"]
day_of_year = date.timetuple().tm_yday
days_in_year = 365 + calendar.isleap(date.year)
angle = 2 * numpy.pi * (day_of_year - 1) / days_in_year
cube = append_scalars_as_bands(
da=cube,
values={
"sin_doy": math.sin(angle),
"cos_doy": math.cos(angle),
},
)
return cube
def apply_metadata(metadata: CubeMetadata, context: dict) -> CubeMetadata:
return metadata.rename_labels(
dimension="bands",
target=metadata.band_names + ["sin_doy", "cos_doy"],
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment