From 160903ad181752801df4268f01e81f3e7b74e7ca Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Fri, 12 Mar 2021 13:24:37 -0800 Subject: [PATCH 01/19] user-specified chunk layouts --- doc/docs/Python_User_Interface.md | 7 +++-- python/simulation.py | 45 ++++++++++++++++++++++++++-- src/meep.hpp | 14 +++++++++ src/structure_dump.cpp | 49 +++++++++++++++++++++++++++++++ 4 files changed, 109 insertions(+), 6 deletions(-) diff --git a/doc/docs/Python_User_Interface.md b/doc/docs/Python_User_Interface.md index 0bc74903e..b403f9971 100644 --- a/doc/docs/Python_User_Interface.md +++ b/doc/docs/Python_User_Interface.md @@ -321,9 +321,10 @@ Python. `Vector3` is a `meep` class. Structure](#load-and-dump-structure) for more information. + **`chunk_layout` [`string` or `Simulation` instance]** — This will cause the - `Simulation` to use the chunk layout described by either an h5 file (created by - `Simulation.dump_chunk_layout`) or another `Simulation`. See [Load and Dump - Structure](#load-and-dump-structure) for more information. + `Simulation` to use the chunk layout described by either (1) an h5 file (created + using `Simulation.dump_chunk_layout`), (2) another `Simulation` or (3) a + `BinaryPartition` object. See [Load and Dump Structure](#load-and-dump-structure) + for more information. The following require a bit more understanding of the inner workings of Meep to use. See also [SWIG Wrappers](#swig-wrappers). diff --git a/python/simulation.py b/python/simulation.py index 6d3bcb6be..e18e93103 100644 --- a/python/simulation.py +++ b/python/simulation.py @@ -1163,9 +1163,10 @@ def __init__(self, Structure](#load-and-dump-structure) for more information. + **`chunk_layout` [`string` or `Simulation` instance]** — This will cause the - `Simulation` to use the chunk layout described by either an h5 file (created by - `Simulation.dump_chunk_layout`) or another `Simulation`. See [Load and Dump - Structure](#load-and-dump-structure) for more information. + `Simulation` to use the chunk layout described by either (1) an h5 file (created + using `Simulation.dump_chunk_layout`), (2) another `Simulation` or (3) a + `BinaryPartition` object. See [Load and Dump Structure](#load-and-dump-structure) + for more information. The following require a bit more understanding of the inner workings of Meep to use. See also [SWIG Wrappers](#swig-wrappers). @@ -5171,3 +5172,41 @@ def merge_subgroup_data(data): comm.Alltoallv(smsg, rmsg) return output + +class BinaryPartition(object): + """ + Binary tree class used for specifying a cell partition of arbitrary sized chunks for use with `chunk_layout`. + The constructor accepts three separate groups of arguments: (1) `data`: a list of lists where each + list entry is either (a) a node defined as `[ (split_dir,split_pos), left, right ]` for which `split_dir` + and `split_pos` define the splitting direction (i.e., `X`, `Y`, `Z`) and position (e.g., `3.5`, + `-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) or (b) + a leaf with integer value `id` for the chunk id, (2) a node defined using `split_dir`, `split_pos`, + `left`, and `right`, or (3) a leaf with `id`. This input format enables specifying the binary tree + using either a single list for the entire tree or defining the nodes and leaves separately. + """ + def __init__(self, data=None, split_dir=None, split_pos=None, left=None, right=None, id=None): + self.split_dir = None + self.split_pos = None + self.id = None + self.left = None + self.right = None + if data is not None: + if isinstance(data,list) and len(data) == 3: + if isinstance(data[0],tuple) and len(data[0]) == 2: + self.split_dir = data[0][0] + self.split_pos = data[0][1] + else: + raise ValueError("expecting 2-tuple (split_dir,split_pos) but got {}".format(data[0])) + self.left = BinaryPartition(data=data[1]) + self.right = BinaryPartition(data=data[2]) + elif isinstance(data,int): + self.id = data + else: + raise ValueError("expecting list [(split_dir,split_pos), left, right] or int (id) but got {}".format(data)) + elif split_dir is not None: + self.split_dir = split_dir + self.split_pos = split_pos + self.left = left + self.right = right + else: + self.id = id diff --git a/src/meep.hpp b/src/meep.hpp index 9848c1387..8a95d3bed 100644 --- a/src/meep.hpp +++ b/src/meep.hpp @@ -707,6 +707,8 @@ boundary_region pml(double thickness, direction d, double Rasymptotic = 1e-15, boundary_region pml(double thickness, double Rasymptotic = 1e-15, double mean_stretch = 1.0); #define no_pml() boundary_region() +class binary_partition; + class structure { public: structure_chunk **chunks; @@ -773,6 +775,7 @@ class structure { void dump_chunk_layout(const char *filename); void load(const char *filename); void load_chunk_layout(const char *filename, boundary_region &br); + void load_chunk_layout(const binary_partition *bp, boundary_region &br); void load_chunk_layout(const std::vector &gvs, boundary_region &br); // monitor.cpp @@ -2150,6 +2153,17 @@ vec get_k(void *vedata); realnum linear_interpolate(realnum rx, realnum ry, realnum rz, realnum *data, int nx, int ny, int nz, int stride); +// binary tree class for importing layout of chunk partition +class binary_partition { +public: + binary_partition(int _id); + binary_partition(direction _split_dir, double _split_pos); + direction split_dir; + double split_pos; + int id; + binary_partition *left, *right; +}; + } /* namespace meep */ #endif /* MEEP_H */ diff --git a/src/structure_dump.cpp b/src/structure_dump.cpp index a616ae8db..d13655626 100644 --- a/src/structure_dump.cpp +++ b/src/structure_dump.cpp @@ -414,6 +414,55 @@ void structure::set_chiP_from_file(h5file *file, const char *dataset, field_type } } +binary_partition::binary_partition(int _id) { + id = _id; + split_dir = NO_DIRECTION; + split_pos = 0.0; + left = NULL; + right = NULL; +} + +binary_partition::binary_partition(direction _split_dir, double _split_pos) { + split_dir = _split_dir; + split_pos = _split_pos; + id = -1; + left = NULL; + right = NULL; +} + +static void split_by_binarytree(grid_volume gvol, + std::vector &result, + std::vector &chunk_ids, + const binary_partition *bp) { + // reached a leaf + if ((bp->left == NULL) && (bp->right == NULL)) { + result.push_back(gvol); + chunk_ids.push_back(bp->id); + return; + } + + int split_point = (size_t)((bp->split_pos - gvol.surroundings().in_direction_min(bp->split_dir)) / + gvol.surroundings().in_direction(bp->split_dir) * + gvol.num_direction(bp->split_dir) + 0.5); + // traverse left branch + if (bp->left != NULL) { + grid_volume left_gvol = gvol.split_at_fraction(false, split_point, bp->split_dir); + split_by_binarytree(left_gvol, result, chunk_ids, bp->left); + } + // traverse right branch + if (bp->right != NULL) { + grid_volume right_gvol = gvol.split_at_fraction(true, split_point, bp->split_dir); + split_by_binarytree(right_gvol, result, chunk_ids, bp->right); + } +} + +void structure::load_chunk_layout(const binary_partition *bp, boundary_region &br) { + std::vector gvs; + std::vector chunk_ids; + split_by_binarytree(gv, gvs, chunk_ids, bp); + load_chunk_layout(gvs, br); +} + void structure::load_chunk_layout(const char *filename, boundary_region &br) { // Load chunk grid_volumes from a file h5file file(filename, h5file::READONLY, true); From 9885c3d54ad9057ce2cbc80ea61a8a44fa48b362 Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Fri, 12 Mar 2021 21:44:15 -0800 Subject: [PATCH 02/19] documentation for user manual --- doc/docs/Python_User_Interface.md | 55 +++++++++++++++++++++++++--- doc/docs/Python_User_Interface.md.in | 1 + python/meep.i | 1 + python/simulation.py | 29 ++++++++------- src/meep.hpp | 3 ++ src/structure_dump.cpp | 14 ++++++- 6 files changed, 84 insertions(+), 19 deletions(-) diff --git a/doc/docs/Python_User_Interface.md b/doc/docs/Python_User_Interface.md index b403f9971..58e2b24dd 100644 --- a/doc/docs/Python_User_Interface.md +++ b/doc/docs/Python_User_Interface.md @@ -320,11 +320,11 @@ Python. `Vector3` is a `meep` class. `mp.dump_structure`. Defaults to an empty string. See [Load and Dump Structure](#load-and-dump-structure) for more information. -+ **`chunk_layout` [`string` or `Simulation` instance]** — This will cause the - `Simulation` to use the chunk layout described by either (1) an h5 file (created - using `Simulation.dump_chunk_layout`), (2) another `Simulation` or (3) a - `BinaryPartition` object. See [Load and Dump Structure](#load-and-dump-structure) - for more information. ++ **`chunk_layout` [`string` or `Simulation` or `BinaryPartition` instance]** — + This will cause the `Simulation` to use the chunk layout described by either + (1) an `.h5` file (created using `Simulation.dump_chunk_layout`), (2) another + `Simulation` or (3) a [`BinaryPartition`](#binarypartition) object. See + [Load and Dump Structure](#load-and-dump-structure) for more information. The following require a bit more understanding of the inner workings of Meep to use. See also [SWIG Wrappers](#swig-wrappers). @@ -7289,6 +7289,51 @@ former value. +--- + + +### BinaryPartition + +```python +class BinaryPartition(object): +``` + +
+ +Binary tree class used for specifying a cell partition of arbitrary sized chunks for use as the +`chunk_layout` parameter of the `Simulation` class object. + +
+ + + + + +
+ +```python +def __init__(self, + data=None, + split_dir=None, + split_pos=None, + left=None, + right=None, + id=None): +``` + +
+ +The constructor accepts three separate groups of arguments: (1) `data`: a list of lists where each +list entry is either (a) a node defined as `[ (split_dir,split_pos), left, right ]` for which `split_dir` +and `split_pos` define the splitting direction (i.e., `X`, `Y`, `Z`) and position (e.g., `3.5`, +`-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) +or (b) a leaf with integer value `id` for the chunk id, (2) a node defined using `split_dir`, `split_pos`, +`left`, and `right`, or (3) a leaf with `id`. This input format enables specifying the binary tree using +either a single list for the entire tree or defining the nodes and leaves individually. + +
+ +
Miscellaneous Functions Reference --------------------------------- diff --git a/doc/docs/Python_User_Interface.md.in b/doc/docs/Python_User_Interface.md.in index f77f50ea9..199429b35 100644 --- a/doc/docs/Python_User_Interface.md.in +++ b/doc/docs/Python_User_Interface.md.in @@ -822,6 +822,7 @@ The following classes are available directly via the `meep` package. @@ Verbosity.get @@ @@ Verbosity.set @@ +@@ BinaryPartition[methods-with-docstrings] @@ Miscellaneous Functions Reference --------------------------------- diff --git a/python/meep.i b/python/meep.i index 83abbea01..14a6f1b53 100644 --- a/python/meep.i +++ b/python/meep.i @@ -1659,6 +1659,7 @@ PyObject *_get_array_slice_dimensions(meep::fields *f, const meep::volume &where ) from .simulation import ( Absorber, + BinaryPartition, Ldos, EnergyRegion, FluxRegion, diff --git a/python/simulation.py b/python/simulation.py index e18e93103..8f6cdce03 100644 --- a/python/simulation.py +++ b/python/simulation.py @@ -1162,11 +1162,11 @@ def __init__(self, `mp.dump_structure`. Defaults to an empty string. See [Load and Dump Structure](#load-and-dump-structure) for more information. - + **`chunk_layout` [`string` or `Simulation` instance]** — This will cause the - `Simulation` to use the chunk layout described by either (1) an h5 file (created - using `Simulation.dump_chunk_layout`), (2) another `Simulation` or (3) a - `BinaryPartition` object. See [Load and Dump Structure](#load-and-dump-structure) - for more information. + + **`chunk_layout` [`string` or `Simulation` or `BinaryPartition` instance]** — + This will cause the `Simulation` to use the chunk layout described by either + (1) an `.h5` file (created using `Simulation.dump_chunk_layout`), (2) another + `Simulation` or (3) a [`BinaryPartition`](#binarypartition) object. See + [Load and Dump Structure](#load-and-dump-structure) for more information. The following require a bit more understanding of the inner workings of Meep to use. See also [SWIG Wrappers](#swig-wrappers). @@ -5175,16 +5175,19 @@ def merge_subgroup_data(data): class BinaryPartition(object): """ - Binary tree class used for specifying a cell partition of arbitrary sized chunks for use with `chunk_layout`. - The constructor accepts three separate groups of arguments: (1) `data`: a list of lists where each - list entry is either (a) a node defined as `[ (split_dir,split_pos), left, right ]` for which `split_dir` - and `split_pos` define the splitting direction (i.e., `X`, `Y`, `Z`) and position (e.g., `3.5`, - `-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) or (b) - a leaf with integer value `id` for the chunk id, (2) a node defined using `split_dir`, `split_pos`, - `left`, and `right`, or (3) a leaf with `id`. This input format enables specifying the binary tree - using either a single list for the entire tree or defining the nodes and leaves separately. + Binary tree class used for specifying a cell partition of arbitrary sized chunks for use as the + `chunk_layout` parameter of the `Simulation` class object. """ def __init__(self, data=None, split_dir=None, split_pos=None, left=None, right=None, id=None): + """ + The constructor accepts three separate groups of arguments: (1) `data`: a list of lists where each + list entry is either (a) a node defined as `[ (split_dir,split_pos), left, right ]` for which `split_dir` + and `split_pos` define the splitting direction (i.e., `X`, `Y`, `Z`) and position (e.g., `3.5`, + `-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) + or (b) a leaf with integer value `id` for the chunk id, (2) a node defined using `split_dir`, `split_pos`, + `left`, and `right`, or (3) a leaf with `id`. This input format enables specifying the binary tree using + either a single list for the entire tree or defining the nodes and leaves individually. + """ self.split_dir = None self.split_pos = None self.id = None diff --git a/src/meep.hpp b/src/meep.hpp index 8a95d3bed..8cb444592 100644 --- a/src/meep.hpp +++ b/src/meep.hpp @@ -777,6 +777,9 @@ class structure { void load_chunk_layout(const char *filename, boundary_region &br); void load_chunk_layout(const binary_partition *bp, boundary_region &br); void load_chunk_layout(const std::vector &gvs, boundary_region &br); + void load_chunk_layout(const std::vector &gvs, + const std::vector &chunk_ids, + boundary_region &br); // monitor.cpp std::complex get_chi1inv(component, direction, const ivec &origloc, double frequency = 0, diff --git a/src/structure_dump.cpp b/src/structure_dump.cpp index d13655626..c8bc90414 100644 --- a/src/structure_dump.cpp +++ b/src/structure_dump.cpp @@ -460,7 +460,7 @@ void structure::load_chunk_layout(const binary_partition *bp, boundary_region &b std::vector gvs; std::vector chunk_ids; split_by_binarytree(gv, gvs, chunk_ids, bp); - load_chunk_layout(gvs, br); + load_chunk_layout(gvs, chunk_ids, br); } void structure::load_chunk_layout(const char *filename, boundary_region &br) { @@ -525,6 +525,18 @@ void structure::load_chunk_layout(const std::vector &gvs, boundary_ check_chunks(); } +void structure::load_chunk_layout(const std::vector &gvs, + const std::vector &chunk_ids, + boundary_region &br) { + // Recreate the chunks with the new grid_volumes + for (int i = 0; i < num_chunks; ++i) { + if (chunks[i]->refcount-- <= 1) delete chunks[i]; + chunks[i] = new structure_chunk(gvs[i], v, Courant, chunk_ids[i]); + br.apply(this, chunks[i]); + } + check_chunks(); +} + void structure::load(const char *filename) { h5file file(filename, h5file::READONLY, true); From 29115dd68549f053f36620814cb905fb8beb6285 Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Thu, 18 Mar 2021 12:33:42 -0700 Subject: [PATCH 03/19] add SWIG typemaps for binary_partition --- python/meep.i | 51 ++++++++++++++++++++++++++++++++++++++++ python/typemap_utils.cpp | 16 +++++++++++++ 2 files changed, 67 insertions(+) diff --git a/python/meep.i b/python/meep.i index 14a6f1b53..f5afede2d 100644 --- a/python/meep.i +++ b/python/meep.i @@ -1439,6 +1439,57 @@ void _get_gradient(PyObject *grad, PyObject *fields_a, PyObject *fields_f, PyObj } } +// typemaps for binary_partition + +meep::binary_partition *py_bp_to_bp(PyObject *bp) { + meep::binary_partition *bp = NULL; + if (bp == Py_None) return bp; + + PyObject *id = PyObject_GetAttrString(bp, "id"); + PyObject *split_dir = PyObject_GetAttrString(bp, "split_dir"); + PyObject *split_pos = PyObject_GetAttrString(bp, "split_pos"); + PyObject *left = PyObject_GetAttrString(bp, "left"); + PyObject *right = PyObject_GetAttrString(bp, "right"); + + if (!id || !split_dir || !split_pos || !left || !right) { + // error.... + } + + if (PyLong_Check(id)) { + bp = new meep::binary_partition(PyLong_AsLong(id)); + } else { + bp = new meep::binary_partition(direction(PyLong_AsLong(split_dir)), PyFloat_AsDouble(split_pos)); + bp->left = py_bp_to_bp(left); + bp->right = py_bp_to_bp(right); + } + + Py_XDECREF(id); + Py_XDECREF(split_dir); + Py_XDECREF(split_pos); + Py_XDECREF(left); + Py_XDECREF(right); + return bp; +} + +%typecheck (SWIG_TYPECHECK_POINTER) binary_partition * { + $1 = PyObject_IsInstance($input, py_binary_partition_object()); +} + +%typemap(in) meep::binary_partition * { + $1 = py_bp_to_bp($input); + if(!$1) { + SWIG_fail; + } +} + +%typemap(arginit) meep::binary_partition * { + $1 = NULL; +} + +%typemap(freearg) meep::binary_partition * { + delete $1; +} + // Tells Python to take ownership of the h5file* this function returns so that // it gets garbage collected and the file gets closed. %newobject meep::fields::open_h5file; diff --git a/python/typemap_utils.cpp b/python/typemap_utils.cpp index f0606d2d8..0d7e273c5 100644 --- a/python/typemap_utils.cpp +++ b/python/typemap_utils.cpp @@ -1029,3 +1029,19 @@ static PyObject *gobj_list_to_py_list(geometric_object_list *objs) { return py_res; } + +static PyObject *get_meep_mod() { + // Return value: Borrowed reference + static PyObject *meep_mod = NULL; + if (meep_mod == NULL) { meep_mod = PyImport_ImportModule("meep"); } + return meep_mod; +} + +static PyObject *py_binary_partition_object() { + // Return value: Borrowed reference + static PyObject *bp_type = NULL; + if (bp_type == NULL) { + bp_type = PyObject_GetAttrString(get_meep_mod(), "BinaryPartition"); + } + return bp_type; +} From 0f4d984d69253200960c5c5a7b7c1257b9347f1c Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Thu, 18 Mar 2021 12:38:53 -0700 Subject: [PATCH 04/19] move py_bp_to_bp from meep.i into typemaps_utils.cpp --- python/meep.i | 30 ------------------------------ python/typemap_utils.cpp | 30 ++++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/python/meep.i b/python/meep.i index f5afede2d..300333a52 100644 --- a/python/meep.i +++ b/python/meep.i @@ -1441,36 +1441,6 @@ void _get_gradient(PyObject *grad, PyObject *fields_a, PyObject *fields_f, PyObj // typemaps for binary_partition -meep::binary_partition *py_bp_to_bp(PyObject *bp) { - meep::binary_partition *bp = NULL; - if (bp == Py_None) return bp; - - PyObject *id = PyObject_GetAttrString(bp, "id"); - PyObject *split_dir = PyObject_GetAttrString(bp, "split_dir"); - PyObject *split_pos = PyObject_GetAttrString(bp, "split_pos"); - PyObject *left = PyObject_GetAttrString(bp, "left"); - PyObject *right = PyObject_GetAttrString(bp, "right"); - - if (!id || !split_dir || !split_pos || !left || !right) { - // error.... - } - - if (PyLong_Check(id)) { - bp = new meep::binary_partition(PyLong_AsLong(id)); - } else { - bp = new meep::binary_partition(direction(PyLong_AsLong(split_dir)), PyFloat_AsDouble(split_pos)); - bp->left = py_bp_to_bp(left); - bp->right = py_bp_to_bp(right); - } - - Py_XDECREF(id); - Py_XDECREF(split_dir); - Py_XDECREF(split_pos); - Py_XDECREF(left); - Py_XDECREF(right); - return bp; -} - %typecheck (SWIG_TYPECHECK_POINTER) binary_partition * { $1 = PyObject_IsInstance($input, py_binary_partition_object()); } diff --git a/python/typemap_utils.cpp b/python/typemap_utils.cpp index 0d7e273c5..25216523c 100644 --- a/python/typemap_utils.cpp +++ b/python/typemap_utils.cpp @@ -1030,6 +1030,36 @@ static PyObject *gobj_list_to_py_list(geometric_object_list *objs) { return py_res; } +static meep::binary_partition *py_bp_to_bp(PyObject *bp) { + meep::binary_partition *bp = NULL; + if (bp == Py_None) return bp; + + PyObject *id = PyObject_GetAttrString(bp, "id"); + PyObject *split_dir = PyObject_GetAttrString(bp, "split_dir"); + PyObject *split_pos = PyObject_GetAttrString(bp, "split_pos"); + PyObject *left = PyObject_GetAttrString(bp, "left"); + PyObject *right = PyObject_GetAttrString(bp, "right"); + + if (!id || !split_dir || !split_pos || !left || !right) { + // error.... + } + + if (PyLong_Check(id)) { + bp = new meep::binary_partition(PyLong_AsLong(id)); + } else { + bp = new meep::binary_partition(direction(PyLong_AsLong(split_dir)), PyFloat_AsDouble(split_pos)); + bp->left = py_bp_to_bp(left); + bp->right = py_bp_to_bp(right); + } + + Py_XDECREF(id); + Py_XDECREF(split_dir); + Py_XDECREF(split_pos); + Py_XDECREF(left); + Py_XDECREF(right); + return bp; +} + static PyObject *get_meep_mod() { // Return value: Borrowed reference static PyObject *meep_mod = NULL; From 0dae7569ba17822bdb858d75563fbc1680e5656b Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Thu, 18 Mar 2021 12:44:16 -0700 Subject: [PATCH 05/19] rename bp to pybp --- python/typemap_utils.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/python/typemap_utils.cpp b/python/typemap_utils.cpp index 25216523c..0794e2ba1 100644 --- a/python/typemap_utils.cpp +++ b/python/typemap_utils.cpp @@ -1030,15 +1030,15 @@ static PyObject *gobj_list_to_py_list(geometric_object_list *objs) { return py_res; } -static meep::binary_partition *py_bp_to_bp(PyObject *bp) { +static meep::binary_partition *py_bp_to_bp(PyObject *pybp) { meep::binary_partition *bp = NULL; - if (bp == Py_None) return bp; + if (pybp == Py_None) return bp; - PyObject *id = PyObject_GetAttrString(bp, "id"); - PyObject *split_dir = PyObject_GetAttrString(bp, "split_dir"); - PyObject *split_pos = PyObject_GetAttrString(bp, "split_pos"); - PyObject *left = PyObject_GetAttrString(bp, "left"); - PyObject *right = PyObject_GetAttrString(bp, "right"); + PyObject *id = PyObject_GetAttrString(pybp, "id"); + PyObject *split_dir = PyObject_GetAttrString(pybp, "split_dir"); + PyObject *split_pos = PyObject_GetAttrString(pybp, "split_pos"); + PyObject *left = PyObject_GetAttrString(pybp, "left"); + PyObject *right = PyObject_GetAttrString(pybp, "right"); if (!id || !split_dir || !split_pos || !left || !right) { // error.... From 0f38613eec039358c210e601798971cc7d5605ca Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Fri, 19 Mar 2021 16:08:51 -0700 Subject: [PATCH 06/19] add unit test and update docs --- doc/docs/Python_User_Interface.md | 11 +++--- python/Makefile.am | 1 + python/meep.i | 2 +- python/simulation.py | 11 +++--- python/tests/chunk_layout.py | 60 +++++++++++++++++++++++++++++++ 5 files changed, 74 insertions(+), 11 deletions(-) create mode 100644 python/tests/chunk_layout.py diff --git a/doc/docs/Python_User_Interface.md b/doc/docs/Python_User_Interface.md index 58e2b24dd..f386955fe 100644 --- a/doc/docs/Python_User_Interface.md +++ b/doc/docs/Python_User_Interface.md @@ -323,8 +323,8 @@ Python. `Vector3` is a `meep` class. + **`chunk_layout` [`string` or `Simulation` or `BinaryPartition` instance]** — This will cause the `Simulation` to use the chunk layout described by either (1) an `.h5` file (created using `Simulation.dump_chunk_layout`), (2) another - `Simulation` or (3) a [`BinaryPartition`](#binarypartition) object. See - [Load and Dump Structure](#load-and-dump-structure) for more information. + `Simulation` instance or (3) a [`BinaryPartition`](#binarypartition) object. + See [Load and Dump Structure](#load-and-dump-structure) for more information. The following require a bit more understanding of the inner workings of Meep to use. See also [SWIG Wrappers](#swig-wrappers). @@ -7327,9 +7327,10 @@ The constructor accepts three separate groups of arguments: (1) `data`: a list o list entry is either (a) a node defined as `[ (split_dir,split_pos), left, right ]` for which `split_dir` and `split_pos` define the splitting direction (i.e., `X`, `Y`, `Z`) and position (e.g., `3.5`, `-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) -or (b) a leaf with integer value `id` for the chunk id, (2) a node defined using `split_dir`, `split_pos`, -`left`, and `right`, or (3) a leaf with `id`. This input format enables specifying the binary tree using -either a single list for the entire tree or defining the nodes and leaves individually. +or (b) a leaf with integer value `id` in the range [0, num_chunks-1] for the chunk id, (2) a node +defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with `id`. This input format +enables specifying the binary tree using either a single list for the entire tree or defining the +nodes and leaves individually. diff --git a/python/Makefile.am b/python/Makefile.am index 40972145d..8d1e485db 100644 --- a/python/Makefile.am +++ b/python/Makefile.am @@ -44,6 +44,7 @@ TESTS = \ $(BINARY_GRATING_TEST) \ $(TEST_DIR)/cavity_arrayslice.py \ $(TEST_DIR)/cavity_farfield.py \ + $(TEST_DIR)/chunk_layout.py \ $(TEST_DIR)/chunks.py \ $(TEST_DIR)/cyl_ellipsoid.py \ $(TEST_DIR)/dft_energy.py \ diff --git a/python/meep.i b/python/meep.i index 300333a52..074df1c98 100644 --- a/python/meep.i +++ b/python/meep.i @@ -1441,7 +1441,7 @@ void _get_gradient(PyObject *grad, PyObject *fields_a, PyObject *fields_f, PyObj // typemaps for binary_partition -%typecheck (SWIG_TYPECHECK_POINTER) binary_partition * { +%typecheck (SWIG_TYPECHECK_POINTER) meep::binary_partition * { $1 = PyObject_IsInstance($input, py_binary_partition_object()); } diff --git a/python/simulation.py b/python/simulation.py index 8f6cdce03..2f707436e 100644 --- a/python/simulation.py +++ b/python/simulation.py @@ -1165,8 +1165,8 @@ def __init__(self, + **`chunk_layout` [`string` or `Simulation` or `BinaryPartition` instance]** — This will cause the `Simulation` to use the chunk layout described by either (1) an `.h5` file (created using `Simulation.dump_chunk_layout`), (2) another - `Simulation` or (3) a [`BinaryPartition`](#binarypartition) object. See - [Load and Dump Structure](#load-and-dump-structure) for more information. + `Simulation` instance or (3) a [`BinaryPartition`](#binarypartition) object. + See [Load and Dump Structure](#load-and-dump-structure) for more information. The following require a bit more understanding of the inner workings of Meep to use. See also [SWIG Wrappers](#swig-wrappers). @@ -5184,9 +5184,10 @@ def __init__(self, data=None, split_dir=None, split_pos=None, left=None, right=N list entry is either (a) a node defined as `[ (split_dir,split_pos), left, right ]` for which `split_dir` and `split_pos` define the splitting direction (i.e., `X`, `Y`, `Z`) and position (e.g., `3.5`, `-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) - or (b) a leaf with integer value `id` for the chunk id, (2) a node defined using `split_dir`, `split_pos`, - `left`, and `right`, or (3) a leaf with `id`. This input format enables specifying the binary tree using - either a single list for the entire tree or defining the nodes and leaves individually. + or (b) a leaf with integer value `id` in the range [0, num_chunks-1] for the chunk id, (2) a node + defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with `id`. This input format + enables specifying the binary tree using either a single list for the entire tree or defining the + nodes and leaves individually. """ self.split_dir = None self.split_pos = None diff --git a/python/tests/chunk_layout.py b/python/tests/chunk_layout.py new file mode 100644 index 000000000..c966ffa0d --- /dev/null +++ b/python/tests/chunk_layout.py @@ -0,0 +1,60 @@ +import meep as mp +import copy +import unittest +import numpy as np + +chunk_ids = [] +chunk_areas = [] + +def traverse_tree(bp=None,min_corner=None,max_corner=None): + if ((min_corner.x > max_corner.x) or (min_corner.y > max_corner.y)): + raise RuntimeError("min_corner/max_corner have been incorrectly defined.") + + ## reached a leaf + if (bp.left is None and bp.right is None): + chunk_ids.append(bp.id) + chunk_area = (max_corner.x-min_corner.x)*(max_corner.y-min_corner.y) + chunk_areas.append(chunk_area) + + ## traverse the left branch + if (bp.left is not None): + new_max_corner = copy.deepcopy(max_corner) + if bp.split_dir == mp.X: + new_max_corner.x = bp.split_pos + else: + new_max_corner.y = bp.split_pos + traverse_tree(bp.left,min_corner,new_max_corner) + + ## traverse the right branch + if (bp.right is not None): + new_min_corner = copy.deepcopy(min_corner) + if bp.split_dir == mp.X: + new_min_corner.x = bp.split_pos + else: + new_min_corner.y = bp.split_pos + traverse_tree(bp.right,new_min_corner,max_corner) + + +class TestChunkLayoutBinaryPartition(unittest.TestCase): + + def test_chunk_layout_binary_partition(self): + chunk_layout = mp.BinaryPartition(data=[ (mp.X,-2.0), 0, [ (mp.Y,1.5), [ (mp.X,3.0), 1, [ (mp.Y,-0.5), 4,3 ] ], 2 ] ]) + + cell_size = mp.Vector3(10.0,5.0,0) + + sim = mp.Simulation(cell_size=cell_size, + resolution=10, + num_chunks=5, + chunk_layout=chunk_layout) + + sim.init_sim() + owners = sim.structure.get_chunk_owners() + areas = [ v.surroundings().full_volume() for v in sim.structure.get_chunk_volumes() ] + + traverse_tree(chunk_layout,-0.5*cell_size,0.5*cell_size) + + np.testing.assert_array_equal(owners,np.asarray(chunk_ids)) + self.assertListEqual(areas,chunk_areas) + +if __name__ == '__main__': + unittest.main() From 7b3e46194ffa70adc1c112ca3ca49e18f8cdd5ee Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Fri, 19 Mar 2021 22:49:42 -0700 Subject: [PATCH 07/19] simplify load_chunk_layout --- doc/docs/Python_User_Interface.md | 6 +++--- python/simulation.py | 10 ++++++---- python/typemap_utils.cpp | 2 +- src/meep.hpp | 1 - src/structure_dump.cpp | 15 +++------------ 5 files changed, 13 insertions(+), 21 deletions(-) diff --git a/doc/docs/Python_User_Interface.md b/doc/docs/Python_User_Interface.md index f386955fe..6c5735f2b 100644 --- a/doc/docs/Python_User_Interface.md +++ b/doc/docs/Python_User_Interface.md @@ -320,10 +320,10 @@ Python. `Vector3` is a `meep` class. `mp.dump_structure`. Defaults to an empty string. See [Load and Dump Structure](#load-and-dump-structure) for more information. -+ **`chunk_layout` [`string` or `Simulation` or `BinaryPartition` instance]** — ++ **`chunk_layout` [`string` or `Simulation` instance or `BinaryPartition` class]** — This will cause the `Simulation` to use the chunk layout described by either (1) an `.h5` file (created using `Simulation.dump_chunk_layout`), (2) another - `Simulation` instance or (3) a [`BinaryPartition`](#binarypartition) object. + `Simulation` instance, or (3) a [`BinaryPartition`](#binarypartition) class object. See [Load and Dump Structure](#load-and-dump-structure) for more information. The following require a bit more understanding of the inner workings of Meep to @@ -7325,7 +7325,7 @@ def __init__(self, The constructor accepts three separate groups of arguments: (1) `data`: a list of lists where each list entry is either (a) a node defined as `[ (split_dir,split_pos), left, right ]` for which `split_dir` -and `split_pos` define the splitting direction (i.e., `X`, `Y`, `Z`) and position (e.g., `3.5`, +and `split_pos` define the splitting direction (i.e., `mp.X`, `mp.Y`, `mp.Z`) and position (e.g., `3.5`, `-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) or (b) a leaf with integer value `id` in the range [0, num_chunks-1] for the chunk id, (2) a node defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with `id`. This input format diff --git a/python/simulation.py b/python/simulation.py index 2f707436e..b056a318d 100644 --- a/python/simulation.py +++ b/python/simulation.py @@ -1162,10 +1162,10 @@ def __init__(self, `mp.dump_structure`. Defaults to an empty string. See [Load and Dump Structure](#load-and-dump-structure) for more information. - + **`chunk_layout` [`string` or `Simulation` or `BinaryPartition` instance]** — + + **`chunk_layout` [`string` or `Simulation` instance or `BinaryPartition` class]** — This will cause the `Simulation` to use the chunk layout described by either (1) an `.h5` file (created using `Simulation.dump_chunk_layout`), (2) another - `Simulation` instance or (3) a [`BinaryPartition`](#binarypartition) object. + `Simulation` instance, or (3) a [`BinaryPartition`](#binarypartition) class object. See [Load and Dump Structure](#load-and-dump-structure) for more information. The following require a bit more understanding of the inner workings of Meep to @@ -1879,8 +1879,10 @@ def load_chunk_layout(self, br, source): if isinstance(source, Simulation): vols = source.structure.get_chunk_volumes() - self.structure.load_chunk_layout(vols, br) + ids = source.structure.get_chunk_owners() + self.structure.load_chunk_layout(vols, [int(f) for f in ids], br) else: + ## source is either filename (string) or BinaryPartition class object self.structure.load_chunk_layout(source, br) def init_sim(self): @@ -5182,7 +5184,7 @@ def __init__(self, data=None, split_dir=None, split_pos=None, left=None, right=N """ The constructor accepts three separate groups of arguments: (1) `data`: a list of lists where each list entry is either (a) a node defined as `[ (split_dir,split_pos), left, right ]` for which `split_dir` - and `split_pos` define the splitting direction (i.e., `X`, `Y`, `Z`) and position (e.g., `3.5`, + and `split_pos` define the splitting direction (i.e., `mp.X`, `mp.Y`, `mp.Z`) and position (e.g., `3.5`, `-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) or (b) a leaf with integer value `id` in the range [0, num_chunks-1] for the chunk id, (2) a node defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with `id`. This input format diff --git a/python/typemap_utils.cpp b/python/typemap_utils.cpp index 0794e2ba1..9334769bf 100644 --- a/python/typemap_utils.cpp +++ b/python/typemap_utils.cpp @@ -1041,7 +1041,7 @@ static meep::binary_partition *py_bp_to_bp(PyObject *pybp) { PyObject *right = PyObject_GetAttrString(pybp, "right"); if (!id || !split_dir || !split_pos || !left || !right) { - // error.... + meep::abort("BinaryPartition class object is incorrectly defined."); } if (PyLong_Check(id)) { diff --git a/src/meep.hpp b/src/meep.hpp index 8cb444592..0abec0f7d 100644 --- a/src/meep.hpp +++ b/src/meep.hpp @@ -776,7 +776,6 @@ class structure { void load(const char *filename); void load_chunk_layout(const char *filename, boundary_region &br); void load_chunk_layout(const binary_partition *bp, boundary_region &br); - void load_chunk_layout(const std::vector &gvs, boundary_region &br); void load_chunk_layout(const std::vector &gvs, const std::vector &chunk_ids, boundary_region &br); diff --git a/src/structure_dump.cpp b/src/structure_dump.cpp index c8bc90414..d8fa96572 100644 --- a/src/structure_dump.cpp +++ b/src/structure_dump.cpp @@ -495,6 +495,7 @@ void structure::load_chunk_layout(const char *filename, boundary_region &br) { broadcast(0, nums, sz); std::vector gvs; + std::vector ids; // Populate a vector with the new grid_volumes for (int i = 0; i < num_chunks; ++i) { int idx = i * 3; @@ -506,25 +507,15 @@ void structure::load_chunk_layout(const char *filename, boundary_region &br) { } new_gv.set_origin(new_origin); gvs.push_back(new_gv); + ids.push_back(i * count_processors() / num_chunks); } - load_chunk_layout(gvs, br); + load_chunk_layout(gvs, ids, br); delete[] origins; delete[] nums; } -void structure::load_chunk_layout(const std::vector &gvs, boundary_region &br) { - // Recreate the chunks with the new grid_volumes - for (int i = 0; i < num_chunks; ++i) { - if (chunks[i]->refcount-- <= 1) delete chunks[i]; - int proc = i * count_processors() / num_chunks; - chunks[i] = new structure_chunk(gvs[i], v, Courant, proc); - br.apply(this, chunks[i]); - } - check_chunks(); -} - void structure::load_chunk_layout(const std::vector &gvs, const std::vector &chunk_ids, boundary_region &br) { From 78fa6ddee1d1af33e12f7a6ff80c7085feb22214 Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Sun, 21 Mar 2021 10:37:41 -0700 Subject: [PATCH 08/19] add new section User-Specified Cell Partition to docs page Parallel_Meep.md --- doc/docs/Parallel_Meep.md | 32 ++++++++++++++++++ doc/docs/Python_User_Interface.md | 3 +- .../images/chunk_division_binary_tree.png | Bin 0 -> 74849 bytes python/simulation.py | 3 +- python/tests/chunk_layout.py | 5 ++- src/meep.hpp | 2 +- src/structure_dump.cpp | 22 ++++++------ 7 files changed, 50 insertions(+), 17 deletions(-) create mode 100644 doc/docs/images/chunk_division_binary_tree.png diff --git a/doc/docs/Parallel_Meep.md b/doc/docs/Parallel_Meep.md index 7ac5bc5fe..c62de835a 100644 --- a/doc/docs/Parallel_Meep.md +++ b/doc/docs/Parallel_Meep.md @@ -63,6 +63,38 @@ For comparison, consider the scenario where the optimization runs on just a sing Note: for optimization studies involving *random* initial conditions, the seed of the random number generator must be specified otherwise each process will have a different initial condition which will cause a crash. For example, if you are initializing the design variables with `numpy.random.rand`, then you should call `numpy.random.seed(...)` to set the same `numpy.random` seed on every process. +### User-Specified Cell Partition + +An alternative to having Meep automatically partition the cell at runtime into chunks based on the number of MPI processes is to manually specify the cell partition via the `chunk_layout` parameter of the `Simulation` constructor as a [`BinaryPartition`](Python_User_Interface.md#binarypartition) class object. This is based on defining any arbitrary cell partition as a binary tree for which the nodes define "cuts" at a given point (e.g., -4.5, 6.3) along a given cell direction ($x$, $y$, and $z$ in Cartesian coordinates; $r$ and $z$ in [cylindrical coordinates](Cylindrical_Coordinates.md)) and the leaves define a unique chunk ID (equivalent to the rank of the MPI process for that chunk; an integer). + +An example of a 2d cell partition along with its binary-tree representation is shown below. The 10×5 cell in the $xy$ plane with origin at the lower-left cell boundary is partitioned into five chunks numbered one through five. (Note that the binary-tree representation for a given cell partition is not unique.) + +
+![](images/chunk_division_binary_tree.png) +
+ +This binary tree can be represented as a list of lists where each list entry is `[ (split_dir,split_pos), left, right ]` for which `split_dir` and `split_pos` define the splitting direction and position, and `left` and `right` are the left and right branches which can be either another list defining a new node or a chunk ID. There are two items to note when converting the binary tree shown above into a `BinaryPartition` class object: (1) Meep defines the cell origin to be at the geometric center of the cell (i.e., at location (5.0,2.5) in the coordinate system of the figure) and thus all splitting coordinates of the tree must be shifted accordingly, and (2) MPI ranks must be defined in the range [0,num_procs-1] and thus all chunk IDs listed above must be shifted down by one. Based on this, the cell partition shown above can be set up as follows: + +```py +import meep as mp +import matplotlib.pyplot as plt + +chunk_layout = mp.BinaryPartition(data=[ (mp.X,-2.0), 0, [ (mp.Y,1.5), + [ (mp.X,3.0), 1, [ (mp.Y,-0.5), 4, 3 ] ], 2 ] ]) + +cell_size = mp.Vector3(10.0,5.0,0) + +sim = mp.Simulation(cell_size=cell_size, + resolution=10, + chunk_layout=chunk_layout) + +sim.visualize_chunks() +plt.savefig('chunk_layout.png',dpi=150,bbox_inches='tight') +``` +Running this example requires `mpirun -np 5 python chunk_layout_example.py` (i.e., the number of MPI processes must be equivalent to the number of user-specified chunks). + +For improved performance, it is important to order the chunks such that adjacent chunks are numbered consecutively. This is equivalent to assigning MPI ranks in *depth first* order which ensures that adjacent chunks on the same MPI node communicate using shared memory rather than the network (which tends to be slower). + Technical Details ----------------- diff --git a/doc/docs/Python_User_Interface.md b/doc/docs/Python_User_Interface.md index 6c5735f2b..a44e30116 100644 --- a/doc/docs/Python_User_Interface.md +++ b/doc/docs/Python_User_Interface.md @@ -324,7 +324,8 @@ Python. `Vector3` is a `meep` class. This will cause the `Simulation` to use the chunk layout described by either (1) an `.h5` file (created using `Simulation.dump_chunk_layout`), (2) another `Simulation` instance, or (3) a [`BinaryPartition`](#binarypartition) class object. - See [Load and Dump Structure](#load-and-dump-structure) for more information. + For more information, see [Load and Dump Structure](#load-and-dump-structure) and + [Parallel Meep/User-Specified Cell Partition](Parallel_Meep.md#user-specified-cell-partition). The following require a bit more understanding of the inner workings of Meep to use. See also [SWIG Wrappers](#swig-wrappers). diff --git a/doc/docs/images/chunk_division_binary_tree.png b/doc/docs/images/chunk_division_binary_tree.png new file mode 100644 index 0000000000000000000000000000000000000000..1abbf33713e216887b7eafdd8c43f1ad0fd0c201 GIT binary patch literal 74849 zcmd3Ohd-8W|G!E`WLH*Zr6?nj6%{27l3gN%GO~-TvZ9P6WMnpk%*ZA?GiA%3Aw)(* z-}iZs=Xrkr!OyGvb>DZmuIoIHvQ^DR94)+jddFd3CVV)GYXeTNVZInkZk6l zAj9A6=iIA~f05dqR8ptFmkY&pU;IC%^%)&I5|XW<#6O$=J4R1GzoWgQW8qK#k>Ec1ty`%Q zIxqTnmiZXUd!EdopJu+|@8``NqGFL*#c)oYDIiJvVxq4H-4%;HJo`QNdU*3(IB~al zZOv0?&B&_vk?zB$DW@f;nd#?tO&0maOAQgKhRi;jPSBD5`)Bc?tt;E{|NcLz2|8 z+%0Wb?nNo#IL9T~8B4c?oaX72-kXn0tBX^svgZ?6|MOWCwv4T>Ej!MSP%1}D-2e9F zbwzpk<}2@Sox+!E)M+|}L-I6I|6K18p85It496daF26>@M_w>iDw6H>3o)sb$qJaaW#%3<4Vf2nD|^zCWp>F?h&@yl=4-PgXqpZocflq4zn zbN`>}%0C;+a@S2v>RQ*vW8E{H7ECl}+ER9vtj$R488Nf5b#%%mEXD7!`QHmoRC}$Q zYGG>nU}EA%#P`F84-d@D1eX5Ui0U=HcJ1D~cSnxg{H(y8%Mjq1ZQ5-3HP0q>dTh)` z)U>HJ@sz@ac)C0PEXxhjXOWRS`}b2wNl8tYOix<`Rw&ac4Eq@B{&W* zur*O+WMmY%Ui(-oJ3cRuSxHH0KR>@mW~NBwQ7f9gdtcJdywAv>v+654p{z_3DQ>xK z%a$#8asDF*<&GWO{q5Vgiy9iIrrO`e<0~VRl{X?H;>@{oo>^IkQ&UspUcTI$eZk2| z^026AaA@dOYy(_*MQiIj&F}mN4xBJC*@y4Mzj@785&98-VoA2FXUyGf03F()39p@UDz*n4Af5|fm z8=id^B1y%>#PnSIOWirK(59p5r5mj4tBYGmynK9yKE=yR+?ip2_~?<&bDeAxgO0ST z&%`ZR@vfUl#>U1v3mgPyjgk%5mcHjXOzjk~>VBs*Qqaby5-VF(7b>9RRPE1VZDX^E zM7Qwv_Kl4V3FoDQ^9u_)&wmWp@b2G##=?E?-o3=WZh9{L0Pmidl;pcmlAkYm+MoG8 z@j;$T-$@H@ob4;Fh&kp=$H3rGTYDy$)K6SooLSU_dgr0bdpcY@2d@2lFq1@whK86) zrcF#u`Lxz>0PMOsrR>inZ>;6TbprDPiLp_=KIIfWJg9DB1GAvdcS^sG1*_>@F=m=Zd~~lt}x=r z%_o%$qPM7!j9php?VPQM7EqlcC zoAl*9+W##&3cT?N37fGP!_(RC-)nU`Vnu~PULidt9RN$g3tEkvg6SzAhnYW=jfK9~hw_}mpdSte~y!@7( zJ9pmbE0Q$zJ9+BV*4r~*{W6VevQ)Qy-Y+0f@$=gkqF#)Qj9B-5X>a!l4c&46!Uf6k z_i=F~k9Hm^|NQct@lrn>_kXG^D<$@WqM;#=!16>(Vl{V#%iP@Daa-HN@7}$eTVL+y z6&K$*Iyze0*jRPAxK)B(tz76yPCK6^CM6a5<<|Vj$D(f6{hX{r zdO3|zM}rOs3584c4c7#*T)1$d$#twDv%A}NCL}3ozu&6+#xK5_Tye{8 zVU-w}V5w@HG!}Vz`P_h*7>M)s+#tt!Ky z!g^_1CpRD`M@&$^#J{iDS)f&1Lqmgf>(&qL?V1UJD5;vM+8^quD>AY(pR5c$68iM& z0-K&VS_>&TEr$YXd6z3T(s*006bA=~cDBj(bZa{yAt7bv(%4webP=zLL01=-5z#CT zo7=am(URj55_r_^eDBVQPV%^SkA#{-M%yfEtT768&G*938e!^Oi!L6`a0BMwa}~6y zsVLx&AJcVqcAnXt=)64BS$IcCpw#_O%yN$T{>T4wWjH!n+1XXM%BOB^r>4e*k;ypC zlj448Ho-#Az2Uhq{*VNR+EPeZ6 zx`@>6>Dqj)rf5meCr=pYi+z15WbXd-4IOWe4WijCHOFf7d*#POcaDGnIT_i!S;xiy z;v!bcuC6ZaTniRE*fb zx#=!ZlComwW#Jp2xPCA7SUp3BDYuyF%I34Ws-~t^Vz>3XHvlf$(r3!dZ`>%WuRk{< zGDYPSc9uepd9vqyx~`GKbZ0PcO;wfOPgPfHS65g2$<{a3M(XP716Zk*>Fnl_$;6WX z-p)yS{EVZcV{K~>N>d=aq(@h_DH64aLO{zo?K&=t)@5e*IVv8AMx6ry9?Li}~s=GLQcclz#g3DNt3d)C7q& z&gkjkxb!RU1Bau7m_;_bxw#1+JsRGvteZPqaBXS2tFy>SbZP|WlD2exiEVAekC9J8 z^j(1ElCEBIbMDmC6fY0YkmstXsAx#19LdkgHmbrqvm0?D$>9^`6aTFg0sa7wHt44# zce4~^fzq*Ab@I`DB<#khfmr#o-^wTrnuX+A_84|%7*K5AzLkVs(w3A>+~QitS1sDo z_SRMl^^b#Q9>Kx%YpW7dvxiGeEHsqwLS$vVB>BAuw4D5P2P0e-+q9;q0KlVVoEYxiu$53z zQJI*U>d1F>@O%6A&>A*N(~pjwZP^)od-h~VlE`lTAM{(Ds2C)XHRpdc@(<_tS z`7v}V!V=6*l6!2i3OKOkg%YD?jIcpDUnqOpHk|B+Sh?6xDk>^sCqE4ftLxQLRSoW3 zUs_sB>i{Mw=>^Ae(%r58ZADr;&{_@oAIXIO>5Zv58~qu zj_L4mzP+5|fgULEz}tIp;DaZ_A`Zde^mN0=RXzP@5fLAN07CUkTt1exfBtM}{>6RU z!K(#K1kxR4J9_Kdr??Ym&YyqUm21{p5FQ@h89A?E(O1OM-QAs9WZKMeKJtjt3z|ZS zy1F{+Z=d(#4qZe0IlRcm@Ly^>8Qj^a{f6eYn_EfcT%U+h^|fE~qYn>X;C5MG?1*OR zWDzytI(U#;Pfu^+Q~Z{H$R%#pbkF;s#<63rtM;HW9pPOh_ayDc1}gm+dDi#wrXG}W`^~&O(^~-yrlVK_ zmb6WlEr&{S!t3M#LBX+9B@{FIHx^nSoQ$x{X#-DZ`58}qwQQ~ zF#?UIprNTA`4|!$60#+3{(f7D>zV??PuGKwJ^N~jpRIU68yptqgL`t_)Kvb;6*k=A zjI6AaXy9?l-PVHU*RSs(qhYVD1F-`sjMVNeDw0u7YDhTsD8pe&^HkKCxjjdYFwM-& zq`GYUc0#A-zn%&_;lEotEVMaVl6R4E>h;;1HxG=9g3Gi2-dLMmywUQy@zE}!$IqVm zHZ+_^i#UN33Xmr(Dk>kuaV#z+rM@s7oog7ZmV|_yoE)@POVz}kX=H57R+egEtg!-A za;k;L<0AXpEAM>@3#Cn(qWzY>_jJ6M6g#P*u>;iY1DgCC2*a7Sw$Go-3mm30tOrj5 zrnd%rKT*AOsa#9nwMvJ!x7hiP%Tkx=;th@UmY3&teJ#90i$hY0*YE1G*CD#b&xw}k zGuxE>*(DiTT3WPo%yytnmrLtJmz2mt;Taqp{BW)`{*$$g82?^!S(K+TFL+C{$Tq1^9+YTK%#4cq|q3^yfM#CxV zFMVeQ)g4832SMvD=a_BP($a#ykm*oWX#cHT(yI9G;*-wO;^Je99Ung2U$&_|xxy~) z)wQ5keAgyWOLHVNAYi*T;RBYbbwhcAtNYCtI#u_5j`uB;@)6++ryAPIouZk;i%Q(*6 zv$3~NZCUoiiY-*_(iaxeD|+1NUU>Vvwktk%fpo^{v$t=HkFz&N9ZfH}z(X;_`wF*h zdN}~xE+i`IO8-83PWmIBea8=7GzTXD|fB`-~N-F(Y2~^7S=g-HzdgXJ}s?WD|Wd{YRgwy;U4^K~` z1KDF?1snE3gfY916T$@+7+PFZbp13HotMlJS)pOZIEZPyr~S(U*p5o9<>cgun71GF zXBFE9)bXI8Kx%yb#fv?KeSp#Xk~> zFXg~_W%9ergLPmPf2|UG+S*!Jz}e9;4xn)H2K^6_1l@izI$fM7dM2jIu5oM=@YXj? z`N9Alz=u_+Y;0G*1^9TOSz;9=D0N6TZ!&Fv!sQzjJ2G+|9VjDM>A3O9n5d&xbsG9@ zwY3z)Ermw+sldVf)U&g=VXd3Jy}f;XeUB?BkmA1kKx#1j{6cAZ4WNOC){-(oJdWij znSzoMrDmG$$F6ZGy$)0DZF$WoOCMTVGONEYEG($1tCRBb^6nRKk8HL(c<`XGRi8|% zUU6h^&HDyL=&F!Fu=~keUDu_Yv@bzs@$m3aS&h_q4Jp^j$?4OVFKR2lpah)+=|yK} zTg-P~p4lCFO*V&E(_bIr>7@B@eHZm$Iht)Mw}aKWYZKsd^kBYvU)ysN1&hI2MBF8fK)Qh zOa9wGsB3DT#*G!W=oCg>UkpiEl)!%mdT#vwWk*4}nVxSNSReP8I8JnIY>&c)^iOip zWz4cMGsl7ELU8>6xoy<;9-+GD=3a+fhm*oX66*db2uosA6UZ$t9(J`q845Ijiwn>u zQH3GAORPVau-R;5V`ErzSXj6W$4zo=roXh=kNw$EtC-s29NW>e*RNma5)gQlEeD|; z@3uoaEG|>?kkQ8B_zZ?IS(uaq3xbLdD0s8fwG4nh$=O+FbT13f$W^Z z`(PH8K_b#|!biOE`2{7j&k1d9=B3&GAfk?liZUKI4p7HRpy>=k3J*)!$dP#(9&XfE z_C^Q>Y5!Ne}HD>YxyNvLm*W<^Q2iR0lp!1ctNS)mX(dU(C`XU z;<>iJZk`tsGQd9!86hQSMu zLqn@dIN8|h?Wa3c(=MIE-DrUL>)3P4%&abVx0L<<3gOVvTJ);DVYcwyGPAOt6jDFM z;i_G6sY}(la;5&5CeX6N>YJMpIgoQ~n?l~bMGHEQGLr6Q+89}N^UB4GWdNe0w{G1k z3Y_hC|1&BUSX6t(1fpU<+v3lk*O`3`ZuJ#?d}q;hY0L&_^DthXVGT6*=~{PBPtUpO zbZGB7dDh%DCO3PMR1=?dr0aJ~E7V;>@s7@foYDyFz5jYDe`To7qeqX7q#P#qEa?86 z>5cl>(C}2UnsBz13o9!X`j#$49`Up60Hu3V5EB!VnwFf*Um;8#5*+-2np0MHEEAvM ziC;iK=uMRib*aU!Ynm_A`@m42fl$-;LRT}v2KLX&%F7;ubu>zS|lU${)I z@TM*At@LHwH*{a!f@Drc%i#~fp}e6XwcWxI>KtJjp&@6iy*eM^0hiSG>bBu;-wyof z>u7C-SN5>eeBq5NEn{U3+Va-&ii)Wo>LJD#KLnrru3dq+E-42RF?OTBq`181g0gaT z+zC&KCZ`89yXWxDVfc~qP*>~f>w_aBw*f*bzp8_9d<|+hkNZ=((_R(XZBU|p4zaPa zmiP3qVTn!=YCXD{o*s>l!Q&@SJmTWGB&4OYSE(zmef#_}&v`jbcL}hjqQ0IAAp0T= z8bAk>OS)aV9^~aoczJnUgIzXQZI@aV05cs2M-!zA zIYF4uuup-|iLs_gL3ZM4`h`75m}XzU>Jqe4K!A$)RIinvYd;4NMQ;gZENOah^UEvr zgPmy5&kh@J6TDjBh3-X2rsxAuj<&pZ>BpJRy!OF^R=W1`*l2w?{9Xmz3m7<=x4&P8 zh{Dawy9Jve5Ab@Qa&+xYyP2<&(Xy_WE!=kr>K=D=l+b*8xvHxah{&%)Z$^f>a zP}<@Z7}xH~yayp`3}A%GY-vGVX(XZngC0e--Y^0u^_?K@_Hl~w*evZX?p zFg|1C+-YDC5H1Y*=V{bBRNV&PvMy_aE8E{yJum6cU6-RH@# zrS7r6-~&a#Y0z7T)9@%ex~!_|lnI+nd=J=O!sbVDvWVyxa%d3FO z=1mo?D!$HbCKeVA;3|rSQD8qJkhD`vA|qKt!ov2c#=^&f>_5IntS50-UUuuRABC_O zv^3Du?&AS=5O+(9EaAVs1p*iF0eVU4lrg@z&E*mk{y&Iha~ z<@fGJE#V(nBpi&(n*Wfjk+R3+zNVH|4Z3bizMbjqe&`qqX_-d=9O>xj?w#-?Q)&ew?v@iPv{qN2HgshfQ>|TAQ)2`?8P(`Mt);aKcgl3s z%Zv1DiR%?^@pe84AE;I2r-L{G=I3p1mx4>y^pW;Ir|q}Tbyh=TxyPP zCmAuw;&Z~@{@uyxd{iR7={y1xN;xDq+)VKx_ zfML&%@3kYD`!ybW&NWZtl;v)!3SsSh+r1{uF^z8FQIU~DL_R>arY-zDT%Pt?GGe0* zKo;EYMdVCUC*a~vM}D;2i0x3p?*qNoGDE3>NZYJ&Ze=^QEyc2^43-+ zs$GIiZ`6t)ltJrpnd^j*5$!NNzwwJ{V`24x?Vk-Mbr| zO`cg@%188p@VoyKb5pKf{q*jp8lh2#-)fFICYe>#!r?+MSR-y!P2IPc;T>XjmjC-c zVz)fxkKm&!S&p8|F*~!YyTc{uB|uj6!qpHX6rw5!3zCxjsc+xftSwmrE;1-)f#6y$UVBVt@ z?FLf0&Z#$d%JG#lD-`(AW7#VryfTUVrdBCpOK?S8&Qkdp}x|}q#4|G#}?3*=Icg4m&eaa*u zDLIJBHeCV G)Dt+FSh!#M@S+m|JCB+I#b{}Gr4>gMix4cgrB=(G)oR_o4xX2+- zZd@eSZ$4oGfphW0l+vw`P=Cd3jMxaWF{GuX@%Z%~IdTNtm>eGqis%*uD0pZuR%W`c z-9|%h?{o_0GfOBbw_sx}Uw$r=ZAhXJ#y?jaG^)hVe(_I+d##A@w&d^8At4nd;KWY~ z+w=0Kbb4qC5=x`0eu#Xv(nv~9K6^od|NMm@#XOT=h-+8_`m#1UA{Vj+Fz4AZXYq08 zRWv~2a<1@yuB;>lj(&FJCd27K_5;i7=LqA91V@!@Fg2qsyPDslJ7%j{YR)J0TY-*l zXC;JfPQ6f0kB{dD@O%WQf=m`CL}#ABob+_7fCSo+U!H3sYTzHiIq%+$mC)#~bG6c4_Y5E*vtB_c)H-ZB3FxPbY4U z-1<*OLESvA+iwVnLP)vH%oJCyT$%owAEI?w=CA%mgU?E;sHhm|f+~QzcA$Ztaf7!I zQGj>1dJC%8zfDcKCn*Jl0k;f2;B>oYY-wqUTDb$=;$_2PI^H5Ap>Ztgn6cx#_+et=B!|oZTnL=T>cI#Ht7(K~7V03cOD$cJ*<0XoUisDjJ{jpUy zCHcEBAHGfjM7SrXDC!7dCP3>XXt{xbLEha(e$XvHlvuxs>Y5rO_&EffM`M+n(8lTT zRiUy)A3o;11o4)PjpM4iIzg!oP!G1Ts7PEdgbqBi+vDv3vjgr<%Y7a_Z^9&&aRUQChyEU0(s?JRxYMB^q04h zd#&+KhC%NhBzz2hMvr6e8|>J@9a7_|Q zdl-9;&`mG1JQ`4eu7#hgKBt8ZkGle^fn0WNTJ+&79$&IEfQf6p+xE-G-*zQBz9B>b zcJg%ysF0rSWoO&H4H83!0s?WS=sv_lYQT?6FLREo#jSF-!F8UG`H`Zx`daX!#;DuZ z9XfUCY1Irg8pZIh2=`ylQh=XdqT@Jd1nNbOS^w+W2fAy3;JinUJPk!|)lqsvRaG^b z;$gGw+WE?`$a(bUitcV!LY=u+Cr2swdu|KdbTxtXj$J^k?2>!;ZiNyV)|Cd$R5i5y zH-4UoSOU3iNphhRF==2%fHk?D^L$Ttw;{SD`}iM(Byyz4J_JEshX1HCa~p`0`RFZn zNRyOoY;0S#Pt!dd#7*%H2-te@*OekT?ss#2&jIFRJ!#VoPHMtX=kzX`-JlhkLLXE z@noxZv}yMiI1E3vc~L1!{&=&PHUBfW-1k8tJ)( zgo1Lc@R!jP>K+6N^2e>WJv#{v10pVcx?b^{X3}qHXpk87XA%no{)dD2u@2Zx``wM; zhMadGTRb!!@bH)nhhO_x-(G-@vv8~DwF+lvS68O(`Sbq1!-oQ40JFoq4+SZgTs~zf z3}^Z0R7X%Ki_iTB56B@HkIV?j$#FspEPHxDZ8Aq0JgQf+pORq6PEPr);)wLFAXd1; zGV-K$#uw6lLeW9ECS(?qSX|8|Zym$Ex(@7Tzs4NI5(sdEO-@pLZCEFZy zWm#ESPFy?*5#(57?NPm#1yQ z>F4JMU7w7Q^u*rXB5X#M6kKJ+$B%w@CJgoTII#0Q!BQ4J|IvOEW091aN{tJ7y!yJS zxjATiPU<;(dwYq&a;PkZ*|Z&G_-qJw@CrPDiw5a%8;dz;cl7mZ#KOMscdPfaNK(d& zBF|alBd{gZ;EjtNIo;=*y#->gZ?7PqqQJiMCWW*+w&YVOwW~Q}?+c8+4G*hLDdj^} zupX+UY${j+VT8k2USI!6YveR^_gt&~K&ZmRd*qnuU-*PDs{$+ZZEBnCLA$svIkODED2YFxbl6;^OGETIFG}lWx%I zI|~-u-XkYAh?_u!oMGa|rKL6H(o>LX=UE#R%bww-NO%I+%q1fe-77oxRp%X9@utI2 zGokSq0xYJ6{Fv#L#<3wqg7O0aI3Xt!pcA3-M*)_~DI1&2GYRo30f;?Z z!*Q{wH4T-|vj27oMFRObGU9De_A_B#>6W;#95-ej0Z@J%7N%*Mi=sxrO|pyMl5T(d zycLmb`TDR!EvY)9w@sA5dq-4EE>vUJ(BG?Lk%vZ(Fk1NT6f>WzSFS{?WyVzY zm(QQCSy~3Tt*^$zCcV*~%CbiC`RiA9Y_x%QckJvu!^3w;r|3Yn0ev(as`MjT4K!0C zPG02rV>4u?ayUQ|w1Sov7IRR)_m6ZoG&Z8&-UkKBGVXx6M5Nlv%8pA&NL+)`bfYKt z5F}!_-9C^fk-QxM>4K(o*^_GfpRp(_7{}FhFa`)(E9|^vf&A!67)j~+rPc7&GOYS# znV6X3U?f4qJC>$jsuvX25e?p(2!)G)gGjA&(@_kd2tiOesGE0DK@Ri+`2^v^hdrXA z*ubs~Oijt*p5qn`;NB5J5<(8Z68E1yW6rh2UKYU}FOZQ*@R^vLEbr*pg)>al(Ly=2 zA9!v);o(}xE-OOx*(!fT8yaH-_LMM*SrIUsC|vlcR+}dwArY`1+8n9T=lxvu0T&Xd zW@m*|kMi+7NGwEaW{s6r(!PAzw))J43vWZ+-XllaA&ESg5%H^lrRG(rxkkp8N>yDyJvL*!<>=?q;iuqi^+^g2fm zS{MuVb^h#Coth8A)S|Ftl?!19MOY>yc3{|(bMuSO9cfv@Ri2I%H4RjE#lmWKeEAZx zEP>-0ZG%s;S3?f*ubb_u5e*9fxI($E1_s=sx2Lu9OCKSfLuBmdWYZ$&VR%({b^Y=z zi3)xClo{lG47=X2=0-=_?v$y4fwG=lNCQn0q9zTGyG(#uioUmh`gD!pbjTd}_5P)_ zuS3AeDnKfxD9GD@xw@$-(9#?+e^nuA=_sRdw1ewQu7l-UUtzJMZzDTCK7neJTHS%@ z*H{Bu+K7~1!qOQfr9oXoSYn;|%tZCiu5n3(tb_eaAH>TE`w{!Ia-Vf*50Fn8?zqd2167ayui^t2YVD~?M{FqCvR4ZMtGsk=v(8imKg|erJLynOMm*w6& zK(R$%b$*K-IYP(8Ey$U6{m6n9@vVm=+f>J4q*W#iYl#nolNtHg|q z#{ow^x3`~$jXgKf!ka%?2>`+hI~tQLFHc(VG1Y@J+lWCM+y` z98)tQE-TguLYy^ohyySZw-ra^u~&$W;)N!a8HyM(H+z?gL1zdJmAGes@;@fq1d#eX zjw}-q$a?oq0XSB~u#%$biMSGBSwj=&q4Y$`??Bt>!O;^K*{T8hs;`3$_t<>*DvpK? z0(ZY5p`vptf&%>f`SY5Ii4V}Q5ty~Dt0_{Mf2GyFqFXG*;DV}Q0@)yqjZic%A0K&j zb@c?&u^8^z0-E~9RX}9^_YmFUX<%N063)$8Lm8qX7OJ5^0ayTOU;_x0Se&vCAD|>t zm%*VmXUd9-ih2YMdl;IDufM+n1~mFg-D%@K=VxbR9ES?{DMd>NOG4!3qZjAPfi4HJ z3sW(IamN1J=ToV-Q2oI)s_Q^9pQgML<8=G8en+{t5^Hzj%9XI zr!g!sg(Hf?X;k0*vht13fM7NGt)x zG}aNeWxZu+SlAF$HVR5ggN_}L_D+J6qjC^AF91GaT-clCTMo$^y6VKVOwyY-Kg@{9 zBV75WB;AFn;o*vu-JEclB_b|=pPt4B<56|TF}HB@0@k@U-I-Zb{qf_+58zQcT>#<` z_eR^6a3FjG1FMlSXM0}I$PTI^Fgb}9yUQ~HfVOp`O!N=A(Zm+GzJC7vJdDI;UKvUx+sNtY#~GU*gvaNLI?Fr z*ug$Rq+TIPL6m=7dtk?(cFYzKtXslmC8JVTwA_BSZ#OvcVfO_VAA|JRRPyyhm*15^ zmmtVZ#5(XK5w%Ih_=P|C9^sxs=6KkeiFySGf-95MoM|0NWM%P2)wt3@pe|g_Sqo|ViHlHt&TPnC zw6a@PczaP#Z$s7pN9HA5S^qvd>Z=ce0;;W#$@$DSR$IqRMZqOs6~F(u?15Jvr>x7f zFS$qv9`1n@DgxkUE98yLM_9w!1ToGf4!+X>$mkT*l4X2upNNR+mP-LLb{0KfX6Xvy^XlqM>3i?A9R*+*Lx3T)>;0Umu!uc~`FbSboU-|WhIslE>AMC?Ey z1LI|49V&h4nZ+%baSlL<0s;JqR(ImWiRtNdOfnr26O*Lp%7Xc`Im-775|n*?easTp zTtosoBEk>u4KEkhy?}yqXU}>7^k4!qE-|sfnH}&>{98O48~XoNh$B#*2GAGt?7uy! z^&cT3vwnG-`Q_bl5CTw(jw7B%IKqHLL?*VInS+A{uBdL2qw3I|AlTdpY1h>eN}P<- zVQkQAe~)MYz;i*A1AHjQi_`DkeP}@f9ahAwb$?S98E7E#73>JH5IJPjJy`J%GctrR z<(1h&iYU!JlwEA*reS|g1{M~-3sK_nz&KB1rOD&SvpMT|YECg=8s6K?{<=82&wpOF{=hLS6yY5a^}TS%RN`8=<;Z znjgLSc@HrTgv=9!ouh^QM5Du?wrjarE$qh!u>Wj$Od%g*1b`Gn;S|8*@@ROdj6PsM zx8JBi4ki)}gcgfVJ#efKXPAh-lH7y)h7bGz=egq3r@w}h5t2gDuAGzupN8$XQ=jI_ z*zhJoJjS0J3a$2J#qZud{foeVhva`SCt%Ls288Sx@)BoTg8~D`_V{UF&JP!{XOgNp zPRkM^-1)O-A9ji((q-KJ-m1AJJX9ugmAU}nW9=?7{0t$9nn61m0%ZuF2gGJ?VEEIg zl|QGuLcW+_K#3vfbwNx>2qQ79x9G_H>hQ;J$br9Tid$PA%u;O!Y8qcqaMzz^aNm;;m~JvrdRLYsSh!ii%w{CIKbLu zNIcOLbF3Z$uGg0_Y%!j@|CyfW+#zQ33995Xga&N8#qbkOzvf?7iX#TWZrWa5ecG_o z%mE~z9O{1dcUT1is#?*WeaMaNgEKP84AI6P^}B}U@ytc@Pg^(N*Ih-ok2aURRz?!B>M$C|Dd!fQXbui0 zMjdOwj8gO*C1UUEt6=vEt~T}OSJahtG7Y!BZiJktV87oj;O`x?a{XgnT{%&uM@A|s zKWrsI(&0_Sa}dvR%7vwch2hYy?&@kX>@*W%QpWB{aGfF44AAB$$zKrtgtz4px^?p= z1oxVq{b6U@b)Pc=DviDl8uHc?iRp&h=uX(zkE4}5EIW`jgLGj15qzDcMhe+ zrY>w#H#w2+woVjGfoP5-YPn@#^$3f0#B|{;rvAn*o|`OvHFqKU3W48t9@H+YLuq@e zV|z?H)=LN6hx*Xu^~@E>TxOc~9x=O!c`WAcTuT8p6%CD0HIY$3%_7l`jvW9xCi+@P?eOy_bG&^s zLbR~vECiRTgE*U0-eRzU&(j&=1e{LCoJE9@^Hr+Q(5afXyh?t!zwJLmdMil)F||!i zJG+v@-AMUEJSC;2F=4iu2rfn*M3R2Z!tg*`*3(oOZ5^Et5UWFfH9aoK%bU9$9pLXT zq1*@b)j6M^MVBUj$Pf9o+?{tcq@B*LgNT>+^~HoDr+do2;LdDQFzU-gz`A)3d3IP& z(JcB->G~;}ZzV>jR`leYI5w-N59%RDt>mbw#k6xL4|>gOpWN#@mQ-uA&+ee)F4Jjc2JyH{-DyiKuXwdI)H}O_iLVQ(c{w zv7@ambV>$Jn+-d^&G?6pA1UF+ugsSIAt6Cf{~m@2!MFX8+$ARICfZWM8!~=OQs_hb z5X(>3Uu01$=}^(sxHn1Iej}g^_(*fN^cfLTCZ>|3k2&we)DV$So6Q}HZYY2K z_fkG>seBdH#oEp;q$`aurfZULfo;)z|4zZLB;gl7phrloA-_gwi^O;mS_B_P&>`AD zzV}AZ6yfz#$)ceMVFtScs{RHr6U+U99aHr4^1B<{TBYTyF4ZlVRXR2W3;bj7`uh6d z>}+%Yaqh~l*Wmg{S6!=p%pI*Wi)uuqPl-_$n7Rc2qGp$%L%)=V>M@$N24wfN;6?nt z+m90ON|YY-O22QdQ`kKQkAz55ILTSiy}GNQ+&Yg7B)Yw^0 z!;N&)r07~!Qpy7H$rMhXHvHhRH9B%s18{HUAsnt$%2V*-!f;RM{pCaQB!LzZKAULq*zxH8901p7-jR;d7fF>A}nIC;;0)V-gj{QLk#)$&0zUT-=YoYo_A- z&nTs=lf8ojAuSUa_&McQ%$>qXIgr~LX)T!s4Y2O{jnsW}7v?p+=gw!Al(<<&^4fC1 zGWP@fNYkvLdu85{MofA`C3*y15Wmj|@s`N;BOH{10e5_Z3fDr61t#}`$JbyR>@d3{ zZ%ioND@AYwph422xkr3wEswM_@S4RA5h|zWcB$LfF8<${LE^y*n8yeSMe25Mn!ql- z9{x1lCp;k2Z**7jJb=O4w)!(|WQz_Q$)7%d_IUJ&3Q7VIuqL8nd(>8iN`LcwPAmC- zYd@S}2r-!$pcfSyXTPUQIWoCzFq&#!Pit_G-TatK()Rz{9p67jkkq3O8z6elxW=d7 zNtv2*QNP4E7ION?uJC;7wG@%r)5hd!DqWm!!oe zByso%svOP-zp*{+=Z=}NqMkanNo7Z+`w3n+zqnk^m#?>N{SV%#{9|zQ zrXS?W%q&pTLYiU-eS`!qpkI7fH zghU(2Dc95^i*c_&-JXwIQ;_u-^?Lc>!GndSvwxt~ViqnV3;y<3NEx1(D58N6&}KAtY{~W648DF$Y0p;q&^p*Rc||i{!L9N{b65B=9U!77u=# z=aDfINOMEBLrYWhm30r({kh1yCCYE+Sf?Pw&Y8VO<~TnZ(`=SUEW6cjt&QN3MOy*z zj7I@L`$iXtX^~&Q?>al5OC5?k^WRl8^Nl*CpJNv4+vm?BN<7j*vjovEgcvSrYu7rb zf)x2lp+Zm5;aUn> zm3|wWC;E&BL{d0G=Pd0Y;8=XkQx#l8hiQ4E#-~~0FcntLF+_|2hq(4OH`8v~wCPe0 zA&p>^^6wL_opGFd>7xhxzYjE^JL$Od7$z>jjD{vKdpHaX6+PDroj8%uW=q}W`bt~{ zJ_}U{pE+};3|*a21Q9x*A%@JY3NPncP~JaI0uqNv&O?8KHvwoE0oPB5NSS`8HfAXPw#kE5dx=3c;KSCnI9D503WGi%$12N5N9K7g?EwG1=HEji{| zsaM|9;3+GHygQJOre|Q-4CSCHasiU7UqjNCq4a(zEuZkfgq2^v{8F!wZ~R%5wjLmH zUdKA@TOVoN1R_4F+mG<#;GfJp{RS7Fud|iSdL7%sw3YM}{U-96W7aB6t^5u-X&oAG z+1B$X`*Pm3cT4poT$qcux8q9>yGDd!67(UlgZg^Efn&R_HdraR+WH zNam@)ToNXp;4=W^FW`#jCjcEhgr_L5he0XrHdM%8CY_KA0&}rskZE2|kHao}h#s>a z4%`dtJ9o5vtA=#P|DY*Txx7VTX}qPMZ#&Af?&|I3wLe+&ZRFG{2~#M)#w9Qzg%+F} z@4~{u^6qY_=GzGOM~#xK%rUtuy*5{ECt0;^I>5!GgZ|y(|g!lf4GYkz3X}Mh_Q$ORq17W4#;I_;0W2WFQ8bd&8tLzfqtbNdE=)c_<((nosyB{IQXv;8&Mjw!2{aCOYTNDOd6 zmNmqN^N##@l_z)rIv3LS4I*y_2pu0bzV3G*oj^zkc&HZ>e=J7#0ulZoMx^1XdrReJ zR2qt4c4Kg2!WVbRxcLxQcs=34qL1s=0R9-jZo?G$%@|(6vs6@n-J8$+AZwVaRa;sp znvv7=2L2sudj5!@e^%0v8e_IP1h9%(!w-m-v?B!GN~D6g)1u zmw^%jJ|P>S1}cw!Mf3tn6$7aMBUpGtsO7&(++m;G_?jnz6XONU>u&qX>dKWK_Wnlz z|NN%#^6PA-YeG^-!_Cn&2-TlR>tUJ#&ppt6zg_*!rM(@QIc9C;gnND{@2xBAX`DFb!_7V`AV&D{!XaLc` zIFSeTkM7m02DfgdEp@1?6SM^e2BwufVbc-u*-J0a!mRK}yEV8*Wqg(c?D`7 z#BUR#ALK_oyM;tRKmZ4(tgA~Wu}@{^1W_^-Sd-&6Klgq2Xv{?&!==QRdSK>pKH_?D z#Uuwm`C&`r>j=r;yBL4Fy$rwc*VmaX8UOuJU6TOfFVD!oM8p6ZP**cx2OPkI*LZmN zmHy|29^?^-7hg9?{`nC2827eH{r#80WY_L1|NTi`Y|@VV|L#ZCUn#x31jmkQw`WqP zy*JI@cTN2EW% zyqESfZHt$u`|JAGdmvF{z%L^n835w$eKP(YVvtyL;+NqI63;xu^Cw9j$HWBU`-3=~ z6tuL8NX7E-@^XjQBWv*h)YcGB9U-0tg2)o7n}b6BziS%69eS1?gA>pIDe+k$=bS)a zZi$yCM>paS!_jX2#lXmD1J9pe*!S<>_kH-#0}mr0#=w9#(98#CW<1prkIaN3z+DRd&|6OU10@%1v zV1n>W9%P-U@H`UY5nShfMnWhkixe{_LUMRCff3Af=3{q{R2nuVUML^D!}-@Oqa;KR z6cgeRNI2<&dPTm3M(k)qLvs7}?Uk9rSVwv29f;#n7R&dtlPK!AeEK9 ziex6MXi_AUk;tAQQZ%ik5DFPtWt8lZ6*3Z)kQFVVT}Xt=&dm7ETfN`+bsX>U|G&NU zcz*ZqzVGY0&g(qS%e?!YSTnQd-`$ciRz=H)1wAPI;yXnOWh8?!udum-@i|`~4nMwZDf8-HC)DGlMn_%{nwX5!=m0ka zV!aW71evNqx&L;M~|Z7#BkaMrcigYj)#)=N@*{n!j198QxB-CZgi`abKhx_|o6XV`iA{!sng*4Bov z!$i88^cH?VxAy;5~ia6~o7O4fiN{aIR(_fs>UEcKxD~~0S9#$q_9p1CM*TZ7>d940*Ms!oLj=Qv zLMUk7o?nYwC8G(C>I(`bscI0{i&~sRo&(zTnV;Y$VG8by^!!&!c}R4iLKB+^A}AC^ z#Y*ZcbuffDy8Gft*Ph^`z((~~+|&*vHwb`S==a0$LHX$Cf`J%-1{zv{0pY6VA=nO4 z6sxL>VZVR7QGCO~4*31dQ`oWN$ZkYCnb#)~7=DaEv)+x=;(e*(^@dmP3v#iSQ?z0v z@JXBs^o|=yP@x7Tsp;a$qeqQxJXKX|e_5YaQi{cKV8`W6Xg&R(?r$V^UT%E%WaZ?Z zfUX&evY4!?N~5539Ri#N1*`w+;z=8ulvY_J+mz_qZ@Yg#Mm%y%!%^%;p?3rPtrorZ z(=f~;R0Gg|0>V|ygO(lv?2lrBWA^qrZdVN@Xj2m2%zyia6SCz6R{k|=qV_^->wfX$ zSukh;R6`vBl9YrZ&dA9vT{L;*JvYcdbrf+ zpAY9e;QEuRs}JBPjnfZ~b#Z-PUg92Q7EmG)d|2%crL)XMa#41ZXrh zt6!%p-#ZR-0LtQw?vNeYxd@ar$hdF+rn&x>-0UKe(4`*Hoh*aW<`Mj`Ub#mA*O6%f zcLBxPAN^+t@WVBQYeICiGn!sMAJPun!*S{%JUEEo0P&r>mO#=EQYMBSI2+j zDkxSl;pS0Pn40|lf{LA8S<1L<2GXbPB)>#6SXAIzGi_9NZD}=5>or(Wb)&qKFN3~} z#6{n+wWB_|S6#98zsx@E<^pd6=EQ`DMDYbz(GJ%So`Z;q2_T8eiiWa!+sPngjI~dn zW{X&H;WZV>D=4Ia1`h{Bc7+gg5fS(UHGdu6dG33M4>Y?V4H1(Ul*b$AeKXFEP4nS8 zR_et|LD*_Ow}{r9p;8=D2)G|H0xKc6DnvF7Ai25T%d@yIgT{7UcLEN_M}#h$W5=eN zwr$wZ{NeTGOTO-dzB-A~pE&8)t)m15QI0-8IBCgnYW_lRhVzwNWgO7cYo?yBrmB8%Kwj2DZP`f9CwQ8g=zP2_ zap;h;gi-z}<5(B*KM&4U-#gKKN{IEY1M8-9r-vp1Xp%Dzi`>U^WBcEzvi4q9#5K6O z0avwH{HB74AVj=6+upf0mx@Q#WkONKabC5{yW*^)X|d&+y=h;_Zucs8ad`Bj!tjh_ z9F0*frSoE*REy67ugCcE8{3()O_=-NNFMWqrkUbv_(qo!ME_qI5HeVM)|fu$2lG-oO3RBAA?MPB z#HXI!0TKw~DxFN-SyDnY$0Hd2G7<~Yx`xtMO(?3F{r0`n`EzZpY@0Sq*4WhB9LwSx zT1Ba;shFxl_C!IA8=$Yf_v4+9rJ&g`!r1W(*dVQI5CDC70|!^M9%zp3CJP*l0~1a5K+HM89L$$}n*!O<>@8<`|#( z*{vv7GL(8B|0{VWvaKo=09PB@JS^SP>;2`>Ly7fX51ncH-|O8w!6;zma=os1uavRO zjB%dvkT>=OCHmQIwj7#&b(B5>JUCG?XH~m*USyE6x+C>GLcm1l>13+1&jfw8sqCU1 z+-Y^*-_Cua%@!Be_bP_HzIUspCn|UVJO{fz4y)yo>x%q3u7}(O=`~{c)^{Ny8#egn zY`A-jx$8%+<*m=}O)G|<^V+=R>z(g7_37dRWdT{0`HJDsdNRY`2bp+ydOqLxC~{Ho z`EB+e7vM?xp35!*+yERQwwhRx=92eWmkqf9e*FNyohrvL1PAr|`^Pp^Hujkbtn-tn zx^^$>oj!NgNalq5!mgH*tm69?K^M-=d31$tq;PZFJmcz`IMFp=&?_}WPkYz%+)$DS zk^y{38iHS@z>QMlis3y~(3(?7Ag5lBpdci{o2&D2uc0MSd0+IVNg9I2oc)hS2w}sCHc1Bhm9Id}#;u?e9QmvlaN|yNLFsU;QoluVeIr-)hI7{Hwp)8$etkr313IsOV@Bw*4YZZy#i{9$Tx>{W16l;hY6fXM1WuohvSa#3USa9& z_46Q^qD)#*cKS;*b)wd?f9F7g74k(w@*^%LNXAY3chp}4kPiH)8VLw;Z+}zEp%uag zbpKV0q9}A}V6fw_Ev9<#;K7@Z^W8ufeGjI>>CVStAor5z;n+P%Hjz*o+hI&QAk9Fu zD4{8MgtSu%!2~#8BV6-L6AXfFng2o$G1-KN4i*CG(|UP(2ZS4lBg_+X)CcZ^Az;Hg zeRr48`-fy?*B!ViM+?winDG2SM55zY7e)2~#w97(3oI+BL48gYj*4yLRG=&ss*Y8N zKI_E9mZOt*8TkynCH=#HYob)%i>mQ3e2$TW7VXH=ulcVqtqZQVJ^87O3C5mKPi`WX zd#S>`05&a19gDXE5-bx`DyhPH@-_cZ@9p^(+yoPzo0~%^w-W5sJ;euS8q7W; z$H6|?1dxH)jR3s(3gb~)2Cgo&ysns9j(G>8nj-d7zz7AoLPsHYv4Lz$^x~nkx#&OC z^XMeuv65S4gXp6pBYgp;8Ri)u=oiOVY9QpjWba9{sBlG?*A{sCZ6QGK@p##F2{8YHfPO=35xx&E4vyjRPjJ4(Z>MRz zOC4Jeln+!^?B-f5TydQ2PM{848?CNF7zQ%}KB(PDZyfK=q{sGAwu2od;U=QmCbWDawU&ta{#4a4zI@fJPuQ$2hjy5DK=_{M!hFyBD&bpBe*R## zv`G8>10U6No4pG;8;(a120qxh4Uz_ePoemJR&?l#Vq!)m2R$w6Uqh<{{6tt?_A~No zI8w0!#~_m`$o5Bls0y(wh_lMr+jkD%M2dl{UL75Af-zH+F?RuI z!6DOBx`h3T z3vAu>CjW4?-v7{H2|dDC01|W8XYnFjt{M2%?U7}zWMr(v(!)bj(v44I#eXXn`~e>9 zga%GJokU8dppy#qGX?CeYUbT@1a@G+UCy^Y82ADC`ouwlbbxSC)dFY74SfXPuLfb7 zbOr$8lMaT8x{!4JTHq1*rT-9>1~HC8h<*~nDd`_>a1xM_3f>`6tO1cDKY-)EoGcG= z5kk60+mGlFQu8b(R}7&YMw}(kpo2T*ODoSrjl_Qs5M_Sg#wIGDfT|G10PYJ2Pv3@@ zL7o;ZWFn3xL47GpvyV**=e^1#QS-iqYWW3Ymf+@#%uK9$W>a8$+u*QG58m%Qn5Dy? z`Yk(=5ZzG~fEkVbNP-!o&vgW|uq@$imu@Y9&`g8emZKgaG-FJLKQ99x7^Z|?; z23|!@53TBElUXOdStq4VO|7>Lbd)amQ39hO_RcDe8)Tt|uEih^{4N73NKoGo^=o8^ zlE;Z^IAQgZyFZAD;pBR@fhW(O(jDEWlWm#0-L{iYz2{j~r06U0fM|TG1yEiB!eJX7 z1_uzI>g@Xcc?~iD_ZT4%D-GI0A0;pF{HJgkdQzSi6xjlxRgS|VfOP#`%Iw?y=yxj`vjF< z<$f9|CbU0k6@QT+<8P_Mr+-}vi9KbLaxBLC>dh$jvrHyOP`q#BzXSP)PFDag{JfhlGko?eoG;VVr0ICX zq|%<}?NqRZvCMd|WXkBSgWrwmbdNs^haLBd2}x{+vv?3RA>UxtfXd)Oi?dcDT71AR zuAp&8Q~}UC`?W-6Gk$B_N!BH)O3DA+ut2Xxf{(V$E9JWJFby517e$p&r(FwCS2H}# z59R{8gMmQDfU2)^|W+{`=kgR+a)HG_T8^>PH%9^uZMTMHs zJaB`bgfDylj@5S9G7j(W3gUMOQ;z&h0*?iiUNg;z`&MB%sgok2ruLDPzJMF|;i_;S z?qFKFDjXS+*8ci z<1Hyvgq47hYKz-Kr7=~`|JfZ@)~L5E!ET489jVtptZ8Z6`l@3=#C@k+#+hZ>`_v34 zfvYm5?+bf^JAg1fQolJo0=z~dF3$56oJ+KIg#jVckQ1YK^V`8x?yHO^OOk(vgryd) z_X|F3)c=F$*qOLzn@6Vuc3VA?msZmj63QQic^72z%xL-$xnhfR^Hsz~A|OC;hmul^ zkFPv!rT1!b4N15vZ9cOsIN0LxpUw779ygs<6`j#pXAo~1(u76VMGg;*4HK;HNjt?P zPSigat!Qd$>K3q6Jv=?X!ASzTX_;wdiTfTTv32D4K17F)q?{OUUt!>jJG;1RDUu!U%w=})>AX)rIp5W7j%&0iyf zhC=?gWM1RF`PsVpr^AtgVcZfj_|t;do7Tl>9X@ho8D$zKyrXbMI1B zdS8U1M~v=BOoT*$LX?8QN_R;36_4&j`@A{fY5Ae^r$MtyOWP~CZT!k)QLx3Yh3 z;T8)tqEPnDZp%KpeI;|UYt9-WiHF3#gczCP4I;BA=88l@2&nYw5xFI00gM(7qLob| z5`H2%KVTy>z{#Gv5TG7hBs56h0sUHp-6!A)?VrtzSpx#)6VN4O(ZoOvMjVatk|a3$ z(P<(=bEGTi5&A)F(2f2wFt5F~-HYEXqBKN^k2`u8$ex#DiD8q;hErg#>&;tz4jE`^ zxZxxhbJ|5^;W(oYQz@TJFRUBu)zPpYUZ$h2ma!UzI8qH_;zq<97|=vlWO`M?C^rQy z7ota$Fut=A8Igtv8-e!$#lnbbpPSnjWHQ9u4G<|82$`hij|@&0A;7S}QvTHmVEFv# zPI*lH-~?e3naHXr4a4R_OV406A%NckFl4TIc&>Rd;`HZoKU}}xKPaJMDbWDwWh zjN7-L0M|y^a0T2%_`Nd2ZIyICp=rg!5z9^F(j!QLNj-y(5@eD7WE5A~sZcOT(g9dX zc-yFEMl8M5%qiX?4ebgB$&%%i=&79j+Q$WzW*$^GwVxS(@UYyuSCp&Jk#^0)&m}a^ zdg+lC?`dzluW=yiiKQ*&oq25bcPTxK<&L-c3au+wP7coe%uurmv)Pq2Ql1I+-^hs7p27U4nhO-V_yJazff zB|?_v+vP#VBO(!$$BjvnR?@En)pE-zZCQ*&#_qb7 zo@L4>o%nX`#Lsu1{Zvw`N1X4u4l-0F``%=i5t=+tpDVwA)5Qzk&n-Imgd5)Z#oQBA zQSGp4eOlsiE86T1OnT^A ziT(m_k`;<86cOp5@g3*4J#B9v0Dk0GAONKJ1gBt0GmX|g=|uyzC!{li1ftA>6%|;$ zp&tvZJ1Q_#1aTaffiECp1hLCVi-n-9Mj57#?2{Cd@av)_WD)eELyQvo;)qW@nbQQw zi1g*tFxO*x_Gcl8Bq?uC{OkYc+ovSER$ApqnWcz`eru{d^0|DBZR?las%N=FE&tG5 zWVpP=U{zdv?E5(r?rE=q5FJH6SvR*+Cl~Ss|ONPgTamW@>Uo$ojg*Ez*_+3|I}?z$P$DcVQAJ5+j+Ii3SuRA*hpW5M+qf z8O7(4B@u{AfNP{CuZ~3T=I7@p?Pvf=L_J9m1{}x3s5Xd0DozsyLsYU6=DIKTjS!}& zkemyv^!f8=Com}3DrNo#=2k6|YJVN{9eeC{imhDT%=Fx#+16L{x@#rgg$%crNVuJK zU5Hz}d5_iH<9)A#35UhoFMFStaA?m~1#Y^|;iY?|N91@5tSUo*KgDVtUO0nXn#^h==YVVmlsEfM-f^Gz%n5F7Ym>!6Ui%DwTvVt{rr-QCS7xWNq1EG zh}#HFTzkg3!+Q%orRBk8@1#@OFD9tgb*A2%d-HYgNzebPkeITP}mUU2^NM*@)0%}Rr0;IF*Acmkp>R3`EW=CV4Ecu#B?n{M4guSv9Bfq2N@eiuLZz!VHq!pM9gEWNyE7G|aX;@y2M9 zWx;jaD7A3E;afsZ4&C_J7uok?xGceeeGOaitg)eZ0Z?cni$K3c4cm`++ouXUCIX%% zEMB|-GTIYLsubDlBZzh2@zbe?^X>U765bJ?7VX%1QXU0>kv5}bt$8bB@f|~vN0njs zhlL~K7x;Kvw?A#xqEQnYvCXP=`?7F)R@PPNTz(Z-;PA1vtmWOJU9Gp8 z;`z{~lGSOK4t$N({u3#`qyH><+E{2n52FzZP4p&0z*vGaH|Ubv5?#8lgM(pcbaa7K zLd=*HVvUJ*9nVgtJ_15dMJcGF-fVyrViXhVh_L{0E{E2T;32)c^O+vY z8s49_H9uk{m=7$PdN>Fz%qcRS{b5o2sj;G^(d4e)Q5~)4%Exm##Kc5*va&^q9TevP zJ(y$F+Fe1|LaE3DRMclh;7-D~`ywCq-6dG;5dKC{{SmV$#0jvagcKF|p(nln@z^nw z?Pz+Cp}g>D^@H#oftnyRsdkQvFL?HYXB-_Nb^f&&n}K-o$lS!?xp9Y88O8UH>xe$; zQS0pttx((Dxou#;%yi4R#I|`iZn4`J96B@QW|`dgAcjV2_AdR0!iNk2LY)RZLf4y$ zTo#yu&Z>v6KNG}1S4m}zKLL}Wz&`S6MH_nnl& zW3-2gT(V2INOBh6;W(o4?cQ;ra@{CXanF|q9le!|FF$2y^X;7GplotHTFX~2Pch6n z8h+UBMC}Mmu){>O)Gi$eZM#A8BF$Gc21}9hm1$kz(sq7u0+*B)EFQqhi}<`Cq5!r1pPl#!a4$bZuWQ7B$O0}4oBjx;DFQiWsah|dWc zH$(#|1@#1)GsT!zVOj1(g;&^s$dpp}irI9(%7=NAO8~q1{v5PaS8DbQGe4x*%VHRy zV#d<9we3Qy&#)bLuv*I-X^*G51qD2IVsBoYTkPbvbspB)m2gP9rN|;?5uVZyvm#<{ zCLWSDByr^|8DRFlhz3nNP+BjeadQf`4MdayMip^--V^=gy z#lZuaFaSb-h7x;ERP35G0Nlr`0=EUjQ3O2((uT{wNmYeZk7(=(c^N|~od)i)Ej8V<8H-Eh z{7*qZcwQZ+c()ymLC!(V&yxC)z4PU>7u*5r|WhlG;3{ zqU)#gEt+=^f2L|}9XtK=r-cx$LdqlV3M8bk4rE2D@ga194)jld^l{!!Y}sgfm-4UM zLx%MLL*ZYd`PxUDEdE&eFxl5YJAuM-WTRcHuP(r zeJvAl594O+DN2=BE%fRtHR`|kbRV{^=U}>3+!s*#4vo7OIJObD8pZW)=S*ImZzl$$ z(2#Ny4FO`+N`7_W`i2HV@h9Mtl(aOkSz}PpNn{`yEwF%UOz`a2Fb^Pgj~?%vA`8wt z)~+l1bd+khKW0kFN_M^RFg$$aX6|i!7X=H-y=0cZ5+WUp+NT=aZw^TzAF?+!+0uO0 z>ZW%1-9L0KZS3itHrz4eZvE!GZ*p&?>)W?^eM;EHM_XY@HN5ar^i7SrNI7YU;rWhD0%RGUQsIwKygG%(N5ZB)+HiJMrWGdKg|z~!M(|?^#8u2y+cN*pzw*W z?*uM6|E^~D_|sEq7;nHtmvCIeQ0dJ3%4HdqaW$VBdCOw74V4OXyic?@rLSMS{QRmE z-}{M`Z#l!dzEnME?h}|;vNOJDRp?@7~i{~(%3WxuJ-RQ#u)}TW z^G(_dbY1N^Xb{?)Rtd`7EwrUy3`@mH(|;y^rqhGgn}*+OCV6iC1<4Sahie5Fj8^aS zHsB82_e*%)U^IBGq-l%F>k^X6S)I8r=c+4Qm2HJsxR%3&Ry&ct^i-bI$Ne9`X{Dn0 zfWn$%ZP9iJNC5C3v`4aA^g=}Cd3h8#G&Cs1W7EU-&=5@{dSG&c{_NMkgvB&DZC%}~ zGm;jz@85s)_|rLoVN`jq?>YV0SG6ndsN|}hp6t&p-*X(gppZN9NG-kxO-J~llOG(gl3+gcrFf^l!>hH`EiBnH!G4C|D3Ycy@)e5*Q zk2aAyU_=7SAuo^fswS-BsK7j*MR#|Qz#ru3Crrxw*;5}C5*jRBu6!#Z>F1Fnf*zk~ z=aLWlX`BMCAnfMvB8ZY1lId)tyx0~!tpMN?35kiUTwG#q9AUuh=%Y0J6K$>XW-8BwM%tXRc5UuGSUJ*A{I6UoQ8r=6+g`16 z`<7>rW$y#A{_X_NL0fPz?=pBZ`&Ygy%D;Zj=;TOu#%cREyYGJ+{rPH2ugG>Un4Js) z^lzB=?mthaapF>5$**dM53B_#;`@2+?^E^M%CC~DtNp6O)>OaRO#|oNs(EAM=C8f9 zoc#v3!CvjFTI|dr`+Hkj|S9+^`jH$Z3U@~rn z9hx(wCqRLlTw=ARmM-z82h}mv&fzLjp58wTq4mv&zk!|87!E}pn&-aZ;Vz4FGu5Ho z&6j2k7N%7zJ|^XYJX4Md!YdlWXy)eqp6DdEfHe>Fk85aMGq+Fe`c|jW*tgSXpDq&_ zGL6`xxBTOfld4##tB?fM@ZfJ}casCVZjCKtozfqjh#J~t>#UPejJbCZ>h1E>y%z(H z2xeQi$ZpvOMn2#Yr4J2FbPk@(TKp|DEt<~6vmqGAZD?>&|(f({5E9kL=&If6F8@&09-fmw=x{8$yW;%0*nx2#$y zSE+w2s_b-DG5cL;VN&{SMlr=|?f}U9=xH-ym3ssZ{4!q)XH22Zn+^JTR;x;J<&_>+ ziC9Z`vh|^hpS}+>&-LvV<&hC+%c21_)3axBu!+4l*&qwrA>~Ac>ieDFPu5Z&sw8DJ ze&zVVaHxa(=%kD^(E4Zf@x!@t&}s}^JZWN5-LQNmz5Zmvv7^+2g1Mai4BXU?j=9HN z+zdOclLWlId!LV;KR=~2)AuH?xnus3QfQP`CJ}llvUs!o>!NPOzx!d`p_^tzhaucR z0^s=JQ>Uce7{j0kB3mP;z0BFJmt|_i$!77QO}qG;0@#BDB#R6g&|Wy$k`+qX{l?*G1I_Cn`G5i$kC)AYYlyD#;sRqY6y z0w9tE)BKswrZauB6U}KBMn-vDipdX zV3Nvbqrq9}6}cvb1!JwQ2jaySEsK{$YG~~+rK4kF3eXn&Hs!mzXhot1Ln58m<+BXw zn=Tx+cbjUG@9BRbx#5Yb{^&2~)g59@kx^n-a@1CAJ$@_2(Sq(bQ~P*Dq6*dL@<@NF zo78BMN-KP~Vi)Omk&D&7z?iJ(&a`-jw`Hd+5_bDo_48zQqtc-GiU~ZpLg1Iw258ye5}KCit}=dodS)qTID z$Ks7j0esm#4!%S4l3hQ~8*Q3u{Bh%t-C4%uZi>YU8j*(mMQ&qub!xY{C2Mb)=+6yt z(+JxoQh%CUjF6UV?VWa2Jy}$s2~dV^*REZ}Y!mi`EBQ0)_<oeArJXWA71t+VJ7vD@l)ePCfX(AktPD%zLrJ zWKH^Fp`5~0*}n9*Y+H^?`@M?{F|B;Tv~6-W@@TX3$#Y&sE^`ll@yfOK@a!n)I{cH# z;%064W<|?gu|fAWi)|0Z;WBVQxfO^(FPPsc3EDmcy8$TJh*77C`s*EN3aC3ch$9L{ zR-Sss)$25QYr9|aMd}A`RL!&5BhbyGIWgv``~tUtW7N;S>yf|rg@~+H|PQEQ-gj8*{d+Z<~K~@WoN(6*GaQpS7Nwta?)65Ro_=Z8|AHp z_<<<2)Ys<7e}V>o>C@ip!4%(p`JvmaBow6?C?jTj=Y{x_qu15P4ky*Vt)W<7Evrrc zGi;<#pm&0f`rM-@o$J|O|Ji>_=+G@JjsamN65b1xa8S#&ySApR>-s(LXex8@=j92b zys-tt$3~JVXHVR#`%vo0P6TzSOfk3PZ{E034Song{Xs%ZO;5ipZGlF)@6i{Ol5X7z z;c`$ypp38sI<{$>Ou1^HVIy^-#(r@Q<^Dkqif`US&D4m9^0<&^>)8a^s1hITmedan zlT3>mGY%Y(%&n0w?XQ}qt2?re*1XT?@_YyC+ZH1vl4PtbxMIY{`iJ~L zrw`5Iluz!x#I2IUgX4X9naXe#Yk;Jt2t{s?($-ytd~2ZCLc5pvG83Bf?c2&(Ix1QE z$=HIJtGE{3Yc_?Dw_jP#2}!fE-weO6DaW%qRIlmv-Reo7IiAbbu}ZbN3~8Ir87^Bm zW4gm_qVC3n($$tB2fM806aDj!U292wcP#r;sgnQ`V7Kam5UL&*THH$v-lxzUIbaKt zB8dIOY*G2-oyh~2V5Y8*rW~<2#U?ZbC{2=3bZwRgs0cz`1CI=%{UTb7Ee?^MF>58( zA{{dCevzk5@vYOJx;_=}mT4yM<@q_9ar$u*qw+XfW&80%C%OvJTrq4CWoiyiV zVvtm1yk%?M|Bb48Y;!N$iBad9dli!K+OLy&d$1p^#})C$6_f9(TZ=uc18IGHts~K8 zC9|Y%K>HN;R-zgTVKP@2jk1GK-hi^d3cBIL@Vdbl*8)#JL-ZPZ%;uC^@p+SWir#y- zYHa4z@Qw?3e{5h!#rCzIE{4>9P^B}y+rj>W;r-$LA+pMMO1Z@dslH7th>g>%BX9 zKRBTY)QDy!bSmdM7v}{40~69kD&*+(J0bFE-sp$UEEA|i#6z-0Z;KVQIW4#n$)st# z!2rmtTcSb+(PbrFL3F(W-yV;DmQA1c zkuER4wN6Zqzsh^jviE1lgXpWFjcho|my8poLnAFUrHtMG_;~P>QtS)34SG<_6Apk& zg(UzTcT8O-&419b1CefkJORsrY50w>@bibE-~)$C8WWqspm4o&=%I1HxOpgO%H}Gz zIdjenK9fT`A2s}0{5Cy)>1;)t5*-m zcBQv^gjLksOn;q`b)w~+&%EhOWtGE}_B)5JD}@V9zdyIF&!J?$iND(SaYAa(8}p3? zle}y42jw>&74D4nXHnr;1&0DDc!2`f1p?Oyfn2Iv#`ekSQM-n4{{0~8orf(@Ot^s! zg8w)?BR2zz!^Px_kyx!!9q*yboc?-6fJoI5rnDM2l=f^tEJz>REn4bYp5AF2fg#>N6>Z-^WxxC0DKz^k+%iM3lLp z=GMX2A4EjXr_|B_;@|^q`#~-E!Q+RlC?@Gm1o?)hGj86So zt#77uZoNoUa_ncYHS6O#O=wfnzJ)ThXNcrgoZCqk^W#NX5WC7s!LbtXA=z12l#`Xb ziK8`fv{29w_ZqF|hR84oVTh~z*9`F`z@#7uAAO<58;AJb?&QfkZg)+!tFqEyy zE%&luQ(3834qgBpxOBny8Gsk~9pP3GHw+rZM9(ZkI_S{#Hy}8n9aQ;)%ug-;K z?3*jKX&=ZWFkgN1{fvEnn|lC@O3+-I_Dwmoq*s8C2Npmhma?d%#6aP#Bq)m^y1VD2 z0Rj^GXy!K#577GU@DFL4qn8fI>oS_(twmN6($ZldDv@_k0!~$g!a(83DQS> z=RY-a$UWJ>M@_c7WQ>RR*us%AOHuX$tE+weNl&>8jB-+}*d>(`ER*Cot@+$Jx$_c* zPg@(`S1sPMdNAqNg$oimS3H$;*cWxTP#tptyh;ak0n>wvK=OpQNObrFHC{FzVsvcG z7JFODqD*^0BcQ=^xKbTu7h;kSdiJ|_S9!^QR>V+DBvNGfE@t)-{7FGSN|0>gpx~Qp z^B;aJ{j$?u*3C%nTXp)UGovooO@OHbf4%4g=^GSAKXjlDV)3WmO=6FXMOqB zvzu2@BEDvpBxboBFyK0!U6c3rT7`>JxcbyJ$Iq?t*CyqYw{IlZfCvn@WKf0@ojWA9 zFuPL2*^dd25rkJPE@?#KXSf@Ia)nFLXW5}M-uUrjJUU^oADwr-2!M(Bs<_=@1dsVP zN*GJIpj!BE{-Y5$1C%~_txavReP+bIS@Fl#qO?O1Y`?)=j;L|p za>9BproO^F|Er4=A7@^C_qEH1`)?neHOz6`*SmUS!N-N?Wyxz(v$CGJx=k|pkc(nn zo?iNLaFw3CejNoS;bt(|TU$H4xVa8hz!Hf(5Uc@@!W;uyW0R0^%T~lHPd&LZT%{xH=4I1hHl$fzr2Ah zd$gkZ^Q{LsoO{;WI=p)pOK)WL_EhbJB7&$j-)FV%Erk_YpkyJ1!=MP(t$aPbGb}exyOplAx+Er_u5F%GXx?=bOr+1@Zq6ACL7h z*~E#%;R4_FHPDOTRmAb{bUz6FI4GFS#P+oJBI;Cxpac*QFgrIGyihQYkD;4!<7TCo zdHhrUWUnzgqU$Akank)qV1UR%7SkiJP`4zf9)U6hV{GW$=#j=;VOE;<#RnIIvJN>- zyyO(e2VtxpzJ)&vJ%kS3ATRe}!+;VH3W-h_;9Gr=i$PI+il)Q7@nB^04$WJ;cAQ2IU5=pr*T%>Dg=p|MZ zegI!BzDP<*T@~<|i$XXf@Rji$(;6VNWME`RM+a`W03@-SF>ieV#@zgsDp3Z-ArJq4 z-x-WE5XF`K4FSy_ESBl%=}q7+VBDrQ+=?8*XF{>sUU29ZIB7O^cJMuAf>S;Q{Ne^w zg}n$m?ihtOhQ>3|nqUMG=8L2sf0K(AOcYKpk-2ADpN?{e)*mv4ren$8M0g_?Zjx&l zjQueJ;&m}@e=uqqR|t4fFoSC|tdPlUzn&g7e1pv$G_$j_pdw>(D|E6R4W3;HYdxU( zk}DuaDeHu#sgbcUWkEZ9E{|6wPK}iX8EjF!T!N5gxJatZ%+uX z_agHP3J(4Xr*9A-l0lmo}&$ zet>cV4XON<9yJ7k`rZG8x7N=r(9kr|Qbu)>8;=J>$&9jca;!o}Hp9>C2Tq2l0GaC6wV20rzI z*epoSfvmwklZe-0x~CN_z6a(!&Q4AkTCqcY1`ak*sb`_>>oq%&g^2Pi%qq)cvwjN0 z(mLw-!Vlyd?3dEh(_8iG)(~3|+{&WRjKB|a`|;YkIuR3f)%HA-2(m4)5r_*f7Ta~u zN@z2(k-v{A#O(EF@IIMvjJyE>H#&S=3oPUwl!DM11mZ3L`g)thQe$WCrG-%mvLp#J z9Bv!Hlq!U)Qx%NSWN&cFT>7_V?I zV23gS1hzyN>1PUaUig2115?g3@iaJOcOmFAl!$4Ka;a->4nbW2CHDbh&*7G!qWgVm zG14?PZ*|{e{c2lVQBQPe#_dic@hFzGy9e{$pd^ljb2!mufsh&<{(B#Qsh23u2(J@S z!w$ywTIv#|hzEE!wJ7@|2V=Uq1gLI$mZr5klkd~Qh;n%0QTmpg0oaP3&8hfgK8j^^2zG zGsqz;oWBLOI@62(eH(frX7Q5^%2iieW&K$KT5z!w$(w-pZ@tv``}z7gBcr3KF1^ie zgCAo6YGJ_?{w`SBQ(3v}s{xMcnRY7$=~IJ(R+7^Nwwu`lx13f??16VNoI=2(Yl7+? ztAZys{O^g=x<9nI4;JnzqWcuAtB`V1Tu?1FGCp1lp$XTB9a0_SlpFXrn4nn}g-;np zhJ`FL6RW@X?}_Hvz;*PCY|F+K%I33*-E2MvJILbS*mRg0GBD!d9W7y`g$gnkJ6X!= z5va-E?;=IR7Fqr83JhUXou@aw;l3~x6_{Oq)<4#z%jK9%?l< zu@mE7i2EO5x_}|_S2Q~$`E#nTuU)!YI9O**Ef`e;lqjQ`D>O72^mgD=Hj(rlYsiX( zjoc^r6a(B(kT(SZ5*$ShMAFKC3#oB;%iz^iKN`xwkCnD;WgFILtke_Vn|hr8_3V-QW#ZQbOTxEuyPSB(GMD6RsZPF-x0(UFlZ91;|VPXBh6U}jo* zy_2DY9p#$A#_N$@`d_tGf-Vi=m63UQa88jsKXxSZThC5NjmS7nIKCp5?o&~@)EY(4 z@$W>4-@H{?^YpF)W%U92*Q2|sR@TqA((3mu1D)yvYW0P*tua^e30;R#~z3s z;@32vRsFJ@Q-xzCNv+_!e08m2JV+CGtJQirhR7;fkjIlXhE}USgwsI5__64}=eyZQ zvn-4$QFfc#OJ@eI+e4-|9vs^huB)KoHn%t+lE@Be=t&d3 z3_=$kV;?fl0TkxQxL;21To~@WA1OHWH(soaN(F-@Vb}Rna^|I3PcS-#2D;Fgx7$C@C$?01d;i z&?*tRtwGgAZzA1ld$u^=_U}eGNEb1?tMMJjW&!^S&4*VT^_-PNL z1DOg=AIub};H!p=F#sx5P(<)K7;r^$GnCXoykcSNL~}4rjSgkCCQ{%5&`dC7sA9pq z)1RaNUsB*D3Q;-CP2gy>7rw4wD-+XFlD@%i1@pcV^WD))C)2NSRS^&c(kx=u(uzR` zAR+HTz>%BC#ho03$GzGJf+F}B`v|EYH$!68%QP{Fkbq!eQo=Q75NN*!obM+F-!n5s z@c4!Ea5&HyBwR<}T?`&-2sXOy$&(5Bo}dM=VVW%Ff^Qj5 z6($5wFx86qt3$pWhDq6!yKsJ7tK{_*cj^q3;f_dg%R*f#V3UIVKqfBIVIhH*kU4hP zIdI3+1|4Iy4-DQAkkg!~k{-fD0g4M>t!}s(l3KtCK`-+O{mAF{_ryR7a32_U9kTB|YcoCBY zY4P8oK?y)zOiln{r(tFXLX{9^zTmI_{5@QSh(n4?^lFHjgEVPme-r(>!oyd${skT6 zODpf0lUWJQE-vJ(BR_Y74Lvk*%voHoj!R|8;2%1B%~WF0F|EKxsLPe zO@^(bF%7W|!`o2gV}-bhcmzgO4VY(-8E-@{h@OYbRx%nMuelfZi7iO*AiwED>_;q7 zx2!%;(D5gxg5zO{cy!1Ij&!$~R$l8#`@xuSk-w!&Dw#p{<;zVaZv~8x@4|^EO_vz0 zm@Ii@f(@ujOpA}u;mg&+`X99X9>>76AAp5QG4v3v8S++f!PLX7?p78ra$q7_Cp9H@ z4&Z1%L`BS(xtS%O6t%azZcT~QQOyCDSD~YFoXs|;9g_wUqI)bv@eZ|t2ep-Yr)`nIJ zx!{$Rl^;vIOfI^6*9I%@HBz&JR4kC!i1X(h1d6qaWHzYmVUjIt&Dr;goGoC^2T`3v z00PCbP0|+&dbd>eQRmUmtPns_oaw8EVVPTC{g;pcy89{7EG|OA= z9#$pD9cGWTMp-pud9iF{GNsZ?4?AdVg{TA$<3c8*JTPJUDjK@qe-8dcEw=;Aa#Y(H zplw=$3adLLsrq?uxZ{@9r!6aLY9BIher%g&E0=WU?PFevF?VNXd<&J8Q9h_ZBM9HV ztBcr%%fhQpLB9;e;8g@-oYs9e!!&sMSc;RZTE0E2|MCTlNA+ln&~^T?{^BPR#!xtCqU^*}q9AhK zj=!qUhmhyu(kgAciwIgT=_rsm(rP8e(@}pE_}{`u)2HIl;^Y2ltEDVTS_G zL9{W*yL>lw{}mGk3!!Ljg^?UQgrDKXy9`>5y#xqO)~zQ5t4t={Aw$zy!Z^npn&Ibw zEhm5Bw>XLlL!??{U@pFUBPv;Oqul6L=MGa?G?R(0_}eeu%=G^a;P^;4oqS`mv=Sx- z&vBGdBflkv!HB(x5WNVJ$a`7Hj2WypFOKw5F89*n7WN?af*rs&hbxn)yDaoo}m9vaC8J4bn;K14K-lB^9FO#ouO4{^j^mp*bZ=+RL z&o-p{@fNWC;RePX&MMod=9rOzk?RYLv<84UXFHUh^8LkHqI9vcE+~F6kO^iwDFDwP z$o&4Svba7EY!1>9XhR65RxF+O`S9t}I9guay}k7Sfpg#-)fzRHk8F$B)!;fkTaszj z_mYK$;_O_gH2j42eaVXN&;88r*^C14{yI3kSO|krqQOP}djKO2&OTo2_xm4KQ4itY zYuFT%88c+07w!gLY$3cu2)g5em1YWu@F82ELCT9ppwWQ10$kvUxQj@}TlL270b(_H za?IjQeC`n6Be^E$FPsfSb2p`lE`)6E;?`Vw%44tt#y-M2R zNf7HMS23^otI=LH|owpc>p8#D@qsS7UoS2MAhFxIRTBASSEurfeyoSAvZO zlvbQN(pL5W5;!D{uR@fH@AHnpo}l9u78c^QWI~rm#>;8N$>cxWH#Pi@>%)s%m!n?i zy*l-oC!GKCVu5v30^^$PKcrrkRDRih@_kClHqw(JS6gbzJL$VHA#cF(1BgaTf+^I? z3LDdcx0e$5`P^_g^1D{O4y0IjJ-7e*Nc*m^%In7%uuD?Y!$YO%lkd!D&?9TntV8Wl zRlFyJ`wFrYuU|cyiCeAjm@av6S5;O0-vX#99XoaE0E`khuT6d$FnHbnG$dJ9keZRl z$V~5fpRV3gvfjf3oIgofIhO{97kqxtx~R`_eS4vtK2pQuv(dO+LlqZh=D z03cvQX?W}uF7&_oN#)|po$n?d*Q%TY3=CUCVkR&kE??|;-CeyvP*pke!bMA6W~Et; zhhiUMr8ipj{rExf`7s#>Dq^h*v1F@k>B7R!@o#sGJ$x8QA#$YYnu0g;({tPZ2BhKn z`DE)-2J=yqXp-@LTzq)Joyuw8+T^S0Y3}5bqSp(&oD?T&{3Jb16Cm@$G=Y(D0-2Re;eqDz2B12!Y`x271yE=o^L0)4U*| z7465jqR@+$G#QHN%glmw*l9wd{Nd%q#L4n~G@et(7k{;HV5VNYlC}Q%O`4jTkq*zU zpA3P4PE#^c=F4bSs2HC}+IsRm$qh#rq<$cEST^!;%2$U^o*EtlJ_!kT4h;-{mLHUx zTjXE$I_LVNz*g=pC*MaR@fx_J_#Zqg^mu;K0zw2*9XTK)AqfOt2nsY3Z4h|O%1-iP z3h|2SmX=6#!*sr<^ckRH#8!nHi}eK^o0KwldPe`<3rNGiHVWL^`^T3G^He^b?|l8* z=5W;6HF|m*J7=XNmoK+*ocZA@VMHw;z_VrL++5dN=mwa?bOZI$Z5poLDKyA2#7|XG zRb}XDxp*ja_T1X)ybc65Fg7ff7_U!8VD(MSD;(kzJtR&jN6IKH*?b zT}eP|@#ZI~TAbNN`yaZ@<{Ev>fBx}ao6^*S@cx?1n8^I6Lc*wdp`z0B#Q3rmC+=I` z+AUyfTY4gl_lTanqU6gA<#)|Zo?ZE7rplw;uLRW9FPqQLIh)>?6d3t*=5V*#jqSQS z&+KVTs$2o*1-G^&9dp*b;Q=wUvGrD)jaLpvMzr>pbkN9(Nd!*6mx^uXAURsp$ZK_h zQT&4eJo}+fLBWq0MXZrw=7km_$+cjmzk%QA$Yt0CQbx_B1CnUBZ$IVt*!|S^dylM+ zy-wS%Idx%bST#=O-`n$v0Pv}R)4oO>kCZ$FR z3S1mJ9Q%s@y|Zt%u%CjC7_O$EOATm;fP5m!ulgwS7_Au~oU)ha&c2y6-hMhklK+-G z8|VKp^&Rk7w|)B;Qj&(U%1TQaSt%rBgp%x0%3i5Zl#o$WB$AOC31yS4Y!x9yNmf=y zq>@eXKhEy^e%}A{dEd|H8E&rY_dCz;IKIbmd}+r!73P0+^vzIit+yMF7dlNp)@FCB zE@(^G{EM39y;^z+ihk1SF|vbGhvF|?zWlDVc*d?rW~5Vp@hg2rR{7aw5#Hl1Uj?zN zFaSE7#+%di^z8qXgSQK;E?fu%wt)-XF12j9%I@;et>OLl_UG-FvQ3+UHnUaS-zjVr zFf-BrTIdYx=FO{ByqDB4ob(<}E8>i`&r?dGWUi~LDBCsfvX9e6(cf3} zVa@r2TH}S&M{TJ)QP>Yg?SMH5#xscyTb|!}C4S+zyVxS{iQZ2l;|{Aii!d#Y(-voLk@#n_?Q+Wb!*%lcP|0|$SEjj8j;*PiZ%!k_}h2_EqmYM#15|dgEY`k<(Z8Sq(vqsal%F5TT{Dsy z0xt!UhOn?YC3nB&I$*&}CVXeUiJVZs^Tl+EQJ&kruj6rE7ekMtqLJ_x(e-u({6j|v z>h5Tyd{OpBjnhrcC}4d0H_}W5Z?8n0oRd4n?ffJ2(C7S&nI>)zuOOM0bs}wjHht&V zrP;c=^Ik7|J`v>IX*(SMVE05n2S5U+#u&+$1TrWvosyLTI- z*3r{%la!2vN99QR@vnzj&eg&e77_ zD-k;KI-{oii>?k{v9AFpEF!|f*s$Y;0BFfkkmIc!6mKLMAv!oeAI4XCj|a1_4{2E0 zK<~41YT9&I9TxqacVz7!URIioV6%BAS1h!!tS%;dZDAk09Fw|p*LKlT&;*&lK>=oh zksVo`A7q49tg!Gf;<4Vo-q;d}8%wVTMn_X~_a|ZYcAHvY&$P&amj^B`)@D5w-;*VM zKxTd~uYEveQr*UH=?|B;rdY{_o(d}9nQZQ9oUdTJzp=IOc}v57{vw_|n#bSy*&O}E zuGz3BI!$CXkK#HQ#bdCy3CMn=u&I3Y#QbEQv7uqXUi)XIf!;gXge(9&SdB6{Sr_3+dha7g-o40cjOr=AB80O;Hu z?)LoV+T_l6^XIKvn-3=1bsL_n40qbBL0|mrh~$g7BWv~dzG8IQ?f))qHDrxE;=0FI zAKd=g_MFlakDWP!)BVX+&{BUh;BNeLQ1y5Aelq;l>+Wr#b=A+=ZPO29==+N{2Jk#b0csg^Pw$k z=LE`bm6g#4tvBwn8jg!rRU2{h&9LLzcySLGcmX+nTvsmaAatgn#nVGoUtqUcL~sSCnia1jNb6!I2)lQa|%U<1HA?G(`6`#-=wNQ*FNR z82xzR3wgy?lfwc6FhS}5LPdsZP|+iXPf8nys~4wUX6c^d|rC zfWvwH7%j^)-<0M*kL}kCP6^FASM@AIeBQQPOm=DLRqAPV3GwV5do&wbgudUqAMCc)uXuXs_lSxwU-FJuNx8kb8fFPCXA1Mn(wM=2y4c&s zEA25iYRf23H?a#m301H^CT3=K0p-EKl&tE}0Y@XhNv~*ABrzF>tPtahgyJJ1_j`xq zOe-kkXRp7$qtFo5arZmyU`Jc?lw2lhcYDr)|s`c~F(xf@%-A}xxd%6lkDHU&0n4fCA-ZxNmf98n0 zXb)8weZn^FB3B-n&RGuOR0jUbAL{l=f3DE*)uuUSl0qh69C!MNgb_S|Luur6zOT(6>-S+%^ z^qFT`*ICM5S(j;iD_v$o>S^|MoUUb-UhCkd5d{RcTJ}`7+^sL1JAF1N1=8D1Mnwj` z+KHk6vC5ep0>1H^L<~B&Xgz7Z6Bp0>>d+77D-Qdv^LB`0Izllp!yL~uJO^U>FtLL--$$duVE zg~30ePoWOmgZ7*qYTD%FWKf=F$JtNiuH1Fv;_A;J1=iKYC3~r;3?&6SEQcW*TYYA2RKOEi2C%H_|C= zKZHXiJ;%GcrXx~cJt*inuawq7hEjLSO|gTn`LpSMDIVcXo#CR1YD$~F_o(*|4X#L) ztoO(0tvg!QQwBsH0v5tqiC|1*KO-OuBE?Tm7V`MX_mE#Noek079GD33-e2Q0cOd&& zoE|UOz`53QX*EpkXZOCUku82SQ{TRMw5{!{$MA9<_4Dziqp9}rHK0JJ3T#bXf zETvc$T-H2$-4Q*%cw$`soDjdm-GJ#4nWs$UbJAuF1+x*);xAT@j!xu!b#d!Hobj=@ zBU8eXe>7Rnb74o=vBQoOi39HQC530zhq}sRU-fuaTh zY|dZaNC42=+Y&-`H=PajkTF)j5f$HgCNVAd;S+%~KiYpf)td<|JEm%RA6MOe^wVZW zS8?xmcB?lxwS&8BVXH9pjLYw#`6+$bFH^z0-@cvR{A2KE-68ilOOJ&w^GAOS&d4opAY8EX<**Q~i?R2)QrG|d%EVrlA+kM_iC z9TIw;DLd8Y_|2A9oB14w<{SH;uPKf^RaR0pW9SrwWRjC7_GLhF-G@|b?=o-yX#I_! zdjEJiANxMp)-I7OlyZGkaI_ac)?PBobEMkUy{u3)sh++3m;0Jy<5`rP<#vC;*59w& zf-hLyiS?U`XVvjb$x(bI`|8ceYe9c zm9fvW>vLyn3F}rqv5%MUkyCPwy7?hAefZ}sBY*1xV~LeF`4D8q-|x5Ezw?e}cYDkP z*Ms>TlPrlA6DhvPgXEr zk*VCLR(!l+yTYX% zDhTdM0x*2Emwm&-yb7H?Fuq~L)cy&Kqn$=S_(3ym8glGT;nxn_Kk`g45@-zJSrD~4 z4)%n|ngRNKmwq#vzZ{lb!F_~t*GM4imJeBlS|x!;r`;o5jMPqs4;#@1C_VP(6K@d3 zsK$W#KySCzYl;Ln+vE|+rB9nHQ|*@ypE&WFcapEUw`b-I@BWj~?R6c(0|r{F71o{4 zc-`;H!a#FGcSPkm6L?pg!u$4F0Qe{4SU~)jKxR+cUiuLOA?$_Z1TBCA)}k;1C&V34 zH$dq;)K%`ujqx%ld0~N5C(%K|!T2ubUk@--{!+Vzo&Z(%R&%WSj|-s4V|mu%gmw*c z1Y7tU2^OwPQMm=lkD4t!o6b*Mylk2G^5%B#Csyx3Ff@es%LJcBQ@}8;8SkQy4c$%LlR7$RVC>i8s8>zVDCmM!LDE4@GQD6BL?IxE?+rExk(1tL}sIPrK>6*3788SGV9=^7z%O z9o|rQcja0)>OvtmCA#cC}8PJq)vGsN|VPHYN1E@6S*hNc5d2H1)~=1op*)u@?;0;omvgg8U;1)jyh@sLG4u_o zOW*KgioX?%*}F%8iJd0)DIkYmdDtzxZQFHxXAO|{u}$v{qBiFGeoVtx!A0(lFPb)Lw``LDhF5am_^LxQC$BY)k5mOjMr5hF9 z2RGst;O(E7?X_UWV^lPZP(oM=aNY$>4C+lK#-bCmv-;_*<+~9x*$HO?^n2Lb5E~~_ zJ7HS1$GFTrvuhF#Xe5} zV%cA+sHs^0oO?FHzI*Z5?G5roJAmh&dwKjM+3$1Va|z(NW5fXxD`TtL+apnZY}m48 z;p41-K!62-md|&xfYb!a%Vw15m@AUsu)J8lOmJuXd!toZYF|QqeX(popcfYyo}dBv z#+b9q;Z#E)8={_XSqx`lB0~fJ9%3J2?UoC~8mHk1M&ryvjfV*em>?(ip&&kG;9`2i zSu2h^$6mawWj9w*y`v{=*xYg{n{${tL9*oF{p9nP@}m~&C8Qz;J~j`9oq9f~bMbx@ z?yc>o61L+VDnGz*Fa*)c8pwtF{NMv(m;7!W@%5F4e8}uyT>v zt@Q&6XkupDIyB{mBC(lr3Y0eyT zCbB^A*OwoME%fk0v2VH#@``p09dSGew*_tYmVGvIuo1$bcpZ#HlR@MW>R$SW3=N^ z?0qTzNvf^q3c^CSsGn=e=(=sVBO>B!j*a%+wzvqI($59&ZQUrr77bA|~xE zzBIg!$V0ljW05b)ewM&f21zav8C?46FCXMY5D7eHe)Ke9)E1G`UjPOjNah9xHU$9~ zZ*4~}1`mpWd`v8l!)=(va@4FZD=YhwiU?BdYJxZid2o%)&^}QRvk)8P0zIU5W@7%ca zD5=DV_b>Lq2_Q!GV@!&@XQBV72gLGUJ_7*}lQ;+vA_@5s+iLX1s?d=zB206~nUU#Ivp6PQ0$OBg77H`Y-{;t$gCd zq3NSSIL%BNDPJ9bUp{7G(ABO4Pl*fA~bM2z2tv$yA4J18F~;psbWRkLIQe*Ry_Y0!%+^2$qi4G)K;Ub_>GO4}rL{7g8UD8S;@flQ{nO9~n_IFkmAR7)+KB_2nR5 zD6nbXMp&R|2;d%D*5ath^FQ5{JTKYu_VcHlv2h$;15D5pop!{&Z)>wgB>=ehJ+yg{ zsew#K&-lNuEk#!AU|3Deei6gL%gMz2k}Q!0OUmyrlUtc-+rLv{I-bu_s6ohgga{OB zWqwZHwpQ3Z8XFsfiMX^L9dgpZZTbIcjb5FSM2aBVGLRlCUcOZLDseR#`I!V*B98)_ z47dmr_5c0;PbhFm9q|48cW}7K&tCwc6#ls(NTOuqg5OX5-%t|_UR5To`H>!nAu1T&FZ zAFaw&EH3y_I?J`??hzb7um3S4gUv}ID*yd!%|CY~^=OS|4E9_T`6Es5Mt)wcniNWObV#cdk~N!hFpyJ_^pVN3OHvV-{#;W$?PKKD!EFx1;7m= zJ4{L20%{bIQwtgu-oq1U&b2=Ay{A0Oi6c1Ze^-?PGitIu3+jQtJT_QvlZDYVG@IQQ zlc%Pq+rfOoj&sniZowmoLagb)zh+YB{k3VnTh-%(OThd5xUIIqoHq-^tGLk{r+XbvLP4{b{bYn zqZ{@D4QJ?SMq!}@Vb>!iz$WQmc0F2s5DA%t&cp!F&;m;so~swXGW&J?h0f96C-I5% zzl)EYWH(;EwY+*;Rg(3w-9k{fK{e@!T~RRWz`(P5P3L9U;RnOau32m`05fYaE#fh^ zCKNC@?LW%OT5fSWUE&gqXMk!&9wc(`a%$S=8Vw1QjYXKb2NOBd(=IC{}+CVZ^n^UHL-BWv@^n!s+w|)MRh!>xrbDG(cbLl}q}Xmn ziX+bTNFdv>sRHN!6$H5=P9qvQ{uaoB@bi+_*Jnj_mM}<5OH0Z}vgHpU*&JO6F?k@G zbEIgw=O|f&6w4=Fq(Sj8L*Y;A{x4r_7E)jIPR@fONQJagF94^Qy_0kJfCl9rhfo01 zN=ixsQDq~60Ajm(_s!ay!61K{mIlRT{9C~ZFx)UUVnFhME{zRCq}OO~ax7{$;=8Mh zp1A*EGxG@fD)Rz~Pb?CiW*dAPw|geY;~W+j7lhkFz#!nNz|?WF(+_|{dl3G5ysj=)a(_>`2@P@nupgauX=s&ca_HYSFHRBAZ> z#I%L%qJXC9=gjyiN(D0BUju)cYg=$k42mxcq8^}!vAf??78WSOx7`dzu~_+Bi9m^m zPK!i{LYz2xi9gKsQsMgVi=2xnU$y>6wIk<^dlv~`9GDS1ISHua$QMsxdCkYi$A+E* zum!Pz5IFsUiHKQIOEqI-H~De+^#-3@jw=RX)dVqz$fD7X`QiN%4)Ep0iiPUL7AT%jtf~ZgFy!a{#Rw(N{`hnD<> z_@_^AL#s$+ZLrr-LS;t2l=?Gwbr4;B@c&!k;tm!xQI*7lKCQ}voj*iMOzh90Zy;g~ z2&7{}1mX_AI>^#%FV<26e7hhTUxLqyT(?n z~Po#81`VYMQr&_pSBfyLWqGg3ZMAbcPpyTIJ=V#KhZyhu$_P$1*;5ijIGp%_eEc{gZFc<{Zrv8af)U zoE2Mc;~@Us?!mBjExWtp-hHN3E8ORPQW41t$Q0S&`etsgeU1+WG3jP<)Uj%;y|?`5 zy$26!(6I!Egxo++0Nd_WP>$mXO}$D@m>usVB+&uLudsH;7dI7#rzVz`J3G*%9B{aF zX%hyhO|r*$MaU^u5lojXq(~R}%WinU^q{w~RV7Boi7M#v!w;84TRt(fu#ks+FC+xa zA6Cl*3DziV>%l3zg(`>{;gC4=wgp>g!TJw`=^)(bejvYV%OqIuKX`Bp(st-!7!W%M zVofNgQhJYfeT?vjp)WD0hdSLSKY#z6yA1Z58d*h?YYIq#vSQWNzn@J(%Mg~J^#1fC zV%hAMV@~?{vLA|1PtXafRWUz+Fh&46JbGbK(S9lQyMKPw3pqGCg7&0!rWgV1K&lrJP0pA0~ zk{5XTZH`;=wjhJJxR8w#Bv1n7sw;hm6ISv1wUQat-=uYx|Ip4&`pad$ZjaV8F8|yk z^X1C}Lwl3NRmF$9h20ajJ5A>))n^n(o6ls0WIKO-v=FGaCHVJmcM=vcgCpH+o8zb= zvKss%s^Smd!2S##B8lfz-9_#UC|uPzLd~UaSMV)rp)B_U`T?Md*CA>y*_EHm zAQC+G94E{SMFANLBWEXmJYinRb_0w^8154hMdpCYD~R>5f|P~~z{Ymp)yo)~<_2^^ z=_ND$Txe_taPcp8YlFzZ_l`a2oi0#2 zwMg{mJhHOHCpyff^DYEH6teIZo&X4MzGD&_A7y3+;=T66ZlTb9UKB4q=_K!DsuW8&!!U*M;1TMhZ}x;{gIyD-$_s^r3ioO(R1uYWZj$Y zX5JJ>b7_dq-_gy@WZ(#xv0D!m{LU{by1vb$kt1H0zxN%FSI!ITIZtxhVYUsS=5g!h zG?M2~Zr@hFu%89uFKikU2lJ%fIrK=19<3|h#-sRnulx5ml6y=cl@cJm!=M)={Bsyb zkEtnAe=a-9d`M4M+uQHzv2~jm4MP!~;AgTHN9G2UI^FCg?uHIWq{Z_V&dY|!u2qX( z`8I;5dD}HW0K50@C99ive6%vZ1eA`fkO6RUKk`(n-yOUSl>LPe1L6TTIL91$qDPAz zR#H&4&`}^tC0p#Uz*pY7iQJ2AlMk!Qc263dD%hi}dOKYT?CEE@xk*=IGhayceq%V- zO}~Pcijh&yVu!<$wD6^5lRq`iWmUNdsne0UXwV^MKK@`} z#NqHgruSXlo2M?(_T_&NtDaY2Fmk56PlhIs?;TY<`WT8A8g^4aolpdwbLv?~&e)g9 zkmwNop_~`VeB=}T!hi(~X{_DKTCUiJ4xKYfp%z5H;3?6=o?cF4M8AR(OY@l zb}fq#i<;+85mKlY74@MUdebB%OU0W~dXjYn2qFyyN*j4iO-2+;_Y8Lb?GrO?_6xer zOuWAydoL9;`;`z(f{#`FWsCU!mA`+lu&#TeMzv2o?Q@y4U2nfqMMZD9<@~%?P|&Mw zYXQ9CETPOTeARJI0ISJO|x*0QT>#jO*jJlVFJehvf;&PGZ& zZbQ9@_Q7D;n>_~~3#}o=3-yKxy1b2R6iKyH#mp6S>$2YYI)QqXu-|H*5+`2Zp0JtU zk7axNnTt(?`e|*u!J$LF?^loRkQmFyA4S(=yXyx%z?jt#wZPc6Ps;z3RTIlwewWEz z+1C#Cj`0^>iu)-n<3PE6SFkt;hx}y0h2u3|KCLh0?6CxeVgfw<9oWAHTmN|~PNTNo zRx70vYUa7=?=da=zf@HGxMI~RNF=BQPwn@rrCqg_Z*eZnBFGYuA=!dewBlA{y;LK*R{HN{kI~T8t_-jos1qpWX1RO6e`DZAMnfmyI_}f0`bISy-Zk%8G^lE$@9gZP zp@3z^(|p;o9i831n3yhyKq`?})ztOjx+Uty+;huCm6}?W$H;y^pgcjSMvn^hS|{Uf zpFFt*-f4Hx`5cq_E96s&y(adNi_4N&%GVb4{Q`P59s@_RG!Efv`_2m z)vGQ`zl%n+G#anDR+lKP@!M~2V?%fP^yya~QZw^nEYK%V!nkN6BZ=R&-=@JI?yQ?= z<`!w(%bsh8TiUIe8b3AfDlT3bH{SWcnAiQG6N5^i{P8R3kg(8jCAf1d#QVxw{?-6A zW|r^Q$!12~X7$T*6qDf4T(0i_I`H64;~U2F+j)gnZOYZlzVz*;eRao!XpX%Fv zsi*!JQM`$b0@s^{U*c_!?WShk8+uK^S2ebwp&>I@9%Z_P_;!~ zKT)Yft2B2ndi_sIL-H04jeA)R<;88>CPBkF3js&B0G_X8m8vR=l9=wJahP*xw|sf) zSV=T;&{k<_qyF)_RLrNb>{{+j*>Ai0MAhqYft<8rNvNXo<$7{x92`^1DE7_r!o@EN zIXJx5^qo@qj|V6*$@(Aw*2%K-{;8F(?hc=UVJ<{f_}}KiKRboeg*t#qN1Yl85ySs_m7TN z9O$9DV9CO?B7o~p&x;QqM%PUBc!bDli2R;r-LQFeR}qbl@K!mWK&skQyaB*}*k?*d z>$}A`^Ka``<@Y4Wxc94h<-KE)S0$f|iuiZ~nVgD}*FDV~FcBOQb}J^`Xh*fQa>uC! z2i4KNs2oN|M_cW8AD@`;O5@j9Xr_ZgFRX5Qm=d3u=#!AJE#1`+q+CZ^~vC{<6ix-#dE5ScUUVDlq%p-yK<$jeH#9$s;Gb>Ufqppqsje$k@jc) z#&tEhKKd@KIgZ2)BhkyP0wL7KOW$cK$ zuC8vnxyie&m0mZa4=kU$+)K%Je9ZLHZx8P(hbyZ}O1;-{ruICnCcX(Fc{DR~j4 zwuXiVW#;Rj+);(2{_&%33sdEm`S}$o+FFNpMu&ybq5(|F6SBh(zT$fqEl#6$+`CX> z>jBn6=QYA&X)fFHPozAh^LKOfT)B=(*3&~q*opyqgWf0?$9E!I4V}*ZJ2_Zw17A5d z^J(Mk#H7``ycXv!TVuV*UWf2s_ZC4;&$;R3xp$wqcyLUNz{mXVVj4d`OqMFju3Z-! z>1UJFa){pVsC)6)%tik@wAPKojkF8X{N-g&RfH#hzm2qf@Z`yp$3R~CS8dZxppO0L z%dNJ-Y?D%%kw2PYQu~%EMlvXH$=~?obB3;oo#bo7GettRSRdZ8~SHFJsdhj6LWtoYS=DrfG6uEbF zJR42Uo~5T?%b)5WrV(x#3JL{A#$`bsRiu&(|4Q) z)Px{!cZ2R&*}kc#iHWUe0Re#K!CorClPU#2f=F9Jz&Kc-luoz5Yyb2~PE~a^)VGMe zvX_nsYr7s=3ekOf#lG^yd5j356Kje@J|iygWDp2+uPlTUWG@Yn9k ze6q$GF~&u|dYPJa&qvprsnmr7qKy; zdm=(fp#g-+8@I7dbIVSBXEkgM!IA49of5pH(1^J~@ zRu(&UH{QLwv&UE*yp7wSJRd%OJmd4?g*Rl?rV*AK1G!JIl$68*hU-1r+O)ZkgihCK z%B`+#Xn2iIzHemY4eIkGJ=z5{MR0BM0ou}sR`Y)2-}*`Zwi+s5c#g`b(_44l4^7wx z@BUs?tf!K*)~{GavuoG=@na0|@*s-|!EqTY{c-aGoT1;;)ybQf#M`t-h+J3w*wqcT zv$xp!NeM2!E268lHT^LZTo!ar`p2i;Sd3M+1qJB-KU-I@?`h6AUqK2cMFBW@| zt=%}&tB^9@ICJ>HZ-^bZ6qa9Bk2$h0^y8N^)?3;kY#XY~*Cv+t}<{68OYn-VAtuQ5Q%xwd#2 z6M~R23Gw^k;VZ$|v9YszSyQv>;zb>q4+J$5LGMF=H%yy>Z{5X*t3)XbU?EY+W|ZpB z`hUP##X1(DGl&~jCV-L2;IGZ`)qNBLAblhzCT@jC6IO;BDc?6l`5^(l7P1-eWgmj= zZTH)W?Y}+llWUrB)0kIOl z`D#>D6ycQ+!v`YVfjoIwN-J#X&#bY8lvDyHeq`Y+5vlf1St10+CIW32fF_? z{Ot7Y|MK6cAJ9r-2#QU3rtqgBGfy}oaKVPEQY({y%C!V<#}6 z%Ok+sPy>nBf0j;R9d(!C2IK3H{`^`{okm7RL>10SusBmX{8F zF82&VV0fCEDv!As;uUbM!(c3u&C+1_Qs; z1K7bPpg!*w6nqUn;s!=WZ``GAyLPRFD`A2;`pFgewP?`fPyv{lnNcJDf~Qg0*tiZ( zh4(_zJScgfCK6;1(E3L5`f+1-%ulI`Kb0f1E|6TPD>K?VKo*}c*`!$ z(U1wKig*I1IUu@$17QYBD5DzNssEmY&xSoF0e!fR3TUdpJOIq!=$v>`}vC)OSyN{R3@2;S?=z{qnTv7t2d7tDR1-Hr^T1@nk_6MXdUHDD9cuT_24lT ze3g);+45ymkc7x(`w8}kBd78klT)CIA77R4%d z)_ZzjcjhKWtw1eJp5&OWpyTsb4Rkg9sUDlZ+xKwS$W|Yfhoha_rmo!aRd(Xar;?bH z-q3LLS7D$M+8?6taJX`%26a8*KVm||fOY}BD%OiJSX*0LSX*D>Olh8XZ;F?7p~M{I zb$vtgZgGa$$iCUXSj|T#{>pEK5sNa`L*YR4erkyJ54%^I^2w{1e;6>J5AAtyo6GJ2 zOFV39KP4yBoAPO~&cBv)zF-cO)0>6{!Q5|P;*g60U00pJ54a)2gX`3=%<5oEvMm=H ziFY7|{4L`oHa*6}1Vc2dXJ^VZX^`8?okx{}rLw$IOs8wqCPLb_zzy_Hq_ zEQh$bI11lB3{Wk@`S&#MH25;9r=@irL5a+Ypk%)J?3rj=aAE>>e?f#$1A<1j>-1S< zbAKGm>fuxISH}6~RHe64%D|)GFyG&t2jio7*{tfme5ruJ)46kPfddvk z_o|N^klehp_=>_KMF*DHtVACVx0zn8v5y?Q+np^{}Nkp8MTzrg%kU|3AoRjg1~`)Kp);Z z#5@QEuEXs2(?kF=rXqSgIdkX)2B&DQ7&$o`oJ08zx%{Ny`5pn>-KI%*3m!Kj6)zR@mi%(9s z4e+E$XE-*@!5U4(<)?{(fk8ZUd*ru+d@YR9N7{3#MEzRa!7J-v0;Pz+9iNpI1a4?A zS=D_mTMb|}*le`i+;LLV$LRXVhG=2@qTd)|GiQ3ve&+;7jD_jRNpqxn2Fm;9W>XwlHBHT6DiZ+k_|c52 zKQS>e5%{xr{QXmP%N6s_gS$*+0$CGZ!S`F-9wrn;S)@TVw7F9Tr%%Vyu3Y&swFi_D z{|;MxIXf5^j!ZyYVu-g{bWO&6t^$tw5#Spx{_Io8SlH>~aHDBh3?&5lY{+FE<@YdT6k!%plO9-bIQ?aY~nh6V=N$ebb+wZn(K=jY~h z3XNguN>c&-)!8mylyZs~>saCA2}nsrjqP4r1*#1jkNfCzKTlj+q`j0(o?y}cVg!%dTXW%Vd z&1Mc1@Eq=cf>7P2jT`y83ZUsEkMYp8h37}Ek<*rI`+nChUfvqQ=L~F#C(1VscS9@AxF%~jI+{^FVMiIh4yyAvl>VRID@Y+b8WqN}Lm+65%#O178ay7C!$E=<`{ykLSG z5D-w84yYwU=9+8d_$v@AKt77V zg7RT>X3N6D0&>zyiiM@6U#T&wSuleu1}6BV&(uJ}fg^L-ootf`AaKkX&))wVF97ivuGNXS3=K0a4;`iLt%!%YIOYj_C3F40onTl%?dr0 z1yAET?RJK`s`YbDB^$S~gQ5af>IC_V5_^JS=7KOr1;a|m!H<|Ia-lP$393oU_R3Oo z{!s+N4tfx54T+uYB2VO7*L8jr0)d10EODZA^1E&-d^uInRGjXtxs(0XtV|ynT z1a^$E0z3O{f6}^wD}ntvpbOHmvq#exFnat1qch#%PmOge|H3^j-RO%KFA56_KXr%} zDw|8F+wV3tLWTDLKHtZYbGw62gBP&MoB_ly4K1zI<}%>;1S`;lCD+fiPd7prLMZ)JV5cVLpKkR#!E=Lu|I4*ShAVh#cc?b z00fD6Ym>bjoXS@F=BN(=`3lGpwWgNQGcpp`67}TqV{KD*@W0-@dq>$SVZJpG5FW(~ zS>($Xz9qYs*4B(?4PaFesyDhNP#1j+kaWS3IYjY-x;L*A9FZ!_B4Ne{*is31o6t4U zeDs55AwH__QldBGNqM^D!u;?s@=Sv16Q4H}$20a|+xwy!A3!Zi`f6l&Q*=W3ZwVhe z0^S$sc}_m|@Xg|JzFNv?#Uir`e!8?E1Ir-|kU;ukN3hN~#<}lmFWlDDT2| zJT0-~^qkdlN>G;V+?2<61 z^J-yX(Ti3Lr7>kITR#^!x6ll$s(jV*s(y~FD)U9{s<(ifKp@P}T*l?(Z5&%0RC5FS zOrZhLG%^YxO{${eRw1GF!02qC-MD+pn%>y{)zzkq@6$KG-%_UwW(M?5;2X5vhF>iU z63x(*ilN@{1;L)I@fwp@d*+7FyZ0?E6rD3Jn8)7n$V#1SY-pgR;4uA`AgKG!Pu&bqYq#p9`!5X_`wv)_uIE~Ig8Bep0IL- zFf(%1hyCH!06vhXP{Yr&_7rM@5pnrB8SP*wD5#(eJ&dszA#>wsZx1k_k zN;BTpnR@UH|KmrGs6ZzHO`jID7{~`woAaa~%?V@l*uZjOF$JNwS!ILNnbo$R&`c;9 zGw9E_UIMCyiggvvHkRH}6U`ikcc_LLKnx}PGQ@sj9yT{;cPD}CKQ6%B?d}4JtOKp3 zvh+<=@9oy|B=TT69rGVR7=h$I0nUkS{sRdPh%jOOYJQbDl9T2Gt`1kJ3d~R>*shhXw_q}cIT#1gGhFvoJarjV* zQFJ`6c=^-ux}=WorLA%fJH9e3IGAU_Q=Ysf_MjRCNFH%6c0iV&?GhzS)vJ>}J# zC?U_l_F3!c>50o@296fR3j<3ca~qT}e3?+;?1kiF;)4DssS{KS8;Ntn2I@7_`SU=}W}K)iWe6Mfgk{iar~_B(t&tT1PQx~&TLIQZT@FUTHB zT&F=DbeFq)nXqaxP6v1250xd^cLWOb4eW`6{W;HN?`s%Akc@#cc@8zUBfd63VxzjI z?~}-Nx6lciVLVfKagd%1Y5wu4Ybc}p0gQrh$HGa2?4*EtYovw$`0?ZWY+F{4)Q?{e zS||WM1{7+Mg@WXA9|YWofVvezLikoF0D7!DKhWQQ9R*t-8QH;GrLOxI7`Lnxu;>M5 zWc@KrB_8?^cvRNZJTdZqh${}LMRS=MvP}g&Jr>*;K54hZTe$nKd5>MR?*W!dp}>Cm z)#oSZ(ums(S#u9hla2Ttg1JkGurAZ1%(#YVl6vVoH?aJ~!^p6_D6evD6ax^nnxu0? z;>quF?PG0$z7!+P)Sov}em)$+b6_bp#)N~2pm6G3&=es8)~BxB_OH6VR^9wvy5w4&b z0B441#)__$mXt)``;DRbEpkQ+Vh)U~wzd}B{l>7bO;|2KWrD`i%3Y?s%7`$kX)2He zbl*Qwv(Ul#9^oIwHa=2aM$_B37RY%fI4S%E-%*sG!wipsg6N9Zo8Gk_hsF|A?sI_L z20xzfDMPu9b0;7pbLP49&Yiw+jT50@D(IQMZxQ(PW=cNP1CDWfd3+QQ)EOwbd3hNQ z*W~4?wKX)*d0_B_-pJeLG)PRH5RubVP_j{sgtr%9cx`KECx-IrGPtQ1&(A{aMrDG= zUGV({AO+ewIu;a+Bis1i>Y}oa!kI?F<%TiK`G-OS(9&{Hv-pDvp8g&gkKGLMt*4O7kACW^=KcJix?Zl3S(^H1)$f`AS z6kFn>Av$|SMelEBV-rR-*4&d59IP3+a98AT>EOTsnLpLwB}d@xTyk(QvHO^Aim8JI zSbAo&I7)SBf<9q;!7G#^9FaB_v;e_Yf;VkIO(hRsZ8*6Gn}GvVQ(+d zL`O#EkoTQcw%|YEBE8b<{O6LQsy{y58VI4M`xby$ic&}`vKGxIl9?a)UEx$F_;;o# z37_r@L4{4DkzB}ow+F$ciINRoN9d^s;o-YnMMQ;#O)$MMfq42Y$a$!<{ro2pv~@n^ zqX(g>!0e}j35F%+h8BQ_)RdL+8junN`1#YSE~CCOKwl7vZ|#Qc*S$nd z$1|N!SQxQ+%NEhASLf-=H&_ISoH)@W%IyUbe=TTvhM0pZ)kBJDaG@Mj_~r%w&oBG? z`xUbUanG%Akt~ocNh3*Rf(9&W-z-sCQ}&xwc%78JBCj$)U`-E2B5a<*e1@^6tC8ecGwEYhISY zT;qeLgQmjW-JQ=UE-tPKjg`PcFN0S~T3RlKP|wgm9_?I9NB4B*m@ot|+kbDoiivmF zg@NJW8e|>Kp;AT)b`TMdsWb;B11G2FBiCfa#q+8zV~P`r_&Fj_nr+YnS!&YudN%WO zsIeF*2d^zSHN*+?BsRMuSYEnv#hOC49Zt^7SfTOL8W)2i4R?Y>B(iRXm@Sgy?d0qX z0*kqUi%X%-;&Kc#D{C&|kq9&y0|xXB zj0ml9Z4O)yv6&u2;v%A7d>*CZ9Y4R6seq~)q?H=vly-!S)ULp$;at>@xsU~g$HtyM zUyRvm%8bG$+Y+*r#zp!}*meQ`J9paAkQ-vp4pdxMi+J?nTqlR_jwm=g8!w=c%fV=Z zg`3;hYR=X&CN`F!UMOQyE}z1qoEU0gPsStxaWM7T+S*? z>zoxs9LUC}n87jSTXU&;#pBypu^N$*vIjRRHUB&gan0~#I|vbxsOZFS74eN*%feOg zb=o38h(@qI_v$udYuS;FwMW&|nC?n{@5tjX#>BsL#u(9#*j3=!MuPHfFrB=wR?Yh% zv`DCoUPHrV=hSdm_e_b4=D2fFUT}1DJyK;P1k?tv8ExGGxxT`9_Y+$5ogb5ff`W7! zrF?JQ62ptb)!f;!mnYGK0Nqq3ppZQd?vfsS8Zg%% z1wvLuj(K?C__Z}2vs7wCfhIn@QQr)$phAdmI_{2R9H!-(RV(y2yzY@ z6sv$}`UpV;3UI!PBfzw8P`G}p0HR*nA> zN#rd^y$mu2-K9&Hz^>R|*v~-$Et9OiRD%m57zm(0vI4>g!=od1mIQW2Inv(ie~BV| z;D9o`9uREEv>F~r1)mp^|DynGb4K|_J~*b(dyUH&P=aM{|9?fDc|gwD8pq#~veY0( zNQ^|Np` zfAV_Y-*V1*mhbW`ol6gtt)5COIs}73*o^?Eq;lj5*C0*X`2MtkYqpzt>=0!VfgJO= zHB6;Ln;jGEwIRUZE7}-sm+WOjlOi3tS4QY`7-|05MuxS;3Ni(j1*R9gkW zM|Q=0V4FIg9(|isB0DIBG*?Y|i@@+WAykMbxeR6$p1951IB@WwFu=zbDyp*m{}hz~ zE2014+cF3nP_FLnIK2W&+8$a?f`|afutml6BBSwev^C(XeusQmgag>tG+IY2GFe$wMvv3ys)EJVMnf2I!ye9nK2mpNYnt>O zu&)wUKZ4#8WotUgqqgr?P*@>?>k(ort}sFAMPr4OhE1VY*MQLy)64`%pQ_L0ENekd zV?|~FQXa1F_s5LYjg{}}VNt-Y>?NxxJ2DrX~}>3#Fu3>J1h4w!`gR>^^o*b&(nTW3@zr;fx#z#(_ z63bqwcgbF^oLMkh)hEKxx2ERCqogF?-UHPN=YuUVBf=k$ey(S#euC^bKG$MGJDc|& z4?jLg)fJ4~9~~4^AhUKHm(70iWFX0LQ&ZFBGv8Uv^#SfwdSNLTGeT?lsl8QkbC`ep zSF)KJR^+RMY@Me+I{dqN^QG3VZN3#;74jDJyoUS8R_gu2w0Ae zRZj(lgB|tTvxlV&edjJTE&?q@2}Y;&lu7A78&O*nrfmEzpFX(O@0jeW`lrM1?@D4b z$bQ6_T){pOM!TA(#{U6+hfu+)ELym?-v~)VQC}~cMg48JjTk)k=|p;L-EvW$KFo(B z%kE4``}RDviCv&zQE9oFdTOXkeJP?yy>16R{-INhNuIKPQD@fnNyAI*tkiZUZW)yq zb*$iy3OFWl8_ZuL-!1AZf8jT?EaH7Nx&m>4oi{tdm}nssXJNuu9Ea+hW|s`ooRu?G zTuNlh?x=rAT6M==dHFd`d}iQP0pBZb3jT)a2bd)8Y?dZO3!YTb;>a9mA#^Pk@XM?DTBY;ltF)vdCw_aWo zp8U~MYu$HEoozlBFBUkk>3)E%Mpf(2kzdeptugQpyj8Zly)%eAWJsg;uR zbIcjIAedoOrdT<=$?yLwyb>r-4wQsbmYH>_yoF6Lr_})BrlD44tBEwVMc<9?pHw$-Mw+;-@7`1Rm zc+{01fl=efn@@Q2C=_~>@C#qa zlxKQGDXq)MxQ7;KRJNYpo>J%C2eea)TjqyJyt}$idVly~T+PTCSK|X>dk{H(0!UUv zE_R~ekZ=7H-_yfW8k0Qw`X_9gw^M$Qk`fx#3psD{hi)HwA|zy=P%_agps${ZPFM?H zw|vnS5N;Y&V=x}m9jmnj9f!vn>7y+xK^irC-x}vWYGb7}Y@`{=IVndf)Ralf zbJkZZ_&nj?(@cM!lHsH|aPu-9r)ADjr+ypLM>Syop58%4Q>-+NTBQH5_3}PE&V9o1 zo6FChDU#RGw4Yg->(uBSkyPk@H$Ptta~6=O@1x*J0!G^yn>2@GTln;G<}sjb*l}Bq z29xJ*RI3u(yPm}#YTVp@Ej*CaG2v5N^7r0<+e-}^JZu>98<|-H%etPE^gOFF+yc|* zj90C`noRWCTRwBOIt%NRi25*Z83s)aMz}z9w2)(vD|J1m%`jA*Meu zI(7M7&!33+>E-3+d7mIisj5!BQ*l;l(4bSNpD%oJ$tH1T`{OZMTT1lqk?}~xF?nvs z#w!h-`>Gp>G6aMhjd!;D-l~}Vx7YWlVF*we-JjTCJLI5MXPX8qCSZ zy5iQ~&fuyN)1cw!s9`e(DJUd0cP?3YqTKuQ!X@pScZYkoU#M9dI#rI9UgPNKIJBd~ zCMr-vQ}bsy6>}VK$I?o_l=@dDxi)zH5d1;O&D9_r(@mIL#ABX{K`bd(iRulG(trn* z{M_zr=e+RK6Gp5~_<4OhBUN!8Tkci&!K;W_+_bxS3T4wrdDmv#h&9mN=2Tp?L(pDE z+88Q3Hu`eM1&3EGN|)`#W(0O;?q$u{#a-Jm6Ct>UBiV@X@$s2!c&+t}u_Brd;S)v| zI?i!k_wy)S7Go`@@R7d#qVw?Mf^zq<|4oro_z@V<3j%?B%<@uQB!McEeQe{edeE9ZN~_DAdB5S&~1U~LUpkmiz@#6HLDo5y_jo< z&Eh?JKwuM=eiOw~c$!mG6igv<41gdwIJnpqCGGx9S-bsM8qI@`8T-^HDSo3OOB zv9j{d&^Boh24ZhCmB0m5$FC6C022GTOi2{?pF*U3Vtg*l0D`Ra50wKYt#nv41m;)uzG#?3PQo zwn9g_{5CB8Yh2@;s_Lx&t9gr-nn?_F;%)l*CxLwrO9f)E4}yyeO?C9!O7XH$C?BQ=2)rFXF^RM)Y`-3bQ1hU#(= z-XrujMSo}w(MdULagAuk^jcMnXDt*;TCR*;UvPNC;*0hZJJ2 zaE8GNR+~66h~_P>$SdkIG0qC${BF%LXlzRDJBc>)0z$gf%ZeleY>6&{^WCa&7gNw5 z!`a;Q@rUlktQ07fAnOB#Jbtb3 zzY-r^F8=1j)BH;J5*Tow*K~+R0kEFk%{ZoA7NZV}%-Fg`CqhhPdu z$>GqcOTL^Es{W-|CvuWF!E>G$rk5R`Y7;x#+PYZJnZ~T@G!X8_j57 zVd4k^0&_Bxf48)?%>oJrq2Ct~Y&3zAiXEu=`%;&yScMg7!+-2H~Wa6|~J1 zk1oL#zrG?yn0GM?Bm~9Kc(Ah4(lEhSVz*Xtq`O5Lw4nFW{`o=w3h%DnGd@)H2)lMc zc2)Nc|MH4#V0vqo4s2&dB_#r?VOEgUc$QK+)7fdGgEjq&5S<-lwJ{vj4LdK|m*!?> zXTkZMOrwt@jfil6H6AiF=7E0MjpuE?t_HndL8K8@Sb*x`bN|%f>Bos^23ojOhGh&T z7R;ggBuc~liNcR9<+0gf|&SBKbEaV|K?bD_$If=hmP!!?+XfYLToaHqfcI>=KZhA?qouT{t*ZZKr3u#x3 zHN#wHk(qS8s3rbA;`<%|){>&}eOob(;y|RSmiX?m#q_qaZ5%X9TXjBqe7n+&4ipE^ z5_jpa>x5-6WY&{iIS$u>{0|V1B`~N#lU;c^Ey)}5|L7@nv*eS)GOn)9`c1A;bR7u> zqYM?xKSFnmiBN5n$Eb>;%gW7xY#NCr%SHj WBXmsFUuH@8WB#uNCf8=$@A)74)4tIF literal 0 HcmV?d00001 diff --git a/python/simulation.py b/python/simulation.py index b056a318d..e8fe8d8f1 100644 --- a/python/simulation.py +++ b/python/simulation.py @@ -1166,7 +1166,8 @@ def __init__(self, This will cause the `Simulation` to use the chunk layout described by either (1) an `.h5` file (created using `Simulation.dump_chunk_layout`), (2) another `Simulation` instance, or (3) a [`BinaryPartition`](#binarypartition) class object. - See [Load and Dump Structure](#load-and-dump-structure) for more information. + For more information, see [Load and Dump Structure](#load-and-dump-structure) and + [Parallel Meep/User-Specified Cell Partition](Parallel_Meep.md#user-specified-cell-partition). The following require a bit more understanding of the inner workings of Meep to use. See also [SWIG Wrappers](#swig-wrappers). diff --git a/python/tests/chunk_layout.py b/python/tests/chunk_layout.py index c966ffa0d..37f2da4e3 100644 --- a/python/tests/chunk_layout.py +++ b/python/tests/chunk_layout.py @@ -1,7 +1,6 @@ import meep as mp import copy import unittest -import numpy as np chunk_ids = [] chunk_areas = [] @@ -38,7 +37,7 @@ def traverse_tree(bp=None,min_corner=None,max_corner=None): class TestChunkLayoutBinaryPartition(unittest.TestCase): def test_chunk_layout_binary_partition(self): - chunk_layout = mp.BinaryPartition(data=[ (mp.X,-2.0), 0, [ (mp.Y,1.5), [ (mp.X,3.0), 1, [ (mp.Y,-0.5), 4,3 ] ], 2 ] ]) + chunk_layout = mp.BinaryPartition(data=[ (mp.X,-2.0), 0, [ (mp.Y,1.5), [ (mp.X,3.0), 1, [ (mp.Y,-0.5), 4, 3 ] ], 2 ] ]) cell_size = mp.Vector3(10.0,5.0,0) @@ -53,7 +52,7 @@ def test_chunk_layout_binary_partition(self): traverse_tree(chunk_layout,-0.5*cell_size,0.5*cell_size) - np.testing.assert_array_equal(owners,np.asarray(chunk_ids)) + self.assertListEqual([int(f) for f in owners],chunk_ids) self.assertListEqual(areas,chunk_areas) if __name__ == '__main__': diff --git a/src/meep.hpp b/src/meep.hpp index 0abec0f7d..3a1936472 100644 --- a/src/meep.hpp +++ b/src/meep.hpp @@ -777,7 +777,7 @@ class structure { void load_chunk_layout(const char *filename, boundary_region &br); void load_chunk_layout(const binary_partition *bp, boundary_region &br); void load_chunk_layout(const std::vector &gvs, - const std::vector &chunk_ids, + const std::vector &ids, boundary_region &br); // monitor.cpp diff --git a/src/structure_dump.cpp b/src/structure_dump.cpp index d8fa96572..95c6a6d3d 100644 --- a/src/structure_dump.cpp +++ b/src/structure_dump.cpp @@ -431,13 +431,13 @@ binary_partition::binary_partition(direction _split_dir, double _split_pos) { } static void split_by_binarytree(grid_volume gvol, - std::vector &result, - std::vector &chunk_ids, + std::vector &result_gvs, + std::vector &result_ids, const binary_partition *bp) { // reached a leaf if ((bp->left == NULL) && (bp->right == NULL)) { - result.push_back(gvol); - chunk_ids.push_back(bp->id); + result_gvs.push_back(gvol); + result_ids.push_back(bp->id); return; } @@ -447,20 +447,20 @@ static void split_by_binarytree(grid_volume gvol, // traverse left branch if (bp->left != NULL) { grid_volume left_gvol = gvol.split_at_fraction(false, split_point, bp->split_dir); - split_by_binarytree(left_gvol, result, chunk_ids, bp->left); + split_by_binarytree(left_gvol, result_gvs, result_ids, bp->left); } // traverse right branch if (bp->right != NULL) { grid_volume right_gvol = gvol.split_at_fraction(true, split_point, bp->split_dir); - split_by_binarytree(right_gvol, result, chunk_ids, bp->right); + split_by_binarytree(right_gvol, result_gvs, result_ids, bp->right); } } void structure::load_chunk_layout(const binary_partition *bp, boundary_region &br) { std::vector gvs; - std::vector chunk_ids; - split_by_binarytree(gv, gvs, chunk_ids, bp); - load_chunk_layout(gvs, chunk_ids, br); + std::vector ids; + split_by_binarytree(gv, gvs, ids, bp); + load_chunk_layout(gvs, ids, br); } void structure::load_chunk_layout(const char *filename, boundary_region &br) { @@ -517,12 +517,12 @@ void structure::load_chunk_layout(const char *filename, boundary_region &br) { } void structure::load_chunk_layout(const std::vector &gvs, - const std::vector &chunk_ids, + const std::vector &ids, boundary_region &br) { // Recreate the chunks with the new grid_volumes for (int i = 0; i < num_chunks; ++i) { if (chunks[i]->refcount-- <= 1) delete chunks[i]; - chunks[i] = new structure_chunk(gvs[i], v, Courant, chunk_ids[i]); + chunks[i] = new structure_chunk(gvs[i], v, Courant, ids[i]); br.apply(this, chunks[i]); } check_chunks(); From 559a772e9fe529777125d51bb13cc26211222b47 Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Mon, 22 Mar 2021 15:52:26 -0700 Subject: [PATCH 09/19] tweaks to documentation --- doc/docs/Parallel_Meep.md | 10 +++++----- doc/docs/Python_User_Interface.md | 6 +++--- python/simulation.py | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/doc/docs/Parallel_Meep.md b/doc/docs/Parallel_Meep.md index c62de835a..a10d98eae 100644 --- a/doc/docs/Parallel_Meep.md +++ b/doc/docs/Parallel_Meep.md @@ -65,15 +65,15 @@ Note: for optimization studies involving *random* initial conditions, the seed o ### User-Specified Cell Partition -An alternative to having Meep automatically partition the cell at runtime into chunks based on the number of MPI processes is to manually specify the cell partition via the `chunk_layout` parameter of the `Simulation` constructor as a [`BinaryPartition`](Python_User_Interface.md#binarypartition) class object. This is based on defining any arbitrary cell partition as a binary tree for which the nodes define "cuts" at a given point (e.g., -4.5, 6.3) along a given cell direction ($x$, $y$, and $z$ in Cartesian coordinates; $r$ and $z$ in [cylindrical coordinates](Cylindrical_Coordinates.md)) and the leaves define a unique chunk ID (equivalent to the rank of the MPI process for that chunk; an integer). +An alternative to having Meep automatically partition the cell at runtime into chunks based on the number of MPI processes is to manually specify the cell partition via the `chunk_layout` parameter of the `Simulation` constructor as a [`BinaryPartition`](Python_User_Interface.md#binarypartition) class object. This is based on representing an arbitrary cell partition as a binary tree for which the nodes define "cuts" at a given point (e.g., -4.5, 6.3) along a given cell direction and the leaves define a unique integer-valued chunk ID (equivalent to the rank of the MPI process for that chunk). -An example of a 2d cell partition along with its binary-tree representation is shown below. The 10×5 cell in the $xy$ plane with origin at the lower-left cell boundary is partitioned into five chunks numbered one through five. (Note that the binary-tree representation for a given cell partition is not unique.) +As a demonstration, an example of a 2d cell partition along with its binary-tree representation is shown below. The 10×5 cell in $xy$ coordinates with origin at the lower-left boundary is partitioned into five chunks numbered one through five. Note that for any given cell partition, its binary-tree representation is unique.
![](images/chunk_division_binary_tree.png)
-This binary tree can be represented as a list of lists where each list entry is `[ (split_dir,split_pos), left, right ]` for which `split_dir` and `split_pos` define the splitting direction and position, and `left` and `right` are the left and right branches which can be either another list defining a new node or a chunk ID. There are two items to note when converting the binary tree shown above into a `BinaryPartition` class object: (1) Meep defines the cell origin to be at the geometric center of the cell (i.e., at location (5.0,2.5) in the coordinate system of the figure) and thus all splitting coordinates of the tree must be shifted accordingly, and (2) MPI ranks must be defined in the range [0,num_procs-1] and thus all chunk IDs listed above must be shifted down by one. Based on this, the cell partition shown above can be set up as follows: +This binary tree can be described as a list of lists where each list entry is `[ (split_dir,split_pos), left, right ]` for which `split_dir` and `split_pos` define the splitting direction and position, and `left` and `right` are the left and right branches which can be either another list defining a new node or a chunk ID. There are two items to note when converting the binary tree shown above into a `BinaryPartition` class object: (1) by default, Meep defines the cell origin to be at the geometric center of the cell (i.e., at location (5.0,2.5) in the coordinate system of the figure) and thus all splitting coordinates must be shifted accordingly, and (2) MPI ranks must be defined in the range [0,`num_chunks`-1] which requires that all chunk IDs be shifted down by one. Based on these specifications, the cell partition from above can be set up as follows: ```py import meep as mp @@ -91,9 +91,9 @@ sim = mp.Simulation(cell_size=cell_size, sim.visualize_chunks() plt.savefig('chunk_layout.png',dpi=150,bbox_inches='tight') ``` -Running this example requires `mpirun -np 5 python chunk_layout_example.py` (i.e., the number of MPI processes must be equivalent to the number of user-specified chunks). +This example can be run using two different approaches: (1) with the number of MPI processes exactly equivalent to the number of user-specified chunks (i.e., `mpirun -np 5 python chunk_layout_example.py`) or (2) using *any* number of MPI processes and letting Meep automatically distribute the MPI ranks among the five chunks by additionally specifying `num_chunks=5` in the `Simulation` constructor. -For improved performance, it is important to order the chunks such that adjacent chunks are numbered consecutively. This is equivalent to assigning MPI ranks in *depth first* order which ensures that adjacent chunks on the same MPI node communicate using shared memory rather than the network (which tends to be slower). +For improved performance, it is important to order the chunks such that adjacent chunks are numbered consecutively. This is equivalent to assigning MPI ranks in [depth-first order](https://en.wikipedia.org/wiki/Depth-first_search) which ensures that adjacent chunks on the same MPI node communicate using shared memory rather than the network (which tends to be slower). Technical Details ----------------- diff --git a/doc/docs/Python_User_Interface.md b/doc/docs/Python_User_Interface.md index a44e30116..b6de29e21 100644 --- a/doc/docs/Python_User_Interface.md +++ b/doc/docs/Python_User_Interface.md @@ -341,8 +341,8 @@ use. See also [SWIG Wrappers](#swig-wrappers). functions](#run-functions). + **`num_chunks` [`integer`]** — Minimum number of "chunks" (subarrays) to divide - the structure/fields into (default 0). Actual number is determined by number of - processors, PML layers, etcetera. Mainly useful for debugging. + the structure/fields into. Overrides the default value determined by + the number of processors, PML layers, etcetera. Mainly useful for debugging. + **`split_chunks_evenly` [`boolean`]** — When `True` (the default), the work per [chunk](Chunks_and_Symmetry.md) is not taken into account when splitting chunks @@ -7328,7 +7328,7 @@ The constructor accepts three separate groups of arguments: (1) `data`: a list o list entry is either (a) a node defined as `[ (split_dir,split_pos), left, right ]` for which `split_dir` and `split_pos` define the splitting direction (i.e., `mp.X`, `mp.Y`, `mp.Z`) and position (e.g., `3.5`, `-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) -or (b) a leaf with integer value `id` in the range [0, num_chunks-1] for the chunk id, (2) a node +or (b) a leaf with integer value `id` in the range [0, `num_chunks`-1] for the chunk id, (2) a node defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with `id`. This input format enables specifying the binary tree using either a single list for the entire tree or defining the nodes and leaves individually. diff --git a/python/simulation.py b/python/simulation.py index e8fe8d8f1..244a29ff1 100644 --- a/python/simulation.py +++ b/python/simulation.py @@ -1183,8 +1183,8 @@ def __init__(self, functions](#run-functions). + **`num_chunks` [`integer`]** — Minimum number of "chunks" (subarrays) to divide - the structure/fields into (default 0). Actual number is determined by number of - processors, PML layers, etcetera. Mainly useful for debugging. + the structure/fields into. Overrides the default value determined by + the number of processors, PML layers, etcetera. Mainly useful for debugging. + **`split_chunks_evenly` [`boolean`]** — When `True` (the default), the work per [chunk](Chunks_and_Symmetry.md) is not taken into account when splitting chunks @@ -5187,7 +5187,7 @@ def __init__(self, data=None, split_dir=None, split_pos=None, left=None, right=N list entry is either (a) a node defined as `[ (split_dir,split_pos), left, right ]` for which `split_dir` and `split_pos` define the splitting direction (i.e., `mp.X`, `mp.Y`, `mp.Z`) and position (e.g., `3.5`, `-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) - or (b) a leaf with integer value `id` in the range [0, num_chunks-1] for the chunk id, (2) a node + or (b) a leaf with integer value `id` in the range [0, `num_chunks`-1] for the chunk id, (2) a node defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with `id`. This input format enables specifying the binary tree using either a single list for the entire tree or defining the nodes and leaves individually. From b2e33f516f03bee35b8b180b4bedd71050f8a8f2 Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Tue, 23 Mar 2021 19:31:52 -0700 Subject: [PATCH 10/19] rename id to proc_id and update docs --- doc/docs/Parallel_Meep.md | 2 +- python/simulation.py | 16 +++++++++------- python/tests/chunk_layout.py | 8 ++++---- python/typemap_utils.cpp | 2 +- src/meep.hpp | 2 +- src/structure_dump.cpp | 8 ++++---- 6 files changed, 20 insertions(+), 18 deletions(-) diff --git a/doc/docs/Parallel_Meep.md b/doc/docs/Parallel_Meep.md index a10d98eae..def2c0ca1 100644 --- a/doc/docs/Parallel_Meep.md +++ b/doc/docs/Parallel_Meep.md @@ -67,7 +67,7 @@ Note: for optimization studies involving *random* initial conditions, the seed o An alternative to having Meep automatically partition the cell at runtime into chunks based on the number of MPI processes is to manually specify the cell partition via the `chunk_layout` parameter of the `Simulation` constructor as a [`BinaryPartition`](Python_User_Interface.md#binarypartition) class object. This is based on representing an arbitrary cell partition as a binary tree for which the nodes define "cuts" at a given point (e.g., -4.5, 6.3) along a given cell direction and the leaves define a unique integer-valued chunk ID (equivalent to the rank of the MPI process for that chunk). -As a demonstration, an example of a 2d cell partition along with its binary-tree representation is shown below. The 10×5 cell in $xy$ coordinates with origin at the lower-left boundary is partitioned into five chunks numbered one through five. Note that for any given cell partition, its binary-tree representation is unique. +As a demonstration, an example of a 2d cell partition along with its binary-tree representation is shown below. The 10×5 cell in $xy$ coordinates with origin at the lower-left boundary is partitioned into five chunks numbered one through five.
![](images/chunk_division_binary_tree.png) diff --git a/python/simulation.py b/python/simulation.py index 244a29ff1..d28d67051 100644 --- a/python/simulation.py +++ b/python/simulation.py @@ -5181,20 +5181,22 @@ class BinaryPartition(object): Binary tree class used for specifying a cell partition of arbitrary sized chunks for use as the `chunk_layout` parameter of the `Simulation` class object. """ - def __init__(self, data=None, split_dir=None, split_pos=None, left=None, right=None, id=None): + def __init__(self, data=None, split_dir=None, split_pos=None, left=None, right=None, proc_id=None): """ The constructor accepts three separate groups of arguments: (1) `data`: a list of lists where each list entry is either (a) a node defined as `[ (split_dir,split_pos), left, right ]` for which `split_dir` and `split_pos` define the splitting direction (i.e., `mp.X`, `mp.Y`, `mp.Z`) and position (e.g., `3.5`, `-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) - or (b) a leaf with integer value `id` in the range [0, `num_chunks`-1] for the chunk id, (2) a node - defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with `id`. This input format + or (b) a leaf with integer value `proc_id` in the range [0, `num_chunks`-1] for the process ID, (2) a node + defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with `proc_id`. Two items to note: + (1) the process ID *must* be between 0 and the number of processes and (2) the same process ID can be assigned + to as many chunks as you want, which means that that process timesteps multiple chunks. This input format enables specifying the binary tree using either a single list for the entire tree or defining the nodes and leaves individually. """ self.split_dir = None self.split_pos = None - self.id = None + self.proc_id = None self.left = None self.right = None if data is not None: @@ -5207,13 +5209,13 @@ def __init__(self, data=None, split_dir=None, split_pos=None, left=None, right=N self.left = BinaryPartition(data=data[1]) self.right = BinaryPartition(data=data[2]) elif isinstance(data,int): - self.id = data + self.proc_id = data else: - raise ValueError("expecting list [(split_dir,split_pos), left, right] or int (id) but got {}".format(data)) + raise ValueError("expecting list [(split_dir,split_pos), left, right] or int (proc_id) but got {}".format(data)) elif split_dir is not None: self.split_dir = split_dir self.split_pos = split_pos self.left = left self.right = right else: - self.id = id + self.proc_id = proc_id diff --git a/python/tests/chunk_layout.py b/python/tests/chunk_layout.py index 37f2da4e3..b430f6787 100644 --- a/python/tests/chunk_layout.py +++ b/python/tests/chunk_layout.py @@ -2,7 +2,7 @@ import copy import unittest -chunk_ids = [] +process_ids = [] chunk_areas = [] def traverse_tree(bp=None,min_corner=None,max_corner=None): @@ -11,11 +11,11 @@ def traverse_tree(bp=None,min_corner=None,max_corner=None): ## reached a leaf if (bp.left is None and bp.right is None): - chunk_ids.append(bp.id) + process_ids.append(bp.proc_id) chunk_area = (max_corner.x-min_corner.x)*(max_corner.y-min_corner.y) chunk_areas.append(chunk_area) - ## traverse the left branch + ## traverse the left branch if (bp.left is not None): new_max_corner = copy.deepcopy(max_corner) if bp.split_dir == mp.X: @@ -52,7 +52,7 @@ def test_chunk_layout_binary_partition(self): traverse_tree(chunk_layout,-0.5*cell_size,0.5*cell_size) - self.assertListEqual([int(f) for f in owners],chunk_ids) + self.assertListEqual([int(f) for f in owners],process_ids) self.assertListEqual(areas,chunk_areas) if __name__ == '__main__': diff --git a/python/typemap_utils.cpp b/python/typemap_utils.cpp index 9334769bf..77cdc9631 100644 --- a/python/typemap_utils.cpp +++ b/python/typemap_utils.cpp @@ -1034,7 +1034,7 @@ static meep::binary_partition *py_bp_to_bp(PyObject *pybp) { meep::binary_partition *bp = NULL; if (pybp == Py_None) return bp; - PyObject *id = PyObject_GetAttrString(pybp, "id"); + PyObject *id = PyObject_GetAttrString(pybp, "proc_id"); PyObject *split_dir = PyObject_GetAttrString(pybp, "split_dir"); PyObject *split_pos = PyObject_GetAttrString(pybp, "split_pos"); PyObject *left = PyObject_GetAttrString(pybp, "left"); diff --git a/src/meep.hpp b/src/meep.hpp index 3a1936472..079405496 100644 --- a/src/meep.hpp +++ b/src/meep.hpp @@ -2162,7 +2162,7 @@ class binary_partition { binary_partition(direction _split_dir, double _split_pos); direction split_dir; double split_pos; - int id; + int proc_id; binary_partition *left, *right; }; diff --git a/src/structure_dump.cpp b/src/structure_dump.cpp index 95c6a6d3d..fbd3770ed 100644 --- a/src/structure_dump.cpp +++ b/src/structure_dump.cpp @@ -414,8 +414,8 @@ void structure::set_chiP_from_file(h5file *file, const char *dataset, field_type } } -binary_partition::binary_partition(int _id) { - id = _id; +binary_partition::binary_partition(int _proc_id) { + proc_id = _proc_id; split_dir = NO_DIRECTION; split_pos = 0.0; left = NULL; @@ -425,7 +425,7 @@ binary_partition::binary_partition(int _id) { binary_partition::binary_partition(direction _split_dir, double _split_pos) { split_dir = _split_dir; split_pos = _split_pos; - id = -1; + proc_id = -1; left = NULL; right = NULL; } @@ -437,7 +437,7 @@ static void split_by_binarytree(grid_volume gvol, // reached a leaf if ((bp->left == NULL) && (bp->right == NULL)) { result_gvs.push_back(gvol); - result_ids.push_back(bp->id); + result_ids.push_back(bp->proc_id); return; } From f974cec850053aab11e57e89fa1d9c9a439dad57 Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Tue, 23 Mar 2021 19:36:46 -0700 Subject: [PATCH 11/19] more fixes to docs --- doc/docs/Parallel_Meep.md | 4 ++-- doc/docs/Python_User_Interface.md | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/doc/docs/Parallel_Meep.md b/doc/docs/Parallel_Meep.md index def2c0ca1..f21f1c1be 100644 --- a/doc/docs/Parallel_Meep.md +++ b/doc/docs/Parallel_Meep.md @@ -65,7 +65,7 @@ Note: for optimization studies involving *random* initial conditions, the seed o ### User-Specified Cell Partition -An alternative to having Meep automatically partition the cell at runtime into chunks based on the number of MPI processes is to manually specify the cell partition via the `chunk_layout` parameter of the `Simulation` constructor as a [`BinaryPartition`](Python_User_Interface.md#binarypartition) class object. This is based on representing an arbitrary cell partition as a binary tree for which the nodes define "cuts" at a given point (e.g., -4.5, 6.3) along a given cell direction and the leaves define a unique integer-valued chunk ID (equivalent to the rank of the MPI process for that chunk). +An alternative to having Meep automatically partition the cell at runtime into chunks based on the number of MPI processes is to manually specify the cell partition via the `chunk_layout` parameter of the `Simulation` constructor as a [`BinaryPartition`](Python_User_Interface.md#binarypartition) class object. This is based on representing an arbitrary cell partition as a binary tree for which the nodes define "cuts" at a given point (e.g., -4.5, 6.3) along a given cell direction and the leaves define a integer-valued process ID (equivalent to the rank of the MPI process for that chunk). The process ID must be between 0 and the number of processes-1 (inclusive). Note also that the same process ID can be assigned to as many chunks as you want, which just means that process timesteps multiple chunks. As a demonstration, an example of a 2d cell partition along with its binary-tree representation is shown below. The 10×5 cell in $xy$ coordinates with origin at the lower-left boundary is partitioned into five chunks numbered one through five. @@ -73,7 +73,7 @@ As a demonstration, an example of a 2d cell partition along with its binary-tree ![](images/chunk_division_binary_tree.png)
-This binary tree can be described as a list of lists where each list entry is `[ (split_dir,split_pos), left, right ]` for which `split_dir` and `split_pos` define the splitting direction and position, and `left` and `right` are the left and right branches which can be either another list defining a new node or a chunk ID. There are two items to note when converting the binary tree shown above into a `BinaryPartition` class object: (1) by default, Meep defines the cell origin to be at the geometric center of the cell (i.e., at location (5.0,2.5) in the coordinate system of the figure) and thus all splitting coordinates must be shifted accordingly, and (2) MPI ranks must be defined in the range [0,`num_chunks`-1] which requires that all chunk IDs be shifted down by one. Based on these specifications, the cell partition from above can be set up as follows: +This binary tree can be described as a list of lists where each list entry is `[ (split_dir,split_pos), left, right ]` for which `split_dir` and `split_pos` define the splitting direction and position, and `left` and `right` are the left and right branches which can be either another list defining a new node or a chunk ID. There are two items to note when converting the binary tree shown above into a `BinaryPartition` class object: (1) by default, Meep defines the cell origin to be at the geometric center of the cell (i.e., at location (5.0,2.5) in the coordinate system of the figure) and thus all splitting coordinates must be shifted accordingly, and (2) MPI ranks must be defined in the range [0,`num_chunks`-1] which requires that all process IDs be shifted down by one. Based on these specifications, the cell partition from above can be set up as follows: ```py import meep as mp diff --git a/doc/docs/Python_User_Interface.md b/doc/docs/Python_User_Interface.md index b6de29e21..33bf5b866 100644 --- a/doc/docs/Python_User_Interface.md +++ b/doc/docs/Python_User_Interface.md @@ -7319,7 +7319,7 @@ def __init__(self, split_pos=None, left=None, right=None, - id=None): + proc_id=None): ```
@@ -7328,8 +7328,10 @@ The constructor accepts three separate groups of arguments: (1) `data`: a list o list entry is either (a) a node defined as `[ (split_dir,split_pos), left, right ]` for which `split_dir` and `split_pos` define the splitting direction (i.e., `mp.X`, `mp.Y`, `mp.Z`) and position (e.g., `3.5`, `-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) -or (b) a leaf with integer value `id` in the range [0, `num_chunks`-1] for the chunk id, (2) a node -defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with `id`. This input format +or (b) a leaf with integer value `proc_id` in the range [0, `num_chunks`-1] for the process ID, (2) a node +defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with `proc_id`. Two items to note: +(1) the process ID *must* be between 0 and the number of processes and (2) the same process ID can be assigned +to as many chunks as you want, which means that that process timesteps multiple chunks. This input format enables specifying the binary tree using either a single list for the entire tree or defining the nodes and leaves individually. From 70fef98bd0246993a40bbc4b324c2e450b1e2cee Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Tue, 23 Mar 2021 19:40:52 -0700 Subject: [PATCH 12/19] update figure to center origin at the center of the cell --- doc/docs/Parallel_Meep.md | 2 +- .../images/chunk_division_binary_tree.png | Bin 74849 -> 75276 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/docs/Parallel_Meep.md b/doc/docs/Parallel_Meep.md index f21f1c1be..003e6e8f2 100644 --- a/doc/docs/Parallel_Meep.md +++ b/doc/docs/Parallel_Meep.md @@ -73,7 +73,7 @@ As a demonstration, an example of a 2d cell partition along with its binary-tree ![](images/chunk_division_binary_tree.png) -This binary tree can be described as a list of lists where each list entry is `[ (split_dir,split_pos), left, right ]` for which `split_dir` and `split_pos` define the splitting direction and position, and `left` and `right` are the left and right branches which can be either another list defining a new node or a chunk ID. There are two items to note when converting the binary tree shown above into a `BinaryPartition` class object: (1) by default, Meep defines the cell origin to be at the geometric center of the cell (i.e., at location (5.0,2.5) in the coordinate system of the figure) and thus all splitting coordinates must be shifted accordingly, and (2) MPI ranks must be defined in the range [0,`num_chunks`-1] which requires that all process IDs be shifted down by one. Based on these specifications, the cell partition from above can be set up as follows: +This binary tree can be described as a list of lists where each list entry is `[ (split_dir,split_pos), left, right ]` for which `split_dir` and `split_pos` define the splitting direction and position, and `left` and `right` are the left and right branches which can be either another list defining a new node or a chunk ID. Based on these specifications, the cell partition from above can be set up as follows: ```py import meep as mp diff --git a/doc/docs/images/chunk_division_binary_tree.png b/doc/docs/images/chunk_division_binary_tree.png index 1abbf33713e216887b7eafdd8c43f1ad0fd0c201..29b0d5c981b6efed706042307129ce1b238c836d 100644 GIT binary patch literal 75276 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≤*x{X@56R;{cf>ozi`Mm#bc{rAWE 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 S`&WvBf8-CJI213ZbN7F+ha;2# literal 74849 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 WBXmsFUuH@8WB#uNCf8=$@A)74)4tIF From b34787fe5a1cf840e015454f5b7c563c616148bd Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Tue, 23 Mar 2021 19:44:43 -0700 Subject: [PATCH 13/19] update figure --- .../images/chunk_division_binary_tree.png | Bin 75276 -> 75439 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/docs/images/chunk_division_binary_tree.png b/doc/docs/images/chunk_division_binary_tree.png index 29b0d5c981b6efed706042307129ce1b238c836d..dd606e922224c7bc4b2545d21f88ed36c7819d0a 100644 GIT binary patch delta 56861 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 From 90030f15d39b0d52496f71fc25b75cb29f004ee9 Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Tue, 23 Mar 2021 19:56:27 -0700 Subject: [PATCH 14/19] more tweaks --- doc/docs/Parallel_Meep.md | 6 +++--- doc/docs/Python_User_Interface.md | 9 +++++---- python/simulation.py | 9 +++++---- src/structure_dump.cpp | 2 +- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/doc/docs/Parallel_Meep.md b/doc/docs/Parallel_Meep.md index 003e6e8f2..c6216682d 100644 --- a/doc/docs/Parallel_Meep.md +++ b/doc/docs/Parallel_Meep.md @@ -65,7 +65,7 @@ Note: for optimization studies involving *random* initial conditions, the seed o ### User-Specified Cell Partition -An alternative to having Meep automatically partition the cell at runtime into chunks based on the number of MPI processes is to manually specify the cell partition via the `chunk_layout` parameter of the `Simulation` constructor as a [`BinaryPartition`](Python_User_Interface.md#binarypartition) class object. This is based on representing an arbitrary cell partition as a binary tree for which the nodes define "cuts" at a given point (e.g., -4.5, 6.3) along a given cell direction and the leaves define a integer-valued process ID (equivalent to the rank of the MPI process for that chunk). The process ID must be between 0 and the number of processes-1 (inclusive). Note also that the same process ID can be assigned to as many chunks as you want, which just means that process timesteps multiple chunks. +An alternative to having Meep automatically partition the cell at runtime into chunks based on the number of MPI processes is to manually specify the cell partition via the `chunk_layout` parameter of the `Simulation` constructor as a [`BinaryPartition`](Python_User_Interface.md#binarypartition) class object. This is based on representing an arbitrary cell partition as a binary tree for which the nodes define "cuts" at a given point (e.g., -4.5, 6.3) along a given cell direction and the leaves define a integer-valued process ID (equivalent to the rank of the MPI process for that chunk). The process ID should be between 0 and the number of processes-1 (inclusive). Note also that the same process ID can be assigned to as many chunks as you want, which just means that process timesteps multiple chunks. If you use fewer MPI processes, then the process ID is taken modulo the number of processes. As a demonstration, an example of a 2d cell partition along with its binary-tree representation is shown below. The 10×5 cell in $xy$ coordinates with origin at the lower-left boundary is partitioned into five chunks numbered one through five. @@ -73,7 +73,7 @@ As a demonstration, an example of a 2d cell partition along with its binary-tree ![](images/chunk_division_binary_tree.png) -This binary tree can be described as a list of lists where each list entry is `[ (split_dir,split_pos), left, right ]` for which `split_dir` and `split_pos` define the splitting direction and position, and `left` and `right` are the left and right branches which can be either another list defining a new node or a chunk ID. Based on these specifications, the cell partition from above can be set up as follows: +This binary tree can be described as a list of lists where each list entry is `[ (split_dir,split_pos), left, right ]` for which `split_dir` and `split_pos` define the splitting direction and position, and `left` and `right` are the left and right branches which can be either another list defining a new node or a process ID. Based on these specifications, the cell partition from above can be set up as follows: ```py import meep as mp @@ -91,7 +91,7 @@ sim = mp.Simulation(cell_size=cell_size, sim.visualize_chunks() plt.savefig('chunk_layout.png',dpi=150,bbox_inches='tight') ``` -This example can be run using two different approaches: (1) with the number of MPI processes exactly equivalent to the number of user-specified chunks (i.e., `mpirun -np 5 python chunk_layout_example.py`) or (2) using *any* number of MPI processes and letting Meep automatically distribute the MPI ranks among the five chunks by additionally specifying `num_chunks=5` in the `Simulation` constructor. +This example can be run by specifying the number of MPI processes exactly equivalent to the number of user-specified chunks (i.e., `mpirun -np 5 python chunk_layout_example.py`) or (2) using *any* number of MPI processes and letting Meep automatically distribute the MPI ranks among the five chunks by additionally specifying `num_chunks=5` in the `Simulation` constructor. For improved performance, it is important to order the chunks such that adjacent chunks are numbered consecutively. This is equivalent to assigning MPI ranks in [depth-first order](https://en.wikipedia.org/wiki/Depth-first_search) which ensures that adjacent chunks on the same MPI node communicate using shared memory rather than the network (which tends to be slower). diff --git a/doc/docs/Python_User_Interface.md b/doc/docs/Python_User_Interface.md index 33bf5b866..21d942724 100644 --- a/doc/docs/Python_User_Interface.md +++ b/doc/docs/Python_User_Interface.md @@ -7330,10 +7330,11 @@ and `split_pos` define the splitting direction (i.e., `mp.X`, `mp.Y`, `mp.Z`) an `-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) or (b) a leaf with integer value `proc_id` in the range [0, `num_chunks`-1] for the process ID, (2) a node defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with `proc_id`. Two items to note: -(1) the process ID *must* be between 0 and the number of processes and (2) the same process ID can be assigned -to as many chunks as you want, which means that that process timesteps multiple chunks. This input format -enables specifying the binary tree using either a single list for the entire tree or defining the -nodes and leaves individually. +(1) the process ID should be between 0 and the number of processes-1 (inclusive) and (2) the same process ID +can be assigned to as many chunks as you want, which means that that process timesteps multiple chunks. If you +use fewer MPI processes, then the process ID is taken modulo the number of processes. This input format enables +specifying the binary tree using either a single list for the entire tree or defining the nodes and leaves +individually.
diff --git a/python/simulation.py b/python/simulation.py index d28d67051..019808e41 100644 --- a/python/simulation.py +++ b/python/simulation.py @@ -5189,10 +5189,11 @@ def __init__(self, data=None, split_dir=None, split_pos=None, left=None, right=N `-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) or (b) a leaf with integer value `proc_id` in the range [0, `num_chunks`-1] for the process ID, (2) a node defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with `proc_id`. Two items to note: - (1) the process ID *must* be between 0 and the number of processes and (2) the same process ID can be assigned - to as many chunks as you want, which means that that process timesteps multiple chunks. This input format - enables specifying the binary tree using either a single list for the entire tree or defining the - nodes and leaves individually. + (1) the process ID should be between 0 and the number of processes-1 (inclusive) and (2) the same process ID + can be assigned to as many chunks as you want, which means that that process timesteps multiple chunks. If you + use fewer MPI processes, then the process ID is taken modulo the number of processes. This input format enables + specifying the binary tree using either a single list for the entire tree or defining the nodes and leaves + individually. """ self.split_dir = None self.split_pos = None diff --git a/src/structure_dump.cpp b/src/structure_dump.cpp index fbd3770ed..83e8800f8 100644 --- a/src/structure_dump.cpp +++ b/src/structure_dump.cpp @@ -522,7 +522,7 @@ void structure::load_chunk_layout(const std::vector &gvs, // Recreate the chunks with the new grid_volumes for (int i = 0; i < num_chunks; ++i) { if (chunks[i]->refcount-- <= 1) delete chunks[i]; - chunks[i] = new structure_chunk(gvs[i], v, Courant, ids[i]); + chunks[i] = new structure_chunk(gvs[i], v, Courant, ids[i] % count_processors()); br.apply(this, chunks[i]); } check_chunks(); From 1db87cc6e22309f0faaeda015d7b0aa52ff60ab0 Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Wed, 24 Mar 2021 09:10:01 -0700 Subject: [PATCH 15/19] comment that num_chunks must be set to the number of chunks defined by the binary tree --- doc/docs/Parallel_Meep.md | 2 +- doc/docs/Python_User_Interface.md | 13 ++++++------- .../images/chunk_division_binary_tree.png | Bin 75439 -> 73110 bytes python/simulation.py | 13 ++++++------- python/tests/chunk_layout.py | 2 +- 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/doc/docs/Parallel_Meep.md b/doc/docs/Parallel_Meep.md index c6216682d..50186b968 100644 --- a/doc/docs/Parallel_Meep.md +++ b/doc/docs/Parallel_Meep.md @@ -65,7 +65,7 @@ Note: for optimization studies involving *random* initial conditions, the seed o ### User-Specified Cell Partition -An alternative to having Meep automatically partition the cell at runtime into chunks based on the number of MPI processes is to manually specify the cell partition via the `chunk_layout` parameter of the `Simulation` constructor as a [`BinaryPartition`](Python_User_Interface.md#binarypartition) class object. This is based on representing an arbitrary cell partition as a binary tree for which the nodes define "cuts" at a given point (e.g., -4.5, 6.3) along a given cell direction and the leaves define a integer-valued process ID (equivalent to the rank of the MPI process for that chunk). The process ID should be between 0 and the number of processes-1 (inclusive). Note also that the same process ID can be assigned to as many chunks as you want, which just means that process timesteps multiple chunks. If you use fewer MPI processes, then the process ID is taken modulo the number of processes. +An alternative to having Meep automatically partition the cell at runtime into chunks based on the number of MPI processes is to manually specify the cell partition via the `chunk_layout` parameter of the `Simulation` constructor as a [`BinaryPartition`](Python_User_Interface.md#binarypartition) class object. This is based on representing an arbitrary cell partition as a binary tree for which the nodes define "cuts" at a given point (e.g., -4.5, 6.3) along a given cell direction and the leaves define a integer-valued process ID (equivalent to the rank of the MPI process for that chunk). The `num_chunks` parameter of the `Simulation` constructor must be set to the number of chunks specified by the binary tree. The process ID should be between 0 and the number of processes-1 (inclusive). Note also that the same process ID can be assigned to as many chunks as you want, which just means that one process timesteps multiple chunks. If you use fewer MPI processes, then the process ID is taken modulo the number of processes. As a demonstration, an example of a 2d cell partition along with its binary-tree representation is shown below. The 10×5 cell in $xy$ coordinates with origin at the lower-left boundary is partitioned into five chunks numbered one through five. diff --git a/doc/docs/Python_User_Interface.md b/doc/docs/Python_User_Interface.md index 21d942724..59c7e2e3b 100644 --- a/doc/docs/Python_User_Interface.md +++ b/doc/docs/Python_User_Interface.md @@ -7328,13 +7328,12 @@ The constructor accepts three separate groups of arguments: (1) `data`: a list o list entry is either (a) a node defined as `[ (split_dir,split_pos), left, right ]` for which `split_dir` and `split_pos` define the splitting direction (i.e., `mp.X`, `mp.Y`, `mp.Z`) and position (e.g., `3.5`, `-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) -or (b) a leaf with integer value `proc_id` in the range [0, `num_chunks`-1] for the process ID, (2) a node -defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with `proc_id`. Two items to note: -(1) the process ID should be between 0 and the number of processes-1 (inclusive) and (2) the same process ID -can be assigned to as many chunks as you want, which means that that process timesteps multiple chunks. If you -use fewer MPI processes, then the process ID is taken modulo the number of processes. This input format enables -specifying the binary tree using either a single list for the entire tree or defining the nodes and leaves -individually. +or (b) a leaf with integer value for the process ID `proc_id` in the range between 0 and number of processes +- 1 (inclusive), (2) a node defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with +`proc_id`. The `num_chunks` parameter of the `Simulation` constructor must be set to the number of chunks +specified by the binary tree. Note that the same process ID can be assigned to as many chunks as you want, +which means that one process timesteps multiple chunks. If you use fewer MPI processes, then the process ID +is taken modulo the number of processes. diff --git a/doc/docs/images/chunk_division_binary_tree.png b/doc/docs/images/chunk_division_binary_tree.png index dd606e922224c7bc4b2545d21f88ed36c7819d0a..567c10db077cb7850e6b0c446c490ef6976f3cf9 100644 GIT binary patch literal 73110 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¸pdlOxf>A5-x#Vproy(D&$QtU&RbHosw8Oa0c-}x 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%0AHw%^D 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 Mp{M>>%_`vk05-AYLjV8( diff --git a/python/simulation.py b/python/simulation.py index 019808e41..1c3ba3c72 100644 --- a/python/simulation.py +++ b/python/simulation.py @@ -5187,13 +5187,12 @@ def __init__(self, data=None, split_dir=None, split_pos=None, left=None, right=N list entry is either (a) a node defined as `[ (split_dir,split_pos), left, right ]` for which `split_dir` and `split_pos` define the splitting direction (i.e., `mp.X`, `mp.Y`, `mp.Z`) and position (e.g., `3.5`, `-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) - or (b) a leaf with integer value `proc_id` in the range [0, `num_chunks`-1] for the process ID, (2) a node - defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with `proc_id`. Two items to note: - (1) the process ID should be between 0 and the number of processes-1 (inclusive) and (2) the same process ID - can be assigned to as many chunks as you want, which means that that process timesteps multiple chunks. If you - use fewer MPI processes, then the process ID is taken modulo the number of processes. This input format enables - specifying the binary tree using either a single list for the entire tree or defining the nodes and leaves - individually. + or (b) a leaf with integer value for the process ID `proc_id` in the range between 0 and number of processes + - 1 (inclusive), (2) a node defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with + `proc_id`. The `num_chunks` parameter of the `Simulation` constructor must be set to the number of chunks + specified by the binary tree. Note that the same process ID can be assigned to as many chunks as you want, + which means that one process timesteps multiple chunks. If you use fewer MPI processes, then the process ID + is taken modulo the number of processes. """ self.split_dir = None self.split_pos = None diff --git a/python/tests/chunk_layout.py b/python/tests/chunk_layout.py index b430f6787..b88951839 100644 --- a/python/tests/chunk_layout.py +++ b/python/tests/chunk_layout.py @@ -52,7 +52,7 @@ def test_chunk_layout_binary_partition(self): traverse_tree(chunk_layout,-0.5*cell_size,0.5*cell_size) - self.assertListEqual([int(f) for f in owners],process_ids) + self.assertListEqual([int(f) for f in owners],[f % mp.count_processors() for f in process_ids]) self.assertListEqual(areas,chunk_areas) if __name__ == '__main__': From 96615c16584a6bf21015e674b35aa18f27e1da45 Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Wed, 24 Mar 2021 09:22:34 -0700 Subject: [PATCH 16/19] remove paragraph from tutorial example describing how to run simulation --- doc/docs/Parallel_Meep.md | 2 +- doc/docs/Python_User_Interface.md | 2 +- python/simulation.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/docs/Parallel_Meep.md b/doc/docs/Parallel_Meep.md index 50186b968..b170d993b 100644 --- a/doc/docs/Parallel_Meep.md +++ b/doc/docs/Parallel_Meep.md @@ -86,12 +86,12 @@ cell_size = mp.Vector3(10.0,5.0,0) sim = mp.Simulation(cell_size=cell_size, resolution=10, + num_chunks=5, chunk_layout=chunk_layout) sim.visualize_chunks() plt.savefig('chunk_layout.png',dpi=150,bbox_inches='tight') ``` -This example can be run by specifying the number of MPI processes exactly equivalent to the number of user-specified chunks (i.e., `mpirun -np 5 python chunk_layout_example.py`) or (2) using *any* number of MPI processes and letting Meep automatically distribute the MPI ranks among the five chunks by additionally specifying `num_chunks=5` in the `Simulation` constructor. For improved performance, it is important to order the chunks such that adjacent chunks are numbered consecutively. This is equivalent to assigning MPI ranks in [depth-first order](https://en.wikipedia.org/wiki/Depth-first_search) which ensures that adjacent chunks on the same MPI node communicate using shared memory rather than the network (which tends to be slower). diff --git a/doc/docs/Python_User_Interface.md b/doc/docs/Python_User_Interface.md index 59c7e2e3b..ffa4797b1 100644 --- a/doc/docs/Python_User_Interface.md +++ b/doc/docs/Python_User_Interface.md @@ -340,7 +340,7 @@ use. See also [SWIG Wrappers](#swig-wrappers). initialized by `init_sim()` which is called automatically by any of the [run functions](#run-functions). -+ **`num_chunks` [`integer`]** — Minimum number of "chunks" (subarrays) to divide ++ **`num_chunks` [`integer`]** — Minimum number of "chunks" (subregions) to divide the structure/fields into. Overrides the default value determined by the number of processors, PML layers, etcetera. Mainly useful for debugging. diff --git a/python/simulation.py b/python/simulation.py index 1c3ba3c72..41515fc34 100644 --- a/python/simulation.py +++ b/python/simulation.py @@ -1182,7 +1182,7 @@ def __init__(self, initialized by `init_sim()` which is called automatically by any of the [run functions](#run-functions). - + **`num_chunks` [`integer`]** — Minimum number of "chunks" (subarrays) to divide + + **`num_chunks` [`integer`]** — Minimum number of "chunks" (subregions) to divide the structure/fields into. Overrides the default value determined by the number of processors, PML layers, etcetera. Mainly useful for debugging. From 05b94cf9a44ad62ac9f51c8362e8d66a052f94fe Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Fri, 26 Mar 2021 09:37:40 -0700 Subject: [PATCH 17/19] remove constraint that num_chunks must be specified --- doc/docs/Parallel_Meep.md | 2 +- doc/docs/Python_User_Interface.md | 7 +++---- python/simulation.py | 17 ++++++++++++----- src/structure_dump.cpp | 1 + 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/doc/docs/Parallel_Meep.md b/doc/docs/Parallel_Meep.md index b170d993b..ee1e71d69 100644 --- a/doc/docs/Parallel_Meep.md +++ b/doc/docs/Parallel_Meep.md @@ -65,7 +65,7 @@ Note: for optimization studies involving *random* initial conditions, the seed o ### User-Specified Cell Partition -An alternative to having Meep automatically partition the cell at runtime into chunks based on the number of MPI processes is to manually specify the cell partition via the `chunk_layout` parameter of the `Simulation` constructor as a [`BinaryPartition`](Python_User_Interface.md#binarypartition) class object. This is based on representing an arbitrary cell partition as a binary tree for which the nodes define "cuts" at a given point (e.g., -4.5, 6.3) along a given cell direction and the leaves define a integer-valued process ID (equivalent to the rank of the MPI process for that chunk). The `num_chunks` parameter of the `Simulation` constructor must be set to the number of chunks specified by the binary tree. The process ID should be between 0 and the number of processes-1 (inclusive). Note also that the same process ID can be assigned to as many chunks as you want, which just means that one process timesteps multiple chunks. If you use fewer MPI processes, then the process ID is taken modulo the number of processes. +An alternative to having Meep automatically partition the cell at runtime into chunks based on the number of MPI processes is to manually specify the cell partition via the `chunk_layout` parameter of the `Simulation` constructor as a [`BinaryPartition`](Python_User_Interface.md#binarypartition) class object. This is based on representing an arbitrary cell partition as a binary tree for which the nodes define "cuts" at a given point (e.g., -4.5, 6.3) along a given cell direction and the leaves define a integer-valued process ID (equivalent to the rank of the MPI process for that chunk). Note also that the same process ID can be assigned to as many chunks as you want, which just means that one process timesteps multiple chunks. If you use fewer MPI processes, then the process ID is taken modulo the number of processes. As a demonstration, an example of a 2d cell partition along with its binary-tree representation is shown below. The 10×5 cell in $xy$ coordinates with origin at the lower-left boundary is partitioned into five chunks numbered one through five. diff --git a/doc/docs/Python_User_Interface.md b/doc/docs/Python_User_Interface.md index ffa4797b1..29b5e8a46 100644 --- a/doc/docs/Python_User_Interface.md +++ b/doc/docs/Python_User_Interface.md @@ -7330,10 +7330,9 @@ and `split_pos` define the splitting direction (i.e., `mp.X`, `mp.Y`, `mp.Z`) an `-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) or (b) a leaf with integer value for the process ID `proc_id` in the range between 0 and number of processes - 1 (inclusive), (2) a node defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with -`proc_id`. The `num_chunks` parameter of the `Simulation` constructor must be set to the number of chunks -specified by the binary tree. Note that the same process ID can be assigned to as many chunks as you want, -which means that one process timesteps multiple chunks. If you use fewer MPI processes, then the process ID -is taken modulo the number of processes. +`proc_id`. Note that the same process ID can be assigned to as many chunks as you want, which means that one +process timesteps multiple chunks. If you use fewer MPI processes, then the process ID is taken modulo the number +of processes. diff --git a/python/simulation.py b/python/simulation.py index 41515fc34..e708ddd33 100644 --- a/python/simulation.py +++ b/python/simulation.py @@ -1209,7 +1209,7 @@ def __init__(self, self.extra_materials = extra_materials self.default_material = default_material self.epsilon_input_file = epsilon_input_file - self.num_chunks = num_chunks + self.num_chunks = chunk_layout.numchunks() if isinstance(chunk_layout,mp.BinaryPartition) else num_chunks self.Courant = Courant self.global_d_conductivity = 0 self.global_b_conductivity = 0 @@ -5189,10 +5189,9 @@ def __init__(self, data=None, split_dir=None, split_pos=None, left=None, right=N `-4.2`, etc.) and `left` and `right` are the two branches (themselves `BinaryPartition` objects) or (b) a leaf with integer value for the process ID `proc_id` in the range between 0 and number of processes - 1 (inclusive), (2) a node defined using `split_dir`, `split_pos`, `left`, and `right`, or (3) a leaf with - `proc_id`. The `num_chunks` parameter of the `Simulation` constructor must be set to the number of chunks - specified by the binary tree. Note that the same process ID can be assigned to as many chunks as you want, - which means that one process timesteps multiple chunks. If you use fewer MPI processes, then the process ID - is taken modulo the number of processes. + `proc_id`. Note that the same process ID can be assigned to as many chunks as you want, which means that one + process timesteps multiple chunks. If you use fewer MPI processes, then the process ID is taken modulo the number + of processes. """ self.split_dir = None self.split_pos = None @@ -5219,3 +5218,11 @@ def __init__(self, data=None, split_dir=None, split_pos=None, left=None, right=N self.right = right else: self.proc_id = proc_id + + def _numchunks(self,bp): + if bp is None: + return 0 + return max(self._numchunks(bp.left)+self._numchunks(bp.right), 1) + + def numchunks(self): + return self._numchunks(self) diff --git a/src/structure_dump.cpp b/src/structure_dump.cpp index 83e8800f8..40d959545 100644 --- a/src/structure_dump.cpp +++ b/src/structure_dump.cpp @@ -519,6 +519,7 @@ void structure::load_chunk_layout(const char *filename, boundary_region &br) { void structure::load_chunk_layout(const std::vector &gvs, const std::vector &ids, boundary_region &br) { + if (gvs.size() != num_chunks) abort("load_chunk_layout: wrong number of chunks."); // Recreate the chunks with the new grid_volumes for (int i = 0; i < num_chunks; ++i) { if (chunks[i]->refcount-- <= 1) delete chunks[i]; From 4b296fc58ae84b67758d6babc8c5a364f5720172 Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Fri, 26 Mar 2021 09:40:15 -0700 Subject: [PATCH 18/19] remove num_chunks from tutorial example --- doc/docs/Parallel_Meep.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/docs/Parallel_Meep.md b/doc/docs/Parallel_Meep.md index ee1e71d69..5cbb1aca5 100644 --- a/doc/docs/Parallel_Meep.md +++ b/doc/docs/Parallel_Meep.md @@ -86,14 +86,13 @@ cell_size = mp.Vector3(10.0,5.0,0) sim = mp.Simulation(cell_size=cell_size, resolution=10, - num_chunks=5, chunk_layout=chunk_layout) sim.visualize_chunks() plt.savefig('chunk_layout.png',dpi=150,bbox_inches='tight') ``` -For improved performance, it is important to order the chunks such that adjacent chunks are numbered consecutively. This is equivalent to assigning MPI ranks in [depth-first order](https://en.wikipedia.org/wiki/Depth-first_search) which ensures that adjacent chunks on the same MPI node communicate using shared memory rather than the network (which tends to be slower). +For improved performance, consider ordering the chunks such that adjacent chunks are numbered consecutively. This is equivalent to assigning MPI ranks in [depth-first order](https://en.wikipedia.org/wiki/Depth-first_search) which ensures that adjacent chunks on the same MPI node communicate using shared memory rather than the network (which tends to be slower). Technical Details ----------------- From c7caed58e5c094d4ab99d3574e4e1121db626a53 Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Fri, 26 Mar 2021 09:45:47 -0700 Subject: [PATCH 19/19] Update doc/docs/Parallel_Meep.md Co-authored-by: Steven G. Johnson --- doc/docs/Parallel_Meep.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/docs/Parallel_Meep.md b/doc/docs/Parallel_Meep.md index 5cbb1aca5..8ac9c5ec1 100644 --- a/doc/docs/Parallel_Meep.md +++ b/doc/docs/Parallel_Meep.md @@ -92,7 +92,7 @@ sim.visualize_chunks() plt.savefig('chunk_layout.png',dpi=150,bbox_inches='tight') ``` -For improved performance, consider ordering the chunks such that adjacent chunks are numbered consecutively. This is equivalent to assigning MPI ranks in [depth-first order](https://en.wikipedia.org/wiki/Depth-first_search) which ensures that adjacent chunks on the same MPI node communicate using shared memory rather than the network (which tends to be slower). +For improved performance, we recommend ordering the process IDs in [depth-first order](https://en.wikipedia.org/wiki/Depth-first_search) of the tree, which will tend to give spatially adjacent chunks nearby process IDs. This increases the chance that adjacent chunks are on the same MPI node, improving communication speeds. Technical Details -----------------