From dfef39d18ff39342dee9639ceb4beb35eac304cd Mon Sep 17 00:00:00 2001 From: SparkSnail Date: Tue, 18 Sep 2018 18:53:34 +0800 Subject: [PATCH 1/7] Update RemoteMachineMode.md (#63) --- docs/RemoteMachineMode.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/RemoteMachineMode.md b/docs/RemoteMachineMode.md index 1cf847151a..74006152db 100644 --- a/docs/RemoteMachineMode.md +++ b/docs/RemoteMachineMode.md @@ -1,9 +1,10 @@ **Run an Experiment on Multiple Machines** === -NNI supports running an experiment on multiple machines, called remote machine mode. Let's say you have multiple machines with the account `bob` (Note: the account is not necessarily the same on multiple machines): -| IP | Username | Password | -| --------|---------|-------| -| 10.1.1.1 | bob | bob123 | +NNI supports running an experiment on multiple machines, called remote machine mode. Let's say you have multiple machines with the account `bob` (Note: the account is not necessarily the same on multiple machines): + +| IP | Username| Password | +| -------- |---------|-------| +| 10.1.1.1 | bob | bob123 | | 10.1.1.2 | bob | bob123 | | 10.1.1.3 | bob | bob123 | @@ -61,4 +62,4 @@ Simply filling the `machineList` section. This yaml file is named `exp_remote.ya ``` nnictl create --config exp_remote.yaml ``` -to start the experiment. This command can be executed on one of those three machines above, and can also be executed on another machine which has NNI installed and has network accessibility to those three machines. \ No newline at end of file +to start the experiment. This command can be executed on one of those three machines above, and can also be executed on another machine which has NNI installed and has network accessibility to those three machines. From d493fa8dfaddc87f8bb592a14952b01ae38ef4a6 Mon Sep 17 00:00:00 2001 From: Sinan Tan Date: Sat, 15 Sep 2018 11:03:02 +0800 Subject: [PATCH 2/7] Remove unused classes for SQuAD QA example. --- examples/trials/ga_squad/attention.py | 190 +------------------------- 1 file changed, 1 insertion(+), 189 deletions(-) diff --git a/examples/trials/ga_squad/attention.py b/examples/trials/ga_squad/attention.py index 381873b4f9..72efc0516b 100644 --- a/examples/trials/ga_squad/attention.py +++ b/examples/trials/ga_squad/attention.py @@ -197,192 +197,4 @@ def get_att(self, s, prob): ''' buf = s * tf.expand_dims(prob, axis=-1) att = tf.reduce_sum(buf, axis=-3) - return att - - -class MultiHeadAttention: - ''' - MultiHeadAttention. - ''' - def __init__(self, name, hidden_dim, head, add=True, dot=True, divide=True): - self._name = '/'.join([name, 'dot_att']) - self._head = head - self._head_dim = hidden_dim // head - self._hidden_dim = self._head_dim * head - self._add = add - self._dot = dot - assert add or dot, "you must at least choose one between add and dot" - self._div = 1.0 - if divide: - self._div = math.sqrt(self._head_dim) - self._var = {} - - @property - def hidden_dim(self): - return self._head_dim * self._head - - @property - def name(self): - return self._name - - @property - def var(self): - return self._var - - def _get_var(self, name, shape, initializer=None): - with tf.variable_scope(self.name): - return _get_variable(self.var, name, shape, initializer) - - def _define_params(self, tgt_dim): - self._get_var('tgt_project', [tgt_dim, self._hidden_dim]) - self._get_var('tgt_bias', [1, self._hidden_dim]) - self._get_var('v', [self._head, self._head_dim, 1]) - - def get_pre_compute(self, src): - s_shape = src.get_shape().as_list() - src_dim = s_shape[-1] - src_project = self._get_var('src_project', [src_dim, self._hidden_dim]) - src_bias = self._get_var('src_bias', [1, self._hidden_dim]) - src = split_last_dim(tf.tensordot(src, src_project, - [[2], [0]]) + src_bias, self._head) - return src - - def get_prob(self, src, tgt, mask, pre_compute): - ''' - :param s: [src_sequence_length, batch_size, src_dim] - :param h: [batch_size, tgt_dim] or [tgt_sequence_length, batch_size, tgt_dim] - :param mask: [src_sequence_length, batch_size]\ - or [tgt_sequence_length, src_sequence_length, batch_sizse] - :param pre_compute: [src_sequence_length, batch_size, hidden_dim] - :return: [src_sequence_length, batch_size]\ - or [tgt_sequence_length, src_sequence_length, batch_size] - ''' - s_shape = src.get_shape().as_list() - h_shape = tgt.get_shape().as_list() - src_dim = s_shape[-1] - tgt_dim = h_shape[-1] - print('src tgt dim: ', src_dim, tgt_dim) - assert src_dim is not None, 'src dimension must be defined' - assert tgt_dim is not None, 'tgt dimension must be defined' - - self._define_params(tgt_dim) - - if len(h_shape) == 2: - tgt = tf.expand_dims(tgt, 0) - - tgt_project = self._var['tgt_project'] - tgt_bias = self._var['tgt_bias'] - - if pre_compute is None: - pre_compute = self.get_pre_compute(src) - - src = pre_compute - tgt = split_last_dim(tf.tensordot(tgt, tgt_project, - [[2], [0]]) + tgt_bias, self._head) - - add_attention = 0 - dot_attention = 0 - if self._add: - buf = tf.tanh(tf.expand_dims(src, 0) + tf.expand_dims(tgt, 1)) - v = self.var['v'] - add_attention = tf.squeeze(batch_linear_layer(buf, v), -1) - if self._dot: - dot_attention = tf.reduce_sum(tf.expand_dims( - src, 0) * tf.expand_dims(tgt, 1), -1) - dot_attention /= self._div - - attention = add_attention + dot_attention - mask = tf.expand_dims(mask, -1) - logits = attention + (mask - 1) * 10000.0 - prob = tf.nn.softmax(logits, 1) - if len(h_shape) == 2: - prob = tf.squeeze(prob, axis=[0]) - return prob - - def map_target(self, tgt): - tgt_project = self._var['tgt_project'] - tgt_bias = self._var['tgt_bias'] - tgt = tf.tensordot(tgt, tgt_project, [[1], [0]]) + tgt_bias - return tgt - - def get_att(self, src, prob): - ''' - :param s: [src_sequence_length, batch_size, head, head_dim] - :param prob: [src_sequence_length, batch_size, head]\ - or [tgt_sequence_length, src_sequence_length, batch_size, head] - :return: [batch_size, src_dim] or [tgt_sequence_length, batch_size, src_dim] - ''' - buf = merge_last2_dim(tf.reduce_sum( - src * tf.expand_dims(prob, axis=-1), axis=-4)) - return buf - - -class DotAttentionWrapper(RNNCell): - ''' - A wrapper for DotAttention or MultiHeadAttention. - ''' - - def __init__(self, cell, attention, - src, mask, is_gated, - reuse=None, dropout=None, - keep_input=True, map_target=False): - super().__init__(self, _reuse=reuse) - assert isinstance(attention, (DotAttention, MultiHeadAttention)), \ - 'type of attention is not supported' - assert isinstance(cell, RNNCell), 'type of cell must be RNNCell' - self._attention = attention - self._src = src - self._mask = mask - self._pre_computed = None - self._is_gated = is_gated - self._cell = cell - self._dropout = dropout - self._keep_input = keep_input - self._map_target = map_target - - @property - def state_size(self): - return self._cell.state_size - - @property - def output_size(self): - return self._cell.output_size - - def call(self, inputs, state): - if self._pre_computed is None: - self._pre_computed = self._attention.get_pre_compute(self._src) - att_prob = self._attention.get_prob( - src=self._src, - tgt=tf.concat([inputs, state], axis=1), - mask=self._mask, - pre_compute=self._pre_computed) - if isinstance(self._attention, DotAttention): - att = self._attention.get_att(self._src, att_prob) - else: - att = self._attention.get_att(self._pre_computed, att_prob) - x_list = [att] - if self._keep_input: - x_list.append(inputs) - if inputs.shape[1] == att.shape[1]: - x_list.append(inputs - att) - x_list.append(inputs * att) - if self._map_target and isinstance(self._attention, MultiHeadAttention): - tgt = self._attention.map_target( - tf.concat([inputs, state], axis=1)) - x_list += [tgt, att-tgt, att*tgt] - - x = tf.concat(x_list, axis=1) - dim = x.get_shape().as_list()[1] - assert dim is not None, 'dim must be defined' - if self._is_gated: - g = tf.get_variable('att_gate', - shape=[dim, dim], - dtype=tf.float32, - initializer=None) - bias_g = tf.get_variable( - 'bias_gate', shape=[1, dim], dtype=tf.float32) - gate = tf.sigmoid(tf.matmul(x, g) + bias_g) - x = x * gate - if self._dropout is not None: - x = self._dropout(x) - return self._cell.call(x, state) + return att \ No newline at end of file From d1acfe612349e657d0c006d5d9fe1698a78dd477 Mon Sep 17 00:00:00 2001 From: Sinan Tan Date: Sat, 15 Sep 2018 11:09:07 +0800 Subject: [PATCH 3/7] Remove more unused functions for SQuAD QA example. --- examples/trials/ga_squad/attention.py | 31 --------------------------- 1 file changed, 31 deletions(-) diff --git a/examples/trials/ga_squad/attention.py b/examples/trials/ga_squad/attention.py index 72efc0516b..7a7e02d74a 100644 --- a/examples/trials/ga_squad/attention.py +++ b/examples/trials/ga_squad/attention.py @@ -31,37 +31,6 @@ def _get_variable(variable_dict, name, shape, initializer=None, dtype=tf.float32 name=name, shape=shape, initializer=initializer, dtype=dtype) return variable_dict[name] - -def batch_linear_layer(matrix_a, matrix_b): - ''' - shape of matrix_a is [*, batch, dima] - shape of matrix_b is [batch, dima, dimb] - result is [*, batch, dimb] - for each batch, do matrix_a linear op to last dim - ''' - matrix_a = tf.expand_dims(matrix_a, -1) - while len(list(matrix_b.shape)) < len(list(matrix_a.shape)): - matrix_b = tf.expand_dims(matrix_b, 0) - return tf.reduce_sum(matrix_a * matrix_b, -2) - - -def split_last_dim(x, factor): - shape = tf.shape(x) - last_dim = int(x.shape[-1]) - assert last_dim % factor == 0, \ - "last dim isn't divisible by factor {%d} {%d}" % (last_dim, factor) - new_shape = tf.concat( - [shape[:-1], tf.constant([factor, last_dim // factor])], axis=0) - return tf.reshape(x, new_shape) - - -def merge_last2_dim(x): - shape = tf.shape(x) - last_dim = int(x.shape[-1]) * int(x.shape[-2]) - new_shape = tf.concat([shape[:-2], tf.constant([last_dim])], axis=0) - return tf.reshape(x, new_shape) - - class DotAttention: ''' DotAttention From 46cc2ff0206323e3dacb9ba10fa5eba6a6438f7c Mon Sep 17 00:00:00 2001 From: Sinan Tan Date: Mon, 17 Sep 2018 10:43:27 +0800 Subject: [PATCH 4/7] Fix default dataset config. --- examples/trials/ga_squad/trial.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/trials/ga_squad/trial.py b/examples/trials/ga_squad/trial.py index 7373711e36..b96805c9c7 100644 --- a/examples/trials/ga_squad/trial.py +++ b/examples/trials/ga_squad/trial.py @@ -51,7 +51,7 @@ def get_config(): parser = argparse.ArgumentParser( description='This program is using genetic algorithm to search architecture for SQuAD.') parser.add_argument('--input_file', type=str, - default='./dev-v1.1.json', help='input file') + default='./train-v1.1.json', help='input file') parser.add_argument('--dev_file', type=str, default='./dev-v1.1.json', help='dev file') parser.add_argument('--embedding_file', type=str, From eedf0955834f8e827b1c7272299d06a2b724c842 Mon Sep 17 00:00:00 2001 From: liuzhe-lz <40699903+liuzhe-lz@users.noreply.github.com> Date: Wed, 19 Sep 2018 11:08:17 +0800 Subject: [PATCH 5/7] Add Makefile README (#64) --- Makefile | 7 +--- README.Makefile.md | 91 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+), 5 deletions(-) create mode 100644 README.Makefile.md diff --git a/Makefile b/Makefile index 6e8513e06c..f429fc20bb 100644 --- a/Makefile +++ b/Makefile @@ -109,16 +109,13 @@ remote-machine-install: cd src/sdk/pynni && python3 setup.py install $(PIP_MODE) -# All-in-one target +# All-in-one target for non-expert users # Installs NNI as well as its dependencies, and update bashrc to set PATH .PHONY: easy-install easy-install: check-perm easy-install: install-dependencies easy-install: build -easy-install: install-python-modules -easy-install: install-node-modules -easy-install: install-scripts -easy-install: install-examples +easy-install: install easy-install: update-bashrc easy-install: #$(_INFO) Complete! #(_END) diff --git a/README.Makefile.md b/README.Makefile.md new file mode 100644 index 0000000000..3a815af9d9 --- /dev/null +++ b/README.Makefile.md @@ -0,0 +1,91 @@ +# Makefile and Installation Setup + +NNI uses GNU make for building and installing. + +The `Makefile` offers standard targets `build`, `install`, and `uninstall`, as well as alternative installation targets for different setup: + +* `easy-install`: target for non-expert users, which handles everything automatically; +* `pip-install`: target in favor of `setup.py`; +* `dev-install`: target for NNI contributors, which installs NNI as symlinks instead of copying files; +* `remote-machine-install`: target that only installs core Python library for remote machine workers. + +The targets will be detailed later. + +## Dependencies + +NNI requires at least Node.js, Yarn, and setuptools to build, while PIP and TypeScript are also recommended. + +NNI requires Node.js, serve, and all dependency libraries to run. +Required Node.js libraries (including TypeScript) can be installed by Yarn, and required Python libraries can be installed by setuptools or PIP. + +For NNI *users*, `make install-dependencies` can be used to install Node.js, Yarn, and serve. +This will install Node.js and serve to NNI's installation directory, and install Yarn to `/tmp/nni-yarn`. +This target requires wget to work. + +For NNI *developers*, it is recommended to install Node.js, Yarn, and serve manually. +See their official sites for installation guide. + +## Building NNI + +Simply run `make` when dependencies are ready. + +## Installation + +### Directory Hierarchy + +The main parts of NNI project consist of two Node.js modules (`nni_manager`, `webui`) and two Python packages (`nni`, `nnictl`). + +By default the Node.js modules are installed to `/usr/share/nni` for all users or installed to `~/.local/nni` for current user. + +The Python packages are installed with setuptools and therefore the location depends on Python configuration. +When install as non-priviledged user and virtualenv is not detected, `--user` flag will be used. + +In addition, `nnictl` offers a bash completion scripts, which will be installed to `/usr/share/bash-completion/completions` or `~/.bash_completion.d`. + +In some configuration, NNI will also install Node.js and the serve module to `/usr/share/nni`. + +All directories mentioned above are configurable. See next section for details. + +### Configuration + +The `Makefile` uses environment variables to override default settings. + +Available variables are listed below: + +| Name | Description | Default for normal user | Default for root | +|--------------------|---------------------------------------------------------|-----------------------------------|-------------------------------------------------| +| `BIN_PATH` | Path for executables | `~/.local/bin` | `/usr/bin` | +| `INSTALL_PREFIX` | Path for Node.js modules (a suffix `nni` will be added) | `~/.local` | `/usr/share` | +| `EXAMPLES_PATH` | Path for NNI examples | `~/nni/examples` | `$INSTALL_PREFIX/nni/examples` | +| `BASH_COMP_SCRIPT` | Path of bash completion script | `~/.bash_completion.d/nnictl` | `/usr/share/bash-completion/completions/nnictl` | +| `PIP_MODE` | Arguments for `python3 setup.py install` | `--user` if `VIRTUAL_ENV` not set | (empty) | +| `NODE_PATH` | Path to install Node.js runtime | `$INSTALL_PREFIX/nni/node` | `$INSTALL_PREFIX/nni/node` | +| `SERVE_PATH` | Path to install serve package | `$INSTALL_PREFIX/nni/serve` | `$INSTALL_PREFIX/nni/serve` | +| `YARN_PATH` | Path to install Yarn | `/tmp/nni-yarn` | `/tmp/nni-yarn` | +| `NODE` | Node.js command | see source file | see source file | +| `SERVE` | serve command | see source file | see source file | +| `YARN` | Yarn command | see source file | see source file | + +Note that these variables will influence installation destination as well as generated `nnictl` and `nnimanager` scripts. +If the path to copy files is different from where they will run (e.g. when creating a distro package), please generate `nnictl` and `nnimanager` manually. + +### Targets + +The workflow of each installation targets is listed below: + +| Target | Workflow | +|--------------------------|----------------------------------------------------------------------| +| `install` | Install Python packages, Node.js modules, NNI scripts, and examples | +| `easy-install` | Install dependencies, build, install NNI, and edit `~/.bashrc` | +| `pip-install` | Install dependencies, build, install NNI excluding Python packages | +| `dev-install` | Install Python and Node.js modules as symlinks, then install scripts | +| `remote-machine-install` | Install `nni` Python package | + +## TODO + +* `clean` target +* `test` target +* `lint` target +* Exclude tuners and their dependencies from `remote-machine-install` +* Test cases for each target +* Review variables From b58666acefedc2ef7b38a0f9861dc16e51776af1 Mon Sep 17 00:00:00 2001 From: Scarlett Li <39592018+scarlett2018@users.noreply.github.com> Date: Wed, 19 Sep 2018 15:50:04 +0800 Subject: [PATCH 6/7] update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md --- README.md | 31 ++++++---- docs/3_steps.jpg | Bin 0 -> 163024 bytes docs/GetStarted.md | 6 +- docs/WriteYourTrial.md | 98 +++++++++++++++++++++++-------- examples/trials/mnist/config.yml | 2 +- 5 files changed, 97 insertions(+), 40 deletions(-) create mode 100644 docs/3_steps.jpg diff --git a/README.md b/README.md index 51678149a1..3bdf6f5d1b 100644 --- a/README.md +++ b/README.md @@ -26,31 +26,40 @@ The tool dispatches and runs trial jobs that generated by tuning algorithms to s * As a researcher and data scientist, you want to implement your own AutoML algorithms and compare with other algorithms * As a ML platform owner, you want to support AutoML in your platform -# Getting Started with NNI +# Get Started with NNI ## **Installation** -Install through python pip. (the current version only supports linux, nni on ubuntu 16.04 or newer has been well tested) -* requirements: python >= 3.5, git, wget +pip Installation Prerequisites +* linux (ubuntu 16.04 or newer version has been well tested) +* python >= 3.5 +* git, wget + ``` pip3 install -v --user git+https://github.com/Microsoft/nni.git@v0.1 source ~/.bashrc ``` +## **Quick start: run your first experiment at local** +It only requires 3 steps to start an experiment on NNI: +![](./docs/3_steps.jpg) + + +NNI provides a set of examples in the package to get you familiar with the above process. In the following example [/examples/trials/mnist], we had already set up the configuration and updated the training codes for you. You can directly run the following command to start an experiment. -## **Quick start: run an experiment at local** -Requirements: -* NNI installed on your local machine -* tensorflow installed +**NOTE**: The following example is an experiment built on TensorFlow, make sure you have **TensorFlow installed** before running the following command. -Run the following command to create an experiment for [mnist] +Try it out: ```bash - nnictl create --config ~/nni/examples/trials/mnist-annotation/config.yml + nnictl create --config ~/nni/examples/trials/mnist/config.yml ``` -This command will start an experiment and a WebUI. The WebUI endpoint will be shown in the output of this command (for example, `http://localhost:8080`). Open this URL in your browser. You can analyze your experiment through WebUI, or browse trials' tensorboard. + +In the command output, find out the **Web UI url** and open it in your browser. You can analyze your experiment through WebUI, or browse trials' tensorboard. + +To learn more about how this example was constructed and how to analyze the experiement results in NNI Web UI, please refer to [How to write a trial run on NNI (MNIST as an example)?](docs/WriteYourTrial.md) ## **Please refer to [Get Started Tutorial](docs/GetStarted.md) for more detailed information.** ## More tutorials -* [How to write a trial running on NNI (Mnist as an example)?](docs/WriteYourTrial.md) + * [Tutorial of NNI python annotation.](tools/nni_annotation/README.md) * [Tuners supported by NNI.](src/sdk/pynni/nni/README.md) * [How to enable early stop (i.e. assessor) in an experiment?](docs/EnableAssessor.md) diff --git a/docs/3_steps.jpg b/docs/3_steps.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e5e18540ea8832dfa662e18322d26bb339c17e12 GIT binary patch literal 163024 zcmeEucU%)~)^?Cy6lnsYL<9w-DP2Hfqlp*+=|YrV1T2&wkRVExA|Rlk1SujQM7q)< zT|h*-fDjS{q$iXxkPyDXZSOw&?(XyK@BRMUz$BAjCU@q{oclWGT<4s7=iAN%Wd9{y z16>FM0|Vp+_y^e`K&*9;Zq5*hkrCts1Oj1$Ff%ehn87^;aJ$6F`0I6dA7Z@!Py4%X zjCmkT;0w6BugRGAZ~ME)K^Vd_A&`>zol(dI$Q}lU-Tyy77?~M&A1q8vjLfVotgO2m z8#^aE8yg23D=Wud4h~K(@WINyk9#lIzTN%ZL3Y2s`z`RFi;b0S_lQ6C*!c+IVcT<- zX`GSaC}a;010xT^PBR1wo+&eUC3Y{ypC1f+7@3$^z*FMj1P`d#51u|F;~wy2nVCRw z8G^yjAxu2Xyke)$vG5t+WIcL^U-3c0D>m`-B@F^5JtPSw`@5m+90vr2gbyA&E-58_ zLRm#sP5rdSg^N16din;JOs|=lTUc6IJ2*NyySTc!-}CYH^G62UfA}aYJR&kGIx*>K za!Ts6=V@8lIk~U%-sBgQmX%jjR=xjF-PqLJ(%SZ^y`#6Ue_(Lv+wcg1IQe60dgkZs z9C>ARZJn|KY;Nt!#Q^E}pfO72t?*S9*u3QXz{K1WphlyG26btV;W7eB@ z_>L+*VB=(1SJ92R0458#1_-vMtqrl`EVr7CLFCin=Xit#{G<S?R6Qh;Eu!-hs^Yqc+hiy7jGy zFFO$K6|J^^JTx9apib;SvLwlxI}pZN@Tv3C+MLu@7i@DKT92ST2^2GJS8d|MtV@7My6yq#cO(XY_9ml==rTuvfC;-}dc5FvirW z9Y{NCN$M)DiT1nY)h>h6gY}kEcOVj?{}uNyityjN`(I`LKcBlNl(+MCAn(?@6o*>I znaOz}3%-G2rIiCJ5q-`jR73J1#WT4-rjI|Nz3DxXtt#j@ZRTzAb_c=_*cg%9!k5c~ z?OTUTde^0_N9G2nPf1wtylaw?o(Pq0+B5$JX)A_Fp2W<6ag45?vfJ zEn0HKmxdG@^0D|ZEsJ2^e58oUb5AWbqTvUw#MzZo&G&t25s3zkO}E=NUg(Lfs+QLe zSrJbzB^hb9EKqkK4NKL6mkQDr2It=y>j->tzXuc2mZ)k}h_J>)g2HH>Bf74=solJ# ztZ$#TrQbI07-t~PUGA8?_x*#9lF1M%1sLW7dGtHFXX-KgqAKQqgNjv;H&zHqC1451d=fv6GQ=ijfA2}o%bQ*bO zZ@g$1TJ@J5kK-P`BA*_8Z`N;tR_@+iHeb>iIrDhNXl1>ke02c!yzU7sT6H>zwCLZD?YZk|=+!w`5N`8mT@3Ce9r`06{vS^TN~))s?LaQViT-p} zr2h^iC3&{r_^)3*LQ$mq1L%Zl*gqWi6#W~cYLREGH|Vwl>3*}lvIF_?@LT65o8fG;bZo( z-ybw4wcJ+=t2KQMOg8yxw8jT}{0U+`d_9jO%0zy1va-B=PT-ZDG!et;jwr=PDb!jJ z3`L3zKaM=@@+ZRgj_5k3!V}^g`)`RKO1xt2;R~&u)^B_M!Ks%gH*(|XQbrod0@}*_I+6NF-QOVAHJ^m_)7P^eC2_!rt-&JJ%9MdPCJ=2@QJ*L zYm(r?+-0rPjy{XTJb>LwUyeeIJkAah176-!jk>?(_lha?;NH5H7qc-r2?qIv#n-}3 zbPo$#8OrSO$NknVmPRQCiS&c!f;&!&TctRCvP+eRF=xS~v)Qk}FgSYIRZ>{i;n^Ni z4KJg(fygpV1ZaOvb0&QsGJiMbR-KZ5x@@34eSkeMdrXQs^Z7Y(b+P29Pko$xW#6)| z7j!(1sLZ}3f5vRehqk?l(OdaWh$x@_k*|hIx1x(|=)ry;Gzzr;70Si4{|m_fOW^lk z)ARc@>Ayzy?|r!c8rk0%*_I$_U@DJh++SfUx3*{lawlJh(dEi#Y;PLQyW+L4H?=3~ z=Y)~`+WF%?n44UXky`W!1%^p*`T>h?DzTzF5IWDY2r@A6=SYX%bbw7s{kYGk)gq@6 zrUYK4kPfqf!|+hF2#nykjnf;Hg%P0SstC&QvTUskm*g5v`6EHx8iTeuZBmTtCmL*R z1^Tmvn?{X?y=nqBTh@X_qTgOC@qh=K;4tEQU2^8FB`M$|ob$nIF|IR~yxNC`eG)RyIdnW@ALhNF7($q&hD zgp9}Jz=l-oeRXb>BJFvPpkjxVaUHSjG->|uxNA3r59>QQG40p!{fZTUI@nmk>a^$A zZB&MH234eMR-1^lA(t&}%>BTAiv*e?kX{s|On!-NT8>mhxcAFfDTLGXKZ!qXE_ow+ z^C{$j=Gs-m%*Kua#~6r&{`TEc?D=cCE(P~rS9(;_i!hV`_PgV@nExm;3tC2snod;7#=3y<`2l|5U5NZ~o zmL(Pa<#m@1R907fh%pdozIC#r19>ERu8GKRnrCds?K|2PKo3+pSe_n4>NVUdTTzz6 z@{_8feHDhin^Uy;$+qi*xf7n3oXSb~DES|XhIyabcxH!IL=7Z4_clSt?;MKwJkm?G zy&}GER=Ka%t{X=aozI*#Gqp_{^8@wgLl>Nn3=gYN81`sR9hV{H#{L@4uZAocz96p5@((Ul z`UmGV@ng}~OX-q&v~f5XpO!7%E&o}AjVM^0uB|Cf&mNTm!+TC-;cj@p;2SHt^((wL zpYB~6Iky|$ca**ZW8?Ghj~#fKF=OIZn3)wV{ePhayJIjAGo(qCxl}nIk=ladFRAXY z-J5@T2qi%p%W*dF*%X>K(rrA|E;04G%9#4aF(x2A1z`i;CLjDEq*t3|&vKEkoPtT1 zm#0@z4zJD~5w1d+eQZa|LB8Qv91rphe~aUv|22+Z`G+`OO}74#V~Jr3qWR|zB)xr; z66_cJ#r&n9FKOMjb|}@i&nM7U07LNRpWW43kVU{-?`kc__mMFh{avjUHa9=CU&qyg zDXXvS`<#)AkH9oSSbOiB1xg~KO_Vil$cQ|h&i0_!Puhv7X?Co>#lM^{Cgs#;2Bd8i zLqbmMwrccXteZ)yGI~N~cvHCl_3O7^^d|7FMrxC4;nUR>;qylQ<-=VWMLFYd497%g z&&n}%unRYEz0JwamdSUz0k^etA}39Z=lT=%gYHZO6#3vq-QGnWmb6c?6R$9_S+EE^ zr{3;x=%ZlRw7^pnltSMM4D{Uh zFpeQCzF8bVD_~wA^s4V`$4*|!$yRVN{jp1K(Kc*NmR+-=i5h#Nr8583#s!VSajhX9 zk8@Rj^__=TxNX?jOx-(Fxgx#yP>+6&^4)C6r#aA)9to9s063A=tO2)4O+*BKzgPXh z8(S~LULfI#o?w*2Rm&zRh^+t5%+zyX$=BM2Ao>YgQ#WWvfJ+w5j^s4>5NjP=2(KQ& z%RHN^O3-(mjs{IovJi`&iLlizELwHX>Qpom0pO!W_5F&-?RaX~A=G2s<$@p*PD_LpPo5kH*I}l}lV;y@}@CovNvAFJHaP!;dP z{?JOiazG>;R!cn1{k$TVQr!&#e)%piQ9*yi^A|7`6&HCq`~oJ$(hRnv)$f2X{@H$u zhhu)LcIb@HtwqQ2TFQy^x3t**j3YITY^pX=UKT9dbz-W2YM5Oca;~xsjg~6DXZjy- znI8z=0>A9?|3o<3(Z55usNIW~x==whTowRKTIWqjs=1oBKvI)m!t-N&IS$WNMA+IS zl2X#f^p;O2o|;~=s$*-nPnE?*_3S{@l2#YC7N{?ZH00+Ab2R~2`T5sBDIGGf#_HZ+oqY?%X6Tj3AyC*z~U z$ZZd%EBb;0UN;``c^Pemj2kfUF0ox?nmiVB4`L^1f7a1W9Bq_Uk!^h~w+jmF^+W0U zO6M0UB>-yVBqN}U@S(WqW_6#hoa#N7LN~Pn-VMF#tDNT)Lv?Rokdc=9*)eBj$v0&2 zJjfAH%eMs*p@)#79=2+2X}6BD8hp!5ja(JEC}_yeJdU|liiq)P(~utMAbRcZ$U=+$}>7MHUVILBwz%f2{l{!uTEByOpu46oqH|_OuxBYFJ{#GWFV#8RzqxC`(PxIP z)r?4Gy^jmY`qw25jI2cOrZa-Xjfe8(hwt|-S_cmfZeDMbtBt;(r)&aRpf?{CHJ)^I zupNn>_`}I_OBf$Y_$N-VR@gUleh}l{w^UixF@4(ehsnXyS)c`)(q%~K4>!Mhj>*E7 zgKSJusdz~3Tf&)@*`^sen55&hv=zGi(Al#ad38Dg&?beb>Y*mM@CZ#Cc<4(hIzN9G z@NSL?Rj)NX7}_d)mcaq1!&J>BTku-{BJQ`ta^--u&Idt*mTh6th&g!spHY~-mmLA3)T{xMoGfvA^q zJsGCYijQ-KBywZCrJ9PB$ZE8M1LVAquu@DjJPyN(Qn7PGac>v+!ViBpK*J*SD{mvHQVc`r{pFn8!q!N?;Cp%z%?BST-0{e54>&k}z4b*+j>NK)-H$!2 z_rGCh5Y14MG53h*41M4Juk_;vR8b%c8kMpG;Tkn~Oei7Wa$X{KcD>kvxN_o3Jvlf} z4o|uKpne}(sC=*kVdjn?_|y0XVeznXy+>Xs29>93iu2kcI2^sdy3b1CSXEV&g#M(G z;q5}cEZG}$nu2{l!&yR(UX)~U~d*aNMZX$ttXj}NH03ppDM~qnl4Q> zM?uS@&7);r>X`*1CoA|$VJYFfZ8y(w99YAD!_qn1yvbO~yGnqYTr<%Y3j@b{oYril z8u8kr>iiA_K6Gu*=#d(p3)SaeMH3ZcjGyXXXFdYW^f9(`p*qkQ2XO8R!`Uq;hOabV zEKQ}q*2w#CIZC2Oc<5>$zmdqNn19b zj=>voz_BVCKa9@amK$^?!n$7tD;RX$2FD9Lwy9IQpMle|#zj!Hxy|GaMAbQGYGyn$sE#sZ?LS@V4S-HIrBW$+Nd7sc5K^f^B})PG!itX zsS8y^LnsHbcL*&~0CbvXVSU4emSv~H;w5MBeaUM^EPnz4f zf(xF`?fccIAiucFs|Lh`>(hDvfm3wv-@826|A0c^No0X+Q(V^FrRPFFzhXRY?K{ zIA1@{yTCa%XI*$)jZJQndD!A^_`OFaogcz=gXeI3=!x8MB@%X_4D?h_(+&f#sOK${ z0nNaPsXm%qvAg-=y&Tu-7iia}cMaEEXP%r=Kdy9#KM&${mD@R$zK^i|(kF1#dxK+Qb+2B&s zll5GD;z5?7?*q1Tv?X8*>##;YKqP+_!{LM3|8t`f#%o~#e>Z+TIMIQ^U%Edu%&>ZC zRe!sEGvFg+dmyVGz5@yMqkqR8!g;`ikV$Z$45T?8Q_$~vWr^?mme-+tdWFSBGN;YM z%sgLxGrK)3F>^+yiGBp#@bO? zB`ez~c)qePkQWOsoVk#C*2X;~3$37T__V7W+lkRs9E(2|~9!IzEPKgi7rhYiagNSus+M;y0G|_t!MzziV(N zWF7m(I}%UwQCL_e;Dp_+5f6jZ$a#|j;jwo?QgG&hmW0aQ!QW&fzJ8dBy))Lp7}1ri6*IUnwArj-{)5p=TsqF4^hzbOge)uQ`YMAC|3BSWqmjSjG7!=J7MCggH7@({4{@27 zRj@Y*yuXdQDysi3>caB>iNyqg@oy}q^IuuaPrqd`KYuUX`Zo~t`x3T)g`hteSgei6 zSgYh-x()`LAww=dTujo^%1%QcqJ@?5G2bAuv9Y9@Uys`o3C?!Qv-3Cx9*^GQj# zFe#QM#>EupCOx7+upmTM+80N0_T_*@2|GtlWRz_ok2HtM+r32U?1& z1|xT+%-;>Rw9e%MHjUL>+QIa^H($i6Dldl#JM^cBosUUz zhV0Q7*z6?208K;6?aJ!<^d@cA?My8+Vf##@Ar?S4^i-y?s|$OiKXbf3vHi1wSh53| zSjItsGVq*8M&4X=8uICd9-@4ts<>Oe2%!yQpP!>_c^5@nrQQLlOQ2wbn~Z=FFBZM?$$(R`O^95tHaR7+4`RjIcmFf|ae| z1q567&)uFUyN<+IEB;JqccnXLD=bOy@qG_^>$g2eTLo{O6U@sy&W>aIN&SABd=J_Q z$Ae5K_-;gcdoH0Qb%?HnveM|_^X3^2&YsVoo&DUQm!@`0QYHW)5c;6g@ zG^xTt&OIm|K<%UUNnncH)~t#dIZ)3*dK-|^J2c(Aac}XaSA-kP_nEwK=qs+EnF(&1 zU^*yz_%jlwF@EF%C6L^`&_{$vszL2Z74-Z!ud!M4f;!12-)wV?nUjZ;&vJZJdShRc zdIXxqZ_$b)nL`1YFPI$&6PAo_5IJnqK&cn&rOP7|%4NDtW)KIjX^Vu34%;oRGG&>W zy_daKeuJ&M>x*6tK&5kzk!?(Sia~Wsr$_?rWTlD44~k91O{{LbYN5L#YS<-D#LXpR ztj93>U!^Sz5=^|-HEe1wSp z;#)VK$>^?V#q)!yx_T>i$ZF_W4HyX?56FQ<(Re^=qgf8#pw0K541ZLA)NOx7SNEgZ zo4Gp>r@6*strQ(@2``Hyr8!~!hmsl7wi^4+^{#O)8k&T5G=lV$6Xt4l9Dkf)rGB&f z%6rHM%bsfoBsnsD_TY};JU-Q`P_5AoozOB_JS(h>c8&;tRP986MOL%z;b`BN?ATL1 zGCKCX)$jSf&1@cCOU_)@aCOKw@?S;De=wL|b}f<`d?}sZgr3(M(=K$5%D zfobgqtYF?f>yNnsJ(?$BJL>JvZb^_3_|h2(WdsQUw^JREFC6bIEOeItKPFBEUsniy z5gmyevsl>#GpB)h*+0jX=PoHye6`^?8noMYK%N4kmiYgQTK^Nt8h~_Cw+>J@(OJZ5 zS57s@_*T?goa*!j%l5nYK?>o-Nv^mY#nMo=qwk^N2tHqIc!p915KLy7U$hPzoC5Q3 z!c2FNDJsk{iXnU2P|@r@LRMy%6GE7xpvC6g&G_*93N6blwyqlMc_Zc2qN0@#aW(;9 z($qBvq!5fl9DTuRn*HYlhR)Ys3y$@?L0_X{2W|~HCt3EtUhd|8ylRX2xfMLSY;31T z>LhwqkosEvaNPAr#)1p4R)4P-A&Vc0Q{ZjQED65~v0UysC;yQ1M1JB)NP_r!M@JpI zNpeR1T-tE){8sgSP34|zbJB&_w1piAcJ-VNzxnY8e`mS{^qMOL4^~B}aN5{}S5$wf zOq6mlxz@OlBeUnUki?-lWG44B+(b5r#=5W&9O;^;h<`JNV^j1*RTcG2eDsr*;%Lk=;^_WOoXR`eyh=-7F%W3H?K)V_{*;7Gm(iy-KJuHik){S(az8Liv08W|`LHl*}azOOG zioV%BqSgQ3loc`<`IS-?>WDi>rX$QjA!;@hp9Vx z_=sIU#aOpp0h`Ex?g!0Z34(MPw|5pMur>yrz_l$3nkF?@OZBcZzOhES(`BN12PNM} z#XrNk+w;~sh9y)LVC2k0w7?RD164GE!gjE{m0(71)3zI{K@Ajmwq15u+?K|X^kLr^ zi9<9#9GyLvs*7|XcEyL6zr4_LFy#Z$QxpDG0o9i`d_g<)pyEZ1)>p(MVv-z%?bC%c z_3a$oL_TI;kc`K~wm-!KFqrJ}fJZDmo=lkZFx2EEMmKm#mah&vJ2$3$OK?njbeV>; zLF!!snsU(%>NI<8E%yxW0qx`0k%2ZJ`s2e0iD!=Yh)R!$AcI==HL6F8xwK30eW-rI z9S4fu4Uf1F3&Tw$UbtQYQb-mpqVoND{l#ZLr^<1sGM&XN6&zu>zvuJ)k}v+W!@{qv ze%2q|j-^@TN!&)x8vvboHnVC^-cTKH*GMFuxbq&HzPF_9a@acdDQ;r?FpN^a4e~$} z83!=?(JpvyKy4EKfOZp$kjGB!y=P`Ca<$icB0-Gm6#G5y-Lt7M2VRK?u`H9!rCY%X zBpEvUB=r)y0n`ugc!nVK_B$|4U`O&b;aI+pBLxX5VfWJ#8{V8Ur#gNA*{f@1r=HWH zZ>Yrs5jVSegmumgWbB|%V5B>ETCN(MJsva{U|sXtGNF1Kh5f<}$hj;CkR2#h+x57c z2$7&Oq&%90s4&P&GgRP&?9gt*BWOpfmwFeU8BTSdFi=}sSQ5E)Vv$Pz^8uSOpC@4#NmV zxDp(}bqC@#wvC~}7Hn{3el0%&@SxYCx2m=YfO<5ANv@e0Lm2;4Pk%QGU_pavi`_~A z{}JsHhhN2(a-O~(_k?zfEpH}2C7l!ak#T^0z{Z=mIvQPF~f6&)Zogylsbv5hHezo?;+<>m~L z@|bq{m*R)o-+a?OE%Bm!a1IvmIU!!{Zr400_P?v7M`Hez^s$rpA4#8zza)J${vqk( zHI@D~CPn&gC-4%w8UWMoF7E!&(U-MUFIrfYwz5?16@M$M49p4@{WdFPSo3#Tp^2x~ zet|CyUKfW(OXd7sFn67MQJN}8)7pMV7eFAziT;m#ybmG~SEmgR>mF`YgFKM9!iLPf z{=z^+ruYh5@fPk3s6s|cbdJ3w3rZE4I~L~>2IhNB33hdEt_~!%sN%4S@zi?))p|jwe6MEr~ zUiIh6a7|u`|D=EXDOV_E@yNK|R#(o1V+gkgXp<^{Npk?)Vfwh8sWQg0;t8|t(_(zv z<>t%YoYGA>4M~7IU;iQ6%s7IRMNh=t$J6*P5UOZ=frMDhM_f3pG;vyk1pys*o8 z@~W)~ty3#rwn|sC-}Kazck0F=uWs)Nft|(ORM?N|hgGOGVFi)gluAI10A&E|=bI$Y zz0YWC_S?#-mre9>m4DXetsFXj{LzcT!!4MHaWYfT;XDdryAC}Ooib9@#Qo5YnFL={ zBS}(C0++ciyg^3e&kdHdz4l8c`n^w4C)qxGXM9AyWypE@66E_f2xB*KqYAB{Z(!}s zPVa+?(iBMkjeZ*5kK}8m3nU+`vsWToroJn4%bFU>)Mnf&$-gnd91csJk|2ZMf#V|5 zU{N3;1AfL0nKGL>}uq_QY|xUHRZOMg5EzdzZ^Q5I?=c^GmRAtj*|3!DdWU z8a@iCE`mxi|B%~zmz_qiv2H}Zu>SdSgN84lLUXLqz78Tr+R|fXmgi3}r%ufS#@^$NP- z5?u~8jz6qrK-H$Vs8SHFq#rX^$oSU7I{vOGZii%~?E9nBq?;ip*tpc0oGt02+m${z z5f5BRTZ<=XHR`&$n~g3sY82&#^Nvr;SfR^*lqbtw>XeaiHFwtiz5r>nre%Qgc#fhQ zF5)KA5T%0QAc18;5hH2mI=wp6)zX@$)@&;(^3t3bkYSN=qbf(R=>%iaqgcqtt6+Es zqwyKi*|8HKr3?FLPKpn6t{+mVbN@M)Aw|~C@t?Ch-Y>HJ{c`h*efrm!!kB)PDb)n? zA=v4y_zKM809lEWKpKxACs9mDm?lK{2HuT6L_U@pSH68ISkvikH_Irp*cSi!y`_WZ zwF!O8i9LD<(ti3-8=a$wY)a=N5R9p^phkdgxoj@OU9W1Wb~jp8(YfAjBU*UaM!@it zekS>j#ahU86lCbLDY0SUolF(OErP zeWp0N`*)PEg&MmJFZmu%tL9i$h{3R|%iwq~OvW>IdAtTzjUJty)#NWFA1+A5+t-Y+ zw;BpfLu%!lLq7HD($jT3bj$M%(_o~73$&OyQ&V#nagz7s@pN)}(>+`3Cg0a{*0-j+ z&3nDC9b1a`$vhD1#1u0TZf;`SliXkWPO=!Q2(**DO=`#z+Ug{&!D{b#k^Ip0K6zR1qQzy|<)g0hax*ao{N#5hK6Ts`)|c3iJTf$eU3|O) zVd?*=Ekb@d)3W?+xn-nnVU-+z#iF{bq<3jp3s&%H-?CWN%)+b~M8Ni|!$WpqYyk*^ z`LKOBcW!>9TEo`zLK(4}<0nd?78^#wqj9i z4kJj5hgzZ=t^^r^*mDwmbB$(Q4?N6m$qBj&c)Pp>6H>-akWiVz$c2|F1P7)~r{w5r zE(VFao(z{lK<`n7lYTXUG)iww!_!|Z$@HNok`N^Q8W7OWC{Wna~R1+JPvQ_>1}9LOe%LJVBS?cUc*xdW_EYOKd$qz}kvn zE?*Wfyo=$PB+Krvc%7<6G@w{M*J=8MMs~bD$@8N@zJMLFnM#o&cQ2x`ph>oYdEo_7 z-P(MB_@vSOA>twW;Xy17tjG$( znH53tF+qpE(u60m5c=opy}0moDw-Ee$wa7Vc6wg=vc#V(=$Lf<^DF)2(mjsJcDgcS zI}i^TaJ+j_mVve5U_7)XcXN}PO&j|=g<0)tOp#U={wl z?I_e)_a-p3U{>_jT(zWu=}r^Z310P{^952u5QdMCI}Z>sp#Ak*4simC$byuUq*{&K z@d&jj?IYc}dimC%h3p#%@cH?OyrS(R_x|o_<4@QdWXV=IaKa*lc3QHjNNu9K0WCbw zbB@C49o++@h~LyXOI+SO%pHLeh6(lV?hf#5ep+3&cY_1;~~C3gN%sB z$W<-zQTLlOj+2KX8(&s!^g3=Dr!b^Rb?RSG=UP_AhVA1)eaz%eK~H3XlIg)h(WGl# zE{#oj=Kmncit|LYbdRIEE?dC(1*1T;obYbBkh-0lj^DhpW94DOtn^yc;s7O~Q& zb<6mvjedD9>if3lY~oSf+rpQsv-3&tNf(+drt0TbO9V}vu1cae5Bj(yeO{?@acbs% zFk{_W{%i{3!fYv1n6)fR2Ev*T?&;1&g%4G|;vClGnZgI%}It)w$z6Is(oA z0QbLzf1%%B7sU97c{>s!N{=pb!5Y(04O^lyzMA8ytRwP6Yinw%o~oDj<;<1p9pzS? zJslaEfKj`rGkXIUAb1H&+VI{)_)b%*M%E3AFY8tJ6Ud%kbT|!U52*wEok;T$wn^J5 zhpU-2srIagk`mz`PAhM%UU~P=NaJGoBtG1`){Uglnx_4nd&F1H=6ro=dBpv^blH@p z$eL$i!uBi%5SK)mw^m*Bm%== zNw`4OH|1c_COR*-2=d{5*AYd7sm+=@^+f-M6;J!`T!~NaJSh+!=6Oy%P1^_EQ!C)> zqMA99Qur2cR5+K|`kE6~@ug+zz~IEwP`PG;MN+4xX4$E=!a%^+yfSInKXGYWb$Y(C z((|tAhWmR{;Ql5|!EQ`#4*L@nzO3=ck&r4MNeKDDt4HDRmb3$ufd`}sRN%$jeI=88NeOP7z0ZFzPL zdEOfNk+(E(JCC%!g0ict_8vfd1?2=M@gH=KXDc3(m59!szl#QbL>MY zA-y~bExpRe42@n4&y5((J*w+jdb;Q9<;;W^`#U-=X((2wm@};p{D3jlADBP5+&p%H zh%M{rsOVUtsyCl}kLAo!@;vgJe-(3JN zfE%u_j(rg|eX0Nhe8kqY9Hl3sFTusw6B;BF(#T z2NLO4j7;-h)YOD6be_6%W7@Wgx3!n{uEVeSaJ}7&7<%jmfK;?UnkvaY)VIAM8V@iq*Ax9uHx#xtebxz@NXov3t>}HpQ*J;=(%l3wIGrbX9a? zI~4`?sG%ESplw_*a?uUY0&Sz;^|QdPZ8V6x%5vK*w7Oa$&`zAR+Ncq~$Vk3t0Av?g zjwAgIz7|bal8RrL75R#Mavq(wMesyiOR|5qC=v$I%KT(@lrlGZ_{xhD)*_>3)!SuQqjgWrDJWKu4Oo!eMaiIM_-@z!|)9Hz5sxGQr6sTFib(hXLnHPjEjd#9B=7HsK ziw0ov2nW(+Yu<>YnyzGxOlnR^6q@RnFpW~4XJ| z&0(lsNkyMeovJ`(MMY(dovpS!s*+pV_<>b}0#-ald^BVr~a!%`Bwf8DG;fD*`MEPdBvv{Ho_Y-hR(vpMsgW;$YWI$&F%(*BY_B3C zeG8@NR)kjh(EYh`)vD3(HtKvw+dD}}2L8GHoIlJWgI7=V}m$B zm38gUQJv>t@30F+0h5Or zn-YMkmg)>_9@3*J?Q-8Uxn&g@>YK$(K79t6gQ>FLgf;y_IlTlxT4o1ANh8H}hxj0( zP!PalQlxwTT-qblaWeEl#dDu7g+}vJO(G)(6vLGbwY#0tDXKgt*?24`4nerH{tC9( zFU!CQLE0hB3D6gooLLlfA|V=fAbV*xWZa}cKTo$>gtFkt$4auOTPJJYn(FsyT{I|F zN3bq=y7bXlE&bJU|F4@p7tOS&hAv~& z0k8cr{DdJzj`BtCWkKib}nCc#i~nre|co- zTd%lJ`obJ@cfLkLC?{klae$aNjUU>IA(_U1V>AQ`C&!eU4#Fd`73tgBhQWJA0t3Yk z@iL!3;PyJWS@a6+K7$>Y=V#^tefEbzF!0$43>Q;dppip@xM9_@wwn$P4nm2m7IjZF z^*lIAIO~!n?5#ozS{JS`LjscpfaM7opy5JPi)l?F9^VeHSG1wY4oXJJ(Hv9#O@_-A z_aE@Y4|jT5FlETIef;7tSE;z0UtTUF|$CN=`kU0mP!#(ELKi%hs`AQ+x~ zL+HZ(BX3iea`-PKM_C#iIntWwdHzvBN9V-~&xKU~ZQDA5QT;EuI?VnnAXSM4WVMge zz%}NM0bk|`8%^`r(zydQ7U1N)#;Zek^NnSHGn>pYYCiM+DSLBXeYR6MFE^SLz%+Lw zl*Rg|#@@VPAF6HF>ghzAD4~=@H%EJG1KTJUzhlpzB^oFPDem@iiIJR&A7+jOr@||~ zHc05J*SWfb{6n}fG=TQ<#HUmZX$#*E%%0sE6OFIyqQrl6_E)6f*Du7cs zwpEY2s{>ZJhBsUn{FCvmZ^-^h0gW$mv{~eTHNIh2zkG@TBO1`R;22#vs2vZ+BJ8ZO zwdd-TJ%uG!Xk+j3cQhw9RZF~B4D{7MnQ<*dwl(a=jzuUu2+?3{^#mAg)`VIO+QC4> z{xXGh91a?GqIe|OFlqng%i^eRj2O44jo0JNxk?H4M`Ldfc-bA1(Z z3a!=4;l#)Kp_Vs10!7+FC2z`>sy#D1XD_tp{)sp##@PZXtSowzvtgEctA)g*`WnAq zf^>m)*69HL=N-4ls7lClgB^%q*2A0Mj7hYdKamj?@L-($tK|B3> zlqN7>tB^U)d(anL{|nF$@+KaRe><-LO`Tr+(uw4gY_E8Hho_mn)#_PUS&e_c@%4ei zD{nVvaO+tMsXC>){j;q+Q<26xH)xlE=iov&B+tP*tnDsBjNncPg9s66Nr+Zq1`#6c z;#I5XA&?|fwo7-7qiX_>Jbh|5-tfEK+1oHKy6`-Lx7Nvn%u3vg9roq4?IPgzmPH*U z_21%no_i!YakKx)l46OB(4>T50CzZ=YaJV9r&s|zB(n@HREHH$lknlg%?U_%Rp!gR zPcF3w&FT9KTPDZcN#v}}_+VT1;x^f5wx<2($n5qvI<~lTtR_{b z7xJbg%c^MF-^{S=_i`oWa5+duL#Qm#C+bTInqIjHS`2ZSkAD%&FlUrF8rl}0naRm- z(SRw5UmT*E&y6*xECFsm_O3I&T=g@Rlkwj3<49GAG~ zeece8`oU+9j8TN4g>kP(f{(8kqZkO*sJmVwKBse|<6pI%n zz|}Yw$%XS=K^^>C<7Y7IP=_5#6&6@z#)~zx%ykAW}v%1rz6~Du^!q3A=y4TcXJ;)4 za{x4~7VJLlua_txBcd0)%JGbDWkvXKnwr0GoUN|T>3CyY%nF;jtLHb=a+HLq*T5rE z6}YIxNGiBSg$&s?b})UyQ`NTyoF+??r#jz!$~!fuM$S0Lx_564_ZV5?Vb{nzs*`_* zA;$*?+7;|(P%6g1&+%@~ye2LpYk8VhBVPluQZn5dV4U$!`p$QkQXqm$H|Bs#DTHZB z2m8JTM2wynX@Q}F0oUC*Ug_pE-$xIhoa^YiowpIxCcLVqY%3I`SupC=V^iNrqsqTF zbAKbhxKI-j9Rx1u(VrnvPs$5ZDE=j?N?w$ffty&I?Rg#bq$}^9++{m$Rm@Lcem1G? zJpCAKwEZ^$ME1XpLB19=+w&*p8Ci2WjcuUNDW9(8D{s!c#jHF102!0J>ATn<1mg!+ zCwvAZ(Hs0>ThfKoFyIJ=_NtQ-umdU4<=);qKNo+{wHJtQ7^%cC>XspfySznCi(SwV zV4C2I$@n-lBe{U4%7LN8d7L9|*yAJUg_NJsqns)EN)yRDp0uw{nJ(79&J^YkJ!!MK z|Kf@xiSxwP!`={$!+|Xt=tel8?m?7{RDQoCQC6{?2CJmmc)IfI-3#z6LcdaupriH{ ze0iL-ArNTM1mlKH_R*Zgv!L)=#pka*W^&#Y`{6XgVPO9 zvA*#k?|kg;8sW8b(c>U<*rE9 zt}|4Fc<6>7hBjjkqP_6L@kCT=@T<|EQ08Ttfp5|1n9+%GTlwtlb_YnMS!_ad$3*?c zWqJMYC~L@OV$(+qAI<{@$a*gtlIGws7(OjwQfgzGUJ zeruBEYd>9iEyW@nuP9}1kxP|9_1md#KL`q@-VRbBgZJqsIjIRY0{-5AdxO2B7z{HgaiTU322y*!X2)4_FikBUCvtf zx#zjh{oVBkHM5L4<|toz-}lSHIAJ)^;-J4HL;CUDHBw7#C|25)m!!9KKv;?atH z%(aEXN~F&062zA)cinHDY*4Sb6NnRd$=lMY*o%Hf(xW)i8^Ayk`soZIb_c9cP-Lq% z{65^#xTk={pv>1AklJG!x6^MyCPnC5RS(P6ODb7+TjScovYTj%jzM`4%Cu&%JfiT$ z=%^mo=WlnkDBTuk0?{>MM`w1`hMxJLX2vvyqH!xS_ViKp-7qBcFJPZxAJMZI_<<7C z;i?|SvG%kGE-GqWX}Fc)t$8Gi_xgZi`}<1gY!~9BL=L9q7-sS-{|c_h5GtMQi^a3K zl2kh3VIh2jXrn^+A#Y<8s;H%)Om=Fu;C*VEq_Bm&eqUyLsPaQWl_ij;+__4BEr&%4 z38D4qkH8>I*bB+EYQjBv^8r`td0=UE;gx}>N4997Z z2VeKVRwi_^M_anCDDBWg`Qt8`OtFM{pj%`c>zzpWtiZb z7ffGShiO~`#I&WbrvY0qB0dg-5;}lpAc8BUr`9zDDx5J-*h^RFHg*?<9XbxDaimT0EX`5HL;5UJ zvw4*=R^sv7zrLzZZomEYqPAnXo&CwCs`EBVsrrw_tM7H)AMuOezjOu09*UU+;2Dw` zA|bmHPUBhureRyqN-VybsiQm+&Q(4+fXacY2#vkmMtSv#1nb3TO$`kX&6W4R6^ol< z(H1?bn1!E;Y%j;doT!rwn1a%gw=yJf18dH3-( zo?Vsq&7`DE-t)3KA^bryKNMb*_A?3l98opgwGx9BXksR-*+Bk5&i+K#C%pw3Zl%jO zi|PU7WW{Cs?ef=F1Ep8>L5f3Sta%TnMGyoMl)$Y+n~#KiUI(PNqmV!GwWg<$u`2Uu z?NE+?MNQpq{q!$qcS8bX`N?whoo%ZK;4M?NLOu)a)Kq1Bz>`cd;af01U)yq_1)LR* zrb9NpnC|ui>1OBP&=iiob)US*wjRWfd7MxI; zD@c5;gkd?ZLJ0BzVNu@p@;uL3ovP+&-mIXTpU&|TQYFQb**MR5TEMDY-isw{Zjkeuu$1ulkUYNib!h7j>?+vq;2_oB9W{ynXkk`3q4} z%t=@AWrgGVaM%{i6>}KV(hVnhF|`FD4nUPdUBvu{CB2207gS#8l$8b+7zbbFZQNfr z%{h9$Wt{7NGAB~>STKrm1w5!M+Wcn>VCNn%Fc!;;JSVo*L*c|1Kh9MT%E*<0sK(g) z1fj=Lw$g3eOcu}Hxb5h>LXm$YN!LkA_m^`_rFUFC~7I`aB z_Hod`f(wXBrHEr+zjUMX+FHMz*D*XHe21wUTjfvVhEqU(K6EdX40iE1**Gd8eO`$9 zx(u=ZyU+pm`2=6j{L%1m)+SQ&uCF)rrbDJf?T&Lz+_W&&24=b{JqP1f4yJa?TgFb{ zo9IoM-ly?6PO-C%$i(G+C=Ha0lsP}dgOr(?dq?EW({D4p`!OQ*RNW0$-w8D^AOkSh zO(B53>tNsAO?75`a$qLwg`)Xy4rpH`7|DHqEE=5U<6hhO?%0GDU-^?Bsbjpj+d^!h zxi4uPWR;E;NHvns7s?R)86nG#o*_+Ssl$oPZcUU=UNYYox}QnkW2`D%+cSTYSFnX; z@6H`{r1B0t4#U_}0~+5AsgN*4i6v$t9>@F!E>KWeo3fB(r_e=z7ClK5=cNc8-Wg zU+rkr=fmMniH7GUSwtMVqwwQ0k} zf~bZ88I&*NvPgeoVJX_cee$hq6Y?n4RAFVm$;&>$YR&6`8=OODo(-$Vvj3dB*D);( zxA842Ks=x`VWfPj_BFv?7anZ`eO@{#v}fGT9^+hn14qxg;w3Yw>EzGd@-F;%&uVHL z$EorWA;z8#@Q#@25BefQc%dN5OOi(U8x1ClXjEkzO7b)At=-<-h$9qZ@p{aY>+#=@ zP2BK4BXkms#7pqWa!m#LbNFPj5JxlXe0I&@*VH3GP1jZ(cgd#nZk|UPE}|mX>w=i9 z(s)&)dYrJ?r>=b+93SS``+hLd_!huz&ym-cbjVUu5-kWpv|;j;ayALbJ`@n(eD>Pv zDh)M}I6fwYz5T9E*IPt3+IqD`i@EvFe#h4K(KrxO<&oIQXCY$rJd9&`93OitmM>ub zD1yVifp-4-bmDs#KTGa)NwJ&N7v5b<-M!sHntzvtCV19Rdqy9k8ug|;viWER@7>--~e=qu(x2+-Byq`CT% zsDvNGKZ7d8L{rY=dw&L1cI>&flPifn7<&Kaf2GfjUzk0#wsuP`eVqh?yTx_S8{K&a zUpy^i7-4^aZisBh1EG|5Eblm46AA{|$+N>AP;z^8sD9H)epu_FyStpQzDJ%5lo+-e zY}>7r+zdJY6IH(W4NC9QgKb~Drh|31Tptiwbdi{%V!V%EPD*16aVp)ic zI{sw|w9wHZnK#{%OuYM^WhNf_bHQS_{(Hhp#mIh)O1WEEx!-qto7qBh^R%jhwP5Td z!?rmpdne;3sHTP*0=$0ki}ns(I)H{%@$$2M^H|fk#P)vt5fcULpYgsR9j;!R z>iNE`AP|t1?e?)1Lz+CfdiZkq!3)+YKNYI}_VrT~Z)eOFEcq+F3BFh~ikYkAD+jNT zRTl-x0`PiCxY#i$#e_)LSQDqpda2~V{_1b92M?`g6tU7ynz*Jkh zcvobT5Fufg^;iekO7>~pB$SnL+vd!U*}X4HOmjZNrQfpaEG%Fpv}qgJhys97p|y-J z+3YLL3TPt|qLm$33%Zv}nogE=yS}LD=!=|uFluAR+1WbmpP|$`?g&yC_c!i{-KD^t zu`vwb|G+1oZNa$Ut_W^mjbwMSZ=b{N)9aMmH}7z~fd|J(L~<>rTG^o2@9loYDiRs@ zgtPc=(oIt)(%Kuipg6dDPso_VafqF03Tr9FAp+z~2b)e$-ItAzDsG?Ps|zSNfO827 zx_|k^PO=unkTZO!b%Bb4@gH+RQ{n_M@mk0syo_ z!UgT@VCQX-bb^Gv$vd=bpl|{{>LyKx^r5*=v(Q>=b)ZGT4HTPbf?#O&am*&Fz} zojcmqWvGS=*eboH*VI#eq?LA%^WZKeprRP3B3m^@QE}ZqXpJ&k`z|T5TJMP>W7c;S zoWh~UrX=?>?bx=?IEraez0Noa?)xs}2x%;v7weYEs;)&+nC)UMben)TR1Q|JXLQK$ zep)KH&>$$O;$@_@Dq8e%&S9KvMcGR)hkI_p;^9^6aUn7RRg;>@t|SzZH7#nEga`Io zjb@KOlCM5>YDwjSQquU%C;>I$IE!f+(Nz29aH=Dt9V3vz*e6B600uT@NRtcGY9Mq6 zc!%Y4hc&6Ut&Ix!!P9i9v%ADHZoa=^Q5%}WAK|uR8Z&Ck*r!Ke2a*})<2`UHFMo_vLw#ezpwEK!*N8pmqBw0MO%>HXoVY|S0Nx5^ z06>Wm+~^?4pDDh{ne6!nzVAoyanw#|w!;S5ky>6n*AQ1-hV(*1M^fEoTx-)6l@cS8 z1K|G7euzVW3950QRzVN)>M}ZZ=U+6%HW_UN&7;FbGaG zDYAd`m0S9Zh7p4e+$1!C<__&8YfqvU*GZz66IvK2pt%>NDb1p4JBM0rUtFIIm2gH$ z_*8KRUP4(|;Ixi5o6_rQ5Ti^C)&_D{D>jO+3jik)a8fN`3d;hnMxoI%C8h z=*oJ@8ty(zm57>hcCyQnJRb7yr+16T3WSWqD`s1YL7c`tgTZGzNv^LC>*|z5XWCdV zH-EZ7Nt8Z&^m0?-fk(8edu>j#51)l?kcu`Zh_=Eg2&NB5dC(x6ZvDf8r%oJeugth^q(rM@bS@AL?PoS0_ z##?`;>E!jwlzwkUW+0kMrDc<^$B&8R$~Q12js_uHOw)g4kAxAs7NbB+6YL^c?9gkn z&D4}`DeJ>~oABszne>UxHDd)213tTA15sXcr+WKd>3jLDwlAq`jD1t!#fSo>AA^vw zkOTC5tP3UzC)6es%g36l><=G3eBCekP$I$T{?~Zkw~k&*%!}@_w45 zb`Mi8mSn*WN%h5I-4dYVUF~vVw+oi^%0u45cQd&Alpk_eJaxCpqdY4?*rpgT$EjRj z?i1C&q*T#baZa&8du<8Rq6EOx`0BJc5c9;~76>b0Xm?*SwF_jjzxxb@2tYO8H*!Cp zl-hx=ty4Ly^FG99=9GZFj=;B1Oz)9RTo#+<6p;Q7Wv2O()@cXj+Ow<67k$Y&T9DP0 zso=RDBC84_D(*?;>DUkNS|_H(;w__3pErN=#xO7JN>M=tp#Mf-knUTsE0}0NXy{uy zor_0@ki!`nK?M8(cRv^Wc~XPTn3huNw~CfMPMMCWDk9@ID{1ehrk}FEH-&^HmTnPO za1xX@$hSBEPa#1m%^LN?hc!G2da=TTBA;q<$H*~3M#(;uIH~Qi6^Dd_H!PU=6TV{* zF$e$~o&;EX9EuV_Z_pH=Inhfsm1qiNX)MbRDWv(A02S?MR_)8m19|OcV|IFu&JWkj zIG2y!XbfEfx>N3Mu)k-_|CTuiKg*b=T!ET_CH6{xwI}gfjY3CRK`r8pZ3$;By%=}qJOa7 zGF^U6^+W$U)t~Ajy|_GH?bgac`CR)An=xE%Wz~3Fw)ECup`_8sz(zBkgpt9Y>kGwz za0bDKj%;foOU^}+!aY*pG{KO*QFX-H|ELE+V1@WVy zm`Z!@ZvKk}hxAf~b-4aG?(e*?WVi0|rNvP53syl)?R`<{Dgfaz?ui5DJwSLAuRi;U z@Cc7Tlw$@E9``Tl?0WnNw)f;4nj+*{iZ&!aEN>UOuZ(pbl<`-IpecV4i)p*?^0-S% zsHM@Yxpw`#_7ca~2lihzd1;COYZCBon8@DFkNAl-$!H7Vcl`xx!lh`aB_+OAC_LtT z%~HNoUv~BOwBHBswvK`P6^R_rf_2Bu=0-WcWjk_A(Z+0@&L+0sXMCXofV8#^{@p^= zqi)B%bHJjqsVo6t*>gT59?xY$ekp_`-K)liVkp}+_A*2lqOr%sg~mD zE$K_mJvJtP34M`z>?gK<2Nt!0+W`Qxa*)fo5pb@`eE4%CJ2&%d*q%Az{1RECcFD-3 zpWr)}h#gY4y1HR-#18|5PiBHlb0F0O!c6%uX^@%Q@Eq!{laE|XcSBaKxJ&7ndo*FC zg<8-0PyT_+Wzn=^>Gp$mlbjq+nYy!Uf$CjCs}Ls``gsU0O(1#)QOPJE{v;Gep2LNt z<%47!*t@HXHDT@1z+<&#$#i$-ac zw^(A;7~B=Vljb$3$p#e(#W@@SQj`Hz?Yo^SDoJtSz0HZw&wSi7wEtv_`|_dYS$E!x zD_4%}c);G1JyJgTp@J%jX{i7pq}K#^44f~Atc)d<$|7aF)SZ1c{lllNSA~qi4e4NN(3u_bV>@?YcQv z(#4*r2KIMaU)~OkOPZQc7nTI#tB`Z{5(=y}tt|i&!Oz&Ay~JK)hj9!p2w7sF5@!Pg zR=xs%)#Wvu5>1aqUm)L_N&xgMr1BQ*OhnscNTYAzLd96$@m_y{hI2!PGH2Ucz8Huk ziOI)3eUiNTfc**M2qXle(WLX`kfhKeQ3(-;Iix8Pz%*4`^&&v8f>D`lReZjP&wHYAIS`27RAW}zJfJO+}aqwzXC;l#DA9S(Y05qQ^ z071x$uW|P->}Bz!l$x(!7(hz6%19xj#~OBCZgEoUMtu|-&7mle^_EUk^%%XHCqAOS z^J}O~;^SP%M{Brft6dtO8%MffMpqJ5t23Sms2%AHxlVR)CiZ=a0nhvpB*&v1ROyd^ z`5i%RgY%vgBeUOc5+(DVyoR_7Te~)>zm!5PJ`!bPdBj zgu)RAtAUimgb0+JLsKND;Pk?qJj>k8=Ni(Yl&nPzN*(4Ug~M?~^(K^X97~2pbXZad zSnt9k9`zjMjlG97gO#UZCkZGBIA96b$r5Y@CIW0Dr$5t#o-f>%i$kIf)EQzx z@}wpxpaiuv!u2%NRe`4=_Kq3L?v1-J4)%Rue4SCj)BJ7hVEWBXX?+cz%NPx z56%$cA~O*jl7VHXJsI*00Jt0CliiEI`SGEReQ!OpHP~nBelYG?ZiH@)ZrtVfaY=g< zP2Y=VFj#+pQS*!D5gSxUPNOsoH!%~1*cKRvn@GSj)*uAyt}X_6NhVH)ch}e4)gEnK z5qZekFmq87cWL{!X-t*hUGf^CkH$|RPXVTKIC+W~d0$f$eTh^(AxxSth?R4yBLydB z_~`aqUQ1o;u79;!`zX2R{?6l*km+I}=^|y4UWb{CQ$Pn)(JR!w2^n&cmNpZGIc^U; zY{KTVj@n9kiPs~wFHsHO+NA_Mj~cohs>dO$(CYwUNv3cdJ7e!%V79T*i<%G8EXb~H zcwV$-%|}^4{r7&3nCQmjZ&Vg$?G?$wDe2o0%?d@YCr(paT7*twT4XVkkA!M@mJ-4F z5g&cB!!Xqj;RJXX{6N`BBU7#bQ@ik~q(PalwQI}<#M<2T@0KWsV?QzI?Q1zPM5{2OOsqS4zQtg=)FXAp)vLuU;{k3`OR;aDbH&Go{1 z#_P|X!8f7GW$8&^uSmm_%;8}ZM@e#FfR1Pb@q*<+dGn1%ex}PXU+;2;rAE z%?MRKuWJ0E(aTHe;!d7pveU9Jqg*aoCVoB_S1n7FS`h*kElJNb3j1@fn=Fq69&&K} zt4aM3LFl4s#HSULEXtB^p`f%^X?MJM?TN%@ANBXASn;qr1{*MoLQkVj!1q!R)xdn# z6kKTD(O=3qh@Vfhsf3~_%j3)3pz=iy#~zt{mNQjpeyfkh9(^!@Y1)EwRvDl0AVv)y zc^l(HHY*@BTq3K4@pMe^^>Yf!)MUJ+smUyEekf$Zp`>%Xxmv^Z*Nbydmn}@rY;QuD zfnaS5l@HT`Uac+vrbjz?fU#$qtVRK=W#|}s8$C~5tqfx8dxPD#s1##w({V}fP9r?JWA zvi45zQT6jI{_^4YI)p;x%lO z_^ES#>=Dt{aWDU@_WQOwA*a;61Xt&&C*~uDL?4Gen2O% z+|E?BTY_Ti@t_ZNu=3sY5exCC=X$Ge`)Vev_+D#&r!-er4H~mQBv8b`^X9bZi{%~=OSrhPWcix0Di@{db z*}$|EbhvTyB;=X*caZ zA4tWu#N5p0EX5)V;ggXed+6n2^wK8ZtGST*F_Ew~Zoarh|FqPk`Odcv2n2uJa2l)k z@tMY}6=N?jPRCB-x0ScQSd?Be$z88= z)E;NUa_4sSa(AK+nZ2NQ;onT62e*;rXxtMZQ!cSI2YQ+ZVx<~;3UT=stLgMFD)k)* zQ2w;{>L;3M;p>63xO+ua(o$kK&wgbWzBA!h$+C~m1~ywaphvO77t#j@Qg&p!nj0N2w%i$;*hlZ!fWxe=Y!%6I^t9DmQgtmo+0l(jGrvwVFj%vX=i^K zpgg39!(GR<2`gQIsN=vy?u>h?<5&Rk;oCAYeQXbzTO{#11xdM!b;~1VosS6fUTA?) z{r&+cCIu=kfw~QV1hV9Kx%n3o2=}YT##ax1l0X#RzYl=z^N#WAxq%e-J1hxgc_uNe zcu&5LA7vSNb1!Rp$H(7?o+_QXkm}<224m4_#YJ_gfGEhC03ypx& z)U@{EpFw|rW4Zkw&$s!L1-`7h@f={z#AmZK1A7mM8z@q(@Sa&}kwl4b8S_sACZUvm zAM5=xGryn@-kWrfkxzV;yB_u3l#d3DJhSG;+B>+;>9SZM(q63w=$fr@9|?& z*rXLYrsXPG1t|HEc9FW4W)<>jfPXTTj_4s|#n0|Y8vJuE}87>;BRY<>YPcq0Mq=8Zh1oki) zAHm%Niw(hLGaFC3W!gawOsNv&xXRkA8ady;HxNsoDD@nUNvO=r<(a_yZ^|Ssk9xTe z_|Il{Yy`@E{y|LwgYB#GzMoZ(u7eamlENya_Y(L-VVx64CeoE-lL7%u995r5`Uw-? zA(kuPbUecEoa3+Y6#NxHtpf2BbtIAXU&d3;{$xV_hCp|`jQs_HKJl*+=uTDKe*RuK zrK@{_JVt#Gy$d+0;_=r!mapb7rQ|Kn(eNk;p1SfJl&bg>bPYiB{x>0#gO<*}K(qf_ zWrf4Gq)3V$3EzUksS(%P>9SP2`eBBW-JFWe`0K&`lbOZtL(IQm?(DVC-DzG&*XrXm zZGIg8cL>)1@c(+DUlN5j^f2B268JB{9{+!tD75$;sbzSPPdN@m-uJS{(X{_1spVbK z&sX%PaQc4zIeWB6Ek~a-P!9d}4olw}YWmD`^WS@+q@#s z%KW1trW5xH#19qMRqi#=v0oHApn22{zX#3lTkbiGa2{ClD}NVZ;3amA`_#2KEq8H0 z;R^@3U9P~yhIf$q2w62`sZL8QN5~Nz9Zb8i34YS(sb8jDVY>NVYq?AVwkavjig*Pr z{|AsOsm}&_I3f$}p*uC&@^mG?H zk4Z*TR$N*3c*6YV;_J~@w>o8uXS2q6z{;*O;9u4OSW8T1zY*5{-FkCy+bq1MZ?Wqs zV+3Di72C`m@O` zR5kb?5aXvh>YVG9lN#9%LdC`;c*IIg+_lYN<4@ne*vu?1&u9r)l3(;F%1^?i-u^^S z8&UGe;tA0-E5~1O+nHW86+&bE`ZX6YFYZ=5;R_xRQGZ*7Ee%Td4RaSCE~ z#8;u%LdzfJJocv{>JD`T6sSN6u=()`IbU!;vHAN(ZE&NyKe73TEGz_IyAE@cYJVCm zU%qW>#QkEhl-87%R$u#Ru!LJ&cmuNxw-n{beW>d3(N=b)agA1cHqW4-PXlCJisg;~ z&_c>j+VsC<$N%~NHzg2Jpq3~R5xd+hgw|}J%0Ba~K^qWtw8R|v;_h5!ITKomXn1ge z%~JfT*qtywgPMJu#ZoeypX(~^@jv{&TOmbNA0Fhwcl$H2lP~`yh0!0+(hN%T>_PK- zKK-Vg4Q9T-%KMq0GvCG_4-g8){lqiBq`F))5bG!Pfcm8%RFc}j7Uuqw>wXLU;V0K! zJU87Ma1^bsS&v7#xQHbgqbzF{I=V*8KQXVM8tL5K{>VC|xyH3VBCRQHev{q}2FXqS zT|X5{Kq{b?x*NPDOsf`vQlS22Du7E{O+=nt1@uXzP%qs!H6nqOr!sl>_x@_9@%PR4+kf<7AgZ&+DI@~*CapxEE5V#`eHwLZ*( z&WLP`Q(WOdtY{Ah7&Qw2o{I4wHnM-P%Kz)Qzc#o3oIm;h!{+uo*44k=0KqZ;vq*x8 zJaWW~HMgwoe{}d(fr8VY^UC&uwb%nuBL`|NS`iyTeFm@#Eck<1?RckS+J!_D$3fJT zdMFzozn@Se(SRwV<|^ggN=ho%%`PYtvAQ9rxsv~O+F-~Z!>)tx-SD&bzY5Y)S-;Z$ z{+n(2tG#Iz8S+`Rpj~diX9Ff24WGpGI0UFtM2})izNyAPMg^+}Yj&V08TE%{XdB51 zkFD-AT-HRtwG!wxI&98D%AXK%HH!_8EejW?dR=HquT=gQm`&yKq`D44$6wVGFn6%~ zmB!_a!;z&(WLeYcpPPJZ(TmR~U|i3D;?qh8;`=#<1ZL7d60_lMUmvZQbZKt&g-n|I z$>51bhOKB;3Nc%K`Rf*}QSOy{1*ks>I0da#vK4(lJPHp967US03;%Q-JFI!(1RN5; zyvHx>Uj#7&UQFU2JXLS7$UlL>B(%m}q6Z?YZ=4x=pysmUKixu)CWqzvZ$;Gqc2muY z!+n5sl(um=QztOtUmQqkrde#k&Y2SZ8B78GTd>rWV8a5yT$uFUf}PlG4}#NnBfj4D z<(h&2^O2bU{`5bNX9BFk-7Z?&U(fpQhs0m+^{+Afe|Nq*L)jo7%h@b7+VRxQVJ}&t z%@=#EZbEdZth#X2q>dq1+2-kg!(qBXIMGt6+Yeu@yL^hbZpBd2ew{ZW05ldlb52h>xK+h_$Ztz({#$S&2+XR3q*(hzA$bOhp+ z2oUbkzVfpa$WPqMAB)orLoLK?jsO+HP~M9Gt2RZbt(~JIM)0`WTbW($k$0P|GxwYM zIwpN#f<4(sE)Vr*9EX6afTJ~}Lso0oR3@`^4f&=ukQRT{6@b_Lqin{vNm50My?gai zwOtZ&V>~}+e3@czGu>|KPCbPm>K!HFSH~$KnIzN6Y?>6JZh;RV)@fpYyKDlmqGz3( z_9p+dqVE$y@z`I~1#14t>S|sZSq{`SQc#Rz!9Dhz-)i+G2MhMBcEB6{@B(d#_}jiP z@Ye$U*8=_1&iQLI`fD@#1DlZ@`=1eO>H6HP3e8U$r)x+|mdA?@=Gv$B6?rrWD9gVM zU{!2;VRXDxwIW{P`i^jk?X`a{B3qmIY@ZR%%AFGJKE5&Xt?@^YZ0Wfo!;mGlvZege zxnTTcUGU?-ufD3izpTD0zb@+kwE9Z_B3v|otjzEqgo|$fmvGTzZz*k*XbDR3c&I88&kCgE@f@u|ll$S7H9t9v_Ni$%*FIaA z+YOlXIKN}87mPJ{{TKzsUFAW_WSv;PDS|nGC8@PxY1KLZe98Kdyo*g3(y1-j!DIjm=)YfW-a-vzM|UJ_L=K4pNbjV=7EJVy z-Z!D}(uxp`4L&1uIl&c_BkZ9im^^Rl`sW5FK!}jzTd?O6WHoTFCh)DtQ1fqXeiVF7 zBb%{9ZdF4ydQIqG90~uY$Jl&mLI&M7#kl&{KD8VYKcQvOr8b{jL|O{`Wr zhu%&efeZ8;0M^wYY{8m4Zh_brnXW?jLCuA-vufB*CM zr{AnL`|G5i{rJDz5tsN<%W5em9}QTNVv%-$Z}hV4W{Epyb$=wCeC7bqfO>)Hs|1A- zf#eV$oFFj>pB=%hjAG(^K%Hq|5A4+hfnLp?Em+7X4WP#EWt(lmvYi3=8_77?f8mV4 z3QcS?l17!IQ&Hp`24}D~BRGvguY-nlbYQozq~v*_wMFdu61Fn|GWfy1K|xR{_$hm? zgWEoUNbrBUx9WssvsP+doL*rZwlf1XBp6Ryjbv=Vr)(xfwqOq~(ycaz)z0w13382F zuq@Clyu>dpY+hjmYHz{N+2kT0vt50V(ef5-HU+-k{mTRX?qHA1gWGN~IH}l;X?FT5 z2DI?^hZg9-K>e?Kzg-PH-QN!_?EmY=|Ij)ApY3XQjMsej+AJ7Q2$~yX{4;zO1pkj< zp+O9nrm!BVttHtb&Q|;)k4~p)g zR3~;Hx-#0S#T?2CjCjU?&GJL12_bt?J91>K^z!nx*AY~+%CMe@56sF94_zWA4rQ?W za~3@sY&?DXoX~NTd4|=7eR(U6BB}E_!R2>d&`)nH!t`Y`v@qnd!&8)^moFiI0_K3d zJ5TKE^A)&xYirV*+s#a_NnQCqOu z(iB6S-Cb0r{KIXg%Y8?6cj;@beWsqib!yZC+jC<&O=k$N(dYBKn-8Wo4CTlSdWz={ zx^7EIY1^T`US>LJ+QE;Fnh+tUB&ZqX;T&uP<@v;QBleca%(h)|%KUVo`_u=;=rt_R z1Y4>o3~6&XL@JL$R@=inRK1?P=ynW#u5+Wi4B;a3cIenP&cN#`hIA z6-AXl(>*?LuH@8_dSVlmVhEKNp>NSM)g_4ZYbcgpP#*6s!hnAF=CJbqNU;)k(VOq1 z&tj<_V{8u_3%6izbusIGYfsq{sJeJYP}>$PI2vA!1WQj7eEmzAWi)Ia`}aR{emiE` z?I~OFZ-4%E%KtGvW`Vu?<#_M@Yd2uty*D2!XKulS_rMo`Ad)I<{sqA2NcD!CwB_G| zMPb+oS%-2f7@w1LWg?GW*pXs?&u88rvv*G~ugGstdM~}xzDgEW^SufANf5xwiKf@JW+C^Uv~&wa}Vztp;6~>*s=jr zuRHQc7|1kGW}lW|Mt2a?Vl_Fx-IgtUTGO0Kc=ssDDN)YY-yHDn`Z4Fx`a;vRo!_VOEJ&zDED28-&;978xq}pu zz}il-*H68Do}(nGMbwD-L6JiL+r|0Y#qy#%)0cAIC0!gE+88OOO!R$PLVEJpG%qjo z)QwdS2OnO?#zVzjS*p-oLc;x4Kta;gU}~WZZ|=^?mrYv06prPEoz8y0M)rI)ZZ9$- zd(F&$y4l|JOHWs`Qtf9YEE7~j)%pw=5d^0GA4|&inw>_LmDXI(f&!WK8GbBU_a2>J z7Io{mJyb_xf5Q+buh7J867H$11QQXJH3^j5O&@cIK$h4zo^&g}){=Ktr-bi+^AO@k zb4MZuCK2olstI>|r2<4MjW3?57)W2V(W%cX-?Xo3zs7O-!Lw~l&v;K?ntqq9T>7Fs zeWr2amBe(B4N4(8C3!^F6Fp`_P4ev1{V^H^>WTSxOzfiP(oW}(^?Bw5uwRPR+SUJw z@4H7@Nu^Mg!HuJ)l`8M@;J(L_S@vqjZkV=VMn$_UG0aUo#J)oTF>lta(b}XZ=}jDS z4NgUyyIQsPTV8Q>d8L=C#d}6nO8S0A!bCX+U?LYk6JEn@Uy^rMpio4-z#OI2RVc9;IFIBUJva2@Xg?tu z!J)@u#O<~FQ2muxxc6^vr;Fw~<*jb4A=ctwD^>crJn2WO`GHyj*x6wGxu!@0Y6(f^ z?;4Vsr1q3bogqK$ip_3Q-t4R(%v9~~Y&d6=KReJdz<{DyJVK{fp2C?VtzNH8VUP%`osZq7{zvAY)rKNCp`YVq-EslGh*sG~o-wsW86XZ88ig|1~?x^yY=`Do2!OQmi1-|oqIS*(Jo(ras6;c~nE zb%F`>-*Cj$c)WfyQucs%e%Imi?#xT$d}SuvAM6e&nz8FHm)aN+!}sD%)h6b6J$u#} z!CNqg)XM&n zD@9K*EP@Al}4BeQ%VohjLEC=7`}jaNcOll zKBjv=u}4Bkv8V%ZU5@BJ_2H_p@b#2iIEPijzb`B9m&za^BZN{jKKo!e`>A+EjfWjN2i! z#Y>C@ds~;%35G0cam5i=yZQCRNU9dKb#d)?bIyuWC(H3u0-I#h!W|C*u0CN7yO4uX zjmZDq@Bc$JiRb_M^9o>;zSR|4@31Q7L(uMB1@4p?(*;B}rVi18iE=ndFZA(kY8X@+ ztLz4(UZbozpc@Eyd{7W@{||7}>~<(UgK3-ykZc z*JEpta_6haWf_E_K`&|Xv7to!65D9yq48=JGk(!5Q=8RsJxT>A^INLt5Mv2k6A5$s zqxO!*k$@o4TbMdCU~GR@a@4my!%>))f8UAL*dFGes+pTAo~5j3;d?c-L}5?<$rM?W zZ`Y9R$teO!Cou9Iw+7P`lMRPWCX5${pN;CJa>P0Zo*XV7DDS&CgS4W=lRG1cr@zyU z(fs~p?tcEmesvyebG17KHJKj`=_E})#eGt!dP}&xOSHRN1mD7r)3zjAb<&JRZ!pu2yK{y)ug82C*&B@AH^LAHu-~!W zbc!Yd@}znPBwr>imAx)>2;i~lfBv%aGr*l+&NookIJhLHyVvMEHE%-nhW^=u`unah z!S!jU27Qr^Z*J?%yxz&(&@of7=H91eLQ zzZ=UM`BT*|a#7tP`8jV5T@sVL(lvwI_V%qtjfV866$oR4E-!Z0%P^wQFvZyH2UZ;+ z(oiqCb$|kv_In{+49-sI=*01=&^0>*YmUA3_{rLp#V?J`PnM?B8dsxqZ#I(GtZ*rp zQZA5rXrbBj*blF8-1O2phNSJLq7MOF7qKEGU7 zeSP0cCm$c-sYG6jhaV#>&E9FjhL2=d`rqv=&c|y+lzRK-w?5#N7%rbt4Hb(MyS9dI zcUVjuNg3M+H{z5}|9-n57fLW4&ToqEWPG3)YdRu*UYb;%tbV%P@kZ{_l|5=EYEoS*bC`anrB(}>U2zRDz9JnlLDIVx3ZE;T6c1C6nI&a%&Kyp zlv`Yw9GTEXav2%oGE_Ftk7erA0VPHuT8%oWNljDptbO4tXo%MvSeBEM6|SkNiOWxS zf1)RF>=$YJr`rwGVaLb5jv`mElUT8|x57TdazC(B#cQ7*YcfNq=QMTOXE|R=AHA06 zt&nQof*n5?0dF#q7jSFx?KCklwi|4c%v<1_$S!nnuT`;$PjXULF@IBj@^PXcHubBs ziX4+WuK-^JLST+#0cV+t3xCx-EHmBkGRoE;_dKRYK{c_3d8X?FCf2gX_=iMlCniE& zG7pl_i81c~z91-Jdap{)({+0ri}Rx@j%XO~HG?-_lRWt^g0MjB7HlPZ)>c!3?2tB@ z$%Ztw8LXy@8rK~cZ+u;E6d*Fz!gK4@K85#13V~v5`Guoe`B0b{*4F+k|Kmm1Rj;Xt zOMW#e&)@EU({1_X+m};n_NHf#Nj)4*$MO1D&eB9)Zo&GjF{Y#(#{SEg*%E94WM&Yl z7HGF zo5F?$QkA7#H7XHHOGJ0E%&GVj){pORJ2P)k=1S0uZ;~Tp+dj=t92zV?DX4rpcKdWm zeqH>nn#)SMmxp^}izPYrUh%8Tmx@LfAHP|8sP52+imTJaaFEmpj{3#lNZ0Op9h|@w z$++FKi3z`%bpVPX2=UD|A8D!_N>@Yd8#D4O?he|SDpk;A^txx`?V~f1ep|45s|Wfs z(E+z>L}pE7Uf`CFerl}5dcNlIqA)E z?;9^fiU$6zw9hJlOq zz>RgEcv{<^{6^52i-;v%kmK?=e2^a9EN+lL>Y<68jrhTDa8k7kq8=Gu z4O@9xXHd{J7S+cU`>J$#Wgx%#HBYv7BfAmqbDSD(8IaQ1nq#ag2Y)Q>Xt%*cSHCE) zZd}kX?7Y6=&s`HOHm*tPSulG**3GYGQzSllnMhIZ1gZ^KbVW$hE zz<@`K-SkwU(@^9R`27&Ye$9gcCJT1t-7j!{k6jeSNJb-xDNmm#B{Iv9r8z&S8M5^HucEkha9k2Nk*lvlygWav@1NxF73~702HA?ecYR*2 zkoKc^a;RNjyvp=0CNZ-EXTUGuO#blE^SRHrP9BqGe8M>0_9HRJmP<9&+fZfcQ(s?j zgYT-l4`KxKeF#N`@Ka|7VDN>bAQctIIO!2RrJ*R)rW_YYpq>^>CuC0Tih5XSI%|am zxvjYp{5l!iSq#A$Ix#|DorobR^TssaLH!$D4=!()x?P1f zX5{xVu)%3C&mI4}HwytvhGYCis*k zRV=+9lwAg)CV@J}97ssUDI-{H-(`gOeibNw5OBKm_^}=EfBiThRq|g~SNiQSKK|py zgh=tWTQDDxp3|*9_7pfZke-GYt7*ZWKN{U36RZIv$q9&ude(Ax1j zV0f|OseQo3P7KFW&`m0rNoC1J9%TGn{*0PW#O3h3CZ_F@b`c8aW@mOB348Lys!DOE zdDorY24#ph7+y4-EMe6=@Vzmnug?8Nvhl9*@Qx>O2U7Pc>`i1zl-J#U?p;zrI_^pC zGqKe8;nl(E(mkrx(~{Qti`BzMaCrT^+wD84o-YC@c8!egR>ju4!VnZby~kui@JTbBi%mxKJt51jf|#@&9ZVjvqZg4 z{bQcfzOk9_bC|?fST0^8XCh$Eb*cHXtaS|!Ly z-L`Mes6o9#c~P?lZ+Y~ad54-D=e~^}M;0_M)nQt@y1C(%K|p}is*SEGw>w~=wE+`Z zE#t*JYLpqGFPmnTG|_!k#I0=nJyOiXO!}@?EGJLw_)AdV;rJSHC@iqZZ9*xdJ#_YL zeckZX@I$3I71QX6|BJErifXEj-hHuQK|tvpkt$W`0)mQ^h)8b<0TC%7hDZ+(K3MJF#R!L2&JBp8HvA#x@Vm~?0+>gF9mZ zsF@U=T;y_e8qir%1e%)xtUQAW_ehSY&k)RR_VPB*-(JdSb>Mg2u=QbI@xnCO?hQFR zUF6yHODmZtjh}*N!Cw2g3s+>i{n=e8uxP6%518Butcy9^EJG;F$Qe(>Ewd}OSqCq< z0eJJYgYmL=I!!}`c>AK4kRC*zC9Q~1HM{(_c|yxG%mBxL_{PH-`DA^1Y=WJWlV|m_ zVylPDfUBWRe_v@mj@JK`wk1Q0L<}OK9*dO^mTRhs+4+s&&OC3Dj)Rv#ypq)IAAcN7 z?#1rlHOr)x*WLz2^KoK_2!_e+KpsE8ekuK4+jarwJ2w&nx8V1J*&i>P>M_1X_DlBw zq*TEGP{kP)<+%UeOnfJQKC{Ui@^1zW+$u-!>De!VuN--k`vOStrzE~|oQ%@lfDF)I za%7B=q?0Dk&)Thfmr9c^e{RQld>L>!<2VK&IINyi{D@T( zBu1*8UDm~iU$)}VK$^~sPOK+5ntel}l4G4sWm)ANz9N&Mz?1U_+W(8y%B?GpOhw&( z-uuRIsn3`4;|zK(KGMuuMvkE{$1!aJ2H{M5}$TW#(lPwE;sha^t!@_36Eh`yBH$q^q?Jb-n`Smf5h6qTq{4%mYOnNNIoYm)&a z+7RK2WH>Vfzf*8gP%`=Xqptxy5dE-{LFKMo8&x8 zuv`b1c2OZz)57uqCZQK*v3>UffWj05*ecv);}A7O}!Lc3x|=acyI*fvw_*eqn~wCkxs&y{T?hP+f0bPWL2v|H$_u zOI^Z6otONnh`eM@@(M?l{F4QNaoI_eZDlT?Ub;+w?C6exlc8W8`gt;qAV>;O~=XBb+2@BoU4W zdThGKY5C#VA?txLiH={*xI^VbO;V1yd4g<6@Dz&4#{&Ki^Rm;{B-X*lf0K+qMYggX z`>5+=J|*|Tf)-|^m!6Tle|VKyBc#ua#_o@O*8@L(zZ|(yCbJvD{ub3BsBL8y)!oUE z7DM5J+M?&$=J4FVeP*waTtlc*l!E*stsIMNZdL!OuwYR86@qosr!^7X50_ql4>reT zwouoELUQ;Bpq~1T0)Q7>de8^bMy}Fk&m_A!RjCQ8LRVtB-jHz7rc4iMtr#EU11dDiLqZGku+(MXU;+X zv5-3aezz+UEoWa$3kBuWbu3SZEkrABDXPwYGwoiwpw)lf+3kfAu2j&HaiD2V=xa6% zer|8Q^7A>jM9!CxVVphhVXXFjMAUDKWY}E#>Bi1XBbKmZCRY4R%TpV}+DQ$&1n0zI z_}PFn5Wl+cRU&L{3Lb<3&KM1L3WGus1&PSQ*zjvTRh-kM(4s*#ts-)zPK4p`Zuy~< z`aibt)p3Um&Zk0575O251VctG)CI2tLtM&XP+yeUc$vO=88|vNnQ)4YZP0o*i#XOC zImC=eE1*Q^Up|klv-?YZ0U87L zHB>u(=>JOq{y*}J|8E(`|KDS!jr}oBi%-NCyA08o*6K!0p7Gm>dJy&GVL@`*)sBm*j3Y{ZDMDqkboGWx$) z2jm$>y*0}U(T=QnF3KSIA@9TWYvCNHhfo{Y*y(pWe;;}YsJ!$XOM|JNK%5$(Ud0x2 zB>4<7q*3+W~ikpR6 zZvHo0lM3c9LPhM37%l$LK*q7=OTj<$^#0fOE+z^&1)Kmj{|T4=aD53%G|Y&y|*3aDA&_BSS)(gxyb8F3B1Sv zqDEw;31H-$zYO8uu7tPAf_Qy!6}1HZ)t-2>cz?2+`x!L_@9^&|>qU*aa858@CSL8? z{1e))SETs3LhFAe&{9r))ZtcD8w>lZpU8-Qrkz-((p%rKH+LvK<-;p3rx35EFS&WE z7hUVvqgI)tFyXQmj1M+7I>voZFC9t%C#!$Y#X%>6pm2VKoM{V@szZoCiUutCgZ*`f zhfp$w39pjojICl#n0nq>#GzKFzdpXCtD(e(4#MYk@yX=q5#!Tx$>ti7axN+@DO+_W z{ql&skqqG^OQPENK7IQo3$o8+p{-vzTaASEV^n$mT&})G+lP4jm#=${5Bz8HTR<@* zy*3d;rWV0S^^2-QMy`K8?6S_@iX&EJ?IoLZrhh#-F2So%pD@cyUwfbHy4F9DVAdkH zl03Rv`P3d<#3%*BkV=(g#R(gKy0Hd`psbpsW`mBj6042(5+`Rar-PFyCzUM-8hPzH zK`}Rb<)sX9oO_2k(@0aJYE@}Yfzc8_18-4=ZSSfJ5T+0bmPFT(d@>ht!wuk_QQ<17 z{%5Zg{L1pGrN~|tO|QVcI?gUBHMJs6ec;f}@W0u#nSXs7=CMM#yFOD&$49`Ofxujx zA@O*-V2Lr>kG)+=PScj55LG~azj-QBbdg?ag_j2{>s$qEa;AK|(JiE!_jY>TYYKf) zaPCXYInpIgM4f~ABfJvsA~Meu2VTNd#!o%H>%+i>_0b%&<_?#2ByM@sU2%0+El6Ix zf8yXE(IGt604rMc(0P<6+{bHd3_~SF>u>&}7LCCHQd$W1wk8z(=nvT|e*;)B7louR zMmPbRqV002)DM+NP0Qa_>Sy2#)`sIyXpzRi{V~ zQV2awtqT(JaqLmP1@O+7@U6SO5n6VK;pp*VgBwTC+Y^zC%>t;;W>Dir<#J!~;uBQC zwVkP^Q_nikCfq>Y?;7j8275)?;>32^yv7abAB%J_rQhBYHUeW(sGS}3SGXvF3m-^& z6$FdZ)3p)9>ke-1KkcF2x_|L)$DT|rC2#tii_A(o2Vv(dDP2klN4#-`G5j@KGYMi3 z&z^F0Wq8EyTayD{e(Qfd-hytyW3w$Lx1z^PH_C7UERKUM4#l%2X*Dd_~~pVlp@YLs2t$-JODH^3;P_g zQ-G}-b=0eA;|AzCPq&xKcCb8J&iMBuG{y39M}ZTo<92x^yw^l!GUatXWC}atC$SCR zA3RNsCTj2mj!}d#^`rU3frx_ukO7=|ox(P>;|jN7!DTqdOuy1KR;!QErkzfcxKDgq zVbL*HXB&ll@S`htAn)JiQZZ7;|NBfg+^%E;=n~_6zd=sOysFz>Q%g-En8rdX^(QAj z)grRQ;ab^x0PNi^Y^x#V0yf=WVW*w3nmjaTlV;sBv2)@8H_*G#*Fs1jpNwg|&j}CY zCt08F#s_lEy4dhGjI51Fu4H$kRx|v4_Is4$+M|vfO{Gf-(){<{MIXxC+2E7Hkkc13 z!7_S7JI#V_*QO?9DrERn36ELr&%}c76})5Ue7chE9cJyMFaV4$a0Z-BKq|)J75zu+ z|6tm6=;PcLf=G^k!H5@}ENZ0Xi^|#BcY~1PHP~`E$rZYJqtet1vWAO9`TZN}{Qb_? z{RFAo+FBe7%l5PNVEd!N(Suf6gpMhtt=f^qm$OJWWjL*VPvyOFqxd(E)?S*mLPXz( zGpP0GTT+AcS(HMs0{~GSa*V`LRYvc*9X5?1XI)L2_(Tq;r^1`jSP(t>dCMq z{#6$kREz12TKpvJtsTA|Tq2zwyBkBZQbkLPq(*5j1;tSKs4;>fKS=O!PePxGWk}nE zthGVVB74T-&r4#Ej`lypuX}#Jxx;iFS%a%fyf1 zal#*MIQp@iT9O*+PFd(v{wJU0;RN=sRyOXoBR*OxrPg803w-O$s43ZW^c@JQTBh2G zPP#VPln)S!`>otbOUE!~CL!*!*9v3y@teg%p&CyVaiLV5gjrgveg$Y}+B{>bNik(> z+i?UNw;og|R+*>5>w@xPsSsX`087ik9JBU`gJAKseB_UCah>2`6h zmMX9m&Nm8CE^rrKdvd6>m!YQBOh&5~aTr`0Hq*6k@=#oy`wWhq>|^{&@*S#yYlgpy zeaCNP&G@tOqsKXG>PjIgC|b?vD27|_o`QepH|;kJxAWXI)G}+ja6{|hyRp`wxUf~K^-18a+>ls>;8H|~#6T!8@KcFYR!e`P7m6CPg&x-J88@6(N=m** zv(vtN>+^@p4UZR_d%NZ^tJT!mBiOuCgJEiB6L_(c^Ig*eR_wyGq3Hd0D7^#o&G>ak zh7#;g0UOoC*cXkDXF!>LV~ZoK6=q|7>R_+R-j<9sW=`3zRNyjz7h8>a|6WS0^7A6K zY~zEjQf?si>$t{4N?c~|4OxN+E_LQ4As@Nif!oy*_h02-ek99u{SBaEX)$N}NikBR ziu^-fML(+-an+Lh!@lfA<+fNXfv65{s_*oOo?01$|G^1O1F0Ze^W%v{aN~i6T&nCX zhH@OAnZ$`z3+~mCi^S^gEeauHB1QwkN*pT+Uu`1xZl>|^L%t6kYPz`)^OAjpyX(%_ zlUGIha=~qW-;!=k7E{uZ*2XBRxCZ42s0jC(W5fPdv>u0r_VNeUz`Ou*>Q^VVuzt z3%y2@%Jc0uSBb(k&L=rC6n$u*^EU-JO#k(x08c*!C#Pd8N<@G)eESMX)sV`8jIbst zX8y>zW9@uY1LoHB#FkXw%}QSuh%UYrxKYdW^vXz01!zg*cV+#6L4Zv^A)88WI_hj9yHPRKjXWw0 zIUjIh;hk@!F`QC6(s84U%)A-p49S2S7t6sqkyq~p`*sX`vc&|fb;`t11gW|)z8ojo z=rm~?-sgZy$-hb(PB(q%p2slj?F0DJgudq{=`JZM*iPoOsZjFrr#HA-qboCh_Y4>` zTfviE8|c6FJ*jHE{3w|x){^7A#$(@=6-BH)G9ga<*5K8zgiLUajc&5`wS-|-CR68h zqgR8_);gENuD?(E*#4(qd+^egd#6mPj8pPyEwID6T}moW`+?c&1bp+9QsL)7-H%%h zdIa*mmDh7Mm@aD~jE=$S@c@x9m!1amr_cIq&Th|5UqJWL-?$+Mj@{34PI#w>13wIM@jp+(e^UWO9TyA!m`Gqj`C(xM;e9rO$EAB{7CKeQFYJDW*0S=|)e8Qzwm zUO`sdTd-b95eUdV%y6sWid4ww{3{7V2~~X;1LHW+3+l(((FYxcke5)KY!qJHsH7K+ zZB94I8U7-y?B-i{CrtT{~?t|SGFxPf8lpCx*%^?2Mm`}G+uF`^1Q3Q>!zd`VaGawi5TxYJM zAazIMzr9U=SKMzHb<+FKZCRaN-^jVy>c~ibiqY5XJeBlwY@sc(yT2L3JDT{rnk5(j zBjKjfZ#BPqxcPaCws!Hnl{u>0%@V05v?d17651ierfoz-d|`EUO&b{*INgymrGf~a zgu8t2_Z#nYiE)}%@cej3KR_K2-2yDwvi_4& zjAD#|S1#j%dkBE)c!`+a@%nHp)C{sALkJ)kY<#;$c{94o+;pCGOHZ@ghW;-*H(opP-DyWOzMbFrI9@dYsjVffvNu7nFgEu{P z;{iOS3r4|d;123+PmRhSxTXVUrh-?R4Zf4@yE693P(bsTRN|IkO@uiJkU{r}rKak4 zhuEdbO7UNLOds7Q@zgUeucomu;{j+I*~UOY^zxRRo{eGKanS z6~6jHlH0k&(ljQO~K={UP-R)DuZ74ogA%`Pn=!JSC-=ImTYeU zH!M_M7c8t-Tyd=$T?_?l2J7@Kci;DjjeR^HJ5N;GG`^@)XuU?>Ura{Ck6I#37ItEw zWrAHr=(IX#^M$n(McqYR5>u&|X|j9$z2L&6wS|d}-Eg3GP99lLXXG5_0KK&DMWyHl zFAf+bJ^%YW5nl8s_J{5zoJrTcLj~#oXx`pzwyGePnNRGV!@NY}(H{9Oc*7=(k?&z4 z$j@)Dez?;uGA^oYpE$_CBYFoB_R>olUft=L0?p1wBPhY|4l8O z%-3_oPIzqVd|_jFL_VZ;-InnjRzBOe`1M?-7}Dy9!8DHuCvmLBO*wp(xG9h-`jnd- z>B0Q~I6E3NpND5iAi2-|vPc30p~jK9-*mBr_Z2I3XRo~7#lBEoN>x)YoI6*p{dz+` zz!liVW+PWKVM-upzG|7kWWw(#T*RVy`?9v1?+`j9g;P@8cy8RPsriO|)@KxP#5=N$ zd(gc|ULxIhNvje9e%|}xd#}e%M=#6c^}Zv_C$_xr>8{`JI=We| z?$q@c8MVwwAzjDV5h!iytizOh>lBd@`*HM)agT{m-<@c)QTA=7X>q;P_BEGo`KDJ6 z9M=WCAB9lvJNgH^hq;jP9zGEL9-vDeNedIOljjQKUHoeLYdDSgg(`jOuB-&3ph2$& zN2oMWd}U0a$Ohg#WWLYBaOhy0;n)z}vS)9*-5cZorS1Wwao+W5$1mB){f}mmk4vbw zq51q&KH7_n^D9d^9P1P(s=ObJ+Fm}j7j8jSrr!bx<*KHe8%X&$^=eAiQ`mkfq%HhM zGdZD2RM;tVE7-J=9g)UxgEF}R?8Y+}aaZ?aq69HI+FBR?Bss?>uhgkN|J1#iL)5Rl zOwL=_4M!@Jy5Js;N~%c|_T}Qc70w+OK{sE$BdA7xx`i{f11tWyJl}9N1k2y`Z86O3 zWucw%L*uyJ*G!qwv6UpPe8Mum=h%Ct+Dx|5IL77HDFLi#6EIR&QB?NNmT1^yr7lD@ ziH}pupgu-TB2SQWJ&7j?*jv=gI2HB_DT({glZ?L6ea{2^&EnaaM&Jw|+eQ8Xz4882 z^qAC+ynh&`xwbj!isWsQP<7H^x1@uOk~z0^Vp2J4$`?2F`xhCWj4X&+;HYZ_CbgQR zm~xR^{%_Nh-C%U-E?Q40s?M)R5cXqeBFuWZSb>W44pkSs$U^cnBolY$03>5;YxIQ7 zVwU}x!uIHWaY-2D4du;=@9d8TQ4gmpfB-?|cpT&80_kp?4~NjS0IL^&K%H=}_s*%5 zeeY53KBX%^KNAQIuuVZtoStNVTHGazF@((T#^}$V9Pl$)+W=dl=jK3ox%JaG%}#ob z8SiPXbaNVfdGsp$P07B6aBk2q5RM;8xj|BFfkR3!a@qh8xfkz3{^EjnJg$|K5(RXJ z0hjpK>6x`@*Uc5~WzEr$+1^ox$1xWg251s{6l@{F0$YPiI%>b6nJWnwGLoaOaDN3& z@^i~rLUNvQIBPJRUqO+fniELLt0Nj+Hspb+W%#C2nLh0aYpj2zzrj|9iUO~~?%w9{Np^C;nXj{obd>N> zLH@?Lx^@h-(%_1`2Y|Juy_1DI&oM5?{o9te^_%ef-|EhLLMP<2NsU9 zpylf-feFwfz4iIj2a|0QeIJIJN$9}%F&pj|H@yo)7dq_TV7is2H^zTTb zsF%K?creafxZ%wBBG37x`mql_lYNb91W>(Rdd_l@c0i`wBk#Af1COII#pe)bELVI= zfDbcd@ycqL?vTBOVVO`g!`_Fr$I5~S12@#(^zHYH<$ZbU=3dEFTG_b%TxKRg{{4Ki zg;BDPYj=V7&W9ygvT+2)?WII=St}&y=VWbR;23ZqE|3MmZajh%EJk>=&)unfQ(HBH zd`fzYmt(|>Ho|Lr&K7mqv<*3}CdC9~b*t^p!1d(qrJx%dHaAF)$+={aVF^Md%d2rz z;n$3tBGSJc<-`|d+3!{h@q{hOf&;siX4#0>L*FBn7WHk;%!zy`zP!9?aI3u3fe0LrPJUYMkr<-f-tbZe~gx@1T(2VZx)o@_++os=4Iav$?BnM-_L3UhZ^r7fM*2jlGm_7aQi!QP z7Br%5xQT%w3!6XaM=b(5Ncw#j2R?=aJk|WtO9tUmKaxe=K76?J{N}Iu-ATqa4SMtp zt<3F>*@wjK@sKCWxu;!5&z_w7_{90UUHj>bSBk3OsK3NgsQdiKSI(le@#u>!VgCdD zbtgjq#3n4*IL2mk;*^q>ea5R49;nellIT*uPZiXMqqAIAJlV2)Z142F&zUSK*7|tV z)I64-~W;Y`0UH40;0s?w;c9BZs5iQTUpVDk%3#$hIeA`s&K&ydf-~S%Ov*~ z05?qNvc+{8l4-NjnW{`%B{w;wosWA=p~=32JEm^XvDqXybN$1B$I6zhU{fr%i;(I) z)exm(dnNGB05M{rr6Tdk?+vclWP_j*8_7W6%&hgR{b}8@WX!81MRuXEpWU6%$8Vr} zXXq7w>7+T(0fBP;>xyt+-tg|u`aXfQr-ItvaGsqlEcoA*(*G{_7>lX0(Y0yZ8bxz8 zitXr79u7A#{$JG^`hOR80slvlmLaWcg1$UC&m23Ea!yN>i9M*~LBzE4J+7wyPDh2x+@B^OL%bZKCxMXaNRcU#XS-7P5F=0bo7bjHA>v5A

xn|8M^Wu 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 B6uAHZ literal 0 HcmV?d00001 diff --git a/docs/GetStarted.md b/docs/GetStarted.md index 5239c1aa5e..9f1affe592 100644 --- a/docs/GetStarted.md +++ b/docs/GetStarted.md @@ -1,14 +1,16 @@ -**Getting Started with NNI** +**Get Started with NNI** === ## **Installation** * __Dependencies__ python >= 3.5 + git + wget python pip should also be correctly installed. You could use "which pip" or "pip -V" to check in Linux. - * Note: For now, we don't support virtual environment. + * Note: we don't support virtual environment in current releases. * __Install NNI through pip__ diff --git a/docs/WriteYourTrial.md b/docs/WriteYourTrial.md index 82dfe3b1d1..18388aa9fd 100644 --- a/docs/WriteYourTrial.md +++ b/docs/WriteYourTrial.md @@ -1,9 +1,14 @@ -**Write a Trial which can Run on NNI** +**Write a Trial Run on NNI** === -There would be only a few changes on your existing trial(model) code to make the code runnable on NNI. We provide two approaches for you to modify your code: `Python annotation` and `NNI APIs for trial` -## NNI APIs -We also support NNI APIs for trial code. By using this approach, you should first prepare a search space file. An example is shown below: +A **Trial** in NNI is an individual attempt at applying a set of parameters on a model. + +To define a NNI trial, you need to firstly define the set of parameters and then update the model. NNI provide two approaches for you to define a trial: `NNI API` and `NNI Python annotation`. + +## NNI API +>Step 1 - Prepare a SearchSpace parameters file. + +An example is shown below: ``` { "dropout_rate":{"_type":"uniform","_value":[0.1,0.5]}, @@ -12,32 +17,71 @@ We also support NNI APIs for trial code. By using this approach, you should firs "learning_rate":{"_type":"uniform","_value":[0.0001, 0.1]} } ``` -You can refer to [here](SearchSpaceSpec.md) for the tutorial of search space. +Refer to [SearchSpaceSpec.md](SearchSpaceSpec.md) to learn more about search space. -Then, include `import nni` in your trial code to use NNI APIs. Using the line: -``` -RECEIVED_PARAMS = nni.get_parameters() -``` -to get hyper-parameters' values assigned by tuner. `RECEIVED_PARAMS` is an object, for example: -``` -{"conv_size": 2, "hidden_size": 124, "learning_rate": 0.0307, "dropout_rate": 0.2029} -``` +>Step 2 - Update model codes +~~~~ +2.1 Declare NNI API + Include `import nni` in your trial code to use NNI APIs. + +2.2 Get predefined parameters + Use the following code snippet: + + RECEIVED_PARAMS = nni.get_parameters() + + to get hyper-parameters' values assigned by tuner. `RECEIVED_PARAMS` is an object, for example: + + {"conv_size": 2, "hidden_size": 124, "learning_rate": 0.0307, "dropout_rate": 0.2029} + +2.3 Report NNI results + Use the API: -On the other hand, you can use the API: `nni.report_intermediate_result(accuracy)` to send `accuracy` to assessor. And use `nni.report_final_result(accuracy)` to send `accuracy` to tuner. Here `accuracy` could be any python data type, but **NOTE that if you use built-in tuner/assessor, `accuracy` should be a numerical variable(e.g. float, int)**. + `nni.report_intermediate_result(accuracy)` + + to send `accuracy` to assessor. + + Use the API: -The assessor will decide which trial should early stop based on the history performance of trial(intermediate result of one trial). -The tuner will generate next parameters/architecture based on the explore history(final result of all trials). + `nni.report_final_result(accuracy)` + + to send `accuracy` to tuner. +~~~~ + +**NOTE**: +~~~~ +accuracy - The `accuracy` could be any python object, but if you use NNI built-in tuner/assessor, `accuracy` should be a numerical variable (e.g. float, int). +assessor - The assessor will decide which trial should early stop based on the history performance of trial (intermediate result of one trial). +tuner - The tuner will generate next parameters/architecture based on the explore history (final result of all trials). +~~~~ + +>Step 3 - Enable NNI API + +To enable NNI API mode, you need to set useAnnotation to *false* and provide the path of SearchSpace file (you just defined in step 1): -In the yaml configure file, you need two lines to enable NNI APIs: ``` useAnnotation: false searchSpacePath: /path/to/your/search_space.json ``` -You can refer to [here](../examples/trials/README.md) for more information about how to write trial code using NNI APIs. +You can refer to [here](ExperimentConfig.md) for more information about how to set up experiment configurations. + +(../examples/trials/README.md) for more information about how to write trial code using NNI APIs. + +## NNI Python Annotation +An alternative to write a trial is to use NNI's syntax for python. Simple as any annotation, NNI annotation is working like comments in your codes. You don't have to make structure or any other big changes to your existing codes. With a few lines of NNI annotation, you will be able to: +* annotate the variables you want to tune +* specify in which range you want to tune the variables +* annotate which variable you want to report as intermediate result to `assessor` +* annotate which variable you want to report as the final result (e.g. model accuracy) to `tuner`. + +Again, take MNIST as an example, it only requires 2 steps to write a trial with NNI Annotation. + +>Step 1 - Update codes with annotations + +Please refer the following tensorflow code snippet for NNI Annotation, the highlighted 4 lines are annotations that help you to: (1) tune batch\_size and (2) dropout\_rate, (3) report test\_acc every 100 steps, and (4) at last report test\_acc as final result. + +>What noteworthy is: as these new added codes are annotations, it does not actually change your previous codes logic, you can still run your code as usual in environments without NNI installed. -## NNI Annotation -We designed a new syntax for users to annotate the variables they want to tune and in what range they want to tune the variables. Also, they can annotate which variable they want to report as intermediate result to `assessor`, and which variable to report as the final result (e.g. model accuracy) to `tuner`. A really appealing feature of our NNI annotation is that it exists as comments in your code, which means you can run your code as before without NNI. Let's look at an example, below is a piece of tensorflow code: ```diff with tf.Session() as sess: sess.run(tf.global_variables_initializer()) @@ -64,14 +108,16 @@ with tf.Session() as sess: + """@nni.report_final_result(test_acc)""" ``` -Let's say you want to tune batch\_size and dropout\_rate, and report test\_acc every 100 steps, at last report test\_acc as final result. With our NNI annotation, your code would look like below: +>NOTE +>>`@nni.variable` will take effect on its following line +>> +>>`@nni.report_intermediate_result`/`@nni.report_final_result` will send the data to assessor/tuner at that line. +>> +>>Please refer to [Annotation README](../tools/annotation/README.md) for more information about annotation syntax and its usage. -Simply adding four lines would make your code runnable on NNI. You can still run your code independently. `@nni.variable` works on its next line assignment, and `@nni.report_intermediate_result`/`@nni.report_final_result` would send the data to assessor/tuner at that line. Please refer to [here](../tools/annotation/README.md) for more annotation syntax and more powerful usage. In the yaml configure file, you need one line to enable NNI annotation: +>Step 2 - Enable NNI Annotation +In the yaml configure file, you need to set *useAnnotation* to true to enable NNI annotation: ``` useAnnotation: true ``` - -For users to correctly leverage NNI annotation, we briefly introduce how NNI annotation works here: NNI precompiles users' trial code to find all the annotations each of which is one line with `"""@nni` at the head of the line. Then NNI replaces each annotation with a corresponding NNI API at the location where the annotation is. - -**Note that: in your trial code, you can use either one of NNI APIs and NNI annotation, but not both of them simultaneously.** \ No newline at end of file diff --git a/examples/trials/mnist/config.yml b/examples/trials/mnist/config.yml index 331afab2b9..abb5a48db6 100644 --- a/examples/trials/mnist/config.yml +++ b/examples/trials/mnist/config.yml @@ -2,7 +2,7 @@ authorName: default experimentName: example_mnist trialConcurrency: 1 maxExecDuration: 1h -maxTrialNum: 1 +maxTrialNum: 100 #choice: local, remote trainingServicePlatform: local searchSpacePath: ~/nni/examples/trials/mnist/search_space.json From cdee9c36909bb5e980fc560de8a088062f93b92a Mon Sep 17 00:00:00 2001 From: SparkSnail Date: Wed, 19 Sep 2018 18:19:59 +0800 Subject: [PATCH 7/7] Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic --- tools/nnicmd/config_schema.py | 4 ++-- tools/nnicmd/launcher.py | 34 ++++++++++++++++++++++++++------- tools/nnicmd/launcher_utils.py | 3 ++- tools/nnicmd/nnictl.py | 6 ++++-- tools/nnicmd/nnictl_utils.py | 35 ++++++++++++++++++++++++---------- tools/nnicmd/rest_utils.py | 12 +++++++++--- tools/nnicmd/updater.py | 9 +++++---- tools/nnicmd/webui_utils.py | 8 +++++--- 8 files changed, 79 insertions(+), 32 deletions(-) diff --git a/tools/nnicmd/config_schema.py b/tools/nnicmd/config_schema.py index 8cd8431151..57b9fd14e8 100644 --- a/tools/nnicmd/config_schema.py +++ b/tools/nnicmd/config_schema.py @@ -41,8 +41,8 @@ 'codeDir': os.path.exists, 'classFileName': str, 'className': str, - 'classArgs': { - 'optimize_mode': Or('maximize', 'minimize'), + Optional('classArgs'): { + Optional('optimize_mode'): Or('maximize', 'minimize'), Optional('speed'): int }, Optional('gpuNum'): And(int, lambda x: 0 <= x <= 99999), diff --git a/tools/nnicmd/launcher.py b/tools/nnicmd/launcher.py index b99a428b1d..a0b382b1ec 100644 --- a/tools/nnicmd/launcher.py +++ b/tools/nnicmd/launcher.py @@ -28,10 +28,10 @@ from nni_annotation import * import random from .launcher_utils import validate_all_content -from .rest_utils import rest_put, rest_post, check_rest_server, check_rest_server_quick +from .rest_utils import rest_put, rest_post, check_rest_server, check_rest_server_quick, check_response from .url_utils import cluster_metadata_url, experiment_url from .config_utils import Config -from .common_utils import get_yml_content, get_json_content, print_error, print_normal +from .common_utils import get_yml_content, get_json_content, print_error, print_normal, detect_process from .constants import EXPERIMENT_SUCCESS_INFO, STDOUT_FULL_PATH, STDERR_FULL_PATH, LOG_DIR, REST_PORT, ERROR_INFO, NORMAL_INFO from .webui_utils import start_web_ui, check_web_ui @@ -40,7 +40,8 @@ def start_rest_server(port, platform, mode, experiment_id=None): print_normal('Checking experiment...') nni_config = Config() rest_port = nni_config.get_config('restServerPort') - if rest_port and check_rest_server_quick(rest_port): + running, _ = check_rest_server_quick(rest_port) + if rest_port and running: print_error('There is an experiment running, please stop it first...') print_normal('You can use \'nnictl stop\' command to stop an experiment!') exit(0) @@ -66,7 +67,12 @@ def set_trial_config(experiment_config, port): value_dict['gpuNum'] = experiment_config['trial']['gpuNum'] request_data['trial_config'] = value_dict response = rest_put(cluster_metadata_url(port), json.dumps(request_data), 20) - return True if response.status_code == 200 else False + if check_response(response): + return True + else: + with open(STDERR_FULL_PATH, 'a+') as fout: + fout.write(json.dumps(json.loads(response.text), indent=4, sort_keys=True, separators=(',', ':'))) + return False def set_local_config(experiment_config, port): '''set local configuration''' @@ -79,9 +85,11 @@ def set_remote_config(experiment_config, port): request_data['machine_list'] = experiment_config['machineList'] response = rest_put(cluster_metadata_url(port), json.dumps(request_data), 20) err_message = '' - if not response or not response.status_code == 200: + if not response or not check_response(response): if response is not None: err_message = response.text + with open(STDERR_FULL_PATH, 'a+') as fout: + fout.write(json.dumps(json.loads(err_message), indent=4, sort_keys=True, separators=(',', ':'))) return False, err_message #set trial_config @@ -117,11 +125,22 @@ def set_experiment(experiment_config, mode, port): {'key': 'trial_config', 'value': value_dict}) response = rest_post(experiment_url(port), json.dumps(request_data), 20) - return response if response.status_code == 200 else None + if check_response(response): + return response + else: + with open(STDERR_FULL_PATH, 'a+') as fout: + fout.write(json.dumps(json.loads(response.text), indent=4, sort_keys=True, separators=(',', ':'))) + return None def launch_experiment(args, experiment_config, mode, webuiport, experiment_id=None): '''follow steps to start rest server and start experiment''' nni_config = Config() + #Check if there is an experiment running + origin_rest_pid = nni_config.get_config('restServerPid') + if origin_rest_pid and detect_process(origin_rest_pid): + print_error('There is an experiment running, please stop it first...') + print_normal('You can use \'nnictl stop\' command to stop an experiment!') + exit(0) # start rest server rest_process = start_rest_server(REST_PORT, experiment_config['trainingServicePlatform'], mode, experiment_id) nni_config.set_config('restServerPid', rest_process.pid) @@ -144,7 +163,8 @@ def launch_experiment(args, experiment_config, mode, webuiport, experiment_id=No # check rest server print_normal('Checking restful server...') - if check_rest_server(REST_PORT): + running, _ = check_rest_server(REST_PORT) + if running: print_normal('Restful server start success!') else: print_error('Restful server start failed!') diff --git a/tools/nnicmd/launcher_utils.py b/tools/nnicmd/launcher_utils.py index dc97910244..d9eb7347b8 100644 --- a/tools/nnicmd/launcher_utils.py +++ b/tools/nnicmd/launcher_utils.py @@ -99,7 +99,8 @@ def parse_tuner_content(experiment_config): if experiment_config['tuner'].get('builtinTunerName') and experiment_config['tuner'].get('classArgs'): experiment_config['tuner']['className'] = tuner_class_name_dict.get(experiment_config['tuner']['builtinTunerName']) - experiment_config['tuner']['classArgs']['algorithm_name'] = tuner_algorithm_name_dict.get(experiment_config['tuner']['builtinTunerName']) + if tuner_algorithm_name_dict.get(experiment_config['tuner']['builtinTunerName']): + experiment_config['tuner']['classArgs']['algorithm_name'] = tuner_algorithm_name_dict.get(experiment_config['tuner']['builtinTunerName']) elif experiment_config['tuner'].get('codeDir') and experiment_config['tuner'].get('classFileName') and experiment_config['tuner'].get('className'): if not os.path.exists(os.path.join(experiment_config['tuner']['codeDir'], experiment_config['tuner']['classFileName'])): raise ValueError('Tuner file directory is not valid!') diff --git a/tools/nnicmd/nnictl.py b/tools/nnicmd/nnictl.py index 73b2950a55..9762ca82c6 100644 --- a/tools/nnicmd/nnictl.py +++ b/tools/nnicmd/nnictl.py @@ -25,11 +25,11 @@ from .nnictl_utils import * def nni_help_info(*args): - print('please run "nnictl --help" to see nnictl guidance') + print('please run "nnictl {positional argument} --help" to see nnictl guidance') def parse_args(): '''Definite the arguments users need to follow and input''' - parser = argparse.ArgumentParser(prog='nni ctl', description='use nni control') + parser = argparse.ArgumentParser(prog='nnictl', description='use nnictl command to control nni experiments') parser.set_defaults(func=nni_help_info) # create subparsers for args with sub values @@ -95,6 +95,8 @@ def parse_args(): parser_experiment_subparsers = parser_experiment.add_subparsers() parser_experiment_show = parser_experiment_subparsers.add_parser('show', help='show the information of experiment') parser_experiment_show.set_defaults(func=list_experiment) + parser_experiment_status = parser_experiment_subparsers.add_parser('status', help='show the status of experiment') + parser_experiment_status.set_defaults(func=experiment_status) #parse config command parser_config = subparsers.add_parser('config', help='get config information') diff --git a/tools/nnicmd/nnictl_utils.py b/tools/nnicmd/nnictl_utils.py index 80c778bc2f..7305df0980 100644 --- a/tools/nnicmd/nnictl_utils.py +++ b/tools/nnicmd/nnictl_utils.py @@ -23,7 +23,7 @@ import json import datetime from subprocess import call, check_output -from .rest_utils import rest_get, rest_delete, check_rest_server_quick +from .rest_utils import rest_get, rest_delete, check_rest_server_quick, check_response from .config_utils import Config from .url_utils import trial_jobs_url, experiment_url, trial_job_id_url from .constants import STDERR_FULL_PATH, STDOUT_FULL_PATH @@ -47,7 +47,8 @@ def check_rest(args): '''check if restful server is running''' nni_config = Config() rest_port = nni_config.get_config('restServerPort') - if check_rest_server_quick(rest_port): + running, _ = check_rest_server_quick(rest_port) + if not running: print_normal('Restful server is running...') else: print_normal('Restful server is not running...') @@ -62,9 +63,10 @@ def stop_experiment(args): print_normal('Experiment is not running...') stop_web_ui() return - if check_rest_server_quick(rest_port): + running, _ = check_rest_server_quick(rest_port) + if running: response = rest_delete(experiment_url(rest_port), 20) - if not response or response.status_code != 200: + if not response or not check_response(response): print_error('Stop experiment failed!') #sleep to wait rest handler done time.sleep(3) @@ -82,9 +84,10 @@ def trial_ls(args): if not detect_process(rest_pid): print_error('Experiment is not running...') return - if check_rest_server_quick(rest_port): + running, response = check_rest_server_quick(rest_port) + if running: response = rest_get(trial_jobs_url(rest_port), 20) - if response and response.status_code == 200: + if response and check_response(response): content = json.loads(response.text) for index, value in enumerate(content): content[index] = convert_time_stamp_to_date(value) @@ -102,9 +105,10 @@ def trial_kill(args): if not detect_process(rest_pid): print_error('Experiment is not running...') return - if check_rest_server_quick(rest_port): + running, _ = check_rest_server_quick(rest_port) + if running: response = rest_delete(trial_job_id_url(rest_port, args.trialid), 20) - if response and response.status_code == 200: + if response and check_response(response): print(response.text) else: print_error('Kill trial job failed...') @@ -119,9 +123,10 @@ def list_experiment(args): if not detect_process(rest_pid): print_error('Experiment is not running...') return - if check_rest_server_quick(rest_port): + running, _ = check_rest_server_quick(rest_port) + if running: response = rest_get(experiment_url(rest_port), 20) - if response and response.status_code == 200: + if response and check_response(response): content = convert_time_stamp_to_date(json.loads(response.text)) print(json.dumps(content, indent=4, sort_keys=True, separators=(',', ':'))) else: @@ -129,6 +134,16 @@ def list_experiment(args): else: print_error('Restful server is not running...') +def experiment_status(args): + '''Show the status of experiment''' + nni_config = Config() + rest_port = nni_config.get_config('restServerPort') + result, response = check_rest_server_quick(rest_port) + if not result: + print_normal('Restful server is not running...') + else: + print(json.dumps(json.loads(response.text), indent=4, sort_keys=True, separators=(',', ':'))) + def get_log_content(file_name, cmds): '''use cmds to read config content''' if os.path.exists(file_name): diff --git a/tools/nnicmd/rest_utils.py b/tools/nnicmd/rest_utils.py index 3952d4a3c7..37690f2463 100644 --- a/tools/nnicmd/rest_utils.py +++ b/tools/nnicmd/rest_utils.py @@ -64,16 +64,22 @@ def check_rest_server(rest_port): response = rest_get(check_status_url(rest_port), 20) if response: if response.status_code == 200: - return True + return True, response else: - return False + return False, response else: time.sleep(3) - return False + return False, response def check_rest_server_quick(rest_port): '''Check if restful server is ready, only check once''' response = rest_get(check_status_url(rest_port), 5) + if response and response.status_code == 200: + return True, response + return False, None + +def check_response(response): + '''Check if a response is success according to status_code''' if response and response.status_code == 200: return True return False diff --git a/tools/nnicmd/updater.py b/tools/nnicmd/updater.py index 1b1fd57a95..c2afc0772d 100644 --- a/tools/nnicmd/updater.py +++ b/tools/nnicmd/updater.py @@ -21,7 +21,7 @@ import json import os -from .rest_utils import rest_put, rest_get, check_rest_server_quick +from .rest_utils import rest_put, rest_get, check_rest_server_quick, check_response from .url_utils import experiment_url from .config_utils import Config from .common_utils import get_json_content @@ -56,13 +56,14 @@ def update_experiment_profile(key, value): '''call restful server to update experiment profile''' nni_config = Config() rest_port = nni_config.get_config('restServerPort') - if check_rest_server_quick(rest_port): + running, _ = check_rest_server_quick(rest_port) + if running: response = rest_get(experiment_url(rest_port), 20) - if response and response.status_code == 200: + if response and check_response(response): experiment_profile = json.loads(response.text) experiment_profile['params'][key] = value response = rest_put(experiment_url(rest_port)+get_query_type(key), json.dumps(experiment_profile), 20) - if response and response.status_code == 200: + if response and check_response(response): return response else: print('ERROR: restful server is not running...') diff --git a/tools/nnicmd/webui_utils.py b/tools/nnicmd/webui_utils.py index 1121452a08..e66d24360a 100644 --- a/tools/nnicmd/webui_utils.py +++ b/tools/nnicmd/webui_utils.py @@ -22,8 +22,8 @@ import os import psutil from socket import AddressFamily -from subprocess import Popen, PIPE -from .rest_utils import rest_get +from subprocess import Popen, PIPE, call +from .rest_utils import rest_get, check_response from .config_utils import Config from .common_utils import print_error, print_normal from .constants import STDOUT_FULL_PATH, STDERR_FULL_PATH @@ -71,6 +71,8 @@ def stop_web_ui(): child_process.kill() if parent_process.is_running(): parent_process.kill() + cmds = ['pkill', '-P', str(webuiPid)] + call(cmds) return True except Exception as e: print_error(e) @@ -84,6 +86,6 @@ def check_web_ui(): return False for url in url_list: response = rest_get(url, 3) - if response and response.status_code == 200: + if response and check_response(response): return True return False