From aab3a14bbb54b195dcefad938b40c97e820c2b3e Mon Sep 17 00:00:00 2001
From: Thorsten Hater <24411438+thorstenhater@users.noreply.github.com>
Date: Mon, 9 Dec 2024 13:51:36 +0100
Subject: [PATCH 1/4] Add connectivity tutorial.
---
doc/tutorial/connectivity.rst | 182 +
python/example/connectivity/01-raster.svg | 1194 +
python/example/connectivity/02-graph.svg | 419 +
python/example/connectivity/02-matrix.svg | 365 +
python/example/connectivity/02-raster.svg | 1599 +
python/example/connectivity/03-graph.svg | 419 +
python/example/connectivity/03-matrix.svg | 365 +
python/example/connectivity/03-raster.svg | 1734 +
python/example/connectivity/04-graph.svg | 11398 +++
python/example/connectivity/04-matrix.svg | 396 +
python/example/connectivity/04-raster.svg | 75773 +++++++++++++++++++
python/example/connectivity/all-to-all.py | 37 +
python/example/connectivity/brunel.py | 46 +
python/example/connectivity/ring.py | 41 +
python/example/connectivity/unconnected.py | 55 +
python/example/connectivity/util.py | 54 +
16 files changed, 94077 insertions(+)
create mode 100644 doc/tutorial/connectivity.rst
create mode 100644 python/example/connectivity/01-raster.svg
create mode 100644 python/example/connectivity/02-graph.svg
create mode 100644 python/example/connectivity/02-matrix.svg
create mode 100644 python/example/connectivity/02-raster.svg
create mode 100644 python/example/connectivity/03-graph.svg
create mode 100644 python/example/connectivity/03-matrix.svg
create mode 100644 python/example/connectivity/03-raster.svg
create mode 100644 python/example/connectivity/04-graph.svg
create mode 100644 python/example/connectivity/04-matrix.svg
create mode 100644 python/example/connectivity/04-raster.svg
create mode 100644 python/example/connectivity/all-to-all.py
create mode 100644 python/example/connectivity/brunel.py
create mode 100644 python/example/connectivity/ring.py
create mode 100644 python/example/connectivity/unconnected.py
create mode 100644 python/example/connectivity/util.py
diff --git a/doc/tutorial/connectivity.rst b/doc/tutorial/connectivity.rst
new file mode 100644
index 000000000..2780953f0
--- /dev/null
+++ b/doc/tutorial/connectivity.rst
@@ -0,0 +1,182 @@
+.. _tutorial_connectivity:
+
+Declarative Connectivity in Arbor
+=================================
+
+In this tutorial, we are going to demonstrate how to leverage Arbor's
+declarative connection description facilities to generate a few common network
+types.
+
+Prelude: Unconnected Cells
+--------------------------
+
+Before we start building actual networks, we will set up the trivial network,
+which has no connections at all. This will be written as a recipe class, as
+discussed in other tutorials, and later examples will derive from this class to
+build upon. If you want, you can skip this part and come back as needed.
+
+Our cells comprise a simple leaky integrate and fire model, not a cable cell, as
+we want to emphasize building networks. We begin by defining the global settings:
+
+.. literalinclude:: ../../python/example/connectivity/unconnected.py
+ :language: python
+ :lines: 7-15
+
+- ``N`` is the cell count of the simulation.
+- ``T`` is the total runtime of the simulation in ``ms``.
+- ``dt`` is the numerical timestep on which cells evolve.
+
+These parameters are used here:
+
+.. literalinclude:: ../../python/example/connectivity/unconnected.py
+ :language: python
+ :lines: 52-62
+
+where we run the simulation in increments of ``t_interval``.
+
+Back to the recipe, we set a prototypical LIF cell:
+
+.. literalinclude:: ../../python/example/connectivity/unconnected.py
+ :language: python
+ :lines: 23
+
+and deliver it for all ``gid``:
+
+.. literalinclude:: ../../python/example/connectivity/unconnected.py
+ :language: python
+ :lines: 42-43
+
+Also, the _first cell_ has an event generator attached, using a Poisson point process
+seeded with the cell's ``gid``.
+
+.. literalinclude:: ../../python/example/connectivity/unconnected.py
+ :language: python
+ :lines: 33-41
+
+All other parameters are set in the constructor:
+
+.. literalinclude:: ../../python/example/connectivity/unconnected.py
+ :language: python
+ :lines: 19-28
+
+We also proceed to add spike recording and generate raster plots using a helper
+function ``plot_spikes`` from ``util.py``.
+
+.. figure:: ../../python/example/connectivity/01-raster.svg
+ :width: 400
+ :align: center
+
+As only the first cell receives spiking inputs, only it will show up on the plot.
+
+Ring Network
+------------
+
+Starting from an unconnected set of cells, we can now start building a simple
+network. A ring structure is defined by connecting each cell to its predecessor,
+i.e. the cell with ``gid = i`` is connected to the cell with ``gid = i - 1`` and
+the cell ``gid = 0`` is connected to the last cell ``gid = N - 1``.
+
+We construct such a network by defining a new class ``ring`` deriving from the
+unconnected network
+
+.. literalinclude:: ../../python/example/connectivity/ring.py
+ :language: python
+ :lines: 18-20
+
+Next, we add a new method that is responsible for the network. Note that this
+--- in contrast to most other methods on recipe --- does not have an argument of
+``gid``, since it is definining the _global_ network.
+
+.. literalinclude:: ../../python/example/connectivity/ring.py
+ :language: python
+ :lines: 22-31
+/
+Similar to the construction of a ``decor`` or ``cv_policy``, a light-weight
+language inspired by LISP or Scheme is used here. For this tutorial, we use
+Python format strings to compose expressions. Networks comprise a structure and
+parameters --- ``weight`` and ``delay``, which can be scalars as shown, or more
+elaborate expressions, such a drawing from a random distribution.
+
+The structure is defined in terms of combinators reminiscent of relational
+algebra queries operating on abstract sets of source and target identifiers.
+
+- ``source-cell`` and ``target-cell`` construct a set of eligble sources and targets from a single ``gid``.
+- ``gid-range`` defines a contiguous range of gids ``[start, end)``
+- ``intersect`` constructs the connections between the ``source`` and ``target`` arguments.
+- ``chain`` constructs the set of connections between adjacent neighbours.
+- ``join`` takes two sub-structures ``A`` and ``B`` and returns their union.
+
+Upon close inspection, these combinators directly spell out the prose
+description of the ring network given above! Connect adjacent cells and close
+the ring by connecting the beginning and end.
+
+Running the network and plotting the spikes we find cells deeper into the ring spiking now.
+
+.. figure:: ../../python/example/connectivity/02-raster.svg
+ :width: 400
+ :align: center
+
+
+Excercise: All-to-all Network
+-----------------------------
+
+Using the ``unconnected`` recipe and the network
+https://docs.arbor-sim.org/en/stable/concepts/interconnectivity.html#network-selection-expressions
+documentation , define fully connected network, i.e. where each cell is
+connected to every other cell except itself.
+
+Hint 1: ``source-cell`` and ``target-cell`` can take a range of ids
+
+Hint 2: Use ``inter-cell`` to remove self connections
+
+You can find our soluction in ``python/example/all-to-all.py``, it produces the following output
+
+.. figure:: ../../python/example/connectivity/03-raster.svg
+ :width: 400
+ :align: center
+
+
+Brunel Network
+--------------
+
+The Brunel network, or in other words, a inhibition-dominated randomly connected
+recurrent network, is a common network structure used in computational
+neuroscience proposed by Nicolas Brunel in 2000. It contains sparsely connected
+inhibitory and excitatory neurons where a critical balance between inhibition
+and excitation inputs to each neuron is maintained to ensure a brain-realistic
+network-wide dynamics. It entails a few typical dynamics of cortical circuits.
+
+Practically, we can describe this network by two populations, called the
+excitatory and inhibitory populations, such that
+
+1. Each cell is connected to each other with some probablity :math:`0 < p < 1`
+ - There no self-connections
+2. If the pre-synaptic cell is in the excitatory population, the weight is :math:`w_{exc} > 0`
+3. If the pre-synaptic cell is in the inhitatory population, the weight is :math:`w_{inh} < 0`
+ - :math:`|w_{inh}| < |w_{exc}|`
+
+We write down these rules in the recipe
+
+.. literalinclude:: ../../python/example/connectivity/brunel.py
+ :language: python
+ :lines: 28-36
+
+The ``rand`` structure encodes the random connectivity and removes any potential
+self-connections by ``intersect`` with ``inter-cell``, as before. Next, we
+define the weight according the population of the pre-synaptic neuron. The
+population is defined by the ``gid`` of the neuron; the first 80% of cells is
+considered excitatory and the remainder inhibitory. The predicate ``inh``
+reifies this description. The weight function ``weight`` then dispatches to one
+of two values based on the predicate.
+
+Final Thoughts
+--------------
+
+Using a few examples we have shown how Arbor's high-level network description
+method can be leveraged to generate common structures. The key insight is to
+build complex layouts from atomic blocks by using set operators like ``join``,
+``difference``, and ``intersect``. There are more to explore in the
+documentation, be especially aware of stochastic distributions. We have also
+seen how to produce weights and by extension delays using the same, declarative
+approach. This functionality is quite young and if any useful additions come to
+mind, do not hesitate to request or implement them!
diff --git a/python/example/connectivity/01-raster.svg b/python/example/connectivity/01-raster.svg
new file mode 100644
index 000000000..649012389
--- /dev/null
+++ b/python/example/connectivity/01-raster.svg
@@ -0,0 +1,1194 @@
+
+
+
diff --git a/python/example/connectivity/02-graph.svg b/python/example/connectivity/02-graph.svg
new file mode 100644
index 000000000..12aad2027
--- /dev/null
+++ b/python/example/connectivity/02-graph.svg
@@ -0,0 +1,419 @@
+
+
+
diff --git a/python/example/connectivity/02-matrix.svg b/python/example/connectivity/02-matrix.svg
new file mode 100644
index 000000000..450cab318
--- /dev/null
+++ b/python/example/connectivity/02-matrix.svg
@@ -0,0 +1,365 @@
+
+
+
diff --git a/python/example/connectivity/02-raster.svg b/python/example/connectivity/02-raster.svg
new file mode 100644
index 000000000..3848da893
--- /dev/null
+++ b/python/example/connectivity/02-raster.svg
@@ -0,0 +1,1599 @@
+
+
+
diff --git a/python/example/connectivity/03-graph.svg b/python/example/connectivity/03-graph.svg
new file mode 100644
index 000000000..2a32ef8ad
--- /dev/null
+++ b/python/example/connectivity/03-graph.svg
@@ -0,0 +1,419 @@
+
+
+
diff --git a/python/example/connectivity/03-matrix.svg b/python/example/connectivity/03-matrix.svg
new file mode 100644
index 000000000..cff57691f
--- /dev/null
+++ b/python/example/connectivity/03-matrix.svg
@@ -0,0 +1,365 @@
+
+
+
diff --git a/python/example/connectivity/03-raster.svg b/python/example/connectivity/03-raster.svg
new file mode 100644
index 000000000..4fd5b7aae
--- /dev/null
+++ b/python/example/connectivity/03-raster.svg
@@ -0,0 +1,1734 @@
+
+
+
diff --git a/python/example/connectivity/04-graph.svg b/python/example/connectivity/04-graph.svg
new file mode 100644
index 000000000..622e79d7f
--- /dev/null
+++ b/python/example/connectivity/04-graph.svg
@@ -0,0 +1,11398 @@
+
+
+
diff --git a/python/example/connectivity/04-matrix.svg b/python/example/connectivity/04-matrix.svg
new file mode 100644
index 000000000..73bf348c6
--- /dev/null
+++ b/python/example/connectivity/04-matrix.svg
@@ -0,0 +1,396 @@
+
+
+
diff --git a/python/example/connectivity/04-raster.svg b/python/example/connectivity/04-raster.svg
new file mode 100644
index 000000000..013ae2e78
--- /dev/null
+++ b/python/example/connectivity/04-raster.svg
@@ -0,0 +1,75773 @@
+
+
+
diff --git a/python/example/connectivity/all-to-all.py b/python/example/connectivity/all-to-all.py
new file mode 100644
index 000000000..7c4a072c2
--- /dev/null
+++ b/python/example/connectivity/all-to-all.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python3
+
+import arbor as A
+from arbor import units as U
+from util import plot_spikes, plot_network
+from unconnected import unconnected
+
+
+# global parameters
+# cell count
+N = 5
+# total runtime [ms]
+T = 1000
+# numerical time step [ms]
+dt = 0.1
+
+
+class all2all(unconnected):
+ def __init__(self, N) -> None:
+ super().__init__(N)
+
+ def network_description(self):
+ # network structure
+ full = f"(intersect (inter-cell) (source-cell (gid-range 0 {self.N})) (target-cell (gid-range 0 {self.N})))"
+ # parameters
+ weight = "(scalar 125)"
+ delay = "(scalar 0.5)"
+ return A.network_description(full, weight, delay, {})
+
+
+if __name__ == "__main__":
+ rec = all2all(N)
+ sim = A.simulation(rec)
+ sim.record(A.spike_recording.all)
+ sim.run(T * U.ms, dt * U.ms)
+ plot_spikes(sim, T, N, prefix="03-")
+ plot_network(rec, prefix="03-")
diff --git a/python/example/connectivity/brunel.py b/python/example/connectivity/brunel.py
new file mode 100644
index 000000000..a3d6cd825
--- /dev/null
+++ b/python/example/connectivity/brunel.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python3
+
+import arbor as A
+from arbor import units as U
+from util import plot_spikes, plot_network
+from unconnected import unconnected
+
+
+# global parameters
+# cell count
+N = 12500
+# total runtime [ms]
+T = 100
+# numerical time step [ms]
+dt = 0.1
+
+
+class brunel(unconnected):
+ def __init__(self, N) -> None:
+ super().__init__(N)
+ self.n_exc = int(0.8*N)
+ self.n_inh = N - self.n_exc
+ self.seed = 42
+ self.weight = 100
+ self.g = 0.8
+ self.p = 0.1
+
+ def network_description(self):
+ rand = f"""(intersect (inter-cell)
+ (random {self.seed} {self.p}))"""
+ inh = f"(gid-range {self.n_exc} {self.N})"
+ weight = f"""(if-else (source-cell {inh})
+ (scalar {self.g*self.weight})
+ (scalar {self.weight}))"""
+ delay = "(scalar 0.5)"
+ return A.network_description(rand, weight, delay, {})
+
+
+if __name__ == "__main__":
+ rec = brunel(N)
+ sim = A.simulation(rec)
+ sim.record(A.spike_recording.all)
+ sim.run(T * U.ms, dt * U.ms)
+ plot_spikes(sim, T, N, prefix="04-")
+ # this becomes _very slow_ with many cells
+ # plot_network(rec, prefix="04-")
diff --git a/python/example/connectivity/ring.py b/python/example/connectivity/ring.py
new file mode 100644
index 000000000..bafecadce
--- /dev/null
+++ b/python/example/connectivity/ring.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python3
+
+import arbor as A
+from arbor import units as U
+from util import plot_spikes, plot_network
+from unconnected import unconnected
+
+
+# global parameters
+# cell count
+N = 5
+# total runtime [ms]
+T = 1000
+# numerical time step [ms]
+dt = 0.1
+
+
+class ring(unconnected):
+ def __init__(self, N) -> None:
+ super().__init__(N)
+
+ def network_description(self):
+ # network structure
+ wraps = f"(intersect (source-cell {self.N - 1}) (target-cell 0))"
+ cells = f"(gid-range 0 {self.N})"
+ chain = f"(chain {cells})"
+ ring = f"(join {chain} {wraps})"
+ # parameters
+ weight = "(scalar 199.99999219)"
+ delay = "(scalar 0.5)"
+ return A.network_description(ring, weight, delay, {})
+
+
+if __name__ == "__main__":
+ ctx = A.context()
+ rec = ring(N)
+ sim = A.simulation(rec, ctx)
+ sim.record(A.spike_recording.all)
+ sim.run(T * U.ms, dt * U.ms)
+ plot_spikes(sim, T, N, prefix="02-")
+ plot_network(rec, prefix="02-")
diff --git a/python/example/connectivity/unconnected.py b/python/example/connectivity/unconnected.py
new file mode 100644
index 000000000..16acc9449
--- /dev/null
+++ b/python/example/connectivity/unconnected.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python3
+
+import arbor as A
+from arbor import units as U
+from util import plot_spikes
+
+# global parameters
+# cell count
+N = 5
+# total runtime [ms]
+T = 1000
+# numerical time step [ms]
+dt = 0.1
+
+
+class unconnected(A.recipe):
+ def __init__(self, N) -> None:
+ super().__init__()
+ self.N = N
+ # Cell prototype
+ self.cell = A.lif_cell("src", "tgt")
+ # random seed [0, 100]
+ self.seed = 42
+ # event generator parameters
+ self.gen_weight = 20
+ self.gen_freq = 2.5 * U.kHz
+
+ def num_cells(self) -> int:
+ return self.N
+
+ def event_generators(self, gid: int):
+ if gid >= 1:
+ return []
+ seed = self.seed + gid * 100
+ return [
+ A.event_generator(
+ "tgt",
+ self.gen_weight,
+ A.poisson_schedule(freq=self.gen_freq, seed=seed),
+ )
+ ]
+
+ def cell_description(self, gid: int):
+ return self.cell
+
+ def cell_kind(self, gid: int) -> A.cell_kind:
+ return A.cell_kind.lif
+
+
+if __name__ == "__main__":
+ rec = unconnected(N)
+ sim = A.simulation(rec)
+ sim.record(A.spike_recording.all)
+ sim.run(T * U.ms, dt * U.ms)
+ plot_spikes(sim, T, N, prefix="01-")
diff --git a/python/example/connectivity/util.py b/python/example/connectivity/util.py
new file mode 100644
index 000000000..5f944622b
--- /dev/null
+++ b/python/example/connectivity/util.py
@@ -0,0 +1,54 @@
+#!/usr/bin/env python3
+
+import matplotlib.pyplot as plt
+import numpy as np
+import networkx as nx
+import arbor as A
+
+def plot_network(rec, prefix=""):
+ fg, ax = plt.subplots()
+ n = rec.num_cells()
+ mat = np.zeros((n, n), dtype=int)
+
+ ctx = A.context()
+ net = A.generate_network_connections(rec, ctx)
+
+ for conn in net:
+ i = conn.source.gid
+ j = conn.target.gid
+ mat[i, j] += 1
+ ax.matshow(mat)
+ fg.savefig(f"{prefix}matrix.pdf")
+ fg.savefig(f"{prefix}matrix.png")
+ fg.savefig(f"{prefix}matrix.svg")
+
+ fg, ax = plt.subplots()
+ g = nx.MultiDiGraph()
+ g.add_nodes_from(np.arange(n))
+ for i in range(n):
+ for j in range(n):
+ for _ in range(mat[i, j]):
+ g.add_edge(i, j)
+ nx.draw(g, with_labels=True, font_weight="bold")
+ fg.savefig(f"{prefix}graph.pdf")
+ fg.savefig(f"{prefix}graph.png")
+ fg.savefig(f"{prefix}graph.svg")
+
+
+def plot_spikes(sim, T, N, prefix=""):
+ # Extract spikes
+ times = []
+ gids = []
+ for (gid, _), time in sim.spikes():
+ times.append(time)
+ gids.append(gid + 1)
+
+ fg, ax = plt.subplots()
+ ax.scatter(times, gids, c=gids)
+ ax.set_xlabel("Time $(t/ms)$")
+ ax.set_ylabel("GID")
+ ax.set_xlim(0, T)
+ ax.set_ylim(0, N+1)
+ fg.savefig(f"{prefix}raster.pdf")
+ fg.savefig(f"{prefix}raster.png")
+ fg.savefig(f"{prefix}raster.svg")
From 8f23c6abe2026870d2fe49befb129b613200bf32 Mon Sep 17 00:00:00 2001
From: Thorsten Hater <24411438+thorstenhater@users.noreply.github.com>
Date: Mon, 9 Dec 2024 14:07:59 +0100
Subject: [PATCH 2/4] Some polish
---
doc/tutorial/connectivity.rst | 43 +++++++++++++++++++++++++++++------
doc/tutorial/index.rst | 2 ++
2 files changed, 38 insertions(+), 7 deletions(-)
diff --git a/doc/tutorial/connectivity.rst b/doc/tutorial/connectivity.rst
index 2780953f0..8886609e3 100644
--- a/doc/tutorial/connectivity.rst
+++ b/doc/tutorial/connectivity.rst
@@ -7,6 +7,14 @@ In this tutorial, we are going to demonstrate how to leverage Arbor's
declarative connection description facilities to generate a few common network
types.
+.. admonition:: Concepts and Requirements
+
+ We will assume that you have read the basic network tutorials.
+
+ In addition to Arbor and its requirements `matplotlib`` and ``networkx``
+ need to be installed.
+
+
Prelude: Unconnected Cells
--------------------------
@@ -110,31 +118,42 @@ Upon close inspection, these combinators directly spell out the prose
description of the ring network given above! Connect adjacent cells and close
the ring by connecting the beginning and end.
-Running the network and plotting the spikes we find cells deeper into the ring spiking now.
+Running the network and plotting the spikes we find cells deeper into the ring spiking now
.. figure:: ../../python/example/connectivity/02-raster.svg
:width: 400
:align: center
+The network structure is rendered via ``networkx``
+
+.. figure:: ../../python/example/connectivity/02-raster.svg
+ :width: 400
+ :align: center
Excercise: All-to-all Network
-----------------------------
-Using the ``unconnected`` recipe and the network
-https://docs.arbor-sim.org/en/stable/concepts/interconnectivity.html#network-selection-expressions
-documentation , define fully connected network, i.e. where each cell is
+Using the ``unconnected`` recipe and the `network documentation `_
+ , define fully connected network, i.e. where each cell is
connected to every other cell except itself.
-Hint 1: ``source-cell`` and ``target-cell`` can take a range of ids
-Hint 2: Use ``inter-cell`` to remove self connections
+.. hint::
-You can find our soluction in ``python/example/all-to-all.py``, it produces the following output
+ 1. ``source-cell`` and ``target-cell`` can take a range of ids
+ 2. Use and intersection with ``inter-cell`` to remove self connections
+
+You can find our solution in ``python/example/all-to-all.py``, it produces the following output
.. figure:: ../../python/example/connectivity/03-raster.svg
:width: 400
:align: center
+The network structure is rendered via ``networkx``
+
+.. figure:: ../../python/example/connectivity/03-raster.svg
+ :width: 400
+ :align: center
Brunel Network
--------------
@@ -169,6 +188,16 @@ considered excitatory and the remainder inhibitory. The predicate ``inh``
reifies this description. The weight function ``weight`` then dispatches to one
of two values based on the predicate.
+Rendering the structure becomes slow and frankly unusable, but showing the
+adjacency matrix might be helpful
+
+.. figure:: ../../python/example/connectivity/04-matrix.svg
+ :width: 400
+ :align: center
+
+Note that by default the rendering is disabled to avoid the slowdown.
+
+
Final Thoughts
--------------
diff --git a/doc/tutorial/index.rst b/doc/tutorial/index.rst
index 3adb1567c..f0346cf03 100644
--- a/doc/tutorial/index.rst
+++ b/doc/tutorial/index.rst
@@ -45,6 +45,7 @@ Networks
network_ring
network_two_cells_gap_junctions
brunel
+
Probes
------
@@ -79,6 +80,7 @@ Advanced
nmodl
plasticity
+ connectivity
Demonstrations
--------------
From b3821352f2f5888684f8ffdb4c5fe1d4e3b1353a Mon Sep 17 00:00:00 2001
From: Thorsten Hater <24411438+thorstenhater@users.noreply.github.com>
Date: Mon, 9 Dec 2024 15:22:58 +0100
Subject: [PATCH 3/4] Finalise text
---
doc/cpp/remote.rst | 2 +-
doc/tutorial/connectivity.rst | 93 ++++++++++++++---------
doc/tutorial/index.rst | 9 ++-
python/example/connectivity/all-to-all.py | 2 +-
python/example/connectivity/brunel.py | 14 +++-
python/example/connectivity/ring.py | 4 +-
python/example/connectivity/util.py | 3 +-
7 files changed, 80 insertions(+), 47 deletions(-)
diff --git a/doc/cpp/remote.rst b/doc/cpp/remote.rst
index df2691285..8e1485c6f 100644
--- a/doc/cpp/remote.rst
+++ b/doc/cpp/remote.rst
@@ -24,7 +24,7 @@ Control Messages
Request termination, giving the reason as a message.
- .. cpp:member:: char[512] reason
+ .. cpp:member:: char reason[512]
.. cpp:class:: msg_epoch
diff --git a/doc/tutorial/connectivity.rst b/doc/tutorial/connectivity.rst
index 8886609e3..35ec826ed 100644
--- a/doc/tutorial/connectivity.rst
+++ b/doc/tutorial/connectivity.rst
@@ -3,17 +3,18 @@
Declarative Connectivity in Arbor
=================================
-In this tutorial, we are going to demonstrate how to leverage Arbor's
-declarative connection description facilities to generate a few common network
-types.
-
.. admonition:: Concepts and Requirements
- We will assume that you have read the basic network tutorials.
+ We will assume that you have read the basic recipe and network tutorials.
- In addition to Arbor and its requirements `matplotlib`` and ``networkx``
+ In addition to Arbor and its requirements ``matplotlib`` and ``networkx``
need to be installed.
+In this tutorial, we are going to demonstrate how to leverage Arbor's
+declarative connection description facilities to generate a few common network
+types. We will gradually build up complexity and generally show the full recipe
+first before discussing some of the relevant parts.
+
Prelude: Unconnected Cells
--------------------------
@@ -28,7 +29,7 @@ we want to emphasize building networks. We begin by defining the global settings
.. literalinclude:: ../../python/example/connectivity/unconnected.py
:language: python
- :lines: 7-15
+ :lines: 7-13
- ``N`` is the cell count of the simulation.
- ``T`` is the total runtime of the simulation in ``ms``.
@@ -38,37 +39,44 @@ These parameters are used here:
.. literalinclude:: ../../python/example/connectivity/unconnected.py
:language: python
- :lines: 52-62
+ :lines: 50-
-where we run the simulation in increments of ``t_interval``.
+where we run the simulation. Before we discuss the relevant details, the recipe
+reads in full
-Back to the recipe, we set a prototypical LIF cell:
+.. literalinclude:: ../../python/example/connectivity/unconnected.py
+ :language: python
+ :lines: 16-47
+
+In the recipe, we set a prototypical LIF cell:
.. literalinclude:: ../../python/example/connectivity/unconnected.py
:language: python
- :lines: 23
+ :lines: 21
and deliver it for all ``gid``:
.. literalinclude:: ../../python/example/connectivity/unconnected.py
:language: python
- :lines: 42-43
+ :lines: 43-44
-Also, the _first cell_ has an event generator attached, using a Poisson point process
-seeded with the cell's ``gid``.
+With large and complicated cells this can sometimes help with performance, here,
+it's just a convenient way to structure our recipe. Also, the *first cell* has
+an event generator attached, a Poisson point process seeded with the
+cell's ``gid``.
.. literalinclude:: ../../python/example/connectivity/unconnected.py
:language: python
- :lines: 33-41
+ :lines: 31-41
All other parameters are set in the constructor:
.. literalinclude:: ../../python/example/connectivity/unconnected.py
:language: python
- :lines: 19-28
+ :lines: 17-26
We also proceed to add spike recording and generate raster plots using a helper
-function ``plot_spikes`` from ``util.py``.
+function ``plot_spikes`` from ``util.py``, which results in
.. figure:: ../../python/example/connectivity/01-raster.svg
:width: 400
@@ -84,21 +92,28 @@ network. A ring structure is defined by connecting each cell to its predecessor,
i.e. the cell with ``gid = i`` is connected to the cell with ``gid = i - 1`` and
the cell ``gid = 0`` is connected to the last cell ``gid = N - 1``.
-We construct such a network by defining a new class ``ring`` deriving from the
+We construct such a network by defining a new recpi ``ring`` deriving from the
unconnected network
+.. literalinclude:: ../../python/example/connectivity/ring.py
+ :language: python
+
+The idiomatic way of extending classes with new functionality is to use
+inheritance. Importantly, the burden of initializing the base class falls on the
+derived class:
+
.. literalinclude:: ../../python/example/connectivity/ring.py
:language: python
:lines: 18-20
Next, we add a new method that is responsible for the network. Note that this
--- in contrast to most other methods on recipe --- does not have an argument of
-``gid``, since it is definining the _global_ network.
+``gid``, since it is definining the *global* network.
.. literalinclude:: ../../python/example/connectivity/ring.py
:language: python
:lines: 22-31
-/
+
Similar to the construction of a ``decor`` or ``cv_policy``, a light-weight
language inspired by LISP or Scheme is used here. For this tutorial, we use
Python format strings to compose expressions. Networks comprise a structure and
@@ -115,10 +130,9 @@ algebra queries operating on abstract sets of source and target identifiers.
- ``join`` takes two sub-structures ``A`` and ``B`` and returns their union.
Upon close inspection, these combinators directly spell out the prose
-description of the ring network given above! Connect adjacent cells and close
-the ring by connecting the beginning and end.
-
-Running the network and plotting the spikes we find cells deeper into the ring spiking now
+description of the ring network given above: Connect adjacent cells and close
+the ring by connecting the beginning and end! Running the network and plotting
+the spikes we find cells deeper into the ring spiking now
.. figure:: ../../python/example/connectivity/02-raster.svg
:width: 400
@@ -126,35 +140,39 @@ Running the network and plotting the spikes we find cells deeper into the ring s
The network structure is rendered via ``networkx``
-.. figure:: ../../python/example/connectivity/02-raster.svg
+.. figure:: ../../python/example/connectivity/02-graph.svg
:width: 400
:align: center
Excercise: All-to-all Network
-----------------------------
-Using the ``unconnected`` recipe and the `network documentation `_
- , define fully connected network, i.e. where each cell is
-connected to every other cell except itself.
-
+Using the ``unconnected`` recipe and the
+`network documentation `_
+define a fully connected network, i.e. where each cell is connected to every other cell except itself.
.. hint::
1. ``source-cell`` and ``target-cell`` can take a range of ids
2. Use and intersection with ``inter-cell`` to remove self connections
-You can find our solution in ``python/example/all-to-all.py``, it produces the following output
+Our solution produces the following output
.. figure:: ../../python/example/connectivity/03-raster.svg
:width: 400
:align: center
-The network structure is rendered via ``networkx``
+The network should look like this
-.. figure:: ../../python/example/connectivity/03-raster.svg
+.. figure:: ../../python/example/connectivity/03-graph.svg
:width: 400
:align: center
+For reference, we reproduce it here:
+
+.. literalinclude:: ../../python/example/connectivity/all-to-all.py
+ :language: python
+
Brunel Network
--------------
@@ -174,11 +192,18 @@ excitatory and inhibitory populations, such that
3. If the pre-synaptic cell is in the inhitatory population, the weight is :math:`w_{inh} < 0`
- :math:`|w_{inh}| < |w_{exc}|`
-We write down these rules in the recipe
+The Brunel network simulation can be implemented like this
+
+.. literalinclude:: ../../python/example/connectivity/brunel.py
+ :language: python
+ :lines: 18-32
+
+again using the base class ``unconnected`` to define everything except the
+network. We implement these by writing down the rules above in the recipe
.. literalinclude:: ../../python/example/connectivity/brunel.py
:language: python
- :lines: 28-36
+ :lines: 34-42
The ``rand`` structure encodes the random connectivity and removes any potential
self-connections by ``intersect`` with ``inter-cell``, as before. Next, we
diff --git a/doc/tutorial/index.rst b/doc/tutorial/index.rst
index f0346cf03..be8790a0c 100644
--- a/doc/tutorial/index.rst
+++ b/doc/tutorial/index.rst
@@ -73,7 +73,7 @@ Hardware
network_ring_gpu
Advanced
--------
+--------
.. toctree::
:maxdepth: 1
@@ -85,6 +85,7 @@ Advanced
Demonstrations
--------------
-We try to collect models scientists have built in our `contributor space `_.
-In addition to the tutorials, browsing these models should give you a good idea of what's possible with Arbor
-and find get in contact with other Arbor users.
+We try to collect models scientists have built in our `contributor space
+`_. In addition to the tutorials, browsing
+these models should give you a good idea of what's possible with Arbor and find
+get in contact with other Arbor users.
diff --git a/python/example/connectivity/all-to-all.py b/python/example/connectivity/all-to-all.py
index 7c4a072c2..7e6151ca5 100644
--- a/python/example/connectivity/all-to-all.py
+++ b/python/example/connectivity/all-to-all.py
@@ -24,7 +24,7 @@ def network_description(self):
full = f"(intersect (inter-cell) (source-cell (gid-range 0 {self.N})) (target-cell (gid-range 0 {self.N})))"
# parameters
weight = "(scalar 125)"
- delay = "(scalar 0.5)"
+ delay = "(scalar 0.5)"
return A.network_description(full, weight, delay, {})
diff --git a/python/example/connectivity/brunel.py b/python/example/connectivity/brunel.py
index a3d6cd825..ea70be0fd 100644
--- a/python/example/connectivity/brunel.py
+++ b/python/example/connectivity/brunel.py
@@ -18,21 +18,27 @@
class brunel(unconnected):
def __init__(self, N) -> None:
super().__init__(N)
- self.n_exc = int(0.8*N)
+ # excitatory population: first 80% of the gids
+ self.n_exc = int(0.8 * N)
+ # inhibitory population: the remainder
self.n_inh = N - self.n_exc
+ # seed for random number generation
self.seed = 42
+ # excitatory weight
self.weight = 100
+ # relative weight of inhibitory connections
self.g = 0.8
+ # probability of connecting any two neurons
self.p = 0.1
def network_description(self):
- rand = f"""(intersect (inter-cell)
+ rand = f"""(intersect (inter-cell)
(random {self.seed} {self.p}))"""
- inh = f"(gid-range {self.n_exc} {self.N})"
+ inh = f"(gid-range {self.n_exc} {self.N})"
weight = f"""(if-else (source-cell {inh})
(scalar {self.g*self.weight})
(scalar {self.weight}))"""
- delay = "(scalar 0.5)"
+ delay = "(scalar 0.5)"
return A.network_description(rand, weight, delay, {})
diff --git a/python/example/connectivity/ring.py b/python/example/connectivity/ring.py
index bafecadce..bcf2705fd 100644
--- a/python/example/connectivity/ring.py
+++ b/python/example/connectivity/ring.py
@@ -24,10 +24,10 @@ def network_description(self):
wraps = f"(intersect (source-cell {self.N - 1}) (target-cell 0))"
cells = f"(gid-range 0 {self.N})"
chain = f"(chain {cells})"
- ring = f"(join {chain} {wraps})"
+ ring = f"(join {chain} {wraps})"
# parameters
weight = "(scalar 199.99999219)"
- delay = "(scalar 0.5)"
+ delay = "(scalar 0.5)"
return A.network_description(ring, weight, delay, {})
diff --git a/python/example/connectivity/util.py b/python/example/connectivity/util.py
index 5f944622b..8e4dd5e14 100644
--- a/python/example/connectivity/util.py
+++ b/python/example/connectivity/util.py
@@ -5,6 +5,7 @@
import networkx as nx
import arbor as A
+
def plot_network(rec, prefix=""):
fg, ax = plt.subplots()
n = rec.num_cells()
@@ -48,7 +49,7 @@ def plot_spikes(sim, T, N, prefix=""):
ax.set_xlabel("Time $(t/ms)$")
ax.set_ylabel("GID")
ax.set_xlim(0, T)
- ax.set_ylim(0, N+1)
+ ax.set_ylim(0, N + 1)
fg.savefig(f"{prefix}raster.pdf")
fg.savefig(f"{prefix}raster.png")
fg.savefig(f"{prefix}raster.svg")
From 649fccd8278a456d4fa55df19580d6cac6bbd476 Mon Sep 17 00:00:00 2001
From: Thorsten Hater <24411438+thorstenhater@users.noreply.github.com>
Date: Mon, 9 Dec 2024 15:35:05 +0100
Subject: [PATCH 4/4] Done now.
---
doc/tutorial/connectivity.rst | 7 +-
python/example/connectivity/04-graph.svg | 20411 +++--
python/example/connectivity/04-matrix.svg | 170 +-
python/example/connectivity/04-raster.svg | 77646 ++------------------
python/example/connectivity/brunel.py | 5 +-
python/example/connectivity/util.py | 25 +-
6 files changed, 18287 insertions(+), 79977 deletions(-)
diff --git a/doc/tutorial/connectivity.rst b/doc/tutorial/connectivity.rst
index 35ec826ed..0b4655611 100644
--- a/doc/tutorial/connectivity.rst
+++ b/doc/tutorial/connectivity.rst
@@ -13,8 +13,9 @@ Declarative Connectivity in Arbor
In this tutorial, we are going to demonstrate how to leverage Arbor's
declarative connection description facilities to generate a few common network
types. We will gradually build up complexity and generally show the full recipe
-first before discussing some of the relevant parts.
-
+first before discussing some of the relevant parts. High-level connectivity
+descriptions can be more intuitive for some types of networks as well as more
+performant in Python simulations, as the construction is handled entirely in C++.
Prelude: Unconnected Cells
--------------------------
@@ -220,7 +221,7 @@ adjacency matrix might be helpful
:width: 400
:align: center
-Note that by default the rendering is disabled to avoid the slowdown.
+Note that rendering can be disabled, if things get too slow.
Final Thoughts
diff --git a/python/example/connectivity/04-graph.svg b/python/example/connectivity/04-graph.svg
index 622e79d7f..59c40acce 100644
--- a/python/example/connectivity/04-graph.svg
+++ b/python/example/connectivity/04-graph.svg
@@ -6,7 +6,7 @@
- 2024-12-09T12:59:30.363241
+ 2024-12-09T15:32:40.720321
image/svg+xml
@@ -30,10098 +30,15498 @@ z
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+" clip-path="url(#p64bb670f30)" style="stroke: #000000; stroke-linecap: round"/>
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/python/example/connectivity/04-matrix.svg b/python/example/connectivity/04-matrix.svg
index 73bf348c6..8001a4c5d 100644
--- a/python/example/connectivity/04-matrix.svg
+++ b/python/example/connectivity/04-matrix.svg
@@ -6,7 +6,7 @@
- 2024-12-09T12:59:28.953765
+ 2024-12-09T15:32:38.665364
image/svg+xml
@@ -37,35 +37,35 @@ L 103.104 41.472
z
" style="fill: #ffffff"/>
-
+
+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" id="image7b70c13f47" transform="scale(1 -1) translate(0 -266.4)" x="103.104" y="-41.184" width="266.4" height="266.4"/>
-
-
+
-
-
+
-
+